diff options
Diffstat (limited to 'src/wwwroot/libraries/kendo')
6 files changed, 215 insertions, 0 deletions
diff --git a/src/wwwroot/libraries/kendo/kendo.all.min.js b/src/wwwroot/libraries/kendo/kendo.all.min.js new file mode 100644 index 0000000..9ae7ac5 --- /dev/null +++ b/src/wwwroot/libraries/kendo/kendo.all.min.js @@ -0,0 +1,136 @@ +/** + * Kendo UI v2019.3.917 (http://www.telerik.com/kendo-ui) + * Copyright 2019 Progress Software Corporation and/or one of its subsidiaries or affiliates. All rights reserved. + * + * Kendo UI commercial licenses may be obtained at + * http://www.telerik.com/purchase/license-agreement/kendo-ui-complete + * If you do not own a commercial license, this file shall be governed by the trial license terms. + + + + + + + + + + + + + + + + +*/ +!function(e,define){define("kendo.core.min",["jquery"],e)}(function(){return function(e,t,n){function i(){}function o(e,t){if(t)return"'"+e.split("'").join("\\'").split('\\"').join('\\\\\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")+"'";var n=e.charAt(0),i=e.substring(1);return"="===n?"+("+i+")+":":"===n?"+$kendoHtmlEncode("+i+")+":";"+e+";$kendoOutput+="}function r(e,t,n){return e+="",t=t||2,n=t-e.length,n?q[t].substring(0,n)+e:e}function a(e){var t=e.css(be.support.transitions.css+"box-shadow")||e.css("box-shadow"),n=t?t.match(Ie)||[0,0,0,0,0]:[0,0,0,0,0],i=Se.max(+n[3],+(n[4]||0));return{left:-n[1]+i,right:+n[1]+i,bottom:+n[2]+i}}function s(n,i){var o,r,a,s,c,d,u=De.browser,h=be._outerWidth,p=be._outerHeight,f=n.parent(),g=h(t);return f.removeClass("k-animation-container-sm"),f.hasClass("k-animation-container")?l(n,i):(r=n[0].style.width,a=n[0].style.height,s=Ae.test(r),c=Ae.test(a),d=n.hasClass("k-tooltip")||n.is(".k-menu-horizontal.k-context-menu"),o=s||c,!s&&(!i||i&&r||d)&&(r=i?h(n)+1:h(n)),(!c&&(!i||i&&a)||n.is(".k-menu-horizontal.k-context-menu"))&&(a=p(n)),n.wrap(e("<div/>").addClass("k-animation-container").css({width:r,height:a})),f=n.parent(),o&&n.css({width:"100%",height:"100%",boxSizing:"border-box",mozBoxSizing:"border-box",webkitBoxSizing:"border-box"})),g<h(f)&&(f.addClass("k-animation-container-sm"),l(n,i)),u.msie&&Se.floor(u.version)<=7&&(n.css({zoom:1}),n.children(".k-menu").width(n.width())),f}function l(e,t){var n,i=be._outerWidth,o=be._outerHeight,r=e.parent(".k-animation-container"),a=r[0].style;r.is(":hidden")&&r.css({display:"",position:""}),n=Ae.test(a.width)||Ae.test(a.height),n||r.css({width:t?i(e)+1:i(e),height:o(e),boxSizing:"content-box",mozBoxSizing:"content-box",webkitBoxSizing:"content-box"})}function c(e){var t=1,n=arguments.length;for(t=1;t<n;t++)d(e,arguments[t]);return e}function d(e,n){var i,o,r,a,s,l=be.data.ObservableArray,c=be.data.LazyObservableArray,u=be.data.DataSource,h=be.data.HierarchicalDataSource;for(i in n)o=n[i],r=typeof o,a=r===ze&&null!==o?o.constructor:null,!a||a===Array||a===l||a===c||a===u||a===h||a===RegExp||be.isFunction(t.ArrayBuffer)&&a===ArrayBuffer?r!==He&&(e[i]=o):o instanceof Date?e[i]=new Date(o.getTime()):P(o.clone)?e[i]=o.clone():(s=e[i],e[i]=typeof s===ze?s||{}:{},d(e[i],o));return e}function u(e,t,i){for(var o in t)if(t.hasOwnProperty(o)&&t[o].test(e))return o;return i!==n?i:e}function h(e){return e.replace(/([a-z][A-Z])/g,function(e){return e.charAt(0)+"-"+e.charAt(1).toLowerCase()})}function p(e){return e.replace(/\-(\w)/g,function(e,t){return t.toUpperCase()})}function f(t,n){var i,o={};return document.defaultView&&document.defaultView.getComputedStyle?(i=document.defaultView.getComputedStyle(t,""),n&&e.each(n,function(e,t){o[t]=i.getPropertyValue(t)})):(i=t.currentStyle,n&&e.each(n,function(e,t){o[t]=i[p(t)]})),be.size(o)||(o=i),o}function g(e){if(e&&e.className&&"string"==typeof e.className&&e.className.indexOf("k-auto-scrollable")>-1)return!0;var t=f(e,["overflow"]).overflow;return"auto"==t||"scroll"==t}function m(t,i){var o,r=De.browser.webkit,a=De.browser.mozilla,s=t instanceof e?t[0]:t;if(t)return o=De.isRtl(t),i===n?o&&r?s.scrollWidth-s.clientWidth-s.scrollLeft:Math.abs(s.scrollLeft):(s.scrollLeft=o&&r?s.scrollWidth-s.clientWidth-i:o&&a?-i:i,n)}function v(e){var t,n=0;for(t in e)e.hasOwnProperty(t)&&"toJSON"!=t&&n++;return n}function _(e,n,i){var o,r,a;return n||(n="offset"),o=e[n](),r={top:o.top,right:o.right,bottom:o.bottom,left:o.left},De.browser.msie&&(De.pointers||De.msPointers)&&!i&&(a=De.isRtl(e)?1:-1,r.top-=t.pageYOffset-document.documentElement.scrollTop,r.left-=t.pageXOffset+a*document.documentElement.scrollLeft),r}function b(e){var t={};return ke("string"==typeof e?e.split(" "):e,function(e){t[e]=this}),t}function w(e){return new be.effects.Element(e)}function k(e,t,n,i){return typeof e===Re&&(P(t)&&(i=t,t=400,n=!1),P(n)&&(i=n,n=!1),typeof t===Le&&(n=t,t=400),e={effects:e,duration:t,reverse:n,complete:i}),we({effects:{},duration:400,reverse:!1,init:Ce,teardown:Ce,hide:!1},e,{completeCallback:e.complete,complete:Ce})}function y(t,n,i,o,r){for(var a,s=0,l=t.length;s<l;s++)a=e(t[s]),a.queue(function(){G.promise(a,k(n,i,o,r))});return t}function x(e,t,n,i){return t&&(t=t.split(" "),ke(t,function(t,n){e.toggleClass(n,i)})),e}function C(e){return(""+e).replace($,"&").replace(Y,"<").replace(X,">").replace(K,""").replace(Q,"'")}function S(e){var n;try{n=t.decodeURIComponent(e)}catch(i){n=e.replace(/%u([\dA-F]{4})|%([\dA-F]{2})/gi,function(e,t,n){return String.fromCharCode(parseInt("0x"+(t||n),16))})}return n}function T(e,t){var i;return 0===t.indexOf("data")&&(t=t.substring(4),t=t.charAt(0).toLowerCase()+t.substring(1)),t=t.replace(ae,"-$1"),i=e.getAttribute("data-"+be.ns+t),null===i?i=n:"null"===i?i=null:"true"===i?i=!0:"false"===i?i=!1:Me.test(i)&&"mask"!=t?i=parseFloat(i):oe.test(i)&&!re.test(i)&&(i=Function("return ("+i+")")()),i}function D(t,i,o){var r,a,s={},l=t.getAttribute("data-"+be.ns+"role");for(r in i)a=T(t,r),a!==n&&(ie.test(r)&&"drawer"!=l&&("string"==typeof a?e("#"+a).length?a=be.template(e("#"+a).html()):o&&(a=be.template(o[a])):a=t.getAttribute(r)),s[r]=a);return s}function A(t,n){return e.contains(t,n)?-1:1}function E(){var t=e(this);return e.inArray(t.attr("data-"+be.ns+"role"),["slider","rangeslider"])>-1||t.is(":visible")}function I(e,t){var n=e.nodeName.toLowerCase();return(/input|select|textarea|button|object/.test(n)?!e.disabled:"a"===n?e.href||t:t)&&M(e)}function M(t){return e.expr.pseudos.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function F(e,t){return new F.fn.init(e,t)}var R,P,z,B,L,H,N,O,V,W,U,q,j,G,$,Y,K,Q,X,J,Z,ee,te,ne,ie,oe,re,ae,se,le,ce,de,ue,he,pe,fe,ge,me,ve,_e,be=t.kendo=t.kendo||{cultures:{}},we=e.extend,ke=e.each,ye=e.isArray,xe=e.proxy,Ce=e.noop,Se=Math,Te=t.JSON||{},De={},Ae=/%/,Ee=/\{(\d+)(:[^\}]+)?\}/g,Ie=/(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+)?/i,Me=/^(\+|-?)\d+(\.?)\d*$/,Fe="function",Re="string",Pe="number",ze="object",Be="null",Le="boolean",He="undefined",Ne={},Oe={},Ve=[].slice,We=function(){var e,t,i,o,r,a,s=arguments[0]||{},l=1,c=arguments.length,d=!1;for("boolean"==typeof s&&(d=s,s=arguments[l]||{},l++),"object"==typeof s||jQuery.isFunction(s)||(s={}),l===c&&(s=this,l--);l<c;l++)if(null!=(r=arguments[l]))for(o in r)"filters"!=o&&"concat"!=o&&":"!=o&&(e=s[o],i=r[o],s!==i&&(d&&i&&(jQuery.isPlainObject(i)||(t=jQuery.isArray(i)))?(t?(t=!1,a=e&&jQuery.isArray(e)?e:[]):a=e&&jQuery.isPlainObject(e)?e:{},s[o]=We(d,a,i)):i!==n&&(s[o]=i)));return s};be.version="2019.3.917".replace(/^\s+|\s+$/g,""),i.extend=function(e){var t,n,i=function(){},o=this,r=e&&e.init?e.init:function(){o.apply(this,arguments)};i.prototype=o.prototype,n=r.fn=r.prototype=new i;for(t in e)n[t]=null!=e[t]&&e[t].constructor===Object?we(!0,{},i.prototype[t],e[t]):e[t];return n.constructor=r,r.extend=o.extend,r},i.prototype._initOptions=function(e){this.options=c({},this.options,e)},P=be.isFunction=function(e){return"function"==typeof e},z=function(){this._defaultPrevented=!0},B=function(){return this._defaultPrevented===!0},L=i.extend({init:function(){this._events={}},bind:function(e,t,i){var o,r,a,s,l,c=this,d=typeof e===Re?[e]:e,u=typeof t===Fe;if(t===n){for(o in e)c.bind(o,e[o]);return c}for(o=0,r=d.length;o<r;o++)e=d[o],s=u?t:t[e],s&&(i&&(a=s,s=function(){c.unbind(e,s),a.apply(c,arguments)},s.original=a),l=c._events[e]=c._events[e]||[],l.push(s));return c},one:function(e,t){return this.bind(e,t,!0)},first:function(e,t){var n,i,o,r,a=this,s=typeof e===Re?[e]:e,l=typeof t===Fe;for(n=0,i=s.length;n<i;n++)e=s[n],o=l?t:t[e],o&&(r=a._events[e]=a._events[e]||[],r.unshift(o));return a},trigger:function(e,t){var n,i,o=this,r=o._events[e];if(r){for(t=t||{},t.sender=o,t._defaultPrevented=!1,t.preventDefault=z,t.isDefaultPrevented=B,r=r.slice(),n=0,i=r.length;n<i;n++)r[n].call(o,t);return t._defaultPrevented===!0}return!1},unbind:function(e,t){var i,o=this,r=o._events[e];if(e===n)o._events={};else if(r)if(t)for(i=r.length-1;i>=0;i--)r[i]!==t&&r[i].original!==t||r.splice(i,1);else o._events[e]=[];return o}}),H=/^\w+/,N=/\$\{([^}]*)\}/g,O=/\\\}/g,V=/__CURLY__/g,W=/\\#/g,U=/__SHARP__/g,q=["","0","00","000","0000"],R={paramName:"data",useWithBlock:!0,render:function(e,t){var n,i,o="";for(n=0,i=t.length;n<i;n++)o+=e(t[n]);return o},compile:function(e,t){var n,i,r,a=we({},this,t),s=a.paramName,l=s.match(H)[0],c=a.useWithBlock,d="var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;";if(P(e))return e;for(d+=c?"with("+s+"){":"",d+="$kendoOutput=",i=e.replace(O,"__CURLY__").replace(N,"#=$kendoHtmlEncode($1)#").replace(V,"}").replace(W,"__SHARP__").split("#"),r=0;r<i.length;r++)d+=o(i[r],r%2===0);d+=c?";}":";",d+="return $kendoOutput;",d=d.replace(U,"#");try{return n=Function(l,d),n._slotCount=Math.floor(i.length/2),n}catch(u){throw Error(be.format("Invalid template:'{0}' Generated code:'{1}'",e,d))}}},function(){function e(e){return a.lastIndex=0,a.test(e)?'"'+e.replace(a,function(e){var t=s[e];return typeof t===Re?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function t(r,a){var s,c,d,u,h,p,f=n,g=a[r];if(g&&typeof g===ze&&typeof g.toJSON===Fe&&(g=g.toJSON(r)),typeof o===Fe&&(g=o.call(a,r,g)),p=typeof g,p===Re)return e(g);if(p===Pe)return isFinite(g)?g+"":Be;if(p===Le||p===Be)return g+"";if(p===ze){if(!g)return Be;if(n+=i,h=[],"[object Array]"===l.apply(g)){for(u=g.length,s=0;s<u;s++)h[s]=t(s,g)||Be;return d=0===h.length?"[]":n?"[\n"+n+h.join(",\n"+n)+"\n"+f+"]":"["+h.join(",")+"]",n=f,d}if(o&&typeof o===ze)for(u=o.length,s=0;s<u;s++)typeof o[s]===Re&&(c=o[s],d=t(c,g),d&&h.push(e(c)+(n?": ":":")+d));else for(c in g)Object.hasOwnProperty.call(g,c)&&(d=t(c,g),d&&h.push(e(c)+(n?": ":":")+d));return d=0===h.length?"{}":n?"{\n"+n+h.join(",\n"+n)+"\n"+f+"}":"{"+h.join(",")+"}",n=f,d}}var n,i,o,a=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,s={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},l={}.toString;typeof Date.prototype.toJSON!==Fe&&(Date.prototype.toJSON=function(){var e=this;return isFinite(e.valueOf())?r(e.getUTCFullYear(),4)+"-"+r(e.getUTCMonth()+1)+"-"+r(e.getUTCDate())+"T"+r(e.getUTCHours())+":"+r(e.getUTCMinutes())+":"+r(e.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}),typeof Te.stringify!==Fe&&(Te.stringify=function(e,r,a){var s;if(n="",i="",typeof a===Pe)for(s=0;s<a;s+=1)i+=" ";else typeof a===Re&&(i=a);if(o=r,r&&typeof r!==Fe&&(typeof r!==ze||typeof r.length!==Pe))throw Error("JSON.stringify");return t("",{"":e})})}(),function(){function t(e){if(e){if(e.numberFormat)return e;if(typeof e===Re){var t=be.cultures;return t[e]||t[e.split("-")[0]]||null}return null}return null}function i(e){return e&&(e=t(e)),e||be.cultures.current}function o(e,t,o){o=i(o);var a=o.calendars.standard,s=a.days,l=a.months;return t=a.patterns[t]||t,t.replace(d,function(t){var i,o,c;return"d"===t?o=e.getDate():"dd"===t?o=r(e.getDate()):"ddd"===t?o=s.namesAbbr[e.getDay()]:"dddd"===t?o=s.names[e.getDay()]:"M"===t?o=e.getMonth()+1:"MM"===t?o=r(e.getMonth()+1):"MMM"===t?o=l.namesAbbr[e.getMonth()]:"MMMM"===t?o=l.names[e.getMonth()]:"yy"===t?o=r(e.getFullYear()%100):"yyyy"===t?o=r(e.getFullYear(),4):"h"===t?o=e.getHours()%12||12:"hh"===t?o=r(e.getHours()%12||12):"H"===t?o=e.getHours():"HH"===t?o=r(e.getHours()):"m"===t?o=e.getMinutes():"mm"===t?o=r(e.getMinutes()):"s"===t?o=e.getSeconds():"ss"===t?o=r(e.getSeconds()):"f"===t?o=Se.floor(e.getMilliseconds()/100):"ff"===t?(o=e.getMilliseconds(),o>99&&(o=Se.floor(o/10)),o=r(o)):"fff"===t?o=r(e.getMilliseconds(),3):"tt"===t?o=e.getHours()<12?a.AM[0]:a.PM[0]:"zzz"===t?(i=e.getTimezoneOffset(),c=i<0,o=(""+Se.abs(i/60)).split(".")[0],i=Se.abs(i)-60*o,o=(c?"+":"-")+r(o),o+=":"+r(i)):"zz"!==t&&"z"!==t||(o=e.getTimezoneOffset()/60,c=o<0,o=(""+Se.abs(o)).split(".")[0],o=(c?"+":"-")+("zz"===t?r(o):o)),o!==n?o:t.slice(1,t.length-1)})}function a(e,t,o){var r,a,c,d,w,k,y,x,C,S,T,D,A,E,I,M,F,R,P,z,B,L,H,N,O,V,W,U,q,j,G,$,Y,K;if(o=i(o),r=o.numberFormat,a=r[g],c=r.decimals,d=r.pattern[0],w=[],T=e<0,M=f,F=f,G=-1,e===n)return f;if(!isFinite(e))return e;if(!t)return o.name.length?e.toLocaleString():""+e;if(S=u.exec(t)){if(t=S[1].toLowerCase(),y="c"===t,x="p"===t,(y||x)&&(r=y?r.currency:r.percent,a=r[g],c=r.decimals,k=r.symbol,d=r.pattern[T?0:1]),C=S[2],C&&(c=+C),"e"===t)return Y=C?e.toExponential(c):e.toExponential(),Y.replace(g,r[g]);if(x&&(e*=100),e=l(e,c),T=e<0,e=e.split(g),D=e[0],A=e[1],T&&(D=D.substring(1)),F=s(D,0,D.length,r),A&&(F+=a+A),"n"===t&&!T)return F;for(e=f,R=0,P=d.length;R<P;R++)z=d.charAt(R),e+="n"===z?F:"$"===z||"%"===z?k:z;return e}if((t.indexOf("'")>-1||t.indexOf('"')>-1||t.indexOf("\\")>-1)&&(t=t.replace(h,function(e){var t=e.charAt(0).replace("\\",""),n=e.slice(1).replace(t,"");return w.push(n),b})),t=t.split(";"),T&&t[1])t=t[1],L=!0;else if(0===e&&t[2]){if(t=t[2],t.indexOf(v)==-1&&t.indexOf(_)==-1)return t}else t=t[0];if(U=t.indexOf("%"),q=t.indexOf("$"),x=U!=-1,y=q!=-1,x&&(e*=100),y&&"\\"===t[q-1]&&(t=t.split("\\").join(""),y=!1),(y||x)&&(r=y?r.currency:r.percent,a=r[g],c=r.decimals,k=r.symbol),B=t.indexOf(m)>-1,B&&(t=t.replace(p,f)),H=t.indexOf(g),P=t.length,H!=-1)if(A=(""+e).split("e"),A=A[1]?l(e,Math.abs(A[1])):A[0],A=A.split(g)[1]||f,O=t.lastIndexOf(_)-H,N=t.lastIndexOf(v)-H,V=O>-1,W=N>-1,R=A.length,V||W||(t=t.substring(0,H)+t.substring(H+1),P=t.length,H=-1,R=0),V&&O>N)R=O;else if(N>O)if(W&&R>N){for(K=l(e,N,T);K.charAt(K.length-1)===_&&N>0&&N>O;)N--,K=l(e,N,T);R=N}else V&&R<O&&(R=O);if(e=l(e,R,T),N=t.indexOf(v),j=O=t.indexOf(_),G=N==-1&&O!=-1?O:N!=-1&&O==-1?N:N>O?O:N,N=t.lastIndexOf(v),O=t.lastIndexOf(_),$=N==-1&&O!=-1?O:N!=-1&&O==-1?N:N>O?N:O,G==P&&($=G),G!=-1){for(F=(""+e).split(g),D=F[0],A=F[1]||f,E=D.length,I=A.length,T&&e*-1>=0&&(T=!1),e=t.substring(0,G),T&&!L&&(e+="-"),R=G;R<P;R++){if(z=t.charAt(R),H==-1){if($-R<E){e+=D;break}}else if(O!=-1&&O<R&&(M=f),H-R<=E&&H-R>-1&&(e+=D,R=H),H===R){e+=(A?a:f)+A,R+=$-H+1;continue}z===_?(e+=z,M=z):z===v&&(e+=M)}if(B&&(e=s(e,G+(T&&!L?1:0),Math.max($,E+G),r)),$>=G&&(e+=t.substring($+1)),y||x){for(F=f,R=0,P=e.length;R<P;R++)z=e.charAt(R),F+="$"===z||"%"===z?k:z;e=F}if(P=w.length)for(R=0;R<P;R++)e=e.replace(b,w[R])}return e}var s,l,c,d=/dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|"[^"]*"|'[^']*'/g,u=/^(n|c|p|e)(\d*)$/i,h=/(\\.)|(['][^']*[']?)|(["][^"]*["]?)/g,p=/\,/g,f="",g=".",m=",",v="#",_="0",b="??",w="en-US",k={}.toString;be.cultures["en-US"]={name:w,numberFormat:{pattern:["-n"],decimals:2,",":",",".":".",groupSize:[3],percent:{pattern:["-n %","n %"],decimals:2,",":",",".":".",groupSize:[3],symbol:"%"},currency:{name:"US Dollar",abbr:"USD",pattern:["($n)","$n"],decimals:2,",":",",".":".",groupSize:[3],symbol:"$"}},calendars:{standard:{days:{names:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],namesAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],namesShort:["Su","Mo","Tu","We","Th","Fr","Sa"]},months:{names:["January","February","March","April","May","June","July","August","September","October","November","December"],namesAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},AM:["AM","am","AM"],PM:["PM","pm","PM"],patterns:{d:"M/d/yyyy",D:"dddd, MMMM dd, yyyy",F:"dddd, MMMM dd, yyyy h:mm:ss tt",g:"M/d/yyyy h:mm tt",G:"M/d/yyyy h:mm:ss tt",m:"MMMM dd",M:"MMMM dd",s:"yyyy'-'MM'-'ddTHH':'mm':'ss",t:"h:mm tt",T:"h:mm:ss tt",u:"yyyy'-'MM'-'dd HH':'mm':'ss'Z'",y:"MMMM, yyyy",Y:"MMMM, yyyy"},"/":"/",":":":",firstDay:0,twoDigitYearMax:2029}}},be.culture=function(e){var i,o=be.cultures;return e===n?o.current:(i=t(e)||o[w],i.calendar=i.calendars.standard,o.current=i,n)},be.findCulture=t,be.getCulture=i,be.culture(w),s=function(e,t,i,o){var r,a,s,l,c,d,u=e.indexOf(o[g]),h=o.groupSize.slice(),p=h.shift();if(i=u!==-1?u:i+1,r=e.substring(t,i),a=r.length,a>=p){for(s=a,l=[];s>-1;)if(c=r.substring(s-p,s),c&&l.push(c),s-=p,d=h.shift(),p=d!==n?d:p,0===p){s>0&&l.push(r.substring(0,s));break}r=l.reverse().join(o[m]),e=e.substring(0,t)+r+e.substring(i)}return e},l=function(e,t,n){return t=t||0,e=(""+e).split("e"),e=Math.round(+(e[0]+"e"+(e[1]?+e[1]+t:t))),n&&(e=-e),e=(""+e).split("e"),e=+(e[0]+"e"+(e[1]?+e[1]-t:-t)),e.toFixed(Math.min(t,20))},c=function(e,t,i){if(t){if("[object Date]"===k.call(e))return o(e,t,i);if(typeof e===Pe)return a(e,t,i)}return e!==n?e:""},be.format=function(e){var t=arguments;return e.replace(Ee,function(e,n,i){var o=t[parseInt(n,10)+1];return c(o,i?i.substring(1):"")})},be._extractFormat=function(e){return"{0:"===e.slice(0,3)&&(e=e.slice(3,e.length-1)),e},be._activeElement=function(){try{return document.activeElement}catch(e){return document.documentElement.activeElement}},be._round=l,be._outerWidth=function(t,n){return e(t).outerWidth(n||!1)||0},be._outerHeight=function(t,n){return e(t).outerHeight(n||!1)||0},be.toString=c}(),function(){function t(e,t,n){return!(e>=t&&e<=n)}function i(e){return e.charAt(0)}function o(t){return e.map(t,i)}function r(e,t){t||23!==e.getHours()||e.setHours(e.getHours()+2)}function a(e){for(var t=0,n=e.length,i=[];t<n;t++)i[t]=(e[t]+"").toLowerCase();return i}function s(e){var t,n={};for(t in e)n[t]=a(e[t]);return n}function l(e,i,a,l){if(!e)return null;var c,d,u,h,p,m,v,_,b,k,y,x,C,S=function(e){for(var t=0;i[L]===e;)t++,L++;return t>0&&(L-=1),t},T=function(t){var n=w[t]||RegExp("^\\d{1,"+t+"}"),i=e.substr(H,t).match(n);return i?(i=i[0],H+=i.length,parseInt(i,10)):null},D=function(t,n){for(var i,o,r,a=0,s=t.length,l=0,c=0;a<s;a++)i=t[a],o=i.length,r=e.substr(H,o),n&&(r=r.toLowerCase()),r==i&&o>l&&(l=o,c=a);return l?(H+=l,c+1):null},A=function(){var t=!1;return e.charAt(H)===i[L]&&(H++,t=!0),t},E=a.calendars.standard,I=null,M=null,F=null,R=null,P=null,z=null,B=null,L=0,H=0,N=!1,O=new Date,V=E.twoDigitYearMax||2029,W=O.getFullYear();for(i||(i="d"),h=E.patterns[i],h&&(i=h),i=i.split(""),u=i.length;L<u;L++)if(c=i[L],N)"'"===c?N=!1:A();else if("d"===c){if(d=S("d"),E._lowerDays||(E._lowerDays=s(E.days)),null!==F&&d>2)continue;if(F=d<3?T(2):D(E._lowerDays[3==d?"namesAbbr":"names"],!0),null===F||t(F,1,31))return null}else if("M"===c){if(d=S("M"),E._lowerMonths||(E._lowerMonths=s(E.months)),M=d<3?T(2):D(E._lowerMonths[3==d?"namesAbbr":"names"],!0),null===M||t(M,1,12))return null;M-=1}else if("y"===c){if(d=S("y"),I=T(d),null===I)return null;2==d&&("string"==typeof V&&(V=W+parseInt(V,10)),I=W-W%100+I,I>V&&(I-=100))}else if("h"===c){if(S("h"),R=T(2),12==R&&(R=0),null===R||t(R,0,11))return null}else if("H"===c){if(S("H"),R=T(2),null===R||t(R,0,23))return null}else if("m"===c){if(S("m"),P=T(2),null===P||t(P,0,59))return null}else if("s"===c){if(S("s"),z=T(2),null===z||t(z,0,59))return null}else if("f"===c){if(d=S("f"),C=e.substr(H,d).match(w[3]),B=T(d),null!==B&&(B=parseFloat("0."+C[0],10),B=be._round(B,3),B*=1e3),null===B||t(B,0,999))return null}else if("t"===c){if(d=S("t"),_=E.AM,b=E.PM,1===d&&(_=o(_),b=o(b)),p=D(b),!p&&!D(_))return null}else if("z"===c){if(m=!0,d=S("z"),"Z"===e.substr(H,1)){A();continue}if(v=e.substr(H,6).match(d>2?g:f),!v)return null;if(v=v[0].split(":"),k=v[0],y=v[1],!y&&k.length>3&&(H=k.length-2,y=k.substring(H),k=k.substring(0,H)),k=parseInt(k,10),t(k,-12,13))return null;if(d>2&&(y=v[0][0]+y,y=parseInt(y,10),isNaN(y)||t(y,-59,59)))return null}else if("'"===c)N=!0,A();else if(!A())return null;return l&&!/^\s*$/.test(e.substr(H))?null:(x=null!==R||null!==P||z||null,null===I&&null===M&&null===F&&x?(I=W,M=O.getMonth(),F=O.getDate()):(null===I&&(I=W),null===F&&(F=1)),p&&R<12&&(R+=12),m?(k&&(R+=-k),y&&(P+=-y),e=new Date(Date.UTC(I,M,F,R,P,z,B))):(e=new Date(I,M,F,R,P,z,B),r(e,R)),I<100&&e.setFullYear(I),e.getDate()!==F&&m===n?null:e)}function c(e){var t="-"===e.substr(0,1)?-1:1;return e=e.substring(1),e=60*parseInt(e.substr(0,2),10)+parseInt(e.substring(2),10),t*e}function d(e){var t,n,i,o=Se.max(_.length,b.length),r=e.calendar||e.calendars.standard,a=r.patterns,s=[];for(i=0;i<o;i++){for(t=_[i],n=0;n<t.length;n++)s.push(a[t[n]]);s=s.concat(b[i])}return s}function u(e,t,n,i){var o,r,a,s;if("[object Date]"===k.call(e))return e;if(o=0,r=null,e&&0===e.indexOf("/D")&&(r=m.exec(e)))return r=r[1],s=v.exec(r.substring(1)),r=new Date(parseInt(r,10)),s&&(s=c(s[0]),r=be.timezone.apply(r,0),r=be.timezone.convert(r,0,-1*s)),r;for(n=be.getCulture(n),t||(t=d(n)),t=ye(t)?t:[t],a=t.length;o<a;o++)if(r=l(e,t[o],n,i))return r;return r}var h=/\u00A0/g,p=/[eE][\-+]?[0-9]+/,f=/[+|\-]\d{1,2}/,g=/[+|\-]\d{1,2}:?\d{2}/,m=/^\/Date\((.*?)\)\/$/,v=/[+-]\d*/,_=[[],["G","g","F"],["D","d","y","m","T","t"]],b=[["yyyy-MM-ddTHH:mm:ss.fffffffzzz","yyyy-MM-ddTHH:mm:ss.fffffff","yyyy-MM-ddTHH:mm:ss.fffzzz","yyyy-MM-ddTHH:mm:ss.fff","ddd MMM dd yyyy HH:mm:ss","yyyy-MM-ddTHH:mm:sszzz","yyyy-MM-ddTHH:mmzzz","yyyy-MM-ddTHH:mmzz","yyyy-MM-ddTHH:mm:ss","yyyy-MM-dd HH:mm:ss","yyyy/MM/dd HH:mm:ss"],["yyyy-MM-ddTHH:mm","yyyy-MM-dd HH:mm","yyyy/MM/dd HH:mm"],["yyyy/MM/dd","yyyy-MM-dd","HH:mm:ss","HH:mm"]],w={2:/^\d{1,2}/,3:/^\d{1,3}/,4:/^\d{4}/},k={}.toString;be.parseDate=function(e,t,n){return u(e,t,n,!1)},be.parseExactDate=function(e,t,n){return u(e,t,n,!0)},be.parseInt=function(e,t){var n=be.parseFloat(e,t);return n&&(n=0|n),n},be.parseFloat=function(e,t,n){if(!e&&0!==e)return null;if(typeof e===Pe)return e;e=""+e,t=be.getCulture(t);var i,o,r=t.numberFormat,a=r.percent,s=r.currency,l=s.symbol,c=a.symbol,d=e.indexOf("-");return p.test(e)?(e=parseFloat(e.replace(r["."],".")),isNaN(e)&&(e=null),e):d>0?null:(d=d>-1,e.indexOf(l)>-1||n&&n.toLowerCase().indexOf("c")>-1?(r=s,i=r.pattern[0].replace("$",l).split("n"),e.indexOf(i[0])>-1&&e.indexOf(i[1])>-1&&(e=e.replace(i[0],"").replace(i[1],""),d=!0)):e.indexOf(c)>-1&&(o=!0,r=a,l=c),e=e.replace("-","").replace(l,"").replace(h," ").split(r[","].replace(h," ")).join("").replace(r["."],"."),e=parseFloat(e),isNaN(e)?e=null:d&&(e*=-1),e&&o&&(e/=100),e)}}(),function(){var i,o,r,a,s,l,c,d,h,p;De._scrollbar=n,De.scrollbar=function(e){if(isNaN(De._scrollbar)||e){var t,n=document.createElement("div");return n.style.cssText="overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block",n.innerHTML=" ",document.body.appendChild(n),De._scrollbar=t=n.offsetWidth-n.scrollWidth,document.body.removeChild(n),t}return De._scrollbar},De.isRtl=function(t){return e(t).closest(".k-rtl").length>0},i=document.createElement("table");try{i.innerHTML="<tr><td></td></tr>",De.tbodyInnerHtml=!0}catch(f){De.tbodyInnerHtml=!1}De.touch="ontouchstart"in t,o=document.documentElement.style,r=De.transitions=!1,a=De.transforms=!1,s="HTMLElement"in t?HTMLElement.prototype:[],De.hasHW3D="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix||"MozPerspective"in o||"msPerspective"in o,De.cssFlexbox="flexWrap"in o||"WebkitFlexWrap"in o||"msFlexWrap"in o,ke(["Moz","webkit","O","ms"],function(){var e,t=""+this,n=typeof i.style[t+"Transition"]===Re;if(n||typeof i.style[t+"Transform"]===Re)return e=t.toLowerCase(),a={css:"ms"!=e?"-"+e+"-":"",prefix:t,event:"o"===e||"webkit"===e?e:""},n&&(r=a,r.event=r.event?r.event+"TransitionEnd":"transitionend"),!1}),i=null,De.transforms=a,De.transitions=r,De.devicePixelRatio=t.devicePixelRatio===n?1:t.devicePixelRatio;try{De.screenWidth=t.outerWidth||t.screen?t.screen.availWidth:t.innerWidth,De.screenHeight=t.outerHeight||t.screen?t.screen.availHeight:t.innerHeight}catch(f){De.screenWidth=t.screen.availWidth,De.screenHeight=t.screen.availHeight}De.detectOS=function(e){var n,i,o=!1,r=[],a=!/mobile safari/i.test(e),s={wp:/(Windows Phone(?: OS)?)\s(\d+)\.(\d+(\.\d+)?)/,fire:/(Silk)\/(\d+)\.(\d+(\.\d+)?)/,android:/(Android|Android.*(?:Opera|Firefox).*?\/)\s*(\d+)\.?(\d+(\.\d+)?)?/,iphone:/(iPhone|iPod).*OS\s+(\d+)[\._]([\d\._]+)/,ipad:/(iPad).*OS\s+(\d+)[\._]([\d_]+)/,meego:/(MeeGo).+NokiaBrowser\/(\d+)\.([\d\._]+)/,webos:/(webOS)\/(\d+)\.(\d+(\.\d+)?)/,blackberry:/(BlackBerry|BB10).*?Version\/(\d+)\.(\d+(\.\d+)?)/,playbook:/(PlayBook).*?Tablet\s*OS\s*(\d+)\.(\d+(\.\d+)?)/,windows:/(MSIE)\s+(\d+)\.(\d+(\.\d+)?)/,tizen:/(tizen).*?Version\/(\d+)\.(\d+(\.\d+)?)/i,sailfish:/(sailfish).*rv:(\d+)\.(\d+(\.\d+)?).*firefox/i,ffos:/(Mobile).*rv:(\d+)\.(\d+(\.\d+)?).*Firefox/},l={ios:/^i(phone|pad|pod)$/i,android:/^android|fire$/i,blackberry:/^blackberry|playbook/i,windows:/windows/,wp:/wp/,flat:/sailfish|ffos|tizen/i,meego:/meego/},c={tablet:/playbook|ipad|fire/i},d={omini:/Opera\sMini/i,omobile:/Opera\sMobi/i,firefox:/Firefox|Fennec/i,mobilesafari:/version\/.*safari/i,ie:/MSIE|Windows\sPhone/i,chrome:/chrome|crios/i,webkit:/webkit/i};for(i in s)if(s.hasOwnProperty(i)&&(r=e.match(s[i]))){if("windows"==i&&"plugins"in navigator)return!1;o={},o.device=i,o.tablet=u(i,c,!1),o.browser=u(e,d,"default"),o.name=u(i,l),o[o.name]=!0,o.majorVersion=r[2],o.minorVersion=(r[3]||"0").replace("_","."),n=o.minorVersion.replace(".","").substr(0,2),o.flatVersion=o.majorVersion+n+Array(3-(n.length<3?n.length:2)).join("0"),o.cordova=typeof t.PhoneGap!==He||typeof t.cordova!==He,o.appMode=t.navigator.standalone||/file|local|wmapp/.test(t.location.protocol)||o.cordova,o.android&&(De.devicePixelRatio<1.5&&o.flatVersion<400||a)&&(De.screenWidth>800||De.screenHeight>800)&&(o.tablet=i);break}return o},l=De.mobileOS=De.detectOS(navigator.userAgent),De.wpDevicePixelRatio=l.wp?screen.width/320:0,De.hasNativeScrolling=!1,(l.ios||l.android&&l.majorVersion>2||l.wp)&&(De.hasNativeScrolling=l),De.delayedClick=function(){if(De.touch){if(l.ios)return!0;if(l.android)return!De.browser.chrome||!(De.browser.version<32)&&!(e("meta[name=viewport]").attr("content")||"").match(/user-scalable=no/i)}return!1},De.mouseAndTouchPresent=De.touch&&!(De.mobileOS.ios||De.mobileOS.android),De.detectBrowser=function(e){var t,n=!1,i=[],o={edge:/(edge)[ \/]([\w.]+)/i,webkit:/(chrome|crios)[ \/]([\w.]+)/i,safari:/(webkit)[ \/]([\w.]+)/i,opera:/(opera)(?:.*version|)[ \/]([\w.]+)/i,msie:/(msie\s|trident.*? rv:)([\w.]+)/i,mozilla:/(mozilla)(?:.*? rv:([\w.]+)|)/i};for(t in o)if(o.hasOwnProperty(t)&&(i=e.match(o[t]))){n={},n[t]=!0,n[i[1].toLowerCase().split(" ")[0].split("/")[0]]=!0,n.version=parseInt(document.documentMode||i[2],10);break}return n},De.browser=De.detectBrowser(navigator.userAgent),De.detectClipboardAccess=function(){var e={copy:!!document.queryCommandSupported&&document.queryCommandSupported("copy"),cut:!!document.queryCommandSupported&&document.queryCommandSupported("cut"),paste:!!document.queryCommandSupported&&document.queryCommandSupported("paste")};return De.browser.chrome&&(e.paste=!1,De.browser.version>=43&&(e.copy=!0,e.cut=!0)),e},De.clipboard=De.detectClipboardAccess(),De.zoomLevel=function(){var e,n,i;try{return e=De.browser,n=0,i=document.documentElement,e.msie&&11==e.version&&i.scrollHeight>i.clientHeight&&!De.touch&&(n=De.scrollbar()),De.touch?i.clientWidth/t.innerWidth:e.msie&&e.version>=10?((top||t).document.documentElement.offsetWidth+n)/(top||t).innerWidth:1}catch(o){return 1}},De.cssBorderSpacing=n!==o.borderSpacing&&!(De.browser.msie&&De.browser.version<8),function(t){var n="",i=e(document.documentElement),o=parseInt(t.version,10);t.msie?n="ie":t.mozilla?n="ff":t.safari?n="safari":t.webkit?n="webkit":t.opera?n="opera":t.edge&&(n="edge"),n&&(n="k-"+n+" k-"+n+o),De.mobileOS&&(n+=" k-mobile"),De.cssFlexbox||(n+=" k-no-flexbox"),i.addClass(n)}(De.browser),De.eventCapture=document.documentElement.addEventListener,c=document.createElement("input"),De.placeholder="placeholder"in c,De.propertyChangeEvent="onpropertychange"in c,De.input=function(){for(var e,t=["number","date","time","month","week","datetime","datetime-local"],n=t.length,i="test",o={},r=0;r<n;r++)e=t[r],c.setAttribute("type",e),c.value=i,o[e.replace("-","")]="text"!==c.type&&c.value!==i;return o}(),c.style.cssText="float:left;",De.cssFloat=!!c.style.cssFloat,c=null,De.stableSort=function(){var e,t=513,n=[{index:0,field:"b"}];for(e=1;e<t;e++)n.push({index:e,field:"a"});return n.sort(function(e,t){return e.field>t.field?1:e.field<t.field?-1:0}),1===n[0].index}(),De.matchesSelector=s.webkitMatchesSelector||s.mozMatchesSelector||s.msMatchesSelector||s.oMatchesSelector||s.matchesSelector||s.matches||function(t){for(var n=document.querySelectorAll?(this.parentNode||document).querySelectorAll(t)||[]:e(t),i=n.length;i--;)if(n[i]==this)return!0;return!1},De.matchMedia="matchMedia"in t,De.pushState=t.history&&t.history.pushState,d=document.documentMode,De.hashChange="onhashchange"in t&&!(De.browser.msie&&(!d||d<=8)),De.customElements="registerElement"in t.document,h=De.browser.chrome,p=De.browser.mozilla,De.msPointers=!h&&t.MSPointerEvent,De.pointers=!h&&!p&&t.PointerEvent,De.kineticScrollNeeded=l&&(De.touch||De.msPointers||De.pointers)}(),j={left:{reverse:"right"},right:{reverse:"left"},down:{reverse:"up"},up:{reverse:"down"},top:{reverse:"bottom"},bottom:{reverse:"top"},"in":{reverse:"out"},out:{reverse:"in"}},G={},e.extend(G,{enabled:!0,Element:function(t){this.element=e(t)},promise:function(e,t){e.is(":visible")||e.css({display:e.data("olddisplay")||"block"}).css("display"),t.hide&&e.data("olddisplay",e.css("display")).hide(),t.init&&t.init(),t.completeCallback&&t.completeCallback(e),e.dequeue()},disable:function(){this.enabled=!1,this.promise=this.promiseShim},enable:function(){this.enabled=!0,this.promise=this.animatedPromise}}),G.promiseShim=G.promise,"kendoAnimate"in e.fn||we(e.fn,{kendoStop:function(e,t){return this.stop(e,t)},kendoAnimate:function(e,t,n,i){return y(this,e,t,n,i)},kendoAddClass:function(e,t){return be.toggleClass(this,e,t,!0)},kendoRemoveClass:function(e,t){return be.toggleClass(this,e,t,!1)},kendoToggleClass:function(e,t,n){return be.toggleClass(this,e,t,n)}}),$=/&/g,Y=/</g,K=/"/g,Q=/'/g,X=/>/g,J=function(e){return e.target},De.touch&&(J=function(e){var t="originalEvent"in e?e.originalEvent.changedTouches:"changedTouches"in e?e.changedTouches:null;return t?document.elementFromPoint(t[0].clientX,t[0].clientY):e.target},ke(["swipe","swipeLeft","swipeRight","swipeUp","swipeDown","doubleTap","tap"],function(t,n){e.fn[n]=function(e){return this.bind(n,e)}})),De.touch?De.mobileOS?(De.mousedown="touchstart",De.mouseup="touchend",De.mousemove="touchmove",De.mousecancel="touchcancel",De.click="touchend",De.resize="orientationchange"):(De.mousedown="mousedown touchstart",De.mouseup="mouseup touchend",De.mousemove="mousemove touchmove",De.mousecancel="mouseleave touchcancel",De.click="click",De.resize="resize"):De.pointers?(De.mousemove="pointermove",De.mousedown="pointerdown",De.mouseup="pointerup",De.mousecancel="pointercancel",De.click="pointerup",De.resize="orientationchange resize"):De.msPointers?(De.mousemove="MSPointerMove",De.mousedown="MSPointerDown",De.mouseup="MSPointerUp",De.mousecancel="MSPointerCancel",De.click="MSPointerUp",De.resize="orientationchange resize"):(De.mousemove="mousemove",De.mousedown="mousedown",De.mouseup="mouseup",De.mousecancel="mouseleave",De.click="click",De.resize="resize"),Z=function(e,t){var n,i,o,r,a=t||"d",s=1;for(i=0,o=e.length;i<o;i++)r=e[i],""!==r&&(n=r.indexOf("["),0!==n&&(n==-1?r="."+r:(s++,r="."+r.substring(0,n)+" || {})"+r.substring(n))),s++,a+=r+(i<o-1?" || {})":")"));return Array(s).join("(")+a},ee=/^([a-z]+:)?\/\//i,we(be,{widgets:[],_widgetRegisteredCallbacks:[],ui:be.ui||{},fx:be.fx||w,effects:be.effects||G,mobile:be.mobile||{},data:be.data||{},dataviz:be.dataviz||{},drawing:be.drawing||{},spreadsheet:{messages:{}},keys:{INSERT:45,DELETE:46,BACKSPACE:8,TAB:9,ENTER:13,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,END:35,HOME:36,SPACEBAR:32,PAGEUP:33,PAGEDOWN:34,F2:113,F10:121,F12:123,NUMPAD_PLUS:107,NUMPAD_MINUS:109,NUMPAD_DOT:110},support:be.support||De,animate:be.animate||y,ns:"",attr:function(e){return"data-"+be.ns+e},getShadows:a,wrap:s,deepExtend:c,getComputedStyles:f,isScrollable:g,scrollLeft:m,size:v,toCamelCase:p,toHyphens:h,getOffset:be.getOffset||_,parseEffects:be.parseEffects||b,toggleClass:be.toggleClass||x,directions:be.directions||j,Observable:L,Class:i,Template:R,template:xe(R.compile,R),render:xe(R.render,R), +stringify:xe(Te.stringify,Te),eventTarget:J,htmlEncode:C,unescape:S,isLocalUrl:function(e){return e&&!ee.test(e)},expr:function(e,t,n){return e=e||"",typeof t==Re&&(n=t,t=!1),n=n||"d",e&&"["!==e.charAt(0)&&(e="."+e),t?(e=e.replace(/"([^.]*)\.([^"]*)"/g,'"$1_$DOT$_$2"'),e=e.replace(/'([^.]*)\.([^']*)'/g,"'$1_$DOT$_$2'"),e=Z(e.split("."),n),e=e.replace(/_\$DOT\$_/g,".")):e=n+e,e},getter:function(e,t){var n=e+t;return Ne[n]=Ne[n]||Function("d","return "+be.expr(e,t))},setter:function(e){return Oe[e]=Oe[e]||Function("d,value",be.expr(e)+"=value")},accessor:function(e){return{get:be.getter(e),set:be.setter(e)}},guid:function(){var e,t,n="";for(e=0;e<32;e++)t=16*Se.random()|0,8!=e&&12!=e&&16!=e&&20!=e||(n+="-"),n+=(12==e?4:16==e?3&t|8:t).toString(16);return n},roleSelector:function(e){return e.replace(/(\S+)/g,"["+be.attr("role")+"=$1],").slice(0,-1)},directiveSelector:function(e){var t,n=e.split(" ");if(n)for(t=0;t<n.length;t++)"view"!=n[t]&&(n[t]=n[t].replace(/(\w*)(view|bar|strip|over)$/,"$1-$2"));return n.join(" ").replace(/(\S+)/g,"kendo-mobile-$1,").slice(0,-1)},triggeredByInput:function(e){return/^(label|input|textarea|select)$/i.test(e.target.tagName)},onWidgetRegistered:function(e){for(var t=0,n=be.widgets.length;t<n;t++)e(be.widgets[t]);be._widgetRegisteredCallbacks.push(e)},logToConsole:function(e,i){var o=t.console;!be.suppressLog&&n!==o&&o.log&&o[i||"log"](e)}}),te=L.extend({init:function(e,t){var n,i=this;i.element=be.jQuery(e).handler(i),i.angular("init",t),L.fn.init.call(i),n=t?t.dataSource:null,n&&(t=we({},t,{dataSource:{}})),t=i.options=we(!0,{},i.options,t),n&&(t.dataSource=n),i.element.attr(be.attr("role"))||i.element.attr(be.attr("role"),(t.name||"").toLowerCase()),i.element.data("kendo"+t.prefix+t.name,i),i.bind(i.events,t)},events:[],options:{prefix:""},_hasBindingTarget:function(){return!!this.element[0].kendoBindingTarget},_tabindex:function(e){e=e||this.wrapper;var t=this.element,n="tabindex",i=e.attr(n)||t.attr(n);t.removeAttr(n),e.attr(n,isNaN(i)?0:i)},setOptions:function(t){this._setEvents(t),e.extend(this.options,t)},_setEvents:function(e){for(var t,n=this,i=0,o=n.events.length;i<o;i++)t=n.events[i],n.options[t]&&e[t]&&(n.unbind(t,n.options[t]),n._events&&n._events[t]&&delete n._events[t]);n.bind(n.events,e)},resize:function(e){var t=this.getSize(),n=this._size;(e||(t.width>0||t.height>0)&&(!n||t.width!==n.width||t.height!==n.height))&&(this._size=t,this._resize(t,e),this.trigger("resize",t))},getSize:function(){return be.dimensions(this.element)},size:function(e){return e?(this.setSize(e),n):this.getSize()},setSize:e.noop,_resize:e.noop,destroy:function(){var e=this;e.element.removeData("kendo"+e.options.prefix+e.options.name),e.element.removeData("handler"),e.unbind()},_destroy:function(){this.destroy()},angular:function(){},_muteAngularRebind:function(e){this._muteRebind=!0,e.call(this),this._muteRebind=!1}}),ne=te.extend({dataItems:function(){return this.dataSource.flatView()},_angularItems:function(t){var n=this;n.angular(t,function(){return{elements:n.items(),data:e.map(n.dataItems(),function(e){return{dataItem:e}})}})}}),be.dimensions=function(e,t){var n=e[0];return t&&e.css(t),{width:n.offsetWidth,height:n.offsetHeight}},be.notify=Ce,ie=/template$/i,oe=/^\s*(?:\{(?:.|\r\n|\n)*\}|\[(?:.|\r\n|\n)*\])\s*$/,re=/^\{(\d+)(:[^\}]+)?\}|^\[[A-Za-z_]+\]$/,ae=/([A-Z])/g,be.initWidget=function(i,o,r){var a,s,l,c,d,u,h,p,f,g,m,v,_;if(r?r.roles&&(r=r.roles):r=be.ui.roles,i=i.nodeType?i:i[0],u=i.getAttribute("data-"+be.ns+"role")){f=u.indexOf(".")===-1,l=f?r[u]:be.getter(u)(t),m=e(i).data(),v=l?"kendo"+l.fn.options.prefix+l.fn.options.name:"",g=f?RegExp("^kendo.*"+u+"$","i"):RegExp("^"+v+"$","i");for(_ in m)if(_.match(g)){if(_!==v)return m[_];a=m[_]}if(l){for(p=T(i,"dataSource"),o=e.extend({},D(i,l.fn.options),o),p&&(o.dataSource=typeof p===Re?be.getter(p)(t):p),c=0,d=l.fn.events.length;c<d;c++)s=l.fn.events[c],h=T(i,s),h!==n&&(o[s]=be.getter(h)(t));return a?e.isEmptyObject(o)||a.setOptions(o):a=new l(i,o),a}}},be.rolesFromNamespaces=function(e){var t,n,i=[];for(e[0]||(e=[be.ui,be.dataviz.ui]),t=0,n=e.length;t<n;t++)i[t]=e[t].roles;return we.apply(null,[{}].concat(i.reverse()))},be.init=function(t){var n=be.rolesFromNamespaces(Ve.call(arguments,1));e(t).find("[data-"+be.ns+"role]").addBack().each(function(){be.initWidget(this,{},n)})},be.destroy=function(t){e(t).find("[data-"+be.ns+"role]").addBack().each(function(){var t,n=e(this).data();for(t in n)0===t.indexOf("kendo")&&typeof n[t].destroy===Fe&&n[t].destroy()})},be.resize=function(t,n){var i,o=e(t).find("[data-"+be.ns+"role]").addBack().filter(E);o.length&&(i=e.makeArray(o),i.sort(A),e.each(i,function(){var t=be.widgetInstance(e(this));t&&t.resize(n)}))},be.parseOptions=D,we(be.ui,{Widget:te,DataBoundWidget:ne,roles:{},progress:function(t,n,i){var o,r,a,s,l,c=t.find(".k-loading-mask"),d=be.support,u=d.browser;i=e.extend({},{width:"100%",height:"100%",top:t.scrollTop(),opacity:!1},i),l=i.opacity?"k-loading-mask k-opaque":"k-loading-mask",n?c.length||(o=d.isRtl(t),r=o?"right":"left",s=t.scrollLeft(),a=u.webkit&&o?t[0].scrollWidth-t.width()-2*s:0,c=e(be.format("<div class='{0}'><span class='k-loading-text'>{1}</span><div class='k-loading-image'/><div class='k-loading-color'/></div>",l,be.ui.progress.messages.loading)).width(i.width).height(i.height).css("top",i.top).css(r,Math.abs(s)+a).prependTo(t)):c&&c.remove()},plugin:function(t,i,o){var r,a,s,l,c=t.fn.options.name;for(i=i||be.ui,o=o||"",i[c]=t,i.roles[c.toLowerCase()]=t,r="getKendo"+o+c,c="kendo"+o+c,a={name:c,widget:t,prefix:o||""},be.widgets.push(a),s=0,l=be._widgetRegisteredCallbacks.length;s<l;s++)be._widgetRegisteredCallbacks[s](a);e.fn[c]=function(i){var o,r=this;return typeof i===Re?(o=Ve.call(arguments,1),this.each(function(){var t,a,s=e.data(this,c);if(!s)throw Error(be.format("Cannot call method '{0}' of {1} before it is initialized",i,c));if(t=s[i],typeof t!==Fe)throw Error(be.format("Cannot find method '{0}' of {1}",i,c));if(a=t.apply(s,o),a!==n)return r=a,!1})):this.each(function(){return new t(this,i)}),r},e.fn[c].widget=t,e.fn[r]=function(){return this.data(c)}}}),be.ui.progress.messages={loading:"Loading..."},se={bind:function(){return this},nullObject:!0,options:{}},le=te.extend({init:function(e,t){te.fn.init.call(this,e,t),this.element.autoApplyNS(),this.wrapper=this.element,this.element.addClass("km-widget")},destroy:function(){te.fn.destroy.call(this),this.element.kendoDestroy()},options:{prefix:"Mobile"},events:[],view:function(){var e=this.element.closest(be.roleSelector("view splitview modalview drawer"));return be.widgetInstance(e,be.mobile.ui)||se},viewHasNativeScrolling:function(){var e=this.view();return e&&e.options.useNativeScrolling},container:function(){var e=this.element.closest(be.roleSelector("view layout modalview drawer splitview"));return be.widgetInstance(e.eq(0),be.mobile.ui)||se}}),we(be.mobile,{init:function(e){be.init(e,be.mobile.ui,be.ui,be.dataviz.ui)},appLevelNativeScrolling:function(){return be.mobile.application&&be.mobile.application.options&&be.mobile.application.options.useNativeScrolling},roles:{},ui:{Widget:le,DataBoundWidget:ne.extend(le.prototype),roles:{},plugin:function(e){be.ui.plugin(e,be.mobile.ui,"Mobile")}}}),c(be.dataviz,{init:function(e){be.init(e,be.dataviz.ui)},ui:{roles:{},themes:{},views:[],plugin:function(e){be.ui.plugin(e,be.dataviz.ui)}},roles:{}}),be.touchScroller=function(t,n){return n||(n={}),n.useNative=!0,e(t).map(function(t,i){return i=e(i),!(!De.kineticScrollNeeded||!be.mobile.ui.Scroller||i.data("kendoMobileScroller"))&&(i.kendoMobileScroller(n),i.data("kendoMobileScroller"))})[0]},be.preventDefault=function(e){e.preventDefault()},be.widgetInstance=function(e,n){var i,o,r,a,s,l=e.data(be.ns+"role"),c=[],d=e.data("kendoView");if(l){if("content"===l&&(l="scroller"),"editortoolbar"===l&&(r=e.data("kendoEditorToolbar")))return r;if("view"===l&&d)return d;if(n)if(n[0])for(i=0,o=n.length;i<o;i++)c.push(n[i].roles[l]);else c.push(n.roles[l]);else c=[be.ui.roles[l],be.dataviz.ui.roles[l],be.mobile.ui.roles[l]];for(l.indexOf(".")>=0&&(c=[be.getter(l)(t)]),i=0,o=c.length;i<o;i++)if(a=c[i],a&&(s=e.data("kendo"+a.fn.options.prefix+a.fn.options.name)))return s}},be.onResize=function(n){var i=n;return De.mobileOS.android&&(i=function(){setTimeout(n,600)}),e(t).on(De.resize,i),i},be.unbindResize=function(n){e(t).off(De.resize,n)},be.attrValue=function(e,t){return e.data(be.ns+t)},be.days={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6},e.extend(e.expr.pseudos,{kendoFocusable:function(t){var n=e.attr(t,"tabindex");return I(t,!isNaN(n)&&n>-1)}}),ce=["mousedown","mousemove","mouseenter","mouseleave","mouseover","mouseout","mouseup","click"],de="label, input, [data-rel=external]",ue={setupMouseMute:function(){var t,n=0,i=ce.length,o=document.documentElement;if(!ue.mouseTrap&&De.eventCapture)for(ue.mouseTrap=!0,ue.bustClick=!1,ue.captureMouse=!1,t=function(t){ue.captureMouse&&("click"===t.type?ue.bustClick&&!e(t.target).is(de)&&(t.preventDefault(),t.stopPropagation()):t.stopPropagation())};n<i;n++)o.addEventListener(ce[n],t,!0)},muteMouse:function(e){ue.captureMouse=!0,e.data.bustClick&&(ue.bustClick=!0),clearTimeout(ue.mouseTrapTimeoutID)},unMuteMouse:function(){clearTimeout(ue.mouseTrapTimeoutID),ue.mouseTrapTimeoutID=setTimeout(function(){ue.captureMouse=!1,ue.bustClick=!1},400)}},he={down:"touchstart mousedown",move:"mousemove touchmove",up:"mouseup touchend touchcancel",cancel:"mouseleave touchcancel"},De.touch&&(De.mobileOS.ios||De.mobileOS.android)?he={down:"touchstart",move:"touchmove",up:"touchend touchcancel",cancel:"touchcancel"}:De.pointers?he={down:"pointerdown",move:"pointermove",up:"pointerup",cancel:"pointercancel pointerleave"}:De.msPointers&&(he={down:"MSPointerDown",move:"MSPointerMove",up:"MSPointerUp",cancel:"MSPointerCancel MSPointerLeave"}),!De.msPointers||"onmspointerenter"in t||e.each({MSPointerEnter:"MSPointerOver",MSPointerLeave:"MSPointerOut"},function(t,n){e.event.special[t]={delegateType:n,bindType:n,handle:function(t){var i,o=this,r=t.relatedTarget,a=t.handleObj;return r&&(r===o||e.contains(o,r))||(t.type=a.origType,i=a.handler.apply(this,arguments),t.type=n),i}}}),pe=function(e){return he[e]||e},fe=/([^ ]+)/g,be.applyEventMap=function(e,t){return e=e.replace(fe,pe),t&&(e=e.replace(fe,"$1."+t)),e},ge=e.fn.on,We(!0,F,e),F.fn=F.prototype=new e,F.fn.constructor=F,F.fn.init=function(t,n){return n&&n instanceof e&&!(n instanceof F)&&(n=F(n)),e.fn.init.call(this,t,n,me)},F.fn.init.prototype=F.fn,me=F(document),we(F.fn,{handler:function(e){return this.data("handler",e),this},autoApplyNS:function(e){return this.data("kendoNS",e||be.guid()),this},on:function(){var e,t,n,i,o,r,a=this,s=a.data("kendoNS");return 1===arguments.length?ge.call(a,arguments[0]):(e=a,t=Ve.call(arguments),typeof t[t.length-1]===He&&t.pop(),n=t[t.length-1],i=be.applyEventMap(t[0],s),De.mouseAndTouchPresent&&i.search(/mouse|click/)>-1&&this[0]!==document.documentElement&&(ue.setupMouseMute(),o=2===t.length?null:t[1],r=i.indexOf("click")>-1&&i.indexOf("touchend")>-1,ge.call(this,{touchstart:ue.muteMouse,touchend:ue.unMuteMouse},o,{bustClick:r})),typeof n===Re&&(e=a.data("handler"),n=e[n],t[t.length-1]=function(t){n.call(e,t)}),t[0]=i,ge.apply(a,t),a)},kendoDestroy:function(e){return e=e||this.data("kendoNS"),e&&this.off("."+e),this}}),be.jQuery=F,be.eventMap=he,be.timezone=function(){function e(e,t){var n,i,o,r=t[3],a=t[4],s=t[5],l=t[8];return l||(t[8]=l={}),l[e]?l[e]:(isNaN(a)?0===a.indexOf("last")?(n=new Date(Date.UTC(e,d[r]+1,1,s[0]-24,s[1],s[2],0)),i=u[a.substr(4,3)],o=n.getUTCDay(),n.setUTCDate(n.getUTCDate()+i-o-(i>o?7:0))):a.indexOf(">=")>=0&&(n=new Date(Date.UTC(e,d[r],a.substr(5),s[0],s[1],s[2],0)),i=u[a.substr(0,3)],o=n.getUTCDay(),n.setUTCDate(n.getUTCDate()+i-o+(i<o?7:0))):n=new Date(Date.UTC(e,d[r],a,s[0],s[1],s[2],0)),l[e]=n)}function t(t,n,i){var o,r,a,s;return(n=n[i])?(a=new Date(t).getUTCFullYear(),n=jQuery.grep(n,function(e){var t=e[0],n=e[1];return t<=a&&(n>=a||t==a&&"only"==n||"max"==n)}),n.push(t),n.sort(function(t,n){return"number"!=typeof t&&(t=+e(a,t)),"number"!=typeof n&&(n=+e(a,n)),t-n}),s=n[jQuery.inArray(t,n)-1]||n[n.length-1],isNaN(s)?s:null):(o=i.split(":"),r=0,o.length>1&&(r=60*o[0]+ +o[1]),[-1e6,"max","-","Jan",1,[0,0,0],r,"-"])}function n(e,t,n){var i,o,r,a=t[n];if("string"==typeof a&&(a=t[a]),!a)throw Error('Timezone "'+n+'" is either incorrect, or kendo.timezones.min.js is not included.');for(i=a.length-1;i>=0&&(o=a[i][3],!(o&&e>o));i--);if(r=a[i+1],!r)throw Error('Timezone "'+n+'" not found on '+e+".");return r}function i(e,i,o,r){typeof e!=Pe&&(e=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));var a=n(e,i,r);return{zone:a,rule:t(e,o,a[1])}}function o(e,t){var n,o,r;return"Etc/UTC"==t||"Etc/GMT"==t?0:(n=i(e,this.zones,this.rules,t),o=n.zone,r=n.rule,be.parseFloat(r?o[0]-r[6]:o[0]))}function r(e,t){var n=i(e,this.zones,this.rules,t),o=n.zone,r=n.rule,a=o[2];return a.indexOf("/")>=0?a.split("/")[r&&+r[6]?1:0]:a.indexOf("%s")>=0?a.replace("%s",r&&"-"!=r[7]?r[7]:""):a}function a(e,t,n){var i,o,r,a=n;return typeof t==Re&&(t=this.offset(e,t)),typeof n==Re&&(n=this.offset(e,n)),o=e.getTimezoneOffset(),e=new Date(e.getTime()+6e4*(t-n)),r=e.getTimezoneOffset(),typeof a==Re&&(a=this.offset(e,a)),i=r-o+(n-a),new Date(e.getTime()+6e4*i)}function s(e,t){return this.convert(e,e.getTimezoneOffset(),t)}function l(e,t){return this.convert(e,t,e.getTimezoneOffset())}function c(e){return this.apply(new Date(e),"Etc/UTC")}var d={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11},u={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6};return{zones:{},rules:{},offset:o,convert:a,apply:s,remove:l,abbr:r,toLocalDate:c}}(),be.date=function(){function e(e,t){return 0===t&&23===e.getHours()&&(e.setHours(e.getHours()+2),!0)}function t(t,n,i){var o=t.getHours();i=i||1,n=(n-t.getDay()+7*i)%7,t.setDate(t.getDate()+n),e(t,o)}function i(e,n,i){return e=new Date(e),t(e,n,i),e}function o(e){return new Date(e.getFullYear(),e.getMonth(),1)}function r(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0),n=o(e),i=Math.abs(t.getTimezoneOffset()-n.getTimezoneOffset());return i&&t.setHours(n.getHours()+i/60),t}function a(e,t){return 1!==t?f(i(e,t,-1),4):f(e,4-(e.getDay()||7))}function s(e,t){var n=new Date(e.getFullYear(),0,1,(-6)),i=a(e,t),o=i.getTime()-n.getTime(),r=Math.floor(o/k);return 1+Math.floor(r/7)}function l(e,t){var i,o,r;return t===n&&(t=be.culture().calendar.firstDay),i=f(e,-7),o=f(e,7),r=s(e,t),0===r?s(i,t)+1:53===r&&s(o,t)>1?1:r}function c(t){return t=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0),e(t,0),t}function d(e){return Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}function u(e){return b(e).getTime()-c(b(e))}function h(e,t,n){var i,o=u(t),r=u(n);return!e||o==r||(t>=n&&(n+=k),i=u(e),o>i&&(i+=k),r<o&&(r+=k),i>=o&&i<=r)}function p(e,t,n){var i,o=t.getTime(),r=n.getTime();return o>=r&&(r+=k),i=e.getTime(),i>=o&&i<=r}function f(t,n){var i=t.getHours();return t=new Date(t),g(t,n*k),e(t,i),t}function g(e,t,n){var i,o=e.getTimezoneOffset();e.setTime(e.getTime()+t),n||(i=e.getTimezoneOffset()-o,e.setTime(e.getTime()+i*w))}function m(t,n){return t=new Date(t.getFullYear(),t.getMonth(),t.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()),e(t,n.getHours()),t}function v(){return c(new Date)}function _(e){return c(e).getTime()==v().getTime()}function b(e){var t=new Date(1980,1,1,0,0,0);return e&&t.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),t}var w=6e4,k=864e5;return{adjustDST:e,dayOfWeek:i,setDayOfWeek:t,getDate:c,isInDateRange:p,isInTimeRange:h,isToday:_,nextDay:function(e){return f(e,1)},previousDay:function(e){return f(e,-1)},toUtcTime:d,MS_PER_DAY:k,MS_PER_HOUR:60*w,MS_PER_MINUTE:w,setTime:g,setHours:m,addDays:f,today:v,toInvariantTime:b,firstDayOfMonth:o,lastDayOfMonth:r,weekInYear:l,getMilliseconds:u}}(),be.stripWhitespace=function(e){var t,n,i;if(document.createNodeIterator)for(t=document.createNodeIterator(e,NodeFilter.SHOW_TEXT,function(t){return t.parentNode==e?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT},!1);t.nextNode();)t.referenceNode&&!t.referenceNode.textContent.trim()&&t.referenceNode.parentNode.removeChild(t.referenceNode);else for(n=0;n<e.childNodes.length;n++)i=e.childNodes[n],3!=i.nodeType||/\S/.test(i.nodeValue)||(e.removeChild(i),n--),1==i.nodeType&&be.stripWhitespace(i)},ve=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},be.animationFrame=function(e){ve.call(t,e)},_e=[],be.queueAnimation=function(e){_e[_e.length]=e,1===_e.length&&be.runNextAnimation()},be.runNextAnimation=function(){be.animationFrame(function(){_e[0]&&(_e.shift()(),_e[0]&&be.runNextAnimation())})},be.parseQueryStringParams=function(e){for(var t=e.split("?")[1]||"",n={},i=t.split(/&|=/),o=i.length,r=0;r<o;r+=2)""!==i[r]&&(n[decodeURIComponent(i[r])]=decodeURIComponent(i[r+1]));return n},be.elementUnderCursor=function(e){if(n!==e.x.client)return document.elementFromPoint(e.x.client,e.y.client)},be.wheelDeltaY=function(e){var t,i=e.originalEvent,o=i.wheelDeltaY;return i.wheelDelta?(o===n||o)&&(t=i.wheelDelta):i.detail&&i.axis===i.VERTICAL_AXIS&&(t=10*-i.detail),t},be.throttle=function(e,t){var i,o,r=0;return!t||t<=0?e:(o=function(){function o(){e.apply(a,l),r=+new Date}var a=this,s=+new Date-r,l=arguments;return r?(i&&clearTimeout(i),s>t?o():i=setTimeout(o,t-s),n):o()},o.cancel=function(){clearTimeout(i)},o)},be.caret=function(t,i,o){var r,a,s,l,c,d=i!==n;if(o===n&&(o=i),t[0]&&(t=t[0]),!d||!t.disabled){try{t.selectionStart!==n?d?(t.focus(),a=De.mobileOS,a.wp||a.android?setTimeout(function(){t.setSelectionRange(i,o)},0):t.setSelectionRange(i,o)):i=[t.selectionStart,t.selectionEnd]:document.selection&&(e(t).is(":visible")&&t.focus(),r=t.createTextRange(),d?(r.collapse(!0),r.moveStart("character",i),r.moveEnd("character",o-i),r.select()):(s=r.duplicate(),r.moveToBookmark(document.selection.createRange().getBookmark()),s.setEndPoint("EndToStart",r),l=s.text.length,c=l+r.text.length,i=[l,c]))}catch(u){i=[]}return i}},be.compileMobileDirective=function(e,n){var i=t.angular;return e.attr("data-"+be.ns+"role",e[0].tagName.toLowerCase().replace("kendo-mobile-","").replace("-","")),i.element(e).injector().invoke(["$compile",function(t){t(e)(n),/^\$(digest|apply)$/.test(n.$$phase)||n.$digest()}]),be.widgetInstance(e,be.mobile.ui)},be.antiForgeryTokens=function(){var t={},i=e("meta[name=csrf-token],meta[name=_csrf]").attr("content"),o=e("meta[name=csrf-param],meta[name=_csrf_header]").attr("content");return e("input[name^='__RequestVerificationToken']").each(function(){t[this.name]=this.value}),o!==n&&i!==n&&(t[o]=i),t},be.cycleForm=function(e){function t(e){var t=be.widgetInstance(e);t&&t.focus?t.focus():e.focus()}var n=e.find("input, .k-widget").first(),i=e.find("button, .k-button").last();i.on("keydown",function(e){e.keyCode!=be.keys.TAB||e.shiftKey||(e.preventDefault(),t(n))}),n.on("keydown",function(e){e.keyCode==be.keys.TAB&&e.shiftKey&&(e.preventDefault(),t(i))})},be.focusElement=function(n){var i=[],o=n.parentsUntil("body").filter(function(e,t){var n=be.getComputedStyles(t,["overflow"]);return"visible"!==n.overflow}).add(t);o.each(function(t,n){i[t]=e(n).scrollTop()});try{n[0].setActive()}catch(r){n[0].focus()}o.each(function(t,n){e(n).scrollTop(i[t])})},be.matchesMedia=function(e){var n=be._bootstrapToMedia(e)||e;return De.matchMedia&&t.matchMedia(n).matches},be._bootstrapToMedia=function(e){return{xs:"(max-width: 576px)",sm:"(min-width: 576px)",md:"(min-width: 768px)",lg:"(min-width: 992px)",xl:"(min-width: 1200px)"}[e]},function(){function n(t,n,i,o){var r,a,s=e("<form>").attr({action:i,method:"POST",target:o}),l=be.antiForgeryTokens();l.fileName=n,r=t.split(";base64,"),l.contentType=r[0].replace("data:",""),l.base64=r[1];for(a in l)l.hasOwnProperty(a)&&e("<input>").attr({value:l[a],name:a,type:"hidden"}).appendTo(s);s.appendTo("body").submit().remove()}function i(e,t){var n,i,o,r,a,s=e;if("string"==typeof e){for(n=e.split(";base64,"),i=n[0],o=atob(n[1]),r=new Uint8Array(o.length),a=0;a<o.length;a++)r[a]=o.charCodeAt(a);s=new Blob([r.buffer],{type:i})}navigator.msSaveBlob(s,t)}function o(e,n){t.Blob&&e instanceof Blob&&(e=URL.createObjectURL(e)),r.download=n,r.href=e;var i=document.createEvent("MouseEvents");i.initMouseEvent("click",!0,!1,t,0,0,0,0,0,!1,!1,!1,!1,0,null),r.dispatchEvent(i),setTimeout(function(){URL.revokeObjectURL(e)})}var r=document.createElement("a"),a="download"in r&&!be.support.browser.edge;be.saveAs=function(e){var t=n;e.forceProxy||(a?t=o:navigator.msSaveBlob&&(t=i)),t(e.dataURI,e.fileName,e.proxyURL,e.proxyTarget)}}(),be.proxyModelSetters=function(e){var t={};return Object.keys(e||{}).forEach(function(n){Object.defineProperty(t,n,{get:function(){return e[n]},set:function(t){e[n]=t,e.dirty=!0}})}),t}}(jQuery,window),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.router.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(e,t){if(!t)return e;e+"/"===t&&(e=t);var n=RegExp("^"+t,"i");return n.test(e)||(e=t+"/"+e),p.protocol+"//"+(p.host+"/"+e).replace(/\/\/+/g,"/")}function i(e){return e?"#!":"#"}function o(e){var t=p.href;return"#!"===e&&t.indexOf("#")>-1&&t.indexOf("#!")<0?null:t.split(e)[1]||""}function r(e,t){return 0===t.indexOf(e)?t.substr(e.length).replace(/\/\//g,"/"):t}function a(e){return e.replace(/^(#)?/,"#")}function s(e){return e.replace(/^(#(!)?)?/,"#!")}var l=window.kendo,c="change",d="back",u="same",h=l.support,p=window.location,f=window.history,g=50,m=l.support.browser.msie,v=/^#*/,_=window.document,b=l.Class.extend({back:function(){m?setTimeout(function(){f.back()}):f.back()},forward:function(){m?setTimeout(function(){f.forward()}):f.forward()},length:function(){return f.length},replaceLocation:function(e){p.replace(e)}}),w=b.extend({init:function(e){this.root=e},navigate:function(e){f.pushState({},_.title,n(e,this.root))},replace:function(e){f.replaceState({},_.title,n(e,this.root))},normalize:function(e){return r(this.root,e)},current:function(){var e=p.pathname;return p.search&&(e+=p.search),r(this.root,e)},change:function(t){e(window).bind("popstate.kendo",t)},stop:function(){e(window).unbind("popstate.kendo")},normalizeCurrent:function(e){var t,r=e.root,a=p.pathname,s=o(i(e.hashBang));r===a+"/"&&(t=r),r===a&&s&&(t=n(s.replace(v,""),r)),t&&f.pushState({},_.title,t)}}),k=b.extend({init:function(e){this._id=l.guid(),this.prefix=i(e),this.fix=e?s:a},navigate:function(e){p.hash=this.fix(e)},replace:function(e){this.replaceLocation(this.fix(e))},normalize:function(e){return e.indexOf(this.prefix)<0?e:e.split(this.prefix)[1]},change:function(t){h.hashChange?e(window).on("hashchange."+this._id,t):this._interval=setInterval(t,g)},stop:function(){e(window).off("hashchange."+this._id),clearInterval(this._interval)},current:function(){return o(this.prefix)},normalizeCurrent:function(e){var t=p.pathname,n=e.root;return!(!e.pushState||n===t)&&(this.replaceLocation(n+this.prefix+r(n,t)),!0)}}),y=l.Observable.extend({start:function(t){if(t=t||{},this.bind([c,d,u],t),!this._started){this._started=!0,t.root=t.root||"/";var n,i=this.createAdapter(t);i.normalizeCurrent(t)||(n=i.current(),e.extend(this,{adapter:i,root:t.root,historyLength:i.length(),current:n,locations:[n]}),i.change(e.proxy(this,"_checkUrl")))}},createAdapter:function(e){return h.pushState&&e.pushState?new w(e.root):new k(e.hashBang)},stop:function(){this._started&&(this.adapter.stop(),this.unbind(c),this._started=!1)},change:function(e){this.bind(c,e)},replace:function(e,t){this._navigate(e,t,function(t){t.replace(e),this.locations[this.locations.length-1]=this.current})},navigate:function(e,n){return"#:back"===e?(this.backCalled=!0,this.adapter.back(),t):(this._navigate(e,n,function(t){t.navigate(e),this.locations.push(this.current)}),t)},_navigate:function(e,n,i){var o=this.adapter;return e=o.normalize(e),this.current===e||this.current===decodeURIComponent(e)?(this.trigger(u),t):(!n&&this.trigger(c,{url:e,decode:!1})||(this.current=e,i.call(this,o),this.historyLength=o.length()),t)},_checkUrl:function(){var e=this.adapter,n=e.current(),i=e.length(),o=this.historyLength===i,r=n===this.locations[this.locations.length-2]&&o,a=this.backCalled,s=this.current;return null===n||this.current===n||this.current===decodeURIComponent(n)||(this.historyLength=i,this.backCalled=!1,this.current=n,r&&this.trigger("back",{url:s,to:n})?(e.forward(),this.current=s,t):this.trigger(c,{url:n,backButtonPressed:!a})?(r?e.forward():(e.back(),this.historyLength--),this.current=s,t):(r?this.locations.pop():this.locations.push(n),t))}});l.History=y,l.History.HistoryAdapter=b,l.History.HashAdapter=k,l.History.PushStateAdapter=w,l.absoluteURL=n,l.history=new y}(window.kendo.jQuery),function(){function e(e,t){return t?e:"([^/]+)"}function t(t,n){return RegExp("^"+t.replace(f,"\\$&").replace(u,"(?:$1)?").replace(h,e).replace(p,"(.*?)")+"$",n?"i":"")}function n(e){return e.replace(/(\?.*)|(#.*)/g,"")}var i=window.kendo,o=i.history,r=i.Observable,a="init",s="routeMissing",l="change",c="back",d="same",u=/\((.*?)\)/g,h=/(\(\?)?:\w+/g,p=/\*\w+/g,f=/[\-{}\[\]+?.,\\\^$|#\s]/g,g=i.Class.extend({init:function(e,n,i){e instanceof RegExp||(e=t(e,i)),this.route=e,this._callback=n},callback:function(e,t,o){var r,a,s=0,l=i.parseQueryStringParams(e);if(l._back=t,e=n(e),r=this.route.exec(e).slice(1),a=r.length,o)for(;s<a;s++)void 0!==r[s]&&(r[s]=decodeURIComponent(r[s]));r.push(l),this._callback.apply(null,r)},worksWith:function(e,t,i){return!!this.route.test(n(e))&&(this.callback(e,t,i),!0)}}),m=r.extend({init:function(e){e||(e={}),r.fn.init.call(this),this.routes=[],this.pushState=e.pushState,this.hashBang=e.hashBang,this.root=e.root,this.ignoreCase=e.ignoreCase!==!1,this.bind([a,s,l,d,c],e)},destroy:function(){o.unbind(l,this._urlChangedProxy),o.unbind(d,this._sameProxy),o.unbind(c,this._backProxy),this.unbind()},start:function(){var e,t=this,n=function(){t._same()},i=function(e){t._back(e)},r=function(e){t._urlChanged(e)};o.start({same:n,change:r,back:i,pushState:t.pushState,hashBang:t.hashBang,root:t.root}),e={url:o.current||"/",preventDefault:$.noop},t.trigger(a,e)||t._urlChanged(e),this._urlChangedProxy=r,this._backProxy=i},route:function(e,t){this.routes.push(new g(e,t,this.ignoreCase))},navigate:function(e,t){i.history.navigate(e,t)},replace:function(e,t){i.history.replace(e,t)},_back:function(e){this.trigger(c,{url:e.url,to:e.to})&&e.preventDefault()},_same:function(){this.trigger(d)},_urlChanged:function(e){var t,n,o,r,a=e.url,c=!!e.decode,d=e.backButtonPressed;if(a||(a="/"),this.trigger(l,{url:e.url,params:i.parseQueryStringParams(e.url),backButtonPressed:d}))return void e.preventDefault();for(t=0,n=this.routes,r=n.length;t<r;t++)if(o=n[t],o.worksWith(a,d,c))return;this.trigger(s,{url:a,params:i.parseQueryStringParams(a),backButtonPressed:d})&&e.preventDefault()}});i.Router=m}(),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.data.odata.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(i,o){var r,a,s,l,c,d,u,h,p=[],f=i.logic||"and",m=i.filters;for(r=0,a=m.length;r<a;r++)i=m[r],s=i.field,u=i.value,d=i.operator,i.filters?i=n(i,o):(h=i.ignoreCase,s=s.replace(/\./g,"/"),i=w[d],o&&(i=k[d]),"isnullorempty"===d?i=g.format("{0} {1} null or {0} {1} ''",s,i):"isnotnullorempty"===d?i=g.format("{0} {1} null and {0} {1} ''",s,i):"isnull"===d||"isnotnull"===d?i=g.format("{0} {1} null",s,i):"isempty"===d||"isnotempty"===d?i=g.format("{0} {1} ''",s,i):i&&u!==t&&(l=e.type(u),"string"===l?(c="'{1}'",u=u.replace(/'/g,"''"),h===!0&&(s="tolower("+s+")")):"date"===l?o?(c="{1:yyyy-MM-ddTHH:mm:ss+00:00}",u=g.timezone.apply(u,"Etc/UTC")):c="datetime'{1:yyyy-MM-ddTHH:mm:ss}'":c="{1}",i.length>3?"substringof"!==i?c="{0}({2},"+c+")":(c="{0}("+c+",{2})","doesnotcontain"===d&&(o?(c="{0}({2},'{1}') eq -1",i="indexof"):c+=" eq false")):c="{2} {0} "+c,i=g.format(c,i,u,s))),p.push(i);return i=p.join(" "+f+" "),p.length>1&&(i="("+i+")"),i}function i(e){for(var t in e)0===t.indexOf("@odata")&&delete e[t]}function o(){return Math.floor(65536*(1+Math.random())).toString(16).substr(1)}function r(e){return e+o()+"-"+o()+"-"+o()}function a(e,t){var n=v+"--"+e;return t&&(n+="--"),n}function s(e,t,n,i){var o=e.options[i].url,r=g.format("{0} ",n);return b(o)?r+o(t):r+o}function l(e,t){var n="";return n+=a(e,!1),n+=v+"Content-Type: application/http",n+=v+"Content-Transfer-Encoding: binary",n+=v+"Content-ID: "+t}function c(e){var t="";return t+=v+"Content-Type: application/json;odata=minimalmetadata",t+=v+"Prefer: return=representation",t+=_+g.stringify(e)}function d(e,t,n,i,o,r){var a,d="";for(a=0;a<e.length;a++)d+=l(t,n),d+=_+s(o,e[a],o.options[i].type,i)+" HTTP/1.1",r||(d+=c(e[a])),d+=v,n++;return d}function u(e,t,n,i,o,r,s){var l="";return l+=h(t,n),l+=d(e,n,i,r,o,s),l+=a(n,!0),l+=v}function h(e,t){var n="";return n+="--"+e+v,n+="Content-Type: multipart/mixed; boundary="+t+v}function p(e,t){var n={},i=r("sf_batch_"),o="",s=0,l=e.options.batch.url,c=r("sf_changeset_");return n.type=e.options.batch.type,n.url=b(l)?l():l,n.headers={"Content-Type":"multipart/mixed; boundary="+i},t.updated.length&&(o+=u(t.updated,i,c,s,e,"update",!1),s+=t.updated.length,c=r("sf_changeset_")),t.destroyed.length&&(o+=u(t.destroyed,i,c,s,e,"destroy",!0),s+=t.destroyed.length,c=r("sf_changeset_")),t.created.length&&(o+=u(t.created,i,c,s,e,"create",!1)),o+=a(i,!0),n.data=o,n}function f(e){var t,n,i,o,r,a,s=e.match(/--changesetresponse_[a-z0-9-]+$/gm),l=0,c=[];for(c.push({models:[],passed:!0}),a=0;a<s.length;a++)o=s[a],o.lastIndexOf("--",o.length-1)?a<s.length-1&&c.push({models:[],passed:!0}):(l=l?e.indexOf(o,l+o.length):e.indexOf(o),t=e.substring(l,e.indexOf("--",l+1)),n=t.match(/^HTTP\/1\.\d (\d{3}) (.*)$/gm).pop(),i=g.parseFloat(n.match(/\d{3}/g).pop()),i>=200&&i<=299?(r=t.match(/\{.*\}/gm),r&&c[c.length-1].models.push(JSON.parse(r[0]))):c[c.length-1].passed=!1);return c}var g=window.kendo,m=e.extend,v="\r\n",_="\r\n\r\n",b=g.isFunction,w={eq:"eq",neq:"ne",gt:"gt",gte:"ge",lt:"lt",lte:"le",contains:"substringof",doesnotcontain:"substringof",endswith:"endswith",startswith:"startswith",isnull:"eq",isnotnull:"ne",isnullorempty:"eq",isnotnullorempty:"ne",isempty:"eq",isnotempty:"ne"},k=m({},w,{contains:"contains"}),y={pageSize:e.noop,page:e.noop,filter:function(e,t,i){t&&(t=n(t,i),t&&(e.$filter=t))},sort:function(t,n){var i=e.map(n,function(e){var t=e.field.replace(/\./g,"/");return"desc"===e.dir&&(t+=" desc"),t}).join(",");i&&(t.$orderby=i)},skip:function(e,t){t&&(e.$skip=t)},take:function(e,t){t&&(e.$top=t)}},x={read:{dataType:"jsonp"}};m(!0,g.data,{schemas:{odata:{type:"json",data:function(e){return e.d.results||[e.d]},total:"d.__count"}},transports:{odata:{read:{cache:!0,dataType:"jsonp",jsonp:"$callback"},update:{cache:!0,dataType:"json",contentType:"application/json",type:"PUT"},create:{cache:!0,dataType:"json",contentType:"application/json",type:"POST"},destroy:{cache:!0,dataType:"json",type:"DELETE"},parameterMap:function(e,t,n){var i,o,r,a;if(e=e||{},t=t||"read",a=(this.options||x)[t],a=a?a.dataType:"json","read"===t){i={$inlinecount:"allpages"},"json"!=a&&(i.$format="json");for(r in e)y[r]?y[r](i,e[r],n):i[r]=e[r]}else{if("json"!==a)throw Error("Only json dataType can be used for "+t+" operation.");if("destroy"!==t){for(r in e)o=e[r],"number"==typeof o&&(e[r]=o+"");i=g.stringify(e)}}return i}}}}),m(!0,g.data,{schemas:{"odata-v4":{type:"json",data:function(t){if(e.isArray(t)){for(var n=0;n<t.length;n++)i(t[n]);return t}return t=e.extend({},t),i(t),t.value?t.value:[t]},total:function(e){return e["@odata.count"]}}},transports:{"odata-v4":{batch:{type:"POST"},read:{cache:!0,dataType:"json"},update:{cache:!0, +dataType:"json",contentType:"application/json;IEEE754Compatible=true",type:"PUT"},create:{cache:!0,dataType:"json",contentType:"application/json;IEEE754Compatible=true",type:"POST"},destroy:{cache:!0,dataType:"json",type:"DELETE"},parameterMap:function(e,t){var n=g.data.transports.odata.parameterMap(e,t,!0);return"read"==t&&(n.$count=!0,delete n.$inlinecount),n},submit:function(t){var n=this,i=p(n,t.data),o=t.data;(o.updated.length||o.destroyed.length||o.created.length)&&e.ajax(m(!0,{},{success:function(e){var n,i=f(e),r=0;o.updated.length&&(n=i[r],n.passed&&t.success(n.models.length?n.models:[],"update"),r++),o.destroyed.length&&(n=i[r],n.passed&&t.success([],"destroy"),r++),o.created.length&&(n=i[r],n.passed&&t.success(n.models,"create"))},error:function(e,n,i){t.error(e,n,i)}},i))}}}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.data.xml.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=e.isArray,o=e.isPlainObject,r=e.map,a=e.each,s=e.extend,l=n.getter,c=n.Class,d=c.extend({init:function(t){var l,c,d,u,h=this,p=t.total,f=t.model,g=t.parse,m=t.errors,v=t.serialize,_=t.data;f&&(o(f)&&(l=t.modelBase||n.data.Model,f.fields&&a(f.fields,function(t,n){o(n)&&n.field?e.isFunction(n.field)||(n=s(n,{field:h.getter(n.field)})):n={field:h.getter(n)},f.fields[t]=n}),c=f.id,c&&(d={},d[h.xpathToMember(c,!0)]={field:h.getter(c)},f.fields=s(d,f.fields),f.id=h.xpathToMember(c)),f=l.define(f)),h.model=f),p&&("string"==typeof p?(p=h.getter(p),h.total=function(e){return parseInt(p(e),10)}):"function"==typeof p&&(h.total=p)),m&&("string"==typeof m?(m=h.getter(m),h.errors=function(e){return m(e)||null}):"function"==typeof m&&(h.errors=m)),_&&("string"==typeof _?(_=h.xpathToMember(_),h.data=function(e){var t,n=h.evaluate(e,_);return n=i(n)?n:[n],h.model&&f.fields?(t=new h.model,r(n,function(e){if(e){var n,i={};for(n in f.fields)i[n]=t._parse(n,f.fields[n].field(e));return i}})):n}):"function"==typeof _&&(h.data=_)),"function"==typeof g&&(u=h.parse,h.parse=function(e){var t=g.call(h,e);return u.call(h,t)}),"function"==typeof v&&(h.serialize=v)},total:function(e){return this.data(e).length},errors:function(e){return e?e.errors:null},serialize:function(e){return e},parseDOM:function(e){var n,o,r,a,s,l,c,d={},u=e.attributes,h=u.length;for(c=0;c<h;c++)l=u[c],d["@"+l.nodeName]=l.nodeValue;for(o=e.firstChild;o;o=o.nextSibling)r=o.nodeType,3===r||4===r?d["#text"]=o.nodeValue:1===r&&(n=this.parseDOM(o),a=o.nodeName,s=d[a],i(s)?s.push(n):s=s!==t?[s,n]:n,d[a]=s);return d},evaluate:function(e,t){for(var n,o,r,a,s,l=t.split(".");n=l.shift();)if(e=e[n],i(e)){for(o=[],t=l.join("."),s=0,r=e.length;s<r;s++)a=this.evaluate(e[s],t),a=i(a)?a:[a],o.push.apply(o,a);return o}return e},parse:function(t){var n,i,o={};return n=t.documentElement||e.parseXML(t).documentElement,i=this.parseDOM(n),o[n.nodeName]=i,o},xpathToMember:function(e,t){return e?(e=e.replace(/^\//,"").replace(/\//g,"."),e.indexOf("@")>=0?e.replace(/\.?(@.*)/,t?"$1":'["$1"]'):e.indexOf("text()")>=0?e.replace(/(\.?text\(\))/,t?"#text":'["#text"]'):e):""},getter:function(e){return l(this.xpathToMember(e),!0)}});e.extend(!0,n.data,{XmlDataReader:d,readers:{xml:d}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.data.min",["kendo.core.min","kendo.data.odata.min","kendo.data.xml.min"],e)}(function(){return function(e,t){function n(e,t,n,i){return function(o){var r,a={};for(r in o)a[r]=o[r];a.field=i?n+"."+o.field:n,t==Pe&&e._notifyChange&&e._notifyChange(a),e.trigger(t,a)}}function i(t,n){if(t===n)return!0;var o,r=e.type(t),a=e.type(n);if(r!==a)return!1;if("date"===r)return t.getTime()===n.getTime();if("object"!==r&&"array"!==r)return!1;for(o in t)if(!i(t[o],n[o]))return!1;return!0}function o(e,t){var n,i;for(i in e){if(n=e[i],me(n)&&n.field&&n.field===t)return n;if(n===t)return n}return null}function r(e){this.data=e||[]}function a(e,n){if(e){var i=typeof e===De?{field:e,dir:n}:e,o=_e(i)?i:i!==t?[i]:[];return be(o,function(e){return!!e.dir})}}function s(e){var t,n,i,o,r=e.filters;if(r)for(t=0,n=r.length;t<n;t++)i=r[t],o=i.operator,o&&typeof o===De&&(i.operator=ne[o.toLowerCase()]||o),s(i)}function l(e){if(e&&!ve(e))return!_e(e)&&e.filters||(e={logic:"and",filters:_e(e)?e:[e]}),s(e),e}function c(e,t){return!e.logic&&!t.logic&&(e.field===t.field&&e.value===t.value&&e.operator===t.operator)}function d(e){return e=e||{},ve(e)?{logic:"and",filters:[]}:l(e)}function u(e,t){return t.logic||e.field>t.field?1:e.field<t.field?-1:0}function h(e,t){var n,i,o,r,a;if(e=d(e),t=d(t),e.logic!==t.logic)return!1;if(o=(e.filters||[]).slice(),r=(t.filters||[]).slice(),o.length!==r.length)return!1;for(o=o.sort(u),r=r.sort(u),a=0;a<o.length;a++)if(n=o[a],i=r[a],n.logic&&i.logic){if(!h(n,i))return!1}else if(!c(n,i))return!1;return!0}function p(e){return _e(e)?e:[e]}function f(e,n,i,o){var r=typeof e===De?{field:e,dir:n,compare:i,skipItemSorting:o}:e,a=_e(r)?r:r!==t?[r]:[];return $(a,function(e){return{field:e.field,dir:e.dir||"asc",aggregates:e.aggregates,compare:e.compare,skipItemSorting:e.skipItemSorting}})}function g(e,t,n){var i,o=f(e,t,n);for(i=0;i<o.length;i++)delete o[i].compare;return o}function m(e){var t,n=_e(e)?e:[e];for(t=0;t<n.length;t++)if(n[t]&&Ce(n[t].compare))return!0;return!1}function v(e,t){return e&&e.getTime&&t&&t.getTime?e.getTime()===t.getTime():e===t}function _(e,t,n,i,o,r){var a,s,l,c,d;for(t=t||[],c=t.length,a=0;a<c;a++)s=t[a],l=s.aggregate,d=s.field,e[d]=e[d]||{},r[d]=r[d]||{},r[d][l]=r[d][l]||{},e[d][l]=ie[l.toLowerCase()](e[d][l],n,xe.accessor(d),i,o,r[d][l])}function b(e){return"number"==typeof e&&!isNaN(e)}function w(e){return e&&e.getTime}function k(e){var t,n=e.length,i=Array(n);for(t=0;t<n;t++)i[t]=e[t].toJSON();return i}function y(e,t,n,i,o){var r,a,s,l,c,d={};for(l=0,c=e.length;l<c;l++){r=e[l];for(a in t)s=o[a],s&&s!==a&&(d[s]||(d[s]=xe.setter(s)),d[s](r,t[a](r)),delete r[a])}}function x(e,t,n,i,o){var r,a,s,l,c;for(l=0,c=e.length;l<c;l++){r=e[l];for(a in t)r[a]=n._parse(a,t[a](r)),s=o[a],s&&s!==a&&delete r[s]}}function C(e,t,n,i,o){var r,a,s,l;for(a=0,l=e.length;a<l;a++)r=e[a],s=i[r.field],s&&s!=r.field&&(r.field=s),r.value=n._parse(r.field,r.value),r.hasSubgroups?C(r.items,t,n,i,o):x(r.items,t,n,i,o)}function S(e,t,n,i,o,r){return function(a){return a=e(a),T(t,n,i,o,r)(a)}}function T(e,t,n,i,o){return function(r){return r&&!ve(n)&&("[object Array]"===Ze.call(r)||r instanceof nt||(r=[r]),t(r,n,new e,i,o)),r||[]}}function D(e,t){var n,i,o;if(t.items&&t.items.length)for(o=0;o<t.items.length;o++)n=e.items[o],i=t.items[o],n&&i?n.hasSubgroups?D(n,i):n.field&&n.value==i.value?n.items.push.apply(n.items,i.items):e.items.push.apply(e.items,[i]):i&&e.items.push.apply(e.items,[i])}function A(e,t,n,i){for(var o,r,a,s=0;t.length&&i&&(o=t[s],r=o.items,a=r.length,e&&e.field===o.field&&e.value===o.value?(e.hasSubgroups&&e.items.length?A(e.items[e.items.length-1],o.items,n,i):(r=r.slice(n,n+i),e.items=e.items.concat(r)),t.splice(s--,1)):o.hasSubgroups&&r.length?(A(o,r,n,i),o.items.length||t.splice(s--,1)):(r=r.slice(n,n+i),o.items=r,o.items.length||t.splice(s--,1)),0===r.length?n-=a:(n=0,i-=r.length),!(++s>=t.length)););s<t.length&&t.splice(s,t.length-s)}function E(e,t){var n,i,o,r,a=[],s=(e||[]).length,l=Ce(t)?t:function(e,t){return e[t]};for(o=0;o<s;o++)if(n=l(e,o),n.hasSubgroups)a=a.concat(E(n.items));else for(i=n.items,r=0;r<i.length;r++)a.push(l(i,r));return a}function I(e){var t,n,i,o,r,a=[];for(t=0,n=e.length;t<n;t++)if(r=e.at(t),r.hasSubgroups)a=a.concat(I(r.items));else for(i=r.items,o=0;o<i.length;o++)a.push(i.at(o));return a}function M(e,t){var n,i,o;if(t)for(n=0,i=e.length;n<i;n++)o=e.at(n),o.hasSubgroups?M(o.items,t):o.items=new Y(o.items,t,o.items._events)}function F(e,t){for(var n=0;n<e.length;n++)if(e[n].hasSubgroups){if(F(e[n].items,t))return!0}else if(t(e[n].items,e[n]))return!0}function R(e,t,n,i){for(var o=0;o<e.length&&e[o].data!==t&&!P(e[o].data,n,i);o++);}function P(e,t,n){for(var i=0,o=e.length;i<o;i++){if(e[i]&&e[i].hasSubgroups)return P(e[i].items,t,n);if(e[i]===t||e[i]===n)return e[i]=n,!0}}function z(e,n,i,o,r){var a,s,l,c;for(a=0,s=e.length;a<s;a++)if(l=e[a],l&&!(l instanceof o))if(l.hasSubgroups===t||r){for(c=0;c<n.length;c++)if(n[c]===l){e[a]=n.at(c),R(i,n,l,e[a]);break}}else z(l.items,n,i,o,r)}function B(e,t){var n,i,o=e.length;for(i=0;i<o;i++)if(n=e[i],n.uid&&n.uid==t.uid)return e.splice(i,1),n}function L(e,t){return t?N(e,function(e){return e.uid&&e.uid==t.uid||e[t.idField]===t.id&&t.id!==t._defaultId}):-1}function H(e,t){return t?N(e,function(e){return e.uid==t.uid}):-1}function N(e,t){var n,i;for(n=0,i=e.length;n<i;n++)if(t(e[n]))return n;return-1}function O(e,t){var n,i;return e&&!ve(e)?(n=e[t],i=me(n)?n.from||n.field||t:e[t]||t,Ce(i)?t:i):t}function V(e,t){var n,i,o,r={};for(o in e)"filters"!==o&&(r[o]=e[o]);if(e.filters)for(r.filters=[],n=0,i=e.filters.length;n<i;n++)r.filters[n]=V(e.filters[n],t);else r.field=O(t.fields,r.field);return r}function W(e,t){var n,i,o,r,a,s=[];for(n=0,i=e.length;n<i;n++){o={},r=e[n];for(a in r)o[a]=r[a];o.field=O(t.fields,o.field),o.aggregates&&_e(o.aggregates)&&(o.aggregates=W(o.aggregates,t)),s.push(o)}return s}function U(t,n){var i,o,r,a,s,l,c,d,u,h;for(t=e(t)[0],i=t.options,o=n[0],r=n[1],a=[],s=0,l=i.length;s<l;s++)u={},d=i[s],c=d.parentNode,c===t&&(c=null),d.disabled||c&&c.disabled||(c&&(u.optgroup=c.label),u[o.field]=d.text,h=d.attributes.value,h=h&&h.specified?d.value:d.text,u[r.field]=h,a.push(u));return a}function q(t,n){var i,o,r,a,s,l,c,d=e(t)[0].tBodies[0],u=d?d.rows:[],h=n.length,p=[];for(i=0,o=u.length;i<o;i++){for(s={},c=!0,a=u[i].cells,r=0;r<h;r++)l=a[r],"th"!==l.nodeName.toLowerCase()&&(c=!1,s[n[r].field]=l.innerHTML);c||p.push(s)}return p}function j(e){return function(){var t=this._data,n=le.fn[e].apply(this,Xe.call(arguments));return this._data!=t&&this._attachBubbleHandlers(),n}}function G(t,n){function i(e,t){return e.filter(t).add(e.find(t))}var o,r,a,s,l,c,d,u,h=e(t).children(),p=[],f=n[0].field,g=n[1]&&n[1].field,m=n[2]&&n[2].field,v=n[3]&&n[3].field;for(o=0,r=h.length;o<r;o++)a={_loaded:!0},s=h.eq(o),c=s[0].firstChild,u=s.children(),t=u.filter("ul"),u=u.filter(":not(ul)"),l=s.attr("data-id"),l&&(a.id=l),c&&(a[f]=3==c.nodeType?c.nodeValue:u.text()),g&&(a[g]=i(u,"a").attr("href")),v&&(a[v]=i(u,"img").attr("src")),m&&(d=i(u,".k-sprite").prop("className"),a[m]=d&&e.trim(d.replace("k-sprite",""))),t.length&&(a.items=G(t.eq(0),n)),"true"==s.attr("data-hasChildren")&&(a.hasChildren=!0),p.push(a);return p}var $,Y,K,Q,X,J,Z,ee,te,ne,ie,oe,re,ae,se,le,ce,de,ue,he,pe,fe=e.extend,ge=e.proxy,me=e.isPlainObject,ve=e.isEmptyObject,_e=e.isArray,be=e.grep,we=e.ajax,ke=e.each,ye=e.noop,xe=window.kendo,Ce=xe.isFunction,Se=xe.Observable,Te=xe.Class,De="string",Ae="function",Ee="asc",Ie="create",Me="read",Fe="update",Re="destroy",Pe="change",ze="sync",Be="get",Le="error",He="requestStart",Ne="progress",Oe="requestEnd",Ve=[Ie,Me,Fe,Re],We=function(e){return e},Ue=xe.getter,qe=xe.stringify,je=Math,Ge=[].push,$e=[].join,Ye=[].pop,Ke=[].splice,Qe=[].shift,Xe=[].slice,Je=[].unshift,Ze={}.toString,et=xe.support.stableSort,tt=/^\/Date\((.*?)\)\/$/,nt=Se.extend({init:function(e,t){var n=this;n.type=t||K,Se.fn.init.call(n),n.length=e.length,n.wrapAll(e,n)},at:function(e){return this[e]},toJSON:function(){var e,t,n=this.length,i=Array(n);for(e=0;e<n;e++)t=this[e],t instanceof K&&(t=t.toJSON()),i[e]=t;return i},parent:ye,wrapAll:function(e,t){var n,i,o=this,r=function(){return o};for(t=t||[],n=0,i=e.length;n<i;n++)t[n]=o.wrap(e[n],r);return t},wrap:function(e,t){var n,i=this;return null!==e&&"[object Object]"===Ze.call(e)&&(n=e instanceof i.type||e instanceof J,n||(e=e instanceof K?e.toJSON():e,e=new i.type(e)),e.parent=t,e.bind(Pe,function(e){i.trigger(Pe,{field:e.field,node:e.node,index:e.index,items:e.items||[this],action:e.node?e.action||"itemloaded":"itemchange"})})),e},push:function(){var e,t=this.length,n=this.wrapAll(arguments);return e=Ge.apply(this,n),this.trigger(Pe,{action:"add",index:t,items:n}),e},slice:Xe,sort:[].sort,join:$e,pop:function(){var e=this.length,t=Ye.apply(this);return e&&this.trigger(Pe,{action:"remove",index:e-1,items:[t]}),t},splice:function(e,t,n){var i,o,r,a=this.wrapAll(Xe.call(arguments,2));if(i=Ke.apply(this,[e,t].concat(a)),i.length)for(this.trigger(Pe,{action:"remove",index:e,items:i}),o=0,r=i.length;o<r;o++)i[o]&&i[o].children&&i[o].unbind(Pe);return n&&this.trigger(Pe,{action:"add",index:e,items:a}),i},shift:function(){var e=this.length,t=Qe.apply(this);return e&&this.trigger(Pe,{action:"remove",index:0,items:[t]}),t},unshift:function(){var e,t=this.wrapAll(arguments);return e=Je.apply(this,t),this.trigger(Pe,{action:"add",index:0,items:t}),e},indexOf:function(e){var t,n,i=this;for(t=0,n=i.length;t<n;t++)if(i[t]===e)return t;return-1},forEach:function(e,t){for(var n=0,i=this.length,o=t||window;n<i;n++)e.call(o,this[n],n,this)},map:function(e,t){for(var n=0,i=[],o=this.length,r=t||window;n<o;n++)i[n]=e.call(r,this[n],n,this);return i},reduce:function(e){var t,n=0,i=this.length;for(2==arguments.length?t=arguments[1]:n<i&&(t=this[n++]);n<i;n++)t=e(t,this[n],n,this);return t},reduceRight:function(e){var t,n=this.length-1;for(2==arguments.length?t=arguments[1]:n>0&&(t=this[n--]);n>=0;n--)t=e(t,this[n],n,this);return t},filter:function(e,t){for(var n,i=0,o=[],r=this.length,a=t||window;i<r;i++)n=this[i],e.call(a,n,i,this)&&(o[o.length]=n);return o},find:function(e,t){for(var n,i=0,o=this.length,r=t||window;i<o;i++)if(n=this[i],e.call(r,n,i,this))return n},every:function(e,t){for(var n,i=0,o=this.length,r=t||window;i<o;i++)if(n=this[i],!e.call(r,n,i,this))return!1;return!0},some:function(e,t){for(var n,i=0,o=this.length,r=t||window;i<o;i++)if(n=this[i],e.call(r,n,i,this))return!0;return!1},remove:function(e){var t=this.indexOf(e);t!==-1&&this.splice(t,1)},empty:function(){this.splice(0,this.length)}});"undefined"!=typeof Symbol&&Symbol.iterator&&!nt.prototype[Symbol.iterator]&&(nt.prototype[Symbol.iterator]=[][Symbol.iterator]),Y=nt.extend({init:function(e,t,n){Se.fn.init.call(this),this.type=t||K,n&&(this._events=n);for(var i=0;i<e.length;i++)this[i]=e[i];this.length=i,this._parent=ge(function(){return this},this)},at:function(e){var t=this[e];return t instanceof this.type?t.parent=this._parent:t=this[e]=this.wrap(t,this._parent),t}}),K=Se.extend({init:function(e){var t,n,i=this,o=function(){return i};Se.fn.init.call(this),this._handlers={};for(n in e)t=e[n],"object"==typeof t&&t&&!t.getTime&&"_"!=n.charAt(0)&&(t=i.wrap(t,n,o)),i[n]=t;i.uid=xe.guid()},shouldSerialize:function(e){return this.hasOwnProperty(e)&&"_handlers"!==e&&"_events"!==e&&typeof this[e]!==Ae&&"uid"!==e},forEach:function(e){for(var t in this)this.shouldSerialize(t)&&e(this[t],t)},toJSON:function(){var e,t,n={};for(t in this)this.shouldSerialize(t)&&(e=this[t],(e instanceof K||e instanceof nt)&&(e=e.toJSON()),n[t]=e);return n},get:function(e){var t,n=this;return n.trigger(Be,{field:e}),t="this"===e?n:xe.getter(e,!0)(n)},_set:function(e,t){var n,i,o,r=this,a=e.indexOf(".")>=0;if(a)for(n=e.split("."),i="";n.length>1;){if(i+=n.shift(),o=xe.getter(i,!0)(r),o instanceof K)return o.set(n.join("."),t),a;i+="."}return xe.setter(e)(r,t),a},set:function(e,t){var n=this,i=!1,o=e.indexOf(".")>=0,r=xe.getter(e,!0)(n);return r!==t&&(r instanceof Se&&this._handlers[e]&&(this._handlers[e].get&&r.unbind(Be,this._handlers[e].get),r.unbind(Pe,this._handlers[e].change)),i=n.trigger("set",{field:e,value:t}),i||(o||(t=n.wrap(t,e,function(){return n})),(!n._set(e,t)||e.indexOf("(")>=0||e.indexOf("[")>=0)&&n.trigger(Pe,{field:e}))),i},parent:ye,wrap:function(e,t,i){var o,r,a,s,l=this,c=Ze.call(e);return null==e||"[object Object]"!==c&&"[object Array]"!==c||(a=e instanceof nt,s=e instanceof le,"[object Object]"!==c||s||a?("[object Array]"===c||a||s)&&(a||s||(e=new nt(e)),r=n(l,Pe,t,!1),e.bind(Pe,r),l._handlers[t]={change:r}):(e instanceof K||(e=new K(e)),o=n(l,Be,t,!0),e.bind(Be,o),r=n(l,Pe,t,!0),e.bind(Pe,r),l._handlers[t]={get:o,change:r}),e.parent=i),e}}),Q={number:function(e){return typeof e===De&&"null"===e.toLowerCase()?null:xe.parseFloat(e)},date:function(e){return typeof e===De&&"null"===e.toLowerCase()?null:xe.parseDate(e)},"boolean":function(e){return typeof e===De?"null"===e.toLowerCase()?null:"true"===e.toLowerCase():null!=e?!!e:e},string:function(e){return typeof e===De&&"null"===e.toLowerCase()?null:null!=e?e+"":e},"default":function(e){return e}},X={string:"",number:0,date:new Date,"boolean":!1,"default":""},J=K.extend({init:function(n){var i,o,r=this;if((!n||e.isEmptyObject(n))&&(n=e.extend({},r.defaults,n),r._initializers))for(i=0;i<r._initializers.length;i++)o=r._initializers[i],n[o]=r.defaults[o]();K.fn.init.call(r,n),r.dirty=!1,r.dirtyFields={},r.idField&&(r.id=r.get(r.idField),r.id===t&&(r.id=r._defaultId))},shouldSerialize:function(e){return K.fn.shouldSerialize.call(this,e)&&"uid"!==e&&!("id"!==this.idField&&"id"===e)&&"dirty"!==e&&"dirtyFields"!==e&&"_accessors"!==e},_parse:function(e,t){var n,i=this,r=e,a=i.fields||{};return e=a[e],e||(e=o(a,r)),e&&(n=e.parse,!n&&e.type&&(n=Q[e.type.toLowerCase()])),n?n(t):t},_notifyChange:function(e){var t=e.action;"add"!=t&&"remove"!=t||(this.dirty=!0,this.dirtyFields[e.field]=!0)},editable:function(e){return e=(this.fields||{})[e],!e||e.editable!==!1},set:function(e,t,n){var o=this,r=o.dirty;o.editable(e)&&(t=o._parse(e,t),i(t,o.get(e))?o.trigger("equalSet",{field:e,value:t}):(o.dirty=!0,o.dirtyFields[e]=!0,K.fn.set.call(o,e,t,n)&&!r&&(o.dirty=r,o.dirty||(o.dirtyFields[e]=!1))))},accept:function(e){var t,n,i=this,o=function(){return i};for(t in e)n=e[t],"_"!=t.charAt(0)&&(n=i.wrap(e[t],t,o)),i._set(t,n);i.idField&&(i.id=i.get(i.idField)),i.dirty=!1,i.dirtyFields={}},isNew:function(){return this.id===this._defaultId}}),J.define=function(e,n){n===t&&(n=e,e=J);var i,o,r,a,s,l,c,d,u=fe({defaults:{}},n),h={},p=u.id,f=[];if(p&&(u.idField=p),u.id&&delete u.id,p&&(u.defaults[p]=u._defaultId=""),"[object Array]"===Ze.call(u.fields)){for(l=0,c=u.fields.length;l<c;l++)r=u.fields[l],typeof r===De?h[r]={}:r.field&&(h[r.field]=r);u.fields=h}for(o in u.fields)r=u.fields[o],a=r.type||"default",s=null,d=o,o=typeof r.field===De?r.field:o,r.nullable||(s=u.defaults[d!==o?d:o]=r.defaultValue!==t?r.defaultValue:X[a.toLowerCase()],"function"==typeof s&&f.push(o)),n.id===o&&(u._defaultId=s),u.defaults[d!==o?d:o]=s,r.parse=r.parse||Q[a];return f.length>0&&(u._initializers=f),i=e.extend(u),i.define=function(e){return J.define(i,e)},u.fields&&(i.fields=u.fields,i.idField=u.idField),i},Z={selector:function(e){return Ce(e)?e:Ue(e)},compare:function(e){var t=this.selector(e);return function(e,n){return e=t(e),n=t(n),null==e&&null==n?0:null==e?-1:null==n?1:e.localeCompare?e.localeCompare(n):e>n?1:e<n?-1:0}},create:function(e){var t=e.compare||this.compare(e.field);return"desc"==e.dir?function(e,n){return t(n,e,!0)}:t},combine:function(e){return function(t,n){var i,o,r=e[0](t,n);for(i=1,o=e.length;i<o;i++)r=r||e[i](t,n);return r}}},ee=fe({},Z,{asc:function(e){var t=this.selector(e);return function(e,n){var i=t(e),o=t(n);return i&&i.getTime&&o&&o.getTime&&(i=i.getTime(),o=o.getTime()),i===o?e.__position-n.__position:null==i?-1:null==o?1:i.localeCompare?i.localeCompare(o):i>o?1:-1}},desc:function(e){var t=this.selector(e);return function(e,n){var i=t(e),o=t(n);return i&&i.getTime&&o&&o.getTime&&(i=i.getTime(),o=o.getTime()),i===o?e.__position-n.__position:null==i?1:null==o?-1:o.localeCompare?o.localeCompare(i):i<o?1:-1}},create:function(e){return this[e.dir](e.field)}}),$=function(e,t){var n,i=e.length,o=Array(i);for(n=0;n<i;n++)o[n]=t(e[n],n,e);return o},te=function(){function e(e){return"string"==typeof e&&(e=e.replace(/[\r\n]+/g,"")),JSON.stringify(e)}function t(t){return function(n,i,o,r){return i+="",o&&(n="("+n+" + '').toString()"+(r?".toLocaleLowerCase('"+r+"')":".toLowerCase()"),i=r?i.toLocaleLowerCase(r):i.toLowerCase()),t(n,e(i),o)}}function n(t,n,i,o,r){if(null!=i){if(typeof i===De){var a=tt.exec(i);a?i=new Date((+a[1])):o?(i=e(r?i.toLocaleLowerCase(r):i.toLowerCase()),n="(("+n+" || '')+'')"+(r?".toLocaleLowerCase('"+r+"')":".toLowerCase()")):i=e(i)}i.getTime&&(n="("+n+"&&"+n+".getTime?"+n+".getTime():"+n+")",i=i.getTime())}return n+" "+t+" "+i}function i(e){var t,n,i,o;for(t="/^",n=!1,i=0;i<e.length;++i){if(o=e.charAt(i),n)t+="\\"+o;else{if("~"==o){n=!0;continue}t+="*"==o?".*":"?"==o?".":".+^$()[]{}|\\/\n\r\u2028\u2029 ".indexOf(o)>=0?"\\"+o:o}n=!1}return t+"$/"}return{quote:function(t){return t&&t.getTime?"new Date("+t.getTime()+")":e(t)},eq:function(e,t,i,o){return n("==",e,t,i,o)},neq:function(e,t,i,o){return n("!=",e,t,i,o)},gt:function(e,t,i){return n(">",e,t,i)},gte:function(e,t,i){return n(">=",e,t,i)},lt:function(e,t,i){return n("<",e,t,i)},lte:function(e,t,i){return n("<=",e,t,i)},startswith:t(function(e,t){return e+".lastIndexOf("+t+", 0) == 0"}),doesnotstartwith:t(function(e,t){return e+".lastIndexOf("+t+", 0) == -1"}),endswith:t(function(e,t){var n=t?t.length-2:0;return e+".indexOf("+t+", "+e+".length - "+n+") >= 0"}),doesnotendwith:t(function(e,t){var n=t?t.length-2:0;return e+".indexOf("+t+", "+e+".length - "+n+") < 0"}),contains:t(function(e,t){return e+".indexOf("+t+") >= 0"}),doesnotcontain:t(function(e,t){return e+".indexOf("+t+") == -1"}),matches:t(function(e,t){return t=t.substring(1,t.length-1),i(t)+".test("+e+")"}),doesnotmatch:t(function(e,t){return t=t.substring(1,t.length-1),"!"+i(t)+".test("+e+")"}),isempty:function(e){return e+" === ''"},isnotempty:function(e){return e+" !== ''"},isnull:function(e){return"("+e+" == null)"},isnotnull:function(e){return"("+e+" != null)"},isnullorempty:function(e){return"("+e+" === null) || ("+e+" === '')"},isnotnullorempty:function(e){return"("+e+" !== null) && ("+e+" !== '')"}}}(),r.filterExpr=function(e){var n,i,o,a,s,l,c=[],d={and:" && ",or:" || "},u=[],h=[],p=e.filters;for(n=0,i=p.length;n<i;n++)o=p[n],s=o.field,l=o.operator,o.filters?(a=r.filterExpr(o),o=a.expression.replace(/__o\[(\d+)\]/g,function(e,t){return t=+t,"__o["+(h.length+t)+"]"}).replace(/__f\[(\d+)\]/g,function(e,t){return t=+t,"__f["+(u.length+t)+"]"}),h.push.apply(h,a.operators),u.push.apply(u,a.fields)):(typeof s===Ae?(a="__f["+u.length+"](d)",u.push(s)):a=xe.expr(s),typeof l===Ae?(o="__o["+h.length+"]("+a+", "+te.quote(o.value)+")",h.push(l)):o=te[(l||"eq").toLowerCase()](a,o.value,o.ignoreCase===t||o.ignoreCase,e.accentFoldingFiltering)),c.push(o);return{expression:"("+c.join(d[e.logic])+")",fields:u,operators:h}},ne={"==":"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",notsubstringof:"doesnotcontain",isnull:"isnull",isempty:"isempty",isnotempty:"isnotempty"},r.normalizeFilter=l,r.compareFilters=h,r.prototype={toArray:function(){return this.data},range:function(e,t){return new r(this.data.slice(e,e+t))},skip:function(e){return new r(this.data.slice(e))},take:function(e){return new r(this.data.slice(0,e))},select:function(e){return new r($(this.data,e))},order:function(e,t,n){var i={dir:t};return e&&(e.compare?i.compare=e.compare:i.field=e),new r(n?this.data.sort(Z.create(i)):this.data.slice(0).sort(Z.create(i)))},orderBy:function(e,t){return this.order(e,"asc",t)},orderByDescending:function(e,t){return this.order(e,"desc",t)},sort:function(e,t,n,i){var o,r,s=a(e,t),l=[];if(n=n||Z,s.length){for(o=0,r=s.length;o<r;o++)l.push(n.create(s[o]));return this.orderBy({compare:n.combine(l)},i)}return this},filter:function(e){var t,n,i,o,a,s,c,d,u=this.data,h=[];if(e=l(e),!e||0===e.filters.length)return this;for(o=r.filterExpr(e),s=o.fields,c=o.operators,a=d=Function("d, __f, __o","return "+o.expression),(s.length||c.length)&&(d=function(e){return a(e,s,c)}),t=0,i=u.length;t<i;t++)n=u[t],d(n)&&h.push(n);return new r(h)},group:function(e,t){e=f(e||[]),t=t||this.data;var n,i=this,o=new r(i.data);return e.length>0&&(n=e[0],o=o.groupBy(n).select(function(i){var o=new r(t).filter([{field:i.field,operator:"eq",value:i.value,ignoreCase:!1}]);return{field:i.field,value:i.value,items:e.length>1?new r(i.items).group(e.slice(1),o.toArray()).toArray():i.items,hasSubgroups:e.length>1,aggregates:o.aggregate(n.aggregates)}})),o},groupBy:function(e){var t,n,i,o,a,s,l,c,d,u,h=this;if(ve(e)||!this.data.length)return new r([]);for(t=e.field,n=e.skipItemSorting?this.data:this._sortForGrouping(t,e.dir||"asc"),i=xe.accessor(t),a=i.get(n[0],t),s={field:t,value:a,items:[]},u=[s],c=0,d=n.length;c<d;c++)o=n[c],l=i.get(o,t),v(a,l)||(a=l,s={field:t,value:a,items:[]},u.push(s)),s.items.push(o);return u=h._sortGroups(u,e),new r(u)},_sortForGrouping:function(e,t){var n,i,o=this.data;if(!et){for(n=0,i=o.length;n<i;n++)o[n].__position=n;for(o=new r(o).sort(e,t,ee).toArray(),n=0,i=o.length;n<i;n++)delete o[n].__position;return o}return this.sort(e,t).toArray()},_sortGroups:function(e,t){var n=e;return t&&Ce(t.compare)&&(n=new r(n).order({compare:t.compare},t.dir||Ee).toArray()),n},aggregate:function(e){var t,n,i={},o={};if(e&&e.length)for(t=0,n=this.data.length;t<n;t++)_(i,e,this.data[t],t,n,o);return i}},ie={sum:function(e,t,n){var i=n.get(t);return b(e)?b(i)&&(e+=i):e=i,e},count:function(e){return(e||0)+1},average:function(e,n,i,o,r,a){var s=i.get(n);return a.count===t&&(a.count=0),b(e)?b(s)&&(e+=s):e=s,b(s)&&a.count++,o==r-1&&b(e)&&(e/=a.count),e},max:function(e,t,n){var i=n.get(t);return b(e)||w(e)||(e=i),e<i&&(b(i)||w(i))&&(e=i),e},min:function(e,t,n){var i=n.get(t);return b(e)||w(e)||(e=i),e>i&&(b(i)||w(i))&&(e=i),e}},r.normalizeGroup=f,r.normalizeSort=a,r.process=function(e,n,i){var o,s,l,c,d,u,h,p,v,_,b,w;return n=n||{},o=n.group,s=m(f(o||[])),l=new r(e),c=g(o||[]),d=a(n.sort||[]),u=s?d:c.concat(d),v=n.filterCallback,_=n.filter,b=n.skip,w=n.take,u&&i&&(l=l.sort(u,t,t,i)),_&&(l=l.filter(_),v&&(l=v(l)),p=l.toArray().length),u&&!i&&(l=l.sort(u),o&&(e=l.toArray())),s?(l=l.group(o,e),b!==t&&w!==t&&(l=new r(E(l.toArray())).range(b,w),h=$(c,function(e){return fe({},e,{skipItemSorting:!0})}),l=l.group(h,e))):(b!==t&&w!==t&&(l=l.range(b,w)),o&&(l=l.group(o,e))),{total:p,data:l.toArray()}},oe=Te.extend({init:function(e){this.data=e.data},read:function(e){e.success(this.data)},update:function(e){e.success(e.data)},create:function(e){e.success(e.data)},destroy:function(e){e.success(e.data)}}),re=Te.extend({init:function(e){var t,n=this;e=n.options=fe({},n.options,e),ke(Ve,function(t,n){typeof e[n]===De&&(e[n]={url:e[n]})}),n.cache=e.cache?ae.create(e.cache):{find:ye,add:ye},t=e.parameterMap,e.submit&&(n.submit=e.submit),Ce(e.push)&&(n.push=e.push),n.push||(n.push=We),n.parameterMap=Ce(t)?t:function(e){var n={};return ke(e,function(e,i){e in t&&(e=t[e],me(e)&&(i=e.value(i),e=e.key)),n[e]=i}),n}},options:{parameterMap:We},create:function(e){return we(this.setup(e,Ie))},read:function(n){var i,o,r,a=this,s=a.cache;n=a.setup(n,Me),i=n.success||ye,o=n.error||ye,r=s.find(n.data),r!==t?i(r):(n.success=function(e){s.add(n.data,e),i(e)},e.ajax(n))},update:function(e){return we(this.setup(e,Fe))},destroy:function(e){return we(this.setup(e,Re))},setup:function(e,t){e=e||{};var n,i=this,o=i.options[t],r=Ce(o.data)?o.data(e.data):o.data;return e=fe(!0,{},o,e),n=fe(!0,{},r,e.data),e.data=i.parameterMap(n,t),Ce(e.url)&&(e.url=e.url(n)),e}}),ae=Te.extend({init:function(){this._store={}},add:function(e,n){e!==t&&(this._store[qe(e)]=n)},find:function(e){return this._store[qe(e)]},clear:function(){this._store={}},remove:function(e){delete this._store[qe(e)]}}),ae.create=function(e){var t={inmemory:function(){return new ae}};return me(e)&&Ce(e.find)?e:e===!0?new ae:t[e]()},se=Te.extend({init:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g=this;e=e||{};for(t in e)n=e[t],g[t]=typeof n===De?Ue(n):n;o=e.modelBase||J,me(g.model)&&(g.model=i=o.define(g.model)),r=ge(g.data,g),g._dataAccessFunction=r,g.model&&(a=ge(g.groups,g),s=ge(g.serialize,g),l={},c={},d={},u={},h=!1,i=g.model,i.fields&&(ke(i.fields,function(e,t){var n;p=e,me(t)&&t.field?p=t.field:typeof t===De&&(p=t),me(t)&&t.from&&(n=t.from),h=h||n&&n!==e||p!==e,f=n||p,c[e]=f.indexOf(".")!==-1?Ue(f,!0):Ue(f),d[e]=Ue(e),l[n||p]=e,u[e]=n||p}),!e.serialize&&h&&(g.serialize=S(s,i,y,d,l,u))),g._dataAccessFunction=r,g._wrapDataAccessBase=T(i,x,c,l,u),g.data=S(r,i,x,c,l,u),g.groups=S(a,i,C,c,l,u))},errors:function(e){return e?e.errors:null},parse:We,data:We,total:function(e){return e.length},groups:We,aggregates:function(){return{}},serialize:function(e){return e}}),le=Se.extend({init:function(e){var n,i,o,r=this;e&&(i=e.data),e=r.options=fe({},r.options,e),r._map={},r._prefetch={},r._data=[],r._pristineData=[],r._ranges=[],r._view=[],r._pristineTotal=0,r._destroyed=[],r._pageSize=e.pageSize,r._page=e.page||(e.pageSize?1:t),r._sort=a(e.sort),r._filter=l(e.filter),r._group=f(e.group),r._aggregate=e.aggregate,r._total=e.total,r._shouldDetachObservableParents=!0,Se.fn.init.call(r),r.transport=ce.create(e,i,r),Ce(r.transport.push)&&r.transport.push({pushCreate:ge(r._pushCreate,r),pushUpdate:ge(r._pushUpdate,r),pushDestroy:ge(r._pushDestroy,r)}),null!=e.offlineStorage&&("string"==typeof e.offlineStorage?(o=e.offlineStorage,r._storage={getItem:function(){return JSON.parse(localStorage.getItem(o))},setItem:function(e){localStorage.setItem(o,qe(r.reader.serialize(e)))}}):r._storage=e.offlineStorage),r.reader=new xe.data.readers[e.schema.type||"json"](e.schema),n=r.reader.model||{},r._detachObservableParents(),r._data=r._observe(r._data),r._online=!0,r.bind(["push",Le,Pe,He,ze,Oe,Ne],e)},options:{data:null,schema:{modelBase:J},offlineStorage:null,serverSorting:!1,serverPaging:!1,serverFiltering:!1,serverGrouping:!1,serverAggregates:!1,batch:!1,inPlaceSort:!1},clone:function(){return this},online:function(n){return n!==t?this._online!=n&&(this._online=n,n)?this.sync():e.Deferred().resolve().promise():this._online},offlineData:function(e){return null==this.options.offlineStorage?null:e!==t?this._storage.setItem(e):this._storage.getItem()||[]},_isServerGrouped:function(){var e=this.group()||[];return this.options.serverGrouping&&e.length},_pushCreate:function(e){this._push(e,"pushCreate")},_pushUpdate:function(e){this._push(e,"pushUpdate")},_pushDestroy:function(e){this._push(e,"pushDestroy")},_push:function(e,t){var n=this._readData(e);n||(n=e),this[t](n)},_flatData:function(e,t){if(e){if(this._isServerGrouped())return I(e);if(!t)for(var n=0;n<e.length;n++)e.at(n)}return e},parent:ye,get:function(e){var t,n,i=this._flatData(this._data,this.options.useRanges);for(t=0,n=i.length;t<n;t++)if(i[t].id==e)return i[t]},getByUid:function(e){return this._getByUid(e,this._data)},_getByUid:function(e,t){var n,i,o=this._flatData(t,this.options.useRanges);if(o)for(n=0,i=o.length;n<i;n++)if(o[n].uid==e)return o[n]},indexOf:function(e){return H(this._data,e)},at:function(e){return this._data.at(e)},data:function(e){var n,i=this;if(e===t){if(i._data)for(n=0;n<i._data.length;n++)i._data.at(n);return i._data}i._detachObservableParents(),i._data=this._observe(e),i._pristineData=e.slice(0),i._storeData(),i._ranges=[],i.trigger("reset"),i._addRange(i._data),i._total=i._data.length,i._pristineTotal=i._total,i._process(i._data)},view:function(e){return e===t?this._view:(this._view=this._observeView(e),t)},_observeView:function(e){var t,n=this;return z(e,n._data,n._ranges,n.reader.model||K,n._isServerGrouped()),t=new Y(e,n.reader.model),t.parent=function(){return n.parent()},t},flatView:function(){var e=this.group()||[];return e.length?I(this._view):this._view},add:function(e){return this.insert(this._data.length,e)},_createNewModel:function(e){return this.reader.model?new this.reader.model(e):e instanceof K?e:new K(e)},insert:function(e,t){return t||(t=e,e=0),t instanceof J||(t=this._createNewModel(t)), +this._isServerGrouped()?this._data.splice(e,0,this._wrapInEmptyGroup(t)):this._data.splice(e,0,t),this._insertModelInRange(e,t),t},pushInsert:function(t,n){var i,o,r,a,s,l,c=this,d=c._getCurrentRangeSpan();n||(n=t,t=0),_e(n)||(n=[n]),i=[],o=this.options.autoSync,this.options.autoSync=!1;try{for(r=0;r<n.length;r++)a=n[r],s=this.insert(t,a),i.push(s),l=s.toJSON(),this._isServerGrouped()&&(l=this._wrapInEmptyGroup(l)),this._pristineData.push(l),d&&d.length&&e(d).last()[0].pristineData.push(l),t++}finally{this.options.autoSync=o}i.length&&this.trigger("push",{type:"create",items:i})},pushCreate:function(e){this.pushInsert(this._data.length,e)},pushUpdate:function(e){var t,n,i,o,r;for(_e(e)||(e=[e]),t=[],n=0;n<e.length;n++)i=e[n],o=this._createNewModel(i),r=this.get(o.id),r?(t.push(r),r.accept(i),r.trigger(Pe),this._updatePristineForModel(r,i)):this.pushCreate(i);t.length&&this.trigger("push",{type:"update",items:t})},pushDestroy:function(e){var t=this._removeItems(e);t.length&&this.trigger("push",{type:"destroy",items:t})},_removeItems:function(e,n){var i,o,r,a,s,l,c;_e(e)||(e=[e]),i=t===n||n,o=[],r=this.options.autoSync,this.options.autoSync=!1;try{for(a=0;a<e.length;a++)s=e[a],l=this._createNewModel(s),c=!1,this._eachItem(this._data,function(e){var t,n;for(t=0;t<e.length;t++)if(n=e.at(t),n.id===l.id){o.push(n),e.splice(t,1),c=!0;break}}),c&&i&&(this._removePristineForModel(l),this._destroyed.pop())}finally{this.options.autoSync=r}return o},remove:function(e){var t,n=this,i=n._isServerGrouped();return this._eachItem(n._data,function(o){if(t=B(o,e),t&&i)return t.isNew&&t.isNew()||n._destroyed.push(t),!0}),this._removeModelFromRanges(e),e},destroyed:function(){return this._destroyed},created:function(){var e,t,n=[],i=this._flatData(this._data,this.options.useRanges);for(e=0,t=i.length;e<t;e++)i[e].isNew&&i[e].isNew()&&n.push(i[e]);return n},updated:function(){var e,t,n=[],i=this._flatData(this._data,this.options.useRanges);for(e=0,t=i.length;e<t;e++)i[e].isNew&&!i[e].isNew()&&i[e].dirty&&n.push(i[e]);return n},sync:function(){var t,n=this,i=[],o=[],r=n._destroyed,a=e.Deferred().resolve().promise();if(n.online()){if(!n.reader.model)return a;i=n.created(),o=n.updated(),t=[],n.options.batch&&n.transport.submit?t=n._sendSubmit(i,o,r):(t.push.apply(t,n._send("create",i)),t.push.apply(t,n._send("update",o)),t.push.apply(t,n._send("destroy",r))),a=e.when.apply(null,t).then(function(){var e,t;for(e=0,t=arguments.length;e<t;e++)arguments[e]&&n._accept(arguments[e]);n._storeData(!0),n._syncEnd(),n._change({action:"sync"}),n.trigger(ze)})}else n._storeData(!0),n._syncEnd(),n._change({action:"sync"});return a},_syncEnd:ye,cancelChanges:function(e){var t=this;e instanceof xe.data.Model?t._cancelModel(e):(t._destroyed=[],t._detachObservableParents(),t._data=t._observe(t._pristineData),t.options.serverPaging&&(t._total=t._pristineTotal),t._ranges=[],t._addRange(t._data,0),t._changesCanceled(),t._change(),t._markOfflineUpdatesAsDirty())},_changesCanceled:ye,_markOfflineUpdatesAsDirty:function(){var e=this;null!=e.options.offlineStorage&&e._eachItem(e._data,function(e){var t,n;for(t=0;t<e.length;t++)n=e.at(t),"update"!=n.__state__&&"create"!=n.__state__||(n.dirty=!0)})},hasChanges:function(){var e,t,n=this._flatData(this._data,this.options.useRanges);if(this._destroyed.length)return!0;for(e=0,t=n.length;e<t;e++)if(n[e].isNew&&n[e].isNew()||n[e].dirty)return!0;return!1},_accept:function(t){var n,i=this,o=t.models,r=t.response,a=0,s=i._isServerGrouped(),l=i._pristineData,c=t.type;if(i.trigger(Oe,{response:r,type:c}),r&&!ve(r)){if(r=i.reader.parse(r),i._handleCustomErrors(r))return;r=i.reader.data(r),_e(r)||(r=[r])}else r=e.map(o,function(e){return e.toJSON()});for("destroy"===c&&(i._destroyed=[]),a=0,n=o.length;a<n;a++)"destroy"!==c?(o[a].accept(r[a]),"create"===c?l.push(s?i._wrapInEmptyGroup(o[a].toJSON()):r[a]):"update"===c&&i._updatePristineForModel(o[a],r[a])):i._removePristineForModel(o[a])},_updatePristineForModel:function(e,t){this._executeOnPristineForModel(e,function(e,n){xe.deepExtend(n[e],t)})},_executeOnPristineForModel:function(e,t){this._eachPristineItem(function(n){var i=L(n,e);if(i>-1)return t(i,n),!0})},_removePristineForModel:function(e){this._executeOnPristineForModel(e,function(e,t){t.splice(e,1)})},_readData:function(e){var t=this._isServerGrouped()?this.reader.groups:this.reader.data;return t.call(this.reader,e)},_eachPristineItem:function(e){var t=this,n=t.options,i=t._getCurrentRangeSpan();t._eachItem(t._pristineData,e),n.serverPaging&&n.useRanges&&ke(i,function(n,i){t._eachItem(i.pristineData,e)})},_eachItem:function(e,t){e&&e.length&&(this._isServerGrouped()?F(e,t):t(e))},_pristineForModel:function(e){var t,n,i=function(i){if(n=L(i,e),n>-1)return t=i[n],!0};return this._eachPristineItem(i),t},_cancelModel:function(e){var t=this,n=this._pristineForModel(e);this._eachItem(this._data,function(i){var o=H(i,e);o>=0&&(!n||e.isNew()&&!n.__state__?(t._modelCanceled(e),i.splice(o,1),t._removeModelFromRanges(e)):(i[o].accept(n),"update"==n.__state__&&(i[o].dirty=!0)))})},_modelCanceled:ye,_submit:function(t,n){var i=this;i.trigger(He,{type:"submit"}),i.trigger(Ne),i.transport.submit(fe({success:function(n,i){var o=e.grep(t,function(e){return e.type==i})[0];o&&o.resolve({response:n,models:o.models,type:i})},error:function(e,n,o){for(var r=0;r<t.length;r++)t[r].reject(e);i.error(e,n,o)}},n))},_sendSubmit:function(t,n,i){var o=this,r=[];return o.options.batch&&(t.length&&r.push(e.Deferred(function(e){e.type="create",e.models=t})),n.length&&r.push(e.Deferred(function(e){e.type="update",e.models=n})),i.length&&r.push(e.Deferred(function(e){e.type="destroy",e.models=i})),o._submit(r,{data:{created:o.reader.serialize(k(t)),updated:o.reader.serialize(k(n)),destroyed:o.reader.serialize(k(i))}})),r},_promise:function(t,n,i){var o=this;return e.Deferred(function(e){o.trigger(He,{type:i}),o.trigger(Ne),o.transport[i].call(o.transport,fe({success:function(t){e.resolve({response:t,models:n,type:i})},error:function(t,n,i){e.reject(t),o.error(t,n,i)}},t))}).promise()},_send:function(e,t){var n,i,o=this,r=[],a=o.reader.serialize(k(t));if(o.options.batch)t.length&&r.push(o._promise({data:{models:a}},t,e));else for(n=0,i=t.length;n<i;n++)r.push(o._promise({data:a[n]},[t[n]],e));return r},read:function(t){var n=this,i=n._params(t),o=e.Deferred();return n._queueRequest(i,function(){var e=n.trigger(He,{type:"read"});e?(n._dequeueRequest(),o.resolve(e)):(n.trigger(Ne),n._ranges=[],n.trigger("reset"),n.online()?n.transport.read({data:i,success:function(e){n._ranges=[],n.success(e,i),o.resolve()},error:function(){var e=Xe.call(arguments);n.error.apply(n,e),o.reject.apply(o,e)}}):null!=n.options.offlineStorage&&(n.success(n.offlineData(),i),o.resolve()))}),o.promise()},_readAggregates:function(e){return this.reader.aggregates(e)},success:function(e){var n,i,o,r,a,s,l,c,d,u,h,p=this,f=p.options;if(p.trigger(Oe,{response:e,type:"read"}),p.online()){if(e=p.reader.parse(e),p._handleCustomErrors(e))return p._dequeueRequest(),t;p._total=p.reader.total(e),p._pageSize>p._total&&(p._pageSize=p._total,p.options.pageSize&&p.options.pageSize>p._pageSize&&(p._pageSize=p.options.pageSize)),p._aggregate&&f.serverAggregates&&(p._aggregateResult=p._readAggregates(e)),e=p._readData(e),p._destroyed=[]}else{for(e=p._readData(e),n=[],o={},r=p.reader.model,a=r?r.idField:"id",s=0;s<this._destroyed.length;s++)l=this._destroyed[s][a],o[l]=l;for(s=0;s<e.length;s++)c=e[s],d=c.__state__,"destroy"==d?o[c[a]]||this._destroyed.push(this._createNewModel(c)):n.push(c);e=n,p._total=e.length}if(p._pristineTotal=p._total,i=p._skip&&p._data.length&&p._skip<p._data.length,p.options.endless)for(i&&p._pristineData.splice(p._skip,p._pristineData.length),n=e.slice(0),u=0;u<n.length;u++)p._pristineData.push(n[u]);else p._pristineData=e.slice(0);if(p._detachObservableParents(),p.options.endless){for(p._data.unbind(Pe,p._changeHandler),p._isServerGrouped()&&p._data[p._data.length-1].value===e[0].value&&(D(p._data[p._data.length-1],e[0]),e.shift()),e=p._observe(e),i&&p._data.splice(p._skip,p._data.length),h=0;h<e.length;h++)p._data.push(e[h]);p._data.bind(Pe,p._changeHandler)}else p._data=p._observe(e);p._markOfflineUpdatesAsDirty(),p._storeData(),p._addRange(p._data),p._process(p._data),p._dequeueRequest()},_detachObservableParents:function(){if(this._data&&this._shouldDetachObservableParents)for(var e=0;e<this._data.length;e++)this._data[e].parent&&(this._data[e].parent=ye)},_storeData:function(e){function t(e){var n,i,o,r=[];for(n=0;n<e.length;n++)i=e.at(n),o=i.toJSON(),a&&i.items?o.items=t(i.items):(o.uid=i.uid,s&&(i.isNew()?o.__state__="create":i.dirty&&(o.__state__="update"))),r.push(o);return r}var n,i,o,r,a=this._isServerGrouped(),s=this.reader.model;if(null!=this.options.offlineStorage){for(n=t(this._data),i=[],o=0;o<this._destroyed.length;o++)r=this._destroyed[o].toJSON(),r.__state__="destroy",i.push(r);this.offlineData(n.concat(i)),e&&(this._pristineData=this.reader.reader?this.reader.reader._wrapDataAccessBase(n):this.reader._wrapDataAccessBase(n))}},_addRange:function(e,n){var i=this,o=t!==n?n:i._skip||0,r=o+i._flatData(e,!0).length;i._ranges.push({start:o,end:r,data:e,pristineData:e.toJSON(),timestamp:i._timeStamp()}),i._sortRanges()},_sortRanges:function(){this._ranges.sort(function(e,t){return e.start-t.start})},error:function(e,t,n){this._dequeueRequest(),this.trigger(Oe,{}),this.trigger(Le,{xhr:e,status:t,errorThrown:n})},_params:function(e){var t=this,n=fe({take:t.take(),skip:t.skip(),page:t.page(),pageSize:t.pageSize(),sort:t._sort,filter:t._filter,group:t._group,aggregate:t._aggregate},e);return t.options.serverPaging||(delete n.take,delete n.skip,delete n.page,delete n.pageSize),t.options.serverGrouping?t.reader.model&&n.group&&(n.group=W(n.group,t.reader.model)):delete n.group,t.options.serverFiltering?t.reader.model&&n.filter&&(n.filter=V(n.filter,t.reader.model)):delete n.filter,t.options.serverSorting?t.reader.model&&n.sort&&(n.sort=W(n.sort,t.reader.model)):delete n.sort,t.options.serverAggregates?t.reader.model&&n.aggregate&&(n.aggregate=W(n.aggregate,t.reader.model)):delete n.aggregate,n},_queueRequest:function(e,n){var i=this;i._requestInProgress?i._pending={callback:ge(n,i),options:e}:(i._requestInProgress=!0,i._pending=t,n())},_dequeueRequest:function(){var e=this;e._requestInProgress=!1,e._pending&&e._queueRequest(e._pending.options,e._pending.callback)},_handleCustomErrors:function(e){if(this.reader.errors){var t=this.reader.errors(e);if(t)return this.trigger(Le,{xhr:null,status:"customerror",errorThrown:"custom error",errors:t}),!0}return!1},_shouldWrap:function(e){var t=this.reader.model;return!(!t||!e.length)&&!(e[0]instanceof t)},_observe:function(e){var t,n=this,i=n.reader.model;return n._shouldDetachObservableParents=!0,e instanceof nt?(n._shouldDetachObservableParents=!1,n._shouldWrap(e)&&(e.type=n.reader.model,e.wrapAll(e,e))):(t=n.pageSize()&&!n.options.serverPaging?Y:nt,e=new t(e,n.reader.model),e.parent=function(){return n.parent()}),n._isServerGrouped()&&M(e,i),!(n._changeHandler&&n._data&&n._data instanceof nt)||n.options.useRanges&&n.options.serverPaging?n._changeHandler=ge(n._change,n):n._data.unbind(Pe,n._changeHandler),e.bind(Pe,n._changeHandler)},_updateTotalForAction:function(e,t){var n=this,i=parseInt(n._total,10);b(n._total)||(i=parseInt(n._pristineTotal,10)),"add"===e?i+=t.length:"remove"===e?i-=t.length:"itemchange"===e||"sync"===e||n.options.serverPaging?"sync"===e&&(i=n._pristineTotal=parseInt(n._total,10)):i=n._pristineTotal,n._total=i},_change:function(e){var t,n,i,o=this,r=e?e.action:"";if("remove"===r)for(t=0,n=e.items.length;t<n;t++)e.items[t].isNew&&e.items[t].isNew()||o._destroyed.push(e.items[t]);!o.options.autoSync||"add"!==r&&"remove"!==r&&"itemchange"!==r?(o._updateTotalForAction(r,e?e.items:[]),o._process(o._data,e)):(i=function(t){"sync"===t.action&&(o.unbind("change",i),o._updateTotalForAction(r,e.items))},o.first("change",i),o.sync())},_calculateAggregates:function(e,t){t=t||{};var n=new r(e),i=t.aggregate,o=t.filter;return o&&(n=n.filter(o)),n.aggregate(i)},_process:function(e,n){var i,o=this,r={};o.options.serverPaging!==!0&&(r.skip=o._skip,r.take=o._take||o._pageSize,r.skip===t&&o._page!==t&&o._pageSize!==t&&(r.skip=(o._page-1)*o._pageSize),o.options.useRanges&&(r.skip=o.currentRangeStart())),o.options.serverSorting!==!0&&(r.sort=o._sort),o.options.serverFiltering!==!0&&(r.filter=o._filter),o.options.serverGrouping!==!0&&(r.group=o._group),o.options.serverAggregates!==!0&&(r.aggregate=o._aggregate),o.options.serverGrouping&&o._clearEmptyGroups(e),i=o._queryProcess(e,r),o.options.serverAggregates!==!0&&(o._aggregateResult=o._calculateAggregates(i.dataToAggregate||e,r)),o.view(i.data),o._setFilterTotal(i.total,!1),n=n||{},n.items=n.items||o._view,o.trigger(Pe,n)},_clearEmptyGroups:function(e){var t,n;for(t=e.length-1;t>=0;t--)n=e[t],n.hasSubgroups?this._clearEmptyGroups(n.items):n.items&&!n.items.length&&Ke.apply(n.parent(),[t,1])},_queryProcess:function(e,t){return this.options.inPlaceSort?r.process(e,t,this.options.inPlaceSort):r.process(e,t)},_mergeState:function(n){var i=this;return n!==t&&(i._pageSize=n.pageSize,i._page=n.page,i._sort=n.sort,i._filter=n.filter,i._group=n.group,i._aggregate=n.aggregate,i._skip=i._currentRangeStart=n.skip,i._take=n.take,i._skip===t&&(i._skip=i._currentRangeStart=i.skip(),n.skip=i.skip()),i._take===t&&i._pageSize!==t&&(i._take=i._pageSize,n.take=i._take),n.sort&&(i._sort=n.sort=a(n.sort)),n.filter&&(i._filter=n.filter=i.options.accentFoldingFiltering&&!e.isEmptyObject(n.filter)?e.extend({},l(n.filter),{accentFoldingFiltering:i.options.accentFoldingFiltering}):l(n.filter)),n.group&&(i._group=n.group=f(n.group)),n.aggregate&&(i._aggregate=n.aggregate=p(n.aggregate))),n},query:function(n){var i,o,r,a=this.options.serverSorting||this.options.serverPaging||this.options.serverFiltering||this.options.serverGrouping||this.options.serverAggregates;return a||(this._data===t||0===this._data.length)&&!this._destroyed.length?(this.options.endless&&(o=n.pageSize-this.pageSize(),o>0?(o=this.pageSize(),n.page=n.pageSize/o,n.pageSize=o):(n.page=1,this.options.endless=!1)),this.read(this._mergeState(n))):(r=this.trigger(He,{type:"read"}),r||(this.trigger(Ne),i=this._queryProcess(this._data,this._mergeState(n)),this._setFilterTotal(i.total,!0),this._aggregateResult=this._calculateAggregates(i.dataToAggregate||this._data,n),this.view(i.data),this.trigger(Oe,{type:"read"}),this.trigger(Pe,{items:i.data})),e.Deferred().resolve(r).promise())},_setFilterTotal:function(e,n){var i=this;i.options.serverFiltering||(e!==t?i._total=e:n&&(i._total=i._data.length))},fetch:function(e){var t=this,n=function(n){n!==!0&&Ce(e)&&e.call(t)};return this._query().done(n)},_query:function(e){var t=this;return t.query(fe({},{page:t.page(),pageSize:t.pageSize(),sort:t.sort(),filter:t.filter(),group:t.group(),aggregate:t.aggregate()},e))},next:function(e){var t=this,n=t.page(),i=t.total();if(e=e||{},n&&!(i&&n+1>t.totalPages()))return t._skip=t._currentRangeStart=n*t.take(),n+=1,e.page=n,t._query(e),n},prev:function(e){var t=this,n=t.page();if(e=e||{},n&&1!==n)return t._skip=t._currentRangeStart=t._skip-t.take(),n-=1,e.page=n,t._query(e),n},page:function(e){var n,i=this;return e!==t?(e=je.max(je.min(je.max(e,1),i.totalPages()),1),i._query(i._pageableQueryOptions({page:e})),t):(n=i.skip(),n!==t?je.round((n||0)/(i.take()||1))+1:t)},pageSize:function(e){var n=this;return e!==t?(n._query(n._pageableQueryOptions({pageSize:e,page:1})),t):n.take()},sort:function(e){var n=this;return e!==t?(n._query({sort:e}),t):n._sort},filter:function(e){var n=this;return e===t?n._filter:(n.trigger("reset"),n._query({filter:e,page:1}),t)},group:function(e){var n=this;return e!==t?(n._query({group:e}),t):n._group},total:function(){return parseInt(this._total||0,10)},aggregate:function(e){var n=this;return e!==t?(n._query({aggregate:e}),t):n._aggregate},aggregates:function(){var e=this._aggregateResult;return ve(e)&&(e=this._emptyAggregates(this.aggregate())),e},_emptyAggregates:function(e){var t,n,i={};if(!ve(e))for(t={},_e(e)||(e=[e]),n=0;n<e.length;n++)t[e[n].aggregate]=0,i[e[n].field]=t;return i},_pageableQueryOptions:function(e){return e},_wrapInEmptyGroup:function(e){var t,n,i,o,r=this.group();for(i=r.length-1,o=0;i>=o;i--)n=r[i],t={value:e.get?e.get(n.field):e[n.field],field:n.field,items:t?[t]:[e],hasSubgroups:!!t,aggregates:this._emptyAggregates(n.aggregates)};return t},totalPages:function(){var e=this,t=e.pageSize()||e.total();return je.ceil((e.total()||0)/t)},inRange:function(e,t){var n=this,i=je.min(e+t,n.total());return!n.options.serverPaging&&n._data.length>0||n._findRange(e,i).length>0},lastRange:function(){var e=this._ranges;return e[e.length-1]||{start:0,end:0,data:[]}},firstItemUid:function(){var e=this._ranges;return e.length&&e[0].data.length&&e[0].data[0].uid},enableRequestsInProgress:function(){this._skipRequestsInProgress=!1},_timeStamp:function(){return(new Date).getTime()},range:function(e,n,i){this._currentRequestTimeStamp=this._timeStamp(),this._skipRequestsInProgress=!0,e=je.min(e||0,this.total()),i=Ce(i)?i:ye;var o,r=this,a=je.max(je.floor(e/n),0)*n,s=je.min(a+n,r.total());return o=r._findRange(e,je.min(e+n,r.total())),o.length||0===r.total()?(r._processRangeData(o,e,n,a,s),i(),t):(n!==t&&(r._rangeExists(a,s)?a<e&&r.prefetch(s,n,function(){r.range(e,n,i)}):r.prefetch(a,n,function(){e>a&&s<r.total()&&!r._rangeExists(s,je.min(s+n,r.total()))?r.prefetch(s,n,function(){r.range(e,n,i)}):r.range(e,n,i)})),t)},_findRange:function(e,n){var i,o,r,s,l,c,d,u,h,p,f,m,v=this,_=v._ranges,b=[],w=v.options,k=w.serverSorting||w.serverPaging||w.serverFiltering||w.serverGrouping||w.serverAggregates;for(o=0,f=_.length;o<f;o++)if(i=_[o],e>=i.start&&e<=i.end){for(p=0,r=o;r<f;r++)if(i=_[r],h=v._flatData(i.data,!0),h.length&&e+p>=i.start&&(c=i.data,d=i.end,k||(w.inPlaceSort?u=v._queryProcess(i.data,{filter:v.filter()}):(m=g(v.group()||[]).concat(a(v.sort()||[])),u=v._queryProcess(i.data,{sort:m,filter:v.filter()})),h=c=u.data,u.total!==t&&(d=u.total)),s=0,e+p>i.start&&(s=e+p-i.start),l=h.length,d>n&&(l-=d-n),p+=l-s,b=v._mergeGroups(b,c,s,l),n<=i.end&&p==n-e))return b;break}return[]},_mergeGroups:function(e,t,n,i){if(this._isServerGrouped()){var o,r=t.toJSON();return e.length&&(o=e[e.length-1]),A(o,r,n,i),e.concat(r)}return e.concat(t.slice(n,i))},_processRangeData:function(e,n,i,o,r){var a,s,l,c,d=this;d._pending=t,d._skip=n>d.skip()?je.min(r,(d.totalPages()-1)*d.take()):o,d._currentRangeStart=n,d._take=i,a=d.options.serverPaging,s=d.options.serverSorting,l=d.options.serverFiltering,c=d.options.serverAggregates;try{d.options.serverPaging=!0,d._isServerGrouped()||d.group()&&d.group().length||(d.options.serverSorting=!0),d.options.serverFiltering=!0,d.options.serverPaging=!0,d.options.serverAggregates=!0,a&&(d._detachObservableParents(),d._data=e=d._observe(e)),d._process(e)}finally{d.options.serverPaging=a,d.options.serverSorting=s,d.options.serverFiltering=l,d.options.serverAggregates=c}},skip:function(){var e=this;return e._skip===t?e._page!==t?(e._page-1)*(e.take()||1):t:e._skip},currentRangeStart:function(){return this._currentRangeStart||0},take:function(){return this._take||this._pageSize},_prefetchSuccessHandler:function(e,t,n,i){var o=this,r=o._timeStamp();return function(a){var s,l,c,d=!1,u={start:e,end:t,data:[],timestamp:o._timeStamp()};if(o._dequeueRequest(),o.trigger(Oe,{response:a,type:"read"}),a=o.reader.parse(a),c=o._readData(a),c.length){for(s=0,l=o._ranges.length;s<l;s++)if(o._ranges[s].start===e){d=!0,u=o._ranges[s],u.pristineData=c,u.data=o._observe(c),u.end=u.start+o._flatData(u.data,!0).length,o._sortRanges();break}d||o._addRange(o._observe(c),e)}o._total=o.reader.total(a),(i||r>=o._currentRequestTimeStamp||!o._skipRequestsInProgress)&&(n&&c.length?n():o.trigger(Pe,{}))}},prefetch:function(e,t,n){var i=this,o=je.min(e+t,i.total()),r={take:t,skip:e,page:e/t+1,pageSize:t,sort:i._sort,filter:i._filter,group:i._group,aggregate:i._aggregate};i._rangeExists(e,o)?n&&n():(clearTimeout(i._timeout),i._timeout=setTimeout(function(){i._queueRequest(r,function(){i.trigger(He,{type:"read"})?i._dequeueRequest():i.transport.read({data:i._params(r),success:i._prefetchSuccessHandler(e,o,n),error:function(){var e=Xe.call(arguments);i.error.apply(i,e)}})})},100))},_multiplePrefetch:function(e,t,n){var i=this,o=je.min(e+t,i.total()),r={take:t,skip:e,page:e/t+1,pageSize:t,sort:i._sort,filter:i._filter,group:i._group,aggregate:i._aggregate};i._rangeExists(e,o)?n&&n():i.trigger(He,{type:"read"})||i.transport.read({data:i._params(r),success:i._prefetchSuccessHandler(e,o,n,!0)})},_rangeExists:function(e,t){var n,i,o=this,r=o._ranges;for(n=0,i=r.length;n<i;n++)if(r[n].start<=e&&r[n].end>=t)return!0;return!1},_getCurrentRangeSpan:function(){var e,t,n=this,i=n._ranges,o=n.currentRangeStart(),r=o+(n.take()||0),a=[],s=i.length;for(t=0;t<s;t++)e=i[t],(e.start<=o&&e.end>=o||e.start>=o&&e.start<=r)&&a.push(e);return a},_removeModelFromRanges:function(e){var t,n,i,o=this;for(n=0,i=this._ranges.length;n<i;n++)t=this._ranges[n],o._removeModelFromRange(t,e);o._updateRangesLength()},_removeModelFromRange:function(e,t){this._eachItem(e.data,function(e){var n,i;for(n=0;n<e.length;n++)if(i=e[n],i.uid&&i.uid==t.uid){[].splice.call(e,n,1);break}})},_insertModelInRange:function(e,t){var n,i,o=this,r=o._ranges||[],a=r.length;for(i=0;i<a;i++)if(n=r[i],n.start<=e&&n.end>=e){o._getByUid(t.uid,n.data)||(o._isServerGrouped()?n.data.splice(e,0,o._wrapInEmptyGroup(t)):n.data.splice(e,0,t));break}o._updateRangesLength()},_updateRangesLength:function(){var e,t,n=this,i=n._ranges||[],o=i.length,r=!1,a=0,s=0;for(t=0;t<o;t++)e=i[t],s=n._flatData(e.data,!0).length-je.abs(e.end-e.start),r||0===s?r&&(e.start+=a,e.end+=a):(r=!0,a=s,e.end+=a)}}),ce={},ce.create=function(t,n,i){var o,r=t.transport?e.extend({},t.transport):null;return r?(r.read=typeof r.read===De?{url:r.read}:r.read,"jsdo"===t.type&&(r.dataSource=i),t.type&&(xe.data.transports=xe.data.transports||{},xe.data.schemas=xe.data.schemas||{},xe.data.transports[t.type]?me(xe.data.transports[t.type])?r=fe(!0,{},xe.data.transports[t.type],r):o=new xe.data.transports[t.type](fe(r,{data:n})):xe.logToConsole("Unknown DataSource transport type '"+t.type+"'.\nVerify that registration scripts for this type are included after Kendo UI on the page.","warn"),t.schema=fe(!0,{},xe.data.schemas[t.type],t.schema)),o||(o=Ce(r.read)?r:new re(r))):o=new oe({data:t.data||[]}),o},le.create=function(e){(_e(e)||e instanceof nt)&&(e={data:e});var n,i,o,r=e||{},a=r.data,s=r.fields,l=r.table,c=r.select,d={};if(a||!s||r.transport||(l?a=q(l,s):c&&(a=U(c,s),r.group===t&&a[0]&&a[0].optgroup!==t&&(r.group="optgroup"))),xe.data.Model&&s&&(!r.schema||!r.schema.model)){for(n=0,i=s.length;n<i;n++)o=s[n],o.type&&(d[o.field]=o);ve(d)||(r.schema=fe(!0,r.schema,{model:{fields:d}}))}return r.data=a,c=null,r.select=null,l=null,r.table=null,r instanceof le?r:new le(r)},de=J.define({idField:"id",init:function(e){var t,n=this,i=n.hasChildren||e&&e.hasChildren,o="items",r={};xe.data.Model.fn.init.call(n,e),typeof n.children===De&&(o=n.children),r={schema:{data:o,model:{hasChildren:i,id:n.idField,fields:n.fields}}},typeof n.children!==De&&fe(r,n.children),r.data=e,i||(i=r.schema.data),typeof i===De&&(i=xe.getter(i)),Ce(i)&&(t=i.call(n,n),n.hasChildren=(!t||0!==t.length)&&!!t),n._childrenOptions=r,n.hasChildren&&n._initChildren(),n._loaded=!(!e||!e._loaded)},_initChildren:function(){var e,t,n,i=this;i.children instanceof ue||(e=i.children=new ue(i._childrenOptions),t=e.transport,n=t.parameterMap,t.parameterMap=function(e,t){return e[i.idField||"id"]=i.id,n&&(e=n(e,t)),e},e.parent=function(){return i},e.bind(Pe,function(e){e.node=e.node||i,i.trigger(Pe,e)}),e.bind(Le,function(e){var t=i.parent();t&&(e.node=e.node||i,t.trigger(Le,e))}),i._updateChildrenField())},append:function(e){this._initChildren(),this.loaded(!0),this.children.add(e)},hasChildren:!1,level:function(){for(var e=this.parentNode(),t=0;e&&e.parentNode;)t++,e=e.parentNode?e.parentNode():null;return t},_updateChildrenField:function(){var e=this._childrenOptions.schema.data;this[e||"items"]=this.children.data()},_childrenLoaded:function(){this._loaded=!0,this._updateChildrenField()},load:function(){var n,i,o={},r="_query";return this.hasChildren?(this._initChildren(),n=this.children,o[this.idField||"id"]=this.id,this._loaded||(n._data=t,r="read"),n.one(Pe,ge(this._childrenLoaded,this)),this._matchFilter&&(o.filter={field:"_matchFilter",operator:"eq",value:!0}),i=n[r](o)):this.loaded(!0),i||e.Deferred().resolve().promise()},parentNode:function(){var e=this.parent();return e.parent()},loaded:function(e){return e===t?this._loaded:(this._loaded=e,t)},shouldSerialize:function(e){return J.fn.shouldSerialize.call(this,e)&&"children"!==e&&"_loaded"!==e&&"hasChildren"!==e&&"_childrenOptions"!==e}}),ue=le.extend({init:function(e){var t=de.define({children:e});e.filter&&!e.serverFiltering&&(this._hierarchicalFilter=e.filter,e.filter=null),le.fn.init.call(this,fe(!0,{},{schema:{modelBase:t,model:t}},e)),this._attachBubbleHandlers()},_attachBubbleHandlers:function(){var e=this;e._data.bind(Le,function(t){e.trigger(Le,t)})},read:function(e){var t=le.fn.read.call(this,e);return this._hierarchicalFilter&&(this._data&&this._data.length>0?this.filter(this._hierarchicalFilter):(this.options.filter=this._hierarchicalFilter,this._filter=l(this.options.filter),this._hierarchicalFilter=null)),t},remove:function(e){var t,n=e.parentNode(),i=this;return n&&n._initChildren&&(i=n.children),t=le.fn.remove.call(i,e),n&&!i.data().length&&(n.hasChildren=!1),t},success:j("success"),data:j("data"),insert:function(e,t){var n=this.parent();return n&&n._initChildren&&(n.hasChildren=!0,n._initChildren()),le.fn.insert.call(this,e,t)},filter:function(e){return e===t?this._filter:(!this.options.serverFiltering&&this._markHierarchicalQuery(e)&&(e={logic:"or",filters:[e,{field:"_matchFilter",operator:"equals",value:!0}]}),this.trigger("reset"),this._query({filter:e,page:1}),t)},_markHierarchicalQuery:function(t){var n,i,o,a,s,c=this.options.accentFoldingFiltering;return t=c?e.extend({},l(t),{accentFoldingFiltering:c}):l(t),t&&0!==t.filters.length?(n=r.filterExpr(t),o=n.fields,a=n.operators,i=s=Function("d, __f, __o","return "+n.expression),(o.length||a.length)&&(s=function(e){return i(e,o,a)}),this._updateHierarchicalFilter(s),!0):(this._updateHierarchicalFilter(function(){return!0}),!1)},_updateHierarchicalFilter:function(e){var t,n,i=this._data,o=!1;for(n=0;n<i.length;n++)t=i[n],t.hasChildren?(t._matchFilter=t.children._updateHierarchicalFilter(e),t._matchFilter||(t._matchFilter=e(t))):t._matchFilter=e(t),t._matchFilter&&(o=!0);return o},_find:function(e,t){var n,i,o,r,a=this._data;if(a){if(o=le.fn[e].call(this,t))return o;for(a=this._flatData(this._data),n=0,i=a.length;n<i;n++)if(r=a[n].children,r instanceof ue&&(o=r[e](t)))return o}},get:function(e){return this._find("get",e)},getByUid:function(e){return this._find("getByUid",e)}}),ue.create=function(e){e=e&&e.push?{data:e}:e;var t=e||{},n=t.data,i=t.fields,o=t.list;return n&&n._dataSource?n._dataSource:(n||!i||t.transport||o&&(n=G(o,i)),t.data=n,t instanceof ue?t:new ue(t))},he=xe.Observable.extend({init:function(e,t,n){xe.Observable.fn.init.call(this),this._prefetching=!1,this.dataSource=e,this.prefetch=!n;var i=this;e.bind("change",function(){i._change()}),e.bind("reset",function(){i._reset()}),this._syncWithDataSource(),this.setViewSize(t)},setViewSize:function(e){this.viewSize=e,this._recalculate()},at:function(e){var n=this.pageSize,i=!0;return e>=this.total()?(this.trigger("endreached",{index:e}),null):this.useRanges?this.useRanges?((e<this.dataOffset||e>=this.skip+n)&&(i=this.range(Math.floor(e/n)*n)),e===this.prefetchThreshold&&this._prefetch(),e===this.midPageThreshold?this.range(this.nextMidRange,!0):e===this.nextPageThreshold?this.range(this.nextFullRange):e===this.pullBackThreshold&&this.range(this.offset===this.skip?this.previousMidRange:this.previousFullRange),i?this.dataSource.at(e-this.dataOffset):(this.trigger("endreached",{index:e}),null)):t:this.dataSource.view()[e]},indexOf:function(e){return this.dataSource.data().indexOf(e)+this.dataOffset},total:function(){return parseInt(this.dataSource.total(),10)},next:function(){var e=this,t=e.pageSize,n=e.skip-e.viewSize+t,i=je.max(je.floor(n/t),0)*t;this.offset=n,this.dataSource.prefetch(i,t,function(){e._goToRange(n,!0)})},range:function(e,t){if(this.offset===e)return!0;var n=this,i=this.pageSize,o=je.max(je.floor(e/i),0)*i,r=this.dataSource;return t&&(o+=i),r.inRange(e,i)?(this.offset=e,this._recalculate(),this._goToRange(e),!0):!this.prefetch||(r.prefetch(o,i,function(){n.offset=e,n._recalculate(),n._goToRange(e,!0)}),!1)},syncDataSource:function(){var e=this.offset;this.offset=null,this.range(e)},destroy:function(){this.unbind()},_prefetch:function(){var e=this,t=this.pageSize,n=this.skip+t,i=this.dataSource;i.inRange(n,t)||this._prefetching||!this.prefetch||(this._prefetching=!0,this.trigger("prefetching",{skip:n,take:t}),i.prefetch(n,t,function(){e._prefetching=!1,e.trigger("prefetched",{skip:n,take:t})}))},_goToRange:function(e,t){this.offset===e&&(this.dataOffset=e,this._expanding=t,this.dataSource.range(e,this.pageSize),this.dataSource.enableRequestsInProgress())},_reset:function(){this._syncPending=!0},_change:function(){var e=this.dataSource;this.length=this.useRanges?e.lastRange().end:e.view().length,this._syncPending&&(this._syncWithDataSource(),this._recalculate(),this._syncPending=!1,this.trigger("reset",{offset:this.offset})),this.trigger("resize"),this._expanding&&this.trigger("expand"),delete this._expanding},_syncWithDataSource:function(){var e=this.dataSource;this._firstItemUid=e.firstItemUid(),this.dataOffset=this.offset=e.skip()||0,this.pageSize=e.pageSize(),this.useRanges=e.options.serverPaging},_recalculate:function(){var e=this.pageSize,t=this.offset,n=this.viewSize,i=Math.ceil(t/e)*e;this.skip=i,this.midPageThreshold=i+e-1,this.nextPageThreshold=i+n-1,this.prefetchThreshold=i+Math.floor(e/3*2),this.pullBackThreshold=this.offset-1,this.nextMidRange=i+e-n,this.nextFullRange=i,this.previousMidRange=t-n,this.previousFullRange=i-e}}),pe=xe.Observable.extend({init:function(e,t){var n=this;xe.Observable.fn.init.call(n),this.dataSource=e,this.batchSize=t,this._total=0,this.buffer=new he(e,3*t),this.buffer.bind({endreached:function(e){n.trigger("endreached",{index:e.index})},prefetching:function(e){n.trigger("prefetching",{skip:e.skip,take:e.take})},prefetched:function(e){n.trigger("prefetched",{skip:e.skip,take:e.take})},reset:function(){n._total=0,n.trigger("reset")},resize:function(){n._total=Math.ceil(this.length/n.batchSize),n.trigger("resize",{total:n.total(),offset:this.offset})}})},syncDataSource:function(){this.buffer.syncDataSource()},at:function(e){var t,n,i=this.buffer,o=e*this.batchSize,r=this.batchSize,a=[];for(i.offset>o&&i.at(i.offset-1),n=0;n<r&&(t=i.at(o+n),null!==t);n++)a.push(t);return a},total:function(){return this._total},destroy:function(){this.buffer.destroy(),this.unbind()}}),fe(!0,xe.data,{readers:{json:se},Query:r,DataSource:le,HierarchicalDataSource:ue,Node:de,ObservableObject:K,ObservableArray:nt,LazyObservableArray:Y,LocalTransport:oe,RemoteTransport:re,Cache:ae,DataReader:se,Model:J,Buffer:he,BatchBuffer:pe})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.binder.min",["kendo.core.min","kendo.data.min"],e)}(function(){return function(e,t){function n(t,n,i){return v.extend({init:function(e,t,n){var i=this;v.fn.init.call(i,e.element[0],t,n),i.widget=e,i._dataBinding=M(i.dataBinding,i),i._dataBound=M(i.dataBound,i),i._itemChange=M(i.itemChange,i)},itemChange:function(e){a(e.item[0],e.data,this._ns(e.ns),[e.data].concat(this.bindings[t]._parents()))},dataBinding:function(e){var t,n,i=this.widget,o=e.removedItems||i.items();for(t=0,n=o.length;t<n;t++)c(o[t],!1)},_ns:function(t){t=t||C.ui; +var n=[C.ui,C.dataviz.ui,C.mobile.ui];return n.splice(e.inArray(t,n),1),n.unshift(t),C.rolesFromNamespaces(n)},dataBound:function(e){var i,o,r,s,l=this.widget,c=e.addedItems||l.items(),d=l[n],u=C.data.HierarchicalDataSource;if(!(u&&d instanceof u)&&c.length)for(r=e.addedDataItems||d.flatView(),s=this.bindings[t]._parents(),i=0,o=r.length;i<o;i++)c[i]&&a(c[i],r[i],this._ns(e.ns),[r[i]].concat(s))},refresh:function(e){var o,r,a,s,l=this,c=l.widget;e=e||{},e.action||(l.destroy(),c.bind("dataBinding",l._dataBinding),c.bind("dataBound",l._dataBound),c.bind("itemChange",l._itemChange),o=l.bindings[t].get(),c[n]instanceof C.data.DataSource&&c[n]!=o&&(o instanceof C.data.DataSource?c[i](o):o&&o._dataSource?c[i](o._dataSource):(r=C.ui.Select&&c instanceof C.ui.Select,a=C.ui.MultiSelect&&c instanceof C.ui.MultiSelect,s=C.ui.DropDownTree&&c instanceof C.ui.DropDownTree,s?c.treeview[n].data(o):c[n].data(o),l.bindings.value&&(r||a)&&c.value(p(l.bindings.value.get(),c.options.dataValueField)))))},destroy:function(){var e=this.widget;e.unbind("dataBinding",this._dataBinding),e.unbind("dataBound",this._dataBound),e.unbind("itemChange",this._itemChange)}})}function i(e,t){var n=C.initWidget(e,{},t);if(n)return new k(n)}function o(e){var t,n,i,r,a,s,l,c={};for(l=e.match(y),t=0,n=l.length;t<n;t++)i=l[t],r=i.indexOf(":"),a=i.substring(0,r),s=i.substring(r+1),"{"==s.charAt(0)&&(s=o(s)),c[a]=s;return c}function r(e,t,n){var i,o={};for(i in e)o[i]=new n(t,e[i]);return o}function a(e,t,n,s){var c,d,u,h,p,v,_,b,k;if(e&&!e.getAttribute("data-"+C.ns+"stop")&&(c=e.getAttribute("data-"+C.ns+"role"),u=e.getAttribute("data-"+C.ns+"bind"),h=[],p=!0,_={},s=s||[t],(c||u)&&l(e,!1),c&&(b=i(e,n)),u&&(u=o(u.replace(x,"")),b||(_=C.parseOptions(e,{textField:"",valueField:"",template:"",valueUpdate:N,valuePrimitive:!1,autoBind:!0},t),_.roles=n,b=new w(e,_)),b.source=t,v=r(u,s,f),_.template&&(v.template=new m(s,"",_.template)),v.click&&(u.events=u.events||{},u.events.click=u.click,v.click.destroy(),delete v.click),v.source&&(p=!1),u.attr&&(v.attr=r(u.attr,s,f)),u.style&&(v.style=r(u.style,s,f)),u.events&&(v.events=r(u.events,s,g)),u.css&&(v.css=r(u.css,s,f)),b.bind(v)),b&&(e.kendoBindingTarget=b),k=e.children,p&&k)){for(d=0;d<k.length;d++)h[d]=k[d];for(d=0;d<h.length;d++)a(h[d],t,n,s)}}function s(t,n){var i,o,r,s=C.rolesFromNamespaces([].slice.call(arguments,2));for(n=C.observable(n),t=e(t),i=0,o=t.length;i<o;i++)r=t[i],1===r.nodeType&&a(r,n,s)}function l(t,n){var i,o=t.kendoBindingTarget;o&&(o.destroy(),L?delete t.kendoBindingTarget:t.removeAttribute?t.removeAttribute("kendoBindingTarget"):t.kendoBindingTarget=null),n&&(i=C.widgetInstance(e(t)),i&&typeof i.destroy===H&&i.destroy())}function c(e,t){l(e,t),d(e,t)}function d(e,t){var n,i,o=e.children;if(o)for(n=0,i=o.length;n<i;n++)c(o[n],t)}function u(t){var n,i;for(t=e(t),n=0,i=t.length;n<i;n++)c(t[n],!1)}function h(e,t){var n=e.element,i=n[0].kendoBindingTarget;i&&s(n,i.source,t)}function p(e,t){var n,i,o=[],r=0;if(!t)return e;if(e instanceof D){for(n=e.length;r<n;r++)i=e[r],o[r]=i.get?i.get(t):i[t];e=o}else e instanceof T&&(e=e.get(t));return e}var f,g,m,v,_,b,w,k,y,x,C=window.kendo,S=C.Observable,T=C.data.ObservableObject,D=C.data.ObservableArray,A={}.toString,E={},I=C.Class,M=e.proxy,F="value",R="source",P="events",z="checked",B="css",L=!0,H="function",N="change";!function(){var e=document.createElement("a");try{delete e.test}catch(t){L=!1}}(),f=S.extend({init:function(e,t){var n=this;S.fn.init.call(n),n.source=e[0],n.parents=e,n.path=t,n.dependencies={},n.dependencies[t]=!0,n.observable=n.source instanceof S,n._access=function(e){n.dependencies[e.field]=!0},n.observable&&(n._change=function(e){n.change(e)},n.source.bind(N,n._change))},_parents:function(){var t,n=this.parents,i=this.get();return i&&"function"==typeof i.parent&&(t=i.parent(),e.inArray(t,n)<0&&(n=[t].concat(n))),n},change:function(e){var t,n,i=e.field,o=this;if("this"===o.path)o.trigger(N,e);else for(t in o.dependencies)if(0===t.indexOf(i)&&(n=t.charAt(i.length),!n||"."===n||"["===n)){o.trigger(N,e);break}},start:function(e){e.bind("get",this._access)},stop:function(e){e.unbind("get",this._access)},get:function(){var e=this,n=e.source,i=0,o=e.path,r=n;if(!e.observable)return r;for(e.start(e.source),r=n.get(o);r===t&&n;)n=e.parents[++i],n instanceof T&&(r=n.get(o));if(r===t)for(n=e.source;r===t&&n;)n=n.parent(),n instanceof T&&(r=n.get(o));return"function"==typeof r&&(i=o.lastIndexOf("."),i>0&&(n=n.get(o.substring(0,i))),e.start(n),r=n!==e.source?r.call(n,e.source):r.call(n),e.stop(n)),n&&n!==e.source&&(e.currentSource=n,n.unbind(N,e._change).bind(N,e._change)),e.stop(e.source),r},set:function(e){var t=this.currentSource||this.source,n=C.getter(this.path)(t);"function"==typeof n?t!==this.source?n.call(t,this.source,e):n.call(t,e):t.set(this.path,e)},destroy:function(){this.observable&&(this.source.unbind(N,this._change),this.currentSource&&this.currentSource.unbind(N,this._change)),this.unbind()}}),g=f.extend({get:function(){var e,t=this.source,n=this.path,i=0;for(e=t.get(n);!e&&t;)t=this.parents[++i],t instanceof T&&(e=t.get(n));return M(e,t)}}),m=f.extend({init:function(e,t,n){var i=this;f.fn.init.call(i,e,t),i.template=n},render:function(e){var t;return this.start(this.source),t=C.render(this.template,e),this.stop(this.source),t}}),v=I.extend({init:function(e,t,n){this.element=e,this.bindings=t,this.options=n},bind:function(e,t){var n=this;e=t?e[t]:e,e.bind(N,function(e){n.refresh(t||e)}),n.refresh(t)},destroy:function(){}}),_=v.extend({dataType:function(){var e=this.element.getAttribute("data-type")||this.element.type||"text";return e.toLowerCase()},parsedValue:function(){return this._parseValue(this.element.value,this.dataType())},_parseValue:function(e,t){return"date"==t?e=C.parseDate(e,"yyyy-MM-dd"):"datetime-local"==t?e=C.parseDate(e,["yyyy-MM-ddTHH:mm:ss","yyyy-MM-ddTHH:mm"]):"number"==t?e=C.parseFloat(e):"boolean"==t&&(e=e.toLowerCase(),e=null!==C.parseFloat(e)?!!C.parseFloat(e):"true"===e.toLowerCase()),e}}),E.attr=v.extend({refresh:function(e){this.element.setAttribute(e,this.bindings.attr[e].get())}}),E.css=v.extend({init:function(e,t,n){v.fn.init.call(this,e,t,n),this.classes={}},refresh:function(t){var n=e(this.element),i=this.bindings.css[t],o=this.classes[t]=i.get();o?n.addClass(t):n.removeClass(t)}}),E.style=v.extend({refresh:function(e){this.element.style[e]=this.bindings.style[e].get()||""}}),E.enabled=v.extend({refresh:function(){this.bindings.enabled.get()?this.element.removeAttribute("disabled"):this.element.setAttribute("disabled","disabled")}}),E.readonly=v.extend({refresh:function(){this.bindings.readonly.get()?this.element.setAttribute("readonly","readonly"):this.element.removeAttribute("readonly")}}),E.disabled=v.extend({refresh:function(){this.bindings.disabled.get()?this.element.setAttribute("disabled","disabled"):this.element.removeAttribute("disabled")}}),E.events=v.extend({init:function(e,t,n){v.fn.init.call(this,e,t,n),this.handlers={}},refresh:function(t){var n=e(this.element),i=this.bindings.events[t],o=this.handlers[t];o&&n.off(t,o),o=this.handlers[t]=i.get(),n.on(t,i.source,o)},destroy:function(){var t,n=e(this.element);for(t in this.handlers)n.off(t,this.handlers[t])}}),E.text=v.extend({refresh:function(){var t=this.bindings.text.get(),n=this.element.getAttribute("data-format")||"";null==t&&(t=""),e(this.element).text(C.toString(t,n))}}),E.visible=v.extend({refresh:function(){this.element.style.display=this.bindings.visible.get()?"":"none"}}),E.invisible=v.extend({refresh:function(){this.element.style.display=this.bindings.invisible.get()?"none":""}}),E.html=v.extend({refresh:function(){this.element.innerHTML=this.bindings.html.get()}}),E.value=_.extend({init:function(t,n,i){_.fn.init.call(this,t,n,i),this._change=M(this.change,this),this.eventName=i.valueUpdate||N,e(this.element).on(this.eventName,this._change),this._initChange=!1},change:function(){this._initChange=this.eventName!=N,this.bindings[F].set(this.parsedValue()),this._initChange=!1},refresh:function(){var e,t;this._initChange||(e=this.bindings[F].get(),null==e&&(e=""),t=this.dataType(),"date"==t?e=C.toString(e,"yyyy-MM-dd"):"datetime-local"==t&&(e=C.toString(e,"yyyy-MM-ddTHH:mm:ss")),this.element.value=e),this._initChange=!1},destroy:function(){e(this.element).off(this.eventName,this._change)}}),E.source=v.extend({init:function(e,t,n){v.fn.init.call(this,e,t,n);var i=this.bindings.source.get();i instanceof C.data.DataSource&&n.autoBind!==!1&&i.fetch()},refresh:function(e){var t=this,n=t.bindings.source.get();n instanceof D||n instanceof C.data.DataSource?(e=e||{},"add"==e.action?t.add(e.index,e.items):"remove"==e.action?t.remove(e.index,e.items):"itemchange"!=e.action&&t.render()):t.render()},container:function(){var e=this.element;return"table"==e.nodeName.toLowerCase()&&(e.tBodies[0]||e.appendChild(document.createElement("tbody")),e=e.tBodies[0]),e},template:function(){var e=this.options,t=e.template,n=this.container().nodeName.toLowerCase();return t||(t="select"==n?e.valueField||e.textField?C.format('<option value="#:{0}#">#:{1}#</option>',e.valueField||e.textField,e.textField||e.valueField):"<option>#:data#</option>":"tbody"==n?"<tr><td>#:data#</td></tr>":"ul"==n||"ol"==n?"<li>#:data#</li>":"#:data#",t=C.template(t)),t},add:function(t,n){var i,o,r,s,l=this.container(),c=l.cloneNode(!1),d=l.children[t];if(e(c).html(C.render(this.template(),n)),c.children.length)for(i=this.bindings.source._parents(),o=0,r=n.length;o<r;o++)s=c.children[0],l.insertBefore(s,d||null),a(s,n[o],this.options.roles,[n[o]].concat(i))},remove:function(e,t){var n,i,o=this.container();for(n=0;n<t.length;n++)i=o.children[e],c(i,!0),i.parentNode==o&&o.removeChild(i)},render:function(){var t,n,i,o=this.bindings.source.get(),r=this.container(),s=this.template();if(null!=o)if(o instanceof C.data.DataSource&&(o=o.view()),o instanceof D||"[object Array]"===A.call(o)||(o=[o]),this.bindings.template){if(d(r,!0),e(r).html(this.bindings.template.render(o)),r.children.length)for(t=this.bindings.source._parents(),n=0,i=o.length;n<i;n++)a(r.children[n],o[n],this.options.roles,[o[n]].concat(t))}else e(r).html(C.render(s,o))}}),E.input={checked:_.extend({init:function(t,n,i){_.fn.init.call(this,t,n,i),this._change=M(this.change,this),e(this.element).change(this._change)},change:function(){var e,t,n,i=this.element,o=this.value();if("radio"==i.type)o=this.parsedValue(),this.bindings[z].set(o);else if("checkbox"==i.type)if(e=this.bindings[z].get(),e instanceof D){if(o=this.parsedValue(),o instanceof Date){for(n=0;n<e.length;n++)if(e[n]instanceof Date&&+e[n]===+o){t=n;break}}else t=e.indexOf(o);t>-1?e.splice(t,1):e.push(o)}else this.bindings[z].set(o)},refresh:function(){var e,n,i=this.bindings[z].get(),o=i,r=this.dataType(),a=this.element;if("checkbox"==a.type)if(o instanceof D){if(e=-1,i=this.parsedValue(),i instanceof Date){for(n=0;n<o.length;n++)if(o[n]instanceof Date&&+o[n]===+i){e=n;break}}else e=o.indexOf(i);a.checked=e>=0}else a.checked=o;else"radio"==a.type&&("date"==r?i=C.toString(i,"yyyy-MM-dd"):"datetime-local"==r&&(i=C.toString(i,"yyyy-MM-ddTHH:mm:ss")),a.checked=null!==i&&t!==i&&a.value===""+i)},value:function(){var e=this.element,t=e.value;return"checkbox"==e.type&&(t=e.checked),t},destroy:function(){e(this.element).off(N,this._change)}})},E.select={source:E.source.extend({refresh:function(n){var i,o=this,r=o.bindings.source.get();r instanceof D||r instanceof C.data.DataSource?(n=n||{},"add"==n.action?o.add(n.index,n.items):"remove"==n.action?o.remove(n.index,n.items):"itemchange"!=n.action&&n.action!==t||(o.render(),o.bindings.value&&o.bindings.value&&(i=p(o.bindings.value.get(),e(o.element).data("valueField")),null===i?o.element.selectedIndex=-1:o.element.value=i))):o.render()}}),value:_.extend({init:function(t,n,i){_.fn.init.call(this,t,n,i),this._change=M(this.change,this),e(this.element).change(this._change)},parsedValue:function(){var e,t,n,i,o=this.dataType(),r=[];for(n=0,i=this.element.options.length;n<i;n++)t=this.element.options[n],t.selected&&(e=t.attributes.value,e=e&&e.specified?t.value:t.text,r.push(this._parseValue(e,o)));return r},change:function(){var e,n,i,o,r,a,s,l,c=[],d=this.element,u=this.options.valueField||this.options.textField,h=this.options.valuePrimitive;for(r=0,a=d.options.length;r<a;r++)n=d.options[r],n.selected&&(o=n.attributes.value,o=o&&o.specified?n.value:n.text,c.push(u?o:this._parseValue(o,this.dataType())));if(u)for(e=this.bindings.source.get(),e instanceof C.data.DataSource&&(e=e.view()),i=0;i<c.length;i++)for(r=0,a=e.length;r<a;r++)if(s=e[r].get(u),l=s+""===c[i]){c[i]=e[r];break}o=this.bindings[F].get(),o instanceof D?o.splice.apply(o,[0,o.length].concat(c)):this.bindings[F].set(h||!(o instanceof T||null===o||o===t)&&u?c[0].get(u):c[0])},refresh:function(){var e,t,n,i=this.element,o=i.options,r=this.bindings[F].get(),a=r,s=this.options.valueField||this.options.textField,l=!1,c=this.dataType();for(a instanceof D||(a=new D([r])),i.selectedIndex=-1,n=0;n<a.length;n++)for(r=a[n],s&&r instanceof T&&(r=r.get(s)),"date"==c?r=C.toString(a[n],"yyyy-MM-dd"):"datetime-local"==c&&(r=C.toString(a[n],"yyyy-MM-ddTHH:mm:ss")),e=0;e<o.length;e++)t=o[e].value,""===t&&""!==r&&(t=o[e].text),null!=r&&t==""+r&&(o[e].selected=!0,l=!0)},destroy:function(){e(this.element).off(N,this._change)}})},E.widget={events:v.extend({init:function(e,t,n){v.fn.init.call(this,e.element[0],t,n),this.widget=e,this.handlers={}},refresh:function(e){var t=this.bindings.events[e],n=this.handlers[e];n&&this.widget.unbind(e,n),n=t.get(),this.handlers[e]=function(e){e.data=t.source,n(e),e.data===t.source&&delete e.data},this.widget.bind(e,this.handlers[e])},destroy:function(){var e;for(e in this.handlers)this.widget.unbind(e,this.handlers[e])}}),checked:v.extend({init:function(e,t,n){v.fn.init.call(this,e.element[0],t,n),this.widget=e,this._change=M(this.change,this),this.widget.bind(N,this._change)},change:function(){this.bindings[z].set(this.value())},refresh:function(){this.widget.check(this.bindings[z].get()===!0)},value:function(){var e=this.element,t=e.value;return"on"!=t&&"off"!=t&&"checkbox"!=this.element.type||(t=e.checked),t},destroy:function(){this.widget.unbind(N,this._change)}}),start:v.extend({init:function(e,t,n){v.fn.init.call(this,e.element[0],t,n),this._change=M(this.change,this),this.widget=e,this.widget.bind(N,this._change)},change:function(){this.bindings.start.set(this.widget.range().start)},refresh:function(){var e=this,t=this.bindings.start.get(),n=e.widget._range?e.widget._range.end:null;this.widget.range({start:t,end:n})},destroy:function(){this.widget.unbind(N,this._change)}}),end:v.extend({init:function(e,t,n){v.fn.init.call(this,e.element[0],t,n),this._change=M(this.change,this),this.widget=e,this.widget.bind(N,this._change)},change:function(){this.bindings.end.set(this.widget.range().end)},refresh:function(){var e=this,t=this.bindings.end.get(),n=e.widget._range?e.widget._range.start:null;this.widget.range({start:n,end:t})},destroy:function(){this.widget.unbind(N,this._change)}}),visible:v.extend({init:function(e,t,n){v.fn.init.call(this,e.element[0],t,n),this.widget=e},refresh:function(){var e=this.bindings.visible.get();this.widget.wrapper[0].style.display=e?"":"none"}}),invisible:v.extend({init:function(e,t,n){v.fn.init.call(this,e.element[0],t,n),this.widget=e},refresh:function(){var e=this.bindings.invisible.get();this.widget.wrapper[0].style.display=e?"none":""}}),enabled:v.extend({init:function(e,t,n){v.fn.init.call(this,e.element[0],t,n),this.widget=e},refresh:function(){this.widget.enable&&this.widget.enable(this.bindings.enabled.get())}}),disabled:v.extend({init:function(e,t,n){v.fn.init.call(this,e.element[0],t,n),this.widget=e},refresh:function(){this.widget.enable&&this.widget.enable(!this.bindings.disabled.get())}}),source:n("source","dataSource","setDataSource"),value:v.extend({init:function(t,n,i){v.fn.init.call(this,t.element[0],n,i),this.widget=t,this._change=e.proxy(this.change,this),this.widget.first(N,this._change);var o=this.bindings.value.get();this._valueIsObservableObject=!i.valuePrimitive&&(null==o||o instanceof T),this._valueIsObservableArray=o instanceof D,this._initChange=!1},_source:function(){var e;return this.widget.dataItem&&(e=this.widget.dataItem(),e&&e instanceof T)?[e]:(this.bindings.source&&(e=this.bindings.source.get()),(!e||e instanceof C.data.DataSource)&&(e=this.widget.dataSource.flatView()),e)},change:function(){var e,t,n,i,o,r,a,s=this.widget.value(),l=this.options.dataValueField||this.options.dataTextField,c="[object Array]"===A.call(s),d=this._valueIsObservableObject,u=[];if(this._initChange=!0,l)if(""===s&&(d||this.options.valuePrimitive))s=null;else{for(a=this._source(),c&&(t=s.length,u=s.slice(0)),o=0,r=a.length;o<r;o++)if(n=a[o],i=n.get(l),c){for(e=0;e<t;e++)if(i==u[e]){u[e]=n;break}}else if(i==s){s=d?n:i;break}u[0]&&(s=this._valueIsObservableArray?u:d||!l?u[0]:u[0].get(l))}this.bindings.value.set(s),this._initChange=!1},refresh:function(){var e,n,i,o,r,a,s,l,c;if(!this._initChange){if(e=this.widget,n=e.options,i=n.dataTextField,o=n.dataValueField||i,r=this.bindings.value.get(),a=n.text||"",s=0,c=[],r===t&&(r=null),o)if(r instanceof D){for(l=r.length;s<l;s++)c[s]=r[s].get(o);r=c}else r instanceof T&&(a=r.get(i),r=r.get(o));n.autoBind!==!1||n.cascadeFrom||!e.listView||e.listView.bound()?e.value(r):(i!==o||a||(a=r),a||!r&&0!==r||!n.valuePrimitive?e._preselect(r,a):e.value(r))}this._initChange=!1},destroy:function(){this.widget.unbind(N,this._change)}}),dropdowntree:{value:v.extend({init:function(t,n,i){v.fn.init.call(this,t.element[0],n,i),this.widget=t,this._change=e.proxy(this.change,this),this.widget.first(N,this._change),this._initChange=!1},change:function(){var e,n,i,o,r,a,s,l,c,d=this,u=d.bindings[F].get(),h=d.options.valuePrimitive,p=d.widget.treeview.select(),f=d.widget._isMultipleSelection()?d.widget._getAllChecked():d.widget.treeview.dataItem(p)||d.widget.value(),g=h||d.widget.options.autoBind===!1?d.widget.value():f,m=this.options.dataValueField||this.options.dataTextField;if(g=g.slice?g.slice(0):g,d._initChange=!0,u instanceof D){for(e=[],n=g.length,i=0,o=0,r=u[i],a=!1;r!==t;){for(c=!1,o=0;o<n;o++)if(h?a=g[o]==r:(l=g[o],l=l.get?l.get(m):l,a=l==(r.get?r.get(m):r)),a){g.splice(o,1),n-=1,c=!0;break}c?i+=1:(e.push(r),b(u,i,1),s=i),r=u[i]}b(u,u.length,0,g),e.length&&u.trigger("change",{action:"remove",items:e,index:s}),g.length&&u.trigger("change",{action:"add",items:g,index:u.length-1})}else d.bindings[F].set(g);d._initChange=!1},refresh:function(){if(!this._initChange){var e,t,n=this.options,i=this.widget,o=n.dataValueField||n.dataTextField,r=this.bindings.value.get(),a=r,s=0,l=[];if(o)if(r instanceof D){for(e=r.length;s<e;s++)t=r[s],l[s]=t.get?t.get(o):t;r=l}else r instanceof T&&(r=r.get(o));n.autoBind===!1&&n.valuePrimitive!==!0?i._preselect(a,r):i.value(r)}},destroy:function(){this.widget.unbind(N,this._change)}})},gantt:{dependencies:n("dependencies","dependencies","setDependenciesDataSource")},multiselect:{value:v.extend({init:function(t,n,i){v.fn.init.call(this,t.element[0],n,i),this.widget=t,this._change=e.proxy(this.change,this),this.widget.first(N,this._change),this._initChange=!1},change:function(){var e,n,i,o,r,a,s,l,c,d=this,u=d.bindings[F].get(),h=d.options.valuePrimitive,p=h?d.widget.value():d.widget.dataItems(),f=this.options.dataValueField||this.options.dataTextField;if(p=p.slice(0),d._initChange=!0,u instanceof D){for(e=[],n=p.length,i=0,o=0,r=u[i],a=!1;r!==t;){for(c=!1,o=0;o<n;o++)if(h?a=p[o]==r:(l=p[o],l=l.get?l.get(f):l,a=l==(r.get?r.get(f):r)),a){p.splice(o,1),n-=1,c=!0;break}c?i+=1:(e.push(r),b(u,i,1),s=i),r=u[i]}b(u,u.length,0,p),e.length&&u.trigger("change",{action:"remove",items:e,index:s}),p.length&&u.trigger("change",{action:"add",items:p,index:u.length-1})}else d.bindings[F].set(p);d._initChange=!1},refresh:function(){if(!this._initChange){var e,n,i=this.options,o=this.widget,r=i.dataValueField||i.dataTextField,a=this.bindings.value.get(),s=a,l=0,c=[];if(a===t&&(a=null),r)if(a instanceof D){for(e=a.length;l<e;l++)n=a[l],c[l]=n.get?n.get(r):n;a=c}else a instanceof T&&(a=a.get(r));i.autoBind!==!1||i.valuePrimitive===!0||o._isBound()?o.value(a):o._preselect(s,a)}},destroy:function(){this.widget.unbind(N,this._change)}})},scheduler:{source:n("source","dataSource","setDataSource").extend({dataBound:function(e){var t,n,i,o,r=this.widget,s=e.addedItems||r.items();if(s.length)for(i=e.addedDataItems||r.dataItems(),o=this.bindings.source._parents(),t=0,n=i.length;t<n;t++)a(s[t],i[t],this._ns(e.ns),[i[t]].concat(o))}})},grid:{source:n("source","dataSource","setDataSource").extend({dataBound:function(e){var t,n,i,o,r=this.widget,s=e.addedItems||r.items();if(s.length)for(o=e.addedDataItems||r.dataItems(),i=this.bindings.source._parents(),t=0,n=o.length;t<n;t++)a(s[t],o[t],this._ns(e.ns),[o[t]].concat(i))}})}},b=function(e,t,n,i){var o,r,a,s,l;if(i=i||[],n=n||0,o=i.length,r=e.length,a=[].slice.call(e,t+n),s=a.length,o){for(o=t+o,l=0;t<o;t++)e[t]=i[l],l++;e.length=o}else if(n)for(e.length=t,n+=t;t<n;)delete e[--n];if(s){for(s=t+s,l=0;t<s;t++)e[t]=a[l],l++;e.length=s}for(t=e.length;t<r;)delete e[t],t++},w=I.extend({init:function(e,t){this.target=e,this.options=t,this.toDestroy=[]},bind:function(e){var t,n,i,o,r,a,s=this instanceof k,l=this.binders();for(t in e)t==F?n=!0:t==R?i=!0:t!=P||s?t==z?r=!0:t==B?a=!0:this.applyBinding(t,e,l):o=!0;i&&this.applyBinding(R,e,l),n&&this.applyBinding(F,e,l),r&&this.applyBinding(z,e,l),o&&!s&&this.applyBinding(P,e,l),a&&!s&&this.applyBinding(B,e,l)},binders:function(){return E[this.target.nodeName.toLowerCase()]||{}},applyBinding:function(e,t,n){var i,o=n[e]||E[e],r=this.toDestroy,a=t[e];if(o)if(o=new o(this.target,t,this.options),r.push(o),a instanceof f)o.bind(a),r.push(a);else for(i in a)o.bind(a,i),r.push(a[i]);else if("template"!==e)throw Error("The "+e+" binding is not supported by the "+this.target.nodeName.toLowerCase()+" element")},destroy:function(){var e,t,n=this.toDestroy;for(e=0,t=n.length;e<t;e++)n[e].destroy()}}),k=w.extend({binders:function(){return E.widget[this.target.options.name.toLowerCase()]||{}},applyBinding:function(e,t,n){var i,o=n[e]||E.widget[e],r=this.toDestroy,a=t[e];if(!o)throw Error("The "+e+" binding is not supported by the "+this.target.options.name+" widget");if(o=new o(this.target,t,this.target.options),r.push(o),a instanceof f)o.bind(a),r.push(a);else for(i in a)o.bind(a,i),r.push(a[i])}}),y=/[A-Za-z0-9_\-]+:(\{([^}]*)\}|[^,}]+)/g,x=/\s/g,C.unbind=u,C.bind=s,C.data.binders=E,C.data.Binder=v,C.notify=h,C.observable=function(e){return e instanceof T||(e=new T(e)),e},C.observableHierarchy=function(e){function t(e){var n,i;for(n=0;n<e.length;n++)e[n]._initChildren(),i=e[n].children,i.fetch(),e[n].items=i.data(),t(e[n].items)}var n=C.data.HierarchicalDataSource.create(e);return n.fetch(),t(n.data()),n._data._dataSource=n,n._data}}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.fx.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(e){return parseInt(e,10)}function i(e,t){return n(e.css(t))}function o(e){var t,n=[];for(t in e)n.push(t);return n}function r(e){for(var t in e)W.indexOf(t)!=-1&&U.indexOf(t)==-1&&delete e[t];return e}function a(e,t){var n,i,o,r,a=[],s={};for(i in t)n=i.toLowerCase(),r=M&&W.indexOf(n)!=-1,!E.hasHW3D&&r&&U.indexOf(n)==-1?delete t[i]:(o=t[i],r?a.push(i+"("+o+")"):s[i]=o);return a.length&&(s[se]=a.join(" ")),s}function s(e,t){var i,o,r;return M?(i=e.css(se),i==K?"scale"==t?1:0:(o=i.match(RegExp(t+"\\s*\\(([\\d\\w\\.]+)")),r=0,o?r=n(o[1]):(o=i.match(B)||[0,0,0,0,0],t=t.toLowerCase(),H.test(t)?r=parseFloat(o[3]/o[2]):"translatey"==t?r=parseFloat(o[4]/o[2]):"scale"==t?r=parseFloat(o[2]):"rotate"==t&&(r=parseFloat(Math.atan2(o[2],o[1])))),r)):parseFloat(e.css(t))}function l(e){return e.charAt(0).toUpperCase()+e.substring(1)}function c(e,t){var n=f.extend(t),i=n.prototype.directions;S[l(e)]=n,S.Element.prototype[e]=function(e,t,i,o){return new n(this.element,e,t,i,o)},T(i,function(t,i){S.Element.prototype[e+l(i)]=function(e,t,o){return new n(this.element,i,e,t,o)}})}function d(e,n,i,o){c(e,{directions:m,startValue:function(e){return this._startValue=e,this},endValue:function(e){return this._endValue=e,this},shouldHide:function(){return this._shouldHide},prepare:function(e,r){var a,s,l=this,c="out"===this._direction,d=l.element.data(n),u=!(isNaN(d)||d==i);a=u?d:t!==this._startValue?this._startValue:c?i:o,s=t!==this._endValue?this._endValue:c?o:i,this._reverse?(e[n]=s,r[n]=a):(e[n]=a,r[n]=s),l._shouldHide=r[n]===o}})}function u(e,t){var n=C.directions[t].vertical,i=e[n?J:X]()/2+"px";return _[t].replace("$size",i)}var h,p,f,g,m,v,_,b,w,k,y,x,C=window.kendo,S=C.effects,T=e.each,D=e.extend,A=e.proxy,E=C.support,I=E.browser,M=E.transforms,F=E.transitions,R={scale:0,scalex:0,scaley:0,scale3d:0},P={translate:0,translatex:0,translatey:0,translate3d:0},z=t!==document.documentElement.style.zoom&&!M,B=/matrix3?d?\s*\(.*,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?/i,L=/^(-?[\d\.\-]+)?[\w\s]*,?\s*(-?[\d\.\-]+)?[\w\s]*/i,H=/translatex?$/i,N=/(zoom|fade|expand)(\w+)/,O=/(zoom|fade|expand)/,V=/[xy]$/i,W=["perspective","rotate","rotatex","rotatey","rotatez","rotate3d","scale","scalex","scaley","scalez","scale3d","skew","skewx","skewy","translate","translatex","translatey","translatez","translate3d","matrix","matrix3d"],U=["rotate","scale","scalex","scaley","skew","skewx","skewy","translate","translatex","translatey","matrix"],q={rotate:"deg",scale:"",skew:"px",translate:"px"},j=M.css,G=Math.round,$="",Y="px",K="none",Q="auto",X="width",J="height",Z="hidden",ee="origin",te="abortId",ne="overflow",ie="translate",oe="position",re="completeCallback",ae=j+"transition",se=j+"transform",le=j+"backface-visibility",ce=j+"perspective",de="1500px",ue="perspective("+de+")",he={left:{reverse:"right",property:"left",transition:"translatex",vertical:!1,modifier:-1},right:{reverse:"left",property:"left",transition:"translatex",vertical:!1,modifier:1},down:{reverse:"up",property:"top",transition:"translatey",vertical:!0,modifier:1},up:{reverse:"down",property:"top",transition:"translatey",vertical:!0,modifier:-1},top:{reverse:"bottom"},bottom:{reverse:"top"},"in":{reverse:"out",modifier:-1},out:{reverse:"in",modifier:1},vertical:{reverse:"vertical"},horizontal:{reverse:"horizontal"}};C.directions=he,D(e.fn,{kendoStop:function(e,t){return F?S.stopQueue(this,e||!1,t||!1):this.stop(e,t)}}),M&&!F&&(T(U,function(n,i){e.fn[i]=function(n){if(t===n)return s(this,i);var o=e(this)[0],r=i+"("+n+q[i.replace(V,"")]+")";return o.style.cssText.indexOf(se)==-1?e(this).css(se,r):o.style.cssText=o.style.cssText.replace(RegExp(i+"\\(.*?\\)","i"),r),this},e.fx.step[i]=function(t){e(t.elem)[i](t.now)}}),h=e.fx.prototype.cur,e.fx.prototype.cur=function(){return U.indexOf(this.prop)!=-1?parseFloat(e(this.elem)[this.prop]()):h.apply(this,arguments)}),C.toggleClass=function(e,t,n,i){return t&&(t=t.split(" "),F&&(n=D({exclusive:"all",duration:400,ease:"ease-out"},n),e.css(ae,n.exclusive+" "+n.duration+"ms "+n.ease),setTimeout(function(){e.css(ae,"").css(J)},n.duration)),T(t,function(t,n){e.toggleClass(n,i)})),e},C.parseEffects=function(e,t){var n={};return"string"==typeof e?T(e.split(" "),function(e,i){var o=!O.test(i),r=i.replace(N,function(e,t,n){return t+":"+n.toLowerCase()}),a=r.split(":"),s=a[1],l={};a.length>1&&(l.direction=t&&o?he[s].reverse:s),n[a[0]]=l}):T(e,function(e){var i=this.direction;i&&t&&!O.test(e)&&(this.direction=he[i].reverse),n[e]=this}),n},F&&D(S,{transition:function(t,n,i){var r,s,l,c,d=0,u=t.data("keys")||[];i=D({duration:200,ease:"ease-out",complete:null,exclusive:"all"},i),l=!1,c=function(){l||(l=!0,s&&(clearTimeout(s),s=null),t.removeData(te).dequeue().css(ae,"").css(ae),i.complete.call(t))},i.duration=e.fx?e.fx.speeds[i.duration]||i.duration:i.duration,r=a(t,n),e.merge(u,o(r)),e.hasOwnProperty("uniqueSort")?t.data("keys",e.uniqueSort(u)).height():t.data("keys",e.unique(u)).height(),t.css(ae,i.exclusive+" "+i.duration+"ms "+i.ease).css(ae),t.css(r).css(se),F.event&&(t.one(F.event,c),0!==i.duration&&(d=500)),s=setTimeout(c,i.duration+d),t.data(te,s),t.data(re,c)},stopQueue:function(e,t,n){var i,o=e.data("keys"),r=!n&&o,a=e.data(re);return r&&(i=C.getComputedStyles(e[0],o)),a&&a(),r&&e.css(i),e.removeData("keys").stop(t)}}),p=C.Class.extend({init:function(e,t){var n=this;n.element=e,n.effects=[],n.options=t,n.restore=[]},run:function(t){var n,i,o,s,l,c,d,u=this,h=t.length,p=u.element,f=u.options,g=e.Deferred(),m={},v={};for(u.effects=t,g.done(e.proxy(u,"complete")),p.data("animating",!0),i=0;i<h;i++)for(n=t[i],n.setReverse(f.reverse),n.setOptions(f),u.addRestoreProperties(n.restore),n.prepare(m,v),l=n.children(),o=0,c=l.length;o<c;o++)l[o].duration(f.duration).run();for(d in f.effects)D(v,f.effects[d].properties);for(p.is(":visible")||D(m,{display:p.data("olddisplay")||"block"}),M&&!f.reset&&(s=p.data("targetTransform"),s&&(m=D(s,m))),m=a(p,m),M&&!F&&(m=r(m)),p.css(m).css(se),i=0;i<h;i++)t[i].setup();return f.init&&f.init(),p.data("targetTransform",v),S.animate(p,v,D({},f,{complete:g.resolve})),g.promise()},stop:function(){e(this.element).kendoStop(!0,!0)},addRestoreProperties:function(e){for(var t,n=this.element,i=0,o=e.length;i<o;i++)t=e[i],this.restore.push(t),n.data(t)||n.data(t,n.css(t))},restoreCallback:function(){var e,t,n,i=this.element;for(e=0,t=this.restore.length;e<t;e++)n=this.restore[e],i.css(n,i.data(n))},complete:function(){var t=this,n=0,i=t.element,o=t.options,r=t.effects,a=r.length;for(i.removeData("animating").dequeue(),o.hide&&i.data("olddisplay",i.css("display")).hide(),this.restoreCallback(),z&&!M&&setTimeout(e.proxy(this,"restoreCallback"),0);n<a;n++)r[n].teardown();o.completeCallback&&o.completeCallback(i)}}),S.promise=function(e,t){var n,i,o,r=[],a=new p(e,t),s=C.parseEffects(t.effects);t.effects=s;for(o in s)n=S[l(o)],n&&(i=new n(e,s[o].direction),r.push(i));r[0]?a.run(r):(e.is(":visible")||e.css({display:e.data("olddisplay")||"block"}).css("display"),t.init&&t.init(),e.dequeue(),a.complete())},D(S,{animate:function(n,o,a){var s=a.transition!==!1;delete a.transition,F&&"transition"in S&&s?S.transition(n,o,a):M?n.animate(r(o),{queue:!1,show:!1,hide:!1,duration:a.duration,complete:a.complete}):n.each(function(){var n=e(this),r={};T(W,function(e,a){var s,l,c,d,u,h,p,f=o?o[a]+" ":null;f&&(l=o,a in R&&o[a]!==t?(s=f.match(L),M&&D(l,{scale:+s[0]})):a in P&&o[a]!==t&&(c=n.css(oe),d="absolute"==c||"fixed"==c,n.data(ie)||(d?n.data(ie,{top:i(n,"top")||0,left:i(n,"left")||0,bottom:i(n,"bottom"),right:i(n,"right")}):n.data(ie,{top:i(n,"marginTop")||0,left:i(n,"marginLeft")||0})),u=n.data(ie),s=f.match(L),s&&(h=a==ie+"y"?0:+s[1],p=a==ie+"y"?+s[1]:+s[2],d?(isNaN(u.right)?isNaN(h)||D(l,{left:u.left+h}):isNaN(h)||D(l,{right:u.right-h}),isNaN(u.bottom)?isNaN(p)||D(l,{top:u.top+p}):isNaN(p)||D(l,{bottom:u.bottom-p})):(isNaN(h)||D(l,{marginLeft:u.left+h}),isNaN(p)||D(l,{marginTop:u.top+p})))),!M&&"scale"!=a&&a in l&&delete l[a],l&&D(r,l))}),I.msie&&delete r.scale,n.animate(r,{queue:!1,show:!1,hide:!1,duration:a.duration,complete:a.complete})})}}),S.animatedPromise=S.promise,f=C.Class.extend({init:function(e,t){var n=this;n.element=e,n._direction=t,n.options={},n._additionalEffects=[],n.restore||(n.restore=[])},reverse:function(){return this._reverse=!0,this.run()},play:function(){return this._reverse=!1,this.run()},add:function(e){return this._additionalEffects.push(e),this},direction:function(e){return this._direction=e,this},duration:function(e){return this._duration=e,this},compositeRun:function(){var e=this,t=new p(e.element,{reverse:e._reverse,duration:e._duration}),n=e._additionalEffects.concat([e]);return t.run(n)},run:function(){if(this._additionalEffects&&this._additionalEffects[0])return this.compositeRun();var t,n,i=this,o=i.element,s=0,l=i.restore,c=l.length,d=e.Deferred(),u={},h={},p=i.children(),f=p.length;for(d.done(e.proxy(i,"_complete")),o.data("animating",!0), +s=0;s<c;s++)t=l[s],o.data(t)||o.data(t,o.css(t));for(s=0;s<f;s++)p[s].duration(i._duration).run();return i.prepare(u,h),o.is(":visible")||D(u,{display:o.data("olddisplay")||"block"}),M&&(n=o.data("targetTransform"),n&&(u=D(n,u))),u=a(o,u),M&&!F&&(u=r(u)),o.css(u).css(se),i.setup(),o.data("targetTransform",h),S.animate(o,h,{duration:i._duration,complete:d.resolve}),d.promise()},stop:function(){var t=0,n=this.children(),i=n.length;for(t=0;t<i;t++)n[t].stop();return e(this.element).kendoStop(!0,!0),this},restoreCallback:function(){var e,t,n,i=this.element;for(e=0,t=this.restore.length;e<t;e++)n=this.restore[e],i.css(n,i.data(n))},_complete:function(){var t=this,n=t.element;n.removeData("animating").dequeue(),t.restoreCallback(),t.shouldHide()&&n.data("olddisplay",n.css("display")).hide(),z&&!M&&setTimeout(e.proxy(t,"restoreCallback"),0),t.teardown()},setOptions:function(e){D(!0,this.options,e)},children:function(){return[]},shouldHide:e.noop,setup:e.noop,prepare:e.noop,teardown:e.noop,directions:[],setReverse:function(e){return this._reverse=e,this}}),g=["left","right","up","down"],m=["in","out"],c("slideIn",{directions:g,divisor:function(e){return this.options.divisor=e,this},prepare:function(e,t){var n,i=this,o=i.element,r=C._outerWidth,a=C._outerHeight,s=he[i._direction],l=-s.modifier*(s.vertical?a(o):r(o)),c=l/(i.options&&i.options.divisor||1)+Y,d="0px";i._reverse&&(n=e,e=t,t=n),M?(e[s.transition]=c,t[s.transition]=d):(e[s.property]=c,t[s.property]=d)}}),c("tile",{directions:g,init:function(e,t,n){f.prototype.init.call(this,e,t),this.options={previous:n}},previousDivisor:function(e){return this.options.previousDivisor=e,this},children:function(){var e=this,t=e._reverse,n=e.options.previous,i=e.options.previousDivisor||1,o=e._direction,r=[C.fx(e.element).slideIn(o).setReverse(t)];return n&&r.push(C.fx(n).slideIn(he[o].reverse).divisor(i).setReverse(!t)),r}}),d("fade","opacity",1,0),d("zoom","scale",1,.01),c("slideMargin",{prepare:function(e,t){var n,i=this,o=i.element,r=i.options,a=o.data(ee),s=r.offset,l=i._reverse;l||null!==a||o.data(ee,parseFloat(o.css("margin-"+r.axis))),n=o.data(ee)||0,t["margin-"+r.axis]=l?n:n+s}}),c("slideTo",{prepare:function(e,t){var n=this,i=n.element,o=n.options,r=o.offset.split(","),a=n._reverse;M?(t.translatex=a?0:r[0],t.translatey=a?0:r[1]):(t.left=a?0:r[0],t.top=a?0:r[1]),i.css("left")}}),c("expand",{directions:["horizontal","vertical"],restore:[ne],prepare:function(e,n){var i=this,o=i.element,r=i.options,a=i._reverse,s="vertical"===i._direction?J:X,l=o[0].style[s],c=o.data(s),d=parseFloat(c||l),u=G(o.css(s,Q)[s]());e.overflow=Z,d=r&&r.reset?u||d:d||u,n[s]=(a?0:d)+Y,e[s]=(a?d:0)+Y,c===t&&o.data(s,l)},shouldHide:function(){return this._reverse},teardown:function(){var e=this,t=e.element,n="vertical"===e._direction?J:X,i=t.data(n);i!=Q&&i!==$||setTimeout(function(){t.css(n,Q).css(n)},0)}}),v={position:"absolute",marginLeft:0,marginTop:0,scale:1},c("transfer",{init:function(e,t){this.element=e,this.options={target:t},this.restore=[]},setup:function(){this.element.appendTo(document.body)},prepare:function(e,t){var n=this,i=n.element,o=S.box(i),r=S.box(n.options.target),a=s(i,"scale"),l=S.fillScale(r,o),c=S.transformOrigin(r,o);D(e,v),t.scale=1,i.css(se,"scale(1)").css(se),i.css(se,"scale("+a+")"),e.top=o.top,e.left=o.left,e.transformOrigin=c.x+Y+" "+c.y+Y,n._reverse?e.scale=l:t.scale=l}}),_={top:"rect(auto auto $size auto)",bottom:"rect($size auto auto auto)",left:"rect(auto $size auto auto)",right:"rect(auto auto auto $size)"},b={top:{start:"rotatex(0deg)",end:"rotatex(180deg)"},bottom:{start:"rotatex(-180deg)",end:"rotatex(0deg)"},left:{start:"rotatey(0deg)",end:"rotatey(-180deg)"},right:{start:"rotatey(180deg)",end:"rotatey(0deg)"}},c("turningPage",{directions:g,init:function(e,t,n){f.prototype.init.call(this,e,t),this._container=n},prepare:function(e,t){var n=this,i=n._reverse,o=i?he[n._direction].reverse:n._direction,r=b[o];e.zIndex=1,n._clipInHalf&&(e.clip=u(n._container,C.directions[o].reverse)),e[le]=Z,t[se]=ue+(i?r.start:r.end),e[se]=ue+(i?r.end:r.start)},setup:function(){this._container.append(this.element)},face:function(e){return this._face=e,this},shouldHide:function(){var e=this,t=e._reverse,n=e._face;return t&&!n||!t&&n},clipInHalf:function(e){return this._clipInHalf=e,this},temporary:function(){return this.element.addClass("temp-page"),this}}),c("staticPage",{directions:g,init:function(e,t,n){f.prototype.init.call(this,e,t),this._container=n},restore:["clip"],prepare:function(e,t){var n=this,i=n._reverse?he[n._direction].reverse:n._direction;e.clip=u(n._container,i),e.opacity=.999,t.opacity=1},shouldHide:function(){var e=this,t=e._reverse,n=e._face;return t&&!n||!t&&n},face:function(e){return this._face=e,this}}),c("pageturn",{directions:["horizontal","vertical"],init:function(e,t,n,i){f.prototype.init.call(this,e,t),this.options={},this.options.face=n,this.options.back=i},children:function(){var e,t=this,n=t.options,i="horizontal"===t._direction?"left":"top",o=C.directions[i].reverse,r=t._reverse,a=n.face.clone(!0).removeAttr("id"),s=n.back.clone(!0).removeAttr("id"),l=t.element;return r&&(e=i,i=o,o=e),[C.fx(n.face).staticPage(i,l).face(!0).setReverse(r),C.fx(n.back).staticPage(o,l).setReverse(r),C.fx(a).turningPage(i,l).face(!0).clipInHalf(!0).temporary().setReverse(r),C.fx(s).turningPage(o,l).clipInHalf(!0).temporary().setReverse(r)]},prepare:function(e,t){e[ce]=de,e.transformStyle="preserve-3d",e.opacity=.999,t.opacity=1},teardown:function(){this.element.find(".temp-page").remove()}}),c("flip",{directions:["horizontal","vertical"],init:function(e,t,n,i){f.prototype.init.call(this,e,t),this.options={},this.options.face=n,this.options.back=i},children:function(){var e,t=this,n=t.options,i="horizontal"===t._direction?"left":"top",o=C.directions[i].reverse,r=t._reverse,a=t.element;return r&&(e=i,i=o,o=e),[C.fx(n.face).turningPage(i,a).face(!0).setReverse(r),C.fx(n.back).turningPage(o,a).setReverse(r)]},prepare:function(e){e[ce]=de,e.transformStyle="preserve-3d"}}),w=!E.mobileOS.android,k=".km-touch-scrollbar, .km-actionsheet-wrapper",c("replace",{_before:e.noop,_after:e.noop,init:function(t,n,i){f.prototype.init.call(this,t),this._previous=e(n),this._transitionClass=i},duration:function(){throw Error("The replace effect does not support duration setting; the effect duration may be customized through the transition class rule")},beforeTransition:function(e){return this._before=e,this},afterTransition:function(e){return this._after=e,this},_both:function(){return e().add(this._element).add(this._previous)},_containerClass:function(){var e=this._direction,t="k-fx k-fx-start k-fx-"+this._transitionClass;return e&&(t+=" k-fx-"+e),this._reverse&&(t+=" k-fx-reverse"),t},complete:function(t){if(!(!this.deferred||t&&e(t.target).is(k))){var n=this.container;n.removeClass("k-fx-end").removeClass(this._containerClass()).off(F.event,this.completeProxy),this._previous.hide().removeClass("k-fx-current"),this.element.removeClass("k-fx-next"),w&&n.css(ne,""),this.isAbsolute||this._both().css(oe,""),this.deferred.resolve(),delete this.deferred}},run:function(){if(this._additionalEffects&&this._additionalEffects[0])return this.compositeRun();var t,n=this,i=n.element,o=n._previous,r=i.parents().filter(o.parents()).first(),a=n._both(),s=e.Deferred(),l=i.css(oe);return r.length||(r=i.parent()),this.container=r,this.deferred=s,this.isAbsolute="absolute"==l,this.isAbsolute||a.css(oe,"absolute"),w&&(t=r.css(ne),r.css(ne,"hidden")),F?(i.addClass("k-fx-hidden"),r.addClass(this._containerClass()),this.completeProxy=e.proxy(this,"complete"),r.on(F.event,this.completeProxy),C.animationFrame(function(){i.removeClass("k-fx-hidden").addClass("k-fx-next"),o.css("display","").addClass("k-fx-current"),n._before(o,i),C.animationFrame(function(){r.removeClass("k-fx-start").addClass("k-fx-end"),n._after(o,i)})})):this.complete(),s.promise()},stop:function(){this.complete()}}),y=C.Class.extend({init:function(){var e=this;e._tickProxy=A(e._tick,e),e._started=!1},tick:e.noop,done:e.noop,onEnd:e.noop,onCancel:e.noop,start:function(){this.enabled()&&(this.done()?this.onEnd():(this._started=!0,C.animationFrame(this._tickProxy)))},enabled:function(){return!0},cancel:function(){this._started=!1,this.onCancel()},_tick:function(){var e=this;e._started&&(e.tick(),e.done()?(e._started=!1,e.onEnd()):C.animationFrame(e._tickProxy))}}),x=y.extend({init:function(e){var t=this;D(t,e),y.fn.init.call(t)},done:function(){return this.timePassed()>=this.duration},timePassed:function(){return Math.min(this.duration,new Date-this.startDate)},moveTo:function(e){var t=this,n=t.movable;t.initial=n[t.axis],t.delta=e.location-t.initial,t.duration="number"==typeof e.duration?e.duration:300,t.tick=t._easeProxy(e.ease),t.startDate=new Date,t.start()},_easeProxy:function(e){var t=this;return function(){t.movable.moveAxis(t.axis,e(t.timePassed(),t.initial,t.delta,t.duration))}}}),D(x,{easeOutExpo:function(e,t,n,i){return e==i?t+n:n*(-Math.pow(2,-10*e/i)+1)+t},easeOutBack:function(e,t,n,i,o){return o=1.70158,n*((e=e/i-1)*e*((o+1)*e+o)+1)+t}}),S.Animation=y,S.Transition=x,S.createEffect=c,S.box=function(t){t=e(t);var n=t.offset();return n.width=C._outerWidth(t),n.height=C._outerHeight(t),n},S.transformOrigin=function(e,t){var n=(e.left-t.left)*t.width/(t.width-e.width),i=(e.top-t.top)*t.height/(t.height-e.height);return{x:isNaN(n)?0:n,y:isNaN(i)?0:i}},S.fillScale=function(e,t){return Math.min(e.width/t.width,e.height/t.height)},S.fitScale=function(e,t){return Math.max(e.width/t.width,e.height/t.height)}}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.view.min",["kendo.core.min","kendo.binder.min","kendo.fx.min"],e)}(function(){return function(e,t){function n(e){if(!e)return{};var t=e.match(R)||[];return{type:t[1],direction:t[3],reverse:"reverse"===t[5]}}var i=window.kendo,o=i.attr,r=i.ui,a=i.attrValue,s=i.directiveSelector,l=i.Observable,c=i.ui.Widget,d=i.roleSelector,u="SCRIPT",h="init",p="transitionStart",f="transitionEnd",g="show",m="hide",v="attach",_="detach",b=/unrecognized expression/,w=/<body[^>]*>(([\u000a\u000d\u2028\u2029]|.)*)<\/body>/i,k="loadStart",y="loadComplete",x="showStart",C="sameViewRequested",S="viewShow",T="viewTypeDetermined",D="after",A={content:"k-content",view:"k-view",stretchedView:"k-stretched-view",widget:"k-widget",header:"k-header",footer:"k-footer"},E=i.ui.Widget.extend({init:function(t,n){var o=this;n=n||{},o.id=i.guid(),l.fn.init.call(o),this.options=e.extend({},this.options,n),o.content=t,o.options.renderOnInit&&c.fn.init.call(o,o._createElement(),n),o.options.wrapInSections&&o._renderSections(),o.tagName=n.tagName||"div",o.model=n.model,o._wrap=n.wrap!==!1,this._evalTemplate=n.evalTemplate||!1,o._fragments={},o.bind([h,g,m,p,f],n)},options:{name:"View",renderOnInit:!1,wrapInSections:!1,detachOnHide:!0,detachOnDestroy:!0},render:function(t){var n=this,o=!n.element;return o&&(n.element=n._createElement()),t&&e(t).append(n.element),o&&(i.bind(n.element,n.model),n.trigger(h)),t&&(n._eachFragment(v),n.trigger(g)),n.element},clone:function(){return new I(this)},triggerBeforeShow:function(){return!0},triggerBeforeHide:function(){return!0},showStart:function(){var e=this,t=e.render();t&&t.css("display",""),this.trigger(x,{view:this})},showEnd:function(){},hideEnd:function(){this.hide()},beforeTransition:function(e){this.trigger(p,{type:e})},afterTransition:function(e){this.trigger(f,{type:e})},hide:function(){this.options.detachOnHide&&(this._eachFragment(_),e(this.element).detach()),this.trigger(m)},destroy:function(){var e=this,t=e.element;t&&(c.fn.destroy.call(e),i.unbind(t),i.destroy(t),e.options.detachOnDestroy&&t.remove())},purge:function(){var t=this;t.destroy(),e(t.element).add(t.content).add(t.wrapper).off().remove()},fragments:function(t){e.extend(this._fragments,t)},_eachFragment:function(e){for(var t in this._fragments)this._fragments[t][e](this,t)},_createElement:function(){var t,n,o,r=this,a="<"+r.tagName+" />";try{n=e(document.getElementById(r.content)||r.content),n[0].tagName===u&&(n=n.html())}catch(s){b.test(s.message)&&(n=r.content)}return"string"==typeof n?(n=n.replace(/^\s+|\s+$/g,""),r._evalTemplate&&(n=i.template(n)(r.model||{})),t=e(a).append(n),r._wrap||(t=t.contents())):(t=n,r._evalTemplate&&(o=e(i.template(e("<div />").append(t.clone(!0)).html())(r.model||{})),e.contains(document,t[0])&&t.replaceWith(o),t=o),r._wrap&&(t=t.wrapAll(a).parent())),t},_renderSections:function(){var e=this;e.options.wrapInSections&&(e._wrapper(),e._createContent(),e._createHeader(),e._createFooter())},_wrapper:function(){var e,t=this,n=t.content;t.wrapper=n.is(d("view"))?t.content:n.wrap("<div data-"+i.ns+'stretch="true" data-'+i.ns+'role="view" data-'+i.ns+'init-widgets="false"></div>').parent(),e=t.wrapper,e.attr("id",t.id),e.addClass(A.view),e.addClass(A.widget),e.attr("role","view")},_createContent:function(){var t,n=this,i=e(n.wrapper),r=d("content");i.children(r)[0]||(t=i.children().filter(function(){var t=e(this);if(!t.is(d("header"))&&!t.is(d("footer")))return t}),t.wrap("<div "+o("role")+'="content"></div>')),this.contentElement=i.children(d("content")),this.contentElement.addClass(A.stretchedView).addClass(A.content)},_createHeader:function(){var e=this,t=e.wrapper;this.header=t.children(d("header")).addClass(A.header)},_createFooter:function(){var e=this,t=e.wrapper;this.footer=t.children(d("footer")).addClass(A.footer)}}),I=i.Class.extend({init:function(t){e.extend(this,{element:t.element.clone(!0),transition:t.transition,id:t.id}),t.element.parent().append(this.element)},hideEnd:function(){this.element.remove()},beforeTransition:e.noop,afterTransition:e.noop}),M=E.extend({init:function(e,t){E.fn.init.call(this,e,t),this.containers={}},container:function(e){var t=this.containers[e];return t||(t=this._createContainer(e),this.containers[e]=t),t},showIn:function(e,t,n){this.container(e).show(t,n)},_createContainer:function(e){var t,n=this.render(),i=n.find(e);if(!i.length&&n.is(e)){if(!n.is(e))throw Error("can't find a container with the specified "+e+" selector");i=n}return t=new P(i),t.bind("accepted",function(e){e.view.render(i)}),t}}),F=E.extend({attach:function(e,t){e.element.find(t).replaceWith(this.render())},detach:function(){}}),R=/^(\w+)(:(\w+))?( (\w+))?$/,P=l.extend({init:function(e){l.fn.init.call(this),this.container=e,this.history=[],this.view=null,this.running=!1},after:function(){this.running=!1,this.trigger("complete",{view:this.view}),this.trigger("after")},end:function(){this.view.showEnd(),this.previous.hideEnd(),this.after()},show:function(e,t,o){if(!e.triggerBeforeShow()||this.view&&!this.view.triggerBeforeHide())return this.trigger("after"),!1;o=o||e.id;var r=this,a=e===r.view?e.clone():r.view,s=r.history,l=s[s.length-2]||{},c=l.id===o,d=t||(c?s[s.length-1].transition:e.transition),u=n(d);return r.running&&r.effect.stop(),"none"===d&&(d=null),r.trigger("accepted",{view:e}),r.view=e,r.previous=a,r.running=!0,c?s.pop():s.push({id:o,transition:d}),a?(d&&i.effects.enabled?(e.element.addClass("k-fx-hidden"),e.showStart(),c&&!t&&(u.reverse=!u.reverse),r.effect=i.fx(e.element).replace(a.element,u.type).beforeTransition(function(){e.beforeTransition("show"),a.beforeTransition("hide")}).afterTransition(function(){e.afterTransition("show"),a.afterTransition("hide")}).direction(u.direction).setReverse(u.reverse),r.effect.run().then(function(){r.end()})):(e.showStart(),r.end()),!0):(e.showStart(),e.showEnd(),r.after(),!0)},destroy:function(){var e=this,t=e.view;t&&t.destroy&&t.destroy()}}),z=l.extend({init:function(t){var n,o,r=this;l.fn.init.call(r),r.options=t,e.extend(r,t),r.sandbox=e("<div />"),o=r.container,n=r._hideViews(o),r.rootView=n.first(),r.layouts={},r.viewContainer=new i.ViewContainer(r.container),r.viewContainer.bind("accepted",function(e){e.view.params=r.params}),r.viewContainer.bind("complete",function(e){r.trigger(S,{view:e.view})}),r.viewContainer.bind(D,function(){r.trigger(D)}),this.bind(this.events,t)},events:[x,D,S,k,y,C,T],destroy:function(){var e,t=this,n=t.viewContainer;i.destroy(t.container);for(e in t.layouts)this.layouts[e].destroy();n&&n.destroy()},view:function(){return this.viewContainer.view},showView:function(e,t,n){if(e=e.replace(RegExp("^"+this.remoteViewURLPrefix),""),""===e&&this.remoteViewURLPrefix&&(e="/"),e.replace(/^#/,"")===this.url)return this.trigger(C),!1;this.trigger(x);var o=this,r=o._findViewElement(e),a=i.widgetInstance(r);return o.url=e.replace(/^#/,""),o.params=n,a&&a.reload&&(a.purge(),r=[]),this.trigger(T,{remote:0===r.length,url:e}),!r[0]||(a||(a=o._createView(r)),o.viewContainer.show(a,t,e))},append:function(e,t){var n,i,r=this.sandbox,a=(t||"").split("?")[0],s=this.container;return w.test(e)&&(e=RegExp.$1),r[0].innerHTML=e,s.append(r.children("script, style")),n=this._hideViews(r),i=n.first(),i.length||(n=i=r.wrapInner("<div data-role=view />").children()),a&&i.hide().attr(o("url"),a),s.append(n),this._createView(i)},_locate:function(e){return this.$angular?s(e):d(e)},_findViewElement:function(e){var t,n=e.split("?")[0];return n?(t=this.container.children("["+o("url")+"='"+n+"']"),t[0]||n.indexOf("/")!==-1||(t=this.container.children("#"===n.charAt(0)?n:"#"+n)),t[0]||(t=this._findViewElementById(e)),t):this.rootView},_findViewElementById:function(e){var t=this.container.children("[id='"+e+"']");return t},_createView:function(e){return this._createSpaView(e)},_createMobileView:function(e){return i.initWidget(e,{defaultTransition:this.transition,loader:this.loader,container:this.container,getLayout:this.getLayoutProxy,modelScope:this.modelScope,reload:a(e,"reload")},r.roles)},_createSpaView:function(e){var t=(this.options||{}).viewOptions||{};return new i.View(e,{renderOnInit:t.renderOnInit,wrap:t.wrap||!1,wrapInSections:t.wrapInSections,detachOnHide:t.detachOnHide,detachOnDestroy:t.detachOnDestroy})},_hideViews:function(e){return e.children(this._locate("view")).hide()}});i.ViewEngine=z,i.ViewContainer=P,i.Fragment=F,i.Layout=M,i.View=E,i.ViewClone=I}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dom.min",["kendo.core.min"],e)}(function(){return function(e){function t(){this.node=null}function n(){}function i(e,t,n){this.nodeName=e,this.attr=t||{},this.children=n||[]}function o(e){this.nodeValue=e+""}function r(e){this.html=e}function a(e,t){for(h.innerHTML=t;h.firstChild;)e.appendChild(h.firstChild)}function s(e){return new r(e)}function l(e,t,n){return new i(e,t,n)}function c(e){return new o(e)}function d(e){this.root=e,this.children=[]}var u,h;t.prototype={remove:function(){this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.attr={}},attr:{},text:function(){return""}},n.prototype={nodeName:"#null",attr:{style:{}},children:[],remove:function(){}},u=new n,i.prototype=new t,i.prototype.appendTo=function(e){var t,n=document.createElement(this.nodeName),i=this.children;for(t=0;t<i.length;t++)i[t].render(n,u);return e.appendChild(n),n},i.prototype.render=function(e,t){var n,i,o,r,a,s;if(t.nodeName!==this.nodeName)t.remove(),n=this.appendTo(e);else{if(n=t.node,o=this.children,r=o.length,a=t.children,s=a.length,Math.abs(s-r)>2)return void this.render({appendChild:function(n){e.replaceChild(n,t.node)}},u);for(i=0;i<r;i++)o[i].render(n,a[i]||u);for(i=r;i<s;i++)a[i].remove()}this.node=n,this.syncAttributes(t.attr),this.removeAttributes(t.attr)},i.prototype.syncAttributes=function(e){var t,n,i,o=this.attr;for(t in o)n=o[t],i=e[t],"style"===t?this.setStyle(n,i):n!==i&&this.setAttribute(t,n,i)},i.prototype.setStyle=function(e,t){var n,i=this.node;if(t)for(n in e)e[n]!==t[n]&&(i.style[n]=e[n]);else for(n in e)i.style[n]=e[n]},i.prototype.removeStyle=function(e){var t,n=this.attr.style||{},i=this.node;for(t in e)void 0===n[t]&&(i.style[t]="")},i.prototype.removeAttributes=function(e){var t,n=this.attr;for(t in e)"style"===t?this.removeStyle(e.style):void 0===n[t]&&this.removeAttribute(t)},i.prototype.removeAttribute=function(e){var t=this.node;"style"===e?t.style.cssText="":"className"===e?t.className="":t.removeAttribute(e)},i.prototype.setAttribute=function(e,t){var n=this.node;void 0!==n[e]?n[e]=t:n.setAttribute(e,t)},i.prototype.text=function(){var e,t="";for(e=0;e<this.children.length;++e)t+=this.children[e].text();return t},o.prototype=new t,o.prototype.nodeName="#text",o.prototype.render=function(e,t){var n;t.nodeName!==this.nodeName?(t.remove(),n=document.createTextNode(this.nodeValue),e.appendChild(n)):(n=t.node,this.nodeValue!==t.nodeValue&&n.parentNode&&(n.nodeValue=this.nodeValue)),this.node=n},o.prototype.text=function(){return this.nodeValue},r.prototype={nodeName:"#html",attr:{},remove:function(){var e,t;for(e=0;e<this.nodes.length;e++)t=this.nodes[e],t.parentNode&&t.parentNode.removeChild(t)},render:function(e,t){var n,i;if(t.nodeName!==this.nodeName||t.html!==this.html)for(t.remove(),n=e.lastChild,a(e,this.html),this.nodes=[],i=n?n.nextSibling:e.firstChild;i;i=i.nextSibling)this.nodes.push(i);else this.nodes=t.nodes.slice(0)}},h=document.createElement("div"),d.prototype={html:s,element:l,text:c,render:function(e){var t,n,i,o=this.children;for(t=0,n=e.length;t<n;t++)i=o[t],i?i.node&&i.node.parentNode||(i.remove(),i=u):i=u,e[t].render(this.root,i);for(t=n;t<o.length;t++)o[t].remove();this.children=e}},e.dom={html:s,text:c,element:l,Tree:d,Node:t}}(window.kendo),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("ooxml/utils.min",["kendo.core.min"],e)}(function(){!function(){kendo.ooxml=kendo.ooxml||{},kendo.ooxml.createZip=function(){if("undefined"==typeof JSZip)throw Error("JSZip not found. Check http://docs.telerik.com/kendo-ui/framework/excel/introduction#requirements for more details.");return new JSZip}}()},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("ooxml/kendo-ooxml.min",["kendo.core.min","ooxml/utils.min"],e)}(function(){!function(e){function t(e,t,n){return(1461*(e+4800+((t-13)/12|0))/4|0)+(367*(t-1-12*((t-13)/12|0))/12|0)-(3*((e+4900+((t-13)/12|0))/100|0)/4|0)+n-32075}function n(e,n,i){return t(e,n,i)-O}function i(e,t,n,i){return(e+(t+(n+i/1e3)/60)/60)/24}function o(e){var t=i(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),o=n(e.getFullYear(),e.getMonth(),e.getDate());return o<0?o-1+t:o+t}function r(e){return W+e}function a(e,t){return t.indexOf(e)}function s(e){return(e+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\"/g,""").replace(/\'/g,"'")}function l(e,t){var n,i="";for(n=0;n<e;++n)i+=t(n);return i}function c(e,t){var n,i="";if(null!=e)if(Array.isArray(e))for(n=0;n<e.length;++n)i+=t(e[n],n);else"object"==typeof e&&Object.keys(e).forEach(function(n,o){i+=t(e[n],n,o)});return i}function d(e){return"string"==typeof e?"<f>"+s(e)+"</f>":'<f t="array" ref="'+e.ref+'">'+s(e.src)+"</f>"}function u(e){var t=Math.floor(e/26)-1;return(t>=0?u(t):"")+String.fromCharCode(65+e%26)}function h(e,t){return u(t)+(e+1)}function p(e,t){return"$"+u(t)+"$"+(e+1)}function f(e){var t=e.frozenRows||(e.freezePane||{}).rowSplit||1;return t-1}function g(e){var t=7;return e/t-Math.floor(128/t)/256}function m(e){return.75*e}function v(e){return(e+"").replace(/[\x00-\x09\x0B\x0C\x0E-\x1F]/g,"").replace(/\r?\n/g,"\r\n")}function _(e){var t=e;return t.length<6&&(t=t.replace(/(\w)/g,function(e,t){return t+t})),t=t.substring(1).toUpperCase(),t.length<8&&(t="FF"+t),t}function b(e){var t="thin";return 2===e?t="medium":3===e&&(t="thick"),t}function w(e,t){var n="";return t&&(n+="<"+e+' style="'+b(t.size)+'">',t.color&&(n+='<color rgb="'+_(t.color)+'"/>'),n+="</"+e+">"),n}function k(e){return"<border>"+w("left",e.left)+w("right",e.right)+w("top",e.top)+w("bottom",e.bottom)+"</border>"}function y(e,t){var n,i,o,r=[],a=[];for(x(e,function(e,t){var n={_source:e,index:t,height:e.height,level:e.level,cells:[]};r.push(n),a[t]=n}),n=C(r).slice(0),i={rowData:r,rowsByIndex:a,mergedCells:t},o=0;o<n.length;o++)E(n[o],i),delete n[o]._source;return C(r)}function x(e,t){var n,i,o;for(n=0;n<e.length;n++)i=e[n],i&&(o=i.index,"number"!=typeof o&&(o=n),t(i,o))}function C(e){return e.sort(function(e,t){return e.index-t.index})}function S(e,t){e.indexOf(t)<0&&e.push(t)}function T(e,t){var n,i,o,r,a;for(n=0;n<e.length;++n)if(i=e[n],o=i.split(":"),r=o[0],r===t)return a=o[1],r=D(r),a=D(a),{rowSpan:a.row-r.row+1,colSpan:a.col-r.col+1}}function D(e){function t(e){var t,n=e.toUpperCase(),i=0;for(t=0;t<n.length;++t)i=26*i+n.charCodeAt(t)-64;return i-1}function n(e){return parseInt(e,10)-1}var i=/^([a-z]+)(\d+)$/i.exec(e);return{row:n(i[2]),col:t(i[1])}}function A(e){return Math.round(9525*e)}function E(e,t){var n,i,o,r,a,s,l,c,d,u=e._source,p=e.index,f=u.cells,g=e.cells;if(f)for(n=0;n<f.length;n++)if(i=f[n]||pe,o=i.rowSpan||1,r=i.colSpan||1,a=I(g,i),s=h(p,a),1===o&&1===r&&(l=T(t.mergedCells,s),l&&(r=l.colSpan,o=l.rowSpan)),R(i,g,a,r),(o>1||r>1)&&S(t.mergedCells,s+":"+h(p+o-1,a+r-1)),o>1)for(c=p+1;c<p+o;c++)d=t.rowsByIndex[c],d||(d=t.rowsByIndex[c]={index:c,cells:[]},t.rowData.push(d)),R(i,d.cells,a-1,r+1)}function I(e,t){var n;return"number"==typeof t.index?(n=t.index,M(e,t,t.index)):n=F(e,t),n}function M(e,t,n){e[n]=t}function F(e,t){var n,i=e.length;for(n=0;n<e.length+1;n++)if(!e[n]){e[n]=t,i=n;break}return i}function R(e,t,n,i){var o,r;for(o=1;o<i;o++)r={borderTop:e.borderTop,borderRight:e.borderRight,borderBottom:e.borderBottom,borderLeft:e.borderLeft},M(t,r,n+o)}function P(e){return fe({ref:e.ref,columns:e.columns,generators:{custom:ge,dynamic:me,top:ve,value:_e}})}var z,B,L,H,N,O,V,W,U,q,j,G,$,Y,K,Q,X,J,Z,ee,te,ne,ie,oe,re,ae,se,le,ce,de,ue,he,pe,fe,ge,me,ve,_e;window.kendo.ooxml=window.kendo.ooxml||{},z=kendo.ooxml,B=e.map,L=z.createZip,H={toString:function(e){return e}},N=kendo.Class.extend({}),N.register=function(e){H=e},N.toString=function(e,t){return H.toString(e,t)},O=t(1900,0,-1),V="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",W="data:"+V+";base64,",U={compression:"DEFLATE",type:"base64"},q={compression:"DEFLATE",type:"blob"},j={compression:"DEFLATE",type:"arraybuffer"},G=JSON.parse.bind(JSON),$='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r',Y=$+'\n <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>\n <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>\n <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>\n </Relationships>',K=function(e){var t=e.creator,n=e.lastModifiedBy,i=e.created,o=e.modified;return $+'\n <cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"\n xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"\n xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n <dc:creator>'+s(t)+"</dc:creator>\n <cp:lastModifiedBy>"+s(n)+'</cp:lastModifiedBy>\n <dcterms:created xsi:type="dcterms:W3CDTF">'+s(i)+'</dcterms:created>\n <dcterms:modified xsi:type="dcterms:W3CDTF">'+s(o)+"</dcterms:modified>\n</cp:coreProperties>"},Q=function(e){var t=e.sheets;return $+'\n<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">\n <Application>Microsoft Excel</Application>\n <DocSecurity>0</DocSecurity>\n <ScaleCrop>false</ScaleCrop>\n <HeadingPairs>\n <vt:vector size="2" baseType="variant">\n <vt:variant>\n <vt:lpstr>Worksheets</vt:lpstr>\n </vt:variant>\n <vt:variant>\n <vt:i4>'+t.length+'</vt:i4>\n </vt:variant>\n </vt:vector>\n </HeadingPairs>\n <TitlesOfParts>\n <vt:vector size="'+t.length+'" baseType="lpstr">'+c(t,function(e,t){return e.options.title?"<vt:lpstr>"+s(e.options.title)+"</vt:lpstr>":"<vt:lpstr>Sheet"+(t+1)+"</vt:lpstr>"})+"</vt:vector>\n </TitlesOfParts>\n <LinksUpToDate>false</LinksUpToDate>\n <SharedDoc>false</SharedDoc>\n <HyperlinksChanged>false</HyperlinksChanged>\n <AppVersion>14.0300</AppVersion>\n</Properties>"},X=function(e){var t=e.sheetCount,n=e.commentFiles,i=e.drawingFiles;return $+'\n<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">\n <Default Extension="png" ContentType="image/png"/>\n <Default Extension="gif" ContentType="image/gif"/>\n <Default Extension="jpg" ContentType="image/jpeg"/>\n <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />\n <Default Extension="xml" ContentType="application/xml" />\n <Default Extension="vml" ContentType="application/vnd.openxmlformats-officedocument.vmlDrawing"/>\n <Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />\n <Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>\n <Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>\n '+l(t,function(e){return'<Override PartName="/xl/worksheets/sheet'+(e+1)+'.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />'})+"\n "+c(n,function(e){return'<Override PartName="/xl/'+e+'" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"/>'})+"\n "+c(i,function(e){return'<Override PartName="/xl/drawings/'+e+'" ContentType="application/vnd.openxmlformats-officedocument.drawing+xml"/>'})+'\n <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml" />\n <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" />\n</Types>'},J=function(e){var t=e.sheets,n=e.filterNames,i=e.userNames;return $+'\n<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">\n <fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="9303" />\n <workbookPr defaultThemeVersion="124226" />\n <bookViews>\n <workbookView xWindow="240" yWindow="45" windowWidth="18195" windowHeight="7995" />\n </bookViews>\n <sheets>\n '+c(t,function(e,t){var n=e.options,i=n.name||n.title||"Sheet"+(t+1);return'<sheet name="'+s(i)+'" sheetId="'+(t+1)+'" r:id="rId'+(t+1)+'" />'})+"\n </sheets>\n "+(n.length||i.length?"\n <definedNames>\n "+c(n,function(e){return'\n <definedName name="_xlnm._FilterDatabase" hidden="1" localSheetId="'+e.localSheetId+'">'+s(e.name)+"!"+s(e.from)+":"+s(e.to)+"</definedName>"})+"\n "+c(i,function(e){return'\n <definedName name="'+e.name+'" hidden="'+(e.hidden?1:0)+'" '+(null!=e.localSheetId?'localSheetId="'+e.localSheetId+'"':"")+">"+s(e.value)+"</definedName>"})+"\n </definedNames>":"")+'\n <calcPr fullCalcOnLoad="1" calcId="145621" />\n</workbook>'},Z=function(e){var t=e.frozenColumns,n=e.frozenRows,i=e.columns,o=e.defaults,r=e.data,a=e.index,l=e.mergeCells,u=e.autoFilter,h=e.filter,p=e.showGridLines,f=e.hyperlinks,v=e.validations,_=e.defaultCellStyleId,b=e.rtl,w=e.legacyDrawing,k=e.drawing,y=e.lastRow;return $+'\n<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" mc:Ignorable="x14ac">\n <dimension ref="A1:A'+y+'" />\n\n <sheetViews>\n <sheetView '+(b?'rightToLeft="1"':"")+" "+(0===a?'tabSelected="1"':"")+' workbookViewId="0" '+(p===!1?'showGridLines="0"':"")+">\n "+(n||t?'\n <pane state="frozen"\n '+(t?'xSplit="'+t+'"':"")+"\n "+(n?'ySplit="'+n+'"':"")+'\n topLeftCell="'+(String.fromCharCode(65+(t||0))+((n||0)+1))+'"\n />':"")+'\n </sheetView>\n </sheetViews>\n\n <sheetFormatPr x14ac:dyDescent="0.25" customHeight="1" defaultRowHeight="'+(o.rowHeight?.75*o.rowHeight:15)+'"\n '+(o.columnWidth?'defaultColWidth="'+g(o.columnWidth)+'"':"")+" />\n\n "+(null!=_||i&&i.length>0?"\n <cols>\n "+(i&&i.length?"":'\n <col min="1" max="16384" style="'+_+'"\n '+(o.columnWidth?'width="'+g(o.columnWidth)+'"':"")+" /> ")+"\n "+c(i,function(e,t){ +var n="number"==typeof e.index?e.index+1:t+1;return 0===e.width?"<col "+(null!=_?'style="'+_+'"':"")+'\n min="'+n+'" max="'+n+'" hidden="1" customWidth="1" />':"<col "+(null!=_?'style="'+_+'"':"")+'\n min="'+n+'" max="'+n+'" customWidth="1"\n '+(e.autoWidth?'width="'+(7*e.width+5)/7*256/256+'" bestFit="1"':'width="'+g(e.width)+'"')+" />"})+"\n </cols>":"")+"\n\n <sheetData>\n "+c(r,function(e,t){var n="number"==typeof e.index?e.index+1:t+1;return'\n <row r="'+n+'" x14ac:dyDescent="0.25"\n '+(e.level?'outlineLevel="'+e.level+'"':"")+"\n "+(0===e.height?'hidden="1"':e.height?'ht="'+m(e.height)+'" customHeight="1"':"")+">\n "+c(e.data,function(e){return'\n <c r="'+e.ref+'" '+(e.style?'s="'+e.style+'"':"")+" "+(e.type?'t="'+e.type+'"':"")+">\n "+(null!=e.formula?d(e.formula):"")+"\n "+(null!=e.value?"<v>"+s(e.value)+"</v>":"")+"\n </c>"})+"\n </row>\n "})+"\n </sheetData>\n\n "+(u?'<autoFilter ref="'+u.from+":"+u.to+'"/>':h?P(h):"")+"\n\n "+(l.length?'\n <mergeCells count="'+l.length+'">\n '+c(l,function(e){return'<mergeCell ref="'+e+'"/>'})+"\n </mergeCells>":"")+"\n\n "+(v.length?"\n <dataValidations>\n "+c(v,function(e){return'\n <dataValidation sqref="'+e.sqref.join(" ")+'"\n showErrorMessage="'+e.showErrorMessage+'"\n type="'+s(e.type)+'"\n '+("list"!==e.type?'operator="'+s(e.operator)+'"':"")+'\n allowBlank="'+e.allowBlank+'"\n showDropDown="'+e.showDropDown+'"\n '+(e.error?'error="'+s(e.error)+'"':"")+"\n "+(e.errorTitle?'errorTitle="'+s(e.errorTitle)+'"':"")+">\n "+(e.formula1?"<formula1>"+s(e.formula1)+"</formula1>":"")+"\n "+(e.formula2?"<formula2>"+s(e.formula2)+"</formula2>":"")+"\n </dataValidation>"})+"\n </dataValidations>":"")+"\n\n "+(f.length?"\n <hyperlinks>\n "+c(f,function(e){return'\n <hyperlink ref="'+e.ref+'" r:id="'+e.rId+'"/>'})+"\n </hyperlinks>":"")+'\n\n <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3" />\n '+(w?'<legacyDrawing r:id="'+w+'"/>':"")+"\n "+(k?'<drawing r:id="'+k+'"/>':"")+"\n</worksheet>"},ee=function(e){var t=e.count;return $+'\n<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n '+l(t,function(e){return'\n <Relationship Id="rId'+(e+1)+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet'+(e+1)+'.xml" />'})+'\n <Relationship Id="rId'+(t+1)+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml" />\n <Relationship Id="rId'+(t+2)+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml" />\n</Relationships>'},te=function(e){var t=e.hyperlinks,n=e.comments,i=e.sheetIndex,o=e.drawings;return $+'\n<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n '+c(t,function(e){return'\n <Relationship Id="'+e.rId+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="'+s(e.target)+'" TargetMode="External" />'})+"\n "+(n.length?'\n <Relationship Id="comment'+i+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" Target="../comments'+i+'.xml"/>\n <Relationship Id="vml'+i+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" Target="../drawings/vmlDrawing'+i+'.vml"/>':"")+"\n "+(o.length?'\n <Relationship Id="drw'+i+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing" Target="../drawings/drawing'+i+'.xml"/>':"")+"\n</Relationships>"},ne=function(e){var t=e.comments;return $+'\n<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">\n <authors>\n <author></author>\n </authors>\n <commentList>\n '+c(t,function(e){return'\n <comment ref="'+e.ref+'" authorId="0">\n <text>\n <r>\n <rPr>\n <sz val="8"/>\n <color indexed="81"/>\n <rFont val="Tahoma"/>\n <charset val="1"/>\n </rPr>\n <t>'+s(e.text)+"</t>\n </r>\n </text>\n </comment>"})+"\n </commentList>\n</comments>"},ie=function(e){var t=e.comments;return'<xml xmlns:v="urn:schemas-microsoft-com:vml"\n xmlns:o="urn:schemas-microsoft-com:office:office"\n xmlns:x="urn:schemas-microsoft-com:office:excel">\n <v:shapetype id="_x0000_t202" path="m,l,21600r21600,l21600,xe"></v:shapetype>\n '+c(t,function(e){return'\n <v:shape type="#_x0000_t202" style="visibility: hidden" fillcolor="#ffffe1" o:insetmode="auto">\n <v:shadow on="t" color="black" obscured="t"/>\n <x:ClientData ObjectType="Note">\n <x:MoveWithCells/>\n <x:SizeWithCells/>\n <x:Anchor>'+e.anchor+"</x:Anchor>\n <x:AutoFill>False</x:AutoFill>\n <x:Row>"+e.row+"</x:Row>\n <x:Column>"+e.col+"</x:Column>\n </x:ClientData>\n </v:shape>"})+"\n</xml>"},oe=function(e){return $+'\n<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"\n xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"\n xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">\n '+c(e,function(e,t){return'\n <xdr:oneCellAnchor editAs="oneCell">\n <xdr:from>\n <xdr:col>'+e.col+"</xdr:col>\n <xdr:colOff>"+e.colOffset+"</xdr:colOff>\n <xdr:row>"+e.row+"</xdr:row>\n <xdr:rowOff>"+e.rowOffset+'</xdr:rowOff>\n </xdr:from>\n <xdr:ext cx="'+e.width+'" cy="'+e.height+'" />\n <xdr:pic>\n <xdr:nvPicPr>\n <xdr:cNvPr id="'+(t+1)+'" name="Picture '+(t+1)+'"/>\n <xdr:cNvPicPr/>\n </xdr:nvPicPr>\n <xdr:blipFill>\n <a:blip r:embed="'+e.imageId+'"/>\n <a:stretch>\n <a:fillRect/>\n </a:stretch>\n </xdr:blipFill>\n <xdr:spPr>\n <a:prstGeom prst="rect">\n <a:avLst/>\n </a:prstGeom>\n </xdr:spPr>\n </xdr:pic>\n <xdr:clientData/>\n </xdr:oneCellAnchor>'})+"\n</xdr:wsDr>"},re=function(e){return $+'\n<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n '+c(e,function(e){return'\n <Relationship Id="'+e.rId+'" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="'+e.target+'"/>'})+"\n</Relationships>"},ae=function(e){var t=e.count,n=e.uniqueCount,i=e.indexes;return $+'\n<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="'+t+'" uniqueCount="'+n+'">\n '+c(Object.keys(i),function(e){return'\n <si><t xml:space="preserve">'+s(e.substring(1))+"</t></si>"})+"\n</sst>"},se=function(e){var t=e.formats,n=e.fonts,i=e.fills,o=e.borders,r=e.styles;return $+'\n<styleSheet\n xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"\n xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"\n mc:Ignorable="x14ac"\n xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">\n <numFmts count="'+t.length+'">\n '+c(t,function(e,t){return'\n <numFmt formatCode="'+s(e.format)+'" numFmtId="'+(165+t)+'" />'})+'\n </numFmts>\n <fonts count="'+(n.length+1)+'" x14ac:knownFonts="1">\n <font>\n <sz val="11" />\n <color theme="1" />\n <name val="Calibri" />\n <family val="2" />\n <scheme val="minor" />\n </font>\n '+c(n,function(e){return'\n <font>\n <sz val="'+(e.fontSize||11)+'" />\n '+(e.bold?"<b/>":"")+"\n "+(e.italic?"<i/>":"")+"\n "+(e.underline?"<u/>":"")+"\n "+(e.color?'<color rgb="'+s(e.color)+'" />':'<color theme="1" />')+"\n "+(e.fontFamily?'\n <name val="'+s(e.fontFamily)+'" />\n <family val="2" />\n ':'\n <name val="Calibri" />\n <family val="2" />\n <scheme val="minor" />\n ')+"\n </font>"})+'\n </fonts>\n <fills count="'+(i.length+2)+'">\n <fill><patternFill patternType="none"/></fill>\n <fill><patternFill patternType="gray125"/></fill>\n '+c(i,function(e){return"\n "+(e.background?'\n <fill>\n <patternFill patternType="solid">\n <fgColor rgb="'+s(e.background)+'"/>\n </patternFill>\n </fill>\n ':"")})+'\n </fills>\n <borders count="'+(o.length+1)+'">\n <border><left/><right/><top/><bottom/><diagonal/></border>\n '+c(o,k)+'\n </borders>\n <cellStyleXfs count="1">\n <xf borderId="0" fillId="0" fontId="0" />\n </cellStyleXfs>\n <cellXfs count="'+(r.length+1)+'">\n <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" />\n '+c(r,function(e){return'\n <xf xfId="0"\n '+(e.fontId?'fontId="'+e.fontId+'" applyFont="1"':"")+"\n "+(e.fillId?'fillId="'+e.fillId+'" applyFill="1"':"")+"\n "+(e.numFmtId?'numFmtId="'+e.numFmtId+'" applyNumberFormat="1"':"")+"\n "+(e.textAlign||e.verticalAlign||e.wrap?'applyAlignment="1"':"")+"\n "+(e.borderId?'borderId="'+e.borderId+'" applyBorder="1"':"")+">\n "+(e.textAlign||e.verticalAlign||e.wrap?"\n <alignment\n "+(e.textAlign?'horizontal="'+s(e.textAlign)+'"':"")+"\n "+(e.verticalAlign?'vertical="'+s(e.verticalAlign)+'"':"")+"\n "+(e.indent?'indent="'+s(e.indent)+'"':"")+"\n "+(e.wrap?'wrapText="1"':"")+" />\n ":"")+"\n </xf>\n "})+'\n </cellXfs>\n <cellStyles count="1">\n <cellStyle name="Normal" xfId="0" builtinId="0"/>\n </cellStyles>\n <dxfs count="0" />\n <tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleMedium9" />\n</styleSheet>'},le=kendo.Class.extend({init:function(t,n,i,o){this.options=t,this._strings=n,this._styles=i,this._borders=o,this._validations={},this._comments=[],this._drawings=t.drawings||[],this._hyperlinks=(this.options.hyperlinks||[]).map(function(t,n){return e.extend({},t,{rId:"link"+n})})},relsToXML:function(){var e=this._hyperlinks,t=this._comments,n=this._drawings;if(e.length||t.length||n.length)return te({hyperlinks:e,comments:t,sheetIndex:this.options.sheetIndex,drawings:n})},toXML:function(e){var t,n,i,o,r,a,s,l,c=this,d=this.options.mergedCells||[],u=this.options.rows||[],p=y(u,d);this._readCells(p),t=this.options.filter,t&&"number"==typeof t.from&&"number"==typeof t.to?t={from:h(f(this.options),t.from),to:h(f(this.options),t.to)}:t&&t.ref&&t.columns&&(n=t,t=null),i=[];for(o in this._validations)Object.prototype.hasOwnProperty.call(c._validations,o)&&i.push(c._validations[o]);return r=null,this.options.defaultCellStyle&&(r=this._lookupStyle(this.options.defaultCellStyle)),a=this.options.freezePane||{},s=this.options.defaults||{},l=this.options.rows?this._getLastRow():1,Z({frozenColumns:this.options.frozenColumns||a.colSplit,frozenRows:this.options.frozenRows||a.rowSplit,columns:this.options.columns,defaults:s,data:p,index:e,mergeCells:d,autoFilter:t,filter:n,showGridLines:this.options.showGridLines,hyperlinks:this._hyperlinks,validations:i,defaultCellStyleId:r,rtl:void 0!==this.options.rtl?this.options.rtl:s.rtl,legacyDrawing:this._comments.length?"vml"+this.options.sheetIndex:null,drawing:this._drawings.length?"drw"+this.options.sheetIndex:null,lastRow:l})},commentsXML:function(){if(this._comments.length)return ne({comments:this._comments})},drawingsXML:function(e){var t,n;if(this._drawings.length)return t={},n=this._drawings.map(function(n){var i=D(n.topLeftCell),o=t[n.image];return o||(o=t[n.image]={rId:"img"+n.image,target:e[n.image].target}),{col:i.col,colOffset:A(n.offsetX),row:i.row,rowOffset:A(n.offsetY),width:A(n.width),height:A(n.height),imageId:o.rId}}),{main:oe(n),rels:re(t)}},legacyDrawing:function(){if(this._comments.length)return ie({comments:this._comments})},_lookupString:function(e){var t,n="$"+e,i=this._strings.indexes[n];return void 0!==i?t=i:(t=this._strings.indexes[n]=this._strings.uniqueCount,this._strings.uniqueCount++),this._strings.count++,t},_lookupStyle:function(e){var t,n=JSON.stringify(e);return"{}"===n?0:(t=a(n,this._styles),t<0&&(t=this._styles.push(n)-1),t+1)},_lookupBorder:function(e){var t,n=JSON.stringify(e);if("{}"!==n)return t=a(n,this._borders),t<0&&(t=this._borders.push(n)-1),t+1},_readCells:function(e){var t,n,i,o,r,a=this;for(t=0;t<e.length;t++)for(n=e[t],i=n.cells,n.data=[],o=0;o<i.length;o++)r=a._cell(i[o],n.index,o),r&&n.data.push(r)},_cell:function(e,t,n){var i,r,a,s,l,c,d,u,p,f;return e&&e!==pe?(i=e.value,r={},e.borderLeft&&(r.left=e.borderLeft),e.borderRight&&(r.right=e.borderRight),e.borderTop&&(r.top=e.borderTop),e.borderBottom&&(r.bottom=e.borderBottom),r=this._lookupBorder(r),a=this.options.defaultCellStyle||{},s={borderId:r},function(e){e("color"),e("background"),e("bold"),e("italic"),e("underline"),e("fontFamily")||e("fontName","fontFamily"),e("fontSize"),e("format"),e("textAlign")||e("hAlign","textAlign"),e("verticalAlign")||e("vAlign","verticalAlign"),e("wrap"),e("indent")}(function(t,n){var i=e[t];if(void 0===i&&(i=a[t]),void 0!==i)return s[n||t]=i,!0}),l=this.options.columns||[],c=l[n],d=typeof i,c&&c.autoWidth&&(u=i,"number"===d&&(u=N.toString(i,e.format)),c.width=Math.max(c.width||0,(u+"").length)),"string"===d?(i=v(i),i=this._lookupString(i),d="s"):"number"===d?d="n":"boolean"===d?(d="b",i=+i):i&&i.getTime?(d=null,i=o(i),s.format||(s.format="mm-dd-yy")):(d=null,i=null),s=this._lookupStyle(s),p=h(t,n),e.validation&&this._addValidation(e.validation,p),e.comment&&(f=[n+1,15,t,10,n+3,15,t+3,4],this._comments.push({ref:p,text:e.comment,row:t,col:n,anchor:f.join(", ")})),{value:i,formula:e.formula,type:d,style:s,ref:p}):null},_addValidation:function(e,t){var n={showErrorMessage:"reject"===e.type?1:0,formula1:e.from,formula2:e.to,type:de[e.dataType]||e.dataType,operator:ce[e.comparerType]||e.comparerType,allowBlank:e.allowNulls?1:0,showDropDown:e.showButton?0:1,error:e.messageTemplate,errorTitle:e.titleTemplate},i=JSON.stringify(n);this._validations[i]||(this._validations[i]=n,n.sqref=[]),this._validations[i].sqref.push(t)},_getLastRow:function(){var e=this.options.rows,t=e.length;return e.forEach(function(e){e.index&&e.index>=t&&(t=e.index+1)}),t}}),ce={greaterThanOrEqualTo:"greaterThanOrEqual",lessThanOrEqualTo:"lessThanOrEqual"},de={number:"decimal"},ue={General:0,0:1,"0.00":2,"#,##0":3,"#,##0.00":4,"0%":9,"0.00%":10,"0.00E+00":11,"# ?/?":12,"# ??/??":13,"mm-dd-yy":14,"d-mmm-yy":15,"d-mmm":16,"mmm-yy":17,"h:mm AM/PM":18,"h:mm:ss AM/PM":19,"h:mm":20,"h:mm:ss":21,"m/d/yy h:mm":22,"#,##0 ;(#,##0)":37,"#,##0 ;[Red](#,##0)":38,"#,##0.00;(#,##0.00)":39,"#,##0.00;[Red](#,##0.00)":40,"mm:ss":45,"[h]:mm:ss":46,"mmss.0":47,"##0.0E+0":48,"@":49,"[$-404]e/m/d":27,"m/d/yy":30,t0:59,"t0.00":60,"t#,##0":61,"t#,##0.00":62,"t0%":67,"t0.00%":68,"t# ?/?":69,"t# ??/??":70},he=kendo.Class.extend({init:function(e){var t=this;this.options=e||{},this._strings={indexes:{},count:0,uniqueCount:0},this._styles=[],this._borders=[],this._images=this.options.images,this._imgId=0,this._sheets=B(this.options.sheets||[],function(e,n){return e.defaults=t.options,e.sheetIndex=n+1,new le(e,t._strings,t._styles,t._borders)})},imageFilename:function(e){var t=++this._imgId;switch(e){case"image/jpg":case"image/jpeg":return"image"+t+".jpg";case"image/png":return"image"+t+".png";case"image/gif":return"image"+t+".gif";default:return"image"+t+".bin"}},toZIP:function(){var e,t,n,i,o,r,s,l,c,d,u,h,g,m,v,b,w,k,y,x,C,S,T,A,E,I,M,F,R,P=this,z=L(),H=z.folder("docProps");for(H.file("core.xml",K({creator:this.options.creator||"Kendo UI",lastModifiedBy:this.options.creator||"Kendo UI",created:this.options.date||(new Date).toJSON(),modified:this.options.date||(new Date).toJSON()})),e=this._sheets.length,H.file("app.xml",Q({sheets:this._sheets})),t=z.folder("_rels"),t.file(".rels",Y),n=z.folder("xl"),i=n.folder("_rels"),i.file("workbook.xml.rels",ee({count:e})),this._images&&(o=n.folder("media"),Object.keys(this._images).forEach(function(e){var t=P._images[e],n=P.imageFilename(t.type);o.file(n,t.data),t.target="../media/"+n})),r={},n.file("workbook.xml",J({sheets:this._sheets,filterNames:B(this._sheets,function(e,t){var n,i,o,a,s=e.options,l=s.name||s.title||"Sheet"+(t+1);if(r[l.toLowerCase()]=t,n=s.filter){if(n.ref)return i=n.ref.split(":"),o=D(i[0]),a=D(i[1]),{localSheetId:t,name:l,from:p(o.row,o.col),to:p(a.row,a.col)};if(void 0!==n.from&&void 0!==n.to)return{localSheetId:t,name:l,from:p(f(s),n.from),to:p(f(s),n.to)}}}),userNames:B(this.options.names||[],function(e){return{name:e.localName,localSheetId:e.sheet?r[e.sheet.toLowerCase()]:null,value:e.value,hidden:e.hidden}})})),s=n.folder("worksheets"),l=n.folder("drawings"),c=l.folder("_rels"),d=s.folder("_rels"),u=[],h=[],g=0;g<e;g++)m=P._sheets[g],v="sheet"+(g+1)+".xml",b=m.toXML(g),w=m.relsToXML(),k=m.commentsXML(),y=m.legacyDrawing(),x=m.drawingsXML(P._images),w&&d.file(v+".rels",w),k&&(C="comments"+m.options.sheetIndex+".xml",n.file(C,k),u.push(C)),y&&l.file("vmlDrawing"+m.options.sheetIndex+".vml",y),x&&(S="drawing"+m.options.sheetIndex+".xml",l.file(S,x.main),c.file(S+".rels",x.rels),h.push(S)),s.file(v,b);return T=B(this._borders,G),A=B(this._styles,G),E=function(e){return e.underline||e.bold||e.italic||e.color||e.fontFamily||e.fontSize},I=function(e){var t,n=+e;return n&&(t=3*n/4),t},M=B(A,function(e){if(e.fontSize&&(e.fontSize=I(e.fontSize)),e.color&&(e.color=_(e.color)),E(e))return e}),F=B(A,function(e){if(e.format&&void 0===ue[e.format])return e}),R=B(A,function(e){if(e.background)return e.background=_(e.background),e}),n.file("styles.xml",se({fonts:M,fills:R,formats:F,borders:T,styles:B(A,function(e){var t={};return E(e)&&(t.fontId=a(e,M)+1),e.background&&(t.fillId=a(e,R)+2),t.textAlign=e.textAlign,t.indent=e.indent,t.verticalAlign=e.verticalAlign,t.wrap=e.wrap,t.borderId=e.borderId,e.format&&(t.numFmtId=void 0!==ue[e.format]?ue[e.format]:165+a(e,F)),t})})),n.file("sharedStrings.xml",ae(this._strings)),z.file("[Content_Types].xml",X({sheetCount:e,commentFiles:u,drawingFiles:h})),z},toDataURL:function(){var e=this.toZIP();return e.generateAsync?e.generateAsync(U).then(r):r(e.generate(U))},toBlob:function(){var e=this.toZIP();return e.generateAsync?e.generateAsync(q):new Blob([e.generate(j)],{type:V})}}),pe={},fe=function(e){var t=e.ref,n=e.columns,i=e.generators;return'\n<autoFilter ref="'+t+'">\n '+c(n,function(e){return'\n <filterColumn colId="'+e.index+'">\n '+i[e.filter](e)+"\n </filterColumn>\n "})+"\n</autoFilter>"},ge=function(e){var t=e.logic,n=e.criteria;return"\n<customFilters "+("and"===t?'and="1"':"")+">\n"+c(n,function(e){var t=P.customOperator(e),n=P.customValue(e);return"<customFilter "+(t?'operator="'+t+'"':"")+' val="'+n+'"/>'})+"\n</customFilters>"},me=function(e){var t=e.type;return'<dynamicFilter type="'+P.dynamicFilterType(t)+'" />'},ve=function(e){var t=e.type,n=e.value;return'<top10 percent="'+(/percent$/i.test(t)?1:0)+'"\n top="'+(/^top/i.test(t)?1:0)+'"\n val="'+n+'" />'},_e=function(e){var t=e.blanks,n=e.values;return"<filters "+(t?'blank="1"':"")+">\n "+c(n,function(e){return'\n <filter val="'+e+'" />'})+"\n </filters>"},P.customOperator=function(e){return{eq:"equal",gt:"greaterThan",gte:"greaterThanOrEqual",lt:"lessThan",lte:"lessThanOrEqual",ne:"notEqual",doesnotstartwith:"notEqual",doesnotendwith:"notEqual",doesnotcontain:"notEqual",doesnotmatch:"notEqual"}[e.operator.toLowerCase()]},P.customValue=function(e){function t(e){return e.replace(/([*?])/g,"~$1")}switch(e.operator.toLowerCase()){case"startswith":case"doesnotstartwith":return t(e.value)+"*";case"endswith":case"doesnotendwith":return"*"+t(e.value);case"contains":case"doesnotcontain":return"*"+t(e.value)+"*";default:return e.value}},P.dynamicFilterType=function(e){return{quarter1:"Q1",quarter2:"Q2",quarter3:"Q3",quarter4:"Q4",january:"M1",february:"M2",march:"M3",april:"M4",may:"M5",june:"M6",july:"M7",august:"M8",september:"M9",october:"M10",november:"M11",december:"M12"}[e.toLowerCase()]||e},kendo.deepExtend(kendo.ooxml,{IntlService:N,Workbook:he,Worksheet:le})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("ooxml/main.min",["kendo.core.min","ooxml/kendo-ooxml.min"],e)}(function(){!function(e){var t=kendo.ooxml.Workbook;kendo.ooxml.IntlService.register({toString:kendo.toString}),kendo.ooxml.Workbook=t.extend({toDataURL:function(){var e=t.fn.toDataURL.call(this);if("string"!=typeof e)throw Error("The toDataURL method can be used only with jsZip 2. Either include jsZip 2 or use the toDataURLAsync method.");return e},toDataURLAsync:function(){var n=e.Deferred(),i=t.fn.toDataURL.call(this);return"string"==typeof i?i=n.resolve(i):i&&i.then&&i.then(function(e){n.resolve(e)},function(){n.reject()}),n.promise()}})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.ooxml.min",["ooxml/main.min"],e)}(function(){},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("excel/kendo-excel.min",["kendo.core.min"],e)}(function(){!function(e){function t(e){return e.title+": "+e.value}function n(e,t){var n,i=[];for(n=0;n<e;n++)i.push(t(n));return i}var i,o,r,a,s;window.kendo.excel=window.kendo.excel||{},i=kendo.getter,o=e.map,r={compile:function(e){return e}},a=kendo.Class.extend({}),a.register=function(e){r=e},a.compile=function(e){return r.compile(e)},s=kendo.Class.extend({init:function(e){e.columns=this._trimColumns(e.columns||[]),this.allColumns=o(this._leafColumns(e.columns||[]),this._prepareColumn),this.columns=this.allColumns.filter(function(e){return!e.hidden}),this.options=e,this.data=e.data||[],this.aggregates=e.aggregates||{},this.groups=[].concat(e.groups||[]),this.hierarchy=e.hierarchy},workbook:function(){var e={sheets:[{columns:this._columns(),rows:this.hierarchy?this._hierarchyRows():this._rows(),freezePane:this._freezePane(),filter:this._filter()}]};return e},_trimColumns:function(e){var t=this;return e.filter(function(e){var n=!!e.field;return!n&&e.columns&&(n=t._trimColumns(e.columns).length>0),n})},_leafColumns:function(e){var t,n=this,i=[];for(t=0;t<e.length;t++)e[t].columns?i=i.concat(n._leafColumns(e[t].columns)):i.push(e[t]);return i},_prepareColumn:function(n){var o,r;return n.field?(o=function(e){return i(n.field,!0)(e)},r=null,n.values&&(r={},n.values.forEach(function(e){r[e.value]=e.text}),o=function(e){return r[i(n.field,!0)(e)]}),e.extend({},n,{value:o,values:r,groupHeaderTemplate:n.groupHeaderTemplate?a.compile(n.groupHeaderTemplate):t,groupFooterTemplate:n.groupFooterTemplate?a.compile(n.groupFooterTemplate):null,footerTemplate:n.footerTemplate?a.compile(n.footerTemplate):null})):null},_filter:function(){if(!this.options.filterable)return null;var e=this._depth();return{from:e,to:e+this.columns.length-1}},_createPaddingCells:function(t){var i=this;return n(t,function(){return e.extend({background:"#dfdfdf",color:"#333"},i.options.paddingCellOptions)})},_dataRow:function(t,n,i){var o,r,a,s,l,c,d,u,h=this,p=this._createPaddingCells(n);if(i&&t.items)return o=this.allColumns.filter(function(e){return e.field===t.field})[0],r=o&&o.title?o.title:t.field,a=o?o.groupHeaderTemplate:null,s=e.extend({title:r,field:t.field,value:o&&o.values?o.values[t.value]:t.value,aggregates:t.aggregates,items:t.items},t.aggregates[t.field]),l=r+": "+t.value,a&&(l=a(s)),p.push(e.extend({value:l,background:"#dfdfdf",color:"#333",colSpan:this.columns.length+i-n},(o||{}).groupHeaderCellOptions)),c=this._dataRows(t.items,n+1),c.unshift({type:"group-header",cells:p,level:this.options.collapsible?n:null}),c.concat(this._footer(t,n));for(d=[],u=0;u<this.columns.length;u++)d[u]=h._cell(t,h.columns[u]);return this.hierarchy&&(d[0].colSpan=i-n+1),[{type:"data",cells:p.concat(d),level:this.options.collapsible?n:null}]},_dataRows:function(e,t){var n,i=this,o=this._depth(),r=[];for(n=0;n<e.length;n++)r.push.apply(r,i._dataRow(e[n],t,o));return r},_hierarchyRows:function(){var e,t,n,i,o,r=this,a=this._depth(),s=this.data,l=this.hierarchy.itemLevel,c=this._hasFooterTemplate(),d=[],u=[],h=0;for(t=0;t<s.length;t++)n=s[t],i=l(n),c&&(i>h?u.push({id:e,level:h}):i<h&&d.push.apply(d,r._hierarchyFooterRows(u,i,a)),h=i,e=n.id),d.push.apply(d,r._dataRow(n,i+1,a));return c&&(d.push.apply(d,this._hierarchyFooterRows(u,0,a)),o=s.length?this.aggregates[s[0].parentId]:{},d.push(this._hierarchyFooter(o,0,a))),this._prependHeaderRows(d),d},_hierarchyFooterRows:function(e,t,n){for(var i,o=this,r=[];e.length&&e[e.length-1].level>=t;)i=e.pop(),r.push(o._hierarchyFooter(o.aggregates[i.id],i.level+1,n));return r},_hasFooterTemplate:function(){var e,t=this.columns;for(e=0;e<t.length;e++)if(t[e].footerTemplate)return!0},_hierarchyFooter:function(t,n,i){var o=this.columns.map(function(o,r){var a=r?1:i-n+1;return o.footerTemplate?e.extend({background:"#dfdfdf",color:"#333",colSpan:a,value:o.footerTemplate(e.extend({},(t||{})[o.field]))},o.footerCellOptions):e.extend({background:"#dfdfdf",color:"#333",colSpan:a},o.footerCellOptions)});return{type:"footer",cells:this._createPaddingCells(n).concat(o)}},_footer:function(t,n){var i,o,r,a=[],s=this.columns.some(function(e){return e.groupFooterTemplate});return s&&(o={group:{items:t.items,field:t.field,value:t.value}},i={},Object.keys(t.aggregates).forEach(function(n){i[n]=e.extend({},t.aggregates[n],o)})),r=this.columns.map(function(n){if(n.groupFooterTemplate){var r=e.extend({},i,t.aggregates[n.field],o);return e.extend({background:"#dfdfdf",color:"#333",value:n.groupFooterTemplate(r)},n.groupFooterCellOptions)}return e.extend({background:"#dfdfdf",color:"#333"},n.groupFooterCellOptions)}),s&&a.push({type:"group-footer",cells:this._createPaddingCells(this.groups.length).concat(r),level:this.options.collapsible?n:null}),a},_isColumnVisible:function(e){return this._visibleColumns([e]).length>0&&(e.field||e.columns)},_visibleColumns:function(e){var t=this;return e.filter(function(e){var n=!e.hidden;return n&&e.columns&&(n=t._visibleColumns(e.columns).length>0),n})},_headerRow:function(t,i){var o=this,r=t.cells.map(function(n){return e.extend(n,{colSpan:n.colSpan>1?n.colSpan:1,rowSpan:t.rowSpan>1&&!n.colSpan?t.rowSpan:1})});return this.hierarchy&&(r[0].colSpan=this._depth()+1),{type:"header",cells:n(i.length,function(){return e.extend({background:"#7a7a7a",color:"#fff"},o.options.headerPaddingCellOptions)}).concat(r)}},_prependHeaderRows:function(e){var t,n=this,i=this.groups,o=[{rowSpan:1,cells:[],index:0}];for(this._prepareHeaderRows(o,this.options.columns),t=o.length-1;t>=0;t--)e.unshift(n._headerRow(o[t],i))},_prepareHeaderRows:function(t,n,i,o){var r,a,s,l=this,c=o||t[t.length-1],d=t[c.index+1],u=0;for(r=0;r<n.length;r++)a=n[r],l._isColumnVisible(a)&&(s=e.extend({background:"#7a7a7a",color:"#fff",value:a.title||a.field,colSpan:0},a.headerCellOptions),c.cells.push(s),a.columns&&a.columns.length&&(d||(d={rowSpan:0,cells:[],index:t.length},t.push(d)),s.colSpan=l._trimColumns(l._visibleColumns(a.columns)).length,l._prepareHeaderRows(t,a.columns,s,d),u+=s.colSpan-1,c.rowSpan=t.length-c.index));i&&(i.colSpan+=u)},_rows:function(){var t,n,i=this,o=this._dataRows(this.data,0);return this.columns.length&&(this._prependHeaderRows(o),t=!1,n=this.columns.map(function(n){return n.footerTemplate?(t=!0,e.extend({background:"#dfdfdf",color:"#333",value:n.footerTemplate(e.extend({},i.aggregates,i.aggregates[n.field]))},n.footerCellOptions)):e.extend({background:"#dfdfdf",color:"#333"},n.footerCellOptions)}),t&&o.push({type:"footer",cells:this._createPaddingCells(this.groups.length).concat(n)})),o},_headerDepth:function(e){var t,n,i=this,o=1,r=0;for(t=0;t<e.length;t++)e[t].columns&&(n=i._headerDepth(e[t].columns),n>r&&(r=n));return o+r},_freezePane:function(){var e=this._visibleColumns(this.options.columns||[]),t=this._visibleColumns(this._trimColumns(this._leafColumns(e.filter(function(e){return e.locked})))).length;return{rowSplit:this._headerDepth(e),colSplit:t?t+this.groups.length:0}},_cell:function(t,n){return e.extend({value:n.value(t)},n.cellOptions)},_depth:function(){var e=0;return e=this.hierarchy?this.hierarchy.depth:this.groups.length},_columns:function(){var e=this._depth(),t=n(e,function(){return{width:20}});return t.concat(this.columns.map(function(e){return{width:parseInt(e.width,10),autoWidth:!e.width}}))}}),kendo.deepExtend(kendo.excel,{ExcelExporter:s,TemplateService:a})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("excel/main.min",["kendo.core.min","kendo.data.min","excel/kendo-excel.min"],e)}(function(){return function(e,t){var n=t.excel.ExcelExporter,i=e.extend;t.excel.TemplateService.register({compile:t.template}),t.ExcelExporter=t.Class.extend({init:function(e){var n,o,r,a;if(this.options=e,n=e.dataSource,n instanceof t.data.DataSource){if(n.filter()||(n.options.filter=void 0),this.dataSource=new n.constructor(i({},n.options,{page:e.allPages?0:n.page(),filter:n.filter(),pageSize:e.allPages?n.total():n.pageSize()||n.total(),sort:n.sort(),group:n.group(),aggregate:n.aggregate()})),o=n.data(),o.length>0){if(e.hierarchy)for(r=0;r<o.length;r++)o[r].expanded!==!1&&void 0!==o[r].expanded||(o[r].expanded=!0);this.dataSource._data=o,a=this.dataSource.transport,n._isServerGrouped()&&a.options&&a.options.data&&(a.options.data=null)}}else this.dataSource=t.data.DataSource.create(n)},_hierarchy:function(){var e,t,n,i,o=this.options.hierarchy,r=this.dataSource;if(o&&r.level){for(o={itemLevel:function(e){return r.level(e)}},e=r.view(),t=0,i=0;i<e.length;i++)n=r.level(e[i]),n>t&&(t=n);o.depth=t+1}else o=!1;return{hierarchy:o}},workbook:function(){return e.Deferred(e.proxy(function(t){this.dataSource.fetch().then(e.proxy(function(){var e=new n(i({},this.options,this._hierarchy(),{data:this.dataSource.view(),groups:this.dataSource.group(),aggregates:this.dataSource.aggregates()})).workbook();t.resolve(e,this.dataSource.view())},this))},this)).promise()}})}(kendo.jQuery,kendo),kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("excel/mixins.min",["excel/main.min","kendo.ooxml.min"],e)}(function(){return function(e,t){t.ExcelMixin={extend:function(t){t.events.push("excelExport"),t.options.excel=e.extend(t.options.excel,this.options),t.saveAsExcel=this.saveAsExcel},options:{proxyURL:"",allPages:!1,filterable:!1,fileName:"Export.xlsx",collapsible:!1},saveAsExcel:function(){var n=this.options.excel||{},i=new t.ExcelExporter({columns:this.columns,dataSource:this.dataSource,allPages:n.allPages,filterable:n.filterable,hierarchy:n.hierarchy,collapsible:n.collapsible});i.workbook().then(e.proxy(function(e,i){if(!this.trigger("excelExport",{workbook:e,data:i})){var o=new t.ooxml.Workbook(e);o.toDataURLAsync().then(function(i){t.saveAs({dataURI:i,fileName:e.fileName||n.fileName,proxyURL:n.proxyURL,forceProxy:n.forceProxy})})}},this))}}}(kendo.jQuery,kendo),kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.excel.min",["excel/main.min","excel/mixins.min"],e)}(function(){},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.data.signalr.min",["kendo.data.min"],e)}(function(){return function(e){function t(e){return e&&o(e.done)&&o(e.fail)}function n(e){return e&&o(e.then)&&o(e["catch"])}var i=window.kendo,o=i.isFunction,r=i.data.RemoteTransport.extend({init:function(e){var o,r=e&&e.signalr?e.signalr:{},a=r.promise;if(!a)throw Error('The "promise" option must be set.');if(!t(a)&&!n(a))throw Error('The "promise" option must be a Promise.');if(this.promise=a,o=r.hub,!o)throw Error('The "hub" option must be set.'); +if("function"!=typeof o.on||"function"!=typeof o.invoke)throw Error('The "hub" option is not a valid SignalR hub proxy.');this.hub=o,i.data.RemoteTransport.fn.init.call(this,e)},push:function(e){var t=this.options.signalr.client||{};t.create&&this.hub.on(t.create,e.pushCreate),t.update&&this.hub.on(t.update,e.pushUpdate),t.destroy&&this.hub.on(t.destroy,e.pushDestroy)},_crud:function(o,r){var a,s,l=this.hub,c=this.promise,d=this.options.signalr.server;if(!d||!d[r])throw Error(i.format('The "server.{0}" option must be set.',r));a=[d[r]],s=this.parameterMap(o.data,r),e.isEmptyObject(s)||a.push(s),t(c)?c.done(function(){l.invoke.apply(l,a).done(o.success).fail(o.error)}):n(c)&&c.then(function(){l.invoke.apply(l,a).then(o.success)["catch"](o.error)})},read:function(e){this._crud(e,"read")},create:function(e){this._crud(e,"create")},update:function(e){this._crud(e,"update")},destroy:function(e){this._crud(e,"destroy")}});e.extend(!0,i.data,{transports:{signalr:r}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("drawing/util.min",["kendo.core.min"],e)}(function(){return function(e){function t(){return e.Deferred()}function n(t){return e.when.apply(e,t)}kendo.drawing.util=kendo.drawing.util||{},kendo.deepExtend(kendo.drawing.util,{createPromise:t,promiseAll:n})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.color.min",["kendo.core.min"],e)}(function(){function e(e,t,n){void 0===n&&(n="0");for(var i=e.toString(16);t>i.length;)i=n+i;return i}function t(e,t,n){var i=n;return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e}function n(e,t){var i,o,a;if(null==e||"none"===e)return null;if(e instanceof l)return e;if(a=e.toLowerCase(),i=s(a))return a="transparent"===i[1]?new c(1,1,1,0):n(r[i[1]],t),a.match=[i[1]],a;if((i=/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\b/i.exec(a))?o=new d(parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16),1):(i=/^#?([0-9a-f])([0-9a-f])([0-9a-f])\b/i.exec(a))?o=new d(parseInt(i[1]+i[1],16),parseInt(i[2]+i[2],16),parseInt(i[3]+i[3],16),1):(i=/^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/.exec(a))?o=new d(parseInt(i[1],10),parseInt(i[2],10),parseInt(i[3],10),1):(i=/^rgba\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9.]+)\s*\)/.exec(a))?o=new d(parseInt(i[1],10),parseInt(i[2],10),parseInt(i[3],10),parseFloat(i[4])):(i=/^rgb\(\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9]*\.?[0-9]+)%\s*\)/.exec(a))?o=new c(parseFloat(i[1])/100,parseFloat(i[2])/100,parseFloat(i[3])/100,1):(i=/^rgba\(\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9.]+)\s*\)/.exec(a))&&(o=new c(parseFloat(i[1])/100,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(i[4]))),o)o.match=i;else if(!t)throw Error("Cannot parse color: "+a);return o}var i,o,r,a,s,l,c,d,u,h,p;window.kendo=window.kendo||{},i=kendo.Class,o=kendo.support,r={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgrey:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",grey:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"778899",lightslategrey:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"},a=o.browser,s=function(e){var t,n=Object.keys(r);return n.push("transparent"),t=RegExp("^("+n.join("|")+")(\\W|$)","i"),s=function(e){return t.exec(e)},t.exec(e)},l=i.extend({init:function(){},toHSV:function(){return this},toRGB:function(){return this},toHex:function(){return this.toBytes().toHex()},toBytes:function(){return this},toCss:function(){return"#"+this.toHex()},toCssRgba:function(){var e=this.toBytes();return"rgba("+e.r+", "+e.g+", "+e.b+", "+parseFloat((+this.a).toFixed(3))+")"},toDisplay:function(){return a.msie&&a.version<9?this.toCss():this.toCssRgba()},equals:function(e){return e===this||null!==e&&this.toCssRgba()===n(e).toCssRgba()},diff:function(e){var t,n;return null===e?NaN:(t=this.toBytes(),n=e.toBytes(),Math.sqrt(Math.pow(.3*(t.r-n.r),2)+Math.pow(.59*(t.g-n.g),2)+Math.pow(.11*(t.b-n.b),2)))},clone:function(){var e=this.toBytes();return e===this&&(e=new d(e.r,e.g,e.b,e.a)),e}}),c=l.extend({init:function(e,t,n,i){l.fn.init.call(this),this.r=e,this.g=t,this.b=n,this.a=i},toHSV:function(){var e,t,n=this,i=n.r,o=n.g,r=n.b,a=Math.min(i,o,r),s=Math.max(i,o,r),l=s-a,c=s;return 0===l?new u(0,0,c,this.a):(0!==s?(t=l/s,e=i===s?(o-r)/l:o===s?2+(r-i)/l:4+(i-o)/l,e*=60,e<0&&(e+=360)):(t=0,e=-1),new u(e,t,c,this.a))},toHSL:function(){var e,t,n,i=this,o=i.r,r=i.g,a=i.b,s=Math.max(o,r,a),l=Math.min(o,r,a),c=(s+l)/2;if(s===l)e=t=0;else switch(n=s-l,t=c>.5?n/(2-s-l):n/(s+l),s){case o:e=(r-a)/n+(r<a?6:0);break;case r:e=(a-o)/n+2;break;case a:e=(o-r)/n+4}return new h(60*e,100*t,100*c,this.a)},toBytes:function(){return new d(255*this.r,255*this.g,255*this.b,this.a)}}),d=c.extend({init:function(e,t,n,i){c.fn.init.call(this,Math.round(e),Math.round(t),Math.round(n),i)},toRGB:function(){return new c(this.r/255,this.g/255,this.b/255,this.a)},toHSV:function(){return this.toRGB().toHSV()},toHSL:function(){return this.toRGB().toHSL()},toHex:function(){return e(this.r,2)+e(this.g,2)+e(this.b,2)},toBytes:function(){return this}}),u=l.extend({init:function(e,t,n,i){l.fn.init.call(this),this.h=e,this.s=t,this.v=n,this.a=i},toRGB:function(){var e,t,n,i,o,r,a,s,l=this,d=l.h,u=l.s,h=l.v;if(0===u)e=t=n=h;else switch(d/=60,i=Math.floor(d),o=d-i,r=h*(1-u),a=h*(1-u*o),s=h*(1-u*(1-o)),i){case 0:e=h,t=s,n=r;break;case 1:e=a,t=h,n=r;break;case 2:e=r,t=h,n=s;break;case 3:e=r,t=a,n=h;break;case 4:e=s,t=r,n=h;break;default:e=h,t=r,n=a}return new c(e,t,n,this.a)},toHSL:function(){return this.toRGB().toHSL()},toBytes:function(){return this.toRGB().toBytes()}}),h=l.extend({init:function(e,t,n,i){l.fn.init.call(this),this.h=e,this.s=t,this.l=n,this.a=i},toRGB:function(){var e,n,i,o,r,a=this.h/360,s=this.s/100,l=this.l/100;return 0===s?e=n=i=l:(o=l<.5?l*(1+s):l+s-l*s,r=2*l-o,e=t(r,o,a+1/3),n=t(r,o,a),i=t(r,o,a-1/3)),new c(e,n,i,this.a)},toHSV:function(){return this.toRGB().toHSV()},toBytes:function(){return this.toRGB().toBytes()}}),p=i.extend({init:function(e){var t,n,i,o,r,a,s,l=this;if(1===arguments.length)for(t=p.formats,n=this.resolveColor(e),i=0;i<t.length;i++)o=t[i].re,r=t[i].process,a=o.exec(n),a&&(s=r(a),l.r=s[0],l.g=s[1],l.b=s[2]);else this.r=arguments[0],this.g=arguments[1],this.b=arguments[2];this.r=this.normalizeByte(this.r),this.g=this.normalizeByte(this.g),this.b=this.normalizeByte(this.b)},toHex:function(){var e=this.padDigit,t=this.r.toString(16),n=this.g.toString(16),i=this.b.toString(16);return"#"+e(t)+e(n)+e(i)},resolveColor:function(e){var t=e||"black";return"#"===t.charAt(0)&&(t=t.substr(1,6)),t=t.replace(/ /g,""),t=t.toLowerCase(),t=p.namedColors[t]||t},normalizeByte:function(e){return e<0||isNaN(e)?0:e>255?255:e},padDigit:function(e){return 1===e.length?"0"+e:e},brightness:function(e){var t=Math.round;return this.r=t(this.normalizeByte(this.r*e)),this.g=t(this.normalizeByte(this.g*e)),this.b=t(this.normalizeByte(this.b*e)),this},percBrightness:function(){return Math.sqrt(.241*this.r*this.r+.691*this.g*this.g+.068*this.b*this.b)}}),p.fromBytes=function(e,t,n,i){return new d(e,t,n,null!=i?i:1)},p.fromRGB=function(e,t,n,i){return new c(e,t,n,null!=i?i:1)},p.fromHSV=function(e,t,n,i){return new u(e,t,n,null!=i?i:1)},p.fromHSL=function(e,t,n,i){return new h(e,t,n,null!=i?i:1)},p.formats=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,process:function(e){return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10)]}},{re:/^(\w{2})(\w{2})(\w{2})$/,process:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,process:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}}],p.namedColors=r,kendo.deepExtend(kendo,{parseColor:n,Color:p})},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("util/text-metrics.min",["kendo.core.min"],e)}(function(){!function(e){function t(e){return(e+"").replace(s,l)}function n(e){var t,n=[];for(t in e)n.push(t+e[t]);return n.sort().join("")}function i(e){var t,n=2166136261;for(t=0;t<e.length;++t)n+=(n<<1)+(n<<4)+(n<<7)+(n<<8)+(n<<24),n^=e.charCodeAt(t);return n>>>0}function o(){return{width:0,height:0,baseline:0}}function r(e,t,n){return u.current.measure(e,t,n)}var a,s,l,c,d,u;window.kendo.util=window.kendo.util||{},a=kendo.Class.extend({init:function(e){this._size=e,this._length=0,this._map={}},put:function(e,t){var n=this._map,i={key:e,value:t};n[e]=i,this._head?(this._tail.newer=i,i.older=this._tail,this._tail=i):this._head=this._tail=i,this._length>=this._size?(n[this._head.key]=null,this._head=this._head.newer,this._head.older=null):this._length++},get:function(e){var t=this._map[e];if(t)return t===this._head&&t!==this._tail&&(this._head=t.newer,this._head.older=null),t!==this._tail&&(t.older&&(t.older.newer=t.newer,t.newer.older=t.older),t.older=this._tail,t.newer=null,this._tail.newer=t,this._tail=t),t.value}}),s=/\r?\n|\r|\t/g,l=" ",c={baselineMarkerSize:1},"undefined"!=typeof document&&(d=document.createElement("div"),d.style.cssText="position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: pre!important;"),u=kendo.Class.extend({init:function(t){this._cache=new a(1e3),this.options=e.extend({},c,t)},measure:function(e,r,a){var s,l,c,u,h,p,f,g,m;if(void 0===a&&(a={}),!e)return o();if(s=n(r),l=i(e+s),c=this._cache.get(l))return c;u=o(),h=a.box||d,p=this._baselineMarker().cloneNode(!1);for(f in r)g=r[f],void 0!==g&&(h.style[f]=g);return m=a.normalizeText!==!1?t(e):e+"",h.textContent=m,h.appendChild(p),document.body.appendChild(h),m.length&&(u.width=h.offsetWidth-this.options.baselineMarkerSize,u.height=h.offsetHeight,u.baseline=p.offsetTop+this.options.baselineMarkerSize),u.width>0&&u.height>0&&this._cache.put(l,u),h.parentNode.removeChild(h),u},_baselineMarker:function(){var e=document.createElement("div");return e.style.cssText="display: inline-block; vertical-align: baseline;width: "+this.options.baselineMarkerSize+"px; height: "+this.options.baselineMarkerSize+"px;overflow: hidden;",e}}),u.current=new u,kendo.deepExtend(kendo.util,{LRUCache:a,TextMetrics:u,measureText:r,objectKey:n,hashKey:i,normalizeText:t})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("drawing/kendo-drawing.min",["drawing/util.min","kendo.color.min","util/text-metrics.min"],e)}(function(){!function(e){function t(e,t){return e.push.apply(e,t),e}function n(e){for(var t=[1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],n="";e>0;)e<t[0]?t.shift():(n+=Qt[t[0]],e-=t[0]);return n}function i(e){return typeof e!==Xt}function o(){return"kdef"+Jt++}function r(e){return e/Zt}function a(e){var t,n,i="";for(t=0;t<e.length;t++)n=e.charCodeAt(t),n<128?i+=on(n):n<2048?(i+=on(192|n>>>6),i+=on(128|63&n)):n<65536&&(i+=on(224|n>>>12),i+=on(128|n>>>6&63),i+=on(128|63&n));return i}function s(e){for(var t,n,i,o,r,s,l,c="",d=0,u=a(e);d<u.length;)t=u.charCodeAt(d++),n=u.charCodeAt(d++),i=u.charCodeAt(d++),o=t>>2,r=(3&t)<<4|n>>4,s=(15&n)<<2|i>>6,l=63&i,isNaN(n)?s=l=64:isNaN(i)&&(l=64),c=c+nn.charAt(o)+nn.charAt(r)+nn.charAt(s)+nn.charAt(l);return c}function l(e){return i((e.x||{}).location)?{x:e.x.location,y:e.y.location}:{x:e.pageX||e.clientX||0,y:e.pageY||e.clientY||0}}function c(e){return void 0===e&&(e={}),e.touch?e.touch.initialTouch:e.target}function d(e){return""===e||null===e||"none"===e||"transparent"===e||!i(e)}function u(e){if(e)return e[e.length-1]}function h(e,t,n){return Math.max(Math.min(e,n),t)}function p(e,t){function n(e,n){for(var i=[],o=0,r=0,a=0;o<e.length&&r<n.length;)t(e[o],n[r])<=0?i[a++]=e[o++]:i[a++]=n[r++];return o<e.length&&i.push.apply(i,e.slice(o)),r<n.length&&i.push.apply(i,n.slice(r)),i}return e.length<2?e.slice():function i(e){var t,o,r;return e.length<=1?e:(t=Math.floor(e.length/2),o=e.slice(0,t),r=e.slice(t),o=i(o),r=i(r),n(o,r))}(e)}function f(e){return e*Zt}function g(e){return e?Math.pow(10,e):1}function m(e,t){var n=g(t);return Math.round(e*n)/n}function v(e,t){return i(e)?e:t}function _(e,t){var n,i,o;for(n in t)for(i=n.trim().split(" "),o=0;o<i.length;o++)e.addEventListener(i[o],t[n],!1)}function b(e){var t=e.getBoundingClientRect(),n=document.documentElement;return{top:t.top+(window.pageYOffset||n.scrollTop)-(n.clientTop||0),left:t.left+(window.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}}function w(e,t){var n,i,o={},r=window.getComputedStyle(e)||{},a=Array.isArray(t)?t:[t];for(n=0;n<a.length;n++)i=a[n],o[i]=r[i];return o}function k(e){return isNaN(e)?e:e+"px"}function y(e,t){var n,o,r;return t?(n=t.width,o=t.height,i(n)&&(e.style.width=k(n)),i(o)&&(e.style.height=k(o)),void 0):(r=w(e,["width","height"]),{width:parseInt(r.width,10),height:parseInt(r.height,10)})}function x(e,t){var n,i,o;void 0===t&&(t={});for(n in t)for(i=n.trim().split(" "),o=0;o<i.length;o++)e.removeEventListener(i[o],t[n],!1)}function C(e){return function(t){return this[e]!==t&&(this[e]=t,this.geometryChange()),this}}function S(e){return function(){return this[e]}}function T(e,t){var n,i,o;for(n=0;n<t.length;n++)i=t[n],o=i.charAt(0).toUpperCase()+i.substring(1,i.length),e["set"+o]=C(i),e["get"+o]=S(i)}function D(e){return e&&"function"==typeof e.matrix?e.matrix():e}function A(e){return null===e?null:e instanceof hn?e:new hn(e)}function E(e,t,n,i){var o=0,r=0;return i&&(o=Math.atan2(i.c*n,i.a*t),0!==i.b&&(r=Math.atan2(i.d*n,i.b*t))),{x:o,y:r}}function I(e){var t="_"+e;return function(e){return i(e)?(this._observerField(t,e),this.geometryChange(),this):this[t]}}function M(e,t){for(var n=0;n<t.length;n++)e[t[n]]=I(t[n])}function F(e,t,n){return void 0===n&&(n=yn),0===m(Math.abs(e-t),n)}function R(e,t,n){return e<t||F(e,t,n)}function P(e,t,n,i){var o=t.x-e.x,r=i.x-n.x,a=t.y-e.y,s=i.y-n.y,l=e.x-n.x,c=e.y-n.y,d=o*s-r*a,u=(o*c-a*l)/d,h=(r*c-s*l)/d;if(u>=0&&u<=1&&h>=0&&h<=1)return new cn(e.x+h*o,e.y+h*a)}function z(e,t,n,i,o,a){var s=m((o-e)/n,3),l=m((a-t)/i,3);return m(r(Math.atan2(l,s)))}function B(e){var t,n,i,o,a,s,l,c,d,u,h,p,g,v,_,b,w,k,y,x,C,S,T,D,A,E=e.x1,I=e.y1,M=e.x2,F=e.y2,R=e.rx,P=e.ry,z=e.largeArc,B=e.swipe,L=e.rotation;return void 0===L&&(L=0),t=f(L),n=Math.cos(t),i=Math.sin(t),o=n*(E-M)/2+i*(I-F)/2,a=-i*(E-M)/2+n*(I-F)/2,s=z!==B?1:-1,l=Math.pow(o,2),c=Math.pow(a,2),d=Math.pow(R,2),u=Math.pow(P,2),h=l/d+c/u,h>1&&(h=Math.sqrt(l/d+c/u),R=h*R,d=Math.pow(R,2),P=h*P,u=Math.pow(P,2)),p=s*Math.sqrt((d*u-d*c-u*l)/(d*c+u*l)),isNaN(p)&&(p=0),g=p*(R*a)/P,v=-p*(P*o)/R,_=n*g-i*v+(E+M)/2,b=i*g+n*v+(I+F)/2,w=(o-g)/R,k=(a-v)/P,y=-(o+g)/R,x=-(a+v)/P,C=(k>=0?1:-1)*r(Math.acos(w/Math.sqrt(w*w+k*k))),S=m((w*y+k*x)/(Math.sqrt(w*w+k*k)*Math.sqrt(y*y+x*x)),10),T=(w*x-k*y>=0?1:-1)*r(Math.acos(S)),!B&&T>0&&(T-=360),B&&T<0&&(T+=360),D=C+T,A=D>=0?1:-1,D=Math.abs(D)%360*A,{center:new cn(_,b),startAngle:C,endAngle:D,radiusX:R,radiusY:P,xRotation:L}}function L(e,t){for(var n=e;n<t;)n+=90;return n}function H(e){var t="_"+e;return function(e){return i(e)?(this._observerField(t,cn.create(e)),this.geometryChange(),this):this[t]}}function N(e,t){for(var n=0;n<t.length;n++)e[t[n]]=H(t[n])}function O(e,t,n){var i=r(Math.atan2(t.y-e.y,t.x-e.x)),o=n.transformCopy(A().rotate(-i,e));return o.x<e.x}function V(e,t,n){var i=1-e;return Math.pow(i,3)*n[0][t]+3*Math.pow(i,2)*e*n[1][t]+3*Math.pow(e,2)*i*n[2][t]+Math.pow(e,3)*n[3][t]}function W(e,t){return[-e[0][t]+3*e[1][t]-3*e[2][t]+e[3][t],3*(e[0][t]-2*e[1][t]+e[2][t]),3*(-e[0][t]+e[1][t]),e[0][t]]}function U(e){return e<0?-1:1}function q(e,t,n){var i=Math.sqrt(Math.pow(t,2)-4*e*n);return[(-t+i)/(2*e),(-t-i)/(2*e)]}function j(e,t,n,i){var o,r,a,s,l,c,d,u,h,p,f,g,v;return 0===e?q(t,n,i):(o=(3*e*n-Math.pow(t,2))/(3*Math.pow(e,2)),r=(2*Math.pow(t,3)-9*e*t*n+27*Math.pow(e,2)*i)/(27*Math.pow(e,3)),a=Math.pow(o/3,3)+Math.pow(r/2,2),s=new Pn(0,1),l=-t/(3*e),a<0?(c=new Pn(-r/2,Math.sqrt(-a)).nthRoot(3),d=new Pn(-r/2,(-Math.sqrt(-a))).nthRoot(3)):(c=-r/2+Math.sqrt(a),c=new Pn(U(c)*Math.pow(Math.abs(c),1/3)),d=-r/2-Math.sqrt(a),d=new Pn(U(d)*Math.pow(Math.abs(d),1/3))),u=c.add(d),f=c.add(d).multiplyConstant(-.5),g=c.add(d.negate()).multiplyConstant(Math.sqrt(3)/2),h=f.add(s.multiply(g)),p=f.add(s.negate().multiply(g)),v=[],u.isReal()&&v.push(m(u.real+l,yn)),h.isReal()&&v.push(m(h.real+l,yn)),p.isReal()&&v.push(m(p.real+l,yn)),v)}function G(e,t,n,i,o){var r,a,s=W(e,i),l=j(s[0],s[1],s[2],s[3]-t[i]);for(a=0;a<l.length;a++)if(0<=l[a]&&l[a]<=1&&(r=V(l[a],n,e),Math.abs(r-t[n])<=o))return!0}function $(e,t,n){var i,o,r,a=W(e,"x"),s=j(a[0],a[1],a[2],a[3]-t.x),l=0;for(r=0;r<s.length;r++)i=V(s[r],"y",e),o=F(i,t.y)||i>t.y,o&&((0===s[r]||1===s[r])&&n.bottomRight().x>t.x||0<s[r]&&s[r]<1)&&l++;return l}function Y(e,t,n){var i,o,r,a,s,l;return e.x!==t.x&&(o=Math.min(e.x,t.x),r=Math.max(e.x,t.x),a=Math.min(e.y,t.y),s=Math.max(e.y,t.y),l=o<=n.x&&n.x<r,i=a===s?n.y<=a&&l:l&&(s-a)*((e.x-t.x)*(e.y-t.y)>0?n.x-o:r-n.x)/(r-o)+a-n.y>=0),i?1:0}function K(e){var t,n=e.length,i=en,o=tn;for(t=0;t<n;t++)o=Math.max(o,e[t]),i=Math.min(i,e[t]);return{min:i,max:o}}function Q(e,t,n){var i,o,r,a;for(o=0;o<e.length;o++)r=e[o],r.visible()&&(a=t?r.bbox(n):r.rawBBox(),a&&(i=i?un.union(i,a):a));return i}function X(e,t){var n,i,o,r;for(i=0;i<e.length;i++)o=e[i],o.visible()&&(r=o.clippedBBox(t),r&&(n=n?un.union(n,r):r));return n}function J(e,t,n){var i,o=t?0:1;for(i=0;i<e.length;i+=2)e.splice(i+o,0,n)}function Z(e,t){if(e&&t)return t.scaleCopy(2).translate(-e.x,-e.y)}function ee(e,t,n){var i=t.clone().scale(2/3);return{controlOut:i.clone().translateWith(e.scaleCopy(Hn)),controlIn:i.translateWith(n.scaleCopy(Hn))}}function te(e){var t=[];return e.replace(On,function(e,n){t.push(parseFloat(n))}),t}function ne(e,t,n){var i=n.transform()||A(),o=i.matrix();o.e+=e.x-t.origin.x,o.f+=e.y-t.origin.y,i.matrix(o),n.transform(i)}function ie(e,t,n,i,o){var r;return r="start"===n?t.origin[i]:"end"===n?t.origin[i]+t.size[o]-e:t.origin[i]+(t.size[o]-e)/2}function oe(e,t,n,i,o){var r;return r="start"===n?t.origin[i]+t.size[o]-e:"end"===n?t.origin[i]:t.origin[i]+(t.size[o]-e)/2}function re(e,t,n,i,o){var r,a,s;for(r=0;r<e.length;r++)a=e[r].clippedBBox(),a&&(s=a.origin.clone(),s[i]=ie(a.size[o],t,n||"start",i,o),ne(s,a,e[r]))}function ae(e,t,n){re(e,t,n,"x","width")}function se(e,t,n){re(e,t,n,"y","height")}function le(e,t,n,i){var o,r,a,s,l;if(e.length>1)for(o=new cn,r=e[0].bbox,a=1;a<e.length;a++)s=e[a].element,l=e[a].bbox,o[t]=r.origin[t]+r.size[i],o[n]=l.origin[n],ne(o,l,s),l.origin[t]=o[t],r=l}function ce(e){var t,n,i,o=[];for(t=0;t<e.length;t++)n=e[t],i=n.clippedBBox(),i&&o.push({element:n,bbox:i});return o}function de(e){le(ce(e),"x","y","width")}function ue(e){le(ce(e),"y","x","height")}function he(e,t,n){var i,o,r,a,s=t.size[n],l=[],c=[],d=0,u=function(){c.push({element:i,bbox:o})};for(r=0;r<e.length;r++)i=e[r],o=i.clippedBBox(),o&&(a=o.size[n],d+a>s?c.length?(l.push(c),c=[],u(),d=a):(u(),l.push(c),c=[],d=0):(u(),d+=a));return c.length&&l.push(c),l}function pe(e,t,n,i,o){var r,a,s,l,c=he(e,t,o),d=t.origin.clone(),u=[];for(r=0;r<c.length;r++)for(a=c[r],s=a[0],d[i]=s.bbox.origin[i],ne(d,s.bbox,s.element),s.bbox.origin[n]=d[n],le(a,n,i,o),u.push([]),l=0;l<a.length;l++)u[r].push(a[l].element);return u}function fe(e,t){return pe(e,t,"x","y","width")}function ge(e,t){return pe(e,t,"y","x","height")}function me(e,t){var n,i,o,r,a=e.clippedBBox();a&&(n=a.size,i=t.size,(i.width<n.width||i.height<n.height)&&(o=Math.min(i.width/n.width,i.height/n.height),r=e.transform()||A(),r.scale(o,o),e.transform(r)))}function ve(e){return function(t){return i(t)?(this.options.set(e,t),this):this.options.get(e)}}function _e(e,t){for(var n=0;n<t.length;n++)e[t[n]]=ve(t[n])}function be(e){return.5-Math.cos(e*Math.PI)/2}function we(e){return e}function ke(e,t,n,i){var o=1.70158,r=0,a=i;return 0===e?n:1===e?n+i:(r||(r=.5),a<Math.abs(i)?(a=i,o=r/4):o=r/(2*Math.PI)*Math.asin(i/a),a*Math.pow(2,-10*e)*Math.sin((+e-o)*(1.1*Math.PI)/r)+i+n)}function ye(e,t){return i(t)&&null!==t?" "+e+'="'+t+'" ':""}function xe(e){var t,n="";for(t=0;t<e.length;t++)n+=ye(e[t][0],e[t][1]);return n}function Ce(e){var t,n,o="";for(t=0;t<e.length;t++)n=e[t][1],i(n)&&(o+=e[t][0]+":"+n+";");if(""!==o)return o}function Se(e,t){return"clip"===e||"fill"===e&&(!t||"Gradient"===t.nodeType)}function Te(){var e,t=document.getElementsByTagName("base")[0],n=document.location.href,i="";return t&&!Gt.msie&&(e=n.indexOf("#"),e!==-1&&(n=n.substring(0,e)),i=n),i}function De(e){var t,n,i,o;try{t=e.getScreenCTM?e.getScreenCTM():null}catch(r){}t&&(n=-t.e%1,i=-t.f%1,o=e.style,0===n&&0===i||(o.left=n+"px",o.top=i+"px"))}function Ae(e){if(!e||"string"!=typeof e||!Yi.test(e))return e;var t=Ae._element;return Yi.lastIndex=0,e.replace(Yi,function(e){return t.innerHTML=e,t.textContent||t.innerText})}function Ee(e){var t,n,i,o=new Pi({skipBaseHref:!0}),r=e.clippedBBox(),a=e;return r&&(t=r.getOrigin(),n=new Jn,n.transform(A().translate(-t.x,-t.y)),n.children.push(e),a=n),o.load([a]),i="<?xml version='1.0' ?><svg xmlns='"+_i+"' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>"+o.render()+"</svg>",o.destroy(),i}function Ie(e,t){var n,i,o,r,a,s,l=t.segments;if(0!==l.length){for(n=l[0],i=n.anchor(),e.moveTo(i.x,i.y),o=1;o<l.length;o++)n=l[o],i=n.anchor(),r=l[o-1],a=r.controlOut(),s=n.controlIn(),a&&s?e.bezierCurveTo(a.x,a.y,s.x,s.y,i.x,i.y):e.lineTo(i.x,i.y);t.options.closed&&e.closePath()}}function Me(e,t){return e._zIndex<t._zIndex?1:e._zIndex>t._zIndex?-1:0}function Fe(e,t){var n,i,o;for(n=0;n<t.length;n++)i=t[n],o=kendo.parseColor(i.color()),o.a*=i.opacity(),e.addColorStop(i.offset(),o.toCssRgba())}function Re(t,n){var i,o,r,a,s,l,c,d,u={width:"800px",height:"600px",cors:"Anonymous"},h=t,p=t.clippedBBox();return p&&(i=p.getOrigin(),h=new Jn,h.transform(A().translate(-i.x,-i.y)),h.children.push(t),o=p.getSize(),u.width=o.width+"px",u.height=o.height+"px"),r=e.extend(u,n),a=document.createElement("div"),s=a.style,s.display="none",s.width=r.width,s.height=r.height,document.body.appendChild(a),l=new ho(a,r),l.suspendTracking(),l.draw(h),c=l.image(),d=function(){l.destroy(),document.body.removeChild(a)},c.then(d,d),c}function Pe(e,t){var n=Ee(e);return t&&t.raw||(n="data:image/svg+xml;base64,"+s(n)),$t().resolve(n)}function ze(e){return Array.prototype.slice.call(e)}function Be(e,t){e.classList?e.classList.add(t):e.className+=" "+t}function Le(e,t){e.classList?e.classList.remove(t):e.className=e.className.split(/\s+/).reduce(function(e,n){return n!=t&&e.push(n),e},[]).join(" ")}function He(e,t){Object.keys(t).forEach(function(n){e.style[n]=t[n]})}function Ne(e,t){if(e.closest)return e.closest(t);for(;e&&!/^\[object (?:HTML)?Document\]$/.test(e+"");){if(1==e.nodeType&&Ao(e,t))return e;e=e.parentNode}}function Oe(e){return"number"==typeof e?{x:e,y:e}:Array.isArray(e)?{x:e[0],y:e[1]}:{x:e.x,y:e.y}}function Ve(e,t){function n(e){var n=new Jn,i=e.getBoundingClientRect();return mt(n,[a.x,0,0,a.y,-i.left*a.x,-i.top*a.y]),Co._clipbox=!1,Co._matrix=ln.unit(),Co._stackingContext={element:e,group:n},Co._avoidLinks=t.avoidLinks===!0?"a":t.avoidLinks,Be(e,"k-pdf-export"),Nt(e,n),Le(e,"k-pdf-export"),n}function i(e){if(null!=e)return"string"==typeof e&&(e=kendo.template(e.replace(/^\s+|\s+$/g,""))),"function"==typeof e?function(t){var n,i=e(t);return i&&"string"==typeof i&&(n=document.createElement("div"),n.innerHTML=i,i=n.firstElementChild),i}:function(){return e.cloneNode(!0)}}function o(e,t,n,o,r,a,s){function l(){("-"!=n||r)&&d(w);var t=p();w.parentNode.insertBefore(t,w),t.appendChild(w),v&&b.forEach(function(e,t){var n=v({element:e,pageNum:t+1,totalPages:b.length});n&&e.appendChild(n)}),Je(b,function(){Xe(b,function(){e({pages:b,container:k})})})}function c(e){if(s.keepTogether&&Ao(e,s.keepTogether)&&e.offsetHeight<=r-y)return!0;var t=e.tagName;return!(/^h[1-6]$/i.test(t)&&e.offsetHeight>=r-y)&&(e.getAttribute("data-kendo-chart")||/^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(e.tagName))}function d(e){var t,i,o,a,s,l,u;if("TABLE"==e.tagName&&He(e,{tableLayout:"fixed"}),!c(e)){for(t=rt(e),i=parseFloat(at(t,"padding-bottom")),o=parseFloat(at(t,"border-bottom-width")),a=y,y+=i+o,s=!0,l=e.firstChild;l;l=l.nextSibling)if(1==l.nodeType){if(s=!1,Ao(l,n)){h(l);continue}if(!r){d(l);continue}if(!/^(?:static|relative)$/.test(at(rt(l),"position")))continue;u=f(l),1==u?h(l):u&&c(l)?h(l):d(l)}else 3==l.nodeType&&r&&(g(l,s),s=!1);y=a}}function u(e){var t=e.parentNode,n=t.firstChild;if(e===n)return!0;if(e===t.children[0]){if(7==n.nodeType||8==n.nodeType)return!0;if(3==n.nodeType)return!/\S/.test(n.data)}return!1}function h(e){var t,n,i,o,r,a,l;return 1==e.nodeType&&e!==w&&u(e)?h(e.parentNode):(t=Ne(e,"table"),n=t&&t.querySelector("colgroup"),s.repeatHeaders&&(i=t&&t.querySelector("thead"),o=Ne(e,".k-grid.k-widget"),o&&o.querySelector(".k-auto-scrollable")&&(r=o.querySelector(".k-grid-header"))),a=p(),l=_.createRange(),l.setStartBefore(w),l.setEndBefore(e),a.appendChild(l.extractContents()),w.parentNode.insertBefore(a,w),m(e.parentNode),t&&(t=Ne(e,"table"),s.repeatHeaders&&i&&t.insertBefore(i.cloneNode(!0),t.firstChild),n&&t.insertBefore(n.cloneNode(!0),t.firstChild)),void(s.repeatHeaders&&r&&(o=Ne(e,".k-grid.k-widget"),o.insertBefore(r.cloneNode(!0),o.firstChild))))}function p(){var e=_.createElement("KENDO-PDF-PAGE");return He(e,{display:"block",boxSizing:"content-box",width:o?o+"px":"auto",padding:a.top+"px "+a.right+"px "+a.bottom+"px "+a.left+"px",position:"relative",height:r?r+"px":"auto",overflow:r||o?"hidden":"visible",clear:"both"}),s&&s.pageClassName&&(e.className=s.pageClassName),b.push(e),e}function f(e){var t,n,i=e.getBoundingClientRect();return 0===i.width||0===i.height?0:(t=w.getBoundingClientRect().top,n=r-y,i.height>n?3:i.top-t>n?1:i.bottom-t>n?2:0)}function g(e,t){var n,i,o,r,a;/\S/.test(e.data)&&(n=e.data.length,i=_.createRange(),i.selectNodeContents(e),o=f(i),o&&(r=e,1==o?h(t?e.parentNode:e):(!function s(t,n,o){return i.setEnd(e,n),t==n||n==o?n:f(i)?s(t,t+n>>1,n):s(n,n+o>>1,o)}(0,n>>1,n),!/\S/.test(""+i)&&t?h(e.parentNode):(r=e.splitText(i.endOffset),a=p(),i.setStartBefore(w),a.appendChild(i.extractContents()),w.parentNode.insertBefore(a,w),m(r.parentNode))),g(r)))}function m(e){var t=Ne(e,"li");t&&(t.setAttribute("kendo-no-bullet","1"),m(t.parentNode))}var v=i(s.template),_=t.ownerDocument,b=[],w=s._destructive?t:Eo(t),k=_.createElement("KENDO-PDF-DOCUMENT"),y=0;ze(w.querySelectorAll("tfoot")).forEach(function(e){e.parentNode.appendChild(e)}),ze(w.querySelectorAll("ol")).forEach(function(e){ze(e.children).forEach(function(e,t){e.setAttribute("kendo-split-index",t)})}),He(k,{display:"block",position:"absolute",boxSizing:"content-box",left:"-10000px",top:"-10000px"}),o&&(He(k,{width:o+"px",paddingLeft:a.left+"px",paddingRight:a.right+"px"}),He(w,{overflow:"hidden"})),t.parentNode.insertBefore(k,t),k.appendChild(w),s.beforePageBreak?setTimeout(function(){s.beforePageBreak(k,l)},15):setTimeout(l,15)}var r,a;if(t||(t={}),r=$t(),!e)return r.reject("No element to export");if("function"!=typeof window.getComputedStyle)throw Error("window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.");return kendo.pdf.defineFont(We(e.ownerDocument)),a=Oe(t.scale||1),Je(e,function(){var i,s=t&&t.forcePageBreak,l=t&&t.paperSize&&"auto"!=t.paperSize,c=kendo.pdf.getPaperOptions(function(e,n){return"paperSize"==e?l?t[e]:"A4":e in t?t[e]:n}),d=l&&c.paperSize[0],u=l&&c.paperSize[1],h=t.margin&&c.margin,p=!!h;s||u?(h||(h={left:0,top:0,right:0,bottom:0}),d&&(d/=a.x),u&&(u/=a.y),h.left/=a.x,h.right/=a.x,h.top/=a.y,h.bottom/=a.y,i=new Jn({pdf:{multiPage:!0,paperSize:l?c.paperSize:"auto",_ignoreMargin:p}}),o(function(e){if(t.progress){var o=!1,a=0;!function s(){if(a<e.pages.length){var l=n(e.pages[a]);i.append(l),t.progress({page:l,pageNum:++a,totalPages:e.pages.length,cancel:function(){o=!0}}),o?e.container.parentNode.removeChild(e.container):setTimeout(s)}else e.container.parentNode.removeChild(e.container),r.resolve(i)}()}else e.pages.forEach(function(e){i.append(n(e))}),e.container.parentNode.removeChild(e.container),r.resolve(i)},e,s,d?d-h.left-h.right:null,u?u-h.top-h.bottom:null,h,t)):r.resolve(n(e))}),r}function We(e){function t(e){if(e){var t=null;try{t=e.cssRules}catch(n){}t&&i(e,t)}}function n(e){var t,n=at(e.style,"src");return n?Mo(n).reduce(function(e,t){var n=Fo(t);return n&&e.push(n),e},[]):(t=Fo(e.cssText),t?[t]:[])}function i(e,i){var r,a,s,l,c,d,u;for(r=0;r<i.length;++r)switch(a=i[r],a.type){case 3:t(a.styleSheet);break;case 5:s=a.style,l=Mo(at(s,"font-family")),c=/^([56789]00|bold)$/i.test(at(s,"font-weight")),d="italic"==at(s,"font-style"),u=n(a),u.length>0&&o(e,l,c,d,u[0])}}function o(e,t,n,i,o){/^data:/i.test(o)||/^[^\/:]+:\/\//.test(o)||/^\//.test(o)||(o=(e.href+"").replace(/[^\/]*$/,"")+o),t.forEach(function(e){e=e.replace(/^(['"]?)(.*?)\1$/,"$2"),n&&(e+="|bold"),i&&(e+="|italic"),r[e]=o})}var r,a;for(null==e&&(e=document),r={},a=0;a<e.styleSheets.length;++a)t(e.styleSheets[a]);return r}function Ue(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function qe(e){return e="_counter_"+e,Co[e]}function je(e){var t=[],n=Co;for(e="_counter_"+e;n;)Ue(n,e)&&t.push(n[e]),n=Object.getPrototypeOf(n); +return t.reverse()}function Ge(e,t){var n=Co;for(e="_counter_"+e;n&&!Ue(n,e);)n=Object.getPrototypeOf(n);n||(n=Co._root),n[e]=(n[e]||0)+(null==t?1:t)}function $e(e,t){e="_counter_"+e,Co[e]=null==t?0:t}function Ye(e,t,n){var i,o,r;for(i=0;i<e.length;)o=e[i++],r=parseFloat(e[i]),isNaN(r)?t(o,n):(t(o,r),++i)}function Ke(e){var t,n=at(e,"counter-reset");n&&Ye(Mo(n,/^\s+/),$e,0),t=at(e,"counter-increment"),t&&Ye(Mo(t,/^\s+/),Ge,1)}function Qe(e,t){var n=kendo.parseColor(e,!0);return n&&(n=n.toRGB(),t?n=n.toCssRgba():0===n.a&&(n=null)),n}function Xe(e,t){function n(){--i<=0&&t()}var i=0;e.forEach(function(e){var t,o,r=e.querySelectorAll("img");for(t=0;t<r.length;++t)o=r[t],o.complete||(i++,o.onload=o.onerror=n)}),i||n()}function Je(e,t){function n(e){xo[e]||(xo[e]=!0,a.push(e))}function i(e){/^img$/i.test(e.tagName)&&n(e.src),Io(at(rt(e),"background-image")).forEach(function(e){"url"==e.type&&n(e.url)}),e.children&&ze(e.children).forEach(i)}function o(){--r<=0&&t()}var r,a=[];Array.isArray(e)?e.forEach(i):i(e),r=a.length,0===r&&o(),a.forEach(function(e){var t=xo[e]=new window.Image;/^data:/i.test(e)||(t.crossOrigin="Anonymous"),t.src=e,t.complete?o():(t.onload=o,t.onerror=function(){xo[e]=null,o()})})}function Ze(e){var t,n="";do t=e%26,n=String.fromCharCode(97+t)+n,e=Math.floor(e/26);while(e>0);return n}function et(e,t,n){var i,o;Co=Object.create(Co),Co[e.tagName.toLowerCase()]={element:e,style:t},i=at(t,"text-decoration"),i&&"none"!=i&&(o=at(t,"color"),i.split(/\s+/g).forEach(function(e){Co[e]||(Co[e]=o)})),ot(t)&&(Co._stackingContext={element:e,group:n})}function tt(){Co=Object.getPrototypeOf(Co)}function nt(e){if(null!=Co._clipbox){var t=e.bbox(Co._matrix);Co._clipbox=Co._clipbox?un.intersect(Co._clipbox,t):t}}function it(){var e=Co._clipbox;return null==e||(e?0===e.width()||0===e.height():void 0)}function ot(e){function t(t){return at(e,t)}if("none"!=t("transform")||"static"!=t("position")||"auto"!=t("z-index")||t("opacity")<1)return!0}function rt(e,t){return window.getComputedStyle(e,t||null)}function at(e,t,n){var i=e.getPropertyValue(t);return null!=i&&""!==i||(ko.webkit?i=e.getPropertyValue("-webkit-"+t):ko.mozilla?i=e.getPropertyValue("-moz-"+t):ko.opera?i=e.getPropertyValue("-o-"+t):To&&(i=e.getPropertyValue("-ms-"+t))),arguments.length>2&&(null==i||""===i)?n:i}function st(e,t,n,i){e.setProperty(t,n,i),ko.webkit?e.setProperty("-webkit-"+t,n,i):ko.mozilla?e.setProperty("-moz-"+t,n,i):ko.opera?e.setProperty("-o-"+t,n,i):To&&(e.setProperty("-ms-"+t,n,i),t="ms"+t.replace(/(^|-)([a-z])/g,function(e,t,n){return t+n.toUpperCase()}),e[t]=n)}function lt(e,t){return t="border-"+t,{width:parseFloat(at(e,t+"-width")),style:at(e,t+"-style"),color:Qe(at(e,t+"-color"),!0)}}function ct(e,t){var n=e.style.cssText,i=t();return e.style.cssText=n,i}function dt(e,t){var n=at(e,"border-"+t+"-radius").split(/\s+/g).map(parseFloat);return 1==n.length&&n.push(n[0]),bt({x:n[0],y:n[1]})}function ut(e){var t=e.getBoundingClientRect();return t=ht(t,"border-*-width",e),t=ht(t,"padding-*",e)}function ht(e,t,n){var i,o,r,a,s;return"string"==typeof t?(i=rt(n),o=parseFloat(at(i,t.replace("*","top"))),r=parseFloat(at(i,t.replace("*","right"))),a=parseFloat(at(i,t.replace("*","bottom"))),s=parseFloat(at(i,t.replace("*","left")))):"number"==typeof t&&(o=r=a=s=t),{top:e.top+o,right:e.right-r,bottom:e.bottom-a,left:e.left+s,width:e.right-e.left-r-s,height:e.bottom-e.top-a-o}}function pt(e){var t,n,i=at(e,"transform");return"none"==i?null:(t=/^\s*matrix\(\s*(.*?)\s*\)\s*$/.exec(i),t?(n=at(e,"transform-origin"),t=t[1].split(/\s*,\s*/g).map(parseFloat),n=n.split(/\s+/g).map(parseFloat),{matrix:t,origin:n}):void 0)}function ft(e){return 180*e/Math.PI%360}function gt(e){var t=parseFloat(e);return/grad$/.test(e)?Math.PI*t/200:/rad$/.test(e)?t:/turn$/.test(e)?Math.PI*t*2:/deg$/.test(e)?Math.PI*t/180:void 0}function mt(e,t){return t=new ln(t[0],t[1],t[2],t[3],t[4],t[5]),e.transform(t),t}function vt(e,t){e.clip(t)}function _t(e,t,n,i){for(var o=new Sn([t,n],i).curvePoints(),r=1;r<o.length;)e.curveTo(o[r++],o[r++],o[r++])}function bt(e){return(e.x<=0||e.y<=0)&&(e.x=e.y=0),e}function wt(e,t,n,i,o){var r=Math.max(0,t.x),a=Math.max(0,t.y),s=Math.max(0,n.x),l=Math.max(0,n.y),c=Math.max(0,i.x),d=Math.max(0,i.y),u=Math.max(0,o.x),h=Math.max(0,o.y),p=Math.min(e.width/(r+s),e.height/(l+d),e.width/(c+u),e.height/(h+a));return p<1&&(r*=p,a*=p,s*=p,l*=p,c*=p,d*=p,u*=p,h*=p),{tl:{x:r,y:a},tr:{x:s,y:l},br:{x:c,y:d},bl:{x:u,y:h}}}function kt(e,t,n){var i,o,r,a,s,l,c,d,u=rt(e),h=dt(u,"top-left"),p=dt(u,"top-right"),f=dt(u,"bottom-left"),g=dt(u,"bottom-right");return"padding"!=n&&"content"!=n||(i=lt(u,"top"),o=lt(u,"right"),r=lt(u,"bottom"),a=lt(u,"left"),h.x-=a.width,h.y-=i.width,p.x-=o.width,p.y-=i.width,g.x-=o.width,g.y-=r.width,f.x-=a.width,f.y-=r.width,"content"==n&&(s=parseFloat(at(u,"padding-top")),l=parseFloat(at(u,"padding-right")),c=parseFloat(at(u,"padding-bottom")),d=parseFloat(at(u,"padding-left")),h.x-=d,h.y-=s,p.x-=l,p.y-=s,g.x-=l,g.y-=c,f.x-=d,f.y-=c)),"number"==typeof n&&(h.x-=n,h.y-=n,p.x-=n,p.y-=n,g.x-=n,g.y-=n,f.x-=n,f.y-=n),yt(t,h,p,g,f)}function yt(e,t,n,i,o){var r=wt(e,t,n,i,o),a=r.tl,s=r.tr,l=r.br,c=r.bl,d=new qn({fill:null,stroke:null});return d.moveTo(e.left,e.top+a.y),a.x&&_t(d,e.left+a.x,e.top+a.y,{startAngle:-180,endAngle:-90,radiusX:a.x,radiusY:a.y}),d.lineTo(e.right-s.x,e.top),s.x&&_t(d,e.right-s.x,e.top+s.y,{startAngle:-90,endAngle:0,radiusX:s.x,radiusY:s.y}),d.lineTo(e.right,e.bottom-l.y),l.x&&_t(d,e.right-l.x,e.bottom-l.y,{startAngle:0,endAngle:90,radiusX:l.x,radiusY:l.y}),d.lineTo(e.left+c.x,e.bottom),c.x&&_t(d,e.left+c.x,e.bottom-c.y,{startAngle:90,endAngle:180,radiusX:c.x,radiusY:c.y}),d.close()}function xt(e,t){var i=parseFloat(e)+"";switch(t){case"decimal-leading-zero":return i.length<2&&(i="0"+i),i;case"lower-roman":return n(e).toLowerCase();case"upper-roman":return n(e).toUpperCase();case"lower-latin":case"lower-alpha":return Ze(e-1);case"upper-latin":case"upper-alpha":return Ze(e-1).toUpperCase();default:return i}}function Ct(e,t){function n(e,t,n){return n?(n=n.replace(/^\s*(["'])(.*)\1\s*$/,"$2"),je(e).map(function(e){return xt(e,t)}).join(n)):xt(qe(e)||0,t)}var i,o=Mo(t,/^\s+/),r=[];return o.forEach(function(t){var o;(i=/^\s*(["'])(.*)\1\s*$/.exec(t))?r.push(i[2].replace(/\\([0-9a-f]{4})/gi,function(e,t){return String.fromCharCode(parseInt(t,16))})):(i=/^\s*counter\((.*?)\)\s*$/.exec(t))?(o=Mo(i[1]),r.push(n(o[0],o[1]))):(i=/^\s*counters\((.*?)\)\s*$/.exec(t))?(o=Mo(i[1]),r.push(n(o[0],o[2],o[1]))):r.push((i=/^\s*attr\((.*?)\)\s*$/.exec(t))?e.getAttribute(i[1])||"":t)}),r.join("")}function St(e){var t,n;if(e.cssText)return e.cssText;for(t=[],n=0;n<e.length;++n)t.push(e[n]+": "+at(e,e[n]));return t.join(";\n")}function Tt(e,t){function n(t,n){var o,r=rt(e,t),a=r.content;Ke(r),a&&"normal"!=a&&"none"!=a&&"0px"!=r.width&&(o=e.ownerDocument.createElement(yo),o.style.cssText=St(r),o.textContent=Ct(e,a),e.insertBefore(o,n),i.push(o))}var i,o;return e.tagName==yo?void Dt(e,t):(i=[],n(":before",e.firstChild),n(":after",null),void(i.length>0?(o=e.className,e.className+=" kendo-pdf-hide-pseudo-elements",Dt(e,t),e.className=o,i.forEach(function(t){e.removeChild(t)})):Dt(e,t)))}function Dt(e,t){function i(t){var n,i,o,r,a,s;if(/^td$/i.test(e.tagName)&&(n=Co.table,n&&"collapse"==at(n.style,"border-collapse"))){if(i=lt(n.style,"left").width,o=lt(n.style,"top").width,0===i&&0===o)return t;if(r=n.element.getBoundingClientRect(),a=n.element.rows[0].cells[0],s=a.getBoundingClientRect(),s.top==r.top||s.left==r.left)return ze(t).map(function(e){return{left:e.left+i,top:e.top+o,right:e.right+i,bottom:e.bottom+o,height:e.height,width:e.width}})}return t}function o(e,n,i,o,r,a,s,l){function c(t,n,o){var r=Math.PI/2*t/(t+i),a={x:n.x-t,y:n.y-i},s=new qn({fill:{color:e},stroke:null}).moveTo(0,0);mt(s,o),_t(s,0,n.y,{startAngle:-90,endAngle:-ft(r),radiusX:n.x,radiusY:n.y}),a.x>0&&a.y>0?(s.lineTo(a.x*Math.cos(r),n.y-a.y*Math.sin(r)),_t(s,0,n.y,{startAngle:-ft(r),endAngle:-90,radiusX:a.x,radiusY:a.y,anticlockwise:!0})):a.x>0?s.lineTo(a.x,i).lineTo(0,i):s.lineTo(a.x,i).lineTo(a.x,0),u.append(s.close())}if(!(i<=0)){var d,u=new Jn;mt(u,l),t.append(u),bt(a),bt(s),d=new qn({fill:{color:e},stroke:null}),u.append(d),d.moveTo(a.x?Math.max(a.x,o):0,0).lineTo(n-(s.x?Math.max(s.x,r):0),0).lineTo(n-Math.max(s.x,r),i).lineTo(Math.max(a.x,o),i).close(),a.x&&c(o,a,[-1,0,0,1,a.x,0]),s.x&&c(r,s,[1,0,0,1,n-s.x,0])}}function r(e){var n,i,o=new Jn;for(vt(o,yt(e,D,A,I,E)),t.append(o),F&&(n=new qn({fill:{color:F.toCssRgba()},stroke:null}),n.moveTo(e.left,e.top).lineTo(e.right,e.top).lineTo(e.right,e.bottom).lineTo(e.left,e.bottom).close(),o.append(n)),i=c.length;--i>=0;)a(o,e,c[i],d[i%d.length],u[i%u.length],h[i%h.length],p[i%p.length])}function a(t,n,i,o,r,a,s){function l(t,n,i,l,c){function d(){for(;m.origin.x>n.left;)m.origin.x-=i}function u(){for(;m.origin.y>n.top;)m.origin.y-=l}function h(){for(;m.origin.x<n.right;)c(t,m.clone()),m.origin.x+=i}var p,f,g,m,v,_=i/l,b=n;switch("content-box"==a?(b=ht(b,"border-*-width",e),b=ht(b,"padding-*",e)):"padding-box"==a&&(b=ht(b,"border-*-width",e)),/^\s*auto(\s+auto)?\s*$/.test(s)||("contain"==s?(p=Math.min(b.width/i,b.height/l),i*=p,l*=p):"cover"==s?(p=Math.max(b.width/i,b.height/l),i*=p,l*=p):(f=s.split(/\s+/g),i=/%$/.test(f[0])?b.width*parseFloat(f[0])/100:parseFloat(f[0]),l=1==f.length||"auto"==f[1]?i/_:/%$/.test(f[1])?b.height*parseFloat(f[1])/100:parseFloat(f[1]))),g=r+""){case"bottom":g="50% 100%";break;case"top":g="50% 0";break;case"left":g="0 50%";break;case"right":g="100% 50%";break;case"center":g="50% 50%"}if(g=g.split(/\s+/),1==g.length&&(g[1]="50%"),g[0]=/%$/.test(g[0])?parseFloat(g[0])/100*(b.width-i):parseFloat(g[0]),g[1]=/%$/.test(g[1])?parseFloat(g[1])/100*(b.height-l):parseFloat(g[1]),m=new un([b.left+g[0],b.top+g[1]],[i,l]),"no-repeat"==o)c(t,m);else if("repeat-x"==o)d(),h();else if("repeat-y"==o)for(u();m.origin.y<n.bottom;)c(t,m.clone()),m.origin.y+=l;else if("repeat"==o)for(d(),u(),v=m.origin.clone();m.origin.y<n.bottom;)m.origin.x=v.x,h(),m.origin.y+=l}if(i&&"none"!=i)if("url"==i.type){if(/^url\(\"data:image\/svg/i.test(i.url))return;var c=xo[i.url];c&&c.width>0&&c.height>0&&l(t,n,c.width,c.height,function(e,t){e.append(new Qn(i.url,t))})}else{if("linear"!=i.type)return;l(t,n,n.width,n.height,At(i))}}function s(){function i(n){ct(e,function(){e.style.position="relative";var i=e.ownerDocument.createElement(yo);i.style.position="absolute",i.style.boxSizing="border-box","outside"==r?(i.style.width="6em",i.style.left="-6.8em",i.style.textAlign="right"):i.style.left="0px",n(i),e.insertBefore(i,e.firstChild),Nt(i,t),e.removeChild(i)})}function o(t){var n,i=e.parentNode.children,o=e.getAttribute("kendo-split-index");if(null!=o)return t(0|o,i.length);for(n=0;n<i.length;++n)if(i[n]===e)return t(n,i.length)}var r,a=at(y,"list-style-type");if("none"!=a)switch(r=at(y,"list-style-position"),a){case"circle":case"disc":case"square":i(function(e){e.style.fontSize="60%",e.style.lineHeight="200%",e.style.paddingRight="0.5em",e.style.fontFamily="DejaVu Serif",e.innerHTML={disc:"●",circle:"◯",square:"■"}[a]});break;case"decimal":case"decimal-leading-zero":i(function(e){o(function(t){++t,"decimal-leading-zero"==a&&t<10&&(t="0"+t),e.innerHTML=t+"."})});break;case"lower-roman":case"upper-roman":i(function(e){o(function(t){t=n(t+1),"upper-roman"==a&&(t=t.toUpperCase()),e.innerHTML=t+"."})});break;case"lower-latin":case"lower-alpha":case"upper-latin":case"upper-alpha":i(function(e){o(function(t){t=Ze(t),/^upper/i.test(a)&&(t=t.toUpperCase()),e.innerHTML=t+"."})})}}function l(n,i,a){function s(e){return{x:e.y,y:e.x}}var l,c,d,u,h,p,f,g;if(0!==n.width&&0!==n.height&&(r(n),l=T.width>0&&(i&&"ltr"==M||a&&"rtl"==M),c=C.width>0&&(a&&"ltr"==M||i&&"rtl"==M),0!==x.width||0!==T.width||0!==C.width||0!==S.width)){if(x.color==C.color&&x.color==S.color&&x.color==T.color&&x.width==C.width&&x.width==S.width&&x.width==T.width&&l&&c)return n=ht(n,x.width/2),d=kt(e,n,x.width/2),d.options.stroke={color:x.color,width:x.width},void t.append(d);if(0===D.x&&0===A.x&&0===I.x&&0===E.x&&x.width<2&&T.width<2&&C.width<2&&S.width<2)return x.width>0&&t.append(new qn({stroke:{width:x.width,color:x.color}}).moveTo(n.left,n.top+x.width/2).lineTo(n.right,n.top+x.width/2)),S.width>0&&t.append(new qn({stroke:{width:S.width,color:S.color}}).moveTo(n.left,n.bottom-S.width/2).lineTo(n.right,n.bottom-S.width/2)),l&&t.append(new qn({stroke:{width:T.width,color:T.color}}).moveTo(n.left+T.width/2,n.top).lineTo(n.left+T.width/2,n.bottom)),void(c&&t.append(new qn({stroke:{width:C.width,color:C.color}}).moveTo(n.right-C.width/2,n.top).lineTo(n.right-C.width/2,n.bottom)));u=wt(n,D,A,I,E),h=u.tl,p=u.tr,f=u.br,g=u.bl,o(x.color,n.width,x.width,T.width,C.width,h,p,[1,0,0,1,n.left,n.top]),o(S.color,n.width,S.width,C.width,T.width,f,g,[-1,0,0,-1,n.right,n.bottom]),o(T.color,n.height,T.width,S.width,x.width,s(g),s(h),[0,-1,1,0,n.left,n.bottom]),o(C.color,n.height,C.width,x.width,S.width,s(p),s(f),[0,1,-1,0,n.right,n.top])}}var c,d,u,h,p,f,g,m,v,_,b,w,k,y=rt(e),x=lt(y,"top"),C=lt(y,"right"),S=lt(y,"bottom"),T=lt(y,"left"),D=dt(y,"top-left"),A=dt(y,"top-right"),E=dt(y,"bottom-left"),I=dt(y,"bottom-right"),M=at(y,"direction"),F=at(y,"background-color");if(F=Qe(F),c=Io(at(y,"background-image")),d=Mo(at(y,"background-repeat")),u=Mo(at(y,"background-position")),h=Mo(at(y,"background-origin")),p=Mo(at(y,"background-size")),To&&(f=y.textOverflow,"ellipsis"==f&&(g=e.style.textOverflow,e.style.textOverflow="clip")),ko.msie&&ko.version<10&&(u=Mo(e.currentStyle.backgroundPosition)),m=ht(e.getBoundingClientRect(),"border-*-width",e),function(){var e,n,i,o,r,a,s,l=at(y,"clip"),c=/^\s*rect\((.*)\)\s*$/.exec(l);c&&(e=c[1].split(/[ ,]+/g),n="auto"==e[0]?m.top:parseFloat(e[0])+m.top,i="auto"==e[1]?m.right:parseFloat(e[1])+m.left,o="auto"==e[2]?m.bottom:parseFloat(e[2])+m.top,r="auto"==e[3]?m.left:parseFloat(e[3])+m.left,a=new Jn,s=(new qn).moveTo(r,n).lineTo(i,n).lineTo(i,o).lineTo(r,o).close(),vt(a,s),t.append(a),t=a,nt(s))}(),w=at(y,"display"),"table-row"==w)for(v=[],_=0,b=e.children;_<b.length;++_)v.push(b[_].getBoundingClientRect());else v=e.getClientRects(),1==v.length&&(v=[e.getBoundingClientRect()]);for(v=i(v),_=0;_<v.length;++_)l(v[_],0===_,_==v.length-1);return"A"==e.tagName&&e.href&&!/^#?$/.test(e.getAttribute("href"))&&(Co._avoidLinks&&Ao(e,Co._avoidLinks)||(k=document.createRange(),k.selectNodeContents(e),ze(k.getClientRects()).forEach(function(n){var i=new Jn;i._pdfLink={url:e.href,top:n.top,right:n.right,bottom:n.bottom,left:n.left},t.append(i)}))),v.length>0&&"list-item"==w&&!e.getAttribute("kendo-no-bullet")&&s(v[0]),function(){function n(){var n=kt(e,m,"padding"),i=new Jn;vt(i,n),t.append(i),t=i,nt(n)}Ft(e)?n():/^(hidden|auto|scroll)/.test(at(y,"overflow"))?n():/^(hidden|auto|scroll)/.test(at(y,"overflow-x"))?n():/^(hidden|auto|scroll)/.test(at(y,"overflow-y"))&&n()}(),Et(e,t)||Bt(e,t),To&&"ellipsis"==f&&(e.style.textOverflow=g),t}function At(e){return function(t,n){var i,o,r,a,s,l,c,d,u,h,p,f,g,m=n.width(),v=n.height();switch(e.type){case"linear":switch(i=null!=e.angle?e.angle:Math.PI,e.to){case"top":i=0;break;case"left":i=-Math.PI/2;break;case"bottom":i=Math.PI;break;case"right":i=Math.PI/2;break;case"top left":case"left top":i=-Math.atan2(v,m);break;case"top right":case"right top":i=Math.atan2(v,m);break;case"bottom left":case"left bottom":i=Math.PI+Math.atan2(v,m);break;case"bottom right":case"right bottom":i=Math.PI-Math.atan2(v,m)}e.reverse&&(i-=Math.PI),i%=2*Math.PI,i<0&&(i+=2*Math.PI),o=Math.abs(m*Math.sin(i))+Math.abs(v*Math.cos(i)),r=Math.atan(m*Math.tan(i)/v),a=Math.sin(r),s=Math.cos(r),l=Math.abs(a)+Math.abs(s),c=l/2*a,d=l/2*s,i>Math.PI/2&&i<=3*Math.PI/2&&(c=-c,d=-d),u=[],h=0,p=e.stops.map(function(t,n){var i,r=t.percent;return r?r=parseFloat(r)/100:t.length?r=parseFloat(t.length)/o:0===n?r=0:n==e.stops.length-1&&(r=1),i={color:t.color.toCssRgba(),offset:r},null!=r?(h=r,u.forEach(function(e,t){var n=e.stop;n.offset=e.left+(h-e.left)*(t+1)/(u.length+1)}),u=[]):u.push({left:h,stop:i}),i}),f=[.5-c,.5+d],g=[.5+c,.5-d],t.append(qn.fromRect(n).stroke(null).fill(new si({start:f,end:g,stops:p,userSpace:!1})));break;case"radial":window.console&&window.console.log&&window.console.log("Radial gradients are not yet supported in HTML renderer")}}}function Et(e,t){var n,i,o,r;return e._kendoExportVisual?n=e._kendoExportVisual():window.kendo&&window.kendo.jQuery&&e.getAttribute(window.kendo.attr("role"))&&(i=window.kendo.widgetInstance(window.kendo.jQuery(e)),i&&(i.exportDOMVisual||i.exportVisual)&&(n=i.exportDOMVisual?i.exportDOMVisual():i.exportVisual())),!!n&&(o=new Jn,o.children.push(n),r=e.getBoundingClientRect(),o.transform(A().translate(r.left,r.top)),t.append(o),!0)}function It(e,t,n){var i=ut(e),o=new un([i.left,i.top],[i.width,i.height]),r=new Qn(t,o);vt(r,kt(e,i,"content")),n.append(r)}function Mt(e,t){var n=rt(e),i=rt(t),o=parseFloat(at(n,"z-index")),r=parseFloat(at(i,"z-index")),a=at(n,"position"),s=at(i,"position");return isNaN(o)&&isNaN(r)?/static|absolute/.test(a)&&/static|absolute/.test(s)?0:"static"==a?-1:"static"==s?1:0:isNaN(o)?0===r?0:r>0?-1:1:isNaN(r)?0===o?0:o>0?1:-1:parseFloat(o)-parseFloat(r)}function Ft(e){return/^(?:textarea|select|input)$/i.test(e.tagName)}function Rt(e){return e.selectedOptions&&e.selectedOptions.length>0?e.selectedOptions[0]:e.options[e.selectedIndex]}function Pt(e,t){var n=rt(e),i=at(n,"color"),o=e.getBoundingClientRect();"checkbox"==e.type?(t.append(qn.fromRect(new un([o.left+1,o.top+1],[o.width-2,o.height-2])).stroke(i,1)),e.checked&&t.append((new qn).stroke(i,1.2).moveTo(o.left+.22*o.width,o.top+.55*o.height).lineTo(o.left+.45*o.width,o.top+.75*o.height).lineTo(o.left+.78*o.width,o.top+.22*o.width))):(t.append(new kn(new gn([(o.left+o.right)/2,(o.top+o.bottom)/2],Math.min(o.width-2,o.height-2)/2)).stroke(i,1)),e.checked&&t.append(new kn(new gn([(o.left+o.right)/2,(o.top+o.bottom)/2],Math.min(o.width-8,o.height-8)/2)).fill(i).stroke(null)))}function zt(e,t){var n,i,o,r,a,s=e.tagName.toLowerCase();if("input"==s&&("checkbox"==e.type||"radio"==e.type))return Pt(e,t);if(n=e.parentNode,i=e.ownerDocument,o=i.createElement(yo),o.style.cssText=St(rt(e)),"input"==s&&(o.style.whiteSpace="pre"),"select"!=s&&"textarea"!=s||(o.style.overflow="auto"),"select"==s)if(e.multiple)for(a=0;a<e.options.length;++a)r=i.createElement(yo),r.style.cssText=St(rt(e.options[a])),r.style.display="block",r.textContent=e.options[a].textContent,o.appendChild(r);else r=Rt(e),r&&(o.textContent=r.textContent);else o.textContent=e.value;n.insertBefore(o,e),o.scrollLeft=e.scrollLeft,o.scrollTop=e.scrollTop,e.style.display="none",Bt(o,t),e.style.display="",n.removeChild(o)}function Bt(e,t){var n,i,o,r,a,s,l;switch(Co._stackingContext.element===e&&(Co._stackingContext.group=t),e.tagName.toLowerCase()){case"img":It(e,e.src,t);break;case"canvas":try{It(e,e.toDataURL("image/png"),t)}catch(c){}break;case"textarea":case"input":case"select":zt(e,t);break;default:for(n=[],i=[],o=[],r=e.firstChild;r;r=r.nextSibling)switch(r.nodeType){case 3:/\S/.test(r.data)&&Lt(e,r,t);break;case 1:a=rt(r),s=at(a,"float"),l=at(a,"position"),"static"!=l?o.push(r):"none"!=s?i.push(r):n.push(r)}p(n,Mt).forEach(function(e){Nt(e,t)}),p(i,Mt).forEach(function(e){Nt(e,t)}),p(o,Mt).forEach(function(e){Nt(e,t)})}}function Lt(e,t,n){function i(e){var t,n,i,o,r;if(To||ko.chrome){for(t=e.getClientRects(),n={top:1/0,right:-(1/0),bottom:-(1/0),left:1/0},i=!1,o=0;o<t.length;++o)r=t[o],r.width<=1||r.bottom===y||(n.left=Math.min(r.left,n.left),n.top=Math.min(r.top,n.top),n.right=Math.max(r.right,n.right),n.bottom=Math.max(r.bottom,n.bottom),i=!0);return i?(n.width=n.right-n.left,n.height=n.bottom-n.top,n):e.getBoundingClientRect()}return e.getBoundingClientRect()}function o(){var e,n,o,a,s,u,h,p=c,f=l.substr(c).search(/\S/);if(c+=f,f<0||c>=d)return!0;if(g.setStart(t,c),g.setEnd(t,c+1),e=i(g),n=!1,(v||_>1)&&(f=l.substr(c).search(/\s/),f>=0&&(g.setEnd(t,c+f),o=i(g),o.bottom==e.bottom&&(e=o,n=!0,c+=f))),!n){if(f=function m(n,o,r){g.setEnd(t,o);var a=i(g);return a.bottom!=e.bottom&&n<o?m(n,n+o>>1,o):a.right!=e.right?(e=a,o<r?m(o,o+r>>1,r):o):o}(c,Math.min(d,c+k),d),f==c)return!0;if(c=f,f=(""+g).search(/\s+$/),0===f)return!1;f>0&&(g.setEnd(t,g.startOffset+f),e=i(g))}if(To&&(e=g.getClientRects()[0]),a=""+g,/^(?:pre|pre-wrap)$/i.test(b)){if(/\t/.test(a)){for(s=0,f=p;f<g.startOffset;++f)u=l.charCodeAt(f),9==u?s+=8-s%8:10==u||13==u?s=0:s++;for(;(f=a.search("\t"))>=0;)h=" ".substr(0,8-(s+f)%8),a=a.substr(0,f)+h+a.substr(f+1)}}else a=a.replace(/\s+/g," ");n||(y=e.bottom),r(a,e)}function r(e,t){var i,o,r;switch(To&&!isNaN(h)&&(i=Ro(p),o=(t.top+t.bottom-i)/2,t={top:o,right:t.right,bottom:o+i,left:t.left,height:i,width:t.right-t.left}),w){case"uppercase":e=e.toUpperCase();break;case"lowercase":e=e.toLowerCase();break;case"capitalize":e=e.replace(/(?:^|\s)\S/g,function(e){return e.toUpperCase()})}r=new Do(e,new un([t.left,t.top],[t.width,t.height]),{font:p,fill:{color:f}}),n.append(r)}function a(e){function t(t,i){var o,r;t&&(o=u/12,r=new qn({stroke:{width:o,color:t}}),i-=o,r.moveTo(e.left,i).lineTo(e.right,i),n.append(r))}t(x,e.bottom),t(C,e.bottom-e.height/2.7),t(S,e.top)}var s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C,S,T;if(!it()&&(s=rt(e),!(parseFloat(at(s,"text-indent"))<-500)&&(l=t.data,c=0,d=l.search(/\S\s*$/)+1,d&&(u=at(s,"font-size"),h=at(s,"line-height"),p=[at(s,"font-style"),at(s,"font-variant"),at(s,"font-weight"),u,at(s,"font-family")].join(" "),u=parseFloat(u),h=parseFloat(h),0!==u)))){for(f=at(s,"color"),g=e.ownerDocument.createRange(),m=at(s,"text-align"),v="justify"==m,_=at(s,"column-count",1),b=at(s,"white-space"),w=at(s,"text-transform"),k=e.getBoundingClientRect().width/u*5,0===k&&(k=500),y=null,x=Co.underline,C=Co["line-through"],S=Co.overline,T=x||C||S;!o(););T&&(g.selectNode(t),ze(g.getClientRects()).forEach(a))}}function Ht(e,t,n){var i,o,r,a,s,l;for("auto"!=n?(i=Co._stackingContext.group,n=parseFloat(n)):(i=t,n=0),o=i.children,r=0;r<o.length&&!(null!=o[r]._dom_zIndex&&o[r]._dom_zIndex>n);++r);return a=new Jn,i.insert(r,a),a._dom_zIndex=n,i!==t&&Co._clipbox&&(s=Co._matrix.invert(),l=Co._clipbox.transformCopy(s),vt(a,qn.fromRect(l))),a}function Nt(e,t){var n,i,o,r,a,s,l=rt(e);Ke(l),/^(style|script|link|meta|iframe|svg|col|colgroup)$/i.test(e.tagName)||null!=Co._clipbox&&(n=parseFloat(at(l,"opacity")),i=at(l,"visibility"),o=at(l,"display"),0!==n&&"hidden"!=i&&"none"!=o&&(r=pt(l),s=at(l,"z-index"),(r||n<1)&&"auto"==s&&(s=0),a=Ht(e,t,s),n<1&&a.opacity(n*a.opacity()),et(e,l,a),r?ct(e,function(){var t,n,i,o;st(e.style,"transform","none","important"),st(e.style,"transition","none","important"),"static"==at(l,"position")&&st(e.style,"position","relative","important"),t=e.getBoundingClientRect(),n=t.left+r.origin[0],i=t.top+r.origin[1],o=[1,0,0,1,-n,-i],o=Ot(o,r.matrix),o=Ot(o,[1,0,0,1,n,i]),o=mt(a,o),Co._matrix=Co._matrix.multiplyCopy(o),Tt(e,a)}):Tt(e,a),tt()))}function Ot(e,t){var n=e[0],i=e[1],o=e[2],r=e[3],a=e[4],s=e[5],l=t[0],c=t[1],d=t[2],u=t[3],h=t[4],p=t[5];return[n*l+i*d,n*c+i*u,o*l+r*d,o*c+r*u,a*l+s*d+h,a*c+s*u+p]}var Vt,Wt,Ut,qt,jt,Gt,$t,Yt,Kt,Qt,Xt,Jt,Zt,en,tn,nn,on,rn,an,sn,ln,cn,dn,un,hn,pn,fn,gn,mn,vn,_n,bn,wn,kn,yn,xn,Cn,Sn,Tn,Dn,An,En,In,Mn,Fn,Rn,Pn,zn,Bn,Ln,Hn,Nn,On,Vn,Wn,Un,qn,jn,Gn,$n,Yn,Kn,Qn,Xn,Jn,Zn,ei,ti,ni,ii,oi,ri,ai,si,li,ci,di,ui,hi,pi,fi,gi,mi,vi,_i,bi,wi,ki,yi,xi,Ci,Si,Ti,Di,Ai,Ei,Ii,Mi,Fi,Ri,Pi,zi,Bi,Li,Hi,Ni,Oi,Vi,Wi,Ui,qi,ji,Gi,$i,Yi,Ki,Qi,Xi,Ji,Zi,eo,to,no,io,oo,ro,ao,so,lo,co,uo,ho,po,fo,go,mo,vo,_o,bo,wo,ko,yo,xo,Co,So,To,Do,Ao,Eo,Io,Mo,Fo,Ro,Po;window.kendo=window.kendo||{},Vt=kendo.drawing,Wt=Vt.util,Ut=kendo.Class,qt=kendo.util,jt=kendo.support,Gt=jt.browser,$t=Wt.createPromise,Yt=Wt.promiseAll,Kt={extend:function(e){var t,n=this;for(t in this)"extend"!==t&&(e[t]=n[t])},observers:function(){return this._observers=this._observers||[]},addObserver:function(e){return this._observers?this._observers.push(e):this._observers=[e],this},removeObserver:function(e){var t=this.observers(),n=t.indexOf(e);return n!==-1&&t.splice(n,1),this},trigger:function(e,t){var n,i,o=this._observers;if(o&&!this._suspended)for(n=0;n<o.length;n++)i=o[n],i[e]&&i[e](t);return this},optionsChange:function(e){void 0===e&&(e={}),e.element=this,this.trigger("optionsChange",e)},geometryChange:function(){this.trigger("geometryChange",{element:this})},suspend:function(){return this._suspended=(this._suspended||0)+1,this},resume:function(){return this._suspended=Math.max((this._suspended||0)-1,0),this},_observerField:function(e,t){this[e]&&this[e].removeObserver(this),this[e]=t,t.addObserver(this)}},Qt={1:"i",10:"x",100:"c",2:"ii",20:"xx",200:"cc",3:"iii",30:"xxx",300:"ccc",4:"iv",40:"xl",400:"cd",5:"v",50:"l",500:"d",6:"vi",60:"lx",600:"dc",7:"vii",70:"lxx",700:"dcc",8:"viii",80:"lxxx",800:"dccc",9:"ix",90:"xc",900:"cm",1e3:"m"},Xt="undefined",Jt=1,Zt=Math.PI/180,en=Number.MAX_VALUE,tn=-Number.MAX_VALUE,nn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",on=String.fromCharCode,rn={append:t,arabicToRoman:n,createPromise:$t,defined:i,definitionId:o,deg:r,encodeBase64:s,eventCoordinates:l,eventElement:c,isTransparent:d,last:u,limitValue:h,mergeSort:p,promiseAll:Yt,rad:f,round:m,valueOrDefault:v,bindEvents:_,elementOffset:b,elementSize:y,elementStyles:w,unbindEvents:x,DEG_TO_RAD:Zt,MAX_NUM:en,MIN_NUM:tn},an={}.toString,sn=Ut.extend({init:function(e,t){var n,i,o=this;void 0===t&&(t=""),this.prefix=t;for(n in e)i=e[n],i=o._wrap(i,n),o[n]=i},get:function(e){for(var t,n=e.split("."),i=this;n.length&&i;)t=n.shift(),i=i[t];return i},set:function(e,t){var n=this.get(e);n!==t&&(this._set(e,this._wrap(t,e)),this.optionsChange({field:this.prefix+e,value:t}))},_set:function(e,t){var n,i,o,r=this,a=e.indexOf(".")>=0,s=this,l=e;if(a){for(n=l.split("."),i=this.prefix;n.length>1;)l=n.shift(),i+=l+".",o=s[l],o||(o=new sn({},i),o.addObserver(r),s[l]=o),s=o;l=n[0]}s._clear(l),s[l]=t},_clear:function(e){var t=this[e];t&&t.removeObserver&&t.removeObserver(this)},_wrap:function(e,t){var n=an.call(e),o=e;return null!==o&&i(o)&&"[object Object]"===n&&(e instanceof sn||e instanceof Ut||(o=new sn(o,this.prefix+t+".")),o.addObserver(this)),o}}),Kt.extend(sn.prototype),ln=Ut.extend({init:function(e,t,n,i,o,r){void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=0),void 0===i&&(i=0),void 0===o&&(o=0),void 0===r&&(r=0),this.a=e,this.b=t,this.c=n,this.d=i,this.e=o,this.f=r},multiplyCopy:function(e){return new ln(this.a*e.a+this.c*e.b,this.b*e.a+this.d*e.b,this.a*e.c+this.c*e.d,this.b*e.c+this.d*e.d,this.a*e.e+this.c*e.f+this.e,this.b*e.e+this.d*e.f+this.f)},invert:function(){var e=this,t=e.a,n=e.b,i=e.c,o=e.d,r=e.e,a=e.f,s=t*o-n*i;return 0===s?null:new ln(o/s,-n/s,-i/s,t/s,(i*a-o*r)/s,(n*r-t*a)/s)},clone:function(){return new ln(this.a,this.b,this.c,this.d,this.e,this.f)},equals:function(e){return!!e&&(this.a===e.a&&this.b===e.b&&this.c===e.c&&this.d===e.d&&this.e===e.e&&this.f===e.f)},round:function(e){return this.a=m(this.a,e),this.b=m(this.b,e),this.c=m(this.c,e),this.d=m(this.d,e),this.e=m(this.e,e),this.f=m(this.f,e),this},toArray:function(e){var t,n=[this.a,this.b,this.c,this.d,this.e,this.f];if(i(e))for(t=0;t<n.length;t++)n[t]=m(n[t],e);return n},toString:function(e,t){return void 0===t&&(t=","),this.toArray(e).join(t)}}),ln.translate=function(e,t){return new ln(1,0,0,1,e,t)},ln.unit=function(){return new ln(1,0,0,1,0,0)},ln.rotate=function(e,t,n){var i=new ln;return i.a=Math.cos(f(e)),i.b=Math.sin(f(e)),i.c=-i.b,i.d=i.a,i.e=t-t*i.a+n*i.b||0,i.f=n-n*i.a-t*i.b||0,i},ln.scale=function(e,t){return new ln(e,0,0,t,0,0)},ln.IDENTITY=ln.unit(),cn=Ut.extend({init:function(e,t){this.x=e||0,this.y=t||0},equals:function(e){return e&&e.x===this.x&&e.y===this.y},clone:function(){return new cn(this.x,this.y)},rotate:function(e,t){var n=cn.create(t)||cn.ZERO;return this.transform(ln.rotate(e,n.x,n.y))},translate:function(e,t){return this.x+=e,this.y+=t,this.geometryChange(),this},translateWith:function(e){return this.translate(e.x,e.y)},move:function(e,t){return this.x=this.y=0,this.translate(e,t)},scale:function(e,t){return void 0===t&&(t=e),this.x*=e,this.y*=t,this.geometryChange(),this},scaleCopy:function(e,t){return this.clone().scale(e,t)},transform:function(e){var t=D(e),n=this,i=n.x,o=n.y;return this.x=t.a*i+t.c*o+t.e,this.y=t.b*i+t.d*o+t.f,this.geometryChange(),this},transformCopy:function(e){var t=this.clone();return e&&t.transform(e),t},distanceTo:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},round:function(e){return this.x=m(this.x,e),this.y=m(this.y,e),this.geometryChange(),this},toArray:function(e){var t=i(e),n=t?m(this.x,e):this.x,o=t?m(this.y,e):this.y;return[n,o]},toString:function(e,t){var n,o,r;return void 0===t&&(t=" "),n=this,o=n.x,r=n.y,i(e)&&(o=m(o,e),r=m(r,e)),o+t+r}}),cn.create=function(e,t){if(i(e))return e instanceof cn?e:1===arguments.length&&2===e.length?new cn(e[0],e[1]):new cn(e,t)},cn.min=function(){var e,t,n=arguments,i=en,o=en;for(e=0;e<arguments.length;e++)t=n[e],i=Math.min(t.x,i),o=Math.min(t.y,o);return new cn(i,o)},cn.max=function(){var e,t,n=arguments,i=tn,o=tn;for(e=0;e<arguments.length;e++)t=n[e],i=Math.max(t.x,i),o=Math.max(t.y,o);return new cn(i,o)},cn.minPoint=function(){return new cn(tn,tn)},cn.maxPoint=function(){return new cn(en,en)},Object.defineProperties&&Object.defineProperties(cn,{ZERO:{get:function(){return new cn(0,0)}}}),T(cn.prototype,["x","y"]),Kt.extend(cn.prototype),dn=Ut.extend({init:function(e,t){this.width=e||0,this.height=t||0},equals:function(e){return e&&e.width===this.width&&e.height===this.height},clone:function(){return new dn(this.width,this.height)},toArray:function(e){var t=i(e),n=t?m(this.width,e):this.width,o=t?m(this.height,e):this.height;return[n,o]}}),dn.create=function(e,t){if(i(e))return e instanceof dn?e:1===arguments.length&&2===e.length?new dn(e[0],e[1]):new dn(e,t)},Object.defineProperties&&Object.defineProperties(dn,{ZERO:{get:function(){return new dn(0,0)}}}),T(dn.prototype,["width","height"]),Kt.extend(dn.prototype),un=Ut.extend({init:function(e,t){void 0===e&&(e=new cn),void 0===t&&(t=new dn),this.setOrigin(e),this.setSize(t)},clone:function(){return new un(this.origin.clone(),this.size.clone())},equals:function(e){return e&&e.origin.equals(this.origin)&&e.size.equals(this.size)},setOrigin:function(e){return this._observerField("origin",cn.create(e)),this.geometryChange(),this},getOrigin:function(){return this.origin},setSize:function(e){return this._observerField("size",dn.create(e)),this.geometryChange(),this},getSize:function(){return this.size},width:function(){return this.size.width},height:function(){return this.size.height},topLeft:function(){return this.origin.clone()},bottomRight:function(){return this.origin.clone().translate(this.width(),this.height())},topRight:function(){return this.origin.clone().translate(this.width(),0)},bottomLeft:function(){return this.origin.clone().translate(0,this.height())},center:function(){return this.origin.clone().translate(this.width()/2,this.height()/2)},bbox:function(e){var t=this.topLeft().transformCopy(e),n=this.topRight().transformCopy(e),i=this.bottomRight().transformCopy(e),o=this.bottomLeft().transformCopy(e);return un.fromPoints(t,n,i,o)},transformCopy:function(e){return un.fromPoints(this.topLeft().transform(e),this.bottomRight().transform(e))},expand:function(e,t){return void 0===t&&(t=e),this.size.width+=2*e,this.size.height+=2*t,this.origin.translate(-e,-t),this},expandCopy:function(e,t){return this.clone().expand(e,t)},containsPoint:function(e){var t=this.origin,n=this.bottomRight();return!(e.x<t.x||e.y<t.y||n.x<e.x||n.y<e.y)},_isOnPath:function(e,t){var n=this.expandCopy(t,t),i=this.expandCopy(-t,-t);return n.containsPoint(e)&&!i.containsPoint(e)}}),un.fromPoints=function(){var e=cn.min.apply(null,arguments),t=cn.max.apply(null,arguments),n=new dn(t.x-e.x,t.y-e.y);return new un(e,n)},un.union=function(e,t){return un.fromPoints(cn.min(e.topLeft(),t.topLeft()),cn.max(e.bottomRight(),t.bottomRight()))},un.intersect=function(e,t){var n={left:e.topLeft().x, +top:e.topLeft().y,right:e.bottomRight().x,bottom:e.bottomRight().y},i={left:t.topLeft().x,top:t.topLeft().y,right:t.bottomRight().x,bottom:t.bottomRight().y};if(n.left<=i.right&&i.left<=n.right&&n.top<=i.bottom&&i.top<=n.bottom)return un.fromPoints(new cn(Math.max(n.left,i.left),Math.max(n.top,i.top)),new cn(Math.min(n.right,i.right),Math.min(n.bottom,i.bottom)))},Kt.extend(un.prototype),hn=Ut.extend({init:function(e){void 0===e&&(e=ln.unit()),this._matrix=e},clone:function(){return new hn(this._matrix.clone())},equals:function(e){return e&&e._matrix.equals(this._matrix)},translate:function(e,t){return this._matrix=this._matrix.multiplyCopy(ln.translate(e,t)),this._optionsChange(),this},scale:function(e,t,n){void 0===t&&(t=e),void 0===n&&(n=null);var i=n;return i&&(i=cn.create(i),this._matrix=this._matrix.multiplyCopy(ln.translate(i.x,i.y))),this._matrix=this._matrix.multiplyCopy(ln.scale(e,t)),i&&(this._matrix=this._matrix.multiplyCopy(ln.translate(-i.x,-i.y))),this._optionsChange(),this},rotate:function(e,t){var n=cn.create(t)||cn.ZERO;return this._matrix=this._matrix.multiplyCopy(ln.rotate(e,n.x,n.y)),this._optionsChange(),this},multiply:function(e){var t=D(e);return this._matrix=this._matrix.multiplyCopy(t),this._optionsChange(),this},matrix:function(e){return e?(this._matrix=e,this._optionsChange(),this):this._matrix},_optionsChange:function(){this.optionsChange({field:"transform",value:this})}}),Kt.extend(hn.prototype),pn=Ut.extend({init:function(e){this._initOptions(e)},_initOptions:function(e){var t,n;void 0===e&&(e={}),t=e.clip,n=e.transform,n&&(e.transform=A(n)),t&&!t.id&&(t.id=o()),this.options=new sn(e),this.options.addObserver(this)},transform:function(e){return i(e)?void this.options.set("transform",A(e)):this.options.get("transform")},parentTransform:function(){for(var e,t,n=this;n.parent;)n=n.parent,t=n.transform(),t&&(e=t.matrix().multiplyCopy(e||ln.unit()));if(e)return A(e)},currentTransform:function(e){var t,n,i,o;if(void 0===e&&(e=this.parentTransform()),t=this.transform(),n=D(t),i=D(e),o=n&&i?i.multiplyCopy(n):n||i)return A(o)},visible:function(e){return i(e)?(this.options.set("visible",e),this):this.options.get("visible")!==!1},clip:function(e){var t=this.options;return i(e)?(e&&!e.id&&(e.id=o()),t.set("clip",e),this):t.get("clip")},opacity:function(e){return i(e)?(this.options.set("opacity",e),this):v(this.options.get("opacity"),1)},clippedBBox:function(e){var t,n=this._clippedBBox(e);if(n)return t=this.clip(),t?un.intersect(n,t.bbox(e)):n},containsPoint:function(e,t){var n,i;return!!this.visible()&&(n=this.currentTransform(t),i=e,n&&(i=e.transformCopy(n.matrix().invert())),this._hasFill()&&this._containsPoint(i)||this._isOnPath&&this._hasStroke()&&this._isOnPath(i))},_hasFill:function(){var e=this.options.fill;return e&&!d(e.color)},_hasStroke:function(){var e=this.options.stroke;return e&&e.width>0&&!d(e.color)},_clippedBBox:function(e){return this.bbox(e)}}),pn.prototype.nodeType="Element",Kt.extend(pn.prototype),fn=Math.PI/2,gn=Ut.extend({init:function(e,t){void 0===e&&(e=new cn),void 0===t&&(t=0),this.setCenter(e),this.setRadius(t)},setCenter:function(e){return this._observerField("center",cn.create(e)),this.geometryChange(),this},getCenter:function(){return this.center},equals:function(e){return e&&e.center.equals(this.center)&&e.radius===this.radius},clone:function(){return new gn(this.center.clone(),this.radius)},pointAt:function(e){return this._pointAt(f(e))},bbox:function(e){var t,n,i,o,r=this,a=E(this.center,this.radius,this.radius,e),s=cn.maxPoint(),l=cn.minPoint();for(t=0;t<4;t++)n=r._pointAt(a.x+t*fn).transformCopy(e),i=r._pointAt(a.y+t*fn).transformCopy(e),o=new cn(n.x,i.y),s=cn.min(s,o),l=cn.max(l,o);return un.fromPoints(s,l)},_pointAt:function(e){var t=this,n=t.center,i=t.radius;return new cn(n.x+i*Math.cos(e),n.y+i*Math.sin(e))},containsPoint:function(e){var t=this,n=t.center,i=t.radius,o=Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2)<=Math.pow(i,2);return o},_isOnPath:function(e,t){var n=this,i=n.center,o=n.radius,r=i.distanceTo(e);return o-t<=r&&r<=o+t}}),T(gn.prototype,["radius"]),Kt.extend(gn.prototype),mn="Gradient",vn={extend:function(e){e.fill=this.fill,e.stroke=this.stroke},fill:function(e,t){var n,o=this.options;return i(e)?(e&&e.nodeType!==mn?(n={color:e},i(t)&&(n.opacity=t),o.set("fill",n)):o.set("fill",e),this):o.get("fill")},stroke:function(e,t,n){return i(e)?(this.options.set("stroke.color",e),i(t)&&this.options.set("stroke.width",t),i(n)&&this.options.set("stroke.opacity",n),this):this.options.get("stroke")}},_n=""+ln.IDENTITY,bn={extend:function(e){e.bbox=this.bbox,e.geometryChange=this.geometryChange},bbox:function(e){var t,n,i=D(this.currentTransform(e)),o=i?""+i:_n;return this._bboxCache&&this._matrixHash===o?t=this._bboxCache.clone():(t=this._bbox(i),this._bboxCache=t?t.clone():null,this._matrixHash=o),n=this.options.get("stroke.width"),n&&t&&t.expand(n/2),t},geometryChange:function(){delete this._bboxCache,this.trigger("geometryChange",{element:this})}},wn="#000",kn=pn.extend({init:function(e,t){void 0===e&&(e=new gn),void 0===t&&(t={}),pn.fn.init.call(this,t),this.geometry(e),i(this.options.stroke)||this.stroke(wn)},rawBBox:function(){return this._geometry.bbox()},_bbox:function(e){return this._geometry.bbox(e)},_containsPoint:function(e){return this.geometry().containsPoint(e)},_isOnPath:function(e){return this.geometry()._isOnPath(e,this.options.stroke.width/2)}}),kn.prototype.nodeType="Circle",vn.extend(kn.prototype),bn.extend(kn.prototype),M(kn.prototype,["geometry"]),yn=10,xn=45,Cn=Math.pow,Sn=Ut.extend({init:function(e,t){void 0===e&&(e=new cn),void 0===t&&(t={}),this.setCenter(e),this.radiusX=t.radiusX,this.radiusY=t.radiusY||t.radiusX,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.anticlockwise=t.anticlockwise||!1,this.xRotation=t.xRotation},clone:function(){return new Sn(this.center,{radiusX:this.radiusX,radiusY:this.radiusY,startAngle:this.startAngle,endAngle:this.endAngle,anticlockwise:this.anticlockwise})},setCenter:function(e){return this._observerField("center",cn.create(e)),this.geometryChange(),this},getCenter:function(){return this.center},pointAt:function(e){var t=this.center,n=f(e);return new cn(t.x+this.radiusX*Math.cos(n),t.y+this.radiusY*Math.sin(n))},curvePoints:function(){var e,t,n,i,o=this,r=this.startAngle,a=this.anticlockwise?-1:1,s=[this.pointAt(r)],l=this._arcInterval(),c=l.endAngle-l.startAngle,d=Math.ceil(c/xn),u=c/d,h=r;for(this.xRotation&&(e=A().rotate(this.xRotation,this.center)),t=1;t<=d;t++)n=h+a*u,i=o._intervalCurvePoints(h,n,e),s.push(i.cp1,i.cp2,i.p2),h=n;return s},bbox:function(e){for(var t,n,i=this,o=this._arcInterval(),a=o.startAngle,s=o.endAngle,l=E(this.center,this.radiusX,this.radiusY,e),c=r(l.x),d=r(l.y),u=this.pointAt(s).transformCopy(e),h=L(c,a),p=L(d,a),f=this.pointAt(a).transformCopy(e),g=cn.min(f,u),m=cn.max(f,u);h<s||p<s;)t=void 0,h<s&&(t=i.pointAt(h).transformCopy(e),h+=90),n=void 0,p<s&&(n=i.pointAt(p).transformCopy(e),p+=90),f=new cn(t.x,n.y),g=cn.min(g,f),m=cn.max(m,f);return un.fromPoints(g,m)},_arcInterval:function(){var e,t=this,n=t.startAngle,i=t.endAngle,o=t.anticlockwise;return o&&(e=n,n=i,i=e),(n>i||o&&n===i)&&(i+=360),{startAngle:n,endAngle:i}},_intervalCurvePoints:function(e,t,n){var i=this.pointAt(e),o=this.pointAt(t),r=this._derivativeAt(e),a=this._derivativeAt(t),s=(f(t)-f(e))/3,l=new cn(i.x+s*r.x,i.y+s*r.y),c=new cn(o.x-s*a.x,o.y-s*a.y);return n&&(i.transform(n),o.transform(n),l.transform(n),c.transform(n)),{p1:i,cp1:l,cp2:c,p2:o}},_derivativeAt:function(e){var t=f(e);return new cn(-this.radiusX*Math.sin(t),this.radiusY*Math.cos(t))},containsPoint:function(e){var t,n,i,o=this._arcInterval(),r=o.endAngle-o.startAngle,a=this,s=a.center,l=a.radiusX,c=a.radiusY,d=s.distanceTo(e),u=Math.atan2(e.y-s.y,e.x-s.x),h=l*c/Math.sqrt(Cn(l,2)*Cn(Math.sin(u),2)+Cn(c,2)*Cn(Math.cos(u),2)),p=this.pointAt(this.startAngle).round(yn),f=this.pointAt(this.endAngle).round(yn),g=P(s,e.round(yn),p,f);return r<180?t=g&&R(s.distanceTo(g),d)&&R(d,h):(n=z(s.x,s.y,l,c,e.x,e.y),360!==n&&(n=(360+n)%360),i=o.startAngle<=n&&n<=o.endAngle,t=i&&R(d,h)||!i&&(!g||g.equals(e))),t},_isOnPath:function(e,t){var n,i=this._arcInterval(),o=this.center,r=z(o.x,o.y,this.radiusX,this.radiusY,e.x,e.y);return 360!==r&&(r=(360+r)%360),n=i.startAngle<=r&&r<=i.endAngle,n&&this.pointAt(r).distanceTo(e)<=t}}),Sn.fromPoints=function(e,t,n,i,o,r,a){var s=B({x1:e.x,y1:e.y,x2:t.x,y2:t.y,rx:n,ry:i,largeArc:o,swipe:r,rotation:a});return new Sn(s.center,{startAngle:s.startAngle,endAngle:s.endAngle,radiusX:s.radiusX,radiusY:s.radiusY,xRotation:s.xRotation,anticlockwise:0===r})},T(Sn.prototype,["radiusX","radiusY","startAngle","endAngle","anticlockwise"]),Kt.extend(Sn.prototype),Tn=[].push,Dn=[].pop,An=[].splice,En=[].shift,In=[].slice,Mn=[].unshift,Fn=Ut.extend({init:function(e){void 0===e&&(e=[]),this.length=0,this._splice(0,e.length,e)},elements:function(e){return e?(this._splice(0,this.length,e),this._change(),this):this.slice(0)},push:function(){var e=arguments,t=Tn.apply(this,e);return this._add(e),t},slice:function(){return In.call(this)},pop:function(){var e=this.length,t=Dn.apply(this);return e&&this._remove([t]),t},splice:function(e,t){var n=In.call(arguments,2),i=this._splice(e,t,n);return this._change(),i},shift:function(){var e=this.length,t=En.apply(this);return e&&this._remove([t]),t},unshift:function(){var e=arguments,t=Mn.apply(this,e);return this._add(e),t},indexOf:function(e){var t,n=this,i=this.length;for(t=0;t<i;t++)if(n[t]===e)return t;return-1},_splice:function(e,t,n){var i=An.apply(this,[e,t].concat(n));return this._clearObserver(i),this._setObserver(n),i},_add:function(e){this._setObserver(e),this._change()},_remove:function(e){this._clearObserver(e),this._change()},_setObserver:function(e){var t,n=this;for(t=0;t<e.length;t++)e[t].addObserver(n)},_clearObserver:function(e){var t,n=this;for(t=0;t<e.length;t++)e[t].removeObserver(n)},_change:function(){}}),Kt.extend(Fn.prototype),Rn=Fn.extend({_change:function(){this.geometryChange()}}),Pn=Ut.extend({init:function(e,t){void 0===e&&(e=0),void 0===t&&(t=0),this.real=e,this.img=t},add:function(e){return new Pn(m(this.real+e.real,yn),m(this.img+e.img,yn))},addConstant:function(e){return new Pn(this.real+e,this.img)},negate:function(){return new Pn((-this.real),(-this.img))},multiply:function(e){return new Pn(this.real*e.real-this.img*e.img,this.real*e.img+this.img*e.real)},multiplyConstant:function(e){return new Pn(this.real*e,this.img*e)},nthRoot:function(e){var t=Math.atan2(this.img,this.real),n=Math.sqrt(Math.pow(this.img,2)+Math.pow(this.real,2)),i=Math.pow(n,1/e);return new Pn(i*Math.cos(t/e),i*Math.sin(t/e))},equals:function(e){return this.real===e.real&&this.img===e.img},isReal:function(){return 0===this.img}}),zn=Ut.extend({init:function(e,t,n){this.anchor(e||new cn),this.controlIn(t),this.controlOut(n)},bboxTo:function(e,t){var n,i=this.anchor().transformCopy(t),o=e.anchor().transformCopy(t);return n=this.controlOut()&&e.controlIn()?this._curveBoundingBox(i,this.controlOut().transformCopy(t),e.controlIn().transformCopy(t),o):this._lineBoundingBox(i,o)},_lineBoundingBox:function(e,t){return un.fromPoints(e,t)},_curveBoundingBox:function(e,t,n,i){var o=[e,t,n,i],r=this._curveExtremesFor(o,"x"),a=this._curveExtremesFor(o,"y"),s=K([r.min,r.max,e.x,i.x]),l=K([a.min,a.max,e.y,i.y]);return un.fromPoints(new cn(s.min,l.min),new cn(s.max,l.max))},_curveExtremesFor:function(e,t){var n=this._curveExtremes(e[0][t],e[1][t],e[2][t],e[3][t]);return{min:V(n.min,t,e),max:V(n.max,t,e)}},_curveExtremes:function(e,t,n,i){var o,r,a=e-3*t+3*n-i,s=-2*(e-2*t+n),l=e-t,c=Math.sqrt(s*s-4*a*l),d=0,u=1;return 0===a?0!==s&&(d=u=-l/s):isNaN(c)||(d=(-s+c)/(2*a),u=(-s-c)/(2*a)),o=Math.max(Math.min(d,u),0),(o<0||o>1)&&(o=0),r=Math.min(Math.max(d,u),1),(r>1||r<0)&&(r=1),{min:o,max:r}},_intersectionsTo:function(e,t){var n;return n=this.controlOut()&&e.controlIn()?$([this.anchor(),this.controlOut(),e.controlIn(),e.anchor()],t,this.bboxTo(e)):Y(this.anchor(),e.anchor(),t)},_isOnCurveTo:function(e,t,n,i){var o,r,a,s,l,c,d,u=this.bboxTo(e).expand(n,n);if(u.containsPoint(t))return o=this.anchor(),r=this.controlOut(),a=e.controlIn(),s=e.anchor(),"start"===i&&o.distanceTo(t)<=n?!O(o,r,t):"end"===i&&s.distanceTo(t)<=n?!O(s,a,t):(l=[o,r,a,s],!(!G(l,t,"x","y",n)&&!G(l,t,"y","x",n))||(c=A().rotate(45,t),d=[o.transformCopy(c),r.transformCopy(c),a.transformCopy(c),s.transformCopy(c)],G(d,t,"x","y",n)||G(d,t,"y","x",n)))},_isOnLineTo:function(e,t,n){var i=this.anchor(),o=e.anchor(),a=r(Math.atan2(o.y-i.y,o.x-i.x)),s=new un([i.x,i.y-n/2],[i.distanceTo(o),n]);return s.containsPoint(t.transformCopy(A().rotate(-a,i)))},_isOnPathTo:function(e,t,n,i){var o;return o=this.controlOut()&&e.controlIn()?this._isOnCurveTo(e,t,n/2,i):this._isOnLineTo(e,t,n)}}),N(zn.prototype,["anchor","controlIn","controlOut"]),Kt.extend(zn.prototype),Bn=pn.extend({init:function(e){pn.fn.init.call(this,e),this.paths=new Rn,this.paths.addObserver(this),i(this.options.stroke)||this.stroke("#000")},moveTo:function(e,t){var n=new qn;return n.moveTo(e,t),this.paths.push(n),this},lineTo:function(e,t){return this.paths.length>0&&u(this.paths).lineTo(e,t),this},curveTo:function(e,t,n){return this.paths.length>0&&u(this.paths).curveTo(e,t,n),this},arc:function(e,t,n,i,o){return this.paths.length>0&&u(this.paths).arc(e,t,n,i,o),this},arcTo:function(e,t,n,i,o,r){return this.paths.length>0&&u(this.paths).arcTo(e,t,n,i,o,r),this},close:function(){return this.paths.length>0&&u(this.paths).close(),this},_bbox:function(e){return Q(this.paths,!0,e)},rawBBox:function(){return Q(this.paths,!1)},_containsPoint:function(e){var t,n=this.paths;for(t=0;t<n.length;t++)if(n[t]._containsPoint(e))return!0;return!1},_isOnPath:function(e){var t,n=this.paths,i=this.options.stroke.width;for(t=0;t<n.length;t++)if(n[t]._isOnPath(e,i))return!0;return!1},_clippedBBox:function(e){return X(this.paths,this.currentTransform(e))}}),Bn.prototype.nodeType="MultiPath",vn.extend(Bn.prototype),bn.extend(Bn.prototype),Ln={l:function(e,t){var n,i,o=t.parameters,r=t.position;for(n=0;n<o.length;n+=2)i=new cn(o[n],o[n+1]),t.isRelative&&i.translateWith(r),e.lineTo(i.x,i.y),r.x=i.x,r.y=i.y},c:function(e,t){var n,i,o,r,a=t.parameters,s=t.position;for(n=0;n<a.length;n+=6)i=new cn(a[n],a[n+1]),o=new cn(a[n+2],a[n+3]),r=new cn(a[n+4],a[n+5]),t.isRelative&&(o.translateWith(s),i.translateWith(s),r.translateWith(s)),e.curveTo(i,o,r),s.x=r.x,s.y=r.y},v:function(e,t){var n=t.isRelative?0:t.position.x;J(t.parameters,!0,n),this.l(e,t)},h:function(e,t){var n=t.isRelative?0:t.position.y;J(t.parameters,!1,n),this.l(e,t)},a:function(e,t){var n,i,o,r,a,s,l,c=t.parameters,d=t.position;for(n=0;n<c.length;n+=7)i=c[n],o=c[n+1],r=c[n+2],a=c[n+3],s=c[n+4],l=new cn(c[n+5],c[n+6]),t.isRelative&&l.translateWith(d),d.x===l.x&&d.y===l.y||(e.arcTo(l,i,o,a,s,r),d.x=l.x,d.y=l.y)},s:function(e,t){var n,i,o,r,a,s=t.parameters,l=t.position,c=t.previousCommand;for("s"!==c&&"c"!==c||(n=u(u(e.paths).segments).controlIn()),i=0;i<s.length;i+=4)o=new cn(s[i],s[i+1]),r=new cn(s[i+2],s[i+3]),a=void 0,t.isRelative&&(o.translateWith(l),r.translateWith(l)),a=n?Z(n,l):l.clone(),n=o,e.curveTo(a,o,r),l.x=r.x,l.y=r.y},q:function(e,t){var n,i,o,r,a=t.parameters,s=t.position;for(n=0;n<a.length;n+=4)i=new cn(a[n],a[n+1]),o=new cn(a[n+2],a[n+3]),t.isRelative&&(i.translateWith(s),o.translateWith(s)),r=ee(s,i,o),e.curveTo(r.controlOut,r.controlIn,o),s.x=o.x,s.y=o.y},t:function(e,t){var n,i,o,r,a,s=t.parameters,l=t.position,c=t.previousCommand;for("q"!==c&&"t"!==c||(i=u(u(e.paths).segments),n=i.controlIn().clone().translateWith(l.scaleCopy(-1/3)).scale(1.5)),o=0;o<s.length;o+=2)r=new cn(s[o],s[o+1]),t.isRelative&&r.translateWith(l),n=n?Z(n,l):l.clone(),a=ee(l,n,r),e.curveTo(a.controlOut,a.controlIn,r),l.x=r.x,l.y=r.y}},Hn=1/3,Nn=/([a-df-z]{1})([^a-df-z]*)(z)?/gi,On=/[,\s]?([+\-]?(?:\d*\.\d+|\d+)(?:[eE][+\-]?\d+)?)/g,Vn="m",Wn="z",Un=Ut.extend({parse:function(e,t){var n,i=new Bn(t),o=new cn;return e.replace(Nn,function(e,t,r,a){var s=t.toLowerCase(),l=s===t,c=te(r.trim());if(s===Vn&&(l?(o.x+=c[0],o.y+=c[1]):(o.x=c[0],o.y=c[1]),i.moveTo(o.x,o.y),c.length>2&&(s="l",c.splice(0,2))),Ln[s])Ln[s](i,{parameters:c,position:o,isRelative:l,previousCommand:n}),a&&a.toLowerCase()===Wn&&i.close();else if(s!==Vn)throw Error("Error while parsing SVG path. Unsupported command: "+s);n=s}),i}}),Un.current=new Un,qn=pn.extend({init:function(e){pn.fn.init.call(this,e),this.segments=new Rn,this.segments.addObserver(this),i(this.options.stroke)||(this.stroke("#000"),i(this.options.stroke.lineJoin)||this.options.set("stroke.lineJoin","miter"))},moveTo:function(e,t){return this.suspend(),this.segments.elements([]),this.resume(),this.lineTo(e,t),this},lineTo:function(e,t){var n=i(t)?new cn(e,t):e,o=new zn(n);return this.segments.push(o),this},curveTo:function(e,t,n){var i,o;return this.segments.length>0&&(i=u(this.segments),o=new zn(n,t),this.suspend(),i.controlOut(e),this.resume(),this.segments.push(o)),this},arc:function(e,t,n,i,o){var r,a,s,l,c;return this.segments.length>0&&(r=u(this.segments),a=r.anchor(),s=f(e),l=new cn(a.x-n*Math.cos(s),a.y-i*Math.sin(s)),c=new Sn(l,{startAngle:e,endAngle:t,radiusX:n,radiusY:i,anticlockwise:o}),this._addArcSegments(c)),this},arcTo:function(e,t,n,i,o,r){var a,s,l;return this.segments.length>0&&(a=u(this.segments),s=a.anchor(),l=Sn.fromPoints(s,e,t,n,i,o,r),this._addArcSegments(l)),this},_addArcSegments:function(e){var t,n,i=this;for(this.suspend(),t=e.curvePoints(),n=1;n<t.length;n+=3)i.curveTo(t[n],t[n+1],t[n+2]);this.resume(),this.geometryChange()},close:function(){return this.options.closed=!0,this.geometryChange(),this},rawBBox:function(){return this._bbox()},_containsPoint:function(e){var t,n,i,o=this.segments,r=o.length,a=0;for(i=1;i<r;i++)t=o[i-1],n=o[i],a+=t._intersectionsTo(n,e);return!this.options.closed&&o[0].anchor().equals(o[r-1].anchor())||(a+=Y(o[0].anchor(),o[r-1].anchor(),e)),a%2!==0},_isOnPath:function(e,t){var n,i=this.segments,o=i.length,r=t||this.options.stroke.width;if(o>1){if(i[0]._isOnPathTo(i[1],e,r,"start"))return!0;for(n=2;n<=o-2;n++)if(i[n-1]._isOnPathTo(i[n],e,r))return!0;if(i[o-2]._isOnPathTo(i[o-1],e,r,"end"))return!0}return!1},_bbox:function(e){var t,n,i,o,r=this.segments,a=r.length;if(1===a)n=r[0].anchor().transformCopy(e),t=new un(n,dn.ZERO);else if(a>0)for(i=1;i<a;i++)o=r[i-1].bboxTo(r[i],e),t=t?un.union(t,o):o;return t}}),qn.fromRect=function(e,t){return new qn(t).moveTo(e.topLeft()).lineTo(e.topRight()).lineTo(e.bottomRight()).lineTo(e.bottomLeft()).close()},qn.fromPoints=function(e,t){var n,i,o;if(e){for(n=new qn(t),i=0;i<e.length;i++)o=cn.create(e[i]),o&&(0===i?n.moveTo(o):n.lineTo(o));return n}},qn.fromArc=function(e,t){var n=new qn(t),i=e.startAngle,o=e.pointAt(i);return n.moveTo(o.x,o.y),n.arc(i,e.endAngle,e.radiusX,e.radiusY,e.anticlockwise),n},qn.prototype.nodeType="Path",vn.extend(qn.prototype),bn.extend(qn.prototype),qn.parse=function(e,t){return Un.current.parse(e,t)},jn="#000",Gn=pn.extend({init:function(e,t){void 0===e&&(e=new Sn),void 0===t&&(t={}),pn.fn.init.call(this,t),this.geometry(e),i(this.options.stroke)||this.stroke(jn)},_bbox:function(e){return this._geometry.bbox(e)},rawBBox:function(){return this.geometry().bbox()},toPath:function(){var e,t=new qn,n=this.geometry().curvePoints();if(n.length>0)for(t.moveTo(n[0].x,n[0].y),e=1;e<n.length;e+=3)t.curveTo(n[e],n[e+1],n[e+2]);return t},_containsPoint:function(e){return this.geometry().containsPoint(e)},_isOnPath:function(e){return this.geometry()._isOnPath(e,this.options.stroke.width/2)}}),Gn.prototype.nodeType="Arc",vn.extend(Gn.prototype),bn.extend(Gn.prototype),M(Gn.prototype,["geometry"]),$n="12px sans-serif",Yn="#000",Kn=pn.extend({init:function(e,t,n){void 0===t&&(t=new cn),void 0===n&&(n={}),pn.fn.init.call(this,n),this.content(e),this.position(t),this.options.font||(this.options.font=$n),i(this.options.fill)||this.fill(Yn)},content:function(e){return i(e)?(this.options.set("content",e),this):this.options.get("content")},measure:function(){var e=qt.measureText(this.content(),{font:this.options.get("font")});return e},rect:function(){var e=this.measure(),t=this.position().clone();return new un(t,[e.width,e.height])},bbox:function(e){var t=D(this.currentTransform(e));return this.rect().bbox(t)},rawBBox:function(){return this.rect().bbox()},_containsPoint:function(e){return this.rect().containsPoint(e)}}),Kn.prototype.nodeType="Text",vn.extend(Kn.prototype),N(Kn.prototype,["position"]),Qn=pn.extend({init:function(e,t,n){void 0===t&&(t=new un),void 0===n&&(n={}),pn.fn.init.call(this,n),this.src(e),this.rect(t)},src:function(e){return i(e)?(this.options.set("src",e),this):this.options.get("src")},bbox:function(e){var t=D(this.currentTransform(e));return this._rect.bbox(t)},rawBBox:function(){return this._rect.bbox()},_containsPoint:function(e){return this._rect.containsPoint(e)},_hasFill:function(){return this.src()}}),Qn.prototype.nodeType="Image",M(Qn.prototype,["rect"]),Xn={extend:function(e,t){e.traverse=function(e){var n,i,o=this[t];for(n=0;n<o.length;n++)i=o[n],i.traverse?i.traverse(e):e(i);return this}}},Jn=pn.extend({init:function(e){pn.fn.init.call(this,e),this.children=[]},childrenChange:function(e,t,n){this.trigger("childrenChange",{action:e,items:t,index:n})},append:function(){return t(this.children,arguments),this._reparent(arguments,this),this.childrenChange("add",arguments),this},insert:function(e,t){return this.children.splice(e,0,t),t.parent=this,this.childrenChange("add",[t],e),this},insertAt:function(e,t){return this.insert(t,e)},remove:function(e){var t=this.children.indexOf(e);return t>=0&&(this.children.splice(t,1),e.parent=null,this.childrenChange("remove",[e],t)),this},removeAt:function(e){if(0<=e&&e<this.children.length){var t=this.children[e];this.children.splice(e,1),t.parent=null,this.childrenChange("remove",[t],e)}return this},clear:function(){var e=this.children;return this.children=[],this._reparent(e,null),this.childrenChange("remove",e,0),this},bbox:function(e){return Q(this.children,!0,this.currentTransform(e))},rawBBox:function(){return Q(this.children,!1)},_clippedBBox:function(e){return X(this.children,this.currentTransform(e))},currentTransform:function(e){return pn.prototype.currentTransform.call(this,e)||null},containsPoint:function(e,t){var n,i,o;if(this.visible())for(n=this.children,i=this.currentTransform(t),o=0;o<n.length;o++)if(n[o].containsPoint(e,i))return!0;return!1},_reparent:function(e,t){var n,i,o,r=this;for(n=0;n<e.length;n++)i=e[n],o=i.parent,o&&o!==r&&o.remove&&o.remove(i),i.parent=t}}),Jn.prototype.nodeType="Group",Xn.extend(Jn.prototype,"children"),Zn={alignContent:"start",justifyContent:"start",alignItems:"start",spacing:0,orientation:"horizontal",lineSpacing:0,wrap:!0,revers:!1},ei=function(e,t){e.forEach(t)},ti=function(e,t){var n,i=e.length;for(n=i-1;n>=0;n--)t(e[n],n)},ni=Jn.extend({init:function(t,n){Jn.fn.init.call(this,e.extend({},Zn,n)),this._rect=t,this._fieldMap={}},rect:function(e){return e?(this._rect=e,this):this._rect},_initMap:function(){var e=this.options,t=this._fieldMap;"horizontal"===e.orientation?(t.sizeField="width",t.groupsSizeField="height",t.groupAxis="x",t.groupsAxis="y"):(t.sizeField="height",t.groupsSizeField="width",t.groupAxis="y",t.groupsAxis="x"),e.reverse?(this.forEach=ti,this.justifyAlign=oe):(this.forEach=ei,this.justifyAlign=ie)},reflow:function(){var e,t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C=this;if(this._rect&&0!==this.children.length){for(this._initMap(),this.options.transform&&this.transform(null),e=this.options,t=this._rect,n=this._initGroups(),i=n.groups,o=n.groupsSize,r=this._fieldMap,a=r.sizeField,s=r.groupsSizeField,l=r.groupAxis,c=r.groupsAxis,d=new cn,u=new cn,h=new dn,p=ie(o,t,e.alignContent,c,s),v=function(t,n){var i=g.elements[n];u[l]=f,u[c]=ie(t.size[s],m,e.alignItems,c,s),ne(u,t,i),f+=t.size[a]+e.spacing},_=0;_<i.length;_++)g=i[_],d[l]=f=C.justifyAlign(g.size,t,e.justifyContent,l,a),d[c]=p,h[a]=g.size,h[s]=g.lineSize,m=new un(d,h),C.forEach(g.bboxes,v),p+=g.lineSize+e.lineSpacing;!e.wrap&&g.size>t.size[a]&&(b=t.size[a]/m.size[a],w=m.topLeft().scale(b,b),k=m.size[s]*b,y=ie(k,t,e.alignContent,c,s),x=A(),"x"===l?x.translate(t.origin.x-w.x,y-w.y):x.translate(y-w.x,t.origin.y-w.y),x.scale(b,b),this.transform(x))}},_initGroups:function(){var e,t,n,i=this,o=this,r=o.options,a=o.children,s=r.lineSpacing,l=r.wrap,c=r.spacing,d=this._fieldMap.sizeField,u=this._newGroup(),h=[],p=function(){h.push(u),f+=u.lineSize+s},f=-s;for(e=0;e<a.length;e++)t=a[e],n=a[e].clippedBBox(),t.visible()&&n&&(l&&u.size+n.size[d]+c>i._rect.size[d]?0===u.bboxes.length?(i._addToGroup(u,n,t),p(),u=i._newGroup()):(p(),u=i._newGroup(),i._addToGroup(u,n,t)):i._addToGroup(u,n,t));return u.bboxes.length&&p(),{groups:h,groupsSize:f}},_addToGroup:function(e,t,n){e.size+=t.size[this._fieldMap.sizeField]+this.options.spacing,e.lineSize=Math.max(t.size[this._fieldMap.groupsSizeField],e.lineSize),e.bboxes.push(t),e.elements.push(n)},_newGroup:function(){return{lineSize:0,size:-this.options.spacing,bboxes:[],elements:[]}}}),ii=pn.extend({init:function(e,t){void 0===e&&(e=new un),void 0===t&&(t={}),pn.fn.init.call(this,t),this.geometry(e),i(this.options.stroke)||this.stroke("#000")},_bbox:function(e){return this._geometry.bbox(e)},rawBBox:function(){return this._geometry.bbox()},_containsPoint:function(e){return this._geometry.containsPoint(e)},_isOnPath:function(e){return this.geometry()._isOnPath(e,this.options.stroke.width/2)}}),ii.prototype.nodeType="Rect",vn.extend(ii.prototype),bn.extend(ii.prototype),M(ii.prototype,["geometry"]),oi=Fn.extend({_change:function(){this.optionsChange({field:"stops"})}}),ri=Ut.extend({init:function(e,t,n){this.options=new sn({offset:e,color:t,opacity:i(n)?n:1}),this.options.addObserver(this)}}),ri.create=function(e){if(i(e)){var t;return t=e instanceof ri?e:e.length>1?new ri(e[0],e[1],e[2]):new ri(e.offset,e.color,e.opacity)}},_e(ri.prototype,["offset","color","opacity"]),Kt.extend(ri.prototype),ai=Ut.extend({init:function(e){void 0===e&&(e={}),this.stops=new oi(this._createStops(e.stops)),this.stops.addObserver(this),this._userSpace=e.userSpace,this.id=o()},userSpace:function(e){return i(e)?(this._userSpace=e,this.optionsChange(),this):this._userSpace},_createStops:function(e){var t,n;for(void 0===e&&(e=[]),t=[],n=0;n<e.length;n++)t.push(ri.create(e[n]));return t},addStop:function(e,t,n){this.stops.push(new ri(e,t,n))},removeStop:function(e){var t=this.stops.indexOf(e);t>=0&&this.stops.splice(t,1)}}),ai.prototype.nodeType="Gradient",Kt.extend(ai.prototype),e.extend(ai.prototype,{optionsChange:function(e){this.trigger("optionsChange",{field:"gradient"+(e?"."+e.field:""),value:this})},geometryChange:function(){this.optionsChange()}}),si=ai.extend({init:function(e){void 0===e&&(e={}),ai.fn.init.call(this,e),this.start(e.start||new cn),this.end(e.end||new cn(1,0))}}),N(si.prototype,["start","end"]),li=ai.extend({init:function(e){void 0===e&&(e={}),ai.fn.init.call(this,e),this.center(e.center||new cn),this._radius=i(e.radius)?e.radius:1,this._fallbackFill=e.fallbackFill},radius:function(e){return i(e)?(this._radius=e,this.geometryChange(),this):this._radius},fallbackFill:function(e){return i(e)?(this._fallbackFill=e,this.optionsChange(),this):this._fallbackFill}}),N(li.prototype,["center"]),ci={swing:be,linear:we,easeOutElastic:ke},di=Ut.extend({init:function(){this._items=[]},register:function(e,t){this._items.push({name:e,type:t})},create:function(e,t){var n,i,o,r=this._items;if(t&&t.type)for(i=t.type.toLowerCase(),o=0;o<r.length;o++)if(r[o].name.toLowerCase()===i){n=r[o];break}if(n)return new n.type(e,t)}}),di.current=new di,ui=Date.now||function(){return(new Date).getTime()},hi=Ut.extend({init:function(t,n){this.options=e.extend({},this.options,n),this.element=t},setup:function(){},step:function(){},play:function(){var e,t,n,i=this,o=this.options,r=o.duration,a=o.delay;void 0===a&&(a=0),e=ci[o.easing],t=ui()+a,n=t+r,0===r?(this.step(1),this.abort()):setTimeout(function(){var o=function(){var a,s,l,c;i._stopped||(a=ui(),s=h(a-t,0,r),l=s/r,c=e(l,s,0,1,r),i.step(c),a<n?kendo.animationFrame(o):i.abort())};o()},a)},abort:function(){this._stopped=!0},destroy:function(){this.abort()}}),hi.prototype.options={duration:500,easing:"swing"},hi.create=function(e,t,n){return di.current.create(e,t,n)},pi=Ut.extend({init:function(){this._items=[]},register:function(e,t,n){var i=this._items,o=i[0],r={name:e,type:t,order:n};!o||n<o.order?i.unshift(r):i.push(r)},create:function(e,t){var n,i,o=this._items,r=o[0];if(t&&t.type)for(n=t.type.toLowerCase(),i=0;i<o.length;i++)if(o[i].name===n){r=o[i];break}return r?new r.type(e,t):void kendo.logToConsole("Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\n- The browser does not support SVG and Canvas. User agent: "+navigator.userAgent)}}),pi.current=new pi,fi=["click","mouseenter","mouseleave","mousemove","resize"],gi=kendo.Observable.extend({init:function(t,n){kendo.Observable.fn.init.call(this),this.options=e.extend({},n),this.element=t,this.element._kendoExportVisual=this.exportVisual.bind(this),this._click=this._handler("click"),this._mouseenter=this._handler("mouseenter"),this._mouseleave=this._handler("mouseleave"),this._mousemove=this._handler("mousemove"),this._visual=new Jn,y(t,this.options),this.bind(fi,this.options),this._enableTracking()},draw:function(e){this._visual.children.push(e)},clear:function(){this._visual.children=[]},destroy:function(){this._visual=null,this.element._kendoExportVisual=null,this.unbind()},eventTarget:function(e){for(var t,n=this,i=c(e);!t&&i&&(t=i._kendoNode,i!==n.element);)i=i.parentElement;if(t)return t.srcElement},exportVisual:function(){return this._visual},getSize:function(){return y(this.element)},currentSize:function(e){return e?void(this._size=e):this._size},setSize:function(e){y(this.element,e),this.currentSize(e),this._resize()},resize:function(e){var t=this.getSize(),n=this.currentSize();(e||(t.width>0||t.height>0)&&(!n||t.width!==n.width||t.height!==n.height))&&(this.currentSize(t),this._resize(t,e),this.trigger("resize",t))},size:function(e){return e?void this.setSize(e):this.getSize()},suspendTracking:function(){this._suspendedTracking=!0},resumeTracking:function(){this._suspendedTracking=!1},_enableTracking:function(){},_resize:function(){},_handler:function(e){var t=this;return function(n){var i=t.eventTarget(n);i&&!t._suspendedTracking&&t.trigger(e,{element:i,originalEvent:n,type:e})}},_elementOffset:function(){var e=this.element,t=w(e,["paddingLeft","paddingTop"]),n=t.paddingLeft,i=t.paddingTop,o=b(e),r=o.left,a=o.top;return{left:r+parseInt(n,10),top:a+parseInt(i,10)}},_surfacePoint:function(e){var t=this._elementOffset(),n=l(e),i=n.x-t.left,o=n.y-t.top;return new cn(i,o)}}),gi.create=function(e,t){return pi.current.create(e,t)},gi.support={},mi=Ut.extend({init:function(e){this.childNodes=[],this.parent=null,e&&(this.srcElement=e,this.observe())},destroy:function(){var e,t,n=this;for(this.srcElement&&this.srcElement.removeObserver(this),e=this.childNodes,t=0;t<e.length;t++)n.childNodes[t].destroy();this.parent=null},load:function(){},observe:function(){this.srcElement&&this.srcElement.addObserver(this)},append:function(e){this.childNodes.push(e),e.parent=this},insertAt:function(e,t){this.childNodes.splice(t,0,e),e.parent=this},remove:function(e,t){var n,i=this,o=e+t;for(n=e;n<o;n++)i.childNodes[n].removeSelf();this.childNodes.splice(e,t)},removeSelf:function(){this.clear(),this.destroy()},clear:function(){this.remove(0,this.childNodes.length)},invalidate:function(){this.parent&&this.parent.invalidate()},geometryChange:function(){this.invalidate()},optionsChange:function(){this.invalidate()},childrenChange:function(e){"add"===e.action?this.load(e.items,e.index):"remove"===e.action&&this.remove(e.index,e.items.length),this.invalidate()}}),vi={},_i="http://www.w3.org/2000/svg",bi="none",wi=function(e,t){e.innerHTML=t},"undefined"!=typeof document&&(ki="<svg xmlns='"+_i+"'></svg>",yi=document.createElement("div"), +xi="undefined"!=typeof DOMParser,yi.innerHTML=ki,xi&&yi.firstChild.namespaceURI!==_i&&(wi=function(e,t){var n=new DOMParser,i=n.parseFromString(t,"text/xml"),o=document.adoptNode(i.documentElement);e.innerHTML="",e.appendChild(o)})),Ci=wi,Si="transform",Ti={clip:"clip-path",fill:"fill"},Di=mi.extend({init:function(e,t){mi.fn.init.call(this,e),this.definitions={},this.options=t},destroy:function(){this.element&&(this.element._kendoNode=null,this.element=null),this.clearDefinitions(),mi.fn.destroy.call(this)},load:function(e,t){var n,o,r,a,s,l=this;for(n=0;n<e.length;n++)o=e[n],r=o.children,a=new vi[o.nodeType](o,l.options),i(t)?l.insertAt(a,t):l.append(a),a.createDefinitions(),r&&r.length>0&&a.load(r),s=l.element,s&&a.attachTo(s,t)},root:function(){for(var e=this;e.parent;)e=e.parent;return e},attachTo:function(e,t){var n,o=document.createElement("div");Ci(o,"<svg xmlns='"+_i+"' version='1.1'>"+this.render()+"</svg>"),n=o.firstChild.firstChild,n&&(i(t)?e.insertBefore(n,e.childNodes[t]||null):e.appendChild(n),this.setElement(n))},setElement:function(e){var t,n,i;for(this.element&&(this.element._kendoNode=null),this.element=e,this.element._kendoNode=this,t=this.childNodes,n=0;n<t.length;n++)i=e.childNodes[n],t[n].setElement(i)},clear:function(){var e,t;for(this.clearDefinitions(),this.element&&(this.element.innerHTML=""),e=this.childNodes,t=0;t<e.length;t++)e[t].destroy();this.childNodes=[]},removeSelf:function(){if(this.element){var e=this.element.parentNode;e&&e.removeChild(this.element),this.element=null}mi.fn.removeSelf.call(this)},template:function(){return this.renderChildren()},render:function(){return this.template()},renderChildren:function(){var e,t=this.childNodes,n="";for(e=0;e<t.length;e++)n+=t[e].render();return n},optionsChange:function(e){var t=e.field,n=e.value;"visible"===t?this.css("display",n?"":bi):Ti[t]&&Se(t,n)?this.updateDefinition(t,n):"opacity"===t?this.attr("opacity",n):"cursor"===t?this.css("cursor",n):"id"===t&&(n?this.attr("id",n):this.removeAttr("id")),mi.fn.optionsChange.call(this,e)},attr:function(e,t){this.element&&this.element.setAttribute(e,t)},allAttr:function(e){var t,n=this;for(t=0;t<e.length;t++)n.attr(e[t][0],e[t][1])},css:function(e,t){this.element&&(this.element.style[e]=t)},allCss:function(e){var t,n=this;for(t=0;t<e.length;t++)n.css(e[t][0],e[t][1])},removeAttr:function(e){this.element&&this.element.removeAttribute(e)},mapTransform:function(e){var t=[];return e&&t.push([Si,"matrix("+e.matrix().toString(6)+")"]),t},renderTransform:function(){return xe(this.mapTransform(this.srcElement.transform()))},transformChange:function(e){e?this.allAttr(this.mapTransform(e)):this.removeAttr(Si)},mapStyle:function(){var e=this.srcElement.options,t=[["cursor",e.cursor]];return e.visible===!1&&t.push(["display",bi]),t},renderStyle:function(){return ye("style",Ce(this.mapStyle(!0)))},renderOpacity:function(){return ye("opacity",this.srcElement.options.opacity)},renderId:function(){return ye("id",this.srcElement.options.id)},createDefinitions:function(){var e,t,n,i,o=this.srcElement,r=this.definitions;if(o){e=o.options;for(n in Ti)i=e.get(n),i&&Se(n,i)&&(r[n]=i,t=!0);t&&this.definitionChange({action:"add",definitions:r})}},definitionChange:function(e){this.parent&&this.parent.definitionChange(e)},updateDefinition:function(e,t){var n=this.definitions,i=n[e],o=Ti[e],r={};i&&(r[e]=i,this.definitionChange({action:"remove",definitions:r}),delete n[e]),t?(r[e]=t,this.definitionChange({action:"add",definitions:r}),n[e]=t,this.attr(o,this.refUrl(t.id))):i&&this.removeAttr(o)},clearDefinitions:function(){var e=this.definitions;this.definitionChange({action:"remove",definitions:e}),this.definitions={}},renderDefinitions:function(){return xe(this.mapDefinitions())},mapDefinitions:function(){var e,t=this,n=this.definitions,i=[];for(e in n)i.push([Ti[e],t.refUrl(n[e].id)]);return i},refUrl:function(e){var t=(this.options||{}).skipBaseHref,n=this.baseUrl().replace(/'/g,"\\'"),i=t?"":n;return"url("+i+"#"+e+")"},baseUrl:function(){return Te()}}),Ai=Di.extend({template:function(){return"<stop "+this.renderOffset()+" "+this.renderStyle()+" />"},renderOffset:function(){return ye("offset",this.srcElement.offset())},mapStyle:function(){var e=this.srcElement;return[["stop-color",e.color()],["stop-opacity",e.opacity()]]},optionsChange:function(e){"offset"===e.field?this.attr(e.field,e.value):"color"!==e.field&&"opacity"!==e.field||this.css("stop-"+e.field,e.value)}}),Ei=Di.extend({init:function(e){Di.fn.init.call(this,e),this.id=e.id,this.loadStops()},loadStops:function(){var e,t,n=this,i=this.srcElement.stops,o=this.element;for(e=0;e<i.length;e++)t=new Ai(i[e]),n.append(t),o&&t.attachTo(o)},optionsChange:function(e){"gradient.stops"===e.field?(mi.prototype.clear.call(this),this.loadStops()):"gradient"===e.field&&this.allAttr(this.mapCoordinates())},renderCoordinates:function(){return xe(this.mapCoordinates())},mapSpace:function(){return["gradientUnits",this.srcElement.userSpace()?"userSpaceOnUse":"objectBoundingBox"]}}),Ii=Ei.extend({template:function(){return"<linearGradient id='"+this.id+"' "+this.renderCoordinates()+">"+this.renderChildren()+"</linearGradient>"},mapCoordinates:function(){var e=this.srcElement,t=e.start(),n=e.end(),i=[["x1",t.x],["y1",t.y],["x2",n.x],["y2",n.y],this.mapSpace()];return i}}),Mi=Ei.extend({template:function(){return"<radialGradient id='"+this.id+"' "+this.renderCoordinates()+">"+this.renderChildren()+"</radialGradient>"},mapCoordinates:function(){var e=this.srcElement,t=e.center(),n=e.radius(),i=[["cx",t.x],["cy",t.y],["r",n],this.mapSpace()];return i}}),Fi=Di.extend({init:function(e){Di.fn.init.call(this),this.srcElement=e,this.id=e.id,this.load([e])},template:function(){return"<clipPath id='"+this.id+"'>"+this.renderChildren()+"</clipPath>"}}),Ri=Di.extend({init:function(){Di.fn.init.call(this),this.definitionMap={}},attachTo:function(e){this.element=e},template:function(){return"<defs>"+this.renderChildren()+"</defs>"},definitionChange:function(e){var t=e.definitions,n=e.action;"add"===n?this.addDefinitions(t):"remove"===n&&this.removeDefinitions(t)},createDefinition:function(e,t){var n;return"clip"===e?n=Fi:"fill"===e&&(t instanceof si?n=Ii:t instanceof li&&(n=Mi)),new n(t)},addDefinitions:function(e){var t,n=this;for(t in e)n.addDefinition(t,e[t])},addDefinition:function(e,t){var n,i=this,o=i.element,r=i.definitionMap,a=t.id,s=r[a];s?s.count++:(n=this.createDefinition(e,t),r[a]={element:n,count:1},this.append(n),o&&n.attachTo(this.element))},removeDefinitions:function(e){var t,n=this;for(t in e)n.removeDefinition(e[t])},removeDefinition:function(e){var t=this.definitionMap,n=e.id,i=t[n];i&&(i.count--,0===i.count&&(this.remove(this.childNodes.indexOf(i.element),1),delete t[n]))}}),Pi=Di.extend({init:function(e){Di.fn.init.call(this),this.options=e,this.defs=new Ri},attachTo:function(e){this.element=e,this.defs.attachTo(e.firstElementChild)},clear:function(){mi.prototype.clear.call(this)},template:function(){return this.defs.render()+this.renderChildren()},definitionChange:function(e){this.defs.definitionChange(e)}}),zi="rtl",Bi=gi.extend({init:function(t,n){gi.fn.init.call(this,t,n),this._root=new Pi(e.extend({rtl:w(t,"direction").direction===zi},this.options)),Ci(this.element,this._template()),this._rootElement=this.element.firstElementChild,De(this._rootElement),this._root.attachTo(this._rootElement),_(this.element,{click:this._click,mouseover:this._mouseenter,mouseout:this._mouseleave,mousemove:this._mousemove}),this.resize()},destroy:function(){this._root&&(this._root.destroy(),this._root=null,this._rootElement=null,x(this.element,{click:this._click,mouseover:this._mouseenter,mouseout:this._mouseleave,mousemove:this._mousemove})),gi.fn.destroy.call(this)},translate:function(e){var t=Math.round(e.x)+" "+Math.round(e.y)+" "+this._size.width+" "+this._size.height;this._offset=e,this._rootElement.setAttribute("viewBox",t)},draw:function(e){gi.fn.draw.call(this,e),this._root.load([e])},clear:function(){gi.fn.clear.call(this),this._root.clear()},svg:function(){return"<?xml version='1.0' ?>"+this._template()},exportVisual:function(){var e,t=this,n=t._visual,i=t._offset;return i&&(e=new Jn,e.children.push(n),e.transform(A().translate(-i.x,-i.y)),n=e),n},_resize:function(){this._offset&&this.translate(this._offset)},_template:function(){return"<svg style='width: 100%; height: 100%; overflow: hidden;' xmlns='"+_i+"' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>"+this._root.render()+"</svg>"}}),Bi.prototype.type="svg","undefined"!=typeof document&&document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(gi.support.svg=!0,pi.current.register("svg",Bi,10)),Li=Di.extend({template:function(){return"<g"+(this.renderId()+this.renderTransform()+this.renderStyle()+this.renderOpacity()+this.renderDefinitions())+">"+this.renderChildren()+"</g>"},optionsChange:function(e){"transform"===e.field&&this.transformChange(e.value),Di.fn.optionsChange.call(this,e)}}),vi.Group=Li,Hi={dot:[1.5,3.5],dash:[4,3.5],longdash:[8,3.5],dashdot:[3.5,3.5,1.5,3.5],longdashdot:[8,3.5,1.5,3.5],longdashdotdot:[8,3.5,1.5,3.5,1.5,3.5]},Ni="solid",Oi="butt",Vi={"fill.opacity":"fill-opacity","stroke.color":"stroke","stroke.width":"stroke-width","stroke.opacity":"stroke-opacity"},Wi=" ",Ui=Di.extend({geometryChange:function(){this.attr("d",this.renderData()),this.invalidate()},optionsChange:function(e){switch(e.field){case"fill":e.value?this.allAttr(this.mapFill(e.value)):this.removeAttr("fill");break;case"fill.color":this.allAttr(this.mapFill({color:e.value}));break;case"stroke":e.value?this.allAttr(this.mapStroke(e.value)):this.removeAttr("stroke");break;case"transform":this.transformChange(e.value);break;default:var t=Vi[e.field];t&&this.attr(t,e.value)}Di.fn.optionsChange.call(this,e)},content:function(){this.element&&(this.element.textContent=this.srcElement.content())},renderData:function(){return this.printPath(this.srcElement)},printPath:function(e){var t,n,i,o,r,a=this,s=e.segments,l=s.length;if(l>0){for(t=[],o=1;o<l;o++)r=a.segmentType(s[o-1],s[o]),r!==i&&(i=r,t.push(r)),t.push("L"===r?a.printPoints(s[o].anchor()):a.printPoints(s[o-1].controlOut(),s[o].controlIn(),s[o].anchor()));return n="M"+this.printPoints(s[0].anchor())+Wi+t.join(Wi),e.options.closed&&(n+="Z"),n}},printPoints:function(){var e,t=arguments,n=t.length,i=[];for(e=0;e<n;e++)i.push(t[e].toString(3));return i.join(" ")},segmentType:function(e,t){return e.controlOut()&&t.controlIn()?"C":"L"},mapStroke:function(e){var t=[];return e&&!d(e.color)?(t.push(["stroke",e.color]),t.push(["stroke-width",e.width]),t.push(["stroke-linecap",this.renderLinecap(e)]),t.push(["stroke-linejoin",e.lineJoin]),i(e.opacity)&&t.push(["stroke-opacity",e.opacity]),i(e.dashType)&&t.push(["stroke-dasharray",this.renderDashType(e)])):t.push(["stroke",bi]),t},renderStroke:function(){return xe(this.mapStroke(this.srcElement.options.stroke))},renderDashType:function(e){var t,n,i,o=e.dashType,r=e.width;if(void 0===r&&(r=1),o&&o!==Ni){for(t=Hi[o.toLowerCase()],n=[],i=0;i<t.length;i++)n.push(t[i]*r);return n.join(" ")}},renderLinecap:function(e){var t=e.dashType,n=e.lineCap;return t&&"solid"!==t?Oi:n},mapFill:function(e){var t=[];return e&&"Gradient"===e.nodeType||(e&&!d(e.color)?(t.push(["fill",e.color]),i(e.opacity)&&t.push(["fill-opacity",e.opacity])):t.push(["fill",bi])),t},renderFill:function(){return xe(this.mapFill(this.srcElement.options.fill))},template:function(){return"<path "+this.renderId()+" "+this.renderStyle()+" "+this.renderOpacity()+" "+ye("d",this.renderData())+this.renderStroke()+this.renderFill()+this.renderDefinitions()+this.renderTransform()+"></path>"}}),vi.Path=Ui,qi=Ui.extend({renderData:function(){return this.printPath(this.srcElement.toPath())}}),vi.Arc=qi,ji=Ui.extend({geometryChange:function(){var e=this.center();this.attr("cx",e.x),this.attr("cy",e.y),this.attr("r",this.radius()),this.invalidate()},center:function(){return this.srcElement.geometry().center},radius:function(){return this.srcElement.geometry().radius},template:function(){return"<circle "+this.renderId()+" "+this.renderStyle()+" "+this.renderOpacity()+"cx='"+this.center().x+"' cy='"+this.center().y+"' r='"+this.radius()+"'"+this.renderStroke()+" "+this.renderFill()+" "+this.renderDefinitions()+this.renderTransform()+" ></circle>"}}),vi.Circle=ji,Gi=Ui.extend({geometryChange:function(){var e=this.srcElement.geometry();this.attr("x",e.origin.x),this.attr("y",e.origin.y),this.attr("width",e.size.width),this.attr("height",e.size.height),this.invalidate()},size:function(){return this.srcElement.geometry().size},origin:function(){return this.srcElement.geometry().origin},template:function(){return"<rect "+this.renderId()+" "+this.renderStyle()+" "+this.renderOpacity()+" x='"+this.origin().x+"' y='"+this.origin().y+"' width='"+this.size().width+"' height='"+this.size().height+"' "+this.renderStroke()+" "+this.renderFill()+" "+this.renderDefinitions()+" "+this.renderTransform()+" />"}}),vi.Rect=Gi,$i=Ui.extend({geometryChange:function(){this.allAttr(this.mapPosition()),this.invalidate()},optionsChange:function(e){"src"===e.field&&this.allAttr(this.mapSource()),Ui.fn.optionsChange.call(this,e)},mapPosition:function(){var e=this.srcElement.rect(),t=e.topLeft();return[["x",t.x],["y",t.y],["width",e.width()+"px"],["height",e.height()+"px"]]},renderPosition:function(){return xe(this.mapPosition())},mapSource:function(e){var t=this.srcElement.src();return e&&(t=kendo.htmlEncode(t)),[["xlink:href",t]]},renderSource:function(){return xe(this.mapSource(!0))},template:function(){return"<image preserveAspectRatio='none' "+this.renderId()+" "+this.renderStyle()+" "+this.renderTransform()+" "+this.renderOpacity()+this.renderPosition()+" "+this.renderSource()+" "+this.renderDefinitions()+"></image>"}}),vi.Image=$i,Yi=/&(?:[a-zA-Z]+|#\d+);/g,"undefined"!=typeof document&&(Ae._element=document.createElement("span")),Ki=Ui.extend({geometryChange:function(){var e=this.pos();this.attr("x",e.x),this.attr("y",e.y),this.invalidate()},optionsChange:function(e){"font"===e.field?(this.attr("style",Ce(this.mapStyle())),this.geometryChange()):"content"===e.field&&Ui.fn.content.call(this,this.srcElement.content()),Ui.fn.optionsChange.call(this,e)},mapStyle:function(e){var t=Ui.fn.mapStyle.call(this,e),n=this.srcElement.options.font;return e&&(n=kendo.htmlEncode(n)),t.push(["font",n],["white-space","pre"]),t},pos:function(){var e=this.srcElement.position(),t=this.srcElement.measure();return e.clone().setY(e.y+t.baseline)},renderContent:function(){var e=this.srcElement.content();return e=Ae(e),e=kendo.htmlEncode(e),qt.normalizeText(e)},renderTextAnchor:function(){var e;return!(this.options||{}).rtl||Gt.msie||Gt.edge||(e="end"),ye("text-anchor",e)},template:function(){return"<text "+this.renderId()+" "+this.renderTextAnchor()+" "+this.renderStyle()+" "+this.renderOpacity()+"x='"+this.pos().x+"' y='"+this.pos().y+"' "+this.renderStroke()+" "+this.renderTransform()+" "+this.renderDefinitions()+this.renderFill()+">"+this.renderContent()+"</text>"}}),vi.Text=Ki,Qi=Ui.extend({renderData:function(){var e,t,n=this,i=this.srcElement.paths;if(i.length>0){for(e=[],t=0;t<i.length;t++)e.push(n.printPath(i[t]));return e.join(" ")}}}),vi.MultiPath=Qi,Xi={Circle:gn,Arc:Sn,Rect:un,Point:cn,Segment:zn,Matrix:ln,Size:dn,toMatrix:D,Transformation:hn,transform:A},Ji={Surface:Bi,RootNode:Pi,Node:Di,GroupNode:Li,ArcNode:qi,CircleNode:ji,RectNode:Gi,ImageNode:$i,TextNode:Ki,PathNode:Ui,MultiPathNode:Qi,DefinitionNode:Ri,ClipNode:Fi,GradientStopNode:Ai,LinearGradientNode:Ii,RadialGradientNode:Mi,exportGroup:Ee},Zi={},eo=mi.extend({init:function(e){mi.fn.init.call(this,e),e&&this.initClip()},initClip:function(){var e=this.srcElement.clip();e&&(this.clip=e,e.addObserver(this))},clear:function(){this.srcElement&&this.srcElement.removeObserver(this),this.clearClip(),mi.fn.clear.call(this)},clearClip:function(){this.clip&&(this.clip.removeObserver(this),delete this.clip)},setClip:function(e){this.clip&&(e.beginPath(),Ie(e,this.clip),e.clip())},optionsChange:function(e){"clip"===e.field&&(this.clearClip(),this.initClip()),mi.fn.optionsChange.call(this,e)},setTransform:function(e){if(this.srcElement){var t=this.srcElement.transform();t&&e.transform.apply(e,t.matrix().toArray(6))}},loadElements:function(e,t,n){var o,r,a,s,l=this;for(o=0;o<e.length;o++)r=e[o],a=r.children,s=new Zi[r.nodeType](r,n),a&&a.length>0&&s.load(a,t,n),i(t)?l.insertAt(s,t):l.append(s)},load:function(e,t,n){this.loadElements(e,t,n),this.invalidate()},setOpacity:function(e){if(this.srcElement){var t=this.srcElement.opacity();i(t)&&this.globalAlpha(e,t)}},globalAlpha:function(e,t){var n=t;n&&e.globalAlpha&&(n*=e.globalAlpha),e.globalAlpha=n},visible:function(){var e=this.srcElement;return!e||e&&e.options.visible!==!1}}),to=eo.extend({renderTo:function(e){var t,n,i;if(this.visible()){for(e.save(),this.setTransform(e),this.setClip(e),this.setOpacity(e),t=this.childNodes,n=0;n<t.length;n++)i=t[n],i.visible()&&i.renderTo(e);e.restore()}}}),Xn.extend(to.prototype,"childNodes"),Zi.Group=to,no=1e3/60,io=to.extend({init:function(e){to.fn.init.call(this),this.canvas=e,this.ctx=e.getContext("2d");var t=this._invalidate.bind(this);this.invalidate=kendo.throttle(function(){kendo.animationFrame(t)},no)},destroy:function(){to.fn.destroy.call(this),this.canvas=null,this.ctx=null},load:function(e,t,n){this.loadElements(e,t,n),this._invalidate()},_invalidate:function(){this.ctx&&(this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.renderTo(this.ctx))}}),Xn.extend(io.prototype,"childNodes"),oo=Ut.extend({init:function(){this.shapes=[]},_add:function(e,t){this.shapes.push({bbox:t,shape:e}),e._quadNode=this},pointShapes:function(e){var t,n=this.shapes,i=n.length,o=[];for(t=0;t<i;t++)n[t].bbox.containsPoint(e)&&o.push(n[t].shape);return o},insert:function(e,t){this._add(e,t)},remove:function(e){var t,n=this.shapes,i=n.length;for(t=0;t<i;t++)if(n[t].shape===e){n.splice(t,1);break}}}),ro=oo.extend({init:function(e){oo.fn.init.call(this),this.children=[],this.rect=e},inBounds:function(e){var t=this.rect,n=t.bottomRight(),i=e.bottomRight(),o=t.origin.x<=e.origin.x&&t.origin.y<=e.origin.y&&i.x<=n.x&&i.y<=n.y;return o},pointShapes:function(e){var n,i=this.children,o=i.length,r=oo.fn.pointShapes.call(this,e);for(n=0;n<o;n++)t(r,i[n].pointShapes(e));return r},insert:function(e,t){var n,i=this.children,o=!1;if(this.inBounds(t)){if(this.shapes.length<4)this._add(e,t);else{for(i.length||this._initChildren(),n=0;n<i.length;n++)if(i[n].insert(e,t)){o=!0;break}o||this._add(e,t)}o=!0}return o},_initChildren:function(){var e=this,t=e.rect,n=e.children,i=t.center(),o=t.width()/2,r=t.height()/2;n.push(new ro(new un([t.origin.x,t.origin.y],[o,r])),new ro(new un([i.x,t.origin.y],[o,r])),new ro(new un([t.origin.x,i.y],[o,r])),new ro(new un([i.x,i.y],[o,r])))}}),ao=3e3,so=1e4,lo=75,co=Ut.extend({init:function(){this.initRoots()},initRoots:function(){this.rootMap={},this.root=new oo,this.rootElements=[]},clear:function(){var e,t=this,n=this.rootElements;for(e=0;e<n.length;e++)t.remove(n[e]);this.initRoots()},pointShape:function(e){var t,n=(this.rootMap[Math.floor(e.x/ao)]||{})[Math.floor(e.y/ao)],i=this.root.pointShapes(e);for(n&&(i=i.concat(n.pointShapes(e))),this.assignZindex(i),i.sort(Me),t=0;t<i.length;t++)if(i[t].containsPoint(e))return i[t]},assignZindex:function(e){var t,n,i,o,r,a=this;for(t=0;t<e.length;t++){for(n=e[t],i=0,o=Math.pow(so,lo),r=[];n;)r.push(n),n=n.parent;for(;r.length;)n=r.pop(),i+=((n.parent?n.parent.children:a.rootElements).indexOf(n)+1)*o,o/=so;e[t]._zIndex=i}},optionsChange:function(e){"transform"!==e.field&&"stroke.width"!==e.field||this.bboxChange(e.element)},geometryChange:function(e){this.bboxChange(e.element)},bboxChange:function(e){var t,n=this;if("Group"===e.nodeType)for(t=0;t<e.children.length;t++)n.bboxChange(e.children[t]);else e._quadNode&&e._quadNode.remove(e),this._insertShape(e)},add:function(e){var n=Array.isArray(e)?e.slice(0):[e];t(this.rootElements,n),this._insert(n)},childrenChange:function(e){var t,n=this;if("remove"===e.action)for(t=0;t<e.items.length;t++)n.remove(e.items[t]);else this._insert(Array.prototype.slice.call(e.items,0))},_insert:function(e){for(var n,i=this;e.length>0;)n=e.pop(),n.addObserver(i),"Group"===n.nodeType?t(e,n.children):i._insertShape(n)},_insertShape:function(e){var t,n,i,o,r=e.bbox();r&&(t=this.getSectors(r),n=t[0][0],i=t[1][0],this.inRoot(t)?this.root.insert(e,r):(o=this.rootMap,o[n]||(o[n]={}),o[n][i]||(o[n][i]=new ro(new un([n*ao,i*ao],[ao,ao]))),o[n][i].insert(e,r)))},remove:function(e){var t,n,i=this;if(e.removeObserver(this),"Group"===e.nodeType)for(t=e.children,n=0;n<t.length;n++)i.remove(t[n]);else e._quadNode&&(e._quadNode.remove(e),delete e._quadNode)},inRoot:function(e){return e[0].length>1||e[1].length>1},getSectors:function(e){var t,n,i=e.bottomRight(),o=Math.floor(i.x/ao),r=Math.floor(i.y/ao),a=[[],[]];for(t=Math.floor(e.origin.x/ao);t<=o;t++)a[0].push(t);for(n=Math.floor(e.origin.y/ao);n<=r;n++)a[1].push(n);return a}}),uo=Ut.extend({init:function(e){e.bind("mouseenter",this._mouseenter.bind(this)),e.bind("mouseleave",this._mouseleave.bind(this)),this.element=e.element},clear:function(){this._resetCursor()},destroy:function(){this._resetCursor(),delete this.element},_mouseenter:function(e){var t=this._shapeCursor(e);t?(this._current||(this._defaultCursor=this._getCursor()),this._setCursor(t)):this._resetCursor()},_mouseleave:function(){this._resetCursor()},_shapeCursor:function(e){for(var t=e.element;t&&!i(t.options.cursor);)t=t.parent;if(t)return t.options.cursor},_getCursor:function(){if(this.element)return this.element.style.cursor},_setCursor:function(e){this.element&&(this.element.style.cursor=e,this._current=e)},_resetCursor:function(){this._current&&(this._setCursor(this._defaultCursor||""),delete this._current)}}),ho=gi.extend({init:function(e,t){var n,i;gi.fn.init.call(this,e,t),this.element.innerHTML=this._template(this),n=this.element.firstElementChild,i=y(e),n.width=i.width,n.height=i.height,this._rootElement=n,this._root=new io(n),this._mouseTrackHandler=this._trackMouse.bind(this),_(this.element,{click:this._mouseTrackHandler,mousemove:this._mouseTrackHandler})},destroy:function(){gi.fn.destroy.call(this),this._root&&(this._root.destroy(),this._root=null),this._searchTree&&(this._searchTree.clear(),delete this._searchTree),this._cursor&&(this._cursor.destroy(),delete this._cursor),x(this.element,{click:this._mouseTrackHandler,mousemove:this._mouseTrackHandler})},draw:function(e){gi.fn.draw.call(this,e),this._root.load([e],void 0,this.options.cors),this._searchTree&&this._searchTree.add([e])},clear:function(){gi.fn.clear.call(this),this._root.clear(),this._searchTree&&this._searchTree.clear(),this._cursor&&this._cursor.clear()},eventTarget:function(e){var t,n;if(this._searchTree)return t=this._surfacePoint(e),n=this._searchTree.pointShape(t)},image:function(){var e,t,n=this,i=n._root,o=n._rootElement,r=[];return i.traverse(function(e){e.loading&&r.push(e.loading)}),e=$t(),t=function(){i._invalidate();try{var t=o.toDataURL();e.resolve(t)}catch(n){e.reject(n)}},Yt(r).then(t,t),e},suspendTracking:function(){gi.fn.suspendTracking.call(this),this._searchTree&&(this._searchTree.clear(),delete this._searchTree)},resumeTracking:function(){var e,t,n;if(gi.fn.resumeTracking.call(this),!this._searchTree){for(this._searchTree=new co,e=this._root.childNodes,t=[],n=0;n<e.length;n++)t.push(e[n].srcElement);this._searchTree.add(t)}},_resize:function(){this._rootElement.width=this._size.width,this._rootElement.height=this._size.height,this._root.invalidate()},_template:function(){return"<canvas style='width: 100%; height: 100%;'></canvas>"},_enableTracking:function(){this._searchTree=new co,this._cursor=new uo(this),gi.fn._enableTracking.call(this)},_trackMouse:function(e){var t,n;this._suspendedTracking||(t=this.eventTarget(e),"click"!==e.type?(n=this._currentShape,n&&n!==t&&this.trigger("mouseleave",{element:n,originalEvent:e,type:"mouseleave"}),t&&n!==t&&this.trigger("mouseenter",{element:t,originalEvent:e,type:"mouseenter"}),this.trigger("mousemove",{element:t,originalEvent:e,type:"mousemove"}),this._currentShape=t):t&&this.trigger("click",{element:t,originalEvent:e,type:"click"}))}}),ho.prototype.type="canvas","undefined"!=typeof document&&document.createElement("canvas").getContext&&(gi.support.canvas=!0,pi.current.register("canvas",ho,20)),po=eo.extend({renderTo:function(e){e.save(),this.setTransform(e),this.setClip(e),this.setOpacity(e),e.beginPath(),this.renderPoints(e,this.srcElement),this.setLineDash(e),this.setLineCap(e),this.setLineJoin(e),this.setFill(e),this.setStroke(e),e.restore()},setFill:function(e){var t=this.srcElement.options.fill,n=!1;return t&&("Gradient"===t.nodeType?(this.setGradientFill(e,t),n=!0):d(t.color)||(e.fillStyle=t.color,e.save(),this.globalAlpha(e,t.opacity),e.fill(),e.restore(),n=!0)),n},setGradientFill:function(e,t){var n,i,o,r,a=this.srcElement.rawBBox();t instanceof si?(i=t.start(),o=t.end(),n=e.createLinearGradient(i.x,i.y,o.x,o.y)):t instanceof li&&(r=t.center(),n=e.createRadialGradient(r.x,r.y,0,r.x,r.y,t.radius())),Fe(n,t.stops),e.save(),t.userSpace()||e.transform(a.width(),0,0,a.height(),a.origin.x,a.origin.y),e.fillStyle=n,e.fill(),e.restore()},setStroke:function(e){var t=this.srcElement.options.stroke;if(t&&!d(t.color)&&t.width>0)return e.strokeStyle=t.color,e.lineWidth=v(t.width,1),e.save(),this.globalAlpha(e,t.opacity),e.stroke(),e.restore(),!0},dashType:function(){var e=this.srcElement.options.stroke;if(e&&e.dashType)return e.dashType.toLowerCase()},setLineDash:function(e){var t,n=this.dashType();n&&n!==Ni&&(t=Hi[n],e.setLineDash?e.setLineDash(t):(e.mozDash=t,e.webkitLineDash=t))},setLineCap:function(e){var t=this.dashType(),n=this.srcElement.options.stroke;t&&t!==Ni?e.lineCap=Oi:n&&n.lineCap&&(e.lineCap=n.lineCap)},setLineJoin:function(e){var t=this.srcElement.options.stroke;t&&t.lineJoin&&(e.lineJoin=t.lineJoin)},renderPoints:function(e,t){Ie(e,t)}}),Zi.Path=po,fo=po.extend({renderPoints:function(e){var t=this.srcElement.toPath();Ie(e,t)}}),Zi.Arc=fo,go=po.extend({renderPoints:function(e){var t=this.srcElement.geometry(),n=t.center,i=t.radius;e.arc(n.x,n.y,i,0,2*Math.PI)}}),Zi.Circle=go,mo=po.extend({renderPoints:function(e){var t=this.srcElement.geometry(),n=t.origin,i=t.size;e.rect(n.x,n.y,i.width,i.height)}}),Zi.Rect=mo,vo=po.extend({init:function(e,t){po.fn.init.call(this,e),this.onLoad=this.onLoad.bind(this),this.onError=this.onError.bind(this),this.loading=$t();var n=this.img=new Image;t&&!/^data:/i.test(e.src())&&(n.crossOrigin=t),n.src=e.src(),n.complete?this.onLoad():(n.onload=this.onLoad,n.onerror=this.onError)},renderTo:function(e){"resolved"===this.loading.state()&&(e.save(),this.setTransform(e),this.setClip(e),this.drawImage(e),e.restore())},optionsChange:function(e){"src"===e.field?(this.loading=$t(),this.img.src=this.srcElement.src()):po.fn.optionsChange.call(this,e)},onLoad:function(){this.loading.resolve(),this.invalidate()},onError:function(){this.loading.reject(Error("Unable to load image '"+this.img.src+"'. Check for connectivity and verify CORS headers."))},drawImage:function(e){var t=this.srcElement.rect(),n=t.topLeft();e.drawImage(this.img,n.x,n.y,t.width(),t.height())}}),Zi.Image=vo,_o=po.extend({renderTo:function(e){var t=this.srcElement,n=t.position(),i=t.measure();e.save(),this.setTransform(e),this.setClip(e),this.setOpacity(e),e.beginPath(),e.font=t.options.font,e.textAlign="left",this.setFill(e)&&e.fillText(t.content(),n.x,n.y+i.baseline),this.setStroke(e)&&(this.setLineDash(e),e.strokeText(t.content(),n.x,n.y+i.baseline)),e.restore()}}),Zi.Text=_o,bo=po.extend({renderPoints:function(e){var t,n=this.srcElement.paths;for(t=0;t<n.length;t++)Ie(e,n[t])}}),Zi.MultiPath=bo,wo={Surface:ho,RootNode:io,Node:eo,GroupNode:to,ArcNode:fo,CircleNode:go,RectNode:mo,ImageNode:vo,TextNode:_o,PathNode:po,MultiPathNode:bo},ko=Gt,yo="KENDO-PSEUDO-ELEMENT",xo={},Co={},Co._root=Co,So="undefined"!=typeof window,To=!!So&&(ko.msie||ko.edge),Do=Kn.extend({init:function(e,t,n){Kn.fn.init.call(this,e,t.getOrigin(),n),this._pdfRect=t},rect:function(){return this._pdfRect},rawBBox:function(){return this._pdfRect}}),Ao="undefined"!=typeof Element&&Element.prototype&&function(e){return e.matches?function(e,t){return e.matches(t)}:e.webkitMatchesSelector?function(e,t){return e.webkitMatchesSelector(t)}:e.mozMatchesSelector?function(e,t){return e.mozMatchesSelector(t)}:e.msMatchesSelector?function(e,t){return e.msMatchesSelector(t)}:function(e){return[].indexOf.call(document.querySelectorAll(e),this)!==-1}}(Element.prototype),Eo=function(e){return e?function t(n){var i,o,r,a,s=n.cloneNode(!1);if(1==n.nodeType){i=e(n),o=e(s),a=i.data();for(r in a)o.data(r,a[r]);for(/^canvas$/i.test(n.tagName)?s.getContext("2d").drawImage(n,0,0):/^(?:input|select|textarea|option)$/i.test(n.tagName)&&(s.removeAttribute("id"),s.removeAttribute("name"),s.value=n.value,s.checked=n.checked,s.selected=n.selected),r=n.firstChild;r;r=r.nextSibling)s.appendChild(t(r))}return s}:function(e){var t,n=function o(e){var t,n=e.cloneNode(!1);for(e._kendoExportVisual&&(n._kendoExportVisual=e._kendoExportVisual),t=e.firstChild;t;t=t.nextSibling)n.appendChild(o(t));return n}(e),i=e.querySelectorAll("canvas");return i.length&&ze(n.querySelectorAll("canvas")).forEach(function(e,t){e.getContext("2d").drawImage(i[t],0,0)}),t=e.querySelectorAll("input, select, textarea, option"),ze(n.querySelectorAll("input, select, textarea, option")).forEach(function(e,n){e.removeAttribute("id"),e.removeAttribute("name"),e.value=t[n].value,e.checked=t[n].checked,e.selected=t[n].selected}),n}}("undefined"!=typeof window&&window.kendo&&window.kendo.jQuery),Ve.getFontFaces=We,Ve.drawText=function(e){var t=new Jn;return Co._clipbox=!1,Co._matrix=ln.unit(),Co._stackingContext={element:e,group:t},et(e,rt(e),t),3==e.firstChild.nodeType?Lt(e,e.firstChild,t):Dt(e,t),tt(),t},Io=function(){function e(e){function p(){var t=a.exec(e);t&&(e=e.substr(t[1].length))}function f(t){p();var n=t.exec(e);if(n)return e=e.substr(n[1].length),n[1]}function g(){var t,o,r,a=kendo.parseColor(e,!0);if(a)return r=/^#[0-9a-f]+/i.exec(e)||/^rgba?\(.*?\)/i.exec(e)||/^..*?\b/.exec(e),e=e.substr(r[0].length),a=a.toRGB(),(t=f(i))||(o=f(n)),{color:a,length:t,percent:o}}function m(t){var i,a,d,u,h,p,m=[],v=!1;if(f(s)){for(i=f(r),i?(i=gt(i),f(c)):(a=f(o),"to"==a?a=f(o):a&&/^-/.test(t)&&(v=!0),d=f(o),f(c)),/-moz-/.test(t)&&null==i&&null==a&&(u=f(n),h=f(n),v=!0,"0%"==u?a="left":"100%"==u&&(a="right"),"0%"==h?d="top":"100%"==h&&(d="bottom"),f(c));e&&!f(l)&&(p=g());)m.push(p),f(c);return{type:"linear",angle:i,to:a&&d?a+" "+d:a?a:d?d:null,stops:m,reverse:v}}}function v(){if(f(s)){var e=f(u);return e=e.replace(/^['"]+|["']+$/g,""),f(l),{type:"url",url:e}}}var _,b=e;return Ue(h,b)?h[b]:((_=f(t))?_=m(_):(_=f(d))&&(_=v()),h[b]=_||{type:"none"})}var t=/^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\s*)\(/,n=/^([-0-9.]+%)/,i=/^([-0-9.]+px)/,o=/^(left|right|top|bottom|to|center)\W/,r=/^([-0-9.]+(deg|grad|rad|turn))/,a=/^(\s+)/,s=/^(\()/,l=/^(\))/,c=/^(,)/,d=/^(url)\(/,u=/^(.*?)\)/,h={},p={};return function(t){return Ue(p,t)?p[t]:p[t]=Mo(t).map(e)}}(),Mo=function(){var e={};return function(t,n){function i(e){return u=e.exec(t.substr(l))}function o(e){return e.replace(/^\s+|\s+$/g,"")}var r,a,s,l,c,d,u;if(n||(n=/^\s*,\s*/),r=t+n,Ue(e,r))return e[r];for(a=[],s=0,l=0,c=0,d=!1;l<t.length;)!d&&i(/^[\(\[\{]/)?(c++,l++):!d&&i(/^[\)\]\}]/)?(c--,l++):!d&&i(/^[\"\']/)?(d=u[0],l++):"'"==d&&i(/^\\\'/)?l+=2:'"'==d&&i(/^\\\"/)?l+=2:"'"==d&&i(/^\'/)?(d=!1,l++):'"'==d&&i(/^\"/)?(d=!1,l++):i(n)?(!d&&!c&&l>s&&(a.push(o(t.substring(s,l))),s=l+u[0].length),l+=u[0].length):l++;return s<l&&a.push(o(t.substring(s,l))),e[r]=a}}(),Fo=function(e){return function(t){var n,i=e[t];return i||((n=/url\((['"]?)([^'")]*?)\1\)\s+format\((['"]?)truetype\3\)/.exec(t))?i=e[t]=n[2]:(n=/url\((['"]?)([^'")]*?\.ttf)\1\)/.exec(t))&&(i=e[t]=n[2])),i}}(Object.create?Object.create(null):{}), +Ro=function(e){return function(t){var n=e[t];return null==n&&(n=e[t]=qt.measureText("Mapq",{font:t}).height),n}}(Object.create?Object.create(null):{}),Po={svg:Ji,canvas:wo,util:rn,PathParser:Un,Surface:gi,BaseNode:mi,SurfaceFactory:pi,OptionsStore:sn,exportImage:Re,exportSVG:Pe,QuadNode:ro,ShapesQuadTree:co,ObserversMixin:Kt,Element:pn,Circle:kn,Arc:Gn,Path:qn,MultiPath:Bn,Text:Kn,Image:Qn,Group:Jn,Layout:ni,Rect:ii,align:ae,vAlign:se,stack:de,vStack:ue,wrap:fe,vWrap:ge,fit:me,LinearGradient:si,RadialGradient:li,GradientStop:ri,Gradient:ai,Animation:hi,AnimationFactory:di,drawDOM:Ve},kendo.deepExtend(kendo,{drawing:Po,geometry:Xi}),kendo.drawing.Segment=kendo.geometry.Segment,kendo.dataviz.drawing=kendo.drawing,kendo.dataviz.geometry=kendo.geometry,kendo.drawing.util.measureText=kendo.util.measureText,kendo.drawing.util.objectKey=kendo.util.objectKey,kendo.drawing.Color=kendo.Color,kendo.util.encodeBase64=kendo.drawing.util.encodeBase64}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.popup.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(t,n){return!(!t||!n)&&(t===n||e.contains(t,n))}var i,o,r,a,s=window.kendo,l=s.ui,c=l.Widget,d=s.Class,u=s.support,h=s.getOffset,p=s._outerWidth,f=s._outerHeight,g="open",m="close",v="deactivate",_="activate",b="center",w="left",k="right",y="top",x="bottom",C="absolute",S="hidden",T="body",D="location",A="position",E="visible",I="effects",M="k-state-active",F="k-state-border",R=/k-state-border-(\w+)/,P=".k-picker-wrap, .k-dropdown-wrap, .k-link",z="down",B=e(document.documentElement),L=e.proxy,H=e(window),N="scroll",O=u.transitions.css,V=O+"transform",W=e.extend,U=".kendoPopup",q=["font-size","font-family","font-stretch","font-style","font-weight","line-height"],j=c.extend({init:function(t,n){var i,o=this;n=n||{},n.isRtl&&(n.origin=n.origin||x+" "+k,n.position=n.position||y+" "+k),c.fn.init.call(o,t,n),t=o.element,n=o.options,o.collisions=n.collision?n.collision.split(" "):[],o.downEvent=s.applyEventMap(z,s.guid()),1===o.collisions.length&&o.collisions.push(o.collisions[0]),i=e(o.options.anchor).closest(".k-popup,.k-group").filter(":not([class^=km-])"),n.appendTo=e(e(n.appendTo)[0]||i[0]||document.body),o.element.hide().addClass("k-popup k-group k-reset").toggleClass("k-rtl",!!n.isRtl).css({position:C}).appendTo(n.appendTo).attr("aria-hidden",!0).on("mouseenter"+U,function(){o._hovered=!0}).on("wheel"+U,function(t){var n=e(t.target).find(".k-list"),i=n.parent();n.length&&n.is(":visible")&&(0===i.scrollTop()&&t.originalEvent.deltaY<0||i.scrollTop()===i.prop("scrollHeight")-i.prop("offsetHeight")&&t.originalEvent.deltaY>0)&&t.preventDefault()}).on("mouseleave"+U,function(){o._hovered=!1}),o.wrapper=e(),n.animation===!1&&(n.animation={open:{effects:{}},close:{hide:!0,effects:{}}}),W(n.animation.open,{complete:function(){o.wrapper.css({overflow:E}),o._activated=!0,o._trigger(_)}}),W(n.animation.close,{complete:function(){o._animationClose()}}),o._mousedownProxy=function(e){o._mousedown(e)},o._resizeProxy=u.mobileOS.android?function(e){setTimeout(function(){o._resize(e)},600)}:function(e){o._resize(e)},n.toggleTarget&&e(n.toggleTarget).on(n.toggleEvent+U,e.proxy(o.toggle,o))},events:[g,_,m,v],options:{name:"Popup",toggleEvent:"click",origin:x+" "+w,position:y+" "+w,anchor:T,appendTo:null,collision:"flip fit",viewport:window,copyAnchorStyles:!0,autosize:!1,modal:!1,adjustSize:{width:0,height:0},animation:{open:{effects:"slideIn:down",transition:!0,duration:200},close:{duration:100,hide:!0}}},_animationClose:function(){var e=this,t=e.wrapper.data(D);e.wrapper.hide(),t&&e.wrapper.css(t),e.options.anchor!=T&&e._hideDirClass(),e._closing=!1,e._trigger(v)},destroy:function(){var t,n=this,i=n.options,o=n.element.off(U);c.fn.destroy.call(n),i.toggleTarget&&e(i.toggleTarget).off(U),i.modal||(B.off(n.downEvent,n._mousedownProxy),n._toggleResize(!1)),s.destroy(n.element.children()),o.removeData(),i.appendTo[0]===document.body&&(t=o.parent(".k-animation-container"),t[0]?t.remove():o.remove())},open:function(t,n){var i,o,r=this,a={isFixed:!isNaN(parseInt(n,10)),x:t,y:n},l=r.element,c=r.options,d=e(c.anchor),h=l[0]&&l.hasClass("km-widget");if(!r.visible()){if(c.copyAnchorStyles&&(h&&"font-size"==q[0]&&q.shift(),l.css(s.getComputedStyles(d[0],q))),l.data("animating")||r._trigger(g))return;r._activated=!1,c.modal||(B.off(r.downEvent,r._mousedownProxy).on(r.downEvent,r._mousedownProxy),r._toggleResize(!1),r._toggleResize(!0)),r.wrapper=o=s.wrap(l,c.autosize).css({overflow:S,display:"block",position:C}).attr("aria-hidden",!1),u.mobileOS.android&&o.css(V,"translatez(0)"),o.css(A),e(c.appendTo)[0]==document.body&&o.css(y,"-10000px"),r.flipped=r._position(a),i=r._openAnimation(),c.anchor!=T&&r._showDirClass(i),l.data(I,i.effects).kendoStop(!0).kendoAnimate(i).attr("aria-hidden",!1)}},_location:function(t){var n,i,o=this,r=o.element,a=o.options,l=e(a.anchor),c=r[0]&&r.hasClass("km-widget");return a.copyAnchorStyles&&(c&&"font-size"==q[0]&&q.shift(),r.css(s.getComputedStyles(l[0],q))),o.wrapper=n=s.wrap(r,a.autosize).css({overflow:S,display:"block",position:C}),u.mobileOS.android&&n.css(V,"translatez(0)"),n.css(A),e(a.appendTo)[0]==document.body&&n.css(y,"-10000px"),o._position(t||{}),i=n.offset(),{width:s._outerWidth(n),height:s._outerHeight(n),left:i.left,top:i.top}},_openAnimation:function(){var e=W(!0,{},this.options.animation.open);return e.effects=s.parseEffects(e.effects,this.flipped),e},_hideDirClass:function(){var t=e(this.options.anchor),n=((t.attr("class")||"").match(R)||["","down"])[1],i=F+"-"+n;t.removeClass(i).children(P).removeClass(M).removeClass(i),this.element.removeClass(F+"-"+s.directions[n].reverse)},_showDirClass:function(t){var n=t.effects.slideIn?t.effects.slideIn.direction:"down",i=F+"-"+n;e(this.options.anchor).addClass(i).children(P).addClass(M).addClass(i),this.element.addClass(F+"-"+s.directions[n].reverse)},position:function(){this.visible()&&(this.flipped=this._position())},toggle:function(){var e=this;e[e.visible()?m:g]()},visible:function(){return this.element.is(":"+E)},close:function(n){var i,o,r,a,l=this,c=l.options;if(l.visible()){if(i=l.wrapper[0]?l.wrapper:s.wrap(l.element).hide(),l._toggleResize(!1),l._closing||l._trigger(m))return l._toggleResize(!0),t;l.element.find(".k-popup").each(function(){var t=e(this),i=t.data("kendoPopup");i&&i.close(n)}),B.off(l.downEvent,l._mousedownProxy),n?o={hide:!0,effects:{}}:(o=W(!0,{},c.animation.close),r=l.element.data(I),a=o.effects,!a&&!s.size(a)&&r&&s.size(r)&&(o.effects=r,o.reverse=!0),l._closing=!0),l.element.kendoStop(!0).attr("aria-hidden",!0),i.css({overflow:S}).attr("aria-hidden",!0),l.element.kendoAnimate(o),n&&l._animationClose()}},_trigger:function(e){return this.trigger(e,{type:e})},_resize:function(e){var t=this;u.resize.indexOf(e.type)!==-1?(clearTimeout(t._resizeTimeout),t._resizeTimeout=setTimeout(function(){t._position(),t._resizeTimeout=null},50)):(!t._hovered||t._activated&&t.element.hasClass("k-list-container"))&&t.close()},_toggleResize:function(e){var t=e?"on":"off",n=u.resize;u.mobileOS.ios||u.mobileOS.android||(n+=" "+N),e&&!this.scrollableParents&&(this.scrollableParents=this._scrollableParents()),this.scrollableParents&&this.scrollableParents.length&&this.scrollableParents[t](N,this._resizeProxy),H[t](n,this._resizeProxy)},_mousedown:function(t){var i=this,o=i.element[0],r=i.options,a=e(r.anchor)[0],l=r.toggleTarget,c=s.eventTarget(t),d=e(c).closest(".k-popup"),u=d.parent().parent(".km-shim").length;d=d[0],!u&&d&&d!==i.element[0]||"popover"!==e(t.target).closest("a").data("rel")&&(n(o,c)||n(a,c)||l&&n(e(l)[0],c)||i.close())},_fit:function(e,t,n){var i=0;return e+t>n&&(i=n-(e+t)),e<0&&(i=-e),i},_flip:function(e,t,n,i,o,r,a){var s=0;return a=a||t,r!==o&&r!==b&&o!==b&&(e+a>i&&(s+=-(n+t)),e+s<0&&(s+=n+t)),s},_scrollableParents:function(){return e(this.options.anchor).parentsUntil("body").filter(function(e,t){return s.isScrollable(t)})},_position:function(t){var n,i,o,r,a,l,c,d,g,m,v,_,b,w,k,y,x,S=this,T=S.element,E=S.wrapper,I=S.options,M=e(I.viewport),F=u.zoomLevel(),R=!!(M[0]==window&&window.innerWidth&&F<=1.02),P=e(I.anchor),z=I.origin.toLowerCase().split(" "),B=I.position.toLowerCase().split(" "),L=S.collisions,H=10002,N=0,O=document.documentElement;if(a=I.viewport===window?{top:window.pageYOffset||document.documentElement.scrollTop||0,left:window.pageXOffset||document.documentElement.scrollLeft||0}:M.offset(),R?(l=window.innerWidth,c=window.innerHeight):(l=M.width(),c=M.height()),R&&O.scrollHeight-O.clientHeight>0&&(d=I.isRtl?-1:1,l-=d*s.support.scrollbar()),n=P.parents().filter(E.siblings()),n[0])if(o=Math.max(+n.css("zIndex"),0))H=o+10;else for(i=P.parentsUntil(n),r=i.length;N<r;N++)o=+e(i[N]).css("zIndex"),o&&H<o&&(H=o+10);return E.css("zIndex",H),E.css(t&&t.isFixed?{left:t.x,top:t.y}:S._align(z,B)),g=h(E,A,P[0]===E.offsetParent()[0]),m=h(E),v=P.offsetParent().parent(".k-animation-container,.k-popup,.k-group"),v.length&&(g=h(E,A,!0),m=h(E)),m.top-=a.top,m.left-=a.left,S.wrapper.data(D)||E.data(D,W({},g)),_=W({},m),b=W({},g),w=I.adjustSize,"fit"===L[0]&&(b.top+=S._fit(_.top,f(E)+w.height,c/F)),"fit"===L[1]&&(b.left+=S._fit(_.left,p(E)+w.width,l/F)),k=W({},b),y=f(T),x=f(E),!E.height()&&y&&(x+=y),"flip"===L[0]&&(b.top+=S._flip(_.top,y,f(P),c/F,z[0],B[0],x)),"flip"===L[1]&&(b.left+=S._flip(_.left,p(T),p(P),l/F,z[1],B[1],p(E))),T.css(A,C),E.css(b),b.left!=k.left||b.top!=k.top},_align:function(t,n){var i,o=this,r=o.wrapper,a=e(o.options.anchor),s=t[0],l=t[1],c=n[0],d=n[1],u=h(a),g=e(o.options.appendTo),m=p(r),v=f(r)||f(r.children().first()),_=p(a),w=f(a),y=u.top,C=u.left,S=Math.round;return g[0]!=document.body&&(i=h(g),y-=i.top,C-=i.left),s===x&&(y+=w),s===b&&(y+=S(w/2)),c===x&&(y-=v),c===b&&(y-=S(v/2)),l===k&&(C+=_),l===b&&(C+=S(_/2)),d===k&&(C-=m),d===b&&(C-=S(m/2)),{top:y,left:C}}});l.plugin(j),i=s.support.stableSort,o="kendoTabKeyTrap",r="a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], *[contenteditable]",a=d.extend({init:function(t){this.element=e(t),this.element.autoApplyNS(o)},trap:function(){this.element.on("keydown",L(this._keepInTrap,this))},removeTrap:function(){this.element.kendoDestroy(o)},destroy:function(){this.element.kendoDestroy(o),this.element=t},shouldTrap:function(){return!0},_keepInTrap:function(e){var t,n,i;9===e.which&&this.shouldTrap()&&!e.isDefaultPrevented()&&(t=this._focusableElements(),n=this._sortFocusableElements(t),i=this._nextFocusable(e,n),this._focus(i),e.preventDefault())},_focusableElements:function(){var t=this.element.find(r).filter(function(t,n){return n.tabIndex>=0&&e(n).is(":visible")&&!e(n).is("[disabled]")});return this.element.is("[tabindex]")&&t.push(this.element[0]),t},_sortFocusableElements:function(e){var t,n;return i?t=e.sort(function(e,t){return e.tabIndex-t.tabIndex}):(n="__k_index",e.each(function(e,t){t.setAttribute(n,e)}),t=e.sort(function(e,t){return e.tabIndex===t.tabIndex?parseInt(e.getAttribute(n),10)-parseInt(t.getAttribute(n),10):e.tabIndex-t.tabIndex}),e.removeAttr(n)),t},_nextFocusable:function(e,t){var n=t.length,i=t.index(e.target);return t.get((i+(e.shiftKey?-1:1))%n)},_focus:function(e){return"IFRAME"==e.nodeName?(e.contentWindow.document.body.focus(),t):(e.focus(),"INPUT"==e.nodeName&&e.setSelectionRange&&this._haveSelectionRange(e)&&e.setSelectionRange(0,e.value.length),t)},_haveSelectionRange:function(e){var t=e.type.toLowerCase();return"text"===t||"search"===t||"url"===t||"tel"===t||"password"===t}}),l.Popup.TabKeyTrap=a}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("drawing/surface-tooltip.min",["kendo.popup.min","drawing/kendo-drawing.min"],e)}(function(){!function(e){var t=".kendo",n=window.kendo,i=n.deepExtend,o=n.drawing.util,r=o.defined,a=o.limitValue,s=o.eventCoordinates,l=n._outerWidth,c=n._outerHeight,d=e.proxy,u='<div class="k-tooltip"><div class="k-tooltip-content"></div></div>',h='<div class="k-tooltip-button"><a href="\\#" class="k-icon k-i-close">close</a></div>',p=n.Class.extend({init:function(t,n){this.element=e(u),this.content=this.element.children(".k-tooltip-content"),n=n||{},this.options=i({},this.options,this._tooltipOptions(n)),this.popupOptions={appendTo:n.appendTo,animation:n.animation,copyAnchorStyles:!1,collision:"fit fit"},this._openPopupHandler=e.proxy(this._openPopup,this),this.surface=t,this._bindEvents()},options:{position:"top",showOn:"mouseenter",offset:7,autoHide:!0,hideDelay:0,showAfter:100},_bindEvents:function(){this._showHandler=d(this._showEvent,this),this._surfaceLeaveHandler=d(this._surfaceLeave,this),this._mouseleaveHandler=d(this._mouseleave,this),this._mousemoveHandler=d(this._mousemove,this),this.surface.bind("click",this._showHandler),this.surface.bind("mouseenter",this._showHandler),this.surface.bind("mouseleave",this._mouseleaveHandler),this.surface.bind("mousemove",this._mousemoveHandler),this.surface.element.on("mouseleave"+t,this._surfaceLeaveHandler),this.element.on("click"+t,".k-tooltip-button",d(this._hideClick,this)),this.element.on("mouseleave"+t,d(this._tooltipLeave,this))},getPopup:function(){return this.popup||(this.popup=new n.ui.Popup(this.element,this.popupOptions)),this.popup},destroy:function(){var e=this.popup;this.surface.unbind("click",this._showHandler),this.surface.unbind("mouseenter",this._showHandler),this.surface.unbind("mouseleave",this._mouseleaveHandler),this.surface.unbind("mousemove",this._mousemoveHandler),this.surface.element.off("mouseleave"+t,this._surfaceLeaveHandler),this.element.off("click"+t),this.element.off("mouseleave"+t),e&&(e.destroy(),delete this.popup),delete this.popupOptions,clearTimeout(this._timeout),delete this.element,delete this.content,delete this.surface},_tooltipOptions:function(e){return e=e||{},{position:e.position,showOn:e.showOn,offset:e.offset,autoHide:e.autoHide,width:e.width,height:e.height,content:e.content,shared:e.shared,hideDelay:e.hideDelay,showAfter:e.showAfter}},_tooltipShape:function(e){for(;e&&!e.options.tooltip;)e=e.parent;return e},_updateContent:function(e,t,i){var o=i.content;if(n.isFunction(o)&&(o=o({element:t,target:e})),o)return this.content.html(o),!0},_position:function(e,t,n,i){var o,r=t.position,l=t.offset||0,c=this.surface,d=c._instance._elementOffset(),u=c.getSize(),h=c._instance._offset,p=e.bbox(),f=n.width,g=n.height,m=0,v=0;return p.origin.translate(d.left,d.top),h&&p.origin.translate(-h.x,-h.y),"cursor"==r&&i?(o=s(i),m=o.x-f/2,v=o.y-g-l):"left"==r?(m=p.origin.x-f-l,v=p.center().y-g/2):"right"==r?(m=p.bottomRight().x+l,v=p.center().y-g/2):"bottom"==r?(m=p.center().x-f/2,v=p.bottomRight().y+l):(m=p.center().x-f/2,v=p.origin.y-g-l),{left:a(m,d.left,d.left+u.width),top:a(v,d.top,d.top+u.height)}},show:function(e,t){this._show(e,e,i({},this.options,this._tooltipOptions(e.options.tooltip),t))},hide:function(){var e=this.popup,t=this._current;delete this._current,clearTimeout(this._showTimeout),e&&e.visible()&&t&&!this.surface.trigger("tooltipClose",{element:t.shape,target:t.target,popup:e})&&e.close()},_hideClick:function(e){e.preventDefault(),this.hide()},_show:function(e,t,n,i,o){var r,a,s=this._current;clearTimeout(this._timeout),s&&(s.shape===t&&n.shared||s.target===e)||(clearTimeout(this._showTimeout),r=this.getPopup(),!this.surface.trigger("tooltipOpen",{element:t,target:e,popup:r})&&this._updateContent(e,t,n)&&(this._autoHide(n),a=this._measure(n),r.visible()&&r.close(!0),this._current={options:n,elementSize:a,shape:t,target:e,position:this._position(n.shared?t:e,n,a,i)},o?this._showTimeout=setTimeout(this._openPopupHandler,n.showAfter||0):this._openPopup()))},_openPopup:function(){var e=this._current,t=e.position;this.getPopup().open(t.left,t.top)},_autoHide:function(t){t.autoHide&&this._closeButton&&(this.element.removeClass("k-tooltip-closable"),this._closeButton.remove(),delete this._closeButton),t.autoHide||this._closeButton||(this.element.addClass("k-tooltip-closable"),this._closeButton=e(h).prependTo(this.element))},_showEvent:function(e){var t,n=this._tooltipShape(e.element);n&&(t=i({},this.options,this._tooltipOptions(n.options.tooltip)),t&&t.showOn==e.type&&this._show(e.element,n,t,e.originalEvent,!0))},_measure:function(e){var t,n,i,o=this.getPopup();return this.element.css({width:"auto",height:"auto"}),i=o.visible(),i||o.wrapper.show(),this.element.css({width:r(e.width)?e.width:"auto",height:r(e.height)?e.height:"auto"}),t=l(this.element),n=c(this.element),i||o.wrapper.hide(),{width:t,height:n}},_mouseleave:function(e){var t,n;this.popup&&!this._popupRelatedTarget(e.originalEvent)&&(t=this,n=t._current,n&&n.options.autoHide&&(t._timeout=setTimeout(function(){clearTimeout(t._showTimeout),t.hide()},n.options.hideDelay||0)))},_mousemove:function(e){var t,n,i=this._current;i&&e.element&&(t=i.options,"cursor"==t.position&&(n=this._position(e.element,t,i.elementSize,e.originalEvent),i.position=n,this.getPopup().wrapper.css({left:n.left,top:n.top})))},_surfaceLeave:function(e){this.popup&&!this._popupRelatedTarget(e)&&(clearTimeout(this._showTimeout),this.hide())},_popupRelatedTarget:function(t){return t.relatedTarget&&e(t.relatedTarget).closest(this.popup.wrapper).length},_tooltipLeave:function(){var e=this,t=e._current;t&&t.options.autoHide&&(e._timeout=setTimeout(function(){e.hide()},t.options.hideDelay||0))}});n.drawing.SurfaceTooltip=p}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("drawing/surface.min",["drawing/kendo-drawing.min","drawing/surface-tooltip.min"],e)}(function(){!function(e){function t(e){this._instance.translate(e)}var n,i=window.kendo,o=i.drawing,r=o.Surface,a=i.ui.Widget,s=i.deepExtend,l=e.proxy;i.support.svg=r.support.svg,i.support.canvas=r.support.canvas,n=a.extend({init:function(e,n){a.fn.init.call(this,e,{}),this.options=s({},this.options,n),this._instance=r.create(this.element[0],n),this._instance.translate&&(this.translate=t),this._triggerInstanceHandler=l(this._triggerInstanceEvent,this),this._bindHandler("click"),this._bindHandler("mouseenter"),this._bindHandler("mouseleave"),this._bindHandler("mousemove"),this._enableTracking()},options:{name:"Surface",tooltip:{}},events:["click","mouseenter","mouseleave","mousemove","resize","tooltipOpen","tooltipClose"],_triggerInstanceEvent:function(e){this.trigger(e.type,e)},_bindHandler:function(e){this._instance.bind(e,this._triggerInstanceHandler)},draw:function(e){this._instance.draw(e)},clear:function(){this._instance&&this._instance.clear(),this.hideTooltip()},destroy:function(){this._instance&&(this._instance.destroy(),delete this._instance),this._tooltip&&(this._tooltip.destroy(),delete this._tooltip),a.fn.destroy.call(this)},exportVisual:function(){return this._instance.exportVisual()},eventTarget:function(e){return this._instance.eventTarget(e)},showTooltip:function(e,t){this._tooltip&&this._tooltip.show(e,t)},hideTooltip:function(){this._tooltip&&this._tooltip.hide()},suspendTracking:function(){this._instance.suspendTracking(),this.hideTooltip()},resumeTracking:function(){this._instance.resumeTracking()},getSize:function(){return{width:this.element.width(),height:this.element.height()}},setSize:function(e){this.element.css({width:e.width,height:e.height}),this._size=e,this._instance.currentSize(e),this._resize()},_resize:function(){this._instance.currentSize(this._size),this._instance._resize()},_enableTracking:function(){i.ui.Popup&&(this._tooltip=new o.SurfaceTooltip(this,this.options.tooltip||{}))}}),i.ui.plugin(n),n.create=function(e,t){return new n(e,t)},i.drawing.Surface=n}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("drawing/html.min",["drawing/kendo-drawing.min"],e)}(function(){!function(e){var t=window.kendo,n=t.drawing,i=n.drawDOM;n.drawDOM=function(t,n){return i(e(t)[0],n)},n.drawDOM.drawText=i.drawText,n.drawDOM.getFontFaces=i.getFontFaces}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.drawing.min",["drawing/util.min","drawing/kendo-drawing.min","drawing/surface-tooltip.min","drawing/surface.min","drawing/html.min"],e)}(function(){},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.validator.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(t){var n,i=l.ui.validator.ruleResolvers||{},o={};for(n in i)e.extend(!0,o,i[n].resolve(t));return o}function i(e){return e.replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function o(e){return e=(e+"").split("."),e.length>1?e[1].length:0}function r(t){return e(e.parseHTML?e.parseHTML(t):t)}function a(t,n){var i,o,r,a,s=e();for(r=0,a=t.length;r<a;r++)i=t[r],h.test(i.className)&&(o=i.getAttribute(l.attr("for")),o===n&&(s=s.add(i)));return s}var s,l=window.kendo,c=l.ui.Widget,d=".kendoValidator",u="k-invalid-msg",h=RegExp(u,"i"),p="k-invalid",f="k-valid",g=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/i,m=/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,v=":input:not(:button,[type=submit],[type=reset],[disabled],[readonly])",_=":checkbox:not([disabled],[readonly])",b="[type=number],[type=range]",w="blur",k="name",y="form",x="novalidate",C="validate",S="change",T="validateInput",D=e.proxy,A=function(e,t){return"string"==typeof t&&(t=RegExp("^(?:"+t+")$")),t.test(e)},E=function(e,t,n){var i=e.val();return!e.filter(t).length||""===i||A(i,n)},I=function(e,t){return!!e.length&&null!=e[0].attributes[t]};l.ui.validator||(l.ui.validator={rules:{},messages:{}}),s=c.extend({init:function(t,i){var o=this,r=n(t),a="["+l.attr("validate")+"!=false]";i=i||{},i.rules=e.extend({},l.ui.validator.rules,r.rules,i.rules),i.messages=e.extend({},l.ui.validator.messages,r.messages,i.messages),c.fn.init.call(o,t,i),o._errorTemplate=l.template(o.options.errorTemplate),o.element.is(y)&&o.element.attr(x,x),o._inputSelector=v+a,o._checkboxSelector=_+a,o._errors={},o._attachEvents(),o._isValidated=!1},events:[C,S,T],options:{name:"Validator",errorTemplate:'<span class="k-widget k-tooltip k-tooltip-validation"><span class="k-icon k-i-warning"> </span> #=message#</span>',messages:{required:"{0} is required",pattern:"{0} is not valid",min:"{0} should be greater than or equal to {1}",max:"{0} should be smaller than or equal to {1}",step:"{0} is not valid",email:"{0} is not valid email",url:"{0} is not valid URL",date:"{0} is not valid date",dateCompare:"End date should be greater than or equal to the start date"},rules:{required:function(e){var t=e.filter("[type=checkbox]").length&&!e.is(":checked"),n=e.val();return!(I(e,"required")&&(!n||""===n||0===n.length||t))},pattern:function(e){return!e.filter("[type=text],[type=email],[type=url],[type=tel],[type=search],[type=password]").filter("[pattern]").length||""===e.val()||A(e.val(),e.attr("pattern"))},min:function(e){if(e.filter(b+",["+l.attr("type")+"=number]").filter("[min]").length&&""!==e.val()){var t=parseFloat(e.attr("min"))||0,n=l.parseFloat(e.val());return t<=n}return!0},max:function(e){if(e.filter(b+",["+l.attr("type")+"=number]").filter("[max]").length&&""!==e.val()){var t=parseFloat(e.attr("max"))||0,n=l.parseFloat(e.val());return t>=n}return!0},step:function(e){if(e.filter(b+",["+l.attr("type")+"=number]").filter("[step]").length&&""!==e.val()){var t,n=parseFloat(e.attr("min"))||0,i=parseFloat(e.attr("step"))||1,r=parseFloat(e.val()),a=o(i);return a?(t=Math.pow(10,a),Math.floor((r-n)*t)%(i*t)/Math.pow(100,a)===0):(r-n)%i===0}return!0},email:function(e){return E(e,"[type=email],["+l.attr("type")+"=email]",g)},url:function(e){return E(e,"[type=url],["+l.attr("type")+"=url]",m)},date:function(e){return!e.filter("[type^=date],["+l.attr("type")+"=date]").length||""===e.val()||null!==l.parseDate(e.val(),e.attr(l.attr("format")))}},validateOnBlur:!0},destroy:function(){c.fn.destroy.call(this),this.element.off(d)},value:function(){return!!this._isValidated&&0===this.errors().length},_submit:function(e){return!!this.validate()||(e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault(),!1)},_checkElement:function(e){var t=this.value();this.validateInput(e),this.value()!==t&&this.trigger(S)},_attachEvents:function(){var t=this;t.element.is(y)&&t.element.on("submit"+d,D(t._submit,t)),t.options.validateOnBlur&&(t.element.is(v)?(t.element.on(w+d,function(){t._checkElement(t.element)}),t.element.is(_)&&t.element.on("click"+d,function(){t._checkElement(t.element)})):(t.element.on(w+d,t._inputSelector,function(){t._checkElement(e(this))}),t.element.on("click"+d,t._checkboxSelector,function(){t._checkElement(e(this))})))},validate:function(){var e,t,n,i,o=!1,r=this.value();if(this._errors={},this.element.is(v))o=this.validateInput(this.element);else{for(i=!1,e=this.element.find(this._inputSelector),t=0,n=e.length;t<n;t++)this.validateInput(e.eq(t))||(i=!0);o=!i}return this.trigger(C,{valid:o}),r!==o&&this.trigger(S),o},validateInput:function(t){var n,o,a,s,c,d,h,g,m,v,_,b;return t=e(t),this._isValidated=!0,n=this,o=n._errorTemplate,a=n._checkValidity(t),s=a.valid,c="."+u,d=t.attr(k)||"",h=n._findMessageContainer(d).add(t.next(c).filter(function(){var t=e(this);return!t.filter("["+l.attr("for")+"]").length||t.attr(l.attr("for"))===d})).hide(),m=!t.attr("aria-invalid"),t.removeAttr("aria-invalid"),s?delete n._errors[d]:(g=n._extractMessage(t,a.key),n._errors[d]=g,v=r(o({message:i(g)})),_=h.attr("id"),n._decorateMessageContainer(v,d),_&&v.attr("id",_),h.replaceWith(v).length||v.insertAfter(t),v.show(),t.attr("aria-invalid",!0)),m!==s&&this.trigger(T,{valid:s,input:t}),t.toggleClass(p,!s),t.toggleClass(f,s),l.widgetInstance(t)&&(b=l.widgetInstance(t)._inputWrapper,b&&(b.toggleClass(p,!s),b.toggleClass(p,!s))),s},hideMessages:function(){var e=this,t="."+u,n=e.element;n.is(v)?n.next(t).hide():n.find(t).hide()},_findMessageContainer:function(t){var n,i,o,r=l.ui.validator.messageLocators,s=e();for(i=0,o=this.element.length;i<o;i++)s=s.add(a(this.element[i].getElementsByTagName("*"),t));for(n in r)s=s.add(r[n].locate(this.element,t));return s},_decorateMessageContainer:function(e,t){var n,i=l.ui.validator.messageLocators;e.addClass(u).attr(l.attr("for"),t||"");for(n in i)i[n].decorate(e,t);e.attr("role","alert")},_extractMessage:function(e,t){var n,i=this,o=i.options.messages[t],r=e.attr(k);return l.ui.Validator.prototype.options.messages[t]||(n=l.isFunction(o)?o(e):o),o=l.isFunction(o)?o(e):o,l.format(e.attr(l.attr(t+"-msg"))||e.attr("validationMessage")||n||e.attr("title")||o||"",r,e.attr(t)||e.attr(l.attr(t)))},_checkValidity:function(e){var t,n=this.options.rules;for(t in n)if(!n[t].call(this,e))return{valid:!1,key:t};return{valid:!0}},errors:function(){var e,t=[],n=this._errors;for(e in n)t.push(n[e]);return t}}),l.ui.plugin(s)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.userevents.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(e,t){var n=e.x.location,i=e.y.location,o=t.x.location,r=t.y.location,a=n-o,s=i-r;return{center:{x:(n+o)/2,y:(i+r)/2},distance:Math.sqrt(a*a+s*s)}}function i(e){var t,n,i,o=[],r=e.originalEvent,s=e.currentTarget,l=0;if(e.api)o.push({id:2,event:e,target:e.target,currentTarget:e.target,location:e,type:"api"});else if(e.type.match(/touch/))for(n=r?r.changedTouches:[],t=n.length;l<t;l++)i=n[l],o.push({location:i,event:e,target:i.target,currentTarget:s,id:i.identifier,type:"touch"});else o.push(a.pointers||a.msPointers?{location:r,event:e,target:e.target,currentTarget:s,id:r.pointerId,type:"pointer"}:{id:1,event:e,target:e.target,currentTarget:s,location:e,type:"mouse"});return o}function o(e){for(var t=r.eventMap.up.split(" "),n=0,i=t.length;n<i;n++)e(t[n])}var r=window.kendo,a=r.support,s=r.Class,l=r.Observable,c=e.now,d=e.extend,u=a.mobileOS,h=u&&u.android,p=800,f=300,g=a.browser.msie?5:0,m="press",v="hold",_="select",b="start",w="move",k="end",y="cancel",x="tap",C="doubleTap",S="release",T="gesturestart",D="gesturechange",A="gestureend",E="gesturetap",I={api:0,touch:0,mouse:9,pointer:9},M=!a.touch||a.mouseAndTouchPresent,F=s.extend({init:function(e,t){var n=this;n.axis=e,n._updateLocationData(t),n.startLocation=n.location,n.velocity=n.delta=0,n.timeStamp=c()},move:function(e){var t=this,n=e["page"+t.axis],i=c(),o=i-t.timeStamp||1;!n&&h||(t.delta=n-t.location,t._updateLocationData(e),t.initialDelta=n-t.startLocation,t.velocity=t.delta/o,t.timeStamp=i)},_updateLocationData:function(e){var t=this,n=t.axis;t.location=e["page"+n],t.client=e["client"+n],t.screen=e["screen"+n]}}),R=s.extend({init:function(e,t,n){d(this,{x:new F("X",n.location),y:new F("Y",n.location),type:n.type,useClickAsTap:e.useClickAsTap,threshold:e.threshold||I[n.type],userEvents:e,target:t,currentTarget:n.currentTarget,initialTouch:n.target,id:n.id,pressEvent:n,_clicks:e._clicks,supportDoubleTap:e.supportDoubleTap,_moved:!1,_finished:!1})},press:function(){this._holdTimeout=setTimeout(e.proxy(this,"_hold"),this.userEvents.minHold),this._trigger(m,this.pressEvent)},_tap:function(e){var t=this;t.userEvents._clicks++,1==t.userEvents._clicks&&(t._clickTimeout=setTimeout(function(){1==t.userEvents._clicks?t._trigger(x,e):t._trigger(C,e),t.userEvents._clicks=0},f))},_hold:function(){this._trigger(v,this.pressEvent)},move:function(e){var t=this,n="api"!==e.type&&t.userEvents._shouldNotMove;if(!t._finished&&!n){if(t.x.move(e.location),t.y.move(e.location),!t._moved){if(t._withinIgnoreThreshold())return;if(P.current&&P.current!==t.userEvents)return t.dispose();t._start(e)}t._finished||t._trigger(w,e)}},end:function(e){this.endTime=c(),this._finished||(this._finished=!0,this._trigger(S,e),this._moved?this._trigger(k,e):this.useClickAsTap||(this.supportDoubleTap?this._tap(e):this._trigger(x,e)),clearTimeout(this._holdTimeout),this.dispose())},dispose:function(){var t=this.userEvents,n=t.touches;this._finished=!0,this.pressEvent=null,clearTimeout(this._holdTimeout),n.splice(e.inArray(this,n),1)},skip:function(){this.dispose()},cancel:function(){this.dispose()},isMoved:function(){return this._moved},_start:function(e){clearTimeout(this._holdTimeout),this.startTime=c(),this._moved=!0,this._trigger(b,e)},_trigger:function(e,t){var n=this,i=t.event,o={touch:n,x:n.x,y:n.y,target:n.target,event:i};n.userEvents.notify(e,o)&&i.preventDefault()},_withinIgnoreThreshold:function(){var e=this.x.initialDelta,t=this.y.initialDelta;return Math.sqrt(e*e+t*t)<=this.threshold}}),P=l.extend({init:function(t,n){var i,s,c,u,h=this,f=r.guid();n=n||{},i=h.filter=n.filter,h.threshold=n.threshold||g,h.minHold=n.minHold||p,h.touches=[],h._maxTouches=n.multiTouch?2:1,h.allowSelection=n.allowSelection, +h.captureUpIfMoved=n.captureUpIfMoved,h.useClickAsTap=!n.fastTap&&!a.delayedClick(),h.eventNS=f,h._clicks=0,h.supportDoubleTap=n.supportDoubleTap,t=e(t).handler(h),l.fn.init.call(h),d(h,{element:t,surface:e(n.global&&M?t[0].ownerDocument.documentElement:n.surface||t),stopPropagation:n.stopPropagation,pressed:!1}),h.surface.handler(h).on(r.applyEventMap("move",f),"_move").on(r.applyEventMap("up cancel",f),"_end"),t.on(r.applyEventMap("down",f),i,"_start"),h.useClickAsTap&&t.on(r.applyEventMap("click",f),i,"_click"),(a.pointers||a.msPointers)&&(a.browser.version<11?(s="pinch-zoom double-tap-zoom",t.css("-ms-touch-action",n.touchAction&&"none"!=n.touchAction?s+" "+n.touchAction:s)):t.css("touch-action",n.touchAction||"none")),n.preventDragEvent&&t.on(r.applyEventMap("dragstart",f),r.preventDefault),t.on(r.applyEventMap("mousedown",f),i,{root:t},"_select"),h.captureUpIfMoved&&a.eventCapture&&(c=h.surface[0],u=e.proxy(h.preventIfMoving,h),o(function(e){c.addEventListener(e,u,!0)})),h.bind([m,v,x,C,b,w,k,S,y,T,D,A,E,_],n)},preventIfMoving:function(e){this._isMoved()&&e.preventDefault()},destroy:function(){var e,t=this;t._destroyed||(t._destroyed=!0,t.captureUpIfMoved&&a.eventCapture&&(e=t.surface[0],o(function(n){e.removeEventListener(n,t.preventIfMoving)})),t.element.kendoDestroy(t.eventNS),t.surface.kendoDestroy(t.eventNS),t.element.removeData("handler"),t.surface.removeData("handler"),t._disposeAll(),t.unbind(),delete t.surface,delete t.element,delete t.currentTarget)},capture:function(){P.current=this},cancel:function(){this._disposeAll(),this.trigger(y)},notify:function(e,t){var i=this,o=i.touches;if(this._isMultiTouch()){switch(e){case w:e=D;break;case k:e=A;break;case x:e=E}d(t,{touches:o},n(o[0],o[1]))}return this.trigger(e,d(t,{type:e}))},press:function(e,t,n){this._apiCall("_start",e,t,n)},move:function(e,t){this._apiCall("_move",e,t)},end:function(e,t){this._apiCall("_end",e,t)},_isMultiTouch:function(){return this.touches.length>1},_maxTouchesReached:function(){return this.touches.length>=this._maxTouches},_disposeAll:function(){for(var e=this.touches;e.length>0;)e.pop().dispose()},_isMoved:function(){return e.grep(this.touches,function(e){return e.isMoved()}).length},_select:function(e){this.allowSelection&&!this.trigger(_,{event:e})||e.preventDefault()},_start:function(t){var n,o,r=this,a=0,s=r.filter,l=i(t),c=l.length,d=t.which;if(!(d&&d>1||r._maxTouchesReached()))for(P.current=null,r.currentTarget=t.currentTarget,r.stopPropagation&&t.stopPropagation();a<c&&!r._maxTouchesReached();a++)o=l[a],n=s?e(o.currentTarget):r.element,n.length&&(o=new R(r,n,o),r.touches.push(o),o.press(),r._isMultiTouch()&&r.notify("gesturestart",{}))},_move:function(e){this._eachTouch("move",e)},_end:function(e){this._eachTouch("end",e)},_click:function(t){var n={touch:{initialTouch:t.target,target:e(t.currentTarget),endTime:c(),x:{location:t.pageX,client:t.clientX},y:{location:t.pageY,client:t.clientY}},x:t.pageX,y:t.pageY,target:e(t.currentTarget),event:t,type:"tap"};this.trigger("tap",n)&&t.preventDefault()},_eachTouch:function(e,t){var n,o,r,a,s=this,l={},c=i(t),d=s.touches;for(n=0;n<d.length;n++)o=d[n],l[o.id]=o;for(n=0;n<c.length;n++)r=c[n],a=l[r.id],a&&a[e](r)},_apiCall:function(t,n,i,o){this[t]({api:!0,pageX:n,pageY:i,clientX:n,clientY:i,target:e(o||this.element)[0],stopPropagation:e.noop,preventDefault:e.noop})}});P.defaultThreshold=function(e){g=e},P.minHold=function(e){p=e},r.getTouches=i,r.touchDelta=n,r.UserEvents=P}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.draganddrop.min",["kendo.core.min","kendo.userevents.min"],e)}(function(){return function(e,t){function n(t,n){try{return e.contains(t,n)||t==n}catch(i){return!1}}function i(e,t){return parseInt(e.css(t),10)||0}function o(e,t){return Math.min(Math.max(e,t.min),t.max)}function r(e,t){var n=A(e),o=_._outerWidth,r=_._outerHeight,a=n.left+i(e,"borderLeftWidth")+i(e,"paddingLeft"),s=n.top+i(e,"borderTopWidth")+i(e,"paddingTop"),l=a+e.width()-o(t,!0),c=s+e.height()-r(t,!0);return{x:{min:a,max:l},y:{min:s,max:c}}}function a(n,i,o){for(var r,a,s=0,l=i&&i.length,c=o&&o.length;n&&n.parentNode;){for(s=0;s<l;s++)if(r=i[s],r.element[0]===n)return{target:r,targetElement:n};for(s=0;s<c;s++)if(a=o[s],e.contains(a.element[0],n)&&b.matchesSelector.call(n,a.options.filter))return{target:a,targetElement:n};n=n.parentNode}return t}function s(e,t){var n,i=t.options.group,o=e[i];if(x.fn.destroy.call(t),o.length>1){for(n=0;n<o.length;n++)if(o[n]==t){o.splice(n,1);break}}else o.length=0,delete e[i]}function l(e){var t,n,i,o=c()[0];return e[0]===o?(n=o.scrollTop,i=o.scrollLeft,{top:n,left:i,bottom:n+k.height(),right:i+k.width()}):(t=e.offset(),t.bottom=t.top+e.height(),t.right=t.left+e.width(),t)}function c(){return e(_.support.browser.edge||_.support.browser.safari?w.body:w.documentElement)}function d(t){var n,i=c();if(!t||t===w.body||t===w.documentElement)return i;for(n=e(t)[0];n&&!_.isScrollable(n)&&n!==w.body;)n=n.parentNode;return n===w.body?i:e(n)}function u(e,t,n){var i={x:0,y:0},o=50;return e-n.left<o?i.x=-(o-(e-n.left)):n.right-e<o&&(i.x=o-(n.right-e)),t-n.top<o?i.y=-(o-(t-n.top)):n.bottom-t<o&&(i.y=o-(n.bottom-t)),i}var h,p,f,g,m,v,_=window.kendo,b=_.support,w=window.document,k=e(window),y=_.Class,x=_.ui.Widget,C=_.Observable,S=_.UserEvents,T=e.proxy,D=e.extend,A=_.getOffset,E={},I={},M={},F=_.elementUnderCursor,R="keyup",P="change",z="dragstart",B="hold",L="drag",H="dragend",N="dragcancel",O="hintDestroyed",V="dragenter",W="dragleave",U="drop",q=C.extend({init:function(t,n){var i=this,o=t[0];i.capture=!1,o.addEventListener?(e.each(_.eventMap.down.split(" "),function(){o.addEventListener(this,T(i._press,i),!0)}),e.each(_.eventMap.up.split(" "),function(){o.addEventListener(this,T(i._release,i),!0)})):(e.each(_.eventMap.down.split(" "),function(){o.attachEvent(this,T(i._press,i))}),e.each(_.eventMap.up.split(" "),function(){o.attachEvent(this,T(i._release,i))})),C.fn.init.call(i),i.bind(["press","release"],n||{})},captureNext:function(){this.capture=!0},cancelCapture:function(){this.capture=!1},_press:function(e){var t=this;t.trigger("press"),t.capture&&e.preventDefault()},_release:function(e){var t=this;t.trigger("release"),t.capture&&(e.preventDefault(),t.cancelCapture())}}),j=C.extend({init:function(t){var n=this;C.fn.init.call(n),n.forcedEnabled=!1,e.extend(n,t),n.scale=1,n.horizontal?(n.measure="offsetWidth",n.scrollSize="scrollWidth",n.axis="x"):(n.measure="offsetHeight",n.scrollSize="scrollHeight",n.axis="y")},makeVirtual:function(){e.extend(this,{virtual:!0,forcedEnabled:!0,_virtualMin:0,_virtualMax:0})},virtualSize:function(e,t){this._virtualMin===e&&this._virtualMax===t||(this._virtualMin=e,this._virtualMax=t,this.update())},outOfBounds:function(e){return e>this.max||e<this.min},forceEnabled:function(){this.forcedEnabled=!0},getSize:function(){return this.container[0][this.measure]},getTotal:function(){return this.element[0][this.scrollSize]},rescale:function(e){this.scale=e},update:function(e){var t=this,n=t.virtual?t._virtualMax:t.getTotal(),i=n*t.scale,o=t.getSize();(0!==n||t.forcedEnabled)&&(t.max=t.virtual?-t._virtualMin:0,t.size=o,t.total=i,t.min=Math.min(t.max,o-i),t.minScale=o/n,t.centerOffset=(i-o)/2,t.enabled=t.forcedEnabled||i>o,e||t.trigger(P,t))}}),G=C.extend({init:function(e){var t=this;C.fn.init.call(t),t.x=new j(D({horizontal:!0},e)),t.y=new j(D({horizontal:!1},e)),t.container=e.container,t.forcedMinScale=e.minScale,t.maxScale=e.maxScale||100,t.bind(P,e)},rescale:function(e){this.x.rescale(e),this.y.rescale(e),this.refresh()},centerCoordinates:function(){return{x:Math.min(0,-this.x.centerOffset),y:Math.min(0,-this.y.centerOffset)}},refresh:function(){var e=this;e.x.update(),e.y.update(),e.enabled=e.x.enabled||e.y.enabled,e.minScale=e.forcedMinScale||Math.min(e.x.minScale,e.y.minScale),e.fitScale=Math.max(e.x.minScale,e.y.minScale),e.trigger(P)}}),$=C.extend({init:function(e){var t=this;D(t,e),C.fn.init.call(t)},outOfBounds:function(){return this.dimension.outOfBounds(this.movable[this.axis])},dragMove:function(e){var t=this,n=t.dimension,i=t.axis,o=t.movable,r=o[i]+e;n.enabled&&((r<n.min&&e<0||r>n.max&&e>0)&&(e*=t.resistance),o.translateAxis(i,e),t.trigger(P,t))}}),Y=y.extend({init:function(t){var n,i,o,r,a=this;D(a,{elastic:!0},t),o=a.elastic?.5:0,r=a.movable,a.x=n=new $({axis:"x",dimension:a.dimensions.x,resistance:o,movable:r}),a.y=i=new $({axis:"y",dimension:a.dimensions.y,resistance:o,movable:r}),a.userEvents.bind(["press","move","end","gesturestart","gesturechange"],{gesturestart:function(e){a.gesture=e,a.offset=a.dimensions.container.offset()},press:function(t){e(t.event.target).closest("a").is("[data-navigate-on-press=true]")&&t.sender.cancel()},gesturechange:function(e){var t,o,s,l=a.gesture,c=l.center,d=e.center,u=e.distance/l.distance,h=a.dimensions.minScale,p=a.dimensions.maxScale;r.scale<=h&&u<1&&(u+=.8*(1-u)),r.scale*u>=p&&(u=p/r.scale),o=r.x+a.offset.left,s=r.y+a.offset.top,t={x:(o-c.x)*u+d.x-o,y:(s-c.y)*u+d.y-s},r.scaleWith(u),n.dragMove(t.x),i.dragMove(t.y),a.dimensions.rescale(r.scale),a.gesture=e,e.preventDefault()},move:function(e){e.event.target.tagName.match(/textarea|input/i)||(n.dimension.enabled||i.dimension.enabled?(n.dragMove(e.x.delta),i.dragMove(e.y.delta),e.preventDefault()):e.touch.skip())},end:function(e){e.preventDefault()}})}}),K=b.transitions.prefix+"Transform";p=b.hasHW3D?function(e,t,n){return"translate3d("+e+"px,"+t+"px,0) scale("+n+")"}:function(e,t,n){return"translate("+e+"px,"+t+"px) scale("+n+")"},f=C.extend({init:function(t){var n=this;C.fn.init.call(n),n.element=e(t),n.element[0].style.webkitTransformOrigin="left top",n.x=0,n.y=0,n.scale=1,n._saveCoordinates(p(n.x,n.y,n.scale))},translateAxis:function(e,t){this[e]+=t,this.refresh()},scaleTo:function(e){this.scale=e,this.refresh()},scaleWith:function(e){this.scale*=e,this.refresh()},translate:function(e){this.x+=e.x,this.y+=e.y,this.refresh()},moveAxis:function(e,t){this[e]=t,this.refresh()},moveTo:function(e){D(this,e),this.refresh()},refresh:function(){var e,t=this,n=t.x,i=t.y;t.round&&(n=Math.round(n),i=Math.round(i)),e=p(n,i,t.scale),e!=t.coordinates&&(_.support.browser.msie&&_.support.browser.version<10?(t.element[0].style.position="absolute",t.element[0].style.left=t.x+"px",t.element[0].style.top=t.y+"px"):t.element[0].style[K]=e,t._saveCoordinates(e),t.trigger(P))},_saveCoordinates:function(e){this.coordinates=e}}),g=x.extend({init:function(e,t){var n,i=this;x.fn.init.call(i,e,t),n=i.options.group,n in I?I[n].push(i):I[n]=[i]},events:[V,W,U],options:{name:"DropTarget",group:"default"},destroy:function(){s(I,this)},_trigger:function(e,t){var n=this,i=E[n.options.group];if(i)return n.trigger(e,D({},t.event,{draggable:i,dropTarget:t.dropTarget}))},_over:function(e){this._trigger(V,e)},_out:function(e){this._trigger(W,e)},_drop:function(e){var t=this,n=E[t.options.group];n&&(n.dropped=!t._trigger(U,e))}}),g.destroyGroup=function(e){var t,n=I[e]||M[e];if(n){for(t=0;t<n.length;t++)x.fn.destroy.call(n[t]);n.length=0,delete I[e],delete M[e]}},g._cache=I,m=g.extend({init:function(e,t){var n,i=this;x.fn.init.call(i,e,t),n=i.options.group,n in M?M[n].push(i):M[n]=[i]},destroy:function(){s(M,this)},options:{name:"DropTargetArea",group:"default",filter:null}}),v=x.extend({init:function(e,t){var n=this;x.fn.init.call(n,e,t),n._activated=!1,n.userEvents=new S(n.element,{global:!0,allowSelection:!0,filter:n.options.filter,threshold:n.options.distance,start:T(n._start,n),hold:T(n._hold,n),move:T(n._drag,n),end:T(n._end,n),cancel:T(n._cancel,n),select:T(n._select,n)}),n._afterEndHandler=T(n._afterEnd,n),n._captureEscape=T(n._captureEscape,n)},events:[B,z,L,H,N,O],options:{name:"Draggable",distance:_.support.touch?0:5,group:"default",cursorOffset:null,axis:null,container:null,filter:null,ignore:null,holdToDrag:!1,autoScroll:!1,dropped:!1},cancelHold:function(){this._activated=!1},_captureEscape:function(e){var t=this;e.keyCode===_.keys.ESC&&(t._trigger(N,{event:e}),t.userEvents.cancel())},_updateHint:function(t){var n,i=this,r=i.options,a=i.boundaries,s=r.axis,l=i.options.cursorOffset;l?n={left:t.x.location+l.left,top:t.y.location+l.top}:(i.hintOffset.left+=t.x.delta,i.hintOffset.top+=t.y.delta,n=e.extend({},i.hintOffset)),a&&(n.top=o(n.top,a.y),n.left=o(n.left,a.x)),"x"===s?delete n.top:"y"===s&&delete n.left,i.hint.css(n)},_shouldIgnoreTarget:function(t){var n=this.options.ignore;return n&&e(t).is(n)},_select:function(e){this._shouldIgnoreTarget(e.event.target)||e.preventDefault()},_start:function(n){var i,o=this,a=o.options,s=a.container?e(a.container):null,l=a.hint;return this._shouldIgnoreTarget(n.touch.initialTouch)||a.holdToDrag&&!o._activated?(o.userEvents.cancel(),t):(o.currentTarget=n.target,o.currentTargetOffset=A(o.currentTarget),l&&(o.hint&&o.hint.stop(!0,!0).remove(),o.hint=_.isFunction(l)?e(l.call(o,o.currentTarget)):l,i=A(o.currentTarget),o.hintOffset=i,o.hint.css({position:"absolute",zIndex:2e4,left:i.left,top:i.top}).appendTo(w.body),o.angular("compile",function(){o.hint.removeAttr("ng-repeat");for(var t=e(n.target);!t.data("$$kendoScope")&&t.length;)t=t.parent();return{elements:o.hint.get(),scopeFrom:t.data("$$kendoScope")}})),E[a.group]=o,o.dropped=!1,s&&(o.boundaries=r(s,o.hint)),e(w).on(R,o._captureEscape),o._trigger(z,n)&&(o.userEvents.cancel(),o._afterEnd()),o.userEvents.capture(),t)},_hold:function(e){this.currentTarget=e.target,this.options.holdToDrag&&this._trigger(B,e)?this.userEvents.cancel():this._activated=!0},_drag:function(t){var n,i;t.preventDefault(),n=this._elementUnderCursor(t),this.options.autoScroll&&this._cursorElement!==n&&(this._scrollableParent=d(n),this._cursorElement=n),this._lastEvent=t,this._processMovement(t,n),this.options.autoScroll&&this._scrollableParent[0]&&(i=u(t.x.location,t.y.location,l(this._scrollableParent)),this._scrollCompenstation=e.extend({},this.hintOffset),this._scrollVelocity=i,0===i.y&&0===i.x?(clearInterval(this._scrollInterval),this._scrollInterval=null):this._scrollInterval||(this._scrollInterval=setInterval(e.proxy(this,"_autoScroll"),50))),this.hint&&this._updateHint(t)},_processMovement:function(n,i){this._withDropTarget(i,function(i,o){if(!i)return h&&(h._trigger(W,D(n,{dropTarget:e(h.targetElement)})),h=null),t;if(h){if(o===h.targetElement)return;h._trigger(W,D(n,{dropTarget:e(h.targetElement)}))}i._trigger(V,D(n,{dropTarget:e(o)})),h=D(i,{targetElement:o})}),this._trigger(L,D(n,{dropTarget:h,elementUnderCursor:i}))},_autoScroll:function(){var e,t,n,i,o,r,a,s,l=this._scrollableParent[0],d=this._scrollVelocity,u=this._scrollCompenstation;l&&(e=this._elementUnderCursor(this._lastEvent),this._processMovement(this._lastEvent,e),i=l===c()[0],i?(t=w.body.scrollHeight>k.height(),n=w.body.scrollWidth>k.width()):(t=l.offsetHeight<=l.scrollHeight,n=l.offsetWidth<=l.scrollWidth),o=l.scrollTop+d.y,r=t&&o>0&&o<l.scrollHeight,a=l.scrollLeft+d.x,s=n&&a>0&&a<l.scrollWidth,r&&(l.scrollTop+=d.y),s&&(l.scrollLeft+=d.x),this.hint&&i&&(s||r)&&(r&&(u.top+=d.y),s&&(u.left+=d.x),this.hint.css(u)))},_end:function(t){this._withDropTarget(this._elementUnderCursor(t),function(n,i){n&&(n._drop(D({},t,{dropTarget:e(i)})),h=null)}),this._cancel(this._trigger(H,t))},_cancel:function(e){var t=this;t._scrollableParent=null,this._cursorElement=null,clearInterval(this._scrollInterval),t._activated=!1,t.hint&&!t.dropped?setTimeout(function(){t.hint.stop(!0,!0),e?t._afterEndHandler():t.hint.animate(t.currentTargetOffset,"fast",t._afterEndHandler)},0):t._afterEnd()},_trigger:function(e,t){var n=this;return n.trigger(e,D({},t.event,{x:t.x,y:t.y,currentTarget:n.currentTarget,initialTarget:t.touch?t.touch.initialTouch:null,dropTarget:t.dropTarget,elementUnderCursor:t.elementUnderCursor}))},_elementUnderCursor:function(e){var t=F(e),i=this.hint;return i&&n(i[0],t)&&(i.hide(),t=F(e),t||(t=F(e)),i.show()),t},_withDropTarget:function(e,t){var n,i=this.options.group,o=I[i],r=M[i];(o&&o.length||r&&r.length)&&(n=a(e,o,r),n?t(n.target,n.targetElement):t())},destroy:function(){var e=this;x.fn.destroy.call(e),e._afterEnd(),e.userEvents.destroy(),this._scrollableParent=null,this._cursorElement=null,clearInterval(this._scrollInterval),e.currentTarget=null},_afterEnd:function(){var t=this;t.hint&&t.hint.remove(),delete E[t.options.group],t.trigger("destroy"),t.trigger(O),e(w).off(R,t._captureEscape)}}),_.ui.plugin(g),_.ui.plugin(m),_.ui.plugin(v),_.TapCapture=q,_.containerBoundaries=r,D(_.ui,{Pane:Y,PaneDimensions:G,Movable:f}),_.ui.Draggable.utils={autoScrollVelocity:u,scrollableViewPort:l,findScrollableParent:d}}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.scroller.min",["kendo.fx.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.mobile,o=n.effects,r=i.ui,a=e.proxy,s=e.extend,l=r.Widget,c=n.Class,d=n.ui.Movable,u=n.ui.Pane,h=n.ui.PaneDimensions,p=o.Transition,f=o.Animation,g=Math.abs,m=500,v=.7,_=.96,b=10,w=55,k=.5,y=5,x="km-scroller-release",C="km-scroller-refresh",S="pull",T="change",D="resize",A="scroll",E=2,I=f.extend({init:function(e){var t=this;f.fn.init.call(t),s(t,e),t.userEvents.bind("gestureend",a(t.start,t)),t.tapCapture.bind("press",a(t.cancel,t))},enabled:function(){return this.movable.scale<this.dimensions.minScale},done:function(){return this.dimensions.minScale-this.movable.scale<.01},tick:function(){var e=this.movable;e.scaleWith(1.1),this.dimensions.rescale(e.scale)},onEnd:function(){var e=this.movable;e.scaleTo(this.dimensions.minScale),this.dimensions.rescale(e.scale)}}),M=f.extend({init:function(e){var t=this;f.fn.init.call(t),s(t,e,{transition:new p({axis:e.axis,movable:e.movable,onEnd:function(){t._end()}})}),t.tapCapture.bind("press",function(){t.cancel()}),t.userEvents.bind("end",a(t.start,t)),t.userEvents.bind("gestureend",a(t.start,t)),t.userEvents.bind("tap",a(t.onEnd,t))},onCancel:function(){this.transition.cancel()},freeze:function(e){var t=this;t.cancel(),t._moveTo(e)},onEnd:function(){var e=this;e.paneAxis.outOfBounds()?e._snapBack():e._end()},done:function(){return g(this.velocity)<1},start:function(e){var t,n=this;n.dimension.enabled&&(n.paneAxis.outOfBounds()?n._snapBack():(t=e.touch.id===E?0:e.touch[n.axis].velocity,n.velocity=Math.max(Math.min(t*n.velocityMultiplier,w),-w),n.tapCapture.captureNext(),f.fn.start.call(n)))},tick:function(){var e=this,t=e.dimension,n=e.paneAxis.outOfBounds()?k:e.friction,i=e.velocity*=n,o=e.movable[e.axis]+i;!e.elastic&&t.outOfBounds(o)&&(o=Math.max(Math.min(o,t.max),t.min),e.velocity=0),e.movable.moveAxis(e.axis,o)},_end:function(){this.tapCapture.cancelCapture(),this.end()},_snapBack:function(){var e=this,t=e.dimension,n=e.movable[e.axis]>t.max?t.max:t.min;e._moveTo(n)},_moveTo:function(e){this.transition.moveTo({location:e,duration:m,ease:p.easeOutExpo})}}),F=f.extend({init:function(e){var t=this;n.effects.Animation.fn.init.call(this),s(t,e,{origin:{},destination:{},offset:{}})},tick:function(){this._updateCoordinates(),this.moveTo(this.origin)},done:function(){return g(this.offset.y)<y&&g(this.offset.x)<y},onEnd:function(){this.moveTo(this.destination),this.callback&&this.callback.call()},setCoordinates:function(e,t){this.offset={},this.origin=e,this.destination=t},setCallback:function(e){e&&n.isFunction(e)?this.callback=e:e=t},_updateCoordinates:function(){this.offset={x:(this.destination.x-this.origin.x)/4,y:(this.destination.y-this.origin.y)/4},this.origin={y:this.origin.y+this.offset.y,x:this.origin.x+this.offset.x}}}),R=c.extend({init:function(t){var n=this,i="x"===t.axis,o=e('<div class="km-touch-scrollbar km-'+(i?"horizontal":"vertical")+'-scrollbar" />');s(n,t,{element:o,elementSize:0,movable:new d(o),scrollMovable:t.movable,alwaysVisible:t.alwaysVisible,size:i?"width":"height"}),n.scrollMovable.bind(T,a(n.refresh,n)),n.container.append(o),t.alwaysVisible&&n.show()},refresh:function(){var e=this,t=e.axis,n=e.dimension,i=n.size,o=e.scrollMovable,r=i/n.total,a=Math.round(-o[t]*r),s=Math.round(i*r);r>=1?this.element.css("display","none"):this.element.css("display",""),a+s>i?s=i-a:a<0&&(s+=a,a=0),e.elementSize!=s&&(e.element.css(e.size,s+"px"),e.elementSize=s),e.movable.moveAxis(t,a)},show:function(){this.element.css({opacity:v,visibility:"visible"})},hide:function(){this.alwaysVisible||this.element.css({opacity:0})}}),P=l.extend({init:function(i,o){var r,c,p,f,m,v,_,b,w,k=this;return l.fn.init.call(k,i,o),i=k.element,(k._native=k.options.useNative&&n.support.hasNativeScrolling)?(i.addClass("km-native-scroller").prepend('<div class="km-scroll-header"/>'),s(k,{scrollElement:i,fixedContainer:i.children().first()}),t):(i.css("overflow","hidden").addClass("km-scroll-wrapper").wrapInner('<div class="km-scroll-container"/>').prepend('<div class="km-scroll-header"/>'),r=i.children().eq(1),c=new n.TapCapture(i),p=new d(r),f=new h({element:r,container:i,forcedEnabled:k.options.zoom}),m=this.options.avoidScrolling,v=new n.UserEvents(i,{touchAction:"pan-y",fastTap:!0,allowSelection:!0,preventDragEvent:!0,captureUpIfMoved:!0,multiTouch:k.options.zoom,supportDoubleTap:k.options.supportDoubleTap,start:function(t){f.refresh();var n=g(t.x.velocity),i=g(t.y.velocity),o=2*n>=i,r=e.contains(k.fixedContainer[0],t.event.target),a=2*i>=n;!r&&!m(t)&&k.enabled&&(f.x.enabled&&o||f.y.enabled&&a)?v.capture():v.cancel()}}),_=new u({movable:p,dimensions:f,userEvents:v,elastic:k.options.elastic}),b=new I({movable:p,dimensions:f,userEvents:v,tapCapture:c}),w=new F({moveTo:function(e){k.scrollTo(e.x,e.y)}}),p.bind(T,function(){k.scrollTop=-p.y,k.scrollLeft=-p.x,k.trigger(A,{scrollTop:k.scrollTop,scrollLeft:k.scrollLeft})}),k.options.mousewheelScrolling&&i.on("DOMMouseScroll mousewheel",a(this,"_wheelScroll")),s(k,{movable:p,dimensions:f,zoomSnapBack:b,animatedScroller:w,userEvents:v,pane:_,tapCapture:c,pulled:!1,enabled:!0,scrollElement:r,scrollTop:0,scrollLeft:0,fixedContainer:i.children().first()}),k._initAxis("x"),k._initAxis("y"),k._wheelEnd=function(){k._wheel=!1,k.userEvents.end(0,k._wheelY)},f.refresh(),k.options.pullToRefresh&&k._initPullToRefresh(),t)},_wheelScroll:function(e){if(!e.ctrlKey){this._wheel||(this._wheel=!0,this._wheelY=0,this.userEvents.press(0,this._wheelY)),clearTimeout(this._wheelTimeout),this._wheelTimeout=setTimeout(this._wheelEnd,50);var t=n.wheelDeltaY(e);t&&(this._wheelY+=t,this.userEvents.move(0,this._wheelY)),e.preventDefault()}},makeVirtual:function(){this.dimensions.y.makeVirtual()},virtualSize:function(e,t){this.dimensions.y.virtualSize(e,t)},height:function(){return this.dimensions.y.size},scrollHeight:function(){return this.scrollElement[0].scrollHeight},scrollWidth:function(){return this.scrollElement[0].scrollWidth},options:{name:"Scroller",zoom:!1,pullOffset:140,visibleScrollHints:!1,elastic:!0,useNative:!1,mousewheelScrolling:!0,avoidScrolling:function(){return!1},pullToRefresh:!1,messages:{pullTemplate:"Pull to refresh",releaseTemplate:"Release to refresh",refreshTemplate:"Refreshing"}},events:[S,A,D],_resize:function(){this._native||this.contentResized()},setOptions:function(e){var t=this;l.fn.setOptions.call(t,e),e.pullToRefresh&&t._initPullToRefresh()},reset:function(){this._native?this.scrollElement.scrollTop(0):(this.movable.moveTo({x:0,y:0}),this._scale(1))},contentResized:function(){this.dimensions.refresh(),this.pane.x.outOfBounds()&&this.movable.moveAxis("x",this.dimensions.x.min),this.pane.y.outOfBounds()&&this.movable.moveAxis("y",this.dimensions.y.min)},zoomOut:function(){var e=this.dimensions;e.refresh(),this._scale(e.fitScale),this.movable.moveTo(e.centerCoordinates())},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},scrollTo:function(e,t){this._native?(this.scrollElement.scrollLeft(g(e)),this.scrollElement.scrollTop(g(t))):(this.dimensions.refresh(),this.movable.moveTo({x:e,y:t}))},animatedScrollTo:function(e,t,n){var i,o;this._native?this.scrollTo(e,t):(i={x:this.movable.x,y:this.movable.y},o={x:e,y:t},this.animatedScroller.setCoordinates(i,o),this.animatedScroller.setCallback(n),this.animatedScroller.start())},pullHandled:function(){var e=this;e.refreshHint.removeClass(C),e.hintContainer.html(e.pullTemplate({})),e.yinertia.onEnd(),e.xinertia.onEnd(),e.userEvents.cancel()},destroy:function(){l.fn.destroy.call(this),this.userEvents&&this.userEvents.destroy()},_scale:function(e){this.dimensions.rescale(e),this.movable.scaleTo(e)},_initPullToRefresh:function(){var e=this;e.dimensions.y.forceEnabled(),e.pullTemplate=n.template(e.options.messages.pullTemplate),e.releaseTemplate=n.template(e.options.messages.releaseTemplate),e.refreshTemplate=n.template(e.options.messages.refreshTemplate),e.scrollElement.prepend('<span class="km-scroller-pull"><span class="km-icon"></span><span class="km-loading-left"></span><span class="km-loading-right"></span><span class="km-template">'+e.pullTemplate({})+"</span></span>"),e.refreshHint=e.scrollElement.children().first(),e.hintContainer=e.refreshHint.children(".km-template"),e.pane.y.bind("change",a(e._paneChange,e)),e.userEvents.bind("end",a(e._dragEnd,e))},_dragEnd:function(){var e=this;e.pulled&&(e.pulled=!1,e.refreshHint.removeClass(x).addClass(C),e.hintContainer.html(e.refreshTemplate({})),e.yinertia.freeze(e.options.pullOffset/2),e.trigger("pull"))},_paneChange:function(){var e=this;e.movable.y/k>e.options.pullOffset?e.pulled||(e.pulled=!0,e.refreshHint.removeClass(C).addClass(x),e.hintContainer.html(e.releaseTemplate({}))):e.pulled&&(e.pulled=!1,e.refreshHint.removeClass(x),e.hintContainer.html(e.pullTemplate({})))},_initAxis:function(e){var t=this,n=t.movable,i=t.dimensions[e],o=t.tapCapture,r=t.pane[e],a=new R({axis:e,movable:n,dimension:i,container:t.element,alwaysVisible:t.options.visibleScrollHints});i.bind(T,function(){a.refresh()}),r.bind(T,function(){a.show()}),t[e+"inertia"]=new M({axis:e,paneAxis:r,movable:n,tapCapture:o,userEvents:t.userEvents,dimension:i,elastic:t.options.elastic,friction:t.options.friction||_,velocityMultiplier:t.options.velocityMultiplier||b,end:function(){a.hide(),t.trigger("scrollEnd",{axis:e,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft})}})}});r.plugin(P)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.groupable.min",["kendo.core.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui.Widget,o=n._outerWidth,r=n.attr,a=e.extend,s=e.each,l=e.proxy,c=!1,d="dir",u="field",h="title",p="asc",f="desc",g="group-sort",m=".kendoGroupable",v="change",_=n.template('<div class="k-group-indicator" data-#=data.ns#field="${data.field}" data-#=data.ns#title="${data.title || ""}" data-#=data.ns#dir="${data.dir || "asc"}"><a href="\\#" class="k-link"><span class="k-icon k-i-sort-${(data.dir || "asc") == "asc" ? "asc-sm" : "desc-sm"}" title="(sorted ${(data.dir || "asc") == "asc" ? "ascending": "descending"})"></span>${data.title ? data.title: data.field}</a><a class="k-button k-button-icon k-bare"><span class="k-icon k-i-close"></span></a></div>',{useWithBlock:!1}),b=function(t){var i=t.attr(n.attr("title"));return i&&(i=n.htmlEncode(i)),e('<div class="k-header k-group-clue k-drag-clue" />').html(i||t.attr(n.attr("field"))).prepend('<span class="k-icon k-drag-status k-i-cancel" />')},w=e('<div class="k-grouping-dropclue"/>'),k=i.extend({init:function(s,u){var h,_,k=this,y=n.guid(),x=l(k._intializePositions,k),C=k._dropCuePositions=[];i.fn.init.call(k,s,u),c=n.support.isRtl(s),_=c?"right":"left",k.draggable=h=k.options.draggable||new n.ui.Draggable(k.element,{filter:k.options.draggableElements,hint:b,group:y}),k.groupContainer=e(k.options.groupContainer,k.element).kendoDropTarget({group:h.options.group,dragenter:function(e){k._canDrag(e.draggable.currentTarget)&&(e.draggable.hint.find(".k-drag-status").removeClass("k-i-cancel").addClass("k-i-plus"),w.css(_,0).appendTo(k.groupContainer))},dragleave:function(e){e.draggable.hint.find(".k-drag-status").removeClass("k-i-plus").addClass("k-i-cancel"),w.remove()},drop:function(t){var i,o=t.draggable.currentTarget,r=o.attr(n.attr("field")),s=o.attr(n.attr("title")),l=k.indicator(r),d=k._dropCuePositions,u=d[d.length-1],h=a({},k.options.sort,o.data(g)),p=h.dir;(o.hasClass("k-group-indicator")||k._canDrag(o))&&(u?(i=k._dropCuePosition(n.getOffset(w).left+parseInt(u.element.css("marginLeft"),10)*(c?-1:1)+parseInt(u.element.css("marginRight"),10)),i&&k._canDrop(e(l),i.element,i.left)&&(i.before?i.element.before(l||k.buildIndicator(r,s,p)):i.element.after(l||k.buildIndicator(r,s,p)),k._setIndicatorSortOptions(r,h),k._change())):(k.groupContainer.empty(),k.groupContainer.append(k.buildIndicator(r,s,p)),k._setIndicatorSortOptions(r,h),k._change()))}}).kendoDraggable({filter:"div.k-group-indicator",hint:b,group:h.options.group,dragcancel:l(k._dragCancel,k),dragstart:function(e){var t=e.currentTarget,n=parseInt(t.css("marginLeft"),10),i=t.position(),r=c?i.left-n:i.left+o(t);x(),w.css("left",r).appendTo(k.groupContainer),this.hint.find(".k-drag-status").removeClass("k-i-cancel").addClass("k-i-plus")},dragend:function(){k._dragEnd(this)},drag:l(k._drag,k)}).on("click"+m,".k-button",function(t){t.preventDefault(),k._removeIndicator(e(this).parent())}).on("click"+m,".k-link",function(t){var n=e(this).parent(),i=n.attr(r(d))===p?f:p;n.attr(r(d),i),k._change(),t.preventDefault()}),h.bind(["dragend","dragcancel","dragstart","drag"],{dragend:function(){k._dragEnd(this)},dragcancel:l(k._dragCancel,k),dragstart:function(e){var n,i,r;return k.options.allowDrag||k._canDrag(e.currentTarget)?(x(),C.length?(n=C[C.length-1].element,i=parseInt(n.css("marginRight"),10),r=n.position().left+o(n)+i):r=0,t):(e.preventDefault(),t)},drag:l(k._drag,k)}),k.dataSource=k.options.dataSource,k.dataSource&&k._refreshHandler?k.dataSource.unbind(v,k._refreshHandler):k._refreshHandler=l(k.refresh,k),k.dataSource&&(k.dataSource.bind("change",k._refreshHandler),k.refresh())},refresh:function(){var t,n=this,i=n.dataSource,o=i.group()||[],l=r(u),c=r(h);n.groupContainer&&(n.groupContainer.empty(),s(o,function(i,o){var r=o.field,s=o.dir,d=n.element.find(n.options.filter).filter(function(){return e(this).attr(l)===r});t=n.buildIndicator(r,d.attr(c),s),n.groupContainer.append(t),n._setIndicatorSortOptions(r,a({},n.options.sort,{dir:s,compare:o.compare}))})),n._invalidateGroupContainer()},destroy:function(){var e=this;i.fn.destroy.call(e),e.groupContainer.off(m),e.groupContainer.data("kendoDropTarget")&&e.groupContainer.data("kendoDropTarget").destroy(),e.groupContainer.data("kendoDraggable")&&e.groupContainer.data("kendoDraggable").destroy(),e.options.draggable||e.draggable.destroy(),e.dataSource&&e._refreshHandler&&(e.dataSource.unbind("change",e._refreshHandler),e._refreshHandler=null),e.groupContainer=e.element=e.draggable=null},events:["change"],options:{name:"Groupable",filter:"th",draggableElements:"th",messages:{empty:"Drag a column header and drop it here to group by that column"},sort:{dir:p,compare:null}},indicator:function(t){var i=e(".k-group-indicator",this.groupContainer);return e.grep(i,function(i){return e(i).attr(n.attr("field"))===t})[0]},buildIndicator:function(e,t,i){var o=this,r=_({ns:n.ns,field:e.replace(/"/g,"'"),title:t,dir:i||(o.options.sort||{}).dir||p});return r},_setIndicatorSortOptions:function(t,n){var i=e(this.indicator(t));i.data(g,n)},aggregates:function(){var t,i,o,r=this;return r.element.find(r.options.filter).map(function(){var r=e(this),a=r.attr(n.attr("aggregates")),s=r.attr(n.attr("field"));if(a&&""!==a)for(t=a.split(","),a=[],i=0,o=t.length;i<o;i++)a.push({field:s,aggregate:t[i]});return a}).toArray()},descriptors:function(){var t,i=this,o=e(".k-group-indicator",i.groupContainer),r=i.aggregates();return e.map(o,function(o){var a,s;return o=e(o),t=o.attr(n.attr("field")),a=i.options.sort||{},s=o.data(g)||{},{field:t,dir:o.attr(n.attr("dir")),aggregates:r||[],compare:s.compare||a.compare}})},_removeIndicator:function(e){var t=this;e.off(),e.removeData(),e.remove(),t._invalidateGroupContainer(), +t._change()},_change:function(){var e,n=this;if(n.dataSource){if(e=n.descriptors(),n.trigger("change",{groups:e}))return n.refresh(),t;n.dataSource.group(e)}},_dropCuePosition:function(t){var n,i,r,a,s,l=this._dropCuePositions;if(w.is(":visible")&&0!==l.length)return t=Math.ceil(t),n=l[l.length-1],i=n.left,r=n.right,a=parseInt(n.element.css("marginLeft"),10),s=parseInt(n.element.css("marginRight"),10),t>=r&&!c||t<i&&c?t={left:n.element.position().left+(c?-a:o(n.element)+s),element:n.element,before:!1}:(t=e.grep(l,function(e){return e.left<=t&&t<=e.right||c&&t>e.right})[0],t&&(t={left:c?t.element.position().left+o(t.element)+s:t.element.position().left-a,element:t.element,before:!0})),t},_drag:function(e){var t=this._dropCuePosition(e.x.location);t&&w.css({left:t.left,right:"auto"})},_canDrag:function(e){var t=e.attr(n.attr("field"));return"false"!=e.attr(n.attr("groupable"))&&t&&(e.hasClass("k-group-indicator")||!this.indicator(t))},_canDrop:function(e,t,n){var i=e.next(),o=e[0]!==t[0]&&(!i[0]||t[0]!==i[0]||!c&&n>i.position().left||c&&n<i.position().left);return o},_dragEnd:function(t){var i=this,o=t.currentTarget.attr(n.attr("field")),r=i.indicator(o);t!==i.options.draggable&&!t.dropped&&r&&i._removeIndicator(e(r)),i._dragCancel()},_dragCancel:function(){w.remove(),this._dropCuePositions=[]},_intializePositions:function(){var t,i=this,r=e(".k-group-indicator",i.groupContainer);i._dropCuePositions=e.map(r,function(i){return i=e(i),t=n.getOffset(i).left,{left:parseInt(t,10),right:parseInt(t+o(i),10),element:i}})},_invalidateGroupContainer:function(){var e=this.groupContainer;e&&e.is(":empty")&&e.html(this.options.messages.empty)}});n.ui.plugin(k)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.reorderable.min",["kendo.core.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){function n(t,n){t=e(t),n?t.find(".k-drag-status").removeClass("k-i-plus").addClass("k-i-cancel"):t.find(".k-drag-status").removeClass("k-i-cancel").addClass("k-i-plus")}var i=window.kendo,o=i._outerWidth,r=i._outerHeight,a=i.getOffset,s=i.ui.Widget,l="change",c="k-reorderable",d=s.extend({init:function(t,d){var u,h=this,p=i.guid()+"-reorderable";s.fn.init.call(h,t,d),t=h.element.addClass(c),d=h.options,h.draggable=u=d.draggable||new i.ui.Draggable(t,{group:p,autoScroll:!0,filter:d.filter,hint:d.hint}),h.reorderDropCue=e('<div class="k-reorder-cue"></div></div>'),t.find(u.options.filter).kendoDropTarget({group:u.options.group,dragenter:function(e){var t,i,s,l;h._draggable&&(t=this.element,s=!h._dropTargetAllowed(t)||h._isLastDraggable(),n(e.draggable.hint,s),s||(i=a(t),l=i.left,d.inSameContainer&&!d.inSameContainer({source:t,target:h._draggable,sourceIndex:h._index(t),targetIndex:h._index(h._draggable)})?h._dropTarget=t:h._index(t)>h._index(h._draggable)&&(l+=o(t)),h.reorderDropCue.css({height:r(t),top:i.top,left:l}).appendTo(document.body)))},dragleave:function(e){n(e.draggable.hint,!0),h.reorderDropCue.remove(),h._dropTarget=null},drop:function(){var e,t;h._dropTarget=null,h._draggable&&(e=this.element,t=h._draggable,h._dropTargetAllowed(e)&&!h._isLastDraggable()&&h.trigger(l,{element:h._draggable,target:e,oldIndex:h._index(t),newIndex:h._index(e),position:a(h.reorderDropCue).left>a(e).left?"after":"before"}))}}),u.bind(["dragcancel","dragend","dragstart","drag"],{dragcancel:function(){h.reorderDropCue.remove(),h._draggable=null,h._elements=null},dragend:function(){h.reorderDropCue.remove(),h._draggable=null,h._elements=null},dragstart:function(e){h._draggable=e.currentTarget,h._elements=h.element.find(h.draggable.options.filter)},drag:function(e){var t,n;h._dropTarget&&!this.hint.find(".k-drag-status").hasClass("k-i-cancel")&&(t=a(h._dropTarget).left,n=o(h._dropTarget),h.reorderDropCue.css(e.pageX>t+n/2?{left:t+n}:{left:t}))}})},options:{name:"Reorderable",filter:"*"},events:[l],_isLastDraggable:function(){var e,t=this.options.inSameContainer,n=this._draggable[0],i=this._elements.get(),o=!1;if(!t)return!1;for(;!o&&i.length>0;)e=i.pop(),o=n!==e&&t({source:n,target:e,sourceIndex:this._index(n),targetIndex:this._index(e)});return!o},_dropTargetAllowed:function(e){var t=this.options.inSameContainer,n=this.options.dragOverContainers,i=this._draggable;return i[0]!==e[0]&&(!t||!n||(!!t({source:i,target:e,sourceIndex:this._index(i),targetIndex:this._index(e)})||n(this._index(i),this._index(e))))},_index:function(e){return this._elements.index(e)},destroy:function(){var t=this;s.fn.destroy.call(t),t.element.find(t.draggable.options.filter).each(function(){var t=e(this);t.data("kendoDropTarget")&&t.data("kendoDropTarget").destroy()}),t.draggable&&(t.draggable.destroy(),t.draggable.element=t.draggable=null),t.elements=t.reorderDropCue=t._elements=t._draggable=null}});i.ui.plugin(d)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.resizable.min",["kendo.core.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,o=i.Widget,r=e.proxy,a=n.isFunction,s=e.extend,l="horizontal",c="vertical",d="start",u="resize",h="resizeend",p=o.extend({init:function(e,t){var n=this;o.fn.init.call(n,e,t),n.orientation=n.options.orientation.toLowerCase()!=c?l:c,n._positionMouse=n.orientation==l?"x":"y",n._position=n.orientation==l?"left":"top",n._sizingDom=n.orientation==l?"outerWidth":"outerHeight",n.draggable=new i.Draggable(t.draggableElement||e,{distance:1,filter:t.handle,drag:r(n._resize,n),dragcancel:r(n._cancel,n),dragstart:r(n._start,n),dragend:r(n._stop,n)}),n.userEvents=n.draggable.userEvents},events:[u,h,d],options:{name:"Resizable",orientation:l},resize:function(){},_max:function(e){var n=this,i=n.hint?n.hint[n._sizingDom]():0,o=n.options.max;return a(o)?o(e):o!==t?n._initialElementPosition+o-i:o},_min:function(e){var n=this,i=n.options.min;return a(i)?i(e):i!==t?n._initialElementPosition+i:i},_start:function(t){var n=this,i=n.options.hint,o=e(t.currentTarget);n._initialElementPosition=o.position()[n._position],n._initialMousePosition=t[n._positionMouse].startLocation,i&&(n.hint=a(i)?e(i(o)):i,n.hint.css({position:"absolute"}).css(n._position,n._initialElementPosition).appendTo(n.element)),n.trigger(d,t),n._maxPosition=n._max(t),n._minPosition=n._min(t),e(document.body).css("cursor",o.css("cursor"))},_resize:function(e){var n,i=this,o=i._maxPosition,r=i._minPosition,a=i._initialElementPosition+(e[i._positionMouse].location-i._initialMousePosition);n=r!==t?Math.max(r,a):a,i.position=n=o!==t?Math.min(o,n):n,i.hint&&i.hint.toggleClass(i.options.invalidClass||"",n==o||n==r).css(i._position,n),i.resizing=!0,i.trigger(u,s(e,{position:n}))},_stop:function(t){var n=this;n.hint&&n.hint.remove(),n.resizing=!1,n.trigger(h,s(t,{position:n.position})),e(document.body).css("cursor","")},_cancel:function(e){var n=this;n.hint&&(n.position=t,n.hint.css(n._position,n._initialElementPosition),n._stop(e))},destroy:function(){var e=this;o.fn.destroy.call(e),e.draggable&&e.draggable.destroy()},press:function(e){if(e){var t=e.position(),n=this;n.userEvents.press(t.left,t.top,e[0]),n.targetPosition=t,n.target=e}},move:function(e){var n=this,i=n._position,o=n.targetPosition,r=n.position;r===t&&(r=o[i]),o[i]=r+e,n.userEvents.move(o.left,o.top)},end:function(){this.userEvents.end(),this.target=this.position=t}});n.ui.plugin(p)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.sortable.min",["kendo.draganddrop.min"],e)}(function(){return function(e,t){function n(t,n){try{return e.contains(t,n)||t==n}catch(i){return!1}}function i(e){return e.clone()}function o(e){return e.clone().removeAttr("id").css("visibility","hidden")}var r=window.kendo,a=r.ui.Widget,s=r._outerWidth,l=r._outerHeight,c="start",d="beforeMove",u="move",h="end",p="change",f="cancel",g="sort",m="remove",v="receive",_=">*",b=-1,w=a.extend({init:function(e,t){var n=this;a.fn.init.call(n,e,t),n.options.placeholder||(n.options.placeholder=o),n.options.hint||(n.options.hint=i),n.draggable=n._createDraggable()},events:[c,d,u,h,p,f],options:{name:"Sortable",hint:null,placeholder:null,filter:_,holdToDrag:!1,disabled:null,container:null,connectWith:null,handler:null,cursorOffset:null,axis:null,ignore:null,autoScroll:!1,cursor:"auto",moveOnDragEnter:!1},destroy:function(){this.draggable.destroy(),a.fn.destroy.call(this)},_createDraggable:function(){var t=this,n=t.element,i=t.options;return new r.ui.Draggable(n,{filter:i.filter,hint:r.isFunction(i.hint)?i.hint:e(i.hint),holdToDrag:i.holdToDrag,container:i.container?e(i.container):null,cursorOffset:i.cursorOffset,axis:i.axis,ignore:i.ignore,autoScroll:i.autoScroll,dragstart:e.proxy(t._dragstart,t),dragcancel:e.proxy(t._dragcancel,t),drag:e.proxy(t._drag,t),dragend:e.proxy(t._dragend,t)})},_dragstart:function(t){var n=this.draggedElement=t.currentTarget,i=this.options.disabled,o=this.options.handler,a=this.options.placeholder,s=this.placeholder=e(r.isFunction(a)?a.call(this,n):a);i&&n.is(i)?t.preventDefault():o&&!e(t.initialTarget).is(o)?t.preventDefault():this.trigger(c,{item:n,draggableEvent:t})?t.preventDefault():(n.css("display","none"),n.before(s),this._setCursor())},_dragcancel:function(){this._cancel(),this.trigger(f,{item:this.draggedElement}),this._resetCursor()},_drag:function(n){var i,o,r,a,s,l=this.draggedElement,c=this._findTarget(n),d={left:n.x.location,top:n.y.location},u={x:n.x.delta,y:n.y.delta},h=this.options.axis,p=this.options.moveOnDragEnter,f={item:l,list:this,draggableEvent:n};if("x"===h||"y"===h)return this._movementByAxis(h,d,u[h],f),t;if(c){if(i=this._getElementCenter(c.element),o={left:Math.round(d.left-i.left),top:Math.round(d.top-i.top)},e.extend(f,{target:c.element}),c.appendToBottom)return this._movePlaceholder(c,null,f),t;if(c.appendAfterHidden&&this._movePlaceholder(c,"next",f),this._isFloating(c.element)?u.x<0&&p||!p&&o.left<0?r="prev":(u.x>0&&p||!p&&o.left>0)&&(r="next"):u.y<0&&p||!p&&o.top<0?r="prev":(u.y>0&&p||!p&&o.top>0)&&(r="next"),r){for(s="prev"===r?jQuery.fn.prev:jQuery.fn.next,a=s.call(c.element);a.length&&!a.is(":visible");)a=s.call(a);a[0]!=this.placeholder[0]&&this._movePlaceholder(c,r,f)}}},_dragend:function(n){var i,o,r,a,s=this.placeholder,l=this.draggedElement,c=this.indexOf(l),d=this.indexOf(s),u=this.options.connectWith;return this._resetCursor(),r={action:g,item:l,oldIndex:c,newIndex:d,draggableEvent:n},d>=0?o=this.trigger(h,r):(i=s.parents(u).getKendoSortable(),r.action=m,a=e.extend({},r,{action:v,oldIndex:b,newIndex:i.indexOf(s)}),o=!(!this.trigger(h,r)&&!i.trigger(h,a))),o||d===c?(this._cancel(),t):(s.replaceWith(l),l.show(),this.draggable.dropped=!0,r={action:this.indexOf(l)!=b?g:m,item:l,oldIndex:c,newIndex:this.indexOf(l),draggableEvent:n},this.trigger(p,r),i&&(a=e.extend({},r,{action:v,oldIndex:b,newIndex:i.indexOf(l)}),i.trigger(p,a)),t)},_findTarget:function(n){var i,o,r=this._findElementUnderCursor(n),a=this.options.connectWith;return e.contains(this.element[0],r)?(i=this.items(),o=i.filter(r)[0]||i.has(r)[0],o?{element:e(o),sortable:this}:null):this.element[0]==r&&this._isEmpty()?{element:this.element,sortable:this,appendToBottom:!0}:this.element[0]==r&&this._isLastHidden()?(o=this.items().eq(0),{element:o,sortable:this,appendAfterHidden:!0}):a?this._searchConnectedTargets(r,n):t},_findElementUnderCursor:function(e){var t=r.elementUnderCursor(e),i=e.sender;return n(i.hint[0],t)&&(i.hint.hide(),t=r.elementUnderCursor(e),t||(t=r.elementUnderCursor(e)),i.hint.show()),t},_searchConnectedTargets:function(t,n){var i,o,r,a,s=e(this.options.connectWith);for(a=0;a<s.length;a++)if(i=s.eq(a).getKendoSortable(),e.contains(s[a],t)){if(i)return o=i.items(),r=o.filter(t)[0]||o.has(t)[0],r?(i.placeholder=this.placeholder,{element:e(r),sortable:i}):null}else if(s[a]==t){if(i&&i._isEmpty())return{element:s.eq(a),sortable:i,appendToBottom:!0};if(this._isCursorAfterLast(i,n))return r=i.items().last(),{element:r,sortable:i}}},_isCursorAfterLast:function(e,t){var n,i,o=e.items().last(),a={left:t.x.location,top:t.y.location};return n=r.getOffset(o),n.top+=l(o),n.left+=s(o),i=this._isFloating(o)?n.left-a.left:n.top-a.top,i<0},_movementByAxis:function(t,n,i,o){var r,a="x"===t?n.left:n.top,s=i<0?this.placeholder.prev():this.placeholder.next(),l=this.items();s.length&&!s.is(":visible")&&(s=i<0?s.prev():s.next()),l.filter(s).length&&(e.extend(o,{target:s}),r=this._getElementCenter(s),r&&(r="x"===t?r.left:r.top),s.length&&i<0&&a-r<0?this._movePlaceholder({element:s,sortable:this},"prev",o):s.length&&i>0&&a-r>0&&this._movePlaceholder({element:s,sortable:this},"next",o))},_movePlaceholder:function(e,t,n){var i=this.placeholder;e.sortable.trigger(d,n)||(t?"prev"===t?e.element.before(i):"next"===t&&e.element.after(i):e.element.append(i),e.sortable.trigger(u,n))},_setCursor:function(){var t,n=this.options.cursor;n&&"auto"!==n&&(t=e(document.body),this._originalCursorType=t.css("cursor"),t.css({cursor:n}),this._cursorStylesheet||(this._cursorStylesheet=e("<style>* { cursor: "+n+" !important; }</style>")),this._cursorStylesheet.appendTo(t))},_resetCursor:function(){this._originalCursorType&&(e(document.body).css("cursor",this._originalCursorType),this._originalCursorType=null,this._cursorStylesheet.remove())},_getElementCenter:function(e){var t=e.length?r.getOffset(e):null;return t&&(t.top+=l(e)/2,t.left+=s(e)/2),t},_isFloating:function(e){var t=/left|right/.test(e.css("float")),n=/inline|table-cell/.test(e.css("display")),i=/flex/.test(e.parent().css("display"))&&(/row|row-reverse/.test(e.parent().css("flex-direction"))||!e.parent().css("flex-direction"));return t||n||i},_cancel:function(){this.draggedElement.show(),this.placeholder.remove()},_items:function(){var e,t=this.options.filter;return e=t?this.element.find(t):this.element.children()},indexOf:function(e){var t=this._items(),n=this.placeholder,i=this.draggedElement;return n&&e[0]==n[0]?t.not(i).index(e):t.not(n).index(e)},items:function(){var e=this.placeholder,t=this._items();return e&&(t=t.not(e)),t},_isEmpty:function(){return!this.items().length},_isLastHidden:function(){return 1===this.items().length&&this.items().is(":hidden")}});r.ui.plugin(w)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.selectable.min",["kendo.core.min","kendo.userevents.min"],e)}(function(){return function(e,t){function n(e,t){if(!e.is(":visible"))return!1;var n=o.getOffset(e),i=t.left+t.width,r=t.top+t.height;return n.right=n.left+o._outerWidth(e),n.bottom=n.top+o._outerHeight(e),!(n.left>i||n.right<t.left||n.top>r||n.bottom<t.top)}var i,o=window.kendo,r=o.ui.Widget,a=e.proxy,s=Math.abs,l="aria-selected",c="k-state-selected",d="k-state-selecting",u="k-selectable",h="change",p=".kendoSelectable",f="unselect",g="k-state-unselecting",m="input,a,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up,label.k-checkbox-label.k-no-text,.k-icon.k-i-collapse,.k-icon.k-i-expand,span.k-numeric-wrap",v=o.support.browser.msie,_=!1;!function(e){!function(){e('<div class="parent"><span /></div>').on("click",">*",function(){_=!0}).find("span").trigger("click").end().off()}()}(e),i=r.extend({init:function(t,n){var i,s=this;r.fn.init.call(s,t,n),s._marquee=e("<div class='k-marquee'><div class='k-marquee-color'></div></div>"),s._lastActive=null,s.element.addClass(u),s.relatedTarget=s.options.relatedTarget,i=s.options.multiple,this.options.aria&&i&&s.element.attr("aria-multiselectable",!0),s.userEvents=new o.UserEvents(s.element,{global:!0,allowSelection:!0,filter:(_?"":"."+u+" ")+s.options.filter,tap:a(s._tap,s),touchAction:i?"none":"pan-x pan-y"}),i&&s.userEvents.bind("start",a(s._start,s)).bind("move",a(s._move,s)).bind("end",a(s._end,s)).bind("select",a(s._select,s))},events:[h,f],options:{name:"Selectable",filter:">*",inputSelectors:m,multiple:!1,relatedTarget:e.noop},_isElement:function(e){var t,n=this.element,i=n.length,o=!1;for(e=e[0],t=0;t<i;t++)if(n[t]===e){o=!0;break}return o},_tap:function(t){var n,i=e(t.target),o=this,r=t.event.ctrlKey||t.event.metaKey,a=o.options.multiple,s=a&&t.event.shiftKey,l=t.event.which,d=t.event.button;!o._isElement(i.closest("."+u))||l&&3==l||d&&2==d||this._allowSelection(t.event.target)&&(n=i.hasClass(c),a&&r||o.clear(),i=i.add(o.relatedTarget(i)),s?o.selectRange(o._firstSelectee(),i,t):(n&&r?(o._unselect(i),o._notify(h,t)):o.value(i,t),o._lastActive=o._downTarget=i))},_start:function(n){var i,o=this,r=e(n.target),a=r.hasClass(c),s=n.event.ctrlKey||n.event.metaKey;if(this._allowSelection(n.event.target)){if(o._downTarget=r,!o._isElement(r.closest("."+u)))return o.userEvents.cancel(),t;o.options.useAllItems?o._items=o.element.find(o.options.filter):(i=r.closest(o.element),o._items=i.find(o.options.filter)),n.sender.capture(),o._marquee.appendTo(document.body).css({left:n.x.client+1,top:n.y.client+1,width:0,height:0}),s||o.clear(),r=r.add(o.relatedTarget(r)),a&&(o._selectElement(r,!0),s&&r.addClass(g))}},_move:function(e){var t=this,n={left:e.x.startLocation>e.x.location?e.x.location:e.x.startLocation,top:e.y.startLocation>e.y.location?e.y.location:e.y.startLocation,width:s(e.x.initialDelta),height:s(e.y.initialDelta)};t._marquee.css(n),t._invalidateSelectables(n,e.event.ctrlKey||e.event.metaKey),e.preventDefault()},_end:function(e){var t,n=this;n._marquee.remove(),n._unselect(n.element.find(n.options.filter+"."+g)).removeClass(g),t=n.element.find(n.options.filter+"."+d),t=t.add(n.relatedTarget(t)),n.value(t,e),n._lastActive=n._downTarget,n._items=null},_invalidateSelectables:function(e,t){var i,o,r,a,s=this._downTarget[0],l=this._items;for(i=0,o=l.length;i<o;i++)a=l.eq(i),r=a.add(this.relatedTarget(a)),n(a,e)?a.hasClass(c)?t&&s!==a[0]&&r.removeClass(c).addClass(g):a.hasClass(d)||a.hasClass(g)||r.addClass(d):a.hasClass(d)?r.removeClass(d):t&&a.hasClass(g)&&r.removeClass(g).addClass(c)},value:function(e,n){var i=this,o=a(i._selectElement,i);return e?(e.each(function(){o(this)}),i._notify(h,n),t):i.element.find(i.options.filter+"."+c)},_firstSelectee:function(){var e,t=this;return null!==t._lastActive?t._lastActive:(e=t.value(),e.length>0?e[0]:t.element.find(t.options.filter)[0])},_selectElement:function(t,n){var i=e(t),o=!n&&this._notify("select",{element:t});i.removeClass(d),o||(i.addClass(c),this.options.aria&&i.attr(l,!0))},_notify:function(e,t){return t=t||{},this.trigger(e,t)},_unselect:function(e){if(!this.trigger(f,{element:e}))return e.removeClass(c),this.options.aria&&e.attr(l,!1),e},_select:function(t){this._allowSelection(t.event.target)&&(!v||v&&!e(o._activeElement()).is(this.options.inputSelectors))&&t.preventDefault()},_allowSelection:function(t){return!e(t).is(this.options.inputSelectors)||(this.userEvents.cancel(),this._downTarget=null,!1)},resetTouchEvents:function(){this.userEvents.cancel()},clear:function(){var e=this.element.find(this.options.filter+"."+c);this._unselect(e)},selectRange:function(t,n,i){var o,r,a,s=this;for(s.clear(),s.element.length>1&&(a=s.options.continuousItems()),a&&a.length||(a=s.element.find(s.options.filter)),t=e.inArray(e(t)[0],a),n=e.inArray(e(n)[0],a),t>n&&(r=t,t=n,n=r),s.options.useAllItems||(n+=s.element.length-1),o=t;o<=n;o++)s._selectElement(a[o]);s._notify(h,i)},destroy:function(){var e=this;r.fn.destroy.call(e),e.element.off(p),e.userEvents.destroy(),e._marquee=e._lastActive=e.element=e.userEvents=null}}),i.parseOptions=function(e){var t="string"==typeof e&&e.toLowerCase();return{multiple:t&&t.indexOf("multiple")>-1,cell:t&&t.indexOf("cell")>-1}},o.ui.plugin(i)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("chat/messageBox.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui.Widget,o=e.extend,r=e.proxy,a=".",s=".kendoChat",l=n.keys,c='<svg version="1.1" ixmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 16 16" xml:space="preserve"><path d="M0,14.3c-0.1,0.6,0.3,0.8,0.8,0.6l14.8-6.5c0.5-0.2,0.5-0.6,0-0.8L0.8,1.1C0.3,0.9-0.1,1.1,0,1.7l0.7,4.2C0.8,6.5,1.4,7,1.9,7.1l8.8,0.8c0.6,0.1,0.6,0.1,0,0.2L1.9,8.9C1.4,9,0.8,9.5,0.7,10.1L0,14.3z"/></svg>',d='<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"><g> <path d="M128,240c0-26.4-21.6-48-48-48s-48,21.6-48,48s21.6,48,48,48S128,266.4,128,240z"/> <path d="M192,240c0,26.4,21.6,48,48,48c26.4,0,48-21.6,48-48s-21.6-48-48-48C213.6,192,192,213.6,192,240z"/> <path d="M352,240c0,26.4,21.6,48,48,48c26.4,0,48-21.6,48-48s-21.6-48-48-48C373.6,192,352,213.6,352,240z"/></g></svg>',u={input:"k-input",button:"k-button",buttonFlat:"k-flat",buttonIcon:"k-button-icon",buttonSend:"k-button-send",buttonToggle:"k-button-toggle",iconAdd:"k-icon k-i-add",hidden:"k-hidden"},h=i.extend({init:function(e,t){i.fn.init.call(this,e,t),this._wrapper(),this._attachEvents(),this._typing=!1},events:[],options:{messages:{placeholder:"Type a message..."}},destroy:function(){i.fn.destroy.call(this),this.input&&(this.input.off(s),this.input.remove(),this.input=null),this.element.off(s),this.element.empty()},_wrapper:function(){var t=h.styles,i=this.options,o=i.messages,r="inputId_"+n.guid();e("<label>").addClass(t.hidden).html(o.placeholder).attr("for",r).appendTo(this.element),this.input=e("<input type='text'>").addClass(t.input).attr("id",r).attr("placeholder",o.placeholder).appendTo(this.element),i.toolbar&&i.toolbar.toggleable&&i.toolbar.buttons&&e("<button>").addClass(t.button).addClass(t.buttonFlat).addClass(t.buttonIcon).addClass(t.buttonToggle).attr("type","button").append(e(d)).appendTo(this.element),e("<button>").addClass(t.button).addClass(t.buttonFlat).addClass(t.buttonIcon).addClass(t.buttonSend).append(e(c)).appendTo(this.element)},_attachEvents:function(){var e=h.styles;this.input.on("keydown"+s,r(this._keydown,this)).on("input"+s,r(this._input,this)).on("focusout"+s,r(this._inputFocusout,this)),this.element.on("click"+s,a+e.buttonSend,r(this._buttonClick,this)),this.element.on("click"+s,a+e.buttonToggle,r(this._toggleToolbar,this))},_input:function(){var e=this.input.val(),t=e.length>0;this._triggerTyping(t)},_keydown:function(e){var t=e.keyCode;switch(t){case l.ENTER:e.preventDefault(),this._sendMessage()}},_buttonClick:function(e){e.preventDefault(),this._sendMessage()},_sendMessage:function(){var e,t=this.input.val();t.length&&(this._triggerTyping(!1),e={text:t},this.trigger("sendMessage",e),this.input.val(""))},_inputFocusout:function(){this._triggerTyping(!1)},_triggerTyping:function(e){e?this._typing||(this.trigger("typingStart",{}),this._typing=!0):this._typing&&(this.trigger("typingEnd",{}),this._typing=!1)},_toggleToolbar:function(e){this.trigger("toggleToolbar",{originalEvent:e})}});o(!0,h,{styles:u}),o(n,{chat:{ChatMessageBox:h}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("chat/toolbar.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui.Widget,o=e.extend,r=e.proxy,a=".",s=".kendoChat",l="kButtonName",c="chatToolbarScrollLeft",d="chatToolbarScrollRight",u=":visible",h={effects:"expand:vertical",duration:200},p={expand:{show:!0},collapse:{hide:!0}},f={button:"k-button",buttonFlat:"k-flat",buttonList:"k-button-list",scrollButton:"k-scroll-button",scrollButtonLeft:"k-scroll-button-left",scrollButtonRight:"k-scroll-button-right",scrollButtonLeftIcon:"k-icon k-i-arrow-chevron-left",scrollButtonRightIcon:"k-icon k-i-arrow-chevron-right",buttonIcon:"k-button-icon"},g=i.extend({init:function(e,t){var n,a;t=o({},t,{name:"ChatToolbar"}),n=t.toolbar,a=n.buttons&&n.buttons.length,i.fn.init.call(this,e,t),a&&this._createButtonList(),a&&n.scrollable&&this.buttonsWidth()>this.element.width()&&this._initScrolling(),this._setupAnimation(),n.toggleable&&this.toggle(!0),this.element.on("click"+s,r(this._onClick,this))},events:["click"],destroy:function(){i.fn.destroy.call(this),this.element.off(s),this.element.empty()},_createButtonList:function(){var t,n,i=this,o=g.styles,r=i.options.toolbar.buttons,a=e("<div class='"+o.buttonList+"'></div>");for(t=0;t<r.length;t++)n=i._createButton(r[t]),a.append(n);a.appendTo(this.element),this.buttonList=a},_createButton:function(t){var n=g.styles,i=e("<button>");return"string"==typeof t&&(t={name:t}),i.attr(t.attr||{}).attr("title",t.text).attr("type","button").addClass(t.name).data(l,t.name).addClass(n.button),t.iconClass&&(i.addClass(n.buttonIcon),i.prepend("<span class='"+t.iconClass+"'></span>")),i},_onClick:function(t){var n=g.styles,i=e(t.target).closest(a+n.button);i.is(a+n.scrollButton)&&!this._scrolling&&this._scroll(i.data(l)),i.data(l)&&this.trigger("click",{button:i[0],name:i.data(l),originalEvent:t})},_initScrolling:function(){var e=g.styles;this.scrollButtonLeft=this._createButton({name:c,iconClass:e.scrollButtonLeftIcon,attr:{"class":e.scrollButton+" "+e.scrollButtonLeft}}),this.scrollButtonRight=this._createButton({name:d,iconClass:e.scrollButtonRightIcon,attr:{"class":e.scrollButton+" "+e.scrollButtonRight}}),this.element.prepend(this.scrollButtonLeft),this.element.append(this.scrollButtonRight),this._refreshScrollButtons(),this.element.on("keydown"+s,r(this._refreshScrollButtons,this))},_scroll:function(e){var t=this,n=t.buttonWidth(),i=this.maxScrollSize(),o=e===c?n*-1:n,r=this.currentScrollLeft(),a=r+o;a=Math.min(Math.max(a,0),i),e!==c&&e!==d||(t.buttonList.scrollLeft(a),t._refreshScrollButtons(a))},_refreshScrollButtons:function(e){var n=this.maxScrollSize(),i=e===t||isNaN(parseInt(e,10))?this.currentScrollLeft():e;(this.scrollButtonLeft||this.scrollButtonRight)&&(this.scrollButtonLeft.toggle(0!==i),this.scrollButtonRight.toggle(i!==n))},_setupAnimation:function(){var e=this.options.toolbar.animation,t=o({},h),n=o({reverse:!0,hide:!0},h);e=e===!1?o(!0,{},p):o(!0,{expand:t,collapse:n},e),this.options.toolbar.animation=e},_animationComplete:function(){this._refreshScrollButtons()},currentScrollLeft:function(){return Math.round(this.buttonList.scrollLeft())},maxScrollSize:function(){return Math.round(this.buttonList[0].scrollWidth-this.buttonList[0].clientWidth)},buttons:function(){var e=g.styles;return this.buttonList?this.buttonList.children(a+e.button):null},buttonWidth:function(){return Math.round(this.buttons().last().outerWidth(!0))},buttonsWidth:function(){var e=0;return this.buttons()&&(e=this.buttonWidth()*this.buttons().length),e},toggle:function(e){var t=this.options.toolbar.animation;e&&(t=o(!0,{},p)),t.expand.complete=r(this._animationComplete,this),t.collapse.complete=r(this._animationComplete,this),this.element.is(u)?this.element.kendoStop().kendoAnimate(t.collapse):this.element.kendoStop().kendoAnimate(t.expand)}});o(!0,g,{styles:f}),o(n.chat,{ChatToolBar:g})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("chat/view.min",["kendo.core.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){var n,i,o,r,a=window.kendo,s=a.ui.Widget,l=e.extend,c=e.proxy,d=".",u=" ",h=".kendoChat",p=a.template('<div #:text# class="#=styles.messageGroup# #= url ? "" : styles.noAvatar #"><p class="#=styles.author#">#:text#</p># if (url) { #<img src="#=url#" alt="#:text#" class="#=styles.avatar#"># } #</div>'),f=a.template('<div me class="#=styles.messageGroup# #=styles.self# #= url ? "" : styles.noAvatar #"># if (url) { #<img src="#=url#" alt="#:text#" class="#=styles.avatar#"># } #</div>'),g=a.template('<div class="#=styles.message#"><time class="#=styles.messageTime#">#= kendo.toString(kendo.parseDate(timestamp), "HH:mm:ss") #</time><div class="#=styles.bubble#">#:text#</div></div>'),m=a.template('<div class="#=styles.messageListContent# #=styles.typingIndicatorBubble#"><p class="#=styles.author#">#:text#</p><div class="#=styles.message#"><div class="#=styles.bubble#"><div class="#=styles.typingIndicator#"><span></span><span></span><span></span></div></div></div></div>'),v=a.template('<div class="#=styles.suggestedActions#"># for (var i = 0; i < suggestedActions.length; i++) { #<span class="#=styles.suggestedAction#" data-value="#:suggestedActions[i].value#">#:suggestedActions[i].title#</span># } #</div>'),_=a.template('<div class="#=styles.card# #=styles.cardRich#"># if (typeof images !== "undefined" && images.length > 0) { #<img src="#:images[0].url#" alt="#:images[0].alt#" class="#=styles.cardImage#" /># } #<div class="#=styles.cardBody#"># if (typeof title !== "undefined") { #<h5 class="#=styles.cardTitle#">#:title#</h5># } ## if (typeof subtitle !== "undefined") { #<h6 class="#=styles.cardSubtitle#">#:subtitle#</h6># } ## if (typeof text !== "undefined") { #<p>#:text#</p># } #</div># if (typeof buttons !== "undefined" && buttons.length > 0) { #<div class="#=styles.cardActions# #=styles.cardActionsVertical#"># for (var i = 0; i < buttons.length; i++) { #<span class="#=styles.cardAction#"><span class="#=styles.button# #=styles.buttonPrimary#" data-value="#:buttons[i].value#">#:buttons[i].title#</span></span># } #</div># } #</div>');l(a.chat,{Templates:{},Components:{}}),a.chat.registerTemplate=function(e,t){a.chat.Templates[e]=a.template(t)},a.chat.getTemplate=function(e){return a.chat.Templates[e]||g},a.chat.registerTemplate("text",g),a.chat.registerTemplate("message",g),a.chat.registerTemplate("typing",m),a.chat.registerTemplate("suggestedAction",v),a.chat.registerTemplate("heroCard",_),a.chat.registerTemplate("application/vnd.microsoft.card.hero",_),a.chat.registerComponent=function(e,t){a.chat.Components[e]=t},a.chat.getComponent=function(e){return a.chat.Components[e]||null},n=a.chat.Component=a.Class.extend({init:function(t,n){this.element=e("<div></div>"),this.options=t,this.view=n},destroy:function(){a.destroy(this.element)}}),i=n.extend({init:function(e,t){n.fn.init.call(this,e,t),this.element.kendoCalendar({change:function(){t.trigger("suggestedAction",{text:a.toString(this.value(),"d"),type:"message"})}})},destroy:function(){}}),a.chat.registerComponent("calendar",i),o={wrapper:"k-widget k-chat",messageList:"k-avatars",messageListContent:"k-message-list-content",messageTime:"k-message-time",messageGroup:"k-message-group",message:"k-message",only:"k-only",first:"k-first",middle:"k-middle",last:"k-last",author:"k-author",avatar:"k-avatar",noAvatar:"k-no-avatar",self:"k-alt",button:"k-button",iconButton:"k-button-icon",buttonPrimary:"k-flat k-primary",scrollButtonIcon:"k-icon",scrollButtonIconLeft:"k-i-arrow-chevron-left",scrollButtonIconRight:"k-i-arrow-chevron-right",typingIndicator:"k-typing-indicator",typingIndicatorBubble:"k-typing-indicator-bubble",bubble:"k-bubble",suggestedActions:"k-quick-replies",suggestedAction:"k-quick-reply",cardWrapper:"k-card-container",cardDeckScrollWrap:"k-card-deck-scrollwrap",cardDeck:"k-card-deck",cardList:"k-card-list",card:"k-card",cardRich:"k-card-type-rich",cardBody:"k-card-body",cardImage:"k-card-image",cardTitle:"k-card-title",cardSubtitle:"k-card-subtitle",cardActions:"k-card-actions",cardActionsVertical:"k-card-actions-vertical",cardAction:"k-card-action",selected:"k-state-selected"},r=a.chat.ChatView=s.extend({init:function(e,t){s.fn.init.call(this,e,t),this._list(),this._lastSender=null,this.typingParticipants=[],this._attachEvents(),this._scrollable()},events:[],options:{messages:{isTyping:" is typing.",areTyping:" are typing.",and:" and "}},destroy:function(){s.fn.destroy.call(this),this._scrollDraggable&&this._scrollDraggable.destroy(),this.element.empty(),this.element.off(h),this.list=null,this._lastSender=null},_list:function(){var t=r.styles;this.element.addClass(t.messageList).attr("aria-live","polite"),this.list=e("<div>").addClass(t.messageListContent).appendTo(this.element)},_attachEvents:function(){var e=r.styles;this.element.on("click"+h,c(this._listClick,this)).on("click"+h,d+e.message,c(this._messageClick,this)).on("click"+h,d+e.suggestedAction,c(this._suggestedActionClick,this)).on("click"+h,d+e.cardAction+u+d+e.button,c(this._cardActionClick,this)); +},_scrollable:function(){var e=r.styles;this.element.on("click"+h,d+e.cardDeckScrollWrap+u+d+e.button,c(this._scrollButtonClick,this))},_scrollButtonClick:function(t){var n=r.styles,i=e(t.currentTarget),o=0!==i.find(d+n.scrollButtonIconLeft).length,a=i.siblings(d+n.cardDeck),s=a.find(d+n.card).last(),l=s.outerWidth(!0);a.scrollLeft(o?a.scrollLeft()-l:a.scrollLeft()+l)},getTemplate:function(e){return a.chat.getTemplate(e)},getComponent:function(e){return a.chat.getComponent(e)},renderMessage:function(e,t){e.timestamp||(e.timestamp=new Date),e.text||(e.text="");var n=this._renderTemplate(e.type,e);this._renderBubble(e.type,n,t),"typing"==e.type?this.typingParticipants.length>0&&this._removeTypingParticipant(t):this._lastSender=t.id},renderSuggestedActions:function(e){this._removeSuggestedActions();var t=this._renderTemplate("suggestedAction",{suggestedActions:e});this.list.append(t),this._scrollToBottom()},renderAttachments:function(e){var t,n,i=this._renderAttachmentWrapper(e.attachmentLayout),o="carousel"===e.attachmentLayout?i.find(d+r.styles.cardDeck):i,a=e.attachments;if(a.length){for(t=0;t<a.length;t++)n=this._renderTemplate(a[t].contentType,a[t].content),o.append(n);this._removeSuggestedActions(),this._removeTypingIndicator(),this.list.append(i),this._lastSender=null}},renderComponent:function(e){var t=this.getComponent(e),n=new t({},this);this.list.append(n.element),this._scrollToBottom()},_renderAttachmentWrapper:function(t){var n,i,o=r.styles,a=e("<div>");return"carousel"===t?(a.addClass(o.cardDeckScrollWrap),n=this._renderScrollButton(o.scrollButtonIconLeft),a.append(n),a.append(e("<div>").addClass(o.cardDeck)),i=this._renderScrollButton(o.scrollButtonIconRight),a.append(i)):a.addClass(o.cardList),a},_renderScrollButton:function(t){var n=r.styles;return e("<button>").addClass(n.button).addClass(n.iconButton).append(e("<span>").addClass(n.scrollButtonIcon).addClass(t))},_removeSuggestedActions:function(){this.list.find(d+r.styles.suggestedActions).remove()},_listClick:function(t){var n=r.styles,i=e(t.target);i.hasClass(n.message)||i.parents(d+n.message).length||this._clearSelection()},_messageClick:function(t){this._clearSelection(),e(t.currentTarget).addClass(r.styles.selected)},_suggestedActionClick:function(t){var n=e(t.target).data("value")||"";this.trigger("actionClick",{text:n}),this._removeSuggestedActions()},_cardActionClick:function(t){var n=e(t.target).data("value")||"";this.trigger("actionClick",{text:n})},_renderBubble:function(e,t,n){this._removeSuggestedActions(),this._removeTypingIndicator();var i=this._getMessageGroup(n,e);this._appendToGroup(i,t,e),this._scrollToBottom()},_renderTemplate:function(t,n){var i,o,a,s,c=this.getComponent(t);return c?(o=new c(n,this),i=o.element):(a=this.getTemplate(t),s=l(!0,{},n,{styles:r.styles}),i=e(a(s))),i},_getMessageGroup:function(t,n){var i,o=r.styles,a=this._getMessageGroupTemplate(t,n),s="typing"==n?this.element:this.list;return t.id===this._lastSender&&null!==this._lastSender&&"typing"!==n&&(i=this.list.find(d+o.messageGroup).last(),i.length)?i:e(a({text:t.name,url:t.iconUrl,styles:o})).appendTo(s)},_getMessageGroupTemplate:function(e,t){var n=e.id===this.options.user.id,i=n?f:p;return"typing"==t&&(i=m),i},_appendToGroup:function(e,t,n){var i=r.styles,o=e.find(d+i.message),a=o.length,s=this.element.find(d+i.typingIndicator);s.length&&"typing"==n||(t.addClass(0===a?i.only:i.last),o.filter(d+i.only).removeClass(i.only).addClass(i.first),o.filter(d+i.last).removeClass(i.last).addClass(i.middle),e.append(t))},_renderTypingIndicator:function(t){var n,i,r=this.element.find(d+o.typingIndicatorBubble);this._addTypingParticipant(t),r.length?(i=this._composeTypingParticipantsText(this.typingParticipants),n=r.find(d+o.author).first(),n.text(i)):e(m({text:t.name+this.options.messages.isTyping,styles:o})).appendTo(this.element),this._scrollToBottom()},_addTypingParticipant:function(e){var t,n=!1;for(t=0;t<this.typingParticipants.length;t+=1)if(this.typingParticipants[t].id==e.id){n=!0;break}n||this.typingParticipants.push(e)},_removeTypingParticipant:function(e){var t,n,i,r=this.element.find(d+o.typingIndicatorBubble);if(r.length){for(i=0;i<this.typingParticipants.length;i+=1)this.typingParticipants[i].id==e.id&&this.typingParticipants.splice(i,1);n=this._composeTypingParticipantsText(this.typingParticipants),""===n?r.remove():(t=r.find(d+o.author).first(),t.text(n))}},_composeTypingParticipantsText:function(e){var t=this.options.messages,n=1==e.length?t.isTyping:t.areTyping,i="";return 0===e.length?i:i=this.typingParticipants.map(function(e){return e.name}).join(", ").replace(/,(?!.*,)/gim,t.and.trimRight())+n},_removeTypingIndicator:function(){var e=this.element.find(d+o.typingIndicatorBubble);e.length&&(this.typingParticipants=[],e.remove())},_clearSelection:function(){var e=r.styles.selected;this.element.find(d+e).removeClass(e)},_scrollToBottom:function(){this.element.scrollTop(this.element.prop("scrollHeight"))}}),l(!0,r,{styles:o})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.chat.min",["chat/messageBox.min","chat/toolbar.min","chat/view.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui.Widget,o=e.extend,r=".",a={wrapper:"k-widget k-chat",canvas:"k-chat-canvas",viewWrapper:"k-message-list",messageBoxWrapper:"k-message-box",toolbarBoxWrapper:"k-toolbar-box"},s=i.extend({init:function(e,t,o){i.fn.init.call(this,e,t),o&&(this._events=o),this._user(),this._wrapper(),this._view(),this._messageBox(),t&&t.toolbar&&t.toolbar.buttons&&this._toolbar(),n.notify(this)},events:["typingStart","typingEnd","post","sendMessage","actionClick","toolClick"],options:{user:{name:"User",iconUrl:""},name:"Chat",messages:{placeholder:"Type a message..."},toolbar:!1},setOptions:function(t){this._setEvents(t),e.extend(!0,this.options,t),this.toolbar&&"toolbar"in t&&(this.toolbar.destroy(),this.toolbar=null),this.messageBox&&(this.messageBox.unbind(),this.messageBox.destroy(),this.messageBox=null),this._messageBox(),"toolbar"in t&&(this._resetToolbarButtons(t),this._toolbar())},_resetToolbarButtons:function(e){var t=this.wrapper.find(r+a.toolbarBoxWrapper);t.is(":visible")||t.show(),"buttons"in e.toolbar&&(this.options.toolbar.buttons=e.toolbar.buttons)},destroy:function(){this.view&&(this.view.unbind(),this.view.destroy(),this.view=null),this.messageBox&&(this.messageBox.unbind(),this.messageBox.destroy(),this.messageBox=null),this.toolbar&&(this.toolbar.destroy(),this.toolbar=null),i.fn.destroy.call(this)},_user:function(){this.options.user.id=n.guid()},getUser:function(){return o(!0,{},this.options.user)},_wrapper:function(){var e=s.styles,t=this.options,n=t.height,i=t.width,o="<div class='"+e.viewWrapper+"'></div><div class='"+e.messageBoxWrapper+"'></div><div class='"+e.toolbarBoxWrapper+"' role='toolbar' style='display:none;'></div>";this.wrapper=this.element.addClass(e.wrapper).append(o),t.toolbar&&t.toolbar.buttons&&t.toolbar.buttons.length&&this.wrapper.find(r+e.toolbarBoxWrapper).show(),n&&this.wrapper.height(n),i&&this.wrapper.css("max-width",i)},_view:function(){var e=this,t=s.styles,i=o(!0,{},this.options),a=this.wrapper.find(r+t.viewWrapper+"");this.view=new n.chat.ChatView(a,i),this.view.bind("actionClick",function(t){e.trigger("actionClick",t),e.postMessage(t.text)})},_messageBox:function(){var e=this,t=s.styles,i=o(!0,{},this.options),a=this.wrapper.find(r+t.messageBoxWrapper+"");this.messageBox=new n.chat.ChatMessageBox(a,i),this.messageBox.bind("typingStart",function(t){e.trigger("typingStart",t)}).bind("typingEnd",function(t){e.trigger("typingEnd",t)}).bind("sendMessage",function(t){e.trigger("sendMessage",t),e.postMessage(t.text)}).bind("toggleToolbar",function(){e.toggleToolbar()})},_toolbar:function(){var e=this,i=s.styles,a=o(!0,{},e.options),l=e.wrapper.find(r+i.toolbarBoxWrapper+"");a.toolbar.scrollable===t&&(this.options.toolbar.scrollable=a.toolbar.scrollable=!0),a.toolbar.toggleable===t&&(this.options.toolbar.toggleable=a.toolbar.toggleable=!1),e.toolbar=new n.chat.ChatToolBar(l,a),e.toolbar.bind("click",function(t){e.trigger("toolClick",{sender:e,name:t.name,button:t.button,messageBox:e.messageBox.input[0],originalEvent:t.originalEvent})})},postMessage:function(e){var t=o(!0,{},{text:e,type:"message",timestamp:new Date,from:this.getUser()});this.trigger("post",t),this.renderMessage(t,t.from)},renderMessage:function(e,t){this.view.renderMessage(e,t)},renderSuggestedActions:function(e){this.view.renderSuggestedActions(e)},renderAttachments:function(e,t){this.view.renderAttachments(e,t)},toggleToolbar:function(e){this.toolbar.toggle(e)},renderUserTypingIndicator:function(e){this.view._renderTypingIndicator(e)},clearUserTypingIndicator:function(e){this.view._removeTypingParticipant(e)},removeTypingIndicator:function(){this.view._removeTypingIndicator()}});n.ui.plugin(s),o(!0,s,{styles:a})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.button.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui.Widget,o=e.proxy,r=n.keys,a="click",s=n.support.mousedown,l=n.support.mouseup,c="k-button",d="k-button-icon",u="k-button-icontext",h=".kendoButton",p="disabled",f="k-state-disabled",g="k-state-focused",m="k-state-active",v=i.extend({init:function(e,t){var r=this;i.fn.init.call(r,e,t),e=r.wrapper=r.element,t=r.options,e.addClass(c).attr("role","button"),t.enable=t.enable&&!e.attr(p),r.enable(t.enable),t.enable&&r._tabindex(),r.iconElement(),e.on(a+h,o(r._click,r)).on("focus"+h,o(r._focus,r)).on("blur"+h,o(r._blur,r)).on("keydown"+h,o(r._keydown,r)).on("keyup"+h,o(r._removeActive,r)).on(s+h,o(r._addActive,r)).on(l+h,o(r._removeActive,r)),n.notify(r)},destroy:function(){var e=this;e.wrapper.off(h),i.fn.destroy.call(e)},events:[a],options:{name:"Button",icon:"",iconClass:"",spriteCssClass:"",imageUrl:"",enable:!0},_isNativeButton:function(){return"button"==this.element.prop("tagName").toLowerCase()},_click:function(e){this.options.enable&&this.trigger(a,{event:e})&&e.preventDefault()},_focus:function(){this.options.enable&&this.element.addClass(g)},_blur:function(){var e=this;e.element.removeClass(g),setTimeout(function(){e.element.removeClass(m)})},_keydown:function(e){var t=this;e.keyCode!=r.ENTER&&e.keyCode!=r.SPACEBAR||(t._addActive(),t._isNativeButton()||(e.keyCode==r.SPACEBAR&&e.preventDefault(),t._click(e)))},_removeActive:function(){this.element.removeClass(m)},_addActive:function(){this.options.enable&&this.element.addClass(m)},iconElement:function(){var t,n,i,o=this,r=o.element,a=o.options,s=a.icon,l=a.iconClass,c=a.spriteCssClass,h=a.imageUrl;(c||h||s||l)&&(i=!0,r.contents().filter(function(){return!e(this).hasClass("k-sprite")&&!e(this).hasClass("k-icon")&&!e(this).hasClass("k-image")}).each(function(t,n){(1==n.nodeType||3==n.nodeType&&e.trim(n.nodeValue).length>0)&&(i=!1)}),r.addClass(i?d:u)),h?(n=r.children("img.k-image").first(),n[0]||(n=e('<img alt="icon" class="k-image" />').prependTo(r)),n.attr("src",h)):s||l?(t=r.children("span.k-icon").first(),t[0]||(t=e("<span></span>").prependTo(r)),t.attr("class",s?"k-icon k-i-"+s:l)):c&&(t=r.children("span.k-sprite").first(),t[0]||(t=e('<span class="k-sprite"></span>').prependTo(r)),t.addClass(c))},enable:function(e){var n=this,i=n.element;e===t&&(e=!0),e=!!e,n.options.enable=e,i.toggleClass(f,!e).attr("aria-disabled",!e).attr(p,!e),e&&n._tabindex();try{i.blur()}catch(o){}}});n.ui.plugin(v)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.buttongroup.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(n,o){n!==t&&e('<span class="k-badge">'+i.htmlEncode(n)+"</span>").appendTo(o)}var i=window.kendo,o=i.ui,r=o.Widget,a=i.keys,s=e.proxy,l=i.template,c=".kendoButtonGroup",d="k-widget",u="k-button-group",h="k-button",p="k-button-icontext",f="k-button-icon",g="k-state-active",m="k-state-focused",v="k-state-disabled",_="select",b="click",w="keydown",k="focus",y="blur",x="mousedown",C={item:l('<span #= item.enabled === false ? "disabled" : "" # # if (item.badge) { #'+i.attr("badge")+'="#=item.badge#"# } #>#= icon(iconClass) ##= image(item) ##= text #</span>'),image:l('<img alt="icon" src="#=data.imageUrl#" />'),icon:l('<span class="#=data#" />'),empty:l("")},S=r.extend({init:function(t,n){var i=this;r.fn.init.call(i,t,n),i.wrapper=i.element,i.options.items&&i._renderItems(i.options.items),i.selectedIndices=[],i.element.addClass(d+" "+u).attr("role","group").attr("tabindex",i.element.attr("tabindex")||"0").children().each(function(){var t=e(this);i._updateClasses.bind(i)(t)}),i._enable=!0,i.options.enable||(i._enable=!1,i.element.attr("aria-disabled",!0).addClass(v)),i.select(i.options.index),i.element.on(b+c,"."+h,s(i._click,i)).on(k+c,s(i._focus,i)).on(w+c,s(i._keyDown,i)).on(y+c,function(){i.preventFocus=!1,i.element.find("."+h).removeClass(m)}).on(x+c,function(){i.preventFocus=!0})},events:[_],options:{name:"ButtonGroup",selection:"single",index:-1,enable:!0},current:function(){return this.element.find("."+g)},_renderItems:function(t){var n=this;t.forEach(function(t){var o=e(C.item({image:t.imageUrl?C.image:C.empty,icon:t.imageUrl||!t.iconClass&&!t.icon?C.empty:C.icon,iconClass:t.iconClass||"k-icon k-i-"+t.icon,item:t,text:t.text?t.encoded===!1?t.text:i.htmlEncode(t.text):""}));t.attributes&&o.attr(t.attributes),t.selected&&o.addClass(g),(t.iconClass||t.icon||t.imageUrl)&&o.addClass(t.text?"k-button-icontext":"k-button-icon"),o.appendTo(n.element)})},_focus:function(){var t=e(this.element);this.preventFocus||(t.find("."+g).length?t.find("."+g).first().focus().addClass(m):t.children().first().focus().addClass(m))},_keyDown:function(t){var n,o=this,r=e(o.element),s=r.find("."+h),l=r.find("."+m),c=s.index(l),d=i.support.isRtl(o.element);t.keyCode===a.LEFT&&!d||t.keyCode===a.RIGHT&&d?(l.removeClass(m),n=0===c?s.eq(s.length-1):e(s[c-1]),n.focus().addClass(m),t.preventDefault()):t.keyCode===a.LEFT&&d||t.keyCode===a.RIGHT&&!d?(l.removeClass(m),n=c+1===s.length?s.eq(0):e(s[c+1]),n.focus().addClass(m),t.preventDefault()):t.keyCode!==a.ENTER&&t.keyCode!==a.SPACEBAR||(o._select(l),t.preventDefault())},select:function(n){var i,o=this,r=-1;n!==t&&n!==-1&&(o.element.find("."+h).removeClass(m),"number"==typeof n?(r=n,n=o.element.children().eq(n)):n.nodeType&&(n=e(n),r=n.index()),"multiple"===o.options.selection?(i="true"===n.attr("aria-pressed"),n.attr("aria-pressed",!i).toggleClass(g),o.selectedIndices.indexOf(r)===-1?o.selectedIndices.push(r):o.selectedIndices.splice(o.selectedIndices.indexOf(r),1)):(o.selectedIndices=[],o.current().attr("aria-pressed",!1).removeClass(g),n.attr("aria-pressed",!0).addClass(g),o.selectedIndices.push(r)),o.trigger(_,{indices:o.selectedIndices}))},badge:function(e,o){var r,a=this.element,s=isNaN(e)?a.find(e):a.children().eq(e),l=o||0===o;if(s.length){if(r=s.children(".k-badge").eq(0),!r.length&&l)return n(i.htmlEncode(o),s),i.htmlEncode(o);if(l)r.html(i.htmlEncode(o));else if(o===!1)return r.empty().remove(),t;return r.html()}},enable:function(e){t===e&&(e=!0),this.element.attr("aria-disabled",!e).toggleClass(v,!e),this._enable=this.options.enable=e},destroy:function(){var e=this;e.element.off(c),r.fn.destroy.call(e)},_updateClasses:function(t){var o=i.attrValue(t,"icon"),r=i.attrValue(t,"badge"),a=t.find("img").addClass("k-image"),s=!0;t.attr("aria-pressed",!1).attr("role","button").addClass(h),(t.is("[disabled]")||t.hasClass(v))&&t.addClass(v).attr("aria-disabled",!0).removeAttr("disabled"),t.is("."+g)&&(t.removeClass(g),(!t.hasClass(v)&&"single"===this.options.selection||"multiple"===this.options.selection)&&this.select(t[0])),!a[0]&&o&&t.prepend(e(C.icon("k-icon k-i-"+o))),t.contents().filter(function(){return!e(this).hasClass("k-icon")&&!e(this).hasClass("k-image")}).each(function(){(1==this.nodeType||3==this.nodeType&&e.trim(this.nodeValue).length>0)&&(s=!1)}),(a[0]||o)&&t.addClass(s?f:p),(r||0===r)&&n(r,t)},_click:function(t){var n=e(t.target).closest("."+h);t.isDefaultPrevented()||this._select(n)},_select:function(e){var n=e;return this.element.find("."+h).removeClass(m),!this._enable||n.is("."+v)?(n.addClass(m),t):(this.select(e[0]),n.addClass(m),t)}});o.plugin(S)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.switch.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,o=".kendoSwitch",r=i.Widget,a=n.support,s="change",l={widget:"k-switch k-widget",container:"k-switch-container",handle:"k-switch-handle",checked:"k-switch-on",checkedLabel:"k-switch-label-on",unchecked:"k-switch-off",uncheckedLabel:"k-switch-label-off",disabled:"k-state-disabled",readonly:"k-state-readonly",active:"k-state-active"},c="disabled",d="aria-disabled",u="readonly",h="aria-readonly",p="aria-checked",f="checked",g=a.click+o,m=a.pointers?"pointerup":"touchend",v="keydown"+o,_="_label",b=e.proxy,w=n.template('<span class="#=styles.widget#" role="switch"></span>'),k=n.template("<span class='#=styles.container#'><span class='#=styles.checkedLabel#'>#=checked#</span><span class='#=styles.uncheckedLabel#'>#=unchecked#</span><span class='#=styles.handle#'></span></span>"),y=r.extend({init:function(t,i){var o,a=this;r.fn.init.call(a,t,i),i=a.options,t=a.element[0],t.type="checkbox",o=e(w({styles:l})),a.wrapper=a.element.wrap(o).parent(),a.wrapper.append(e(k({styles:l,checked:i.messages.checked,unchecked:i.messages.unchecked}))).addClass(t.className),a.wrapper.on(g,b(a._click,a)).on(m,b(a._touchEnd,a)).on(v,b(a._keydown,a)),a.options.enabled&&a._tabindex(),a._initSettings(),a._aria(),n.notify(a,n.ui)},setOptions:function(n){var i,o,r=this,a=n.messages;r.options=e.extend(r.options,n),a&&a.checked!==t&&(i=r.wrapper.find("."+l.checkedLabel),i.text(a.checked)),a&&a.unchecked!==t&&(o=r.wrapper.find("."+l.uncheckedLabel),o.text(a.unchecked)),n.width&&r.wrapper.css({width:n.width}),n.enabled!==t&&r.enable(n.enabled),n.readonly!==t&&r.readonly(n.readonly),r.check(n.checked)},_initSettings:function(){var e=this,t=e.element[0],n=e.options;n.width&&e.wrapper.css({width:n.width}),null===n.checked&&(n.checked=t.checked),e.check(n.checked),n.enabled=n.enabled&&!e.element.attr(c),e.enable(n.enabled),n.readonly=n.readonly||!!e.element.attr(u),e.readonly(n.readonly)},_aria:function(){var t,i=this,o=i.element,r=i.wrapper,a=o.attr("id"),s=e('label[for="'+a+'"]'),l=o.attr("aria-label"),c=o.attr("aria-labelledby");l?r.attr("aria-label",l):c?r.attr("aria-labelledby",c):s.length&&(t=s.attr("id"),t||(t=(a||n.guid())+_,s.attr("id",t)),r.attr("aria-labelledby",t))},events:[s],options:{name:"Switch",messages:{checked:"On",unchecked:"Off"},width:null,checked:null,enabled:!0,readonly:!1},check:function(e){var n=this,i=n.element[0];return e===t?i.checked:(i.checked!==e&&(n.options.checked=i.checked=e),n.wrapper.attr(p,e).toggleClass(l.checked,e).toggleClass(l.unchecked,!e),e?n.element.attr(f,f):n.element.removeAttr(f),t)},value:function(e){return"string"==typeof e&&(e="true"===e),this.check.apply(this,[e])},destroy:function(){r.fn.destroy.call(this),this.wrapper.off(o)},toggle:function(){var e=this;e.check(!e.element[0].checked)},enable:function(e){var n=this.element,i=this.wrapper;t===e&&(e=!0),this.options.enabled=e,e?(n.removeAttr(c),i.removeAttr(d)):(n.attr(c,c),i.attr(d,!0)),i.toggleClass(l.disabled,!e)},readonly:function(e){var n=this,i=n.element,o=n.wrapper;t===e&&(e=!0),n.options.readonly=e,e?(i.attr(u,!0),o.attr(h,!0)):(i.removeAttr(u),o.removeAttr(h)),o.toggleClass(l.readonly,e)},_check:function(){var e=this,n=e.element[0].checked=!e.element[0].checked;return e.wrapper.focus(),!e.options.enabled||e.options.readonly||e.trigger(s,{checked:n})?(e.element[0].checked=!n,t):(e.check(n),t)},_keydown:function(e){e.keyCode===n.keys.SPACEBAR&&(this._check(),e.preventDefault())},_isTouch:function(e){return/touch/.test(e.type)||e.originalEvent&&/touch/.test(e.originalEvent.pointerType)},_click:function(e){this._isTouch(e)||1!==e.which||this._check()},_touchEnd:function(e){this._isTouch(e)&&(this._check(),e.preventDefault())}});i.plugin(y)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.pager.min",["kendo.data.min"],e)}(function(){return function(e,t){function n(e,t,n,i,o){return e({idx:t,text:n,ns:c.ns,numeric:i,title:o||""})}function i(e,t,n){return T({className:e.substring(1),text:t,wrapClassName:n||""})}function o(e,t,n,i){e.find(t).parent().attr(c.attr("page"),n).attr("tabindex",-1).toggleClass("k-state-disabled",i)}function r(e,t){o(e,p,1,t<=1)}function a(e,t){o(e,g,Math.max(1,t-1),t<=1)}function s(e,t,n){o(e,m,Math.min(n,t+1),t>=n)}function l(e,t,n){o(e,f,n,t>=n)}var c=window.kendo,d=c.ui,u=d.Widget,h=e.proxy,p=".k-i-arrow-end-left",f=".k-i-arrow-end-right",g=".k-i-arrow-60-left",m=".k-i-arrow-60-right",v="k-pager-lg k-pager-md k-pager-sm",_="change",b=".kendoPager",w="click",k="keydown",y="disabled",x="down",C=e(document.documentElement),S=Number.MAX_VALUE,T=c.template('<a href="\\#" aria-label="#=text#" title="#=text#" class="k-link k-pager-nav #= wrapClassName #"><span class="k-icon #= className #"></span></a>'),D=u.extend({init:function(t,n){var o,d,v,y,C=this,S=null;u.fn.init.call(C,t,n),n=C.options,C._createDataSource(n),C.linkTemplate=c.template(C.options.linkTemplate),C.selectTemplate=c.template(C.options.selectTemplate),C.currentPageTemplate=c.template(C.options.currentPageTemplate),o=C.page(),d=C.totalPages(),C._refreshHandler=h(C.refresh,C),C.dataSource.bind(_,C._refreshHandler),C.downEvent=c.applyEventMap(x,c.guid()),n.previousNext&&(C.element.find(p).length||(C.element.append(i(p,n.messages.first,"k-pager-first")),r(C.element,o,d)),C.element.find(g).length||(C.element.append(i(g,n.messages.previous)),a(C.element,o,d))),n.numeric&&(C.list=C.element.find(".k-pager-numbers"),C.list.length||(C.list=e('<ul class="k-pager-numbers k-reset" />').appendTo(C.element)),n.dataSource&&!n.dataSource.total()&&C.list.empty().append(C.currentPageTemplate({text:0})).append(C.selectTemplate({text:0})),C.list.wrap('<div class="k-pager-numbers-wrap"></div>')),n.input&&(C.element.find(".k-pager-input").length||C.element.append('<span class="k-pager-input k-label">'+n.messages.page+'<input class="k-textbox">'+c.format(n.messages.of,d)+"</span>"),C.element.on(k+b,".k-pager-input input",h(C._keydown,C))),n.previousNext&&(C.element.find(m).length||(C.element.append(i(m,n.messages.next)),s(C.element,o,d)),C.element.find(f).length||(C.element.append(i(f,n.messages.last,"k-pager-last")),l(C.element,o,d))),n.pageSizes&&(C.element.find(".k-pager-sizes").length||(v=n.pageSizes.length?n.pageSizes:["all",5,10,20],y=e.map(v,function(e){return e.toLowerCase&&"all"===e.toLowerCase()?"<option value='all'>"+n.messages.allPages+"</option>":"<option>"+e+"</option>"}),e('<span class="k-pager-sizes k-label"><select/>'+n.messages.itemsPerPage+"</span>").appendTo(C.element).find("select").html(y.join("")).end().appendTo(C.element)),C.element.find(".k-pager-sizes select").val(C.pageSize()),c.ui.DropDownList&&C.element.find(".k-pager-sizes select").show().kendoDropDownList(),C.element.on(_+b,".k-pager-sizes select",h(C._change,C))),n.refresh&&(C.element.find(".k-pager-refresh").length||C.element.append('<a href="#" class="k-pager-refresh k-link" title="'+n.messages.refresh+'" aria-label="'+n.messages.refresh+'"><span class="k-icon k-i-reload"></span></a>'),C.element.on(w+b,".k-pager-refresh",h(C._refreshClick,C))),n.info&&(C.element.find(".k-pager-info").length||C.element.append('<span class="k-pager-info k-label" />')),C.element.on(w+b,"a",h(C._click,C)).addClass("k-pager-wrap k-widget k-floatwrap"),C.element.on(w+b,".k-current-page",h(C._toggleActive,C)),n.autoBind&&C.refresh(),C._resizeHandler=h(C.resize,C,!0),e(window).on("resize"+b,C._resizeHandler),S=C._getWidthSizeClass(C.element.width()),S&&C.element.addClass(S),c.notify(C)},destroy:function(){var t=this;u.fn.destroy.call(t),t.element.off(b),t.dataSource.unbind(_,t._refreshHandler),t._refreshHandler=null,e(window).off("resize"+b,this._resizeHandler),c.destroy(t.element),t.element=t.list=null},events:[_],options:{name:"Pager",selectTemplate:'<li><span class="k-state-selected">#=text#</span></li>',currentPageTemplate:'<li class="k-current-page"><span class="k-link k-pager-nav">#=text#</span></li>',linkTemplate:'<li><a tabindex="-1" href="\\#" class="k-link" data-#=ns#page="#=idx#" #if (title !== "") {# title="#=title#" #}#>#=text#</a></li>',buttonCount:10,autoBind:!0,numeric:!0,info:!0,input:!1,previousNext:!0,pageSizes:!1,refresh:!1,responsive:!0,messages:{allPages:"All",display:"{0} - {1} of {2} items",empty:"No items to display",page:"Page",of:"of {0}",itemsPerPage:"items per page",first:"Go to the first page",previous:"Go to the previous page",next:"Go to the next page",last:"Go to the last page",refresh:"Refresh",morePages:"More pages"}},setDataSource:function(e){var t=this;t.dataSource.unbind(_,t._refreshHandler),t.dataSource=t.options.dataSource=e,e.bind(_,t._refreshHandler),t.options.autoBind&&e.fetch()},_resize:function(e){var t,n;e.width&&(t=this._getWidthSizeClass(e.width),n=this.element,t?n.hasClass(t)||(n.removeClass(v),n.addClass(t)):n.removeClass(v))},_createDataSource:function(e){this.dataSource=c.data.DataSource.create(e.dataSource)},refresh:function(t){var i,o,d,u,h,p,f=this,g=1,m=f.page(),v="",_=f.options,b=f.pageSize(),w=f._collapsedTotal(),k=f.dataSource.total(),x=f.totalPages(),T=f.linkTemplate,D=_.buttonCount;if(C.unbind(f.downEvent,e.proxy(f._hideList,f)),!t||"itemchange"!=t.action){if(_.numeric){for(m>D&&(d=m%D,g=0===d?m-D+1:m-d+1),o=Math.min(g+D-1,x),g>1&&(v+=n(T,g-1,"...",!1,_.messages.morePages)),i=g;i<=o;i++)v+=n(i==m?f.selectTemplate:T,i,i,!0);o<x&&(v+=n(T,i,"...",!1,_.messages.morePages)),""===v&&(v=f.selectTemplate({text:0})),v=this.currentPageTemplate({text:m})+v,f.list.removeClass("k-state-expanded").html(v)}_.info&&(v=k>0?c.format(_.messages.display,f.dataSource.options.endless?1:Math.min((m-1)*(f.dataSource.pageSize()||0)+1,w),Math.min(m*b,w),k):_.messages.empty,f.element.find(".k-pager-info").html(v)),_.input&&f.element.find(".k-pager-input").html(f.options.messages.page+'<input class="k-textbox" aria-label="'+m+'">'+c.format(_.messages.of,x)).find("input").val(m).attr(y,k<1).toggleClass("k-state-disabled",k<1),_.previousNext&&(r(f.element,m,x),a(f.element,m,x),s(f.element,m,x),l(f.element,m,x)),_.pageSizes&&(u=f.element.find(".k-pager-sizes option[value='all']").length>0,h=u&&(b===this.dataSource.total()||b==S),p=b,h&&(b="all",p=_.messages.allPages),f.element.find(".k-pager-sizes select").val(b).attr("aria-label",b).filter("["+c.attr("role")+"=dropdownlist]").kendoDropDownList("value",b).kendoDropDownList("text",p))}},_collapsedTotal:function(){return this.dataSource.total()},_keydown:function(e){if(e.keyCode===c.keys.ENTER){var t=this.element.find(".k-pager-input").find("input"),n=parseInt(t.val(),10);(isNaN(n)||n<1||n>this.totalPages())&&(n=this.page()),t.val(n),this.page(n)}},_refreshClick:function(e){e.preventDefault(),this.dataSource.read()},_change:function(e){var n=e.currentTarget.value,i=parseInt(n,10),o=this.dataSource;isNaN(i)?"all"==(n+"").toLowerCase()&&(o._pageSize=t,o._take=t,o._skip=0,o.fetch()):o.pageSize(i)},_toggleActive:function(){var t=this;t.list.hasClass("k-state-expanded")?C.unbind(t.downEvent,e.proxy(t._hideList,t)):C.bind(t.downEvent,e.proxy(t._hideList,t)),t.list.toggleClass("k-state-expanded")},_hideList:function(t){var n=this,i=c.eventTarget(t);e.contains(n.list[0],i)||(C.unbind(n.downEvent,e.proxy(n._hideList,n)),n.list.removeClass("k-state-expanded"))},_click:function(t){var n=e(t.currentTarget);t.preventDefault(),n.is(".k-state-disabled")||this.page(parseInt(n.attr(c.attr("page")),10))},totalPages:function(){return Math.ceil((this.dataSource.total()||0)/(this.pageSize()||1))},pageSize:function(){return this.dataSource.pageSize()||this.dataSource.total()},page:function(e){return e?(this.trigger("pageChange",{index:e})||(this.dataSource.page(e),this.trigger(_,{index:e})),t):this.dataSource.total()>0?this.dataSource.page():0},_getWidthSizeClass:function(e){var t=this,n=v.split(" ");return t.options.responsive?e<=480?n[2]:e<=640?n[1]:e<=1024?n[0]:null:null}});d.plugin(D)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.notification.min",["kendo.core.min","kendo.popup.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui.Widget,o=e.proxy,r=e.extend,a=window.setTimeout,s="click",l="show",c="hide",d="k-notification",u=".k-notification-wrap .k-i-close",h="k-hiding",p="info",f="success",g="warning",m="error",v="top",_="left",b="bottom",w="right",k="up",y=".kendoNotification",x='<div class="k-widget k-popup k-notification"></div>',C='<div class="k-notification-wrap"><span class="k-icon k-i-#=typeIcon#" title="#=typeIcon#"></span><div class="k-notification-content">#=content#</div><span class="k-icon k-i-close" title="Hide"></span></div>',S=C.replace("#=content#","#:content#"),T=i.extend({init:function(t,o){var r=this;i.fn.init.call(r,t,o),o=r.options,o.appendTo&&e(o.appendTo).is(t)||r.element.hide(),r._compileTemplates(o.templates),r._guid="_"+n.guid(),r._isRtl=n.support.isRtl(t),r._compileStacking(o.stacking,o.position.top,o.position.left),n.notify(r)},events:[l,c],options:{name:"Notification",position:{pinned:!0,top:null,left:null,bottom:20,right:20},stacking:"default",hideOnClick:!0,button:!1,allowHideAfter:0,autoHideAfter:5e3,appendTo:null,width:null,height:null,templates:[],animation:{open:{effects:"fade:in",duration:300},close:{effects:"fade:out",duration:600,hide:!0}}},_compileTemplates:function(t){var i=this,o=n.template;i._compiled={},e.each(t,function(t,n){i._compiled[n.type]=o(n.template||e("#"+n.templateId).html())}),i._defaultCompiled=o(C),i._safeCompiled=o(S)},_getCompiled:function(e,t){var n=t?this._safeCompiled:this._defaultCompiled;return e?this._compiled[e]||n:n},_compileStacking:function(e,t,n){var i,o,r=this,a={paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},s=null!==n?_:w;switch(e){case"down":i=b+" "+s,o=v+" "+s,delete a.paddingBottom;break;case w:i=v+" "+w,o=v+" "+_,delete a.paddingRight;break;case _:i=v+" "+_,o=v+" "+w,delete a.paddingLeft;break;case k:i=v+" "+s,o=b+" "+s,delete a.paddingTop;break;default:null!==t?(i=b+" "+s,o=v+" "+s,delete a.paddingBottom):(i=v+" "+s,o=b+" "+s,delete a.paddingTop)}r._popupOrigin=i,r._popupPosition=o,r._popupPaddings=a},_attachPopupEvents:function(e,t){function n(e){e.on(s+y,function(){o._hidePopup(t)})}var i,o=this,r=e.allowHideAfter,l=!isNaN(r)&&r>0;e.hideOnClick?t.bind("activate",function(){l?a(function(){n(t.element)},r):n(t.element)}):e.button&&(i=t.element.find(u),l?a(function(){n(i)},r):n(i))},_showPopup:function(t,i){var o,s,l=this,c=i.autoHideAfter,d=i.position.left,p=i.position.top;s=e("."+l._guid+":not(."+h+")").last(),o=new n.ui.Popup(t,{anchor:s[0]?s:document.body,origin:l._popupOrigin,position:l._popupPosition,animation:i.animation,copyAnchorStyles:!1,modal:!0,collision:"",isRtl:l._isRtl,close:function(){l._triggerHide(this.element)},deactivate:function(e){e.sender.element.off(y),e.sender.element.find(u).off(y),e.sender.destroy()}}),l._attachPopupEvents(i,o),t.removeClass("k-group k-reset"),s[0]?o.open():(null===d&&(d=e(window).width()-t.outerWidth()-i.position.right),null===p&&(p=e(window).height()-t.outerHeight()-i.position.bottom),o.open(d,p)),o.wrapper.addClass(l._guid).css(r({margin:0,zIndex:10050},l._popupPaddings)),i.position.pinned?(o.wrapper.css("position","fixed"),s[0]&&l._togglePin(o.wrapper,!0)):s[0]||l._togglePin(o.wrapper,!1),c>0&&a(function(){l._hidePopup(o)},c)},_hidePopup:function(e){e.wrapper.addClass(h),e.close()},_togglePin:function(t,n){var i=e(window),o=n?-1:1;t.css({top:parseInt(t.css(v),10)+o*i.scrollTop(),left:parseInt(t.css(_),10)+o*i.scrollLeft() +})},_attachStaticEvents:function(e,t){function n(e){e.on(s+y,o(i._hideStatic,i,t))}var i=this,r=e.allowHideAfter,l=!isNaN(r)&&r>0;e.hideOnClick?l?a(function(){n(t)},r):n(t):e.button&&(l?a(function(){n(t.find(u))},r):n(t.find(u)))},_showStatic:function(t,n){var i,o=this,r=n.autoHideAfter,s=n.animation,l=n.stacking==k||n.stacking==_?"prependTo":"appendTo";t.removeClass("k-popup").addClass(o._guid)[l](n.appendTo).hide().kendoAnimate(s.open||!1),i=o.getNotifications(),i.each(function(t,i){o._attachStaticEvents(n,e(i)),r>0&&a(function(){o._hideStatic(e(i))},r)})},_hideStatic:function(e){e.kendoAnimate(r(this.options.animation.close||!1,{complete:function(){e.off(y).find(u).off(y),e.remove()}})),this._triggerHide(e)},_triggerHide:function(e){this.trigger(c,{element:e}),this.angular("cleanup",function(){return{elements:e}})},show:function(i,o,a){var s,c,u=this,h=u.options,f=e(x);return o||(o=p),null!==i&&i!==t&&""!==i&&(n.isFunction(i)&&(i=i()),c={typeIcon:o,content:""},s=e.isPlainObject(i)?r(c,i):r(c,{content:i}),f.addClass(d+"-"+o).toggleClass(d+"-button",h.button).toggleClass(d+"-closable",h.button).attr("data-role","alert").css({width:h.width,height:h.height}).append(u._getCompiled(o,a)(s)),u.angular("compile",function(){return{elements:f,data:[{dataItem:s}]}}),e(h.appendTo)[0]?u._showStatic(f,h):u._showPopup(f,h),u.trigger(l,{element:f})),u},showText:function(e,t){this.show(e,t,!0)},info:function(e){return this.show(e,p)},success:function(e){return this.show(e,f)},warning:function(e){return this.show(e,g)},error:function(e){return this.show(e,m)},hide:function(){var t=this,n=t.getNotifications();return n.each(t.options.appendTo?function(n,i){t._hideStatic(e(i))}:function(n,i){var o=e(i).data("kendoPopup");o&&t._hidePopup(o)}),t},getNotifications:function(){var t=this,n=e("."+t._guid+":not(."+h+")");return t.options.appendTo?n:n.children("."+d)},setOptions:function(e){var n,o=this;i.fn.setOptions.call(o,e),n=o.options,e.templates!==t&&o._compileTemplates(n.templates),e.stacking===t&&e.position===t||o._compileStacking(n.stacking,n.position.top,n.position.left)},destroy:function(){i.fn.destroy.call(this),this.getNotifications().off(y).find(u).off(y)}});n.ui.plugin(T)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.tooltip.min",["kendo.core.min","kendo.popup.min","kendo.fx.min"],e)}(function(){return function(e,t){function n(e){for(;e.length&&!i(e);)e=e.parent()}function i(e){var t=e.data(a.ns+"title");if(t)return e.attr("title",t),e.removeData(a.ns+"title"),!0}function o(e){var t=e.attr("title");if(t)return e.data(a.ns+"title",t),e.attr("title",""),!0}function r(e){for(;e.length&&!e.is("body")&&!o(e);)e=e.parent()}var a=window.kendo,s=a.ui.Widget,l=a.ui.Popup,c=a.isFunction,d=e.isPlainObject,u=e.extend,h=e.proxy,p=e(document),f=a.isLocalUrl,g="_tt_active",m="aria-describedby",v="show",_="hide",b="error",w="contentLoad",k="requestStart",y="k-content-frame",x='<div role="tooltip" class="k-widget k-tooltip#if (!autoHide) {# k-tooltip-closable#}#">#if (!autoHide) {# <div class="k-tooltip-button"><a href="\\#" class="k-icon k-i-close" title="Close"></a></div> #}#<div class="k-tooltip-content"></div>#if (callout){ #<div class="k-callout k-callout-#=dir#"></div>#}#</div>',C=a.template("<iframe frameborder='0' class='"+y+"' src='#= content.url #'>This page requires frames in order to show content</iframe>"),S=".kendoTooltip",T={bottom:{origin:"bottom center",position:"top center"},top:{origin:"top center",position:"bottom center"},left:{origin:"center left",position:"center right",collision:"fit flip"},right:{origin:"center right",position:"center left",collision:"fit flip"},center:{position:"center center",origin:"center center"}},D={top:"bottom",bottom:"top",left:"right",right:"left",center:"center"},A={bottom:"n",top:"s",left:"e",right:"w",center:"n"},E={horizontal:{offset:"top",size:"outerHeight"},vertical:{offset:"left",size:"outerWidth"}},I=function(e){return e.target.data(a.ns+"title")},M=s.extend({init:function(e,t){var n,i=this;s.fn.init.call(i,e,t),n=i.options.position.match(/left|right/)?"horizontal":"vertical",i.dimensions=E[n],i._documentKeyDownHandler=h(i._documentKeyDown,i),i.element.on(i.options.showOn+S,i.options.filter,h(i._showOn,i)),(this._isShownOnMouseEnter()||this._isShownOnClick())&&i.element.on("mouseenter"+S,i.options.filter,h(i._mouseenter,i)),this.options.autoHide&&this._isShownOnMouseEnter()&&i.element.on("mouseleave"+S,i.options.filter,h(i._mouseleave,i)),this.options.autoHide&&this._isShownOnFocus()&&i.element.on("blur"+S,i.options.filter,h(i._blur,i))},options:{name:"Tooltip",filter:"",content:I,showAfter:100,hideAfter:100,callout:!0,offset:0,position:"bottom",showOn:"mouseenter",autoHide:!0,width:null,height:null,animation:{open:{effects:"fade:in",duration:0},close:{duration:40,hide:!0}}},events:[v,_,w,b,k],_isShownOnFocus:function(){return this.options.showOn&&this.options.showOn.match(/focus/)},_isShownOnMouseEnter:function(){return this.options.showOn&&this.options.showOn.match(/mouseenter/)},_isShownOnClick:function(){return this.options.showOn&&this.options.showOn.match(/click/)},_mouseenter:function(t){r(e(t.currentTarget))},_showOn:function(t){var n=this,i=e(t.currentTarget);n._isShownOnClick()&&!n._isShownOnMouseEnter()?n._show(i):n._isShownOnFocus()?(r(i),n._show(i)):(clearTimeout(n.timeout),n.timeout=setTimeout(function(){n._show(i)},n.options.showAfter))},_appendContent:function(e){var t,n=this,i=n.options.content,o=n.content,r=n.options.iframe;d(i)&&i.url?("iframe"in n.options||(r=!f(i.url)),n.trigger(k,{options:i,target:e}),r?(o.hide(),t=o.find("."+y)[0],t?t.src=i.url||t.src:o.html(C({content:i})),o.find("."+y).off("load"+S).on("load"+S,function(){n.trigger(w),o.show()})):(o.empty(),a.ui.progress(o,!0),n._ajaxRequest(i))):i&&c(i)?(i=i({sender:this,target:e}),o.html(i||"")):o.html(i),n.angular("compile",function(){return{elements:o}})},_ajaxRequest:function(e){var t=this;jQuery.ajax(u({type:"GET",dataType:"html",cache:!1,error:function(e,n){a.ui.progress(t.content,!1),t.trigger(b,{status:n,xhr:e})},success:h(function(e){a.ui.progress(t.content,!1),t.content.html(e),t.trigger(w)},t)},e))},_documentKeyDown:function(e){e.keyCode===a.keys.ESC&&this.hide()},refresh:function(){var e=this,t=e.popup;t&&t.options.anchor&&e._appendContent(t.options.anchor)},hide:function(){this.popup&&this.popup.close()},show:function(e){e=e||this.element,r(e),this._show(e)},_show:function(e){var t=this,i=t.target();t.popup||t._initPopup(),i&&i[0]!=e[0]&&(t.popup.close(),t.popup.element.kendoStop(!0,!0)),i&&i[0]==e[0]||(t._appendContent(e),t.popup.options.anchor=e),t.popup.one("deactivate",function(){n(e),e.removeAttr(m),this.element.removeAttr("id").attr("aria-hidden",!0),p.off("keydown"+S,t._documentKeyDownHandler)}),t.popup._hovered=!0,t.popup.open()},_initPopup:function(){var n=this,i=n.options,o=e(a.template(x)({callout:i.callout&&"center"!==i.position,dir:A[i.position],autoHide:i.autoHide}));n.popup=new l(o,u({autosize:!0,activate:function(){var e=this.options.anchor,o=e[0].id||n.element[0].id;o&&(e.attr(m,o+g),this.element.attr("id",o+g)),i.callout?n._positionCallout():n._offset(n.options.position,n.options.offset),this.element.removeAttr("aria-hidden"),p.on("keydown"+S,n._documentKeyDownHandler),n.trigger(v),n.popup._hovered=t},close:function(){n.trigger(_)},copyAnchorStyles:!1,animation:i.animation},T[i.position])),o.css({width:i.width,height:i.height}),n.content=o.find(".k-tooltip-content"),n.arrow=o.find(".k-callout"),i.autoHide&&this._isShownOnMouseEnter()?o.on("mouseleave"+S,h(n._mouseleave,n)):o.on("click"+S,".k-tooltip-button",h(n._closeButtonClick,n))},_closeButtonClick:function(e){e.preventDefault(),this.hide()},_mouseleave:function(e){var t=this;clearTimeout(t.timeout),t.timeout=setTimeout(function(){t._closePopup(e.currentTarget)},t.options.hideAfter)},_blur:function(e){this._closePopup(e.currentTarget)},_closePopup:function(t){this.popup&&!this.popup._hovered?this.popup.close():n(e(t))},target:function(){return this.popup?this.popup.options.anchor:null},_positionCallout:function(){var t=this,n=t.options.position,i=t.dimensions,o=i.offset,r=t.popup,a=r.options.anchor,s=e(a).offset(),l=e(r.element).offset(),c=A[r.flipped?D[n]:n],d=s[o]-l[o]+e(a)[i.size]()/2;t._offset(n,t.options.offset),t.arrow.removeClass("k-callout-n k-callout-s k-callout-w k-callout-e").addClass("k-callout-"+c).css(o,d)},destroy:function(){var e=this.popup;e&&(e.element.off(S),e.destroy()),clearTimeout(this.timeout),this.element.off(S),p.off("keydown"+S,this._documentKeyDownHandler),s.fn.destroy.call(this)},_offset:function(e,t){var n=this,i="top"==e||"left"==e,o=n.popup.flipped,r=i&&o||!i&&!o?1:-1,s=i?"margin-"+e:"margin-"+D[e],l=a._outerWidth(n.arrow)/2+t;n.popup.wrapper.css(s,l*r+"px")}});a.ui.plugin(M)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.list.min",["kendo.data.min","kendo.popup.min"],e)}(function(){return function(e,t){function n(e,n){return e!==t&&""!==e&&null!==e&&("boolean"===n?("boolean"!=typeof e&&(e="true"===e.toLowerCase()),e=!!e):"number"===n?e=+e:"string"===n&&(e=""+e)),e}function i(e){return e[e.length-1]}function o(e){var t=e.selectedIndex;return t>-1?e.options[t]:{}}function r(e,t){var n,i,o,r,a=t.length,s=e.length,l=[],c=[];if(s)for(o=0;o<s;o++){for(n=e[o],i=!1,r=0;r<a;r++)if(n===t[r]){i=!0,l.push({index:o,item:n});break}i||c.push(n)}return{changed:l,unchanged:c}}function a(t){return!(!t||e.isEmptyObject(t))&&!(t.filters&&!t.filters.length)}function s(t,n){var i,o=!1;return t.filters&&(i=e.grep(t.filters,function(e){return o=s(e,n),e.filters?e.filters.length:e.field!=n}),o||t.filters.length===i.length||(o=!0),t.filters=i),o}var l,c,d=window.kendo,u=d.ui,h=d._outerHeight,p=/^\d+(\.\d+)?%$/i,f=u.Widget,g=d.keys,m=d.support,v=d.htmlEncode,_=d._activeElement,b=d._outerWidth,w=d.data.ObservableArray,k="id",y="change",x="k-state-focused",C="k-state-hover",S="k-i-loading",T=".k-group-header",D=".k-item",A="_label",E="open",I="close",M="cascade",F="select",R="selected",P="requestStart",z="requestEnd",B=e.extend,L=e.proxy,H=e.isArray,N=m.browser,O="k-hidden",V="width",W=N.msie,U=W&&N.version<9,q=/"/g,j={ComboBox:["DropDownList","MultiColumnComboBox"],DropDownList:["ComboBox","MultiColumnComboBox"],MultiColumnComboBox:["ComboBox","DropDownList"]},G=d.ui.DataBoundWidget.extend({init:function(t,n){var i,o=this,r=o.ns;f.fn.init.call(o,t,n),t=o.element,n=o.options,o._isSelect=t.is(F),o._isSelect&&o.element[0].length&&(n.dataSource||(n.dataTextField=n.dataTextField||"text",n.dataValueField=n.dataValueField||"value")),o.ul=e('<ul unselectable="on" class="k-list k-reset"/>').attr({tabIndex:-1,"aria-hidden":!0}),o.list=e("<div class='k-list-container'/>").append(o.ul).on("mousedown"+r,L(o._listMousedown,o)),i=t.attr(k),i||(i=d.guid()),o.list.attr(k,i+"-list"),o.ul.attr(k,i+"_listbox"),n.columns&&n.columns.length&&(o.ul.removeClass("k-list").addClass("k-grid-list"),o._columnsHeader()),o._header(),o._noData(),o._footer(),o._accessors(),o._initValue()},options:{valuePrimitive:!1,footerTemplate:"",headerTemplate:"",noDataTemplate:!0,messages:{noData:"No data found.",clear:"clear"}},setOptions:function(e){f.fn.setOptions.call(this,e),e&&e.enable!==t&&(e.enabled=e.enable),e.columns&&e.columns.length&&this._columnsHeader(),this._header(),this._noData(),this._footer(),this._renderFooter(),this._renderNoData()},focus:function(){this._focused.focus()},readonly:function(e){this._editable({readonly:e===t||e,disable:!1})},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t||e)})},_header:function(){var n,i=this,o=e(i.header),r=i.options.headerTemplate;return this._angularElement(o,"cleanup"),d.destroy(o),o.remove(),r?(n="function"!=typeof r?d.template(r):r,o=e(n({})),i.header=o[0]?o:null,i.list.prepend(o),this._angularElement(i.header,"compile"),t):(i.header=null,t)},_columnsHeader:function(){var t,n,i,o,r,a,s,l,c,u,h,f=this,g=e(f.columnsHeader);for(this._angularElement(g,"cleanup"),d.destroy(g),g.remove(),t="<div class='k-grid-header'><div class='k-grid-header-wrap'><table role='presentation'>",n="<colgroup>",i="<tr>",o=0;o<this.options.columns.length;o++)r=this.options.columns[o],a=r.title||r.field||"",s=r.headerTemplate||a,l="function"!=typeof s?d.template(s):s,c=r.width,u=parseInt(c,10),h="",c&&!isNaN(u)&&(h+="style='width:",h+=u,h+=p.test(c)?"%":"px",h+=";'"),n+="<col "+h+"/>",i+="<th class='k-header'>",i+=l(r),i+="</th>";n+="</colgroup>",i+="</tr>",t+=n,t+=i,t+="</table></div></div>",f.columnsHeader=g=e(t),f.list.prepend(g),this._angularElement(f.columnsHeader,"compile")},_noData:function(){var n=this,i=e(n.noData),o=n.options.noDataTemplate===!0?n.options.messages.noData:n.options.noDataTemplate;return n.angular("cleanup",function(){return{elements:i}}),d.destroy(i),i.remove(),o?(n.noData=e('<div class="k-nodata" style="display:none"><div></div></div>').appendTo(n.list),n.noDataTemplate="function"!=typeof o?d.template(o):o,t):(n.noData=null,t)},_footer:function(){var n=this,i=e(n.footer),o=n.options.footerTemplate;return this._angularElement(i,"cleanup"),d.destroy(i),i.remove(),o?(n.footer=e('<div class="k-footer"></div>').appendTo(n.list),n.footerTemplate="function"!=typeof o?d.template(o):o,t):(n.footer=null,t)},_listOptions:function(t){var n=this,i=n.options,o=i.virtual,r={change:L(n._listChange,n)},a=L(n._listBound,n);return o="object"==typeof o?o:{},t=e.extend({autoBind:!1,selectable:!0,dataSource:n.dataSource,click:L(n._click,n),activate:L(n._activateItem,n),columns:i.columns,deactivate:L(n._deactivateItem,n),dataBinding:function(){n.trigger("dataBinding")},dataBound:a,height:i.height,dataValueField:i.dataValueField,dataTextField:i.dataTextField,groupTemplate:i.groupTemplate,fixedGroupTemplate:i.fixedGroupTemplate,template:i.template},t,o,r),t.template||(t.template="#:"+d.expr(t.dataTextField,"data")+"#"),i.$angular&&(t.$angular=i.$angular),t},_initList:function(){var e=this,t=e._listOptions({selectedItemChange:L(e._listChange,e)});e.listView=e.options.virtual?new d.ui.VirtualList(e.ul,t):new d.ui.StaticList(e.ul,t),e.listView.bind("listBound",L(e._listBound,e)),e._setListValue()},_setListValue:function(e){e=e||this.options.value,e!==t&&this.listView.value(e).done(L(this._updateSelectionState,this))},_updateSelectionState:e.noop,_listMousedown:function(e){this.filterInput&&this.filterInput[0]===e.target||e.preventDefault()},_isFilterEnabled:function(){var e=this.options.filter;return e&&"none"!==e},_hideClear:function(){var e=this;e._clear&&e._clear.addClass(O)},_showClear:function(){this._clear&&this._clear.removeClass(O)},_clearValue:function(){this._clearText(),this._accessor(""),this.listView.value([]),this._isSelect&&(this._customOption=t),this._isFilterEnabled()&&!this.options.enforceMinLength&&(this._filter({word:"",open:!1}),this.options.highlightFirst&&this.listView.focus(0)),this._change()},_clearText:function(){this.text("")},_clearFilter:function(){this.options.virtual||this.listView.bound(!1),this._filterSource()},_filterSource:function(e,t){var n,i,o=this,r=o.options,l=r.filterFields&&e&&e.logic&&e.filters&&e.filters.length,c=o.dataSource,d=B({},c.filter()||{}),u=e||d.filters&&d.filters.length&&!e,h=s(d,r.dataTextField);if(this._clearFilterExpressions(d),!e&&!h||!o.trigger("filtering",{filter:e}))return n={filters:[],logic:"and"},l?n.filters.push(e):this._pushFilterExpression(n,e),a(d)&&(n.logic===d.logic?n.filters=n.filters.concat(d.filters):n.filters.push(d)),o._cascading&&this.listView.setDSFilter(n),i=B({},{page:u?1:c.page(),pageSize:u?c.options.pageSize:c.pageSize(),sort:c.sort(),filter:c.filter(),group:c.group(),aggregate:c.aggregate()},{filter:n}),c[t?"read":"query"](c._mergeState(i))},_pushFilterExpression:function(e,t){a(t)&&""!==t.value&&e.filters.push(t)},_clearFilterExpressions:function(e){var t,n;if(e.filters){for(n=0;n<e.filters.length;n++)"fromFilter"in e.filters[n]&&(t=n);isNaN(t)||e.filters.splice(t,1)}},_angularElement:function(e,t){e&&this.angular(t,function(){return{elements:e}})},_renderNoData:function(){var e=this,t=e.noData;t&&(this._angularElement(t,"cleanup"),t.children(":first").html(e.noDataTemplate({instance:e})),this._angularElement(t,"compile"))},_toggleNoData:function(t){e(this.noData).toggle(t)},_toggleHeader:function(e){var t=this.listView.content.prev(T);t.toggle(e)},_renderFooter:function(){var e=this,t=e.footer;t&&(this._angularElement(t,"cleanup"),t.html(e.footerTemplate({instance:e})),this._angularElement(t,"compile"))},_allowOpening:function(){return this.options.noDataTemplate||this.dataSource.flatView().length},_initValue:function(){var e=this,t=e.options.value;null!==t?e.element.val(t):(t=e._accessor(),e.options.value=t),e._old=t},_ignoreCase:function(){var e,t=this,n=t.dataSource.reader.model;n&&n.fields&&(e=n.fields[t.options.dataTextField],e&&e.type&&"string"!==e.type&&(t.options.ignoreCase=!1))},_focus:function(e){return this.listView.focus(e)},_filter:function(e){var t,n,i=this,o=i.options,r=e.word,a=o.filterFields,s=o.dataTextField;if(a&&a.length)for(t={logic:"or",filters:[],fromFilter:!0},n=0;n<a.length;n++)this._pushFilterExpression(t,i._buildExpression(r,a[n]));else t=i._buildExpression(r,s);i._open=e.open,i._filterSource(t)},_buildExpression:function(e,t){var n=this,i=n.options,o=i.ignoreCase,r=n.dataSource.options.accentFoldingFiltering;return{value:o?r?e.toLocaleLowerCase(r):e.toLowerCase():e,field:t,operator:i.filter,ignoreCase:o}},_clearButton:function(){var t=this,n=t.options.messages.clear;t._clear||(t._clear=e('<span unselectable="on" class="k-icon k-clear-value k-i-close" title="'+n+'"></span>').attr({role:"button",tabIndex:-1})),t.options.clearButton||t._clear.remove(),this._hideClear()},search:function(t){var n=this.options;t="string"==typeof t?t:this._inputValue(),clearTimeout(this._typingTimeout),(!n.enforceMinLength&&!t.length||t.length>=n.minLength)&&(this._state="filter",this.listView&&(this.listView._emptySearch=!e.trim(t).length),this._isFilterEnabled()?this._filter({word:t,open:!0}):this._searchByWord(t))},current:function(e){return this._focus(e)},items:function(){return this.ul[0].children},destroy:function(){var e=this,t=e.ns;f.fn.destroy.call(e),e._unbindDataSource(),e.listView.destroy(),e.list.off(t),e.popup.destroy(),e._form&&e._form.off("reset",e._resetHandler)},dataItem:function(n){var i=this;if(n===t)return i.listView.selectedDataItems()[0];if("number"!=typeof n){if(i.options.virtual)return i.dataSource.getByUid(e(n).data("uid"));n=e(i.items()).index(n)}return i.dataSource.flatView()[n]},_activateItem:function(){var e=this.listView.focus();e&&this._focused.add(this.filterInput).attr("aria-activedescendant",e.attr("id"))},_deactivateItem:function(){this._focused.add(this.filterInput).removeAttr("aria-activedescendant")},_accessors:function(){var e=this,t=e.element,n=e.options,i=d.getter,o=t.attr(d.attr("text-field")),r=t.attr(d.attr("value-field"));!n.dataTextField&&o&&(n.dataTextField=o),!n.dataValueField&&r&&(n.dataValueField=r),e._text=i(n.dataTextField),e._value=i(n.dataValueField)},_aria:function(e){var n=this,i=n.options,o=n._focused.add(n.filterInput);i.suggest!==t&&o.attr("aria-autocomplete",i.suggest?"both":"list"),e=e?e+" "+n.ul[0].id:n.ul[0].id,o.attr("aria-owns",e),n.ul.attr("aria-live",n._isFilterEnabled()?"polite":"off"),n._ariaLabel()},_ariaLabel:function(){var t,n=this,i=n._focused,o=n.element,r=o.attr("id"),a=e('label[for="'+r+'"]'),s=o.attr("aria-label"),l=o.attr("aria-labelledby");i!==o&&(s?i.attr("aria-label",s):l?i.attr("aria-labelledby",l):a.length&&(t=a.attr("id")||n._generateLabelId(a,r||d.guid()),i.attr("aria-labelledby",t)))},_generateLabelId:function(e,t){var n=t+A;return e.attr("id",n),n},_blur:function(){var e=this;e._change(),e.close()},_change:function(){var e,i=this,o=i.selectedIndex,r=i.options.value,a=i.value();i._isSelect&&!i.listView.bound()&&r&&(a=r),a!==n(i._old,typeof a)&&a!==n(i._oldText,typeof a)?e=!0:i._valueBeforeCascade!==t&&i._valueBeforeCascade!==n(i._old,typeof i._valueBeforeCascade)&&i._userTriggered?e=!0:o===t||o===i._oldIndex||i.listView.isFiltered()||(e=!0),e&&(i._valueBeforeCascade=i._old=null===i._old||""===i._old||""===a?a:i.dataItem()?i.options.dataValueField?i.dataItem()[i.options.dataValueField]:i.dataItem():null,i._oldIndex=o,i._oldText=i.text&&i.text(),i._typing||i.element.trigger(y),i.trigger(y)),i.typing=!1},_data:function(){return this.dataSource.view()},_enable:function(){var e=this,n=e.options,i=e.element.is("[disabled]");n.enable!==t&&(n.enabled=n.enable),!n.enabled||i?e.enable(!1):e.readonly(e.element.is("[readonly]"))},_dataValue:function(e){var n=this._value(e);return n===t&&(n=this._text(e)),n},_offsetHeight:function(){var t=0,n=this.listView.content.prevAll(":visible");return n.each(function(){var n=e(this);t+=h(n,!0)}),t},_height:function(n){var i,o,r,a=this,s=a.list,l=a.options.height,c=a.popup.visible();if(n||a.options.noDataTemplate){if(o=s.add(s.parent(".k-animation-container")).show(),!s.is(":visible"))return o.hide(),t;l=a.listView.content[0].scrollHeight>l?l:"auto",o.height(l),"auto"!==l&&(i=a._offsetHeight(),r=h(e(a.footer))||0,l=l-i-r),a.listView.content.height(l),c||o.hide()}return l},_openHandler:function(e){this._adjustListWidth(),this.trigger(E)?e.preventDefault():(this._focused.attr("aria-expanded",!0),this.ul.attr("aria-hidden",!1))},_adjustListWidth:function(){var e,t,n=this,i=n.list,o=i[0].style.width,r=n.wrapper;if(i.data(V)||!o)return e=window.getComputedStyle?window.getComputedStyle(r[0],null):0,t=parseFloat(e&&e.width)||b(r),e&&N.msie&&(t+=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight)+parseFloat(e.borderLeftWidth)+parseFloat(e.borderRightWidth)),o="border-box"!==i.css("box-sizing")?t-(b(i)-i.width()):t,i.css({fontFamily:r.css("font-family"),width:n.options.autoWidth?"auto":o,minWidth:o,whiteSpace:n.options.autoWidth?"nowrap":"normal"}).data(V,o),!0},_closeHandler:function(e){this.trigger(I)?e.preventDefault():(this._focused.attr("aria-expanded",!1),this.ul.attr("aria-hidden",!0))},_focusItem:function(){var e=this.listView,n=!e.focus(),o=i(e.select());o===t&&this.options.highlightFirst&&n&&(o=0),o!==t?e.focus(o):n&&e.scrollToIndex(0)},_calculateGroupPadding:function(e){var t=this.ul.children(".k-first:first"),n=this.listView.content.prev(T),i=0,o="right";n[0]&&"none"!==n[0].style.display&&("auto"!==e&&(i=d.support.scrollbar()),this.element.parents(".k-rtl").length&&(o="left"),i+=parseFloat(t.css("border-"+o+"-width"),10)+parseFloat(t.children(".k-group").css("padding-"+o),10),n.css("padding-"+o,i))},_calculatePopupHeight:function(e){var t=this._height(this.dataSource.flatView().length||e);this._calculateGroupPadding(t),this._calculateColumnsHeaderPadding(t)},_calculateColumnsHeaderPadding:function(e){var t,n,i;this.options.columns&&this.options.columns.length&&(t=this,n=m.isRtl(t.wrapper),i=d.support.scrollbar(),t.columnsHeader.css(n?"padding-left":"padding-right","auto"!==e?i:0))},_refreshScroll:function(){var e=this.listView,t=e.element.height()>e.content.height();this.options.autoWidth&&e.content.css({overflowX:"hidden",overflowY:t?"scroll":"auto"})},_resizePopup:function(e){this.options.virtual||(this.popup.element.is(":visible")?this._calculatePopupHeight(e):(this.popup.one("open",function(e){return L(function(){this._calculatePopupHeight(e)},this)}.call(this,e)),this.popup.one("activate",L(this._refreshScroll,this))))},_popup:function(){var e=this;e.popup=new u.Popup(e.list,B({},e.options.popup,{anchor:e.wrapper,open:L(e._openHandler,e),close:L(e._closeHandler,e),animation:e.options.animation,isRtl:m.isRtl(e.wrapper),autosize:e.options.autoWidth}))},_makeUnselectable:function(){U&&this.list.find("*").not(".k-textbox").attr("unselectable","on")},_toggleHover:function(t){e(t.currentTarget).toggleClass(C,"mouseenter"===t.type)},_toggle:function(e,n){var i=this,o=m.mobileOS&&(m.touch||m.MSPointers||m.pointers);e=e!==t?e:!i.popup.visible(),n||o||i._focused[0]===_()||(i._prevent=!0,i._focused.focus(),i._prevent=!1),i[e?E:I]()},_triggerCascade:function(){var e=this;e._cascadeTriggered&&e.value()===n(e._cascadedValue,typeof e.value())||(e._cascadedValue=e.value(),e._cascadeTriggered=!0,e.trigger(M,{userTriggered:e._userTriggered}))},_triggerChange:function(){this._valueBeforeCascade!==this.value()&&this.trigger(y)},_unbindDataSource:function(){var e=this;e.dataSource.unbind(P,e._requestStartHandler).unbind(z,e._requestEndHandler).unbind("error",e._errorHandler)},requireValueMapper:function(e,t){var n=(e.value instanceof Array?e.value.length:e.value)||(t instanceof Array?t.length:t);if(n&&e.virtual&&"function"!=typeof e.virtual.valueMapper)throw Error("ValueMapper is not provided while the value is being set. See http://docs.telerik.com/kendo-ui/controls/editors/combobox/virtualization#the-valuemapper-function")}});B(G,{inArray:function(e,t){var n,i,o=t.children;if(!e||e.parentNode!==t)return-1;for(n=0,i=o.length;n<i;n++)if(e===o[n])return n;return-1},unifyType:n}),d.ui.List=G,u.Select=G.extend({init:function(e,t){G.fn.init.call(this,e,t),this._initial=this.element.val()},setDataSource:function(e){var t,n=this;n.options.dataSource=e,n._dataSource(),n.listView.bound()&&(n._initialIndex=null,n.listView._current=null),n.listView.setDataSource(n.dataSource),n.options.autoBind&&n.dataSource.fetch(),t=n._parentWidget(),t&&n._cascadeSelect(t)},close:function(){this.popup.close()},select:function(e){var n=this;return e===t?n.selectedIndex:n._select(e).done(function(){n._cascadeValue=n._old=n._accessor(),n._oldIndex=n.selectedIndex})},_accessor:function(e,t){return this[this._isSelect?"_accessorSelect":"_accessorInput"](e,t)},_accessorInput:function(e){var n=this.element[0];return e===t?n.value:(null===e&&(e=""),n.value=e,t)},_accessorSelect:function(e,n){var i,r=this.element[0];return e===t?o(r).value||"":(o(r).selected=!1,n===t&&(n=-1),i=null!==e&&""!==e,i&&n==-1?this._custom(e):e?r.value=e:r.selectedIndex=n,t)},_syncValueAndText:function(){return!0},_custom:function(t){var n=this,i=n.element,o=n._customOption;o||(o=e("<option/>"),n._customOption=o,i.append(o)),o.text(t),o[0].selected=!0},_hideBusy:function(){var e=this;clearTimeout(e._busy),e._arrowIcon.removeClass(S),e._focused.attr("aria-busy",!1),e._busy=null,e._showClear()},_showBusy:function(e){var t=this;e.isDefaultPrevented()||(t._request=!0,t._busy||(t._busy=setTimeout(function(){t._arrowIcon&&(t._focused.attr("aria-busy",!0),t._arrowIcon.addClass(S),t._hideClear())},100)))},_requestEnd:function(){this._request=!1,this._hideBusy()},_dataSource:function(){var t,n=this,i=n.element,o=n.options,r=o.dataSource||{};r=e.isArray(r)?{data:r}:r,n._isSelect&&(t=i[0].selectedIndex,t>-1&&(o.index=t),r.select=i,r.fields=[{field:o.dataTextField},{field:o.dataValueField}]),n.dataSource?n._unbindDataSource():(n._requestStartHandler=L(n._showBusy,n),n._requestEndHandler=L(n._requestEnd,n),n._errorHandler=L(n._hideBusy,n)),n.dataSource=d.data.DataSource.create(r).bind(P,n._requestStartHandler).bind(z,n._requestEndHandler).bind("error",n._errorHandler)},_firstItem:function(){this.listView.focusFirst()},_lastItem:function(){this.listView.focusLast()},_nextItem:function(){this.listView.focusNext()},_prevItem:function(){this.listView.focusPrev()},_move:function(e){var n,i,o,r,a,s,l,c=this,d=c.listView,u=e.keyCode,h=u===g.DOWN;if(u===g.UP||h){if(e.altKey)c.toggle(h);else{if(!d.bound()&&!c.ul[0].firstChild)return c._fetch||(c.dataSource.one(y,function(){c._fetch=!1,c._move(e)}),c._fetch=!0,c._filterSource()),e.preventDefault(),!0;if(o=c._focus(),c._fetch||o&&!o.hasClass("k-state-selected")||(h?(c._nextItem(),c._focus()||c._lastItem()):(c._prevItem(),c._focus()||c._firstItem())),n=d.dataItemByIndex(d.getElementIndex(c._focus())),c.trigger(F,{dataItem:n,item:c._focus()}))return c._focus(o),t;c._select(c._focus(),!0).done(function(){c.popup.visible()||c._blur(),c._cascadedValue=null===c._cascadedValue?c.value():c.dataItem()?c.dataItem()[c.options.dataValueField]||c.dataItem():null})}e.preventDefault(),i=!0}else if(u===g.ENTER||u===g.TAB){if(c.popup.visible()&&e.preventDefault(),o=c._focus(),n=c.dataItem(),c.popup.visible()||n&&c.text()===c._text(n)||(o=null),r=c.filterInput&&c.filterInput[0]===_(),o){if(n=d.dataItemByIndex(d.getElementIndex(o)),s=!0,n&&(s=c._value(n)!==G.unifyType(c.value(),typeof c._value(n))),s&&c.trigger(F,{dataItem:n,item:o}))return;a=c._select(o)}else c.input&&((c._syncValueAndText()||c._isSelect)&&c._accessor(c.input.val()),c.listView.value(c.input.val()));c._focusElement&&c._focusElement(c.wrapper),r&&u===g.TAB?c.wrapper.focusout():a&&"function"==typeof a.done?a.done(function(){c._blur()}):c._blur(),c.close(),i=!0}else u===g.ESC?(c.popup.visible()&&e.preventDefault(),c.close(),i=!0):!c.popup.visible()||u!==g.PAGEDOWN&&u!==g.PAGEUP||(e.preventDefault(),l=u===g.PAGEDOWN?1:-1,d.scrollWith(l*d.screenHeight()),i=!0);return i},_fetchData:function(){var e=this,t=!!e.dataSource.view().length;e._request||e.options.cascadeFrom||e.listView.bound()||e._fetch||t||(e._fetch=!0,e.dataSource.fetch().done(function(){e._fetch=!1}))},_options:function(e,n,i){var r,a,s,l,c=this,d=c.element,u=d[0],h=e.length,p="",f=0;for(n&&(p=n);f<h;f++)r="<option",a=e[f],s=c._text(a),l=c._value(a),l!==t&&(l+="",l.indexOf('"')!==-1&&(l=l.replace(q,""")),r+=' value="'+l+'"'),r+=">",s!==t&&(r+=v(s)),r+="</option>",p+=r;d.html(p),i!==t&&(u.value=i,u.value&&!i&&(u.selectedIndex=-1)),u.selectedIndex!==-1&&(r=o(u),r&&r.setAttribute(R,R))},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){setTimeout(function(){t.value(t._initial)})},t._form=o.on("reset",t._resetHandler))},_parentWidget:function(){var t,n,i,o=this.options.name;if(this.options.cascadeFrom){if(t=e("#"+this.options.cascadeFrom),n=t.data("kendo"+o),!n)for(i=0;i<j[o].length&&!(n=t.data("kendo"+j[o][i]));i+=1);return n}},_cascade:function(){var e,t=this,n=t.options,i=n.cascadeFrom;if(i){if(e=t._parentWidget(),!e)return;t._cascadeHandlerProxy=L(t._cascadeHandler,t),t._cascadeFilterRequests=[],n.autoBind=!1,e.bind("set",function(){t.one("set",function(e){t._selectedValue=e.value||t._accessor()})}),e.first(M,t._cascadeHandlerProxy),e.listView.bound()?(t._toggleCascadeOnFocus(),t._cascadeSelect(e)):(e.one("dataBound",function(){t._toggleCascadeOnFocus(),e.popup.visible()&&e._focused.focus()}),e.value()||t.enable(!1))}},_toggleCascadeOnFocus:function(){var e=this,t=e._parentWidget(),n=W?"blur":"focusout";t._focused.add(t.filterInput).bind("focus",function(){t.unbind(M,e._cascadeHandlerProxy),t.first(y,e._cascadeHandlerProxy)}),t._focused.add(t.filterInput).bind(n,function(){t.unbind(y,e._cascadeHandlerProxy),t.first(M,e._cascadeHandlerProxy)})},_cascadeHandler:function(e){var t=this._parentWidget(),n=this.value();this._userTriggered=e.userTriggered,this.listView.bound()&&this._clearSelection(t,!0),this._cascadeSelect(t,n)},_cascadeChange:function(e){var t=this,i=t._accessor()||t._selectedValue;t._cascadeFilterRequests.length||(t._selectedValue=null),t._userTriggered?t._clearSelection(e,!0):i?(i!==n(t.listView.value()[0],typeof i)&&t.value(i),t.dataSource.view()[0]&&t.selectedIndex!==-1||t._clearSelection(e,!0)):t.dataSource.flatView().length&&t.select(t.options.index),t.enable(),t._triggerCascade(),t._triggerChange(),t._userTriggered=!1},_cascadeSelect:function(e,n){var i,o,r=this,a=e.dataItem(),l=a?a[r.options.cascadeFromParentField]||e._value(a):null,c=r.options.cascadeFromField||e.options.dataValueField;r._valueBeforeCascade=n!==t?n:r.value(),l||0===l?(i=r.dataSource.filter()||{},s(i,c),o=function(){var t=r._cascadeFilterRequests.shift();t&&r.unbind("dataBound",t),t=r._cascadeFilterRequests[0],t&&r.first("dataBound",t),r._cascadeChange(e)},r._cascadeFilterRequests.push(o),1===r._cascadeFilterRequests.length&&r.first("dataBound",o),r._cascading=!0,r._filterSource({field:c,operator:"eq",value:l}),r._cascading=!1):(r.enable(!1),r._clearSelection(e),r._triggerCascade(),r._triggerChange(),r._userTriggered=!1); +}}),l=".StaticList",c=d.ui.DataBoundWidget.extend({init:function(t,n){f.fn.init.call(this,t,n),this.element.attr("role","listbox").on("click"+l,"li",L(this._click,this)).on("mouseenter"+l,"li",function(){e(this).addClass(C)}).on("mouseleave"+l,"li",function(){e(this).removeClass(C)}),m.touch&&this._touchHandlers(),"multiple"===this.options.selectable&&this.element.attr("aria-multiselectable",!0),this.content=this.element.wrap("<div class='k-list-scroller' unselectable='on'></div>").parent(),this.header=this.content.before('<div class="k-group-header" style="display:none"></div>').prev(),this.bound(!1),this._optionID=d.guid(),this._selectedIndices=[],this._view=[],this._dataItems=[],this._values=[];var i=this.options.value;i&&(this._values=e.isArray(i)?i.slice(0):[i]),this._getter(),this._templates(),this.setDataSource(this.options.dataSource),this._onScroll=L(function(){var e=this;clearTimeout(e._scrollId),e._scrollId=setTimeout(function(){e._renderHeader()},50)},this)},options:{name:"StaticList",dataValueField:null,valuePrimitive:!1,selectable:!0,template:null,groupTemplate:null,fixedGroupTemplate:null},events:["click",y,"activate","deactivate","dataBinding","dataBound","selectedItemChange"],setDataSource:function(t){var n,i=this,o=t||{};o=e.isArray(o)?{data:o}:o,o=d.data.DataSource.create(o),i.dataSource?(i.dataSource.unbind(y,i._refreshHandler),n=i.value(),i.value([]),i.bound(!1),i.value(n)):i._refreshHandler=L(i.refresh,i),i.setDSFilter(o.filter()),i.dataSource=o.bind(y,i._refreshHandler),i._fixedHeader()},_touchHandlers:function(){var t,n,i=this,o=function(e){return(e.originalEvent||e).changedTouches[0].pageY};i.element.on("touchstart"+l,function(e){t=o(e)}),i.element.on("touchend"+l,function(r){r.isDefaultPrevented()||(n=o(r),Math.abs(n-t)<10&&(i._touchTriggered=!0,i._triggerClick(e(r.target).closest(D).get(0))))})},skip:function(){return this.dataSource.skip()},setOptions:function(e){f.fn.setOptions.call(this,e),this._getter(),this._templates(),this._render()},destroy:function(){this.element.off(l),this._refreshHandler&&this.dataSource.unbind(y,this._refreshHandler),clearTimeout(this._scrollId),f.fn.destroy.call(this)},dataItemByIndex:function(e){return this.dataSource.flatView()[e]},screenHeight:function(){return this.content[0].clientHeight},scrollToIndex:function(e){var t=this.element[0].children[e];t&&this.scroll(t)},scrollWith:function(e){this.content.scrollTop(this.content.scrollTop()+e)},scroll:function(e){if(e){e[0]&&(e=e[0]);var t=this.content[0],n=e.offsetTop,i=e.offsetHeight,o=t.scrollTop,r=t.clientHeight,a=n+i;o>n?o=n:a>o+r&&(o=a-r),t.scrollTop=o}},selectedDataItems:function(e){return e===t?this._dataItems.slice():(this._dataItems=e,this._values=this._getValues(e),t)},_getValues:function(t){var n=this._valueGetter;return e.map(t,function(e){return n(e)})},focusNext:function(){var e=this.focus();e=e?e.next():0,this.focus(e)},focusPrev:function(){var e=this.focus();e=e?e.prev():this.element[0].children.length-1,this.focus(e)},focusFirst:function(){this.focus(this.element[0].children[0])},focusLast:function(){this.focus(i(this.element[0].children))},focus:function(n){var o,r=this,a=r._optionID;return n===t?r._current:(n=i(r._get(n)),n=e(this.element[0].children[n]),r._current&&(r._current.removeClass(x).removeAttr(k),r.trigger("deactivate")),o=!!n[0],o&&(n.addClass(x),r.scroll(n),n.attr("id",a)),r._current=o?n:null,r.trigger("activate"),t)},focusIndex:function(){return this.focus()?this.focus().index():t},skipUpdate:function(e){this._skipUpdate=e},select:function(n){var o,r,a,s=this,l=s.options.selectable,c="multiple"!==l&&l!==!1,d=s._selectedIndices,u=[this.element.find(".k-state-selected").index()],h=[],p=[];return n===t?d.slice():(n=s._get(n),1===n.length&&n[0]===-1&&(n=[]),r=e.Deferred().resolve(),a=s.isFiltered(),a&&!c&&s._deselectFiltered(n)?r:c&&!a&&e.inArray(i(n),d)!==-1&&e.inArray(i(n),u)!==-1?(s._dataItems.length&&s._view.length&&(s._dataItems=[s._view[d[0]].item]),r):(o=s._deselect(n),p=o.removed,n=o.indices,n.length&&(c&&(n=[i(n)]),h=s._select(n)),(h.length||p.length)&&(s._valueComparer=null,s.trigger(y,{added:h,removed:p})),r))},removeAt:function(e){return this._selectedIndices.splice(e,1),this._values.splice(e,1),this._valueComparer=null,{position:e,dataItem:this._dataItems.splice(e,1)[0]}},setValue:function(t){t=e.isArray(t)||t instanceof w?t.slice(0):[t],this._values=t,this._valueComparer=null},value:function(n){var i,o=this,r=o._valueDeferred;return n===t?o._values.slice():(o.setValue(n),r&&"resolved"!==r.state()||(o._valueDeferred=r=e.Deferred()),o.bound()&&(i=o._valueIndices(o._values),"multiple"===o.options.selectable&&o.select(-1),o.select(i),r.resolve()),o._skipUpdate=!1,r)},items:function(){return this.element.children(D)},_click:function(e){return this._touchTriggered?(this._touchTriggered=!1,t):(e.isDefaultPrevented()||this._triggerClick(e.currentTarget),t)},_triggerClick:function(t){this.trigger("click",{item:e(t)})||this.select(t)},_valueExpr:function(e,t){var i,o,r=this,a=0,s=[];if(!r._valueComparer||r._valueType!==e){for(r._valueType=e;a<t.length;a++)s.push(n(t[a],e));i="for (var idx = 0; idx < "+s.length+"; idx++) { if (current === values[idx]) { return idx; }} return -1;",o=Function("current","values",i),r._valueComparer=function(e){return o(e,s)}}return r._valueComparer},_dataItemPosition:function(e,t){var n=this._valueGetter(e),i=this._valueExpr(typeof n,t);return i(n)},_getter:function(){this._valueGetter=d.getter(this.options.dataValueField)},_deselect:function(t){var n,i,o,r=this,a=r.element[0].children,s=r.options.selectable,l=r._selectedIndices,c=r._dataItems,d=r._values,u=[],h=0,p=0;if(t=t.slice(),s!==!0&&t.length){if("multiple"===s)for(;h<t.length;h++)if(i=t[h],e(a[i]).hasClass("k-state-selected"))for(n=0;n<l.length;n++)if(o=l[n],o===i){e(a[o]).removeClass("k-state-selected").attr("aria-selected",!1),u.push({position:n+p,dataItem:c.splice(n,1)[0]}),l.splice(n,1),t.splice(h,1),d.splice(n,1),p+=1,h-=1,n-=1;break}}else{for(;h<l.length;h++)e(a[l[h]]).removeClass("k-state-selected").attr("aria-selected",!1),u.push({position:h,dataItem:c[h]});r._values=[],r._dataItems=[],r._selectedIndices=[]}return{indices:t,removed:u}},_deselectFiltered:function(t){for(var n,i,o,r=this.element[0].children,a=[],s=0;s<t.length;s++)i=t[s],n=this._view[i].item,o=this._dataItemPosition(n,this._values),o>-1&&(a.push(this.removeAt(o)),e(r[i]).removeClass("k-state-selected"));return!!a.length&&(this.trigger(y,{added:[],removed:a}),!0)},_select:function(t){var n,o,r=this,a=r.element[0].children,s=r._view,l=[],c=0;for(i(t)!==-1&&r.focus(t);c<t.length;c++)o=t[c],n=s[o],o!==-1&&n&&(n=n.item,r._selectedIndices.push(o),r._dataItems.push(n),r._values.push(r._valueGetter(n)),e(a[o]).addClass("k-state-selected").attr("aria-selected",!0),l.push({dataItem:n}));return l},getElementIndex:function(t){return e(t).data("offset-index")},_get:function(e){return"number"==typeof e?e=[e]:H(e)||(e=this.getElementIndex(e),e=[e!==t?e:-1]),e},_template:function(){var e=this,t=e.options,n=t.template;return n?(n=d.template(n),n=function(e){return'<li tabindex="-1" role="option" unselectable="on" class="k-item">'+n(e)+"</li>"}):n=d.template('<li tabindex="-1" role="option" unselectable="on" class="k-item">${'+d.expr(t.dataTextField,"data")+"}</li>",{useWithBlock:!1}),n},_templates:function(){var e,t,n,i,o,r=this.options,a={template:r.template,groupTemplate:r.groupTemplate,fixedGroupTemplate:r.fixedGroupTemplate};if(r.columns)for(t=0;t<r.columns.length;t++)n=r.columns[t],i=n.field?""+n.field:"text",a["column"+t]=n.template||"#: "+i+"#";for(o in a)e=a[o],e&&"function"!=typeof e&&(a[o]=d.template(e));this.templates=a},_normalizeIndices:function(e){for(var n=[],i=0;i<e.length;i++)e[i]!==t&&n.push(e[i]);return n},_valueIndices:function(e,t){var n,i=this._view,o=0;if(t=t?t.slice():[],!e.length)return[];for(;o<i.length;o++)n=this._dataItemPosition(i[o].item,e),n!==-1&&(t[n]=o);return this._normalizeIndices(t)},_firstVisibleItem:function(){for(var t=this.element[0],n=this.content[0],i=n.scrollTop,o=e(t.children[0]).height(),r=Math.floor(i/o)||0,a=t.children[r]||t.lastChild,s=a.offsetTop<i;a;)if(s){if(a.offsetTop+o>i||!a.nextSibling)break;a=a.nextSibling}else{if(a.offsetTop<=i||!a.previousSibling)break;a=a.previousSibling}return this._view[e(a).data("offset-index")]},_fixedHeader:function(){this.isGrouped()&&this.templates.fixedGroupTemplate?(this.header.show(),this.content.scroll(this._onScroll)):(this.header.hide(),this.content.off("scroll",this._onScroll))},_renderHeader:function(){var e,t=this.templates.fixedGroupTemplate;t&&(e=this._firstVisibleItem(),e&&(""+e.group).length&&this.header.html(t(e.group)))},_renderItem:function(e){var t='<li tabindex="-1" role="option" unselectable="on" class="k-item',n=e.item,i=0!==e.index,o=e.selected,r=this.isGrouped(),a=this.options.columns&&this.options.columns.length;return i&&e.newGroup&&(t+=" k-first"),e.isLastGroupedItem&&a&&(t+=" k-last"),o&&(t+=" k-state-selected"),t+='" aria-selected="'+(o?"true":"false")+'" data-offset-index="'+e.index+'">',t+=a?this._renderColumns(n):this.templates.template(n),i&&e.newGroup?t+=a?'<div class="k-cell k-group-cell"><span>'+this.templates.groupTemplate(e.group)+"</span></div>":'<div class="k-group">'+this.templates.groupTemplate(e.group)+"</div>":r&&a&&(t+="<div class='k-cell k-spacer-cell'></div>"),t+"</li>"},_renderColumns:function(e){var t,n,i,o,r="";for(t=0;t<this.options.columns.length;t++)n=this.options.columns[t].width,i=parseInt(n,10),o="",n&&!isNaN(i)&&(o+="style='width:",o+=i,o+=p.test(n)?"%":"px",o+=";'"),r+="<span class='k-cell' "+o+">",r+=this.templates["column"+t](e),r+="</span>";return r},_render:function(){var e,t,n,i,o="",r=0,a=0,s=[],l=this.dataSource.view(),c=this.value(),d=this.isGrouped();if(d)for(r=0;r<l.length;r++)for(t=l[r],n=!0,i=0;i<t.items.length;i++)e={selected:this._selected(t.items[i],c),item:t.items[i],group:t.value,newGroup:n,isLastGroupedItem:i===t.items.length-1,index:a},s[a]=e,a+=1,o+=this._renderItem(e),n=!1;else for(r=0;r<l.length;r++)e={selected:this._selected(l[r],c),item:l[r],index:r},s[r]=e,o+=this._renderItem(e);this._view=s,this.element[0].innerHTML=o,d&&s.length&&this._renderHeader()},_selected:function(e,t){var n=!this.isFiltered()||"multiple"===this.options.selectable;return n&&this._dataItemPosition(e,t)!==-1},setDSFilter:function(e){this._lastDSFilter=B({},e)},isFiltered:function(){return this._lastDSFilter||this.setDSFilter(this.dataSource.filter()),!d.data.Query.compareFilters(this.dataSource.filter(),this._lastDSFilter)},refresh:function(e){var t,n=this,i=e&&e.action,o=n.options.skipUpdateOnBind,a="itemchange"===i;n.trigger("dataBinding"),n._angularItems("cleanup"),n._fixedHeader(),n._render(),n.bound(!0),a||"remove"===i?(t=r(n._dataItems,e.items),t.changed.length&&(a?n.trigger("selectedItemChange",{items:t.changed}):n.value(n._getValues(t.unchanged)))):n.isFiltered()||n._skipUpdate||n._emptySearch?(n.focus(0),n._skipUpdate&&(n._skipUpdate=!1,n._selectedIndices=n._valueIndices(n._values,n._selectedIndices))):o||i&&"add"!==i||n.value(n._values),n._valueDeferred&&n._valueDeferred.resolve(),n._angularItems("compile"),n.trigger("dataBound")},bound:function(e){return e===t?this._bound:(this._bound=e,t)},isGrouped:function(){return(this.dataSource.group()||[]).length}}),u.plugin(c)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.calendar.min",["kendo.core.min","kendo.selectable.min"],e)}(function(){return function(e,t){function n(e,t,n,i){var o,r=e.getFullYear(),a=t.getFullYear(),s=n.getFullYear();return r-=r%i,o=r+(i-1),r<a&&(r=a),o>s&&(o=s),r+"-"+o}function i(e){var t,n=0,i=e.min,o=e.max,r=e.start,a=e.setter,l=e.build,c=e.weekNumberBuild,d=e.cells||12,u=e.isWeekColumnVisible,h=e.perRow||4,p=e.otherMonth,g=e.lastDayOfMonth,m=e.weekNumber||j,v=e.content||W,_=e.empty||U,b=e.otherMonthCellTemplate||q,w=e.html||'<table tabindex="0" role="grid" class="k-content k-meta-view" cellspacing="0"><tbody><tr role="row">';for(u&&(w+=m(c(r)));n<d;n++)n>0&&n%h===0&&(w+='</tr><tr role="row">',u&&(w+=m(p||+r<=+g?c(r):{weekNumber:" "}))),r=f(r.getFullYear(),r.getMonth(),r.getDate()),P(r,0),t=l(r,n,e.disableDates),w+=t.cssClass.indexOf(de)===-1||p?s(r,i,o)?v(t):_(t):b(t),a(r,1);return w+"</tr></tbody></table>"}function o(e,t,n){var i=e.getFullYear(),o=t.getFullYear(),r=o,a=0;return n&&(o-=o%n,r=o-o%n+n-1),i>r?a=1:i<o&&(a=-1),a}function r(){var e=new Re;return new Re(e.getFullYear(),e.getMonth(),e.getDate())}function a(e,t,n){var i=r();return e&&(i=new Re((+e))),t>i?i=new Re((+t)):n<i&&(i=new Re((+n))),i}function s(e,t,n){return+e>=+t&&+e<=+n}function l(e,t){return e.slice(t).concat(e.slice(0,t))}function c(e,t,n){t=t instanceof Re?t.getFullYear():e.getFullYear()+n*t,e.setFullYear(t)}function d(e,t){var n,i,o;return+t<+e&&(n=+e,D.views[0].setDate(e,t),D.views[0].setDate(t,new Date(n))),i=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()),o=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),Math.ceil((+o-+i)/A.date.MS_PER_DAY)}function u(e,t,n,i){var o,r;for(o=0;o<=t;o++)r=new Date(n.getTime()),r=new Date(r.setDate(r.getDate()+o)),i(r)||e.push(r)}function h(t){var n=e(this).hasClass("k-state-disabled");n||e(this).toggleClass(se,ke.indexOf(t.type)>-1||t.type==be)}function p(e){e.preventDefault()}function f(e,t,n){var i=new Re(e,t,n);return i.setFullYear(e,t,n),i}function g(e){return N(e).calendars.standard}function m(e){var n=Pe[e.start],i=Pe[e.depth],o=N(e.culture);e.format=L(e.format||o.calendars.standard.patterns.d),isNaN(n)&&(n=0,e.start=ne),(i===t||i>n)&&(e.depth=ne),null===e.dates&&(e.dates=[])}function v(e){$&&e.find("*").attr("unselectable","on")}function _(e,t){e.addClass("k-"+t)}function b(e,t){for(var n=0,i=t.length;n<i;n++)if(e===+t[n])return!0;return!1}function w(e,t){return!!e&&(e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate())}function k(e,t){return!!e&&(e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth())}function y(t){return A.isFunction(t)?t:e.isArray(t)?C(t):e.noop}function x(e){var t,n=[];for(t=0;t<e.length;t++)n.push(e[t].setHours(0,0,0,0));return n}function C(t){var n,i,o,r,a,s=[],l=["su","mo","tu","we","th","fr","sa"],c="if (found) { return true } else {return false}";if(t[0]instanceof Re)s=x(t),n="var found = date && window.kendo.jQuery.inArray(date.setHours(0, 0, 0, 0),["+s+"]) > -1;"+c;else{for(o=0;o<t.length;o++)r=t[o].slice(0,2).toLowerCase(),a=e.inArray(r,l),a>-1&&s.push(a);n="var found = date && window.kendo.jQuery.inArray(date.getDay(),["+s+"]) > -1;"+c}return i=Function("date",n)}function S(e,t){return e instanceof Date&&t instanceof Date&&(e=e.getTime(),t=t.getTime()),e===t}function T(t){var n=e(t).attr(A.attr(ae)).split("/");return n=f(n[0],n[1],n[2])}var D,A=window.kendo,E=A.support,I=A.ui,M=I.Widget,F=A.keys,R=A.parseDate,P=A.date.adjustDST,z=A.date.weekInYear,B=A.ui.Selectable,L=A._extractFormat,H=A.template,N=A.getCulture,O=A.support.transitions,V=O?O.css+"transform-origin":"",W=H('<td#=data.cssClass# role="gridcell"><a tabindex="-1" class="k-link" href="\\#" data-#=data.ns#value="#=data.dateString#">#=data.value#</a></td>',{useWithBlock:!1}),U=H('<td role="gridcell" class="k-out-of-range"><a class="k-link"></a></td>',{useWithBlock:!1}),q=H('<td role="gridcell" class="k-out-of-range"> </td>',{useWithBlock:!1}),j=H('<td class="k-alt">#= data.weekNumber #</td>',{useWithBlock:!1}),G=A.support.browser,$=G.msie&&G.version<9,Y=A._outerWidth,K=".kendoCalendar",Q="click"+K,X="keydown"+K,J="id",Z="min",ee="left",te="slideIn",ne="month",ie="century",oe="change",re="navigate",ae="value",se="k-state-hover",le="k-state-disabled",ce="k-state-focused",de="k-other-month",ue=' class="'+de+'"',he="k-out-of-range",pe="k-nav-today",fe="td:has(.k-link)",ge="td:has(.k-link):not(."+le+"):not(."+he+")",me="td:not(:has(.k-link))",ve="k-state-selected",_e="blur"+K,be="focus",we=be+K,ke=E.touch?"touchstart":"mouseenter",ye=E.touch?"touchstart"+K:"mouseenter"+K,xe=E.touch?"touchend"+K+" touchmove"+K:"mouseleave"+K,Ce=6e4,Se=864e5,Te="_prevArrow",De="_nextArrow",Ae="aria-disabled",Ee="aria-selected",Ie="aria-label",Me=e.proxy,Fe=e.extend,Re=Date,Pe={month:0,year:1,decade:2,century:3},ze=M.extend({init:function(t,n){var i,o,s=this;M.fn.init.call(s,t,n),t=s.wrapper=s.element,n=s.options,n.url=A.unescape(n.url),s.options.disableDates=y(s.options.disableDates),s._templates(),s._selectable(),s._header(),s._viewWrapper(),s._footer(s.footer),o=t.addClass("k-widget k-calendar "+(n.weekNumber?" k-week-number":"")).on(ye+" "+xe,fe,h).on(X,"table.k-content",Me(s._move,s)).on(Q,fe,function(t){var i=t.currentTarget.firstChild,o=T(i);i.href.indexOf("#")!=-1&&t.preventDefault(),"month"==s._view.name&&s.options.disableDates(o)||"month"==s._view.name&&"single"!=n.selectable||s._click(e(i))}).on("mouseup"+K,"table.k-content, .k-footer",function(){s._focusView(s.options.focusOnNav!==!1)}).attr(J),o&&(s._cellID=o+"_cell_selected"),s._isMultipleSelection()&&s.options.weekNumber&&t.on(Q,me,function(t){var n=e(t.currentTarget).closest("tr").find(ge).first(),i=s.selectable._lastActive=e(t.currentTarget).closest("tr").find(ge).last();s.selectable.selectRange(n,i,{event:t}),s._current=s._value=T(i.find("a")),s._class(ce,s._current)}),m(n),i=R(n.value,n.format,n.culture),s._selectDates=[],s._index=Pe[n.start],s._current=new Re((+a(i,n.min,n.max))),s._addClassProxy=function(){if(s._active=!0,s._cell.hasClass(le)){var e=s._view.toDateString(r());s._cell=s._cellByDate(e)}s._cell.addClass(ce)},s._removeClassProxy=function(){s._active=!1,s._cell.removeClass(ce)},s.value(i),s._isMultipleSelection()&&n.selectDates.length>0&&s.selectDates(n.selectDates),A.notify(s)},options:{name:"Calendar",value:null,min:new Re(1900,0,1),max:new Re(2099,11,31),dates:[],disableDates:null,url:"",culture:"",footer:"",format:"",month:{},weekNumber:!1,selectable:"single",selectDates:[],start:ne,depth:ne,animation:{horizontal:{effects:te,reverse:!0,duration:500,divisor:2},vertical:{effects:"zoomIn",duration:400}},messages:{weekColumnHeader:""}},events:[oe,re],setOptions:function(e){var t=this;m(e),e.disableDates=y(e.disableDates),M.fn.setOptions.call(t,e),t._templates(),t._selectable(),t._viewWrapper(),t._footer(t.footer),t._index=Pe[t.options.start],t.navigate(),e.weekNumber&&t.element.addClass("k-week-number")},destroy:function(){var e=this,t=e._today;e.element.off(K),e._title.off(K),e[Te].off(K),e[De].off(K),e._destroySelectable(),A.destroy(e._table),t&&A.destroy(t.off(K)),M.fn.destroy.call(e)},current:function(){return this._current},view:function(){return this._view},focus:function(e){e=e||this._table,this._bindTable(e),e.trigger("focus")},min:function(e){return this._option(Z,e)},max:function(e){return this._option("max",e)},navigateToPast:function(){this._navigate(Te,-1)},navigateToFuture:function(){this._navigate(De,1)},navigateUp:function(){var e=this,t=e._index;e._title.hasClass(le)||e.navigate(e._current,++t)},navigateDown:function(e){var n=this,i=n._index,o=n.options.depth;if(e)return i===Pe[o]?(S(n._value,n._current)&&S(n._value,e)||(n.value(e),n.trigger(oe)),t):(n.navigate(e,--i),t)},navigate:function(n,i){var o,r,s,l,c,d,u,h,p,f,g,m,b,w,k,y;i=isNaN(i)?Pe[i]:i,o=this,r=o.options,s=r.culture,l=r.min,c=r.max,d=o._title,u=o._table,h=o._oldTable,p=o._current,f=n&&+n>+p,g=i!==t&&i!==o._index,n||(n=p),o._current=n=new Re((+a(n,l,c))),i===t?i=o._index:o._index=i,o._view=b=D.views[i],w=b.compare,k=i===Pe[ie],d.toggleClass(le,k).attr(Ae,k),k=w(n,l)<1,o[Te].toggleClass(le,k).attr(Ae,k),o[Te].hasClass(le)&&o[Te].removeClass(se),k=w(n,c)>-1,o[De].toggleClass(le,k).attr(Ae,k),o[De].hasClass(le)&&o[De].removeClass(se),u&&h&&h.data("animating")&&(h.kendoStop(!0,!0),u.kendoStop(!0,!0)),o._oldTable=u,u&&!o._changeView||(d.html(b.title(n,l,c,s)),o._table=m=e(b.content(Fe({min:l,max:c,date:n,url:r.url,dates:r.dates,format:r.format,otherMonth:!0,culture:s,disableDates:r.disableDates,isWeekColumnVisible:r.weekNumber,messages:r.messages},o[b.name]))),_(m,b.name),v(m),y=u&&u.data("start")===m.data("start"),o._animate({from:u,to:m,vertical:g,future:f,replace:y}),o.trigger(re),o._focus(n)),i===Pe[r.depth]&&o._selectDates.length>0&&o._visualizeSelectedDatesInView(),"single"===o.options.selectable&&i===Pe[r.depth]&&o._value&&!o.options.disableDates(o._value)&&o._class("k-state-selected",o._value),o._class(ce,n),!u&&o._cell&&o._cell.removeClass(ce),o._changeView=!0},selectDates:function(n){var i,o,r=this;return n===t?r._selectDates:(o=n.map(function(e){return e.getTime()}).filter(function(e,t,n){return n.indexOf(e)===t}).map(function(e){return new Date(e)}),i=e.grep(o,function(e){if(e)return+r._validateValue(new Date(e.setHours(0,0,0,0)))===+e}),r._selectDates=i.length>0?i:0===o.length?o:r._selectDates,r._visualizeSelectedDatesInView(),t)},value:function(e){var n,i=this,o=i._view,r=i._view;return e===t?i._value:(e=i._validateValue(e),e&&i._isMultipleSelection()&&(n=new Date((+e)),n.setHours(0,0,0,0),i._selectDates=[n],i.selectable._lastActive=null),o&&null===e&&i._cell?i._cell.removeClass(ve):(i._changeView=!e||r&&0!==r.compare(e,i._current),i.navigate(e)),t)},_validateValue:function(e){var n=this,i=n.options,o=i.min,r=i.max;return null===e&&(n._current=f(n._current.getFullYear(),n._current.getMonth(),n._current.getDate())),e=R(e,i.format,i.culture),null!==e&&(e=new Re((+e)),s(e,o,r)||(e=null)),null!==e&&n.options.disableDates(new Date((+e)))?n._value===t&&(n._value=null):n._value=e,n._value},_visualizeSelectedDatesInView:function(){var t,n=this,i={};e.each(n._selectDates,function(e,t){i[A.calendar.views[0].toDateString(t)]=t}),n.selectable.clear(),t=n._table.find(fe).filter(function(t,n){return i[e(n.firstChild).attr(A.attr(ae))]}),t.length>0&&n.selectable._selectElement(t,!0)},_isMultipleSelection:function(){var e=this;return"multiple"===e.options.selectable},_selectable:function(){var e,t,n=this;n._isMultipleSelection()&&(e=n.options.selectable,t=B.parseOptions(e),t.multiple&&n.element.attr("aria-multiselectable","true"),n.selectable=new B(n.wrapper,{aria:!0,inputSelectors:"input,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up",multiple:t.multiple,filter:"table.k-month:eq(0) "+ge,change:Me(n._onSelect,n),relatedTarget:Me(n._onRelatedTarget,n)}))},_onRelatedTarget:function(e){var t=this;t.selectable.options.multiple&&e.is(ge)&&(t._current=T(e.find("a")),t._class(ce,T(e.find("a"))))},_onSelect:function(n){var i=this,o=n,r=B.parseOptions(i.options.selectable);return r.multiple?(o.event.ctrlKey||o.event.metaKey?e(o.event.currentTarget).is(ge)?i._toggleSelection(e(o.event.currentTarget)):(i._cellsBySelector(ge).each(function(t,n){var o=T(e(n).find("a"));i._deselect(o)}),i._addSelectedCellsToArray()):o.event.shiftKey?i._rangeSelection(i._cell):e(o.event.currentTarget).is(fe)?i.value(T(e(o.event.currentTarget).find("a"))):(i._selectDates=[],i._addSelectedCellsToArray()),i.trigger(oe),t):(e(o.event.currentTarget).is("td")&&!e(o.event.currentTarget).hasClass("k-state-selected")?e(o.event.currentTarget).addClass("k-state-selected"):i._click(e(o.event.currentTarget).find("a")),t)},_destroySelectable:function(){var e=this;e.selectable&&(e.selectable.destroy(),e.selectable=null)},_toggleSelection:function(e){var t=this,n=T(e.find("a"));e.hasClass("k-state-selected")?t._selectDates.push(n):t._deselect(n)},_rangeSelection:function(e,t){var n,i=this,o=t||T(i.selectable.value().first().find("a")),r=T(e.find("a"));i.selectable._lastActive||i._value?o=i.selectable._lastActive?T(i.selectable._lastActive.find("a")):new Date((+i._value)):i.selectable._lastActive=t?i._cellByDate(i._view.toDateString(t),ge):i.selectable.value().first(),i._selectDates=[],n=d(o,r),u(i._selectDates,n,o,i.options.disableDates),i._visualizeSelectedDatesInView()},_cellsBySelector:function(e){var t=this;return t._table.find(e)},_addSelectedCellsToArray:function(){var t=this;t.selectable.value().each(function(n,i){var o=T(e(i.firstChild));t.options.disableDates(o)||t._selectDates.push(o)})},_deselect:function(e){var t=this,n=t._selectDates.map(Number).indexOf(+e);n!=-1&&t._selectDates.splice(n,1)},_dateInView:function(e){var t=this,n=T(t._cellsBySelector(ge+":first").find("a")),i=T(t._cellsBySelector(ge+":last").find("a"));return+e<=+i&&+e>=+n},_isNavigatable:function(e,t){var n,i,o=this,r=o.options.disableDates;return"month"==o._view.name?!r(e):(i=o.wrapper.find("."+ce).index(),n=o.wrapper.find(".k-content td:eq("+(i+t)+")"),n.is(ge)||!r(e))},_move:function(n){var i,o,r,l,c,d=this,u=d.options,h=n.keyCode,p=d._view,g=d._index,m=d.options.min,v=d.options.max,_=new Re((+d._current)),b=A.support.isRtl(d.wrapper),w=d.options.disableDates;return n.target===d._table[0]&&(d._active=!0),h==F.RIGHT&&!b||h==F.LEFT&&b?(i=1,o=!0):h==F.LEFT&&!b||h==F.RIGHT&&b?(i=-1,o=!0):h==F.UP?(i=0===g?-7:-4,o=!0):h==F.DOWN?(i=0===g?7:4,o=!0):h==F.SPACEBAR?(i=0,o=!0):h!=F.HOME&&h!=F.END||(r=h==F.HOME?"first":"last",l=p[r](_),_=new Re(l.getFullYear(),l.getMonth(),l.getDate(),_.getHours(),_.getMinutes(),_.getSeconds(),_.getMilliseconds()),_.setFullYear(l.getFullYear()),o=!0),n.ctrlKey||n.metaKey?h==F.RIGHT&&!b||h==F.LEFT&&b?(d.navigateToFuture(),o=!0):h==F.LEFT&&!b||h==F.RIGHT&&b?(d.navigateToPast(),o=!0):h==F.UP?(d.navigateUp(),o=!0):h==F.DOWN?(d._click(e(d._cell[0].firstChild)),o=!0):h!=F.ENTER&&h!=F.SPACEBAR||!d._isMultipleSelection()||(d._keyboardToggleSelection(n),c=T(e(d._cell[0]).find("a")),d._class(ce,c)):n.shiftKey?(i!==t||r)&&(r||p.setDate(_,i),s(_,m,v)||(_=a(_,u.min,u.max)),w(_)&&(_=d._nextNavigatable(_,i)),m=f(m.getFullYear(),m.getMonth(),m.getDate()),d._isMultipleSelection()?d._keyboardRangeSelection(n,_):d._focus(_)):(h==F.ENTER||h==F.SPACEBAR?("month"==p.name&&d._isMultipleSelection()?(d.value(T(e(d._cell.find("a")))),d.selectable._lastActive=e(d._cell[0]),d.trigger(oe)):d._click(e(d._cell[0].firstChild)),o=!0):h==F.PAGEUP?(o=!0,d.navigateToPast()):h==F.PAGEDOWN&&(o=!0,d.navigateToFuture()),(i||r)&&(r||p.setDate(_,i),m=f(m.getFullYear(),m.getMonth(),m.getDate()),s(_,m,v)||(_=a(_,u.min,u.max)),d._isNavigatable(_,i)||(_=d._nextNavigatable(_,i)),d._isMultipleSelection()?d._dateInView(_)?(d._current=_,d._class(ce,_)):d.navigate(_):d._focus(_))),o&&n.preventDefault(),d._current},_keyboardRangeSelection:function(e,n){var i,o,r=this;return r._dateInView(n)?(r.selectable.options.filter=r.wrapper.find("table").length>1&&+n>+r._current?"table.k-month:eq(1) "+ge:"table.k-month:eq(0) "+ge,r._class(ce,n),r._current=n,r._rangeSelection(r._cellByDate(r._view.toDateString(n),ge),n),r.trigger(oe),r.selectable.options.filter="table.k-month:eq(0) "+ge,t):(r._selectDates=[],i=r.selectable._lastActive?T(r.selectable._lastActive.find("a")):n,o=d(i,new Date((+n))),u(r._selectDates,o,i,r.options.disableDates),r.navigate(n),r._current=n,r.selectable._lastActive=r.selectable._lastActive||r._cellByDate(r._view.toDateString(n),ge),r.trigger(oe),t)},_keyboardToggleSelection:function(t){var n=this;t.currentTarget=n._cell[0],n.selectable._lastActive=e(n._cell[0]),e(n._cell[0]).hasClass(ve)?(n.selectable._unselect(e(n._cell[0])),n.selectable.trigger(oe,{event:t})):n.selectable.value(e(n._cell[0]),{event:t})},_nextNavigatable:function(e,t){var n=this,i=!0,o=n._view,r=n.options.min,a=n.options.max,l=n.options.disableDates,c=new Date(e.getTime());for(o.setDate(c,-t);i;){if(o.setDate(e,t),!s(e,r,a)){e=c;break}i=l(e)}return e},_animate:function(e){var t=this,n=e.from,i=e.to,o=t._active,r=t.element.children(".k-calendar-view");n?n.parent().data("animating")?(n.off(K),n.parent().kendoStop(!0,!0).remove(),n.remove(),r.append(i),t._focusView(o)):!n.is(":visible")||t.options.animation===!1||e.replace?(i.insertAfter(n),n.off(K).remove(),t._focusView(o)):t[e.vertical?"_vertical":"_horizontal"](n,i,e.future):(r.append(i),t._bindTable(i))},_horizontal:function(e,t,n){var i=this,o=i._active,r=i.options.animation.horizontal,a=r.effects,s=Y(e);a&&a.indexOf(te)!=-1&&(e.add(t).css({width:s}),e.wrap("<div/>"),i._focusView(o,e),e.parent().css({position:"relative",width:2*s,"float":ee,"margin-left":n?0:-s}),t[n?"insertAfter":"insertBefore"](e),Fe(r,{effects:te+":"+(n?"right":ee),complete:function(){e.off(K).remove(),i._oldTable=null,t.unwrap(),i._focusView(o)}}),e.parent().kendoStop(!0,!0).kendoAnimate(r))},_vertical:function(e,t){var n,i,o=this,r=o.options.animation.vertical,a=r.effects,s=o._active;a&&a.indexOf("zoom")!=-1&&(t.insertBefore(e),e.css({position:"absolute",width:t.width()}),V&&(n=o._cellByDate(o._view.toDateString(o._current)),i=n.position(),i=i.left+parseInt(n.width()/2,10)+"px "+(i.top+parseInt(n.height()/2,10)+"px"),t.css(V,i)),e.kendoStop(!0,!0).kendoAnimate({effects:"fadeOut",duration:600,complete:function(){e.off(K).remove(),o._oldTable=null,o._focusView(s)}}),t.kendoStop(!0,!0).kendoAnimate(r))},_cellByDate:function(t,n){return this._table.find(n?n:"td:not(."+de+")").filter(function(){return e(this.firstChild).attr(A.attr(ae))===t})},_class:function(e,t){var n,i=this,o=i._cellID,r=i._cell,a=i._view.toDateString(t);r&&r.length&&(r[0].removeAttribute(Ee),r[0].removeAttribute(Ie),r[0].removeAttribute(J)),t&&"month"==i._view.name&&(n=i.options.disableDates(t)),i._cellsBySelector(i._isMultipleSelection()?fe:"td:not(."+de+")").removeClass(e),r=i._cellByDate(a,"multiple"==i.options.selectable?fe:"td:not(."+de+")").attr(Ee,!0),(e===ce&&!i._active&&i.options.focusOnNav!==!1||n)&&(e=""),r.addClass(e),r[0]&&(i._cell=r),o&&(r.attr(J,o),i._table[0].removeAttribute("aria-activedescendant"),i._table.attr("aria-activedescendant",o))},_bindTable:function(e){e.on(we,this._addClassProxy).on(_e,this._removeClassProxy)},_click:function(e){var t=this,n=t.options,i=new Date((+t._current)),o=T(e);P(o,0),"month"==t._view.name&&t.options.disableDates(o)&&(o=t._value),t._view.setDate(i,o),t.navigateDown(a(i,n.min,n.max))},_focus:function(e){var t=this,n=t._view;0!==n.compare(e,t._current)?t.navigate(e):(t._current=e,t._class(ce,e))},_focusView:function(e,t){e&&this.focus(t)},_viewWrapper:function(){var t=this,n=t.element,i=n.children(".k-calendar-view");i[0]||(i=e("<div class='k-calendar-view' />").insertAfter(n.find(".k-header")))},_footer:function(n){var i=this,o=r(),a=i.element,s=a.find(".k-footer");return n?(s[0]||(s=e('<div class="k-footer"><a href="#" class="k-link k-nav-today"></a></div>').appendTo(a)),i._today=s.show().find(".k-link").html(n(o)).attr("title",A.toString(o,"D",i.options.culture)),i._toggle(),t):(i._toggle(!1),s.hide(),t)},_header:function(){var e,t=this,n=t.element;n.find(".k-header")[0]||n.html('<div class="k-header"><a href="#" role="button" class="k-link k-nav-prev" '+Ie+'="Previous"><span class="k-icon k-i-arrow-60-left"></span></a><a href="#" role="button" aria-live="assertive" aria-atomic="true" class="k-link k-nav-fast"></a><a href="#" role="button" class="k-link k-nav-next" '+Ie+'="Next"><span class="k-icon k-i-arrow-60-right"></span></a></div>'),e=n.find(".k-link").on(ye+" "+xe+" "+we+" "+_e,h).on("click",function(){return!1}),t._title=e.eq(1).on(Q,function(){t._active=t.options.focusOnNav!==!1,t.navigateUp()}),t[Te]=e.eq(0).on(Q,function(){t._active=t.options.focusOnNav!==!1,t.navigateToPast()}),t[De]=e.eq(2).on(Q,function(){t._active=t.options.focusOnNav!==!1,t.navigateToFuture()})},_navigate:function(e,t){var n,i=this,o=i._index+1,r=new Re((+i._current));i._isMultipleSelection()&&(n=i._table.find("td:not(.k-other-month):not(.k-out-of-range)").has(".k-link").first(),r=T(n.find("a")),i._current=new Date((+r))),e=i[e],e.hasClass(le)||(o>3?r.setFullYear(r.getFullYear()+100*t):D.views[o].setDate(r,t),i.navigate(r))},_option:function(e,n){var i,o=this,r=o.options,a=o._value||o._current;return n===t?r[e]:(n=R(n,r.format,r.culture),n&&(r[e]=new Re((+n)),i=e===Z?n>a:a>n,(i||k(a,n))&&(i&&(o._value=null),o._changeView=!0),o._changeView||(o._changeView=!(!r.month.content&&!r.month.empty)),o.navigate(o._value),o._toggle()),t)},_toggle:function(e){var n=this,i=n.options,o=n.options.disableDates(r()),a=n._today;e===t&&(e=s(r(),i.min,i.max)), +a&&(a.off(Q),e&&!o?a.addClass(pe).removeClass(le).on(Q,Me(n._todayClick,n)):a.removeClass(pe).addClass(le).on(Q,p))},_todayClick:function(e){var t=this,n=Pe[t.options.depth],i=t.options.disableDates,o=r();e.preventDefault(),i(o)||(0===t._view.compare(t._current,o)&&t._index==n&&(t._changeView=!1),t._isMultipleSelection()&&(t._selectDates=[o],t.selectable._lastActive=null),t._value=o,t.navigate(o,n),t.trigger(oe))},_templates:function(){var e=this,t=e.options,n=t.footer,i=t.month,o=i.content,r=i.weekNumber,a=i.empty,s='#= kendo.toString(data,"D","'+t.culture+'") #';e.month={content:H('<td#=data.cssClass# role="gridcell"><a tabindex="-1" class="k-link#=data.linkClass#" href="#=data.url#" '+A.attr(ae)+'="#=data.dateString#" title="#=data.title#">'+(o||"#=data.value#")+"</a></td>",{useWithBlock:!!o}),empty:H('<td role="gridcell">'+(a||" ")+"</td>",{useWithBlock:!!a}),weekNumber:H('<td class="k-alt">'+(r||"#= data.weekNumber #")+"</td>",{useWithBlock:!!r})},n&&n!==!0&&(s=n),e.footer=n!==!1?H(s,{useWithBlock:!1}):null}});I.plugin(ze),D={firstDayOfMonth:function(e){return f(e.getFullYear(),e.getMonth(),1)},firstVisibleDay:function(e,t){t=t||A.culture().calendar;var n=t.firstDay,i=new Re(e.getFullYear(),e.getMonth(),1,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds());for(i.setFullYear(e.getFullYear());i.getDay()!=n;)D.setTime(i,-1*Se);return i},setTime:function(e,t){var n=e.getTimezoneOffset(),i=new Re(e.getTime()+t),o=i.getTimezoneOffset()-n;e.setTime(i.getTime()+o*Ce)},views:[{name:ne,title:function(e,t,n,i){return g(i).months.names[e.getMonth()]+" "+e.getFullYear()},content:function(e){var t=this,n=0,o=e.min,a=e.max,s=e.date,c=e.dates,d=e.format,u=e.culture,h=e.url,p=e.showHeader,m=e.otherMonth,v=e.isWeekColumnVisible,_=h&&c[0],w=g(u),k=w.firstDay,y=w.days,x=l(y.names,k),C=l(y.namesShort,k),S=D.firstVisibleDay(s,w),T=t.first(s),E=t.last(s),I=t.toDateString,M=r(),F='<table tabindex="0" role="grid" class="k-content" cellspacing="0" data-start="'+I(S)+'">';for(F+=p?'<caption class="k-month-header">'+this.title(s,o,a,u)+'</caption><thead><tr role="row">':'<thead><tr role="row">',v&&(F+='<th scope="col" class="k-alt">'+e.messages.weekColumnHeader+"</th>");n<7;n++)F+='<th scope="col" title="'+x[n]+'">'+C[n]+"</th>";return P(M,0),M=+M,i({cells:42,perRow:7,html:F+='</tr></thead><tbody><tr role="row">',start:S,isWeekColumnVisible:v,weekNumber:e.weekNumber,min:f(o.getFullYear(),o.getMonth(),o.getDate()),max:f(a.getFullYear(),a.getMonth(),a.getDate()),otherMonth:m,content:e.content,lastDayOfMonth:E,empty:e.empty,setter:t.setDate,disableDates:e.disableDates,build:function(e,t,n){var i=[],o=e.getDay(),r="",a="#";return(e<T||e>E)&&i.push(de),n(e)&&i.push(le),+e===M&&i.push("k-today"),0!==o&&6!==o||i.push("k-weekend"),_&&b(+e,c)&&(a=h.replace("{0}",A.toString(e,d,u)),r=" k-action-link"),{date:e,dates:c,ns:A.ns,title:A.toString(e,"D",u),value:e.getDate(),dateString:I(e),cssClass:i[0]?' class="'+i.join(" ")+'"':"",linkClass:r,url:a}},weekNumberBuild:function(e){return{weekNumber:z(e,A.culture().calendar.firstDay),currentDate:e}}})},first:function(e){return D.firstDayOfMonth(e)},last:function(e){var t=f(e.getFullYear(),e.getMonth()+1,0),n=D.firstDayOfMonth(e),i=Math.abs(t.getTimezoneOffset()-n.getTimezoneOffset());return i&&t.setHours(n.getHours()+i/60),t},compare:function(e,t){var n,i=e.getMonth(),o=e.getFullYear(),r=t.getMonth(),a=t.getFullYear();return n=o>a?1:o<a?-1:i==r?0:i>r?1:-1},setDate:function(e,t){var n=e.getHours();t instanceof Re?e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()):D.setTime(e,t*Se),P(e,n)},toDateString:function(e){return e.getFullYear()+"/"+e.getMonth()+"/"+e.getDate()}},{name:"year",title:function(e){return e.getFullYear()},content:function(e){var t=g(e.culture).months.namesAbbr,n=this.toDateString,o=e.min,r=e.max,a="";return e.showHeader&&(a+='<table tabindex="0" role="grid" class="k-content k-meta-view" cellspacing="0"><caption class="k-meta-header">',a+=this.title(e.date),a+='</caption><tbody><tr role="row">'),i({min:f(o.getFullYear(),o.getMonth(),1),max:f(r.getFullYear(),r.getMonth(),1),start:f(e.date.getFullYear(),0,1),html:a,setter:this.setDate,build:function(e){return{value:t[e.getMonth()],ns:A.ns,dateString:n(e),cssClass:""}}})},first:function(e){return f(e.getFullYear(),0,e.getDate())},last:function(e){return f(e.getFullYear(),11,e.getDate())},compare:function(e,t){return o(e,t)},setDate:function(e,t){var n,i=e.getHours();t instanceof Re?(n=t.getMonth(),e.setFullYear(t.getFullYear(),n,e.getDate()),n!==e.getMonth()&&e.setDate(0)):(n=e.getMonth()+t,e.setMonth(n),n>11&&(n-=12),n>0&&e.getMonth()!=n&&e.setDate(0)),P(e,i)},toDateString:function(e){return e.getFullYear()+"/"+e.getMonth()+"/1"}},{name:"decade",title:function(e,t,i){return n(e,t,i,10)},content:function(e){var t=e.date.getFullYear(),n=this.toDateString,o="";return e.showHeader&&(o+='<table tabindex="0" role="grid" class="k-content k-meta-view" cellspacing="0"><caption class="k-meta-header">',o+=this.title(e.date,e.min,e.max),o+='</caption><tbody><tr role="row">'),i({start:f(t-t%10-1,0,1),min:f(e.min.getFullYear(),0,1),max:f(e.max.getFullYear(),0,1),otherMonth:e.otherMonth,html:o,setter:this.setDate,build:function(e,t){return{value:e.getFullYear(),ns:A.ns,dateString:n(e),cssClass:0===t||11==t?ue:""}}})},first:function(e){var t=e.getFullYear();return f(t-t%10,e.getMonth(),e.getDate())},last:function(e){var t=e.getFullYear();return f(t-t%10+9,e.getMonth(),e.getDate())},compare:function(e,t){return o(e,t,10)},setDate:function(e,t){c(e,t,1)},toDateString:function(e){return e.getFullYear()+"/0/1"}},{name:ie,title:function(e,t,i){return n(e,t,i,100)},content:function(e){var t=e.date.getFullYear(),n=e.min.getFullYear(),o=e.max.getFullYear(),r=this.toDateString,a=n,s=o,l="";return a-=a%10,s-=s%10,s-a<10&&(s=a+9),e.showHeader&&(l+='<table tabindex="0" role="grid" class="k-content k-meta-view" cellspacing="0"><caption class="k-meta-header">',l+=this.title(e.date,e.min,e.max),l+='</caption><tbody><tr role="row">'),i({start:f(t-t%100-10,0,1),min:f(a,0,1),max:f(s,0,1),otherMonth:e.otherMonth,html:l,setter:this.setDate,build:function(e,t){var i=e.getFullYear(),a=i+9;return i<n&&(i=n),a>o&&(a=o),{ns:A.ns,value:i+" - "+a,dateString:r(e),cssClass:0===t||11==t?ue:""}}})},first:function(e){var t=e.getFullYear();return f(t-t%100,e.getMonth(),e.getDate())},last:function(e){var t=e.getFullYear();return f(t-t%100+99,e.getMonth(),e.getDate())},compare:function(e,t){return o(e,t,100)},setDate:function(e,t){c(e,t,10)},toDateString:function(e){var t=e.getFullYear();return t-t%10+"/0/1"}}]},D.isEqualDatePart=w,D.isEqualDate=S,D.makeUnselectable=v,D.restrictValue=a,D.isInRange=s,D.addClassToViewContainer=_,D.normalize=m,D.viewsEnum=Pe,D.disabled=y,D.toDateObject=T,D.getToday=r,D.createDate=f,A.calendar=D}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dateinput.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(e,t,n,i){var o,r,a,s,l=e[i+e.length-n.length];if(e=e.substring(0,i+e.length-n.length),n=n.substring(0,i),o=[],e===n&&i>0)return o.push([t[i-1],n[i-1]]),o;if(0===e.indexOf(n)&&(0===n.length||t[n.length-1]!==t[n.length])){for(a="",r=n.length;r<e.length;r++)t[r]!==a&&w.indexOf(t[r])>=0&&(a=t[r],o.push([a,""]));return o}if(" "===n[n.length-1]||n[n.length-1]===l)return[[t[i-1]," "]];if(0===n.indexOf(e)||w.indexOf(t[i-1])===-1){for(s=t[0],r=Math.max(0,e.length-1);r<t.length;r++)if(w.indexOf(t[r])>=0){s=t[r];break}return[[s,n[i-1]]]}return[[t[i-1],n[i-1]]]}var i,o=window,r=o.kendo,a=r.caret,s=r.ui,l=s.Widget,c=r.keys,d=".kendoDateInput",u=e.proxy,h={}.toString,p=(r.support.propertyChangeEvent?"propertychange.kendoDateInput input":"input")+d,f="k-state-disabled",g="k-state-default",m="k-state-invalid",v="disabled",_="readonly",b="change",w="dMyHhmftsz",k=l.extend({init:function(t,n){var i,o,a=this;l.fn.init.call(a,t,n),t=a.element,n=a.options,n.format=r._extractFormat(n.format||r.getCulture(n.culture).calendars.standard.patterns.d),n.min=r.parseDate(t.attr("min"))||r.parseDate(n.min),n.max=r.parseDate(t.attr("max"))||r.parseDate(n.max),i=(t.parent().attr("class")||"").indexOf("k-picker-wrap")>=0,i?a.wrapper=t.parent():(a.wrapper=t.wrap("<span class='k-widget k-dateinput'></span>").parent(),a.wrapper.addClass(t[0].className),a.wrapper[0].style.cssText=t[0].style.cssText,t.css({width:"100%",height:t[0].style.height})),a._inputWrapper=e(a.wrapper[0]),e("<span class='k-icon k-i-warning'></span>").insertAfter(t),a._form(),a.element.addClass(i?" ":"k-textbox").attr("autocomplete","off").on("focusout"+d,function(){a._change()});try{t[0].setAttribute("type","text")}catch(s){t[0].type="text"}o=t.is("[disabled]")||e(a.element).parents("fieldset").is(":disabled"),o?a.enable(!1):a.readonly(t.is("[readonly]")),a.value(a.options.value||t.val()),r.notify(a)},options:{name:"DateInput",culture:"",value:"",format:"",min:new Date(1900,0,1),max:new Date(2099,11,31),messages:{year:"year",month:"month",day:"day",weekday:"day of the week",hour:"hours",minute:"minutes",second:"seconds",dayperiod:"AM/PM"}},events:[b],min:function(e){return e===t?this.options.min:(this.options.min=e,t)},max:function(e){return e===t?this.options.max:(this.options.max=e,t)},setOptions:function(e){var t=this;l.fn.setOptions.call(t,e),this._unbindInput(),this._bindInput(),this._updateElementValue()},destroy:function(){var e=this;e.element.off(d),e._formElement&&e._formElement.off("reset",e._resetHandler),l.fn.destroy.call(e)},value:function(e){return e===t?this._dateTime.getDateObject():(null===e&&(e=""),"[object Date]"!==h.call(e)&&(e=r.parseDate(e,this.options.format,this.options.culture)),e&&!e.getTime()&&(e=null),this._dateTime=new i(e,this.options.format,this.options.culture,this.options.messages),this._updateElementValue(),this._oldValue=e,t)},_updateElementValue:function(){var e=this._dateTime.toPair(this.options.format,this.options.culture,this.options.messages);this.element.val(e[0]),this._oldText=e[0],this._format=e[1]},readonly:function(e){this._editable({readonly:e===t||e,disable:!1})},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t||e)})},_bindInput:function(){var e=this;e.element.on("focusout"+d,function(){e._change()}).on("paste"+d,u(e._paste,e)).on("keydown"+d,u(e._keydown,e)).on(p,u(e._input,e)).on("mouseup"+d,u(e._mouseUp,e)).on("DOMMouseScroll"+d+" mousewheel"+d,u(e._scroll,e))},_unbindInput:function(){this.element.off("keydown"+d).off("paste"+d).off("focusout"+d).off(p).off("mouseup"+d).off("DOMMouseScroll"+d+" mousewheel"+d)},_editable:function(e){var t=this,n=t.element,i=e.disable,o=e.readonly,r=t.wrapper;t._unbindInput(),o||i?(i&&(r.addClass(f).removeClass(g),n.attr(v,i),n&&n.length&&n[0].removeAttribute(_)),o&&n.attr(_,o)):(r.addClass(g).removeClass(f),n&&n.length&&(n[0].removeAttribute(v),n[0].removeAttribute(_)),t._bindInput())},_change:function(){var e=this,t=e._oldValue,n=e.value();n&&e.min()&&n<e.min()&&(e.value(e.min()),n=e.value()),n&&e.max()&&n>e.max()&&(e.value(e.max()),n=e.value()),(t&&n&&n.getTime()!==t.getTime()||t&&!n||!t&&n)&&(e._oldValue=n,e.trigger(b),e.element.trigger(b))},_input:function(){var e,t,i,o,s,l,c,d=this,u=d.element[0],h=!1;if(r._activeElement()===u){if(e=n(this._oldText,this._format,this.element[0].value,a(this.element[0])[0]),t=1===e.length&&" "===e[0][1],!t)for(i=0;i<e.length;i++)o=this._dateTime.parsePart(e[i][0],e[i][1]),h=h||!o;this._updateElementValue(),e.length&&" "!==e[0][0]&&(this._selectSegment(e[0][0]),t||(s=e[0][0],setTimeout(function(){d._selectSegment(s)}))),t&&(l={keyCode:39,preventDefault:function(){}},this._keydown(l)),h&&(clearTimeout(d._blinkInvalidTimeout),c=m,d.wrapper.addClass(m),d._blinkInvalidTimeout=setTimeout(function(){d.wrapper.removeClass(c)},100))}},_mouseUp:function(){var e=a(this.element[0]);e[0]===e[1]&&this._selectNearestSegment()},_scroll:function(e){if(r._activeElement()===this.element[0]&&!this.element.is("[readonly]")){e=window.event||e;var t={keyCode:37,preventDefault:function(){}};t.keyCode=e.shiftKey?(e.wheelDelta||-e.detail)>0?37:39:(e.wheelDelta||-e.detail)>0?38:40,this._keydown(t),e.returnValue=!1,e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()}},_form:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){setTimeout(function(){t.value(n[0].value)})},t._formElement=o.on("reset",t._resetHandler))},_paste:function(e){e.preventDefault()},_keydown:function(e){var t,n,i,o,s,l,d,u=e.keyCode;if(37==u||39==u)for(e.preventDefault(),t=a(this.element[0]),t[0]!=t[1]&&this._selectNearestSegment(),n=37==u?-1:1,i=n==-1?a(this.element[0])[0]-1:a(this.element[0])[1]+1;i>=0&&i<this._format.length;){if(w.indexOf(this._format[i])>=0){this._selectSegment(this._format[i]);break}i+=n}38!=u&&40!=u||(e.preventDefault(),t=a(this.element[0]),o=this._format[t[0]],w.indexOf(o)>=0&&(s=1,"m"==o&&(s=this.options.interval||1),this._dateTime.modifyPart(o,38==u?1*s:s*-1),this._updateElementValue(),this._selectSegment(o),this.element.trigger(b))),r.support.browser.msie&&r.support.browser.version<10&&(l=e.keyCode?e.keyCode:e.which,8!==l&&46!==l||(d=this,setTimeout(function(){d._input()},0))),u===c.ENTER&&this._change()},_selectNearestSegment:function(){var e,n,i=a(this.element[0]),o=i[0];for(e=o,n=o-1;e<this._format.length||n>=0;e++,n--){if(e<this._format.length&&w.indexOf(this._format[e])!==-1)return this._selectSegment(this._format[e]),t;if(n>=0&&w.indexOf(this._format[n])!==-1)return this._selectSegment(this._format[n]),t}},_selectSegment:function(e){var t,n=-1,i=0;for(t=0;t<this._format.length;t++)this._format[t]===e&&(i=t+1,n===-1&&(n=t));n<0&&(n=0),a(this.element,n,i)}});s.plugin(k),i=function(e,n,i,o){function a(e,t,n){return e+="",t=t||2,n=t-e.length,n?y[t].substring(0,n)+e:e}function s(e){return D=e,A}function l(e,t){switch(e){case"y":h=t;break;case"M":p=t,t||(u.setMonth(0),b="");break;case"d":f=t;break;case"H":case"h":g=t,t||(w="");break;case"m":m=t;break;case"s":v=t;break;default:return}}var c,d,u=null,h=!0,p=!0,f=!0,g=!0,m=!0,v=!0,_=!0,b="",w="",k={},y=["","0","00","000","0000"],x=/dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|"[^"]*"|'[^']*'/g,C=null,S=null,T=null,D=!1,A=function(e){var n,i,o,r,s;switch(e){case"d":o=f?u.getDate():k.day;break;case"dd":o=f?a(u.getDate()):k.day;break;case"ddd":o=f&&p&&h?T.namesAbbr[u.getDay()]:k.weekday;break;case"dddd":o=f&&p&&h?T.names[u.getDay()]:k.weekday;break;case"M":o=p?u.getMonth()+1:k.month;break;case"MM":o=p?a(u.getMonth()+1):k.month;break;case"MMM":o=p?C.namesAbbr[u.getMonth()]:k.month;break;case"MMMM":o=p?C.names[u.getMonth()]:k.month;break;case"yy":o=h?a(u.getFullYear()%100):k.year;break;case"yyyy":o=h?a(u.getFullYear(),4):k.year;break;case"h":o=g?u.getHours()%12||12:k.hour;break;case"hh":o=g?a(u.getHours()%12||12):k.hour;break;case"H":o=g?u.getHours():k.hour;break;case"HH":o=g?a(u.getHours()):k.hour;break;case"m":o=m?u.getMinutes():k.minute;break;case"mm":o=m?a(u.getMinutes()):k.minute;break;case"s":o=v?u.getSeconds():k.second;break;case"ss":o=v?a(u.getSeconds()):k.second;break;case"f":o=_?Math.floor(u.getMilliseconds()/100):_;break;case"ff":o=u.getMilliseconds(),o>99&&(o=Math.floor(o/10)),o=_?a(o):e;break;case"fff":o=_?a(u.getMilliseconds(),3):e;break;case"tt":o=g?u.getHours()<12?S.AM[0]:S.PM[0]:k.dayperiod;break;case"zzz":n=u.getTimezoneOffset(),i=n<0,o=(""+Math.abs(n/60)).split(".")[0],n=Math.abs(n)-60*o,o=(i?"+":"-")+a(o),o+=":"+a(n);break;case"z":case"zz":o=u.getTimezoneOffset()/60,i=o<0,o=(""+Math.abs(o)).split(".")[0],o=(i?"+":"-")+("zz"===e?a(o):o)}if(o=o!==t?o:e.slice(1,e.length-1),D){for(o=""+o,r="","ddd"==e&&(e="EEE"),"dddd"==e&&(e="EEEE"),s=0;s<o.length;s++)r+=e[0];return r}return o};if(this.setValue=function(e){f=e},this.getValue=function(){return f},this.modifyPart=function(e,t){var n,i=new Date(u&&u.getTime?u.getTime():u);switch(e){case"y":i.setFullYear(i.getFullYear()+t);break;case"M":n=i.getMonth()+t,i.setMonth(n),i.getMonth()%12!==(n+12)%12&&(i.setDate(1),i.setMonth(n));break;case"d":case"E":i.setDate(i.getDate()+t);break;case"H":case"h":i.setHours(i.getHours()+t);break;case"m":i.setMinutes(i.getMinutes()+t);break;case"s":i.setSeconds(i.getSeconds()+t);break;case"t":i.setHours((i.getHours()+12)%24)}i.getFullYear()>0&&(l(e,!0),u=i)},this.parsePart=function(e,t){var n,i,o,r,a,s,c,d,_;if(!t)return l(e,!1),!0;switch(n=new Date(u&&u.getTime?u.getTime():u),e){case"d":if(o=(f?10*n.getDate():0)+parseInt(t,10),isNaN(o))return;for(;o>31;)o=parseInt((""+o).slice(1),10);if(o<1)f=!1;else{if(n.setDate(o),n.getMonth()!==u.getMonth())return;f=!0}break;case"M":if(r=(p?10*(n.getMonth()+1):0)+parseInt(t,10),isNaN(r)){for(a=S.months.names,b+=t.toLowerCase();b.length>0;){for(s=0;s<a.length;s++)if(0===a[s].toLowerCase().indexOf(b))return n.setMonth(s),p=!0,u=n,!0;b=b.substring(1,b.length)}return!1}for(;r>12;)r=parseInt((""+r).slice(1),10);r<1?p=!1:(n.setMonth(r-1),n.getMonth()!==r-1&&(n.setDate(1),n.setMonth(r-1)),p=!0);break;case"y":if(c=(h?10*n.getFullYear():0)+parseInt(t,10),isNaN(c))return;for(;c>9999;)c=parseInt((""+c).slice(1),10);c<1?h=!1:(n.setFullYear(c),h=!0);break;case"h":if(i=(g?10*(n.getHours()%12||12):0)+parseInt(t,10),isNaN(i))return;for(;i>12;)i=parseInt((""+i).slice(1),10);n.setHours(12*Math.floor(n.getHours()/12)+i%12),g=!0;break;case"H":if(i=(g?10*n.getHours():0)+parseInt(t,10),isNaN(i))return;for(;i>23;)i=parseInt((""+i).slice(1),10);n.setHours(i),g=!0;break;case"m":if(d=(m?10*n.getMinutes():0)+parseInt(t,10),isNaN(d))return;for(;d>59;)d=parseInt((""+d).slice(1),10);n.setMinutes(d),m=!0;break;case"s":if(_=(v?10*n.getSeconds():0)+parseInt(t,10),isNaN(_))return;for(;_>59;)_=parseInt((""+_).slice(1),10);n.setSeconds(_),v=!0;break;case"t":if(g){for(w+=t.toLowerCase();w.length>0;){if(0===S.AM[0].toLowerCase().indexOf(w)&&n.getHours()>=12||0===S.PM[0].toLowerCase().indexOf(w)&&n.getHours()<12)return n.setHours((n.getHours()+12)%24),u=n,!0;w=w.substring(1,w.length)}return!1}}return u=n,!0},this.toPair=function(e,t,n){return e?(t=r.getCulture(t),S=t.calendars.standard,e=S.patterns[e]||e,T=S.days,C=S.months,k=n,[e.replace(x,s(!1)),e.replace(x,s(!0))]):["",""]},this.getDateObject=function(){return h&&p&&f&&g&&m&&v&&_?new Date(u.getTime()):null},e)u=new Date(e.getTime());else for(u=new Date,c=this.toPair(n,i,o)[1],d=0;d<c.length;d++)l(c[d],!1)}}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.datepicker.min",["kendo.calendar.min","kendo.popup.min","kendo.dateinput.min"],e)}(function(){return function(e,t){function n(t){var n=t.parseFormats,i=t.format;L.normalize(t),n=e.isArray(n)?n:[n],n.length||n.push("yyyy-MM-dd"),e.inArray(i,n)===-1&&n.splice(0,0,t.format),t.parseFormats=n}function i(e){e.preventDefault()}var o,r=window.kendo,a=r.ui,s=a.Widget,l=r.parseDate,c=r.keys,d=r.support,u=r.template,h=r._activeElement,p="<div />",f="<span />",g=".kendoDatePicker",m="click"+g,v=d.mouseAndTouchPresent?r.applyEventMap("up",g.slice(1)):m,_="open",b="close",w="change",k="disabled",y="readonly",x="k-state-default",C="k-state-focused",S="k-state-selected",T="k-state-disabled",D="k-state-hover",A="mouseenter"+g+" mouseleave"+g,E="mousedown"+g,I="id",M="min",F="max",R="month",P="aria-disabled",z="aria-expanded",B="aria-hidden",L=r.calendar,H=L.isInRange,N=L.restrictValue,O=L.isEqualDatePart,V=e.extend,W=e.proxy,U=Date,q=function(t){var n,i=this,o=document.body,s=e(p).attr(B,"true").addClass("k-calendar-container").appendTo(o);i.options=t=t||{},n=t.id,n&&(n+="_dateview",s.attr(I,n),i._dateViewID=n),i.popup=new a.Popup(s,V(t.popup,t,{name:"Popup",isRtl:r.support.isRtl(t.anchor)})),i.div=s,i.value(t.value)};q.prototype={_calendar:function(){var t,n=this,o=n.calendar,s=n.options;o||(t=e(p).attr(I,r.guid()).appendTo(n.popup.element).on(E,i).on(m,"td:has(.k-link)",W(n._click,n)),n.calendar=o=new a.Calendar(t),n._setOptions(s),r.calendar.makeUnselectable(o.element),o.navigate(n._value||n._current,s.start),n.value(n._value))},_setOptions:function(e){this.calendar.setOptions({focusOnNav:!1,change:e.change,culture:e.culture,dates:e.dates,depth:e.depth,footer:e.footer,format:e.format,max:e.max,min:e.min,month:e.month,weekNumber:e.weekNumber,start:e.start,disableDates:e.disableDates})},setOptions:function(e){var t=this.options,n=e.disableDates;n&&(e.disableDates=L.disabled(n)),this.options=V(t,e,{change:t.change,close:t.close,open:t.open}),this.calendar&&this._setOptions(this.options)},destroy:function(){this.popup.destroy()},open:function(){var e,t=this;t._calendar(),e=t.popup._hovered,t.popup._hovered=!0,t.popup.open(),setTimeout(function(){t.popup._hovered=e},1)},close:function(){this.popup.close()},min:function(e){this._option(M,e)},max:function(e){this._option(F,e)},toggle:function(){var e=this;e[e.popup.visible()?b:_]()},move:function(e){var t=this,n=e.keyCode,i=t.calendar,o=e.ctrlKey&&n==c.DOWN||n==c.ENTER,r=!1;if(e.altKey)n==c.DOWN?(t.open(),e.preventDefault(),r=!0):n==c.UP&&(t.close(),e.preventDefault(),r=!0);else if(t.popup.visible()){if(n==c.ESC||o&&i._cell.hasClass(S))return t.close(),e.preventDefault(),!0;n!=c.SPACEBAR&&(t._current=i._move(e)),r=!0}return r},current:function(e){this._current=e,this.calendar._focus(e)},value:function(e){var t=this,n=t.calendar,i=t.options,o=i.disableDates;o&&o(e)&&(e=null),t._value=e,t._current=new U((+N(e,i.min,i.max))),n&&n.value(e)},_click:function(e){e.currentTarget.className.indexOf(S)!==-1&&(this.calendar.trigger("change"),this.close())},_option:function(e,t){var n=this,i=n.calendar;n.options[e]=t,i&&i[e](t)}},q.normalize=n,r.DateView=q,o=s.extend({init:function(t,i){var o,a,c=this;s.fn.init.call(c,t,i),t=c.element,i=c.options,i.disableDates=r.calendar.disabled(i.disableDates),i.min=l(t.attr("min"))||l(i.min),i.max=l(t.attr("max"))||l(i.max),n(i),c._initialOptions=V({},i),c._wrapper(),c.dateView=new q(V({},i,{id:t.attr(I),anchor:c.wrapper,change:function(){c._change(this.value()),c.close()},close:function(e){c.trigger(b)?e.preventDefault():(t.attr(z,!1),a.attr(B,!0))},open:function(e){var n,i=c.options;c.trigger(_)?e.preventDefault():(c.element.val()!==c._oldText&&(n=l(t.val(),i.parseFormats,i.culture),c.dateView[n?"current":"value"](n)),t.attr(z,!0),a.attr(B,!1),c._updateARIA(n))}})),a=c.dateView.div,c._icon();try{t[0].setAttribute("type","text")}catch(d){t[0].type="text"}t.addClass("k-input").attr({role:"combobox","aria-expanded":!1,"aria-owns":c.dateView._dateViewID,autocomplete:"off"}),c._reset(),c._template(),o=t.is("[disabled]")||e(c.element).parents("fieldset").is(":disabled"),o?c.enable(!1):c.readonly(t.is("[readonly]")),c._createDateInput(i),c._old=c._update(i.value||c.element.val()),c._oldText=t.val(),r.notify(c)},events:[_,b,w],options:{name:"DatePicker",value:null,footer:"",format:"",culture:"",parseFormats:[],min:new Date(1900,0,1),max:new Date(2099,11,31),start:R,depth:R,animation:{},month:{},dates:[],disableDates:null,ARIATemplate:'Current focused date is #=kendo.toString(data.current, "D")#',dateInput:!1,weekNumber:!1},setOptions:function(e){var t=this,i=t._value;s.fn.setOptions.call(t,e),e=t.options,e.min=l(e.min),e.max=l(e.max),n(e),t.dateView.setOptions(e),t._createDateInput(e),t._dateInput||t.element.val(r.toString(i,e.format,e.culture)),i&&t._updateARIA(i)},_editable:function(e){var t=this,n=t._dateIcon.off(g),o=t.element.off(g),r=t._inputWrapper.off(g),a=e.readonly,s=e.disable;a||s?(r.addClass(s?T:x).removeClass(s?x:T),o.attr(k,s).attr(y,a).attr(P,s)):(r.addClass(x).removeClass(T).on(A,t._toggleHover),o&&o.length&&(o[0].removeAttribute(k),o[0].removeAttribute(y)),o.attr(P,!1).on("keydown"+g,W(t._keydown,t)).on("focusout"+g,W(t._blur,t)).on("focus"+g,function(){t._inputWrapper.addClass(C)}),n.on(v,W(t._click,t)).on(E,i))},readonly:function(e){this._editable({readonly:e===t||e,disable:!1}),this._dateInput&&this._dateInput._editable({readonly:e===t||e,disable:!1})},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t||e)}),this._dateInput&&this._dateInput._editable({readonly:!1,disable:!(e=e===t||e)})},destroy:function(){var e=this;s.fn.destroy.call(e),e.dateView.destroy(),e.element.off(g),e._dateIcon.off(g),e._inputWrapper.off(g),e._form&&e._form.off("reset",e._resetHandler)},open:function(){this.dateView.open()},close:function(){this.dateView.close()},min:function(e){return this._option(M,e)},max:function(e){return this._option(F,e)},value:function(e){var n=this;return e===t?n._value:(n._old=n._update(e),null===n._old&&n.element.val(""),n._oldText=n.element.val(),t)},_toggleHover:function(t){e(t.currentTarget).toggleClass(D,"mouseenter"===t.type)},_blur:function(){var e=this,t=e.element.val();e.close(),t!==e._oldText&&e._change(t),e._inputWrapper.removeClass(C)},_click:function(e){var t=this;t.dateView.toggle(),t._focusElement(e.type)},_focusElement:function(e){var t=this.element;d.touch&&(!d.mouseAndTouchPresent||(e||"").match(/touch/i))||t[0]===h()||t.trigger("focus")},_change:function(e){var t,n,i,o=this,a=o.element.val();e=o._update(e),t=!r.calendar.isEqualDate(o._old,e),n=t&&!o._typing,i=a!==o.element.val(),(n||i)&&o.element.trigger(w),t&&(o._old=e,o._oldText=o.element.val(),o.trigger(w)),o._typing=!1},_keydown:function(e){var t=this,n=t.dateView,i=t.element.val(),o=!1;n.popup.visible()||e.keyCode!=c.ENTER||i===t._oldText?(o=n.move(e),t._updateARIA(n._current),o?t._dateInput&&e.stopImmediatePropagation&&e.stopImmediatePropagation():t._typing=!0):t._change(i)},_icon:function(){var t,n=this,i=n.element;t=i.next("span.k-select"),t[0]||(t=e('<span unselectable="on" class="k-select" aria-label="select"><span class="k-icon k-i-calendar"></span></span>').insertAfter(i)),n._dateIcon=t.attr({role:"button","aria-controls":n.dateView._dateViewID})},_option:function(e,n){var i=this,o=i.options;return n===t?o[e]:(n=l(n,o.parseFormats,o.culture),n&&(o[e]=new U((+n)),i.dateView[e](n)),t)},_update:function(e){var t,n=this,i=n.options,o=i.min,a=i.max,s=n._value,c=l(e,i.parseFormats,i.culture),d=null===c&&null===s||c instanceof Date&&s instanceof Date;return i.disableDates(c)&&(c=null,n._old||n.element.val()||(e=null)),+c===+s&&d?(t=r.toString(c,i.format,i.culture),t!==e&&n.element.val(null===c?e:t),c):(null!==c&&O(c,o)?c=N(c,o,a):H(c,o,a)||(c=null),n._value=c,n.dateView.value(c),n._dateInput&&c?n._dateInput.value(c||e):n.element.val(r.toString(c||e,i.format,i.culture)),n._updateARIA(c),c)},_wrapper:function(){var t,n=this,i=n.element;t=i.parents(".k-datepicker"),t[0]||(t=i.wrap(f).parent().addClass("k-picker-wrap k-state-default"),t=t.wrap(f).parent()),t[0].style.cssText=i[0].style.cssText,i.css({width:"100%",height:i[0].style.height}),n.wrapper=t.addClass("k-widget k-datepicker").addClass(i[0].className),n._inputWrapper=e(t[0].firstChild)},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){t.value(n[0].defaultValue),t.max(t._initialOptions.max),t.min(t._initialOptions.min)},t._form=o.on("reset",t._resetHandler))},_template:function(){this._ariaTemplate=u(this.options.ARIATemplate)},_createDateInput:function(e){this._dateInput&&(this._dateInput.destroy(),this._dateInput=null),e.dateInput&&(this._dateInput=new a.DateInput(this.element,{culture:e.culture,format:e.format,min:e.min,max:e.max}))},_updateARIA:function(e){var t,n=this,i=n.dateView.calendar;n.element&&n.element.length&&n.element[0].removeAttribute("aria-activedescendant"),i&&(t=i._cell,t.attr("aria-label",n._ariaTemplate({current:e||i.current()})),n.element.attr("aria-activedescendant",t.attr("id")))}}),a.plugin(o)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.drawer.min",["kendo.userevents.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,o=i.Widget,r="show",a="hide",s="itemClick",l="push",c="overlay",d="left",u="right",h=n.ui.Widget.extend({init:function(t,i){var r,a,s=this;o.fn.init.call(this,t,i),i=s.options,s._element(t),s._wrapper(t),s.position(),s._mode(),i.mini&&s._miniMode(),s._initDrawerItems(),i.mini&&i.mode!=l&&s._setBodyOffset(),r=this.userEvents=new n.UserEvents(i.mode!=l?e(document.body):this.drawerContainer,{fastTap:!0,allowSelection:!0}),a=function(t){e.contains(s.drawerItemsWrapper[0],t.event.target)&&s._itemClick(t),s.visible&&!s.trigger("hide",{sender:this})&&(s.hide(),t.preventDefault())},this.options.swipeToOpen?(r.bind("start",function(e){s._start(e)}),r.bind("move",function(e){s._update(e)}),r.bind("end",function(e){s._end(e)}),r.bind("tap",a)):r.bind("press",a),i.minHeight&&i.mode==l&&s.drawerContainer.css("min-height",i.minHeight)},_element:function(){var t=this,n=t.element,i=t.options,o=t.contentElement=n.children().first();t.drawerElement=e(i.template),o.addClass("k-drawer-content"),n.addClass("k-widget k-drawer")},_wrapper:function(){var t=this.options,n=this.drawerElement,i=this.element,o=this.contentElement,r=this.drawerItemsWrapper=n.wrap("<div class='k-drawer-items'></div>").parent(),a=this.drawerWrapper=r.wrap("<div class='k-drawer-wrapper'></div>").parent(),s=this.drawerContainer=i.wrap("<div class='k-drawer-container'></div>").parent();t.mini?t.mini.width&&a.width(t.mini.width):a.width(0),t.mode===l?s.append(o):t.mode===c&&(s.after(o),e(document.body).prepend(s)),i.append(a)},_setBodyOffset:function(){var t=this.element.outerWidth();this.leftPositioned?e(document.body).css("padding-left",t):e(document.body).css("padding-right",t)},_initDrawerItems:function(){var e=this.drawerItemsWrapper,t=e.find("[data-role='drawer-item']"),n=e.find("[data-role='drawer-separator']");t.addClass("k-drawer-item"),n.addClass("k-drawer-item k-drawer-separator"),this._selectedItemIndex>=0&&(t.removeClass("k-state-selected"),t.eq(this._selectedItemIndex).addClass("k-state-selected"))},_mode:function(){var t,n=this.options,i=this.drawerContainer;n.mode==l?i.addClass("k-drawer-"+l):(i.addClass("k-drawer-"+c),t=this.overlayContainer=e('<div class="k-overlay"></div>'),t.hide(),i.prepend(t))},_miniMode:function(){var t=this.options,n=this.drawerContainer,i=t.mini.width,o=this._miniTemplate=t.mini.template&&e(t.mini.template),r=this.drawerItemsWrapper,a=this.drawerWrapper;n.addClass("k-drawer-mini"),o&&r.html(o),i&&a.width(i),this.minWidth=t.mini.width||this.drawerWrapper.width()},show:function(){var e=this.drawerWrapper,t=this.drawerContainer,n=this.options,i=t.hasClass("k-drawer-expanded"),o=this._miniTemplate,r=this.drawerElement,a=this.drawerItemsWrapper;i||(t.addClass("k-drawer-expanded"),this.visible=!0),o&&(a.html(r),this._initDrawerItems(),this._selectItem()),e.width(n.width),n.mode===c&&(this.overlayContainer.show(),this.visible=!0)},hide:function(){var e=this,t=e.drawerWrapper,n=e.drawerContainer,i=this.options,o=this.drawerItemsWrapper,r=this._miniTemplate,a=i.mini&&i.mini.width;this._miniTemplate&&(o.html(r),e._initDrawerItems(),this._selectItem()),t.width(i.mini?a?a:"":0),this.visible&&(n.removeClass("k-drawer-expanded"),this.visible=!1),i.mode===c&&this.overlayContainer.hide()},position:function(e){var t=this,n=t.options,i=e||n.position,o=t.drawerContainer;i==u?(o.removeClass("k-drawer-"+d),o.addClass("k-drawer-"+u)):(o.removeClass("k-drawer-"+u),o.addClass("k-drawer-"+d)),this.leftPositioned=i===d},_start:function(e){var i=this,o=this.options,r=this.drawerWrapper,a=this.drawerItemsWrapper,s=e.sender;return Math.abs(e.x.velocity)<Math.abs(e.y.velocity)||n.triggeredByInput(e.event)?(s.cancel(),t):(this.drawerMini&&a.html(i.drawerElement),r.css("transition","none"),o.mode!=l&&this.overlayContainer.show(),t)},_update:function(e){var t=this.options,n=t.mode;n==l?this._push(e):this._overlay(e)},_end:function(e){var t,n=e.x.velocity,i=this.options,o=this.drawerWrapper,r=o.width(),a=r>i.width/2,s=.8;o.css("transition","all .3s ease-out"),t=this.leftPositioned?n>-s&&(n>s||a):n<s&&(n<-s||a),t?this.trigger("show",{sender:this})?(e.preventDefault(),this.hide()):this.show():this.trigger("hide",{sender:this})?(e.preventDefault(),this.show()):this.hide(); +},_overlay:function(e){var t=this.options,n=t.mini&&t.mini.width||this.minWidth||0,i=this.drawerWrapper,o=i.width(),r=o+(this.leftPositioned?e.x.delta:-e.x.delta),a=Math.min(Math.max(r,n),t.width);e.event.preventDefault(),e.event.stopPropagation(),i.width(a)},_push:function(e){var t=this.options,n=t.mini&&t.mini.width||this.minWidth||0,i=this.drawerWrapper,o=i.width(),r=o+(this.leftPositioned?e.x.delta:-e.x.delta),a=Math.min(Math.max(r,n),t.width);e.event.preventDefault(),e.event.stopPropagation(),i.width(a)},_selectItem:function(e){var n;return e?(e.addClass("k-state-selected"),this.trigger("itemClick",{item:e,sender:this}),this._selectedItemIndex=e.index(),t):(n=this._selectedItemIndex,n&&this.drawerItemsWrapper.find("[data-role='drawer-item']").eq(n).addClass("k-state-selected"),t)},_itemClick:function(t){var n,i=this;e(t.event.target).find(".k-drawer-item").length>0?n=e(t.event.target).find(".k-drawer-item"):e(t.event.target).closest(".k-drawer-item").length>0?n=e(t.event.target).closest(".k-drawer-item"):e(t.event.target).hasClass(".k-drawer-item")&&(n=e(t.event.target)),i.drawerItemsWrapper.find(".k-drawer-item").removeClass("k-state-selected"),i._selectItem(n)},destroy:function(){var t=this.options;t.mode!=l&&(this.leftPositioned?e(document.body).css("padding-left",0):e(document.body).css("padding-right",0)),o.fn.destroy.call(this),this.userEvents.destroy(),n.destroy(this.element),this.element=this.drawerWrapper=this.drawerElement=this.drawerContainer=this.drawerItemsWrapper=this._miniTemplate=null},options:{name:"Drawer",position:d,mode:"overlay",swipeToOpen:!0,width:280,mini:!1,template:""},events:[a,r,s]});n.ui.plugin(h)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.multiviewcalendar.min",["kendo.core.min","kendo.selectable.min","kendo.calendar.min"],e)}(function(){return function(e,t){function n(t){var n=e(this).hasClass("k-state-disabled");n||e(this).toggleClass(N,Y.indexOf(t.type)>-1||t.type==$)}function i(e,t,n,i){var o,r;for(o=0;o<=t;o++)r=new Date(n.getTime()),r=new Date(r.setDate(r.getDate()+o)),i(r)||e.push(r)}function o(e,t){var n,i,o;return+t<+e&&(n=+e,s.views[0].setDate(e,t),s.views[0].setDate(t,new Date(n))),i=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()),o=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),Math.ceil((+o-+i)/a.date.MS_PER_DAY)}function r(e,n,i){var o;return"month"===n?(o=new ie(e.getFullYear(),e.getMonth()+i,e.getDate()),o.setFullYear(e.getFullYear()),(Math.abs(o.getMonth()-e.getMonth())>i||i>10)&&(o.setMonth(e.getMonth()+i),o=s.views[0].last(o)),o):"year"===n?(o=new ie(1,e.getMonth(),e.getDate()),o.setFullYear(e.getFullYear()+i),Math.abs(o.getFullYear()-e.getFullYear())>i&&(o=new ie(1,e.getMonth(),1),o.setFullYear(e.getFullYear()+i),o=s.views[1].last(o)),o):"decade"===n?(o=new ie(1,e.getMonth(),e.getDate()),o.setFullYear(e.getFullYear()+10*i),Math.abs(o.getFullYear()-e.getFullYear())>10*i&&(o=new ie(1,e.getMonth(),1),o.setFullYear(e.getFullYear()+10*i),o=s.views[2].last(o)),o):"century"===n?(o=new ie(1,e.getMonth(),e.getDate()),o.setFullYear(e.getFullYear()+100*i),Math.abs(o.getFullYear()-e.getFullYear())>100*i&&(o=new ie(1,e.getMonth(),1),o.setFullYear(e.getFullYear()+100*i),o=s.views[3].last(o)),o):t}var a=window.kendo,s=a.calendar,l=a.support,c=s.isInRange,d=s.toDateObject,u=s.createDate,h=s.isEqualDate,p=s.getToday,f=a.keys,g=a.ui,m=g.Widget,v=g.Selectable,_=a.template,b=l.mobileOS,w=".kendoMultiViewCalendar",k="click",y="keydown",x="id",C="min",S="month",T=".",D="century",A="decade",E="change",I="navigate",M="value",F="k-state-focused",R="k-state-selected",P="k-range-mid",z="k-range-split-end",B="k-range-split-start",L="k-range-start",H="k-range-end",N="k-state-hover",O="k-state-disabled",V="k-nav-today",W="k-other-month",U="k-out-of-range",q="td:has(.k-link):not(."+U+")",j="td:has(.k-link):not(."+O+"):not(."+U+")",G="blur",$="focus",Y=l.touch?"touchstart":"mouseenter",K=l.touch?"touchend"+w+" touchmove"+w:"mouseleave"+w,Q="_prevArrow",X="_nextArrow",J="aria-selected",Z="input,a,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up",ee="aria-disabled",te="aria-label",ne=e.proxy,ie=Date,oe={month:0,year:1,decade:2,century:3},re=m.extend({init:function(e,t){var n=this;m.fn.init.call(n,e,t),n.userEvents=new a.UserEvents(n.element,{global:!0,allowSelection:!0,filter:n.options.filter,tap:ne(n._tap,n),touchAction:"none"})},events:[E],options:{name:"RangeSelectable",filter:">*",inputSelectors:Z,multiple:!1,dragToSelect:!0,relatedTarget:e.noop},destroy:function(){var e=this;m.fn.destroy.call(e),e.userEvents.destroy(),e._lastActive=e.element=e.userEvents=e._start=e._end=null},_allowSelection:function(t){return!e(t).is(this.options.inputSelectors)||(this.userEvents.cancel(),!1)},start:function(e){return e===t?this._start:(e.addClass(L+" "+R),this._start=e,t)},end:function(e){return e===t?this._start:(e.addClass(H+" "+R),this._end=e,t)},mid:function(t){var n=this.element.find("table.k-month");t.addClass(P),n.each(function(){var t=e(this),n=t.find(j+":last"),i=t.find(j+":first");n.hasClass(P)&&n.addClass(z),i.hasClass(P)&&i.addClass(B)})},clear:function(e){this.element.find(q).removeClass(H+" "+R+" "+L+" "+P+" "+z+" "+B),e&&(this._start=this._end=null)},selectFrom:function(t){var n=this,i=n.element.find(q),o=e.inArray(e(t)[0],i);n.clear(),n.start(t),i=i.filter(function(e){return e>o}),n.mid(i)},selectTo:function(t){var n=this,i=n.element.find(q),o=e.inArray(e(t)[0],i);n.clear(),i=i.filter(function(e){return e<o}),n.mid(i),n.end(e(t))},range:function(n,i){var o,r,a,s,l=this;return n===t?{start:l._start,end:l._end}:(o=l.element.find(q),r=e.inArray(e(n)[0],o),a=e.inArray(e(i)[0],o),r>a&&(s=i,i=n,n=s,s=r,r=a,a=s),l.clear(),n.addClass(L+" "+R),l._start=n,o=o.filter(function(e){return e>r&&e<a}),l.mid(o),l.end(e(i)),t)},change:function(){this.trigger(E)},_tap:function(n){var i,o,r,a=e(n.target),s=this;if(s._lastActive=a,!s._start)return s.start(a),s.trigger(E),t;if(s._start&&!s._end)return i=s.element.find(q),o=e.inArray(e(s._start)[0],i),r=e.inArray(e(a)[0],i),+d(e(s._start).find("a"))>+d(e(a).find("a"))?(s.clear(),s.start(a),s.trigger(E),t):(i=i.filter(function(e){return e>o&&e<r}),s.mid(i),s.end(e(a)),s.trigger(E),t);if(s._start&&s._end){if(a.hasClass(P))return s._toggling?s.range(s._start,a):s.range(a,s._end),s._toggling=!s._toggling,s.trigger(E),t;s._toggling=!1,s._end=null,s.clear(),s.start(a),s.trigger(E)}}}),ae=m.extend({init:function(t,n){var i,o,r=this;m.fn.init.call(r,t,n),t=r.wrapper=r.element,n=r.options,r.options.disableDates=s.disabled(r.options.disableDates),o=a.getCulture(n.culture),n.format=a._extractFormat(n.format||o.calendars.standard.patterns.d),r._templates(),r._header(),r._wrapper(),i=t.addClass("k-widget k-calendar k-calendar-range"+(n.weekNumber?" k-week-number":"")).on(y+w,"table.k-content",ne(r._move,r)).on(G+w,"table",ne(r._blur,r)).on(k+w,j,function(t){var n=t.currentTarget.firstChild;n.href.indexOf("#")!=-1&&t.preventDefault(),r._click(e(n))}).on(Y+w,j,ne(r._mouseEnter,r)).on(K,j,function(){e(this).removeClass(N)}).attr(x),i&&(r._cellID=i+"_cell_selected"),r._calendarWidth=r.element.width(),r._range=n.range,r._initViews({viewName:n.start,value:n.value}),r._selectable(),r._footer(r.footer),r._selectDates=[],r.value(n.value),"multiple"==n.selectable&&(r._selectDates=n.selectDates.length?n.selectDates:r._selectDates,r._restoreSelection()),"range"==n.selectable&&r.selectRange(r._range),a.notify(r)},options:{name:"MultiViewCalendar",value:null,min:new ie(1900,0,1),max:new ie(2099,11,31),dates:[],disableDates:null,culture:"",footer:"",format:"",month:{},range:{start:null,end:null},weekNumber:!1,views:2,showViewHeader:!1,selectable:"single",selectDates:[],start:S,depth:S,messages:{weekColumnHeader:""}},events:[E,I],setOptions:function(e){var t,n=this;for(s.normalize(e),e.disableDates=s.disabled(e.disableDates),m.fn.setOptions.call(n,e),n._selectable(),n._templates(),n._footer(n.footer),t=0;t<n._views.length;t++)n._views[t].off(w).remove();n._initViews({viewName:e.start,value:e.value}),n._range=e.range||{start:null,end:null},n._restoreSelection()},destroy:function(){var e,t=this;if(t._cell=null,t._currentView=null,t._current=null,t._views)for(e=0;e<t._views.length;e++)t._views[e].off(w).remove();t.element.off(w),t.header&&(t.header.off(w),t._title=null,t.header=null),t.selectable&&(t.selectable.destroy(),t.selectable=null),t.rangeSelectable&&(t.rangeSelectable.destroy(),t.rangeSelectable=null),t._today&&a.destroy(t._today.off(w)),t._views=null,m.fn.destroy.call(t)},current:function(){return this._current},focus:function(){var e;this._cell?this._cell.closest("table").trigger("focus"):this._current&&this._dateInViews(this._current)?(this._cell=this._cellByDate(this._current),this._cell.closest("table").trigger("focus")):(e=this.element.find("table").first().trigger("focus"),this._cell=e.find(j+":first"),this._current=d(this._cell.find("a"))),this._cell.addClass(F)},min:function(e){return this._option(C,e)},max:function(e){return this._option("max",e)},view:function(){return this._currentView},navigateToPast:function(){this._navigate(Q,-1)},navigateToFuture:function(){this._navigate(X,1)},navigateUp:function(){var e=this,t=e._index;e._title.hasClass(O)||e.navigate(e._current,++t)},navigateDown:function(e){var n=this,i=n._index,o=n.options.depth;if(e)return i===oe[o]?(h(n._value,n._current)&&h(n._value,e)||(n.value(e),n.trigger(E)),t):(n.navigate(e,--i),t)},navigate:function(e,n){var i,o,r,a,l;for(n=isNaN(n)?s.views[s.viewsEnum[n]]:s.views[n],i=this,o=i.options,r=o.min,a=o.max,i._current=e?e:e=new ie((+s.restrictValue(e,r,a))),n===t&&(n=i._currentView),i._currentView=n,l=0;l<i._views.length;l++)i._views[l].off(w).remove();i._initViews({viewName:n.name,value:e}),i._restoreSelection()},_updateHeader:function(){var t,n,i,o,a=this,s=a._currentView,l=a._title,d=a._firstViewValue,u=a.options,h=a._visibleRange(),p=u.culture,f=u.min,g=u.max;s.name===A||s.name===D?(t=r(d,s.name,u.views-1),c(t,f,g)||(t=g),l.html(s.first(d).getFullYear()+" - "+s.last(t).getFullYear())):l.html(s.title(d,f,g,p)+" - "+s.title(r(d,s.name,u.views-1),f,g,p)),n=s.name===D,l.toggleClass(O,n).attr(ee,n),i=s.compare(h.start,a.options.min)<1,o=s.compare(h.end,a.options.max)>-1,i&&o?a._navContainer&&(a._navContainer.remove(),a._navContainer=null):(a._navContainer||(a._navContainer=e('<span class="k-calendar-nav"><a href="#" role="button" class="k-button k-button-icon k-prev-view" '+te+'="Previous"><span class="k-icon k-i-arrow-60-left"></span></a><a href="#" role="button" class="k-button k-button-icon k-next-view" '+te+'="Next"><span class="k-icon k-i-arrow-60-right"></span></a></span>').appendTo(a.header),a[Q]=a._navContainer.find(".k-prev-view"),a[X]=a._navContainer.find(".k-next-view")),a[Q].toggleClass(O,i).attr(ee,i),a[Q].hasClass(O)&&a[Q].removeClass(N),a[X].toggleClass(O,o).attr(ee,o),a[X].hasClass(O)&&a[X].removeClass(N))},_mouseEnter:function(t){var n,i,o,r,a=this,s=e(t.currentTarget);if(s.addClass(N),a.rangeSelectable&&"month"===a._currentView.name&&(n=a.selectRange(),n.start&&!n.end)){if(a._dateInViews(a.selectRange().start)){if(i=a.element.find(a.rangeSelectable.options.filter),o=e.inArray(e(a.rangeSelectable._start)[0],i),r=e.inArray(e(s)[0],i),o>r)return;a.rangeSelectable.range(a.rangeSelectable._start,s)}else+d(a.element.find(q+":first").find("a"))>+n.start&&a.rangeSelectable.selectTo(s);a.rangeSelectable._end=null}},_move:function(n,i){var o,r,s,l,h,p,g=this,m=g.options,v=n.keyCode,_=g._index,b=m.min,w=m.max,k=g.element.find(T+F),y=k.closest("table"),x=new ie((+(g._current||d(k.find("a"))))),C=a.support.isRtl(g.wrapper),S=!1;if(v==f.RIGHT&&!C||v==f.LEFT&&C?(o=1,r=!0):v==f.LEFT&&!C||v==f.RIGHT&&C?(o=-1,r=!0):v==f.UP?(o=0===_?-7:-4,r=!0):v==f.DOWN?(o=0===_?7:4,r=!0):v==f.SPACEBAR?(o=0,r=!0):v==f.HOME?(r=!0,l=y.find(j).eq(0),l.hasClass(F)?(y=y.prev(),y.length?g._focusCell(y.find(j).eq(0)):(S=g[Q]&&!g[Q].hasClass(O),g._navigate(Q,-1,i),g._focusCell(g.element.find("table:first "+j+":first")))):g._focusCell(l)):v==f.END&&(r=!0,l=y.find(j).last(),l.hasClass(F)?(y=y.next(),y.length?g._focusCell(y.find(j).last()):(S=g[X]&&!g[X].hasClass(O),g._navigate(X,1,i),g._focusCell(g.element.find("table:last "+j+":last")))):g._focusCell(l)),n.ctrlKey||n.metaKey)v==f.RIGHT&&!C||v==f.LEFT&&C?(S=g[X]&&!g[X].hasClass(O),g._navigate(X,1,i),r=!0):v==f.LEFT&&!C||v==f.RIGHT&&C?(S=g[Q]&&!g[Q].hasClass(O),g._navigate(Q,-1,i),r=!0):v==f.UP?(S=!g._title.hasClass(O),g.navigateUp(),g._focusCell(g._cellByDate(g._current),!i),r=!0):v==f.DOWN?("month"===g._currentView.name?g.value(x):(g.navigateDown(x),g._focusCell(g._cellByDate(g._current),!i),S=!0),r=!0):v!=f.ENTER&&v!=f.SPACEBAR||"multiple"===m.selectable&&g._toggleSelection(n);else if(n.shiftKey&&"single"!==m.selectable){if(o!==t||s){if(s||g._currentView.setDate(x,o),"month"!==g._currentView.name)return;m.disableDates(x)&&(x=g._nextNavigatable(x,o)),b=u(b.getFullYear(),b.getMonth(),b.getDate()),c(x,b,w)&&(g._dateInViews(x)||(o>0?(S=g[X]&&!g[X].hasClass(O),g._navigate(X,1,i)):(S=g[Q]&&!g[Q].hasClass(O),g._navigate(Q,-1,i))),l=g._cellByDate(x),g._current=x,g.selectable&&(g._selectRange(d((g.selectable._lastActive||k).find("a")),x),g.selectable._lastActive||(g.selectable._lastActive=k),g.trigger(E),g._focusCell(l)),g.rangeSelectable&&(h=d((g.rangeSelectable._lastActive||k).find("a")),g._dateInViews(h)?(g.rangeSelectable._lastActive=g.rangeSelectable._end&&g.rangeSelectable._end.is(T+F)?g.rangeSelectable._start:g._cellByDate(h),g.rangeSelectable.range(g.rangeSelectable._lastActive,l)):+h>+x?(g.rangeSelectable._end=g.rangeSelectable._lastActive,g.rangeSelectable.selectFrom(l)):g.rangeSelectable.selectTo(l),g.rangeSelectable.change(),g._focusCell(l)))}}else v==f.ENTER||v==f.SPACEBAR?("month"===g._currentView.name?(g.selectable&&(g.selectable._lastActive=g._cellByDate(x)),g.value(x),g.rangeSelectable&&g.rangeSelectable.change()):g._click(e(g._cell[0].firstChild),i),r=!0):v!=f.PAGEUP&&v!=f.PAGEDOWN||(r=!0,p=y.find(j).index(k),y=v==f.PAGEUP?y.prev():y.next(),y.length||(v==f.PAGEUP?(S=g[Q]&&!g[Q].hasClass(O),g.navigateToPast(),y=g.element.find("table:first")):(S=g[X]&&!g[X].hasClass(O),g.navigateToFuture(),y=g.element.find("table:last"))),l=y.find(j).eq(p),g._focusCell(l.length?l:y.find(j).last())),(o||s)&&(s||g._currentView.setDate(x,o),b=u(b.getFullYear(),b.getMonth(),b.getDate()),c(x,b,w)&&(g.selectable&&m.disableDates(x)&&(x=g._nextNavigatable(x,o)),g._dateInViews(x)||(o>0?(S=g[X]&&!g[X].hasClass(O),g._navigate(X,1,i)):(S=g[Q]&&!g[Q].hasClass(O),g._navigate(X,-1,i))),l=g._cellByDate(x),g._current=x,g._focusCell(l,!i)));return S&&g.trigger(I),r&&n.preventDefault(),g._current},_visualizeSelectedDatesInView:function(){var t,n=this,i={};e.each(n._selectDates,function(e,t){i[a.calendar.views[0].toDateString(t)]=t}),n.selectable.clear(),t=n.element.find("table").find(q).filter(function(t,n){return i[e(n.firstChild).attr(a.attr(M))]}),t.length>0&&n.selectable._selectElement(t,!0)},_nextNavigatable:function(e,t){var n=this,i=!0,o=n._currentView,r=n.options.min,a=n.options.max,s=n.options.disableDates,l=new Date(e.getTime());for(o.setDate(l,-t);i;){if(o.setDate(e,t),!c(e,r,a)){e=l;break}i=s(e)}return e},_toggleSelection:function(t){var n=this;n.selectable._lastActive=e(n._cell[0]),e(n._cell[0]).hasClass(R)?(n.selectable._unselect(e(n._cell[0])),n.selectable.trigger(E,{event:t})):n.selectable.value(e(n._cell[0]),{event:t})},_option:function(e,n){var i,o=this,r=o.options,s=o._value||o._current;return n===t?r[e]:(n=a.parseDate(n,r.format,r.culture),n&&(r[e]=new ie((+n)),i=e===C?n>s:s>n,i&&(o._value=null),o.navigate(o._value),o._toggle()),t)},_cellByDate:function(t){return t instanceof Date&&(t=this._currentView.toDateString(t)),this.element.find("table").find("td:not(."+W+")").filter(function(){return e(this.firstChild).attr(a.attr(M))===t})},_selectable:function(){var e=this,t=e.options.selectable;e.selectable&&(e.selectable.destroy(),e.selectable=null),e.rangeSelectable&&(e.rangeSelectable.destroy(),e.rangeSelectable=null),"range"===t.toLowerCase()?e.rangeSelectable=new re(e.wrapper,{filter:"table.k-month "+j,change:ne(e._rangeSelection,e)}):e.selectable=new v(e.wrapper,{aria:!0,dragToSelect:!1,inputSelectors:"input,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up",multiple:v.parseOptions(t).multiple,filter:"table.k-content "+j,change:ne(e._selection,e),relatedTarget:ne(e._onRelatedTarget,e),unselect:ne(e._unselecting,e)})},_onRelatedTarget:function(e){var t=this;t.selectable.options.multiple&&e.is(j)&&e.length>1&&t._focusCell(e.first(),!0)},_getFirstViewDate:function(e){var t,n,i,o=this,a=o.options,s=[],l=new Date((+o._current));for(i=0;i<a.views;i++){if(t=e.first(l),n=e.last(l),+n>+a.max){+t<=+a.max&&s.push({start:t,end:new Date((+a.max))});break}s.push({start:t,end:n}),l=new Date((+r(n,e.name,1)))}for(l=new Date((+o._current)),i=0;i<a.views;i++){if(t=e.first(l),n=e.last(l),+t<+a.min){+n>=+a.min&&s.push({start:new Date((+a.min)),end:n});break}s.push({start:t,end:n}),l=new Date((+r(t,e.name,-1)))}for(t=s[0].start,i=0;i<a.views+1&&s[i];i++)+t>+s[i].start&&(t=s[i].start);return new Date((+t))},_canRenderNextView:function(e){var t=e.getFullYear(),n=e.getMonth(),i=e.getDate(),o=this.options.max,r=o.getFullYear(),a=o.getMonth();return t<r||(t===r&&n<a||(t===r&&n===a&&i<o.getDate()||t===r&&n===a&&i===o.getDate()))},_initViews:function(t){var n,i,o=this,a=o.options,l=s.viewsEnum[t.viewName],c=s.views[l];for(o._current=new ie((+s.restrictValue(t.value,a.min,a.max))),o._views=[],o._index=l,n=o._getFirstViewDate(c),n.setDate(1),o._firstViewValue=new Date((+n)),i=0;i<a.views&&(n=i?r(n,c.name,1):n,n.setDate(1),o._canRenderNextView(n));i++)o._table=e(c.content(e.extend({min:a.min,max:a.max,date:n,url:a.url,dates:a.dates,format:a.format,culture:a.culture,disableDates:a.disableDates,showHeader:a.showViewHeader,isWeekColumnVisible:a.weekNumber,otherMonth:a.otherMonth,messages:a.messages},o[c.name]))),o._table.appendTo(o.tablesWrapper).addClass("k-"+c.name),o._views.push(o._table);o._currentView=c,o.tablesWrapper.attr("class","k-calendar-view k-calendar-"+c.name+"view"),o._updateHeader()},_rangeSelection:function(e){var t,n,i=this,o=e.sender.range();o.start&&(t=d(o.start.find("a"))),o.end&&(n=d(o.end.find("a"))),i._range={start:t,end:n},i._preventChange||i.trigger(E)},_selection:function(t){var n,i=this,o=t.sender.value(),r=t.event,a=e(r&&r.currentTarget),s=a.is("td");"single"===i.options.selectable&&i._validateValue(o[0]?d(o.first().find("a")):t.sender._lastActive?d(t.sender._lastActive.find("a")):i.value()),"multiple"==i.options.selectable&&(s&&(n=d(a.find("a"))),r&&r.ctrlKey?s?a.hasClass(R)?i._selectDates.push(n):i._deselect(n):(i.element.find("table "+j).each(function(t,n){var o=d(e(n).find("a"));i._deselect(o)}),i._addSelectedCellsToArray()):r&&r.shiftKey?i._selectRange(d(t.sender._lastActive?t.sender._lastActive.find("a"):o.first().find("a")),n):s?(i._selectDates=[],i._selectDates.push(n)):(i._selectDates=[],i._addSelectedCellsToArray())),i._preventChange||i.trigger(E)},_addSelectedCellsToArray:function(){var t=this;t.selectable.value().each(function(n,i){var o=d(e(i.firstChild));t.options.disableDates(o)||t._selectDates.push(o)})},_deselect:function(e){var t=this,n=t._selectDates.map(Number).indexOf(+e);n!=-1&&t._selectDates.splice(n,1)},_unselecting:function(e){var t=this,n=e.element;"single"===t.options.selectable&&!b&&n.hasClass(F)&&e.preventDefault()},_visibleRange:function(){var e=this.element.find(".k-calendar-view table"),t=d(e.first().find(q+":first").find("a")),n=d(e.last().find(q+":last").find("a"));return{start:t,end:n}},_dateInViews:function(e){var t=this,n=t.element.find(".k-calendar-view table"),i=d(n.first().find(q+":first").find("a")),o=d(n.last().find(q+":last").find("a"));return+e<=+o&&+e>=+i},_fillRange:function(e,t){var n,r=this;r._selectDates=[],n=o(e,t),i(r._selectDates,n,e,r.options.disableDates)},_selectRange:function(e,t){var n,i=this;+t<+e&&(n=t,t=e,e=n),i._fillRange(e,t),i._visualizeSelectedDatesInView()},_header:function(){var t,i=this,o=i.element,r=o.find(".k-calendar-header");r.length||(r=e('<div class="k-calendar-header"><a href="#" role="button" class="k-button k-title" aria-live="assertive" aria-atomic="true"></a><span class="k-calendar-nav"><a href="#" role="button" class="k-button k-button-icon k-prev-view" '+te+'="Previous"><span class="k-icon k-i-arrow-60-left"></span></a><a href="#" role="button" class="k-button k-button-icon k-next-view" '+te+'="Next"><span class="k-icon k-i-arrow-60-right"></span></a></span></div>').prependTo(o)),i.header=r,r.on(Y+w+" "+K+" "+$+w+" "+G+w,".k-button",n).on("click",function(){return!1}).on(k+w,".k-button.k-title",function(){i.navigateUp(),i._focusCell(i._cellByDate(i._current),!0),i.trigger(I)}).on(k+w,".k-button.k-prev-view",function(e){e.preventDefault(),i.navigateToPast(),i.trigger(I)}).on(k+w,".k-button.k-next-view",function(e){e.preventDefault(),i.navigateToFuture(),i.trigger(I)}),t=r.find(".k-button"),i._title=t.filter(".k-title"),i._navContainer=r.find(".k-calendar-nav"),i[Q]=t.filter(".k-prev-view"),i[X]=t.filter(".k-next-view")},_wrapper:function(){this.tablesWrapper=e('<div class="k-calendar-view" />').insertAfter(this.element[0].firstChild)},_templates:function(){var e=this,t=e.options,n=t.month,i=n.content,o=n.weekNumber,r=n.empty;e.month={content:_('<td#=data.cssClass# role="gridcell"><a tabindex="-1" class="k-link#=data.linkClass#" href="#=data.url#" '+a.attr(M)+'="#=data.dateString#" title="#=data.title#">'+(i||"#=data.value#")+"</a></td>",{useWithBlock:!!i}),empty:_('<td role="gridcell"'+(r?">":' class="k-out-of-range">')+(r||"<a class='k-link'></a>")+"</td>",{useWithBlock:!!r}),weekNumber:_('<td class="k-alt">'+(o||"#= data.weekNumber #")+"</td>",{useWithBlock:!!o})}},_footer:function(){var n=this,i=n.options,o=i.footer!==!1?a.template(n.options.footer||'#= kendo.toString(data,"D","'+i.culture+'") #',{useWithBlock:!1}):null,r=p(),s=n.element,l=s.find(".k-footer");return o?(l[0]||(l=e('<div class="k-footer"><a href="#" class="k-link k-nav-today"></a></div>').appendTo(s)),n._today=l.show().find(".k-link").html(o(r)).attr("title",a.toString(r,"D",n.options.culture)),n._toggle(),t):(n._toggle(!1),l.hide(),t)},_navigate:function(e,t,n){var i,o=this,r=o._index+1,a=new ie((+o._current)),l=new ie((+o._current));e=o[e],i=o._cellByDate(a).closest("table").index(),t>0?i=1-i:i+=1,e&&e.hasClass(O)||(r>3?a.setFullYear(a.getFullYear()+100*(t*i)):s.views[r].setDate(a,t*i),o.navigate(a),o._dateInViews(l)?(o._focusCell(o._cellByDate(l),!n),o._current=l):(r>3?l.setFullYear(l.getFullYear()+100*t):s.views[r].setDate(l,t),o._focusCell(o._cellByDate(l),!n),o._current=l))},_toggle:function(e){var n=this,i=n.options,o="range"!==i.selectable&&n.options.disableDates(p()),r=n._today;e===t&&(e=c(p(),i.min,i.max)),r&&(r.off(k+w),e&&!o?r.addClass(V).removeClass(O).on(k+w,ne(n._todayClick,n)):r.removeClass(V).addClass(O).on(k+w,function(e){e.preventDefault()}))},_click:function(e,t){var n=this,i=n.options,o=new Date((+n._current)),r=d(e);a.date.adjustDST(r,0),n._currentView.setDate(o,r),n._current=r,n._currentView.name!==i.depth?(n.navigateDown(s.restrictValue(o,i.min,i.max)),n._focusCell(n._cellByDate(n._current),!t),n.trigger(I)):n._focusCell(e.closest("td"),!t)},_blur:function(){var e=this;e._cell&&e._cell.removeClass(F)},_focus:function(t){var n=this,i=e(t.currentTarget),o=n._cell;o&&e.contains(i[0],o[0])||(o=i.find(j+":first")),n._focusCell(o)},_focusCell:function(e,t){var n=this,i=n._cellID,o=e.closest("table");n._cell&&n._cell.length&&(n._cell[0].removeAttribute(J),n._cell[0].removeAttribute(te),n._cell.removeClass(F),n._cell[0].removeAttribute(x),n._cell.closest("table")[0].removeAttribute("aria-activedescendant")),n._cell=e,t&&o.trigger("focus"),i&&(e.attr(x,i),o.attr("aria-activedescendant",i)),e.attr(J,!0).addClass(F),e.length&&"month"==n._currentView.name&&(n._current=d(e.find("a")))},_todayClick:function(e){var t=this,n=t.options.disableDates,i=p(),o=!1;e.preventDefault(),n(i)||(t._value=i,"multiple"===t.options.selectable&&(t._selectDates=[i]),"range"===t.options.selectable&&(t.rangeSelectable.clear(!0),t._range={start:i,end:null}),"month"==t._currentView.name&&t._dateInViews(i)||(o=!0),t.navigate(i,t.options.depth),"single"===t.options.selectable&&(t.selectable._lastActive=null),o&&t.trigger(I),t.trigger(E))},_validateValue:function(e){var n=this,i=n.options,o=i.min,r=i.max;return e=a.parseDate(e,i.format,i.culture),null!==e&&(e=new ie((+e)),c(e,o,r)||(e=null)),null!==e&&n.options.disableDates(new Date((+e)))?n._value===t&&(n._value=null):n._value=e,n._value},clearSelection:function(){var e=this;e.selectable&&e.element.find(T+R).removeClass(R),e.rangeSelectable&&e.rangeSelectable.clear(!0)},_restoreSelection:function(){var e,n=this,i=n.options.selectable;if(n._currentView.name===n.options.depth){if(n._preventChange=!0,"range"===i){if(e=n.selectRange(),!e||!e.start)return n._preventChange=!1,t;n.selectRange(e)}"single"===i&&n.value()&&n.selectable.value(n._cellByDate(n.value())),"multiple"===i&&n._visualizeSelectedDatesInView(),n._preventChange=!1}},value:function(e){var n,i=this;return e===t?i._value:(e=i._validateValue(e),i.clearSelection(),e&&!i._dateInViews(e)&&i.navigate(e),null!==e&&i._currentView.name===S&&(n=i._cellByDate(e),i.selectable&&i.selectable.value(n),i.rangeSelectable&&(i.rangeSelectable.start(n),i.rangeSelectable._lastActive=n)),t)},selectDates:function(n){var i,o,r=this;return n===t?r._selectDates:(o=n.map(function(e){return e.getTime()}).filter(function(e,t,n){return n.indexOf(e)===t}).map(function(e){return new Date(e)}),i=e.grep(o,function(e){if(e)return+r._validateValue(new Date(e.setHours(0,0,0,0)))===+e}),r._selectDates=i.length>0?i:0===o.length?o:r._selectDates,r._visualizeSelectedDatesInView(),t)},selectRange:function(e){var n,i,o,r=this;return e===t?r._range:(r._range=e,e.start&&(o=r._visibleRange(),n=r._dateInViews(e.start),i=e.end&&r._dateInViews(e.end),!n&&i&&r.rangeSelectable.selectTo(r._cellByDate(e.end)),n&&i&&r.rangeSelectable.range(r._cellByDate(e.start),r._cellByDate(e.end)),e.end&&n&&!i&&r.rangeSelectable.selectFrom(r._cellByDate(e.start)),!e.end&&n&&r.rangeSelectable.start(r._cellByDate(e.start)),+o.start>+e.start&&+o.end<+e.end&&r.rangeSelectable.mid(r.element.find(j))),t)}});a.ui.plugin(ae)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.virtuallist.min",["kendo.data.min"],e)}(function(){return function(e,t){function n(e){return e[e.length-1]}function i(e){return e instanceof Array?e:[e]}function o(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e}function r(e,t,n){return Math.ceil(e*t/n)}function a(e,t,n){var i=document.createElement(n||"div");return t&&(i.className=t),e.appendChild(i),i}function s(){var t,n=e('<div class="k-popup"><ul class="k-list"><li class="k-item"><li></ul></div>');return n.css({position:"absolute",left:"-200000px",visibility:"hidden"}),n.appendTo(document.body),t=parseFloat(b.getComputedStyles(n.find(".k-item")[0],["line-height"])["line-height"]),n.remove(),t}function l(e,t,n){return{down:e*n,up:e*(t-1-n)}}function c(e,t){var n=(e.listScreens-1-e.threshold)*t,i=e.threshold*t;return function(e,t,o){return t>o?t-e.top<n:0===e.top||t-e.top>i}}function d(e,t){return function(n){return t(e.scrollTop,n)}}function u(e){return function(t,n){return e(t.items,t.index,n),t}}function h(e,t){b.support.browser.msie&&b.support.browser.version<10?e.style.top=t+"px":(e.style.webkitTransform="translateY("+t+"px)",e.style.transform="translateY("+t+"px)")}function p(t,n){return function(i,o){for(var r=0,a=i.length;r<a;r++)t(i[r],o[r],n),o[r].item&&this.trigger(O,{item:e(i[r]),data:o[r].item,ns:b.ui})}}function f(e,t){var n;return t>0?(n=e.splice(0,t),e.push.apply(e,n)):(n=e.splice(t,-t),e.unshift.apply(e,n)),n}function g(n,i,o){var r=o.template;n=e(n),i.item||(r=o.placeholderTemplate),0===i.index&&this.header&&i.group&&this.header.html(o.fixedGroupTemplate(i.group)),this.angular("cleanup",function(){return{elements:[n]}}),n.attr("data-uid",i.item?i.item.uid:"").attr("data-offset-index",i.index),n.html(this.options.columns&&this.options.columns.length&&i.item?m(this.options,i.item,o):r(i.item||{})),n.toggleClass(z,i.current),n.toggleClass(P,i.selected),n.toggleClass("k-first",i.newGroup),n.toggleClass("k-last",i.isLastGroupedItem),n.toggleClass("k-loading-item",!i.item),0!==i.index&&i.newGroup&&e("<div class="+R+"></div>").appendTo(n).html(o.groupTemplate(i.group)),i.top!==t&&h(n[0],i.top),this.angular("compile",function(){return{elements:[n],data:[{dataItem:i.item,group:i.group,newGroup:i.newGroup}]}})}function m(e,t,n){var i,o,r,a,s="";for(i=0;i<e.columns.length;i++)o=e.columns[i].width,r=parseInt(o,10),a="",o&&(a+="style='width:",a+=r,a+=C.test(o)?"%":"px",a+=";'"),s+="<span class='k-cell' "+a+">",s+=n["column"+i](t),s+="</span>";return s}function v(e,t){var n,i,o,r,a=t.length,s=e.length,l=[],c=[];if(s)for(o=0;o<s;o++){for(n=e[o],i=!1,r=0;r<a;r++)if(n===t[r]){i=!0,l.push({index:o,item:n});break}i||c.push(n)}return{changed:l,unchanged:c}}function _(e){return e&&"resolved"!==e.state()}var b=window.kendo,w=b.ui,k=w.Widget,y=w.DataBoundWidget,x=e.proxy,C=/^\d+(\.\d+)?%$/i,S="k-virtual-wrap",T="k-virtual-list",D="k-virtual-content",A="k-list",E="k-group-header",I="k-virtual-item",M="k-item",F="k-height-container",R="k-group",P="k-state-selected",z="k-state-focused",B="k-state-hover",L="change",H="click",N="listBound",O="itemChange",V="activate",W="deactivate",U=".VirtualList",q=y.extend({init:function(t,n){var o=this;o.bound(!1),o._fetching=!1,k.fn.init.call(o,t,n),o.options.itemHeight||(o.options.itemHeight=s()),n=o.options,o.element.addClass(A+" "+T).attr("role","listbox"),o.content=o.element.wrap("<div unselectable='on' class='"+D+"'></div>").parent(),o.wrapper=o.content.wrap("<div class='"+S+"'></div>").parent(),o.header=o.content.before("<div class='"+E+"'></div>").prev(),n.columns&&n.columns.length&&o.element.removeClass(A),o.element.on("mouseenter"+U,"li:not(.k-loading-item)",function(){e(this).addClass(B)}).on("mouseleave"+U,"li",function(){e(this).removeClass(B)}),o._values=i(o.options.value),o._selectedDataItems=[],o._selectedIndexes=[],o._rangesList={},o._promisesList=[],o._optionID=b.guid(),o._templates(),o.setDataSource(n.dataSource),o.content.on("scroll"+U,b.throttle(function(){o._renderItems(),o._triggerListBound()},n.delay)),o._selectable()},options:{name:"VirtualList",autoBind:!0,delay:100,height:null,listScreens:4,threshold:.5,itemHeight:null,oppositeBuffer:1,type:"flat",selectable:!1,value:[],dataValueField:null,template:"#:data#",placeholderTemplate:"loading...",groupTemplate:"#:data#",fixedGroupTemplate:"#:data#",mapValueTo:"index",valueMapper:null},events:[L,H,N,O,V,W],setOptions:function(e){k.fn.setOptions.call(this,e),this._selectProxy&&this.options.selectable===!1?this.element.off(H,"."+I,this._selectProxy):!this._selectProxy&&this.options.selectable&&this._selectable(),this._templates(),this.refresh()},items:function(){return e(this._items)},destroy:function(){this.wrapper.off(U),this.dataSource.unbind(L,this._refreshHandler),k.fn.destroy.call(this)},setDataSource:function(t){var n,i=this,o=t||{};o=e.isArray(o)?{data:o}:o,o=b.data.DataSource.create(o),i.dataSource?(i.dataSource.unbind(L,i._refreshHandler),i._clean(),i.bound(!1),i._deferValueSet=!0,n=i.value(),i.value([]),i.mute(function(){i.value(n)})):i._refreshHandler=e.proxy(i.refresh,i),i.dataSource=o.bind(L,i._refreshHandler),i.setDSFilter(o.filter()),0!==o.view().length?i.refresh():i.options.autoBind&&o.fetch()},skip:function(){return this.dataSource.currentRangeStart()},_triggerListBound:function(){var e=this,t=e.skip();e.bound()&&!e._selectingValue&&e._skip!==t&&(e._skip=t,e.trigger(N))},_getValues:function(t){var n=this._valueGetter; +return e.map(t,function(e){return n(e)})},_highlightSelectedItems:function(){var e,t;for(e=0;e<this._selectedDataItems.length;e++)t=this._getElementByDataItem(this._selectedDataItems[e]),t.length&&t.addClass(P)},refresh:function(e){var t,n=this,i=e&&e.action,o="itemchange"===i,r=this.isFiltered();n._mute||(n._deferValueSet=!1,n._fetching?(n._renderItems&&n._renderItems(!0),n._triggerListBound()):(r&&n.focus(0),n._createList(),i||!n._values.length||r||n.options.skipUpdateOnBind||n._emptySearch?(n.bound(!0),n._highlightSelectedItems(),n._triggerListBound()):(n._selectingValue=!0,n.bound(!0),n.value(n._values,!0).done(function(){n._selectingValue=!1,n._triggerListBound()}))),(o||"remove"===i)&&(t=v(n._selectedDataItems,e.items),t.changed.length&&(o?n.trigger("selectedItemChange",{items:t.changed}):n.value(n._getValues(t.unchanged)))),n._fetching=!1)},removeAt:function(e){return this._selectedIndexes.splice(e,1),this._values.splice(e,1),{position:e,dataItem:this._selectedDataItems.splice(e,1)[0]}},setValue:function(e){this._values=i(e)},value:function(n,o){var r,a=this;return n===t?a._values.slice():(null===n&&(n=[]),n=i(n),a._valueDeferred&&"resolved"!==a._valueDeferred.state()||(a._valueDeferred=e.Deferred()),r="multiple"===a.options.selectable&&a.select().length&&n.length,!r&&n.length||a.select(-1),a._values=n,(a.bound()&&!a._mute&&!a._deferValueSet||o)&&a._prefetchByValue(n),a._valueDeferred)},_checkValuesOrder:function(e){if(this._removedAddedIndexes&&this._removedAddedIndexes.length===e.length){var t=this._removedAddedIndexes.slice();return this._removedAddedIndexes=null,t}return e},_prefetchByValue:function(e){var n,i,r,a=this,s=a._dataView,l=a._valueGetter,c=a.options.mapValueTo,d=!1,u=[];for(i=0;i<e.length;i++)for(r=0;r<s.length;r++)n=s[r].item,n&&(d=o(n)?e[i]===n:e[i]===l(n),d&&u.push(s[r].index));return u.length===e.length?(a._values=[],a.select(u),t):("function"==typeof a.options.valueMapper?a.options.valueMapper({value:"multiple"===this.options.selectable?e:e[0],success:function(e){"index"===c?a.mapValueToIndex(e):"dataItem"===c&&a.mapValueToDataItem(e)}}):a.value()[0]?(a._selectingValue=!1,a._triggerListBound()):a.select([-1]),t)},mapValueToIndex:function(e){if(e=e===t||e===-1||null===e?[]:i(e),e.length){var n=this._deselect([]).removed;n.length&&this._triggerChange(n,[])}else e=[-1];this.select(e)},mapValueToDataItem:function(n){var o,r,a,s;if(n=n===t||null===n?[]:i(n),n.length){for(o=e.map(this._selectedDataItems,function(e,t){return{index:t,dataItem:e}}),r=e.map(n,function(e,t){return{index:t,dataItem:e}}),this._selectedDataItems=n,this._selectedIndexes=[],a=0;a<this._selectedDataItems.length;a++)s=this._getElementByDataItem(this._selectedDataItems[a]),this._selectedIndexes.push(this._getIndecies(s)[0]),s.addClass(P);this._triggerChange(o,r),this._valueDeferred&&this._valueDeferred.resolve()}else this.select([-1])},deferredRange:function(t){var n=this.dataSource,i=this.itemCount,o=this._rangesList,r=e.Deferred(),a=[],s=Math.floor(t/i)*i,l=Math.ceil(t/i)*i,c=l===s?[l]:[s,l];return e.each(c,function(t,r){var s,l=r+i,c=o[r];c&&c.end===l?s=c.deferred:(s=e.Deferred(),o[r]={end:l,deferred:s},n._multiplePrefetch(r,i,function(){s.resolve()})),a.push(s)}),e.when.apply(e,a).then(function(){r.resolve()}),r},prefetch:function(t){var n=this,i=this.itemCount,o=!n._promisesList.length;return _(n._activeDeferred)||(n._activeDeferred=e.Deferred(),n._promisesList=[]),e.each(t,function(e,t){n._promisesList.push(n.deferredRange(n._getSkip(t,i)))}),o&&e.when.apply(e,n._promisesList).done(function(){n._promisesList=[],n._activeDeferred.resolve()}),n._activeDeferred},_findDataItem:function(e,t){var n,i;if("group"===this.options.type)for(i=0;i<e.length;i++){if(n=e[i].items,!(n.length<=t))return n[t];t-=n.length}return e[t]},_getRange:function(e,t){return this.dataSource._findRange(e,Math.min(e+t,this.dataSource.total()))},dataItemByIndex:function(t){var n=this,i=n.itemCount,o=n._getSkip(t,i),r=this._getRange(o,i);return n._getRange(o,i).length?("group"===n.options.type&&(b.ui.progress(e(n.wrapper),!0),n.mute(function(){n.dataSource.range(o,i,function(){b.ui.progress(e(n.wrapper),!1)}),r=n.dataSource.view()})),n._findDataItem(r,[t-o])):null},selectedDataItems:function(){return this._selectedDataItems.slice()},scrollWith:function(e){this.content.scrollTop(this.content.scrollTop()+e)},scrollTo:function(e){this.content.scrollTop(e)},scrollToIndex:function(e){this.scrollTo(e*this.options.itemHeight)},focus:function(i){var o,r,a,s,l,c,d=this.options.itemHeight,u=this._optionID,h=!0;if(i===t)return s=this.element.find("."+z),s.length?s:null;if("function"==typeof i)for(a=this.dataSource.flatView(),l=0;l<a.length;l++)if(i(a[l])){i=l;break}return i instanceof Array&&(i=n(i)),isNaN(i)?(o=e(i),r=parseInt(e(o).attr("data-offset-index"),10)):(r=i,o=this._getElementByIndex(r)),r===-1?(this.element.find("."+z).removeClass(z),this._focusedIndex=t,t):(o.length?(o.hasClass(z)&&(h=!1),this._focusedIndex!==t&&(s=this._getElementByIndex(this._focusedIndex),s.removeClass(z).removeAttr("id"),h&&this.trigger(W)),this._focusedIndex=r,o.addClass(z).attr("id",u),c=this._getElementLocation(r),"top"===c?this.scrollTo(r*d):"bottom"===c?this.scrollTo(r*d+d-this._screenHeight):"outScreen"===c&&this.scrollTo(r*d),h&&this.trigger(V)):(this._focusedIndex=r,this.items().removeClass(z),this.scrollToIndex(r)),t)},focusIndex:function(){return this._focusedIndex},focusFirst:function(){this.scrollTo(0),this.focus(0)},focusLast:function(){var e=this.dataSource.total();this.scrollTo(this.heightContainer.offsetHeight),this.focus(e-1)},focusPrev:function(){var e,t=this._focusedIndex;return!isNaN(t)&&t>0?(t-=1,this.focus(t),e=this.focus(),e&&e.hasClass("k-loading-item")&&(t+=1,this.focus(t)),t):(t=this.dataSource.total()-1,this.focus(t),t)},focusNext:function(){var e,t=this._focusedIndex,n=this.dataSource.total()-1;return!isNaN(t)&&t<n?(t+=1,this.focus(t),e=this.focus(),e&&e.hasClass("k-loading-item")&&(t-=1,this.focus(t)),t):(t=0,this.focus(t),t)},_triggerChange:function(e,t){e=e||[],t=t||[],(e.length||t.length)&&this.trigger(L,{removed:e,added:t})},select:function(i){var o,r,a,s,l,c,d=this,u="multiple"!==d.options.selectable,h=_(d._activeDeferred),p=this.isFiltered(),f=[];return i===t?d._selectedIndexes.slice():(d._selectDeferred&&"resolved"!==d._selectDeferred.state()||(d._selectDeferred=e.Deferred()),o=d._getIndecies(i),a=u&&!p&&n(o)===n(this._selectedIndexes),f=d._deselectCurrentValues(o),f.length||!o.length||a?(d._triggerChange(f),d._valueDeferred&&d._valueDeferred.resolve().promise(),d._selectDeferred.resolve().promise()):(1===o.length&&o[0]===-1&&(o=[]),r=o,l=d._deselect(o),f=l.removed,o=l.indices,u&&(h=!1,o.length&&(o=[n(o)])),c=function(){var e=d._select(o);(r.length===o.length||u)&&d.focus(o),d._triggerChange(f,e),d._valueDeferred&&d._valueDeferred.resolve(),d._selectDeferred.resolve()},s=d.prefetch(o),h||(s?s.done(c):c()),d._selectDeferred.promise()))},bound:function(e){return e===t?this._listCreated:(this._listCreated=e,t)},mute:function(e){this._mute=!0,x(e(),this),this._mute=!1},setDSFilter:function(t){this._lastDSFilter=e.extend({},t)},isFiltered:function(){return this._lastDSFilter||this.setDSFilter(this.dataSource.filter()),!b.data.Query.compareFilters(this.dataSource.filter(),this._lastDSFilter)},skipUpdate:e.noop,_getElementByIndex:function(t){return this.items().filter(function(n,i){return t===parseInt(e(i).attr("data-offset-index"),10)})},_getElementByDataItem:function(t){var n,i,r,a=this._dataView,s=this._valueGetter;for(r=0;r<a.length;r++)if(i=a[r].item&&o(a[r].item)?a[r].item===t:a[r].item&&t&&s(a[r].item)==s(t)){n=a[r];break}return n?this._getElementByIndex(n.index):e()},_clean:function(){this.result=t,this._lastScrollTop=t,this._skip=t,e(this.heightContainer).remove(),this.heightContainer=t,this.element.empty()},_height:function(){var e=!!this.dataSource.view().length,t=this.options.height,n=this.options.itemHeight,i=this.dataSource.total();return e?t/n>i&&(t=i*n):t=0,t},setScreenHeight:function(){var e=this._height();this.content.height(e),this._screenHeight=e},screenHeight:function(){return this._screenHeight},_getElementLocation:function(e){var t,n=this.content.scrollTop(),i=this._screenHeight,o=this.options.itemHeight,r=e*o,a=r+o,s=n+i;return t=r===n-o||a>n&&r<n?"top":r===s||r<s&&s<a?"bottom":r>=n&&r<=n+(i-o)?"inScreen":"outScreen"},_templates:function(){var e,t,n,i,o=this.options,r={template:o.template,placeholderTemplate:o.placeholderTemplate,groupTemplate:o.groupTemplate,fixedGroupTemplate:o.fixedGroupTemplate};if(o.columns)for(e=0;e<o.columns.length;e++)t=o.columns[e],n=t.field?""+t.field:"text",r["column"+e]=t.template||"#: "+n+"#";for(i in r)"function"!=typeof r[i]&&(r[i]=b.template(r[i]||""));this.templates=r},_generateItems:function(e,t){for(var n,i=[],o=this.options.itemHeight+"px";t-- >0;)n=document.createElement("li"),n.tabIndex=-1,n.className=I+" "+M,n.setAttribute("role","option"),n.style.height=o,n.style.minHeight=o,e.appendChild(n),i.push(n);return i},_saveInitialRanges:function(){var t,n=this.dataSource._ranges,i=e.Deferred();for(i.resolve(),this._rangesList={},t=0;t<n.length;t++)this._rangesList[n[t].start]={end:n[t].end,deferred:i}},_createList:function(){var t=this,n=t.content.get(0),i=t.options,o=t.dataSource;t.bound()&&t._clean(),t._saveInitialRanges(),t._buildValueGetter(),t.setScreenHeight(),t.itemCount=r(t._screenHeight,i.listScreens,i.itemHeight),t.itemCount>o.total()&&(t.itemCount=o.total()),t._items=t._generateItems(t.element[0],t.itemCount),t._setHeight(i.itemHeight*o.total()),t.options.type=(o.group()||[]).length?"group":"flat","flat"===t.options.type?t.header.hide():t.header.show(),t.getter=t._getter(function(){t._renderItems(!0)}),t._onScroll=function(e,n){var i=t._listItems(t.getter);return t._fixedHeader(e,i(e,n))},t._renderItems=t._whenChanged(d(n,t._onScroll),u(t._reorderList(t._items,e.proxy(g,t)))),t._renderItems(),t._calculateGroupPadding(t._screenHeight),t._calculateColumnsHeaderPadding()},_setHeight:function(e){var t,n,i=this.heightContainer;if(i?t=i.offsetHeight:i=this.heightContainer=a(this.content[0],F),e!==t)for(i.innerHTML="";e>0;)n=Math.min(e,25e4),a(i).style.height=n+"px",e-=n},_getter:function(){var e=null,t=this.dataSource,n=t.skip(),i=this.options.type,o=this.itemCount,r={};return t.pageSize()<o&&this.mute(function(){t.pageSize(o)}),function(a,s){var l,c,d,u,h,p,f,g,m=this;if(t.inRange(s,o)){if(n!==s&&this.mute(function(){t.range(s,o),n=s}),"group"===i){if(!r[s])for(c=r[s]=[],d=t.view(),u=0,h=d.length;u<h;u++)for(p=d[u],f=0,g=p.items.length;f<g;f++)c.push({item:p.items[f],group:p.value});l=r[s][a-s]}else l=t.view()[a-s];return l}return e!==s&&(e=s,n=s,m._getterDeferred&&m._getterDeferred.reject(),m._getterDeferred=m.deferredRange(s),m._getterDeferred.then(function(){var e=m._indexConstraint(m.content[0].scrollTop);m._getterDeferred=null,s<=e&&e<=s+o&&(m._fetching=!0,t.range(s,o))})),null}},_fixedHeader:function(e,t){var n,i,o=this.currentVisibleGroup,r=this.options.itemHeight,a=Math.floor((e-t.top)/r),s=t.items[a];return s&&s.item&&(n=s.group,n!==o&&(i=n||"",this.header.html(this.templates.fixedGroupTemplate(i)),this.currentVisibleGroup=n)),t},_itemMapper:function(e,t,n){var i,r,a=this.options.type,s=this.options.itemHeight,l=this._focusedIndex,c=!1,d=!1,u=!1,h=null,p=!1,f=this._valueGetter;if("group"===a&&(e&&(u=0===t||this._currentGroup!==!1&&this._currentGroup!==e.group,this._currentGroup=e.group),h=e?e.group:null,e=e?e.item:null),"dataItem"===this.options.mapValueTo&&this._selectedDataItems.length&&e){for(i=0;i<this._selectedDataItems.length;i++)if(p=f(this._selectedDataItems[i])===f(e)){c=!0;break}}else if(!this.isFiltered()&&n.length&&e)for(r=0;r<n.length;r++)if(p=o(e)?n[r]===e:n[r]===f(e)){n.splice(r,1),c=!0;break}return l===t&&(d=!0),{item:e?e:null,group:h,newGroup:u,selected:c,current:d,index:t,top:t*s}},_range:function(e){var t,n,i,o=this.itemCount,r=this._values.slice(),a=[];for(this._view={},this._currentGroup=!1,n=e,i=e+o;n<i;n++)t=this._itemMapper(this.getter(n,e),n,r),a[a.length-1]&&(a[a.length-1].isLastGroupedItem=t.newGroup),a.push(t),this._view[t.index]=t;return this._dataView=a,a},_getDataItemsCollection:function(e,t){var n=this._range(this._listIndex(e,t));return{index:n.length?n[0].index:0,top:n.length?n[0].top:0,items:n}},_listItems:function(){var t=this._screenHeight,n=this.options,i=c(n,t);return e.proxy(function(e,t){var n=this.result,o=this._lastScrollTop;return!t&&n&&i(n,e,o)||(n=this._getDataItemsCollection(e,o)),this._lastScrollTop=e,this.result=n,n},this)},_whenChanged:function(e,t){var n;return function(i){var o=e(i);o!==n&&(n=o,t(o,i))}},_reorderList:function(t,n){var i=this,o=t.length,r=-(1/0);return n=e.proxy(p(n,this.templates),this),function(e,a,s){var l,c,d=a-r;s||Math.abs(d)>=o?(l=t,c=e):(l=f(t,d),c=d>0?e.slice(-d):e.slice(0,-d)),n(l,c,i.bound()),r=a}},_bufferSizes:function(){var e=this.options;return l(this._screenHeight,e.listScreens,e.oppositeBuffer)},_indexConstraint:function(e){var t=this.itemCount,n=this.options.itemHeight,i=this.dataSource.total();return Math.min(Math.max(i-t,0),Math.max(0,Math.floor(e/n)))},_listIndex:function(e,t){var n,i=this._bufferSizes();return n=e-(e>t?i.down:i.up),this._indexConstraint(n)},_selectable:function(){this.options.selectable&&(this._selectProxy=e.proxy(this,"_clickHandler"),this.element.on(H+U,"."+I,this._selectProxy))},getElementIndex:function(e){return e instanceof jQuery?parseInt(e.attr("data-offset-index"),10):t},_getIndecies:function(e){var t,n,i,o=[];if("function"==typeof e)for(t=this.dataSource.flatView(),n=0;n<t.length;n++)if(e(t[n])){o.push(n);break}return"number"==typeof e&&o.push(e),i=this.getElementIndex(e),isNaN(i)||o.push(i),e instanceof Array&&(o=e),o},_deselect:function(n){var i,r,a,s,l,c,d,u=[],h=this._selectedIndexes,p=this._selectedDataItems,f=0,g=this.options.selectable,m=0,v=this._valueGetter,_=null;if(n=n.slice(),g!==!0&&n.length){if("multiple"===g)for(c=0;c<n.length;c++){if(_=null,f=e.inArray(n[c],h),r=this.dataItemByIndex(n[c]),f===-1&&r)for(d=0;d<p.length;d++)s=o(r)?p[d]===r:v(p[d])===v(r),s&&(a=this._getElementByIndex(n[c]),_=this._deselectSingleItem(a,d,n[c],m));else i=h[f],i!==t&&(a=this._getElementByIndex(i),_=this._deselectSingleItem(a,f,i,m));_&&(n.splice(c,1),u.push(_),m++,c--)}}else{for(l=0;l<h.length;l++)h[l]!==t?this._getElementByIndex(h[l]).removeClass(P):p[l]&&this._getElementByDataItem(p[l]).removeClass(P),u.push({index:h[l],position:l,dataItem:p[l]});this._values=[],this._selectedDataItems=[],this._selectedIndexes=[]}return{indices:n,removed:u}},_deselectSingleItem:function(e,t,n,i){var o;if(e.hasClass("k-state-selected"))return e.removeClass(P),this._values.splice(t,1),this._selectedIndexes.splice(t,1),o=this._selectedDataItems.splice(t,1)[0],{index:n,position:t+i,dataItem:o}},_deselectCurrentValues:function(t){var n,i,o,r,a=this.element[0].children,s=this._values,l=[],c=0;if("multiple"!==this.options.selectable||!this.isFiltered())return[];if(t[0]===-1)return e(a).removeClass("k-state-selected"),l=e.map(this._selectedDataItems.slice(0),function(e,t){return{dataItem:e,position:t}}),this._selectedIndexes=[],this._selectedDataItems=[],this._values=[],l;for(;c<t.length;c++){for(o=-1,i=t[c],this.dataItemByIndex(i)&&(n=this._valueGetter(this.dataItemByIndex(i))),r=0;r<s.length;r++)if(n==s[r]){o=r;break}o>-1&&(l.push(this.removeAt(o)),e(a[i]).removeClass("k-state-selected"))}return l},_getSkip:function(e,t){var n=e<t?1:Math.floor(e/t)+1;return(n-1)*t},_select:function(t){var n,i,r=this,a="multiple"!==this.options.selectable,s=this.dataSource,l=this.itemCount,c=this._valueGetter,d=[];return a&&(r._selectedIndexes=[],r._selectedDataItems=[],r._values=[]),i=s.skip(),e.each(t,function(e,t){var a=r._getSkip(t,l);r.mute(function(){s.range(a,l),n=r._findDataItem(s.view(),[t-a]),r._selectedIndexes.push(t),r._selectedDataItems.push(n),r._values.push(o(n)?n:c(n)),d.push({index:t,dataItem:n}),r._getElementByIndex(t).addClass(P),s.range(i,l)})}),r._values=r._checkValuesOrder(r._values),d},_clickHandler:function(t){var n=e(t.currentTarget);!t.isDefaultPrevented()&&n.attr("data-uid")&&this.trigger(H,{item:n})},_buildValueGetter:function(){this._valueGetter=b.getter(this.options.dataValueField)},_calculateGroupPadding:function(e){var t=this.items().first(),n=this.header,i=0;n[0]&&"none"!==n[0].style.display&&("auto"!==e&&(i=b.support.scrollbar()),i+=parseFloat(t.css("border-right-width"),10)+parseFloat(t.children(".k-group").css("right"),10),n.css("padding-right",i))},_calculateColumnsHeaderPadding:function(){var e,t,n,i;this.options.columns&&this.options.columns.length&&(e=b.support.isRtl(this.wrapper),t=b.support.scrollbar(),n=this.content.parent().parent().find(".k-grid-header"),i=this.dataSource.total(),n.css(e?"padding-left":"padding-right",i?t:0))}});b.ui.VirtualList=q,b.ui.plugin(q)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.autocomplete.min",["kendo.list.min","kendo.mobile.scroller.min","kendo.virtuallist.min"],e)}(function(){return function(e,t){function n(e,t,n){return n?t.substring(0,e).split(n).length-1:0}function i(e,t,i){return t.split(i)[n(e,t,i)]}function o(e,t,i,o,r){var a=t.split(o);return a.splice(n(e,t,o),1,i),o&&""!==a[a.length-1]&&a.push(""),a.join(r)}var r=window.kendo,a=r.support,s=r.caret,l=r._activeElement,c=a.placeholder,d=r.ui,u=d.List,h=r.keys,p=r.data.DataSource,f="aria-disabled",g="aria-readonly",m="change",v="k-state-default",_="disabled",b="readonly",w="k-state-focused",k="k-state-selected",y="k-state-disabled",x="off",C="k-state-hover",S=".kendoAutoComplete",T="mouseenter"+S+" mouseleave"+S,D=e.proxy,A=u.extend({init:function(t,n){var i,o,a=this;a.ns=S,n=e.isArray(n)?{dataSource:n}:n,u.fn.init.call(a,t,n),t=a.element,n=a.options,n.placeholder=n.placeholder||t.attr("placeholder"),c&&t.attr("placeholder",n.placeholder),a._wrapper(),a._loader(),a._clearButton(),a._dataSource(),a._ignoreCase(),t[0].type="text",i=a.wrapper,a._popup(),t.addClass("k-input").on("keydown"+S,D(a._keydown,a)).on("keypress"+S,D(a._keypress,a)).on("input"+S,D(a._search,a)).on("paste"+S,D(a._search,a)).on("focus"+S,function(){a._prev=a._accessor(),a._oldText=a._prev,a._placeholder(!1),i.addClass(w)}).on("focusout"+S,function(){a._change(),a._placeholder(),a.close(),i.removeClass(w)}).attr({autocomplete:x,role:"textbox","aria-haspopup":!0}),a._clear.on("click"+S+" touchend"+S,D(a._clearValue,a)),a._enable(),a._old=a._accessor(),t[0].id&&t.attr("aria-owns",a.ul[0].id),a._aria(),a._placeholder(),a._initList(),o=e(a.element).parents("fieldset").is(":disabled"),o&&a.enable(!1),a.listView.bind("click",function(e){e.preventDefault()}),a._resetFocusItemHandler=e.proxy(a._resetFocusItem,a),r.notify(a),a._toggleCloseVisibility()},options:{name:"AutoComplete",enabled:!0,suggest:!1,template:"",groupTemplate:"#:data#",fixedGroupTemplate:"#:data#",dataTextField:"",minLength:1,enforceMinLength:!1,delay:200,height:200,filter:"startswith",ignoreCase:!0,highlightFirst:!1,separator:null,placeholder:"",animation:{},virtual:!1,value:null,clearButton:!0,autoWidth:!1,popup:null},_dataSource:function(){var e=this;e.dataSource&&e._refreshHandler?e._unbindDataSource():(e._progressHandler=D(e._showBusy,e),e._errorHandler=D(e._hideBusy,e)),e.dataSource=p.create(e.options.dataSource).bind("progress",e._progressHandler).bind("error",e._errorHandler)},setDataSource:function(e){this.options.dataSource=e,this._dataSource(),this.listView.setDataSource(this.dataSource)},events:["open","close",m,"select","filtering","dataBinding","dataBound"],setOptions:function(e){var t=this._listOptions(e);u.fn.setOptions.call(this,e),this.listView.setOptions(t),this._accessors(),this._aria(),this._clearButton()},_listOptions:function(t){var n=u.fn._listOptions.call(this,e.extend(t,{skipUpdateOnBind:!0}));return n.dataValueField=n.dataTextField,n.selectedItemChange=null,n},_editable:function(e){var t=this,n=t.element,i=t.wrapper.off(S),o=e.readonly,r=e.disable;o||r?(i.addClass(r?y:v).removeClass(r?v:y),n.attr(_,r).attr(b,o).attr(f,r).attr(g,o)):(i.addClass(v).removeClass(y).on(T,t._toggleHover),n.removeAttr(_).removeAttr(b).attr(f,!1).attr(g,!1))},close:function(){var e=this,t=e.listView.focus();t&&t.removeClass(k),e.popup.close()},destroy:function(){var e=this;e.element.off(S),e._clear.off(S),e.wrapper.off(S),u.fn.destroy.call(e)},refresh:function(){this.listView.refresh()},select:function(e){this._select(e)},search:function(t){var n,o=this,r=o.options,a=r.ignoreCase,l=o._separator(),c=o.dataSource.options.accentFoldingFiltering;t=t||o._accessor(),clearTimeout(o._typingTimeout),l&&(t=i(s(o.element)[0],t,l)),n=t.length,(!r.enforceMinLength&&!n||n>=r.minLength)&&(o._open=!0,o._mute(function(){this.listView.value([])}),o._filterSource({value:a?c?t.toLocaleLowerCase(c):t.toLowerCase():t,operator:r.filter,field:r.dataTextField,ignoreCase:a}),o.one("close",e.proxy(o._unifySeparators,o))),o._toggleCloseVisibility()},suggest:function(e){var i,o=this,r=o._last,a=o._accessor(),c=o.element[0],d=s(c)[0],p=o._separator(),f=a.split(p),g=n(d,a,p),m=d,v=o.dataSource.options.accentFoldingFiltering;return r==h.BACKSPACE||r==h.DELETE?(o._last=t,t):(e=e||"","string"!=typeof e&&(e[0]&&(e=o.dataSource.view()[u.inArray(e[0],o.ul[0])]),e=e?o._text(e):""),d<=0&&(d=(v?a.toLocaleLowerCase(v):a.toLowerCase()).indexOf(v?e.toLocaleLowerCase(v):e.toLowerCase())+1),i=a.substring(0,d).lastIndexOf(p),i=i>-1?d-(i+p.length):d,a=f[g].substring(0,i),e&&(e=""+e,i=(v?e.toLocaleLowerCase(v):e.toLowerCase()).indexOf(v?a.toLocaleLowerCase(v):a.toLowerCase()),i>-1&&(e=e.substring(i+a.length),m=d+e.length,a+=e),p&&""!==f[f.length-1]&&f.push("")),f[g]=a,o._accessor(f.join(p||"")),c===l()&&s(c,d,m),t)},value:function(e){return e===t?this._accessor():(this.listView.value(e),this._accessor(e),this._old=this._accessor(),this._oldText=this._accessor(),this._toggleCloseVisibility(),t)},_click:function(e){var n=e.item,i=this,o=i.element,r=i.listView.dataItemByIndex(i.listView.getElementIndex(n));return e.preventDefault(),i._active=!0,i.trigger("select",{dataItem:r,item:n})?(i.close(),t):(i._oldText=o.val(),i._select(n).done(function(){i._blur(),s(o,o.val().length)}),t)},_clearText:e.noop,_resetFocusItem:function(){var e=this.options.highlightFirst?0:-1;this.options.virtual&&this.listView.scrollTo(0),this.listView.focus(e)},_listBound:function(){var e,n=this,i=n.popup,o=n.options,r=n.dataSource.flatView(),a=r.length,s=n.dataSource._group.length,c=n.element[0]===l();n._renderFooter(),n._renderNoData(),n._toggleNoData(!a),n._toggleHeader(!!s&&!!a),n._resizePopup(),i.position(),a&&o.suggest&&c&&n.suggest(r[0]),n._open&&(n._open=!1,e=n._allowOpening()?"open":"close",n._typingTimeout&&!c&&(e="close"),a&&(n._resetFocusItem(),o.virtual&&n.popup.unbind("activate",n._resetFocusItemHandler).one("activate",n._resetFocusItemHandler)),i[e](),n._typingTimeout=t),n._touchScroller&&n._touchScroller.reset(),n._hideBusy(),n._makeUnselectable(),n.trigger("dataBound")},_mute:function(e){this._muted=!0,e.call(this),this._muted=!1},_listChange:function(){var e=this._active||this.element[0]===l();e&&!this._muted&&this._selectValue(this.listView.selectedDataItems()[0])},_selectValue:function(e){var t=this._separator(),n="";e&&(n=this._text(e)),null===n&&(n=""),t&&(n=o(s(this.element)[0],this._accessor(),n,t,this._defaultSeparator())),this._prev=n,this._accessor(n),this._placeholder()},_unifySeparators:function(){return this._accessor(this.value().split(this._separator()).join(this._defaultSeparator())),this},_preselect:function(e,t){this._inputValue(t),this._accessor(e),this._old=this.oldText=this._accessor(),this.listView.setValue(e),this._placeholder()},_change:function(){var e=this,t=e._unifySeparators().value(),n=t!==u.unifyType(e._old,typeof t),i=n&&!e._typing,o=e._oldText!==t;e._old=t,e._oldText=t,(i||o)&&e.element.trigger(m),n&&e.trigger(m),e.typing=!1,e._toggleCloseVisibility()},_accessor:function(e){var n=this,i=n.element[0];return e===t?(e=i.value,i.className.indexOf("k-readonly")>-1&&e===n.options.placeholder?"":e):(i.value=null===e?"":e,n._placeholder(),t)},_keydown:function(e){var t,n,i=this,o=e.keyCode,r=i.listView,a=i.popup.visible(),s=r.focus();if(i._last=o,o===h.DOWN)a?this._move(s?"focusNext":"focusFirst"):i.value()&&i._filterSource({value:i.ignoreCase?i.value().toLowerCase():i.value(),operator:i.options.filter,field:i.options.dataTextField,ignoreCase:i.ignoreCase}).done(function(){i._allowOpening()&&(i._resetFocusItem(),i.popup.open())}),e.preventDefault();else if(o===h.UP)a&&this._move(s?"focusPrev":"focusLast"),e.preventDefault();else if(o===h.HOME)this._move("focusFirst");else if(o===h.END)this._move("focusLast");else if(o===h.ENTER||o===h.TAB){if(o===h.ENTER&&a&&e.preventDefault(),a&&s){if(t=r.dataItemByIndex(r.getElementIndex(s)),i.trigger("select",{dataItem:t,item:s}))return;this._select(s)}this._blur()}else o===h.ESC?(a?e.preventDefault():i._clearValue(),i.close()):!i.popup.visible()||o!==h.PAGEDOWN&&o!==h.PAGEUP?(i.popup._hovered=!0,i._search()):(e.preventDefault(),n=o===h.PAGEDOWN?1:-1,r.scrollWith(n*r.screenHeight()))},_keypress:function(){this._oldText=this.element.val(),this._typing=!0},_move:function(e){this.listView[e](),this.options.suggest&&this.suggest(this.listView.focus())},_hideBusy:function(){var e=this;clearTimeout(e._busy),e._loading.hide(),e.element.attr("aria-busy",!1),e._busy=null,e._showClear()},_showBusy:function(){var e=this;e._busy||(e._busy=setTimeout(function(){e.element.attr("aria-busy",!0),e._loading.show(),e._hideClear()},100))},_placeholder:function(e){if(!c){var n,i=this,o=i.element,r=i.options.placeholder;if(r){if(n=o.val(),e===t&&(e=!n),e||(r=n!==r?n:""),n===i._old&&!e)return;o.toggleClass("k-readonly",e).val(r),r||o[0]!==document.activeElement||s(o[0],0,0)}}},_separator:function(){var e=this.options.separator;return e instanceof Array?RegExp(e.join("|"),"gi"):e},_defaultSeparator:function(){var e=this.options.separator;return e instanceof Array?e[0]:e},_inputValue:function(){return this.element.val()},_search:function(){var e=this;clearTimeout(e._typingTimeout),e._typingTimeout=setTimeout(function(){e._prev!==e._accessor()&&(e._prev=e._accessor(),e.search())},e.options.delay)},_select:function(e){var t=this;return t._active=!0,t.listView.select(e).done(function(){t._active=!1})},_loader:function(){this._loading=e('<span class="k-icon k-i-loading" style="display:none"></span>').insertAfter(this.element)},_clearButton:function(){u.fn._clearButton.call(this),this.options.clearButton&&(this._clear.insertAfter(this.element),this.wrapper.addClass("k-autocomplete-clearable"))},_toggleHover:function(t){e(t.currentTarget).toggleClass(C,"mouseenter"===t.type)},_toggleCloseVisibility:function(){this.value()?this._showClear():this._hideClear()},_wrapper:function(){var t,n=this,i=n.element,o=i[0];t=i.parent(),t.is("span.k-widget")||(t=i.wrap("<span />").parent()),t.attr("tabindex",-1),t.attr("role","presentation"),t[0].style.cssText=o.style.cssText,i.css({width:"",height:o.style.height}),n._focused=n.element,n.wrapper=t.addClass("k-widget k-autocomplete").addClass(o.className),n._inputWrapper=e(t[0])}});d.plugin(A)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dropdownlist.min",["kendo.list.min","kendo.mobile.scroller.min","kendo.virtuallist.min"],e)}(function(){return function(e,t){function n(e,t,n){for(var i,o=0,r=t.length-1;o<r;++o)i=t[o],i in e||(e[i]={}),e=e[i];e[t[r]]=n}function i(e,t){return e>=t&&(e-=t),e}function o(e,t){for(var n=0;n<e.length;n++)if(e.charAt(n)!==t)return!1;return!0}var r=window.kendo,a=r.ui,s=a.List,l=a.Select,c=r.support,d=r._activeElement,u=r.data.ObservableObject,h=r.keys,p=".kendoDropDownList",f=p+"FocusEvent",g="disabled",m="readonly",v="change",_="k-state-focused",b="k-state-default",w="k-state-disabled",k="aria-disabled",y="click"+p+" touchend"+p,x="mouseenter"+p+" mouseleave"+p,C="tabindex",S="filter",T="accept",D="The `optionLabel` option is not valid due to missing fields. Define a custom optionLabel as shown here http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#configuration-optionLabel",A=e.proxy,E=l.extend({init:function(n,i){var o,a,s,c=this,d=i&&i.index;c.ns=p,i=e.isArray(i)?{dataSource:i}:i,l.fn.init.call(c,n,i),i=c.options,n=c.element.on("focus"+p,A(c._focusHandler,c)),c._focusInputHandler=e.proxy(c._focusInput,c),c.optionLabel=e(),c._optionLabel(),c._inputTemplate(),c._reset(),c._prev="",c._word="",c._wrapper(),c._tabindex(),c.wrapper.data(C,c.wrapper.attr(C)),c._span(),c._popup(),c._mobile(),c._dataSource(),c._ignoreCase(),c._filterHeader(),c._aria(),c.wrapper.attr("aria-live","polite"),c._enable(),c._attachFocusHandlers(),c._oldIndex=c.selectedIndex=-1,d!==t&&(i.index=d),c._initialIndex=i.index,c.requireValueMapper(c.options),c._initList(),c._cascade(),c.one("set",function(e){!e.sender.listView.bound()&&c.hasOptionLabel()&&c._textAccessor(c._optionLabelText())}),i.autoBind?c.dataSource.fetch():c.selectedIndex===-1&&(a=i.text||"",a||(o=i.optionLabel,o&&0===i.index?a=o:c._isSelect&&(a=n.children(":selected").text())),c._textAccessor(a)),s=e(c.element).parents("fieldset").is(":disabled"),s&&c.enable(!1),c.listView.bind("click",function(e){e.preventDefault()}),r.notify(c)},options:{name:"DropDownList",enabled:!0,autoBind:!0,index:0,text:null,value:null,delay:500,height:200,dataTextField:"",dataValueField:"",optionLabel:"",cascadeFrom:"",cascadeFromField:"",cascadeFromParentField:"",ignoreCase:!0,animation:{},filter:"none",minLength:1,enforceMinLength:!1,virtual:!1,template:null,valueTemplate:null,optionLabelTemplate:null,groupTemplate:"#:data#",fixedGroupTemplate:"#:data#",autoWidth:!1,popup:null},events:["open","close",v,"select","filtering","dataBinding","dataBound","cascade","set"],setOptions:function(e){l.fn.setOptions.call(this,e),this.listView.setOptions(this._listOptions(e)),this._optionLabel(),this._inputTemplate(),this._accessors(),this._filterHeader(),this._enable(),this._aria(),!this.value()&&this.hasOptionLabel()&&this.select(0)},destroy:function(){var e=this;l.fn.destroy.call(e),e.wrapper.off(p),e.wrapper.off(f),e.element.off(p),e._inputWrapper.off(p),e._arrow.off(),e._arrow=null,e._arrowIcon=null,e.optionLabel.off(),e.filterInput&&e.filterInput.off(f)},open:function(){var e=this,t=!!e.dataSource.filter()&&e.dataSource.filter().filters.length>0;e.popup.visible()||(e.listView.bound()&&e._state!==T?e._allowOpening()&&(e._focusFilter=!0,e.popup.one("activate",e._focusInputHandler),e.popup._hovered=!0,e.popup.open(),e._resizeFilterInput(),e._focusItem()):(e._open=!0,e._state="rebind",e.filterInput&&(e.filterInput.val(""),e._prev=""),e.filterInput&&1!==e.options.minLength&&!t?(e.refresh(),e.popup.one("activate",e._focusInputHandler),e.popup.open(),e._resizeFilterInput()):e._filterSource()))},_focusInput:function(){this._focusElement(this.filterInput)},_resizeFilterInput:function(){var e,t,n=this.filterInput,i=this._prevent;n&&(e=this.filterInput[0]===d(),t=r.caret(this.filterInput[0])[0],this._prevent=!0,n.css("display","none").css("width",this.popup.element.css("width")).css("display","inline-block"),e&&(n.focus(),r.caret(n[0],t)),this._prevent=i)},_allowOpening:function(){return this.hasOptionLabel()||this.filterInput||l.fn._allowOpening.call(this)},toggle:function(e){this._toggle(e,!0)},current:function(e){var n;return e===t?(n=this.listView.focus(),!n&&0===this.selectedIndex&&this.hasOptionLabel()?this.optionLabel:n):(this._focus(e),t)},dataItem:function(n){var i=this,o=null;if(null===n)return n;if(n===t)o=i.listView.selectedDataItems()[0];else{if("number"!=typeof n){if(i.options.virtual)return i.dataSource.getByUid(e(n).data("uid"));n=n.hasClass("k-list-optionlabel")?-1:e(i.items()).index(n)}else i.hasOptionLabel()&&(n-=1);o=i.dataSource.flatView()[n]}return o||(o=i._optionLabelDataItem()),o},refresh:function(){this.listView.refresh()},text:function(e){var n,i=this,o=i.options.ignoreCase;return e=null===e?"":e, +e===t?i._textAccessor():"string"!=typeof e?(i._textAccessor(e),t):(n=o?e.toLowerCase():e,i._select(function(e){return e=i._text(e),o&&(e=(e+"").toLowerCase()),e===n}).done(function(){i._textAccessor(i.dataItem()||e)}),t)},_clearFilter:function(){e(this.filterInput).val(""),l.fn._clearFilter.call(this)},value:function(e){var n=this,i=n.listView,o=n.dataSource;return e===t?(e=n._accessor()||n.listView.value()[0],e===t||null===e?"":e):(n.requireValueMapper(n.options,e),!e&&n.hasOptionLabel()||(n._initialIndex=null),this.trigger("set",{value:e}),n._request&&n.options.cascadeFrom&&n.listView.bound()?(n._valueSetter&&o.unbind(v,n._valueSetter),n._valueSetter=A(function(){n.value(e)},n),o.one(v,n._valueSetter),t):(n._isFilterEnabled()&&i.bound()&&i.isFiltered()?n._clearFilter():n._fetchData(),i.value(e).done(function(){n._old=n._valueBeforeCascade=n._accessor(),n._oldIndex=n.selectedIndex}),t))},hasOptionLabel:function(){return this.optionLabel&&!!this.optionLabel[0]},_optionLabel:function(){var n=this,i=n.options,o=i.optionLabel,a=i.optionLabelTemplate;return o?(a||(a="#:",a+="string"==typeof o?"data":r.expr(i.dataTextField,"data"),a+="#"),"function"!=typeof a&&(a=r.template(a)),n.optionLabelTemplate=a,n.hasOptionLabel()||(n.optionLabel=e('<div class="k-list-optionlabel"></div>').prependTo(n.list)),n.optionLabel.html(a(o)).off().on(y,A(n._click,n)).on(x,n._toggleHover),n.angular("compile",function(){return{elements:n.optionLabel,data:[{dataItem:n._optionLabelDataItem()}]}}),t):(n.optionLabel.off().remove(),n.optionLabel=e(),t)},_optionLabelText:function(){var e=this.options.optionLabel;return"string"==typeof e?e:this._text(e)},_optionLabelDataItem:function(){var n=this,i=n.options.optionLabel;return n.hasOptionLabel()?e.isPlainObject(i)?new u(i):n._assignInstance(n._optionLabelText(),""):t},_buildOptions:function(e){var n,i,o,r=this;r._isSelect&&(n=r.listView.value()[0],i=r._optionLabelDataItem(),o=i&&r._value(i),n!==t&&null!==n||(n=""),i&&(o!==t&&null!==o||(o=""),i='<option value="'+o+'">'+r._text(i)+"</option>"),r._options(e,i,n),n!==s.unifyType(r._accessor(),typeof n)&&(r._customOption=null,r._custom(n)))},_listBound:function(){var e,t=this,n=t._initialIndex,i=t._state===S,o=t.dataSource.flatView();t._presetValue=!1,t._renderFooter(),t._renderNoData(),t._toggleNoData(!o.length),t._resizePopup(!0),t.popup.position(),t._buildOptions(o),t._makeUnselectable(),i||(t._open&&t.toggle(t._allowOpening()),t._open=!1,t._fetch||(o.length?(!t.listView.value().length&&n>-1&&null!==n&&t.select(n),t._initialIndex=null,e=t.listView.selectedDataItems()[0],e&&t.text()!==t._text(e)&&t._selectValue(e)):t._textAccessor()!==t._optionLabelText()&&(t.listView.value(""),t._selectValue(null),t._oldIndex=t.selectedIndex))),t._hideBusy(),t.trigger("dataBound")},_listChange:function(){this._selectValue(this.listView.selectedDataItems()[0]),(this._presetValue||this._old&&this._oldIndex===-1)&&(this._oldIndex=this.selectedIndex)},_filterPaste:function(){this._search()},_attachFocusHandlers:function(){var e=this,t=e.wrapper;t.on("focusin"+f,A(e._focusinHandler,e)).on("focusout"+f,A(e._focusoutHandler,e)),e.filterInput&&e.filterInput.on("focusin"+f,A(e._focusinHandler,e)).on("focusout"+f,A(e._focusoutHandler,e))},_focusHandler:function(){this.wrapper.focus()},_focusinHandler:function(){this._inputWrapper.addClass(_),this._prevent=!1},_focusoutHandler:function(){var e=this,t=window.self!==window.top;e._prevent||(clearTimeout(e._typingTimeout),c.mobileOS.ios&&t?e._change():e._blur(),e._inputWrapper.removeClass(_),e._prevent=!0,e._open=!1,e.element.blur())},_wrapperMousedown:function(){this._prevent=!!this.filterInput},_wrapperClick:function(e){e.preventDefault(),this.popup.unbind("activate",this._focusInputHandler),this._focused=this.wrapper,this._prevent=!1,this._toggle()},_editable:function(e){var t=this,n=t.element,i=e.disable,o=e.readonly,a=t.wrapper.add(t.filterInput).off(p),s=t._inputWrapper.off(x);o||i?i?(a.removeAttr(C),s.addClass(w).removeClass(b)):s.addClass(b).removeClass(w):(n.removeAttr(g).removeAttr(m),s.addClass(b).removeClass(w).on(x,t._toggleHover),a.attr(C,a.data(C)).attr(k,!1).on("keydown"+p,A(t._keydown,t)).on(r.support.mousedown+p,A(t._wrapperMousedown,t)).on("paste"+p,A(t._filterPaste,t)),t.wrapper.on("click"+p,A(t._wrapperClick,t)),t.filterInput?a.on("input"+p,A(t._search,t)):a.on("keypress"+p,A(t._keypress,t))),n.attr(g,i).attr(m,o),a.attr(k,i)},_keydown:function(e){var n,i,o,r=this,a=e.keyCode,s=e.altKey,l=r.popup.visible();if(r.filterInput&&(n=r.filterInput[0]===d()),a===h.LEFT?(a=h.UP,i=!0):a===h.RIGHT&&(a=h.DOWN,i=!0),!i||!n){if(e.keyCode=a,(s&&a===h.UP||a===h.ESC)&&r._focusElement(r.wrapper),r._state===S&&a===h.ESC&&(r._clearFilter(),r._open=!1,r._state=T),a===h.ENTER&&r._typingTimeout&&r.filterInput&&l)return e.preventDefault(),t;if(a!==h.SPACEBAR||n||(r.toggle(!l),e.preventDefault()),i=r._move(e),!i){if((!l||!r.filterInput)&&(o=r._focus(),a===h.HOME?(i=!0,r._firstItem()):a===h.END&&(i=!0,r._lastItem()),i)){if(r.trigger("select",{dataItem:r._getElementDataItem(r._focus()),item:r._focus()}))return r._focus(o),t;r._select(r._focus(),!0).done(function(){l||r._blur()}),e.preventDefault()}s||i||!r.filterInput||r._search()}}},_matchText:function(e,n){var i=this.options.ignoreCase;return e!==t&&null!==e&&(e+="",i&&(e=e.toLowerCase()),0===e.indexOf(n))},_shuffleData:function(e,t){var n=this._optionLabelDataItem();return n&&(e=[n].concat(e)),e.slice(t).concat(e.slice(0,t))},_selectNext:function(){var e,t,n,r=this,a=r.dataSource.flatView(),s=a.length+(r.hasOptionLabel()?1:0),l=o(r._word,r._last),c=r.selectedIndex;for(c===-1?c=0:(c+=l?1:0,c=i(c,s)),a=a.toJSON?a.toJSON():a.slice(),a=r._shuffleData(a,c),n=0;n<s&&(t=r._text(a[n]),!l||!r._matchText(t,r._last))&&!r._matchText(t,r._word);n++);n!==s&&(e=r._focus(),r._select(i(c+n,s)).done(function(){var t=function(){r.popup.visible()||r._change()};r.trigger("select",{dataItem:r._getElementDataItem(r._focus()),item:r._focus()})?r._select(e).done(t):t()}))},_keypress:function(e){var t,n=this;0!==e.which&&e.keyCode!==r.keys.ENTER&&(t=String.fromCharCode(e.charCode||e.keyCode),n.options.ignoreCase&&(t=t.toLowerCase())," "===t&&e.preventDefault(),n._word+=t,n._last=t,n._search())},_popupOpen:function(){var e=this.popup;e.wrapper=r.wrap(e.element),e.element.closest(".km-root")[0]&&(e.wrapper.addClass("km-popup km-widget"),this.wrapper.addClass("km-widget"))},_popup:function(){l.fn._popup.call(this),this.popup.one("open",A(this._popupOpen,this))},_getElementDataItem:function(e){return e&&e[0]?e[0]===this.optionLabel[0]?this._optionLabelDataItem():this.listView.dataItemByIndex(this.listView.getElementIndex(e)):null},_click:function(n){var i=this,o=n.item||e(n.currentTarget);return n.preventDefault(),i.trigger("select",{dataItem:i._getElementDataItem(o),item:o})?(i.close(),t):(i._userTriggered=!0,i._select(o).done(function(){i._focusElement(i.wrapper),i._blur()}),t)},_focusElement:function(e){var t=d(),n=this.wrapper,i=this.filterInput,o=e===i?n:i,r=c.mobileOS&&(c.touch||c.MSPointers||c.pointers);i&&i[0]===e[0]&&r||i&&(o[0]===t||this._focusFilter)&&(this._focusFilter=!1,this._prevent=!0,this._focused=e.focus())},_searchByWord:function(e){var t,n;e&&(t=this,n=t.options.ignoreCase,n&&(e=e.toLowerCase()),t._select(function(n){return t._matchText(t._text(n),e)}))},_inputValue:function(){return this.text()},_search:function(){var e=this,n=e.dataSource;if(clearTimeout(e._typingTimeout),e._isFilterEnabled())e._typingTimeout=setTimeout(function(){var t=e.filterInput.val();e._prev!==t&&(e._prev=t,e.search(t),e._resizeFilterInput()),e._typingTimeout=null},e.options.delay);else{if(e._typingTimeout=setTimeout(function(){e._word=""},e.options.delay),!e.listView.bound())return n.fetch().done(function(){e._selectNext()}),t;e._selectNext()}},_get:function(t){var n,i,o,r="function"==typeof t,a=r?e():e(t);if(this.hasOptionLabel()&&("number"==typeof t?t>-1&&(t-=1):a.hasClass("k-list-optionlabel")&&(t=-1)),r){for(n=this.dataSource.flatView(),o=0;o<n.length;o++)if(t(n[o])){t=o,i=!0;break}i||(t=-1)}return t},_firstItem:function(){this.hasOptionLabel()?this._focus(this.optionLabel):this.listView.focusFirst()},_lastItem:function(){this._resetOptionLabel(),this.listView.focusLast()},_nextItem:function(){this.optionLabel.hasClass("k-state-focused")?(this._resetOptionLabel(),this.listView.focusFirst()):this.listView.focusNext()},_prevItem:function(){this.optionLabel.hasClass("k-state-focused")||(this.listView.focusPrev(),this.listView.focus()||this._focus(this.optionLabel))},_focusItem:function(){var e=this.options,n=this.listView,i=n.focus(),o=n.select();o=o[o.length-1],o===t&&e.highlightFirst&&!i&&(o=0),o!==t?n.focus(o):!e.optionLabel||e.virtual&&"dataItem"===e.virtual.mapValueTo?n.scrollToIndex(0):(this._focus(this.optionLabel),this._select(this.optionLabel),this.listView.content.scrollTop(0))},_resetOptionLabel:function(e){this.optionLabel.removeClass("k-state-focused"+(e||"")).removeAttr("id")},_focus:function(e){var n=this.listView,i=this.optionLabel;return e===t?(e=n.focus(),!e&&i.hasClass("k-state-focused")&&(e=i),e):(this._resetOptionLabel(),e=this._get(e),n.focus(e),e===-1&&(i.addClass("k-state-focused").attr("id",n._optionID),this._focused.add(this.filterInput).removeAttr("aria-activedescendant").attr("aria-activedescendant",n._optionID)),t)},_select:function(e,t){var n=this;return e=n._get(e),n.listView.select(e).done(function(){t||n._state!==S||(n._state=T),e===-1&&n._selectValue(null)})},_selectValue:function(e){var n=this,i=n.options.optionLabel,o=n.listView.select(),r="",a="";o=o[o.length-1],o===t&&(o=-1),this._resetOptionLabel(" k-state-selected"),e||0===e?(a=e,r=n._dataValue(e),i&&(o+=1)):i&&(n._focus(n.optionLabel.addClass("k-state-selected")),a=n._optionLabelText(),r="string"==typeof i?"":n._value(i),o=0),n.selectedIndex=o,null===r&&(r=""),n._textAccessor(a),n._accessor(r,o),n._triggerCascade()},_mobile:function(){var e=this,t=e.popup,n=c.mobileOS,i=t.element.parents(".km-root").eq(0);i.length&&n&&(t.options.animation.open.effects=n.android||n.meego?"fadeIn":n.ios||n.wp?"slideIn:up":t.options.animation.open.effects)},_filterHeader:function(){var t;this.filterInput&&(this.filterInput.off(p).parent().remove(),this.filterInput=null),this._isFilterEnabled()&&(t='<span class="k-icon k-i-zoom"></span>',this.filterInput=e('<input class="k-textbox"/>').attr({placeholder:this.element.attr("placeholder"),title:this.element.attr("title"),role:"listbox","aria-haspopup":!0,"aria-expanded":!1}),this.list.prepend(e('<span class="k-list-filter" />').append(this.filterInput.add(t))))},_span:function(){var t,n=this,i=n.wrapper,o="span.k-input";t=i.find(o),t[0]||(i.append('<span unselectable="on" class="k-dropdown-wrap k-state-default"><span unselectable="on" class="k-input"> </span><span unselectable="on" class="k-select" aria-label="select"><span class="k-icon k-i-arrow-60-down"></span></span></span>').append(n.element),t=i.find(o)),n.span=t,n._inputWrapper=e(i[0].firstChild),n._arrow=i.find(".k-select"),n._arrowIcon=n._arrow.find(".k-icon")},_wrapper:function(){var e,t=this,n=t.element,i=n[0];e=n.parent(),e.is("span.k-widget")||(e=n.wrap("<span />").parent(),e[0].style.cssText=i.style.cssText,e[0].title=i.title),t._focused=t.wrapper=e.addClass("k-widget k-dropdown").addClass(i.className).css("display","").attr({accesskey:n.attr("accesskey"),unselectable:"on",role:"listbox","aria-haspopup":!0,"aria-expanded":!1}),n.hide().removeAttr("accesskey")},_clearSelection:function(e){this.select(e.value()?0:-1)},_inputTemplate:function(){var t=this,n=t.options.valueTemplate;if(n=n?r.template(n):e.proxy(r.template("#:this._text(data)#",{useWithBlock:!1}),t),t.valueTemplate=n,t.hasOptionLabel()&&!t.options.optionLabelTemplate)try{t.valueTemplate(t._optionLabelDataItem())}catch(i){throw Error(D)}},_textAccessor:function(n){var i,o=null,r=this.valueTemplate,a=this._optionLabelText(),s=this.span;if(n===t)return s.text();e.isPlainObject(n)||n instanceof u?o=n:a&&a===n&&(o=this.options.optionLabel),o||(o=this._assignInstance(n,this._accessor())),this.hasOptionLabel()&&(o!==a&&this._text(o)!==a||(r=this.optionLabelTemplate,"string"!=typeof this.options.optionLabel||this.options.optionLabelTemplate||(o=a))),i=function(){return{elements:s.get(),data:[{dataItem:o}]}},this.angular("cleanup",i);try{s.html(r(o))}catch(l){s.html("")}this.angular("compile",i)},_preselect:function(e,t){e||t||(t=this._optionLabelText()),this._accessor(e),this._textAccessor(t),this._old=this._accessor(),this._oldIndex=this.selectedIndex,this.listView.setValue(e),this._initialIndex=null,this._presetValue=!0},_assignInstance:function(e,t){var i=this.options.dataTextField,o={};return i?(n(o,i.split("."),e),n(o,this.options.dataValueField.split("."),t),o=new u(o)):o=e,o}});a.plugin(E)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.treeview.draganddrop.min",["kendo.data.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,o=e.proxy,r=e.extend,a="visibility",s="k-state-hover",l="input,a:not(.k-in),textarea,.k-multiselect-wrap,select,button,a.k-button>.k-icon,button.k-button>.k-icon,span.k-icon.k-i-arrow-60-right,span.k-icon.k-i-arrow-45-down-right";i.HierarchicalDragAndDrop=n.Class.extend({init:function(t,a){this.element=t,this.hovered=t,this.options=r({dragstart:e.noop,drag:e.noop,drop:e.noop,dragend:e.noop},a),this._draggable=new i.Draggable(t,{ignore:l,filter:a.filter,autoScroll:a.autoScroll,cursorOffset:{left:10,top:n.support.mobileOS?-40/n.support.zoomLevel():10},hint:o(this._hint,this),dragstart:o(this.dragstart,this),dragcancel:o(this.dragcancel,this),drag:o(this.drag,this),dragend:o(this.dragend,this),$angular:a.$angular})},_hint:function(e){return"<div class='k-header k-drag-clue'><span class='k-icon k-drag-status' />"+this.options.hintText(e)+"</div>"},_removeTouchHover:function(){n.support.touch&&this.hovered&&(this.hovered.find("."+s).removeClass(s),this.hovered=!1)},_hintStatus:function(n){var i=this._draggable.hint.find(".k-drag-status")[0];return n?(i.className="k-icon k-drag-status "+n,t):e.trim(i.className.replace(/(p|k)-(icon|drag-status)/g,""))},dragstart:function(t){this.source=t.currentTarget.closest(this.options.itemSelector),this.options.dragstart(this.source)&&t.preventDefault(),this.dropHint=this.options.reorderable?e("<div class='k-icon k-i-drag-and-drop' />").css(a,"hidden").appendTo(this.element):e()},drag:function(t){var i,o,r,l,c,d,u,h,p,f,g,m=this.options,v=this.source,_=this.dropTarget=e(n.eventTarget(t)),b=_.closest(m.allowedContainers);b.length?v[0]==_[0]||m.contains(v[0],_[0])?g="k-i-cancel":(g="k-i-insert-middle",p=m.itemFromTarget(_),i=p.item,i.length?(this._removeTouchHover(),o=n._outerHeight(i),l=p.content,m.reorderable?(c=o/(l.length>0?4:2),r=n.getOffset(i).top,d=t.y.location<r+c,u=r+o-c<t.y.location,h=l.length&&!d&&!u):(h=!0,d=!1,u=!1),this.hovered=!!h&&b,this.dropHint.css(a,h?"hidden":"visible"),this._lastHover&&this._lastHover[0]!=l[0]&&this._lastHover.removeClass(s),this._lastHover=l.toggleClass(s,h),h?g="k-i-plus":(f=i.position(),f.top+=d?0:o,this.dropHint.css(f)[d?"prependTo":"appendTo"](m.dropHintContainer(i)),d&&p.first&&(g="k-i-insert-up"),u&&p.last&&(g="k-i-insert-down"))):_[0]!=this.dropHint[0]&&(this._lastHover&&this._lastHover.removeClass(s),g=e.contains(this.element[0],b[0])?"k-i-cancel":"k-i-plus")):(g="k-i-cancel",this._removeTouchHover()),this.options.drag({originalEvent:t.originalEvent,source:v,target:_,pageY:t.y.location,pageX:t.x.location,status:g.substring(2),setStatus:function(e){g=e}}),0!==g.indexOf("k-i-insert")&&this.dropHint.css(a,"hidden"),this._hintStatus(g)},dragcancel:function(){this.dropHint.remove()},dragend:function(e){var n,i,o,r="over",l=this.source,c=this.dropHint,d=this.dropTarget;return"visible"==c.css(a)?(r=this.options.dropPositionFrom(c),n=c.closest(this.options.itemSelector)):d&&(n=d.closest(this.options.itemSelector),n.length||(n=d.closest(this.options.allowedContainers))),i={originalEvent:e.originalEvent,source:l[0],destination:n[0],valid:"k-i-cancel"!=this._hintStatus(),setValid:function(e){this.valid=e},dropTarget:d[0],position:r},o=this.options.drop(i),c.remove(),this._removeTouchHover(),this._lastHover&&this._lastHover.removeClass(s),!i.valid||o?(this._draggable.dropped=i.valid,t):(this._draggable.dropped=!0,this.options.dragend({originalEvent:e.originalEvent,source:l,destination:n,position:r}),t)},destroy:function(){this._lastHover=this.hovered=null,this._draggable.destroy()}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.treeview.min",["kendo.data.min","kendo.treeview.draganddrop.min"],e)}(function(){return function(e,t){function n(e){return function(t){var n=t.children(".k-animation-container");return n.length||(n=t),n.children(e)}}function i(e){return p.template(e,{useWithBlock:!1})}function o(e){return e.find(".k-checkbox-wrapper:first input[type=checkbox]")}function r(e){return function(t,n){n=n.closest(q);var i,o=n.parent();return o.parent().is("li")&&(i=o.parent()),this._dataSourceMove(t,o,i,function(t,i){var o=this.dataItem(n),r=o?o.parent().indexOf(o):n.index();return this._insert(t.data(),i,r+e)})}}function a(t,n){for(var i;t&&"ul"!=t.nodeName.toLowerCase();)i=t,t=t.nextSibling,3==i.nodeType&&(i.nodeValue=e.trim(i.nodeValue)),h.test(i.className)?n.insertBefore(i,n.firstChild):n.appendChild(i)}function s(t){var n=t.children("div"),i=t.children("ul"),o=n.children(".k-icon"),r=t.children("input[type=checkbox]"),s=n.children(".k-in");t.hasClass("k-treeview")||(n.length||(n=e("<div />").prependTo(t)),!o.length&&i.length?o=e("<span class='k-icon' />").prependTo(n):i.length&&i.children().length||(o.remove(),i.remove()),r.length&&e("<span class='k-checkbox-wrapper' />").appendTo(n).append(r),s.length||(s=t.children("a").eq(0).addClass("k-in k-link"),s.length||(s=e("<span class='k-in' />")),s.appendTo(n),n.length&&a(n[0].nextSibling,s[0])))}var l,c,d,u,h,p=window.kendo,f=p.ui,g=p.data,m=e.extend,v=p.template,_=e.isArray,b=f.Widget,w=g.HierarchicalDataSource,k=e.proxy,y=p.keys,x=".kendoTreeView",C=".kendoTreeViewTemp",S="select",T="check",D="navigate",A="expand",E="change",I="error",M="checked",F="indeterminate",R="collapse",P="dragstart",z="drag",B="drop",L="dragend",H="dataBound",N="click",O="undefined",V="k-state-hover",W="k-treeview",U=":visible",q=".k-item",j="string",G="aria-checked",$="aria-selected",Y="aria-disabled",K="k-state-disabled",Q={text:"dataTextField",url:"dataUrlField",spriteCssClass:"dataSpriteCssClassField",imageUrl:"dataImageUrlField"},X=function(e){return e instanceof p.jQuery||window.jQuery&&e instanceof window.jQuery},J=function(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&1===e.nodeType&&typeof e.nodeName===j};c=n(".k-group"),d=n(".k-group,.k-content"),u=function(e){return e.children("div").children(".k-icon")},h=/k-sprite/,l=p.ui.DataBoundWidget.extend({init:function(e,t){var n,i=this,o=!1,r=t&&!!t.dataSource;_(t)&&(t={dataSource:t}),t&&typeof t.loadOnDemand==O&&_(t.dataSource)&&(t.loadOnDemand=!1),b.prototype.init.call(i,e,t),e=i.element,t=i.options,i._dataSourceUids={},n=e.is("ul")&&e||e.hasClass(W)&&e.children("ul"),o=!r&&n.length,o&&(t.dataSource.list=n),i._animation(),i._accessors(),i._templates(),e.hasClass(W)?(i.wrapper=e,i.root=e.children("ul").eq(0)):(i._wrapper(),n&&(i.root=e,i._group(i.wrapper))),i._tabindex(),i.wrapper.attr("role","tree"),i._dataSource(o),i._attachEvents(),i._dragging(),o?i._syncHtmlAndDataSource():t.autoBind&&(i._progress(!0),i.dataSource.fetch()),t.checkboxes&&t.checkboxes.checkChildren&&i.updateIndeterminate(),i.element[0].id&&(i._ariaId=p.format("{0}_tv_active",i.element[0].id)),p.notify(i)},_attachEvents:function(){var t=this,n=".k-in:not(.k-state-selected,.k-state-disabled)",i="mouseenter";t.wrapper.on(i+x,".k-in.k-state-selected",function(e){e.preventDefault()}).on(i+x,n,function(){e(this).addClass(V)}).on("mouseleave"+x,n,function(){e(this).removeClass(V)}).on(N+x,n,k(t._click,t)).on("dblclick"+x,".k-in:not(.k-state-disabled)",k(t._toggleButtonClick,t)).on(N+x,".k-i-expand,.k-i-collapse",k(t._toggleButtonClick,t)).on("keydown"+x,k(t._keydown,t)).on("keypress"+x,k(t._keypress,t)).on("focus"+x,k(t._focus,t)).on("blur"+x,k(t._blur,t)).on("mousedown"+x,".k-in,.k-checkbox-wrapper :checkbox,.k-i-expand,.k-i-collapse",k(t._mousedown,t)).on("change"+x,".k-checkbox-wrapper :checkbox",k(t._checkboxChange,t)).on("click"+x,".checkbox-span",k(t._checkboxLabelClick,t)).on("click"+x,".k-request-retry",k(t._retryRequest,t)).on("click"+x,".k-link.k-state-disabled",function(e){e.preventDefault()}).on("click"+x,function(n){var i=e(n.target);i.is(":kendoFocusable")||i.find("input,select,textarea,button,object").is(":kendoFocusable")||t.focus()})},_checkboxLabelClick:function(t){var n=e(t.target.previousSibling);n.is("[disabled]")||(n.prop("checked",!n.prop("checked")),n.trigger("change"))},_syncHtmlAndDataSource:function(e,t){e=e||this.root,t=t||this.dataSource;var n,i,r,a,s,l=t.view(),c=p.attr("uid"),d=p.attr("expanded"),u=this.options.checkboxes,h=e.children("li");for(n=0;n<h.length;n++)r=l[n],a=r.uid,i=h.eq(n),i.attr("role","treeitem").attr(c,a).attr($,i.hasClass("k-state-selected")),r.expanded="true"===i.attr(d),u&&(s=o(i),r.checked=s.prop(M),s.attr("id","_"+a),s.next(".k-checkbox-label").attr("for","_"+a)),this._syncHtmlAndDataSource(i.children("ul"),r.children)},_animation:function(){var e=this.options,t=e.animation,n=t.collapse&&"effects"in t.collapse,i=m({},t.expand,t.collapse);n||(i=m(i,{reverse:!0})),t===!1&&(t={expand:{effects:{}},collapse:{hide:!0,effects:{}}}),t.collapse=m(i,{hide:!0}),e.animation=t},_dragging:function(){var t,n=this.options.dragAndDrop,i=this.dragging;n&&!i?(t=this,this.dragging=new f.HierarchicalDragAndDrop(this.element,{reorderable:!0,$angular:this.options.$angular,autoScroll:this.options.autoScroll,filter:"div:not(.k-state-disabled) .k-in",allowedContainers:".k-treeview",itemSelector:".k-treeview .k-item",hintText:k(this._hintText,this),contains:function(t,n){return e.contains(t,n)},dropHintContainer:function(e){return e},itemFromTarget:function(e){var t=e.closest(".k-top,.k-mid,.k-bot");return{item:t,content:e.closest(".k-in"),first:t.hasClass("k-top"),last:t.hasClass("k-bot")}},dropPositionFrom:function(e){return e.prevAll(".k-in").length>0?"after":"before"},dragstart:function(e){return t.trigger(P,{sourceNode:e[0]})},drag:function(e){t.trigger(z,{originalEvent:e.originalEvent,sourceNode:e.source[0],dropTarget:e.target[0],pageY:e.pageY,pageX:e.pageX,statusClass:e.status,setStatusClass:e.setStatus})},drop:function(n){var i=e(n.dropTarget),o=i.closest("a");return o&&o.attr("href")&&t._tempPreventNavigation(o),t.trigger(B,{originalEvent:n.originalEvent,sourceNode:n.source,destinationNode:n.destination,valid:n.valid,setValid:function(e){this.valid=e,n.setValid(e)},dropTarget:n.dropTarget,dropPosition:n.position})},dragend:function(e){function n(n){t.options.checkboxes&&t.options.checkboxes.checkChildren&&t.updateIndeterminate(),t.trigger(L,{originalEvent:e.originalEvent,sourceNode:n&&n[0],destinationNode:o[0],dropPosition:r})}var i=e.source,o=e.destination,r=e.position;"over"==r?t.append(i,o,n):("before"==r?i=t.insertBefore(i,o):"after"==r&&(i=t.insertAfter(i,o)),n(i))}})):!n&&i&&(i.destroy(),this.dragging=null)},_tempPreventNavigation:function(e){e.on(N+x+C,function(t){t.preventDefault(),e.off(N+x+C)})},_hintText:function(e){return this.templates.dragClue({item:this.dataItem(e),treeview:this.options})},_templates:function(){var e=this,t=e.options,n=k(e._fieldAccessor,e);t.template&&typeof t.template==j?t.template=v(t.template):t.template||(t.template=i("# var text = "+n("text")+"(data.item); ## if (typeof data.item.encoded != 'undefined' && data.item.encoded === false) {##= text ## } else { ##: text ## } #")),e._checkboxes(),e.templates={setAttributes:function(e){var t,n="",i=e.attr||{};for(t in i)i.hasOwnProperty(t)&&"class"!==t&&(n+=t+'="'+i[t]+'" ');return n},wrapperCssClass:function(e,t){var n="k-item",i=t.index;return e.firstLevel&&0===i&&(n+=" k-first"),i==e.length-1&&(n+=" k-last"),n},cssClass:function(e,t){var n="",i=t.index,o=e.length-1;return e.firstLevel&&0===i&&(n+="k-top "),n+=0===i&&i!=o?"k-top":i==o?"k-bot":"k-mid"},textClass:function(e,t){var n="k-in";return t&&(n+=" k-link"),e.enabled===!1&&(n+=" k-state-disabled"),e.selected===!0&&(n+=" k-state-selected"),n},toggleButtonClass:function(e){var t="k-icon";return t+=e.expanded!==!0?" k-i-expand":" k-i-collapse"},groupAttributes:function(e){var t="";return e.firstLevel||(t="role='group'"),t+(e.expanded!==!0?" style='display:none'":"")},groupCssClass:function(e){var t="k-group";return e.firstLevel&&(t+=" k-treeview-lines"),t},dragClue:i("#= data.treeview.template(data) #"),group:i("<ul class='#= data.r.groupCssClass(data.group) #'#= data.r.groupAttributes(data.group) #>#= data.renderItems(data) #</ul>"),itemContent:i("# var imageUrl = "+n("imageUrl")+"(data.item); ## var spriteCssClass = "+n("spriteCssClass")+"(data.item); ## if (imageUrl) { #<img class='k-image' alt='' src='#= imageUrl #'># } ## if (spriteCssClass) { #<span class='k-sprite #= spriteCssClass #' /># } ##= data.treeview.template(data) #"),itemElement:i("# var item = data.item, r = data.r; ## var url = "+n("url")+"(item); #<div class='#= r.cssClass(data.group, item) #'># if (item.hasChildren) { #<span class='#= r.toggleButtonClass(item) #'/># } ## if (data.treeview.checkboxes) { #<span class='k-checkbox-wrapper' role='presentation'>#= data.treeview.checkboxes.template(data) #</span># } ## var tag = url ? 'a' : 'span'; ## var textAttr = url ? ' href=\\'' + url + '\\'' : ''; #<#=tag# class='#= r.textClass(item, !!url) #'#= textAttr #>#= r.itemContent(data) #</#=tag#></div>"),item:i("# var item = data.item, r = data.r; #<li role='treeitem' class='#= r.wrapperCssClass(data.group, item) #'"+p.attr("uid")+'=\'#= item.uid #\' #= r.setAttributes(item.toJSON ? item.toJSON() : item) # # if (data.treeview.checkboxes) { #aria-checked=\'#= item.checked ? "true" : "false" #\' # } #aria-selected=\'#= item.selected ? "true" : "false" #\' #=item.enabled === false ? "aria-disabled=\'true\'" : \'\'#aria-expanded=\'#= item.expanded ? "true" : "false" #\' data-expanded=\'#= item.expanded ? "true" : "false" #\' >#= r.itemElement(data) #</li>'),loading:i("<div class='k-icon k-i-loading' /> #: data.messages.loading #"),retry:i("#: data.messages.requestFailed # <button class='k-button k-request-retry'>#: data.messages.retry #</button>")}},items:function(){return this.element.find(".k-item > div:first-child")},setDataSource:function(t){var n=this.options;n.dataSource=t,this._dataSourceUids={},this._dataSource(),n.checkboxes&&n.checkboxes.checkChildren&&this.dataSource.one("change",e.proxy(this.updateIndeterminate,this,null)),this.options.autoBind&&this.dataSource.fetch()},_bindDataSource:function(){this._refreshHandler=k(this.refresh,this),this._errorHandler=k(this._error,this),this.dataSource.bind(E,this._refreshHandler),this.dataSource.bind(I,this._errorHandler)},_unbindDataSource:function(){var e=this.dataSource;e&&(e.unbind(E,this._refreshHandler),e.unbind(I,this._errorHandler))},_dataSource:function(e){function t(e){for(var n=0;n<e.length;n++)e[n]._initChildren(),e[n].children.fetch(),t(e[n].children.view())}var n=this,i=n.options,o=i.dataSource;o=_(o)?{data:o}:o,n._unbindDataSource(),o.fields||(o.fields=[{field:"text"},{field:"url"},{field:"spriteCssClass"},{field:"imageUrl"}]),n.dataSource=o=w.create(o),e&&(o.fetch(),t(o.view())),n._bindDataSource()},events:[P,z,B,L,H,A,R,S,E,D,T],options:{name:"TreeView",dataSource:{},animation:{expand:{effects:"expand:vertical",duration:200},collapse:{duration:100}},messages:{loading:"Loading...",requestFailed:"Request failed.",retry:"Retry"},dragAndDrop:!1,checkboxes:!1,autoBind:!0,autoScroll:!1,loadOnDemand:!0,template:"",dataTextField:null},_accessors:function(){var e,t,n,i=this,o=i.options,r=i.element;for(e in Q)t=o[Q[e]],n=r.attr(p.attr(e+"-field")),!t&&n&&(t=n),t||(t=e),_(t)||(t=[t]),o[Q[e]]=t},_fieldAccessor:function(t){var n=this.options[Q[t]],i=n.length,o="(function(item) {";return 0===i?o+="return item['"+t+"'];":(o+="var levels = ["+e.map(n,function(e){return"function(d){ return "+p.expr(e)+"}"}).join(",")+"];",o+="return levels[Math.min(item.level(), "+i+"-1)](item)"),o+="})"},setOptions:function(e){b.fn.setOptions.call(this,e),this._animation(),this._dragging(),this._templates()},_trigger:function(e,t){return this.trigger(e,{node:t.closest(q)[0]})},_setChecked:function(t,n){if(t&&e.isFunction(t.view))for(var i=0,o=t.view();i<o.length;i++)o[i].enabled!==!1&&this._setCheckedValue(o[i],n),o[i].children&&this._setChecked(o[i].children,n)},_setCheckedValue:function(e,t){e[M]=t},_setIndeterminate:function(e){var t,n,i,r=c(e),a=!0;if(r.length&&(t=o(r.children()),n=t.length)){if(n>1){for(i=1;i<n;i++)if(t[i].checked!=t[i-1].checked||t[i].indeterminate||t[i-1].indeterminate){a=!1;break}}else a=!t[0].indeterminate;return e.attr(G,a?t[0].checked:"mixed"),o(e).data(F,!a).prop(F,!a).prop(M,a&&t[0].checked)}},updateIndeterminate:function(e){var t,n,i,o;if(e=e||this.wrapper,t=c(e).children(),t.length){for(n=0;n<t.length;n++)this.updateIndeterminate(t.eq(n));if(e.is(".k-treeview"))return;i=this._setIndeterminate(e),o=this.dataItem(e),i&&i.prop(M)?o.checked=!0:o&&delete o.checked}},_bubbleIndeterminate:function(e,t){if(e.length){t||this.updateIndeterminate(e);var n,i=this.parent(e);i.length&&(this._setIndeterminate(i),n=i.children("div").find(".k-checkbox-wrapper input[type=checkbox]"),this._skip=!0,n.prop(F)===!1?this.dataItem(i).set(M,n.prop(M)):this.dataItem(i).set(M,!1),this._skip=!1,this._bubbleIndeterminate(i,!0))}},_checkboxChange:function(t){var n=e(t.target),i=n.prop(M),o=n.closest(q),r=this.dataItem(o);this._preventChange||r.checked!=i&&(r.set(M,i),o.attr(G,i),this._trigger(T,o))},_toggleButtonClick:function(t){var n=e(t.currentTarget).closest(q);n.is("[aria-disabled='true']")||this.toggle(n)},_mousedown:function(t){var n=this,i=e(t.currentTarget),o=e(t.currentTarget).closest(q),r=p.support.browser;o.is("[aria-disabled='true']")||((r.msie||r.edge)&&i.is(":checkbox")&&(i.prop(F)?(n._preventChange=!1,i.prop(M,!i.prop(M)),i.trigger(E),i.on(N+x,function(e){e.preventDefault()}),n._preventChange=!0):(i.off(N+x),n._preventChange=!1)),n._clickTarget=o,n.current(o))},_focusable:function(e){return e&&e.length&&e.is(":visible")&&!e.find(".k-in:first").hasClass(K)},_focus:function(){var t=this.select(),n=this._clickTarget;p.support.touch||(n&&n.length&&(t=n),this._focusable(t)||(t=this.current()),this._focusable(t)||(t=this._nextVisible(e())),this.current(t))},focus:function(){var e,t=this.wrapper,n=t[0],i=[],o=[],r=document.documentElement;do n=n.parentNode,n.scrollHeight>n.clientHeight&&(i.push(n),o.push(n.scrollTop));while(n!=r);for(p.focusElement(t),e=0;e<i.length;e++)i[e].scrollTop=o[e]},_blur:function(){this.current().find(".k-in:first").removeClass("k-state-focused")},_enabled:function(e){return!e.children("div").children(".k-in").hasClass(K)},parent:function(t){var n,i,o=/\bk-treeview\b/,r=/\bk-item\b/;typeof t==j&&(t=this.element.find(t)),J(t)||(t=t[0]),i=r.test(t.className);do t=t.parentNode,r.test(t.className)&&(i?n=t:i=!0);while(!o.test(t.className)&&!n);return e(n)},_nextVisible:function(e){function t(e){for(;e.length&&!e.next().length;)e=i.parent(e);return e.next().length?e.next():e}var n,i=this,o=i._expanded(e);return e.length&&e.is(":visible")?o?(n=c(e).children().first(),n.length||(n=t(e))):n=t(e):n=i.root.children().eq(0),n},_previousVisible:function(e){var t,n,i=this;if(!e.length||e.prev().length)for(n=e.length?e.prev():i.root.children().last();i._expanded(n)&&(t=c(n).children().last(),t.length);)n=t;else n=i.parent(e)||e;return n},_keydown:function(n){var i,o=this,r=n.keyCode,a=o.current(),s=o._expanded(a),l=a.find(".k-checkbox-wrapper:first :checkbox"),c=p.support.isRtl(o.element); +n.target==n.currentTarget&&(!c&&r==y.RIGHT||c&&r==y.LEFT?s?i=o._nextVisible(a):a.find(".k-in:first").hasClass(K)||o.expand(a):!c&&r==y.LEFT||c&&r==y.RIGHT?s&&!a.find(".k-in:first").hasClass(K)?o.collapse(a):(i=o.parent(a),o._enabled(i)||(i=t)):r==y.DOWN?i=o._nextVisible(a):r==y.UP?i=o._previousVisible(a):r==y.HOME?i=o._nextVisible(e()):r==y.END?i=o._previousVisible(e()):r!=y.ENTER||a.find(".k-in:first").hasClass(K)?r==y.SPACEBAR&&l.length&&(a.find(".k-in:first").hasClass(K)||(l.prop(M,!l.prop(M)).data(F,!1).prop(F,!1),o._checkboxChange({target:l})),i=a):a.find(".k-in:first").hasClass("k-state-selected")||o._trigger(S,a)||o.select(a),i&&(n.preventDefault(),a[0]!=i[0]&&(o._trigger(D,i),o.current(i))))},_keypress:function(e){var t,n=this,i=300,o=n.current().get(0),r=e.key,a=1===r.length;a&&(n._match||(n._match=""),n._match+=r,clearTimeout(n._matchTimer),n._matchTimer=setTimeout(function(){n._match=""},i),t=o&&n._matchNextByText(Array.prototype.indexOf.call(n.element.find(".k-item"),o),n._match),t.length||(t=n._matchNextByText(-1,n._match)),t.get(0)&&t.get(0)!==o&&(n._trigger(D,t),n.current(t)))},_matchNextByText:function(t,n){var i=this.element,o=i.find(".k-in").filter(function(i,o){return i>t&&e(o).is(":visible")&&0===e(o).text().toLowerCase().indexOf(n)});return o.eq(0).closest(q)},_click:function(t){var n,i=this,o=e(t.currentTarget),r=d(o.closest(q)),a=o.attr("href");n=a?"#"==a||a.indexOf("#"+this.element.id+"-")>=0:r.length&&!r.children().length,n&&t.preventDefault(),o.hasClass(".k-state-selected")||i._trigger(S,o)||i.select(o)},_wrapper:function(){var e,t,n=this,i=n.element,o="k-widget k-treeview";i.is("ul")?(e=i.wrap("<div />").parent(),t=i):(e=i,t=e.children("ul").eq(0)),n.wrapper=e.addClass(o),n.root=t},_getSelectedNode:function(){return this.element.find(".k-state-selected").closest(q)},_group:function(e){var t=this,n=e.hasClass(W),i={firstLevel:n,expanded:n||t._expanded(e)},o=e.children("ul");o.addClass(t.templates.groupCssClass(i)).css("display",i.expanded?"":"none"),t._nodes(o,i)},_nodes:function(t,n){var i,o=this,r=t.children("li");n=m({length:r.length},n),r.each(function(t,r){r=e(r),i={index:t,expanded:o._expanded(r)},s(r),o._updateNodeClasses(r,n,i),o._group(r)})},_checkboxes:function(){var e,t=this.options,n=t.checkboxes;n&&(e="<input type='checkbox' tabindex='-1' #= (item.enabled === false) ? 'disabled' : '' # #= item.checked ? 'checked' : '' #",n.name&&(e+=" name='"+n.name+"'"),e+=" id='_#= item.uid #' class='k-checkbox' /><span class='k-checkbox-label checkbox-span'></span>",n=m({template:e},t.checkboxes),typeof n.template==j&&(n.template=v(n.template)),t.checkboxes=n)},_updateNodeClasses:function(e,t,n){var i,o,r=e.children("div"),a=e.children("ul"),s=this.templates;e.hasClass("k-treeview")||(n=n||{},n.expanded=typeof n.expanded!=O?n.expanded:this._expanded(e),n.index=typeof n.index!=O?n.index:e.index(),n.enabled=typeof n.enabled!=O?n.enabled:!r.children(".k-in").hasClass("k-state-disabled"),t=t||{},t.firstLevel=typeof t.firstLevel!=O?t.firstLevel:e.parent().parent().hasClass(W),t.length=typeof t.length!=O?t.length:e.parent().children().length,e.removeClass("k-first k-last").addClass(s.wrapperCssClass(t,n)),r.removeClass("k-top k-mid k-bot").addClass(s.cssClass(t,n)),i=r.children(".k-in"),o=i[0]&&"a"==i[0].nodeName.toLowerCase(),i.removeClass("k-in k-link k-state-default k-state-disabled").addClass(s.textClass(n,o)),(a.length||"true"==e.attr("data-hasChildren"))&&(r.children(".k-icon").removeClass("k-i-expand k-i-collapse").addClass(s.toggleButtonClass(n)),a.addClass("k-group")))},_processNodes:function(t,n){var i,o=this,r=o.element.find(t);for(i=0;i<r.length;i++)n.call(o,i,e(r[i]).closest(q))},dataItem:function(t){var n=e(t).closest(q).attr(p.attr("uid")),i=this.dataSource;return i&&i.getByUid(n)},_dataItem:function(t){var n=e(t).closest(q).attr(p.attr("uid")),i=this.dataSource;return i&&this._dataSourceUids[n]},_insertNode:function(t,n,i,o,r){var a,l,d,u,h,f,g=this,m=c(i),v=m.children().length+1,_={firstLevel:i.hasClass(W),expanded:!r,length:v},b="",w=function(e,t){e.appendTo(t)};for(d=0;d<t.length;d++)u=t[d],u.index=n+d,b+=g._renderItem({group:_,item:u});if(l=e(b),l.length){for(g.angular("compile",function(){return{elements:l.get(),data:t.map(function(e){return{dataItem:e}})}}),m.length||(m=e(g._renderGroup({group:_})).appendTo(i)),o(l,m),i.hasClass("k-item")&&(s(i),g._updateNodeClasses(i,_,{expanded:!r})),h=l.prev().first(),f=l.next().last(),g._updateNodeClasses(h,{},{expanded:"true"==h.attr(p.attr("expanded"))}),g._updateNodeClasses(f,{},{expanded:"true"==f.attr(p.attr("expanded"))}),d=0;d<t.length;d++)u=t[d],u.hasChildren&&(a=u.children.data(),a.length&&g._insertNode(a,u.index,l.eq(d),w,!u.expanded));return l}},_updateNodes:function(t,n){function i(e,t){e.is(".k-group")&&e.find(".k-item:not([aria-disabled])").attr(G,t),e.find(".k-checkbox-wrapper input[type=checkbox]:not([disabled])").prop(M,t).data(F,!1).prop(F,!1)}var o,r,a,s,l,c,u,h=this,p={treeview:h.options,item:s},g="expanded"!=n&&"checked"!=n;if("selected"==n)s=t[0],r=h.findByUid(s.uid).find(".k-in:first").removeClass("k-state-hover").toggleClass("k-state-selected",s[n]).end(),s[n]&&h.current(r),r.attr($,!!s[n]);else{for(u=e.map(t,function(e){return h.findByUid(e.uid).children("div")}),g&&h.angular("cleanup",function(){return{elements:u}}),o=0;o<t.length;o++)p.item=s=t[o],a=u[o],r=a.parent(),g&&a.children(".k-in").html(h.templates.itemContent(p)),n==M?(l=s[n],i(a,l),r.attr(G,l),h.options.checkboxes.checkChildren&&(i(r.children(".k-group"),l),h._setChecked(s.children,l),h._bubbleIndeterminate(r))):"expanded"==n?h._toggle(r,s,s[n]):"enabled"==n&&(r.find(".k-checkbox-wrapper input[type=checkbox]").prop("disabled",!s[n]),c=!d(r).is(U),r.removeAttr(Y),s[n]||(s.selected&&s.set("selected",!1),s.expanded&&s.set("expanded",!1),c=!0,r.attr($,!1).attr(Y,!0)),h._updateNodeClasses(r,{},{enabled:s[n],expanded:!c})),a.length&&(s._events&&s._events.change&&s._events.change.splice(1),this.trigger("itemChange",{item:a,data:s,ns:f}));g&&h.angular("compile",function(){return{elements:u,data:e.map(t,function(e){return[{dataItem:e}]})}})}},_appendItems:function(e,t,n){var i,o,r,a=c(n),s=a.children(),l=!this._expanded(n);this.element===n?(i=this.dataSource.data(),o=this.dataSource.view(),r=o.length<i.length?o:i,e=r.indexOf(t[0])):t.length&&(e=t[0].parent().indexOf(t[0])),typeof e==O&&(e=s.length),this._insertNode(t,e,n,function(t,n){e>=s.length?t.appendTo(n):t.insertBefore(s.eq(e))},l),l||(this._updateNodeClasses(n,{},{expanded:!l}),c(n).css("display","block"))},_refreshChildren:function(e,t,n){var i,o,r,a=this.options,l=a.loadOnDemand,d=a.checkboxes&&a.checkboxes.checkChildren;if(c(e).empty(),t.length)for(this._appendItems(n,t,e),o=c(e).children(),l&&d&&this._bubbleIndeterminate(o.last()),i=0;i<o.length;i++)r=o.eq(i),this.trigger("itemChange",{item:r.children("div"),data:t[i],ns:f});else s(e)},_refreshRoot:function(t){var n,i,o,r=this._renderGroup({items:t,group:{firstLevel:!0,expanded:!0}});for(this.root.length?(this._angularItems("cleanup"),n=e(r),this.root.attr("class",n.attr("class")).html(n.html())):this.root=this.wrapper.html(r).children("ul"),i=this.root.children(".k-item"),o=0;o<t.length;o++)this.trigger("itemChange",{item:i.eq(o),data:t[o],ns:f});this._angularItems("compile")},refresh:function(e){var n,i,o=e.node,r=e.action,a=e.items,s=this.wrapper,l=this.options,c=l.loadOnDemand,d=l.checkboxes&&l.checkboxes.checkChildren;if(!this._skip){for(n=0;n<a.length;n++)this._dataSourceUids[a[n].uid]=a[n];if(e.field){if(!a[0]||!a[0].level)return;return this._updateNodes(a,e.field)}if(o&&(s=this.findByUid(o.uid),this._progress(s,!1)),d&&"remove"!=r){for(i=!1,n=0;n<a.length;n++)if("checked"in a[n]){i=!0;break}if(!i&&o&&o.checked)for(n=0;n<a.length;n++)a[n].checked=!0}if("add"==r?this._appendItems(e.index,a,s):"remove"==r?this._remove(this.findByUid(a[0].uid),!1):"itemchange"==r?this._updateNodes(a):"itemloaded"==r?this._refreshChildren(s,a,e.index):this._refreshRoot(a),"remove"!=r)for(n=0;n<a.length;n++)(!c||a[n].expanded||a[n]._loaded)&&a[n].load();this.trigger(H,{node:o?s:t}),this.dataSource.filter()&&this.options.checkboxes.checkChildren&&this.updateIndeterminate(s)}},_error:function(e){var t=e.node&&this.findByUid(e.node.uid),n=this.templates.retry({messages:this.options.messages});t?(this._progress(t,!1),this._expanded(t,!1),u(t).addClass("k-i-reload"),e.node.loaded(!1)):(this._progress(!1),this.element.html(n))},_retryRequest:function(e){e.preventDefault(),this.dataSource.fetch()},expand:function(e){this._processNodes(e,function(e,t){this.toggle(t,!0)})},collapse:function(e){this._processNodes(e,function(e,t){this.toggle(t,!1)})},enable:function(e,t){"boolean"==typeof e?(t=e,e=this.items()):t=2!=arguments.length||!!t,this._processNodes(e,function(e,n){this.dataItem(n).set("enabled",t)})},current:function(n){var i=this,o=i._current,r=i.element,a=i._ariaId;return arguments.length>0&&n&&n.length?(o&&(o[0].id===a&&o.removeAttr("id"),o.find(".k-in:first").removeClass("k-state-focused")),o=i._current=e(n,r).closest(q),o.find(".k-in:first").addClass("k-state-focused"),a=o[0].id||a,a&&(i.wrapper.removeAttr("aria-activedescendant"),o.attr("id",a),i.wrapper.attr("aria-activedescendant",a)),t):(o||(o=i._nextVisible(e())),o)},select:function(n){var i=this,o=i.element;return arguments.length?(n=e(n,o).closest(q),o.find(".k-state-selected").each(function(){var t=i.dataItem(this);t?(t.set("selected",!1),delete t.selected):e(this).removeClass("k-state-selected")}),n.length&&(i.dataItem(n).set("selected",!0),i._clickTarget=n),i.trigger(E),t):o.find(".k-state-selected").closest(q)},_toggle:function(e,t,n){var i,o=this.options,r=d(e),a=n?"expand":"collapse";r.data("animating")||(i=t&&t.loaded(),n&&!i?(o.loadOnDemand&&this._progress(e,!0),r.remove(),t.load()):(this._updateNodeClasses(e,{},{expanded:n}),n||r.css("height",r.height()).css("height"),r.kendoStop(!0,!0).kendoAnimate(m({reset:!0},o.animation[a],{complete:function(){n&&r.css("height","")}}))))},toggle:function(t,n){t=e(t),u(t).is(".k-i-expand, .k-i-collapse")&&(1==arguments.length&&(n=!this._expanded(t)),this._expanded(t,n))},destroy:function(){var e=this;b.fn.destroy.call(e),e.wrapper.off(x),e.wrapper.find(".k-checkbox-wrapper :checkbox").off(x),e._unbindDataSource(),e.dragging&&e.dragging.destroy(),e._dataSourceUids={},p.destroy(e.element),e.root=e.wrapper=e.element=null},_expanded:function(e,n,i){var o,r=p.attr("expanded"),a=n,s=a?"expand":"collapse";return 1==arguments.length?(o=this._dataItem(e),"true"===e.attr(r)||o&&o.expanded):(o=this.dataItem(e),d(e).data("animating")||!i&&this._trigger(s,e)||(a?(e.attr(r,"true"),e.attr("aria-expanded","true")):(e.removeAttr(r),e.attr("aria-expanded","false")),o&&(o.set("expanded",a),a=o.expanded)),t)},_progress:function(e,t){var n=this.element,i=this.templates.loading({messages:this.options.messages});1==arguments.length?(t=e,t?n.html(i):n.empty()):u(e).toggleClass("k-i-loading",t).removeClass("k-i-reload")},text:function(e,n){var i=this.dataItem(e),o=this.options[Q.text],r=i.level(),a=o.length,s=o[Math.min(r,a-1)];return n?(i.set(s,n),t):i[s]},_objectOrSelf:function(t){return e(t).closest("[data-role=treeview]").data("kendoTreeView")||this},_dataSourceMove:function(t,n,i,o){var r,a=this._objectOrSelf(i||n),s=a.dataSource,l=e.Deferred().resolve().promise();return i&&i[0]!=a.element[0]&&(r=a.dataItem(i),r.loaded()||(a._progress(i,!0),l=r.load()),i!=this.root&&(s=r.children,s&&s instanceof w||(r._initChildren(),r.loaded(!0),s=r.children))),t=this._toObservableData(t),o.call(a,s,t,l)},_toObservableData:function(t){var n,i,o=t;return(X(t)||J(t))&&(n=this._objectOrSelf(t).dataSource,i=e(t).attr(p.attr("uid")),o=n.getByUid(i),o&&(o=n.remove(o))),o},_insert:function(e,t,n){t instanceof p.data.ObservableArray?t=t.toJSON():_(t)||(t=[t]);var i=e.parent();return i&&i._initChildren&&(i.hasChildren=!0,i._initChildren()),e.splice.apply(e,[n,0].concat(t)),this.findByUid(e[n].uid)},insertAfter:r(1),insertBefore:r(0),append:function(t,n,i){var o=this.root;if(!(n&&t instanceof jQuery&&n[0]===t[0]))return n=n&&n.length?n:null,n&&(o=c(n)),this._dataSourceMove(t,o,n,function(t,o,r){function a(){n&&l._expanded(n,!0,!0);var e=t.data(),i=Math.max(e.length,0);return l._insert(e,o,i)}var s,l=this;return r.done(function(){s=a(),(i=i||e.noop)(s)}),s||null})},_remove:function(t,n){var i,o,r,a=this;return t=e(t,a.element),this.angular("cleanup",function(){return{elements:t.get()}}),i=t.parent().parent(),o=t.prev(),r=t.next(),t[n?"detach":"remove"](),i.hasClass("k-item")&&(s(i),a._updateNodeClasses(i)),a._updateNodeClasses(o),a._updateNodeClasses(r),t},remove:function(e){var t=this.dataItem(e);t&&this.dataSource.remove(t)},detach:function(e){return this._remove(e,!0)},findByText:function(t){return e(this.element).find(".k-in").filter(function(n,i){return e(i).text()==t}).closest(q)},findByUid:function(t){var n,i,o=this.element.find(".k-item"),r=p.attr("uid");for(i=0;i<o.length;i++)if(o[i].getAttribute(r)==t){n=o[i];break}return e(n)},expandPath:function(t,n){function i(){a.shift(),a.length?o(a[0]).then(i):s.call(r)}function o(t){var n=e.Deferred(),i=r.dataSource.get(t);return i?i.loaded()?(i.set("expanded",!0),n.resolve()):(r._progress(r.findByUid(i.uid),!0),i.load().then(function(){i.set("expanded",!0),n.resolve()})):n.resolve(),n.promise()}var r=this,a=t.slice(0),s=n||e.noop;o(a[0]).then(i)},_parentIds:function(e){for(var t=e&&e.parentNode(),n=[];t&&t.parentNode;)n.unshift(t.id),t=t.parentNode();return n},expandTo:function(e){e instanceof p.data.Node||(e=this.dataSource.get(e));var t=this._parentIds(e);this.expandPath(t)},_renderItem:function(e){return e.group||(e.group={}),e.treeview=this.options,e.r=this.templates,this.templates.item(e)},_renderGroup:function(e){var t=this;return e.renderItems=function(e){var n="",i=0,o=e.items,r=o?o.length:0,a=e.group;for(a.length=r;i<r;i++)e.group=a,e.item=o[i],e.item.index=i,n+=t._renderItem(e);return n},e.r=t.templates,t.templates.group(e)}}),f.plugin(l)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dropdowntree/treeview.min",["kendo.treeview.min"],e)}(function(){return function(e,t){function n(e){return function(t){var n=t.children(".k-animation-container");return n.length||(n=t),n.children(e)}}var i=window.kendo,o=i.ui,r=i.keys,a="k-state-disabled",s="select",l="checked",c=e.proxy,d="dataBound",u="click",h=".kendoTreeView",p="indeterminate",f="navigate",g=o.TreeView,m=n(".k-group"),v=g.extend({init:function(e,t,n){var i=this;i.dropdowntree=n,g.fn.init.call(i,e,t),i.dropdowntree._isMultipleSelection()&&i.wrapper.on(u+h,".k-in.k-state-selected",c(i._clickSelectedItem,i))},_checkOnSelect:function(e){if(!e.isDefaultPrevented()){var t=this.dataItem(e.node);t.set("checked",!t.checked)}},_setCheckedValue:function(e,t){e.set(l,t)},_click:function(e){var t=this;t.dropdowntree._isMultipleSelection()&&t.one("select",t._checkOnSelect),g.fn._click.call(t,e)},_clickSelectedItem:function(t){var n=this,i=e(t.currentTarget);n.one("select",n._checkOnSelect),n._trigger(s,i)||n.dataItem(i).set("selected",!1)},defaultrefresh:function(e){var n,i,o=e.node,r=e.action,a=e.items,s=this.wrapper,l=this.options,c=l.loadOnDemand,u=l.checkboxes&&l.checkboxes.checkChildren;if(!this._skip){if(e.field){if(!a[0]||!a[0].level)return;return this._updateNodes(a,e.field)}if(o&&(s=this.findByUid(o.uid),this._progress(s,!1)),u&&"remove"!=r){for(i=!1,n=0;n<a.length;n++)if("checked"in a[n]){i=!0;break}if(!i&&o&&o.checked)for(n=0;n<a.length;n++)a[n].checked=!0}if("add"==r?this._appendItems(e.index,a,s):"remove"==r?this._remove(this.findByUid(a[0].uid),!1):"itemchange"==r?this._updateNodes(a):"itemloaded"==r?this._refreshChildren(s,a,e.index):this._refreshRoot(a),"remove"!=r)for(n=0;n<a.length;n++)c&&!a[n].expanded||a[n].load();this.trigger(d,{node:o?s:t}),this.dropdowntree._treeViewDataBound({node:o?s:t,sender:this}),this.options.checkboxes.checkChildren&&this.updateIndeterminate()}},_previousVisible:function(e){var t,n,i=this;if(!e.length||e.prev().length)for(n=e.length?e.prev():i.root.children().last();i._expanded(n)&&(t=m(n).children().last(),t.length);)n=t;else n=i.parent(e)||e,n.length||(i.dropdowntree.checkAll&&i.dropdowntree.checkAll.is(":visible")?i.dropdowntree.checkAll.find(".k-checkbox").focus():i.dropdowntree.filterInput?i.dropdowntree.filterInput.focus():i.dropdowntree.wrapper.focus());return n},_keydown:function(n){var o,c=this,d=n.keyCode,u=c.current(),h=c._expanded(u),g=u.find(".k-checkbox-wrapper:first :checkbox"),m=i.support.isRtl(c.element);n.target==n.currentTarget&&(!m&&d==r.RIGHT||m&&d==r.LEFT?h?o=c._nextVisible(u):u.find(".k-in:first").hasClass(a)||c.expand(u):!m&&d==r.LEFT||m&&d==r.RIGHT?h&&!u.find(".k-in:first").hasClass(a)?c.collapse(u):(o=c.parent(u),c._enabled(o)||(o=t)):d==r.DOWN?o=c._nextVisible(u):d!=r.UP||n.altKey?d==r.HOME?o=c._nextVisible(e()):d==r.END?o=c._previousVisible(e()):d!=r.ENTER||u.find(".k-in:first").hasClass(a)?d==r.SPACEBAR&&g.length&&!u.find(".k-in:first").hasClass(a)?(g.prop(l,!g.prop(l)).data(p,!1).prop(p,!1),c._checkboxChange({target:g}),o=u):(n.altKey&&d===r.UP||d===r.ESC)&&c._closePopup():u.find(".k-in:first").hasClass("k-state-selected")||c._trigger(s,u)||c.select(u):o=c._previousVisible(u),o&&(n.preventDefault(),u[0]!=o[0]&&(c._trigger(f,o),c.current(o))))},_closePopup:function(){this.dropdowntree.close(),this.dropdowntree.wrapper.focus()},refresh:function(e){this.defaultrefresh(e),this.dropdowntree.options.skipUpdateOnBind||("itemchange"===e.action?this.dropdowntree._isMultipleSelection()?"checked"===e.field&&this.dropdowntree._checkValue(e.items[0]):"checked"!==e.field&&"expanded"!==e.field&&e.items[0].selected&&this.dropdowntree._selectValue(e.items[0]):this.dropdowntree.refresh(e))}});i.ui._dropdowntree=v}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dropdowntree.min",["dropdowntree/treeview.min","kendo.popup.min"],e)}(function(){return function(e,t){function n(e,t,n){for(var i,o=0,r=t.length-1;o<r;++o)i=t[o],i in e||(e[i]={}),e=e[i];e[t[r]]=n}var i,o,r=window.kendo,a=r.ui,s=a.Widget,l=a._dropdowntree,c=r.data.ObservableArray,d=r.data.ObservableObject,u=e.extend,h=r._activeElement,p=".kendoDropDownTree",f=r.keys,g=r.support,m="k-hidden",v="width",_=g.browser,b=r._outerWidth,w=".",k="disabled",y="readonly",x="k-state-disabled",C="aria-disabled",S="k-state-hover",T="k-state-focused",D="mouseenter"+p+" mouseleave"+p,A="tabindex",E="click",I="open",M="close",F="change",R=/"/g,P=e.proxy,z=r.ui.Widget.extend({init:function(t,n){var i,o,a;this.ns=p,r.ui.Widget.fn.init.call(this,t,n),this._selection=this._getSelection(),this._focusInputHandler=e.proxy(this._focusInput,this),this._initial=this.element.val(),this._values=[],i=this.options.value,null!==i&&i.length||(this._noInitialValue=!0),this._isNullorUndefined(i)||(this._valueMethodCalled=!0,this._values=e.isArray(i)?i.slice(0):[i]),this._inputTemplate(),this._accessors(),this._setTreeViewOptions(this.options),this._dataSource(),this._selection._initWrapper(),this._placeholder(!0),this._tabindex(),this.wrapper.data(A,this.wrapper.attr(A)),this.tree=e("<div/>").attr({tabIndex:-1,"aria-hidden":!0}),this.list=e("<div class='k-list-container'/>").append(this.tree),this._header(),this._noData(),this._footer(),this._reset(),this._popup(),this.popup.one("open",P(this._popupOpen,this)),this._clearButton(),this._filterHeader(),this._treeview(),this._renderFooter(),this._checkAll(),this._enable(),this._toggleCloseVisibility(),this.options.autoBind||(o=n.text||"",this._isNullorUndefined(n.value)?o?this._textAccessor(o):n.placeholder&&this._placeholder(!0):this._preselect(n.value)),a=e(this.element).parents("fieldset").is(":disabled"),a&&this.enable(!1),this._valueMethodCalled=!1,r.notify(this)},_preselect:function(e,t){this._selection._preselect(e,t)},_setTreeViewOptions:function(t){var n={autoBind:t.autoBind,checkboxes:t.checkboxes,dataImageUrlField:t.dataImageUrlField,dataSpriteCssClassField:t.dataSpriteCssClassField,dataTextField:t.dataTextField,dataUrlField:t.dataUrlField,loadOnDemand:t.loadOnDemand};this.options.treeview=e.extend({},n,this.options.treeview),t.template&&(this.options.treeview.template=t.template)},_dataSource:function(){var t=this.options.dataSource;this.dataSource=r.data.HierarchicalDataSource.create(t),t&&e.extend(this.options.treeview,{dataSource:this.dataSource})},_popupOpen:function(){var e=this.popup;e.wrapper=r.wrap(e.element)},_getSelection:function(){return this._isMultipleSelection()?new a.DropDownTree.MultipleSelection(this):new a.DropDownTree.SingleSelection(this)},setDataSource:function(e){this._noInitialValue=!0,this._clearTextAndValue(),this.dataSource=e,this.treeview.setDataSource(e)},_isMultipleSelection:function(){return this.options&&(this.options.treeview.checkboxes||this.options.checkboxes)},options:{name:"DropDownTree",animation:{},autoBind:!0,autoClose:!0,autoWidth:!1,clearButton:!0,dataTextField:"",dataValueField:"",dataImageUrlField:"",dataSpriteCssClassField:"",dataUrlField:"",delay:500,enabled:!0,enforceMinLength:!1,filter:"none",height:200,ignoreCase:!0,index:0,loadOnDemand:!1,messages:{singleTag:"item(s) selected",clear:"clear",deleteTag:"delete",noData:"No data found."},minLength:1,checkboxes:!1,noDataTemplate:!0,placeholder:"",checkAll:!1,checkAllTemplate:"Check all",tagMode:"multiple",template:null,text:null,treeview:{},valuePrimitive:!1,footerTemplate:"",headerTemplate:"",value:null,valueTemplate:null,popup:null},events:["open","close","dataBound",F,"select","filtering"],focus:function(){this.wrapper.focus()},dataItem:function(e){return this.treeview.dataItem(e)},readonly:function(e){this._editable({readonly:e===t||e,disable:!1}),this._toggleCloseVisibility()},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t||e)}),this._toggleCloseVisibility()},toggle:function(e){this._toggle(e)},open:function(){var e=this.popup;this.options.autoBind||this.dataSource.data().length||(this.treeview._progress(!0),this._isFilterEnabled()?this._search():this.dataSource.fetch()),!e.visible()&&this._allowOpening()&&(this._isMultipleSelection()&&e.element.addClass("k-multiple-selection"),e.element.addClass("k-popup-dropdowntree"),e.one("activate",this._focusInputHandler),e._hovered=!0,e.open())},close:function(){this.popup.close()},search:function(t){var n,i=this.options;if(clearTimeout(this._typingTimeout),!i.enforceMinLength&&!t.length||t.length>=i.minLength){if(n=this._getFilter(t),this.trigger("filtering",{filter:n})||e.isArray(this.options.dataTextField))return;this._filtering=!0,this.treeview.dataSource.filter(n)}},_getFilter:function(e){return{field:this.options.dataTextField,operator:this.options.filter,value:e,ignoreCase:this.options.ignoreCase}},refresh:function(){var t=this.treeview.dataSource.flatView();this._renderFooter(),this._renderNoData(),this.filterInput&&this.checkAll&&this.checkAll.toggle(!this.filterInput.val().length),this.tree.toggle(!!t.length),e(this.noData).toggle(!t.length)},setOptions:function(e){s.fn.setOptions.call(this,e),this._setTreeViewOptions(e),this._dataSource(),this.options.treeview&&this.treeview.setOptions(this.options.treeview),e.height&&this.tree&&this.tree.css("max-height",e.height),this._header(),this._noData(),this._footer(),this._renderFooter(),this._renderNoData(),this.span&&(this._isMultipleSelection()||this.span.hasClass("k-readonly"))&&this._placeholder(!0),this._inputTemplate(),this._accessors(),this._filterHeader(),this._checkAll(),this._enable(),e&&(e.enable||e.enabled)&&this.enable(!0),this._clearButton()},destroy:function(){r.ui.Widget.fn.destroy.call(this),this.treeview&&this.treeview.destroy(),this.popup.destroy(),this.wrapper.off(p),this._clear.off(p),this._inputWrapper.off(p),this.filterInput&&this.filterInput.off(p),this.tagList&&this.tagList.off(p),r.unbind(this.tagList),this.options.checkAll&&this.checkAll&&this.checkAll.off(p),this._form&&this._form.off("reset",this._resetHandler)},setValue:function(t){t=e.isArray(t)||t instanceof c?t.slice(0):[t],this._values=t},items:function(){return this.treeview.items()},value:function(e){var n=this;if(e)if(n.filterInput&&n.dataSource._filter)n._filtering=!0,n.dataSource.filter({});else if(!n.dataSource.data().length)return n.dataSource.fetch(function(){n._selection._setValue(e)}),t;return n._selection._setValue(e)},text:function(e){var n,i=this.options.ignoreCase;return e=null===e?"":e,e===t||this._isMultipleSelection()?this._textAccessor():"string"!=typeof e?(this._textAccessor(e),t):(n=i?e:e.toLowerCase(),this._selectItemByText(n),this._textAccessor(n),t)},_header:function(){var n,i=this,o=e(i.header),a=i.options.headerTemplate;return this._angularElement(o,"cleanup"),r.destroy(o),o.remove(),a?(n="function"!=typeof a?r.template(a):a,o=e(n({})),i.header=o[0]?o:null,i.list.prepend(o),this._angularElement(i.header,"compile"),t):(i.header=null,t)},_noData:function(){var n=this,i=e(n.noData),o=n.options.noDataTemplate===!0?n.options.messages.noData:n.options.noDataTemplate;return n.angular("cleanup",function(){return{elements:i}}),r.destroy(i),i.remove(),o?(n.noData=e('<div class="k-nodata" style="display:none"><div></div></div>').appendTo(n.list),n.noDataTemplate="function"!=typeof o?r.template(o):o,t):(n.noData=null,t)},_renderNoData:function(){var e=this,t=e.noData;t&&(this._angularElement(t,"cleanup"),t.children(":first").html(e.noDataTemplate({instance:e})),this._angularElement(t,"compile"))},_footer:function(){var n=this,i=e(n.footer),o=n.options.footerTemplate;return this._angularElement(i,"cleanup"),r.destroy(i),i.remove(),o?(n.footer=e('<div class="k-footer"></div>').appendTo(n.list),n.footerTemplate="function"!=typeof o?r.template(o):o,t):(n.footer=null,t)},_renderFooter:function(){var e=this,t=e.footer;t&&(this._angularElement(t,"cleanup"),t.html(e.footerTemplate({instance:e})),this._angularElement(t,"compile"))},_enable:function(){var e=this,n=e.options,i=e.element.is("[disabled]");n.enable!==t&&(n.enabled=n.enable),!n.enabled||i?e.enable(!1):e.readonly(e.element.is("[readonly]"))},_adjustListWidth:function(){var e,t,n=this,i=n.list,o=i[0].style.width,r=n.wrapper;if(i.data(v)||!o)return e=window.getComputedStyle?window.getComputedStyle(r[0],null):0,t=parseFloat(e&&e.width)||b(r),e&&_.msie&&(t+=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight)+parseFloat(e.borderLeftWidth)+parseFloat(e.borderRightWidth)),o="border-box"!==i.css("box-sizing")?t-(b(i)-i.width()):t,i.css({fontFamily:r.css("font-family"),width:n.options.autoWidth?"auto":o,minWidth:o,whiteSpace:n.options.autoWidth?"nowrap":"normal"}).data(v,o),!0},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){setTimeout(function(){t.value(t._initial)})},t._form=o.on("reset",t._resetHandler))},_popup:function(){var e=this;e.popup=new a.Popup(e.list,u({},e.options.popup,{anchor:e.wrapper,open:P(e._openHandler,e),close:P(e._closeHandler,e),animation:e.options.animation,isRtl:g.isRtl(e.wrapper),autosize:e.options.autoWidth}))},_angularElement:function(e,t){e&&this.angular(t,function(){return{elements:e}})},_allowOpening:function(){return this.options.noDataTemplate||this.treeview.dataSource.flatView().length},_placeholder:function(e){this.span&&this.span.toggleClass("k-readonly",e).text(e?this.options.placeholder:"")},_currentValue:function(e){var t=this._value(e);return t||0===t||(t=e),t},_checkValue:function(n){var i,o,r,a,s="",l=-1,c=this.value(),u="multiple"===this.options.tagMode;if((n||0===n)&&(n.level&&(n._level=n.level()),s=this._currentValue(n),l=c.indexOf(s)),n.checked){if(i=e.grep(this._tags,function(e){return e.uid===n._tagUid}),i.length)return;o=new d(n.toJSON()),n._tagUid=o.uid,this._tags.push(o),1===this._tags.length&&(this.span.hide(),u||this._multipleTags.push(o)),l===-1&&(c.push(s),this.setValue(c))}else{if(r=this._tags.find(function(e){return e.uid===n._tagUid}),a=this._tags.indexOf(r),a===-1)return this._treeViewCheckAllCheck(n),t;this._tags.splice(a,1),0===this._tags.length&&(this.span.show(),u||this._multipleTags.splice(0,1)),l!==-1&&(c.splice(l,1),this.setValue(c))}this._treeViewCheckAllCheck(n),this._preventChangeTrigger||this._valueMethodCalled||this._noInitialValue||this.trigger(F),this.options.autoClose&&this.popup.visible()&&(this.close(),this.wrapper.focus()),this.popup.position(),this._toggleCloseVisibility(),this._updateSelectedOptions()},_updateSelectedOptions:function(){var e,t,n,i,o;if("select"===this.element[0].tagName.toLowerCase()){if(e=this._tags,t="",n=null,i=null,e.length)for(o=0;o<e.length;o++)n=e[o],i=this._value(n),t+=this._option(i,this._text(n),!0);this.element.html(t)}},_option:function(e,n,i){var o="<option";return e!==t&&(e+="",e.indexOf('"')!==-1&&(e=e.replace(R,""")),o+=' value="'+e+'"'),i&&(o+=" selected"),o+=">",n!==t&&(o+=r.htmlEncode(n)),o+="</option>"},_selectValue:function(e){var t="",n="";(e||0===e)&&(e.level&&(e._level=e.level()),n=this._text(e)||e,t=this._currentValue(e)),null===t&&(t=""),this.setValue(t),this._textAccessor(n,e),this._accessor(t),this._valueMethodCalled||this.trigger(F),this._valueMethodCalled=!1,this.options.autoClose&&this.popup.visible()&&(this.close(),this.wrapper.focus()),this.popup.position(),this._toggleCloseVisibility()},_clearClick:function(e){e.stopPropagation(),this._clearTextAndValue()},_clearTextAndValue:function(){this.setValue([]),this._clearInput(),this._clearText(),this._selection._clearValue(),this.popup.position(),this._toggleCloseVisibility()},_clearText:function(){this.options.placeholder?this._placeholder(!0):this.span&&this.span.html("")},_inputTemplate:function(){var t=this.options.valueTemplate;t=t?r.template(t):e.proxy(r.template("#:this._text(data)#",{useWithBlock:!1}),this),this.valueTemplate=t},_assignInstance:function(e,t){var i=this.options.dataTextField,o={};return i?(n(o,i.split(w),e),n(o,this.options.dataValueField.split(w),t),o=new d(o)):o=e,o},_textAccessor:function(n,i){var o,r=this.valueTemplate,a=this.span;if(n===t)return a.text();a.removeClass("k-readonly"),!i&&(e.isPlainObject(n)||n instanceof d)&&(i=n),i||(i=this._assignInstance(n,this._accessor())),o=function(){return{elements:a.get(),data:[{dataItem:i}]}},this.angular("cleanup",o);try{a.html(r(i))}catch(s){a&&a.html("")}this.angular("compile",o)},_accessors:function(){var t=this.element,n=this.options,i=r.getter,o=t.attr(r.attr("text-field")),a=t.attr(r.attr("value-field")),s=function(t){var n,o;return e.isArray(t)?(n=t.length,o=e.map(t,function(e){return function(t){return t[e]}}),function(e){var t=e._level;if(t||0===t)return o[Math.min(t,n-1)](e)}):i(t)};!n.dataTextField&&o&&(n.dataTextField=o),!n.dataValueField&&a&&(n.dataValueField=a),n.dataTextField=n.dataTextField||"text",n.dataValueField=n.dataValueField||"value",this._text=s(n.dataTextField),this._value=s(n.dataValueField)},_accessor:function(e,t){return this._accessorInput(e,t)},_accessorInput:function(e){var n=this.element[0];return e===t?n.value:(null===e&&(e=""),n.value=e,t)},_clearInput:function(){var e=this.element[0];e.value=""},_clearButton:function(){var t=this.options.messages.clear;this._clear||(this._clear=e('<span unselectable="on" class="k-icon k-clear-value k-i-close" title="'+t+'"></span>').attr({role:"button",tabIndex:-1})),this.options.clearButton?(this._clear.insertAfter(this.span),this.wrapper.addClass("k-dropdowntree-clearable")):this.options.clearButton||this._clear.remove()},_toggleCloseVisibility:function(){var e=this.element.attr(y),t=this.value()&&!this._isMultipleSelection()||this.value().length,n=this.element.val()&&this.element.val()!==this.options.placeholder;e||!t&&!n?this._hideClear():this._showClear()},_showClear:function(){this._clear&&this._clear.removeClass(m)},_hideClear:function(){this._clear&&this._clear.addClass(m)},_openHandler:function(e){this._adjustListWidth(),this.trigger(I)?e.preventDefault():(this.wrapper.attr("aria-expanded",!0),this.tree.attr("aria-hidden",!1).attr("role","tree")); +},_closeHandler:function(e){this.trigger(M)?e.preventDefault():(this.wrapper.attr("aria-expanded",!1),this.tree.attr("aria-hidden",!0))},_treeview:function(){var e=this;e.options.height&&e.tree.css("max-height",e.options.height),e.tree.attr("id",r.guid()),e.treeview=new l(e.tree,u({},e.options.treeview),e),e.dataSource=e.treeview.dataSource,e.treeview.bind("select",function(t){e.trigger("select",t)})},_treeViewDataBound:function(e){var n,i,o;return e.node&&this._prev&&this._prev.length&&e.sender.expand(e.node),this._filtering?(e.node||(this._filtering=!1),this._isMultipleSelection()||this._deselectItem(e),t):(this.treeview||(this.treeview=e.sender),e.node?(i=e.sender.dataItem(e.node),i&&(o=i.children.data(),this._checkLoadedItems(o))):(n=e.sender.dataSource.data(),this._checkLoadedItems(n),this._noInitialValue&&(this._noInitialValue=!1)),this.trigger("dataBound",e),t)},_deselectItem:function(e){var t,n,i=[];for(e.node?(t=e.sender.dataItem(e.node),t&&(i=t.children.data())):i=e.sender.dataSource.data(),n=0;n<i.length;n++)i[n].selected&&!this._valueComparer(i[n],this.value())&&i[n].set("selected",!1)},_checkLoadedItems:function(e){var t,n=this.value();if(e)for(t=0;t<e.length;t++)this._selection._checkLoadedItem(e[t],n)},_treeViewCheckAllCheck:function(e){this.options.checkAll&&this.checkAll&&(this._getAllChecked(),e.checked?this._checkCheckAll():this._uncheckCheckAll())},_checkCheckAll:function(){var e=this.checkAll.find(".k-checkbox");this._allItemsAreChecked?e.prop("checked",!0).prop("indeterminate",!1):e.prop("indeterminate",!0)},_uncheckCheckAll:function(){var e=this.checkAll.find(".k-checkbox");this._allItemsAreUnchecked?e.prop("checked",!1).prop("indeterminate",!1):e.prop("indeterminate",!0)},_filterHeader:function(){var t;this.filterInput&&(this.filterInput.off(p).parent().remove(),this.filterInput=null),this._isFilterEnabled()&&(this._disableCheckChildren(),t='<span class="k-icon k-i-zoom"></span>',this.filterInput=e('<input class="k-textbox"/>').attr({placeholder:this.element.attr("placeholder"),title:this.element.attr("title"),role:"listbox","aria-haspopup":!0,"aria-expanded":!1}),this.filterInput.on("input",P(this._filterChange,this)),e('<span class="k-list-filter" />').insertBefore(this.tree).append(this.filterInput.add(t)))},_filterChange:function(){this.filterInput&&this._search()},_disableCheckChildren:function(){this._isMultipleSelection()&&this.options.treeview.checkboxes&&this.options.treeview.checkboxes.checkChildren&&(this.options.treeview.checkboxes.checkChildren=!1)},_checkAll:function(){this.checkAll&&(this.checkAll.find(".k-checkbox-label, .k-checkbox").off(p),this.checkAll.remove(),this.checkAll=null),this._isMultipleSelection()&&this.options.checkAll&&(this.checkAll=e('<div class="k-check-all"><input type="checkbox" class="k-checkbox"/><span class="k-checkbox-label">Check All</span></div>').insertBefore(this.tree),this.checkAll.find(".k-checkbox-label").html(r.template(this.options.checkAllTemplate)({instance:this})),this.checkAll.find(".k-checkbox-label").on(E+p,P(this._clickCheckAll,this)),this.checkAll.find(".k-checkbox").on("change"+p,P(this._changeCheckAll,this)).on("keydown"+p,P(this._keydownCheckAll,this)),this._disabledCheckedItems=[],this._disabledUnCheckedItems=[],this._getAllChecked(),this._allItemsAreUnchecked||this._checkCheckAll())},_changeCheckAll:function(){var e=this.checkAll.find(".k-checkbox"),t=e.prop("checked");_.msie||_.edge||this._updateCheckAll(t)},_updateCheckAll:function(e){var t=this.checkAll.find(".k-checkbox");this._toggleCheckAllItems(e),t.prop("checked",e),this._disabledCheckedItems.length&&this._disabledUnCheckedItems.length?t.prop("indeterminate",!0):this._disabledCheckedItems.length?t.prop("indeterminate",!e):this._disabledUnCheckedItems.length?t.prop("indeterminate",e):t.prop("indeterminate",!1),this._disabledCheckedItems=[],this._disabledUnCheckedItems=[]},_keydownCheckAll:function(e){var n=e.keyCode,i=e.altKey;return i&&n===f.UP||n===f.ESC?(this.close(),this.wrapper.focus(),e.preventDefault(),t):(n===f.UP&&(this.filterInput?this.filterInput.focus():this.wrapper.focus(),e.preventDefault()),n===f.DOWN&&(this.tree&&this.tree.is(":visible")&&this.tree.focus(),e.preventDefault()),n===f.SPACEBAR&&(_.msie||_.edge)&&(this._clickCheckAll(),e.preventDefault()),t)},_clickCheckAll:function(){var e=this.checkAll.find(".k-checkbox"),t=e.prop("checked");this._updateCheckAll(!t),e.focus()},_dfs:function(e,t,n){for(var i=0;i<e.length&&this[t](e[i],n);i++)this._traverceChildren(e[i],t,n)},_uncheckItemByUid:function(e){this._dfs(this.dataSource.data(),"_uncheckItemEqualsUid",e)},_uncheckItemEqualsUid:function(e,t){return e.enabled===!1||e._tagUid!=t||(e.set("checked",!1),!1)},_selectItemByText:function(e){this._dfs(this.dataSource.data(),"_itemEqualsText",e)},_itemEqualsText:function(e,t){return e.enabled===!1||this._text(e)!==t||(this.treeview.select(this.treeview.findByUid(e.uid)),this._selectValue(e),!1)},_selectItemByValue:function(e){this._dfs(this.dataSource.data(),"_itemEqualsValue",e)},_itemEqualsValue:function(e,t){return e.enabled===!1||!this._valueComparer(e,t)||(this.treeview.select(this.treeview.findByUid(e.uid)),!1)},_checkItemByValue:function(e){var t,n=this.treeview.dataItems();for(t=0;t<e.length;t++)this._dfs(n,"_checkItemEqualsValue",e[t])},_checkItemEqualsValue:function(e,t){return e.enabled===!1||!this._valueComparer(e,t)||(e.set("checked",!0),!1)},_valueComparer:function(e,t){var n,i,o=this._value(e);return this._isNullorUndefined(o)?(n=this._text(e),!!n&&(this._text(t)?n==this._text(t):n==t)):!this._isNullorUndefined(t)&&(i=this._value(t),i?o==i:o==t)},_isNullorUndefined:function(e){return e===t||null===e},_getAllChecked:function(){return this._allCheckedItems=[],this._allItemsAreChecked=!0,this._allItemsAreUnchecked=!0,this._dfs(this.dataSource.data(),"_getAllCheckedItems"),this._allCheckedItems},_getAllCheckedItems:function(e){return this._allItemsAreChecked&&(this._allItemsAreChecked=e.checked),this._allItemsAreUnchecked&&(this._allItemsAreUnchecked=!e.checked),e.checked&&this._allCheckedItems.push(e),!0},_traverceChildren:function(e,t,n){var i=e._childrenOptions&&e._childrenOptions.schema?e._childrenOptions.schema.data:null,o=e[i]||e.items||e.children;o&&this._dfs(o,t,n)},_toggleCheckAllItems:function(e){this._dfs(this.dataSource.data(),"_checkAllCheckItem",e)},_checkAllCheckItem:function(e,t){return e.enabled===!1?e.checked?this._disabledCheckedItems.push(e):this._disabledUnCheckedItems.push(e):e.set("checked",t),!0},_isFilterEnabled:function(){var e=this.options.filter;return e&&"none"!==e},_editable:function(t){var n=this,i=n.element,o=t.disable,r=t.readonly,a=n.wrapper.add(n.filterInput).off(p),s=n._inputWrapper.off(D);n._isMultipleSelection()&&n.tagList.off(E+p),r||o?o?(a.removeAttr(A),s.addClass(x)):(a.attr(A,a.data(A)),s.removeClass(x),a.on("focusin"+p,P(n._focusinHandler,n)).on("focusout"+p,P(n._focusoutHandler,n))):(i.removeAttr(k).removeAttr(y),s.removeClass(x).on(D,n._toggleHover),n._clear.on("click"+p,P(n._clearClick,n)),a.attr(A,a.data(A)).attr(C,!1).on("keydown"+p,P(n._keydown,n)).on("focusin"+p,P(n._focusinHandler,n)).on("focusout"+p,P(n._focusoutHandler,n)),n.wrapper.on(E+p,P(n._wrapperClick,n)),this._isMultipleSelection()&&(n.tagList.on(E+p,"li.k-button",function(t){e(t.currentTarget).addClass(T)}),n.tagList.on(E+p,".k-select",function(e){n._removeTagClick(e)}))),i.attr(k,o).attr(y,r),a.attr(C,o)},_focusinHandler:function(){this._inputWrapper.addClass(T),this._prevent=!1},_focusoutHandler:function(){var e=this;this._isMultipleSelection()&&this.tagList.find(w+T).removeClass(T),e._prevent||(this._inputWrapper.removeClass(T),e._prevent=!0,e.element.blur())},_toggle:function(e){e=e!==t?e:!this.popup.visible(),this[e?I:M]()},_wrapperClick:function(e){e.preventDefault(),this.popup.unbind("activate",this._focusInputHandler),this._focused=this.wrapper,this._prevent=!1,this._toggle()},_toggleHover:function(t){e(t.currentTarget).toggleClass(S,"mouseenter"===t.type)},_focusInput:function(){this.filterInput?this.filterInput.focus():this.checkAll?this.checkAll.find(".k-checkbox").focus():this.tree.is(":visible")&&this.tree.focus()},_keydown:function(e){var n,i,o,r,a=e.keyCode,s=e.altKey,l=this.popup.visible();if(this.filterInput&&(n=this.filterInput[0]===h()),this.wrapper&&(i=this.wrapper[0]===h()),i){if(a===f.ESC)return this._clearTextAndValue(),e.preventDefault(),t;if(this._isMultipleSelection()){if(a===f.LEFT)return this._focusPrevTag(),e.preventDefault(),t;if(a===f.RIGHT)return this._focusNextTag(),e.preventDefault(),t;if(a===f.HOME)return this._focusFirstTag(),e.preventDefault(),t;if(a===f.END)return this._focusLastTag(),e.preventDefault(),t;if(a===f.DELETE)return o=this.tagList.find(w+T).first(),o.length&&(r=this._tags[o.index()],this._removeTag(r)),e.preventDefault(),t;if(a===f.BACKSPACE)return o=this.tagList.find(w+T).first(),o.length?(r=this._tags[o.index()],this._removeTag(r)):(o=this._focusLastTag(),o.length&&(r=this._tags[o.index()],this._removeTag(r))),e.preventDefault(),t}}return n&&(a===f.ESC&&this._clearFilter(),a!==f.UP||s||(this.wrapper.focus(),e.preventDefault()),_.msie&&_.version<10&&(a!==f.BACKSPACE&&a!==f.DELETE||this._search())),s&&a===f.UP||a===f.ESC?(this.wrapper.focus(),this.close(),e.preventDefault(),t):a===f.ENTER&&this._typingTimeout&&this.filterInput&&l?(e.preventDefault(),t):(a!==f.SPACEBAR||n||(this._toggle(!l),e.preventDefault()),s&&a===f.DOWN&&!l&&(this.open(),e.preventDefault()),a===f.DOWN&&l&&(this.filterInput&&!n?this.filterInput.focus():this.checkAll&&this.checkAll.is(":visible")?this.checkAll.find("input").focus():this.tree.is(":visible")&&this.tree.focus(),e.preventDefault()),t)},_focusPrevTag:function(){var e,t=this.tagList.find(w+T);t.length?(e=this.wrapper.attr("aria-activedescendant"),t.first().removeClass(T).removeAttr("id").prev().addClass(T).attr("id",e),this.wrapper.attr("aria-activedescendant",e)):this._focusLastTag()},_focusNextTag:function(){var e,t=this.tagList.find(w+T);t.length?(e=this.wrapper.attr("aria-activedescendant"),t.first().removeClass(T).removeAttr("id").next().addClass(T).attr("id",e),this.wrapper.attr("aria-activedescendant",e)):this._focusFirstTag()},_focusFirstTag:function(){var e,t=this.wrapper.attr("aria-activedescendant");return this._clearDisabledTag(),e=this.tagList.children("li").first().addClass(T).attr("id",t),this.wrapper.attr("aria-activedescendant",t),e},_focusLastTag:function(){var e,t=this.wrapper.attr("aria-activedescendant");return this._clearDisabledTag(),e=this.tagList.children("li").last().addClass(T).attr("id",t),this.wrapper.attr("aria-activedescendant",t),e},_clearDisabledTag:function(){this.tagList.find(w+T).removeClass(T).removeAttr("id")},_search:function(){var e=this;clearTimeout(e._typingTimeout),e._typingTimeout=setTimeout(function(){var t=e.filterInput.val();e._prev!==t&&(e._prev=t,e.search(t)),e._typingTimeout=null},e.options.delay)},_clearFilter:function(){this.filterInput.val().length&&(this.filterInput.val(""),this._prev="",this._filtering=!0,this.treeview.dataSource.filter({}))},_removeTagClick:function(t){t.stopPropagation();var n=this._tags[e(t.currentTarget.parentElement).index()];this._removeTag(n)},_removeTag:function(e){if(e){var t=e.uid;this._uncheckItemByUid(t)}}});a.plugin(z),i=r.Class.extend({init:function(e){this._dropdowntree=e},_initWrapper:function(){this._wrapper(),this._span()},_preselect:function(e){var t=this._dropdowntree;t._selectValue(e)},_wrapper:function(){var e,t=this._dropdowntree,n=t.element,i=n[0];e=n.parent(),e.is("span.k-widget")||(e=n.wrap("<span />").parent(),e[0].style.cssText=i.style.cssText,e[0].title=i.title),t._focused=t.wrapper=e.addClass("k-widget k-dropdowntree").addClass(i.className).css("display","").attr({accesskey:n.attr("accesskey"),unselectable:"on",role:"listbox","aria-haspopup":!0,"aria-expanded":!1}),n.hide().removeAttr("accesskey")},_span:function(){var t,n=this._dropdowntree,i=n.wrapper,o="span.k-input";t=i.find(o),t[0]||(i.append('<span unselectable="on" class="k-dropdown-wrap k-state-default"><span unselectable="on" class="k-input"> </span><span unselectable="on" class="k-select" aria-label="select"><span class="k-icon k-i-arrow-60-down"></span></span></span>').append(n.element),t=i.find(o)),n.span=t,n._inputWrapper=e(i[0].firstChild),n._arrow=i.find(".k-select"),n._arrowIcon=n._arrow.find(".k-icon")},_setValue:function(e){var n,i=this._dropdowntree;return e===t||null===e?(n=i._values.slice()[0],e="object"==typeof n?n:i._accessor()||n,e===t||null===e?"":e):(i._valueMethodCalled=!0,0===e.length?(i._clearTextAndValue(),i._valueMethodCalled=!1,t):(i._selectItemByValue(e),i._toggleCloseVisibility(),t))},_clearValue:function(){var e=this._dropdowntree,t=e.treeview.select();e.treeview.dataItem(t)&&(e.treeview.dataItem(t).set("selected",!1),e._valueMethodCalled||e.trigger(F))},_checkLoadedItem:function(e,t){var n=this._dropdowntree;(!n._isNullorUndefined(t)&&""!==t&&n._valueComparer(e,t)||!t&&e.selected)&&n.treeview.select(n.treeview.findByUid(e.uid))}}),o=r.Class.extend({init:function(e){this._dropdowntree=e},_initWrapper:function(){var t=this._dropdowntree;this._tagTemplate(),t.element.attr("multiple","multiple").hide(),this._wrapper(),t._tags=new c([]),t._multipleTags=new c([]),this._tagList(),t.span=e('<span unselectable="on" class="k-input"> </span>').insertAfter(t.tagList),t._inputWrapper=e(t.wrapper[0].firstChild)},_preselect:function(t,n){var i=this._dropdowntree,o=n||i.options.value;e.isArray(t)||t instanceof r.data.ObservableArray||(t=[t]),(e.isPlainObject(t[0])||t[0]instanceof r.data.ObservableObject||!i.options.dataValueField)&&(i.dataSource.data(t),i.value(o))},_tagTemplate:function(){var e=this._dropdowntree,t=e.options,n=t.valueTemplate,i="multiple"===t.tagMode,o=t.messages.singleTag;n=n?r.template(n):e.valueTemplate,e.valueTemplate=function(t){return i?'<li class="k-button '+(t.enabled===!1?"k-state-disabled":"")+'" unselectable="on" role="option" '+(t.enabled===!1?'aria-disabled="true"':"")+'><span unselectable="on">'+n(t)+'</span><span title="'+e.options.messages.deleteTag+'" aria-label="'+e.options.messages.deleteTag+'" class="k-select"><span class="k-icon k-i-close"></span></span></li>':'<li class="k-button" unselectable="on" role="option"><span unselectable="on" data-bind="text: tags.length"></span><span unselectable="on"> '+o+"</span></li>"}},_wrapper:function(){var t=this._dropdowntree,n=t.element,i=n.parent("span.k-dropdowntree");i[0]||(i=n.wrap('<div class="k-widget k-dropdowntree" unselectable="on" />').parent(),i[0].style.cssText=n[0].style.cssText,i[0].title=n[0].title,e('<div class="k-multiselect-wrap k-floatwrap" unselectable="on" />').insertBefore(n)),t.wrapper=i.addClass(n[0].className).css("display","").attr({role:"listbox","aria-activedescendant":r.guid(),"aria-haspopup":!0,"aria-expanded":!1}),t._innerWrapper=e(i[0].firstChild)},_tagList:function(){var t,n,i,o=this._dropdowntree,a=o._innerWrapper.children("ul");a[0]||(t="multiple"===o.options.tagMode,n=t?"tags":"multipleTag",a=e('<ul role="listbox" unselectable="on" data-template="tagTemplate" data-bind="source: '+n+'" class="k-reset"/>').appendTo(o._innerWrapper)),o.tagList=a,o.tagList.attr("id",r.guid()+"_tagList"),o.wrapper.attr("aria-owns",o.tagList.attr("id")),i=r.observable({multipleTag:o._multipleTags,tags:o._tags,tagTemplate:o.valueTemplate}),r.bind(o.tagList,i),o.tagList.attr("data-stop",!0)},_setValue:function(e){var n=this._dropdowntree,i=n._values;return e===t||null===e?n._values.slice():(n.setValue(e),n._valueMethodCalled=!0,e.length?(this._removeValues(i,e),n._checkItemByValue(e)):n._clearTextAndValue(),n._valueMethodCalled=!1,n._toggleCloseVisibility(),t)},_removeValues:function(e,t){var n,i,o=this._dropdowntree,r=this._getNewValues(e,t);for(n=0;n<r.length;n++)for(i=0;i<o._tags.length;i++)o._valueComparer(o._tags[i],r[n])&&o._uncheckItemByUid(o._tags[i].uid)},_getNewValues:function(e,t){var n,i=[];for(n=0;n<e.length;n++)t.indexOf(e[n])===-1&&i.push(e[n]);return i},_clearValue:function(){var e,t,n=this._dropdowntree,i=n._tags.slice();for(e=0;e<i.length;e++)t=i[e].uid,n._preventChangeTrigger=!0,n._uncheckItemByUid(t);i.length&&(n._preventChangeTrigger=!1,n._valueMethodCalled||n.trigger(F))},_checkLoadedItem:function(e,n){var i=this._dropdowntree;return i._noInitialValue&&e.checked?(i._checkValue(e),t):(n.length&&(n.indexOf(i._currentValue(e))!==-1||n.indexOf(e))!==-1&&!this._findTag(i._currentValue(e))&&(e.checked?i._checkValue(e):e.set("checked",!0)),t)},_findTag:function(e){var t=this._dropdowntree;return t._tags.find(function(n){return t._valueComparer(n,e)})}}),r.ui.DropDownTree.SingleSelection=i,r.ui.DropDownTree.MultipleSelection=o}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.combobox.min",["kendo.list.min","kendo.mobile.scroller.min","kendo.virtuallist.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,o=i.List,r=i.Select,a=n.caret,s=n.support,l=s.placeholder,c=n._activeElement,d=n.keys,u=".kendoComboBox",h=u+"FocusEvent",p="click"+u,f="mousedown"+u,g="disabled",m="readonly",v="change",_="k-i-loading",b="k-state-default",w="k-state-focused",k="k-state-disabled",y="aria-disabled",x="off",C="filter",S="accept",T="rebind",D="mouseenter"+u+" mouseleave"+u,A=e.proxy,E=/(\r\n|\n|\r)/gm,I=r.extend({init:function(t,i){var o,a,s=this;s.ns=u,i=e.isArray(i)?{dataSource:i}:i,r.fn.init.call(s,t,i),i=s.options,t=s.element.on("focus"+u,A(s._focusHandler,s)),i.placeholder=i.placeholder||t.attr("placeholder"),s._reset(),s._wrapper(),s._input(),s._clearButton(),s._tabindex(s.input),s._popup(),s._dataSource(),s._ignoreCase(),s._enable(),s._attachFocusEvents(),s._oldIndex=s.selectedIndex=-1,s._aria(),s._initialIndex=i.index,s.requireValueMapper(s.options),s._initList(),s._cascade(),i.autoBind?s._filterSource():(o=i.text,!o&&s._isSelect&&(o=t.children(":selected").text()),o&&s._setText(o)),o||s._placeholder(),a=e(s.element).parents("fieldset").is(":disabled"),a&&s.enable(!1),n.notify(s),s._toggleCloseVisibility()},options:{name:"ComboBox",enabled:!0,index:-1,text:null,value:null,autoBind:!0,delay:200,dataTextField:"",dataValueField:"",minLength:1,enforceMinLength:!1,height:200,highlightFirst:!0,filter:"none",placeholder:"",suggest:!1,cascadeFrom:"",cascadeFromField:"",cascadeFromParentField:"",ignoreCase:!0,animation:{},virtual:!1,template:null,groupTemplate:"#:data#",fixedGroupTemplate:"#:data#",clearButton:!0,syncValueAndText:!0,autoWidth:!1,popup:null},events:["open","close",v,"select","filtering","dataBinding","dataBound","cascade","set"],setOptions:function(e){var t=this._listOptions(e);r.fn.setOptions.call(this,e),this.listView.setOptions(t),this._accessors(),this._aria(),this._clearButton()},destroy:function(){var e=this;e.input.off(u),e.input.off(h),e.element.off(u),e._inputWrapper.off(u),clearTimeout(e._pasteTimeout),e._arrow.off(p+" "+f),e._clear.off(p+" "+f),r.fn.destroy.call(e)},_change:function(){var e=this,n=e.text(),i=n&&n!==e._oldText&&n!==e.options.placeholder,o=e.selectedIndex,a=o===-1;return!e.options.syncValueAndText&&!e.value()&&a&&i?(e._old="",e._oldIndex=o,e._oldText=n,e._typing||e.element.trigger(v),e.trigger(v),e._typing=!1,t):(r.fn._change.call(e),e._toggleCloseVisibility(),t)},_attachFocusEvents:function(){var e=this;e.input.on("focus"+h,A(e._inputFocus,e)).on("focusout"+h,A(e._inputFocusout,e))},_focusHandler:function(){this.input.focus()},_arrowClick:function(){this._toggle()},_inputFocus:function(){this._inputWrapper.addClass(w),this._placeholder(!1)},_inputFocusout:function(){var e,n,i=this,o=i.value();return i._userTriggered=!0,i._inputWrapper.removeClass(w),clearTimeout(i._typingTimeout),i._typingTimeout=null,i.text(i.text()),e=i._focus(),n=this.listView.dataItemByIndex(this.listView.getElementIndex(e)),o!==i.value()&&i.trigger("select",{dataItem:n,item:e})?(i.value(o),t):(i._placeholder(),i._blur(),i.element.blur(),t)},_inputPaste:function(){var e=this;clearTimeout(e._pasteTimeout),e._pasteTimeout=null,e._pasteTimeout=setTimeout(function(){e.search()})},_editable:function(e){var t=this,n=e.disable,i=e.readonly,o=t._inputWrapper.off(u),r=t.element.add(t.input.off(u)),a=t._arrow.off(p+" "+f),s=t._clear;i||n?(o.addClass(n?k:b).removeClass(n?b:k),r.attr(g,n).attr(m,i).attr(y,n)):(o.addClass(b).removeClass(k).on(D,t._toggleHover),r.removeAttr(g).removeAttr(m).attr(y,!1),a.on(p,A(t._arrowClick,t)).on(f,function(e){e.preventDefault()}),s.on(p+" touchend"+u,A(t._clearValue,t)).on(f,function(e){e.preventDefault()}),t.input.on("keydown"+u,A(t._keydown,t)).on("input"+u,A(t._search,t)).on("paste"+u,A(t._inputPaste,t))),t._toggleCloseVisibility()},open:function(){var e=this,t=e._state,n=!!e.dataSource.filter()&&e.dataSource.filter().filters.length>0,i=!e.ul.find(e.listView.focus()).length;e.popup.visible()||(!e.listView.bound()&&t!==C||t===S?(e._open=!0,e._state=T,1!==e.options.minLength&&!n||n&&e.value()&&e.selectedIndex===-1?(e.refresh(),e._openPopup(),this.options.virtual||e.listView.bound(!1)):e._filterSource()):e._allowOpening()&&(e.popup._hovered=!0,e._openPopup(),e.options.virtual?e._focusItem():i&&e.options.highlightFirst&&e.listView.focus(0)))},_scrollToFocusedItem:function(){var e=this.listView;e.scrollToIndex(e.getElementIndex(e.focus()))},_openPopup:function(){this.popup.one("activate",A(this._scrollToFocusedItem,this)),this.popup.open()},_updateSelectionState:function(){var e=this,n=e.options.text,i=e.options.value;e.listView.isFiltered()||(e.selectedIndex===-1?(n!==t&&null!==n||(n=i),e._accessor(i),e.input.val(n||e.input.val()),e._placeholder()):e._oldIndex===-1&&(e._oldIndex=e.selectedIndex))},_buildOptions:function(e){var n,i=this;i._isSelect&&(n=i._customOption,i._state===T&&(i._state=""),i._customOption=t,i._options(e,"",i.value()),n&&n[0].selected&&!i.listView._emptySearch&&i._custom(n.val()))},_updateSelection:function(){var n,i=this,o=i.listView,r=i._initialIndex,a=null!==r&&r>-1,s=i._state===C;return s?(e(o.focus()).removeClass("k-state-selected"),t):(i._fetch||(o.value().length||(a?i.select(r):i._accessor()&&o.value(i._accessor())),i._initialIndex=null,n=o.selectedDataItems()[0],n&&(i._value(n)!==i.value()?i._custom(i._value(n)):i._value(n)!==i.element[0].value&&i._accessor(i._value(n)),i.text()&&i.text()!==i._text(n)&&i._selectValue(n))),t)},_updateItemFocus:function(){var e=this.listView;this.options.highlightFirst?e.focus()||e.focusIndex()||e.focus(0):e.focus(-1)},_listBound:function(){var e=this,n=e.input[0]===c(),i=e.dataSource.flatView(),o=e.listView.skip(),r=i.length,a=e.dataSource._group?e.dataSource._group.length:0,s=o===t||0===o;e._presetValue=!1,e._renderFooter(),e._renderNoData(),e._toggleNoData(!r),e._toggleHeader(!!a&&!!r),e._resizePopup(),e.popup.position(),e._buildOptions(i),e._makeUnselectable(),e._updateSelection(),i.length&&s&&(e._updateItemFocus(),e.options.suggest&&n&&e.input.val()&&e.suggest(i[0])),e._open&&(e._open=!1,e._typingTimeout&&!n?e.popup.close():e.toggle(e._allowOpening()),e._typingTimeout=null),e._hideBusy(),e.trigger("dataBound")},_listChange:function(){this._selectValue(this.listView.selectedDataItems()[0]),this._presetValue&&(this._oldIndex=this.selectedIndex)},_get:function(e){var t,n,i;if("function"==typeof e){for(t=this.dataSource.flatView(),i=0;i<t.length;i++)if(e(t[i])){e=i,n=!0;break}n||(e=-1)}return e},_select:function(e,t){var n=this;return e=n._get(e),e===-1&&(n.input[0].value="",n._accessor("")),n.listView.select(e).done(function(){t||n._state!==C||(n._state=S),n._toggleCloseVisibility()})},_selectValue:function(e){var n=this.listView.select(),i="",o="";n=n[n.length-1],n===t&&(n=-1),this.selectedIndex=n,this.listView.isFiltered()&&n!==-1&&(this._valueBeforeCascade=this._old),n!==-1||e?((e||0===e)&&(i=this._dataValue(e),o=this._text(e)),null===i&&(i="")):(this.options.syncValueAndText?(o=this.options.dataTextField===this.options.dataValueField?this._accessor():this.input[0].value,i=o):o=this.text(),this.listView.focus(-1)),this._setDomInputValue(o),this._accessor(i!==t?i:o,n),this._placeholder(),this._triggerCascade()},_setDomInputValue:function(e){var t,n,i=this,o=a(this.input);o&&o.length&&(t=o[0]),this._prev=this.input[0].value=e,t&&this.selectedIndex===-1&&(n=s.mobileOS,n.wp||n.android?setTimeout(function(){i.input[0].setSelectionRange(t,t)},0):this.input[0].setSelectionRange(t,t))},refresh:function(){this.listView.refresh()},_toggleCloseVisibility:function(){var e=this.element.is(":disabled")||this.element.is("[readonly]");this.text()&&!e?this._showClear():this._hideClear()},suggest:function(e){var n,i=this,r=i.input[0],s=i.text(),l=a(r)[0],u=i._last,h=i.dataSource.options.accentFoldingFiltering;return u==d.BACKSPACE||u==d.DELETE?(i._last=t,t):(e=e||"","string"!=typeof e&&(e[0]&&(e=i.dataSource.view()[o.inArray(e[0],i.ul[0])]),e=e?i._text(e):""),l<=0&&(l=(h?s.toLocaleLowerCase(h):s.toLowerCase()).indexOf(h?e.toLocaleLowerCase(h):e.toLowerCase())+1),e?(e=""+e,n=(h?e.toLocaleLowerCase(h):e.toLowerCase()).indexOf(h?s.toLocaleLowerCase(h):s.toLowerCase()),n>-1&&(s+=e.substring(n+s.length))):s=s.substring(0,l),s.length===l&&e||(r.value=s,r===c()&&a(r,l,s.length)),t)},text:function(e){var n,i,r,a,s,l;return e=null===e?"":e,n=this,i=n.input[0],r=n.options.ignoreCase,a=e,e===t?i.value:n.options.autoBind!==!1||n.listView.bound()?(s=n.dataItem(),s&&n._text(s).replace&&n._text(s).replace(E,"")===e&&(l=n._value(s),l===o.unifyType(n._old,typeof l))?(n._triggerCascade(),t):(r&&(a=a.toLowerCase()),n.dataItem()&&n._text(n.dataItem())===e||(n._select(function(e){return e=n._text(e),r&&(e=(e+"").toLowerCase()),e===a}).done(function(){n.selectedIndex<0&&(i.value=e,n.options.syncValueAndText&&n._accessor(e),n._cascadeTriggered=!0,n._triggerCascade()),n._prev=i.value}),n._toggleCloseVisibility()),t)):(n._setText(e),t)},toggle:function(e){this._toggle(e,!0)},value:function(e){var n=this,i=n.options,o=n.listView;return e===t?(e=n._accessor()||n.listView.value()[0],e===t||null===e?"":e):(n.requireValueMapper(n.options,e),n.trigger("set",{value:e}),e===i.value&&n.input.val()===i.text||(n._accessor(e),n._isFilterEnabled()&&o.bound()&&o.isFiltered()?n._clearFilter():n._fetchData(),o.value(e).done(function(){n.selectedIndex!==-1||o._selectedDataItems&&o._selectedDataItems.length||(n._accessor(e),n.input.val(e),n._placeholder(!0)),n._old=n._valueBeforeCascade=n._accessor(),n._oldIndex=n.selectedIndex,n._prev=n.input.val(),n._state===C&&(n._state=S),n._toggleCloseVisibility()})),t)},_hideBusy:function(){var e=this;clearTimeout(e._busy),e._arrowIcon.removeClass(_),e._focused.attr("aria-busy",!1),e._busy=null,e._toggleCloseVisibility()},_click:function(e){var n=this,i=e.item,r=n.listView.dataItemByIndex(n.listView.getElementIndex(i)),a=!0;return e.preventDefault(),r&&(a=n._value(r)!==o.unifyType(n.value(),typeof n._value(r)),a||n.input.val(n._text(r))),a&&n.trigger("select",{dataItem:r,item:i})?(n.close(),t):(n._userTriggered=!0,n._select(i).done(function(){n._blur()}),t)},_syncValueAndText:function(){return this.options.syncValueAndText},_inputValue:function(){return this.text()},_searchByWord:function(e){var n,i=this,o=i.options,r=i.dataSource,a=o.ignoreCase,s=function(n){var o=i._text(n);if(o!==t)return o+="",(""===o||""!==e)&&(a&&(o=o.toLowerCase()),0===o.indexOf(e))};return a&&(e=e.toLowerCase()),i.ul[0].firstChild?(this.listView.focus(this._get(s)),n=this.listView.focus(),n&&(o.suggest&&i.suggest(n),this.open()),this.options.highlightFirst&&!e&&this.listView.focusFirst(),t):(r.one(v,function(){r.view()[0]&&i.search(e)}).fetch(),t)},_input:function(){var t,n,i=this,o=i.element.removeClass("k-input")[0],r=o.accessKey,a=i.wrapper,s="input.k-input",c=o.name||"";c&&(c='name="'+c+'_input" '),t=a.find(s),t[0]||(a.append('<span tabindex="-1" unselectable="on" class="k-dropdown-wrap k-state-default"><input '+c+'class="k-input" type="text" autocomplete="'+x+'"/><span unselectable="on" class="k-select" aria-label="select"><span class="k-icon k-i-arrow-60-down"></span></span></span>').append(i.element),t=a.find(s)),t[0].style.cssText=o.style.cssText,t[0].title=o.title,n=parseInt(this.element.prop("maxlength")||this.element.attr("maxlength"),10),n>-1&&(t[0].maxLength=n),t.addClass(o.className).css({width:"",height:o.style.height}).attr({role:"combobox","aria-expanded":!1}).show(),l&&t.attr("placeholder",i.options.placeholder),r&&(o.accessKey="",t[0].accessKey=r),i._focused=i.input=t,i._inputWrapper=e(a[0].firstChild),i._arrow=a.find(".k-select").attr({role:"button",tabIndex:-1}),i._arrowIcon=i._arrow.find(".k-icon"),o.id&&i._arrow.attr("aria-controls",i.ul[0].id)},_clearButton:function(){o.fn._clearButton.call(this),this.options.clearButton&&(this._clear.insertAfter(this.input),this.wrapper.addClass("k-combobox-clearable"))},_keydown:function(e){var t,n,i,r=this,a=e.keyCode;if(r._last=a,clearTimeout(r._typingTimeout),r._typingTimeout=null,a===d.HOME)r._firstItem();else if(a===d.END)r._lastItem();else if(a===d.ENTER||a===d.TAB&&r.popup.visible())if(t=r.listView.focus(),n=r.dataItem(),i=!0,r.popup.visible()||n&&r.text()===r._text(n)||(t=null),t){if(r.popup.visible()&&e.preventDefault(),n=r.listView.dataItemByIndex(r.listView.getElementIndex(t)),n&&(i=r._value(n)!==o.unifyType(r.value(),typeof r._value(n))),i&&r.trigger("select",{dataItem:n,item:t}))return;r._userTriggered=!0,r._select(t).done(function(){r._blur(),r._valueBeforeCascade=r._old=r.value()})}else(r._syncValueAndText()||r._isSelect)&&r._accessor(r.input.val()),r.listView.value(r.input.val()),r._blur();else a==d.TAB||r._move(e)?a===d.ESC&&!r.popup.visible()&&r.text()&&r._clearValue():r._search()},_placeholder:function(e){if(!l){var n,i=this,o=i.input,r=i.options.placeholder;if(r){if(n=i.value(),e===t&&(e=!n),o.toggleClass("k-readonly",e),!e){if(n)return;r=""}o.val(r),r||o[0]!==c()||a(o[0],0,0)}}},_search:function(){var e=this;clearTimeout(e._typingTimeout),e._typingTimeout=setTimeout(function(){var t=e.text();e._prev!==t&&(e._prev=t,"none"===e.options.filter&&e.options.virtual&&e.listView.select(-1),e.search(t),e._toggleCloseVisibility()),e._typingTimeout=null},e.options.delay)},_setText:function(e){this.input.val(e),this._prev=e},_wrapper:function(){var e=this,t=e.element,n=t.parent();n.is("span.k-widget")||(n=t.hide().wrap("<span />").parent(),n[0].style.cssText=t[0].style.cssText),e.wrapper=n.addClass("k-widget k-combobox").addClass(t[0].className).css("display","")},_clearSelection:function(e,t){var n=this,i=e.value(),o=i&&e.selectedIndex===-1;this.selectedIndex==-1&&this.value()||(t||!i||o)&&(n.options.value="",n.value(""),n._selectedValue=null)},_preselect:function(e,t){this.input.val(t),this._accessor(e),this._old=this._accessor(),this._oldIndex=this.selectedIndex,this.listView.setValue(e),this._placeholder(),this._initialIndex=null,this._presetValue=!0,this._toggleCloseVisibility()}});i.plugin(I)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.multiselect.min",["kendo.list.min","kendo.mobile.scroller.min","kendo.virtuallist.min"],e)}(function(){return function(e,t){function n(e,t){var n;if(null===e&&null!==t||null!==e&&null===t)return!1;if(n=e.length,n!==t.length)return!1;for(;n--;)if(e[n]!==t[n])return!1;return!0}var i=window.kendo,o=i.ui,r=o.List,a=e.extend({A:65},i.keys),s=i._activeElement,l=i.data.ObservableArray,c=e.proxy,d="id",u="li",h="accept",p="filter",f="rebind",g="open",m="close",v="change",_="progress",b="select",w="deselect",k="aria-disabled",y="k-state-focused",x="k-state-selected",C="k-hidden",S="k-state-hover",T="k-state-disabled",D="k-no-click",A="disabled",E="readonly",I="off",M=".kendoMultiSelect",F="click"+M,R="keydown"+M,P="mouseenter"+M,z="mouseleave"+M,B=P+" "+z,L=/"/g,H=e.isArray,N=["font-family","font-size","font-stretch","font-style","font-weight","letter-spacing","text-transform","line-height"],O=r.extend({init:function(t,n){var o,a,s=this;s.ns=M,r.fn.init.call(s,t,n),s._optionsMap={},s._customOptions={},s._wrapper(),s._tagList(),s._input(),s._textContainer(), +s._loader(),s._clearButton(),s._tabindex(s.input),t=s.element.attr("multiple","multiple").hide(),n=s.options,n.placeholder||(n.placeholder=t.data("placeholder")),o=t.attr(d),o&&(s._tagID=o+"_tag_active",o+="_taglist",s.tagList.attr(d,o),s.input.attr("aria-describedby",o)),s._initialOpen=!0,s._ariaLabel(),s._ariaSetLive(),s._dataSource(),s._ignoreCase(),s._popup(),s._tagTemplate(),s.requireValueMapper(s.options),s._initList(),s._reset(),s._enable(),s._placeholder(),n.autoBind?s.dataSource.fetch():n.value&&s._preselect(n.value),a=e(s.element).parents("fieldset").is(":disabled"),a&&s.enable(!1),s._ariaSetSize(s.value().length),i.notify(s),s._toggleCloseVisibility()},options:{name:"MultiSelect",tagMode:"multiple",enabled:!0,autoBind:!0,autoClose:!0,highlightFirst:!0,dataTextField:"",dataValueField:"",filter:"startswith",ignoreCase:!0,minLength:1,messages:{singleTag:"item(s) selected",clear:"clear",deleteTag:"delete",noData:"No data found."},enforceMinLength:!1,delay:100,value:null,maxSelectedItems:null,placeholder:"",height:200,animation:{},virtual:!1,itemTemplate:"",tagTemplate:"",groupTemplate:"#:data#",fixedGroupTemplate:"#:data#",clearButton:!0,autoWidth:!1,popup:null},events:[g,m,v,b,w,"filtering","dataBinding","dataBound"],setDataSource:function(e){this.options.dataSource=e,this._state="",this._dataSource(),this.persistTagList=!1,this.listView.setDataSource(this.dataSource),this.options.autoBind&&this.dataSource.fetch()},setOptions:function(e){var t=this._listOptions(e);r.fn.setOptions.call(this,e),this.listView.setOptions(t),this._accessors(),this._aria(this.tagList.attr(d)),this._tagTemplate(),this._placeholder(),this._clearButton()},currentTag:function(e){var n=this;return e===t?n._currentTag:(n._currentTag&&(n._currentTag.removeClass(y).removeAttr(d),n._currentTag.find(".k-select").attr("aria-hidden",!0),n.input.removeAttr("aria-activedescendant")),e&&(e.addClass(y).attr(d,n._tagID),e.find(".k-select").removeAttr("aria-hidden"),n.input.attr("aria-activedescendant",n._tagID)),n._currentTag=e,t)},dataItems:function(){return this.listView.selectedDataItems()},destroy:function(){var e=this,t=e.ns;clearTimeout(e._busy),clearTimeout(e._typingTimeout),e.wrapper.off(t),e.tagList.off(t),e.input.off(t),e._clear.off(t),r.fn.destroy.call(e)},_activateItem:function(){this.popup.visible()&&r.fn._activateItem.call(this),this.currentTag(null)},_listOptions:function(t){var n=this,o=r.fn._listOptions.call(n,e.extend(t,{selectedItemChange:c(n._selectedItemChange,n),selectable:"multiple"})),a=this.options.itemTemplate||this.options.template,s=o.itemTemplate||a||o.template;return s||(s="#:"+i.expr(o.dataTextField,"data")+"#"),o.template=s,o},_setListValue:function(){r.fn._setListValue.call(this,this._initialValues.slice(0))},_listChange:function(e){var n,i=this.dataSource.flatView(),o=this._optionsMap,r=this._value;for(this._state===f&&(this._state=""),n=0;n<e.added.length;n++)if(o[r(e.added[n].dataItem)]===t){this._render(i);break}this._selectValue(e.added,e.removed)},_selectedItemChange:function(e){var t,n,i=e.items;for(n=0;n<i.length;n++)t=i[n],this.tagList.children().eq(t.index).children("span:first").html(this.tagTextTemplate(t.item))},_wrapperMousedown:function(t){var n=this,o="input"!==t.target.nodeName.toLowerCase(),r=e(t.target),a=r.hasClass("k-select")||r.hasClass("k-icon");a&&(a=!r.closest(".k-select").children(".k-i-arrow-60-down").length),!o||a&&i.support.mobileOS||!t.cancelable||t.preventDefault(),a||(n.input[0]!==s()&&o&&n.input.focus(),1===n.options.minLength&&n.open())},_inputFocus:function(){this._placeholder(!1),this.wrapper.addClass(y)},_inputFocusout:function(){var e=this;clearTimeout(e._typingTimeout),e.wrapper.removeClass(y),e._placeholder(!e.listView.selectedDataItems()[0],!0),e.close(),e._state===p&&(e._state=h,e.listView.skipUpdate(!0)),e.listView.bound()&&e.listView.isFiltered()&&(e.persistTagList=!0,e._clearFilter()),e.element.blur()},_removeTag:function(e,n){var i,o,r,a=this,s=a._state,l=e.index(),c=a.listView,d=c.value()[l],u=a.listView.selectedDataItems()[l],f=a._customOptions[d],g=c.element[0].children;return a.trigger(w,{dataItem:u,item:e})?(a._close(),t):(f!==t||s!==h&&s!==p||(f=a._optionsMap[d]),r=function(){a.currentTag(null),n&&a._change(),a._close()},f===t&&c.select().length?(a.persistTagList=!1,c.select(c.select()[l]).done(r)):(i=a.element[0].children[f],i&&(i.selected=!1),c.removeAt(l),o=g[f],o&&g[f].classList.remove("k-state-selected"),"single"!==a.options.tagMode?e.remove():a._updateTagListHTML(),r()),t)},_tagListClick:function(t){var n=e(t.currentTarget);n.children(".k-i-arrow-60-down").length||this._removeTag(n.closest(u),!0)},_clearClick:function(){var t=this;"single"===t.options.tagMode?t._clearSingleTagValue():t.tagList.children().each(function(n,i){t._removeTag(e(i),!1)}),t.input.val(""),t._search(),t._change(),t.focus(),t._hideClear(),t._state===p&&(t._state=h)},_clearSingleTagValue:function(){var e=this,t=e.persistTagList;t&&(e.persistTagList=!1),e.listView.value([]),e.persistTagList=t},_editable:function(t){var n=this,i=t.disable,o=t.readonly,r=n.wrapper.off(M),a=n.tagList.off(M),s=n.element.add(n.input.off(M));o||i?(r.toggleClass(T,i).toggleClass(D,o),s.attr(A,i).attr(E,o).attr(k,i)):(r.removeClass(T).on(B,n._toggleHover).on("mousedown"+M+" touchend"+M,c(n._wrapperMousedown,n)),n.input.on(R,c(n._keydown,n)).on("paste"+M,c(n._search,n)).on("input"+M,c(n._search,n)).on("focus"+M,c(n._inputFocus,n)).on("focusout"+M,c(n._inputFocusout,n)),n._clear.on(F+M+" touchend"+M,c(n._clearClick,n)),s.removeAttr(A).removeAttr(E).attr(k,!1),a.on(P,u,function(){e(this).addClass(S)}).on(z,u,function(){e(this).removeClass(S)}).on(F,"li.k-button .k-select",c(n._tagListClick,n)))},_close:function(){var e=this;e.options.autoClose?e.close():e.popup.position()},_filterSource:function(e,t){t||(t=this._retrieveData),this._retrieveData=!1,r.fn._filterSource.call(this,e,t)},close:function(){this._activeItem=null,this.input.removeAttr("aria-activedescendant"),this.popup.close()},open:function(){var t=this;t._request&&(t._retrieveData=!1),t._retrieveData||!t.listView.bound()||t._state===h?(t._open=!0,t._state=f,t.listView.skipUpdate(!0),t.persistTagList=!(t._initialOpen&&!t.listView.bound()),t._filterSource(),t._focusItem()):t._allowOpening()&&(!t._initialOpen||t.options.autoBind||t.options.virtual||!t.options.value||e.isPlainObject(t.options.value[0])||t.value(t._initialValues),t.popup._hovered=!0,t._initialOpen=!1,t.popup.open(),t._focusItem())},toggle:function(e){e=e!==t?e:!this.popup.visible(),this[e?g:m]()},refresh:function(){this.listView.refresh()},_listBound:function(){var e=this,n=e.dataSource.flatView(),i=e.listView.skip();e._render(n),e._renderFooter(),e._renderNoData(),e._toggleNoData(!n.length),e._resizePopup(),e._open&&(e._open=!1,e.toggle(e._allowOpening())),e.popup.position(),!e.options.highlightFirst||i!==t&&0!==i||e.listView.focusFirst(),e._touchScroller&&e._touchScroller.reset(),e._hideBusy(),e._makeUnselectable(),e.trigger("dataBound")},_inputValue:function(){var e=this,t=e.input.val();return e.options.placeholder===t&&(t=""),t},value:function(e){var n=this,i=n.listView,o=i.value().slice(),r=n.options.maxSelectedItems,a=i.bound()&&i.isFiltered();return e===t?o:(n.persistTagList=!1,n.requireValueMapper(n.options,e),e=n._normalizeValues(e),null!==r&&e.length>r&&(e=e.slice(0,r)),a&&n._clearFilter(),i.value(e),n._old=n._valueBeforeCascade=e.slice(),a||n._fetchData(),n._ariaSetSize(n.value().length),n._toggleCloseVisibility(),t)},_preselect:function(t,n){var o=this;H(t)||t instanceof i.data.ObservableArray||(t=[t]),(e.isPlainObject(t[0])||t[0]instanceof i.data.ObservableObject||!o.options.dataValueField)&&(o.dataSource.data(t),o.value(n||o._initialValues),o._retrieveData=!0)},_setOption:function(e,t){var n=this.element[0].children[this._optionsMap[e]];n&&(n.selected=t)},_fetchData:function(){var e=this,t=!!e.dataSource.view().length,n=0===e.listView.value().length;n||e._request||(e._retrieveData||!e._fetch&&!t)&&(e._fetch=!0,e._retrieveData=!1,e.dataSource.read().done(function(){e._fetch=!1}))},_isBound:function(){return this.listView.bound()&&!this._retrieveData},_dataSource:function(){var e=this,t=e.element,n=e.options,o=n.dataSource||{};o=H(o)?{data:o}:o,o.select=t,o.fields=[{field:n.dataTextField},{field:n.dataValueField}],e.dataSource&&e._refreshHandler?e._unbindDataSource():(e._progressHandler=c(e._showBusy,e),e._errorHandler=c(e._hideBusy,e)),e.dataSource=i.data.DataSource.create(o).bind(_,e._progressHandler).bind("error",e._errorHandler)},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){setTimeout(function(){t.value(t._initialValues),t._placeholder()})},t._form=o.on("reset",t._resetHandler))},_initValue:function(){var e=this.options.value||this.element.val();this._old=this._initialValues=this._normalizeValues(e)},_normalizeValues:function(t){var n=this;return null===t?t=[]:t&&e.isPlainObject(t)?t=[n._value(t)]:t&&e.isPlainObject(t[0])?t=e.map(t,function(e){return n._value(e)}):H(t)||t instanceof l?H(t)&&(t=t.slice()):t=[t],t},_change:function(){var e=this,t=e.value();n(t,e._old)||(e._old=t.slice(),e.trigger(v),e.element.trigger(v)),e.popup.position(),e._ariaSetSize(t.length),e._toggleCloseVisibility()},_click:function(e){var t=this,n=e.item;e.preventDefault(),t._select(n).done(function(){t._activeItem=n,t._change(),t._close()})},_getActiveItem:function(){return this._activeItem||e(this.listView.items()[this._getSelectedIndices().length-1])||this.listView.focus()},_getSelectedIndices:function(){return this.listView._selectedIndices||this.listView._selectedIndexes},_keydown:function(n){var o,r,s,l,c=this,d=n.keyCode,u=c._currentTag,p=c.listView,f=c.input.val(),g=i.support.isRtl(c.wrapper),m=c.popup.visible(),v=0;if(d!==a.ENTER&&(this._multipleSelection=!1),d===a.DOWN){if(n.preventDefault(),!m)return c.open(),p.focus()||p.focusFirst(),t;p.focus()?(!c._activeItem&&n.shiftKey&&(c._activeItem=p.focus(),v=-1),o=p.getElementIndex(c._getActiveItem().first()),p.focusNext(),p.focus()?n.shiftKey&&(this._multipleSelection=!0,c._selectRange(o,p.getElementIndex(p.focus().first())+v)):p.focusLast()):p.focusFirst()}else if(d===a.UP)m&&(!c._activeItem&&n.shiftKey&&(c._activeItem=p.focus(),v=1),o=p.getElementIndex(c._getActiveItem().first()),p.focusPrev(),p.focus()?n.shiftKey&&(this._multipleSelection=!0,c._selectRange(o,p.getElementIndex(p.focus().first())+v)):c.close()),n.preventDefault();else if(d===a.LEFT&&!g||d===a.RIGHT&&g)f||(u=u?u.prev():e(c.tagList[0].lastChild),u[0]&&c.currentTag(u));else if(d===a.RIGHT&&!g||d===a.LEFT&&g)!f&&u&&(u=u.next(),c.currentTag(u[0]?u:null));else if(n.ctrlKey&&!n.altKey&&d===a.A&&m&&!c.options.virtual)this._multipleSelection=!0,this._getSelectedIndices().length===p.items().length&&(c._activeItem=null),p.items().length&&c._selectRange(0,p.items().length-1);else if(d===a.ENTER&&m){if(!p.focus())return;if(n.preventDefault(),this._multipleSelection&&(this._multipleSelection=!1,p.focus().hasClass(x)))return c._close(),t;c._select(p.focus()).done(function(){c._change(),c._close()})}else if(d===a.SPACEBAR&&n.ctrlKey&&m)c._activeItem&&p.focus()&&p.focus()[0]===c._activeItem[0]&&(c._activeItem=null),e(p.focus()).hasClass(x)||(c._activeItem=p.focus()),c._select(p.focus()).done(function(){c._change()}),n.preventDefault();else if(d===a.SPACEBAR&&n.shiftKey&&m)r=p.getElementIndex(c._getActiveItem()),s=p.getElementIndex(p.focus()),r!==t&&s!==t&&c._selectRange(r,s),n.preventDefault();else if(d===a.ESC)m?n.preventDefault():(c.tagList.children().each(function(t,n){c._removeTag(e(n),!1)}),c._change()),c.close();else if(d===a.HOME)m?p.focus()?(n.ctrlKey&&n.shiftKey&&!c.options.virtual&&c._selectRange(p.getElementIndex(p.focus()[0]),0),p.focusFirst()):c.close():f||(u=c.tagList[0].firstChild,u&&c.currentTag(e(u)));else if(d===a.END)m?p.focus()?(n.ctrlKey&&n.shiftKey&&!c.options.virtual&&c._selectRange(p.getElementIndex(p.focus()[0]),p.element.children().length-1),p.focusLast()):c.close():f||(u=c.tagList[0].lastChild,u&&c.currentTag(e(u)));else if(d!==a.DELETE&&d!==a.BACKSPACE||f)!c.popup.visible()||d!==a.PAGEDOWN&&d!==a.PAGEUP?(clearTimeout(c._typingTimeout),setTimeout(function(){c._scale()}),c._search()):(n.preventDefault(),l=d===a.PAGEDOWN?1:-1,p.scrollWith(l*p.screenHeight()));else{if(c._state=h,"single"===c.options.tagMode)return c._clearSingleTagValue(),c._change(),c._close(),t;d!==a.BACKSPACE||u||(u=e(c.tagList[0].lastChild)),u&&u[0]&&c._removeTag(u,!0)}},_hideBusy:function(){var e=this;clearTimeout(e._busy),e.input.attr("aria-busy",!1),e._loading.addClass(C),e._request=!1,e._busy=null,e._toggleCloseVisibility()},_showBusyHandler:function(){this.input.attr("aria-busy",!0),this._loading.removeClass(C),this._hideClear()},_showBusy:function(){var e=this;e._request=!0,e._busy||(e._busy=setTimeout(c(e._showBusyHandler,e),100))},_placeholder:function(e,n){var o=this,r=o.input,a=s(),l=o.options.placeholder,c=r.val(),d=r[0]===a,u=c.length;d&&!o.options.autoClose&&c!==l||(u=0,c=""),e===t&&(e=!1,r[0]!==a&&(e=!o.listView.selectedDataItems()[0])),o._prev=c,r.toggleClass("k-readonly",e).val(e?l:c),d&&!n&&i.caret(r[0],u,u),o._scale()},_scale:function(){var e,t=this,n=t.wrapper.find(".k-multiselect-wrap"),i=n.width(),o=t._span.text(t.input.val());n.is(":visible")?e=o.width()+25:(o.appendTo(document.documentElement),i=e=o.width()+25,o.appendTo(n)),t.input.width(e>i?i:e)},_option:function(e,n,o){var r="<option";return e!==t&&(e+="",e.indexOf('"')!==-1&&(e=e.replace(L,""")),r+=' value="'+e+'"'),o&&(r+=" selected"),r+=">",n!==t&&(r+=i.htmlEncode(n)),r+="</option>"},_render:function(e){var t,n,i,o,r,a,s=this.listView.selectedDataItems(),l=this.listView.value(),c=e.length,d="";for(l.length!==s.length&&(s=this._buildSelectedItems(l)),r={},a={},o=0;o<c;o++)n=e[o],i=this._value(n),t=this._selectedItemIndex(i,s),t!==-1&&s.splice(t,1),a[i]=o,d+=this._option(i,this._text(n),t!==-1);if(s.length)for(o=0;o<s.length;o++)n=s[o],i=this._value(n),r[i]=c,a[i]=c,c+=1,d+=this._option(i,this._text(n),!0);this._customOptions=r,this._optionsMap=a,this.element.html(d)},_buildSelectedItems:function(e){var t,n,i=this.options.dataValueField,o=this.options.dataTextField,r=[];for(n=0;n<e.length;n++)t={},t[i]=e[n],t[o]=e[n],r.push(t);return r},_selectedItemIndex:function(e,t){for(var n=this._value,i=0;i<t.length;i++)if(e===n(t[i]))return i;return-1},_search:function(){var e=this;clearTimeout(e._typingTimeout),e._typingTimeout=setTimeout(function(){var t=e._inputValue();e._prev!==t&&(e._prev=t,e.search(t),e._toggleCloseVisibility())},e.options.delay)},_toggleCloseVisibility:function(){this.value().length||this.input.val()&&this.input.val()!==this.options.placeholder?this._showClear():this._hideClear()},_allowOpening:function(){return this._allowSelection()&&r.fn._allowOpening.call(this)},_allowSelection:function(){var e=this.options.maxSelectedItems;return null===e||e>this.listView.value().length},_angularTagItems:function(t){var n=this;n.angular(t,function(){return{elements:n.tagList[0].children,data:e.map(n.dataItems(),function(e){return{dataItem:e}})}})},updatePersistTagList:function(e,t){this.persistTagList.added&&this.persistTagList.added.length===t.length&&this.persistTagList.removed&&this.persistTagList.removed.length===e.length?this.persistTagList=!1:(this.listView._removedAddedIndexes=this._old.slice(),this.persistTagList={added:e,removed:t})},_selectValue:function(e,n){var i,o,r,a=this,s=a.dataSource.total(),l=a.tagList,c=a._value;if(this.persistTagList)return this.updatePersistTagList(e,n),t;if(a._angularTagItems("cleanup"),"multiple"===a.options.tagMode){for(r=n.length-1;r>-1;r--)i=n[r],l.children().length&&(l[0].removeChild(l[0].children[i.position]),a._setOption(c(i.dataItem),!1));for(r=0;r<e.length;r++)o=e[r],l.append(a.tagTemplate(o.dataItem)),a._setOption(c(o.dataItem),!0)}else{for((!a._maxTotal||a._maxTotal<s)&&(a._maxTotal=s),this._updateTagListHTML(),r=n.length-1;r>-1;r--)a._setOption(c(n[r].dataItem),!1);for(r=0;r<e.length;r++)a._setOption(c(e[r].dataItem),!0)}a._angularTagItems("compile"),a._placeholder()},_updateTagListHTML:function(){var e=this,t=e.value(),n=e.dataSource.total(),i=e.tagList;i.html(""),t.length&&i.append(e.tagTemplate({values:t,dataItems:e.dataItems(),maxTotal:e._maxTotal,currentTotal:n}))},_select:function(t){var n,i,o,r,a=e.Deferred().resolve();return t?(n=this,i=n.listView,o=i.dataItemByIndex(i.getElementIndex(t)),r=t.hasClass("k-state-selected"),n._state===f&&(n._state=""),n._allowSelection()||r?n.trigger(r?w:b,{dataItem:o,item:t})?(n._close(),a):(n.persistTagList=!1,i.select(t).done(function(){n._placeholder(),n._state===p&&(n._state=h,i.skipUpdate(!0))})):a):a},_selectRange:function(n,i){var o,r,a=this,s=this.listView,l=this.options.maxSelectedItems,c=this._getSelectedIndices().slice(),d=[],u=function(t){s.select(t).done(function(){t.forEach(function(t){var n=s.dataItemByIndex(t),i=s.element.children()[t],o=e(i).hasClass("k-state-selected");a.trigger(o?b:w,{dataItem:n,item:e(i)})}),a._change()})};if(c.length-1===i-n)return u(c);if(n<i)for(o=n;o<=i;o++)d.push(o);else for(o=n;o>=i;o--)d.push(o);for(null!==l&&d.length>l&&(d=d.slice(0,l)),o=0;o<d.length;o++)r=d[o],this._getSelectedIndices().indexOf(r)==-1?c.push(r):c.splice(c.indexOf(r),1);return c.length?(a.persistTagList=!1,u(c)):t},_input:function(){var t=this,n=t.element,i=n[0].accessKey,o=t._innerWrapper.children("input.k-input");o[0]||(o=e('<input class="k-input" style="width: 25px" />').appendTo(t._innerWrapper)),n.removeAttr("accesskey"),t._focused=t.input=o.attr({accesskey:i,autocomplete:I,role:"listbox",title:n[0].title,"aria-expanded":!1,"aria-haspopup":"listbox","aria-autocomplete":"list"})},_tagList:function(){var t=this,n=t._innerWrapper.children("ul");n[0]||(n=e('<ul unselectable="on" class="k-reset"/>').appendTo(t._innerWrapper)),t.tagList=n},_tagTemplate:function(){var e,t=this,n=t.options,o=n.tagTemplate,r=n.dataSource,a="multiple"===n.tagMode,s=n.messages.singleTag;t.element[0].length&&!r&&(n.dataTextField=n.dataTextField||"text",n.dataValueField=n.dataValueField||"value"),e=a?i.template("#:"+i.expr(n.dataTextField,"data")+"#",{useWithBlock:!1}):i.template("#:values.length# "+s),t.tagTextTemplate=o=o?i.template(o):e,t.tagTemplate=function(e){return'<li role="option" aria-selected="true" class="k-button" unselectable="on"><span unselectable="on">'+o(e)+'</span><span aria-hidden="true" unselectable="on" aria-label="'+(a?'delete" title="'+t.options.messages.deleteTag+'" aria-label="'+t.options.messages.deleteTag:"open")+'" class="k-select"><span class="k-icon '+(a?"k-i-close":"k-i-arrow-60-down")+'"></span></span></li>'}},_loader:function(){this._loading=e('<span class="k-icon k-i-loading '+C+'"></span>').insertAfter(this.input)},_clearButton:function(){r.fn._clearButton.call(this),this.options.clearButton&&(this._clear.insertAfter(this.input),this.wrapper.addClass("k-multiselect-clearable"))},_textContainer:function(){var t=i.getComputedStyles(this.input[0],N);t.position="absolute",t.visibility="hidden",t.top=-3333,t.left=-3333,this._span=e("<span/>").css(t).appendTo(this.wrapper)},_wrapper:function(){var t=this,n=t.element,i=n.parent("span.k-multiselect");i[0]||(i=n.wrap('<div class="k-widget k-multiselect" unselectable="on" />').parent(),i[0].style.cssText=n[0].style.cssText,i[0].title=n[0].title,e('<div class="k-multiselect-wrap k-floatwrap" role="listbox" unselectable="on" />').insertBefore(n)),t.wrapper=i.addClass(n[0].className).css("display",""),t._innerWrapper=e(i[0].firstChild)},_ariaSetSize:function(e){var t=this,n=t.tagList.children();e&&n.length&&n.attr("aria-setsize",e)},_ariaSetLive:function(){var e=this;e.ul.attr("aria-live",e._isFilterEnabled()?"polite":"off")}});o.plugin(O)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.multicolumncombobox.min",["kendo.combobox.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,o=i.ComboBox,r=/^\d+(\.\d+)?%$/i,a="k-dropdowngrid",s="k-dropdowngrid-popup k-popup-flush",l=o.extend({init:function(e,t){o.fn.init.call(this,e,t),this.list.addClass(s),this._allColumnsWidthsAreSet(this.options)?this.list.width(this._calculateDropDownWidth(this.options)):this.options.dropDownWidth&&this.list.width(this.options.dropDownWidth)},options:{name:"MultiColumnComboBox",ns:".kendoMultiColumnComboBox",columns:[],dropDownWidth:null,filterFields:[]},setOptions:function(e){o.fn.setOptions.call(this,e),this._allColumnsWidthsAreSet(e)?this.list.width(this._calculateDropDownWidth(e)):this.options.dropDownWidth&&this.list.width(this.options.dropDownWidth)},_allColumnsWidthsAreSet:function(e){var t,n,i=e.columns;if(!i||!i.length)return!1;for(t=0;t<i.length;t++)if(n=i[t].width,!n||isNaN(parseInt(n,10))||r.test(n))return!1;return!0},_calculateDropDownWidth:function(e){var t,i,o=e.columns,r=n.support.scrollbar();for(t=0;t<o.length;t++)i=o[t].width,r+=parseInt(i,10);return r},_wrapper:function(){o.fn._wrapper.call(this),this.wrapper.addClass(a)}});i.plugin(l)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.slider.min",["kendo.draganddrop.min"],e)}(function(){return function(e,t){function n(e,t,n){var i=n?" k-slider-horizontal":" k-slider-vertical",o=e.style?e.style:t.attr("style"),r=t.attr("class")?" "+t.attr("class"):"",a="";return"bottomRight"==e.tickPlacement?a=" k-slider-bottomright":"topLeft"==e.tickPlacement&&(a=" k-slider-topleft"),o=o?" style='"+o+"'":"","<div class='k-widget k-slider"+i+r+"'"+o+"><div class='k-slider-wrap"+(e.showButtons?" k-slider-buttons":"")+a+"'></div></div>"}function i(e,t,n,i){var o="";return o=n?!i&&"increase"==t||i&&"increase"!=t?"k-i-arrow-60-right":"k-i-arrow-60-left":"increase"==t?"k-i-arrow-60-up":"k-i-arrow-60-down","<a class='k-button k-button-"+t+"' title='"+e[t+"ButtonTitle"]+"' aria-label='"+e[t+"ButtonTitle"]+"'><span class='k-icon "+o+"'></span></a>"}function o(e,t){var n,i="<ul class='k-reset k-slider-items'>",o=S.floor(d(t/e.smallStep))+1;for(n=0;n<o;n++)i+="<li class='k-tick' role='presentation'> </li>";return i+="</ul>"}function r(e,t){var n=t.is("input")?1:2,i=2==n?e.leftDragHandleTitle:e.dragHandleTitle;return"<div class='k-slider-track'><div class='k-slider-selection'><!-- --></div><a href='#' class='k-draghandle' title='"+i+"' role='slider' aria-valuemin='"+e.min+"' aria-valuemax='"+e.max+"' aria-valuenow='"+(n>1?e.selectionStart||e.min:e.value||e.min)+"'></a>"+(n>1?"<a href='#' class='k-draghandle' title='"+e.rightDragHandleTitle+"'role='slider' aria-valuemin='"+e.min+"' aria-valuemax='"+e.max+"' aria-valuenow='"+(e.selectionEnd||e.max)+"'></a>":"")+"</div>"}function a(e){return function(t){return t+e}}function s(e){return function(){return e}}function l(e){return(e+"").replace(".",g.cultures.current.numberFormat["."])}function c(e){var t=""+e,n=0;return t=t.split("."),t[1]&&(n=t[1].length),n=n>10?10:n}function d(e){var t,n;return e=parseFloat(e,10),t=c(e),n=S.pow(10,t||0),S.round(e*n)/n}function u(e,n){var i=y(e.getAttribute(n));return null===i&&(i=t),i}function h(e){return typeof e!==Q}function p(e){return 1e4*e}var f,g=window.kendo,m=g.ui.Widget,v=g.ui.Draggable,_=g._outerWidth,b=g._outerHeight,w=e.extend,k=g.format,y=g.parseFloat,x=e.proxy,C=e.isArray,S=Math,T=g.support,D=T.pointers,A=T.msPointers,E="change",I="slide",M=".slider",F="touchstart"+M+" mousedown"+M,R=D?"pointerdown"+M:A?"MSPointerDown"+M:F,P="touchend"+M+" mouseup"+M,z=D?"pointerup":A?"MSPointerUp"+M:P,B="moveSelection",L="keydown"+M,H="click"+M,N="mouseover"+M,O="focus"+M,V="blur"+M,W=".k-draghandle",U=".k-slider-track",q=".k-tick",j="k-state-selected",G="k-state-focused",$="k-state-default",Y="k-state-disabled",K="disabled",Q="undefined",X="tabindex",J=g.getTouches,Z=m.extend({init:function(e,t){var n,i=this;if(m.fn.init.call(i,e,t),t=i.options,i._isHorizontal="horizontal"==t.orientation,i._isRtl=i._isHorizontal&&g.support.isRtl(e),i._position=i._isHorizontal?"left":"bottom",i._sizeFn=i._isHorizontal?"width":"height",i._outerSize=i._isHorizontal?_:b,t.tooltip.format=t.tooltip.enabled?t.tooltip.format||"{0}":"{0}",t.smallStep<=0)throw Error("Kendo UI Slider smallStep must be a positive number.");i._createHtml(),i.wrapper=i.element.closest(".k-slider"),i._trackDiv=i.wrapper.find(U),i._setTrackDivWidth(),i._maxSelection=i._trackDiv[i._sizeFn](),i._sliderItemsInit(),i._reset(),i._tabindex(i.wrapper.find(W)),i[t.enabled?"enable":"disable"](),n=g.support.isRtl(i.wrapper)?-1:1,i._keyMap={37:a(-1*n*t.smallStep),40:a(-t.smallStep),39:a(1*n*t.smallStep),38:a(+t.smallStep),35:s(t.max),36:s(t.min),33:a(+t.largeStep),34:a(-t.largeStep)},g.notify(i)},events:[E,I],options:{enabled:!0,min:0,max:10,smallStep:1,largeStep:5,orientation:"horizontal",tickPlacement:"both",tooltip:{enabled:!0,format:"{0}"}},_distance:function(){return d(this.options.max-this.options.min)},_resize:function(){this._setTrackDivWidth(),this.wrapper.find(".k-slider-items").remove(),this._maxSelection=this._trackDiv[this._sizeFn](),this._sliderItemsInit(),this._refresh(),this.options.enabled&&this.enable(!0)},_sliderItemsInit:function(){var t=this,n=t.options,i=t._maxSelection/((n.max-n.min)/n.smallStep),r=t._calculateItemsWidth(S.floor(t._distance()/n.smallStep));"none"!=n.tickPlacement&&i>=2&&(e(this.element).parent().find(".k-slider-items").remove(),t._trackDiv.before(o(n,t._distance())),t._setItemsWidth(r),t._setItemsTitle()),t._calculateSteps(r),"none"!=n.tickPlacement&&i>=2&&n.largeStep>=n.smallStep&&t._setItemsLargeTick()},getSize:function(){return g.dimensions(this.wrapper)},_setTrackDivWidth:function(){var e=this,t=2*parseFloat(e._trackDiv.css(e._isRtl?"right":e._position),10);e._trackDiv[e._sizeFn](e.wrapper[e._sizeFn]()-2-t)},_setItemsWidth:function(t){var n,i=this,o=i.options,r=0,a=t.length-1,s=i.wrapper.find(q),l=0,c=2,d=s.length,u=0;for(n=0;n<d-2;n++)e(s[n+1])[i._sizeFn](t[n]);if(i._isHorizontal?(e(s[r]).addClass("k-first")[i._sizeFn](t[a-1]),e(s[a]).addClass("k-last")[i._sizeFn](t[a])):(e(s[a]).addClass("k-first")[i._sizeFn](t[a]),e(s[r]).addClass("k-last")[i._sizeFn](t[a-1])),i._distance()%o.smallStep!==0&&!i._isHorizontal){for(n=0;n<t.length;n++)u+=t[n];l=i._maxSelection-u,l+=parseFloat(i._trackDiv.css(i._position),10)+c,i.wrapper.find(".k-slider-items").css("padding-top",l)}},_setItemsTitle:function(){for(var t=this,n=t.options,i=t.wrapper.find(q),o=n.min,r=i.length,a=t._isHorizontal&&!t._isRtl?0:r-1,s=t._isHorizontal&&!t._isRtl?r:-1,l=t._isHorizontal&&!t._isRtl?1:-1;a-s!==0;a+=l)e(i[a]).attr("title",k(n.tooltip.format,d(o))),o+=n.smallStep},_setItemsLargeTick:function(){var t,n,i,o=this,r=o.options,a=o.wrapper.find(q),s=0;if(p(r.largeStep)%p(r.smallStep)===0||o._distance()/r.largeStep>=3)for(o._isHorizontal||o._isRtl||(a=e.makeArray(a).reverse()),s=0;s<a.length;s++)t=e(a[s]),n=o._values[s],i=d(p(n-this.options.min)),i%p(r.smallStep)===0&&i%p(r.largeStep)===0&&(t.addClass("k-tick-large").html("<span class='k-label'>"+t.attr("title")+"</span>"),0!==s&&s!==a.length-1&&t.css("line-height",t[o._sizeFn]()+"px"))},_calculateItemsWidth:function(e){var t,n,i,o=this,r=o.options,a=parseFloat(o._trackDiv.css(o._sizeFn))+1,s=o._distance(),l=a/s;for(s/r.smallStep-S.floor(s/r.smallStep)>0&&(a-=s%r.smallStep*l),t=a/e,n=[],i=0;i<e-1;i++)n[i]=t;return n[e-1]=n[e]=t/2,o._roundWidths(n)},_roundWidths:function(e){var t,n=0,i=e.length;for(t=0;t<i;t++)n+=e[t]-S.floor(e[t]),e[t]=S.floor(e[t]);return n=S.round(n),this._addAdditionalSize(n,e)},_addAdditionalSize:function(e,t){if(0===e)return t;var n,i=parseFloat(t.length-1)/parseFloat(1==e?e:e-1);for(n=0;n<e;n++)t[parseInt(S.round(i*n),10)]+=1;return t},_calculateSteps:function(e){var t,n=this,i=n.options,o=i.min,r=0,a=n._distance(),s=S.ceil(a/i.smallStep),l=1;if(s+=a/i.smallStep%1===0?1:0,e.splice(0,0,2*e[s-2]),e.splice(s-1,1,2*e.pop()),n._pixelSteps=[r],n._values=[o],0!==s){for(;l<s;)r+=(e[l-1]+e[l])/2,n._pixelSteps[l]=r,o+=i.smallStep,n._values[l]=d(o),l++;t=a%i.smallStep===0?s-1:s,n._pixelSteps[t]=n._maxSelection,n._values[t]=i.max,n._isRtl&&(n._pixelSteps.reverse(),n._values.reverse())}},_getValueFromPosition:function(e,t){var n,i=this,o=i.options,r=S.max(o.smallStep*(i._maxSelection/i._distance()),0),a=0,s=r/2;if(i._isHorizontal?(a=e-t.startPoint,i._isRtl&&(a=i._maxSelection-a)):a=t.startPoint-e,i._maxSelection-(parseInt(i._maxSelection%r,10)-3)/2<a)return o.max;for(n=0;n<i._pixelSteps.length;n++)if(S.abs(i._pixelSteps[n]-a)-1<=s)return d(i._values[n])},_getFormattedValue:function(e,t){var n,i,o,r=this,a="",s=r.options.tooltip;return C(e)?(i=e[0],o=e[1]):t&&t.type&&(i=t.selectionStart,o=t.selectionEnd),t&&(n=t.tooltipTemplate),!n&&s.template&&(n=g.template(s.template)),C(e)||t&&t.type?n?a=n({selectionStart:i,selectionEnd:o}):(i=k(s.format,i),o=k(s.format,o),a=i+" - "+o):(t&&(t.val=e),a=n?n({value:e}):k(s.format,e)),a},_getDraggableArea:function(){var e=this,t=g.getOffset(e._trackDiv);return{startPoint:e._isHorizontal?t.left:t.top+e._maxSelection,endPoint:e._isHorizontal?t.left+e._maxSelection:t.top}},_createHtml:function(){var e=this,t=e.element,o=e.options,a=t.find("input");2==a.length?(a.eq(0).prop("value",l(o.selectionStart)),a.eq(1).prop("value",l(o.selectionEnd))):t.prop("value",l(o.value)),t.wrap(n(o,t,e._isHorizontal)).hide(),o.showButtons&&t.before(i(o,"increase",e._isHorizontal,e._isRtl)).before(i(o,"decrease",e._isHorizontal,e._isRtl)),t.before(r(o,t))},_focus:function(t){var n=this,i=t.target,o=n.value(),r=n._drag;r||(i==n.wrapper.find(W).eq(0)[0]?(r=n._firstHandleDrag,n._activeHandle=0):(r=n._lastHandleDrag,n._activeHandle=1),o=o[n._activeHandle]),e(i).addClass(G+" "+j),r&&(n._activeHandleDrag=r,r.selectionStart=n.options.selectionStart,r.selectionEnd=n.options.selectionEnd,r._updateTooltip(o))},_focusWithMouse:function(t){t=e(t);var n=this,i=t.is(W)?t.index():0;window.setTimeout(function(){n.wrapper.find(W)[2==i?1:0].focus()},1),n._setTooltipTimeout()},_blur:function(t){var n=this,i=n._activeHandleDrag;e(t.target).removeClass(G+" "+j),i&&(i._removeTooltip(),delete n._activeHandleDrag,delete n._activeHandle)},_setTooltipTimeout:function(){var e=this;e._tooltipTimeout=window.setTimeout(function(){var t=e._drag||e._activeHandleDrag;t&&t._removeTooltip()},300)},_clearTooltipTimeout:function(){var e,t=this;window.clearTimeout(this._tooltipTimeout),e=t._drag||t._activeHandleDrag,e&&e.tooltipDiv&&e.tooltipDiv.stop(!0,!1).css("opacity",1)},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._form=o.on("reset",x(t._formResetHandler,t)))},min:function(e){return e?(this.setOptions({min:e}),t):this.options.min},max:function(e){return e?(this.setOptions({max:e}),t):this.options.max},setOptions:function(e){m.fn.setOptions.call(this,e),this._sliderItemsInit(),this._refresh()},destroy:function(){this._form&&this._form.off("reset",this._formResetHandler),m.fn.destroy.call(this)}}),ee=Z.extend({init:function(n,i){var o,r=this;n.type="text",i=w({},{value:u(n,"value"),min:u(n,"min"),max:u(n,"max"),smallStep:u(n,"step")},i),n=e(n),i&&i.enabled===t&&(i.enabled=!n.is("[disabled]")),Z.fn.init.call(r,n,i),i=r.options,h(i.value)&&null!==i.value||(i.value=i.min,n.prop("value",l(i.min))),i.value=S.max(S.min(i.value,i.max),i.min),o=r.wrapper.find(W),this._selection=new ee.Selection(o,r,i),r._drag=new ee.Drag(o,"",r,i)},options:{name:"Slider",showButtons:!0,increaseButtonTitle:"Increase",decreaseButtonTitle:"Decrease",dragHandleTitle:"drag",tooltip:{format:"{0:#,#.##}"},value:null},enable:function(n){var i,o,r,a=this,s=a.options;a.disable(),n!==!1&&(a.wrapper.removeClass(Y).addClass($),a.wrapper.find("input").removeAttr(K),i=function(n){var i,o,r,s=J(n)[0];if(s){if(i=a._isHorizontal?s.location.pageX:s.location.pageY,o=a._getDraggableArea(),r=e(n.target),r.hasClass("k-draghandle"))return r.addClass(G+" "+j),t;a._update(a._getValueFromPosition(i,o)),a._focusWithMouse(n.target),a._drag.dragstart(n),n.preventDefault()}},a.wrapper.find(q+", "+U).on(R,i).end().on(R,function(){ +e(document.documentElement).one("selectstart",g.preventDefault)}).on(z,function(){a._drag._end()}),a.wrapper.find(W).attr(X,0).on(P,function(){a._setTooltipTimeout()}).on(H,function(e){a._focusWithMouse(e.target),e.preventDefault()}).on(O,x(a._focus,a)).on(V,x(a._blur,a)),o=x(function(e){var t=a._nextValueByIndex(a._valueIndex+1*e);a._setValueInRange(t),a._drag._updateTooltip(t)},a),s.showButtons&&(r=x(function(e,t){this._clearTooltipTimeout(),(1===e.which||T.touch&&0===e.which)&&(o(t),this.timeout=setTimeout(x(function(){this.timer=setInterval(function(){o(t)},60)},this),200))},a),a.wrapper.find(".k-button").on(P,x(function(e){this._clearTimer(),a._focusWithMouse(e.target)},a)).on(N,function(t){e(t.currentTarget).addClass("k-state-hover")}).on("mouseout"+M,x(function(t){e(t.currentTarget).removeClass("k-state-hover"),this._clearTimer()},a)).eq(0).on(F,x(function(e){r(e,1)},a)).click(!1).end().eq(1).on(F,x(function(e){r(e,-1)},a)).click(g.preventDefault)),a.wrapper.find(W).off(L,!1).on(L,x(this._keydown,a)),s.enabled=!0)},disable:function(){var t=this;t.wrapper.removeClass($).addClass(Y),e(t.element).prop(K,K),t.wrapper.find(".k-button").off(F).on(F,function(t){t.preventDefault(),e(this).addClass("k-state-active")}).off(P).on(P,function(t){t.preventDefault(),e(this).removeClass("k-state-active")}).off("mouseleave"+M).on("mouseleave"+M,g.preventDefault).off(N).on(N,g.preventDefault),t.wrapper.find(q+", "+U).off(R).off(z),t.wrapper.find(W).attr(X,-1).off(P).off(L).off(H).off(O).off(V),t.options.enabled=!1},_update:function(e){var t=this,n=t.value()!=e;t.value(e),n&&t.trigger(E,{value:t.options.value})},value:function(e){var n=this,i=n.options;return e=d(e),isNaN(e)?i.value:(e>=i.min&&e<=i.max&&i.value!=e&&(n.element.prop("value",l(e)),i.value=e,n._refreshAriaAttr(e),n._refresh()),t)},_refresh:function(){this.trigger(B,{value:this.options.value})},_refreshAriaAttr:function(e){var t,n=this,i=n._drag;t=i&&i._tooltipDiv?i._tooltipDiv.text():n._getFormattedValue(e,null),this.wrapper.find(W).attr("aria-valuenow",e).attr("aria-valuetext",t)},_clearTimer:function(){clearTimeout(this.timeout),clearInterval(this.timer)},_keydown:function(e){var t=this;e.keyCode in t._keyMap&&(t._clearTooltipTimeout(),t._setValueInRange(t._keyMap[e.keyCode](t.options.value)),t._drag._updateTooltip(t.value()),e.preventDefault())},_setValueInRange:function(e){var n=this,i=n.options;return e=d(e),isNaN(e)?(n._update(i.min),t):(e=S.max(S.min(e,i.max),i.min),n._update(e),t)},_nextValueByIndex:function(e){var t=this._values.length;return this._isRtl&&(e=t-1-e),this._values[S.max(0,S.min(e,t-1))]},_formResetHandler:function(){var e=this,t=e.options.min;setTimeout(function(){var n=e.element[0].value;e.value(""===n||isNaN(n)?t:n)})},destroy:function(){var e=this;Z.fn.destroy.call(e),e.wrapper.off(M).find(".k-button").off(M).end().find(W).off(M).end().find(q+", "+U).off(M).end(),e._drag.draggable.destroy(),e._drag._removeTooltip(!0)}});ee.Selection=function(e,t,n){function i(i){var o=i-n.min,r=t._valueIndex=S.ceil(d(o/n.smallStep)),a=parseInt(t._pixelSteps[r],10),s=t._trackDiv.find(".k-slider-selection"),l=parseInt(t._outerSize(e)/2,10),c=t._isRtl?2:0;s[t._sizeFn](t._isRtl?t._maxSelection-a:a),e.css(t._position,a-l-c)}i(n.value),t.bind([I,B],function(e){i(parseFloat(e.value,10))}),t.bind(E,function(e){i(parseFloat(e.sender.value(),10))})},ee.Drag=function(e,t,n,i){var o=this;o.owner=n,o.options=i,o.element=e,o.type=t,o.draggable=new v(e,{distance:0,dragstart:x(o._dragstart,o),drag:x(o.drag,o),dragend:x(o.dragend,o),dragcancel:x(o.dragcancel,o)}),e.click(!1),e.on("dragstart",function(e){e.preventDefault()})},ee.Drag.prototype={dragstart:function(e){this.owner._activeDragHandle=this,this.draggable.userEvents.cancel(),this._dragstart(e),this.dragend()},_dragstart:function(n){var i=this,o=i.owner,r=i.options;return r.enabled?(this.owner._activeDragHandle=this,o.element.off(N),o.wrapper.find("."+G).removeClass(G+" "+j),i.element.addClass(G+" "+j),e(document.documentElement).css("cursor","pointer"),i.dragableArea=o._getDraggableArea(),i.step=S.max(r.smallStep*(o._maxSelection/o._distance()),0),i.type?(i.selectionStart=r.selectionStart,i.selectionEnd=r.selectionEnd,o._setZIndex(i.type)):i.oldVal=i.val=r.value,i._removeTooltip(!0),i._createTooltip(),t):(n.preventDefault(),t)},_createTooltip:function(){var t,n,i=this,o=i.owner,r=i.options.tooltip,a="",s=e(window);r.enabled&&(r.template&&(t=i.tooltipTemplate=g.template(r.template)),e(".k-slider-tooltip").remove(),i.tooltipDiv=e("<div class='k-widget k-tooltip k-slider-tooltip'><!-- --></div>").appendTo(document.body),a=o._getFormattedValue(i.val||o.value(),i),i.type||(n="k-callout-"+(o._isHorizontal?"s":"e"),i.tooltipInnerDiv="<div class='k-callout "+n+"'><!-- --></div>",a+=i.tooltipInnerDiv),i.tooltipDiv.html(a),i._scrollOffset={top:s.scrollTop(),left:s.scrollLeft()},i.moveTooltip())},drag:function(e){var t,n=this,i=n.owner,o=e.x.location,r=e.y.location,a=n.dragableArea.startPoint,s=n.dragableArea.endPoint;e.preventDefault(),n.val=i._isHorizontal?i._isRtl?n.constrainValue(o,a,s,o<s):n.constrainValue(o,a,s,o>=s):n.constrainValue(r,s,a,r<=s),n.oldVal!=n.val&&(n.oldVal=n.val,n.type?("firstHandle"==n.type?n.selectionStart=n.val<n.selectionEnd?n.val:n.selectionEnd=n.val:n.val>n.selectionStart?n.selectionEnd=n.val:n.selectionStart=n.selectionEnd=n.val,t={values:[n.selectionStart,n.selectionEnd],value:[n.selectionStart,n.selectionEnd]}):t={value:n.val},i.trigger(I,t)),n._updateTooltip(n.val)},_updateTooltip:function(e){var t=this,n=t.options,i=n.tooltip,o="";i.enabled&&(t.tooltipDiv||t._createTooltip(),o=t.owner._getFormattedValue(d(e),t),t.type||(o+=t.tooltipInnerDiv),t.tooltipDiv.html(o),t.moveTooltip())},dragcancel:function(){return this.owner._refresh(),e(document.documentElement).css("cursor",""),this._end()},dragend:function(){var t=this,n=t.owner;return e(document.documentElement).css("cursor",""),t.type?n._update(t.selectionStart,t.selectionEnd):(n._update(t.val),t.draggable.userEvents._disposeAll()),t.draggable.userEvents.cancel(),t._end()},_end:function(){var e=this,t=e.owner;return t._focusWithMouse(e.element),t.element.on(N),!1},_removeTooltip:function(t){var n=this,i=n.owner;n.tooltipDiv&&i.options.tooltip.enabled&&i.options.enabled&&(t?(n.tooltipDiv.remove(),n.tooltipDiv=null):n.tooltipDiv.fadeOut("slow",function(){e(this).remove(),n.tooltipDiv=null}))},moveTooltip:function(){var t,n,i,o,r=this,a=r.owner,s=0,l=0,c=r.element,d=g.getOffset(c),u=8,h=e(window),p=r.tooltipDiv.find(".k-callout"),f=_(r.tooltipDiv),m=b(r.tooltipDiv);r.type?(t=a.wrapper.find(W),d=g.getOffset(t.eq(0)),n=g.getOffset(t.eq(1)),a._isHorizontal?(s=n.top,l=d.left+(n.left-d.left)/2):(s=d.top+(n.top-d.top)/2,l=n.left),o=_(t.eq(0))+2*u):(s=d.top,l=d.left,o=_(c)+2*u),a._isHorizontal?(l-=parseInt((f-a._outerSize(c))/2,10),s-=m+u+(p.length?p.height():0)):(s-=parseInt((m-a._outerSize(c))/2,10),l-=f+u+(p.length?p.width():0)),a._isHorizontal?(i=r._flip(s,m,o,b(h)+r._scrollOffset.top),s+=i,l+=r._fit(l,f,_(h)+r._scrollOffset.left)):(i=r._flip(l,f,o,_(h)+r._scrollOffset.left),s+=r._fit(s,m,b(h)+r._scrollOffset.top),l+=i),i>0&&p&&(p.removeClass(),p.addClass("k-callout k-callout-"+(a._isHorizontal?"n":"w"))),r.tooltipDiv.css({top:s,left:l})},_fit:function(e,t,n){var i=0;return e+t>n&&(i=n-(e+t)),e<0&&(i=-e),i},_flip:function(e,t,n,i){var o=0;return e+t>i&&(o+=-(n+t)),e+o<0&&(o+=n+t),o},constrainValue:function(e,t,n,i){var o=this,r=0;return r=t<e&&e<n?o.owner._getValueFromPosition(e,o.dragableArea):i?o.options.max:o.options.min}},g.ui.plugin(ee),f=Z.extend({init:function(n,i){var o,r=this,a=e(n).find("input"),s=a.eq(0)[0],c=a.eq(1)[0];s.type="text",c.type="text",i&&i.showButtons&&(window.console&&window.console.warn("showbuttons option is not supported for the range slider, ignoring"),i.showButtons=!1),i=w({},{selectionStart:u(s,"value"),min:u(s,"min"),max:u(s,"max"),smallStep:u(s,"step")},{selectionEnd:u(c,"value"),min:u(c,"min"),max:u(c,"max"),smallStep:u(c,"step")},i),i&&i.enabled===t&&(i.enabled=!a.is("[disabled]")),Z.fn.init.call(r,n,i),i=r.options,h(i.selectionStart)&&null!==i.selectionStart||(i.selectionStart=i.min,a.eq(0).prop("value",l(i.min))),h(i.selectionEnd)&&null!==i.selectionEnd||(i.selectionEnd=i.max,a.eq(1).prop("value",l(i.max))),o=r.wrapper.find(W),this._selection=new f.Selection(o,r,i),r._firstHandleDrag=new ee.Drag(o.eq(0),"firstHandle",r,i),r._lastHandleDrag=new ee.Drag(o.eq(1),"lastHandle",r,i)},options:{name:"RangeSlider",leftDragHandleTitle:"drag",rightDragHandleTitle:"drag",tooltip:{format:"{0:#,#.##}"},selectionStart:null,selectionEnd:null},enable:function(n){var i,o=this,r=o.options;o.disable(),n!==!1&&(o.wrapper.removeClass(Y).addClass($),o.wrapper.find("input").removeAttr(K),i=function(n){var i,a,s,l,c,d,u,h=J(n)[0];if(h){if(i=o._isHorizontal?h.location.pageX:h.location.pageY,a=o._getDraggableArea(),s=o._getValueFromPosition(i,a),l=e(n.target),l.hasClass("k-draghandle"))return o.wrapper.find("."+G).removeClass(G+" "+j),l.addClass(G+" "+j),t;s<r.selectionStart?(c=s,d=r.selectionEnd,u=o._firstHandleDrag):s>o.selectionEnd?(c=r.selectionStart,d=s,u=o._lastHandleDrag):s-r.selectionStart<=r.selectionEnd-s?(c=s,d=r.selectionEnd,u=o._firstHandleDrag):(c=r.selectionStart,d=s,u=o._lastHandleDrag),u.dragstart(n),o._setValueInRange(c,d),o._focusWithMouse(u.element)}},o.wrapper.find(q+", "+U).on(R,i).end().on(R,function(){e(document.documentElement).one("selectstart",g.preventDefault)}).on(z,function(){o._activeDragHandle&&o._activeDragHandle._end()}),o.wrapper.find(W).attr(X,0).on(P,function(){o._setTooltipTimeout()}).on(H,function(e){o._focusWithMouse(e.target),e.preventDefault()}).on(O,x(o._focus,o)).on(V,x(o._blur,o)),o.wrapper.find(W).off(L,g.preventDefault).eq(0).on(L,x(function(e){this._keydown(e,"firstHandle")},o)).end().eq(1).on(L,x(function(e){this._keydown(e,"lastHandle")},o)),o.options.enabled=!0)},disable:function(){var e=this;e.wrapper.removeClass($).addClass(Y),e.wrapper.find("input").prop(K,K),e.wrapper.find(q+", "+U).off(R).off(z),e.wrapper.find(W).attr(X,-1).off(P).off(L).off(H).off(O).off(V),e.options.enabled=!1},_keydown:function(e,t){var n,i,o,r=this,a=r.options.selectionStart,s=r.options.selectionEnd;e.keyCode in r._keyMap&&(r._clearTooltipTimeout(),"firstHandle"==t?(o=r._activeHandleDrag=r._firstHandleDrag,a=r._keyMap[e.keyCode](a),a>s&&(s=a)):(o=r._activeHandleDrag=r._lastHandleDrag,s=r._keyMap[e.keyCode](s),a>s&&(a=s)),r._setValueInRange(d(a),d(s)),n=Math.max(a,r.options.selectionStart),i=Math.min(s,r.options.selectionEnd),o.selectionEnd=Math.max(i,r.options.selectionStart),o.selectionStart=Math.min(n,r.options.selectionEnd),o._updateTooltip(r.value()[r._activeHandle]),e.preventDefault())},_update:function(e,t){var n=this,i=n.value(),o=i[0]!=e||i[1]!=t;n.value([e,t]),o&&n.trigger(E,{values:[e,t],value:[e,t]})},value:function(e){return e&&e.length?this._value(e[0],e[1]):this._value()},_value:function(e,n){var i=this,o=i.options,r=o.selectionStart,a=o.selectionEnd;return isNaN(e)&&isNaN(n)?[r,a]:(e=d(e),n=d(n),e>=o.min&&e<=o.max&&n>=o.min&&n<=o.max&&e<=n&&(r==e&&a==n||(i.element.find("input").eq(0).prop("value",l(e)).end().eq(1).prop("value",l(n)),o.selectionStart=e,o.selectionEnd=n,i._refresh(),i._refreshAriaAttr(e,n))),t)},values:function(e,t){return C(e)?this._value(e[0],e[1]):this._value(e,t)},_refresh:function(){var e=this,t=e.options;e.trigger(B,{values:[t.selectionStart,t.selectionEnd],value:[t.selectionStart,t.selectionEnd]}),t.selectionStart==t.max&&t.selectionEnd==t.max&&e._setZIndex("firstHandle")},_refreshAriaAttr:function(e,t){var n,i=this,o=i.wrapper.find(W),r=i._activeHandleDrag;n=i._getFormattedValue([e,t],r),o.eq(0).attr("aria-valuenow",e),o.eq(1).attr("aria-valuenow",t),o.attr("aria-valuetext",n)},_setValueInRange:function(e,t){var n=this.options;e=S.max(S.min(e,n.max),n.min),t=S.max(S.min(t,n.max),n.min),e==n.max&&t==n.max&&this._setZIndex("firstHandle"),this._update(S.min(e,t),S.max(e,t))},_setZIndex:function(t){this.wrapper.find(W).each(function(n){e(this).css("z-index","firstHandle"==t?1-n:n)})},_formResetHandler:function(){var e=this,t=e.options;setTimeout(function(){var n=e.element.find("input"),i=n[0].value,o=n[1].value;e.values(""===i||isNaN(i)?t.min:i,""===o||isNaN(o)?t.max:o)})},destroy:function(){var e=this;Z.fn.destroy.call(e),e.wrapper.off(M).find(q+", "+U).off(M).end().find(W).off(M),e._firstHandleDrag.draggable.destroy(),e._lastHandleDrag.draggable.destroy()}}),f.Selection=function(e,t,n){function i(i){i=i||[];var r=i[0]-n.min,a=i[1]-n.min,s=S.ceil(d(r/n.smallStep)),l=S.ceil(d(a/n.smallStep)),c=t._pixelSteps[s],u=t._pixelSteps[l],h=parseInt(t._outerSize(e.eq(0))/2,10),p=t._isRtl?2:0;e.eq(0).css(t._position,c-h-p).end().eq(1).css(t._position,u-h-p),o(c,u)}function o(e,n){var i,o,r=t._trackDiv.find(".k-slider-selection");i=S.abs(e-n),r[t._sizeFn](i),t._isRtl?(o=S.max(e,n),r.css("right",t._maxSelection-o-1)):(o=S.min(e,n),r.css(t._position,o-1))}i(t.value()),t.bind([E,I,B],function(e){i(e.values)})},g.ui.plugin(f)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.colorpicker.min",["kendo.core.min","kendo.color.min","kendo.popup.min","kendo.slider.min","kendo.userevents.min","kendo.button.min"],e)}(function(){return function(e,t,n){function i(e,t,n){n=d(n),n&&!n.equals(e.color())&&("change"==t&&(e._value=n),n=1!=n.a?n.toCssRgba():n.toCss(),e.trigger(t,{value:n}))}function o(e,t,n){var i,o;return e=Array.prototype.slice.call(e),i=e.length,o=e.indexOf(t),o<0?n<0?e[i-1]:e[0]:(o+=n,o<0?o+=i:o%=i,e[o])}function r(e){e.preventDefault()}function a(e,t){return function(){return e.apply(t,arguments)}}var s=window.kendo,l=s.ui,c=l.Widget,d=s.parseColor,u=s.Color,h=s.keys,p="background-color",f="k-state-selected",g="000000,7f7f7f,880015,ed1c24,ff7f27,fff200,22b14c,00a2e8,3f48cc,a349a4,ffffff,c3c3c3,b97a57,ffaec9,ffc90e,efe4b0,b5e61d,99d9ea,7092be,c8bfe7",m="FFFFFF,FFCCFF,FF99FF,FF66FF,FF33FF,FF00FF,CCFFFF,CCCCFF,CC99FF,CC66FF,CC33FF,CC00FF,99FFFF,99CCFF,9999FF,9966FF,9933FF,9900FF,FFFFCC,FFCCCC,FF99CC,FF66CC,FF33CC,FF00CC,CCFFCC,CCCCCC,CC99CC,CC66CC,CC33CC,CC00CC,99FFCC,99CCCC,9999CC,9966CC,9933CC,9900CC,FFFF99,FFCC99,FF9999,FF6699,FF3399,FF0099,CCFF99,CCCC99,CC9999,CC6699,CC3399,CC0099,99FF99,99CC99,999999,996699,993399,990099,FFFF66,FFCC66,FF9966,FF6666,FF3366,FF0066,CCFF66,CCCC66,CC9966,CC6666,CC3366,CC0066,99FF66,99CC66,999966,996666,993366,990066,FFFF33,FFCC33,FF9933,FF6633,FF3333,FF0033,CCFF33,CCCC33,CC9933,CC6633,CC3333,CC0033,99FF33,99CC33,999933,996633,993333,990033,FFFF00,FFCC00,FF9900,FF6600,FF3300,FF0000,CCFF00,CCCC00,CC9900,CC6600,CC3300,CC0000,99FF00,99CC00,999900,996600,993300,990000,66FFFF,66CCFF,6699FF,6666FF,6633FF,6600FF,33FFFF,33CCFF,3399FF,3366FF,3333FF,3300FF,00FFFF,00CCFF,0099FF,0066FF,0033FF,0000FF,66FFCC,66CCCC,6699CC,6666CC,6633CC,6600CC,33FFCC,33CCCC,3399CC,3366CC,3333CC,3300CC,00FFCC,00CCCC,0099CC,0066CC,0033CC,0000CC,66FF99,66CC99,669999,666699,663399,660099,33FF99,33CC99,339999,336699,333399,330099,00FF99,00CC99,009999,006699,003399,000099,66FF66,66CC66,669966,666666,663366,660066,33FF66,33CC66,339966,336666,333366,330066,00FF66,00CC66,009966,006666,003366,000066,66FF33,66CC33,669933,666633,663333,660033,33FF33,33CC33,339933,336633,333333,330033,00FF33,00CC33,009933,006633,003333,000033,66FF00,66CC00,669900,666600,663300,660000,33FF00,33CC00,339900,336600,333300,330000,00FF00,00CC00,009900,006600,003300,000000",v="#ffffff",_={apply:"Apply",cancel:"Cancel",noColor:"no color",clearColor:"Clear color",previewInput:"Color Hexadecimal Code"},b=".kendoColorTools",w="click"+b,k="keydown"+b,y=s.support.browser,x=y.msie&&y.version<9,C=c.extend({init:function(e,t){var n,i=this;c.fn.init.call(i,e,t),e=i.element,t=i.options,i._value=t.value=d(t.value),i._tabIndex=e.attr("tabIndex")||0,n=i._ariaId=t.ariaId,n&&e.attr("aria-labelledby",n),t._standalone&&(i._triggerSelect=i._triggerChange)},options:{name:"ColorSelector",value:null,_standalone:!0},events:["change","select","cancel"],color:function(e){return e!==n&&(this._value=d(e),this._updateUI(this._value)),this._value},value:function(e){return e=this.color(e),e&&(e=this.options.opacity?e.toCssRgba():e.toCss()),e||null},enable:function(t){0===arguments.length&&(t=!0),e(".k-disabled-overlay",this.wrapper).remove(),t||this.wrapper.append("<div class='k-disabled-overlay'></div>"),this._onEnable(t)},_select:function(e,t){var n=this._value;e=this.color(e),t||(this.element.trigger("change"),e.equals(n)?this._standalone||this.trigger("cancel"):this.trigger("change",{value:this.value()}))},_triggerSelect:function(e){i(this,"select",e)},_triggerChange:function(e){i(this,"change",e)},destroy:function(){this.element&&this.element.off(b),this.wrapper&&this.wrapper.off(b).find("*").off(b),this.wrapper=null,c.fn.destroy.call(this)},_updateUI:e.noop,_selectOnHide:function(){return null},_cancel:function(){this.trigger("cancel")}}),S=C.extend({init:function(t,n){var i,o,r,l,c=this;if(C.fn.init.call(c,t,n),t=c.wrapper=c.element,n=c.options,i=n.palette,"websafe"==i?(i=m,n.columns=18):"basic"==i&&(i=g),"string"==typeof i&&(i=i.split(",")),e.isArray(i)&&(i=e.map(i,function(e){return d(e)})),c._selectedID=(n.ariaId||s.guid())+"_selected",t.addClass("k-widget k-colorpalette").attr("role","grid").attr("aria-readonly","true").append(e(c._template({colors:i,columns:n.columns,tileSize:n.tileSize,value:c._value,id:n.ariaId}))).on(w,".k-item",function(t){c._select(e(t.currentTarget).css(p))}).attr("tabIndex",c._tabIndex).on(k,a(c._keydown,c)),o=n.tileSize){if(/number|string/.test(typeof o))r=l=parseFloat(o);else{if("object"!=typeof o)throw Error("Unsupported value for the 'tileSize' argument");r=parseFloat(o.width),l=parseFloat(o.height)}t.find(".k-item").css({width:r,height:l})}},focus:function(){this.wrapper&&!this.wrapper.is("[unselectable='on']")&&this.wrapper.focus()},options:{name:"ColorPalette",columns:10,tileSize:null,palette:"basic"},_onEnable:function(e){e?this.wrapper.attr("tabIndex",this._tabIndex):this.wrapper.removeAttr("tabIndex")},_keydown:function(t){var n,i,a=this.wrapper,s=a.find(".k-item"),l=s.filter("."+f).get(0),c=t.keyCode;if(c==h.LEFT?n=o(s,l,-1):c==h.RIGHT?n=o(s,l,1):c==h.DOWN?n=o(s,l,this.options.columns):c==h.UP?n=o(s,l,-this.options.columns):c==h.ENTER?(r(t),l&&this._select(e(l).css(p))):c==h.ESC&&this._cancel(),n){r(t),this._current(n);try{i=d(n.css(p)),this._triggerSelect(i)}catch(u){}}},_current:function(t){this.wrapper.find("."+f).removeClass(f).attr("aria-selected",!1).removeAttr("id"),e(t).addClass(f).attr("aria-selected",!0).attr("id",this._selectedID),this.element.removeAttr("aria-activedescendant").attr("aria-activedescendant",this._selectedID)},_updateUI:function(t){var n=null;this.wrapper.find(".k-item").each(function(){var i=d(e(this).css(p));if(i&&i.equals(t))return n=this,!1}),this._current(n)},_template:s.template('<table class="k-palette k-reset" role="presentation"><tr role="row"># for (var i = 0; i < colors.length; ++i) { ## var selected = colors[i].equals(value); ## if (i && i % columns == 0) { # </tr><tr role="row"> # } #<td role="gridcell" unselectable="on" style="background-color:#= colors[i].toCss() #"#= selected ? " aria-selected=true" : "" # #=(id && i === 0) ? "id=\\""+id+"\\" " : "" # class="k-item#= selected ? " '+f+'" : "" #" aria-label="#= colors[i].toCss() #"></td># } #</tr></table>')}),T=C.extend({init:function(t,n){var i=this;C.fn.init.call(i,t,n),n=i.options,n.messages=n.options?e.extend(i.options.messages,n.options.messages):i.options.messages,t=i.element,i.wrapper=t.addClass("k-widget k-flatcolorpicker").append(i._template(n)),i._hueElements=e(".k-hsv-rectangle, .k-alpha-slider .k-slider-track",t),i._selectedColor=e(".k-selected-color-display",t),i._colorAsText=e("input.k-color-value",t),i._sliders(),i._hsvArea(),i._updateUI(i._value||d("#f00")),t.find("input.k-color-value").on(k,function(t){var n,o,r=this;if(t.keyCode==h.ENTER)try{n=d(r.value),o=i.color(),i._select(n,n.equals(o))}catch(a){e(r).addClass("k-state-error")}else i.options.autoupdate&&setTimeout(function(){var e=d(r.value,!0);e&&i._updateUI(e,!0)},10)}).end().on(w,".k-controls button.apply",function(){i.options._clearedColor?i.trigger("change"):i._select(i._getHSV())}).on(w,".k-controls button.cancel",function(){i._updateUI(i.color()),i._cancel()}),x&&i._applyIEFilter()},destroy:function(){this._hueSlider.destroy(),this._opacitySlider&&this._opacitySlider.destroy(),this._hueSlider=this._opacitySlider=this._hsvRect=this._hsvHandle=this._hueElements=this._selectedColor=this._colorAsText=null,C.fn.destroy.call(this)},options:{name:"FlatColorPicker",opacity:!1,buttons:!1,input:!0,preview:!0,clearButton:!1,autoupdate:!0,messages:_},_applyIEFilter:function(){var e=this.element.find(".k-hue-slider .k-slider-track")[0],t=e.currentStyle.backgroundImage;t=t.replace(/^url\([\'\"]?|[\'\"]?\)$/g,""),e.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+t+"', sizingMethod='scale')"},_sliders:function(){function e(e){n._updateUI(n._getHSV(e.value,null,null,null))}function t(e){n._updateUI(n._getHSV(null,null,null,e.value/100))}var n=this,i=n.element,o=i.find(".k-hue-slider"),r=i.find(".k-alpha-slider");o.attr("aria-label","hue saturation"),n._hueSlider=o.kendoSlider({min:0,max:360,tickPlacement:"none",showButtons:!1,slide:e,change:e}).data("kendoSlider"),r.attr("aria-label","opacity"),n._opacitySlider=r.kendoSlider({min:0,max:100,tickPlacement:"none",showButtons:!1,slide:t,change:t}).data("kendoSlider")},_hsvArea:function(){function e(e,n){var i=this.offset,o=e-i.left,r=n-i.top,a=this.width,s=this.height;o=o<0?0:o>a?a:o,r=r<0?0:r>s?s:r,t._svChange(o/a,1-r/s)}var t=this,n=t.element,i=n.find(".k-hsv-rectangle"),o=i.find(".k-draghandle").attr("tabIndex",0).on(k,a(t._keydown,t));t._hsvEvents=new s.UserEvents(i,{global:!0,press:function(t){this.offset=s.getOffset(i),this.width=i.width(),this.height=i.height(),o.focus(),e.call(this,t.x.location,t.y.location)},start:function(){i.addClass("k-dragging"),o.focus()},move:function(t){t.preventDefault(),e.call(this,t.x.location,t.y.location)},end:function(){i.removeClass("k-dragging")}}),t._hsvRect=i,t._hsvHandle=o},_onEnable:function(e){this._hueSlider.enable(e),this._opacitySlider&&this._opacitySlider.enable(e),this.wrapper.find("input").attr("disabled",!e);var t=this._hsvRect.find(".k-draghandle");e?t.attr("tabIndex",this._tabIndex):t.removeAttr("tabIndex")},_keydown:function(e){function t(t,n){var o=i._getHSV();o[t]+=n*(e.shiftKey?.01:.05),o[t]<0&&(o[t]=0),o[t]>1&&(o[t]=1),i._updateUI(o),r(e)}function n(t){var n=i._getHSV();n.h+=t*(e.shiftKey?1:5),n.h<0&&(n.h=0),n.h>359&&(n.h=359),i._updateUI(n),r(e)}var i=this;switch(e.keyCode){case h.LEFT:e.ctrlKey?n(-1):t("s",-1);break;case h.RIGHT:e.ctrlKey?n(1):t("s",1);break;case h.UP:t(e.ctrlKey&&i._opacitySlider?"a":"v",1);break;case h.DOWN:t(e.ctrlKey&&i._opacitySlider?"a":"v",-1);break;case h.ENTER:i._select(i._getHSV());break;case h.F2:i.wrapper.find("input.k-color-value").focus().select();break;case h.ESC:i._cancel()}},focus:function(){this._hsvHandle.focus()},_getHSV:function(e,t,n,i){var o=this._hsvRect,r=o.width(),a=o.height(),s=this._hsvHandle.position();return null==e&&(e=this._hueSlider.value()),null==t&&(t=s.left/r),null==n&&(n=1-s.top/a),null==i&&(i=this._opacitySlider?this._opacitySlider.value()/100:1),u.fromHSV(e,t,n,i)},_svChange:function(e,t){var n=this._getHSV(null,e,t,null);this._updateUI(n)},_updateUI:function(e,t){var n=this,i=n._hsvRect;e&&(this._colorAsText.attr("title",n.options.messages.previewInput),this._colorAsText.removeClass("k-state-error"),n._selectedColor.css(p,e.toDisplay()),t||n._colorAsText.val(n._opacitySlider?e.toCssRgba():e.toCss()),n._triggerSelect(e),e=e.toHSV(),n._hsvHandle.css({left:e.s*i.width()+"px",top:(1-e.v)*i.height()+"px"}),n._hueElements.css(p,u.fromHSV(e.h,1,1,1).toCss()),n._hueSlider.value(e.h),n._opacitySlider&&n._opacitySlider.value(100*e.a))},_selectOnHide:function(){return this.options.buttons?null:this._getHSV()},_template:s.template('# if (preview) { #<div class="k-selected-color"><div class="k-selected-color-display"><div class="k-color-input"><input class="k-color-value" # if (clearButton && !_standalone) { #placeholder="#: messages.noColor #" # } ##= !data.input ? \'style="visibility: hidden;"\' : "" #># if (clearButton && !_standalone) { #<span class="k-clear-color k-button k-bare" title="#: messages.clearColor #"></span># } #</div></div></div># } ## if (clearButton && !_standalone && !preview) { #<div class="k-clear-color-container"><span class="k-clear-color k-button k-bare">#: messages.clearColor #</span></div># } #<div class="k-hsv-rectangle"><div class="k-hsv-gradient"></div><div class="k-draghandle"></div></div><div class="k-sliders-wrap k-vbox"><input class="k-hue-slider" /># if (opacity) { #<input class="k-alpha-slider k-transparency-slider" /># } #</div># if (buttons) { #<div unselectable="on" class="k-controls"><button class="k-button k-primary apply">#: messages.apply #</button> <button class="k-button cancel">#: messages.cancel #</button></div># } #')}),D=c.extend({init:function(t,n){var i,o,r,a,s,l=this;c.fn.init.call(l,t,n),n=l.options,t=l.element,i=t.attr("value")||t.val(),i=i?d(i,!0):d(n.value,!0),l._value=n.value=i,o=l.wrapper=e(l._template(n)),t.hide().after(o),t.is("input")&&(t.appendTo(o),r=t.closest("label"),a=t.attr("id"),a&&(r=r.add('label[for="'+a+'"]')),r.click(function(e){l.open(),e.preventDefault()})),l._tabIndex=t.attr("tabIndex")||0,l.enable(!t.attr("disabled")),s=t.attr("accesskey"),s&&(t.attr("accesskey",null),o.attr("accesskey",s)),l.bind("activate",function(e){e.isDefaultPrevented()||l.toggle()}),l._updateUI(i)},destroy:function(){this.wrapper.off(b).find("*").off(b),this._popup&&(this._selector.destroy(),this._popup.destroy()),this._selector=this._popup=this.wrapper=null,c.fn.destroy.call(this)},enable:function(e){var t=this,n=t.wrapper,i=n.children(".k-picker-wrap"),o=i.find(".k-select");0===arguments.length&&(e=!0),t.element.attr("disabled",!e),n.attr("aria-disabled",!e),o.off(b).on("mousedown"+b,r),n.addClass("k-state-disabled").removeAttr("tabIndex").add("*",n).off(b),e?n.removeClass("k-state-disabled").attr("tabIndex",t._tabIndex).on("mouseenter"+b,function(){i.addClass("k-state-hover")}).on("mouseleave"+b,function(){i.removeClass("k-state-hover")}).on("focus"+b,function(){i.addClass("k-state-focused")}).on("blur"+b,function(){i.removeClass("k-state-focused")}).on(k,a(t._keydown,t)).on(w,".k-select",a(t.toggle,t)).on(w,t.options.toolIcon?".k-tool-icon":".k-selected-color",function(){t.trigger("activate")}):t.close()},_template:s.template('<span role="textbox" aria-haspopup="true" class="k-widget k-colorpicker"><span class="k-picker-wrap k-state-default"># if (toolIcon) { #<span class="k-icon k-tool-icon #= toolIcon #"><span class="k-selected-color"></span></span># } else { #<span class="k-selected-color"><span class="k-icon k-i-line" style="display: none;"></span></span># } #<span class="k-select" unselectable="on" aria-label="select"><span class="k-icon k-i-arrow-60-down"></span></span></span></span>'),options:{name:"ColorPicker",palette:null,columns:10,toolIcon:null,value:null,messages:_,opacity:!1,buttons:!0,preview:!0,clearButton:!1,ARIATemplate:'Current selected color is #=data || ""#'},events:["activate","change","select","open","close"],open:function(){this.element.prop("disabled")||this._getPopup().open()},close:function(){var e=this._selector&&this._selector.options||{};e._closing=!0,this._getPopup().close(),delete e._closing},toggle:function(){this.element.prop("disabled")||this._getPopup().toggle()},_noColorIcon:function(){return this.wrapper.find(".k-picker-wrap > .k-selected-color > .k-icon.k-i-line")},color:C.fn.color,value:C.fn.value,_select:C.fn._select,_triggerSelect:C.fn._triggerSelect,_isInputTypeColor:function(){var e=this.element[0];return/^input$/i.test(e.tagName)&&/^color$/i.test(e.type)},_updateUI:function(e){var t="";e&&(t=this._isInputTypeColor()||1==e.a?e.toCss():e.toCssRgba(),this.element.val(t)),this._ariaTemplate||(this._ariaTemplate=s.template(this.options.ARIATemplate)),this.wrapper.attr("aria-label",this._ariaTemplate(t)),this._triggerSelect(e),this.wrapper.find(".k-selected-color").css(p,e?e.toDisplay():v),this._noColorIcon()[t?"hide":"show"]()},_keydown:function(e){var t=e.keyCode;this._getPopup().visible()?(t==h.ESC?this._selector._cancel():this._selector._keydown(e),r(e)):t!=h.ENTER&&t!=h.DOWN||(this.open(),r(e))},_getPopup:function(){var t,i,o,r,a=this,l=a._popup;return l||(t=a.options,i=t.palette?S:T,t._standalone=!1,delete t.select,delete t.change,delete t.cancel,o=s.guid(),r=a._selector=new i(e('<div id="'+o+'"/>').appendTo(document.body),t),a.wrapper.attr("aria-owns",o),a._popup=l=r.wrapper.kendoPopup({anchor:a.wrapper,adjustSize:{width:5,height:0}}).data("kendoPopup"),r.element.find(".k-clear-color").kendoButton({icon:"reset-color",click:function(e){r.options._clearedColor=!0,a.value(null),a.element.val(null),a._updateUI(null),r._colorAsText.val(""),r._hsvHandle.css({top:"0px",left:"0px"}),r._selectedColor.css(p,v),a.trigger("change",{value:a.value()}),e.preventDefault()}}),r.bind({select:function(e){a._updateUI(d(e.value)),delete r.options._clearedColor},change:function(){r.options._clearedColor||a._select(r.color()),a.close()},cancel:function(){r.options._clearedColor&&!a.value()&&r.value()&&a._select(r.color(),!0),a.close()}}),l.bind({close:function(e){var t,i,o,s;return a.trigger("close")?(e.preventDefault(),n):(a.wrapper.children(".k-picker-wrap").removeClass("k-state-focused"),t=r._selectOnHide(),i=r.value(),o=a.value(),s=r.options,t?s._clearedColor&&!o||a._select(t):(setTimeout(function(){a.wrapper&&!a.wrapper.is("[unselectable='on']")&&a.wrapper.focus()}),!s._closing&&s._clearedColor&&!o&&i?a._select(i,!0):a._updateUI(a.color())),n)},open:function(e){a.trigger("open")?e.preventDefault():a.wrapper.children(".k-picker-wrap").addClass("k-state-focused")},activate:function(){r._select(a.color(),!0),r.focus(),a.wrapper.children(".k-picker-wrap").addClass("k-state-focused")}})),l}});l.plugin(S),l.plugin(T),l.plugin(D)}(jQuery,parseInt),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.numerictextbox.min",["kendo.core.min","kendo.userevents.min"],e)}(function(){return function(e,t){function n(e,t){var n="k-i-arrow-"+("increase"===e?"60-up":"60-down");return'<span unselectable="on" class="k-link k-link-'+e+'" aria-label="'+t+'" title="'+t+'"><span unselectable="on" class="'+A+" "+n+'"></span></span>'}function i(e,t){var n=(""+parseFloat(e,10)).split(D);return n[1]&&(n[1]=n[1].substring(0,t)),n.join(D)}var o=window.kendo,r=o.caret,a=o.keys,s=o.ui,l=s.Widget,c=o._activeElement,d=o._extractFormat,u=o.parseFloat,h=o.support.placeholder,p=o.getCulture,f="change",g="disabled",m="readonly",v="k-input",_="spin",b=".kendoNumericTextBox",w="touchend",k="mouseleave"+b,y="mouseenter"+b+" "+k,x="k-state-default",C="k-state-focused",S="k-state-hover",T="focus",D=".",A="k-icon",E="k-state-selected",I="k-state-disabled",M="k-state-invalid",F="aria-disabled",R=/^(-)?(\d*)$/,P=null,z=e.proxy,B=e.extend,L=l.extend({init:function(n,i){var r,a,s,c,u,h,p=this,f=i&&i.step!==t;l.fn.init.call(p,n,i),i=p.options,n=p.element.on("focusout"+b,z(p._focusout,p)).attr("role","spinbutton"),i.placeholder=i.placeholder||n.attr("placeholder"),r=p.min(n.attr("min")),a=p.max(n.attr("max")),s=p._parse(n.attr("step")),i.min===P&&r!==P&&(i.min=r),i.max===P&&a!==P&&(i.max=a),f||s===P||(i.step=s),p._initialOptions=B({},i),h=n.attr("type"),p._reset(),p._wrapper(),p._arrows(),p._validation(),p._input(),o.support.mobileOS?p._text.on(w+b+" "+T+b,function(){o.support.browser.edge?p._text.one(T+b,function(){p._toggleText(!1),n.focus()}):(p._toggleText(!1),n.focus())}):p._text.on(T+b,z(p._click,p)),n.attr("aria-valuemin",i.min!==P?i.min*i.factor:i.min).attr("aria-valuemax",i.max!==P?i.max*i.factor:i.max),i.format=d(i.format),c=i.value,c==P&&(c="number"==h?parseFloat(n.val()):n.val()),p.value(c),u=n.is("[disabled]")||e(p.element).parents("fieldset").is(":disabled"), +u?p.enable(!1):p.readonly(n.is("[readonly]")),p.angular("compile",function(){return{elements:p._text.get()}}),o.notify(p)},options:{name:"NumericTextBox",decimals:P,restrictDecimals:!1,min:P,max:P,value:P,step:1,round:!0,culture:"",format:"n",spinners:!0,placeholder:"",factor:1,upArrowText:"Increase value",downArrowText:"Decrease value"},events:[f,_],_editable:function(e){var t=this,n=t.element,i=e.disable,o=e.readonly,r=t._text.add(n),a=t._inputWrapper.off(y);t._toggleText(!0),t._upArrowEventHandler.unbind("press"),t._downArrowEventHandler.unbind("press"),n.off("keydown"+b).off("keypress"+b).off("keyup"+b).off("paste"+b),o||i?(a.addClass(i?I:x).removeClass(i?x:I),r.attr(g,i).attr(m,o).attr(F,i)):(a.addClass(x).removeClass(I).on(y,t._toggleHover),r.removeAttr(g).removeAttr(m).attr(F,!1),t._upArrowEventHandler.bind("press",function(e){e.preventDefault(),t._spin(1),t._upArrow.addClass(E)}),t._downArrowEventHandler.bind("press",function(e){e.preventDefault(),t._spin(-1),t._downArrow.addClass(E)}),t.element.on("keydown"+b,z(t._keydown,t)).on("keypress"+b,z(t._keypress,t)).on("keyup"+b,z(t._keyup,t)).on("paste"+b,z(t._paste,t)))},readonly:function(e){this._editable({readonly:e===t||e,disable:!1})},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t||e)})},setOptions:function(e){var n=this;l.fn.setOptions.call(n,e),n._arrowsWrap.toggle(n.options.spinners),n._inputWrapper.toggleClass("k-expand-padding",!n.options.spinners),n._text.prop("placeholder",n.options.placeholder),n._placeholder(n.options.placeholder),n.element.attr({"aria-valuemin":n.options.min!==P?n.options.min*n.options.factor:n.options.min,"aria-valuemax":n.options.max!==P?n.options.max*n.options.factor:n.options.max}),n.options.format=d(n.options.format),e.value!==t&&n.value(e.value)},destroy:function(){var e=this;e.element.add(e._text).add(e._upArrow).add(e._downArrow).add(e._inputWrapper).off(b),e._upArrowEventHandler.destroy(),e._downArrowEventHandler.destroy(),e._form&&e._form.off("reset",e._resetHandler),l.fn.destroy.call(e)},min:function(e){return this._option("min",e)},max:function(e){return this._option("max",e)},step:function(e){return this._option("step",e)},value:function(e){var n,i=this;return e===t?i._value:(e=i._parse(e),n=i._adjust(e),e===n&&(i._update(e),i._old=i._value),t)},focus:function(){this._focusin()},_adjust:function(e){var t=this,n=t.options,i=n.min,o=n.max;return e===P?e:(i!==P&&e<i?e=i:o!==P&&e>o&&(e=o),e)},_arrows:function(){var t,i=this,r=function(){clearTimeout(i._spinning),t.removeClass(E)},a=i.options,s=a.spinners,l=i.element;t=l.siblings("."+A),t[0]||(t=e(n("increase",a.upArrowText)+n("decrease",a.downArrowText)).insertAfter(l),i._arrowsWrap=t.wrapAll('<span class="k-select"/>').parent()),s||(t.parent().toggle(s),i._inputWrapper.addClass("k-expand-padding")),i._upArrow=t.eq(0),i._upArrowEventHandler=new o.UserEvents(i._upArrow,{release:r}),i._downArrow=t.eq(1),i._downArrowEventHandler=new o.UserEvents(i._downArrow,{release:r})},_validation:function(){var t=this,n=t.element;t._validationIcon=e("<span class='"+A+" k-i-warning'></span>").hide().insertAfter(n)},_blur:function(){var e=this;e._toggleText(!0),e._change(e.element.val())},_click:function(e){var t=this;clearTimeout(t._focusing),t._focusing=setTimeout(function(){var n,i,o,a=e.target,s=r(a)[0],l=a.value.substring(0,s),c=t._format(t.options.format),d=c[","],u=0;d&&(i=RegExp("\\"+d,"g"),o=RegExp("(^(-)$)|(^(-)?([\\d\\"+d+"]+)(\\"+c[D]+")?(\\d+)?)")),o&&(n=o.exec(l)),n&&(u=n[0].replace(i,"").length,l.indexOf("(")!=-1&&t._value<0&&u++),t._focusin(),r(t.element[0],u)})},_change:function(e){var t=this,n=t.options.factor;n&&1!==n&&(e=o.parseFloat(e),null!==e&&(e/=n)),t._update(e),e=t._value,t._old!=e&&(t._old=e,t._typing||t.element.trigger(f),t.trigger(f)),t._typing=!1},_culture:function(e){return e||p(this.options.culture)},_focusin:function(){var e=this;e._inputWrapper.addClass(C),e._toggleText(!1),e.element[0].focus()},_focusout:function(){var e=this;clearTimeout(e._focusing),e._inputWrapper.removeClass(C).removeClass(S),e._blur(),e._removeInvalidState()},_format:function(e,t){var n=this._culture(t).numberFormat;return e=e.toLowerCase(),e.indexOf("c")>-1?n=n.currency:e.indexOf("p")>-1&&(n=n.percent),n},_input:function(){var t,n=this,i=n.options,o="k-formatted-value",r=n.element.addClass(v).show()[0],a=r.accessKey,s=n.wrapper;t=s.find(D+o),t[0]||(t=e('<input type="text"/>').insertBefore(r).addClass(o));try{r.setAttribute("type","text")}catch(l){r.type="text"}t[0].title=r.title,t[0].tabIndex=r.tabIndex,t[0].style.cssText=r.style.cssText,t.prop("placeholder",i.placeholder),a&&(t.attr("accesskey",a),r.accessKey=""),n._text=t.addClass(r.className).attr({role:"spinbutton","aria-valuemin":i.min!==P?i.min*i.factor:i.min,"aria-valuemax":i.max!==P?i.max*i.factor:i.max,autocomplete:"off"})},_keydown:function(e){var t=this,n=e.keyCode;t._key=n,n==a.DOWN?t._step(-1):n==a.UP?t._step(1):n==a.ENTER?t._change(t.element.val()):n!=a.TAB&&(t._typing=!0)},_keypress:function(e){var t,n,i,o,s,l,c,d,u,h,p;0===e.which||e.metaKey||e.ctrlKey||e.keyCode===a.BACKSPACE||e.keyCode===a.ENTER||(t=this,n=t.options.min,i=t.element,o=r(i),s=o[0],l=o[1],c=String.fromCharCode(e.which),d=t._format(t.options.format),u=t._key===a.NUMPAD_DOT,h=i.val(),u&&(c=d[D]),h=h.substring(0,s)+c+h.substring(l),p=t._numericRegex(d).test(h),p&&u?(i.val(h),r(i,s+c.length),e.preventDefault()):(null!==n&&n>=0&&"-"===h.charAt(0)||!p)&&(t._addInvalidState(),e.preventDefault()),t._key=0)},_keyup:function(){this._removeInvalidState()},_addInvalidState:function(){var e=this;e._inputWrapper.addClass(M),e._validationIcon.show()},_removeInvalidState:function(){var e=this;e._inputWrapper.removeClass(M),e._validationIcon.hide()},_numericRegex:function(e){var t=this,n=e[D],i=t.options.decimals,o="*";return n===D&&(n="\\"+n),i===P&&(i=e.decimals),0===i&&t.options.restrictDecimals?R:(t.options.restrictDecimals&&(o="{0,"+i+"}"),t._separator!==n&&(t._separator=n,t._floatRegExp=RegExp("^(-)?(((\\d+("+n+"\\d"+o+")?)|("+n+"\\d"+o+")))?$")),t._floatRegExp)},_paste:function(e){var t=this,n=e.target,i=n.value,o=t._format(t.options.format);setTimeout(function(){var e=t._parse(n.value);e===P?t._update(i):(n.value=(""+e).replace(D,o[D]),t._adjust(e)===e&&t._numericRegex(o).test(n.value)||t._update(i))})},_option:function(e,n){var i=this,o=i.element,r=i.options;return n===t?r[e]:(n=i._parse(n),(n||"step"!==e)&&(r[e]=n,o.add(i._text).attr("aria-value"+e,n),o.attr(e,n)),t)},_spin:function(e,t){var n=this;t=t||500,clearTimeout(n._spinning),n._spinning=setTimeout(function(){n._spin(e,50)},t),n._step(e)},_step:function(e){var t=this,n=t.element,i=t._value,o=t._parse(n.val())||0,r=t.options.decimals||2;c()!=n[0]&&t._focusin(),t.options.factor&&o&&(o/=t.options.factor),o=+(o+t.options.step*e).toFixed(r),o=t._adjust(o),t._update(o),t._typing=!1,i!==o&&t.trigger(_)},_toggleHover:function(t){e(t.currentTarget).toggleClass(S,"mouseenter"===t.type)},_toggleText:function(e){var t=this;t._text.toggle(e),t.element.toggle(!e)},_parse:function(e,t){return u(e,this._culture(t),this.options.format)},_round:function(e,t){var n=this.options.round?o._round:i;return n(e,t)},_update:function(e){var t,n=this,i=n.options,r=i.factor,a=i.format,s=i.decimals,l=n._culture(),c=n._format(a,l);s===P&&(s=c.decimals),e=n._parse(e,l),t=e!==P,t&&(e=parseFloat(n._round(e,s),10)),n._value=e=n._adjust(e),n._placeholder(o.toString(e,a,l)),t?(r&&(e=parseFloat(n._round(e*r,s),10)),e=""+e,e.indexOf("e")!==-1&&(e=n._round(+e,s)),e=e.replace(D,c[D])):e=null,n.element.val(e),n.element.add(n._text).attr("aria-valuenow",e)},_placeholder:function(e){var t=this._text;t.val(e),h||e||t.val(this.options.placeholder),t.attr("title",this.element.attr("title")||t.val())},_wrapper:function(){var t,n=this,i=n.element,o=i[0];t=i.parents(".k-numerictextbox"),t.is("span.k-numerictextbox")||(t=i.hide().wrap('<span class="k-numeric-wrap k-state-default" />').parent(),t=t.wrap("<span/>").parent()),t[0].style.cssText=o.style.cssText,o.style.width="",n.wrapper=t.addClass("k-widget k-numerictextbox").addClass(o.className).css("display",""),n._inputWrapper=e(t[0].firstChild)},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){setTimeout(function(){t.value(n[0].value),t.max(t._initialOptions.max),t.min(t._initialOptions.min)})},t._form=o.on("reset",t._resetHandler))}});s.plugin(L)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.filtermenu.min",["kendo.datepicker.min","kendo.numerictextbox.min","kendo.dropdownlist.min","kendo.binder.min"],e)}(function(){return function(e,t){function n(t,i){t.filters&&(t.filters=e.grep(t.filters,function(e){return n(e,i),e.filters?e.filters.length:e.field!=i}))}function i(e){var t,n,i,o,r,a;if(e&&e.length)for(a=[],t=0,n=e.length;t<n;t++)i=e[t],r=""!==i.text?i.text||i.value||i:i.text,o=null==i.value?i.text||i:i.value,a[t]={text:r,value:o};return a}function o(t,n){return e.grep(t,function(t){return t.filters?(t.filters=e.grep(t.filters,function(e){return e.field!=n}),t.filters.length):t.field!=n})}function r(t,n){t.filters&&(t.filters=e.grep(t.filters,function(e){return r(e,n),e.filters?e.filters.length:e.field==n&&"eq"==e.operator}))}function a(n){return"and"==n.logic&&n.filters.length>1?[]:n.filters?e.map(n.filters,function(e){return a(e)}):n.value!==t?[n.value]:[]}function s(e,n){for(var i,o,r=c.getter(n,!0),a=[],s=0,l={};s<e.length;)i=e[s++],o=r(i),o===t||l.hasOwnProperty(o)||(a.push(i),l[o]=!0);return a}function l(e,t){return function(n){var i=e(n);return s(i,t)}}var c=window.kendo,d=c.ui,u=e.proxy,h=c.support,p=h.browser.chrome?"disabled":"off",f="kendoPopup",g="init",m="open",v="refresh",_="change",b=".kendoFilterMenu",w="Is equal to",k="Is not equal to",y={number:"numerictextbox",date:"datepicker"},x={string:"text",number:"number",date:"date"},C=c.isFunction,S=d.Widget,T='<div class="k-filter-menu-container"><div class="k-filter-help-text">#=messages.info#</div><label><input type="radio" data-#=ns#bind="checked: filters[0].value" value="true" name="filters[0].value"/>#=messages.isTrue#</label><label><input type="radio" data-#=ns#bind="checked: filters[0].value" value="false" name="filters[0].value"/>#=messages.isFalse#</label><div class="k-action-buttons"><button type="submit" title="#=messages.filter#" class="k-button k-primary">#=messages.filter#</button><button type="reset" title="#=messages.clear#" class="k-button">#=messages.clear#</button></div></div>',D='<div class="k-filter-menu-container"><div class="k-filter-help-text">#=messages.info#</div><label><input class="k-textbox" data-#=ns#bind="value: filters[0].value" name="filters[0].value"/></label><div class="k-action-buttons"><button type="submit" title="#=messages.filter#" class="k-button k-primary">#=messages.filter#</button><button type="reset" title="#=messages.clear#" class="k-button">#=messages.clear#</button></div></div>',A='<div class="k-filter-menu-container"><div class="k-filter-help-text">#=messages.info#</div><select title="#=messages.operator#" data-#=ns#bind="value: filters[0].operator" data-#=ns#role="dropdownlist">#for(var op in operators){#<option value="#=op#">#=operators[op]#</option>#}#</select>#if(values){#<select title="#=messages.value#" data-#=ns#bind="value:filters[0].value" data-#=ns#text-field="text" data-#=ns#value-field="value" data-#=ns#source=\'#=kendo.stringify(values).replace(/\'/g,"&\\#39;")#\' data-#=ns#role="dropdownlist" data-#=ns#option-label="#=messages.selectValue#" data-#=ns#value-primitive="true"></select>#}else{#<input title="#=messages.value#" data-#=ns#bind="value:filters[0].value" class="k-textbox" type="text" #=role ? "data-" + ns + "role=\'" + role + "\'" : ""# />#}##if(extra){#<select title="#=messages.logic#" class="k-filter-and" data-#=ns#bind="value: logic" data-#=ns#role="dropdownlist"><option value="and">#=messages.and#</option><option value="or">#=messages.or#</option></select><select title="#=messages.additionalOperator#" data-#=ns#bind="value: filters[1].operator" data-#=ns#role="dropdownlist">#for(var op in operators){#<option value="#=op#">#=operators[op]#</option>#}#</select>#if(values){#<select title="#=messages.additionalValue#" data-#=ns#bind="value:filters[1].value" data-#=ns#text-field="text" data-#=ns#value-field="value" data-#=ns#source=\'#=kendo.stringify(values).replace(/\'/g,"&\\#39;")#\' data-#=ns#role="dropdownlist" data-#=ns#option-label="#=messages.selectValue#" data-#=ns#value-primitive="true"></select>#}else{#<input title="#=messages.additionalValue#" data-#=ns#bind="value: filters[1].value" class="k-textbox" type="text" #=role ? "data-" + ns + "role=\'" + role + "\'" : ""#/>#}##}#<div class="k-action-buttons"><button type="submit" title="#=messages.filter#" class="k-button k-primary">#=messages.filter#</button><button type="reset" title="#=messages.clear#" class="k-button">#=messages.clear#</button></div></div>',E='<div data-#=ns#role="view" class="k-grid-filter-menu"><div data-#=ns#role="header" class="k-header"><a href="\\#" class="k-header-cancel k-link" title="#=messages.cancel#" aria-label="#=messages.cancel#"><span class="k-icon k-i-arrow-chevron-left"></span></a>#=messages.filter# #=messages.into# #=title#<a href="\\#" class="k-header-done k-link" title="#=messages.done#" aria-label="#=messages.done#"><span class="k-icon k-i-check"></span></a></div><form title="#=messages.title#" class="k-filter-menu k-mobile-list"><ul><li><span class="k-filter-help-text">#=messages.info#</span><ul><li class="k-item"><label class="k-label"><span class="k-filter-operator-text">#=messages.operator#</span><select id="operator_#=filterMenuGuid#" title="#=messages.operator#" class="k-filter-operator" data-#=ns#bind="value: filters[0].operator" autocomplete="'+p+'" >#for(var op in operators){#<option value="#=op#">#=operators[op]#</option>#}#</select></label></li><li class="k-item"><label class="k-label"><span class="k-filter-input-text">#=messages.value#</span>#if(values){#<select id="value_#=filterMenuGuid#" title="#=messages.value#" data-#=ns#bind="value:filters[0].value" autocomplete="'+p+'" ><option value="">#=messages.selectValue#</option>#for(var val in values){#<option value="#=values[val].value#">#=values[val].text#</option>#}#</select>#}else{#<input id="value_#=filterMenuGuid#" title="#=messages.value#" data-#=ns#bind="value:filters[0].value" class="k-value-input" type="#=inputType#" autocomplete="'+p+'" />#}#</label></li></ul>#if(extra){#<ul><li class="k-item"><label class="k-label"><span class="k-filter-logic-and-text">#=messages.and#</span><input id="and_#=filterMenuGuid#" title="#=messages.and#" type="radio" name="logic" class="k-radio" data-#=ns#bind="checked: logic" value="and" autocomplete="'+p+'" /><span class="k-radio-label"></span></label></li><li class="k-item"><label class="k-label"><span class="k-filter-logic-or-text">#=messages.or#</span><input id="or_#=filterMenuGuid#" title="#=messages.or#" type="radio" name="logic" class="k-radio" data-#=ns#bind="checked: logic" value="or" autocomplete="'+p+'" /><span class="k-radio-label"></label></label></li></ul><ul><li class="k-item"><label class="k-label"><span class="k-filter-operator-text">#=messages.additionalOperator#</span><select id="additionalOperator_#=filterMenuGuid#" title="#=messages.additionalOperator#" class="k-filter-operator" data-#=ns#bind="value: filters[1].operator" autocomplete="'+p+'" >#for(var op in operators){#<option value="#=op#">#=operators[op]#</option>#}#</select></label></li><li class="k-item"><label class="k-label"><span class="k-filter-input-text">#=messages.additionalValue#</span>#if(values){#<select id="additionalValue_#=filterMenuGuid#" title="#=messages.additionalValue#" data-#=ns#bind="value:filters[1].value" autocomplete="'+p+'" ><option value="">#=messages.selectValue#</option>#for(var val in values){#<option value="#=values[val].value#">#=values[val].text#</option>#}#</select>#}else{#<input id="additionalValue_#=filterMenuGuid#" title="#=messages.additionalValue#" data-#=ns#bind="value:filters[1].value" class="k-value-input" type="#=inputType#" autocomplete="'+p+'" />#}#</label></li></ul>#}#</li><li class="k-item k-clear-wrap"><span class="k-label k-clear" title="#=messages.clear#" aria-label="#=messages.clear#">#=messages.clear#</span></li></ul></form></div>',I='<div data-#=ns#role="view" class="k-grid-filter-menu"><div data-#=ns#role="header" class="k-header"><a href="\\#" class="k-header-cancel k-link" title="#=messages.cancel#" aria-label="#=messages.cancel#"><span class="k-icon k-i-arrow-chevron-left"></span></a>#=messages.filter# #=messages.into# #=title#<a href="\\#" class="k-header-done k-link" title="#=messages.done#" aria-label="#=messages.done#"><span class="k-icon k-i-check"></span></a></div><form title="#=messages.title#" class="k-filter-menu k-mobile-list"><ul><li><span class="k-filter-help-text">#=messages.info#</span><ul class="k-multicheck-bool-wrap"><li class="k-item"><label class="k-label"><input id="true_#=filterMenuGuid#" title="#=messages.isTrue#" class="k-check" type="radio" data-#=ns#bind="checked: filters[0].value" value="true" name="filters[0].value" autocomplete="'+p+'" /><span class="k-item-title">#=messages.isTrue#</span></label></li><li class="k-item"><label class="k-label"><input id="false_#=filterMenuGuid#" title="#=messages.isFalse#" class="k-check" type="radio" data-#=ns#bind="checked: filters[0].value" value="false" name="filters[0].value" autocomplete="'+p+'" /><span for="false_#=filterMenuGuid#" class="k-item-title">#=messages.isFalse#</span></label></li></ul></li><li class="k-item k-clear-wrap"><span class="k-label k-clear" title="#=messages.clear#" aria-label="#=messages.clear#">#=messages.clear#</span></li></ul></form></div>',M=S.extend({init:function(t,n){var i,o,r,a,s=this,l="string";S.fn.init.call(s,t,n),i=s.operators=n.operators||{},t=s.element,n=s.options,n.appendToElement||(r=t.addClass("k-with-icon k-filterable").find(".k-grid-filter"),r[0]||(r=t.prepend('<a class="k-grid-filter" href="#" title="'+n.messages.filter+'" aria-label="'+n.messages.filter+'"><span class="k-icon k-i-filter"></span></a>').find(".k-grid-filter")),r.attr("tabindex",-1).on("click"+b,u(s._click,s))),s.link=r||e(),s.dataSource=R.create(n.dataSource),s.field=n.field||t.attr(c.attr("field")),s.model=s.dataSource.reader.model,s._parse=function(e){return null!=e?e+"":e},s.model&&s.model.fields&&(a=s.model.fields[s.field],a&&(l=a.type||"string",a.parse&&(s._parse=u(a.parse,a)))),n.values&&(l="enums"),s.type=l,i=i[l]||n.operators[l];for(o in i)break;s._defaultFilter=function(){return{field:s.field,operator:o||"eq",value:""}},s._refreshHandler=u(s.refresh,s),s.dataSource.bind(_,s._refreshHandler),n.appendToElement?s._init():s.refresh()},_init:function(){var t,n=this,i=n.options.ui,o=C(i);n.pane=n.options.pane,n.pane&&(n._isMobile=!0),o||(t=i||y[n.type]),n._isMobile?n._createMobileForm(t):n._createForm(t),n.form.on("submit"+b,u(n._submit,n)).on("reset"+b,u(n._reset,n)),o&&n.form.find(".k-textbox").removeClass("k-textbox").each(function(){i(e(this))}),n.form.find("["+c.attr("role")+"=numerictextbox]").removeClass("k-textbox").end().find("["+c.attr("role")+"=datetimepicker]").removeClass("k-textbox").end().find("["+c.attr("role")+"=timepicker]").removeClass("k-textbox").end().find("["+c.attr("role")+"=datepicker]").removeClass("k-textbox"),n.refresh(),n.trigger(g,{field:n.field,container:n.form}),c.cycleForm(n.form)},_createForm:function(t){var n=this,o=n.options,r=n.operators||{},a=n.type,s=C(n.options.ui);r=r[a]||o.operators[a],n.form=e('<form title="'+n.options.messages.title+'" class="k-filter-menu"/>').html(c.template("boolean"===a?s?D:T:A)({field:n.field,format:o.format,ns:c.ns,messages:o.messages,extra:o.extra,operators:r,type:a,role:t,values:i(o.values)})),o.appendToElement?(n.element.append(n.form),n.popup=n.element.closest(".k-popup").data(f)):n.popup=n.form[f]({anchor:n.link,open:u(n._open,n),activate:u(n._activate,n),close:function(){n.options.closeCallback&&n.options.closeCallback(n.element)}}).data(f),n.form.on("keydown"+b,u(n._keydown,n))},_createMobileForm:function(t){var n=this,o=n.options,r=n.operators||{},a=c.guid(),s=n.type;r=r[s]||o.operators[s],n.form=e("<div />").html(c.template("boolean"===s?I:E)({field:n.field,title:o.title||n.field,format:o.format,ns:c.ns,messages:o.messages,extra:o.extra,operators:r,filterMenuGuid:a,type:s,role:t,inputType:x[s],values:i(o.values)})),n.view=n.pane.append(n.form.html()),n.form=n.view.element.find("form"),n.view.element.on("click",".k-header-done",function(e){n.form.submit(),e.preventDefault()}).on("click",".k-header-cancel",function(e){n._closeForm(),e.preventDefault()}).on("click",".k-clear",function(e){n._mobileClear(),e.preventDefault()}),n.view.bind("showStart",function(){n.refresh()})},refresh:function(){var e=this,t=e.dataSource.filter()||{filters:[],logic:"and"},n=[e._defaultFilter()],i=e._defaultFilter().operator;(e.options.extra||"isnull"!==i&&"isnullorempty"!==i&&"isnotnullorempty"!==i&&"isnotnull"!==i&&"isempty"!==i&&"isnotempty"!==i)&&n.push(e._defaultFilter()),e.filterModel=c.observable({logic:"and",filters:n}),e.form&&c.bind(e.form.children().first(),e.filterModel),e._bind(t)?e.link.addClass("k-state-active"):e.link.removeClass("k-state-active")},destroy:function(){var e=this;S.fn.destroy.call(e),e.form&&(c.unbind(e.form),c.destroy(e.form),e.form.unbind(b),e.popup&&(e.popup.destroy(),e.popup=null),e.form=null),e.view&&(e.view.purge(),e.view=null),e.link.unbind(b),e._refreshHandler&&(e.dataSource.unbind(_,e._refreshHandler),e.dataSource=null),e.element=e.link=e._refreshHandler=e.filterModel=null},_bind:function(e){var t,n,i,o,r=this,a=e.filters,s=!1,l=0,c=r.filterModel;for(t=0,n=a.length;t<n;t++)o=a[t],o.field==r.field?(c.set("logic",e.logic),i=c.filters[l],i||(c.filters.push({field:r.field}),i=c.filters[l]),i.set("value",r._parse(o.value)),i.set("operator",o.operator),l++,s=!0):o.filters&&(s=s||r._bind(o));return s},_stripFilters:function(t){return e.grep(t,function(e){return""!==e.value&&null!=e.value||"isnull"===e.operator||"isnotnull"===e.operator||"isempty"===e.operator||"isnotempty"===e.operator||"isnullorempty"==e.operator||"isnotnullorempty"==e.operator})},_merge:function(e){var t,i,o,r=this,a=e.logic||"and",s=this._stripFilters(e.filters),l=r.dataSource.filter()||{filters:[],logic:"and"};for(n(l,r.field),i=0,o=s.length;i<o;i++)t=s[i],t.value=r._parse(t.value);return s.length&&(l.filters.length?(e.filters=s,"and"!==l.logic&&(l.filters=[{logic:l.logic,filters:l.filters}],l.logic="and"),l.filters.push(s.length>1?e:s[0])):(l.filters=s,l.logic=a)),l},filter:function(e){var t=this._stripFilters(e.filters);t.length&&this.trigger("change",{filter:{logic:e.logic,filters:t},field:this.field})||(e=this._merge(e),e.filters.length&&this.dataSource.filter(e))},clear:function(){var e=this,t=e.dataSource.filter()||{filters:[]};this.trigger("change",{filter:null,field:e.field})||e._removeFilter(t)},_mobileClear:function(){var t,n,i,o,r,a=this,s=a.view.element;"boolean"===a.type?(t=s.find(".k-check:checked"),n=t.val(),t.val(""),t.trigger("change"),t.val(n),t.prop("checked",!1)):(i=s.find("select"),i.each(function(t,n){var i=e(n);i.val(i.find("option:first").val()),i.trigger("change")}),"string"!==a.type&&"date"!==a.type&&"number"!==a.type||(o=s.find(".k-value-input"),o.each(function(t,n){var i=e(n);i.val(""),i.trigger("change")})),a.options.extra&&(r=s.find("[name=logic]").first(),r.prop("checked",!0),r.trigger("change")))},_removeFilter:function(t){var n=this;t.filters=e.grep(t.filters,function(e){return e.filters?(e.filters=o(e.filters,n.field),e.filters.length):e.field!=n.field}),t.filters.length||(t=null),n.dataSource.filter(t)},_submit:function(t){var n,i,o;t.preventDefault(),t.stopPropagation(),n=this.filterModel.toJSON(),i=e.grep(n.filters,function(e){return""!==e.value&&null!==e.value}),this._checkForNullOrEmptyFilter(n)||i&&i.length?this.filter(n):(o=this.dataSource.filter(),o&&(o.filters.push(n),n=o),this._removeFilter(n)),this._closeForm()},_checkForNullOrEmptyFilter:function(e){var t,n,i;return!!(e&&e.filters&&e.filters.length)&&(t=!1,n=!1,e.filters[0]&&(i=e.filters[0].operator,t="isnull"==i||"isnotnull"==i||"isnotempty"==i||"isempty"==i||"isnullorempty"==i||"isnotnullorempty"==i),e.filters[1]&&(i=e.filters[1].operator,n="isnull"==i||"isnotnull"==i||"isnotempty"==i||"isempty"==i||"isnullorempty"==i||"isnotnullorempty"==i),!this.options.extra&&t||this.options.extra&&(t||n))},_reset:function(){this.clear(),this.options.search&&this.container&&this.container.find("label").parent().show(),this._closeForm()},_closeForm:function(){this._isMobile?this.pane.navigate("",this.options.animations.right):this.popup.close()},_click:function(e){e.preventDefault(),e.stopPropagation(),this.popup||this.pane||this._init(),this._isMobile?this.pane.navigate(this.view,this.options.animations.left):this.popup.toggle()},_open:function(){var t;e(".k-filter-menu").not(this.form).each(function(){t=e(this).data(f),t&&t.close()})},_activate:function(){this.form.find(":kendoFocusable:first").focus(),this.trigger(m,{field:this.field,container:this.form})},_keydown:function(e){e.keyCode==c.keys.ESC&&this.popup.close()},events:[g,"change",m],options:{name:"FilterMenu",extra:!0,appendToElement:!1,type:"string",operators:{string:{eq:w,neq:k,startswith:"Starts with",contains:"Contains",doesnotcontain:"Does not contain",endswith:"Ends with",isnull:"Is null",isnotnull:"Is not null",isempty:"Is empty",isnotempty:"Is not empty",isnullorempty:"Has no value",isnotnullorempty:"Has value"},number:{eq:w,neq:k,gte:"Is greater than or equal to",gt:"Is greater than",lte:"Is less than or equal to",lt:"Is less than",isnull:"Is null",isnotnull:"Is not null"},date:{eq:w,neq:k,gte:"Is after or equal to",gt:"Is after",lte:"Is before or equal to",lt:"Is before",isnull:"Is null",isnotnull:"Is not null"},enums:{eq:w,neq:k,isnull:"Is null",isnotnull:"Is not null"}},messages:{info:"Show items with value that:",title:"Show items with value that:",isTrue:"is true",isFalse:"is false",filter:"Filter",clear:"Clear",and:"And",or:"Or",selectValue:"-Select value-",operator:"Operator",value:"Value",additionalValue:"Additional value",additionalOperator:"Additional operator",logic:"Filters logic",cancel:"Cancel",done:"Done",into:"in"},animations:{left:"slide",right:"slide:right"}}}),F=".kendoFilterMultiCheck",R=c.data.DataSource,P='<div data-#=ns#role="view" class="k-grid-filter-menu"><div data-#=ns#role="header" class="k-header"><a href="\\#" class="k-header-cancel k-link" title="#=messages.cancel#" aria-label="#=messages.cancel#"><span class="k-icon k-i-arrow-chevron-left"></span></a>#=messages.filter# #=messages.into# #=title#<a href="\\#" class="k-header-done k-link" title="#=messages.done#" aria-label="#=messages.done#"><span class="k-icon k-i-check"></span></a></div><form class="k-filter-menu k-mobile-list"><ul>#if(search){#<li class="k-textbox k-space-right"><input placeholder="#=messages.search#" title="#=messages.search#" autocomplete="'+p+'" /><span class="k-icon k-i-zoom" /></li>#}#<li class="k-filter-tools"><span style="#=checkAll ? "" : "visibility: hidden;" #" class="k-label k-select-all" title="#=messages.checkAll#" aria-label="#=messages.checkAll#">#=messages.checkAll#</span><span class="k-label k-clear-all" title="#=messages.clearAll#" aria-label="#=messages.clearAll#">#=messages.clearAll#</span></li>#if(messages.selectedItemsFormat){#<li><div class="k-filter-selected-items"></div></li>#}#<li><ul class="k-multicheck-wrap"></ul></li></ul></form></div>',z=S.extend({init:function(t,n){var i,o;S.fn.init.call(this,t,n),n=this.options,this.element=e(t),i=this.field=this.options.field||this.element.attr(c.attr("field")),o=n.checkSource,this._foreignKeyValues()?(this.checkSource=R.create(n.values),this.checkSource.fetch()):n.forceUnique?(o=e.extend(!0,{},n.dataSource.options),delete o.pageSize,this.checkSource=R.create(o),this.checkSource.reader.data=l(this.checkSource.reader.data,this.field)):this.checkSource=R.create(o),this.dataSource=n.dataSource,this.model=this.dataSource.reader.model,this._parse=function(e){return e+""},this.model&&this.model.fields&&(i=this.model.fields[this.field],i&&("number"==i.type?this._parse=function(e){return"string"==typeof e&&"null"===e.toLowerCase()?null:parseFloat(e)}:i.parse&&(this._parse=u(i.parse,i)),this.type=i.type||"string")),n.appendToElement?this._init():this._createLink(),this._refreshHandler=u(this.refresh,this),this.dataSource.bind(_,this._refreshHandler)},_createLink:function(){var e=this.element,t=e.addClass("k-with-icon k-filterable").find(".k-grid-filter");t[0]||(t=e.prepend('<a class="k-grid-filter" href="#" title="'+this.options.messages.filter+'" aria-label="'+this.options.messages.filter+'"><span class="k-icon k-i-filter"/></a>').find(".k-grid-filter")),this._link=t.attr("tabindex",-1).on("click"+b,u(this._click,this))},_init:function(){var e=this,t=this.options.forceUnique,n=this.options;this.pane=n.pane,this.pane&&(this._isMobile=!0),this._createForm(),this._foreignKeyValues()?this.refresh():t&&!this.checkSource.options.serverPaging&&this.dataSource.data().length?(this.checkSource.data(s(this.dataSource.data(),this.field)),this.refresh()):(this._attachProgress(),this.checkSource.fetch(function(){e.refresh.call(e)})),this.options.forceUnique||(this.checkChangeHandler=function(){e.container.empty(),e.refresh()},this.checkSource.bind(_,this.checkChangeHandler)),this.form.on("keydown"+F,u(this._keydown,this)).on("submit"+F,u(this._filter,this)).on("reset"+F,u(this._reset,this)),this.trigger(g,{field:this.field,container:this.form})},_attachProgress:function(){var e=this;this._progressHandler=function(){d.progress(e.container,!0)},this._progressHideHandler=function(){d.progress(e.container,!1)},this.checkSource.bind("progress",this._progressHandler).bind("change",this._progressHideHandler)},_input:function(){var e=this;e._clearTypingTimeout(),e._typingTimeout=setTimeout(function(){e.search()},100)},_clearTypingTimeout:function(){this._typingTimeout&&(clearTimeout(this._typingTimeout),this._typingTimeout=null)},search:function(){var e,t,n,i=this.options.ignoreCase,o=this.searchTextBox[0].value,r=this.container.find("label");for(i&&(o=o.toLowerCase()),e=0,this.options.checkAll&&r.length&&(this._isMobile?this.view.element.find(".k-select-all")[0].style.visibility=o?"hidden":"":(r[0].parentNode.style.display=o?"none":"",e++));e<r.length;)t=r[e],n=t.textContent||t.innerText,i&&(n=n.toLowerCase()),t.parentNode.style.display=n.indexOf(o)>=0?"":"none",e++},_activate:function(){this.form.find(":kendoFocusable:first").focus(),this.trigger(m,{field:this.field,container:this.form})},_createForm:function(){var t,n=this.options,i="",o=this;this._isMobile||(i+="<div class='k-filter-menu-container'>",n.search&&(i+="<div class='k-textbox k-space-right'><input placeholder='"+n.messages.search+"'/><span class='k-icon k-i-zoom' /></div>"),i+="<ul class='k-reset k-multicheck-wrap'></ul>",n.messages.selectedItemsFormat&&(i+="<div class='k-filter-selected-items'>"+c.format(n.messages.selectedItemsFormat,0)+"</div>"),i+="<div class='k-action-buttons'>",i+="<button type='submit' class='k-button k-primary'>"+n.messages.filter+"</button>",i+="<button type='reset' class='k-button'>"+n.messages.clear+"</button>",i+="</div>",i+="</div>",this.form=e('<form class="k-filter-menu"/>').html(i),this.container=this.form.find(".k-multicheck-wrap")),this._isMobile?(o.form=e("<div />").html(c.template(P)({field:o.field,title:n.title||o.field,ns:c.ns,messages:n.messages,search:n.search,checkAll:n.checkAll})),o.view=o.pane.append(o.form.html()),o.form=o.view.element.find("form"),t=this.view.element,this.container=t.find(".k-multicheck-wrap"),t.on("click",".k-header-done",function(e){o.form.submit(),e.preventDefault()}).on("click",".k-header-cancel",function(e){o._closeForm(),e.preventDefault()}).on("click",".k-clear-all",function(e){o._mobileCheckAll(!1), +e.preventDefault()}).on("click",".k-select-all",function(e){o._mobileCheckAll(!0),e.preventDefault()}),o.view.bind("showStart",function(){o.refresh()})):n.appendToElement?(this.popup=this.element.closest(".k-popup").data(f),this.element.append(this.form)):o.popup=o.form.kendoPopup({anchor:o._link,open:u(o._open,o),activate:u(o._activate,o),close:function(){o.options.closeCallback&&o.options.closeCallback(o.element)}}).data(f),n.search&&(this.searchTextBox=this.form.find(".k-textbox > input"),this.searchTextBox.on("input",u(this._input,this)))},createCheckAllItem:function(){var t=this.options,n=c.template(t.itemTemplate({field:"all",mobile:this._isMobile})),i=e(n({all:t.messages.checkAll}));this.container.prepend(i),this.checkBoxAll=i.find(":checkbox").eq(0).addClass("k-check-all"),this.checkAllHandler=u(this.checkAll,this),this.checkBoxAll.on(_+F,this.checkAllHandler)},updateCheckAllState:function(){if(this.options.messages.selectedItemsFormat&&this.form.find(".k-filter-selected-items").text(c.format(this.options.messages.selectedItemsFormat,this.container.find(":checked:not(.k-check-all)").length)),this.checkBoxAll){var e=this.container.find(":checkbox:not(.k-check-all)").length==this.container.find(":checked:not(.k-check-all)").length;this.checkBoxAll.prop("checked",e)}},refresh:function(e){var t=this.options.forceUnique,n=this.dataSource,i=this.getFilterArray();this._link&&this._link.toggleClass("k-state-active",0!==i.length),this.form&&(e&&t&&e.sender===n&&!n.options.serverPaging&&("itemchange"==e.action||"add"==e.action||"remove"==e.action||n.options.autoSync&&"sync"===e.action)&&!this._foreignKeyValues()&&(this.checkSource.data(s(this.dataSource.data(),this.field)),this.container.empty()),this.container.is(":empty")&&this.createCheckBoxes(),this.checkValues(i),this.trigger(v))},getFilterArray:function(){var t,n=e.extend(!0,{},{filters:[],logic:"and"},this.dataSource.filter());return r(n,this.field),t=a(n)},createCheckBoxes:function(){var e,t,n,i=this.options,o={field:this.field,format:i.format,mobile:this._isMobile,type:this.type};this.options.forceUnique?this._foreignKeyValues()?(e=this.checkSource.data(),o.valueField="value",o.field="text"):e=this.checkSource.data():e=this.checkSource.view(),t=c.template(i.itemTemplate(o)),n=c.render(t,e),i.checkAll&&!this._isMobile&&this.createCheckAllItem(),this.container.on(_+F,":checkbox",u(this.updateCheckAllState,this)),this.container.append(n)},checkAll:function(){var e=this.checkBoxAll.is(":checked");this.container.find(":checkbox").prop("checked",e)},checkValues:function(t){var n=this;e(e.grep(this.container.find(":checkbox").prop("checked",!1),function(i){var o,r,a=!1;if(!e(i).is(".k-check-all"))for(o=n._parse(e(i).val()),r=0;r<t.length;r++)if(a="date"==n.type?t[r]&&o?t[r].getTime()==o.getTime():null===t[r]&&null===o:t[r]==o)return a})).prop("checked",!0),this.updateCheckAllState()},_mobileCheckAll:function(t){var n=this,i=n.container.find(":checkbox");i.each(function(n,i){var o=e(i);o.prop("checked",t),o.trigger("change")})},_filter:function(t){var n,i;t.preventDefault(),t.stopPropagation(),n={logic:"or"},i=this,n.filters=e.map(this.form.find(":checkbox:checked:not(.k-check-all)"),function(t){return{value:e(t).val(),operator:"eq",field:i.field}}),n.filters.length&&this.trigger("change",{filter:n,field:i.field})||(n=this._merge(n),n.filters.length?this.dataSource.filter(n):this.clear(),this._closeForm())},_stripFilters:function(t){return e.grep(t,function(e){return null!=e.value})},_foreignKeyValues:function(){var e=this.options;return e.values&&!e.checkSource},destroy:function(){var e=this;S.fn.destroy.call(e),e.form&&(c.unbind(e.form),c.destroy(e.form),e.form.unbind(F),e.popup&&(e.popup.destroy(),e.popup=null),e.form=null,e.container&&(e.container.unbind(F),e.container=null),e.checkBoxAll&&e.checkBoxAll.unbind(F)),e.view&&(e.view.purge(),e.view=null),e._link&&e._link.unbind(b),e._refreshHandler&&(e.dataSource.unbind(_,e._refreshHandler),e.dataSource=null),e.checkChangeHandler&&e.checkSource.unbind(_,e.checkChangeHandler),e._progressHandler&&e.checkSource.unbind("progress",e._progressHandler),e._progressHideHandler&&e.checkSource.unbind("change",e._progressHideHandler),this._clearTypingTimeout(),this.searchTextBox=null,e.element=e.checkSource=e.container=e.checkBoxAll=e._link=e._refreshHandler=e.checkAllHandler=null},options:{name:"FilterMultiCheck",itemTemplate:function(e){var n=e.field,i=e.format,o=e.valueField,r=e.mobile,a="";return o===t&&(o=n),"date"==e.type&&(a=":yyyy-MM-ddTHH:mm:sszzz"),"<li class='k-item'><label class='k-label'><input type='checkbox' class='"+(r?"k-check":"")+"' value='#:kendo.format('{0"+a+"}',"+o+")#'/><span class='k-item-title'>#:kendo.format('"+(i?i:"{0}")+"', "+n+")#</span></label></li>"},checkAll:!0,search:!1,ignoreCase:!0,appendToElement:!1,messages:{checkAll:"Select All",clearAll:"Clear All",clear:"Clear",filter:"Filter",search:"Search",cancel:"Cancel",selectedItemsFormat:"{0} items selected",done:"Done",into:"in"},forceUnique:!0,animations:{left:"slide",right:"slide:right"}},events:[g,v,"change",m]});e.extend(z.fn,{_click:M.fn._click,_keydown:M.fn._keydown,_reset:M.fn._reset,_closeForm:M.fn._closeForm,_removeFilter:M.fn._removeFilter,clear:M.fn.clear,_merge:M.fn._merge}),d.plugin(M),d.plugin(z)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.menu.min",["kendo.popup.min","kendo.data.min"],e)}(function(){return function(e,t){function n(e,t){return e=e.split(" ")[!t+0]||e,e.replace("top","up").replace("bottom","down")}function i(e,t,n){e=e.split(" ")[!t+0]||e;var i={origin:["bottom",n?"right":"left"],position:["top",n?"right":"left"]},o=/left|right/.test(e);return o?(i.origin=["top",e],i.position[1]=S.directions[e].reverse):(i.origin[0]=e,i.position[0]=S.directions[e].reverse),i.origin=i.origin.join(" "),i.position=i.position.join(" "),i}function o(t,n){try{return e.contains(t,n)}catch(i){return!1}}function r(t){t=e(t),t.addClass("k-item").children(U).addClass(Z),t.children("a").addClass(G).children(U).addClass(Z),t.filter(":not([disabled])").addClass(xe),t.filter(".k-separator").empty().append(" "),t.filter("li[disabled]").addClass(Te).removeAttr("disabled").attr("aria-disabled",!0),t.filter("[role]").length||t.attr("role","menuitem"),t.children($).length||t.contents().filter(function(){return!(this.nodeName.match(V)||3==this.nodeType&&!e.trim(this.nodeValue))}).wrapAll("<span class='"+G+"'/>"),a(t),l(t)}function a(t){t=e(t),t.find("> .k-link > [class*=k-i-arrow-60]:not(.k-sprite)").remove(),t.filter(":has(.k-menu-group)").children(".k-link:not(:has([class*=k-i-arrow]:not(.k-sprite)))").each(function(){var t=e(this),n=s(t);t.append("<span class='k-icon"+n+" k-menu-expand-arrow'/>")})}function s(e){var t,n=e.parent().parent(),i=S.support.isRtl(n);return t=n.hasClass(j+"-horizontal")?" k-i-arrow-60-down":i?" k-i-arrow-60-left":" k-i-arrow-60-right"}function l(t){t=e(t),t.filter(".k-first:not(:first-child)").removeClass(J),t.filter(".k-last:not(:last-child)").removeClass(K),t.filter(":first-child").addClass(J),t.filter(":last-child").addClass(K)}function c(e){var t,n;if(e&&e.length)for(t in e)n=e.eq(t),n.find("ul").length?n.attr("aria-haspopup",!0):n.removeAttr("aria-haspopup")}function d(e){if(!e.hasClass(j))return e.parentsUntil("."+j,"li")}function u(t,n){var i=p(n);i&&h(t,i),n.items&&e(t).children("ul").children("li").each(function(e){u(this,n.items[e])})}function h(t,n){e(t).children(".k-link").data({selectHandler:n})}function p(e){var t=e.select,n=S.isFunction;return t&&n(t)?t:null}function f(e){return e?"li[data-groupparent='"+e+"']":"li[data-groupparent]"}function g(e){return e?"ul[data-group='"+e+"']":"ul[data-group]"}function m(t,n){var i=t.find(f()),o=[];return i.each(function(i,r){var a,s;for(r=e(r),a=r.data(we),s=t;a;)s=n.find(g(a)+":visible"),s.length&&o.push(s),r=s.find(f()),a=r.data(we)}),o}function v(t,n){var i=t.data(be);return i?n.find(f(i)):e([])}function _(t,n){var i=t.data(we);return i?n.children(Ie).children(g(i)):e([])}function b(t,n){var i,o,r=[],a=function(e){for(;e.parentNode&&!n.is(e.parentNode);)r.push(e.parentNode),e=e.parentNode},s=t[0]||t;for(a(s),i=r[r.length-1];e(i).is(Ie)&&(o=e(i).children("ul"),s=v(o,n)[0]);)r.push(s),a(s),i=r[r.length-1];return r}function w(e){var t=0;return e.wheelDelta&&(t=-e.wheelDelta/120,t=t>0?Math.ceil(t):Math.floor(t)),e.detail&&(t=Math.round(e.detail/3)),t}function k(e,t){for(var n=0,i=e.parentNode;i&&!isNaN(i[t]);)n+=i[t],i=i.parentNode;return n}function y(e){return se&&e.originalEvent&&e.originalEvent.pointerType in We}function x(e){var t=e.originalEvent;return A&&/touch/i.test(t.type||"")}function C(e){e.contents().filter(function(){return"LI"!=this.nodeName}).remove()}var S=window.kendo,T=S.ui,D=S._activeElement,A=S.support.touch&&S.support.mobileOS,E=e.isArray,I=S.data.HierarchicalDataSource,M="mousedown",F="click",R=30,P=50,z=e.extend,B=e.proxy,L=e.each,H=S.template,N=S.keys,O=T.Widget,V=/^(ul|a|div)$/i,W=".kendoMenu",U="img",q="open",j="k-menu",G="k-link k-menu-link",$=".k-link",Y=".k-menu-expand-arrow",K="k-last",Q="close",X="timer",J="k-first",Z="k-image",ee="select",te="zIndex",ne="activate",ie="deactivate",oe="touchstart"+W+" MSPointerDown"+W+" pointerdown"+W,re=S.support.pointers,ae=S.support.msPointers,se=ae||re,le="change",ce="error",de=S.support.touch?"touchstart":"",ue=re?"pointerover":ae?"MSPointerOver":"mouseenter",he=re?"pointerout":ae?"MSPointerOut":"mouseleave",pe="DOMMouseScroll"+W+" mousewheel"+W,fe=S.support.resize+W,ge="scrollWidth",me="scrollHeight",ve="offsetWidth",_e="offsetHeight",be="group",we="groupparent",ke=e(document.documentElement),ye="kendoPopup",xe="k-state-default",Ce="k-state-hover",Se="k-state-focused",Te="k-state-disabled",De="k-state-selected",Ae=".k-menu",Ee=".k-menu-group",Ie=".k-animation-container",Me=Ee+","+Ie,Fe=":not(.k-list) > .k-item",Re=".k-item.k-state-disabled",Pe=".k-item",ze=".k-item:not(.k-state-disabled)",Be=".k-item:not(.k-state-disabled) > .k-link",Le=":not(.k-item.k-separator)",He=Pe+Le+":eq(0)",Ne=Pe+Le+":last",Oe="div:not(.k-animation-container,.k-list-container)",Ve=".k-menu-scroll-button",We={2:1,touch:1},Ue="string",qe="dataBound",je={text:"dataTextField",url:"dataUrlField",spriteCssClass:"dataSpriteCssClassField",imageUrl:"dataImageUrlField",imageAttr:"dataImageAttrField",content:"dataContentField"},Ge={wrapperCssClass:function(e,t){var n="k-item",i=t.index;return n+=t.enabled===!1?" k-state-disabled":" k-state-default",e.firstLevel&&0===i&&(n+=" k-first"),i==e.length-1&&(n+=" k-last"),t.cssClass&&(n+=" "+t.cssClass),t.attr&&t.attr.hasOwnProperty("class")&&(n+=" "+t.attr["class"]),t.selected&&(n+=" "+De),n},itemCssAttributes:function(e){var t,n="",i=e.attr||{};for(t in i)i.hasOwnProperty(t)&&"class"!==t&&(n+=t+'="'+i[t]+'" ');return n},imageCssAttributes:function(e){var t,n="",i=e&&e.toJSON?e.toJSON():{};i["class"]?i["class"]+=" "+Z:i["class"]=Z;for(t in i)i.hasOwnProperty(t)&&(n+=t+'="'+i[t]+'" ');return n},contentCssAttributes:function(e){var t,n="",i=e.contentAttr||{},o="k-content k-group k-menu-group";i["class"]?i["class"]+=" "+o:i["class"]=o;for(t in i)i.hasOwnProperty(t)&&(n+=t+'="'+i[t]+'" ');return n},textClass:function(){return G},arrowClass:function(e,t){var n="k-icon";return n+=t.horizontal?" k-i-arrow-60-down":" k-i-arrow-60-right"},groupAttributes:function(e){return e.expanded!==!0?" style='display:none'":""},groupCssClass:function(){return"k-group k-menu-group"},content:function(e){return e.content?e.content:" "}},$e=S.ui.DataBoundWidget.extend({init:function(e,t){var n=this;O.fn.init.call(n,e,t),e=n.wrapper=n.element,t=n.options,n._accessors(),n._templates(),n._dataSource(),n._updateClasses(),n._animations(t),n.nextItemZIndex=100,n._tabindex(),n._initOverflow(t),n._attachMenuEventsHandlers(),t.openOnClick&&(n.clicked=!1),e.attr("role","menubar"),e[0].id&&(n._ariaId=S.format("{0}_mn_active",e[0].id)),S.notify(n)},events:[q,Q,ne,ie,ee,qe],options:{name:"Menu",animation:{open:{duration:200},close:{duration:100}},orientation:"horizontal",direction:"default",openOnClick:!1,closeOnClick:!0,hoverDelay:100,scrollable:!1,popupCollision:t},_initData:function(){var e=this;e.dataSource&&(e.angular("cleanup",function(){return{elements:e.element.children()}}),e.element.empty(),e.append(e.dataSource.view(),e.element),e.angular("compile",function(){return{elements:e.element.children()}}))},_attachMenuEventsHandlers:function(){var t=this,n=t.element,i=t.options,o=t._overflowWrapper();(o||n).on(oe,Pe,B(t._focusHandler,t)).on(F+W,Re,!1).on(F+W,Pe,B(t._click,t)).on(oe+" "+M+W,".k-content",B(t._preventClose,t)).on(ue+W,ze,B(t._mouseenter,t)).on(he+W,ze,B(t._mouseleave,t)).on(M+W,ze,B(t._mousedown,t)).on(de+W+" "+ue+W+" "+he+W+" "+M+W+" "+F+W,Be,B(t._toggleHover,t)),n.on("keydown"+W,B(t._keydown,t)).on("focus"+W,B(t._focus,t)).on("focus"+W,".k-content",B(t._focus,t)).on("blur"+W,B(t._removeHoverItem,t)).on("blur"+W,"[tabindex]",B(t._checkActiveElement,t)),o&&o.on(he+W,Me,B(t._mouseleavePopup,t)).on(ue+W,Me,B(t._mouseenterPopup,t)),i.openOnClick&&(t._documentClickHandler=B(t._documentClick,t),e(document).click(t._documentClickHandler))},_detachMenuEventsHandlers:function(){var t=this,n=t._overflowWrapper();n&&n.off(W),t.element.off(W),t._documentClickHandler&&e(document).unbind("click",t._documentClickHandler)},_initOverflow:function(t){var n,i,o,r,a=this,s="horizontal"==t.orientation;t.scrollable&&(a._openedPopups={},a._scrollWrapper=a.element.wrap("<div class='k-menu-scroll-wrapper "+t.orientation+"'></div>").parent(),s&&C(a.element),n=e(a.templates.scrollButton({direction:s?"left":"up"})),i=e(a.templates.scrollButton({direction:s?"right":"down"})),n.add(i).appendTo(a._scrollWrapper),a._initScrolling(a.element,n,i,s),o=a.element.outerWidth(),r=a.element[0].style.width,r="auto"===r?"":r,s&&e(window).on(fe,S.throttle(function(){a._setOverflowWrapperWidth(o,r),a._toggleScrollButtons(a.element,n,i,s)},100)),a._setOverflowWrapperWidth(o,r),a._toggleScrollButtons(a.element,n,i,s))},_overflowWrapper:function(){return this._scrollWrapper||this._popupsWrapper},_setOverflowWrapperWidth:function(e,t){var n,i,o,r,a=this,s=a._scrollWrapper.css("width");a._scrollWrapper.css({width:""}),n=a._scrollWrapper.outerWidth(),a._scrollWrapper.css({width:s}),i=a.element.outerWidth(),o=a.element[0].offsetWidth-a.element[0].clientWidth,i!=n&&n>0&&(r=t?Math.min(e,n):n,a.element.width(r-o),a._scrollWrapper.width(r))},_reinitOverflow:function(e){var t=this,n=e.scrollable&&!t.options.scrollable||!e.scrollable&&t.options.scrollable||e.scrollable&&t.options.scrollable&&e.scrollable.distance!=t.options.scrollable.distance||e.orientation!=t.options.orientation;n&&(t._detachMenuEventsHandlers(),t._destroyOverflow(),t._initOverflow(e),t._attachMenuEventsHandlers())},_destroyOverflow:function(){var n=this,i=n._overflowWrapper();i&&(i.off(W),i.find(Ve).off(W).remove(),i.children(Ie).each(function(t,n){var o,r=e(n).children(Ee);r.off(pe),o=v(r,i),o.length&&o.append(n)}),i.find(f()).removeAttr("data-groupparent"),i.find(g()).removeAttr("data-group"),n.element.off(pe),e(window).off(fe),i.contents().unwrap(),n._scrollWrapper=n._popupsWrapper=n._openedPopups=t)},_initScrolling:function(t,n,i,o){var r=this,a=r.options.scrollable,s=e.isNumeric(a.distance)?a.distance:P,l=s/2,c="-="+s,d="+="+s,u="-="+2*s,h="+="+2*s,p=!1,f=!1,g=function(e){var a=o?{scrollLeft:e}:{scrollTop:e};t.finish().animate(a,"fast","linear",function(){p&&g(e)}),r._toggleScrollButtons(t,n,i,o)},m=function(e){p||f||(g(e.data.direction),p=!0)},v=function(a){var s=o?{scrollLeft:a.data.direction}:{scrollTop:a.data.direction};f=x(a)||y(a),t.stop().animate(s,"fast","linear",function(){f?(r._toggleScrollButtons(t,n,i,o),p=!0):e(a.currentTarget).trigger(ue)}),p=!1,a.stopPropagation(),a.preventDefault()};n.on(ue+W,{direction:c},m).on(S.eventMap.down+W,{direction:u},v),i.on(ue+W,{direction:d},m).on(S.eventMap.down+W,{direction:h},v),n.add(i).on(he+W,function(){t.stop(),p=!1,r._toggleScrollButtons(t,n,i,o)}),t.on(pe,function(e){var a,s,c,d;e.ctrlKey||e.shiftKey||e.altKey||(a=w(e.originalEvent),s=Math.abs(a)*l,c=(a>0?"+=":"-=")+s,d=o?{scrollLeft:c}:{scrollTop:c},r._closeChildPopups(t),t.finish().animate(d,"fast","linear",function(){r._toggleScrollButtons(t,n,i,o)}),e.preventDefault())})},_toggleScrollButtons:function(e,t,n,i){var o=i?e.scrollLeft():e.scrollTop(),r=i?ge:me,a=i?ve:_e;t.toggle(0!==o),n.toggle(o<e[0][r]-e[0][a]-1)},setOptions:function(e){var t=this.options.animation;this._animations(e),e.animation=z(!0,t,e.animation),"dataSource"in e&&this._dataSource(e),this._updateClasses(),this._reinitOverflow(e),O.fn.setOptions.call(this,e)},destroy:function(){var e=this;O.fn.destroy.call(e),e._detachMenuEventsHandlers(),e._destroyOverflow(),S.destroy(e.element)},enable:function(e,t){return this._toggleDisabled(e,t!==!1),this},disable:function(e){return this._toggleDisabled(e,!1),this},attemptGetItem:function(t){var n,i;return t=t||this.element,n=this.element.find(t),i=this._overflowWrapper(),n.length||t===this.element?n:i?i.find(t):e()},append:function(e,t){t=this.attemptGetItem(t);var n=this._insert(e,t,t.length?t.find("> .k-menu-group, > .k-animation-container > .k-menu-group"):null);return L(n.items,function(t){n.group.append(this),a(this),u(this,e[t]||e)}),a(t),l(n.group.find(".k-first, .k-last").add(n.items)),c(d(n.group)),this},insertBefore:function(e,t){t=this.attemptGetItem(t);var n=this._insert(e,t,t.parent());return L(n.items,function(n){t.before(this),a(this),l(this),u(this,e[n]||e)}),l(t),this},insertAfter:function(e,t){t=this.attemptGetItem(t);var n=this._insert(e,t,t.parent());return L(n.items,function(n){t.after(this),a(this),l(this),u(this,e[n]||e)}),l(t),this},_insert:function(t,n,i){var o,a,s,l,c=this;return n&&n.length||(i=c.element),s=e.isPlainObject(t)||t instanceof S.data.ObservableObject,l={firstLevel:i.hasClass(j),horizontal:i.hasClass(j+"-horizontal"),expanded:!0,length:i.children().length},n&&!i.length&&(i=e(c.renderGroup({group:l,options:c.options})).appendTo(n)),s||E(t)||t instanceof S.data.ObservableArray?o=e(e.map(s?[t]:t,function(t,n){return"string"==typeof t?e(t).get():e(c.renderItem({group:l,item:z(t,{index:n})})).get()})):(o="string"==typeof t&&"<"!=t.charAt(0)?c.element.find(t):e(t),a=o.find("> ul").addClass("k-menu-group").attr("role","menu"),o=o.filter("li"),o.add(a.find("> li")).each(function(){r(this)})),{items:o,group:i}},remove:function(e){var t,n,i,o,r;return e=this.attemptGetItem(e),t=this,n=e.parentsUntil(t.element,Fe),i=e.parent("ul:not(.k-menu)"),e.remove(),i&&!i.children(Fe).length&&(o=d(i),r=i.parent(Ie),r.length?r.remove():i.remove(),c(o)),n.length&&(n=n.eq(0),a(n),l(n)),t},_openAfterLoad:function(e,t){var n=this;t.loaded()?(n.open(e),n._loading=!1):t.one(le,function(){e.find(Y).removeClass("k-i-loading"),n._loading&&(n.open(e),n._loading=!1)})},open:function(o){var r,a,s,l=this,c=l.options,d="horizontal"==c.orientation,u=c.direction,h=S.support.isRtl(l.wrapper),p=l._overflowWrapper();return o=(p||l.element).find(o),r=l.dataSource&&l.dataSource.getByUid(o.data(S.ns+"uid")),r&&r.hasChildren&&!r.loaded()&&!l._loading?(l._loading=!0,o.find(Y).addClass("k-i-loading"),r.load(),l._openAfterLoad(o,r),t):(/^(top|bottom|default)$/.test(u)&&(u=h?d?(u+" left").replace("default","bottom"):"left":d?(u+" right").replace("default","bottom"):"right"),a=">.k-popup:visible,>.k-animation-container>.k-popup:visible",s=function(){var t=e(this).data(ye);t&&l.close(e(this).closest("li.k-item"),!0)},o.siblings().find(a).each(s),p&&o.find(a).each(s),l.options.openOnClick&&(l.clicked=!0),o.each(function(){var o=e(this);clearTimeout(o.data(X)),o.data(X,setTimeout(function(){var r,a,s,g,m,v,_,b,w,k,y=o.find(".k-menu-group:first:hidden");!y[0]&&p&&(a=l._getPopup(o),y=a&&a.element),y.is(":visible")||y[0]&&l._triggerEvent({item:o[0],type:q})===!1&&(!y.find(".k-menu-group")[0]&&y.children(".k-item").length>1?(s=e(window).height(),g=function(){y.css({maxHeight:s-(S._outerHeight(y)-y.height())-S.getShadows(y).bottom,overflow:"auto"})},S.support.browser.msie&&S.support.browser.version<=7?setTimeout(g,0):g()):y.css({maxHeight:"",overflow:""}),o.data(te,o.css(te)),m=l.nextItemZIndex++,o.css(te,m),l.options.scrollable&&o.parent().siblings(Ve).css({zIndex:++m}),r=y.data(ye),v=o.parent().hasClass(j),_=v&&d,b=i(u,v,h),w=c.animation.open.effects,k=w!==t?w:"slideIn:"+n(u,v),r?(r=y.data(ye),r.options.origin=b.origin,r.options.position=b.position,r.options.animation.open.effects=k):r=y.kendoPopup({activate:function(){l._triggerEvent({item:this.wrapper.parent(),type:ne})},deactivate:function(e){l._closing=!1,e.sender.element.removeData("targetTransform").css({opacity:""}),l._triggerEvent({item:this.wrapper.parent(),type:ie})},origin:b.origin,position:b.position,collision:c.popupCollision!==t?c.popupCollision:_?"fit":"fit flip",anchor:o,appendTo:p||o,animation:{open:z(!0,{effects:k},c.animation.open),close:c.animation.close},open:B(l._popupOpen,l),close:function(e){var t,n;l._closing=!0,t=e.sender.wrapper.parent(),p&&(n=e.sender.element.data(be),n&&(t=(p||l.element).find(f(n))),e.sender.wrapper.children(Ve).hide()),l._triggerEvent({item:t[0],type:Q})?e.preventDefault():(t.css(te,t.data(te)),t.removeData(te),l.options.scrollable&&t.parent().siblings(Ve).css({zIndex:""}),(A||se||S.support.mouseAndTouchPresent)&&(t.removeClass(Ce),l._removeHoverItem()))}}).data(ye),y.removeAttr("aria-hidden"),l._configurePopupOverflow(r,o),r._hovered=!0,r.open(),l._initPopupScrolling(r))},l.options.hoverDelay))}),l)},_configurePopupOverflow:function(e,t){var n,i=this;i.options.scrollable&&(i._wrapPopupElement(e),t.attr("data-groupparent")||(n=(new Date).getTime(),t.attr("data-groupparent",n),e.element.attr("data-group",n)))},_wrapPopupElement:function(e){e.element.parent().is(Ie)||(e.wrapper=S.wrap(e.element,e.options.autosize).css({overflow:"hidden",display:"block",position:"absolute"}))},_initPopupScrolling:function(e,t,n){var i=this;i.options.scrollable&&e.element[0].scrollHeight>e.element[0].offsetHeight&&i._initPopupScrollButtons(e,t,n)},_initPopupScrollButtons:function(t,n,i){var o=this,r=t.wrapper.children(Ve),a=o.options.animation,s=(a&&a.open&&a.open.duration||0)+R;setTimeout(function(){var a,s;r.length||(a=e(o.templates.scrollButton({direction:n?"left":"up"})),s=e(o.templates.scrollButton({direction:n?"right":"down"})),r=a.add(s).appendTo(t.wrapper),o._initScrolling(t.element,a,s,n),i||r.on(ue+W,function(){var n=o._overflowWrapper();e(m(t.element,n)).each(function(e,t){var i=n.find(f(t.data(be)));o.close(i)})}).on(he+W,function(){setTimeout(function(){e.isEmptyObject(o._openedPopups)&&o._closeParentPopups(t.element)},R)})),o._toggleScrollButtons(t.element,r.first(),r.last(),n)},s)},_popupOpen:function(e){this._keyTriggered||e.sender.element.children("."+Se).removeClass(Se),this.options.scrollable&&this._setPopupHeight(e.sender)},_setPopupHeight:function(t,n){var i,o,r,a,s,l,c,d,u,h=t.element,p=h.add(h.parent(Ie));p.height(h.hasClass(j)&&this._initialHeight||""),i=t._location(n),o=e(window).height(),r=i.height,a=n?0:Math.max(i.top,0),s=n?0:k(this._overflowWrapper()[0],"scrollTop"),l=window.innerHeight-o,c=o-S.getShadows(h).bottom+l,d=c+s>r+a,d||(u=Math.min(c,c-a+s),p.css({overflow:"hidden",height:u+"px"}))},close:function(t,n){var i,o,r=this,a=r._overflowWrapper(),s=a||r.element;return t=s.find(t),t.length||(t=s.find(">.k-item")),i=function(t){var n=!1;return e.isEmptyObject(r._openedPopups)?n:(e(m(t,a)).each(function(e,t){return n=!!r._openedPopups[""+t.data(be)],!n}),n)},o=function(e){var t=e.data(we);return!a||!t||!r._openedPopups[""+t]},t.each(function(){var s=e(this);!n&&r._isRootItem(s)&&(r.clicked=!1),clearTimeout(s.data(X)),s.data(X,setTimeout(function(){var e=r._getPopup(s);if(e&&(o(s)||r._forceClose)){if(!r._forceClose&&i(e.element))return;e.close(),e.element.attr("aria-hidden",!0),a&&r._forceClose&&t.last().is(s[0])&&delete r._forceClose}},r.options.hoverDelay))}),r},_getPopup:function(e){var t,n,i=this,o=e.find(".k-menu-group:not(.k-list-container):not(.k-calendar-container):first:visible").data(ye),r=i._overflowWrapper();return!o&&r&&(t=e.data(we),t&&(n=r.find(g(t)),o=n.data(ye))),o},_toggleDisabled:function(t,n){this.element.find(t).each(function(){e(this).toggleClass(xe,n).toggleClass(Te,!n).attr("aria-disabled",!n)})},_toggleHover:function(t){var n=e(S.eventTarget(t)||t.target).closest(Fe),i=t.type==ue||M.indexOf(t.type)!==-1;n.siblings().removeClass(Ce),n.parents("li."+Te).length||n.toggleClass(Ce,i||"mousedown"==t.type||"pointerover"==t.type||t.type==de),this._removeHoverItem()},_preventClose:function(){this.options.closeOnClick||(this._closurePrevented=!0)},_checkActiveElement:function(t){var n=this,i=e(t?t.currentTarget:this._hoverItem()),r=n._findRootParent(i)[0];this._closurePrevented||setTimeout(function(){document.hasFocus()&&(o(r,S._activeElement())||!t||o(r,t.currentTarget))||n.close(r)},0),this._closurePrevented=!1},_removeHoverItem:function(){var e=this._hoverItem();e&&e.hasClass(Se)&&(e.removeClass(Se),this._oldHoverItem=null)},_updateClasses:function(){var e,t=this.element,n=".k-menu-init div ul";t.removeClass("k-menu-horizontal k-menu-vertical"),t.addClass("k-widget k-reset k-header k-menu-init "+j).addClass(j+"-"+this.options.orientation),t.find("li > ul").filter(function(){return!S.support.matchesSelector.call(this,n)}).addClass("k-group k-menu-group").attr("role","menu").attr("aria-hidden",t.is(":visible")).parent("li").attr("aria-haspopup","true").end().find("li > div").addClass("k-content").attr("tabindex","-1"),e=t.find("> li,.k-menu-group > li"),t.removeClass("k-menu-init"),e.each(function(){r(this)})},_mouseenter:function(t){var n=this,i=e(t.currentTarget),r=n._itemHasChildren(i),a=i.data(we)||i.parent().data(be),s=y(t);a&&(n._openedPopups[""+a]=!0),n._closing||t.delegateTarget!=i.parents(Ae)[0]&&t.delegateTarget!=i.parents(".k-menu-scroll-wrapper,.k-popups-wrapper")[0]||(n._keyTriggered=!1,n.options.openOnClick.rootMenuItems&&n._isRootItem(i.closest(Fe))||n.options.openOnClick.subMenuItems&&!n._isRootItem(i.closest(Fe))||(!(n.options.openOnClick===!1||n.options.openOnClick.rootMenuItems===!1&&n._isRootItem(i.closest(Fe))||n.options.openOnClick.subMenuItems===!1&&!n._isRootItem(i.closest(Fe))||n.clicked)||A||s&&n._isRootItem(i.closest(Fe))||!o(t.currentTarget,t.relatedTarget)&&r&&n.open(i),(n.options.openOnClick===!0&&n.clicked||A)&&i.siblings().each(B(function(e,t){n.close(t,!0)},n))))},_mousedown:function(t){var n=this,i=e(t.currentTarget);(n.options.openOnClick.subMenuItems&&!n._isRootItem(i)||A)&&i.siblings().each(B(function(e,t){n.close(t,!0)},n))},_mouseleave:function(n){var i=this,r=e(n.currentTarget),a=r.data(we),s=r.children(Ie).length||r.children(Ee).length||a,l=e(window);return a&&delete i._openedPopups[""+a],r.parentsUntil(Ie,".k-list-container,.k-calendar-container")[0]?(n.stopImmediatePropagation(),t):i.options.openOnClick!==!1&&(i.options.openOnClick.rootMenuItems||!i._isRootItem(r))&&(i.options.openOnClick.subMenuItems||i._isRootItem(r))||A||y(n)||o(n.currentTarget,n.relatedTarget||n.target)||!s||o(n.currentTarget,S._activeElement())?((S.support.browser.msie&&!n.toElement&&!n.relatedTarget&&!y(n)||n.clientX<0||n.clientY<0||n.clientY>l.height()||n.clientX>l.width())&&i.close(r),t):(i.close(r,!0),i._loading=!1,t)},_mouseenterPopup:function(t){var n,i=this,o=e(t.currentTarget);o.parent().is(Ie)||(o=o.children("ul"),n=o.data(be),n&&(i._openedPopups[""+n]=!0))},_mouseleavePopup:function(t){var n=this,i=e(t.currentTarget);!y(t)&&i.is(Ie)&&n._closePopups(i.children("ul"))},_closePopups:function(t){var n,i=this,o=i._overflowWrapper(),r=t.data(be);r&&(delete i._openedPopups[""+r],n=o.find(f(r)),setTimeout(function(){if(i.options.openOnClick)i._closeChildPopups(t);else if(e.isEmptyObject(i._openedPopups)){var o=i._innerPopup(t);i._closeParentPopups(o)}else i.close(n,!0)},0))},_closeChildPopups:function(t){var n=this,i=n._overflowWrapper();e(m(t,i)).each(function(){var e=i.find(f(this.data(be)));n.close(e,!0)})},_innerPopup:function(e){var t=this._overflowWrapper(),n=m(e,t);return n[n.length-1]||e},_closeParentPopups:function(e){var t=this,n=t._overflowWrapper(),i=e.data(be),o=n.find(f(i));for(i=o.parent().data(be),t.close(o,!0);i&&!t._openedPopups[i]&&!o.parent().is(Ae);)o=n.find(f(i)),t.close(o,!0),i=o.parent().data(be)},_click:function(n){for(var i,o,r,a,s,l,c=this,d=c.options,u=e(S.eventTarget(n)),h=u[0],p=u[0]?u[0].nodeName.toUpperCase():"",f="INPUT"==p||"SELECT"==p||"BUTTON"==p||"LABEL"==p,m=u.closest($),v=u.closest(Fe),_=v[0],b=m.attr("href"),w=u.attr("href"),k=e("<a href='#' />").attr("href"),x=!!b&&b!==k,C=x&&!!b.match(/^#/),T=!!w&&w!==k,D=c._overflowWrapper();h&&h.parentNode!=_;)h=h.parentNode;if(!e(h).is(Oe)){if(v.hasClass(Te))return n.preventDefault(),t;if(n.handled||!c._triggerSelect(u,_)||f||n.preventDefault(),n.handled=!0,o=v.children(Me),D&&(s=v.data(we),s&&(o=D.find(g(s)))),r=o.is(":visible"),a=d.openOnClick&&r&&c._isRootItem(v),d.closeOnClick&&(!x||C)&&(!o.length||a))return v.removeClass(Ce).css("height"),c._oldHoverItem=c._findRootParent(v),l=c._parentsUntil(m,c.element,Fe),c._forceClose=!!D,c.close(l),c.clicked=!1,"MSPointerUp".indexOf(n.type)!=-1&&n.preventDefault(),t;x&&n.enterKey&&m[0].click(),(c._isRootItem(v)&&d.openOnClick!==!1||d.openOnClick.subMenuItems||S.support.touch||y(n)&&c._isRootItem(v.closest(Fe)))&&(x||f||T||n.preventDefault(),c.clicked=!0,i=o.is(":visible")?Q:q,(d.closeOnClick||i!=Q)&&c[i](v))}},_parentsUntil:function(n,i,o){var r,a,s=this._overflowWrapper();return s?(r=b(n,s),a=[],e(r).each(function(){var n=e(this);return!n.is(i)&&(n.is(o)&&a.push(this),t)}),e(a)):n.parentsUntil(i,o)},_triggerSelect:function(e,t){var n,i,o,r;return e=e.is(".k-link")?e:e.closest(".k-link"),n=e.data("selectHandler"),n&&(i=this._getEventData(e),n.call(this,i)),o=i&&i.isDefaultPrevented(),r=this._triggerEvent({item:t,type:ee}),o||r},_getEventData:function(e){var t={sender:this,target:e,_defaultPrevented:!1,preventDefault:function(){this._defaultPrevented=!0},isDefaultPrevented:function(){return this._defaultPrevented}};return t},_documentClick:function(e){var t=this;o((t._overflowWrapper()||t.element)[0],e.target)||(t.clicked=!1)},_focus:function(n){var i=this,o=n.target,r=i._hoverItem(),a=D();return o==i.wrapper[0]||e(o).is(":kendoFocusable")?(a===n.currentTarget&&(r.length?i._moveHover([],r):i._oldHoverItem||i._moveHover([],i.wrapper.children().first())),t):(n.stopPropagation(),e(o).closest(".k-content").closest(".k-menu-group").closest(".k-item").addClass(Se),i.wrapper.focus(),t)},_keydown:function(e){var n,i,o,r=this,a=e.keyCode,s=r._oldHoverItem,l=S.support.isRtl(r.wrapper);if(e.target==e.currentTarget||a==N.ESC){if(s||(s=r._oldHoverItem=r._hoverItem()),i=r._itemBelongsToVertival(s),o=r._itemHasChildren(s),r._keyTriggered=!0,a==N.RIGHT)n=r[l?"_itemLeft":"_itemRight"](s,i,o);else if(a==N.LEFT)n=r[l?"_itemRight":"_itemLeft"](s,i,o);else if(a==N.DOWN)n=r._itemDown(s,i,o);else if(a==N.UP)n=r._itemUp(s,i,o);else if(a==N.HOME)r._moveHover(s,s.parent().children().first()),e.preventDefault();else if(a==N.END)r._moveHover(s,s.parent().children().last()),e.preventDefault();else if(a==N.ESC)n=r._itemEsc(s,i);else if(a==N.ENTER||a==N.SPACEBAR)n=s.children(".k-link"),n.length>0&&(r._click({target:n[0],preventDefault:function(){},enterKey:!0}),o&&!s.hasClass(Te)?(r.open(s),r._moveHover(s,r._childPopupElement(s).children().first())):r._moveHover(s,r._findRootParent(s)));else if(a==N.TAB)return n=r._findRootParent(s),r._moveHover(s,n),r._checkActiveElement(),t;n&&n[0]&&(e.preventDefault(),e.stopPropagation())}},_hoverItem:function(){return this.wrapper.find(".k-item.k-state-hover,.k-item.k-state-focused").filter(":visible")},_itemBelongsToVertival:function(e){var t=this.wrapper.hasClass("k-menu-vertical");return e.length?e.parent().hasClass("k-menu-group")||t:t},_itemHasChildren:function(e){return!!(e&&e.length&&e[0].nodeType)&&(e.children(".k-menu-group, div.k-animation-container").length>0||!!e.data(we)&&!!this._overflowWrapper().children(g(e.data(we)))); +},_moveHover:function(t,n){var i=this,o=i._ariaId;t.length&&n.length&&t.removeClass(Se),n.length&&(n[0].id&&(o=n[0].id),n.addClass(Se),i._oldHoverItem=n,o&&(i.element.removeAttr("aria-activedescendant"),e("#"+o).removeAttr("id"),n.attr("id",o),i.element.attr("aria-activedescendant",o)),i._scrollToItem(n))},_findRootParent:function(e){return this._isRootItem(e)?e:this._parentsUntil(e,Ae,"li.k-item").last()},_isRootItem:function(e){return e.parent().hasClass(j)},_itemRight:function(e,t,n){var i,o,r,a,s=this;return t?n&&!e.hasClass(Te)?(s.open(e),i=s._childPopupElement(e).children().first()):"horizontal"==s.options.orientation&&(o=s._findRootParent(e),r=s._overflowWrapper(),r&&(a=_(o,r),s._closeChildPopups(a)),s.close(o),i=o.nextAll(He)):(i=e.nextAll(He),i.length||(i=e.prevAll(Ne)),s.close(e)),i&&!i.length?i=s.wrapper.children(".k-item").first():i||(i=[]),s._moveHover(e,i),i},_itemLeft:function(e,t){var n,i,o=this;return t?(n=e.parent().closest(".k-item"),i=o._overflowWrapper(),!n.length&&i&&(n=v(e.parent(),i)),o.close(n),o._isRootItem(n)&&"horizontal"==o.options.orientation&&(n=n.prevAll(He))):(n=e.prevAll(He),n.length||(n=e.nextAll(Ne)),o.close(e)),n.length||(n=o.wrapper.children(".k-item").last()),o._moveHover(e,n),n},_itemDown:function(e,t,n){var i,o=this;if(t)i=e.nextAll(He);else{if(!n||e.hasClass(Te))return;o.open(e),i=o._childPopupElement(e).children().first()}return!i.length&&e.length?i=e.parent().children().first():e.length||(i=o.wrapper.children(".k-item").first()),o._moveHover(e,i),i},_itemUp:function(e,t){var n,i=this;if(t)return n=e.prevAll(He),!n.length&&e.length?n=e.parent().children().last():e.length||(n=i.wrapper.children(".k-item").last()),i._moveHover(e,n),n},_scrollToItem:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p=this;p.options.scrollable&&e&&e.length&&(t=e.parent(),n=!!t.hasClass(j)&&"horizontal"==p.options.orientation,i=n?"scrollLeft":"scrollTop",o=n?S._outerWidth:S._outerHeight,r=t[i](),a=o(e),s=e[0][n?"offsetLeft":"offsetTop"],l=o(t),c=t.siblings(Ve),d=c.length?o(c.first()):0,r+l<s+a+d?u=s+a-l+d:r>s-d&&(u=s-d),isNaN(u)||(h={},h[i]=u,t.finish().animate(h,"fast","linear",function(){p._toggleScrollButtons(t,c.first(),c.last(),n)})))},_itemEsc:function(e,t){var n,i=this;return t?(n=e.parent().closest(".k-item"),i.close(n),i._moveHover(e,n),n):e},_childPopupElement:function(e){var t=e.find(".k-menu-group"),n=this._overflowWrapper();return!t.length&&n&&(t=_(e,n)),t},_triggerEvent:function(e){var t=this;return t.trigger(e.type,{type:e.type,item:e.item})},_focusHandler:function(t){var n=this,i=e(S.eventTarget(t)).closest(Fe);i.hasClass(Te)||setTimeout(function(){n._moveHover([],i),i.children(".k-content")[0]&&i.parent().closest(".k-item").removeClass(Se)},200)},_animations:function(e){e&&"animation"in e&&!e.animation&&(e.animation={open:{effects:{}},close:{hide:!0,effects:{}}})},_dataSource:function(e){var t=this,n=e?e.dataSource:t.options.dataSource;n&&(n=E(n)?{data:n}:n,t._unbindDataSource(),n.fields||(n.fields=[{field:"uid"},{field:"text"},{field:"url"},{field:"cssClass"},{field:"spriteCssClass"},{field:"imageUrl"},{field:"imageAttr"},{field:"attr"},{field:"contentAttr"},{field:"content"},{field:"encoded"},{field:"items"},{field:"select"}]),t.dataSource=I.create(n),t._bindDataSource(),t.dataSource.fetch())},_bindDataSource:function(){this._refreshHandler=B(this.refresh,this),this._errorHandler=B(this._error,this),this.dataSource.bind(le,this._refreshHandler),this.dataSource.bind(ce,this._errorHandler)},_unbindDataSource:function(){var e=this.dataSource;e&&(e.unbind(le,this._refreshHandler),e.unbind(ce,this._errorHandler))},_error:function(){},findByUid:function(e){var t=this._overflowWrapper()||this.element;return t.find("["+S.attr("uid")+"="+e+"]")},refresh:function(t){var n=this,i=t.node,o=t.action,r=i?n.findByUid(i.uid):n.element,a=t.items,s=t.index,l=e.proxy(n._updateItem,n),c=e.proxy(n._removeItem,n);"add"==o?n._appendItems(a,s,r):"remove"==o?a.forEach(c):"itemchange"==o?a.forEach(l):"itemloaded"===o?n.append(t.items,r):this._initData(),this.trigger(qe,{item:r,dataItem:i})},_appendItems:function(e,t,n){var i=this,o=n.find(Pe).eq(t);o.length?i.insertBefore(e,o):i.append(e,n)},_removeItem:function(e){var t=this,n=t.findByUid(e.uid);t.remove(n)},_updateItem:function(e){var t=this,n=t.findByUid(e.uid),i=n.next(),o=e.parentNode();t.remove(n),i.length?t.insertBefore(e,i):t.append(e,o&&t.findByUid(o.uid))},_accessors:function(){var e,t,n,i=this,o=i.options,r=i.element;for(e in je)t=o[je[e]],n=r.attr(S.attr(e+"-field")),!t&&n&&(t=n),t||(t=e),E(t)||(t=[t]),o[je[e]]=t},_fieldAccessor:function(t){var n=this.options[je[t]]||[],i=n.length,o="(function(item) {";return 0===i?o+="return item['"+t+"'];":(o+="var levels = ["+e.map(n,function(e){return"function(d){ return "+S.expr(e)+"}"}).join(",")+"];",o+="if(item.level){return levels[Math.min(item.level(), "+i+"-1)](item);}else",o+="{return levels["+i+"-1](item)}"),o+="})"},_templates:function(){var e=this,t=e.options,n=B(e._fieldAccessor,e);t.template&&typeof t.template==Ue?t.template=H(t.template):t.template||(t.template=H("# var text = "+n("text")+"(data.item); ## if (typeof data.item.encoded != 'undefined' && data.item.encoded === false) {##= text ## } else { ##: text ## } #")),e.templates={content:H("#var contentHtml = "+n("content")+"(item);#<div #= contentCssAttributes(item.toJSON ? item.toJSON() : item) # tabindex='-1'>#= contentHtml || '' #</div>"),group:H("<ul class='#= groupCssClass(group) #'#= groupAttributes(group) # role='menu' aria-hidden='true'>#= renderItems(data) #</ul>"),itemWrapper:H("# var url = "+n("url")+"(item); ## var imageUrl = "+n("imageUrl")+"(item); ## var imgAttributes = "+n("imageAttr")+"(item);## var tag = url ? 'a' : 'span' #<#= tag # class='#= textClass(item) #' #if(url){#href='#= url #'#}#># if (imageUrl) { #<img #= imageCssAttributes(imgAttributes) # alt='' src='#= imageUrl #' /># } ##= sprite(item) ##= data.menu.options.template(data) ##= arrow(data) #</#= tag #>"),item:H("#var contentHtml = "+n("content")+"(item);#<li class='#= wrapperCssClass(group, item) #' #= itemCssAttributes(item.toJSON ? item.toJSON() : item) # role='menuitem' #=item.items ? \"aria-haspopup='true'\": \"\"##=item.enabled === false ? \"aria-disabled='true'\" : ''#"+S.attr("uid")+"='#= item.uid #' >#= itemWrapper(data) ##if (item.hasChildren || item.items) { ##= subGroup({ items: item.items, menu: menu, group: { expanded: item.expanded } }) ## } else if (item.content || item.contentUrl || contentHtml) { ##= renderContent(data) ## } #</li>"),scrollButton:H("<span class='k-button k-button-icon k-menu-scroll-button k-scroll-#= direction #' unselectable='on'><span class='k-icon k-i-arrow-60-#= direction #'></span></span>"),arrow:H("<span class='#= arrowClass(item, group) #'></span>"),sprite:H("# var spriteCssClass = "+n("spriteCssClass")+"(data); if(spriteCssClass) {#<span class='k-sprite #= spriteCssClass #'></span>#}#"),empty:H("")}},renderItem:function(e){var t,n,i=this;return e=z({menu:i,group:{}},e),t=i.templates.empty,n=e.item,i.templates.item(z(e,{sprite:i.templates.sprite,itemWrapper:i.templates.itemWrapper,renderContent:i.renderContent,arrow:n.items||n.content||n[i.options.dataContentField[0]]?i.templates.arrow:t,subGroup:i.renderGroup},Ge))},renderGroup:function(e){var t=this,n=t.templates||e.menu.templates;return n.group(z({renderItems:function(e){for(var t="",n=0,i=e.items,o=i?i.length:0,r=z({length:o},e.group);n<o;n++)t+=e.menu.renderItem(z(e,{group:r,item:z({index:n},i[n])}));return t}},e,Ge))},renderContent:function(e){return e.menu.templates.content(z(e,Ge))}}),Ye=$e.extend({init:function(t,n){var i=this;$e.fn.init.call(i,t,n),i._marker=S.guid().substring(0,8),i.target=e(i.options.target),i._popup(),i._wire()},_initOverflow:function(e){var t=this;e.scrollable&&!t._overflowWrapper()&&(t._openedPopups={},t._popupsWrapper=(t.element.parent().is(Ie)?t.element.parent():t.element).wrap("<div class='k-popups-wrapper "+e.orientation+"'></div>").parent(),"horizontal"==t.options.orientation&&C(t.element),e.appendTo&&e.appendTo.append(t._popupsWrapper),t._initialHeight=t.element[0].style.height,t._initialWidth=t.element[0].style.width)},options:{name:"ContextMenu",filter:null,showOn:"contextmenu",orientation:"vertical",alignToAnchor:!1,copyAnchorStyles:!0,target:"body"},events:[q,Q,ne,ie,ee],setOptions:function(t){var n=this;$e.fn.setOptions.call(n,t),n.target.off(n.showOn+W+n._marker,n._showProxy),n.userEvents&&n.userEvents.destroy(),n.target=e(n.options.target),t.orientation&&n.popup.wrapper[0]&&n.popup.element.unwrap(),n._wire(),$e.fn.setOptions.call(this,t)},destroy:function(){var e=this;e.target.off(e.options.showOn+W+e._marker),ke.off(S.support.mousedown+W+e._marker,e._closeProxy),e.userEvents&&e.userEvents.destroy(),$e.fn.destroy.call(e)},open:function(n,i){var r,a,s=this;return n=e(n)[0],o(s.element[0],e(n)[0])||s._itemHasChildren(e(n))?$e.fn.open.call(s,n):s._triggerEvent({item:s.element,type:q})===!1&&(s.popup.visible()&&s.options.filter&&(s.popup.close(!0),s.popup.element.kendoStop(!0)),i!==t?(r=s._overflowWrapper(),r&&(a=r.offset(),n-=a.left,i-=a.top),s.popup.wrapper.hide(),s._configurePopupScrolling(n,i),s.popup.open(n,i)):(s.popup.options.anchor=(n?n:s.popup.anchor)||s.target,s.popup.element.kendoStop(!0),s._configurePopupScrolling(),s.popup.open()),ke.off(s.popup.downEvent,s.popup._mousedownProxy),ke.on(S.support.mousedown+W+s._marker,s._closeProxy)),s},_configurePopupScrolling:function(e,n){var i=this,o=i.popup,r="horizontal"==i.options.orientation;i.options.scrollable&&(i._wrapPopupElement(o),o.element.parent().css({position:"",height:""}),o.element.css({visibility:"hidden",display:"",position:""}),r?i._setPopupWidth(o,isNaN(e)?t:{isFixed:!0,x:e,y:n}):i._setPopupHeight(o,isNaN(e)?t:{isFixed:!0,x:e,y:n}),o.element.css({visibility:"",display:"none",position:"absolute"}),i._initPopupScrollButtons(o,r,!0),o.element.siblings(Ve).hide())},_setPopupWidth:function(t,n){var i,o,r,a,s,l,c,d,u=t.element,h=u.add(u.parent(Ie));h.width(this._initialWidth||""),i=t._location(n),o=e(window).width(),r=i.width,a=Math.max(i.left,0),s=n?0:k(this._overflowWrapper()[0],"scrollLeft"),l=S.getShadows(u),c=o-l.left-l.right,d=c+s>r+a,d||h.css({overflow:"hidden",width:c-a+s+"px"})},close:function(){var t=this;o(t.element[0],e(arguments[0])[0])||t._itemHasChildren(arguments[0])?$e.fn.close.call(t,arguments[0]):t.popup.visible()&&t._triggerEvent({item:t.element,type:Q})===!1&&(t.popup.close(),ke.off(S.support.mousedown+W+t._marker,t._closeProxy),t.unbind(ee,t._closeTimeoutProxy))},_showHandler:function(t){var n,i=t,r=this,a=r.options,s=e(S.support.mobileOS?i.target:i.currentTarget);t.event&&(i=t.event,i.pageX=t.x.location,i.pageY=t.y.location),o(r.element[0],t.relatedTarget||t.target)||(r._eventOrigin=i,i.preventDefault(),i.stopImmediatePropagation(),r.element.find("."+Se).removeClass(Se),(a.filter&&s.is(a.filter)||!a.filter)&&(a.alignToAnchor?(r.popup.options.anchor=i.currentTarget,r.open(i.currentTarget)):(r.popup.options.anchor=i.currentTarget,r._targetChild?(n=r.target.offset(),r.open(i.pageX-n.left,i.pageY-n.top)):r.open(i.pageX,i.pageY))))},_closeHandler:function(t){var n,i=this,r=e(t.relatedTarget||t.target),a=r.closest(i.target.selector)[0]==i.target[0],s=r.closest(Pe),l=i._itemHasChildren(s),c=i._overflowWrapper(),d=o(i.element[0],r[0])||c&&o(c[0],r[0]);i._eventOrigin=t,n=3!==t.which,i.popup.visible()&&(n&&a||!a)&&(i.options.closeOnClick&&!l&&d||!d)&&(d?(this.unbind(ee,this._closeTimeoutProxy),i.bind(ee,i._closeTimeoutProxy)):i.close())},_wire:function(){var e=this,t=e.options,n=e.target;e._showProxy=B(e._showHandler,e),e._closeProxy=B(e._closeHandler,e),e._closeTimeoutProxy=B(e.close,e),n[0]&&(S.support.mobileOS&&"contextmenu"==t.showOn?(e.userEvents=new S.UserEvents(n,{filter:t.filter,allowSelection:!1}),n.on(t.showOn+W+e._marker,!1),e.userEvents.bind("hold",e._showProxy)):t.filter?n.on(t.showOn+W+e._marker,t.filter,e._showProxy):n.on(t.showOn+W+e._marker,e._showProxy))},_triggerEvent:function(n){var i=this,o=e(i.popup.options.anchor)[0],r=i._eventOrigin;return i._eventOrigin=t,i.trigger(n.type,z({type:n.type,item:n.item||this.element[0],target:o},r?{event:r}:{}))},_popup:function(){var t=this,n=t._overflowWrapper();t._triggerProxy=B(t._triggerEvent,t),t.popup=t.element.addClass("k-context-menu").kendoPopup({autosize:"horizontal"===t.options.orientation,anchor:t.target||"body",copyAnchorStyles:t.options.copyAnchorStyles,collision:t.options.popupCollision||"fit",animation:t.options.animation,activate:t._triggerProxy,deactivate:t._triggerProxy,appendTo:n||t.options.appendTo,close:n?function(t){e(m(t.sender.element,n)).each(function(e,t){var n=t.data(ye);n&&n.close(!0)})}:e.noop}).data(ye),t._targetChild=o(t.target[0],t.popup.element[0])}});T.plugin($e),T.plugin(Ye)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.columnmenu.min",["kendo.popup.min","kendo.filtermenu.min","kendo.menu.min"],e)}(function(){return function(e,t){function n(t){return e.trim(t).replace(/ /gi,"")}function i(e,t){var n,i,o,r={};for(n=0,i=e.length;n<i;n++)o=e[n],r[o[t]]=o;return r}function o(e){var t,n=[];for(t=0;t<e.length;t++)e[t].columns?n=n.concat(o(e[t].columns)):n.push(e[t]);return n}function r(e,t){return"["+s.attr(e)+"='"+(t||"").replace(/'/g,'"')+"']"}function a(e,t,n){e>0?t.insertAfter(n.children().eq(e-1)):n.prepend(t)}var s=window.kendo,l=s.ui,c=e.proxy,d=e.extend,u=e.grep,h=e.map,p=e.inArray,f="k-state-selected",g="asc",m="desc",v="change",_="init",b="open",w="select",k="kendoPopup",y="kendoFilterMenu",x="kendoMenu",C=".kendoColumnMenu",S=l.Widget,T=S.extend({init:function(t,n){var i,o=this;S.fn.init.call(o,t,n),t=o.element,n=o.options,o.owner=n.owner,o.dataSource=n.dataSource,o.field=t.attr(s.attr("field")),o.title=t.attr(s.attr("title")),i=t.find(".k-header-column-menu"),i[0]||(i=t.addClass("k-with-icon").prepend('<a class="k-header-column-menu" href="#" title="'+n.messages.settings+'" aria-label="'+n.messages.settings+'"><span class="k-icon k-i-more-vertical"></span></a>').find(".k-header-column-menu")),o.link=i.attr("tabindex",-1).on("click"+C,c(o._click,o)),o.wrapper=e('<div class="k-column-menu"/>'),o._refreshHandler=c(o.refresh,o),o.dataSource.bind(v,o._refreshHandler)},_init:function(){var e=this;e.pane=e.options.pane,e.pane&&(e._isMobile=!0),e._isMobile?e._createMobileMenu():e._createMenu(),e.owner._muteAngularRebind(function(){e._angularItems("compile")}),e._sort(),e._columns(),e._filter(),e._lockColumns(),e.trigger(_,{field:e.field,container:e.wrapper})},events:[_,b,"sort","filtering"],options:{name:"ColumnMenu",messages:{sortAscending:"Sort Ascending",sortDescending:"Sort Descending",filter:"Filter",column:"Column",columns:"Columns",columnVisibility:"Column Visibility",clear:"Clear",cancel:"Cancel",done:"Done",settings:"Edit Column Settings",lock:"Lock",unlock:"Unlock"},filter:"",columns:!0,sortable:!0,filterable:!0,animations:{left:"slide"}},_createMenu:function(){var e=this,t=e.options;e.wrapper.html(s.template(D)({uid:s.guid(),ns:s.ns,messages:t.messages,sortable:t.sortable,filterable:t.filterable,columns:e._ownerColumns(),showColumns:t.columns,lockedColumns:t.lockedColumns})),e.popup=e.wrapper[k]({anchor:e.link,open:c(e._open,e),activate:c(e._activate,e),deactivate:c(e._deactivate,e),close:function(){e.menu._closing=!0,e.options.closeCallback&&e.options.closeCallback(e.element)}}).data(k),e.menu=e.wrapper.children()[x]({orientation:"vertical",closeOnClick:!1,open:function(){e._updateMenuItems()}}).data(x)},_deactivate:function(){this.menu._closing=!1},_createMobileMenu:function(){var e,t=this,n=t.options,i=s.template(A)({ns:s.ns,field:t.field,title:t.title||t.field,messages:n.messages,sortable:n.sortable,filterable:n.filterable,columns:t._ownerColumns(),showColumns:n.columns,lockedColumns:n.lockedColumns});t.view=t.pane.append(i),t.view.state={columns:{}},t.wrapper=t.view.element.find(".k-column-menu"),t.menu=new E(t.wrapper.children(),{pane:t.pane,columnMenu:t}),t.menu.element.on("transitionend"+C,function(e){e.stopPropagation()}),e=t.view.wrapper&&t.view.wrapper[0]?t.view.wrapper:t.view.element,e.on("click",".k-header-done",function(e){e.preventDefault(),t.menu._applyChanges(),t.menu._cancelChanges(!1),t.close()}),e.on("click",".k-header-cancel",function(e){e.preventDefault(),t.menu._cancelChanges(!0),t.close()}),t.view.bind("showStart",function(){var e=t.view||{columns:{}};t.options.lockedColumns&&t._updateLockedColumns(),e.element.find(".k-sort-asc.k-state-selected").length?e.state.initialSort="asc":e.element.find(".k-sort-desc.k-state-selected").length&&(e.state.initialSort="desc")})},_angularItems:function(t){var n=this;n.angular(t,function(){var t=n.wrapper.find(".k-columns-item input["+s.attr("field")+"]").map(function(){return e(this).closest("li")}),i=h(n._ownerColumns(),function(e){return{column:e._originalObject}});return{elements:t,data:i}})},destroy:function(){var e=this;e._angularItems("cleanup"),S.fn.destroy.call(e),e.filterMenu&&e.filterMenu.destroy(),e._refreshHandler&&e.dataSource.unbind(v,e._refreshHandler),e.options.columns&&e.owner&&(e._updateColumnsMenuHandler&&(e.owner.unbind("columnShow",e._updateColumnsMenuHandler),e.owner.unbind("columnHide",e._updateColumnsMenuHandler)),e._updateColumnsLockedStateHandler&&(e.owner.unbind("columnLock",e._updateColumnsLockedStateHandler),e.owner.unbind("columnUnlock",e._updateColumnsLockedStateHandler))),e.menu&&(e.menu.element.off(C),e.menu.destroy()),e.wrapper.off(C),e.popup&&e.popup.destroy(),e.view&&e.view.purge(),e.link.off(C),e.owner=null,e.wrapper=null,e.element=null},close:function(){this.menu.close(),this.popup&&(this.popup.close(),this.popup.element.off("keydown"+C))},_click:function(e){var t,n=this;e.preventDefault(),e.stopPropagation(),t=this.options,t.filter&&this.element.is(!t.filter)||(this.popup||this.pane?n._updateMenuItems():this._init(),this._isMobile?this.pane.navigate(this.view,this.options.animations.left):this.popup.toggle())},_updateMenuItems:function(){var e=this;e._setMenuItemsVisibility(),e._reorderMenuItems()},_setMenuItemsVisibility:function(){var e=this;e._eachRenderedMenuItem(function(e,t,n){t.matchesMedia===!1?n.hide():n.show()})},_reorderMenuItems:function(){var e=this;e._eachRenderedMenuItem(function(e,t,n,i){n[0]&&n.index()!==e&&a(e,n,i)})},_eachRenderedMenuItem:function(t){var i,a,s,l,c,d,h=this,p=u(o(h.owner.columns),function(e){var t=!0,i=n(e.title||"");return e.menu!==!1&&(e.field||i.length)||(t=!1),t}).map(function(e){return{field:e.field,title:e.title,matchesMedia:e.matchesMedia}}),f=h._isMobile&&h.view?e(h.view.element).find(".k-columns-item").children("ul"):e(h.wrapper).find(".k-menu-group").first(),g=function(t,n,i){return t.find(n).filter(function(){return m(p[i],e(this).text())})},m=function(e,t){return v(e,t)},v=function(e,t){return e.title?t===e.title:t===e.field},_=function(e){return u(p,function(t){return JSON.stringify(p[e])==JSON.stringify(t)})};for(d=0;d<p.length;d++)c=p[d],a=_(d),s=e.inArray(c,a),i=g(f,"span",d),i=this._isMobile?i.next():i,l=c.field?c.field:c.title,i=i.find(r("field",l)).closest("li").eq(s),t(d,c,i,f)},_open:function(){var t=this;e(".k-column-menu").not(t.wrapper).each(function(){e(this).data(k).close()}),t.popup.element.on("keydown"+C,function(e){e.keyCode==s.keys.ESC&&t.close()}),t.options.lockedColumns&&t._updateLockedColumns()},_activate:function(){this.menu.element.focus(),this.trigger(b,{field:this.field,container:this.wrapper})},_ownerColumns:function(){var e=o(this.owner.columns),t=u(e,function(e){var t=!0,i=n(e.title||"");return e.menu!==!1&&(e.field||i.length)||(t=!1),t});return h(t,function(t){return{originalField:t.field,field:t.field||t.title,title:t.title||t.field,hidden:t.hidden,matchesMedia:t.matchesMedia,index:p(t,e),locked:!!t.locked,_originalObject:t}})},_sort:function(){var t=this;t.options.sortable&&(t.refresh(),t.menu.bind(w,function(n){var i,o=e(n.item);o.hasClass("k-sort-asc")?i=g:o.hasClass("k-sort-desc")&&(i=m),i&&(o.parent().find(".k-sort-"+(i==g?m:g)).removeClass(f),t._sortDataSource(o,i),t._isMobile||t.close())}))},_sortDataSource:function(e,n){var i,o,r=this,a=r.options.sortable,s=null===a.compare?t:a.compare,l=r.dataSource,c=l.sort()||[],d=e.hasClass(f)&&a&&a.allowUnsort!==!1;if(n=d?t:n,!r.trigger("sort",{sort:{field:r.field,dir:n,compare:s}})){if(d?e.removeClass(f):e.addClass(f),"multiple"===a.mode){for(i=0,o=c.length;i<o;i++)if(c[i].field===r.field){c.splice(i,1);break}c.push({field:r.field,dir:n,compare:s})}else c=[{field:r.field,dir:n,compare:s}];l.sort(c)}},_columns:function(){var t=this;t.options.columns&&(t._updateColumnsMenu(),t._updateColumnsMenuHandler=c(t._updateColumnsMenu,t),t.owner.bind(["columnHide","columnShow"],t._updateColumnsMenuHandler),t._updateColumnsLockedStateHandler=c(t._updateColumnsLockedState,t),t.owner.bind(["columnUnlock","columnLock"],t._updateColumnsLockedStateHandler),t.menu.bind(w,function(i){var r,a,s=e(i.item),l=u(o(t.owner.columns),function(e){var t=!0,i=n(e.title||"");return e.menu!==!1&&(e.field||i.length)||(t=!1),t});t._isMobile&&i.preventDefault(),s.parent().closest("li.k-columns-item")[0]&&(r=s.find(":checkbox"),r.attr("disabled")||(a=l[s.index()],a.hidden===!0?t.owner.showColumn(a):t.owner.hideColumn(a)))}))},_updateColumnsMenu:function(){var e,t,i,r,a,l,c,d=s.attr("field"),h=s.attr("locked"),p=u(o(this.owner.columns),function(e){var t=!0,i=n(e.title||"");return e.menu!==!1&&(e.field||i.length)||(t=!1),t}),f=u(this._ownerColumns(),function(e){return!e.hidden&&e.matchesMedia!==!1}),g=u(f,function(e){return e.originalField}),m=u(g,function(e){return e.locked===!0}).length,v=u(g,function(e){return e.locked!==!0}).length,_=u(this.owner.columns,function(e){return e.menu===!1}),b=u(_,function(e){return e.hidden});for(this.wrapper.find("[role='menuitemcheckbox']").attr("aria-checked",!1),l=this.wrapper.find(".k-columns-item input["+d+"]").prop("disabled",!1).prop("checked",!1),e=0,t=l.length;e<t;e++)i=l.eq(e),a="true"===i.attr(h),r=!1,c=i.data("kendoSwitch"),r=!p[e].hidden&&p[e].matchesMedia!==!1,i.prop("checked",r),c&&(c.enable(!0),c.check(r)),i.closest("[role='menuitemcheckbox']").attr("aria-checked",r),r&&(1==m&&a&&(i.prop("disabled",!0),c&&c.enable(!1)),0!==_.length&&_.length!==b.length||1!=v||a||(i.prop("disabled",!0),c&&c.enable(!1)))},_updateColumnsLockedState:function(){var e,t,n,o,r=s.attr("field"),a=s.attr("locked"),l=i(this._ownerColumns(),"field"),c=this.wrapper.find(".k-columns-item input[type=checkbox]");for(e=0,t=c.length;e<t;e++)n=c.eq(e),o=l[n.attr(r)],o&&n.attr(a,o.locked);this._updateColumnsMenu()},_filter:function(){var t=this,n=y,i=t.options;i.filterable!==!1&&(i.filterable.multi&&(n="kendoFilterMultiCheck",i.filterable.dataSource&&(i.filterable.checkSource=i.filterable.dataSource,delete i.filterable.dataSource)),t.filterMenu=t.wrapper.find(".k-filterable")[n](d(!0,{},{appendToElement:!0,dataSource:i.dataSource,values:i.values,field:t.field,title:t.title,change:function(e){t.trigger("filtering",{filter:e.filter,field:e.field})&&e.preventDefault()}},i.filterable)).data(n),t._isMobile&&t.menu.bind(w,function(n){var i=e(n.item);i.hasClass("k-filter-item")&&t.pane.navigate(t.filterMenu.view,t.options.animations.left)}))},_lockColumns:function(){var t=this;t.menu.bind(w,function(n){var i=e(n.item);i.hasClass("k-lock")?(t.owner.lockColumn(t.field),t._isMobile||t.close()):i.hasClass("k-unlock")&&(t.owner.unlockColumn(t.field),t._isMobile||t.close())})},_updateLockedColumns:function(){var e,t,n,i,o=this.field,r=this.owner.columns,a=u(r,function(e){return e.field==o||e.title==o})[0];a&&(e=a.locked===!0,t=u(r,function(t){return!t.hidden&&(t.locked&&e||!t.locked&&!e)}).length,n=this.wrapper.find(".k-lock").removeClass("k-state-disabled"),i=this.wrapper.find(".k-unlock").removeClass("k-state-disabled"),(e||1==t)&&n.addClass("k-state-disabled"),e&&1!=t||i.addClass("k-state-disabled"),this._updateColumnsLockedState())},refresh:function(){var e,t,n,i=this,o=i.options.dataSource.sort()||[],r=i.field;for(i.wrapper.find(".k-sort-asc, .k-sort-desc").removeClass(f),t=0,n=o.length;t<n;t++)e=o[t],r==e.field&&i.wrapper.find(".k-sort-"+e.dir).addClass(f);i.link[i._filterExist(i.dataSource.filter())?"addClass":"removeClass"]("k-state-active")},_filterExist:function(e){var t,n,i,o=!1;if(e){for(e=e.filters,n=0,i=e.length;n<i;n++)t=e[n],t.field==this.field?o=!0:t.filters&&(o=o||this._filterExist(t));return o}}}),D='<ul id="#=uid#">#if(sortable){#<li class="k-item k-sort-asc"><span class="k-link"><span class="k-icon k-i-sort-asc-sm"></span>${messages.sortAscending}</span></li><li class="k-item k-sort-desc"><span class="k-link"><span class="k-icon k-i-sort-desc-sm"></span>${messages.sortDescending}</span></li>#if(showColumns || filterable){#<li class="k-separator" role="presentation"></li>#}##}##if(showColumns){#<li class="k-item k-columns-item" aria-haspopup="true"><span class="k-link"><span class="k-icon k-i-columns"></span>${messages.columns}</span><ul>#for (var idx = 0; idx < columns.length; idx++) {#<li role="menuitemcheckbox" aria-checked="false" #=columns[idx].matchesMedia === false ? "style=\'display:none;\'" : ""#><input type="checkbox" title="#=columns[idx].title#" data-#=ns#field="#=columns[idx].field.replace(/"/g,"&\\#34;")#" data-#=ns#index="#=columns[idx].index#" data-#=ns#locked="#=columns[idx].locked#"/>#=columns[idx].title#</li>#}#</ul></li>#if(filterable || lockedColumns){#<li class="k-separator" role="presentation"></li>#}##}##if(filterable){#<li class="k-item k-filter-item" aria-haspopup="true"><span class="k-link"><span class="k-icon k-i-filter"></span>${messages.filter}</span><ul><li><div class="k-filterable"></div></li></ul></li>#if(lockedColumns){#<li class="k-separator" role="presentation"></li>#}##}##if(lockedColumns){#<li class="k-item k-lock"><span class="k-link"><span class="k-icon k-i-lock"></span>${messages.lock}</span></li><li class="k-item k-unlock"><span class="k-link"><span class="k-icon k-i-unlock"></span>${messages.unlock}</span></li>#}#</ul>',A='<div data-#=ns#role="view" class="k-grid-column-menu"><div data-#=ns#role="header" class="k-header"><a href="\\#" class="k-header-cancel k-link" title="#=messages.cancel#" aria-label="#=messages.cancel#"><span class="k-icon k-i-arrow-chevron-left"></span></a>${messages.settings}<a href="\\#" class="k-header-done k-link" title="#=messages.done#" aria-label="#=messages.done#"><span class="k-icon k-i-check"></span></a></div><div class="k-column-menu k-mobile-list"><ul><li><span class="k-list-title">#=messages.column#: ${title}</span><ul>#if(sortable){#<li id="#=kendo.guid()#" class="k-item k-sort-asc"><span class="k-link"><span class="k-icon k-i-sort-asc-sm"></span><span class="k-item-title">${messages.sortAscending}</span></span></li><li id="#=kendo.guid()#" class="k-item k-sort-desc"><span class="k-link"><span class="k-icon k-i-sort-desc-sm"></span><span class="k-item-title">${messages.sortDescending}</span></span></li>#}##if(lockedColumns){#<li id="#=kendo.guid()#" class="k-item k-lock"><span class="k-link"><span class="k-icon k-i-lock"></span><span class="k-item-title">${messages.lock}</span></span></li><li id="#=kendo.guid()#" class="k-item k-unlock"><span class="k-link"><span class="k-icon k-i-unlock"></span><span class="k-item-title">${messages.unlock}</span></span></li>#}##if(filterable){#<li id="#=kendo.guid()#" class="k-item k-filter-item"><span class="k-link k-filterable"><span class="k-icon k-i-filter"></span><span class="k-item-title">${messages.filter}</span></span></li>#}#</ul></li>#if(showColumns){#<li class="k-columns-item"><span class="k-list-title">${messages.columnVisibility}</span><ul>#for (var idx = 0; idx < columns.length; idx++) {#<li id="#=kendo.guid()#" class="k-item"><span class="k-item-title">#=columns[idx].title#</span><input type="checkbox" title="#=columns[idx].title#" data-#=ns#field="#=columns[idx].field.replace(/"/g,"&\\#34;")#" data-#=ns#index="#=columns[idx].index#" data-#=ns#locked="#=columns[idx].locked#"/></li>#}#</ul></li>#}#<li class="k-item k-clear-wrap"><span class="k-label k-clear" title="#=messages.clear#" aria-label="#=messages.clear#">#=messages.clear#</span></li></ul></div></div>',E=S.extend({init:function(e,t){var n=this;S.fn.init.call(n,e,t),n._createCheckBoxes(),n.element.on("click"+C,"li.k-item:not(.k-separator):not(.k-state-disabled):not(:has(.k-switch))","_click")},events:[w],_click:function(n){var i=this;return e(n.target).is("[type=checkbox]")||n.preventDefault(),e(n.target).hasClass("k-clear")?(i._cancelChanges(!0),t):e(n.target).hasClass("k-filterable")?(i._cancelChanges(!0),i.trigger(w,{item:n.currentTarget}),t):(i._updateSelectedItems(n.currentTarget),t)},_updateSelectedItems:function(t){var n,i,o,r=this,a=e(t),s=r.options.columnMenu.view.state||{columns:{}},l=a.prop("id");a.hasClass("k-filter-item")||(s[l]=!s[l],(a.hasClass("k-sort-asc")||a.hasClass("k-sort-desc"))&&(a.hasClass("k-sort-asc")?(n="asc",i=r.element.find(".k-sort-desc")):(n="desc",i=r.element.find(".k-sort-asc")),o=i.prop("id"),n!==s.initialSort||a.hasClass("k-state-selected")||(s[l]=!1),s[o]&&(s[o]=!1),i.removeClass(f)),a.hasClass(f)?a.removeClass(f):a.addClass(f))},_cancelChanges:function(e){var t,n,i,o,r=this,a=r.options.columnMenu,s=a.view,l=s.state||{columns:{}},c=l.columns;if(r.element.find("."+f).removeClass(f),a.refresh(),e){t=[];for(n in c)c.hasOwnProperty(n)&&c[n]===!0&&(i=s.element.find("#"+n),t.push(i[0]));for(o=t.length-1;o>=0;o--)r.trigger(w,{item:t[o]});a.options.lockedColumns&&a._updateLockedColumns()}r.options.columnMenu.view.state={columns:{}}},_applyChanges:function(){var e,t,n=this,i=n.options.columnMenu.view,o=i.state||{columns:{}};for(e in o)o.hasOwnProperty(e)&&"initialSort"!==e&&"columns"!==e&&o[e]===!0&&(t=i.element.find("#"+e),t.hasClass(f)?t.removeClass(f):t.addClass(f),n.trigger(w,{item:t[0]}))},_createCheckBoxes:function(){var e=this;e.element.find(".k-columns-item").find("[type='checkbox']").kendoSwitch({messages:{checked:"",unchecked:""},change:function(t){var n=t.sender.element.closest(".k-item"),i=e.options.columnMenu.view.state||{columns:{}},o=n.prop("id");i.columns[o]=!i.columns[o],e.trigger(w,{item:n})}})},_destroyCheckBoxes:function(){var e,t,n=this,i=n.element.find(".k-columns-item").find("[type='checkbox']");for(t=0;t<i.length;t++)e=i.eq(t).data("kendoSwitch"),e&&e.destroy()},close:function(){this.options.pane.navigate("")},destroy:function(){var e=this;S.fn.destroy.call(e),e.element.off(C),e._destroyCheckBoxes()}});l.plugin(T)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.columnsorter.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(n){var o,r=n.find("tr:not(.k-filter-row)"),a=function(){var t=e(this);return!t.hasClass("k-group-cell")&&!t.hasClass("k-hierarchy-cell")},s=e();return r.length>1&&(s=r.find("th:visible").filter(a).filter(function(){return this.rowSpan>1})),s=s.add(r.last().find("th:visible").filter(a)),o=i.attr("index"),s.sort(function(n,i){var r,a;return n=e(n),i=e(i),r=n.attr(o),a=i.attr(o),r===t&&(r=e(n).index()),a===t&&(a=e(i).index()),r=parseInt(r,10),a=parseInt(a,10),r>a?1:r<a?-1:0}),s}var i=window.kendo,o=i.ui,r=o.Widget,a="dir",s="asc",l="single",c="field",d="desc",u=".kendoColumnSorter",h=".k-link",p="aria-sort",f=e.proxy,g=r.extend({init:function(e,t){var n,i=this;r.fn.init.call(i,e,t),i._refreshHandler=f(i.refresh,i),i.dataSource=i.options.dataSource.bind("change",i._refreshHandler),i.directions=i.options.initialDirection===s?[s,d]:[d,s],n=i.element.find(h),n[0]||(n=i.element.wrapInner('<a class="k-link" href="#"/>').find(h)),i.link=n,i.element.on("click"+u,f(i._click,i))},options:{name:"ColumnSorter",mode:l,allowUnsort:!0,compare:null,filter:"",initialDirection:s,showIndexes:!1},events:["change"],destroy:function(){var e=this;r.fn.destroy.call(e),e.element.off(u),e.dataSource.unbind("change",e._refreshHandler),e._refreshHandler=e.element=e.link=e.dataSource=null},refresh:function(){var o,r,l,u,h,f,g,m,v=this,_=v.dataSource.sort()||[],b=v.element,w=b.attr(i.attr(c)); +for(b.removeAttr(i.attr(a)),b.removeAttr(p),o=0,r=_.length;o<r;o++)l=_[o],w==l.field&&(b.attr(i.attr(a),l.dir),f=o+1);u=b.attr(i.attr(a)),b.is("th")&&(m=b.closest("table"),m.parent().hasClass("k-grid-header-wrap")?m=m.closest(".k-grid").find(".k-grid-content > table"):m.parent().hasClass("k-grid-header-locked")?m=m.closest(".k-grid").find(".k-grid-content-locked > table"):m.parent().hasClass("k-grid")||(m=null),m&&(b.attr(i.attr("index"))?(g=n(b.closest(".k-grid-header")),h=g.index(b)):h=b.parent().children(":visible").index(b),b.toggleClass("k-sorted",u!==t),m.children("colgroup").children(":not(.k-group-col):not(.k-hierarchy-col)").eq(h).toggleClass("k-sorted",u!==t))),b.find(".k-i-sort-asc-sm,.k-i-sort-desc-sm,.k-sort-order").remove(),u===s?(e('<span class="k-icon k-i-sort-asc-sm" />').appendTo(v.link),b.attr(p,"ascending")):u===d&&(e('<span class="k-icon k-i-sort-desc-sm" />').appendTo(v.link),b.attr(p,"descending")),v.options.showIndexes&&_.length>1&&f&&e('<span class="k-sort-order" />').html(f).appendTo(v.link)},_toggleSortDirection:function(e){var n=this.directions;return e===n[n.length-1]&&this.options.allowUnsort?t:n[0]===e?n[1]:n[0]},_click:function(e){var n,o,r=this,s=r.element,d=s.attr(i.attr(c)),u=s.attr(i.attr(a)),h=r.options,p=null===r.options.compare?t:r.options.compare,f=r.dataSource.sort()||[];if(e.preventDefault(),(!h.filter||s.is(h.filter))&&(u=this._toggleSortDirection(u),!this.trigger("change",{sort:{field:d,dir:u,compare:p}}))){if(h.mode===l)f=[{field:d,dir:u,compare:p}];else if("multiple"===h.mode){for(n=0,o=f.length;n<o;n++)if(f[n].field===d){f.splice(n,1);break}f.push({field:d,dir:u,compare:p})}this.dataSource.options.endless&&(this.dataSource.options.endless=null,s.closest(".k-grid").getKendoGrid()._endlessPageSize=r.dataSource.options.pageSize,this.dataSource.pageSize(r.dataSource.options.pageSize)),this.dataSource.sort(f)}}});o.plugin(g)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.editable.min",["kendo.datepicker.min","kendo.numerictextbox.min","kendo.validator.min","kendo.binder.min"],e)}(function(){return function(e,t){function n(t){return t=null!=t?t:"",t.type||e.type(t)||"string"}function i(t){t.find(":input:not(:button, .k-combobox .k-input, ["+l.attr("role")+"=listbox], ["+l.attr("role")+"=upload], ["+l.attr("skip")+"], [type=file])").each(function(){var t=l.attr("bind"),n=this.getAttribute(t)||"",i="checkbox"===this.type||"radio"===this.type?"checked:":"value:",o=this.name;n.indexOf(i)===-1&&o&&(n+=(n.length?",":"")+i+o,e(this).attr(t,n))})}function o(e){var t,i,o,r,a,s=(e.model.fields||e.model)[e.field],c=n(s),d=s?s.validation:{},u=l.attr("type"),h=l.attr("bind"),v={name:e.field,title:e.title?e.title:e.field};for(t in d)i=d[t],g(t,x)>=0?v[u]=t:p(i)||(o=l.getCulture(),"number"==typeof i&&o.name.length?(r=o.numberFormat,a=(""+i).replace(m,r[m]),v[t]=a):v[t]=f(i)?i.value||t:i),v[l.attr(t+"-msg")]=i.message,v.autocomplete=_;return g(c,x)>=0&&(v[u]=c),v[h]=("boolean"===c?"checked:":"value:")+e.field,v}function r(e,t){var n=e.attr("id");return n&&(t.id=n,e.removeAttr("id")),t}function a(e){var t,n,i,o,r,a;if(e&&e.length)for(a=[],t=0,n=e.length;t<n;t++)i=e[t],r=i.text||i.value||i,o=null==i.value?i.text||i:i.value,a[t]={text:r,value:o};return a}function s(e,t){var n,i,o=e?e.validation||{}:{};for(n in o)i=o[n],f(i)&&i.value&&(i=i.value),p(i)&&(t[n]=i)}var l=window.kendo,c=l.ui,d=c.Widget,u=e.extend,h=l.support.browser.msie&&l.support.browser.version<9,p=l.isFunction,f=e.isPlainObject,g=e.inArray,m=".",v=l.support,_=v.browser.chrome?"disabled":"off",b=/("|\%|'|\[|\]|\$|\.|\,|\:|\;|\+|\*|\&|\!|\#|\(|\)|<|>|\=|\?|\@|\^|\{|\}|\~|\/|\||`)/g,w='<div class="k-widget k-tooltip k-tooltip-validation" style="margin:0.5em"><span class="k-icon k-i-warning"> </span>#=message#<div class="k-callout k-callout-n"></div></div>',k="change",y="equalSet",x=["url","email","number","date","boolean"],C={number:function(t,n){var i=o(n);e('<input type="text"/>').attr(i).appendTo(t).kendoNumericTextBox({format:n.format}),e("<span "+l.attr("for")+'="'+n.field+'" class="k-invalid-msg"/>').hide().appendTo(t)},date:function(t,n){var i=o(n),r=n.format;r&&(r=l._extractFormat(r)),i[l.attr("format")]=r,e('<input type="text"/>').attr(i).appendTo(t).kendoDatePicker({format:n.format}),e("<span "+l.attr("for")+'="'+n.field+'" class="k-invalid-msg"/>').hide().appendTo(t)},string:function(t,n){var i=o(n);e('<input type="text" class="k-textbox"/>').attr(i).appendTo(t)},"boolean":function(t,n){var i=o(n);e('<input type="checkbox" />').attr(i).appendTo(t)},values:function(t,n){var i=o(n),r=l.stringify(a(n.values));e("<select "+l.attr("text-field")+'="text"'+l.attr("value-field")+'="value"'+l.attr("source")+"='"+(r?r.replace(/\'/g,"'"):r)+"'"+l.attr("role")+'="dropdownlist"/>').attr(i).appendTo(t),e("<span "+l.attr("for")+'="'+n.field+'" class="k-invalid-msg"/>').hide().appendTo(t)}},S={number:function(t,n){var i=o(n);i=r(t,i),e('<input type="number"/>').attr(i).appendTo(t)},date:function(t,n){var i=o(n);i=r(t,i),e('<input type="date"/>').attr(i).appendTo(t)},string:function(t,n){var i=o(n);i=r(t,i),e('<input type="text" />').attr(i).appendTo(t)},"boolean":function(t,n){var i=o(n);i=r(t,i),e('<input type="checkbox" />').attr(i).appendTo(t)},values:function(t,n){var i,a=o(n),s=n.values,l=e("<select />");a=r(t,a);for(i in s)e('<option value="'+s[i].value+'">'+s[i].text+"</option>").appendTo(l);l.attr(a).appendTo(t)}},T=d.extend({init:function(t,n){var i=this;n.target&&(n.$angular=n.target.options.$angular,n.target.pane&&(i._isMobile=!0)),d.fn.init.call(i,t,n),i._validateProxy=e.proxy(i._validate,i),i.refresh()},events:[k],options:{name:"Editable",editors:C,mobileEditors:S,clearContainer:!0,errorTemplate:w,skipFocus:!1},editor:function(e,t){var i=this,o=i._isMobile?S:i.options.editors,r=f(e),a=r?e.field:e,s=i.options.model||{},c=r&&e.values,d=c?"values":n(t),h=r&&e.editor,p=h?e.editor:o[d],g=i.element.find("["+l.attr("container-for")+"="+a.replace(b,"\\$1")+"]");p=p?p:o.string,h&&"string"==typeof e.editor&&(p=function(t){t.append(e.editor)}),g=g.length?g:i.element,p(g,u(!0,{},r?e:{field:a},{model:s}))},_validate:function(t){var n,i=this,o=t.value,r=i._validationEventInProgress,a={},s=l.attr("bind"),c=t.field.replace(b,"\\$1"),d=RegExp("(value|checked)\\s*:\\s*"+c+"\\s*(,|$)");a[t.field]=t.value,n=e(":input["+s+'*="'+c+'"]',i.element).filter("["+l.attr("validate")+"!='false']").filter(function(){return d.test(e(this).attr(s))}),n.length>1&&(n=n.filter(function(){var t=e(this);return!t.is(":radio")||t.val()==o}));try{i._validationEventInProgress=!0,(!i.validatable.validateInput(n)||!r&&i.trigger(k,{values:a}))&&t.preventDefault()}finally{i._validationEventInProgress=!1}},end:function(){return this.validatable.validate()},destroy:function(){var e=this;e.angular("cleanup",function(){return{elements:e.element}}),d.fn.destroy.call(e),e.options.model.unbind("set",e._validateProxy),e.options.model.unbind(y,e._validateProxy),l.unbind(e.element),e.validatable&&e.validatable.destroy(),l.destroy(e.element),e.element.removeData("kendoValidator"),e.element.is("["+l.attr("role")+"=editable]")&&e.element.removeAttr(l.attr("role"))},refresh:function(){var n,o,r,a,c,d,u,p,g=this,m=g.options.fields||[],v=g.options.clearContainer?g.element.empty():g.element,_=g.options.model||{},b={};for(e.isArray(m)||(m=[m]),n=0,o=m.length;n<o;n++)r=m[n],a=f(r),c=a?r.field:r,d=(_.fields||_)[c],s(d,b),g.editor(r,d);if(g.options.target&&g.angular("compile",function(){return{elements:v,data:v.map(function(){return{dataItem:_}})}}),!o){u=_.fields||_;for(c in u)s(u[c],b)}i(v),g.validatable&&g.validatable.destroy(),l.bind(v,g.options.model),g.options.model.unbind("set",g._validateProxy),g.options.model.bind("set",g._validateProxy),g.options.model.unbind(y,g._validateProxy),g.options.model.bind(y,g._validateProxy),g.validatable=new l.ui.Validator(v,{validateOnBlur:!1,errorTemplate:g.options.errorTemplate||t,rules:b}),g.options.skipFocus||(p=v.find(":kendoFocusable").eq(0).focus(),h&&p.focus())}});c.plugin(T)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.window.min",["kendo.draganddrop.min","kendo.popup.min"],e)}(function(){return function(e,t){function n(e){return t!==e}function i(e,t){return parseInt(e.css(t),10)||0}function o(e,t,n){var i;return i=e&&isNaN(e)&&(""+e).indexOf("px")<0?e:Math.max(Math.min(parseInt(e,10),n===1/0?n:parseInt(n,10)),t===-(1/0)?t:parseInt(t,10))}function r(){return!this.type||this.type.toLowerCase().indexOf("script")>=0}function a(t){for(var n,i,o={top:t.offsetTop,left:t.offsetLeft},r=t.offsetParent;r;)o.top+=r.offsetTop,o.left+=r.offsetLeft,n=e(r).css("overflowX"),i=e(r).css("overflowY"),"auto"!==i&&"scroll"!==i||(o.top-=r.scrollTop),"auto"!==n&&"scroll"!==n||(o.left-=r.scrollLeft),r=r.offsetParent;return o}function s(e){var t=this;t.owner=e,t._preventDragging=!1,t._draggable=new h(e.wrapper,{filter:">"+E,group:e.wrapper.id+"-resizing",dragstart:v(t.dragstart,t),drag:v(t.drag,t),dragend:v(t.dragend,t)}),t._draggable.userEvents.bind("press",v(t.addOverlay,t)),t._draggable.userEvents.bind("release",v(t.removeOverlay,t))}function l(e,t){var n=this;n.owner=e,n._preventDragging=!1,n._draggable=new h(e.wrapper,{filter:t,group:e.wrapper.id+"-moving",dragstart:v(n.dragstart,n),drag:v(n.drag,n),dragend:v(n.dragend,n),dragcancel:v(n.dragcancel,n)}),n._draggable.userEvents.stopPropagation=!1}var c=window.kendo,d=c.ui.Widget,u=c.ui.Popup.TabKeyTrap,h=c.ui.Draggable,p=e.isPlainObject,f=c._activeElement,g=c._outerWidth,m=c._outerHeight,v=e.proxy,_=e.extend,b=e.each,w=c.template,k="body",y=".kendoWindow",x=".kendoWindowModal",C=".k-window",S=".k-window-title",T=S+"bar",D=".k-window-content",A=".k-dialog-content",E=".k-resize-handle",I=".k-overlay",M="k-content-frame",F="k-i-loading",R="k-state-hover",P="k-state-focused",z="k-window-maximized",B=":visible",L="hidden",H="cursor",N="open",O="activate",V="deactivate",W="close",U="refresh",q="minimize",j="maximize",G="resizeStart",$="resize",Y="resizeEnd",K="dragstart",Q="dragend",X="error",J="overflow",Z="original-overflow-rule",ee="zIndex",te=".k-window-actions .k-i-window-minimize,.k-window-actions .k-i-window-maximize",ne=".k-i-pin",ie=".k-i-unpin",oe=ne+","+ie,re=".k-window-titlebar .k-window-action",ae=".k-window-titlebar .k-i-refresh",se="WindowEventsHandled",le=/^0[a-z]*$/i,ce=c.isLocalUrl,de={small:"k-window-sm",medium:"k-window-md",large:"k-window-lg"},ue=d.extend({init:function(i,o){var a,s,l,h,f,g,m,_,b,w=this,k={},x=!1,E=o&&o.actions&&!o.actions.length;d.fn.init.call(w,i,o),o=w.options,h=o.position,i=w.element,f=o.content,_=e(window),E&&(o.actions=[]),w.appendTo=e(o.appendTo),w.containment=o.draggable.containment?e(o.draggable.containment).first():null,f&&!p(f)&&(f=o.content={url:f}),i.find("script").filter(r).remove(),i.parent().is(w.appendTo)||w.containment||h.top!==t&&h.left!==t||(i.is(B)?(k=i.offset(),x=!0):(s=i.css("visibility"),l=i.css("display"),i.css({visibility:L,display:""}),k=i.offset(),i.css({visibility:s,display:l})),h.top===t&&(h.top=k.top),h.left===t&&(h.left=k.left)),n(o.visible)&&null!==o.visible||(o.visible=i.is(B)),a=w.wrapper=i.closest(C),i.is(".k-content")&&a[0]||(i.addClass("k-window-content k-content"),w._createWindow(i,o),a=w.wrapper=i.closest(C),w.title(w.options.title),w._dimensions()),w.minTop=w.minLeft=-(1/0),w.maxTop=w.maxLeft=1/0,w._position(),f&&w.refresh(f),o.visible&&w.toFront(),g=a.children(D),w._tabindex(g),o.visible&&o.modal&&w._overlay(a.is(B)).css({opacity:.5}),a.on("mouseenter"+y,re,v(w._buttonEnter,w)).on("mouseleave"+y,re,v(w._buttonLeave,w)).on("click"+y,"> "+re,v(w._windowActionHandler,w)).on("keydown"+y,v(w._keydown,w)).on("focus"+y,v(w._focus,w)).on("blur"+y,v(w._blur,w)),g.on("keydown"+y,v(w._keydown,w)).on("focus"+y,v(w._focus,w)).on("blur"+y,v(w._blur,w)),m=g.find("."+M)[0],m&&!_.data(se)&&(_.on("blur"+y,function(){var t,n=e(document.activeElement).parent(D);n.length&&(t=c.widgetInstance(n),t._focus())}),_.on("focus"+y,function(){e(D).not(A).each(function(t,n){c.widgetInstance(e(n))._blur()})}),_.data(se,!0)),this._resizable(),this._draggable(),o.pinned&&this.wrapper.is(":visible")&&w.pin(),b=i.attr("id"),b&&(b+="_wnd_title",a.children(T).children(S).attr("id",b),g.attr({role:"dialog","aria-labelledby":b})),a.add(a.children(".k-resize-handle,"+T)).on("mousedown"+y,v(w.toFront,w)),w.touchScroller=c.touchScroller(i),w._resizeHandler=v(w._onDocumentResize,w),w._marker=c.guid().substring(0,8),e(window).on("resize"+y+w._marker,w._resizeHandler),o.visible&&(w.trigger(N),w.trigger(O)),c.notify(w),this.options.modal&&(this._tabKeyTrap=new u(a),this._tabKeyTrap.trap(),this._tabKeyTrap.shouldTrap=function(){return g.data("isFront")})},_buttonEnter:function(t){e(t.currentTarget).addClass(R)},_buttonLeave:function(t){e(t.currentTarget).removeClass(R)},_focus:function(){this.wrapper.addClass(P)},_blur:function(){this.wrapper.removeClass(P)},_dimensions:function(){var e,t,n=this.wrapper,r=this.options,a=r.width,s=r.height,l=r.maxHeight,c=r.size,d=["minWidth","minHeight","maxWidth","maxHeight"],u="content-box"==n.css("box-sizing"),h=u?i(n,"border-left-width")+i(n,"border-right-width"):0,p=u?i(n,"border-top-width")+i(n,"border-bottom-width"):0,f=u?i(n,"padding-top"):0;for(this.containment&&!this._isPinned&&(this._updateBoundaries(),r.maxHeight=Math.min(this.containment.height-(p+f),l),r.maxWidth=Math.min(this.containment.width-h,r.maxWidth)),e=0;e<d.length;e++)t=r[d[e]]||"",t!=1/0&&n.css(d[e],t);l!=1/0&&this.element.css("maxHeight",l),n.width(a?o(a,r.minWidth,r.maxWidth):""),n.height(s?o(s,r.minHeight,r.maxHeight):""),r.visible||n.hide(),c&&de[c]&&n.addClass(de[c])},_position:function(){var e=this.wrapper,t=this.options.position;this._updateBoundaries(),this.containment&&(t.top=Math.min(this.minTop+(t.top||0),this.maxTop),t.left=Math.min(this.minLeft+(t.left||0),this.maxLeft)),0===t.top&&(t.top=""+t.top),0===t.left&&(t.left=""+t.left),e.css({top:t.top||"",left:t.left||""})},_updateBoundaries:function(){var e=this.containment;return e?(e.width=e.innerWidth(),e.height=e.innerHeight(),parseInt(e.width,10)>e[0].clientWidth&&(e.width-=c.support.scrollbar()),parseInt(e.height,10)>e[0].clientHeight&&(e.height-=c.support.scrollbar()),e.position=a(e[0]),this._isPinned?(this.minTop=this.minLeft=-(1/0),this.maxTop=this.maxLeft=1/0):(this.minTop=e.scrollTop(),this.minLeft=e.scrollLeft(),this.maxLeft=this.minLeft+e.width-g(this.wrapper,!0),this.maxTop=this.minTop+e.height-m(this.wrapper,!0)),t):null},_animationOptions:function(e){var t=this.options.animation,n={open:{effects:{}},close:{hide:!0,effects:{}}};return t&&t[e]||n[e]},_resize:function(){c.resize(this.element.children())},_resizable:function(){var t=this.options.resizable,n=this.wrapper;this.resizing&&(n.off("dblclick"+y).children(E).remove(),this.resizing.destroy(),this.resizing=null),t&&(n.on("dblclick"+y,T,v(function(t){e(t.target).closest(".k-window-action").length||this.toggleMaximization()},this)),b("n e s w se sw ne nw".split(" "),function(e,t){n.append(he.resizeHandle(t))}),this.resizing=new s(this)),n=null},_draggable:function(){var e=this.options.draggable;this.dragging&&(this.dragging.destroy(),this.dragging=null),e&&(this.dragging=new l(this,e.dragHandle||T))},_actions:function(){var t=this.options,n=t.actions,i=t.pinned,o=this.wrapper.children(T),r=o.find(".k-window-actions"),a=["maximize","minimize"];n=e.map(n,function(e){return e=i&&"pin"===e.toLowerCase()?"unpin":e,{name:a.indexOf(e.toLowerCase())>-1?"window-"+e:e}}),r.html(c.render(he.action,n))},setOptions:function(e){var n,i,o=this,r=o.options.size,a=JSON.parse(JSON.stringify(e));_(e.position,o.options.position),_(e.position,a.position),d.fn.setOptions.call(o,e),n=o.options.scrollable!==!1,o.restore(),t!==e.title&&o.title(e.title),o.wrapper.removeClass(de[r]),o._dimensions(),o._position(),o._resizable(),o._draggable(),o._actions(),t!==e.modal&&(i=o.options.visible!==!1,o._enableDocumentScrolling(),o._overlay(e.modal&&i)),o.element.css(J,n?"":"hidden")},events:[N,O,V,W,q,j,U,G,$,Y,K,Q,X],options:{name:"Window",animation:{open:{effects:{zoom:{direction:"in"},fade:{direction:"in"}},duration:350},close:{effects:{zoom:{direction:"out",properties:{scale:.7}},fade:{direction:"out"}},duration:350,hide:!0}},title:"",actions:["Close"],autoFocus:!0,modal:!1,size:"auto",resizable:!0,draggable:!0,minWidth:90,minHeight:50,maxWidth:1/0,maxHeight:1/0,pinned:!1,scrollable:!0,position:{},content:null,visible:null,height:null,width:null,appendTo:"body",isMaximized:!1,isMinimized:!1},_closable:function(){return e.inArray("close",e.map(this.options.actions,function(e){return e.toLowerCase()}))>-1},_keydown:function(e){var t,n,r,a,s,l,d=this,u=d.options,h=c.keys,p=e.keyCode,f=d.wrapper,g=10,m=u.isMaximized,v=u.isMinimized;p==h.ESC&&d._closable()&&(e.stopPropagation(),d._close(!1)),e.target!=e.currentTarget||d._closing||(e.altKey&&82==p&&d.refresh(),e.altKey&&80==p&&(d.options.pinned?d.unpin():d.pin()),e.altKey&&p==h.UP?v?(d.restore(),d.element.focus()):m||(d.maximize(),d.element.focus()):e.altKey&&p==h.DOWN&&(v||m?m&&(d.restore(),d.element.focus()):(d.minimize(),d.wrapper.focus())),t=c.getOffset(f),d.containment&&!d._isPinned&&(t=d.options.position),!u.draggable||e.ctrlKey||e.altKey||m||(d._updateBoundaries(),p==h.UP?(t.top=o(t.top-g,d.minTop,d.maxTop),n=f.css("top",t.top)):p==h.DOWN?(t.top=o(t.top+g,d.minTop,d.maxTop),n=f.css("top",t.top)):p==h.LEFT?(t.left=o(t.left-g,d.minLeft,d.maxLeft),n=f.css("left",t.left)):p==h.RIGHT&&(t.left=o(t.left+g,d.minLeft,d.maxLeft),n=f.css("left",t.left))),u.resizable&&e.ctrlKey&&!m&&!v&&(p==h.UP?(n=!0,a=f.height()-g):p==h.DOWN&&(n=!0,a=d.containment&&!d._isPinned?Math.min(f.height()+g,d.containment.height-t.top-i(f,"padding-top")-i(f,"borderBottomWidth")-i(f,"borderTopWidth")):f.height()+g),p==h.LEFT?(n=!0,r=f.width()-g):p==h.RIGHT&&(n=!0,r=d.containment&&!d._isPinned?Math.min(f.width()+g,d.containment.width-t.left-i(f,"borderLeftWidth")-i(f,"borderRightWidth")):f.width()+g),n&&(s=o(r,u.minWidth,u.maxWidth),l=o(a,u.minHeight,u.maxHeight),isNaN(s)||(f.width(s),d.options.width=s+"px"),isNaN(l)||(f.height(l),d.options.height=l+"px"),d.resize())),n&&e.preventDefault())},_overlay:function(t){var n=this.containment?this.containment.children(I):this.appendTo.children(I),i=this.wrapper;return n.length||(n=e("<div class='k-overlay' />")),n.insertBefore(i[0]).toggle(t).css(ee,parseInt(i.css(ee),10)-1),this.options.modal.preventScroll&&!this.containment&&this._stopDocumentScrolling(),n},_actionForIcon:function(e){var t=/\bk-i(-\w+)+\b/.exec(e[0].className)[0];return{"k-i-close":"_close","k-i-window-maximize":"maximize","k-i-window-minimize":"minimize","k-i-window-restore":"restore","k-i-refresh":"refresh","k-i-pin":"pin","k-i-unpin":"unpin"}[t]},_windowActionHandler:function(n){var i,o;if(!this._closing)return i=e(n.target).closest(".k-window-action").find(".k-icon"),o=this._actionForIcon(i),o?(n.preventDefault(),this[o](),!1):t},_modals:function(){var t=this,n=e(C).filter(function(){var n=e(this),i=t._object(n),o=i&&i.options;return o&&o.modal&&o.visible&&o.appendTo===t.options.appendTo&&n.is(B)}).sort(function(t,n){return+e(t).css("zIndex")-+e(n).css("zIndex")});return t=null,n},_object:function(e){var n=e.children(D),i=c.widgetInstance(n);return i?i:t},center:function(){var t,n,o=this,r=o.options.position,a=o.wrapper,s=e(window),l=0,c=0;return o.options.isMaximized?o:(o.options.pinned&&!o._isPinned&&o.pin(),o.options.pinned||(l=s.scrollTop(),c=s.scrollLeft()),this.containment&&!o.options.pinned?(t=this.minTop+(this.maxTop-this.minTop)/2,n=this.minLeft+(this.maxLeft-this.minLeft)/2):(o._scrollIsAppended=!0,n=c+Math.max(0,(s.width()-a.width())/2),t=l+Math.max(0,(s.height()-a.height()-i(a,"paddingTop"))/2)),a.css({left:n,top:t}),r.top=t,r.left=n,o)},title:function(n){var i,o,r,a,s=this,l=!0,d=s.wrapper,u=d.children(T),h=u.children(S);return arguments.length?(e.isPlainObject(n)?(i=t!==n.text?n.text:"",l=n.encoded!==!1):i=n,i===!1?(d.addClass("k-window-titleless"),u.remove()):(u.length?h.html(l?c.htmlEncode(i):i):(d.prepend(he.titlebar({title:l?c.htmlEncode(i):i})),s._actions(),u=d.children(T)),a=d.css("visibility"),r=d.css("display"),a===L?(d.css({display:""}),o=parseInt(m(u),10),d.css({display:r})):(d.css({visibility:L,display:""}),o=parseInt(m(u),10),d.css({visibility:a,display:r})),d.css("padding-top",o),u.css("margin-top",-o)),s.options.title=i,s):h.html()},content:function(e,t){var i=this.wrapper.children(D),o=i.children(".km-scroll-container");return i=o[0]?o:i,n(e)?(this.angular("cleanup",function(){return{elements:i.children()}}),c.destroy(this.element.children()),i.empty().html(e),this.angular("compile",function(){var e,n=[];for(e=i.length;--e>=0;)n.push({dataItem:t});return{elements:i.children(),data:n}}),this):i.html()},open:function(){var t,n,i,o=this,r=o.wrapper,a=o.options,s=this._animationOptions("open"),l=r.children(D),d=this.containment&&!o._isPinned,u=d?this.containment:e(document);return o.trigger(N)||(o._closing&&r.kendoStop(!0,!0),o._closing=!1,o.toFront(),a.autoFocus&&o.element.focus(),a.visible=!0,a.modal&&(n=!!o._modals().length,t=o._overlay(n),t.kendoStop(!0,!0),s.duration&&c.effects.Fade&&!n?(i=c.fx(t).fadeIn(),i.duration(s.duration||0),i.endValue(.5),i.play()):t.css("opacity",.5),t.show(),e(window).on("focus"+x,function(){l.data("isFront")&&!e(document.activeElement).closest(l).length&&o.element.focus()})),r.is(B)||(l.css(J,L),r.show().kendoStop().kendoAnimate({effects:s.effects,duration:s.duration,complete:v(this._activate,this)}))),a.isMaximized&&(o._containerScrollTop=u.scrollTop(),o._containerScrollLeft=u.scrollLeft(),o._stopDocumentScrolling()),this.options.pinned&&!this._isPinned&&this.pin(),o},_activate:function(){var e=this.options.scrollable!==!1;this.options.autoFocus&&this.element.focus(),this.element.css(J,e?"":"hidden"),c.resize(this.element.children()),this.trigger(O)},_removeOverlay:function(n){var i,o=this._modals(),r=this.options,a=r.modal&&!o.length,s=r.modal?this._overlay(!0):e(t),l=this._animationOptions("close");a?(!n&&l.duration&&c.effects.Fade?(i=c.fx(s).fadeOut(),i.duration(l.duration||0),i.startValue(.5),i.play()):this._overlay(!1).remove(),r.modal.preventScroll&&this._enableDocumentScrolling()):o.length&&(this._object(o.last())._overlay(!0),r.modal.preventScroll&&this._stopDocumentScrolling())},_close:function(t){var n,i=this,o=i.wrapper,r=i.options,a=this._animationOptions("open"),s=this._animationOptions("close"),l=this.containment&&!i._isPinned,c=l?this.containment:e(document);i._closing||(n=i.trigger(W,{userTriggered:!t}),i._closing=!n,o.is(B)&&!n&&(r.visible=!1,e(C).each(function(t,n){var i=e(n).children(D);n!=o&&i.find("> ."+M).length>0&&i.children(I).remove()}),this._removeOverlay(),o.kendoStop().kendoAnimate({effects:s.effects||a.effects,reverse:s.reverse===!0,duration:s.duration,complete:v(this._deactivate,this)}),e(window).off(x)),i.options.isMaximized&&(i._enableDocumentScrolling(),i._containerScrollTop&&i._containerScrollTop>0&&c.scrollTop(i._containerScrollTop),i._containerScrollLeft&&i._containerScrollLeft>0&&c.scrollLeft(i._containerScrollLeft)))},_deactivate:function(){var e,t=this;t.wrapper.hide().css("opacity",""),t.trigger(V),t.options.modal&&(e=t._object(t._modals().last()),e&&e.toFront())},close:function(){return this._close(!0),this},_actionable:function(t){return e(t).is(re+","+re+" .k-icon,:input,a")},_shouldFocus:function(t){var n=f(),i=this.element;return this.options.autoFocus&&!e(n).is(i)&&!this._actionable(t)&&(!i.find(n).length||!i.find(t).length)},toFront:function(t){var n,i,o=this,r=o.wrapper,a=r[0],s=o.containment&&!o._isPinned,l=+r.css(ee),c=l,d=t&&t.target||null;return e(C).each(function(t,n){var i=e(n),o=i.css(ee),r=i.children(D);isNaN(o)||(l=Math.max(+o,l)),r.data("isFront",n==a),n!=a&&r.find("> ."+M).length>0&&r.append(he.overlay)}),(!r[0].style.zIndex||c<l)&&r.css(ee,l+2),o.element.find("> .k-overlay").remove(),o._shouldFocus(d)&&(o.isMinimized()?o.wrapper.focus():e(d).is(I)?setTimeout(function(){o.element.focus()}):o.element.focus(),n=s?o.containment.scrollTop():e(window).scrollTop(),i=parseInt(r.position().top,10),!o.options.pinned&&i>0&&i<n&&(n>0?e(window).scrollTop(i):r.css("top",n))),r=null,o},toggleMaximization:function(){return this._closing?this:this[this.options.isMaximized?"restore":"maximize"]()},restore:function(){var t,n=this,i=n.options,r=i.minHeight,a=n.restoreOptions,s=n.containment&&!n._isPinned?n.containment:e(document);return i.isMaximized||i.isMinimized?(r&&r!=1/0&&n.wrapper.css("min-height",r),a&&!i.isMaximized&&(a.height=o(a.height,n.options.minHeight,n.options.maxHeight),t=i.position.top+parseInt(a.height,10)>n.maxTop,t&&(i.position.top=o(i.position.top,n.minTop,n.maxTop-parseInt(a.height,10)),_(a,{left:i.position.left,top:i.position.top}))),n.wrapper.css({position:i.pinned?"fixed":"absolute",left:a.left,top:a.top,width:a.width,height:a.height}).removeClass(z).find(".k-window-content,.k-resize-handle").show().end().find(".k-window-titlebar .k-i-window-restore").parent().remove().end().end().find(te).parent().show().end().end().find(oe).parent().show(),i.isMaximized?n.wrapper.find(".k-i-window-maximize").parent().focus():i.isMinimized&&n.wrapper.find(".k-i-window-minimize").parent().focus(),n.options.width=a.width,n.options.height=a.height,n.options.modal.preventScroll||n._enableDocumentScrolling(),n._containerScrollTop&&n._containerScrollTop>0&&s.scrollTop(n._containerScrollTop),n._containerScrollLeft&&n._containerScrollLeft>0&&s.scrollLeft(n._containerScrollLeft),i.isMaximized=i.isMinimized=!1,n.wrapper.removeAttr("tabindex"),n.wrapper.removeAttr("aria-labelled-by"),n.resize(),n):n},_sizingAction:function(e,t){var n=this,i=n.wrapper,o=i[0].style,r=n.options;return r.isMaximized||r.isMinimized?n:(n.restoreOptions={width:o.width,height:o.height},i.children(E).hide().end().children(T).find(te).parent().hide().eq(0).before(he.action({name:"window-restore"})),t.call(n),n.wrapper.children(T).find(oe).parent().toggle("maximize"!==e),n.trigger(e),i.find(".k-i-window-restore").parent().focus(),n)},maximize:function(){return this._sizingAction("maximize",function(){var t=this,n=t.wrapper,i=this.containment&&!t._isPinned,o=n.position(),r=e(document);_(t.restoreOptions,{left:o.left+(i?this.containment.scrollLeft():0),top:o.top+(i?this.containment.scrollTop():0)}),this._containerScrollTop=i?this.containment.scrollTop():r.scrollTop(),this._containerScrollLeft=i?this.containment.scrollLeft():r.scrollLeft(),t._stopDocumentScrolling(),n.css({top:i?this.containment.scrollTop():0,left:i?this.containment.scrollLeft():0,position:i?"absolute":"fixed"}).addClass(z),t.options.isMaximized=!0,t._onDocumentResize()}),this},_stopDocumentScrolling:function(){var n,i,o=this,r=o.containment;return r&&!o._isPinned?(o._storeOverflowRule(r),r.css(J,L),o.wrapper.css({maxWidth:r.innerWidth(),maxHeight:r.innerHeight()}),t):(n=e("body"),o._storeOverflowRule(n),n.css(J,L),i=e("html"),o._storeOverflowRule(i),i.css(J,L),t)},_enableDocumentScrolling:function(){var n=this,i=n.containment;return i&&!n._isPinned?(n._restoreOverflowRule(i),n.wrapper.css({maxWidth:i.width,maxHeight:i.height}),t):(n._restoreOverflowRule(e(document.body)),n._restoreOverflowRule(e("html")),t)},_storeOverflowRule:function(e){if(!this._isOverflowStored(e)){var t=e.get(0).style.overflow;"string"==typeof t&&e.data(Z,t)}},_isOverflowStored:function(e){return"string"==typeof e.data(Z)},_restoreOverflowRule:function(e){var n=e.data(Z);null!==n&&n!==t?(e.css(J,n),e.removeData(Z)):e.css(J,"")},isMaximized:function(){return this.options.isMaximized},minimize:function(){return this._sizingAction("minimize",function(){var e=this;e.wrapper.css({height:"",minHeight:""}),e.element.hide(),e.options.isMinimized=!0}),this.wrapper.attr("tabindex",0),this.wrapper.attr("aria-labelled-by",this.element.attr("aria-labelled-by")),this._updateBoundaries(),this},isMinimized:function(){return this.options.isMinimized},pin:function(){var t=this,n=e(window),o=t.wrapper,r=t.options,s=r.position,l=this.containment?a(o[0]).top+i(this.containment,"borderTopWidth"):i(o,"top"),c=this.containment?a(o[0]).left+i(this.containment,"borderLeftWidth"):i(o,"left");t.options.isMaximized||(s.top=l,s.left=c,!t._scrollIsAppended||this.containment&&"fixed"===this.containment.css("position")||(s.top-=n.scrollTop(),s.left-=n.scrollLeft(),t._scrollIsAppended=!1),o.css(_(s,{position:"fixed"})),o.children(T).find(ne).addClass("k-i-unpin").removeClass("k-i-pin"),t._isPinned=!0,t.options.pinned=!0,this.containment&&(r.maxWidth=r.maxHeight=1/0,o.css({maxWidth:"",maxHeight:""})))},unpin:function(){var t=this,n=e(window),r=t.wrapper,a=t.options,s=t.options.position,l=t.containment,c=parseInt(r.css("top"),10)+n.scrollTop(),d=parseInt(r.css("left"),10)+n.scrollLeft();t.options.isMaximized||(t._isPinned=!1,t._scrollIsAppended=!0,t.options.pinned=!1,l&&(t._updateBoundaries(),a.maxWidth=Math.min(l.width,a.maxWidth),a.maxHeight=Math.min(l.height-i(r,"padding-top"),a.maxHeight),r.css({maxWidth:a.maxWidth,maxHeight:a.maxHeight}),c=c<l.position.top?t.minTop:c>l.position.top+l.height?t.maxTop:c+l.scrollTop()-(l.position.top+i(l,"border-top-width")),d=d<l.position.left?t.minLeft:d>l.position.left+l.width?t.maxLeft:d+l.scrollLeft()-(l.position.left+i(l,"border-left-width"))),s.top=o(c,t.minTop,t.maxTop),s.left=o(d,t.minLeft,t.maxLeft),r.css(_(s,{position:""})),r.children(T).find(ie).addClass("k-i-pin").removeClass("k-i-unpin"))},_onDocumentResize:function(){var t,n,o,r,a,s=this,l=s.wrapper,d=e(window),u=c.support.zoomLevel(),h="content-box"==l.css("box-sizing");s.options.isMaximized&&(o=h?i(l,"border-left-width")+i(l,"border-right-width"):0,r=h?i(l,"border-top-width")+i(l,"border-bottom-width"):0,a=h?i(l,"padding-top"):0,s.containment&&!s._isPinned?(t=s.containment.innerWidth()-o,n=s.containment.innerHeight()-(r+a)):(t=d.width()/u-o,n=d.height()/u-(r+a)),l.css({width:t,height:n}),s.options.width=t,s.options.height=n,s.resize())},refresh:function(t){var i,o,r,a=this,s=a.options,l=e(a.element);return p(t)||(t={url:t}),t=_({},s.content,t),o=n(s.iframe)?s.iframe:t.iframe,r=t.url,r?(n(o)||(o=!ce(r)),o?(i=l.find("."+M)[0],i?i.src=r||i.src:l.html(he.contentFrame(_({},s,{content:t}))),l.find("."+M).unbind("load"+y).on("load"+y,v(this._triggerRefresh,this))):a._ajaxRequest(t)):(t.template&&a.content(w(t.template)({})),a.trigger(U)),l.toggleClass("k-window-iframecontent",!!o),a},_triggerRefresh:function(){this.trigger(U)},_ajaxComplete:function(){clearTimeout(this._loadingIconTimeout),this.wrapper.find(ae).removeClass(F)},_ajaxError:function(e,t){this.trigger(X,{status:t,xhr:e})},_ajaxSuccess:function(e){return function(t){var n=t;e&&(n=w(e)(t||{})),this.content(n,t),this.element.prop("scrollTop",0),this.trigger(U)}},_showLoading:function(){this.wrapper.find(ae).addClass(F)},_ajaxRequest:function(t){this._loadingIconTimeout=setTimeout(v(this._showLoading,this),100),e.ajax(_({type:"GET",dataType:"html",cache:!1,error:v(this._ajaxError,this),complete:v(this._ajaxComplete,this),success:v(this._ajaxSuccess(t.template),this)},t))},_destroy:function(){this.resizing&&this.resizing.destroy(),this.dragging&&this.dragging.destroy(),this.wrapper.off(y).children(D).off(y).end().find(".k-resize-handle,.k-window-titlebar").off(y),e(window).off("resize"+y+this._marker),e(window).off(x),e(window).off(y),clearTimeout(this._loadingIconTimeout),d.fn.destroy.call(this),this.unbind(t),c.destroy(this.wrapper),this._removeOverlay(!0)},destroy:function(){this._destroy(),this.wrapper.empty().remove(),this.wrapper=this.appendTo=this.element=e()},_createWindow:function(){var t,n,i=this.element,o=this.options,r=c.support.isRtl(i);o.scrollable===!1&&i.css("overflow","hidden"),n=e(he.wrapper(o)),t=i.find("iframe:not(.k-content)").map(function(){var e=this.getAttribute("src");return this.src="",e}),n.toggleClass("k-rtl",r).append(i).find("iframe:not(.k-content)").each(function(e){this.src=t[e]}),this.containment?this.containment.prepend(n):this.appendTo&&n.appendTo(this.appendTo), +n.find(".k-window-title").css(r?"left":"right",g(n.find(".k-window-actions"))+10),i.css("visibility","").show(),i.find("[data-role=editor]").each(function(){var t=e(this).data("kendoEditor");t&&t.refresh()}),n=i=null}}),he={wrapper:w("<div class='k-widget k-window' />"),action:w("<a role='button' href='\\#' class='k-button k-bare k-button-icon k-window-action' aria-label='#= name #'><span class='k-icon k-i-#= name.toLowerCase() #'></span></a>"),titlebar:w("<div class='k-window-titlebar k-header'><span class='k-window-title'>#= title #</span><div class='k-window-actions' /></div>"),overlay:"<div class='k-overlay' />",contentFrame:w("<iframe frameborder='0' title='#= title #' class='"+M+"' src='#= content.url #'>This page requires frames in order to show content</iframe>"),resizeHandle:w("<div class='k-resize-handle k-resize-#= data #'></div>")};s.prototype={addOverlay:function(){this.owner.wrapper.append(he.overlay)},removeOverlay:function(){this.owner.wrapper.find(I).remove()},dragstart:function(t){var n,i,o,r,s,l,d,u=this,h=u.owner,p=h.wrapper;u._preventDragging=h.trigger(G),u._preventDragging||(u.elementPadding=parseInt(p.css("padding-top"),10),u.initialPosition=c.getOffset(p,"position"),u.resizeDirection=t.currentTarget.prop("className").replace("k-resize-handle k-resize-",""),u.initialSize={width:p.width(),height:p.height()},h._updateBoundaries(),u.containerOffset=h.containment?h.containment.position:c.getOffset(h.appendTo,"position"),n=p.offsetParent(),n.is("html")?u.containerOffset.top=u.containerOffset.left=0:(i=n.css("margin-top"),o=n.css("margin-left"),r=!le.test(i)||!le.test(o),r&&(s=a(p[0]),l=s.left-u.containerOffset.left-u.initialPosition.left,d=s.top-u.containerOffset.top-u.initialPosition.top,u._relativeElMarginLeft=l>1?l:0,u._relativeElMarginTop=d>1?d:0,u.initialPosition.left+=u._relativeElMarginLeft,u.initialPosition.top+=u._relativeElMarginTop)),p.children(E).not(t.currentTarget).hide(),e(k).css(H,t.currentTarget.css(H)))},drag:function(t){var n,i,r,a,s,l,d,u,h,p,f,g,m,v,_,b,w,k,y,x;this._preventDragging||(n=this,i=n.owner,r=i.wrapper,a=i.options,s=a.position,l=n.resizeDirection,d=n.containerOffset,u=n.initialPosition,h=n.initialSize,p=i.containment&&!i._isPinned,f=c.support.isRtl(i.containment),g=p&&f&&i.containment.innerWidth()>i.containment.width?c.support.scrollbar():0,m=p?{top:i.containment.scrollTop(),left:i.containment.scrollLeft()}:{top:0,left:0},k=Math.max(t.x.location,0),y=Math.max(t.y.location,0),l.indexOf("e")>=0?(v=i.containment&&k-h.width>=i.maxLeft-m.left+d.left+g?i.maxLeft+g-u.left+h.width-m.left:k-u.left-d.left,r.width(o(v,a.minWidth,a.maxWidth))):l.indexOf("w")>=0&&(w=u.left+h.width+d.left,v=o(w-k,a.minWidth,a.maxWidth),s.left=w-v-d.left-g-(n._relativeElMarginLeft||0)+m.left,i.containment&&s.left<=i.minLeft&&(s.left=i.minLeft,v=o(w-g-s.left-d.left+m.left,a.minWidth,a.maxWidth)),r.css({left:s.left,width:v})),x=y,i.options.pinned&&(x-=e(window).scrollTop()),l.indexOf("s")>=0?(_=x-u.top-n.elementPadding-d.top,x-h.height-n.elementPadding>=i.maxTop+d.top-m.top&&(_=i.maxTop-u.top+h.height-m.top),r.height(o(_,a.minHeight,a.maxHeight))):l.indexOf("n")>=0&&(b=u.top+h.height+d.top,_=o(b-x,a.minHeight,a.maxHeight),s.top=b-_-d.top-(n._relativeElMarginTop||0)+m.top,s.top<=i.minTop&&i.containment&&(s.top=i.minTop,_=o(b-s.top-d.top+m.top,a.minHeight,a.maxHeight)),r.css({top:s.top,height:_})),v&&(i.options.width=v+"px"),_&&(i.options.height=_+"px"),i.resize())},dragend:function(t){if(!this._preventDragging){var n=this,i=n.owner,o=i.wrapper;return o.children(E).not(t.currentTarget).show(),e(k).css(H,""),i.touchScroller&&i.touchScroller.reset(),27==t.keyCode&&o.css(n.initialPosition).css(n.initialSize),i.trigger(Y),!1}},destroy:function(){this._draggable&&this._draggable.destroy(),this._draggable=this.owner=null}},l.prototype={dragstart:function(t){var n=this.owner,i=n.options.draggable,o=n.element,r=o.find(".k-window-actions"),a=c.getOffset(n.appendTo);this._preventDragging=n.trigger(K)||!i,this._preventDragging||n.isMaximized()||(n.initialWindowPosition=c.getOffset(n.wrapper,"position"),n.initialPointerPosition={left:n.options.position.left,top:n.options.position.top},n.startPosition={left:t.x.client-n.initialWindowPosition.left,top:t.y.client-n.initialWindowPosition.top},n._updateBoundaries(),n.containment||(n.minLeft=r.length>0?g(r)+parseInt(r.css("right"),10)-g(o):20-g(o),n.minLeft-=a.left,n.minTop=-a.top),n.wrapper.append(he.overlay).children(E).hide(),e(k).css(H,t.currentTarget.css(H)))},drag:function(t){var n,i,r=this.owner,a=r.options.position,s=r.options.draggable.axis;this._preventDragging||r.isMaximized()||(s&&"x"!==s.toLowerCase()||(n=t.x.client-r.startPosition.left,r.containment&&!r._isPinned&&(n+=r.containment.scrollLeft()),a.left=o(n,r.minLeft,r.maxLeft)),s&&"y"!==s.toLowerCase()||(i=t.y.client-r.startPosition.top,r.containment&&!r._isPinned&&(i+=r.containment.scrollTop()),a.top=o(i,r.minTop,r.maxTop)),c.support.transforms?e(r.wrapper).css("transform","translate("+(a.left-r.initialPointerPosition.left)+"px, "+(a.top-r.initialPointerPosition.top)+"px)"):e(r.wrapper).css(a))},_finishDrag:function(){var t=this.owner;t.wrapper.children(E).toggle(!t.options.isMinimized).end().find(I).remove(),e(k).css(H,"")},dragcancel:function(e){this._preventDragging||(this._finishDrag(),e.currentTarget.closest(C).css(this.owner.initialWindowPosition))},dragend:function(){var t=this.owner;if(!this._preventDragging&&!t.isMaximized())return e(t.wrapper).css(t.options.position).css("transform",""),this._finishDrag(),t.trigger(Q),!1},destroy:function(){this._draggable&&this._draggable.destroy(),this._draggable=this.owner=null}},c.ui.plugin(ue)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.pane.min",["kendo.view.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.roleSelector,o=n.ui,r=o.Widget,a=n.ViewEngine,s=n.View,l=e.extend,c="navigate",d="viewShow",u="sameViewRequested",h=n.support.mobileOS,p=h.ios&&!h.appMode&&h.flatVersion>=700,f="#:back",g=".",m={pane:"k-pane",paneWrapper:"k-pane-wrapper",collapsiblePane:"k-collapsible-pane",vertical:"k-vertical"},v=r.extend({init:function(e,t){var i=this;r.fn.init.call(i,e,t),t=i.options,e=i.element,e.addClass(m.pane),i.options.collapsible&&e.addClass(m.collapsiblePane),this.history=[],this.historyCallback=function(e,t,n){var o=i.transition;return i.transition=null,p&&n&&(o="none"),i.viewEngine.showView(e,o,t)},this._historyNavigate=function(e){if(e===f){if(1===i.history.length)return;i.history.pop(),e=i.history[i.history.length-1]}else e instanceof s&&(e=""),i.history.push(e);i.historyCallback(e,n.parseQueryStringParams(e))},this._historyReplace=function(e){var t=n.parseQueryStringParams(e);i.history[i.history.length-1]=e,i.historyCallback(e,t)},i.viewEngine=new a(l({},{container:e,transition:t.transition,modelScope:t.modelScope,rootNeeded:!t.initial,serverNavigation:t.serverNavigation,remoteViewURLPrefix:t.root||"",layout:t.layout,$angular:t.$angular,showStart:function(){i.closeActiveDialogs()},after:function(){},viewShow:function(e){i.trigger(d,e)},loadStart:function(){},loadComplete:function(){},sameViewRequested:function(){i.trigger(u)},viewTypeDetermined:function(e){e.remote&&i.options.serverNavigation||i.trigger(c,{url:e.url})}},this.options.viewEngine)),this._setPortraitWidth(),n.onResize(function(){i._setPortraitWidth()})},closeActiveDialogs:function(){var t=this.element.find(i("actionsheet popover modalview")).filter(":visible");t.each(function(){n.widgetInstance(e(this),o).close()})},navigateToInitial:function(){var e=this.options.initial;return e&&this.navigate(e),e},options:{name:"Pane",portraitWidth:"",transition:"",layout:"",collapsible:!1,initial:null,modelScope:window},events:[c,d,u],append:function(e){return this.viewEngine.append(e)},destroy:function(){var e=this;r.fn.destroy.call(e),e.viewEngine&&e.viewEngine.destroy()},navigate:function(e,t){e instanceof s&&(e=e.id),this.transition=t,this._historyNavigate(e)},replace:function(e,t){e instanceof s&&(e=e.id),this.transition=t,this._historyReplace(e)},view:function(){return this.viewEngine.view()},_setPortraitWidth:function(){var e,t=this.options.portraitWidth;t&&(e=n.mobile.application.element.is(g+m.vertical)?t:"auto",this.element.css("width",e))}});v.wrap=function(e,t){var o,r;return e.is(i("view"))||(e=e.wrap("<div data-"+n.ns+'role="view" data-stretch="true"></div>').parent()),o=e.wrap('<div class="'+m.paneWrapper+' k-widget"><div></div></div>').parent(),r=new v(o,t),r.navigate(""),r},n.Pane=v}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.progressbar.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,o=i.Widget,r="horizontal",a="vertical",s=0,l=100,c=0,d=5,u="k-progressbar",h="k-progressbar-reverse",p="k-progressbar-indeterminate",f="k-complete",g="k-state-selected",m="k-progress-status",v="k-progress-end",_="k-state-selected",b="k-state-default",w="k-state-disabled",k={VALUE:"value",PERCENT:"percent",CHUNK:"chunk"},y="change",x="complete",C="boolean",S=Math,T=e.extend,D=e.proxy,A=100,E=400,I=3,M={progressStatus:"<span class='k-progress-status-wrap "+v+"'><span class='k-progress-status'></span></span>"},F=o.extend({init:function(e,t){var n=this;o.fn.init.call(this,e,t),t=n.options,n._progressProperty=t.orientation===r?"width":"height",n._fields(),t.value=n._validateValue(t.value),n._validateType(t.type),n._wrapper(),n._progressAnimation(),t.value!==t.min&&t.value!==!1&&n._updateProgress()},setOptions:function(e){var t=this;o.fn.setOptions.call(t,e),e.hasOwnProperty("reverse")&&t.wrapper.toggleClass("k-progressbar-reverse",e.reverse),e.hasOwnProperty("enable")&&t.enable(e.enable),t._progressAnimation(),t._validateValue(),t._updateProgress()},events:[y,x],options:{name:"ProgressBar",orientation:r,reverse:!1,min:s,max:l,value:c,enable:!0,type:k.VALUE,chunkCount:d,showStatus:!0,animation:{}},_fields:function(){var t=this;t._isStarted=!1,t.progressWrapper=t.progressStatus=e()},_validateType:function(t){var i=!1;if(e.each(k,function(e,n){if(n===t)return i=!0,!1}),!i)throw Error(n.format("Invalid ProgressBar type '{0}'",t))},_wrapper:function(){var e,t=this,n=t.wrapper=t.element,i=t.options,o=i.orientation;n.addClass("k-widget "+u),n.addClass(u+"-"+(o===r?r:a)),i.enable===!1&&n.addClass(w),i.reverse&&n.addClass(h),i.value===!1&&n.addClass(p),i.type===k.CHUNK?t._addChunkProgressWrapper():i.showStatus&&(t.progressStatus=t.wrapper.prepend(M.progressStatus).find("."+m),e=i.value!==!1?i.value:i.min,t.progressStatus.text(i.type===k.VALUE?e:t._calculatePercentage(e).toFixed()+"%"))},value:function(e){return this._value(e)},_value:function(e){var n,i=this,o=i.options;return e===t?o.value:(typeof e!==C?(e=i._roundValue(e),isNaN(e)||(n=i._validateValue(e),n!==o.value&&(i.wrapper.removeClass(p),o.value=n,i._isStarted=!0,i._updateProgress()))):e||(i.wrapper.addClass(p),o.value=!1),t)},_roundValue:function(e){e=parseFloat(e);var t=S.pow(10,I);return S.floor(e*t)/t},_validateValue:function(e){var t=this,n=t.options;if(e!==!1){if(e<=n.min||e===!0)return n.min;if(e>=n.max)return n.max}else if(e===!1)return!1;return isNaN(t._roundValue(e))?n.min:e},_updateProgress:function(){var e=this,t=e.options,n=e._calculatePercentage();t.type===k.CHUNK?(e._updateChunks(n),e._onProgressUpdateAlways(t.value)):e._updateProgressWrapper(n)},_updateChunks:function(e){var t,n=this,i=n.options,o=i.chunkCount,s=parseInt(A/o*100,10)/100,l=parseInt(100*e,10)/100,c=S.floor(l/s);t=n.wrapper.find(i.orientation===r&&!i.reverse||i.orientation===a&&i.reverse?"li.k-item:lt("+c+")":"li.k-item:gt(-"+(c+1)+")"),n.wrapper.find("."+_).removeClass(_).addClass(b),t.removeClass(b).addClass(_)},_updateProgressWrapper:function(e){var t=this,n=t.options,i=t.wrapper.find("."+g),o=t._isStarted?t._animation.duration:0,r={};0===i.length&&t._addRegularProgressWrapper(),r[t._progressProperty]=e+"%",t.progressWrapper.animate(r,{duration:o,start:D(t._onProgressAnimateStart,t),progress:D(t._onProgressAnimate,t),complete:D(t._onProgressAnimateComplete,t,n.value),always:D(t._onProgressUpdateAlways,t,n.value)})},_onProgressAnimateStart:function(){this.progressWrapper.show()},_onProgressAnimate:function(e){var t,n=this,i=n.options,o=parseFloat(e.elem.style[n._progressProperty],10);i.showStatus&&(t=1e4/parseFloat(n.progressWrapper[0].style[n._progressProperty]),n.progressWrapper.find(".k-progress-status-wrap").css(n._progressProperty,t+"%")),i.type!==k.CHUNK&&o<=98&&n.progressWrapper.removeClass(f)},_onProgressAnimateComplete:function(e){var t,n=this,i=n.options,o=parseFloat(n.progressWrapper[0].style[n._progressProperty]);i.type!==k.CHUNK&&o>98&&n.progressWrapper.addClass(f),i.showStatus&&(t=i.type===k.VALUE?e:i.type==k.PERCENT?n._calculatePercentage(e).toFixed()+"%":S.floor(n._calculatePercentage(e))+"%",n.progressStatus.text(t)),e===i.min&&n.progressWrapper.hide()},_onProgressUpdateAlways:function(e){var t=this,n=t.options;t._isStarted&&t.trigger(y,{value:e}),e===n.max&&t._isStarted&&t.trigger(x,{value:n.max})},enable:function(e){var n=this,i=n.options;i.enable=t===e||e,n.wrapper.toggleClass(w,!i.enable)},destroy:function(){var e=this;o.fn.destroy.call(e)},_addChunkProgressWrapper:function(){var e,t=this,n=t.options,i=t.wrapper,o=A/n.chunkCount,r="";for(n.chunkCount<=1&&(n.chunkCount=1),r+="<ul class='k-reset'>",e=n.chunkCount-1;e>=0;e--)r+="<li class='k-item k-state-default'></li>";r+="</ul>",i.append(r).find(".k-item").css(t._progressProperty,o+"%").first().addClass("k-first").end().last().addClass("k-last"),t._normalizeChunkSize()},_normalizeChunkSize:function(){var e=this,t=e.options,n=e.wrapper.find(".k-item:last"),i=parseFloat(n[0].style[e._progressProperty]),o=A-t.chunkCount*i;o>0&&n.css(e._progressProperty,i+o+"%")},_addRegularProgressWrapper:function(){var t=this;t.progressWrapper=e("<div class='"+g+"'></div>").appendTo(t.wrapper),t.options.showStatus&&(t.progressWrapper.append(M.progressStatus),t.progressStatus=t.wrapper.find("."+m))},_calculateChunkSize:function(){var e=this,t=e.options.chunkCount,n=e.wrapper.find("ul.k-reset");return(parseInt(n.css(e._progressProperty),10)-(t-1))/t},_calculatePercentage:function(e){var n=this,i=n.options,o=e!==t?e:i.value,r=i.min,a=i.max;return n._onePercent=S.abs((a-r)/100),S.abs((o-r)/n._onePercent)},_progressAnimation:function(){var e=this,t=e.options,n=t.animation;e._animation=n===!1?{duration:0}:T({duration:E},t.animation)}});n.ui.plugin(F)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdf/pako.min",["kendo.core.min"],e)}(function(){return function(){kendo.pdf=kendo.pdf||{},kendo.pdf.supportsDeflate=function(){return window.pako&&"function"==typeof window.pako.deflate},kendo.pdf.deflate=function(e){return window.pako.deflate(e)}}(),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdf/core.min",["pdf/pako.min","kendo.core.min","kendo.color.min","kendo.drawing.min"],e)}(function(){return function(e){function t(e){function t(){return S>=T}function n(){return S<T?e[S++]:0}function i(t){w(S),e[S++]=255&t,S>T&&(T=S)}function o(){return n()<<8|n()}function r(e){i(e>>8),i(e)}function a(){var e=o();return e>=32768?e-65536:e}function s(e){r(e<0?e+65536:e)}function l(){return 65536*o()+o()}function c(e){r(e>>>16&65535),r(65535&e)}function d(){var e=l();return e>=2147483648?e-4294967296:e}function u(e){c(e<0?e+4294967296:e)}function h(){return l()/65536}function p(e){c(Math.round(65536*e))}function f(){return d()/65536}function g(e){u(Math.round(65536*e))}function m(e){return b(e,n)}function v(e){return String.fromCharCode.apply(String,m(e))}function _(e){for(var t=0;t<e.length;++t)i(e.charCodeAt(t))}function b(e,t){for(var n=Array(e),i=0;i<e;++i)n[i]=t();return n}var w,k,y,x,C,S=0,T=0;return null==e?e=Ie?new Uint8Array(256):[]:T=e.length,w=Ie?function(t){if(t>=e.length){var n=new Uint8Array(Math.max(t+256,2*e.length));n.set(e,0),e=n}}:function(){},k=Ie?function(){return new Uint8Array(e.buffer,0,T)}:function(){return e},y=Ie?function(t){if("string"==typeof t)return _(t);var n=t.length;w(S+n),e.set(t,S),S+=n,S>T&&(T=S)}:function(e){if("string"==typeof e)return _(e);for(var t=0;t<e.length;++t)i(e[t])},x=Ie?function(t,n){if(e.buffer.slice)return new Uint8Array(e.buffer.slice(t,t+n));var i=new Uint8Array(n);return i.set(new Uint8Array(e.buffer,t,n)),i}:function(t,n){return e.slice(t,t+n)},C={eof:t,readByte:n,writeByte:i,readShort:o,writeShort:r,readLong:l,writeLong:c,readFixed:h,writeFixed:p,readShort_:a,writeShort_:s,readLong_:d,writeLong_:u,readFixed_:f,writeFixed_:g,read:m,write:y,readString:v,writeString:_,times:b,get:k,slice:x,offset:function(e){return null!=e?(S=e,C):S},skip:function(e){S+=e},toString:function(){throw Error("FIX CALLER. BinaryStream is no longer convertible to string!")},length:function(){return T},saveExcursion:function(e){var t=S;try{return e()}finally{S=t}},writeBase64:function(e){window.atob?_(window.atob(e)):y(Me.decode(e))},base64:function(){return Me.encode(k())}}}function n(e){for(var t,n,i=[],o=0,r=e.length;o<r;)t=e.charCodeAt(o++),t>=55296&&t<=56319&&o<r?(n=e.charCodeAt(o++),56320==(64512&n)?i.push(((1023&t)<<10)+(1023&n)+65536):(i.push(t),o--)):i.push(t);return i}function i(e){return e.map(function(e){var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),t+=String.fromCharCode(e)}).join("")}function o(e){var t,n=window.atob(e),i=new Uint8Array(n.length);for(t=0;t<n.length;t++)i[t]=n.charCodeAt(t);return i}function r(e){var t,n=new Uint8Array(e.length);for(t=0;t<e.length;t++)n[t]=e[t];return n}function a(e){return window.atob?o(e):r(Me.decode(e))}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function l(e){return Object.keys(e).sort(function(e,t){return e-t}).map(parseFloat)}function c(e){var t,n,i;for(this.raw=e,this.scalerType=e.readLong(),this.tableCount=e.readShort(),this.searchRange=e.readShort(),this.entrySelector=e.readShort(),this.rangeShift=e.readShort(),t=this.tables={},n=0;n<this.tableCount;++n)i={tag:e.readString(4),checksum:e.readLong(),offset:e.readLong(),length:e.readLong()},t[i.tag]=i}function d(e){function t(e,t){this.definition=t,this.length=t.length,this.offset=t.offset,this.file=e,this.rawData=e.raw,this.parse(e.raw)}t.prototype.raw=function(){return this.rawData.slice(this.offset,this.length)};for(var n in e)s(e,n)&&(t[n]=t.prototype[n]=e[n]);return t}function u(){var e,t="",n=We+"";for(e=0;e<n.length;++e)t+=String.fromCharCode(n.charCodeAt(e)-48+65);return++We,t}function h(e){this.font=e,this.subset={},this.unicodes={},this.ogid2ngid={0:0},this.ngid2ogid={0:0},this.ncid2ogid={},this.next=this.firstChar=1,this.nextGid=1,this.psName=u()+"+"+this.font.psName}function p(e,n){var i,o,r,a,s=this,l=s.contents=t(e);if("ttcf"==l.readString(4)){if(o=function(){l.offset(i),s.parse()},!n)throw Error("Must specify a name for TTC files");for(l.readLong(),r=l.readLong(),a=0;a<r;++a)if(i=l.readLong(),l.saveExcursion(o),s.psName==n)return;throw Error("Font "+n+" not found in collection")}l.offset(0),s.parse()}function f(){function e(){var t,n,o,r=arguments;for(t=0;t<arguments.length;++t){if(n=r[t],void 0===n)throw Error("Cannot output undefined to PDF");if(n instanceof R)n.beforeRender(e),n.render(e);else if(Xe(n))D(n,e);else if(T(n))A(n,e);else if("number"==typeof n){if(isNaN(n))throw Error("Cannot output NaN to PDF");o=n.toFixed(7),o.indexOf(".")>=0&&(o=o.replace(/\.?0+$/,"")),"-0"==o&&(o="0"),i.writeString(o)}else/string|boolean/.test(typeof n)?i.writeString(n+""):"function"==typeof n.get?i.write(n.get()):"object"==typeof n&&(n?e(new nt(n)):i.writeString("null"))}}var n=0,i=t();return e.writeData=function(e){i.write(e)},e.withIndent=function(t){++n,t(e),--n},e.indent=function(){e(qe,x("",2*n," ")),e.apply(null,arguments)},e.offset=function(){return i.offset()},e.toString=function(){throw Error("FIX CALLER")},e.get=function(){return i.get()},e.stream=function(){return i},e}function g(e,t){var n=e.beforeRender,i=e.render;e.beforeRender=function(){},e.render=function(e){e(t," 0 R")},e.renderFull=function(o){e._offset=o.offset(),o(t," 0 obj "),n.call(e,o),i.call(e,o),o(" endobj")}}function m(e){var t,n,i;if("function"!=typeof e&&(t=e,e=function(e,n){return e in t?t[e]:n}),n=e("paperSize",Ge.a4),!n)return{};if("string"==typeof n&&(n=Ge[n.toLowerCase()],null==n))throw Error("Unknown paper size");return n[0]=F(n[0]),n[1]=F(n[1]),e("landscape",!1)&&(n=[Math.max(n[0],n[1]),Math.min(n[0],n[1])]),i=e("margin"),i&&("string"==typeof i||"number"==typeof i?(i=F(i,0),i={left:i,top:i,right:i,bottom:i}):i={left:F(i.left,0),top:F(i.top,0),right:F(i.right,0),bottom:F(i.bottom,0)},e("addMargin")&&(n[0]+=i.left+i.right,n[1]+=i.top+i.bottom)),{paperSize:n,margin:i}}function v(e){function t(t,n){return e&&null!=e[t]?e[t]:n}var n,i,o,r,a=this,s=f(),l=0,c=[];a.getOption=t,a.attach=function(e){return c.indexOf(e)<0&&(g(e,++l),c.push(e)),e},a.pages=[],a.FONTS={},a.IMAGES={},a.GRAD_COL_FUNCTIONS={},a.GRAD_OPC_FUNCTIONS={},a.GRAD_COL={},a.GRAD_OPC={},n=a.attach(new ot),i=a.attach(new rt),t("autoPrint")&&(o={},o.JavaScript=new nt({Names:[new Je("JS"),a.attach(new nt({S:z("JavaScript"),JS:new Je("print(true);")}))]}),n.props.Names=new nt(o)),n.setPages(i),r=a.attach(new nt({Producer:new Je(t("producer","Kendo UI PDF Generator")),Title:new Je(t("title","")),Author:new Je(t("author","")),Subject:new Je(t("subject","")),Keywords:new Je(t("keywords","")),Creator:new Je(t("creator","Kendo UI PDF Generator")),CreationDate:t("date",new Date)})),a.addPage=function(e){var t,n,o,r=m(function(t,n){return e&&null!=e[t]?e[t]:n}),s=r.paperSize,l=r.margin,c=s[0],d=s[1];return l&&(c-=l.left+l.right,d-=l.top+l.bottom),t=new it(f(),null,(!0)),n={Contents:a.attach(t),Parent:i,MediaBox:[0,0,s[0],s[1]]},o=new dt(a,n),o._content=t,i.addPage(a.attach(o)),o.transform(1,0,0,-1,0,s[1]),l&&(o.translate(l.left,l.top),o.rect(0,0,c,d),o.clip()),a.pages.push(o),o},a.render=function(){var e,t;for(s("%PDF-1.4",qe,"%ÂÁÚÏÎ",qe,qe),e=0;e<c.length;++e)c[e].renderFull(s),s(qe,qe);for(t=s.offset(),s("xref",qe,0," ",c.length+1,qe),s("0000000000 65535 f ",qe),e=0;e<c.length;++e)s(C(c[e]._offset,10)," 00000 n ",qe);return s(qe),s("trailer",qe),s(new nt({Size:c.length+1,Root:n,Info:r}),qe,qe),s("startxref",qe,t,qe),s("%%EOF",qe),s.stream().offset(0)}}function _(e,t){function n(){window.console&&(window.console.error?window.console.error("Cannot load URL: %s",e):window.console.log("Cannot load URL: %s",e)),t(null)}var i,o;return Ue.msie&&(i=/^data:.*?;base64,/i.exec(e))?void t(a(e.substr(i[0].length))):(o=new XMLHttpRequest,o.open("GET",e,!0),Ie&&(o.responseType="arraybuffer"),o.onload=function(){200==o.status||304==o.status?t(Ie?new Uint8Array(o.response):new window.VBArray(o.responseBody).toArray()):n()},o.onerror=n,void o.send(null))}function b(e,t){var n=$e[e];n?t(n):_(e,function(n){if(null==n)throw Error("Cannot load font from "+e);var i=new p(n);$e[e]=i,t(i)})}function w(){Ye={}}function k(e,n,i){function o(e){u.src=e,u.complete&&!Ue.msie?s():(u.onload=s,u.onerror=a)}function r(){var o,r,s,c,d,h,p,f,g,m,v;n||(n={width:u.width,height:u.height}),o=document.createElement("canvas"),o.width=n.width,o.height=n.height,r=o.getContext("2d"),r.drawImage(u,0,0,n.width,n.height);try{s=r.getImageData(0,0,n.width,n.height)}catch(_){return void a()}finally{l&&URL.revokeObjectURL(l)}for(c=!1,d=t(),h=t(),p=s.data,f=0;f<p.length;)d.writeByte(p[f++]),d.writeByte(p[f++]),d.writeByte(p[f++]),g=p[f++],g<255&&(c=!0),h.writeByte(g);c?u=new L(n.width,n.height,d,h):(m=o.toDataURL("image/jpeg"),m=m.substr(m.indexOf(";base64,")+8),v=t(),v.writeBase64(m),u=new B(v)),i(Ye[e]=u)}function a(){i(Ye[e]="ERROR")}function s(){if(n&&(n.width>=u.width||n.height>=u.height)&&(n=null),!n&&c&&/^image\/jpe?g$/i.test(c.type)){var o=new FileReader;o.onload=function(){try{var n=new B(t(new Uint8Array(this.result)));URL.revokeObjectURL(l),i(Ye[e]=n)}catch(o){r()}},o.readAsArrayBuffer(c)}else r()}var l,c,d,u=Ye[e];u?i(u):(u=new Image,/^data:/i.test(e)||(u.crossOrigin="Anonymous"),Ie&&!/^data:/i.test(e)?(d=new XMLHttpRequest,d.onload=function(){c=d.response,l=URL.createObjectURL(c),o(l)},d.onerror=a,d.open("GET",e,!0),d.responseType="blob",d.send()):o(e))}function y(e){return function(t,n){function i(){0===--o&&n()}var o=t.length,r=o;if(0===o)return n();for(;r-- >0;)e(t[r],i)}}function x(e,t,n){for(;e.length<t;)e=n+e;return e}function C(e,t){return x(e+"",t,"0")}function S(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function T(e){return e instanceof Date}function D(e,t){t("["),e.length>0&&t.withIndent(function(){for(var n=0;n<e.length;++n)n>0&&n%8===0?t.indent(e[n]):t(" ",e[n])}),t(" ]")}function A(e,t){t("(D:",C(e.getUTCFullYear(),4),C(e.getUTCMonth()+1,2),C(e.getUTCDate(),2),C(e.getUTCHours(),2),C(e.getUTCMinutes(),2),C(e.getUTCSeconds(),2),"Z)")}function E(e){return e*(72/25.4)}function I(e){return E(10*e)}function M(e){return 72*e}function F(e,t){var n,i;if("number"==typeof e)return e;if("string"==typeof e&&(n=/^\s*([0-9.]+)\s*(mm|cm|in|pt)\s*$/.exec(e),n&&(i=parseFloat(n[1]),!isNaN(i))))return"pt"==n[2]?i:{mm:E,cm:I,"in":M}[n[2]](i);if(null!=t)return t;throw Error("Can't parse unit: "+e)}function R(){}function P(e,t,n){n||(n=R),e.prototype=new n;for(var i in t)S(t,i)&&(e.prototype[i]=t[i]);return e}function z(e){return S(tt,e)?tt[e]:tt[e]=new et(e)}function B(e){var t,n,i,o,r,a,s,l,c;if(e.offset(0),r=e.readShort(),65496!=r)throw Error("Invalid JPEG image");for(;!e.eof();){if(a=e.readByte(),255!=a)throw Error("Invalid JPEG image");if(s=e.readByte(),l=e.readShort(),at.indexOf(s)>=0){o=e.readByte(),n=e.readShort(),t=e.readShort(),i=e.readByte();break}e.skip(l-2)}if(null==i)throw Error("Invalid JPEG image");switch(c={Type:z("XObject"),Subtype:z("Image"),Width:t,Height:n,BitsPerComponent:o,Filter:z("DCTDecode")},i){case 1:c.ColorSpace=z("DeviceGray");break;case 3:c.ColorSpace=z("DeviceRGB");break;case 4:c.ColorSpace=z("DeviceCMYK"),c.Decode=[1,0,1,0,1,0,1,0]}this.asStream=function(){e.offset(0);var t=new it(e,c);return t._resourceName=z("I"+ ++je),t}}function L(e,t,n,i){this.asStream=function(o){var r=new it(i,{Type:z("XObject"),Subtype:z("Image"),Width:e,Height:t,BitsPerComponent:8,ColorSpace:z("DeviceGray")},(!0)),a=new it(n,{Type:z("XObject"),Subtype:z("Image"),Width:e,Height:t,BitsPerComponent:8,ColorSpace:z("DeviceRGB"),SMask:o.attach(r)},(!0));return a._resourceName=z("I"+ ++je),a}}function H(e){return e.map(function(e){return Xe(e)?H(e):"number"==typeof e?(Math.round(1e3*e)/1e3).toFixed(3):e}).join(" ")}function N(e,t,n,i,o,r,a){var s=H([t,n,i,o,r,a]),l=e.GRAD_COL_FUNCTIONS[s];return l||(l=e.GRAD_COL_FUNCTIONS[s]=e.attach(new nt({FunctionType:2,Domain:[0,1],Range:[0,1,0,1,0,1],N:1,C0:[t,n,i],C1:[o,r,a]}))),l}function O(e,t,n){var i=H([t,n]),o=e.GRAD_OPC_FUNCTIONS[i];return o||(o=e.GRAD_OPC_FUNCTIONS[i]=e.attach(new nt({FunctionType:2,Domain:[0,1],Range:[0,1],N:1,C0:[t],C1:[n]}))),o}function V(e,t){function n(e){return 1==e.length?e[0]:{FunctionType:3,Functions:e,Domain:[0,1],Bounds:u,Encode:h}}var i,o,r,a,s,l=!1,c=[],d=[],u=[],h=[];for(i=1;i<t.length;++i)o=t[i-1],r=t[i],a=o.color,s=r.color,d.push(N(e,a.r,a.g,a.b,s.r,s.g,s.b)),(a.a<1||s.a<1)&&(l=!0),u.push(r.offset),h.push(0,1);if(l)for(i=1;i<t.length;++i)o=t[i-1],r=t[i],a=o.color,s=r.color,c.push(O(e,a.a,s.a));return u.pop(),{hasAlpha:l,colors:n(d),opacities:l?n(c):null}}function W(e,t,n,i,o,r){var a,s,l;return r||(l=[t].concat(i),n.forEach(function(e){l.push(e.offset,e.color.r,e.color.g,e.color.b)}),s=H(l),a=e.GRAD_COL[s]),a||(a=new nt({Type:z("Shading"),ShadingType:t?3:2,ColorSpace:z("DeviceRGB"),Coords:i,Domain:[0,1],Function:o,Extend:[!0,!0]}),e.attach(a),a._resourceName="S"+ ++je,s&&(e.GRAD_COL[s]=a)),a}function U(e,t,n,i,o,r){var a,s,l;return r||(l=[t].concat(i),n.forEach(function(e){l.push(e.offset,e.color.a)}),s=H(l),a=e.GRAD_OPC[s]),a||(a=new nt({Type:z("ExtGState"),AIS:!1,CA:1,ca:1,SMask:{Type:z("Mask"),S:z("Luminosity"),G:e.attach(new it("/a0 gs /s0 sh",{Type:z("XObject"),Subtype:z("Form"),FormType:1,BBox:r?[r.left,r.top+r.height,r.left+r.width,r.top]:[0,1,1,0],Group:{Type:z("Group"),S:z("Transparency"),CS:z("DeviceGray"),I:!0},Resources:{ExtGState:{a0:{CA:1,ca:1}},Shading:{s0:{ColorSpace:z("DeviceGray"),Coords:i,Domain:[0,1],ShadingType:t?3:2,Function:o,Extend:[!0,!0]}}}}))}}),e.attach(a),a._resourceName="O"+ ++je,s&&(e.GRAD_OPC[s]=a)),a}function q(e,t,n){var i="radial"==t.type,o=V(e,t.stops),r=i?[t.start.x,t.start.y,t.start.r,t.end.x,t.end.y,t.end.r]:[t.start.x,t.start.y,t.end.x,t.end.y],a=W(e,i,t.stops,r,o.colors,t.userSpace&&n),s=o.hasAlpha?U(e,i,t.stops,r,o.opacities,t.userSpace&&n):null;return{hasAlpha:o.hasAlpha,shading:a,opacity:s}}function j(e){return e.replace(/^\s*(['"])(.*)\1\s*$/,"$2")}function G(e){var t,n=/^\s*((normal|italic)\s+)?((normal|small-caps)\s+)?((normal|bold|\d+)\s+)?(([0-9.]+)(px|pt))(\/(([0-9.]+)(px|pt)|normal))?\s+(.*?)\s*$/i,i=n.exec(e);return i?(t=i[8]?parseInt(i[8],10):12,{italic:i[2]&&"italic"==i[2].toLowerCase(),variant:i[4],bold:i[6]&&/bold|700/i.test(i[6]),fontSize:t,lineHeight:i[12]?"normal"==i[12]?t:parseInt(i[12],10):null,fontFamily:i[14].split(/\s*,\s*/g).map(j)}):{fontSize:12,fontFamily:"sans-serif"}}function $(e){function t(t){return e.bold&&(t+="|bold"),e.italic&&(t+="|italic"),t.toLowerCase()}var n,i,o,r=e.fontFamily;if(r instanceof Array)for(o=0;o<r.length&&(n=t(r[o]),!(i=ut[n]));++o);else i=ut[r.toLowerCase()];for(;"function"==typeof i;)i=i();return i||(i="Times-Roman"),i}function Y(e,t){e=e.toLowerCase(),ut[e]=function(){return ut[t]},ut[e+"|bold"]=function(){return ut[t+"|bold"]},ut[e+"|italic"]=function(){return ut[t+"|italic"]},ut[e+"|bold|italic"]=function(){return ut[t+"|bold|italic"]}}function K(e,t){if(1==arguments.length)for(var n in e)S(e,n)&&K(n,e[n]);else switch(e=e.toLowerCase(),ut[e]=t,e){case"dejavu sans":ut["sans-serif"]=t;break;case"dejavu sans|bold":ut["sans-serif|bold"]=t;break;case"dejavu sans|italic":ut["sans-serif|italic"]=t;break;case"dejavu sans|bold|italic":ut["sans-serif|bold|italic"]=t;break;case"dejavu serif":ut.serif=t;break;case"dejavu serif|bold":ut["serif|bold"]=t;break;case"dejavu serif|italic":ut["serif|italic"]=t;break;case"dejavu serif|bold|italic":ut["serif|bold|italic"]=t;break;case"dejavu mono":ut.monospace=t;break;case"dejavu mono|bold":ut["monospace|bold"]=t;break;case"dejavu mono|italic":ut["monospace|italic"]=t;break;case"dejavu mono|bold|italic":ut["monospace|bold|italic"]=t}}function Q(e,t){var n=e[0],i=e[1],o=e[2],r=e[3],a=e[4],s=e[5],l=t[0],c=t[1],d=t[2],u=t[3],h=t[4],p=t[5];return[n*l+i*d,n*c+i*u,o*l+r*d,o*c+r*u,a*l+s*d+h,a*c+s*u+p]}function X(e){return 1===e[0]&&0===e[1]&&0===e[2]&&1===e[3]&&0===e[4]&&0===e[5]}function J(e,t){function n(e,t,n){return n||(n=s),n.pdf&&null!=n.pdf[e]?n.pdf[e]:t}function i(){function i(e){var t,i,o,a,s,l=e.options,c=ke(e),d=c.bbox;e=c.root,t=n("paperSize",n("paperSize","auto"),l),i=!1,"auto"==t&&(d?(o=d.getSize(),t=[o.width,o.height],i=!0,a=d.getOrigin(),c=new De.Group,c.transform(new Ee.Matrix(1,0,0,1,(-a.x),(-a.y))),c.append(e),e=c):t="A4"),s=r.addPage({paperSize:t,margin:n("margin",n("margin"),l),addMargin:i,landscape:n("landscape",n("landscape",!1),l)}),ie(e,s,r)}if(!(--o>0)){var r=new v({producer:n("producer"),title:n("title"),author:n("author"),subject:n("subject"),keywords:n("keywords"),creator:n("creator"),date:n("date"),autoPrint:n("autoPrint")});l?e.children.forEach(i):i(e),t(r.render(),r)}}var o,r=[],a={},s=e.options,l=n("multiPage"),c=n("imgDPI");c&&w(),e.traverse(function(e){ne({Image:function(e){var t,n,i=e.src();c?(t=e.bbox().size,n=a[i],t={width:Math.ceil(t.width*c/72),height:Math.ceil(t.height*c/72)},n&&(t.width=Math.max(n.width,t.width),t.height=Math.max(n.height,t.height)),a[i]=t):a[i]=null},Text:function(e){var t=G(e.options.font),n=$(t);r.indexOf(n)<0&&r.push(n)}},e)}),o=2,Ke(r,i),Qe(a,i)}function Z(e,t){J(e,function(e){t("data:application/pdf;base64,"+e.base64()); +})}function ee(e,t){J(e,function(e){t(new window.Blob([e.get()],{type:"application/pdf"}))})}function te(t,n,i,o){window.Blob&&!Se.safari?ee(t,function(t){e.saveAs({dataURI:t,fileName:n}),o&&o(t)}):Z(t,function(t){e.saveAs({dataURI:t,fileName:n,proxyURL:i}),o&&o(t)})}function ne(e,t){var n=e[t.nodeType];return n?n.call.apply(n,arguments):t}function ie(e,t,n){var i,o,r;e.options._pdfDebug&&t.comment("BEGIN: "+e.options._pdfDebug),i=e.transform(),o=e.opacity(),t.save(),null!=o&&o<1&&t.setOpacity(o),oe(e,t,n),re(e,t,n),i&&(r=i.matrix(),t.transform(r.a,r.b,r.c,r.d,r.e,r.f)),ae(e,t,n),ne({Path:he,MultiPath:pe,Circle:fe,Arc:ge,Text:me,Image:_e,Group:ve,Rect:be},e,t,n),t.restore(),e.options._pdfDebug&&t.comment("END: "+e.options._pdfDebug)}function oe(e,t){var n,i,o,r,a,s,l=e.stroke&&e.stroke();if(l){if(n=l.color){if(n=we(n),null==n)return;t.setStrokeColor(n.r,n.g,n.b),1!=n.a&&t.setStrokeOpacity(n.a)}if(i=l.width,null!=i){if(0===i)return;t.setLineWidth(i)}o=l.dashType,o&&t.setDashPattern(ft[o],0),r=l.lineCap,r&&t.setLineCap(gt[r]),a=l.lineJoin,a&&t.setLineJoin(mt[a]),s=l.opacity,null!=s&&t.setStrokeOpacity(s)}}function re(e,t){var n,i,o=e.fill&&e.fill();if(o&&!(o instanceof De.Gradient)){if(n=o.color){if(n=we(n),null==n)return;t.setFillColor(n.r,n.g,n.b),1!=n.a&&t.setFillOpacity(n.a)}i=o.opacity,null!=i&&t.setFillOpacity(i)}}function ae(e,t,n){var i=e.clip();i&&(ue(i,t,n),t.clip())}function se(e){return e&&(e instanceof De.Gradient||e.color&&!/^(none|transparent)$/i.test(e.color)&&(null==e.width||e.width>0)&&(null==e.opacity||e.opacity>0))}function le(e,t,n,i){var o,r,a,s,l,c,d,u,h=e.fill();if(h instanceof De.Gradient)return i?t.clipStroke():t.clip(),o=h instanceof De.RadialGradient,o?(r={x:h.center().x,y:h.center().y,r:0},a={x:h.center().x,y:h.center().y,r:h.radius()}):(r={x:h.start().x,y:h.start().y},a={x:h.end().x,y:h.end().y}),s=h.stops.elements().map(function(e){var t,n=e.offset();return n=/%$/.test(n)?parseFloat(n)/100:parseFloat(n),t=we(e.color()),t.a*=e.opacity(),{offset:n,color:t}}),s.unshift(s[0]),s.push(s[s.length-1]),l={userSpace:h.userSpace(),type:o?"radial":"linear",start:r,end:a,stops:s},c=e.rawBBox(),d=c.topLeft(),u=c.getSize(),c={left:d.x,top:d.y,width:u.width,height:u.height},t.gradient(l,c),!0}function ce(e,t,n){se(e.fill())&&se(e.stroke())?le(e,t,n,!0)||t.fillStroke():se(e.fill())?le(e,t,n,!1)||t.fill():se(e.stroke())?t.stroke():t.nop()}function de(e,t){var n,i,o,r=e.segments;if(4==r.length&&e.options.closed){for(n=[],i=0;i<r.length;++i){if(r[i].controlIn())return!1;n[i]=r[i].anchor()}if(o=n[0].y==n[1].y&&n[1].x==n[2].x&&n[2].y==n[3].y&&n[3].x==n[0].x||n[0].x==n[1].x&&n[1].y==n[2].y&&n[2].x==n[3].x&&n[3].y==n[0].y)return t.rect(n[0].x,n[0].y,n[2].x-n[0].x,n[2].y-n[0].y),!0}}function ue(e,t,n){var i,o,r,a,s,l,c=e.segments;if(0!==c.length&&!de(e,t,n)){for(o=0;o<c.length;++o)r=c[o],a=r.anchor(),i?(s=i.controlOut(),l=r.controlIn(),s&&l?t.bezier(s.x,s.y,l.x,l.y,a.x,a.y):t.lineTo(a.x,a.y)):t.moveTo(a.x,a.y),i=r;e.options.closed&&t.close()}}function he(e,t,n){ue(e,t,n),ce(e,t,n)}function pe(e,t,n){var i,o=e.paths;for(i=0;i<o.length;++i)ue(o[i],t,n);ce(e,t,n)}function fe(e,t,n){var i=e.geometry();t.circle(i.center.x,i.center.y,i.radius),ce(e,t,n)}function ge(e,t,n){var i,o=e.geometry().curvePoints();for(t.moveTo(o[0].x,o[0].y),i=1;i<o.length;)t.bezier(o[i].x,o[i++].y,o[i].x,o[i++].y,o[i].x,o[i++].y);ce(e,t,n)}function me(e,t){var n,i=G(e.options.font),o=e._position;e.fill()&&e.stroke()?n=pt.fillAndStroke:e.fill()?n=pt.fill:e.stroke()&&(n=pt.stroke),t.transform(1,0,0,-1,o.x,o.y+i.fontSize),t.beginText(),t.setFont($(i),i.fontSize),t.setTextRenderingMode(n),t.showText(e.content(),e._pdfRect?e._pdfRect.width():null),t.endText()}function ve(e,t,n){var i,o;for(e._pdfLink&&t.addLink(e._pdfLink.url,e._pdfLink),i=e.children,o=0;o<i.length;++o)ie(i[o],t,n)}function _e(e,t){var n,i,o,r=e.src();r&&(n=e.rect(),i=n.getOrigin(),o=n.getSize(),t.transform(o.width,0,0,-o.height,i.x,i.y+o.height),t.drawImage(r))}function be(e,t,n){var i=e.geometry();t.rect(i.origin.x,i.origin.y,i.size.width,i.size.height),ce(e,t,n)}function we(t){var n=e.parseColor(t,!0);return n?n.toRGB():null}function ke(e){function t(e){return s=!0,e}function n(e){return e.visible()&&e.opacity()>0&&(se(e.fill())||se(e.stroke()))}function i(e){var t,n,i=[];for(t=0;t<e.length;++t)n=a(e[t]),null!=n&&i.push(n);return i}function o(e,t){var n,i=l,o=c;e.transform()&&(c=c.multiplyCopy(e.transform().matrix())),n=e.clip(),n&&(n=n.bbox(),n&&(n=n.bbox(c),l=l?Ee.Rect.intersect(l,n):n));try{return t()}finally{l=i,c=o}}function r(e){if(null==l)return!1;var t=e.rawBBox().bbox(c);return l&&t&&(t=Ee.Rect.intersect(t,l)),t}function a(a){return o(a,function(){if(!(a instanceof De.Group||a instanceof De.MultiPath)){var o=r(a);if(!o)return t(null);d=d?Ee.Rect.union(d,o):o}return ne({Path:function(e){return 0!==e.segments.length&&n(e)?e:t(null)},MultiPath:function(e){if(!n(e))return t(null);var o=new De.MultiPath(e.options);return o.paths=i(e.paths),0===o.paths.length?t(null):o},Circle:function(e){return n(e)?e:t(null)},Arc:function(e){return n(e)?e:t(null)},Text:function(e){return/\S/.test(e.content())&&n(e)?e:t(null)},Image:function(e){return e.visible()&&e.opacity()>0?e:t(null)},Group:function(n){var o=new De.Group(n.options);return o.children=i(n.children),o._pdfLink=n._pdfLink,n===e||0!==o.children.length||n._pdfLink?o:t(null)},Rect:function(e){return n(e)?e:t(null)}},a)})}var s,l=!1,c=Ee.Matrix.unit(),d=null;do s=!1,e=a(e);while(e&&s);return{root:e,bbox:d}}function ye(e,t){var n,i=Ae.createPromise();for(n in t)"margin"==n&&e.options.pdf&&e.options.pdf._ignoreMargin||e.options.set("pdf."+n,t[n]);return Z(e,i.resolve),i}function xe(e,t){var n,i=Ae.createPromise();for(n in t)"margin"==n&&e.options.pdf&&e.options.pdf._ignoreMargin||e.options.set("pdf."+n,t[n]);return window.Blob&&!Se.safari?ee(e,i.resolve):Z(e,i.resolve),i}var Ce,Se,Te,De,Ae,Ee,Ie,Me,Fe,Re,Pe,ze,Be,Le,He,Ne,Oe,Ve,We,Ue,qe,je,Ge,$e,Ye,Ke,Qe,Xe,Je,Ze,et,tt,nt,it,ot,rt,at,st,lt,ct,dt,ut,ht,pt,ft,gt,mt;window.kendo.pdf=window.kendo.pdf||{},Ce=e.support,Se=Ce.browser,Te=e.pdf,De=e.drawing,Ae=De.util,Ee=e.geometry,Ie="undefined"!=typeof Uint8Array&&e.support.browser&&(!e.support.browser.msie||e.support.browser.version>9),Me=function(){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{decode:function(t){for(var n,i,o,r,a,s,l,c=t.replace(/[^A-Za-z0-9\+\/\=]/g,""),d=0,u=c.length,h=[];d<u;)n=e.indexOf(c.charAt(d++)),i=e.indexOf(c.charAt(d++)),o=e.indexOf(c.charAt(d++)),r=e.indexOf(c.charAt(d++)),a=n<<2|i>>>4,s=(15&i)<<4|o>>>2,l=(3&o)<<6|r,h.push(a),64!=o&&h.push(s),64!=r&&h.push(l);return h},encode:function(t){for(var n,i,o,r,a,s,l,c=0,d=t.length,u="";c<d;)n=t[c++],i=t[c++],o=t[c++],r=n>>>2,a=(3&n)<<4|i>>>4,s=(15&i)<<2|o>>>6,l=63&o,c-d==2?s=l=64:c-d==1&&(l=64),u+=e.charAt(r)+e.charAt(a)+e.charAt(s)+e.charAt(l);return u}}}(),c.prototype={readTable:function(e,t){var n=this.tables[e];if(!n)throw Error("Table "+e+" not found in directory");return this[e]=n.table=new t(this,n)},render:function(e){var n,i,o,r,a,l,c,d,u=this,h=Object.keys(e).length,p=Math.pow(2,Math.floor(Math.log(h)/Math.LN2)),f=16*p,g=Math.floor(Math.log(p)/Math.LN2),m=16*h-f,v=t();v.writeLong(this.scalerType),v.writeShort(h),v.writeShort(f),v.writeShort(g),v.writeShort(m),n=16*h,i=v.offset()+n,o=null,r=t();for(a in e)if(s(e,a))for(l=e[a],v.writeString(a),v.writeLong(u.checksum(l)),v.writeLong(i),v.writeLong(l.length),r.write(l),"head"==a&&(o=i),i+=l.length;i%4;)r.writeByte(0),i++;return v.write(r.get()),c=this.checksum(v.get()),d=2981146554-c,v.offset(o+8),v.writeLong(d),v.get()},checksum:function(e){e=t(e);for(var n=0;!e.eof();)n+=e.readLong();return 4294967295&n}},Fe=d({parse:function(e){e.offset(this.offset),this.version=e.readLong(),this.revision=e.readLong(),this.checkSumAdjustment=e.readLong(),this.magicNumber=e.readLong(),this.flags=e.readShort(),this.unitsPerEm=e.readShort(),this.created=e.read(8),this.modified=e.read(8),this.xMin=e.readShort_(),this.yMin=e.readShort_(),this.xMax=e.readShort_(),this.yMax=e.readShort_(),this.macStyle=e.readShort(),this.lowestRecPPEM=e.readShort(),this.fontDirectionHint=e.readShort_(),this.indexToLocFormat=e.readShort_(),this.glyphDataFormat=e.readShort_()},render:function(e){var n=t();return n.writeLong(this.version),n.writeLong(this.revision),n.writeLong(0),n.writeLong(this.magicNumber),n.writeShort(this.flags),n.writeShort(this.unitsPerEm),n.write(this.created),n.write(this.modified),n.writeShort_(this.xMin),n.writeShort_(this.yMin),n.writeShort_(this.xMax),n.writeShort_(this.yMax),n.writeShort(this.macStyle),n.writeShort(this.lowestRecPPEM),n.writeShort_(this.fontDirectionHint),n.writeShort_(e),n.writeShort_(this.glyphDataFormat),n.get()}}),Re=d({parse:function(e){e.offset(this.offset);var t=this.file.head.indexToLocFormat;this.offsets=0===t?e.times(this.length/2,function(){return 2*e.readShort()}):e.times(this.length/4,e.readLong)},offsetOf:function(e){return this.offsets[e]},lengthOf:function(e){return this.offsets[e+1]-this.offsets[e]},render:function(e){var n,i=t(),o=e[e.length-1]>65535;for(n=0;n<e.length;++n)o?i.writeLong(e[n]):i.writeShort(e[n]/2);return{format:o?1:0,table:i.get()}}}),Pe=d({parse:function(e){e.offset(this.offset),this.version=e.readLong(),this.ascent=e.readShort_(),this.descent=e.readShort_(),this.lineGap=e.readShort_(),this.advanceWidthMax=e.readShort(),this.minLeftSideBearing=e.readShort_(),this.minRightSideBearing=e.readShort_(),this.xMaxExtent=e.readShort_(),this.caretSlopeRise=e.readShort_(),this.caretSlopeRun=e.readShort_(),this.caretOffset=e.readShort_(),e.skip(8),this.metricDataFormat=e.readShort_(),this.numOfLongHorMetrics=e.readShort()},render:function(e){var n=t();return n.writeLong(this.version),n.writeShort_(this.ascent),n.writeShort_(this.descent),n.writeShort_(this.lineGap),n.writeShort(this.advanceWidthMax),n.writeShort_(this.minLeftSideBearing),n.writeShort_(this.minRightSideBearing),n.writeShort_(this.xMaxExtent),n.writeShort_(this.caretSlopeRise),n.writeShort_(this.caretSlopeRun),n.writeShort_(this.caretOffset),n.write([0,0,0,0,0,0,0,0]),n.writeShort_(this.metricDataFormat),n.writeShort(e.length),n.get()}}),ze=d({parse:function(e){e.offset(this.offset),this.version=e.readLong(),this.numGlyphs=e.readShort(),this.maxPoints=e.readShort(),this.maxContours=e.readShort(),this.maxComponentPoints=e.readShort(),this.maxComponentContours=e.readShort(),this.maxZones=e.readShort(),this.maxTwilightPoints=e.readShort(),this.maxStorage=e.readShort(),this.maxFunctionDefs=e.readShort(),this.maxInstructionDefs=e.readShort(),this.maxStackElements=e.readShort(),this.maxSizeOfInstructions=e.readShort(),this.maxComponentElements=e.readShort(),this.maxComponentDepth=e.readShort()},render:function(e){var n=t();return n.writeLong(this.version),n.writeShort(e.length),n.writeShort(this.maxPoints),n.writeShort(this.maxContours),n.writeShort(this.maxComponentPoints),n.writeShort(this.maxComponentContours),n.writeShort(this.maxZones),n.writeShort(this.maxTwilightPoints),n.writeShort(this.maxStorage),n.writeShort(this.maxFunctionDefs),n.writeShort(this.maxInstructionDefs),n.writeShort(this.maxStackElements),n.writeShort(this.maxSizeOfInstructions),n.writeShort(this.maxComponentElements),n.writeShort(this.maxComponentDepth),n.get()}}),Be=d({parse:function(e){var t,n,i;e.offset(this.offset),t=this.file,n=t.hhea,this.metrics=e.times(n.numOfLongHorMetrics,function(){return{advance:e.readShort(),lsb:e.readShort_()}}),i=t.maxp.numGlyphs-t.hhea.numOfLongHorMetrics,this.leftSideBearings=e.times(i,e.readShort_)},forGlyph:function(e){var t=this.metrics,n=t.length;return e<n?t[e]:{advance:t[n-1].advance,lsb:this.leftSideBearings[e-n]}},render:function(e){var n,i,o=this,r=t();for(n=0;n<e.length;++n)i=o.forGlyph(e[n]),r.writeShort(i.advance),r.writeShort_(i.lsb);return r.get()}}),Le=function(){function e(e){this.raw=e}function n(e){var t,n,s;for(this.raw=e,t=this.glyphIds=[],n=this.idOffsets=[];;){if(s=e.readShort(),n.push(e.offset()),t.push(e.readShort()),!(s&r))break;e.skip(s&i?4:2),s&l?e.skip(8):s&a?e.skip(4):s&o&&e.skip(2)}}var i,o,r,a,l;return e.prototype={compound:!1,render:function(){return this.raw.get()}},i=1,o=8,r=32,a=64,l=128,n.prototype={compound:!0,render:function(e){var n,i,o=this,r=t(this.raw.get());for(n=0;n<this.glyphIds.length;++n)i=o.glyphIds[n],r.offset(o.idOffsets[n]),r.writeShort(e[i]);return r.get()}},d({parse:function(){this.cache={}},glyphFor:function(i){var o,r,a,l,c,d,u,h,p,f,g,m=this.cache;return s(m,i)?m[i]:(o=this.file.loca,r=o.lengthOf(i),0===r?m[i]=null:(a=this.rawData,l=this.offset+o.offsetOf(i),c=t(a.slice(l,r)),d=c.readShort_(),u=c.readShort_(),h=c.readShort_(),p=c.readShort_(),f=c.readShort_(),g=m[i]=d==-1?new n(c):new e(c),g.numberOfContours=d,g.xMin=u,g.yMin=h,g.xMax=p,g.yMax=f,g))},render:function(e,n,i){var o,r,a,s=t(),l=[];for(o=0;o<n.length;++o)r=n[o],a=e[r],l.push(s.offset()),a&&s.write(a.render(i));return l.push(s.offset()),{table:s.get(),offsets:l}}})}(),He=function(){function e(e,t){this.text=e,this.length=e.length,this.platformID=t.platformID,this.platformSpecificID=t.platformSpecificID,this.languageID=t.languageID,this.nameID=t.nameID}return d({parse:function(t){var n,i,o,r,a,s,l;for(t.offset(this.offset),t.readShort(),n=t.readShort(),i=this.offset+t.readShort(),o=t.times(n,function(){return{platformID:t.readShort(),platformSpecificID:t.readShort(),languageID:t.readShort(),nameID:t.readShort(),length:t.readShort(),offset:t.readShort()+i}}),r=this.strings={},a=0;a<o.length;++a)s=o[a],t.offset(s.offset),l=t.readString(s.length),r[s.nameID]||(r[s.nameID]=[]),r[s.nameID].push(new e(l,s));this.postscriptEntry=r[6][0],this.postscriptName=this.postscriptEntry.text.replace(/[^\x20-\x7F]/g,"")},render:function(n){var i,o,r,a,l,c,d=this,u=this.strings,h=0;for(i in u)s(u,i)&&(h+=u[i].length);o=t(),r=t(),o.writeShort(0),o.writeShort(h),o.writeShort(6+12*h);for(i in u)if(s(u,i))for(a=6==i?[new e(n,d.postscriptEntry)]:u[i],l=0;l<a.length;++l)c=a[l],o.writeShort(c.platformID),o.writeShort(c.platformSpecificID),o.writeShort(c.languageID),o.writeShort(c.nameID),o.writeShort(c.length),o.writeShort(r.offset()),r.writeString(c.text);return o.write(r.get()),o.get()}})}(),Ne=function(){var e=".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat".split(/\s+/g);return d({parse:function(e){var t,n,i=this;switch(e.offset(this.offset),this.format=e.readLong(),this.italicAngle=e.readFixed_(),this.underlinePosition=e.readShort_(),this.underlineThickness=e.readShort_(),this.isFixedPitch=e.readLong(),this.minMemType42=e.readLong(),this.maxMemType42=e.readLong(),this.minMemType1=e.readLong(),this.maxMemType1=e.readLong(),this.format){case 65536:case 196608:break;case 131072:for(t=e.readShort(),this.glyphNameIndex=e.times(t,e.readShort),this.names=[],n=this.offset+this.length;e.offset()<n;)i.names.push(e.readString(e.readByte()));break;case 151552:t=e.readShort(),this.offsets=e.read(t);break;case 262144:this.map=e.times(this.file.maxp.numGlyphs,e.readShort)}},glyphFor:function(t){switch(this.format){case 65536:return e[t]||".notdef";case 131072:var n=this.glyphNameIndex[t];return n<e.length?e[n]:this.names[n-e.length]||".notdef";case 151552:case 196608:return".notdef";case 262144:return this.map[t]||65535}},render:function(n){var i,o,r,a,s,l,c,d=this;if(196608==this.format)return this.raw();for(i=t(this.rawData.slice(this.offset,32)),i.writeLong(131072),i.offset(32),o=[],r=[],a=0;a<n.length;++a)s=n[a],l=d.glyphFor(s),c=e.indexOf(l),c>=0?o.push(c):(o.push(e.length+r.length),r.push(l));for(i.writeShort(n.length),a=0;a<o.length;++a)i.writeShort(o[a]);for(a=0;a<r.length;++a)i.writeByte(r[a].length),i.writeString(r[a]);return i.get()}})}(),Oe=function(){function e(e,t,n){var i=this;i.platformID=e.readShort(),i.platformSpecificID=e.readShort(),i.offset=t+e.readLong(),e.saveExcursion(function(){var t,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b;switch(e.offset(i.offset),i.format=e.readShort()){case 0:for(i.length=e.readShort(),i.language=e.readShort(),o=0;o<256;++o)n[o]=e.readByte();break;case 4:for(i.length=e.readShort(),i.language=e.readShort(),r=e.readShort()/2,e.skip(6),a=e.times(r,e.readShort),e.skip(2),s=e.times(r,e.readShort),l=e.times(r,e.readShort_),c=e.times(r,e.readShort),d=(i.length+i.offset-e.offset())/2,u=e.times(d,e.readShort),o=0;o<r;++o)for(h=s[o],p=a[o],t=h;t<=p;++t)0===c[o]?f=t+l[o]:(g=c[o]/2-(r-o)+(t-h),f=u[g]||0,0!==f&&(f+=l[o])),n[t]=65535&f;break;case 6:for(i.length=e.readShort(),i.language=e.readShort(),t=e.readShort(),m=e.readShort();m-- >0;)n[t++]=e.readShort();break;case 12:for(e.readShort(),i.length=e.readLong(),i.language=e.readLong(),v=e.readLong();v-- >0;)for(t=e.readLong(),_=e.readLong(),b=e.readLong();t<=_;)n[t++]=b++;break;default:window.console&&window.console.error("Unhandled CMAP format: "+i.format)}})}function n(e,n){function i(t){return n[e[t]]}var o,r,a,s,c,d,u,h,p,f,g,m,v,_,b,w,k,y=l(e),x=[],C=[],S=null,T=null;for(o=0;o<y.length;++o)r=y[o],a=i(r),s=a-r,null!=S&&s===T||(S&&C.push(S),x.push(r),T=s),S=r;for(S&&C.push(S),C.push(65535),x.push(65535),c=x.length,d=2*c,u=2*Math.pow(2,Math.floor(Math.log(c)/Math.LN2)),h=Math.log(u/2)/Math.LN2,p=d-u,f=[],g=[],m=[],o=0;o<c;++o){if(v=x[o],_=C[o],65535==v){f.push(0),g.push(0);break}if(b=i(v),v-b>=32768)for(f.push(0),g.push(2*(m.length+c-o)),w=v;w<=_;++w)m.push(i(w));else f.push(b-v),g.push(0)}return k=t(),k.writeShort(3),k.writeShort(1),k.writeLong(12),k.writeShort(4),k.writeShort(16+8*c+2*m.length),k.writeShort(0),k.writeShort(d),k.writeShort(u),k.writeShort(h),k.writeShort(p),C.forEach(k.writeShort),k.writeShort(0),x.forEach(k.writeShort),f.forEach(k.writeShort_),g.forEach(k.writeShort),m.forEach(k.writeShort),k.get()}return d({parse:function(t){var n,i=this,o=i.offset;t.offset(o),i.codeMap={},i.version=t.readShort(),n=t.readShort(),i.tables=t.times(n,function(){return new e(t,o,i.codeMap)})},render:function(e,i){var o=t();return o.writeShort(0),o.writeShort(1),o.write(n(e,i)),o.get()}})}(),Ve=d({parse:function(e){e.offset(this.offset),this.version=e.readShort(),this.averageCharWidth=e.readShort_(),this.weightClass=e.readShort(),this.widthClass=e.readShort(),this.type=e.readShort(),this.ySubscriptXSize=e.readShort_(),this.ySubscriptYSize=e.readShort_(),this.ySubscriptXOffset=e.readShort_(),this.ySubscriptYOffset=e.readShort_(),this.ySuperscriptXSize=e.readShort_(),this.ySuperscriptYSize=e.readShort_(),this.ySuperscriptXOffset=e.readShort_(),this.ySuperscriptYOffset=e.readShort_(),this.yStrikeoutSize=e.readShort_(),this.yStrikeoutPosition=e.readShort_(),this.familyClass=e.readShort_(),this.panose=e.times(10,e.readByte),this.charRange=e.times(4,e.readLong),this.vendorID=e.readString(4),this.selection=e.readShort(),this.firstCharIndex=e.readShort(),this.lastCharIndex=e.readShort(),this.version>0&&(this.ascent=e.readShort_(),this.descent=e.readShort_(),this.lineGap=e.readShort_(),this.winAscent=e.readShort(),this.winDescent=e.readShort(),this.codePageRange=e.times(2,e.readLong),this.version>1&&(this.xHeight=e.readShort(),this.capHeight=e.readShort(),this.defaultChar=e.readShort(),this.breakChar=e.readShort(),this.maxContext=e.readShort()))},render:function(){return this.raw()}}),We=1e5,h.prototype={use:function(e){var t,i,o,r=this;return"string"==typeof e?n(e).reduce(function(e,t){return e+String.fromCharCode(r.use(t))},""):(t=r.unicodes[e],t||(t=r.next++,r.subset[t]=e,r.unicodes[e]=t,i=r.font.cmap.codeMap[e],i&&(r.ncid2ogid[t]=i,null==r.ogid2ngid[i]&&(o=r.nextGid++,r.ogid2ngid[i]=o,r.ngid2ogid[o]=i))),t)},encodeText:function(e){return this.use(e)},glyphIds:function(){return l(this.ogid2ngid)},glyphsFor:function(e,t){var n,i,o,r=this;for(t||(t={}),n=0;n<e.length;++n)i=e[n],t[i]||(o=t[i]=r.font.glyf.glyphFor(i),o&&o.compound&&r.glyphsFor(o.glyphIds,t));return t},render:function(){var e,t,n,i,o,r,a,c,d=this,u=this.glyphsFor(this.glyphIds());for(e in u)s(u,e)&&(e=parseInt(e,10),null==d.ogid2ngid[e]&&(t=d.nextGid++,d.ogid2ngid[e]=t,d.ngid2ogid[t]=e));return n=l(this.ngid2ogid),i=n.map(function(e){return this.ngid2ogid[e]},this),o=this.font,r=o.glyf.render(u,i,this.ogid2ngid),a=o.loca.render(r.offsets),this.lastChar=this.next-1,c={cmap:Oe.render(this.ncid2ogid,this.ogid2ngid),glyf:r.table,loca:a.table,hmtx:o.hmtx.render(i),hhea:o.hhea.render(i),maxp:o.maxp.render(i),post:o.post.render(i),name:o.name.render(this.psName),head:o.head.render(a.format),"OS/2":o.os2.render()},this.font.directory.render(c)},cidToGidMap:function(){var e,n,i,o=this,r=t(),a=0;for(e=this.firstChar;e<this.next;++e){for(;a<e;)r.writeShort(0),a++;n=o.ncid2ogid[e],n?(i=o.ogid2ngid[n],r.writeShort(i)):r.writeShort(0),a++}return r.get()}},p.prototype={parse:function(){var e=this.directory=new c(this.contents);this.head=e.readTable("head",Fe),this.loca=e.readTable("loca",Re),this.hhea=e.readTable("hhea",Pe),this.maxp=e.readTable("maxp",ze),this.hmtx=e.readTable("hmtx",Be),this.glyf=e.readTable("glyf",Le),this.name=e.readTable("name",He),this.post=e.readTable("post",Ne),this.cmap=e.readTable("cmap",Oe),this.os2=e.readTable("OS/2",Ve),this.psName=this.name.postscriptName,this.ascent=this.os2.ascent||this.hhea.ascent,this.descent=this.os2.descent||this.hhea.descent,this.lineGap=this.os2.lineGap||this.hhea.lineGap,this.scale=1e3/this.head.unitsPerEm},widthOfGlyph:function(e){return this.hmtx.forGlyph(e).advance*this.scale},makeSubset:function(){return new h(this)}},Ue=e.support.browser,qe="\n",je=0,Ge={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],executive:[521.86,756],folio:[612,936],legal:[612,1008],letter:[612,792],tabloid:[792,1224]},$e={"Times-Roman":!0,"Times-Bold":!0,"Times-Italic":!0,"Times-BoldItalic":!0,Helvetica:!0,"Helvetica-Bold":!0,"Helvetica-Oblique":!0,"Helvetica-BoldOblique":!0,Courier:!0,"Courier-Bold":!0,"Courier-Oblique":!0,"Courier-BoldOblique":!0,Symbol:!0,ZapfDingbats:!0},Ye={},Ke=y(b),Qe=function(e,t){function n(){0===--o&&t()}var i=Object.keys(e),o=i.length;return 0===o?t():void i.forEach(function(t){k(t,e[t],n)})},v.prototype={loadFonts:Ke,loadImages:Qe,getFont:function(e){var t=this.FONTS[e];if(!t){if(t=$e[e],!t)throw Error("Font "+e+" has not been loaded");t=this.attach(t===!0?new st(e):new lt(this,t)),this.FONTS[e]=t}return t},getImage:function(e){var t=this.IMAGES[e];if(!t){if(t=Ye[e],!t)throw Error("Image "+e+" has not been loaded");if("ERROR"===t)return null;t=this.IMAGES[e]=this.attach(t.asStream(this))}return t},getOpacityGS:function(e,t){var n,i,o,r=parseFloat(e).toFixed(3);return e=parseFloat(r),r+=t?"S":"F",n=this._opacityGSCache||(this._opacityGSCache={}),i=n[r],i||(o={Type:z("ExtGState")},t?o.CA=e:o.ca=e,i=this.attach(new nt(o)),i._resourceName=z("GS"+ ++je),n[r]=i),i},dict:function(e){return new nt(e)},name:function(e){return z(e)},stream:function(e,t){return new it(t,e)}},Xe=Array.isArray||function(e){return e instanceof Array},R.prototype.beforeRender=function(){},Je=P(function(e){this.value=e},{render:function(e){var t,n="",i=this.value;for(t=0;t<i.length;++t)n+=String.fromCharCode(255&i.charCodeAt(t));e("(",n.replace(/([\(\)\\])/g,"\\$1"),")")},toString:function(){return this.value}}),Ze=P(function(e){this.value=e},{render:function(e){var t,n=this;for(e("<"),t=0;t<this.value.length;++t)e(C(n.value.charCodeAt(t).toString(16),4));e(">")}},Je),et=P(function(e){this.name=e},{render:function(e){e("/"+this.escape())},escape:function(){return this.name.replace(/[^\x21-\x7E]/g,function(e){return"#"+C(e.charCodeAt(0).toString(16),2)})},toString:function(){return this.name}}),tt={},et.get=z,nt=P(function(e){this.props=e},{render:function(e){var t=this.props,n=!0;e("<<"),e.withIndent(function(){for(var i in t)S(t,i)&&!/^_/.test(i)&&(n=!1,e.indent(z(i)," ",t[i]))}),n||e.indent(),e(">>")}}),it=P(function(e,n,i){if("string"==typeof e){var o=t();o.write(e),e=o}this.data=e,this.props=n||{},this.compress=i},{render:function(e){var t=this.data.get(),n=this.props;this.compress&&Te.supportsDeflate()&&(n.Filter?n.Filter instanceof Array||(n.Filter=[n.Filter]):n.Filter=[],n.Filter.unshift(z("FlateDecode")),t=Te.deflate(t)),n.Length=t.length,e(new nt(n)," stream",qe),e.writeData(t),e(qe,"endstream")}}),ot=P(function(){this.props={Type:z("Catalog")}},{setPages:function(e){this.props.Pages=e}},nt),rt=P(function(){this.props={Type:z("Pages"),Kids:[],Count:0}},{addPage:function(e){this.props.Kids.push(e),this.props.Count++}},nt),at=[192,193,194,195,197,198,199,201,202,203,205,206,207],st=P(function(e){this.props={Type:z("Font"),Subtype:z("Type1"),BaseFont:z(e)},this._resourceName=z("F"+ ++je)},{encodeText:function(e){return new Je(e+"")}},nt),lt=P(function(e,t,n){var i,o;n=this.props=n||{},n.Type=z("Font"),n.Subtype=z("Type0"),n.Encoding=z("Identity-H"),this._pdf=e,this._font=t,this._sub=t.makeSubset(),this._resourceName=z("F"+ ++je),i=t.head,this.name=t.psName,o=this.scale=t.scale,this.bbox=[i.xMin*o,i.yMin*o,i.xMax*o,i.yMax*o],this.italicAngle=t.post.italicAngle,this.ascent=t.ascent*o,this.descent=t.descent*o,this.lineGap=t.lineGap*o,this.capHeight=t.os2.capHeight||this.ascent,this.xHeight=t.os2.xHeight||0,this.stemV=0,this.familyClass=(t.os2.familyClass||0)>>8,this.isSerif=this.familyClass>=1&&this.familyClass<=7,this.isScript=10==this.familyClass,this.flags=(t.post.isFixedPitch?1:0)|(this.isSerif?2:0)|(this.isScript?8:0)|(0!==this.italicAngle?64:0)|32},{encodeText:function(e){return new Ze(this._sub.encodeText(e+""))},getTextWidth:function(e,t){var n,i,o=this,r=0,a=this._font.cmap.codeMap;for(n=0;n<t.length;++n)i=a[t.charCodeAt(n)],r+=o._font.widthOfGlyph(i||0);return r*e/1e3},beforeRender:function(){var e,n,i,o,r=this,a=r._sub,s=a.render(),l=new it(t(s),{Length1:s.length},(!0)),c=r._pdf.attach(new nt({Type:z("FontDescriptor"),FontName:z(r._sub.psName),FontBBox:r.bbox,Flags:r.flags,StemV:r.stemV,ItalicAngle:r.italicAngle,Ascent:r.ascent,Descent:r.descent,CapHeight:r.capHeight,XHeight:r.xHeight,FontFile2:r._pdf.attach(l)})),d=a.ncid2ogid,u=a.firstChar,h=a.lastChar,p=[];!function g(e,t){if(e<=h){var n=d[e];null==n?g(e+1):(t||p.push(e,t=[]),t.push(r._font.widthOfGlyph(n)),g(e+1,t))}}(u),e=new nt({Type:z("Font"),Subtype:z("CIDFontType2"),BaseFont:z(r._sub.psName),CIDSystemInfo:new nt({Registry:new Je("Adobe"),Ordering:new Je("Identity"),Supplement:0}),FontDescriptor:c,FirstChar:u,LastChar:h,DW:Math.round(r._font.widthOfGlyph(0)),W:p,CIDToGIDMap:r._pdf.attach(r._makeCidToGidMap())}),n=r.props,n.BaseFont=z(r._sub.psName),n.DescendantFonts=[r._pdf.attach(e)],i=new ct(u,h,a.subset),o=new it(f(),null,(!0)),o.data(i),n.ToUnicode=r._pdf.attach(o)},_makeCidToGidMap:function(){return new it(t(this._sub.cidToGidMap()),null,(!0))}},nt),ct=P(function(e,t,n){this.firstChar=e,this.lastChar=t,this.map=n},{render:function(e){e.indent("/CIDInit /ProcSet findresource begin"),e.indent("12 dict begin"),e.indent("begincmap"),e.indent("/CIDSystemInfo <<"),e.indent(" /Registry (Adobe)"),e.indent(" /Ordering (UCS)"),e.indent(" /Supplement 0"),e.indent(">> def"),e.indent("/CMapName /Adobe-Identity-UCS def"),e.indent("/CMapType 2 def"),e.indent("1 begincodespacerange"),e.indent(" <0000><ffff>"),e.indent("endcodespacerange");var t=this;e.indent(t.lastChar-t.firstChar+1," beginbfchar"),e.withIndent(function(){var n,o,r,a;for(n=t.firstChar;n<=t.lastChar;++n){for(o=t.map[n],r=i([o]),e.indent("<",C(n.toString(16),4),">","<"),a=0;a<r.length;++a)e(C(r.charCodeAt(a).toString(16),4));e(">")}}),e.indent("endbfchar"),e.indent("endcmap"),e.indent("CMapName currentdict /CMap defineresource pop"),e.indent("end"),e.indent("end")}}),dt=P(function(e,t){this._pdf=e,this._rcount=0,this._textMode=!1,this._fontResources={},this._gsResources={},this._xResources={},this._patResources={},this._shResources={},this._opacity=1,this._matrix=[1,0,0,1,0,0],this._annotations=[],this._font=null,this._fontSize=null,this._contextStack=[],t=this.props=t||{},t.Type=z("Page"),t.ProcSet=[z("PDF"),z("Text"),z("ImageB"),z("ImageC"),z("ImageI")],t.Resources=new nt({Font:new nt(this._fontResources),ExtGState:new nt(this._gsResources),XObject:new nt(this._xResources),Pattern:new nt(this._patResources),Shading:new nt(this._shResources)}),t.Annots=this._annotations},{_out:function(){this._content.data.apply(null,arguments)},transform:function(e,t,n,i,o,r){X(arguments)||(this._matrix=Q(arguments,this._matrix),this._out(e," ",t," ",n," ",i," ",o," ",r," cm"),this._out(qe))},translate:function(e,t){this.transform(1,0,0,1,e,t)},scale:function(e,t){this.transform(e,0,0,t,0,0)},rotate:function(e){var t=Math.cos(e),n=Math.sin(e);this.transform(t,n,-n,t,0,0)},beginText:function(){this._textMode=!0,this._out("BT",qe)},endText:function(){this._textMode=!1,this._out("ET",qe)},_requireTextMode:function(){if(!this._textMode)throw Error("Text mode required; call page.beginText() first")},_requireFont:function(){if(!this._font)throw Error("No font selected; call page.setFont() first")},setFont:function(e,t){this._requireTextMode(),null==e?e=this._font:e instanceof lt||(e=this._pdf.getFont(e)),null==t&&(t=this._fontSize),this._fontResources[e._resourceName]=e,this._font=e,this._fontSize=t,this._out(e._resourceName," ",t," Tf",qe)},setTextLeading:function(e){this._requireTextMode(),this._out(e," TL",qe)},setTextRenderingMode:function(e){this._requireTextMode(),this._out(e," Tr",qe)},showText:function(e,t){var n,i;this._requireFont(),e.length>1&&t&&this._font instanceof lt&&(n=this._font.getTextWidth(this._fontSize,e),i=t/n*100,this._out(i," Tz ")),this._out(this._font.encodeText(e)," Tj",qe)},showTextNL:function(e){this._requireFont(),this._out(this._font.encodeText(e)," '",qe)},addLink:function(e,t){var n=this._toPage({x:t.left,y:t.bottom}),i=this._toPage({x:t.right,y:t.top});this._annotations.push(new nt({Type:z("Annot"),Subtype:z("Link"), +Rect:[n.x,n.y,i.x,i.y],Border:[0,0,0],A:new nt({Type:z("Action"),S:z("URI"),URI:new Je(e)})}))},setStrokeColor:function(e,t,n){this._out(e," ",t," ",n," RG",qe)},setOpacity:function(e){this.setFillOpacity(e),this.setStrokeOpacity(e),this._opacity*=e},setStrokeOpacity:function(e){if(e<1){var t=this._pdf.getOpacityGS(this._opacity*e,!0);this._gsResources[t._resourceName]=t,this._out(t._resourceName," gs",qe)}},setFillColor:function(e,t,n){this._out(e," ",t," ",n," rg",qe)},setFillOpacity:function(e){if(e<1){var t=this._pdf.getOpacityGS(this._opacity*e,!1);this._gsResources[t._resourceName]=t,this._out(t._resourceName," gs",qe)}},gradient:function(e,t){var n,i,o;this.save(),this.rect(t.left,t.top,t.width,t.height),this.clip(),e.userSpace||this.transform(t.width,0,0,t.height,t.left,t.top),n=q(this._pdf,e,t),i=n.shading._resourceName,this._shResources[i]=n.shading,n.hasAlpha&&(o=n.opacity._resourceName,this._gsResources[o]=n.opacity,this._out("/"+o+" gs ")),this._out("/"+i+" sh",qe),this.restore()},setDashPattern:function(e,t){this._out(e," ",t," d",qe)},setLineWidth:function(e){this._out(e," w",qe)},setLineCap:function(e){this._out(e," J",qe)},setLineJoin:function(e){this._out(e," j",qe)},setMitterLimit:function(e){this._out(e," M",qe)},save:function(){this._contextStack.push(this._context()),this._out("q",qe)},restore:function(){this._out("Q",qe),this._context(this._contextStack.pop())},moveTo:function(e,t){this._out(e," ",t," m",qe)},lineTo:function(e,t){this._out(e," ",t," l",qe)},bezier:function(e,t,n,i,o,r){this._out(e," ",t," ",n," ",i," ",o," ",r," c",qe)},bezier1:function(e,t,n,i){this._out(e," ",t," ",n," ",i," y",qe)},bezier2:function(e,t,n,i){this._out(e," ",t," ",n," ",i," v",qe)},close:function(){this._out("h",qe)},rect:function(e,t,n,i){this._out(e," ",t," ",n," ",i," re",qe)},ellipse:function(e,t,n,i){function o(t){return e+t}function r(e){return t+e}var a=.5522847498307936;this.moveTo(o(0),r(i)),this.bezier(o(n*a),r(i),o(n),r(i*a),o(n),r(0)),this.bezier(o(n),r(-i*a),o(n*a),r(-i),o(0),r(-i)),this.bezier(o(-n*a),r(-i),o(-n),r(-i*a),o(-n),r(0)),this.bezier(o(-n),r(i*a),o(-n*a),r(i),o(0),r(i))},circle:function(e,t,n){this.ellipse(e,t,n,n)},stroke:function(){this._out("S",qe)},nop:function(){this._out("n",qe)},clip:function(){this._out("W n",qe)},clipStroke:function(){this._out("W S",qe)},closeStroke:function(){this._out("s",qe)},fill:function(){this._out("f",qe)},fillStroke:function(){this._out("B",qe)},drawImage:function(e){var t=this._pdf.getImage(e);t&&(this._xResources[t._resourceName]=t,this._out(t._resourceName," Do",qe))},comment:function(e){var t=this;e.split(/\r?\n/g).forEach(function(e){t._out("% ",e,qe)})},_context:function(e){return null==e?{opacity:this._opacity,matrix:this._matrix}:(this._opacity=e.opacity,void(this._matrix=e.matrix))},_toPage:function(e){var t=this._matrix,n=t[0],i=t[1],o=t[2],r=t[3],a=t[4],s=t[5];return{x:n*e.x+o*e.y+a,y:i*e.x+r*e.y+s}}},nt),ut={serif:"Times-Roman","serif|bold":"Times-Bold","serif|italic":"Times-Italic","serif|bold|italic":"Times-BoldItalic","sans-serif":"Helvetica","sans-serif|bold":"Helvetica-Bold","sans-serif|italic":"Helvetica-Oblique","sans-serif|bold|italic":"Helvetica-BoldOblique",monospace:"Courier","monospace|bold":"Courier-Bold","monospace|italic":"Courier-Oblique","monospace|bold|italic":"Courier-BoldOblique",zapfdingbats:"ZapfDingbats","zapfdingbats|bold":"ZapfDingbats","zapfdingbats|italic":"ZapfDingbats","zapfdingbats|bold|italic":"ZapfDingbats"},Y("Times New Roman","serif"),Y("Courier New","monospace"),Y("Arial","sans-serif"),Y("Helvetica","sans-serif"),Y("Verdana","sans-serif"),Y("Tahoma","sans-serif"),Y("Georgia","sans-serif"),Y("Monaco","monospace"),Y("Andale Mono","monospace"),ht={fill:0,stroke:1,fillAndStroke:2,invisible:3,fillAndClip:4,strokeAndClip:5,fillStrokeClip:6,clip:7},pt=ht,ft={dash:[4],dashDot:[4,2,1,2],dot:[1,2],longDash:[8,2],longDashDot:[8,2,1,2],longDashDotDot:[8,2,1,2,1,2],solid:[]},gt={butt:0,round:1,square:2},mt={miter:0,round:1,bevel:2},e.deepExtend(e.pdf,{Document:v,BinaryStream:t,defineFont:K,parseFontDef:G,getFontURL:$,loadFonts:Ke,loadImages:Qe,getPaperOptions:m,clearImageCache:w,TEXT_RENDERING_MODE:ht,exportPDF:ye,exportPDFToBlob:xe,saveAs:te,toDataURL:Z,toBlob:ee,render:J}),e.drawing.exportPDF=e.pdf.exportPDF,e.drawing.pdf=e.pdf}(kendo),kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdf/mixins.min",["pdf/core.min"],e)}(function(){return function(e,t){kendo.PDFMixin={extend:function(e){e.events.push("pdfExport"),e.options.pdf=this.options,e.saveAsPDF=this.saveAsPDF,e._drawPDF=this._drawPDF,e._drawPDFShadow=this._drawPDFShadow},options:{fileName:"Export.pdf",proxyURL:"",paperSize:"auto",allPages:!1,landscape:!1,margin:null,title:null,author:null,subject:null,keywords:null,creator:"Kendo UI PDF Generator v."+kendo.version,date:null},saveAsPDF:function(){var t,n=new e.Deferred,i=n.promise(),o={promise:i};if(!this.trigger("pdfExport",o))return t=this.options.pdf,t.multiPage=t.multiPage||t.allPages,this._drawPDF(n).then(function(e){return kendo.drawing.exportPDF(e,t)}).done(function(e){kendo.saveAs({dataURI:e,fileName:t.fileName,proxyURL:t.proxyURL,forceProxy:t.forceProxy,proxyTarget:t.proxyTarget}),n.resolve()}).fail(function(e){n.reject(e)}),i},_drawPDF:function(t){var n=new e.Deferred;return kendo.drawing.drawDOM(this.wrapper).done(function(e){var i={page:e,pageNumber:1,progress:1,totalPages:1};t.notify(i),n.resolve(i.page)}).fail(function(e){n.reject(e)}),n},_drawPDFShadow:function(t,n){var i,o,r;return t=t||{},i=this.wrapper,o=e("<div class='k-pdf-export-shadow'>"),t.width&&o.css({width:t.width,overflow:"visible"}),i.before(o),o.append(t.content||i.clone(!0,!0)),r=e.Deferred(),setTimeout(function(){var e=kendo.drawing.drawDOM(o,n);e.always(function(){o.remove()}).then(function(){r.resolve.apply(r,arguments)}).fail(function(){r.reject.apply(r,arguments)}).progress(function(){r.progress.apply(r,arguments)})},15),r.promise()}}}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.pdf.min",["kendo.core.min","kendo.drawing.min","pdf/core.min","pdf/mixins.min"],e)}(function(){},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dialog.min",["kendo.core.min","kendo.popup.min"],e)}(function(){return function(e,t){function n(e){return t!==e}function i(e,t,n){return Math.max(Math.min(parseInt(e,10),n===1/0?n:parseInt(n,10)),parseInt(t,10))}function o(e){return e.keyCode==_.ENTER||e.keyCode==_.SPACEBAR}var r,a,s,l,c,d,u,h,p=window.kendo,f=p.ui.Widget,g=p.ui.Popup.TabKeyTrap,m=e.proxy,v=p.template,_=p.keys,b=e.isFunction,w="kendoWindow",k=".k-dialog",y=".k-window",x=".k-dialog-close",C="k-content k-window-content k-dialog-content",S=".k-window-content",T=".k-content",D="k-scroll",A="k-dialog-titleless",E=".k-dialog-title",I=E+"bar",M=".k-dialog-buttongroup",F=".k-button",R="k-alert",P="k-confirm",z="k-prompt",B=".k-textbox",L=".k-overlay",H=":visible",N="zIndex",O="body",V="initOpen",W="touchstart",U="touchmove",q="open",j="close",G="show",$="hide",Y="width",K={small:"k-window-sm",medium:"k-window-md",large:"k-window-lg"},Q="hidden",X="overflow",J="original-overflow-rule",Z="tap-y",ee=100,te=p.support.cssFlexbox,ne={okText:"OK",cancel:"Cancel",promptInput:"Input"},ie=Math.ceil,oe=":not(link,meta,script,style)",re=f.extend({init:function(e,t){var n=this;f.fn.init.call(n,e,t),n._init(n.element,n.options),p.notify(n)},_init:function(i,o){var a,s=this;s._centerCallback=m(s._center,s),s.appendTo=e(O),n(o.visible)&&null!==o.visible||(o.visible=i.is(H)),s.wrapperTemplate===t&&(s.wrapperTemplate=r.wrapper),s._createDialog(),a=s.wrapper=i.closest(k),o._defaultFocus===t&&(s._defaultFocus=i[0]),s._tabindex(i),s._dimensions(),this._tabKeyTrap=new g(a),s.options.visible?s._triggerOpen():s.wrapper.hide()},setOptions:function(n){var i,o=this,r=o.options.size;n=e.extend(o.options,n),f.fn.setOptions.call(o,n),n.title!==t&&o.title(n.title),n.content&&(p.destroy(o.element.children()),o.element.html(n.content)),n.actions&&(o.wrapper.children(M).remove(),o._createActionbar(o.wrapper)),o.wrapper.show(),o._closable(o.wrapper),o.wrapper.removeClass(K[r]),o._dimensions(),n.visible?o._triggerOpen():o.wrapper.hide(),t!==n.modal&&(i=o.options.visible!==!1,o._enableDocumentScrolling(),o._overlay(n.modal&&i))},_dimensions:function(){var e,t,n=this,o=n.wrapper,r=n.options,a=r.width,s=r.height,l=r.size,c=["minWidth","minHeight","maxWidth","maxHeight"];for(e=0;e<c.length;e++)t=r[c[e]],t&&t!=1/0&&o.css(c[e],t);this._setElementMaxHeight(),a&&((""+a).indexOf("%")>0?o.width(a):o.outerWidth(i(a,r.minWidth,r.maxWidth))),s&&((""+s).indexOf("%")>0?o.height(s):o.outerHeight(i(s,r.minHeight,r.maxHeight)),this._setElementHeight()),l&&K[l]&&o.addClass(K[l])},_setElementMaxHeight:function(){var e,t,n=this,i=n.element,o=n.options.maxHeight;o!=1/0&&(e=n._paddingBox(i),t=parseFloat(o,10)-n._uiHeight()-e.vertical,t>0&&i.css({maxHeight:ie(t)+"px"}))},_paddingBox:function(e){var t=parseFloat(e.css("padding-top"),10),n=parseFloat(e.css("padding-left"),10),i=parseFloat(e.css("padding-bottom"),10),o=parseFloat(e.css("padding-right"),10);return{vertical:t+i,horizontal:n+o}},_setElementHeight:function(){var e=this,t=e.element,n=e.options.height,i=e._paddingBox(t),o=parseFloat(n,10)-e._uiHeight()-i.vertical;o<0&&(o=0),t.css({height:ie(o)+"px"}),this._applyScrollClassName(t)},_applyScrollClassName:function(e){var t=e.get(0).scrollHeight>e.outerHeight();t?e.addClass(D):e.removeClass(D)},_uiHeight:function(){var e=this,t=e.wrapper,n=t.children(M),i=n[0]&&n[0].offsetHeight||0,o=t.children(I),r=o[0]&&o[0].offsetHeight||0;return i+r},_overlay:function(t){var n=this.appendTo.children(L),i=this.wrapper;return n.length||(n=e(r.overlay)),n.insertBefore(i[0]).toggle(t).css(N,parseInt(i.css(N),10)-1),t?this._waiAriaOverlay():this._removeWaiAriaOverlay(),this.options.modal.preventScroll&&this._stopDocumentScrolling(),n},_waiAriaOverlay:function(){var t=this.wrapper;this._overlayedNodes=t.prevAll(oe).add(t.nextAll(oe)).each(function(){var t=e(this);t.data("ariaHidden",t.attr("aria-hidden")),t.attr("aria-hidden","true")})},_removeWaiAriaOverlay:function(){return this._overlayedNodes&&this._overlayedNodes.each(function(){var t=e(this),n=t.data("ariaHidden");n?t.attr("aria-hidden",n):t.removeAttr("aria-hidden")})},_closeClick:function(e){e.preventDefault(),this.close(!1)},_closeKeyHandler:function(e){(o(e)||e.keyCode==_.ESC)&&this.close(!1)},_keydown:function(e){var t=this,n=t.options,i=e.keyCode;i==_.ESC&&!t._closing&&n.closable&&t.close(!1)},_createDialog:function(){var t=this,n=t.element,i=t.options,o=p.support.isRtl(n),a=e(r.titlebar(i)),s=(n.id||p.guid())+"_title",l=e(t.wrapperTemplate(i));l.toggleClass("k-rtl",o),n.addClass(C),t.appendTo.append(l),i.title!==!1?(l.append(a),a.attr("id",s),l.attr("aria-labelledby",s)):l.addClass(A),t._closable(l),l.append(n),i.content&&(p.destroy(n.children()),n.html(i.content)),i.actions.length&&t._createActionbar(l)},_closable:function(e){var t=this,n=t.options,i=e.children(I),o=i.find(".k-window-actions"),a=o.length?o.find(".k-dialog-close"):e.find(".k-dialog-close");a.remove(),n.closable!==!1&&(n.title!==!1&&o.length?o.append(r.close(n)):e.prepend(r.close(n)),e.autoApplyNS(w),t.element.autoApplyNS(w),e.find(x).on("click",m(t._closeClick,t)).on("keydown",m(t._closeKeyHandler,t)),t.element.on("keydown",m(t._keydown,t)))},_createActionbar:function(t){var n="stretched"===this.options.buttonLayout,i=n?"stretched":"normal",o=e(r.actionbar({buttonLayout:i}));this._addButtons(o),n&&!te&&this._normalizeButtonSize(o),t.append(o)},_addButtons:function(t){var n,i,o,a,s=this,l=s.options,c=m(s._actionClick,s),d=m(s._actionKeyHandler,s),u=s.options.actions,h=u.length,p=Math.round(ee/h);for(o=0;o<h;o++)n=u[o],i=s._mergeTextWithOptions(n),a=e(r.action(n)).autoApplyNS(w).html(i).appendTo(t).data("action",n.action).on("click",c).on("keydown",d),"stretched"!==l.buttonLayout||te||(o==h-1&&(p=ee-o*p),a.css(Y,p+"%"))},_mergeTextWithOptions:function(e){var t=e.text;return t?v(t)(this.options):""},_normalizeButtonSize:function(e){var t=this,n=t.options,i=e.children(F+":last"),o=parseFloat(i[0]?i[0].style[Y]:0),r=ee-n.actions.length*o;r>0&&i.css(Y,o+r+"%")},_tabindex:function(e){var t,n=this,i=n.wrapper,o=i.find(x),r=i.find(M+" "+F);f.fn._tabindex.call(this,e),t=e.attr("tabindex"),o.attr("tabIndex",t),r.attr("tabIndex",t)},_actionClick:function(e){this.wrapper.is(H)&&this._runActionBtn(e.currentTarget)},_actionKeyHandler:function(e){o(e)?this._runActionBtn(e.currentTarget):e.keyCode==_.ESC&&this.close(!1)},_runActionBtn:function(t){var n,i,o=this;o._closing||(n=e(t).data("action"),i=b(n)&&n({sender:o})===!1,i||o.close(!1))},_triggerOpen:function(){var e=this,t=e.options,n=e.wrapper;e.toFront(),e._triggerInitOpen(),e.trigger(q),t.modal&&(e._overlay(n.is(H)).css({opacity:.5}),e._focusDialog())},open:function(){var e,t,n,i=this,o=i.wrapper,r=this._animationOptions(q),a=i.options;return this._triggerInitOpen(),i.trigger(q)||(i._closing&&o.kendoStop(!0,!0),i._closing=!1,i.toFront(),a.visible=!0,a.modal&&(t=!!i._modals().length,e=i._overlay(t),e.kendoStop(!0,!0),r.duration&&p.effects.Fade&&!t?(n=p.fx(e).fadeIn(),n.duration(r.duration||0),n.endValue(.5),n.play()):e.css("opacity",.5),e.show()),o.show().kendoStop().kendoAnimate({effects:r.effects,duration:r.duration,complete:m(i._openAnimationEnd,i)}),o.show()),i},_animationOptions:function(e){var t=this.options.animation,n={open:{effects:{}},close:{hide:!0,effects:{}}};return t&&t[e]||n[e]},_openAnimationEnd:function(){this.options.modal&&this._focusDialog(),this.trigger(G)},_triggerInitOpen:function(){n(this._initOpenTriggered)||(this._initOpenTriggered=!0,this.trigger(V))},toFront:function(){var t=this,n=t.wrapper,i=+n.css(N),o=i;return t.center(),e(y).each(function(t,n){var o=e(n),r=o.css(N);isNaN(r)||(i=Math.max(+r,i))}),(!n[0].style.zIndex||o<i)&&n.css(N,i+2),t.element.find("> .k-overlay").remove(),n=null,t},close:function(e){return arguments.length||(e=!0),this._close(e),this._stopCenterOnResize(),this},_close:function(e){var t=this,n=t.wrapper,i=t.options,o=this._animationOptions("open"),r=this._animationOptions("close");if(n.is(H)&&!t.trigger(j,{userTriggered:!e})){if(t._closing)return;t._closing=!0,i.visible=!1,this._removeOverlay(),n.kendoStop().kendoAnimate({effects:r.effects||o.effects,reverse:r.reverse===!0,duration:r.duration,complete:m(this._closeAnimationEnd,this)})}return t},center:function(){this._center(),this._centerOnResize()},_center:function(){var t=this,n=t.wrapper,i=e(window),o=0,r=0,a=r+Math.max(0,(i.width()-n.width())/2),s=o+Math.max(0,(i.height()-n.height()-parseInt(n.css("paddingTop"),10))/2);return n.css({left:a,top:s}),t},_centerOnResize:function(){this._trackResize||(p.onResize(this._centerCallback),this._trackResize=!0)},_stopCenterOnResize:function(){p.unbindResize(this._centerCallback),this._trackResize=!1},_removeOverlay:function(){var e=this._modals(),t=this.options,n=t.modal&&!e.length;n?(this._overlay(!1).remove(),t.modal.preventScroll&&this._enableDocumentScrolling()):e.length&&(this._object(e.last())._overlay(!0),t.modal.preventScroll&&this._stopDocumentScrolling())},_stopDocumentScrolling:function(){var t,n,i=this,o=e("body");i._storeOverflowRule(o),o.css(X,Q),t=e("html"),n=t[0],i._storeOverflowRule(t),t.css(X,Q),p.support.mobileOS.ios&&(n.addEventListener(W,i._touchStart,{passive:!1}),n.addEventListener(U,i._touchMove,{passive:!1}))},_touchStart:function(t){e(this).data(Z,t.changedTouches[0].pageY)},_touchMove:function(t){var n=t.target,i=e(t.target),o=t.changedTouches[0].pageY-e(this).data(Z)>0,r=i.is(S)&&o&&0===i.scrollTop()||!o&&i.scrollTop()===n.scrollHeight-n.clientHeight;i.is(S)&&!r||t.preventDefault()},_enableDocumentScrolling:function(){var t=this,n=e(document.body),i=e("html"),o=i[0];t._restoreOverflowRule(n),t._restoreOverflowRule(i),p.support.mobileOS.ios&&(i.removeData(Z),o.removeEventListener(W,t._touchStart,{passive:!1}),o.removeEventListener(U,t._touchMove,{passive:!1}))},_storeOverflowRule:function(e){if(!this._isOverflowStored(e)){var t=e.get(0).style.overflow;"string"==typeof t&&e.data(J,t)}},_isOverflowStored:function(e){return"string"==typeof e.data(J)},_restoreOverflowRule:function(e){var n=e.data(J);null!==n&&n!==t?(e.css(X,n),e.removeData(J)):e.css(X,"")},_closeAnimationEnd:function(){var e,t=this;t._closing=!1,t.wrapper.hide().css("opacity",""),t.trigger($),t.options.modal&&(e=t._object(t._modals().last()),e&&e.toFront())},_modals:function(){var t=this,n=e(y).filter(function(){var n=e(this),i=t._object(n),o=i&&i.options;return o&&o.modal&&t.options.appendTo==o.appendTo&&o.visible&&n.is(H)}).sort(function(t,n){return+e(t).css("zIndex")-+e(n).css("zIndex")});return t=null,n},_object:function(e){var n=e.children(T),i=p.widgetInstance(n);return i?i:t},destroy:function(){var t=this;t._destroy(),f.fn.destroy.call(t),t.wrapper.remove(),t.wrapper=t.element=e()},_destroy:function(){var e=this,t="."+w;e.wrapper.off(t),e.element.off(t),e.wrapper.find(x+","+M+" > "+F).off(t),e._stopCenterOnResize()},title:function(t){var n=this,i=n.wrapper,o=n.options,a=i.children(I),s=a.children(E),l=p.htmlEncode(t);return arguments.length?(t===!1?(a.remove(),i.addClass(A)):(a.length||(a=e(r.titlebar(o)).prependTo(i),s=a.children(E),i.removeClass(A)),s.html(l)),n.options.title=l,n):s.html()},content:function(e,t){var i=this,o=i.wrapper.children(T);return n(e)?(this.angular("cleanup",function(){return{elements:o.children()}}),p.destroy(o.children()),o.html(e),this.angular("compile",function(){var e,n=[];for(e=o.length;--e>=0;)n.push({dataItem:t});return{elements:o.children(),data:n}}),i.options.content=e,i):o.html()},_focusDialog:function(){this._defaultFocus&&this._focus(this._defaultFocus),this._tabKeyTrap.trap()},_focus:function(e){e&&e.focus()},events:[V,q,j,G,$],options:{title:"",buttonLayout:"stretched",actions:[],modal:!0,size:"auto",width:null,height:null,minWidth:0,minHeight:0,maxWidth:1/0,maxHeight:1/0,content:null,visible:null,appendTo:O,closable:!0}}),ae=re.extend({options:{name:"Dialog",messages:{close:"Close"}}});p.ui.plugin(ae),a=re.extend({_init:function(e,t){var n=this;n.wrapperTemplate=r.alertWrapper,t._defaultFocus=null,n._ensureContentId(e),re.fn._init.call(n,e,t),n.bind($,m(n.destroy,n)),n._ariaDescribedBy(),n._initFocus()},_ensureContentId:function(t){var n=e(t);n.attr("id")||n.attr("id",p.guid()+"_k-popup")},_ariaDescribedBy:function(){this.wrapper.attr("aria-describedby",this.element.attr("id"))},_initFocus:function(){var e=this.options;this._defaultFocus=this._chooseEntryFocus(),this._defaultFocus&&e.visible&&e.modal&&this._focusDialog()},_chooseEntryFocus:function(){return this.wrapper.find(M+" > "+F)[0]},options:{title:window.location.host,closable:!1,messages:ne}}),s=a.extend({_init:function(e,t){var n=this;a.fn._init.call(n,e,t),n.wrapper.addClass(R)},options:{name:"Alert",modal:!0,actions:[{text:"#: messages.okText #"}]}}),p.ui.plugin(s),l=function(t){return e(r.alert).kendoAlert({content:t}).data("kendoAlert").open()},c=a.extend({_init:function(t,n){var i=this;a.fn._init.call(i,t,n),i.wrapper.addClass(P),i.result=e.Deferred()},options:{name:"Confirm",modal:!0,actions:[{text:"#: messages.okText #",primary:!0,action:function(e){e.sender.result.resolve()}},{text:"#: messages.cancel #",action:function(e){e.sender.result.reject()}}]}}),p.ui.plugin(c),d=function(t){var n=e(r.confirm).kendoConfirm({content:t}).data("kendoConfirm").open();return n.result},u=a.extend({_init:function(t,n){var i=this;a.fn._init.call(i,t,n),i.wrapper.addClass(z),i._createPrompt(),i.result=e.Deferred()},_createPrompt:function(){var t=this.options.value,n=e(r.promptInputContainer(this.options)).insertAfter(this.element);t&&n.children(B).val(t),this._defaultFocus=this._chooseEntryFocus(),this._focusDialog()},_chooseEntryFocus:function(){return this.wrapper.find(B)[0]},options:{name:"Prompt",modal:!0,value:"",actions:[{text:"#: messages.okText #",primary:!0,action:function(e){var t=e.sender,n=t.wrapper.find(B).val();t.result.resolve(n)}},{text:"#: messages.cancel #",action:function(e){var t=e.sender,n=t.wrapper.find(B).val();e.sender.result.reject(n)}}]}}),p.ui.plugin(u),h=function(t,n){var i=e(r.prompt).kendoPrompt({content:t,value:n}).data("kendoPrompt").open();return i.result},r={wrapper:v("<div class='k-widget k-window k-dialog' role='dialog' />"),action:v("<button type='button' class='k-button# if (data.primary) { # k-primary# } role='button' #'></button>"),titlebar:v("<div class='k-window-titlebar k-dialog-titlebar k-header'><span class='k-window-title k-dialog-title'>#: title #</span><div class='k-window-actions k-dialog-actions' /></div>"),close:v("<a role='button' href='\\#' class='k-button k-bare k-button-icon k-window-action k-dialog-action k-dialog-close' title='#: messages.close #' aria-label='#: messages.close #' tabindex='-1'><span class='k-icon k-i-close'></span></a>"),actionbar:v("<div class='k-dialog-buttongroup k-dialog-button-layout-#: buttonLayout #' role='toolbar' />"),overlay:"<div class='k-overlay' />",alertWrapper:v("<div class='k-widget k-window k-dialog' role='alertdialog' />"),alert:"<div />",confirm:"<div />",prompt:"<div />",promptInputContainer:v("<div class='k-prompt-container'><input type='text' class='k-textbox' title='#: messages.promptInput #' aria-label='#: messages.promptInput #' /></div>")},p.alert=l,p.confirm=d,p.prompt=h}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.grid.min",["kendo.data.min","kendo.columnsorter.min","kendo.editable.min","kendo.window.min","kendo.filtermenu.min","kendo.columnmenu.min","kendo.groupable.min","kendo.pager.min","kendo.selectable.min","kendo.sortable.min","kendo.reorderable.min","kendo.resizable.min","kendo.ooxml.min","kendo.excel.min","kendo.pane.min","kendo.progressbar.min","kendo.pdf.min","kendo.dialog.min","kendo.pane.min","kendo.switch.min"],e)}(function(){return function(e,t){function n(e,t){return"["+Ae.attr(e)+"="+t+"]"}function i(e){return Array(e+1).join('<td class="k-group-cell"> </td>')}function o(e){var t,n=" ";if(e){if(typeof e===nn)return e;for(t in e)""!==e[t]&&(n+=t+'="'+e[t]+'"')}return n}function r(t,n){e("th, th .k-grid-filter, th .k-link",t).add(document.body).css("cursor",n)}function a(t,n,i,o,r){var a,s=n;for(n=e(),r=r||1,a=0;a<r;a++)n=n.add(t.eq(s+a));"number"==typeof i?n[o?"insertBefore":"insertAfter"](t.eq(i)):n.appendTo(i)}function s(t,n,i){return e(t).add(n).find(i)}function l(e,t,n){var i,o,r,a;for(n=We(n)?n:[n],i=0,o=n.length;i<o;i++)r=n[i],He(r)&&r.click&&(a=r.name||r.text,t.on(Xt+ct,"a.k-grid-"+(a||"").replace(/\s/g,""),{commandName:a},je(r.click,e)))}function c(e,t,n,i){return Oe(e,function(e){var o,r;return e=typeof e===nn?{field:e}:e,e.parentIds=i,b(e)&&!n||(e.attributes=ee(e.attributes),e.footerAttributes=ee(e.footerAttributes),e.headerAttributes=ee(e.headerAttributes),o=!0),r=Ae.guid(),e.headerAttributes=Ne({headers:i},e.headerAttributes),e.headerAttributes.id?r=e.headerAttributes.id:e.headerAttributes=Ne({id:r},e.headerAttributes),e.columns&&(e.columns=c(e.columns,t,o,i?i+" "+r:r)),Ne({encoded:t,hidden:o},e)})}function d(e,t){var n=[];return u(e,t,n),n[n.length-1]}function u(e,t,n){var i,o;for(n=n||[],i=0;i<t.length;i++){if(e===t[i])return!0;if(t[i].columns){if(o=n.length,n.push(t[i]),u(e,t[i].columns,n))return!0;n.splice(o,n.length-o)}}return!1}function h(e,t){p(e,t,t)}function p(e,t,n){var i=n?te:ee;e.hidden=!t,e.attributes=i(e.attributes),e.footerAttributes=i(e.footerAttributes),e.headerAttributes=i(e.headerAttributes)}function f(e,t){g(e);var n=e._hideByMedia;p(e,t,n?e.matchesMedia:t)}function g(e){e.matchesMedia=m(e)}function m(e){return e&&(y(e.media)||!y(e.media)&&Ae.matchesMedia(e.media))}function v(){return"none"!==this.style.display}function _(t){return"none"!==e(t)[0].style.display}function b(e){return w([e]).length>0}function w(e){return Ve(e,function(e){var t=!e.hidden&&e.matchesMedia!==!1;return t&&e.columns&&(t=w(e.columns).length>0),t})}function k(e){var t,n,i=[];for(n=0;n<e.length;n++){if(t=e[n],!y(t.media)){if(!y(t.minScreenWidth))throw Error("Using 'media' and 'minScreenWidth' options at the same time is not supported.");i.push(t)}t.columns&&(i=i.concat(k(t.columns)))}return i}function y(e){return t===e}function x(t){return e(t).map(function(){return this.toArray()})}function C(e,t,n){var i=D(W(t)),o=D(U(t)),r=e.rowSpan;e.rowSpan=n?i>o?r-(i-o)||1:r+(o-i):i>o?r+(i-o):r-(o-i)||1}function S(t,n,i,o,r,a,s,l){var c,d,u=D(t),h=D([n]);u>h&&(c=Array(s+1).join('<th class="k-group-cell k-header" scope="col"> </th>'),d=a.children(":not(.k-filter-row)"),e(Array(u-h+1).join("<tr>"+c+"</tr>")).insertAfter(d.last())),N(a,u-h),A(i,o,r,a,l)}function T(t,n,i){var o,r,a,s,l,c,d,u;for(i=i||0,a=n,n=Y(n),s={},l=t.find(">tr:not(.k-filter-row)"),c=function(){var t=e(this);return!t.hasClass("k-group-cell")&&!t.hasClass("k-hierarchy-cell")},d=0,u=n.length;d<u;d++)o=E(n[d],a),s[o.row]||(s[o.row]=l.eq(o.row).find(".k-header").filter(c)),r=s[o.row].eq(o.cell),r.attr(Ae.attr("index"),i+d);return n.length}function D(e){var t,n,i=1,o=0;for(t=0;t<e.length;t++)e[t].columns&&(n=D(e[t].columns),n>o&&(o=n));return i+o}function A(t,n,i,o,r){var a,s,l=F(t[0],n),c=i.find(">tr:not(.k-filter-row):eq("+l.row+")>th.k-header"),d=e(),u=l.cell;for(a=0;a<t.length;a++)d=d.add(c.eq(u+a));for(o.find(">tr:not(.k-filter-row)").eq(l.row)[r](d),s=[],a=0;a<t.length;a++)t[a].columns&&(s=s.concat(t[a].columns));s.length&&A(s,n,i,o,r)}function E(e,t,n,i){var o,r;for(n=n||0,i=i||{},i[n]=i[n]||0,r=0;r<t.length;r++){if(t[r]==e){o={cell:i[n],row:n};break}if(t[r].columns&&(o=E(e,t[r].columns,n+1,i)))break;i[n]++}return o}function I(e,t,n,i){var o,r,a=!!n.locked;do o=e[t],t+=i?1:-1,r=!!o.locked;while(o&&t>-1&&t<e.length&&o!=n&&!o.columns&&r===a);return o}function M(e,t,n,i,o){var r,a,s,l,c;return t.columns?(t=t.columns,t[i?0:t.length-1]):(r=d(t,e),a=r?r.columns:e,s=Ue(t,a),0===s&&i?s++:s==a.length-1&&!i||!n.locked&&!t.columns&&!i?s--:(s>0||0===s&&!i)&&s++,l=Ue(n,a),t=I(a,s,n,l>s),c=Ue(t,o),(!t.columns||c&&c!==a.length-1)&&t&&t!=n&&t.columns?M(e,t,n,i,o):null)}function F(e,t,n,i){var o,r;for(n=n||0,i=i||{},i[n]=i[n]||0,r=0;r<t.length;r++){if(t[r]==e){o={cell:i[n],row:n};break}if(t[r].columns&&(o=F(e,t[r].columns,n+1,i)))break;t[r].hidden||i[n]++}return o}function R(e){var t=z(W(e));return t.concat(z(U(e)))}function P(e,t,n,i){var o=e[n],r=e[i],a=d(o,t);return t=a?a.columns:t,Ue(r,t)}function z(e){var t,n=[],i=[];for(t=0;t<e.length;t++)n.push(e[t]),e[t].columns&&(i=i.concat(e[t].columns));return i.length&&(n=n.concat(z(i))),n}function B(e){var t,n,i=0;for(n=0;n<e.length;n++)t=e[n],t.columns?i+=B(t.columns):t.hidden&&i++;return i}function L(e){var t,n,i,o=0;for(n=0,i=e.length;n<i;n++)t=e[n].style.width,t&&t.indexOf("%")==-1&&(o+=parseInt(t,10));return o}function H(e,t){var n,i,o=e.find("tr:not(.k-filter-row) th:not(.k-group-cell,.k-hierarchy-cell)");for(i=0;i<o.length;i++)n=o[i].rowSpan,n>1&&(o[i].rowSpan=n-t||1)}function N(e,t){var n,i=e.find("tr:not(.k-filter-row) th:not(.k-group-cell,.k-hierarchy-cell)");for(n=0;n<i.length;n++)i[n].rowSpan+=t}function O(t){var n,i=t.find("tr:not(.k-filter-row)"),o=i.filter(function(){return!e(this).children().length}).remove().length,r=i.find("th:not(.k-group-cell,.k-hierarchy-cell)");for(n=0;n<r.length;n++)r[n].rowSpan>1&&(r[n].rowSpan-=o);return i.length-o}function V(e,t,n,i,o){var r,a,s,l=[];for(r=0,s=e.length;r<s;r++)a=n[i]||[],a.push(t.eq(o+r)),n[i]=a,e[r].columns&&(l=l.concat(e[r].columns));l.length&&V(l,t,n,i+1,o+e.length)}function W(e){return Ve(e,function(e){return e.locked})}function U(e){return Ve(e,function(e){return!e.locked})}function q(e){return Ve(e,function(e){return!e.locked&&b(e)})}function j(e){return Ve(e,function(e){return e.locked&&b(e)})}function G(e){var t,n=[];for(t=0;t<e.length;t++)e[t].hidden||(e[t].columns?n=n.concat(G(e[t].columns)):n.push(e[t]));return n}function $(e){var t,n=[];for(t=0;t<e.length;t++)e[t].columns&&(n=n.concat(e[t].columns));return n}function Y(e){var t,n=[];for(t=0;t<e.length;t++)e[t].columns?n=n.concat(Y(e[t].columns)):n.push(e[t]);return n}function K(e){var t,n=[];for(e=Y(e),t=0;t<e.length;t++)"string"==typeof e[t]?n.push(e[t]):e[t].field&&n.push(e[t].field);return n}function Q(n){var i,o=n.find(">tr:not(.k-filter-row)"),r=function(){var t=e(this);return!t.hasClass("k-group-cell")&&!t.hasClass("k-hierarchy-cell")},a=e();return o.length>1&&(a=o.find("th").filter(r).filter(function(){return this.rowSpan>1})),a=a.add(o.last().find("th").filter(r)),i=Ae.attr("index"),a.sort(function(n,o){var r,a;return n=e(n),o=e(o),r=n.attr(i),a=o.attr(i),r===t&&(r=e(n).index()),a===t&&(a=e(o).index()),r=parseInt(r,10),a=parseInt(a,10),r>a?1:r<a?-1:0}),a}function X(t){var n,i,o,r,a,s,l,c=t.closest("table"),d=e().add(t),u=t.closest("tr"),h=c.find("tr:not(.k-filter-row)"),p=h.index(u);if(p>0){for(n=h.eq(p-1),i=n.find("th:not(.k-group-cell,.k-hierarchy-cell)").filter(function(){return!e(this).attr("rowspan")}),o=0,r=u.find("th:not(.k-group-cell,.k-hierarchy-cell)").index(t),a=t.prevAll(":not(.k-group-cell,.k-hierarchy-cell)").filter(function(){return this.colSpan>1}),s=0;s<a.length;s++)o+=a[s].colSpan||1;for(r+=Math.max(o-1,0),o=0,s=0;s<i.length;s++)if(l=i.eq(s),o+=l.attr("data-colspan")?l[0].getAttribute("data-colspan"):1,r>=s&&r<o){d=X(l).add(d);break}}return d}function J(t){var n,i,o,r,a,s,l,c=t.closest("thead"),d=e().add(t),u=t.closest("tr"),h=c.find("tr:not(.k-filter-row)"),p=h.index(u)+t[0].rowSpan,f=Ae.attr("colspan");if(p<=h.length-1){for(n=u.next(),i=t.prevAll(":not(.k-group-cell,.k-hierarchy-cell)"),i=i.filter(function(){return!this.rowSpan||1===this.rowSpan}),r=0,o=0;o<i.length;o++)r+=parseInt(i.eq(o).attr(f),10)||1;for(a=n.find("th:not(.k-group-cell,.k-hierarchy-cell)"),s=parseInt(t.attr(f),10)||1,o=0;o<s;)n=a.eq(o+r),d=d.add(J(n)),l=parseInt(n.attr(f),10),l>1&&(s-=l-1),o++}return d}function Z(t,n,i,o){var r,a=t;return o&&t.empty(),Fe?t[0].innerHTML=i:(r=document.createElement("div"),r.innerHTML="<table><tbody>"+i+"</tbody></table>",t=r.firstChild.firstChild,n[0].replaceChild(t,a[0]),t=e(t)),t}function ee(e){e=e||{};var t=e.style;return t?(t=t.replace(/display:[^;]*/i,"display:none"),t.match(/display:/i)||(t=t.replace(/(.*)?/i,"display:none;$1"))):t="display:none",Ne({},e,{style:t})}function te(e){e=e||{};var t=e.style;return t&&(e.style=t.replace(/(display\s*:\s*none\s*;?)*/gi,"")),e}function ne(t,n,i,o){var r,a=t.find(">colgroup"),s=Oe(n,function(e){return r=e.width,r&&0!==parseInt(r,10)?Ae.format('<col style="width:{0}"/>',typeof r===nn?r:r+"px"):"<col />"});(i||a.find(".k-hierarchy-col").length)&&s.splice(0,0,'<col class="k-hierarchy-col" />'),a.length&&a.remove(),a=e(Array(o+1).join('<col class="k-group-col">')+s.join("")),a.is("colgroup")||(a=e("<colgroup/>").append(a)),t.prepend(a),Fn.msie&&8==Fn.version&&(t.css("display","inline-table"),window.setTimeout(function(){t.css("display","")},1))}function ie(e,t){var n,i,o=0,r=e.find("th:not(.k-group-cell)");for(n=0,i=t.length;n<i;n++)t[n].locked&&(r.eq(n).insertBefore(r.eq(o)),r=e.find("th:not(.k-group-cell)"),o++)}function oe(e){var t,n,i,o={};for(n=0,i=e.length;n<i;n++)t=e[n],o[t.value]=t.text;return o}function re(e,t,n,i){var o=n&&n.length&&He(n[0])&&"value"in n[0],r=o?oe(n)[e]:e;return r=null!=r?r:"",t?Ae.format(t,r):i===!1?r:Ae.htmlEncode(r)}function ae(e,t,n){for(var i,o=0,r=e[o];r;){if(i=!!n||"none"!==r.style.display,i&&!Tn.test(r.className)&&--t<0){r.style.display=n?"":"none";break}r=e[++o]}}function se(t,n){for(var i,o,r=0,a=t.length;r<a;r+=1)o=t.eq(r),o.is(".k-grouping-row,.k-detail-row")?(i=o.children(":not(.k-group-cell):first,.k-detail-cell").last(),i.attr("colspan",parseInt(i.attr("colspan"),10)-1)):(o.hasClass("k-grid-edit-row")&&(i=o.children(".k-edit-container")[0])&&(i=e(i),i.attr("colspan",parseInt(i.attr("colspan"),10)-1),i.find("col").eq(n).remove(),o=i.find("tr:first")),ae(o[0].cells,n,!1))}function le(e){var t,n,i=[];for(n=0;n<e.length&&(t=e[n],"field"in t&&"value"in t&&"items"in t);n++)i.push(t), +t.hasSubgroups&&(i=i.concat(le(t.items)));return i}function ce(e){var t,n,i=[];for(n=0;n<e.length&&(t=e[n],"field"in t&&"value"in t&&"items"in t);n++)t.hasSubgroups&&(i=i.concat(ce(t.items))),i.push(t.aggregates);return i}function de(t,n){for(var i,o,r,a=0,s=t.length;a<s;a+=1)o=t.eq(a),o.is(".k-grouping-row,.k-detail-row")?(i=o.children(":not(.k-group-cell):first,.k-detail-cell").last(),i.attr("colspan",parseInt(i.attr("colspan"),10)+1)):(o.hasClass("k-grid-edit-row")&&(i=o.children(".k-edit-container")[0])&&(i=e(i),i.attr("colspan",parseInt(i.attr("colspan"),10)+1),ne(i.find(">form>table"),w(r),!1,0),o=i.find("tr:first")),ae(o[0].cells,n,!0))}function ue(e,t,n){n=n||1;var i,o,r;for(o=0,r=e.length;o<r;o++)i=e.eq(o).children().last(),i.attr("colspan",parseInt(i.attr("colspan"),10)+n),i=t.eq(o).children().last(),i.attr("colspan",parseInt(i.attr("colspan"),10)-n)}function he(e){var t,n,i=0,o=e.find(">colgroup>col");for(t=0,n=o.length;t<n;t+=1)i+=parseInt(o[t].style.width,10);return i}function pe(e,t){var n,i,o,r;e=e[0],t=t[0],e.rows.length!==t.rows.length&&(n=e.offsetHeight,i=t.offsetHeight,n>i?(o=t.rows[t.rows.length-1],Dn.test(o.className)&&(o=t.rows[t.rows.length-2]),r=n-i):(o=e.rows[e.rows.length-1],Dn.test(o.className)&&(o=e.rows[e.rows.length-2]),r=i-n),o.style.height=o.offsetHeight+r+"px")}function fe(e,t){var n,i=e.offsetHeight,o=t.offsetHeight;i>o?n=i+"px":i<o&&(n=o+"px"),n&&(e.style.height=t.style.height=n)}function ge(e,t){var n,i,o;if(typeof e===nn&&e===t)return e;if(He(e)&&e.name===t)return e;if(We(e))for(n=0,i=e.length;n<i;n++)if(o=e[n],typeof o===nn&&o===t||o.name===t)return o;return null}function me(t,n){if(n===!0){t=e(t);var i=t.parent().scrollLeft();Ae.focusElement(t),t.parent().scrollLeft(i)}else e(t).one("focusin",function(e){e.preventDefault()}).focus()}function ve(e,n){return e.options.groupable&&(n.groupable||n.groupable===t)}function _e(t,n){return!!e.grep(t,function(e){return e.field===n}).length}function be(e,t){return!(!e.field||e.selectable)&&(!(t.editable&&!t.editable(e.field))&&!(e.editable&&!e.editable(t)))}function we(t){return e(t).is(":button,a,:input,a>.k-icon,textarea,span.k-select,span.k-icon,span.k-link,label.k-checkbox-label,.k-input,.k-multiselect-wrap,.k-picker-wrap,.k-picker-wrap>.k-selected-color,.k-tool-icon,.k-dropdown")}function ke(n){var i=e(n.currentTarget),o=i.is("th"),r=this.table.add(this.lockedTable),a=this.thead.parent().add(e(">table",this.lockedHeader)),s=we(n.target),l=e(n.target).is(".k-checkbox-label, .k-checkbox"),c=e(n.target),d=i.closest("table")[0];return s&&i.find(Ae.roleSelector("filtercell")).length?(this._setCurrent(i),t):(d!==r[0]&&d!==r[1]&&d!==a[0]&&d!==a[1]||c.is("a.k-i-expand, a.k-i-collapse")||(this.options.navigatable&&this._setCurrent(i,!1,l),!o&&s||setTimeout(function(){Pn&&e(Ae._activeElement()).hasClass("k-widget")||!e(Ae._activeElement()).is(Ht)&&we(Ae._activeElement())&&e.contains(d,Ae._activeElement())||me(d,!0)}),o&&!Ae.support.touch&&n.preventDefault()),t)}function ye(e,t){if(!t)return 0;var n=0;return Ae.support.browser.webkit&&(n=e.width()),n}function xe(e){return e&&(e.hasClass("k-edit-cell")||e.parent().hasClass("k-grid-edit-row"))}function Ce(e){return'<td colspan="#=data.colspan +'+e+'#"><p class="k-reset"><a class="k-icon k-i-collapse" href="\\#" tabindex="-1" '+yn+'="'+wn+'"></a>#=data.text#</p></td>'}function Se(e){return'<td colspan="'+e+'"><p class="k-reset"> </p></td>'}function Te(e,t,n){return'<tr role="row" class="k-grouping-row">'+i(t)+'<td colspan="'+e+'" aria-expanded="true"><p class="k-reset"><a class="k-icon k-i-collapse" href="#" tabindex="-1" '+yn+'="'+wn+'"></a>'+n+"</p></td></tr>"}function De(e){return'<tr role="row" class="k-grouping-row"><td colspan="'+e+'" aria-expanded="true"><p class="k-reset"> </p></td></tr>'}var Ae=window.kendo,Ee=Ae.ui,Ie=Ae.data.DataSource,Me=Ae.data.ObservableObject,Fe=Ae.support.tbodyInnerHtml,Re=Ae._activeElement,Pe=Ee.Widget,ze=Ae._outerWidth,Be=Ae._outerHeight,Le=Ae.keys,He=e.isPlainObject,Ne=e.extend,Oe=e.map,Ve=e.grep,We=e.isArray,Ue=e.inArray,qe=Array.prototype.push,je=e.proxy,Ge=Ae.isFunction,$e=e.isEmptyObject,Ye=e.contains,Ke=Math,Qe=".",Xe="progress",Je="error",Ze="k-hierarchy-cell",et=":not(.k-group-cell):not(.k-hierarchy-cell:not(:has(.k-icon.k-i-collapse,.k-icon.k-i-expand))):visible",tt="tbody>tr:not(.k-grouping-row):not(.k-detail-row):not(.k-group-footer) > td:not(.k-group-cell):not(.k-hierarchy-cell)",nt="tr:not(.k-footer-template):visible",it=":not(.k-group-cell):not(.k-detail-cell):not(.k-hierarchy-cell):visible",ot="tr:not(.k-grouping-row):not(.k-detail-row):not(.k-footer-template):not(.k-group-footer):visible",rt=ot+":first",at=ot+":last",st=nt+":first>"+it+":first",lt="th.k-header:not(.k-group-cell):not(.k-hierarchy-cell)",ct=".kendoGrid",dt="k-grid-content-locked",ut="k-group-cell",ht="edit",pt="beforeEdit",ft="save",gt="remove",mt="detailInit",vt="filterMenuInit",_t="columnMenuInit",bt="filterMenuOpen",wt="columnMenuOpen",kt="cellClose",yt="change",xt="columnHide",Ct="columnShow",St="saveChanges",Tt="dataBound",Dt="detailExpand",At="detailCollapse",Et="itemchange",It="page",Mt="paging",Ft="scroll",Rt="sync",Pt="k-state-focused",zt=":kendoFocusable",Bt="k-state-selected",Lt="k-checkbox",Ht="input[data-role='checkbox']."+Lt,Nt="k-grid-norecords",Ot="k-link",Vt="k-icon",Wt="k-sort-order",Ut="k-header-column-menu",qt="k-grid-filter",jt="resize",Gt="columnResize",$t="columnReorder",Yt="columnLock",Kt="columnUnlock",Qt="navigate",Xt="click",Jt="mousedown",Zt="height",en="tabIndex",tn="function",nn="string",on="bottom",rn="container-for",an="field",sn="input",ln="incell",cn="inline",dn="uid",un=1,hn="colSpan",pn="overflow",fn="hidden",gn="group-sort",mn="Are you sure you want to delete this record?",vn="No records available.",_n="Delete",bn="Cancel",wn="Collapse",kn="Expand",yn="aria-label",xn=/(\}|\#)/gi,Cn=/#/gi,Sn="[\\x20\\t\\r\\n\\f]",Tn=RegExp("(^|"+Sn+")(k-group-cell|k-hierarchy-cell)("+Sn+"|$)"),Dn=RegExp("(^|"+Sn+")(k-filter-row)("+Sn+"|$)"),An='# if (iconClass) {#<a role="button" class="k-button k-button-icontext #=className#" #=attr# href="\\#"><span class="#=iconClass#"></span>#=text#</a># } else { #<a role="button" class="k-button k-button-icontext #=className#" #=attr# href="\\#">#=text#</a># } #',En='# var checkboxGuid = kendo.guid(); #<input class="'+Lt+'" data-role="checkbox" id="#= checkboxGuid #" aria-label="Select row" aria-checked="false" type="checkbox"><label for="#= checkboxGuid #" class="k-checkbox-label k-no-text">&\\#8203;</label>',In='# var checkboxGuid = kendo.guid(); #<input class="'+Lt+'" data-role="checkbox" aria-label="Select all rows" aria-checked="false" type="checkbox" id="#= checkboxGuid #"><label for="#= checkboxGuid #" class="k-checkbox-label k-no-text">##&\\#8203;##</label>',Mn=!1,Fn=Ae.support.browser,Rn=Fn.msie&&7==Fn.version,Pn=Fn.msie&&8==Fn.version,zn=Fn.msie&&11===Fn.version,Bn=/Mac OS/.test(navigator.userAgent),Ln={content:"k-content",widget:"k-widget",scrollContainer:"k-scroll-container"},Hn=Pe.extend({init:function(e,t){var n=this;Pe.fn.init.call(n,e,t),n._refreshHandler=je(n.refresh,n),n.setDataSource(t.dataSource),n.wrap()},setDataSource:function(e){var t=this;t.dataSource&&t.dataSource.unbind(yt,t._refreshHandler),t.dataSource=e,t.dataSource.bind(yt,t._refreshHandler),t.dataSource.options.useRanges=!0},options:{name:"VirtualScrollable",itemHeight:e.noop,prefetch:!0,maxScrollHeight:25e4},events:[Mt,It,Ft],destroy:function(){var e=this;Pe.fn.destroy.call(e),e.dataSource.unbind(yt,e._refreshHandler),e.wrapper.add(e.verticalScrollbar).off(ct),clearTimeout(e._timeout),e._scrollingTimeout&&clearTimeout(e._scrollingTimeout),e.drag&&(e.drag.destroy(),e.drag=null),e.wrapper=e.element=e.verticalScrollbar=null,e._refreshHandler=null},wrap:function(){var t,n=this,i=Ae.support.scrollbar()+1,o=n.element;o.css({width:"auto",overflow:"hidden"}).css(Mn?"padding-left":"padding-right",i),n.content=o.children().first(),t=n.wrapper=n.content.wrap('<div class="k-virtual-scrollable-wrap"/>').parent().bind("DOMMouseScroll"+ct+" mousewheel"+ct,je(n._wheelScroll,n)),n._wrapper(),Ae.support.kineticScrollNeeded&&(n.drag=new Ae.UserEvents(n.wrapper,{global:!0,allowSelection:!0,start:function(e){e.sender.capture()},move:function(e){n.verticalScrollbar.scrollTop(n.verticalScrollbar.scrollTop()-e.y.delta),t.scrollLeft(t.scrollLeft()-e.x.delta),e.preventDefault()}})),n.verticalScrollbar=e('<div class="k-scrollbar k-scrollbar-vertical" />').css({width:i}).appendTo(o).bind("scroll"+ct,je(n._scroll,n))},_wrapper:function(){var e=this;zn&&(e.wrapper.css({"overflow-y":Ft}),e.element.css(Mn?"padding-left":"padding-right",0))},_wheelScroll:function(e){if(!e.ctrlKey){var t=this.verticalScrollbar,n=t.scrollTop(),i=Ae.wheelDeltaY(e);!i||i>0&&0===n||i<0&&n+t[0].clientHeight==t[0].scrollHeight||(e.preventDefault(),this.verticalScrollbar.scrollTop(n+-i))}},_scroll:function(e){var n=this,i=!n.options.prefetch,o=e.currentTarget.scrollTop,r=n.dataSource,a=n.itemHeight,s=r.skip()||0,l=n._rangeStart||s,c=n.element.innerHeight(),d=!!(n._scrollbarTop&&n._scrollbarTop>o),u=Ke.max(Ke.floor(o/a),0),h=d?Ke.ceil(c/a):Ke.floor(c/a),p=Ke.max(u+h,0);return n._preventScroll?(n._preventScroll=!1,t):(n._scrollTop=o-l*a,n._scrollbarTop=o,n._scrolling=i,n._fetch(u,p,d)||(n.wrapper[0].scrollTop=n._scrollTop),n.trigger(Ft),i&&(n._scrollingTimeout&&clearTimeout(n._scrollingTimeout),n._scrollingTimeout=setTimeout(function(){n._scrolling=!1,n._page(n._rangeStart,n.dataSource.take())},100)),t)},scrollToTop:function(){this._scrollTo(0)},scrollToBottom:function(){var e=this.verticalScrollbar;this._scrollTo(e[0].scrollHeight-e.height())},_scrollWrapperToTop:function(){this.wrapper.scrollTop(0)},_scrollWrapperToBottom:function(){this.wrapper.scrollTop(this.wrapper[0].scrollHeight)},_scrollWrapperOnColumnResize:function(){var e=this,t=this.wrapper,n=t.scrollTop();t[0].scrollWidth>t[0].clientWidth?(!e._wrapperScrolled&&n||e._isScrolledToBottom())&&(t.scrollTop(n+Ae.support.scrollbar()),e._scrollTop=t.scrollTop(),e._wrapperScrolled=!0):e._wrapperScrolled&&(e._isWrapperScrolledToBottom()||(t.scrollTop(n-Ae.support.scrollbar()),e._scrollTop=t.scrollTop()),e._wrapperScrolled=!1)},_scrollTo:function(e){var t=this,n=t.verticalScrollbar;n.scrollTop()!==e&&(t._preventScroll=!0),t.wrapper.scrollTop(e),t._scrollTop=t.wrapper.scrollTop(),n.scrollTop(e),t._scrollbarTop=n.scrollTop()},_isScrolledToTop:function(){return 0===this.verticalScrollbar.scrollTop()},_isScrolledToBottom:function(){var e=this.verticalScrollbar,t=e.scrollTop();return t>0&&t>=parseInt(e[0].scrollHeight-e.height(),10)},_isWrapperScrolledToBottom:function(){var e=this.wrapper;return e.scrollTop()>=parseInt(e[0].scrollHeight-e.height(),10)},itemIndex:function(e){var t=this._rangeStart||this.dataSource.skip()||0;return t+e},_isElementVisible:function(e){return this._isElementVisibleInWrapper(e)},_isElementVisibleInWrapper:function(t){var n,i,o=this,r=o.wrapper;return t=e(t),!!(t[0]&&Ye(r[0],t[0])&&(n=t.offset().top-r.offset().top,i=t.outerHeight()/2,(n>=0||Ke.abs(n)<=i)&&Ke.floor(n+i)<=r.height()))},position:function(e){var t,n=this._rangeStart||this.dataSource.skip()||0,i=this.dataSource.pageSize();return t=e>n?e-n+1:n-e-1,t>i?i:t},scrollIntoView:function(e){var t=this.wrapper[0],n=t.clientHeight,i=this._isScrolledToBottom()?t.scrollTop:this._scrollTop||t.scrollTop,o=e[0].offsetTop,r=e[0].offsetHeight;i>o?this.verticalScrollbar[0].scrollTop-=n/2:o+r>=i+n&&(this.verticalScrollbar[0].scrollTop+=n/2)},_fetch:function(t,n,i){var o=this,r=o.dataSource,a=o.itemHeight,s=r.take(),l=o._rangeStart||r.skip()||0,c=Ke.floor(t/s)*s,d=!1,u=.33,h=o.verticalScrollbar,p=Fn.webkit?1:0;return t<l?(d=!0,l=Ke.max(0,n-s),o._scrollTop=h.scrollTop()-l*a,o._page(l,s)):n>=l+s&&!i?(d=!0,l=Ke.min(t,r.total()-s),o._scrollTop=h.scrollTop()>=h[0].scrollHeight-h[0].offsetHeight-p?o.wrapper[0].scrollHeight-o.wrapper[0].offsetHeight:a,o._page(l,s)):!o._fetching&&o.options.prefetch&&(t<c+s-s*u&&t>s&&r.prefetch(c-s,s,e.noop),n>c+s*u&&r.prefetch(c+s,s,e.noop)),d},fetching:function(){return this._fetching},_page:function(t,n,i){var o=this,r=!o.options.prefetch,a=o.dataSource;i=Ge(i)?i:e.noop,o.trigger(Mt,{skip:t,take:n})||(clearTimeout(o._timeout),o._fetching=!0,o._rangeStart=t,a.inRange(t,n)?(Ae.ui.progress(e(o.wrapper).parent(),!0),a.range(t,n,function(){Ae.ui.progress(e(o.wrapper).parent(),!1),i(),o.trigger(It)})):(r||Ae.ui.progress(o.wrapper.parent(),!0),o._timeout=setTimeout(function(){o._scrolling||(r&&Ae.ui.progress(o.wrapper.parent(),!0),a.range(t,n,function(){Ae.ui.progress(o.wrapper.parent(),!1),i(),o.trigger(It)}))},100)))},repaintScrollbar:function(e){var n,i=this,o="",r=i.options.maxScrollHeight,a=i.dataSource,s=Ae.support.kineticScrollNeeded?0:Ae.support.scrollbar(),l=i.wrapper[0],c=i._isScrolledToBottom(),d=i.itemHeight=i.options.itemHeight()||0,u=l.scrollWidth>l.offsetWidth?s:0,h=a.total()*d+u;for(n=0;n<Ke.floor(h/r);n++)o+='<div style="width:1px;height:'+r+'px"></div>';h%r&&(o+='<div style="width:1px;height:'+h%r+'px"></div>'),i.verticalScrollbar.html(o),c&&!i._isScrolledToBottom()&&i.scrollToBottom(),t!==i._scrollTop&&e&&(l.scrollTop=i._scrollTop,i._scrollWrapperOnColumnResize())},refresh:function(e){var n=this,i=n.dataSource,o=n._rangeStart,r=(e||{}).action,a=n._isScrolledToBottom()||!r||r!==Et&&r!==gt&&r!==Rt;Ae.ui.progress(n.wrapper.parent(),!1),clearTimeout(n._timeout),n.repaintScrollbar(a),n.drag&&n.drag.cancel(),t===o||n._fetching||((!r||r!==Rt&&r!==Et)&&(n._rangeStart=i.skip()),1!==i.page()||r&&(r===Rt||r===Et)||(n.verticalScrollbar[0].scrollTop=0)),n._fetching=!1}}),Nn={create:{text:"Add new record",className:"k-grid-add",iconClass:"k-icon k-i-plus"},cancel:{text:"Cancel changes",className:"k-grid-cancel-changes",iconClass:"k-icon k-i-cancel"},save:{text:"Save changes",className:"k-grid-save-changes",iconClass:"k-icon k-i-check"},destroy:{text:"Delete",className:"k-grid-delete",iconClass:"k-icon k-i-close"},edit:{text:"Edit",className:"k-grid-edit",iconClass:"k-icon k-i-edit"},update:{text:"Update",className:"k-primary k-grid-update",iconClass:"k-icon k-i-check"},canceledit:{text:"Cancel",className:"k-grid-cancel",iconClass:"k-icon k-i-cancel"},excel:{text:"Export to Excel",className:"k-grid-excel",iconClass:"k-icon k-i-file-excel"},pdf:{text:"Export to PDF",className:"k-grid-pdf",iconClass:"k-icon k-i-file-pdf"}},On=Ae.ui.DataBoundWidget.extend({init:function(t,n,i){var o=this;n=We(n)?{dataSource:n}:n,Pe.fn.init.call(o,t,n),i&&(o._events=i),Mn=Ae.support.isRtl(t),o._element(),o._aria(),o._columns(e.extend(!0,[],o.options.columns)),o._dataSource(),o._tbody(),o._pageable(),o._thead(),o._groupable(),o._toolbar(),o._setContentHeight(),o._templates(),o._navigatable(),o._selectable(),o._clipboard(),o._details(),o._editable(),o._attachCustomCommandsEvent(),o._adaptiveColumns(),o._minScreenSupport(),o.options.autoBind?o.dataSource.fetch():(o._group=o._groups()>0,o._footer()),o.lockedContent&&(o.wrapper.addClass("k-grid-lockedcolumns"),o._resizeHandler=function(){o.resize()},e(window).on("resize"+ct,o._resizeHandler)),Ae.notify(o)},events:[yt,"dataBinding","cancel",Tt,Dt,At,mt,vt,bt,_t,wt,ht,pt,ft,gt,St,kt,Gt,$t,Ct,xt,Yt,Kt,Qt,"page","sort","filter","group","groupExpand","groupCollapse"],setDataSource:function(e){var t,n=this,i=n.options.scrollable;n.options.dataSource=e,n._dataSource(),n._pageable(),n._thead(),i&&(i.virtual?(t=n.content.find(">.k-virtual-scrollable-wrap"),t.scrollLeft(ye(t,Mn))):(t=n.tbody,n.content.scrollLeft(ye(t,Mn)))),n.options.groupable&&n._groupable(),n.virtualScrollable&&n.virtualScrollable.setDataSource(n.options.dataSource),n.options.navigatable&&n._navigatable(),n.options.selectable&&n._selectable(),n.options.autoBind&&n.dataSource.fetch()},options:{name:"Grid",columns:[],toolbar:null,autoBind:!0,filterable:!1,scrollable:!0,sortable:!1,selectable:!1,allowCopy:!1,navigatable:!1,pageable:!1,persistSelection:!1,editable:!1,groupable:!1,rowTemplate:"",altRowTemplate:"",search:!1,noRecords:!1,dataSource:{},height:null,resizable:!1,reorderable:!1,columnMenu:!1,detailTemplate:null,columnResizeHandleWidth:3,mobile:"",messages:{editable:{cancelDelete:bn,confirmation:mn,confirmDelete:_n},commands:{create:Nn.create.text,cancel:Nn.cancel.text,save:Nn.save.text,destroy:Nn.destroy.text,edit:Nn.edit.text,update:Nn.update.text,canceledit:Nn.canceledit.text,excel:Nn.excel.text,pdf:Nn.pdf.text},search:"Search...",noRecords:vn,expandCollapseColumnHeader:"",groupHeader:"Press ctrl + space to group",ungroupHeader:"Press ctrl + space to ungroup"}},destroy:function(){var t,n=this;n._angularItems("cleanup"),n._destroyColumnAttachments(),Pe.fn.destroy.call(n),this._navigatableTables&&(this._navigatableTables.off(ct),this._navigatableTables=null),n._resizeHandler&&e(window).off("resize"+ct,n._resizeHandler),n.pager&&n.pager.element&&n.pager.destroy(),n.timer&&clearTimeout(n.timer),n._progressTimeOut&&clearTimeout(n._progressTimeOut),n._collapseGroupsTimeOut&&clearTimeout(n._collapseGroupsTimeOut),n._endlessFetchTimeOut&&clearTimeout(n._endlessFetchTimeOut),n.pager=null,n._destroyGroupable(),n.options.reorderable&&n.wrapper.data("kendoReorderable").destroy(),n.selectable&&n.selectable.element&&(n.selectable.destroy(),n.clearArea(),n._selectedIds=null,n.copyHandler&&(n.wrapper.off("keydown",n.copyHandler),n.unbind(n.copyHandler)),n.updateClipBoardState&&(n.unbind(n.updateClipBoardState),n.updateClipBoardState=null),n.clearAreaHandler&&n.wrapper.off("keyup",n.clearAreaHandler)),n.selectable=null,n.resizable&&(n.resizable.destroy(),n._resizeUserEvents&&(n._resizeHandleDocumentClickHandler&&e(document).off("click",n._resizeHandleDocumentClickHandler),n._resizeUserEvents.destroy(),n._resizeUserEvents=null),n.resizable=null),n._destroyVirtualScrollable(),n._destroyEditable(),n.dataSource&&(n.dataSource.unbind(yt,n._refreshHandler).unbind(Xe,n._progressHandler).unbind(Je,n._errorHandler),n._refreshHandler=n._progressHandler=n._errorHandler=null),t=n.element.add(n.wrapper).add(n.table).add(n.thead).add(n.wrapper.find(">.k-grid-toolbar")),n.content&&(t=t.add(n.content).add(n.content.find(">.k-virtual-scrollable-wrap"))),n.lockedHeader&&n._removeLockedContainers(),n.pane&&n.pane.destroy(),n._isMobile&&(n.wrapper.off("transitionend"+ct),n.wrapper.off("contextmenu"+ct)),n.minScreenResizeHandler&&e(window).off("resize",n.minScreenResizeHandler),n._detachColumnMediaResizeHandler(),n._draggableInstance&&n._draggableInstance.element&&n._draggableInstance.destroy(),n._draggableInstance=null,t.off(ct),Ae.destroy(n.wrapper),n.rowTemplate=n.altRowTemplate=n.lockedRowTemplate=n.lockedAltRowTemplate=n.detailTemplate=n.footerTemplate=n.groupFooterTemplate=n.lockedGroupFooterTemplate=n.noRecordsTemplate=null,n.scrollables=n.thead=n.tbody=n.element=n.table=n.content=n.footer=n.wrapper=n.lockedTable=n.lockedContent=n.lockedHeader=n.lockedFooter=n._groupableClickHandler=n._groupRows=n._setContentWidthHandler=null},getOptions:function(){var n,i,o,r=this.options;return r.dataSource=null,n=Ne(!0,{},this.options),n.columns=Ae.deepExtend([],this.columns),i=this.dataSource,o=i.options.data&&i._data,i.options.data=null,n.dataSource=e.extend(!0,{},i.options),i.options.data=o,n.dataSource.data=o,n.dataSource.page=i.page(),n.dataSource.filter=e.extend(!0,{},i.filter()),n.dataSource.pageSize=i.pageSize(),n.dataSource.sort=i.sort(),n.dataSource.group=i.group(),n.dataSource.aggregate=i.aggregate(),n.dataSource.transport&&(n.dataSource.transport.dataSource=null),n.pageable&&n.pageable.pageSize&&(n.pageable.pageSize=i.pageSize()),n.$angular=t,n},setOptions:function(e){var t,n,i,o,r=this.getOptions();Ae.deepExtend(r,e),e.dataSource||(r.dataSource=this.dataSource),t=this.wrapper,n=this._events,i=this.element,this.destroy(),this.options=null,this._isMobile&&(o=t.closest(Ae.roleSelector("pane")).parent(),o.after(t),o.remove(),t.removeClass("k-grid-mobile")),t[0]!==i[0]&&(t.before(i),t.remove()),i.empty(),this.init(i,r,n),this._setEvents(r)},items:function(){return this.lockedContent?this._items(this.tbody).add(this._items(this.lockedTable.children("tbody"))):this._items(this.tbody)},_items:function(t){return t.children().filter(function(){var t=e(this);return!t.hasClass("k-grouping-row")&&!t.hasClass("k-detail-row")&&!t.hasClass("k-group-footer")})},dataItems:function(){var e,t,n,i=Ae.ui.DataBoundWidget.fn.dataItems.call(this);if(this.lockedContent){for(e=i.length,t=Array(2*e),n=e;--n>=0;)t[n]=t[n+e]=i[n];i=t}return i},_destroyColumnAttachments:function(){var t=this;t.resizeHandle=null,t.thead&&(this.angular("cleanup",function(){return{elements:t.thead.get()}}),t.thead.add(t.lockedHeader).find("th").each(function(){var t=e(this),n=t.data("kendoFilterMenu"),i=t.data("kendoColumnSorter"),o=t.data("kendoColumnMenu");n&&n.destroy(),i&&i.destroy(),o&&o.destroy()}))},_attachCustomCommandsEvent:function(){var e,t,n,i=this,o=Y(i.columns||[]);for(t=0,n=o.length;t<n;t++)e=o[t].command,e&&l(i,i.wrapper,e)},_aria:function(){var e=this.element.attr("id")||"aria";e&&(this._cellId=e+"_active_cell")},_element:function(){var t=this,n=t.element;n.is("table")||(n=t.options.scrollable?t.element.find("> .k-grid-content > table"):t.element.children("table"),n.length||(n=e("<table />").appendTo(t.element))),Rn&&n.attr("cellspacing",0),t.table=n.attr("role",t._hasDetails()?"treegrid":"grid"),t._wrapper()},_createResizeHandle:function(t,n){var i,o,r,a,s,l,c=this,d=c.options.columnResizeHandleWidth,u=c.options.scrollable,h=c.resizeHandle;h&&c.lockedContent&&h.data("th")[0]!==n[0]&&(h.off(ct).remove(),h=null),h||(h=c.resizeHandle=e('<div class="k-resize-handle"><div class="k-resize-handle-inner"></div></div>'),t.append(h)),i=n.offset().left+t.scrollLeft()-parseFloat(n.css("marginLeft"))-(t.offset().left+parseFloat(t.css("borderLeftWidth"))),Mn?u&&(r=n.closest(".k-grid-header-wrap, .k-grid-header-locked"),a=Fn.msie?r.scrollLeft():0,s=Fn.webkit?r[0].scrollWidth-r[0].offsetWidth-r.scrollLeft():0,l=Fn.mozilla?r[0].scrollWidth-r[0].offsetWidth-(r[0].scrollWidth-r[0].offsetWidth-r.scrollLeft()):0,i-=s-l+a):i+=n[0].offsetWidth,o=n.offset().top-parseFloat(n.css("marginTop"))-(t.offset().top+parseFloat(t.css("borderTopWidth"))),h.css({top:o,left:i-3*d/2,height:Be(n),width:3*d}).data("th",n).show(),h.off("dblclick"+ct).on("dblclick"+ct,function(){c._autoFitLeafColumn(n.data("index"))})},_positionColumnResizeHandle:function(){var n=this,i=n.lockedHeader?n.lockedHeader.find("thead:first"):e();n.thead.add(i).on("mousemove"+ct,"tr:not(.k-filter-row) > th",function(i){var o=t!==i.buttons?i.buttons:i.which||i.button,r=e(this);r.hasClass("k-group-cell")||r.hasClass("k-hierarchy-cell")||t!==o&&0!==o||r[0].hasAttribute(Ae.attr(hn))||n._createResizeHandle(r.closest("div"),r)})},_resizeHandleDocumentClick:function(t){e(t.target).closest(".k-column-active").length||(e(document).off(t),this._resetResizeHandleHeader(),this._hideResizeHandle())},_resetResizeHandleHeader:function(){var t;this.resizeHandle&&(t=e(this.resizeHandle).data("th"),t&&(t.find(Qe+Ot).find(Qe+Vt).show(),t.find(Qe+Wt).show(),t.find(Qe+Ut).show(),t.find(Qe+qt).show()))},_hideResizeHandle:function(){this.resizeHandle&&(this.resizeHandle.data("th").removeClass("k-column-active"),this.lockedContent&&!this._isMobile?(this.resizeHandle.off(ct).remove(),this.resizeHandle=null):this.resizeHandle.hide())},_positionColumnResizeHandleTouch:function(){var t=this,n=t.lockedHeader?t.lockedHeader.find("thead:first"):e();t._resizeUserEvents=new Ae.UserEvents(n.add(t.thead),{filter:"th:not(.k-group-cell):not(.k-hierarchy-cell)",threshold:10,minHold:500,hold:function(n){var i=e(n.target);n.preventDefault(),t.resizeHandle&&(t.resizeHandle.data("th").removeClass("k-column-active"),t._resetResizeHandleHeader()),i.addClass("k-column-active"),i.find(Qe+Ot).find(Qe+Vt).hide(),i.find(Qe+Wt).hide(),i.find(Qe+Ut).hide(),i.find(Qe+qt).hide(),t._createResizeHandle(i.closest("div"),i),t._resizeHandleDocumentClickHandler||(t._resizeHandleDocumentClickHandler=je(t._resizeHandleDocumentClick,t)),e(document).on("click",t._resizeHandleDocumentClickHandler)}})},resizeColumn:function(n,i){var o,r,a,s,l=this,c=!!n.locked,d=!!n.hidden,u=this.options,h=Ae.support.mobileOS?0:Ae.support.scrollbar(),p=c?Ue(n,j(l.columns)):Ue(n,q(l.columns)),f=c?l.lockedTable:l.table,g=l.footer||e(),m=c?l.lockedHeader.find("table"):l.thead.closest("table"),v=n.minResizableWidth||10,_=ze(c?f.find("tbody"):l.tbody);return d?(n.width=i>v?i:v,t):(l.footer&&l.lockedContent&&(g=l.footer.children(c?".k-grid-footer-locked":".k-grid-footer-wrap")),o=u.scrollable?m.find("col:not(.k-group-col,.k-hierarchy-col):eq("+p+")").add(f.children("colgroup").find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+p+")")).add(g.find("colgroup").find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+p+")")):f.find("colgroup").find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+p+")"),u.scrollable?(r=!1,a=l.wrapper.width()-h,s=i=i>v?i:v,c&&_-i+s>a&&(s=i+(a-_-2*h),s<0&&(s=i),r=!0),s>10&&s>=v&&(o.css("width",s),_&&(s=r?a-2*h:_+(i-n.width),f.add(m).add(g).css("width",s),c||(l._footerWidth=s))),l._scrollVirtualWrapperOnColumnResize()):i>10&&i>=v&&o.css("width",i),n.width=i,l._applyLockedContainersWidth(),l._syncLockedContentHeight(),l._syncLockedHeaderHeight(),t)},_resizable:function(){var t,n,i,o,a,s,l,c,d=this,u=d.options,h=this._isMobile,p=Ae.support.mobileOS?0:Ae.support.scrollbar();u.resizable&&(t=u.scrollable?d.wrapper.find(".k-grid-header-wrap:first"):d.wrapper,h?d._positionColumnResizeHandleTouch(t):d._positionColumnResizeHandle(t),d.resizable&&d.resizable.destroy(),d.resizable=new Ee.Resizable(t.add(d.lockedHeader),{handle:(u.scrollable?"":">")+".k-resize-handle",hint:function(t){return e('<div class="k-grid-resize-indicator" />').css({height:Be(t.data("th"))+d.tbody.attr("clientHeight")})},start:function(t){var p,f,g,m,v;c=e(t.currentTarget).data("th"),h&&d._hideResizeHandle(),p=c.closest("table"),f=e.inArray(c[0],Q(c.closest("thead")).filter(":visible")),s=p.parent().hasClass("k-grid-header-locked"),g=s?d.lockedTable:d.table,m=d.footer||e(),d.footer&&d.lockedContent&&(m=d.footer.children(s?".k-grid-footer-locked":".k-grid-footer-wrap")),r(d.wrapper,"col-resize"),l=u.scrollable?p.find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+f+")").add(g.children("colgroup").find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+f+")")).add(m.find("colgroup").find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+f+")")):g.children("colgroup").find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+f+")"),v=e.map(d.columns,function(e){return!e.hidden&&(s&&e.locked||!s&&!e.locked)?e:null}),n=t.x.location,i=ze(c),o=Y(v)[f].minResizableWidth||10,a=ze(s?g.children("tbody"):d.tbody),Fn.webkit&&d.wrapper.addClass("k-grid-column-resizing")},resize:function(t){var r,h,f,g,m,v,_=Mn?-1:1,b=i+t.x.location*_-n*_;u.scrollable?(s&&d.lockedFooter?r=d.lockedFooter.children("table"):d.footer&&(r=d.footer.find(">.k-grid-footer-wrap>table")),r&&r[0]||(r=e()),h=c.closest("table"),f=s?d.lockedTable:d.table,g=!1,m=d.wrapper.width()-p,v=b,s&&a-i+v>m&&(v=i+(m-a-2*p),v<0&&(v=b),g=!0),v>10&&v>=o&&(l.css("width",v),a&&(v=g?m-2*p:a+t.x.location*_-n*_,f.add(h).add(r).css("width",v),s||(d._footerWidth=v))),d._scrollVirtualWrapperOnColumnResize()):b>10&&b>=o&&l.css("width",b)},resizeend:function(){var e,t,n,o=ze(c);r(d.wrapper,""),Fn.webkit&&d.wrapper.removeClass("k-grid-column-resizing"),i!=o&&(t=d.lockedHeader?d.lockedHeader.find("thead:first tr:first").add(d.thead.find("tr:first")):c.parent(),n=c.attr(Ae.attr("index")),n||(n=t.find("th:not(.k-group-cell):not(.k-hierarchy-cell)").index(c)),e=Y(d.columns)[n],e.width=o,d.trigger(Gt,{column:e,oldWidth:i,newWidth:o}),d._applyLockedContainersWidth(),d._syncLockedContentHeight(),d._syncLockedHeaderHeight()),d._resetResizeHandleHeader(),d._hideResizeHandle(),c=null}}))},_draggable:function(){var t,n=this;n.options.reorderable&&(n._draggableInstance&&n._draggableInstance.destroy(),t=n.wrapper.children(".k-grid-header"),n._draggableInstance=n.wrapper.kendoDraggable({group:Ae.guid(),autoScroll:!0,filter:n.content?".k-grid-header:first "+lt:"table:first>.k-grid-header "+lt,dragstart:function(){t.children(".k-grid-header-wrap").unbind("scroll"+ct+"scrolling").bind("scroll"+ct+"scrolling",function(e){n.virtualScrollable?n.content.find(">.k-virtual-scrollable-wrap").scrollLeft(this.scrollLeft):n.scrollables.not(e.currentTarget).scrollLeft(this.scrollLeft)})},dragend:function(){n._resetResizeHandleHeader(),t.children(".k-grid-header-wrap").unbind("scroll"+ct+"scrolling")},drag:function(){n._hideResizeHandle()},hint:function(t){var n=t.attr(Ae.attr("title"));return n&&(n=Ae.htmlEncode(n)),e('<div class="k-header k-reorder-clue k-drag-clue" />').html(n||t.attr(Ae.attr("field"))||t.text()).prepend('<span class="k-icon k-drag-status k-i-cancel" />')}}).data("kendoDraggable"))},_reorderable:function(){var t=this;t.options.reorderable&&(t.wrapper.data("kendoReorderable")&&t.wrapper.data("kendoReorderable").destroy(),t.wrapper.kendoReorderable({draggable:t._draggableInstance,dragOverContainers:function(e,n){var i=R(t.columns);return i[e].lockable!==!1&&P(i,t.columns,e,n)>-1},inSameContainer:function(n){return e(n.source).parent()[0]===e(n.target).parent()[0]&&P(R(t.columns),t.columns,n.sourceIndex,n.targetIndex)>-1},change:function(e){var n=R(t.columns),i=n[e.oldIndex],o=P(n,t.columns,e.oldIndex,e.newIndex);t.trigger($t,{newIndex:o,oldIndex:Ue(i,n),column:i}),t.reorderColumn(o,i,"before"===e.position)}}))},_reorderHeader:function(e,t,n,i){var o,r,l,c,d,u=this,h=E(e[0],u.columns),p=E(t,u.columns),f=[];for(l=0;l<e.length;l++)e[l].columns&&(f=f.concat(e[l].columns));r=i?s(i,i,"tr:eq("+h.row+")>th.k-header:not(.k-group-cell,.k-hierarchy-cell)"):s(u.lockedHeader,u.thead,"tr:eq("+h.row+")>th.k-header:not(.k-group-cell,.k-hierarchy-cell)"),c=W(e).length,d=W([t]).length,f.length?(c>0&&0===d?(o="prepend",S(e,t,f,u.columns,u.lockedHeader.find("thead"),u.thead,this._groups(),o)):0===c&&d>0&&(o=0!==p.cell||!e[0].columns||t.columns||u._group?"append":"prepend",S(e,t,f,U(u.columns),u.thead,u.lockedHeader.find("thead"),this._groups(),o)),(t.columns||h.cell-p.cell>1||p.cell-h.cell>1)&&(t=M(u.columns,t,e[0],n,u.columns),t&&(c>0&&0===d?u._reorderHeader(f,t,n,u.thead):0===c&&d>0?u._reorderHeader(f,t,n,u.lockedHead):u._reorderHeader(f,t,n)))):c!==d&&C(r[h.cell],u.columns,c),a(r,h.cell,p.cell,n,e.length)},_reorderContent:function(t,n,i){var o,r,l,c,d,u,h=this,p=e(),f=t[0],g=w(t),m=Ue(f,Y(h.columns)),v=Ue(n,Y(h.columns)),_=Ue(g[0],G(h.columns)),b=Ue(n,G(h.columns)),k=W(h.columns).length,y=!!n.locked,x=h.footer||h.wrapper.find(".k-grid-footer"),C=o=b;for(n.hidden&&(l=y?W(h.columns):U(h.columns),w(l).length>0?(C=o=b=this._findClosestVisibleColumnIndex(l,v),r=w(l.slice(v)).length>0):y?(b=h.lockedTable.find("colgroup"),C=h.lockedHeader.find("colgroup"),o=e(h.lockedFooter).find(">table>colgroup")):(b=h.tbody.prev(),C=h.thead.prev(),o=x.find(".k-grid-footer-wrap").find(">table>colgroup"))),h._hasFilterRow()&&a(h.wrapper.find(".k-filter-row th:not(.k-group-cell,.k-hierarchy-cell)"),m,v,i,t.length),_>=0&&a(s(h.lockedHeader,h.thead.prev(),"col:not(.k-group-col,.k-hierarchy-col)"),_,C,r?r:i,g.length),h.options.scrollable&&_>=0&&a(s(h.lockedTable,h.tbody.prev(),"col:not(.k-group-col,.k-hierarchy-col)"),_,b,r?r:i,g.length),x&&x.length&&(_>=0&&a(s(h.lockedFooter,x.find(".k-grid-footer-wrap"),">table>colgroup>col:not(.k-group-col,.k-hierarchy-col)"),_,o,r?r:i,g.length),a(x.find(".k-footer-template>td:not(.k-group-cell,.k-hierarchy-cell)"),m,v,i,t.length)),c=h.tbody.children(":not(.k-grouping-row,.k-detail-row)"),h.lockedTable&&(k>v?k<=m&&ue(h.lockedTable.find(">tbody>tr.k-grouping-row"),h.table.find(">tbody>tr.k-grouping-row"),t.length):k>m&&ue(h.table.find(">tbody>tr.k-grouping-row"),h.lockedTable.find(">tbody>tr.k-grouping-row"),t.length),p=h.lockedTable.find(">tbody>tr:not(.k-grouping-row,.k-detail-row)")),d=0,u=c.length;d<u;d+=1)a(s(p[d],c[d],">td:not(.k-group-cell,.k-hierarchy-cell)"),m,v,i,t.length)},_findClosestVisibleColumnIndex:function(e,t){var n=w(e.slice(t)).length>0?e.slice(t):e.slice(0,t+1).reverse(),i=w(n)[0]; +return Ue(i,w(this.columns))},_autoFitLeafColumn:function(e){this.autoFitColumn(Y(this.columns)[e])},autoFitColumn:function(t){var n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,_,w,k,y,x,C=this,S=C.options,T=C.columns,D=C.lockedHeader?Q(C.lockedHeader.find(">table>thead")).filter(v).length:0,A="col:not(.k-group-col):not(.k-hierarchy-col)",E="td:visible:not(.k-group-cell):not(.k-hierarchy-cell)";if(t="number"==typeof t?T[t]:He(t)?Ve(z(T),function(e){return e===t})[0]:Ve(z(T),function(e){return e.field===t})[0],t&&b(t)){for(s=t.minResizableWidth,n=Ue(t,Y(T)),r=t.locked,o=r?C.lockedHeader.children("table"):C.thead.parent(),i=o.find("[data-index='"+n+"']"),d=r?C.lockedTable:C.table,u=C.footer||e(),C.footer&&C.lockedContent&&(u=C.footer.children(r?".k-grid-footer-locked":".k-grid-footer-wrap")),h=u.find("table").first(),C.lockedHeader&&!r&&(n-=D),p=0;p<T.length&&T[p]!==t;p++)T[p].hidden&&n--;if(S.scrollable?(a=o.find(A).eq(n).add(d.children("colgroup").find(A).eq(n)).add(h.find("colgroup").find(A).eq(n)),r||(l=d.parent(),c=l.scrollLeft())):a=d.children("colgroup").find(A).eq(n),f=o.add(d).add(h),g=ze(i),a.width(""),f.css("table-layout","fixed"),a.width("auto"),f.addClass("k-autofitting"),f.css("table-layout",""),m=Math.ceil(Math.max(ze(i),ze(d.find("tr:not(.k-grouping-row)").eq(0).children(E).eq(n)),ze(h.find("tr").eq(0).children(E).eq(n))))+1,s&&s>m&&(m=s),a.width(m),t.width=m,S.scrollable){for(_=o.find("col"),k=0,y=0,x=_.length;y<x;y+=1)if(w=_[y].style.width,w&&w.indexOf("%")==-1)k+=parseInt(w,10);else{if(!_.eq(y).hasClass("k-group-col")){k=0;break}k+=parseInt(_.eq(y).width(),10)}k&&f.each(function(){this.style.width=k+"px"})}Fn.msie&&8==Fn.version&&(f.css("display","inline-table"),setTimeout(function(){f.css("display","table")},1)),f.removeClass("k-autofitting"),c&&l.scrollLeft(c),C.trigger(Gt,{column:t,oldWidth:g,newWidth:m}),C._applyLockedContainersWidth(),C._syncLockedContentHeight(),C._syncLockedHeaderHeight()}},reorderColumn:function(e,n,i){var o,r,a=this,s=d(n,a.columns),l=s?s.columns:a.columns,c=Ue(n,l),u=l[e],h=!!u.locked,p=W(a.columns).length,f=Ve(Y(a.columns),function(e){return e.groupHeaderColumnTemplate});c!==e&&(!n.locked&&h&&1==U(a.columns).length||n.locked&&!h&&1==p||(a._hideResizeHandle(),i===t&&(i=e<c),r=[n],a._reorderHeader(r,u,i),a.lockedHeader&&(O(a.thead),O(a.lockedHeader)),u.columns&&(u=Y(u.columns),u=u[i?0:u.length-1]),n.columns&&(r=Y(n.columns)),a._reorderContent(r,u,i),o=!!n.locked,o=o!=h,n.locked=h,l.splice(i?e:e+1,0,n),l.splice(c<e?c:c+1,1),a._updateLockedCols(),a._updateCols(),a._templates(),a._updateColumnCellIndex(),a._updateColumnSorters(),f.length>0&&a._renderGroupRows(),a._updateTablesWidth(),a._applyLockedContainersWidth(),a._syncLockedHeaderHeight(),a._syncLockedContentHeight(),a._updateFirstColumnClass(),o&&(h?a.trigger(Yt,{column:n}):a.trigger(Kt,{column:n}))))},_updateColumnCellIndex:function(){var e,t=0;this.lockedHeader&&(e=this.lockedHeader.find("thead"),t=T(e,W(this.columns))),T(this.thead,U(this.columns),t)},lockColumn:function(e){var t,n=this.columns;e="number"==typeof e?n[e]:Ve(n,function(t){return t.field===e})[0],!e||e.locked||e.hidden||(t=W(n).length-1,this.reorderColumn(t,e,!1))},unlockColumn:function(e){var t,n=this.columns;e="number"==typeof e?n[e]:Ve(n,function(t){return t.field===e})[0],e&&e.locked&&!e.hidden&&(t=W(n).length,this.reorderColumn(t,e,!0))},cellIndex:function(t){var n=0;return this.lockedTable&&!e.contains(this.lockedTable[0],t[0])&&(n=Y(W(this.columns)).length),e(t).parent().children("td:not(.k-group-cell,.k-hierarchy-cell)").index(t)+n},_modelForContainer:function(t){t=e(t),t.is("tr")||"popup"===this._editMode()||(t=t.closest("tr"));var n=t.attr(Ae.attr("uid"));return this.dataSource.getByUid(n)},_editable:function(){var t,n=this,i=n.selectable&&n.selectable.options.multiple,o=n.options.editable,r=function(){var t=Re(),i=n._editContainer;i&&i[0]&&!e.contains(i[0],t)&&i[0]!==t&&!e(t).closest(".k-animation-container").length&&(n.editable.end()?n.closeCell():n._scrollVirtualWrapper())};o&&(this.wrapper.addClass("k-editable"),t=n._editMode(),"incell"===t?(n.table.add(n.lockedTable).on("mousedown"+ct,nt+">"+it,function(t){var i=e(t.target);"incell"===n._editMode()&&i.hasClass("k-checkbox-label")&&i.prev().attr(Ae.attr("bind"))&&t.preventDefault()}),o.update!==!1&&(Bn&&n.wrapper.on(Xt+ct,".k-edit-cell > input[type='checkbox']",function(t){e(t.target).focus()}).on(Xt+ct,".k-edit-cell",function(t){e(t.target).is("input")||e(t.currentTarget).find("input[type='checkbox']").focus()}).on(Jt+ct,"tr:not(.k-grouping-row) > td",function(t){var i=n._editContainer;n._mousedownOnEditCell=!(!i||!i[0]||!e.contains(i[0],t.target)&&i[0]!==t.target)}),n.wrapper.on(Ae.support.touch?"touchstart"+ct:Xt+ct,"tr:not(.k-grouping-row) > td",function(t){var o=e(this),r=n.lockedTable&&o.closest("table")[0]===n.lockedTable[0];n._mousedownOnEditCell=!1,o.hasClass("k-hierarchy-cell")||o.hasClass("k-detail-cell")||o.hasClass("k-group-cell")||o.hasClass("k-edit-cell")||o.has("a.k-grid-delete").length||o.has("button.k-grid-delete").length||o.closest("tbody")[0]!==n.tbody[0]&&!r||e(t.target).is(":input")||(n.editable?n.editable.end()?(i&&e(Re()).blur(),n.closeCell(),n.editCell(o)):n._scrollVirtualWrapper():n.editCell(o))}).on("focusin"+ct,function(){e.contains(this,Re())||(clearTimeout(n.timer),n.timer=null)}).on("focusout"+ct,function(e){var t=!0;Bn&&n._mousedownOnEditCell&&(t=!1),n._mousedownOnEditCell=!1,t&&(n.timer=setTimeout(function(){r(e)},1))}))):o.update!==!1&&(n.wrapper.on(Xt+ct,"tbody>tr:not(.k-detail-row,.k-grouping-row):visible a.k-grid-edit",function(t){t.preventDefault(),n.editRow(e(this).closest("tr"))}),n._isVirtualInlineEditable()&&n.wrapper.on("focusout"+ct,"tr:not(.k-grouping-row) > td",function(){n.editable&&!n.editable.end()&&n._scrollVirtualWrapper()})),o.destroy!==!1?n.wrapper.on(Xt+ct,"tbody>tr:not(.k-detail-row,.k-grouping-row):visible .k-grid-delete",function(t){t.preventDefault(),t.stopPropagation(),n.removeRow(e(this).closest("tr"))}):n.wrapper.on(Xt+ct,"tbody>tr:not(.k-detail-row,.k-grouping-row):visible button.k-grid-delete",function(e){e.stopPropagation(),n._confirmation()||e.preventDefault()}))},editCell:function(t){var n,i,o,r;if(t=e(t),n=this,i=Y(n.columns)[n.cellIndex(t)],o=n._modelForContainer(t),n.closeCell(),o&&be(i,o)&&!i.command){if(n.trigger(pt,{model:o}))return;n._attachModelChange(o),n._editContainer=t,n._shouldClearEditableState&&n._clearEditableState(),n.editable=t.addClass("k-edit-cell").kendoEditable({fields:{field:i.field,format:i.format,editor:i.editor,values:i.values},model:o,target:n,change:function(e){n.trigger(ft,{values:e.values,container:t,model:o})&&e.preventDefault()},skipFocus:!(!n._isVirtualIncellEditable()||!n._editableState)}).data("kendoEditable"),r=t.parent().addClass("k-grid-edit-row"),n.lockedContent&&(fe(r[0],n._relatedRow(r).addClass("k-grid-edit-row")[0]),n._syncLockedScroll()),n.trigger(ht,{container:t,model:o})}},_adjustLockedHorizontalScrollBar:function(){var e=this.table,t=e.parent(),n=e[0].offsetWidth>t[0].clientWidth?Ae.support.scrollbar():0;this.lockedContent.height(t[0].offsetHeight-n)},_syncLockedScroll:function(){this.lockedContent[0].scrollTop=this.content[0].scrollTop,this.virtualScrollable&&(this.lockedContent[0].scrollTop=this.wrapper.find(".k-virtual-scrollable-wrap")[0].scrollTop)},_syncLockedContentHeight:function(){this.lockedTable&&(this.touchScroller||this._adjustLockedHorizontalScrollBar(),this._adjustRowsHeight(this.table,this.lockedTable))},_syncLockedHeaderHeight:function(){var e,t;this.lockedHeader&&(e=this.lockedHeader.children("table"),t=this.thead.parent(),this._adjustRowsHeight(e,t),pe(e,t))},_syncLockedFooterHeight:function(){this.lockedFooter&&this.footer&&this.footer.length&&this._adjustRowsHeight(this.lockedFooter.children("table"),this.footer.find(".k-grid-footer-wrap > table"))},_destroyEditable:function(){var e=this,t=function(){if(e.editable){var t=e.editView?e.editView.element:e._editContainer;t&&(t.off(Xt+ct,"a.k-grid-cancel",e._editCancelClickHandler),t.off(Xt+ct,"a.k-grid-update",e._editUpdateClickHandler)),e._detachModelChange(),e.editable.destroy(),e.editable=null,e._editContainer=null,e._destroyEditView(),e._editableIsClosing=null}};e.editable&&("popup"!==e._editMode()||e._isMobile?t():e._editableIsClosing?e._editContainer.data("kendoWindow").bind("deactivate",t):(e._editableIsClosing=!0,e._editContainer.data("kendoWindow").bind("deactivate",t).close())),e._confirmDialog&&(e._confirmDialog.close(),e._confirmDialog.destroy(),e._confirmDialog=null)},_destroyEditView:function(){this.editView&&(this.editView.purge(),this.editView=null,this.pane.navigate(""))},_attachModelChange:function(e){var t=this;t._modelChangeHandler=function(e){t._modelChange({field:e.field,model:this})},e.bind("change",t._modelChangeHandler)},_detachModelChange:function(){var e=this,t=e._editContainer,n=e._modelForContainer(t);n&&n.unbind(yt,e._modelChangeHandler)},closeCell:function(e){var t,n,i,o=this,r=o._editContainer;r&&(i=o._modelForContainer(r),e&&o.trigger("cancel",{container:r,model:i})||(o.trigger(kt,{type:e?"cancel":"save",model:i,container:r}),r.removeClass("k-edit-cell"),t=Y(o.columns)[o.cellIndex(r)],n=r.parent().removeClass("k-grid-edit-row"),o.lockedContent&&o._relatedRow(n).removeClass("k-grid-edit-row"),o._destroyEditable(),o._displayCell(r,t,i),o._shouldClearEditableState&&o._clearEditableState(),o.trigger("itemChange",{item:n,data:i,ns:Ee}),o.lockedContent&&fe(n.css("height","")[0],o._relatedRow(n).css("height","")[0])))},_displayCell:function(e,t,n){var i=this,o={storage:{},count:0},r=Ne({},Ae.Template,i.options.templateSettings),a=Ae.template(i._cellTmpl(t,o),r);o.count>0&&(a=je(a,o.storage)),e.empty().html(a(n)),i.angular("compile",function(){return{elements:e,data:[{dataItem:n}]}})},removeRow:function(e){this._confirmation(e)&&this._removeRow(e)},_removeRow:function(t){var n,i,o,r,a=this,s=a._editMode();"incell"!==s&&a.cancelRow(),t=e(t),a.lockedContent&&(t=t.add(a._relatedRow(t))),t=t.hide(),n=a._modelForContainer(t),n&&!a.trigger(gt,{row:t,model:n})?(r=a.dataSource.options.schema,a._selectedIds&&r&&r.model&&(i=Ge(a.dataSource.options.schema.model)?a.dataSource.options.schema.model.fn.idField:a.dataSource.options.schema.model.id,o=n[i],delete a._selectedIds[o]),a.dataSource.remove(n),"inline"!==s&&"popup"!==s||a.dataSource.sync()):"incell"===s&&a._destroyEditable()},_editMode:function(){var e="incell",t=this.options.editable;return t!==!0&&(e="string"==typeof t?t:t.mode||e),e},editRow:function(t){var n,i,o,r=this;t instanceof Me?n=t:(t=e(t),n=r._modelForContainer(t)),i=r._editMode(),r.cancelRow(),n&&(t=r.tbody.children("["+Ae.attr("uid")+"="+n.uid+"]"),r._attachModelChange(n),"popup"===i?r._createPopupEditor(n):"inline"===i?r._createInlineEditor(t,n):"incell"===i&&e(t).children(et).each(function(){var t=e(this),i=Y(r.columns)[r.cellIndex(t)];if(n=r._modelForContainer(t),n&&(!n.editable||n.editable(i.field))&&i.field&&!i.selectable)return r.editCell(t),!1}),o=r.editView?r.editView.element:r._editContainer,o&&(this._editCancelClickHandler||(this._editCancelClickHandler=je(this._editCancelClick,this)),o.on(Xt+ct,"a.k-grid-cancel",this._editCancelClickHandler),this._editUpdateClickHandler||(this._editUpdateClickHandler=je(this._editUpdateClick,this)),o.on(Xt+ct,"a.k-grid-update",this._editUpdateClickHandler)))},_editUpdateClick:function(e){e.preventDefault(),e.stopPropagation(),this.saveRow()},_editCancelClick:function(t){var n,i=this,o=i.options.navigatable,r=i.editable.options.model,a=i.editView?i.editView.element:i._editContainer;t.preventDefault(),t.stopPropagation(),i.trigger("cancel",{container:a,model:r})||(n=i.items().index(e(i.current()).parent()),i.cancelRow(),o&&(i._setCurrent(i.items().eq(n).children().filter(it).first()),me(i.table,!0)))},_createPopupEditor:function(n){var i,o,r,a,s,l,c,d,u,h,p,f,g,m=this,v="<div "+Ae.attr("uid")+'="'+n.uid+'" class="k-popup-edit-form'+(m._isMobile?" k-mobile-list":"")+'"><'+(m._isMobile?"ul":"div")+' class="k-edit-form-container">',_=[],b=Y(m.columns),w=Ae.guid(),k=m.options.editable,y=k.template,x=He(k)?k.window:{},C=Ne({},Ae.Template,m.options.templateSettings);if(!m.trigger(pt,{model:n})){if(x=x||{},y)for(typeof y===nn&&(y=Ae.unescape(y)),v+=Ae.template(y,C)(n),r=0,a=b.length;r<a;r++)i=b[r],i.command&&(h=ge(i.command,"edit"),h&&(o=h));else for(r=0,a=b.length;r<a;r++)i=b[r],i.selectable||(i.command?i.command&&(h=ge(i.command,"edit"),h&&(o=h)):m._isMobile?(v+='<li class="k-item">',be(i,n)?(_.push({field:i.field,title:i.title,format:i.format,editor:i.editor,values:i.values}),v+='<label class="k-label"><span class="k-item-title">'+(i.title||i.field||"")+"</span>",v+='<div id="'+i.field+"_"+w+'" '+Ae.attr("container-for")+'="'+i.field+'"></div>'):(f={storage:{},count:0},s=Ae.template(m._cellTmpl(i,f),C),f.count>0&&(s=je(s,f.storage)),v+='<label class="k-label k-no-click"><span class="k-item-title">'+(i.title||i.field||"")+"</span>",v+='<span class="k-no-editor">'+s(n)+"</span>"),v+="</label></li>"):(v+='<div class="k-edit-label"><label for="'+i.field+'">'+(i.title||i.field||"")+"</label></div>",be(i,n)?(_.push({field:i.field,title:i.title,format:i.format,editor:i.editor,values:i.values}),v+="<div "+Ae.attr("container-for")+'="'+i.field+'" class="k-edit-field"></div>'):(f={storage:{},count:0},s=Ae.template(m._cellTmpl(i,f),C),f.count>0&&(s=je(s,f.storage)),v+='<div class="k-edit-field">'+s(n)+"</div>")));o&&He(o)&&(He(o.text)&&(l=o.text.update,c=o.text.cancel),He(o.iconClass)&&(d=o.iconClass.update,u=o.iconClass.cancel),o.attr&&(p=o.attr)),m._isMobile?(v+="</ul></div>",m.editView=m.pane.append("<div data-"+Ae.ns+'role="view" class="k-grid-edit-form"><div data-'+Ae.ns+'role="header" class="k-header"><a href="\\#" class="k-header-cancel k-link k-grid-cancel" title="#=messages.cancel#" aria-label="#=messages.cancel#"><span class="k-icon k-i-arrow-chevron-left"></span></a>'+(m.options.messages.commands.edit||"Edit")+'<a href="\\#" class="k-header-done k-link k-grid-update" title="#=messages.done#" aria-label="#=messages.done#"><span class="k-icon k-i-check"></span></a></div><div data-'+Ae.ns+'role="content" class="'+Ln.content+'">'+v+"</div></div>"),g=m._editContainer=m.editView.element.find(".k-popup-edit-form")):(v+='<div class="k-edit-buttons k-state-default">',v+=m._createButton({name:"update",text:l,attr:p,iconClass:d})+m._createButton({name:"canceledit",text:c,attr:p,iconClass:u}),v+="</div></div></div>",g=m._editContainer=e(v).appendTo(m.wrapper).eq(0).kendoWindow(Ne({modal:!0,resizable:!1,draggable:!0,title:m.options.messages.commands.edit||"Edit",visible:!1,close:function(i){if(i.userTriggered){if(i.sender.element.focus(),m.trigger("cancel",{container:g,model:n}))return i.preventDefault(),t;var o=m.items().index(e(m.current()).parent());m._editableIsClosing=!0,m.cancelRow(),m.options.navigatable&&(m._setCurrent(m.items().eq(o).children().filter(it).first()),me(m.table,!0))}}},x))),m.editable=m._editContainer.kendoEditable({fields:_,model:n,clearContainer:!1,target:m}).data("kendoEditable"),m._openPopUpEditor(),m.trigger(ht,{container:g,model:n})}},_openPopUpEditor:function(){var e=this,t=e._editContainer?e._editContainer.data("kendoWindow"):null,n=(e.options.editable||{}).window||{};this._isMobile?this.pane.navigate(this.editView,this._editAnimation):t&&(n.position||t.center(),t.open())},_createInlineEditor:function(t,n){var i,o,r,a=this,s=[];a.trigger(pt,{model:n})||(a.lockedContent&&(t=t.add(a._relatedRow(t))),t.children(":not(.k-group-cell,.k-hierarchy-cell)").each(function(){if(o=e(this),i=Y(a.columns)[a.cellIndex(o)],!i.command&&be(i,n))s.push({field:i.field,title:i.title,format:i.format,editor:i.editor,values:i.values}),o.attr(Ae.attr("container-for"),i.field),o.empty();else if(i.command&&(r=ge(i.command,"edit"))){o.empty();var t,l,c,d,u;He(r)&&(He(r.text)&&(t=r.text.update,l=r.text.cancel),He(r.iconClass)&&(c=r.iconClass.update,d=r.iconClass.cancel),r.attr&&(u=r.attr)),e(a._createButton({name:"update",text:t,attr:u,iconClass:c})+a._createButton({name:"canceledit",text:l,attr:u,iconClass:d})).appendTo(o)}}),a._editContainer=t,a._editContainer.addClass("k-grid-edit-row"),a._shouldClearEditableState&&a._clearEditableState(),a.editable=new Ae.ui.Editable(a._editContainer,{target:a,fields:s,model:n,skipFocus:!!(a._isVirtualInlineEditable()&&a._editableState&&a._editableState.field),clearContainer:!1}),t.length>1&&(fe(t[0],t[1]),a._applyLockedContainersWidth()),a.trigger(ht,{container:t,model:n}))},cancelRow:function(e){var t,n=this,i=n._editContainer;if(i){if(t=n._modelForContainer(i),!t||e&&n.trigger("cancel",{container:i,model:t}))return;n._destroyEditable(),n.dataSource.cancelChanges(t),n._clearEditableState(),n._displayRow("popup"!==n._editMode()?i:n.tbody.find("["+Ae.attr("uid")+"="+t.uid+"]"))}},saveRow:function(){var t,n=this,i=this._editContainer,o=this._modelForContainer(i),r=e.Deferred();return i&&this.editable?(t=n.editable&&n.editable.end(),!t||this.trigger(ft,{container:i,model:o})?(t||n._scrollVirtualWrapper(),r.reject().promise()):(n._clearEditableState(),this.dataSource.sync())):r.resolve().promise()},_displayRow:function(t){var n,i,o,r,a,s=this,l=s._modelForContainer(t),c=t.hasClass("k-state-selected"),d=t.hasClass("k-alt");l&&(s.lockedContent&&(n=e((d?s.lockedAltRowTemplate:s.lockedRowTemplate)(l)),s._relatedRow(t.last()).replaceWith(n)),s.angular("cleanup",function(){return{elements:t.get()}}),i=e((d?s.altRowTemplate:s.rowTemplate)(l)),t.is(":visible")||i.hide(),t.replaceWith(i),s.trigger("itemChange",{item:i,data:l,ns:Ee}),n&&n.length&&s.trigger("itemChange",{item:n,data:l,ns:Ee}),r=i,a=[{dataItem:l}],n&&n.length&&(r=i.add(n),a.push({dataItem:l})),s.angular("compile",function(){return{elements:r.get(),data:a}}),c&&(s.options.selectable||s._checkBoxSelection)&&s.select(i.add(n)),n&&fe(i[0],n[0]),o=i.next(),o.hasClass("k-detail-row")&&o.is(":visible")&&i.find(".k-hierarchy-cell .k-icon").removeClass("k-i-expand").addClass("k-i-collapse"))},_showMessage:function(t,n){var i,o=this;return o._isMobile?(i=o._confirmDialog=new Ae.ui.Confirm(e("<div />").appendTo(document.body),{modal:{preventScroll:!0},closable:!1,title:!1,content:t.title,messages:{okText:t.confirmDelete,cancel:t.cancelDelete},open:function(){o.content.data(pn,o.content.css(pn)),o.content.css(pn,fn)},close:function(){o.content.css(pn,o.content.data(pn))}}),i.result.done(function(){o._removeRow(n)}).fail(function(){var e=o._confirmDialog;e&&(e.close(),e.destroy())}),!1):window.confirm(t.title)},_confirmation:function(e){var t=this,n=t.options.editable,i=n===!0||typeof n===nn?t.options.messages.editable.confirmation:n.confirmation;return He(n)&&typeof n.mode===nn&&typeof i!==tn&&typeof i!==nn&&i!==!1&&(i=t.options.messages.editable.confirmation),i===!1||null==i||(typeof i===tn&&(i=i(t._modelForContainer(e))),t._showMessage({confirmDelete:n.confirmDelete||t.options.messages.editable.confirmDelete,cancelDelete:n.cancelDelete||t.options.messages.editable.cancelDelete,title:i===!0?t.options.messages.editable.confirmation:i},e))},cancelChanges:function(){var e=this;e.dataSource.cancelChanges(),e._isVirtualEditable()&&e._virtualPageToTop(function(){e.virtualScrollable.scrollToTop()})},saveChanges:function(){var e=this,t=e.editable&&e.editable.end();!t&&e.editable||e.trigger(St)?t||e._scrollVirtualWrapper():e.dataSource.sync()},addRow:function(){var e,t,n=this,i=n.dataSource,o=n._editMode(),r=n.options.editable.createAt||"",a=i.pageSize(),s=i.view()||[],l=r.toLowerCase()===on,c=n._isVirtualEditable();n.editable&&n.editable.end()||!n.editable?("incell"!=o&&n.cancelRow(),e=i.indexOf(s[0]),l&&(e+=s.length,a&&!i.options.serverPaging&&a<=s.length&&(e-=1)),e<0&&(e=i.page()>i.totalPages()?(i.page()-1)*a:0),n.options.navigatable&&"incell"==o&&n._removeCurrent(),c?n._virtualAddRow():(t=i.insert(e,{}),n._editModel(t))):n._scrollVirtualWrapper()},_editModel:function(e){var t,n,i,o,r=this,a=r.options.editable.createAt||"",s=r._editMode();e&&(t=e.uid,n=r.lockedContent?r.lockedTable:r.table,i=n.find("tr["+Ae.attr("uid")+"="+t+"]"),o=i.children("td:not(.k-group-cell,.k-hierarchy-cell)").eq(r._firstEditableColumnIndex(i)),"inline"===s&&i.length?r.editRow(i):"popup"===s?r.editRow(e):o.length&&r.editCell(o),"bottom"==a.toLowerCase()&&r.lockedContent&&(r.lockedContent[0].scrollTop=r.content[0].scrollTop=r.table[0].offsetHeight))},_virtualAddRow:function(){var e=this,t=(e.options.editable.createAt||"").toLowerCase()===on;e._clearEditableState(),t?e._virtualAddRowAtBottom():e._virtualAddRowAtTop()},_virtualAddRowAtTop:function(){var e,t=this,n=t.dataSource,i=t.virtualScrollable;1===n.page()?(e=n.insert(0,{}),t._editModel(e),i.scrollToTop()):t._virtualPageToTop(function(){e=n.insert(0,{}),t._editModel(e),i.scrollToTop()})},_virtualAddRowAtBottom:function(){var e,t=this,n=t.dataSource,i=t.virtualScrollable,o=n.total();n.at(o-1)instanceof Me?(e=n.insert(o,{}),t._virtualPageToBottom(function(){t._editModel(e),i.scrollToBottom()})):t._virtualPageToBottom(function(){e=n.insert(o,{}),t._editModel(e),i.scrollToBottom()})},_virtualPageToTop:function(e){var t=this;t._virtualPage(0,t.dataSource.take(),function(){e()})},_virtualPageToBottom:function(e){var t=this,n=t.dataSource,i=n.take(),o=n.total(),r=o>i?o-i:0;t._virtualPage(r,i,function(){e()})},_virtualPage:function(e,t,n){var i=this;i._isVirtualEditable()&&(i.virtualScrollable._preventScroll=!0,i.virtualScrollable._page(e,t,n))},_firstEditableColumnIndex:function(e){var t,n,i,o=this,r=Y(o.columns),a=o._modelForContainer(e);for(n=0,i=r.length;n<i;n++)if(t=r[n],a&&(!a.editable||a.editable(t.field))&&!t.command&&t.field&&t.hidden!==!0)return n;return-1},_toolbar:function(){var t,n=this,i=n.wrapper,o=n.options.toolbar,r=n.options.editable;o&&(t=n.wrapper.find(".k-grid-toolbar"),t.length||(Ge(o)||(o=typeof o===nn?o:n._toolbarTmpl(o).replace(Cn,"\\#"),o=je(Ae.template(o),n)),t=e('<div class="k-header k-grid-toolbar" />').html(o({})).prependTo(i),n.angular("compile",function(){return{elements:t.get()}})),r&&r.create!==!1&&t.on(Xt+ct,".k-grid-add",function(e){e.preventDefault(),n.addRow()}).on(Xt+ct,".k-grid-cancel-changes",function(e){e.preventDefault(),n.cancelChanges()}).on(Xt+ct,".k-grid-save-changes",function(e){e.preventDefault(),n.saveChanges()}),t.on(Xt+ct,".k-grid-excel",function(e){e.preventDefault(),n.saveAsExcel()}),t.on(Xt+ct,".k-grid-pdf",function(e){e.preventDefault(),n.saveAsPDF()}),t.on(sn+ct,".k-grid-search input",function(e){var t=e.currentTarget;clearTimeout(n._searchTimeOut),n._searchTimeOut=setTimeout(function(){var e,i,o,r,a;if(n._searchTimeOut=null,e=n.options,i=e.search?e.search.fields:null,o={filters:[],logic:"or"},r=t.value,i||(i=K(e.columns)),n.dataSource.options.endless&&(n.dataSource.options.endless=null,n._endlessPageSize=n.dataSource.options.pageSize),r)for(a=0;a<i.length;a++)o.filters.push({field:i[a],operator:"contains",value:r});else o={};n.dataSource.filter(o)},300)}))},_toolbarTmpl:function(e){var t,n,i,o=this,r="";if(We(e))for(t=0,n=e.length;t<n;t++)i="string"==typeof e[t]?e[t].toLowerCase():(e[t].name||"").toLowerCase(),"search"===i?(r+="<span class='k-textbox k-grid-search k-display-flex'>",r+="<input autocomplete='off' placeholder='"+o.options.messages.search+"' title='"+o.options.messages.search+"' class='k-input' />",r+="<span class='k-input-icon'><span class='k-icon k-i-search'></span></span>",r+="</span>"):r+=o._createButton(e[t]);return r},_createButton:function(e){var n,i=e.template||An,r=typeof e===nn?e:e.name||e.text,a=Nn[r]?Nn[r].className:"k-grid-"+(r||"").replace(/\s/g,""),s={className:a,text:r,attr:"",iconClass:""},l=this.options.messages.commands;if(!(r||He(e)&&e.template))throw Error("Custom commands should have name specified");return He(e)?(e=Ne(!0,{},e),e.className&&Ue(s.className,e.className.split(" "))<0?e.className+=" "+s.className:e.className===t&&(e.className=s.className),"edit"===r&&(e=Ne(!0,{},e),e.text=He(e.text)?e.text.edit:e.text,e.iconClass=He(e.iconClass)?e.iconClass.edit:e.iconClass),e.attr&&(He(e.attr)&&(e.attr=o(e.attr)),typeof e.attr===nn&&(n=e.attr.match(/class="(.+?)"/),n&&Ue(n[1],e.className.split(" "))<0&&(e.className+=" "+n[1]))),s=Ne(!0,s,Nn[r],{text:l[r]},e)):s=Ne(!0,s,Nn[r],{text:l[r]}),Ae.template(i)(s)},_hasFooters:function(){return!!this.footerTemplate||!!this.groupFooterTemplate||this.footer&&this.footer.length>0||this.wrapper.find(".k-grid-footer").length>0},_groupable:function(){var t=this;t._groupableClickHandler?t.table.add(t.lockedTable).off(Xt+ct,t._groupableClickHandler):t._groupableClickHandler=function(n){var i=e(this),o=i.closest("tr"),r=t._groupRows?t._groupRows[t.wrapper.find(".k-grouping-row").index(o)]:{};i.hasClass("k-i-collapse")?t.trigger("groupCollapse",{group:r,element:o})||t.collapseGroup(o):t.trigger("groupExpand",{group:r,element:o})||t.expandGroup(o),n.preventDefault(),n.stopPropagation()},t._isLocked()?t.lockedTable.on(Xt+ct,".k-grouping-row .k-i-expand, .k-grouping-row .k-i-collapse",t._groupableClickHandler):t.table.on(Xt+ct,".k-grouping-row .k-i-expand, .k-grouping-row .k-i-collapse",t._groupableClickHandler),t._attachGroupable()},_attachGroupable:function(){var t=this,n=t.wrapper,i=t.options.groupable,o=lt+"["+Ae.attr("field")+"]",r=t.content?".k-grid-header:first "+o:"table:first>.k-grid-header "+o;i&&i.enabled!==!1&&(n.has("div.k-grouping-header")[0]||e("<div> </div>").addClass("k-grouping-header").prependTo(n),t.groupable&&t._destroyGroupable(),t.groupable=new Ee.Groupable(n,Ne({},i,{draggable:t._draggableInstance,groupContainer:">div.k-grouping-header",dataSource:t.dataSource,draggableElements:r,filter:r,allowDrag:t.options.reorderable,change:function(e){t.trigger("group",{groups:e.groups})?e.preventDefault():(t._clearEditableState(),t.dataSource.options.endless&&(t.dataSource.options.endless=null,t._endlessPageSize=t.dataSource.options.pageSize,t.dataSource._skip=0,t.dataSource._pageSize=t.dataSource._take=t._endlessPageSize,t.dataSource._page=1))}})),t._addGroupableOptionsToHeader())},_addGroupableOptionsToHeader:function(){var e,t,n,i=this,o=z(i.columns),r={},a="",s=i._headerCells(),l="";for(n=0;n<o.length;n++)a=o[n].field,r[o[n].field]=o[n];for(n=0;n<s.length;n++)e=s.eq(n),l=e.attr(Ae.attr(an)),t=r[l],t&&t.groupable&&t.groupable.sort&&e.data(gn,t.groupable.sort)},_destroyGroupable:function(){var e=this;e.groupable&&e.groupable.element&&e.groupable.element.kendoGroupable("destroy"),e.groupable=null,e._removeGroupableOptionsFromHeader()},_removeGroupableOptionsFromHeader:function(){var e,t=this,n=t._headerCells();for(e=0;e<n.length;e++)n.eq(e).removeData(gn)},_continuousItems:function(t,n){var i,o,r,a,s,l,c,d;if(this.lockedContent){for(i=this,o=i.table.add(i.lockedTable),r=e(t,o[0]),a=e(t,o[1]),s=n?W(i.columns).length:1,l=n?i.columns.length-s:1,c=[],d=0;d<r.length;d+=s)qe.apply(c,r.slice(d,d+s)),qe.apply(c,a.splice(0,l));return c}},_selectable:function(){var n,i,o,r,a=this,s=[],l=a._isLocked(),c=a.options.selectable;c&&(a.selectable&&a.selectable.destroy(),a._selectedIds={},c=Ae.ui.Selectable.parseOptions(c),n=c.multiple,i=c.cell,a._hasDetails()&&(s[s.length]=".k-detail-row"),(a.options.groupable||a._hasFooters()||a._groups())&&(s[s.length]=".k-grouping-row,.k-group-footer"),s=s.join(","),""!==s&&(s=":not("+s+")"),o=a.table,l&&(o=o.add(a.lockedTable)),r=">"+(i?tt:"tbody>tr"+s),a.selectable=new Ae.ui.Selectable(o,{filter:r,aria:!0,multiple:n,change:function(){var e;i||a._persistSelectedRows(),a._checkBoxSelection&&(e=a.selectable.value(),a._uncheckCheckBoxes(),a._checkRows(e),a._toggleHeaderCheckState(e.length&&e.length===a.items().length?!0:!1)),a.trigger(yt)},useAllItems:l&&n&&i,relatedTarget:function(t){var n,o,r,s;if(!i&&l){for(o=e(),r=0,s=t.length;r<s;r++)n=a._relatedRow(t[r]),Ue(n[0],t)<0&&(o=o.add(n));return o}},continuousItems:function(){return a._continuousItems(r,i)}}),a.options.navigatable&&o.on("keydown"+ct,function(r){var s=a.current(),c=r.target;if(r.keyCode===Le.SPACEBAR&&!r.shiftKey&&e.inArray(c,o)>-1&&!s.is(".k-edit-cell,.k-header")&&s.parent().is(":not(.k-grouping-row,.k-detail-row,.k-group-footer)")){if(r.preventDefault(),r.stopPropagation(),s=i?s:s.parent(),l&&!i&&(s=s.add(a._relatedRow(s))),n)if(r.ctrlKey){if(s.hasClass(Bt))return a._deselectCheckRows(s),t}else a.selectable.clear();else a.selectable.clear();i||(a.selectable._lastActive=s),a.selectable.value(s)}else!i&&(e(c).is("td")||e(c).is("table")&&Ue(c,this._navigatableTables))&&(r.shiftKey&&r.keyCode==Le.LEFT||r.shiftKey&&r.keyCode==Le.RIGHT||r.shiftKey&&r.keyCode==Le.UP||r.shiftKey&&r.keyCode==Le.DOWN||r.keyCode===Le.SPACEBAR&&r.shiftKey)&&(r.preventDefault(),r.stopPropagation(),s=s.parent(),l&&(s=s.add(a._relatedRow(s))),n?(a.selectable._lastActive||(a.selectable._lastActive=s),a.selectable.selectRange(a.selectable._firstSelectee(),s)):(a.selectable.clear(),a.selectable.value(s)))}))},_clipboard:function(){var e,t=this.options,n=t.selectable;n&&t.allowCopy&&(e=this,t.navigatable||e.table.add(e.lockedTable).attr("tabindex",0).on("mousedown"+ct+" keydown"+ct,".k-detail-cell",function(e){e.target!==e.currentTarget&&e.stopImmediatePropagation()}).on("mousedown"+ct,nt+">"+it,je(ke,e)),e.copyHandler=je(e.copySelection,e),e.updateClipBoardState=function(){e.areaClipBoard&&e.areaClipBoard.val(e.getTSV()).focus().select()},e.bind("change",e.updateClipBoardState),e.wrapper.on("keydown",e.copyHandler),e.clearAreaHandler=je(e.clearArea,e),e.wrapper.on("keyup",e.clearAreaHandler))},copySelection:function(t){t instanceof jQuery.Event&&!t.ctrlKey&&!t.metaKey||e(t.target).is("input:visible,textarea:visible")||window.getSelection&&""+window.getSelection()||document.selection&&document.selection.createRange().text||(this.areaClipBoard||(this.areaClipBoard=e("<textarea />").css({position:"fixed",top:"50%",left:"50%",opacity:0,width:0,height:0}).appendTo(this.wrapper)),this.areaClipBoard.val(this.getTSV()).focus().select())},getTSV:function(){var t,n,i,o,r,a,s=this,l=s.select(),c="\t",d=s.options.allowCopy,u=!0;return e.isPlainObject(d)&&d.delimeter&&(c=d.delimeter),t="",l.length&&(l.eq(0).is("tr")&&(l=l.find("td:not(.k-group-cell)")),u&&l.filter(":visible"),n=[],i=this.columns.length,o=s._isLocked()&&W(s.columns).length,r=!0,e.each(l,function(t,a){var l,c,d,h;a=e(a),l=a.closest("tr"),c=l.index(),d=a.index(),u&&(d-=a.prevAll(":hidden").length),o&&r&&(r=e.contains(s.lockedTable[0],a[0])),s._groups()&&r&&(d-=s._groups()),d=r?d:d+o,i>d&&(i=d),h=a.text(),n[c]||(n[c]=[]),n[c][d]=h}),a=n.length,n=e.each(n,function(e,t){t&&(n[e]=t.slice(i),a>e&&(a=e))}),e.each(n.slice(a),function(e,n){t+=n?n.join(c)+"\r\n":"\r\n"})),t},clearArea:function(t){var n;this.areaClipBoard&&t&&t.target===this.areaClipBoard[0]&&(n=this.options.navigatable?e(this.current()).closest("table"):this.table,me(n,!0)),this.areaClipBoard&&(this.areaClipBoard.remove(),this.areaClipBoard=null)},_adaptiveColumns:function(){var e=this;e._anyColumnHasMediaQuery()&&(e._setColumnsMediaVisibility(e.columns),e._attachColumnMediaResizeHandler())},_anyColumnHasMediaQuery:function(){return this._columnsWithMediaQuery().length},_columnsWithMediaQuery:function(){return k(this.columns)},_attachColumnMediaResizeHandler:function(){var t=this;t._detachColumnMediaResizeHandler(),t._columnMediaResizeHandler=je(t._onColumnMediaResize,t),e(window).on(jt+ct,t._columnMediaResizeHandler)},_detachColumnMediaResizeHandler:function(){var t=this;t._columnMediaResizeHandler&&e(window).off(jt+ct,t._columnMediaResizeHandler)},_onColumnMediaResize:function(){var e=this;e._setColumnsMediaVisibility(e.columns),e._setContentMediaWidth()},_setColumnsMediaVisibility:function(e){var t,n=e||[];for(t=0;t<n.length;t++)this._setColumnMediaVisibility(n[t])},_setColumnMediaVisibility:function(e){var t=this;y(e.media)?t._setColumnsMediaVisibility(e.columns):m(e)?(t._showColumnByMedia(e),e.hidden||t._setColumnsMediaVisibility(e.columns)):t._hideColumnByMedia(e)},_showColumnByMedia:function(e){e.hidden||this.showColumn(e),g(e)},_hideColumnByMedia:function(e){var t=e.hidden;t||(e._hideByMedia=!0,this.hideColumn(e),e._hideByMedia=!1,e.hidden=t), +g(e)},_setContentMediaWidth:function(){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m=this,b=m.options,w=m._isLocked();if(b.scrollable&&b.resizable&&(w&&m.lockedFooter?t=m.lockedFooter.children("table"):m.footer&&(t=m.footer.find(">.k-grid-footer-wrap>table")),t&&t[0]||(t=e()),n=w?m.wrapper.find(".k-grid-header-locked").find("table"):m.wrapper.find(".k-grid-header").find("table"),i=w?m.lockedTable:m.table,o=n.find("th"),r=n.find("colgroup"),a=o.length,s=o.filter(v).length,l=o.length-s,c=0,""!==n[0].style.width&&parseFloat(n[0].style.width)!==c)){for(d=n.css("width"),u=0;u<a;u++)_(o[u])&&(p=Math.max(u,u-l),f=r.children()[p],g=f?f.style.width:"",""!==g?h=parseFloat(g):(n.css("width","auto"),h=ze(o.eq(u)),n.css("width",d)),c+=h);i.css("width",c-1),n.css("width",c),t.css("width",c)}},_minScreenSupport:function(){var t=this.hideMinScreenCols();t&&(this.minScreenResizeHandler=je(this.hideMinScreenCols,this),e(window).on("resize",this.minScreenResizeHandler))},hideMinScreenCols:function(){var e=this.columns,t=window.innerWidth>0?window.innerWidth:screen.width;return this._iterateMinScreenCols(e,t)},_iterateMinScreenCols:function(e,n){var i,o,r,a=!1;for(i=0;i<e.length;i++)o=e[i],r=o.minScreenWidth,r!==t&&null!==r&&(a=!0,r>n?this.hideColumn(o):this.showColumn(o)),!o.hidden&&o.columns&&(a=this._iterateMinScreenCols(o.columns,n)||a);return a},_relatedRow:function(t){var n,i,o=this.lockedTable;return t=e(t),o?(n=t.closest(this.table.add(this.lockedTable)),i=n.find(">tbody>tr").index(t),n=n[0]===this.table[0]?o:this.table,n.find(">tbody>tr").eq(i)):t},_relatedCell:function(t){var n,i,o=this.lockedTable;return t=e(t),o?(n=t.closest(this.table.add(this.lockedTable)),i=n.find(">tbody>tr>td").index(t),n=n[0]===this.table[0]?o:this.table,n.find(">tbody>tr>td").index(i)):t},clearSelection:function(){var e=this;return e.selectable&&!e._checkBoxSelection&&e.selectable.clear(),e._checkBoxSelection?(e._deselectCheckRows(e.select()),t):(e.options.persistSelection?e._persistSelectedRows():e._selectedIds={},e.trigger(yt),t)},select:function(e){var n=this,i=n.selectable,o=Ae.ui.Selectable.parseOptions(this.options.selectable),r=o.cell;return e=n.table.add(n.lockedTable).find(e),e.length?(i&&!i.options.multiple&&(i.clear(),e=e.first()),n._isLocked()&&(e=e.add(e.map(function(){return r?n._relatedCell(this):n._relatedRow(this)}))),i&&!n._checkBoxSelection?i.value(e):(n._checkRows(e),n.select().length===n.items().length&&n._toggleHeaderCheckState(!0),r||n._persistSelectedRows(),n.trigger(yt)),t):i?i.value():n.items().filter("."+Bt)},_toggleHeaderCheckState:function(e){var t=this;e?t.thead.add(t.lockedHeader).find("tr "+Ht).prop("checked",!0).attr("aria-checked",!0).attr("aria-label","Deselect all rows"):t.thead.add(t.lockedHeader).find("tr "+Ht).prop("checked",!1).attr("aria-checked",!1).attr("aria-label","Select all rows")},_uncheckCheckBoxes:function(){var e=this,t=e.table.add(e.lockedTable);t.find("tbody "+Ht).attr("aria-checked",!1).prop("checked",!1).attr("aria-label","Select row")},_deselectCheckRows:function(t){var n=this;t=n.table.add(n.lockedTable).find(t),n._isLocked()&&(t=t.add(t.map(function(){return n._relatedRow(this)}))),t.each(function(){e(this).removeClass(Bt).find(Ht).attr("aria-checked",!1).prop("checked",!1).attr("aria-label","Select row")}),n._toggleHeaderCheckState(!1),n._persistSelectedRows(),n.trigger(yt)},_checkRows:function(t){t.each(function(){e(this).addClass(Bt).find(Ht).prop("checked",!0).attr("aria-label","Deselect row").attr("aria-checked",!0)})},_persistSelectedRows:function(){var e,t,n,i,o=this,r=o.items(),a=o.dataSource.options,s=a.schema,l={};if(s&&s.model&&o._data&&(n=Ge(s.model)?s.model.fn.idField:s.model.id))for(o.select().each(function(){t=o.dataItem(this),l[t[n]]=!0}),i=0;i<r.length;i++)t=o.dataItem(r[i]),e=t[n],l[e]?o._selectedIds[e]=!0:delete o._selectedIds[e]},selectedKeyNames:function(){var e,t=this,n=[];for(e in t._selectedIds)n.push(e);return n.sort(),n},_updateCurrentAttr:function(t,n){var i=e(t).data("headerId");e(t).removeClass(Pt).closest("table").removeAttr("aria-activedescendant"),i?(i=i.replace(this._cellId,""),e(t).attr("id",i)):e(t).removeAttr("id"),n.data("headerId",n.attr("id")).attr("id",this._cellId).addClass(Pt).closest("table").attr("aria-activedescendant",this._cellId),this._current=n},_scrollCurrent:function(){var t,n,i,o,r,a,s=this._current,l=this.options.scrollable;s&&l&&(t=s.parent(),n=t.closest("table").parent(),i=n.is(".k-grid-content-locked,.k-grid-header-locked"),o=n.is(".k-grid-content-locked,.k-grid-content,.k-virtual-scrollable-wrap"),r=e(this.content).find(">.k-virtual-scrollable-wrap").addBack().last()[0],o&&(l.virtual?(a=Math.max(Ue(t[0],this._items(t.parent())),0),this._rowVirtualIndex=this.virtualScrollable.itemIndex(a),this.virtualScrollable.scrollIntoView(t)):this._scrollTo(this._relatedRow(t)[0],r)),this.lockedContent&&(this.lockedContent[0].scrollTop=r.scrollTop),i||this._scrollTo(s[0],r))},current:function(e){return this._setCurrent(e,!0)},_setCurrent:function(t,n,i){var o=this._current;return t=e(t),t.length&&(o&&o[0]===t[0]||(this._updateCurrentAttr(o,t),i||this._scrollCurrent(),n||this.trigger(Qt,{element:t}))),t&&t.length&&(this._lastCellIndex=t.parent().children(et).index(t)),this._current},_removeCurrent:function(){this._current&&(this._current.removeClass(Pt),this._current=null)},_scrollTo:function(t,n){var i,o=t.tagName.toLowerCase(),r="td"===o||"th"===o,a=t[r?"offsetLeft":"offsetTop"],s=t[r?"offsetWidth":"offsetHeight"],l=n[r?"scrollLeft":"scrollTop"],c=n[r?"clientWidth":"clientHeight"],d=a+s,u=0,h=0,p=0;Mn&&r&&(i=e(t).closest("table")[0],Fn.msie?h=i.offsetLeft:Fn.mozilla&&(p=i.offsetLeft-Ae.support.scrollbar())),l=Math.abs(l+h-p),u=l>a?a:d>l+c?s<=c?d-c:a:l,u=Math.abs(u+h)+p,n[r?"scrollLeft":"scrollTop"]=u},_navigatable:function(){var t,n,i,o=this;o.options.navigatable&&(t=o.table.add(o.lockedTable),n=o.thead.parent().add(e(">table",o.lockedHeader)),i=t,o.options.scrollable&&(i=i.add(n),n.attr(en,-1)),this._navigatableTables=i,i.off("mousedown"+ct+" focus"+ct+" focusout"+ct+" keydown"+ct),n.on("keydown"+ct,je(o._openHeaderMenu,o)).find("a.k-link").attr("tabIndex",-1),t.attr(en,Ke.max(t.attr(en)||0,0)).on("keydown"+ct,".k-detail-cell",function(e){e.target!==e.currentTarget&&e.stopImmediatePropagation()}),i.on(Ae.support.touch?"touchstart"+ct:"mousedown"+ct,nt+">"+it,je(ke,o)).on("focus"+ct,je(o._tableFocus,o)).on("focusout"+ct,je(o._tableBlur,o)).on("keydown"+ct,je(o._tableKeyDown,o)))},_openHeaderMenu:function(e){e.altKey&&e.keyCode==Le.DOWN&&(this.current().find(".k-grid-filter, .k-header-column-menu").click(),e.stopImmediatePropagation())},_setTabIndex:function(e){this._navigatableTables.attr(en,-1),e.attr(en,0)},_tableFocus:function(t){var n=this.current(),i=e(t.currentTarget);n&&n.is(":visible")?n.addClass(Pt):this._setCurrent(i.find(st)),this._setTabIndex(i)},_tableBlur:function(){var e=this.current();e&&e.removeClass(Pt)},_tableKeyDown:function(n){var i,o=this.current(),r=this.virtualScrollable&&this.virtualScrollable.fetching(),a=e(n.target),s=!n.isDefaultPrevented()&&!a.is(":button,a,:input,a>.k-icon");return r?(n.preventDefault(),t):(o=o?o:e(this.lockedTable).add(this.options.scrollable?this.table:this.tbody).find(st),o.length&&(i=!1,s&&n.keyCode==Le.UP&&(i=this._moveUp(o,n.shiftKey)),s&&n.keyCode==Le.DOWN&&(i=this._moveDown(o,n.shiftKey)),s&&n.keyCode==(Mn?Le.LEFT:Le.RIGHT)&&(i=this._moveRight(o,n.altKey,n.shiftKey,n.ctrlKey,n.currentTarget)),s&&n.keyCode==(Mn?Le.RIGHT:Le.LEFT)&&(i=this._moveLeft(o,n.altKey,n.shiftKey,n.ctrlKey,n.currentTarget)),s&&n.keyCode==Le.PAGEDOWN&&(i=this._handlePageDown()),s&&n.keyCode==Le.PAGEUP&&(i=this._handlePageUp()),s&&n.keyCode==Le.HOME&&(i=this._handleHome(o,n.ctrlKey)),s&&n.keyCode==Le.END&&(i=this._handleEnd(o,n.ctrlKey)),s&&n.keyCode==Le.SPACEBAR&&(i=this._handleSpaceKey(o,n.ctrlKey)),n.keyCode!=Le.ENTER&&n.keyCode!=Le.F2||(i=this._handleEnterKey(o,n.currentTarget,a)),n.keyCode==Le.ESC&&(i=this._handleEscKey(o,n.currentTarget)),n.keyCode==Le.TAB&&(i=this._handleTabKey(o,n.currentTarget,n.shiftKey)),i&&(n.preventDefault(),n.stopPropagation())),t)},_moveLeft:function(t,n,i,o,r){var a,s,l=t.parent(),c=l.parent();return n?this.collapseRow(l):o&&t.is(".k-header")&&this.options.reorderable?this._moveColumn(t,!0):(s=c.find(nt).index(l),a=this._prevHorizontalCell(c,t,s),a[0]||(i?this.lockedTable?(a=this._relatedRow(l),e.contains(this.lockedTable[0],l[0])&&(a=a.prevAll(ot+":first")),a=a.children(et+":last")):a=this._tabNext(t,r,!0):(c=this._horizontalContainer(c),a=this._prevHorizontalCell(c,t,s),a[0]!==t[0]&&me(c.parent(),!0))),this._setCurrent(a)),!0},_moveRight:function(t,n,i,o,r){var a,s,l=t.parent(),c=l.parent();return n?this.expandRow(l):o&&t.is(".k-header")&&this.options.reorderable?this._moveColumn(t,!1):(s=c.find(nt).index(l),a=this._nextHorizontalCell(c,t,s),a[0]||(i?this.lockedTable?(a=this._relatedRow(l),e.contains(this.table[0],l[0])&&(a=a.nextAll(ot+":first")),a=a.children(et+":first")):a=this._tabNext(t,r,!1):(c=this._horizontalContainer(c,!0),a=this._nextHorizontalCell(c,t,s),a[0]!==t[0]&&me(c.parent(),!0))),this._setCurrent(a)),!0},_moveUp:function(e,t){var n,i,o=e.parent().parent();return t?(n=e.parent(),n=n.prevAll(ot+":first"),n=e.parent().is(ot)?n.children().eq(e.index()):n.children(et+":last")):(n=this._prevVerticalCell(o,e),n[0]||(this._lastCellIndex=0,o=this._verticalContainer(o,!0),n=this._prevVerticalCell(o,e),n[0]&&me(o.parent(),!0))),i=this._lastCellIndex||0,this._setCurrent(n),this._lastCellIndex=i,!0},_moveDown:function(e,t){var n,i,o=e.parent().parent();return t?(n=e.parent(),n=n.nextAll(ot+":first"),n=e.parent().is(ot)?n.children().eq(e.index()):n.children(et+":first")):(n=this._nextVerticalCell(o,e),n[0]||(this._lastCellIndex=0,o=this._verticalContainer(o),n=this._nextVerticalCell(o,e),n[0]&&me(o.parent(),!0))),i=this._lastCellIndex||0,this._setCurrent(n),this._lastCellIndex=i,!0},_moveColumn:function(t,n){var i=this.wrapper.data().kendoReorderable.element.find(this._draggableInstance.options.filter+":visible"),o=w(R(this.columns)),r=i.index(e(t)),a=n?-1:1,s=o[r],l=P(o,this.columns,r,r+a);l>=0&&this.reorderColumn(l,s,n)},_handleHome:function(e,t){var n,i=e.parent(),o=i.parent(),r=this.lockedTable&&this.lockedTable.children("tbody")[0]===o[0],a=o[0]===this.tbody[0];if(t?n=this.lockedTable?this.lockedTable.find(rt+">"+it+":first"):this.table.find(rt+">"+it+":first"):(a||r)&&(a&&this.lockedTable&&(i=this._relatedRow(i)),n=i.children(et+":first")),n&&n.length)return this._setCurrent(n),!0},_handleEnd:function(e,t){var n,i=e.parent(),o=i.parent(),r=this.lockedTable&&this.lockedTable.children("tbody")[0]===o[0],a=o[0]===this.tbody[0];if(t?n=this.table.find(at+">"+it+":last"):(a||r)&&(!a&&this.lockedTable&&(i=this._relatedRow(i)),n=i.children(et+":last")),n&&n.length)return this._setCurrent(n),!0},_handlePageDown:function(){return!!this.options.pageable&&(this.dataSource.page(this.dataSource.page()+1),!0)},_handlePageUp:function(){return!!this.options.pageable&&(this.dataSource.page(this.dataSource.page()-1),!0)},_handleTabKey:function(t,n,i){var o,r=this.options.editable&&"incell"==this._editMode();return!(!r||t.is("th"))&&(o=e(Re()).closest(".k-edit-cell"),o[0]&&o[0]!==t[0]&&(t=o),o=this._tabNext(t,n,i),!!o.length&&(this._handleEditing(t,o,o.closest("table")),!0))},_handleEscKey:function(t,n){var i,o=Re(),r="incell"==this._editMode();return xe(t)?(r?this.closeCell(!0):(i=e(t).parent().index(),o&&o.blur(),this.cancelRow(!0),i>=0&&this._setCurrent(this.items().eq(i).children(it).first())),Fn.msie&&Fn.version<9&&document.body.focus(),me(n,!0),!0):!!t.has(o).length&&(me(n,!0),!0)},_toggleCurrent:function(e,t){var n=e.parent();return n.is(".k-grouping-row")?(n.find(".k-icon:first").click(),!0):!(t||!n.is(".k-master-row"))&&(n.find(".k-icon:first").click(),!0)},_handleSpaceKey:function(t,n){var i,o,r,a,s=this;if(n&&s.groupable&&t.hasClass("k-header"))return i=s.groupable.descriptors(),o=t.attr(Ae.attr("field")),r=s.groupable.aggregates(),a=t.attr(Ae.attr("title"))||o,s.groupable._canDrag(t)?(i.push({field:o,dir:"asc",aggregates:r||[]}),a+=" "+s.options.messages.ungroupHeader):(i=e.grep(i,function(e){return e.field!==o}),a+=" "+s.options.messages.groupHeader),t.attr("aria-label",a),s.dataSource.group(i),!0},_handleEnterKey:function(t,n,i){var o,r,a=this.options.editable&&this.options.editable.update!==!1,s=i.closest("[role=gridcell]");return i.is("table")||e.contains(t[0],i[0])||(t=s),t.is("th")?(o=t.find(".k-link"),o.length?o.click():t.find(Ht).focus(),!0):!!this._toggleCurrent(t,a)||(r=t.find(":kendoFocusable:first"),r[0]&&!t.hasClass("k-edit-cell")&&t.hasClass("k-state-focused")?(r.focus(),!0):!(!a||i.is(":button,.k-button,textarea"))&&(s[0]||(s=t),this._handleEditing(s,!1,n),!0))},_nextHorizontalCell:function(e,t,n){var i,o,r,a=t.nextAll(et);return a.length||(i=e.find(nt),o=i.index(t.parent()),o!=-1)?a.first():t.hasClass("k-header")?(r=[],V([W(this.columns)[0]],J(i.eq(0).children(":visible").first()),r,0,0),r[n]?r[n][0]:t):t.parent().hasClass("k-filter-row")?i.last().children(et).first():i.eq(n).children(et).first()},_prevHorizontalCell:function(e,t,n){var i,o,r,a,s=t.prevAll(et);return s.length||(i=e.find(nt),o=i.index(t.parent()),o!=-1)?s.first():t.hasClass("k-header")?(r=[],a=W(this.columns),V([a[a.length-1]],J(i.eq(0).children().last()),r,0,0),r[n]?r[n][0]:t):t.parent().hasClass("k-filter-row")?i.last().children(et).last():i.eq(n).children(et).last()},_currentDataIndex:function(e,n){var i,o=n.attr("data-index");return o?(i=W(this.columns).length,i&&!e.closest("div").hasClass("k-grid-content-locked")[0]?o-i:o):t},_prevVerticalCell:function(t,n){var i,o=n.parent(),r=t.children(nt),a=r.index(o),s=this._currentDataIndex(t,n);if(s||n.hasClass("k-header"))return i=X(n),i.eq(i.length-2);if(s=Math.max(o.children(et).index(n),this._lastCellIndex||0),o.hasClass("k-filter-row"))return Q(t).filter(v).eq(s);if(a==-1){if(o=t.find("tr.k-filter-row:visible"),!o[0])return(this._hasDetails()||n.parent().find(".k-hierarchy-cell").length)&&s&&s--,Q(t).filter(v).eq(s)}else o=0===a?e():r.eq(a-1);return i=o.children(et),i.eq(i.length>s?s:0)},_nextVerticalCell:function(e,n){var i,o,r,a,s,l,c=n.parent(),d=e.children(nt),u=d.index(c),h=this._currentDataIndex(e,n);if(u!=-1&&h===t&&n.hasClass("k-header"))return J(n).eq(1);if(h=h?parseInt(h,10):c.children(et).index(n),h=Math.max(h,this._lastCellIndex||0),u==-1?(c=d.eq(0),(this._hasDetails()||c.find(".k-hierarchy-cell").length)&&h++):c=d.eq(u+n[0].rowSpan),o=h,this._currentDataIndex(e,n)!==t)for(r=c.children(":not(.k-group-cell):not(.k-hierarchy-cell)"),a=r.filter(":hidden"),s=0,l=a.length;s<l;s++)r.index(a[s])<h&&o--;return h=o,i=c.children(et),i.eq(i.length>h?h:0)},_verticalContainer:function(e,t){var n=e.parent(),i=this._navigatableTables.length,o=Math.floor(i/2),r=Ue(n[0],this._navigatableTables);return t&&(o*=-1),r+=o,(r>=0||r<i)&&(n=this._navigatableTables.eq(r)),n.find(t?">thead":">tbody")},_horizontalContainer:function(e,t){var n,i,o=this._navigatableTables.length;return o<=2?e:(n=e.parent(),i=Ue(n[0],this._navigatableTables),i+=t?1:-1,!t||2!=i&&i!=o?!t&&(1==i||i<0)?e:this._navigatableTables.eq(i).find("thead, tbody"):e)},_tabNext:function(e,t,n){var i=!0,o=n?e.prevAll(et+":first"):e.nextAll(":visible:first");return o.length||(o=e.parent(),this.lockedTable&&(i=n&&t==this.lockedTable[0]||!n&&t==this.table[0],o=this._relatedRow(o)),i&&(o=o[n?"prevAll":"nextAll"]("tr:not(.k-grouping-row):not(.k-detail-row):visible:first")),o=o.children(et+(n?":last":":first"))),o},_handleEditing:function(n,i,o){var r,a,s=this,l=e(Re()),c=s._editMode(),d=Fn.msie,u=d&&Fn.version<9,h=s._editContainer,p=s.options.editable&&s.options.editable.update!==!1;if(o=e(o),a="incell"==c?n.hasClass("k-edit-cell"):n.parent().hasClass("k-grid-edit-row"),s.editable){if(e.contains(h[0],l[0])&&(Fn.opera||u?l.blur().change().triggerHandler("blur"):(l.blur(),d&&l.blur())),!s.editable)return me(o),t;if(!s.editable.end())return s._setCurrent("incell"==c?h:h.children().filter(et).first()),r=h.find(":kendoFocusable:first")[0],r&&r.focus(),t;"incell"==c?s.closeCell():(s.saveRow(),a=!0)}i&&s._setCurrent(i),u&&document.body.focus(),me(o,!0),p&&(!a&&!i||i)&&(c===ln?e(s.current()).hasClass(Ze)||s.editCell(s.current()):s.editRow(s.current().parent()))},_wrapper:function(){var e=this,t=e.table,n=e.options.height,i=e.element;i.is("div")||(i=i.wrap("<div/>").parent()),e.wrapper=i.addClass("k-grid k-widget k-display-block"),n&&(e.wrapper.css(Zt,n),t.css(Zt,"auto")),e._initMobile()},_initMobile:function(){var e,t=this.options,n=this;this._isMobile=t.mobile===!0&&Ae.support.mobileOS||"phone"===t.mobile||"tablet"===t.mobile,this._isMobile&&(e=this.wrapper.addClass("k-grid-mobile").wrap("<div data-"+Ae.ns+'stretch="true" data-'+Ae.ns+'role="view" data-'+Ae.ns+'init-widgets="false"></div>').parent(),this.pane=this._createPane(e),this.view=this.pane.view(),t.height?this.pane.element.parent().css(Zt,t.height):this.pane.element.parent().css(Zt,this.wrapper[0].style.height),this._editAnimation="slide",n.wrapper.on("transitionend"+ct,function(e){e.stopPropagation()}),n.wrapper.on("contextmenu"+ct,"th a",function(e){return e.preventDefault(),!1}),this.view.bind("showStart",function(){n._isLocked()&&(n._updateTablesWidth(),n._applyLockedContainersWidth(),n._syncLockedContentHeight(),n._syncLockedHeaderHeight(),n._syncLockedFooterHeight())}))},_createPane:function(e){var t=Ae.Pane.wrap(e,{viewEngine:{viewOptions:{renderOnInit:!0,wrap:!1,wrapInSections:!0,detachOnHide:!1,detachOnDestroy:!1}}});return t},_tbody:function(){var t,n=this,i=n.table;t=i.find(">tbody"),t.length||(t=e("<tbody/>").appendTo(i)),n.tbody=t.attr("role","rowgroup")},_scrollable:function(){var t,n,i,o,r,a,s,l=this,c=l.options,d=c.scrollable,u=d!==!0&&d.virtual&&!l.virtualScrollable,h=!Ae.support.kineticScrollNeeded||u?Ae.support.scrollbar():0;d&&(t=l.wrapper.children(".k-grid-header"),t[0]||(t=e('<div class="k-grid-header" />').insertBefore(l.table)),t.css(Mn?"padding-left":"padding-right",d.virtual?h+1:h),n=e('<table role="grid" />'),Rn&&n.attr("cellspacing",0),n.width(l.table[0].style.width),n.append(l.thead),t.empty().append(e('<div class="k-grid-header-wrap k-auto-scrollable" />').append(n)),l.content=l.table.parent(),l.content.is(".k-virtual-scrollable-wrap, "+Qe+Ln.scrollContainer)&&(l.content=l.content.parent()),l.content.is(".k-grid-content, .k-virtual-scrollable-wrap")||(l.content=l.table.wrap('<div class="k-grid-content k-auto-scrollable" />').parent()),u&&l._createVirtualScrollable(),i=t.children(".k-grid-header-wrap"),l.scrollables=i.add(l.content),o=l.wrapper.find(".k-grid-footer"),o.length&&(l.scrollables=l.scrollables.add(o.children(".k-grid-footer-wrap"))),i.unbind("scroll"+ct).bind("scroll"+ct,function(e){l._scrollLeft!==this.scrollLeft&&l.scrollables.not(e.currentTarget).scrollLeft(this.scrollLeft)}),d.virtual?l.content.find(">.k-virtual-scrollable-wrap").unbind("scroll"+ct).bind("scroll"+ct,function(){l.scrollables.scrollLeft(this.scrollLeft),l.lockedContent&&(l.lockedContent[0].scrollTop=this.scrollTop)}):(r=d.endless,a=l.dataSource.options.pageSize,r&&(l._endlessPageSize=a),l.content.unbind("scroll"+ct).bind("scroll"+ct,function(e){l._scrollLeft=this.scrollLeft,l.scrollables.not(e.currentTarget).scrollLeft(l._scrollLeft),l.lockedContent&&e.currentTarget==l.content[0]&&(l.lockedContent[0].scrollTop=this.scrollTop),r&&this.scrollTop+this.clientHeight-this.scrollHeight>=-10&&!l._endlessFetchInProgress&&l._endlessPageSize<l.dataSource.total()&&(l._skipRerenderItemsCount=l._endlessPageSize,l._endlessPageSize=l._endlessPageSize+a,l.dataSource.options.endless=!0,l._endlessFetchInProgress=!0,l.dataSource.pageSize(l._endlessPageSize))}),s=l.content.data("kendoTouchScroller"),s&&s.destroy(),s=Ae.touchScroller(l.content),s&&s.movable&&(l.touchScroller=s,s.movable.bind("change",function(e){l.scrollables.scrollLeft(-e.sender.x),l.lockedContent&&l.lockedContent.scrollTop(-e.sender.y)}),l.one(Tt,function(e){e.sender.wrapper.addClass("k-grid-backface")}))))},_createVirtualScrollable:function(){var e=this;e.virtualScrollable&&e.virtualScrollable.destroy(),e.virtualScrollable=new Hn(e.content,{dataSource:e.dataSource,itemHeight:function(){return e._averageRowHeight()},page:function(){e._restoreEditableState()},scroll:function(){e._focusEditable()}}),e.virtualScrollable.bind(Mt,je(e._onVirtualPaging,e))},_onVirtualPaging:function(){var e=this;e._cacheEditableState(),e._isVirtualIncellEditable()&&(e._shouldClearEditableState=!1,e.closeCell(),e._shouldClearEditableState=!0)},_isVirtualEditable:function(){return this._isVirtualIncellEditable()||this._isVirtualInlineEditable()||this._isVirtualPopupEditable()},_isVirtualInlineEditable:function(){return this.virtualScrollable&&this._editMode()===cn},_isVirtualIncellEditable:function(){return this.virtualScrollable&&this._editMode()===ln},_isVirtualPopupEditable:function(){return this.virtualScrollable&&"popup"===this._editMode()},_scrollVirtualWrapper:function(){var e=this,t=e.virtualScrollable;(e._isVirtualInlineEditable()||e._isVirtualIncellEditable())&&(t._isScrolledToBottom()?t._scrollWrapperToBottom():t._isScrolledToTop()&&t._scrollWrapperToTop())},_scrollVirtualWrapperOnColumnResize:function(){var e=this.virtualScrollable;e&&e._scrollWrapperOnColumnResize()},_restoreEditableState:function(){var t,i,o=this,r=o._editableState||{},a=r.model,s=o.dataSource,l=o._isVirtualInlineEditable(),c=o._isVirtualIncellEditable();(l||c)&&a&&s._getByUid(a.uid,s.view())&&(l?(o._shouldClearEditableState=!1,o.editRow(a),o._focusEditable()):c&&(t=o.tbody.children(n(dn,a.uid)),i=e(t).children(n(an,r.field)),i[0]&&(o._shouldClearEditableState=!1,o.editCell(i),o._focusEditable()))),o._shouldClearEditableState=!0},_focusEditable:function(){var e=this,t=(e._editableState||{}).field,i=e._editContainer;i&&!Ye(i[0],Re())&&e._canFocusEditable()&&(e._isVirtualInlineEditable()?i.find(n(rn,t)).find(zt).eq(0).focus():e._isVirtualIncellEditable()&&i.find(zt).eq(0).focus())},_canFocusEditable:function(){var e=this;return(e._isVirtualIncellEditable()||e._isVirtualInlineEditable())&&e.virtualScrollable._isElementVisible(e._editContainer)},_cacheEditableState:function(){var t,n,i=this,o=i._editContainer,r=o?i._modelForContainer(o):null,a=i._isVirtualInlineEditable(),s=i._isVirtualIncellEditable();(a||s)&&r&&(i._clearEditableState(),t=e(Re()),o&&t[0]&&Ye(o[0],t[0])&&(t.change(),n=Ae.widgetInstance(t,Ae.ui),n&&Ge(n.value)&&t.is(sn)&&(n.value(t.val()),n.trigger(yt))),a?i._editableState={model:r,field:t.closest("["+Ae.attr(rn)+"]").attr(Ae.attr(rn))}:s&&(i._editableState={model:r,field:o.attr(Ae.attr(an))}))},_clearEditableState:function(){var e=this;e.virtualScrollable&&(e._editableState=null)},_destroyVirtualScrollable:function(){var e=this;e._clearEditableState(),e.virtualScrollable&&e.virtualScrollable.element&&e.virtualScrollable.destroy(),e.virtualScrollable=null},_renderNoRecordsContent:function(){var t,n=this;n.options.noRecords&&(t=n.table.parent().children("."+Nt),t.length&&(n.angular("cleanup",function(){return{elements:t.get()}}),t.remove()),n.dataSource&&n.dataSource.view().length||(t=e(n.noRecordsTemplate({})).insertAfter(n.table),n.angular("compile",function(){return{elements:t.get(),data:[{}]}})))},_setContentWidth:function(t){var n,i=this,o="k-grid-content-expander",r='<div class="'+o+'"></div>',a=i.resizable;i.options.scrollable&&i.wrapper.is(":visible")&&(n=i.table.parent().children("."+o),i._setContentWidthHandler=je(i._setContentWidth,i),i.dataSource&&i.dataSource.view().length?n[0]&&(n.remove(),a&&a.unbind("resize",i._setContentWidthHandler)):(n[0]||(n=e(r).appendTo(i.table.parent()),a&&a.bind("resize",i._setContentWidthHandler)),i.thead&&(n.width(i.thead.width()),isNaN(parseFloat(t,10))||i.content.scrollLeft(t))),i._applyLockedContainersWidth(),i._syncLockedContentHeight(),i.lockedHeader&&0===i.table[0].clientWidth&&(i.table[0].style.width="1px"))},_applyLockedContainersWidth:function(){if(this.options.scrollable&&this.lockedHeader){var e,t=this.thead.parent(),n=t.parent(),i=this.wrapper[0].clientWidth,o=this._groups(),r=Ae.support.scrollbar(),a=this.lockedHeader.find(">table>colgroup>col:not(.k-group-col, .k-hierarchy-col)"),s=t.find(">colgroup>col:not(.k-group-col, .k-hierarchy-col)"),l=L(a),c=L(s);o>0&&(l+=ze(this.lockedHeader.find(".k-group-cell:first"))*o),l>=i&&(l=i-3*r),this.lockedHeader.add(this.lockedContent).width(l),n[0].style.width=n.parent().width()-l-2+"px",t.add(this.table).width(c),this.virtualScrollable&&!zn&&(i-=r),this.content[0].style.width=i-l-2+"px",this.lockedFooter&&this.lockedFooter.length&&(this.lockedFooter.width(l),e=this.footer.find(".k-grid-footer-wrap"),e[0].style.width=n[0].clientWidth+"px",e.children().first().width(c))}},_setContentHeight:function(){var e,t,n=this,i=n.options,o=n.wrapper.children(".k-grid-header"),r=Ae.support.scrollbar(),a=(i.scrollable||{}).height;i.scrollable&&n.wrapper.is(":visible")&&(a&&""===n.content[0].style.height&&(n.content[0].style.height=a),e=n.wrapper.innerHeight(),e-=Be(o),n.pager&&n.pager.element.is(":visible")&&(e-=Be(n.pager.element)),i.groupable&&(e-=Be(n.wrapper.children(".k-grouping-header"))),i.toolbar&&(e-=Be(n.wrapper.children(".k-grid-toolbar"))),n.footerTemplate&&(e-=Be(n.wrapper.children(".k-grid-footer"))),t=function(e){var t,n;return!!e[0].style.height||(t=e.height(),e.height("auto"),n=e.height(),t!=n?(e.height(""),!0):(e.height(""),!1))},t(n.wrapper)&&(e>2*r?(n.lockedContent&&(r=n.table[0].offsetWidth>n.table.parent()[0].clientWidth?r:0,n.lockedContent.height(e-r)),n.content.height(e)):n.content.height(2*r+1)))},_averageRowHeight:function(){var e,t=this,n=t._items(t.tbody).length,i=t._rowHeight;return 0===n?i:(t._rowHeight||(t._rowHeight=i=Be(t.table)/n,t._sum=i,t._measures=1),e=Be(t.table)/n,i!==e&&(t._measures++,t._sum+=e,t._rowHeight=t._sum/t._measures),i)},_dataSource:function(){var e,n=this,i=n.options,o=i.dataSource;o=We(o)?{data:o}:o,He(o)&&(Ne(o,{table:n.table,fields:n.columns}),e=i.pageable,He(e)&&e.pageSize!==t&&(o.pageSize=e.pageSize)),n.dataSource&&n._refreshHandler?n.dataSource.unbind(yt,n._refreshHandler).unbind(Xe,n._progressHandler).unbind(Je,n._errorHandler):(n._refreshHandler=je(n.refresh,n),n._progressHandler=je(n._requestStart,n),n._errorHandler=je(n._error,n)),n.dataSource=Ie.create(o).bind(yt,n._refreshHandler).bind(Xe,n._progressHandler).bind(Je,n._errorHandler)},_error:function(){this._progress(!1)},_requestStart:function(){this._progress(!0)},_modelChange:function(t){var n,i,o,r,a,s,l,c,d,u,h=this,p=h.tbody,f=t.model,g=h.tbody.find("tr["+Ae.attr("uid")+"="+f.uid+"]"),m=g.hasClass("k-alt"),v=h._items(p).index(g),_=h.lockedContent;if(_&&(n=h._relatedRow(g)),g.add(n).children(".k-edit-cell").length&&!h.options.rowTemplate)g.add(n).children(":not(.k-group-cell,.k-hierarchy-cell)").each(function(){i=e(this),o=Y(h.columns)[h.cellIndex(i)],o.field===t.field&&(i.hasClass("k-edit-cell")?i.addClass("k-dirty-cell"):h._displayCell(i,o,f))});else if(!g.hasClass("k-grid-edit-row")){for(s=e().add(g),_&&(r=(m?h.lockedAltRowTemplate:h.lockedRowTemplate)(f),s=s.add(n),n.replaceWith(r)),h.angular("cleanup",function(){return{elements:s.get()}}),r=(m?h.altRowTemplate:h.rowTemplate)(f),g.replaceWith(r),r=h._items(p).eq(v),u=[{dataItem:f}],_&&(g=g.add(n),n=h._relatedRow(r)[0],fe(r[0],n),r=r.add(n),u.push({dataItem:f})),h.angular("compile",function(){return{elements:r.get(),data:u}}),a=h.options.selectable,(a||h._checkBoxSelection)&&g.hasClass("k-state-selected")&&h.select(r),c=s.children(":not(.k-group-cell,.k-hierarchy-cell)"),l=r.children(":not(.k-group-cell,.k-hierarchy-cell)"),v=0,d=h.columns.length;v<d;v++)o=h.columns[v],i=l.eq(v),a&&c.eq(v).hasClass("k-state-selected")&&i.addClass("k-state-selected");h.trigger("itemChange",{item:r,data:f,ns:Ee})}},_pageable:function(){var t,n=this,i=n.options.pageable;i&&(t=n.wrapper.children("div.k-grid-pager"),t.length||(t=e('<div class="k-pager-wrap k-grid-pager"/>').appendTo(n.wrapper)),n.pager&&n.pager.destroy(),n.pager="object"==typeof i&&i instanceof Ae.ui.Pager?i:new Ae.ui.Pager(t,Ne({},i,{dataSource:n.dataSource})),n.pager.bind("pageChange",function(e){n.trigger("page",{page:e.index})&&e.preventDefault()}))},_footer:function(){var t,n,i,o=this,r=o.dataSource.aggregates(),a="",s=o.footerTemplate,l=o.options,c=o.footer||o.wrapper.find(".k-grid-footer");s?(a=e(o._wrapFooter(s(r))),c.length?(n=a,o.angular("cleanup",function(){return{elements:c.get()}}),c.replaceWith(n),c=o.footer=n):c=o.footer=l.scrollable?l.pageable?a.insertBefore(o.wrapper.children("div.k-grid-pager")):a.appendTo(o.wrapper):a.insertBefore(o.tbody),o.angular("compile",function(){return{elements:c.find("td:not(.k-group-cell, .k-hierarchy-cell)").get(),data:Oe(o.columns,function(e){return{column:e,aggregate:r[e.field]}})}})):c&&!o.footer&&(o.footer=c),c.length&&(l.scrollable&&(t=c.attr("tabindex",-1).children(".k-grid-footer-wrap"),o.scrollables=e(o.scrollables.filter(function(){return!e(this).is(".k-grid-footer-wrap")}).toArray()).add(t)),o._footerWidth&&c.find("table").css("width",o._footerWidth),t&&(i=o.content.scrollLeft(),l.scrollable!==!0&&l.scrollable.virtual&&(i=o.wrapper.find(".k-virtual-scrollable-wrap").scrollLeft()),t.scrollLeft(i))),o.lockedContent&&(o._appendLockedColumnFooter(),o._applyLockedContainersWidth(),o._syncLockedFooterHeight())},_wrapFooter:function(t){var n=this,i="",o=Ae.support.mobileOS?0:Ae.support.scrollbar();return n.options.scrollable?(i=e('<div class="k-grid-footer"><div class="k-grid-footer-wrap"><table'+(Rn?' cellspacing="0"':"")+"><tbody>"+t+"</tbody></table></div></div>"),n._appendCols(i.find("table")),i.css(Mn?"padding-left":"padding-right",o),i):'<tfoot class="k-grid-footer">'+t+"</tfoot>"},_columnMenu:function(){var e,n,i,o,r,a,s,l,c,d=this,u=Y(d.columns),h=d.options,p=h.columnMenu,f=Ve(d.columns,function(e){return e.columns!==t}).length>0,g=this._isMobile,m=function(e){d.trigger(_t,{field:e.field,container:e.container})},v=function(e){d.trigger(wt,{field:e.field,container:e.container})},_=function(e){me(e.closest("table"),!0)},b=function(e){d.trigger("sort",{sort:e.sort})?e.preventDefault():(d._clearEditableState(),d.dataSource.options.endless&&(d.dataSource.options.endless=null,d._endlessPageSize=d.dataSource.options.pageSize,d.dataSource.pageSize(d.dataSource.options.pageSize)))},w=function(e){d.trigger("filter",{filter:e.filter,field:e.field})?e.preventDefault():(d._clearEditableState(),d.dataSource.options.endless&&(d.dataSource.options.endless=null,d._endlessPageSize=d.dataSource.options.pageSize,d.dataSource.pageSize(d.dataSource.options.pageSize)))},k=h.$angular;if(p)for("boolean"==typeof p&&(p={}),d._setColumnsMediaVisibility(u),a=Q(d.thead),s=0,l=a.length;s<l;s++)n=u[s],c=a.eq(s),n.command||!n.field&&!c.attr("data-"+Ae.ns+"field")||(e=c.data("kendoColumnMenu"),e&&e.destroy(),o=n.sortable!==!1&&p.sortable!==!1&&h.sortable!==!1&&Ne({},h.sortable,{compare:(n.sortable||{}).compare}),r=!(!h.filterable||n.filterable===!1||p.filterable===!1)&&Ne({pane:d.pane},h.filterable,n.filterable),n.filterable&&n.filterable.dataSource&&(r.forceUnique=!1,r.checkSource=n.filterable.dataSource),r&&(r.format=n.format),i={dataSource:d.dataSource,values:n.values,columns:p.columns,sortable:o,filterable:r,messages:p.messages,owner:d,closeCallback:_,init:m,open:v,pane:d.pane,sort:b,filtering:w,filter:g?":not(.k-column-active)":"",lockedColumns:!f&&n.lockable!==!1&&W(u).length>0},k&&(i.$angular=k),c.kendoColumnMenu(i))},_headerCells:function(){return e(this.thead).find("th").filter(function(){var t=e(this);return!t.hasClass("k-group-cell")&&!t.hasClass("k-hierarchy-cell")})},_filterable:function(){var e,t,n,i,o,r,a,s=this,l=Y(s.columns),c=function(e){s.trigger(vt,{field:e.field,container:e.container})},d=function(e){me(e.closest("table"),!0)},u=function(e){s.trigger("filter",{filter:e.filter,field:e.field})?e.preventDefault():(s._clearEditableState(),s.dataSource.options.endless&&(s.dataSource.options.endless=null,s._endlessPageSize=s.dataSource.options.pageSize,s.dataSource.pageSize(s.dataSource.options.pageSize))); +},h=function(e){s.trigger(bt,{field:e.field,container:e.container})},p=s.options.filterable;if(p&&typeof p.mode==nn&&p.mode.indexOf("menu")==-1&&(p=!1),p&&!s.options.columnMenu)for(t=Q(s.thead),i=0,o=t.length;i<o;i++)n=t.eq(i),l[i].filterable===!1||l[i].command||!l[i].field&&!n.attr("data-"+Ae.ns+"field")||(e=n.data("kendoFilterMenu"),e&&e.destroy(),e=n.data("kendoFilterMultiCheck"),e&&e.destroy(),r=l[i].filterable,a=Ne({},p,r,{dataSource:s.dataSource,values:l[i].values,format:l[i].format,closeCallback:d,title:l[i].title||l[i].field,init:c,open:h,pane:s.pane,change:u}),r&&r.messages&&(a.messages=Ne(!0,{},p.messages,r.messages)),r&&r.dataSource&&(a.forceUnique=!1,a.checkSource=r.dataSource),r&&r.multi?n.kendoFilterMultiCheck(a):n.kendoFilterMenu(a))},_filterRow:function(){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m=this;if(m._hasFilterRow())for(n=m.options.$angular,i=Y(m.columns),o=m.options.filterable,r=m.thead.find(".k-filter-row"),a=function(e){m.trigger("filter",{filter:e.filter,field:e.field})?e.preventDefault():(m._clearEditableState(),m.dataSource.options.endless&&(m.dataSource.options.endless=null,m._endlessPageSize=m.dataSource.options.pageSize,m.dataSource.pageSize(m.dataSource.options.pageSize)))},this._updateHeader(this.dataSource.group().length),s=0;s<i.length;s++)if(c=i[s],d=m.options.filterable.operators,u=!1,h=e("<th/>"),p=c.field,c.hidden&&h.hide(),r.append(h),p&&c.filterable!==!1){if(f=c.filterable&&c.filterable.cell||{},l=m.options.dataSource,l instanceof Ie&&(l=m.options.dataSource.options),g=Ne(!0,{},o.messages),c.filterable&&Ne(!0,g,c.filterable.messages),f.enabled===!1){h.html(" ");continue}f.dataSource&&(l=f.dataSource,u=!0),c.filterable&&c.filterable.operators&&(d=c.filterable.operators),t={column:c,dataSource:m.dataSource,suggestDataSource:l,customDataSource:u,field:p,messages:g,values:c.values,template:f.template,delay:f.delay,inputWidth:f.inputWidth,suggestionOperator:f.suggestionOperator,minLength:f.minLength,dataTextField:f.dataTextField,operator:f.operator,operators:d,showOperators:f.showOperators,change:a},n&&(t.$angular=n),e("<span/>").attr(Ae.attr("field"),p).appendTo(h).kendoFilterCell(t)}else h.html(" ")},_sortable:function(){var e,t,n,i,o,r,a=this,s=Y(a.columns),l=a.options.sortable,c=function(e){a.trigger("sort",{sort:e.sort})?e.preventDefault():a._clearEditableState()};if(l){for(i=Q(a.thead),o=0,r=i.length;o<r;o++)e=s[o],e.sortable!==!1&&!e.command&&e.field&&(n=i.eq(o),t=n.data("kendoColumnSorter"),t&&t.destroy(),n.attr("data-"+Ae.ns+"field",e.field).kendoColumnSorter(Ne({},l,e.sortable,{dataSource:a.dataSource,aria:!0,filter:":not(.k-column-active)",change:c})));i=null}},_columns:function(t){var n,i,o,r=this,a=r.table,s=a.find("col"),l=r.element.find("thead tr"),d=r.options.dataSource;if(t=t.length?t:Oe(a.find("th"),function(t,n){t=e(t);var i=t.attr(Ae.attr("sortable")),o=t.attr(Ae.attr("filterable")),r=t.attr(Ae.attr("type")),a=t.attr(Ae.attr("groupable")),l=t.attr(Ae.attr("field")),c=t.attr(Ae.attr("title")),d=t.attr(Ae.attr("menu"));return l||(l=t.text().replace(/\s|[^A-z0-9]/g,"")),{field:l,type:r,title:c,sortable:"false"!==i,filterable:"false"!==o,groupable:"false"!==a,menu:d,template:t.attr(Ae.attr("template")),width:s.eq(n).css("width")}}),n=!(r.table.find("tbody tr").length>0&&(!d||!d.transport)),r.options.scrollable){if(o=t,i=W(t),t=U(t),i.length>0&&0===t.length)throw Error("There should be at least one non locked column");ie(r.element.find("tr:has(th):first"),o),t=i.concat(t)}l.length&&t.length&&r._updateColumnIDs(t,l.first()),r.columns=c(t,n),e.grep(Y(r.columns),function(e){return e.selectable}).length&&(r._selectedIds={},r._checkBoxSelection=!0,r.wrapper.on(Xt+ct,"tbody > tr "+Ht,je(r._checkboxClick,r)),r.wrapper.on(Xt+ct,"thead > tr "+Ht,je(r._headerCheckboxClick,r)))},_updateColumnIDs:function(e,t){var n,i,o;if(e.length){for(n=t.find("th"),o=0;o<e.length;o++)i=n.eq(o).attr("id"),i&&(e[o].headerAttributes=Ne(e[o].headerAttributes,{id:i}));this._updateColumnIDs($(e),t.next())}},_headerCheckboxClick:function(t){var n=this,i=e(t.target),o=i.prop("checked"),r=i.closest(".k-grid.k-widget").getKendoGrid();n===r&&(o?n.select(r.items()):n.clearSelection())},_checkboxClick:function(t){var n=this,i=e(t.target).closest("tr"),o=!i.hasClass(Bt);n===i.closest(".k-grid.k-widget").getKendoGrid()&&(o?n.select(i):n._deselectCheckRows(i))},_groups:function(){var e=this.dataSource.group();return e?e.length:0},_tmpl:function(e,n,r,a){var s,l,c,d,u,h=this,p=Ne({},Ae.Template,h.options.templateSettings),f=p.paramName,g=n.length,m={storage:{},count:0},v=h._hasDetails(),_=[],b=h._groups(),w=h.options.navigatable,k=Ae.attr("field"),y="";if(!e){for(e="<tr",r&&_.push("k-alt"),v&&_.push("k-master-row"),_.length&&(e+=' class="'+_.join(" ")+'"'),g&&(e+=" "+Ae.attr("uid")+'="#='+Ae.expr("uid",p.paramName)+'#"'),e+=" role='row'>",b>0&&!a&&(e+=i(b)),v&&(e+='<td class="k-hierarchy-cell" aria-expanded="false"><a class="k-icon k-i-expand" href="\\#" '+yn+'="'+kn+'" tabindex="-1"></a></td>'),s=0;s<g;s++)c=n[s],l=c.template,d=typeof l,u=c.field,h._editMode()===ln&&u&&(c.attributes=c.attributes||{},h.virtualScrollable&&(c.attributes[k]=u),y=h._dirtyCellTemplate(u,f),c.attributes["class"]=c.attributes["class"]||"",c.attributes["class"].indexOf(y)<0&&(c.attributes["class"]+=y)),c.command&&(c.attributes=c.attributes||{},t!==c.attributes["class"]?c.attributes["class"]+=" k-command-cell":c.attributes["class"]="k-command-cell"),e+="<td"+o(c.attributes),w&&(e+=" aria-describedby='"+c.headerAttributes.id+"'"),e+=" role='gridcell'>",e+=h._cellTmpl(c,m),e+="</td>";e+="</tr>"}return e=Ae.template(e,p),m.count>0?je(e,m.storage):e},_dirtyCellTemplate:function(e,t){var n;return e&&t?(n="["===e.charAt(0)?Ae.expr(e,t+".dirtyFields"):t+".dirtyFields['"+e+"']","#= "+t+" && "+t+".dirty && "+t+".dirtyFields && "+n+" ? ' k-dirty-cell' : '' #"):""},_headerCellText:function(e){var t=this,n=Ne({},Ae.Template,t.options.templateSettings),i=e.headerTemplate,o=typeof i,r=e.title||e.field||"";return o===tn?r=Ae.template(i,n)({}):o===nn&&(r=i),r},_cellTmpl:function(e,t){var n,i,o=this,r=Ne({},Ae.Template,o.options.templateSettings),a=e.template,s=r.paramName,l=e.field,c="",d=e.format,u=typeof a,h=e.values;if(e.command){if(We(e.command)){for(n=0,i=e.command.length;n<i;n++)c+=e.command[n].visible?Ae.format("#= {0}(data)? '{1}':'' #",e.command[n].visible,o._createButton(e.command[n]).replace(Cn,"\\#").replace(/'/gi,"\\'")):o._createButton(e.command[n]).replace(Cn,"\\#");return c}return o._createButton(e.command).replace(Cn,"\\#")}return e.selectable?En:(c+=o._dirtyIndicatorTemplate(l,s),u===tn?(t.storage["tmpl"+t.count]=a,c+="#=this.tmpl"+t.count+"("+s+")#",t.count++):u===nn?c+=a:h&&h.length&&He(h[0])&&"value"in h[0]&&l?(c+="#var v ="+Ae.stringify(oe(h)).replace(Cn,"\\#")+"#",c+="#var f = v[",r.useWithBlock||(c+=s+"."),c+=l+"]#",c+="${f != null ? f : ''}"):(c+=e.encoded?"#:":"#=",d&&(c+='kendo.format("'+d.replace(xn,"\\$1")+'",'),l?(l=Ae.expr(l,s),c+=l+"==null?'':"+l):c+="''",d&&(c+=")"),c+="#"),c)},_dirtyIndicatorTemplate:function(e,t){var n;return e&&t?(n="["===e.charAt(0)?Ae.expr(e,t+".dirtyFields"):t+".dirtyFields['"+e+"']","#= "+t+" && "+t+".dirty && "+t+".dirtyFields && "+n+" ? '<span class=\"k-dirty\"></span>' : '' #"):""},_templates:function(){var t=this,n=t.options,i=t.dataSource,o=i.group(),r=t.footer||t.wrapper.find(".k-grid-footer"),a=i.aggregate(),s=Y(t.columns),l=Y(W(t.columns)),c=n.scrollable?Y(U(t.columns)):s,d=Ve(w(l),function(e,t){return e.groupHeaderColumnTemplate&&0!==t}),u=Ve(w(c),function(e){return e.groupHeaderColumnTemplate});if(n.scrollable&&l.length){if(n.rowTemplate||n.altRowTemplate)throw Error("Having both row template and locked columns is not supported");t.rowTemplate=t._tmpl(n.rowTemplate,c,!1,!0),t.altRowTemplate=t._tmpl(n.altRowTemplate||n.rowTemplate,c,!0,!0),t.lockedRowTemplate=t._tmpl(n.rowTemplate,l),t.lockedAltRowTemplate=t._tmpl(n.altRowTemplate||n.rowTemplate,l,!0)}else t.rowTemplate=t._tmpl(n.rowTemplate,c),t.altRowTemplate=t._tmpl(n.altRowTemplate||n.rowTemplate,c,!0);t._hasDetails()&&(t.detailTemplate=t._detailTmpl(n.detailTemplate||"")),(t._group&&!$e(a)||!$e(a)&&!r.length||Ve(s,function(e){return e.footerTemplate}).length)&&(t.footerTemplate=t._footerTmpl(s,a,"footerTemplate","k-footer-template")),o&&Ve(s,function(e){return e.groupFooterTemplate}).length&&(a=e.map(o,function(e){return e.aggregates}),t.groupFooterTemplate=t._footerTmpl(c,a,"groupFooterTemplate","k-group-footer",l.length),n.scrollable&&l.length&&(t.lockedGroupFooterTemplate=t._footerTmpl(l,a,"groupFooterTemplate","k-group-footer"))),o&&(d.length||u.length)?(a=e.map(o,function(e){return e.aggregates}),t.groupHeaderColumnTemplate=t._groupHeaderTmpl(w(c),a,"groupHeaderColumnTemplate","k-grouping-row",l.length,u),n.scrollable&&l.length&&(t.lockedGroupHeaderColumnTemplate=t._groupHeaderTmpl(w(l),a,"groupHeaderColumnTemplate","k-grouping-row",0,d))):(t.groupHeaderColumnTemplate=null,t.lockedGroupHeaderColumnTemplate=null),t.options.noRecords&&(t.noRecordsTemplate=t._noRecordsTmpl())},_noRecordsTmpl:function(){var t,n,i,o='<div class="{0}">{1}</div>',r='<div class="k-grid-norecords-template"{1}>{0}</div>',a=this.options.scrollable&&!this.wrapper[0].style.height?' style="margin:0 auto;position:static;"':"",s={storage:{},count:0},l=e.extend({},Ae.Template,this.options.templateSettings),c=l.paramName,d="";return t=this.options.noRecords.template?this.options.noRecords.template:Ae.format(r,this.options.messages.noRecords,a),n=typeof t,"function"===n?(s.storage["tmpl"+s.count]=t,d+="#=this.tmpl"+s.count+"("+c+")#",s.count++):"string"===n&&(d+=t),i=Ae.template(Ae.format(o,Nt,d),l),s.count>0&&(i=e.proxy(i,s.storage)),i},_footerTmpl:function(e,t,n,r,a){var s,l,c,d,u,h=this,p=Ne({},Ae.Template,h.options.templateSettings),f=p.paramName,g="",m={},v=0,_={},b=h._groups(),w=h.dataSource._emptyAggregates(t);for(g+='<tr class="'+r+'">',b>0&&!a&&(g+=i(b)),h._hasDetails()&&(g+='<td class="k-hierarchy-cell"> </td>'),s=0,l=e.length;s<l;s++)u=e[s],c=u[n],d=typeof c,g+="<td"+o(u.footerAttributes)+">",c?(d!==tn&&(_=w[u.field]?Ne({},p,{paramName:f+"['"+u.field+"']"}):{},c=Ae.template(c,_)),m["tmpl"+v]=c,g+="#=this.tmpl"+v+"("+f+")#",v++):g+=" ",g+="</td>";return g+="</tr>",g=Ae.template(g,p),v>0?je(g,m):g},_groupHeaderTmpl:function(e,n,i,o,r,a){var s,l,c,d,u,h=this,p=Ne({},Ae.Template,h.options.templateSettings),f=p.paramName,g="",m={},v=0,_={},b=h.dataSource._emptyAggregates(n),w=a.length?Ue(a[0],e):-1;if(g+='<tr role="row" class="'+o+'">',r||(g+='# for (var i = 0; i < data.groupCells; i++) { #<td class="k-group-cell"> </td># } #'),h._hasDetails()&&(g+='<td class="k-hierarchy-cell"> </td>'),w<0)return g+=r?"":Ce(e.length),t;if(w<un&&a.length<=1&&!r)return g+=r?"":Ce(e.length),Ae.template(g,p);for(w<un?(w=r?0:1,g+=r?"":Ce(w)):g+=r?Se(w):Ce(w),s=w,l=e.length;s<l;s++)u=e[s],c=u[i],d=typeof c,g+="<td>",c?(d!==tn&&(_=b[u.field]?Ne({},p,{paramName:f+"['"+u.field+"']"}):{},c=Ae.template(c,_)),m["tmpl"+v]=c,g+="#=this.tmpl"+v+"("+f+")#",v++):g+=" ",g+="</td>";return g+="</tr>",g=Ae.template(g,p),v>0?je(g,m):g},_detailTmpl:function(e){var t=this,n="",o=Ne({},Ae.Template,t.options.templateSettings),r=o.paramName,a={},s=0,l=t._groups(),c=w(Y(t.columns)).length,d=typeof e;return n+='<tr class="k-detail-row">',l>0&&(n+=i(l)),n+='<td class="k-hierarchy-cell"></td><td class="k-detail-cell"'+(c?' colspan="'+c+'"':"")+">",d===tn?(a["tmpl"+s]=e,n+="#=this.tmpl"+s+"("+r+")#",s++):n+=e,n+="</td></tr>",n=Ae.template(n,o),s>0?je(n,a):n},_hasDetails:function(){var e=this;return null!==e.options.detailTemplate||(e._events[mt]||[]).length},_hasFilterRow:function(){var t=this.options.filterable,n=t&&typeof t.mode==nn&&t.mode.indexOf("row")!=-1,i=this.columns,o=e.grep(i,function(e){return e.filterable===!1});return i.length&&o.length==i.length&&(n=!1),n},_details:function(){var t=this;if(t.options.scrollable&&t._hasDetails()&&W(t.columns).length)throw Error("Having both detail template and locked columns is not supported");t.table.on(Xt+ct,".k-hierarchy-cell .k-i-expand, .k-hierarchy-cell .k-i-collapse",function(n){var i,o,r=e(this),a=r.closest("td.k-hierarchy-cell"),s=r.hasClass("k-i-expand"),l=r.closest("tr.k-master-row"),c=t.detailTemplate,d=t._hasDetails(),u=s?wn:kn,h=!!s;return r.toggleClass("k-i-expand",!s).toggleClass("k-i-collapse",s).attr(yn,u),a.attr("aria-expanded",h),i=l.next(),d&&!i.hasClass("k-detail-row")&&(o=t.dataItem(l),i=e(c(o)).addClass(l.hasClass("k-alt")?"k-alt":"").insertAfter(l),t.angular("compile",function(){return{elements:i.get(),data:[{dataItem:o}]}}),t.trigger(mt,{masterRow:l,detailRow:i,data:o,detailCell:i.find(".k-detail-cell")})),t.trigger(s?Dt:At,{masterRow:l,detailRow:i}),i.toggle(s),n.preventDefault(),!1})},dataItem:function(t){if(t=e(t)[0],!t)return null;var n,i,o=this.tbody.children(),r=/k-grouping-row|k-detail-row|k-group-footer/,a=t.sectionRowIndex;for(i=a,n=0;n<a;n++)r.test(o[n].className)&&i--;return this._data[i]},expandRow:function(t){e(t).find("> td .k-i-expand").click()},collapseRow:function(t){e(t).find("> td .k-i-collapse").click()},_createHeaderCells:function(e,n){var i,r,a,s,l,c,d,u=this,h="",p=u.options.messages,f=Y(u.columns),g=u.dataSource.group();for(i=0,s=e.length;i<s;i++)r=e[i].column||e[i],a=u._headerCellText(r),c="",d=Ue(r,f),r.selectable?(h+="<th scope='col'"+o(r.headerAttributes),n&&!e[i].colSpan&&(h+=" rowspan='"+n+"'"),d>-1&&(h+=Ae.attr("index")+"='"+d+"'"),a=r.headerTemplate?a:Ae.template(In)({}),h+=">"+a+"</th>"):r.command?(h+="<th scope='col'"+o(r.headerAttributes),n&&!e[i].colSpan&&(h+=" rowspan='"+n+"'"),d>-1&&(h+=Ae.attr("index")+"='"+d+"'"),h+=">"+a+"</th>"):(r.field&&(c=Ae.attr("field")+"='"+r.field+"' "),h+="<th scope='col' role='columnheader' "+c,h+=" aria-haspopup='true'",n&&!e[i].colSpan&&(h+=" rowspan='"+n+"'"),e[i].colSpan>1?(h+='colspan="'+(e[i].colSpan-B(r.columns))+'" ',h+=Ae.attr("colspan")+"='"+e[i].colSpan+"'"):1===e[i].colSpan&&(h+=Ae.attr("colspan")+"='"+e[i].colSpan+"'"),r.title&&(l=r.title.replace('"',""").replace(/'/g,"'"),h+=Ae.attr("title")+'="'+l+'" '),r.groupable!==t&&(h+=Ae.attr("groupable")+"='"+r.groupable+"' "),ve(u,r)&&(h+="aria-label='"+(l||r.field)+" ",h+=_e(g,r.field)?p.ungroupHeader:p.groupHeader,h+="' "),r.aggregates&&r.aggregates.length&&(h+=Ae.attr("aggregates")+"='"+r.aggregates+"'"),d>-1&&(h+=Ae.attr("index")+"='"+d+"'"),h+=o(r.headerAttributes),h+=">"+a+"</th>");return h},_appendLockedColumnContent:function(){var t,n,i,o,r,a=this.columns,s=this.table.find("colgroup"),l=s.find("col:not(.k-group-col,.k-hierarchy-col)"),c=e(),d=0,u=0;for(t=0,n=a.length;t<n;t++)if(a[t].locked)if(b(a[t])){for(o=1,a[t].columns&&(o=Y(a[t].columns).length-B(a[t].columns)),o=o||1,r=0;r<o;r++)c=c.add(l.eq(t+u+r-d));u+=o-1}else d++;i=e('<div class="k-grid-content-locked"><table'+(Rn?' cellspacing="0"':"")+"><colgroup/><tbody></tbody></table></div>"),s.detach(),i.find("colgroup").append(c),s.insertBefore(this.table.find("tbody")),this.lockedContent=i.insertBefore(this.content),this.lockedTable=i.children("table")},_appendLockedColumnFooter:function(){var t,n,i=this,o=i.footer,r=o.find(".k-footer-template>td"),a=o.find(".k-grid-footer-wrap>table>colgroup>col"),s=e('<div class="k-grid-footer-locked"><table><colgroup /><tbody><tr class="k-footer-template"></tr></tbody></table></div>'),l=i._groups(),c=e(),d=e();for(c=c.add(r.filter(".k-group-cell")),t=0,n=Y(W(i.columns)).length;t<n;t++)c=c.add(r.eq(t+l));for(d=d.add(a.filter(".k-group-col")),t=0,n=w(Y(j(i.columns))).length;t<n;t++)d=d.add(a.eq(t+l));c.appendTo(s.find("tr")),d.appendTo(s.find("colgroup")),i.lockedFooter=s.prependTo(o)},_appendLockedColumnHeader:function(t){var n,i,o,r,a,s,l,c,d,u,h,p=this,f=this.columns,g=[],m=0,v=e(),_=p._hasFilterRow(),w=0,k=e(),y=0,C=e(),S=p.thead.prev().find("col:not(.k-group-col,.k-hierarchy-col)"),T=p.thead.find("tr:first .k-header:not(.k-group-cell,.k-hierarchy-cell)"),D=p.thead.find(".k-filter-row").find("th:not(.k-group-cell,.k-hierarchy-cell)"),A=0;for(n=0,o=f.length;n<o;n++){if(f[n].locked){if(l=T.eq(n),y=Y(f[n].columns||[]).length,b(f[n])){for(c=null,f[n].columns&&(c=y-B(f[n].columns)),c=c||1,d=0;d<c;d++)v=v.add(S.eq(n+A+d-m));A+=c-1}for(V([f[n]],J(l),g,0,0),y=y||1,u=0;u<y;u++)k=k.add(D.eq(w+u));w+=y}f[n].columns&&(m+=B(f[n].columns)),b(f[n])||m++}if(g.length){for(i='<div class="k-grid-header-locked" style="width:1px"><table'+(Rn?' cellspacing="0"':"")+"><colgroup/><thead>",i+=Array(g.length+1).join("<tr></tr>"),i+=(_?'<tr class="k-filter-row" />':"")+"</thead></table></div>",s=e(i),S=s.find("colgroup"),S.append(p.thead.prev().find("col.k-group-col").add(v)),r=s.find("thead tr:not(.k-filter-row)"),n=0,o=g.length;n<o;n++)C=x(g[n]),r.eq(n).append(p.thead.find("tr:eq("+n+") .k-group-cell").add(C));return h=O(this.thead),g.length<h&&H(s,h-g.length),a=s.find(".k-filter-row"),a.append(p.thead.find(".k-filter-row .k-group-cell").add(k)),this.lockedHeader=s.prependTo(t),this.thead.find(".k-group-cell").remove(),!0}return!1},_removeLockedContainers:function(){var e=this.lockedHeader.add(this.lockedContent).add(this.lockedFooter);Ae.destroy(e),e.off(ct).remove(),this.lockedHeader=this.lockedContent=this.lockedFooter=null,this.selectable=null},_thead:function(){var t,n,i,o,r,a,s,l,c,d=this,u=d.columns,h=d._hasDetails()&&u.length,p=d._hasFilterRow(),f="",g=d.table.find(">thead"),m=d.element.find("thead:first").length>0,v=d.options.messages.expandCollapseColumnHeader;if(g.length||(g=e("<thead/>").insertBefore(d.tbody)),d.lockedHeader&&d.thead?(n=d.thead.find("tr:has(th):not(.k-filter-row)").html(""),n.remove(),n=e(),d._removeLockedContainers()):n=d.element.find(m?"thead:first tr:has(th):not(.k-filter-row)":"tr:has(th):first"),n.length){for(t=0;t<u.length;t++)o=Ue(u[t],Y(u)),r=Q(n.parent()).filter("th:not(.k-group-cell):not(.k-hierarchy-cell)").eq(o),u[t].hidden&&o>=0&&(r[0].style.display="none");d._updateHeadersAttr($(u))}else if(n=g.children().first(),!n.length){for(i=[{rowSpan:1,cells:[],index:0}],d._prepareColumns(i,u),t=0;t<i.length;t++)f+="<tr>",h&&(f+='<th class="k-hierarchy-cell" scope="col">'+v+"</th>"),f+=d._createHeaderCells(i[t].cells,i[t].rowSpan),f+="</tr>";n=e(f)}p&&(a=e("<tr/>"),a.addClass("k-filter-row"),(h||n.find(".k-hierarchy-cell").length)&&a.prepend('<th class="k-hierarchy-cell" scope="col"> </th>'),s=(d.thead||g).find(".k-filter-row"),s.length&&(Ae.destroy(s),s.remove()),g.append(a)),n.children().length?h&&!n.find(".k-hierarchy-cell")[0]&&n.prepend('<th class="k-hierarchy-cell" scope="col">'+(v?v:" ")+"</th>"):(f="",h&&(f+='<th class="k-hierarchy-cell" scope="col"> </th>'),f+=d._createHeaderCells(u),n.html(f)),n.attr("role","row").find("th").addClass("k-header"),d.options.scrollable||g.addClass("k-grid-header"),n.find("script").remove().end().prependTo(g),d.thead&&d._destroyColumnAttachments(),this.angular("cleanup",function(){return{elements:g.find("th"+it).get()}}),this.angular("compile",function(){return{elements:g.find(lt).get(),data:Oe(u,function(e){return{column:e}})}}),d.thead=g.attr("role","rowgroup"),d._sortable(),d._filterable(),d._filterRow(),d._scrollable(),d._columnMenu(),c=this.options.scrollable&&W(this.columns).length,c&&(l=d._appendLockedColumnHeader(d.thead.closest(".k-grid-header")),d._appendLockedColumnContent(),d.lockedContent.bind("DOMMouseScroll"+ct+" mousewheel"+ct,je(d._wheelScroll,d)),d._updateLockedCols()),d._updateCols(),d._updateColumnCellIndex(),d._updateFirstColumnClass(),d._resizable(),d._draggable(),d._reorderable(),d._updateHeader(d._groups()),c&&(l&&d._syncLockedHeaderHeight(),d._applyLockedContainersWidth()),d.groupable&&d._attachGroupable()},_retrieveFirstColumn:function(t,n){var i,o=e();if(n.length&&t[0]){for(i=t[0];i.columns&&i.columns.length;)i=i.columns[0],n=n.filter(":not(:first())");o=o.add(n)}return o},_updateFirstColumnClass:function(){var t,n,i=this,o=i.columns||[],r=i._hasDetails()&&o.length;r||i._groups()||(t=i.thead.find(">tr:not(.k-filter-row):not(:first)"),o=U(o),n=i._retrieveFirstColumn(o,t),i._isLocked()&&(t=i.lockedHeader.find("thead>tr:not(.k-filter-row):not(:first)"),o=W(i.columns),n=n.add(i._retrieveFirstColumn(o,t))),n.each(function(){var t=e(this).find("th");t.removeClass("k-first"),t.eq(0).addClass("k-first")}))},_prepareColumns:function(e,t,n,i){var o,r,a=i||e[e.length-1],s=e[a.index+1],l=0;for(o=0;o<t.length;o++)r={column:t[o],colSpan:0},a.cells.push(r),t[o].columns&&t[o].columns.length&&(s||(s={rowSpan:0,cells:[],index:e.length},e.push(s)),r.colSpan=t[o].columns.length,this._prepareColumns(e,t[o].columns,r,s),l+=r.colSpan-1,a.rowSpan=e.length-a.index);n&&(n.colSpan+=l)},_wheelScroll:function(e){var t,n,i;e.ctrlKey||(t=this.content,this.options.scrollable.virtual&&(t=this.virtualScrollable.verticalScrollbar),n=t.scrollTop(),i=Ae.wheelDeltaY(e),i&&(t[0].scrollHeight>t[0].clientHeight&&(t[0].scrollTop<t[0].scrollHeight-t[0].clientHeight&&i<0||t[0].scrollTop>0&&i>0)&&e.preventDefault(),t.scrollTop(n+-i)))},_isLocked:function(){return null!=this.lockedHeader},_updateHeaderCols:function(){var e=this.thead.parent().add(this.table);this._isLocked()?ne(e,G(q(this.columns)),this._hasDetails(),0):ne(e,G(w(this.columns)),this._hasDetails(),0)},_updateColumnSorters:function(){var e,t,n,i,o,r=this,a=Q(r.thead),s=Y(r.columns);if(r.options.sortable)for(i=0,o=a.length;i<o;i++)e=s[i],e.sortable!==!1&&!e.command&&e.field&&(t=a.eq(i),n=t.data("kendoColumnSorter"),n&&n.refresh())},_updateHeadersAttr:function(e){var t,n,i;if(e.length){for(t=this,n=0;n<e.length;n++)e[n].headerAttributes&&(i=t.element.find("[id='"+e[n].headerAttributes.id+"']"),i.attr("headers",e[n].headerAttributes.headers));t._updateHeadersAttr($(e))}},_updateCols:function(e){e=e||this.thead.parent().add(this.table),this._appendCols(e,this._isLocked())},_updateLockedCols:function(e){this._isLocked()&&(e=e||this.lockedHeader.find("table").add(this.lockedTable),ne(e,G(j(this.columns)),this._hasDetails(),this._groups()))},_appendCols:function(e,t){t?ne(e,G(q(this.columns)),this._hasDetails(),0):ne(e,G(w(this.columns)),this._hasDetails(),this._groups())},_autoColumns:function(e){if(e&&e.toJSON){var t,n,i=this;e=e.toJSON(),n=!(i.table.find("tbody tr").length>0&&(!i.dataSource||!i.dataSource.transport));for(t in e)i.columns.push({field:t,encoded:n,headerAttributes:{id:Ae.guid()}});i._thead(),i._templates()}},_rowsHtml:function(e,t){var n,i,o=this,r="",a=t.rowTemplate,s=t.altRowTemplate;for(n=0,i=e.length;n<i;n++)o._skipRerenderItemsCount>0?o._skipRerenderItemsCount--:r+=n%2?s(e[n]):a(e[n]),o._data.push(e[n]);return r},_groupData:function(e,t,n){var i,o=this,r=o._groupAggregatesDefaultObject||{},a=e.items,s=Ne({},r,e.aggregates),l=Ne({},{field:e.field,value:e.value,items:a,aggregates:s},e.aggregates[n?n.field:e.field]),c={};if(!t)for(i in s)c[i]=Ne({},s[i],{group:{field:e.field,value:e.value,items:a}});return Ne({},c,l)},_groupRowHtml:function(e,t,n,i,o,r,a){var s,l,c,d=this,u="",h=e.field,p=Ve(Y(d.columns),function(e){return e.field==h})[0]||{},f=w(d.columns)[0],g=f?f.groupHeaderColumnTemplate:null,m=p.groupHeaderTemplate?p.groupHeaderTemplate:g,v=(p.title||h)+": "+re(e.value,p.format,p.values,p.encoded),_=e.items,b=d._groups(),k=o.groupFooterTemplate,y=o.groupHeaderColumnTemplate;if((o.groupFooterTemplate||o.groupHeaderColumnTemplate||p.groupHeaderTemplate)&&(c=d._groupData(e,!1,!(p.groupHeaderTemplate||!w(d.columns)[0].groupHeaderColumnTemplate)&&w(d.columns)[0])),m&&!r&&(v=typeof m===tn?m(c):Ae.template(m)(c)),d._skipRerenderItemsCount?i(t,n,v):u+=y?y(Ne({},c,{groupCells:n,colspan:b-n,text:v})):i(t,n,v),e.hasSubgroups)for(s=0,l=_.length;s<l;s++)u+=d._groupRowHtml(_[s],r?t:t-1,n+1,i,o,r,a&&s===_.length-1);else u+=d._rowsHtml(_,o);return k&&(a?Ue(e.value,d._skippedGroups)||d._skippedGroups.push(e.value):(d._skippedGroups.length&&d._skippedGroups[0]===e.value&&d._skippedGroups.shift(),d._skipRerenderItemsCount||(u+=k(c)))),u},collapseGroup:function(t){var n,i,o,r,a,s,l=this,c=t,d=this.options.groupable,u=d.showFooter,h=u?0:1,p=e();for(t=e(t),this._isLocked()&&(t.closest("div").hasClass("k-grid-content-locked")?p=this.tbody.children("tr:eq("+t.index()+")").nextAll("tr"):(p=t.nextAll("tr"),t=this.lockedTable.find(">tbody>tr:eq("+t.index()+")"))),n=t.find(".k-group-cell").length,t.find(".k-i-collapse").addClass("k-i-expand").removeClass("k-i-collapse"),t.find("td[aria-expanded='true']:first").attr("aria-expanded",!1).find("a").attr(yn,kn),t=t.nextAll("tr"),s=[],o=0,r=t.length;o<r&&(a=t.eq(o),i=a.find(".k-group-cell").length,a.hasClass("k-grouping-row")?h++:a.hasClass("k-group-footer")&&h--,!(i<=n||a.hasClass("k-group-footer")&&h<0));o++)p.length&&s.push(p[o]),s.push(a[0]);e(s).hide(),this.options.scrollable.endless&&this.content&&(clearTimeout(l._collapseGroupsTimeOut),l._collapseGroupsTimeOut=setTimeout(function(){l.content.scroll(),l._groupToCollapse=c}))},expandGroup:function(t){var n,i,o,r,a,s,l,c,d,u,h;for(t=e(t),n=this,i=n.options.groupable.showFooter,s=e(),d=[],u=1,this._isLocked()&&(t.closest("div").hasClass("k-grid-content-locked")?s=this.tbody.children("tr:eq("+t.index()+")").nextAll("tr"):(s=t.nextAll("tr"),t=this.lockedTable.find(">tbody>tr:eq("+t.index()+")"))),o=t.find(".k-group-cell").length,t.find(".k-i-expand").addClass("k-i-collapse").removeClass("k-i-expand"),t.find("td[aria-expanded='false']:first").attr("aria-expanded",!0).find("a").attr(yn,wn),t=t.nextAll("tr"),l=0,c=t.length;l<c&&(r=t.eq(l),a=r.find(".k-group-cell").length,!(a<=o));l++)a!=o+1||r.hasClass("k-detail-row")||(r.show(),s.eq(l).show(),r.hasClass("k-grouping-row")&&r.find(".k-icon").hasClass("k-i-collapse")&&n.expandGroup(r),r.hasClass("k-master-row")&&r.find(".k-icon").hasClass("k-i-collapse")&&(r.next().show(),s.eq(l+1).show())),r.hasClass("k-grouping-row")&&(i&&d.push(r.is(":visible")),u++),r.hasClass("k-group-footer")&&(i&&(h=d.pop(),r.toggle(h),s.eq(l).toggle(h)),1==u?(r.show(),s.eq(l).show()):u--);0===o&&n.options.scrollable.endless&&this._isLocked()&&n._syncLockedContentHeight()},_updateHeader:function(t){var n=this,i=n._isLocked()?n.lockedHeader.find("thead"):n.thead,o=i.find("tr.k-filter-row").find("th.k-group-cell").length,r=i.find("tr:first").find("th.k-group-cell").length,a=i.children("tr:not(:first)").filter(function(){return!e(this).children(":visible").length});t>r?(e(Array(t-r+1).join('<th class="k-group-cell k-header" scope="col">'+n.options.messages.expandCollapseColumnHeader+"</th>")).prependTo(i.children("tr:not(.k-filter-row)")),n.element.is(":visible")&&a.find("th.k-group-cell").hide()):t<r&&i.find("tr").each(function(){e(this).find("th.k-group-cell").filter(":eq("+t+"),:gt("+t+")").remove()}),t>o&&e(Array(t-o+1).join('<th class="k-group-cell k-header" scope="col"> </th>')).prependTo(i.find(".k-filter-row"))},_firstDataItem:function(e,t){return e&&t&&(e=e.hasSubgroups?this._firstDataItem(e.items[0],t):e.items[0]),e},_updateTablesWidth:function(){var t,n=this;n._isLocked()&&(t=e(">.k-grid-footer>.k-grid-footer-wrap>table",n.wrapper).add(n.thead.parent()).add(n.table),n._footerWidth=he(t.eq(0)),t.width(n._footerWidth),t=e(">.k-grid-footer>.k-grid-footer-locked>table",n.wrapper).add(n.lockedHeader.find(">table")).add(n.lockedTable),t.width(he(t.eq(0))))},hideColumn:function(n){var i,o,r,a,l,c,d,u,h,p,f,g=this,m=0,_=g.footer||g.wrapper.find(".k-grid-footer"),k=g.columns,y=g.lockedHeader?Q(g.lockedHeader.find(">table>thead")).filter(v).length:0,x=Ve(Y(g.columns),function(e){return e.groupHeaderColumnTemplate});if(n="number"==typeof n?k[n]:He(n)?Ve(z(k),function(e){return e===n})[0]:Ve(z(k),function(e){return e.field===n})[0],n&&b(n)){if(p=g._columnVisibilitySetter(n),n.columns&&n.columns.length){for(c=F(n,k),p(n,!1),ae(s(e(">table>thead",g.lockedHeader),g.thead,">tr:eq("+c.row+")>th"),c.cell,!1),r=0;r<n.columns.length;r++)this.hideColumn(n.columns[r]);return g.trigger(xt,{column:n}),t}if(h=Ue(n,w(Y(k))),p(n,!1),g._setParentsVisibility(n,!1),g._templates(),g._updateCols(),g._updateLockedCols(),f=g.thead,d=h,g.lockedHeader&&y>h?f=g.lockedHeader.find(">table>thead"):d-=y,i=Q(f).filter(v).eq(d),i[0].style.display="none",ae(s(e(">table>thead",g.lockedHeader),g.thead,">tr.k-filter-row>th"),h,!1),_[0]&&(g._updateCols(_.find(">.k-grid-footer-wrap>table")),g._updateLockedCols(_.find(">.k-grid-footer-locked>table")),ae(_.find(".k-footer-template>td"),h,!1)),g.lockedTable&&y>h?se(g.lockedTable.find(">tbody>tr"),h):se(g.tbody.children(),h-y),g.lockedTable)g._updateTablesWidth(),g._applyLockedContainersWidth(),g._syncLockedContentHeight(),g._syncLockedHeaderHeight(),g._syncLockedFooterHeight();else{for(a=g.thead.prev().find("col"),r=0,u=a.length;r<u;r+=1){if(l=a[r].style.width,!l||l.indexOf("%")!=-1){m=0;break}m+=parseInt(l,10)}o=e(">.k-grid-header table:first,>.k-grid-footer table:first",g.wrapper).add(g.table),g._footerWidth=null,m&&(o.each(function(){this.style.width=m+"px"}),g._footerWidth=m,g._setContentWidth()),Fn.msie&&8==Fn.version&&(o.css("display","inline-table"),setTimeout(function(){o.css("display","table")},1))}g._updateFirstColumnClass(),x.length>0&&g._renderGroupRows(),g.trigger(xt,{column:n})}},_setParentsVisibility:function(t,n){var i,o,r,a,l,c=this,d=c.columns,h=[],p=c._columnVisibilitySetter(t),f=n?function(e){return w(e.columns).length&&e.hidden}:function(e){return!w(e.columns).length&&!e.hidden};if(u(t,d,h)&&h.length)for(i=h.length-1;i>=0;i--)o=h[i],r=E(o,d),a=s(e(">table>thead",this.lockedHeader),this.thead,">tr:eq("+r.row+")>th:not(.k-group-cell):not(.k-hierarchy-cell)").eq(r.cell),f(o)&&(p(o,n),a[0].style.display=n?"":"none"),a.filter("["+Ae.attr("colspan")+"]").length&&(l=parseInt(a.attr(Ae.attr("colspan")),10),a[0].colSpan=l-B(o.columns)||1)},showColumn:function(n){var i,o,r,a,l,c,d,u,h,p,f,g,m,v,_=this,w=_.columns,k=_.footer||_.wrapper.find(".k-grid-footer"),y=_.lockedHeader?Q(_.lockedHeader.find(">table>thead")).length:0,x=Ve(Y(_.columns),function(e){return e.groupHeaderColumnTemplate});if("number"==typeof n?(p=n,n=w[n]):He(n)?e.each(z(w),function(e,t){if(t===n)return n=t,p=e,!1}):e.each(z(w),function(e,t){if(t.field===n)return n=t,p=e,!1}),n&&!b(n)){if(m=_._columnVisibilitySetter(n),n.columns&&n.columns.length){for(d=E(n,w),f=z(_.options.columns)[p],m(n,!0),ae(s(e(">table>thead",_.lockedHeader),_.thead,">tr:eq("+d.row+")>th"),d.cell,!0),i=0;i<n.columns.length;i++)f.columns[i].hidden||this.showColumn(n.columns[i]);return _.trigger(Ct,{column:n}),t}if(g=Ue(n,Y(w)),m(n,!0),_._setParentsVisibility(n,!0),_._templates(),_._updateCols(),_._updateLockedCols(),v=_.thead,c=g,_.lockedHeader&&y>g?v=_.lockedHeader.find(">table>thead"):c-=y,r=Q(v).eq(c),r[0].style.display="",ae(s(e(">table>thead",_.lockedHeader),_.thead,">tr.k-filter-row>th"),g,!0),k[0]&&(_._updateCols(k.find(">.k-grid-footer-wrap>table")),_._updateLockedCols(k.find(">.k-grid-footer-locked>table")),ae(k.find(".k-footer-template>td"),g,!0)),_.lockedTable&&y>g?de(_.lockedTable.find(">tbody>tr"),g):de(_.tbody.children(),g-y),_.lockedTable)_._updateTablesWidth(),_._applyLockedContainersWidth(),_._syncLockedContentHeight(),_._syncLockedHeaderHeight();else if(a=e(">.k-grid-header table:first,>.k-grid-footer table:first",_.wrapper).add(_.table),n.width){for(l=0,h=_.thead.prev().find("col"),i=0,o=h.length;i<o;i+=1){if(u=h[i].style.width,u.indexOf("%")>-1){l=0;break}l+=parseInt(u,10)}_._footerWidth=null,l&&(a.each(function(){this.style.width=l+"px"}),_._footerWidth=l,_._setContentWidth())}else a.width("");_._updateFirstColumnClass(),x.length>0&&_._renderGroupRows(),_.trigger(Ct,{column:n})}},_columnVisibilitySetter:function(e){var t=e||{};return y(t.media)?h:f},_progress:function(e){var t=this.element,n=this.options.scrollable&&this.options.scrollable.endless;this._editContainer&&"popup"===this._editMode()?t=this._editContainer:this.lockedContent||n?t=this.wrapper:this.element.is("table")?t=this.element.parent():this.content&&this.content.length&&(t=this.content),n&&e?Ae.ui.progress(t,e,{height:this.content.height(),top:this.content[0].offsetTop,opacity:!0}):Ae.ui.progress(t,e)},_resize:function(e,t){this._syncLockedContentHeight(),this._syncLockedHeaderHeight(),this.content&&(this._setContentWidth(), +this._setContentHeight()),this.lockedTable&&this._syncLockedScroll(),this.virtualScrollable&&(t||this._rowHeight)&&(t&&(this._rowHeight=null),this.virtualScrollable.repaintScrollbar()),this.pager&&this.pager.element&&this.pager.resize(t)},_isActiveInTable:function(){var t=Re();return!!t&&(this.table[0]===t||e.contains(this.table[0],t)||this._isLocked()&&(this.lockedTable[0]===t||e.contains(this.lockedTable[0],t)))},refresh:function(t){var n,i,o,r=this,a=r.dataSource.view(),s=r.options.navigatable,l=e(r.current()),c=!1,d=(r.dataSource.group()||[]).length,u=d+G(w(r.columns)).length;t&&"itemchange"===t.action&&(r.editable||r.options.scrollable.endless)&&("popup"!=this._editMode()||"popup"===this._editMode()&&!r._editableIsClosing)||(t&&"remove"===t.action&&r.editable&&r.editable.options.model&&Ue(r.editable.options.model,t.items)>-1&&r.editable.options.model.unbind(yt,r._modelChangeHandler),t=t||{},r.trigger("dataBinding",{action:t.action||"rebind",index:t.index,items:t.items})||(t.action===Rt&&r._isVirtualEditable()&&(r._destroyEditable(),r._clearEditableState()),r._angularItems("cleanup"),r._endlessFetchInProgress||(s&&(r._isActiveInTable()||r._editContainer&&r._editContainer.data("kendoWindow"))&&(c=l.is("th"),n=c?l.parent().children(":not(.k-group-cell)").index(l[0]):Math.max(r.cellIndex(l),0)),r._destroyEditable()),r.options.scrollable&&r.options.scrollable.endless?(clearTimeout(r._progressTimeOut),r._progressTimeOut=setTimeout(function(){r._endlessFetchInProgress||r._progress(!1)},100)):r._progress(!1),r._hideResizeHandle(),r._data=[],r.columns.length||(r._autoColumns(r._firstDataItem(a[0],d)),u=d+r.columns.length),r._group=d>0||r._group,r._group&&(r._templates(),r._updateCols(),r._updateLockedCols(),r._updateHeader(d),r._group=d>0,r._groupRows=le(a)),r.content&&(i=r.content.scrollLeft()),o=r._skipRerenderItemsCount,r._renderContent(a,u,d),r.options.scrollable&&r.options.scrollable.endless&&this.lockedContent&&(r._skipRerenderItemsCount=o),r._renderLockedContent(a,u,d),r._footer(),r._renderNoRecordsContent(),r._togglePagerVisibility(),r._setContentHeight(),r._setContentWidth(r.content&&i),r.lockedTable&&(r.options.scrollable.virtual?r.content.find(">.k-virtual-scrollable-wrap").trigger("scroll"):r.touchScroller?r.touchScroller.movable.trigger("change"):(r.wrapper.one("scroll",function(e){e.stopPropagation()}),r.content.trigger("scroll"))),r._endlessFetchInProgress||r._restoreCurrent(n,c),r.touchScroller&&r.touchScroller.contentResized(),r.selectable&&r.selectable.resetTouchEvents(),r._muteAngularRebind(function(){r._angularItems("compile")}),r._checkBoxSelection&&r._toggleHeaderCheckState(!1),r.options.persistSelection&&(r.selectable&&!Ae.ui.Selectable.parseOptions(r.options.selectable).cell||r._checkBoxSelection)&&r.items().length?r._restoreSelection():r._selectedIds={},r.trigger(Tt)))},_restoreCurrent:function(n,i){var o,r,a;n===t||n<0||(this._removeCurrent(),i?this._setCurrent(this.thead.find("th:not(.k-group-cell)").eq(n)):(o=0,this._rowVirtualIndex?o=this.virtualScrollable.position(this._rowVirtualIndex):n=0,r=e(),this.lockedTable&&(r=this.lockedTable.find(">tbody>tr").eq(o)),r=r.add(this.tbody.children().eq(o)),a=r.find(">td:not(.k-group-cell):not(.k-hierarchy-cell)").eq(n),this._setCurrent(a)),this._current&&me(this._current.closest("table")[0],!0))},_restoreSelection:function(){var e,t=this,n=t.items(),i=Ge(t.dataSource.options.schema.model)?t.dataSource.options.schema.model.fn.idField:t.dataSource.options.schema.model.id;e=Ve(n,function(e){var n=t.dataItem(e)[i];if(t._selectedIds[n])return e}),t.select(e)},_angularItems:function(e){Ae.ui.DataBoundWidget.fn._angularItems.call(this,e),"cleanup"!==e||this.dataSource&&this.dataSource.options.endless||this._cleanupDetailItems(),this._angularGroupItems(e),this._angularGroupFooterItems(e)},_cleanupDetailItems:function(){var e=this;e._hasDetails()&&(e.angular("cleanup",function(){return{elements:e.tbody.children(".k-detail-row")}}),e.tbody.find(".k-detail-cell").empty())},_angularGroupItems:function(t){var n=this,i=n.tbody;n.lockedContent&&(i=n.lockedTable.find("tbody")),n._group&&n.angular(t,function(){return{elements:i.children(".k-grouping-row"),data:e.map(le(n.dataSource.view()),function(e){return{dataItem:e}})}})},_angularGroupFooterItems:function(t){var n=this,i=n.tbody;n.lockedContent&&(i=n.element),n._group&&n.groupFooterTemplate&&n.angular(t,function(){return{elements:i.find(".k-group-footer"),data:e.map(ce(n.dataSource.view()),function(e){return{dataItem:e}})}})},_renderContent:function(e,t,n){var i,o,r,a,s=this,l="",c=null!=s.lockedContent,d=null,u=s.options.scrollable,h={rowTemplate:s.rowTemplate,altRowTemplate:s.altRowTemplate,groupFooterTemplate:s.groupFooterTemplate,groupHeaderColumnTemplate:s.groupHeaderColumnTemplate};if(u&&u.endless&&!s.dataSource.options.endless&&(s._skipRerenderItemsCount=0,s.content&&(s.content[0].scrollTop=0)),d=s._skipRerenderItemsCount>0,t=c?t-G(j(s.columns)).length:t,n>0)for(t=c?t-n:t,s.detailTemplate&&t++,s.groupFooterTemplate&&(s._groupAggregatesDefaultObject=s.dataSource.aggregates()),s.options.scrollable.endless&&(a=s.dataSource.flatView().length),i=0,o=e.length;i<o;i++)s._skippedGroups||(s._skippedGroups=[]),r=a&&i===e.length-1&&a!==s.dataSource.total(),l+=s._groupRowHtml(e[i],t,0,c?De:Te,h,c,r);else l+=s._rowsHtml(e,h);d?(s.tbody.append(l),clearTimeout(s._endlessFetchTimeOut),s._endlessFetchTimeOut=setTimeout(function(){s._groupToCollapse&&(s.collapseGroup(s._groupToCollapse),s._groupToCollapse=null)}),s._endlessFetchInProgress=null):s.tbody=Z(s.tbody,s.table,l,this.options.$angular)},_renderGroupRows:function(){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_=this,b=_._groupRows,k=_.wrapper.find(".k-grouping-row"),y=_._groups(),x=null!=_.lockedContent;k.each(function(k,C){f=e(C),d=f.closest("table").parent(),u=d.is("."+dt),n=G(u?w(W(_.columns)):w(U(_.columns))),g=f.find("."+ut).length,x?(t=u?Te:De,i=u?n.length+y-g:n.length):(t=Te,i=n.length+y-g),o=k>=b.length?b[k-b.length]:b[k],r=o.field,a=Ve(Y(_.columns),function(e){return e.field==r})[0]||{},v=!(a.groupHeaderTemplate||!w(_.columns)[0].groupHeaderColumnTemplate)&&w(_.columns)[0],s=a.groupHeaderTemplate?a.groupHeaderTemplate:w(_.columns)[0].groupHeaderColumnTemplate,l=(a.title||r)+": "+re(o.value,a.format,a.values,a.encoded),y=y,c=_._groupData(o,!1,v),m=u?_.lockedGroupHeaderColumnTemplate:_.groupHeaderColumnTemplate,s&&(l=typeof s===tn?s(c):Ae.template(s)(c)),h=f.prev().length?f.prev():f.parent(),p=e(m?m(Ne({},c,{groupCells:g,colspan:y-g,text:l})):t(i,g,l)),h.is("tbody")?h.prepend(p):h.after(p),f.remove()})},_renderLockedContent:function(e,t,n){var i,o,r,a="",s=null,l={rowTemplate:this.lockedRowTemplate,altRowTemplate:this.lockedAltRowTemplate,groupFooterTemplate:this.lockedGroupFooterTemplate,groupHeaderColumnTemplate:this.lockedGroupHeaderColumnTemplate};if(this.lockedContent){if(r=this.lockedTable,s=this._skipRerenderItemsCount>0,n>0)for(t-=w(Y(U(this.columns))).length,i=0,o=e.length;i<o;i++)a+=this._groupRowHtml(e[i],t,0,Te,l,!1,this.options.scrollable.endless&&i===e.length-1);else a=this._rowsHtml(e,l);s?r.children("tbody").append(a):Z(r.children("tbody"),r,a,this.options.$angular),this._syncLockedContentHeight()}},_togglePagerVisibility:function(){this.options.pageable.alwaysVisible===!1&&this.wrapper.find(".k-grid-pager").toggle(this.dataSource.total()>=this.dataSource.pageSize())},_adjustRowsHeight:function(e,t){var n,i,o,r,a=e[0].rows,s=a.length,l=t[0].rows,c=e.add(t),d=c.length,u=[];for(n=0;n<s&&l[n];n++)a[n].style.height&&(a[n].style.height=l[n].style.height="");for(n=0;n<s&&l[n];n++)i=a[n].offsetHeight,o=l[n].offsetHeight,r=0,i>o?r=i:i<o&&(r=o),u.push(r);for(n=0;n<d;n++)c[n].style.display="none";for(n=0;n<s;n++)u[n]&&(a[n].style.height=l[n].style.height=u[n]+1+"px");for(n=0;n<d;n++)c[n].style.display=""}});Ae.ExcelMixin&&Ae.ExcelMixin.extend(On.prototype),Ae.PDFMixin&&(Ae.PDFMixin.extend(On.prototype),On.prototype._drawPDF_autoPageBreak=function(n){function i(){u&&s!==t?(d.one("change",o),d.page(s)):(l.refresh(),o())}function o(){p.appendTo(document.body);var t=e.extend({},l.options.pdf,{_destructive:!0,progress:function(e){n.notify({page:e.page,pageNumber:e.pageNum,progress:.5+e.pageNum/e.totalPages/2,totalPages:e.totalPages})}});Ae.drawing.drawDOM(f,t).always(function(){p.remove()}).then(function(e){c.resolve(e)}).fail(function(e){c.reject(e)})}function r(){var e=d.page(),t=u?d.totalPages():1;a.append(h.find("tr")),e<t?d.page(e+1):(d.unbind("change",r),i())}var a,s,l=this,c=new e.Deferred,d=l.dataSource,u=l.options.pdf.allPages,h=l.wrapper.find('table[role$="grid"] > tbody'),p=e("<div>").css({position:"absolute",left:-1e4,top:-1e4}),f=l.wrapper.clone().css({height:"auto",width:"auto"}).appendTo(p);return f.find(".k-grid-content").css({height:"auto",width:"auto",overflow:"visible"}),f.find('table[role$="grid"], .k-grid-footer table').css({height:"auto",width:"100%",overflow:"visible"}),f.find(".k-grid-pager, .k-grid-toolbar, .k-grouping-header").remove(),f.find(".k-grid-header, .k-grid-footer, .k-auto-scrollable").css({paddingRight:0}),this._initPDFProgress(n),a=f.find('table[role$="grid"] > tbody').empty(),s=d.page(),u?(d.bind("change",r),d.page(1)):r(),c.promise()},On.prototype._drawPDF=function(n){function i(){s&&c!==t?(a.unbind("change",o),a.one("change",function(){r.resolve(l)}),a.page(c)):r.resolve(l)}function o(){d._drawPDFShadow({width:d.wrapper.width()},{avoidLinks:d.options.pdf.avoidLinks}).done(function(e){var t=a.page(),o=s?a.totalPages():1,r={page:e,pageNumber:t,progress:t/o,totalPages:o};n.notify(r),l.append(r.page),t<o?a.page(t+1):i()}).fail(function(e){r.reject(e)})}var r,a,s,l,c,d=this;return d.options.pdf.paperSize&&"auto"!=d.options.pdf.paperSize?d._drawPDF_autoPageBreak(n):(r=new e.Deferred,a=d.dataSource,s=d.options.pdf.allPages,this._initPDFProgress(n),l=new Ae.drawing.Group,c=a.page(),s?(a.bind("change",o),a.page(1)):o(),r.promise())},On.prototype._initPDFProgress=function(t){var n,i=e("<div class='k-loading-pdf-mask'><div class='k-loading-color'/></div>");i.prepend(this.wrapper.clone().css({position:"absolute",top:0,left:0})),this.wrapper.append(i),n=e("<div class='k-loading-pdf-progress'>").appendTo(i).kendoProgressBar({type:"chunk",chunkCount:10,min:0,max:1,value:0}).data("kendoProgressBar"),t.progress(function(e){n.value(e.progress)}).always(function(){Ae.destroy(i),i.remove()})}),Ee.plugin(On),Ee.plugin(Hn)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.listview.min",["kendo.data.min","kendo.editable.min","kendo.selectable.min"],e)}(function(){return function(e,t){var n=window.kendo,i="change",o="cancel",r="dataBound",a="dataBinding",s=n.ui.Widget,l=n.keys,c=">*:not(.k-loading-mask)",d="progress",u="error",h="k-state-focused",p="k-state-selected",f="k-edit-item",g="edit",m="remove",v="save",_="mousedown",b="click",w="touchstart",k=".kendoListView",y=e.proxy,x=n._activeElement,C=n.ui.progress,S=n.data.DataSource,T=n.ui.DataBoundWidget.extend({init:function(t,i){var o=this;i=e.isArray(i)?{dataSource:i}:i,s.fn.init.call(o,t,i),i=o.options,o.wrapper=t=o.element,t[0].id&&(o._itemId=t[0].id+"_lv_active"),o._element(),o._dataSource(),o._templates(),o._navigatable(),o._selectable(),o._pageable(),o._crudHandlers(),o._scrollable(),o.options.autoBind&&o.dataSource.fetch(),n.notify(o)},events:[i,o,a,r,g,m,v],options:{name:"ListView",autoBind:!0,selectable:!1,navigatable:!1,height:null,template:"",altTemplate:"",editTemplate:""},setOptions:function(e){s.fn.setOptions.call(this,e),this._templates(),this.selectable&&(this.selectable.destroy(),this.selectable=null),this._selectable()},_templates:function(){var e=this.options;this.template=n.template(e.template||""),this.altTemplate=n.template(e.altTemplate||e.template),this.editTemplate=n.template(e.editTemplate||"")},_item:function(e){return this.element.children()[e]()},items:function(){return this.element.children()},dataItem:function(t){var i=n.attr("uid"),o=e(t).closest("["+i+"]").attr(i);return this.dataSource.getByUid(o)},setDataSource:function(e){this.options.dataSource=e,this._dataSource(),this.options.autoBind&&e.fetch()},_unbindDataSource:function(){var e=this;e.dataSource.unbind(i,e._refreshHandler).unbind(d,e._progressHandler).unbind(u,e._errorHandler)},_dataSource:function(){var e=this;e.dataSource&&e._refreshHandler?e._unbindDataSource():(e._refreshHandler=y(e.refresh,e),e._progressHandler=y(e._progress,e),e._errorHandler=y(e._error,e)),e.dataSource=S.create(e.options.dataSource).bind(i,e._refreshHandler).bind(d,e._progressHandler).bind(u,e._errorHandler)},_progress:function(e){var t=this.element;C(t,e,{opacity:!0})},_error:function(){C(this.element,!1)},_element:function(){var e=this.options.height;this.element.addClass("k-widget k-listview").attr("role","listbox"),e&&this.element.css("height",e)},refresh:function(e){var i,o,s,l,c,d=this,u=d.dataSource.view(),h="",p=d.template,f=d.altTemplate,g=x(),m=d._endlessFetchInProgress,v=m?d._skipRerenderItemsCount:0,_=d.options.scrollable;if(e=e||{},"itemchange"===e.action)return d._hasBindingTarget()||d.editable||(i=e.items[0],s=d.items().filter("["+n.attr("uid")+"="+i.uid+"]"),s.length>0&&(l=s.index(),d.angular("cleanup",function(){return{elements:[s]}}),s.replaceWith(p(i)),s=d.items().eq(l),s.attr(n.attr("uid"),i.uid),d.angular("compile",function(){return{elements:[s],data:[{dataItem:i}]}}),d.trigger("itemChange",{item:s,data:i}))),t;if(!d.trigger(a,{action:e.action||"rebind",items:e.items,index:e.index})){for(d._angularItems("cleanup"),m||d._destroyEditable(),l=v,c=u.length;l<c;l++)h+=l%2?f(u[l]):p(u[l]);for(m?d.element.append(h):d.element.html(h),o=d.items().not(".k-loading-mask"),l=v,c=u.length;l<c;l++)o.eq(l).attr(n.attr("uid"),u[l].uid).attr("role","option").attr("aria-selected","false");d.element[0]===g&&d.options.navigatable&&(d._focusNext?d.current(d.current().next()):_||d.current(o.eq(0))),d._angularItems("compile"),d._progress(!1),d._endlessFetchInProgress=null,d.trigger(r,{action:e.action||"rebind",items:e.items,index:e.index})}},_pageable:function(){var t,i,o=this,r=o.options.pageable;e.isPlainObject(r)&&(i=r.pagerId,t=e.extend({},r,{dataSource:o.dataSource,pagerId:null}),o.pager=new n.ui.Pager(e("#"+i),t))},_selectable:function(){var e,o,r=this,a=r.options.selectable,s=r.options.navigatable;a&&(e=n.ui.Selectable.parseOptions(a).multiple,r.selectable=new n.ui.Selectable(r.element,{aria:!0,multiple:e,filter:c,change:function(){r.trigger(i)}}),s&&r.element.on("keydown"+k,function(n){if(n.keyCode===l.SPACEBAR){if(o=r.current(),n.target==n.currentTarget&&n.preventDefault(),e)if(n.ctrlKey){if(o&&o.hasClass(p))return o.removeClass(p),t}else r.selectable.clear();else r.selectable.clear();r.selectable.value(o)}}))},_scrollable:function(){var e,t=this,n=t.options.scrollable;n&&(t.element.css({"overflow-y":"scroll",position:"relative","-webkit-overflow-scrolling":"touch"}),"endless"===n&&(e=t._endlessPageSize=t.dataSource.options.pageSize,t.element.off("scroll"+k).on("scroll"+k,function(){this.scrollTop+this.clientHeight-this.scrollHeight>=-15&&!t._endlessFetchInProgress&&t._endlessPageSize<t.dataSource.total()&&(t._skipRerenderItemsCount=t._endlessPageSize,t._endlessPageSize=t._skipRerenderItemsCount+e,t.dataSource.options.endless=!0,t._endlessFetchInProgress=!0,t.dataSource.pageSize(t._endlessPageSize))})))},current:function(e){var n=this,i=n.element,o=n._current,r=n._itemId;return e===t?o:(o&&o[0]&&(o[0].id===r&&o.removeAttr("id"),o.removeClass(h),i.removeAttr("aria-activedescendant")),e&&e[0]&&(r=e[0].id||r,n._scrollTo(e[0]),i.attr("aria-activedescendant",r),e.addClass(h).attr("id",r)),n._current=e,t)},_scrollTo:function(t){var n,i,o=this,r=!1,a="scroll";"auto"==o.wrapper.css("overflow")||o.wrapper.css("overflow")==a||o.wrapper.css("overflow-y")==a?n=o.wrapper[0]:(n=window,r=!0),i=function(i,o){var s=r?e(t).offset()[i.toLowerCase()]:t["offset"+i],l=t["client"+o],c=e(n)[a+i](),d=e(n)[o.toLowerCase()]();s+l>c+d?e(n)[a+i](s+l-d):s<c&&e(n)[a+i](s)},i("Top","Height"),i("Left","Width")},_navigatable:function(){var t=this,i=t.options.navigatable,o=t.element,r=function(i){t.current(e(i.currentTarget)),e(i.target).is(":button,a,:input,a>.k-icon,textarea")||n.focusElement(o)};i&&(t._tabindex(),o.on("focus"+k,function(){var e=t._current;e&&e.is(":visible")||(e=t._item("first")),t.current(e)}).on("focusout"+k,function(){t._current&&t._current.removeClass(h)}).on("keydown"+k,function(i){var r,a,s=i.keyCode,c=t.current(),d=e(i.target),u=!d.is(":button,textarea,a,a>.t-icon,input"),h=d.is(":text,:password"),p=n.preventDefault,g=o.find("."+f),m=x(),v=t.options.scrollable;if(!(!u&&!h&&l.ESC!=s||h&&l.ESC!=s&&l.ENTER!=s))if(l.UP===s||l.LEFT===s)c&&c[0]&&(c=c.prev()),c&&c[0]?t.current(c):v||t.current(t._item("last")),p(i);else if(l.DOWN===s||l.RIGHT===s)v?"endless"!==t.options.scrollable||c.next().length?(c=c.next(),c&&c[0]&&t.current(c)):(t.element[0].scrollTop=t.element[0].scrollHeight,t._focusNext=!0):(c=c.next(),t.current(c&&c[0]?c:t._item("first"))),p(i);else if(l.PAGEUP===s)t.current(null),t.dataSource.page(t.dataSource.page()-1),p(i);else if(l.PAGEDOWN===s)t.current(null),t.dataSource.page(t.dataSource.page()+1),p(i);else if(l.HOME===s)t.current(t._item("first")),p(i);else if(l.END===s)t.current(t._item("last")),p(i);else if(l.ENTER===s)0!==g.length&&(u||h)?(r=t.items().index(g),m&&m.blur(),t.save(),a=function(){t.element.trigger("focus"),t.current(t.items().eq(r))},t.one("dataBound",a)):""!==t.options.editTemplate&&t.edit(c);else if(l.ESC===s){if(g=o.find("."+f),0===g.length)return;r=t.items().index(g),t.cancel(),t.element.trigger("focus"),t.current(t.items().eq(r))}}),o.on(_+k+" "+w+k,c,y(r,t)))},clearSelection:function(){var e=this;e.selectable.clear(),e.trigger(i)},select:function(n){var i=this,o=i.selectable;return n=e(n),n.length?(o.options.multiple||(o.clear(),n=n.first()),o.value(n),t):o.value()},_destroyEditable:function(){var e=this;e.editable&&(e.editable.destroy(),delete e.editable)},_modelFromElement:function(e){var t=e.attr(n.attr("uid"));return this.dataSource.getByUid(t)},_closeEditable:function(){var e,t,i,o=this,r=o.editable,a=o.template;return r&&(r.element.index()%2&&(a=o.altTemplate),o.angular("cleanup",function(){return{elements:[r.element]}}),e=o._modelFromElement(r.element),o._destroyEditable(),i=r.element.index(),r.element.replaceWith(a(e)),t=o.items().eq(i),t.attr(n.attr("uid"),e.uid),o._hasBindingTarget()&&n.bind(t,e),o.angular("compile",function(){return{elements:[t],data:[{dataItem:e}]}})),!0},edit:function(e){var t,i,o=this,r=o._modelFromElement(e),a=r.uid;o.cancel(),e=o.items().filter("["+n.attr("uid")+"="+a+"]"),i=e.index(),e.replaceWith(o.editTemplate(r)),t=o.items().eq(i).addClass(f).attr(n.attr("uid"),r.uid),o.editable=t.kendoEditable({model:r,clearContainer:!1,errorTemplate:!1,target:o}).data("kendoEditable"),o.trigger(g,{model:r,item:t})},save:function(){var e,t,n=this,i=n.editable;i&&(t=i.element,e=n._modelFromElement(t),i.end()&&!n.trigger(v,{model:e,item:t})&&(n._closeEditable(),n.dataSource.sync()))},remove:function(e){var t=this,n=t.dataSource,i=t._modelFromElement(e);t.editable&&(n.cancelChanges(t._modelFromElement(t.editable.element)),t._closeEditable()),t.trigger(m,{model:i,item:e})||(e.hide(),n.remove(i),n.sync())},add:function(){var e,t=this,n=t.dataSource,i=n.indexOf((n.view()||[])[0]);i<0&&(i=0),t.cancel(),e=n.insert(i,{}),t.edit(t.element.find("[data-uid='"+e.uid+"']"))},cancel:function(){var e,t,n=this,i=n.dataSource;n.editable&&(e=n.editable.element,t=n._modelFromElement(e),n.trigger(o,{model:t,container:e})||(i.cancelChanges(t),n._closeEditable()))},_crudHandlers:function(){var t=this,i=_+k,o=w+k,r=b+k;t.element.on(i+" "+o,".k-edit-button",function(i){i.preventDefault();var o=e(this).closest("["+n.attr("uid")+"]");setTimeout(function(){t.edit(o)})}),t.element.on(i+" "+o,".k-delete-button",function(i){i.preventDefault();var o=e(this).closest("["+n.attr("uid")+"]");setTimeout(function(){t.remove(o)})}),t.element.on(r,".k-update-button",function(e){t.save(),e.preventDefault()}),t.element.on(r,".k-cancel-button",function(e){t.cancel(),e.preventDefault()})},destroy:function(){var e=this;s.fn.destroy.call(e),e._unbindDataSource(),e._destroyEditable(),e.element.off(k),e._endlessFetchInProgress=e._endlessPageSize=e._skipRerenderItemsCount=e._focusNext=null,e.pager&&e.pager.destroy(),n.destroy(e.element)}});n.ui.plugin(T)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.listbox.min",["kendo.draganddrop.min","kendo.data.min","kendo.selectable.min"],e)}(function(){return function(e,t){function n(t){var n=e.map(t,function(t){return e(t).index()});return n}function i(e){return t===e}function o(e){return e.clone().removeClass(he).removeClass(q).addClass(b.format("{0} {1} {2}",N,K,j)).width(e.width())}function r(){return e("<li>").addClass(G)}function a(t){return e(t).is(":button,a,:input,a>.k-icon,textarea,span.k-select,span.k-icon,span.k-link,label.k-checkbox-label,.k-input,.k-multiselect-wrap,.k-picker-wrap,.k-picker-wrap>.k-selected-color,.k-tool-icon,.k-dropdown")}var s,l,c,d,u,h,p,f,g,m,v,_,b=window.kendo,w=b.attr,k=b.data,y=b.keys,x=b.template,C=b.ui.Widget,S=k.DataSource,T=b.ui.Selectable,D=b.ui.DataBoundWidget,A=b.Class,E=e.extend,I=e.noop,M=e.proxy,F="-",R=".",P=" ",z="#",B="kendoListBox",L=R+B,H="k-state-disabled",N="k-state-selected",O=".k-item:not(.k-state-disabled)",V=".k-list:not(.k-state-disabled) >"+O,W="k-listbox-toolbar",U="li > a.k-button:not(.k-state-disabled)",q="k-state-focused",j="k-drag-clue",G="k-drop-hint",$="k-reset k-list",Y=".k-reset.k-list",K="k-reset",Q="click"+L,X="keydown"+L,J="blur"+L,Z=b._outerWidth,ee=b._outerHeight,te="change",ne="dataBound",ie="add",oe="remove",re="reorder",ae="moveUp",se="moveDown",le="transferTo",ce="transferFrom",de="transferAllTo",ue="transferAllFrom",he="k-ghost",pe="uid",fe="tabindex",ge="command",me=-1,ve=1,_e="dragstart",be="drag",we="drop",ke="dragend",ye="ul.k-reset.k-list>li.k-item",xe="right",Ce="bottom",Se=[W+F+"left",W+F+xe,W+F+"top",W+F+Ce],Te=D.extend({init:function(e,t){var n=this;C.fn.init.call(n,e,t),n._wrapper(),n._list(),e=n.element.attr("multiple","multiple").hide(),e[0]&&!n.options.dataSource&&(n.options.dataTextField=n.options.dataTextField||"text",n.options.dataValueField=n.options.dataValueField||"value"),n._templates(),n._selectable(),n._dataSource(),n._createToolbar(),n._createDraggable(),n._createNavigatable()},destroy:function(){var e=this;D.fn.destroy.call(e),isNaN(e._listTabIndex)||(e._getList().off(),e._listTabIndex=null),e._unbindDataSource(),e._destroySelectable(),e._destroyToolbar(),e.wrapper.off(L),e._target&&(e._target=null),e._draggable&&(e._draggable.destroy(),e.placeholder=null),b.destroy(e.element)},setOptions:function(e){C.fn.setOptions.call(this,e),this._templates(),this._dataSource()},events:[te,ne,ie,oe,re,_e,be,we,ke],options:{name:"ListBox",autoBind:!0,template:"",dataTextField:"",dataValueField:"",selectable:"single",draggable:null,dropSources:[],connectWith:"",navigatable:!0,toolbar:{position:xe,tools:[]},messages:{tools:{remove:"Delete",moveUp:"Move Up",moveDown:"Move Down",transferTo:"Transfer To",transferFrom:"Transfer From",transferAllTo:"Transfer All To",transferAllFrom:"Transfer All From"}}},add:function(e){var t,n=this,i=e&&e.length?e:[e],o=i.length;for(n._unbindDataSource(),t=0;t<o;t++)n._addItem(i[t]);n._bindDataSource(),n._syncElement()},_addItem:function(t){var n=this,i=n.templates.itemTemplate({item:t,r:n.templates.itemContent});e(i).attr(w(pe),t.uid).appendTo(n._getList()),"string"==typeof t?n.dataSource._data.push(t):n.dataSource.add(t)},_addItemAt:function(t,n){var i=this,o=i.templates.itemTemplate({item:t,r:i.templates.itemContent});i._unbindDataSource(),"string"==typeof t?(i._insertElementAt(o,n),i.dataSource._data.push(t)):(i._insertElementAt(e(o).attr(w(pe),t.uid),n),i.dataSource.add(t)),i._bindDataSource(),i._syncElement()},_insertElementAt:function(t,n){var i=this,o=i._getList();n>0?e(t).insertAfter(o.children().eq(n-1)):e(o).prepend(t)},_createNavigatable:function(){var e=this,t=e.options;t.navigatable&&e._getList().on(Q,O,M(e._click,e)).on(X,M(e._keyDown,e)).on(J,M(e._blur,e))},_getTabIndex:function(){var e,t=this;return isNaN(t._listTabIndex)?(e=t.element.attr(fe),t._listTabIndex=isNaN(e)?0:e,t.element.removeAttr(fe),t._listTabIndex):t._listTabIndex},_blur:function(){this._target&&(this._target.removeClass(q),this._getList().removeAttr("aria-activedescendant")),this._target=null},_click:function(t){var n=this,i=e(t.currentTarget),o=n._target,r=a(t.target);o&&o.removeClass(q),n._target=i,i.addClass(q),n._getList().attr("aria-activedescendant",i.attr("id")),n._getList()[0]===b._activeElement()||r||n.focus()},_getNavigatableItem:function(e){var t,n=this;return t=n._target?n._target:n.items().filter(O).first(),e===y.UP&&n._target&&(t=n._target.prevAll(O).first()),e===y.DOWN&&n._target&&(t=n._target.nextAll(O).first()),t.length?t:null},_scrollIntoView:function(e){var t,n,i,o,r;e&&(e[0]&&(e=e[0]),t=this._getList().parent()[0],n=e.offsetTop,i=t.scrollTop,o=t.clientHeight,r=n+e.offsetHeight,i>n?i=n:r>i+o&&(i=r-o),t.scrollTop=i)},_keyDown:function(e){var n,i=this,o=e.keyCode,r=i._getNavigatableItem(o);if(i._target&&i._target.removeClass(q),(!e.shiftKey||e.ctrlKey||o!==y.DOWN&&o!==y.UP)&&(i._shiftSelecting=!1),o==y.DELETE)i._executeCommand(oe),i._target&&(i._target.removeClass(q),i._getList().removeAttr("aria-activedescendant"),i._target=null),n=!0;else if(o===y.DOWN||o===y.UP){if(!r)return e.preventDefault(),t;if(e.shiftKey&&!e.ctrlKey)i._shiftSelecting||(i.clearSelection(),i._shiftSelecting=!0),i._target&&r.hasClass("k-state-selected")?(i._target.removeClass(N),i.trigger(te)):i.select("single"==i.options.selectable?r:r.add(i._target));else{if(e.shiftKey&&e.ctrlKey)return i._executeCommand(o===y.DOWN?se:ae),i._scrollIntoView(i._target),e.preventDefault(),t;e.shiftKey||e.ctrlKey||("multiple"===i.options.selectable&&i.clearSelection(),i.select(r))}i._target=r,i._target?(i._target.addClass(q),i._scrollIntoView(i._target),i._getList().attr("aria-activedescendant",i._target.attr("id"))):i._getList().removeAttr("aria-activedescendant"),n=!0}else o==y.SPACEBAR?(e.ctrlKey&&i._target?i._target.hasClass(N)?(i._target.removeClass(N),i.trigger(te)):i.select(i._target):(i.clearSelection(),i.select(i._target)),n=!0):e.ctrlKey&&o==y.RIGHT?(i._executeCommand(e.shiftKey?de:le),i._target=i.select().length?i.select():null,n=!0):e.ctrlKey&&o==y.LEFT&&(i._executeCommand(e.shiftKey?ue:ce),n=!0);n&&e.preventDefault()},focus:function(){b.focusElement(this._getList())},_createDraggable:function(){var t,n=this,i=n.options.draggable;if(i){if(t=i.hint,!n.options.selectable)throw Error("Dragging requires selection to be enabled");t||(t=o),n._draggable=new b.ui.Draggable(n.wrapper,{filter:i.filter?i.filter:ye,hint:b.isFunction(t)?t:e(t),dragstart:M(n._dragstart,n),dragcancel:M(n._clear,n),drag:M(n._drag,n),dragend:M(n._dragend,n)})}},_dragstart:function(n){var i=this,o=i.draggedElement=n.currentTarget,a=i.options.draggable.placeholder,s=i.dataItem(o),l={dataItems:s,items:e(o),draggableEvent:n};return i.options.draggable.enabled===!1?(n.preventDefault(),t):(a||(a=r),i.placeholder=e(b.isFunction(a)?a.call(i,o):a),o.is(R+H)?n.preventDefault():i.trigger(_e,l)?n.preventDefault():(i.clearSelection(),i.select(o),o.addClass(he)),t)},_clear:function(){this.draggedElement.removeClass(he),this.placeholder.remove()},_findElementUnderCursor:function(t){var n=b.elementUnderCursor(t),i=t.sender;return(e.contains(i.hint[0],n)||i.hint[0]===n)&&(i.hint.hide(),n=b.elementUnderCursor(t),i.hint.show()),n},_findTarget:function(t){var n,i,o=this,r=o._findElementUnderCursor(t),a=e(r),s=o._getList();return e.contains(s[0],r)?(n=o.items(),r=a.is("li")?r:a.closest("li")[0],i=n.filter(r)[0]||n.has(r)[0],i?(i=e(i),i.hasClass(H)?null:{element:i,listBox:o}):null):s[0]==r||s.parent()[0]==r?{element:e(s),appendToBottom:!0,listBox:o}:o._searchConnectedListBox(a)},_getElementCenter:function(e){var t=e.length?b.getOffset(e):null;return t&&(t.top+=ee(e)/2,t.left+=Z(e)/2),t},_searchConnectedListBox:function(t){var n,i,o,r,a=t;return r=t.hasClass("k-list-scroller k-selectable")?t:t.closest(".k-list-scroller.k-selectable"),r.length?(n=r.parent().find("[data-role='listbox']").getKendoListBox(),n&&e.inArray(this.element[0].id,n.options.dropSources)!==-1?(i=n.items(),t=t.is("li")?t[0]:t.closest("li")[0],o=i.filter(t)[0]||i.has(t)[0],o?(o=e(o),o.hasClass(H)?null:{element:o,listBox:n}):!i.length||a.hasClass("k-list-scroller k-selectable")||a.hasClass("k-reset k-list")?{element:n._getList(),listBox:n,appendToBottom:!0}:null):null):null},_drag:function(n){var i,o,r,a=this,s=a.draggedElement,l=a._findTarget(n),c={left:n.x.location,top:n.y.location},d=a.dataItem(s),u={dataItems:[d],items:e(s),draggableEvent:n};if(a.trigger(be,u))return n.preventDefault(),t;if(l){if(i=this._getElementCenter(l.element),o={left:Math.round(c.left-i.left),top:Math.round(c.top-i.top)},l.appendToBottom)return a._movePlaceholder(l,null,s),t;o.top<0?r="prev":o.top>0&&(r="next"),r&&l.element[0]!=a.placeholder[0]&&a._movePlaceholder(l,r,s)}else a.placeholder.parent().length&&a.placeholder.remove()},_movePlaceholder:function(t,n,i){var o=this,a=o.placeholder,s=t.listBox.options.draggable;a.parent().length&&(o.placeholder.remove(),o.placeholder=e(s&&s.placeholder?b.isFunction(s.placeholder)?s.placeholder.call(o,i):s.placeholder:r.call(o,i))),n?"prev"===n?t.element.before(o.placeholder):"next"===n&&t.element.after(o.placeholder):t.element.append(o.placeholder)},_dragend:function(n){var i=this,o=i.draggedElement,r=i.items(),a=r.not(i.draggedElement).index(i.placeholder),s=r.not(i.placeholder).index(i.draggedElement),l=i.dataItem(o),c={dataItems:[l],items:e(o)},d=i.placeholder.closest(".k-widget.k-listbox").find("[data-role='listbox']").getKendoListBox();return i.trigger(we,E({},c,{draggableEvent:n}))?(n.preventDefault(),this._clear(),t):(a>=0?a===s||i.trigger(re,E({},c,{offset:a-s}))||(o.removeClass(he),i.reorder(o,a)):d&&(i.trigger(oe,c)||i.remove(e(o)),d.trigger(ie,c)||d._addItemAt(l,d.items().index(i.placeholder))),i._clear(),i._draggable.dropped=!0,i.trigger(ke,E({},c,{draggableEvent:n})),i._updateToolbar(),i._updateAllToolbars(),t)},reorder:function(t,n){var i=this,o=i.dataSource,r=i.dataItem(t),a=o.at(n),s=i.items()[n],l=e(t);r&&s&&a&&(i._removeElement(l),i._insertElementAt(l,n),i._updateToolbar())},remove:function(t){var n,i=this,o=i._getItems(t),r=o.length;for(i._unbindDataSource(),n=0;n<r;n++)i._removeItem(e(o[n]));i._bindDataSource(),i._syncElement(),i._updateToolbar(),i._updateAllToolbars()},_removeItem:function(e){var t,n,i=this,o=i.dataSource,r=i.dataItem(e);if(r&&o){if("string"==typeof r){for(t=o._data,n=0;n<t.length;n++)if(r===t[n]){t[n]=t[t.length-1],t.pop();break}}else o.remove(r);i._removeElement(e)}},_removeElement:function(t){b.destroy(t),e(t).off().remove()},dataItem:function(t){var n=w(pe),i=e(t).attr(n)||e(t).closest("["+n+"]").attr(n);return i?this.dataSource.getByUid(i):e(t).html()},_dataItems:function(t){var n,i=[],o=e(t),r=o.length;for(n=0;n<r;n++)i.push(this.dataItem(o.eq(n)));return i},items:function(){var e=this._getList();return e.children()},select:function(e){var t,n=this,o=n.selectable;return i(e)?o.value():(t=n.items().filter(e).filter(V),o.options.multiple||(o.clear(),t=t.first()),o.value(t))},clearSelection:function(){var e=this,t=e.selectable;t&&t.clear()},enable:function(t,n){var o,r=this,a=!!i(n)||!!n,s=r._getItems(t),l=s.length;for(o=0;o<l;o++)r._enableItem(e(s[o]),a);r._updateAllToolbars()},_enableItem:function(t,n){var i=this,o=i.dataItem(t);o&&(n?e(t).removeClass(H):e(t).addClass(H).removeClass(N))},setDataSource:function(e){var t=this;t.options.dataSource=e,t._dataSource()},_dataSource:function(){var t=this,n=t.options,i=n.dataSource||{};i=e.isArray(i)?{data:i}:i,i.select=t.element,i.fields=[{field:n.dataTextField},{field:n.dataValueField}],t._unbindDataSource(),t.dataSource=S.create(i), +t._bindDataSource(),t.options.autoBind&&t.dataSource.fetch()},_bindDataSource:function(){var e=this,t=e.dataSource;e._dataChangeHandler=M(e.refresh,e),t&&t.bind(te,e._dataChangeHandler)},_unbindDataSource:function(){var e=this,t=e.dataSource;t&&t.unbind(te,e._dataChangeHandler)},_wrapper:function(){var t=this,n=t.element,i=n.parent("div.k-listbox");i[0]||(i=n.wrap('<div class="k-widget k-listbox" unselectable="on" />').parent(),i[0].style.cssText=n[0].style.cssText,i[0].title=n[0].title,e('<div class="k-list-scroller" />').insertBefore(n)),t.wrapper=i.addClass(n[0].className).css("display",""),t._innerWrapper=e(i[0].firstChild)},_list:function(){var t=this;e("<ul class='"+$+"' role='listbox'></ul>").appendTo(t._innerWrapper),t.options.navigatable&&t._getList().attr(fe,t._getTabIndex())},_templates:function(){var e,t=this,n=this.options;e=n.template&&"string"==typeof n.template?b.template(n.template):n.template?n.template:b.template("${"+b.expr(n.dataTextField,"data")+"}",{useWithBlock:!1}),t.templates={itemTemplate:b.template("# var item = data.item, r = data.r; # <li class='k-item' role='option' aria-selected='false'>#=r(item)#</li>",{useWithBlock:!1}),itemContent:e,toolbar:"<div class='"+W+"'></div>"}},refresh:function(){var e,t=this,n=t.dataSource.view(),i=t.templates.itemTemplate,o="";for(e=0;e<n.length;e++)o+=i({item:n[e],r:t.templates.itemContent});t._getList().html(o),t._setItemIds(),t._createToolbar(),t._syncElement(),t._updateToolbar(),t._updateAllToolbars(),t.trigger(ne)},_syncElement:function(){var e,t="",n=this.dataSource.view();for(e=0;e<n.length;e++)t+=this._option(n[e][this.options.dataValueField]||n[e],n[e][this.options.dataTextField]||n[e],!0);this.element.html(t)},_option:function(e,n){var i="<option";return e!==t&&(e+="",e.indexOf('"')!==-1&&(e=e.replace(/"/g,""")),i+=' value="'+e+'"'),i+=" selected>",n!==t&&(i+=b.htmlEncode(n)),i+="</option>"},_setItemIds:function(){var e,t=this,n=t.items(),i=t.dataSource.view(),o=i.length;for(e=0;e<o;e++)n.eq(e).attr(w(pe),i[e].uid).attr("id",i[e].uid)},_selectable:function(){var e=this,t=e.options.selectable,n=T.parseOptions(t);n.multiple&&e.element.attr("aria-multiselectable","true"),e.selectable=new T(e._innerWrapper,{aria:!0,multiple:n.multiple,filter:O,change:M(e._onSelect,e)})},_onSelect:function(){var e=this;e._updateToolbar(),e._updateAllToolbars(),e.trigger(te)},_destroySelectable:function(){var e=this;e.selectable&&e.selectable.element&&(e.selectable.destroy(),e.selectable=null)},_getList:function(){return this.wrapper.find(Y)},_getItems:function(e){return this.items().filter(e)},_createToolbar:function(){var t,n=this,i=n.options.toolbar,o=i.position||xe,r=o===Ce?"insertAfter":"insertBefore",a=i.tools||[],s=n.options.messages;n._destroyToolbar(),n.wrapper.removeClass(Se.join(P)),a.length&&a.length>0&&(t=e(n.templates.toolbar)[r](n._innerWrapper),n.toolbar=new _(t,E({},i,{listBox:n,messages:s})),n.wrapper.addClass(W+F+o))},_destroyToolbar:function(){var e=this;e.toolbar&&(e.toolbar.destroy(),e.toolbar=null)},_executeCommand:function(e){var t=this,n=s.current.create(e,{listBox:t});n&&(n.execute(),t._updateToolbar(),t._updateAllToolbars())},_updateToolbar:function(){var e=this.toolbar;e&&e._updateToolStates()},_updateAllToolbars:function(){var t,n,i=e("select[data-role='listbox']"),o=i.length;for(n=0;n<o;n++)t=e(i[n]).data(B),t&&t._updateToolbar()}});b.ui.plugin(Te),s=A.extend({init:function(){this._commands=[]},register:function(e,t){this._commands.push({commandName:e,commandType:t})},create:function(e,t){var n,i,o,r=this._commands,a=r.length,s=e?e.toLowerCase():"";for(o=0;o<a;o++)if(i=r[o],i.commandName.toLowerCase()===s){n=i;break}if(n)return new n.commandType(t)}}),s.current=new s,l=A.extend({init:function(e){var t=this;t.options=E({},t.options,e),t.listBox=t.options.listBox},options:{listBox:null},getItems:function(){return e(this.listBox.select())},execute:I,canExecute:I}),c=l.extend({execute:function(){var e=this,t=e.listBox,n=e.getItems();t.trigger(oe,{dataItems:t._dataItems(n),items:n})||t.remove(n)},canExecute:function(){return this.listBox.select().length>0}}),s.current.register(oe,c),d=l.extend({execute:function(){var e=this;e.canExecute()&&e.moveItems()},canExecute:I,moveItems:function(){var t,i=this,o=i.listBox,r=i.options,a=i.getItems(),s=r.offset,l=n(a),c=e.makeArray(a.sort(i.itemComparer)),d=r.moveAction;if(!o.trigger(re,{dataItems:o._dataItems(c),items:e(c),offset:s}))for(;c.length>0&&l.length>0;)t=c[d](),o.reorder(t,l[d]()+s)},options:{offset:0,moveAction:"pop"},itemComparer:function(t,n){var i=e(t).index(),o=e(n).index();return i===o?0:i>o?1:-1}}),u=d.extend({options:{offset:me,moveAction:"shift"},canExecute:function(){var e=this.getItems(),t=n(e);return t.length>0&&t[0]>0}}),s.current.register(ae,u),h=d.extend({options:{offset:ve,moveAction:"pop"},canExecute:function(){var t=this,i=t.getItems(),o=n(i);return o.length>0&&e(o).last()[0]<t.listBox.items().length-1}}),s.current.register(se,h),p=l.extend({options:{filter:O},execute:function(){var e=this,t=e.getSourceListBox(),n=e.getItems().filter(e.options.filter),i=t?t._dataItems(n):[],o=e.getDestinationListBox(),r=e.getUpdatedSelection(n);o&&n.length>0&&(o.trigger(ie,{dataItems:i,items:n})||o.add(i),t.trigger(oe,{dataItems:i,items:n})||(t.remove(n),e.updateSelection(r)))},getUpdatedSelection:function(t){var n=this,i=n.options.filter,o=n.getSourceListBox(),r=o?o.items().filter(i).last():null,a=e(t).filter(r).length>0,s=a?e(t).prevAll(i)[0]:e(t).nextAll(i)[0];return 1===e(t).length&&s?s:null},updateSelection:function(t){var n=this.getSourceListBox();n&&t&&(e(n.select(e(t))),n._scrollIntoView(t))},getSourceListBox:I,getDestinationListBox:I}),f=p.extend({canExecute:function(){var e=this.getSourceListBox();return!!e&&e.select().length>0},getSourceListBox:function(){return this.listBox},getDestinationListBox:function(){var t=this.getSourceListBox();return t&&t.options.connectWith?e(z+t.options.connectWith).data(B):null},getItems:function(){var t=this.getSourceListBox();return t?e(t.select()):e()}}),s.current.register(le,f),g=p.extend({canExecute:function(){var e=this.getSourceListBox();return!!e&&e.select().length>0},getSourceListBox:function(){var t=this.getDestinationListBox();return t&&t.options.connectWith?e(z+t.options.connectWith).data(B):null},getDestinationListBox:function(){return this.listBox},getItems:function(){var t=this.getSourceListBox();return t?e(t.select()):e()}}),s.current.register(ce,g),m=f.extend({canExecute:function(){var e=this.getSourceListBox();return!!e&&e.items().filter(O).length>0},getItems:function(){var t=this.getSourceListBox();return t?t.items():e()},getUpdatedSelection:I,updateSelection:I}),s.current.register(de,m),v=g.extend({canExecute:function(){var e=this.getSourceListBox();return!!e&&e.items().filter(O).length>0},getItems:function(){var t=this.getSourceListBox();return t?t.items():e()},getUpdatedSelection:I,updateSelection:I}),s.current.register(ue,v),_=A.extend({init:function(t,n){var i=this;i.element=e(t).addClass(W),i.options=E({},i.options,n),i.listBox=i.options.listBox,i._initTemplates(),i._createTools(),i._updateToolStates(),i._attachEventHandlers()},destroy:function(){var e=this;e._detachEventHandlers(),b.destroy(e.element),e.element.remove(),e.element=null},options:{position:xe,tools:[]},_initTemplates:function(){this.templates={tool:x("<li><a href='\\\\#' class='k-button k-button-icon' data-command='#= command #' title='#= text #' aria-label='#= text #' role='button'><span class='k-icon #= iconClass #'></span></a></li>")}},_createTools:function(){var t,n,i=this,o=i.options.tools,r=o.length,a=i.options.messages.tools,s=i._createToolList();for(n=0;n<r;n++)t=E({},_.defaultTools[o[n]],{text:a[o[n]]}),t&&s.append(e(i.templates.tool(t)));i.element.append(s)},_createToolList:function(){return e("<ul class='k-reset' />")},_attachEventHandlers:function(){var e=this;e.element.on(Q,U,M(e._onToolClick,e))},_detachEventHandlers:function(){this.element.off(L).find("*").off(L)},_onToolClick:function(t){t.preventDefault(),this._executeToolCommand(e(t.currentTarget).data(ge))},_executeToolCommand:function(e){var t=this,n=t.listBox;n&&n._executeCommand(e)},_updateToolStates:function(){var e,t=this,n=t.options.tools,i=n.length;for(e=0;e<i;e++)t._updateToolState(n[e])},_updateToolState:function(t){var n=this,i=s.current.create(t,{listBox:n.listBox}),o=n.element.find("[data-command='"+t+"']")[0];o&&i&&i.canExecute&&(i.canExecute()?e(o).removeClass(H).removeAttr(fe):e(o).addClass(H).attr(fe,"-1"))}}),_.defaultTools={remove:{command:oe,iconClass:"k-i-x"},moveUp:{command:ae,iconClass:"k-i-arrow-60-up"},moveDown:{command:se,iconClass:"k-i-arrow-60-down"},transferTo:{command:le,iconClass:"k-i-arrow-60-right"},transferFrom:{command:ce,iconClass:"k-i-arrow-60-left"},transferAllTo:{command:de,iconClass:"k-i-arrow-double-60-right"},transferAllFrom:{command:ue,iconClass:"k-i-arrow-double-60-left"}},E(Te,{ToolBar:_})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.upload.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(t){return e.map(i(t),function(e){return e.name}).join(", ")}function i(e){var t=e[0];return t.files?o(t.files):[{name:s(t.value),extension:a(t.value),size:null}]}function o(t){return e.map(t,function(e){return r(e)})}function r(e){var t=e.name||e.fileName;return{name:C.htmlEncode(t),extension:a(t),size:"number"==typeof e.size?e.size:e.fileSize,rawFile:e}}function a(e){var t=e.match(A);return t?t[0]:""}function s(e){var t=e.lastIndexOf("\\");return t!=-1?e.substr(t+1):e}function l(t,n){var i=C.guid();return e.map(t,function(e){return e.uid=n?C.guid():i,e})}function c(e,t){var n,i=d(t.allowedExtensions),o=t.maxFileSize,r=t.minFileSize;for(n=0;n<e.length;n++)u(e[n],i),h(e[n],r,o)}function d(t){var n=e.map(t,function(e){var t="."===e.substring(0,1)?e:"."+e;return t.toLowerCase()});return n}function u(t,n){n.length>0&&n.indexOf(t.extension.toLowerCase())<0&&(t.validationErrors=t.validationErrors||[],e.inArray(q,t.validationErrors)===-1&&t.validationErrors.push(q))}function h(t,n,i){0!==n&&t.size<n&&(t.validationErrors=t.validationErrors||[],e.inArray(U,t.validationErrors)===-1&&t.validationErrors.push(U)),0!==i&&t.size>i&&(t.validationErrors=t.validationErrors||[],e.inArray(W,t.validationErrors)===-1&&t.validationErrors.push(W))}function p(e){var t,n=0;if("number"!=typeof e[0].size)return"";for(t=0;t<e.length;t++)e[t].size&&(n+=e[t].size);return n/=1024,n<1024?n.toFixed(2)+" KB":(n/1024).toFixed(2)+" MB"}function f(t){return!t.multiple&&e(".k-file",t.wrapper).length>1}function g(n,i,o,r){var a,s;return i._supportsRemove()?(a=n.data("fileNames"),s=e.map(a,function(e){return e.name}),r===!1?(i._removeFileEntry(n),t):(i._submitRemove(s,o,function(e,t,o){var r=i.trigger(F,{operation:"remove",files:a,response:e,XMLHttpRequest:o});r||i._removeFileEntry(n)},function(e){f(i)&&i._removeFileEntry(n),i.trigger(R,{operation:"remove",files:a,XMLHttpRequest:e}),D("Server response: "+e.responseText)}),t)):(!f(i)&&r||i._removeFileEntry(n),t)}function m(t,n,i){var o=!1,r="";try{r=e.parseJSON(v(t)),o=!0}catch(a){i()}o&&n(r)}function v(e){return t!==e&&""!==e||(e="{}"),e}function _(e){e.stopPropagation(),e.preventDefault()}function b(e,t,n,i){var o,r;e.on("dragenter"+t,function(e){n(e),r=new Date,o||(o=setInterval(function(){var e=new Date-r;e>100&&(i(),clearInterval(o),o=null)},100))}).on("dragover"+t,function(){r=new Date})}function w(e){return e.is(".k-file-progress, .k-file-success, .k-file-error")}function k(t){return e(t.target).closest(".k-file")}var y,x,C=window.kendo,S=C.ui.Widget,T=C.antiForgeryTokens,D=C.logToConsole,A=/\.([^\.]+)$/,E=".kendoUpload",I="select",M="upload",F="success",R="error",P="complete",z="cancel",B="clear",L="pause",H="resume",N="progress",O="remove",V="validationErrors",W="invalidMaxFileSize",U="invalidMinFileSize",q="invalidFileExtension",j=1e3,G=2e3,$={loading:"k-i-loading",warning:"k-i-warning",success:"k-i-check"},Y=S.extend({init:function(t,n){var i,o,r,a=this;S.fn.init.call(a,t,n),a.name=t.name,a.multiple=a.options.multiple,a.directory=a.options.directory,a.localization=a.options.localization,i=a.element,a.wrapper=i.closest(".k-upload"),0===a.wrapper.length&&(a.wrapper=a._wrapInput(i)),a._activeInput(i),a.toggle(a.options.enabled),o=a._ns=E+"-"+C.guid(),i.closest("form").on("submit"+o,e.proxy(a._onParentFormSubmit,a)).on("reset"+o,e.proxy(a._onParentFormReset,a)),a.options.async.saveUrl?(a._module=a._supportsFormData()?new x(a):new y(a),a._async=!0,r=a.options.files,r.length>0&&a._renderInitialFiles(r)):a._module=new K(a),a._supportsDrop()&&(""!==a.options.dropZone?a._setupCustomDropZone():a._setupDropZone()),a.wrapper.on("click",".k-upload-action",e.proxy(a._onFileAction,a)).on("click",".k-clear-selected",e.proxy(a._onClearSelected,a)).on("click",".k-upload-selected",e.proxy(a._onUploadSelected,a)),a.element.val()&&a._onInputChange({target:a.element})},events:[I,M,F,R,P,z,B,N,O,L,H],options:{name:"Upload",enabled:!0,multiple:!0,directory:!1,showFileList:!0,template:"",files:[],async:{autoRetryAfter:0,bufferChunkSize:1e7,maxAutoRetries:1,removeVerb:"POST",autoUpload:!0,withCredentials:!0,accept:"*/*; q=0.5, application/json",useArrayBuffer:!1},localization:{select:"Select files...",cancel:"Cancel",retry:"Retry",remove:"Remove",pause:"Pause",resume:"Resume",clearSelectedFiles:"Clear",uploadSelectedFiles:"Upload",dropFilesHere:"Drop files here to upload",invalidFiles:"Invalid file(s). Please check file upload requirements.",statusUploading:"uploading",statusUploaded:"uploaded",statusWarning:"warning",statusFailed:"failed",headerStatusUploading:"Uploading...",headerStatusPaused:"Paused",headerStatusUploaded:"Done",invalidMaxFileSize:"File size too large.",invalidMinFileSize:"File size too small.",invalidFileExtension:"File type not allowed."},validation:{allowedExtensions:[],maxFileSize:0,minFileSize:0},dropZone:""},setOptions:function(e){var t=this,n=t.element;S.fn.setOptions.call(t,e),t.multiple=t.options.multiple,t.directory=t.options.directory,n.attr("multiple",!!t._supportsMultiple()&&t.multiple),t.directory&&(n.attr("webkitdirectory",t.directory),n.attr("directory",t.directory)),t.toggle(t.options.enabled)},enable:function(e){e=t===e||e,this.toggle(e)},disable:function(){this.toggle(!1)},toggle:function(e){e=t===e?e:!e,this.wrapper.toggleClass("k-state-disabled",e),this.element.prop("disabled",e)},focus:function(){this.element.focus()},destroy:function(){var t=this,n=e(t.options.dropZone);e(document).add(e(".k-dropzone",t.wrapper)).add(t.wrapper.closest("form")).off(t._ns),n.length>0&&n.off(t._ns),e(t.element).off(E),S.fn.destroy.call(t)},pause:function(t){this._module.onPause({target:e(t,this.wrapper)});var n=t.find(".k-i-pause-sm");n.removeClass("k-i-pause-sm").addClass("k-i-play-sm").attr("title",this.localization.resume),e(n).parent().attr("aria-label",this.localization.resume)},resume:function(t){this._module.onResume({target:e(t,this.wrapper)});var n=t.find(".k-i-play-sm");n.removeClass("k-i-play-sm").addClass("k-i-pause-sm").attr("title",this.localization.pause),e(n).parent().attr("aria-label",this.localization.pause)},upload:function(){var e=this;e._module.onSaveSelected()},getFiles:function(){var t,n,i,o=this,r=[],a=o.wrapper.find(".k-file");for(n=0;n<a.length;n++)if(t=e(a[n]).data("fileNames"))for(i=0;i<t.length;i++)r.push(t[i]);return r},clearAllFiles:function(){var e=this,t=e.wrapper.find(".k-file");t.each(function(t,n){e._removeFileByDomElement(n,!1)})},removeAllFiles:function(){var e=this,t=e.wrapper.find(".k-file");t.each(function(t,n){e._removeFileByDomElement(n,!0)})},removeFileByUid:function(e){this._removeFileByUid(e,!0)},clearFileByUid:function(e){this._removeFileByUid(e,!1)},_removeFileByUid:function(t,n){var i,o=this;"string"==typeof t&&(i=e(".k-file["+C.attr("uid")+'="'+t+'"]',o.wrapper),i.length>0&&o._removeFileByDomElement(i,n))},clearFile:function(e){this._removeFile(e,!1)},removeFile:function(e){this._removeFile(e,!0)},_removeFile:function(t,n){var i,o=this,r=o.wrapper.find(".k-file");"function"==typeof t&&r.each(function(r,a){i=e(a).data("fileNames"),t(i)&&o._removeFileByDomElement(a,n)})},_removeFileByDomElement:function(t,n){var i,o=this,r={target:e(t,o.wrapper)};o.options.async.saveUrl?(e(t).hasClass("k-file-progress")?o._module.onCancel(r):o._module.onRemove(r,{},n),i=e(".k-file",o.wrapper),0===i.length?o._hideHeaderUploadstatus():o._updateHeaderUploadStatus()):o._module.onRemove(r,{},n)},_addInput:function(t){if(t[0].nodeType){var n=this,i=t.clone().val("");i.insertAfter(n.element).data("kendo"+n.options.prefix+n.options.name,n),e(n.element).hide().attr("tabindex","-1").removeAttr("id").off(E),n._activeInput(i),n.element.focus()}},_activeInput:function(t){var n=this,i=n.wrapper;n.element=t,n.directory&&(t.attr("webkitdirectory",n.directory),t.attr("directory",n.directory)),t.attr("multiple",!!n._supportsMultiple()&&n.multiple).attr("autocomplete","off").on("click"+E,function(e){i.hasClass("k-state-disabled")&&e.preventDefault()}).on("focus"+E,function(){e(this).parent().addClass("k-state-focused")}).on("blur"+E,function(){e(this).parent().removeClass("k-state-focused")}).on("change"+E,e.proxy(n._onInputChange,n)).on("keydown"+E,e.proxy(n._onInputKeyDown,n))},_onInputKeyDown:function(e){var t=this,n=t.wrapper.find(".k-upload-action:visible:first");e.keyCode===C.keys.TAB&&n.length>0&&!e.shiftKey&&(e.preventDefault(),n.focus())},_onInputChange:function(t){var n,i=this,o=e(t.target),r=l(i._inputFiles(o),i._isAsyncNonBatch());c(r,i.options.validation),n=i.trigger(I,{files:r}),n?(i._addInput(o),o.remove()):i._module.onSelect({target:o},r)},_readDirectory:function(t){var n=new e.Deferred,i=t.createReader(),o=[],r=function(){i.readEntries(function(e){e.length?(o=o.concat(e),r()):n.resolve(o)},n.reject)};return r(),n.promise()},_readFile:function(e){var t=this,n=e.fullPath;e.file(function(e){e.relativePath=n.slice(1),t.droppedFolderFiles.push(e),t.droppedFolderCounter--,0===t.droppedFolderCounter&&setTimeout(function(){0===t.droppedFolderCounter&&t.droppedFolderFiles.length&&(t._proceedDroppedItems(t.droppedFolderFiles),t.droppedFolderFiles=[])},0)},function(){D("File error.")})},_traverseFileTree:function(e,t){var n=this;t||n.droppedFolderCounter--,this._readDirectory(e).then(function(e){n.droppedFolderCounter+=e.length;for(var t=0;t<e.length;t++)e[t].isFile?n._readFile(e[t]):e[t].isDirectory&&n._traverseFileTree(e[t])})},_onDrop:function(e){var t,n,i,o=e.originalEvent.dataTransfer,r=this,a=o.files;if(_(e),r.options.directoryDrop&&o.items)for(t=o.items.length,r.droppedFolderCounter=0,r.droppedFolderFiles=[],n=0;n<t;n++)o.items[n].webkitGetAsEntry?(i=o.items[n].webkitGetAsEntry(),i.isDirectory?r._traverseFileTree(i,!0):i.isFile&&r.droppedFolderFiles.push(o.files[n])):r._proceedDroppedItems(a);else r._proceedDroppedItems(a)},_proceedDroppedItems:function(t){var n,i=this,r=l(o(t),i._isAsyncNonBatch());t.length>0&&!i.wrapper.hasClass("k-state-disabled")&&(!i.multiple&&r.length>1&&r.splice(1,r.length-1),c(r,i.options.validation),n=i.trigger(I,{files:r}),n||i._module.onSelect({target:e(".k-dropzone",i.wrapper)},r))},_filesContainValidationErrors:function(t){var n=!1;return e(t).each(function(e,t){if(t[V]&&t[V].length>0)return n=!0,!1}),n},_isAsyncNonBatch:function(){return this._async&&!this.options.async.batch||!1},_renderInitialFiles:function(e){var t,n,i=this,o=0;for(e=l(e,!0),o=0;o<e.length;o++)t=e[o],n=i._enqueueFile(t.name,{fileNames:[t]}),n.addClass("k-file-success").data("files",[e[o]]),i._supportsRemove()&&i._fileAction(n,O)},_prepareTemplateData:function(e,t){var n=t.fileNames,i={},o=0,r=0;for(r=0;r<n.length;r++)o+=n[r].size;return i.name=e,i.size=o,i.files=t.fileNames,i},_prepareDefaultSingleFileEntryTemplate:function(t){var n=this,i=t.fileNames[0],o=p(t.fileNames),r=i[V],a="";return a+=r&&r.length>0?"<li class='k-file k-file-invalid'><span class='k-progress'></span><span class='k-file-invalid-extension-wrapper'><span class='k-file-invalid-icon'>!</span><span class='k-file-state'></span></span><span class='k-file-name-size-wrapper'><span class='k-file-name k-file-name-invalid' title='"+i.name+"'>"+i.name+"</span><span class='k-file-validation-message'>"+n.localization[r[0]]+"</span></span>":"<li class='k-file'><span class='k-progress'></span><span class='k-file-extension-wrapper'><span class='k-file-extension'>"+i.extension.substring(1)+"</span><span class='k-file-state'></span></span><span class='k-file-name-size-wrapper'><span class='k-file-name' title='"+i.name+"'>"+i.name+"</span><span class='k-file-size'>"+o+"</span></span>",a+="<strong class='k-upload-status'></strong>",e(a)},_prepareDefaultMultipleFileEntriesTemplate:function(t){var n,i,o=this,r=t.fileNames,a=o._filesContainValidationErrors(r),s=p(r),l="";for(l+=a?"<li class='k-file k-file-invalid'><span class='k-progress'></span><span class='k-multiple-files-invalid-extension-wrapper'><span class='k-file-invalid-icon'>!</span>":"<li class='k-file'><span class='k-progress'></span><span class='k-multiple-files-extension-wrapper'>",l+="<span class='k-file-state'></span></span>",r.sort(function(e,t){return e[V]?-1:t[V]?1:0}),l+="<span class='k-file-name-size-wrapper'>",n=0;n<r.length;n++)i=r[n],l+=i[V]&&i[V].length>0?"<span class='k-file-name k-file-name-invalid' title='"+i.name+"'>"+i.name+"</span>":"<span class='k-file-name' title='"+i.name+"'>"+i.name+"</span>";return l+=a?"<span class='k-file-validation-message'>"+o.localization.invalidFiles+"</span>":"<span class='k-file-information'>Total: "+r.length+" files, "+s+"</span>",l+="</span><strong class='k-upload-status'></strong>",e(l)},_enqueueFile:function(t,n){var i,o,r,a,s=this,l=n.fileNames[0].uid,c=e(".k-upload-files",s.wrapper),d=s.options,u=d.template;return 0===c.length&&(c=e("<ul class='k-upload-files k-reset'></ul>").appendTo(s.wrapper),s.options.showFileList||c.hide(),s.wrapper.removeClass("k-upload-empty")),i=e(".k-file",c),u?(r=s._prepareTemplateData(t,n),u=C.template(u),o=e("<li class='k-file'>"+u(r)+"</li>"),o.find(".k-upload-action").addClass("k-button"),s.angular("compile",function(){return{elements:o,data:[r]}})):o=1===n.fileNames.length?s._prepareDefaultSingleFileEntryTemplate(n):s._prepareDefaultMultipleFileEntriesTemplate(n),o.attr(C.attr("uid"),l).appendTo(c).data(n),s._async||e(".k-progress",o).width("100%"),!s.multiple&&i.length>0&&(a={files:i.data("fileNames"),headers:{}},s.trigger(O,a)||s._module.onRemove({target:e(i,s.wrapper)},a)),o},_removeFileEntry:function(t){var n,i,o,r=this,a=t.closest(".k-upload-files");t.remove(),n=e(".k-file",a),i=e(".k-file-success, .k-file-error",a),o=e(".k-file-invalid",a),i.length!==n.length&&o.length!==n.length||this._hideUploadButton(),0===n.length?(a.remove(),r.wrapper.addClass("k-upload-empty"),r._hideHeaderUploadstatus()):r._updateHeaderUploadStatus()},_fileAction:function(e,t,n){var i,o={remove:"k-i-x",cancel:"k-i-cancel",retry:"k-i-retry",pause:"k-i-pause-sm"},r={remove:"k-i-close",cancel:"k-i-close",retry:"k-i-reload-sm",pause:"k-i-pause-sm"};o.hasOwnProperty(t)&&(n||this._clearFileAction(e),this.options.template?(i=e.find(".k-upload-action").first(),i.find(".k-icon").length?i.next(".k-upload-action").length&&i.next(".k-upload-action").addClass("k-button").append("<span class='k-icon "+r[t]+" "+o[t]+"' title='"+this.localization[t]+"'aria-label='"+this.localization[t]+"'></span>").show():i.addClass("k-button").append("<span class='k-icon "+r[t]+" "+o[t]+"' title='"+this.localization[t]+"'aria-label='"+this.localization[t]+"'></span>").show()):(n||e.find(".k-upload-status .k-upload-action").remove(),e.find(".k-upload-status").append(this._renderAction(o[t],this.localization[t],r[t]))))},_fileState:function(t,n){var i=this.localization,o={uploading:{text:i.statusUploading},uploaded:{text:i.statusUploaded},failed:{text:i.statusFailed}},r=o[n];r&&e("span.k-file-state",t).text(r.text)},_renderAction:function(t,n,i){return""!==t?e("<button type='button' class='k-button k-upload-action' aria-label='"+n+"'><span class='k-icon "+i+" "+t+"' title='"+n+"'></span></button>").on("focus",function(){e(this).addClass("k-state-focused")}).on("blur",function(){e(this).removeClass("k-state-focused")}):e("<button type='button' class='k-button'>"+n+"</button>")},_clearFileAction:function(t){e(".k-upload-action",t).empty().hide()},_onFileAction:function(t){var n,i,o,r,a,s,l=this;return l.wrapper.hasClass("k-state-disabled")||(n=e(t.target).closest(".k-upload-action"),i=n.find(".k-icon"),o=n.closest(".k-file"),r=o.data("fileNames"),a=l._filesContainValidationErrors(r),s={files:r,headers:{}},l._retryClicked=!1,i.hasClass("k-i-x")?l.trigger(O,s)||l._module.onRemove({target:e(o,l.wrapper)},s,!a):i.hasClass("k-i-cancel")?(l.trigger(z,s),l._module.onCancel({target:e(o,l.wrapper)}),l._checkAllComplete(),l._updateHeaderUploadStatus()):i.hasClass("k-i-pause-sm")?(l.trigger(L,s),l.pause(o),l._updateHeaderUploadStatus()):i.hasClass("k-i-play-sm")?(l.trigger(H,s),l.resume(o)):i.hasClass("k-i-retry")&&(e(".k-i-warning",o).remove(),e(".k-progress",o).finish().show(),l._module.onRetry({target:e(o,l.wrapper)}),l._retryClicked=!0)),!1},_onUploadSelected:function(){var e=this,t=e.wrapper;return t.hasClass("k-state-disabled")||this._module.onSaveSelected(),!1},_onClearSelected:function(){var e=this,t=e.wrapper,n={};return t.hasClass("k-state-disabled")||e.trigger(B,n)||e.clearAllFiles(),!1},_onFileProgress:function(t,n){var i,o;n>100&&(n=100),this.options.template?e(".k-progress",t.target).width(n+"%"):(i=e(".k-upload-pct",t.target),o=e(".k-i-warning",t.target),o.length?o.removeClass("k-i-warning").removeClass("k-icon").addClass("k-upload-pct"):0===i.length&&e(".k-upload-status",t.target).prepend("<span class='k-upload-pct'></span>"),100!==n?e(".k-upload-pct",t.target).text(n+"%"):e(".k-upload-pct",t.target).remove(),e(".k-progress",t.target).width(n+"%")),this.trigger(N,{files:k(t).data("fileNames"),percentComplete:n})},_onUploadSuccess:function(e,t,n){var i=this,o=k(e),r=i.trigger(F,{files:o.data("fileNames"),response:t,operation:"upload",XMLHttpRequest:n});r?i._setUploadErrorState(o):(i._fileState(o,"uploaded"),o.removeClass("k-file-progress").addClass("k-file-success"),i._updateHeaderUploadStatus(),i._supportsRemove()?i._fileAction(o,O):i._clearFileAction(o)),i._hideUploadProgress(o),i._checkAllComplete()},_onUploadError:function(e,t){var n=this,i=n._module,o=k(e),r=o.data("uid");n._setUploadErrorState(o),n.trigger(R,{operation:"upload",files:o.data("fileNames"),XMLHttpRequest:t}),D("Server response: "+t.responseText),n.options.async.chunkSize?i._decreasePosition&&i._decreasePosition(r):n._hideUploadProgress(o),n._checkAllComplete(),this.options.async.autoRetryAfter&&this._autoRetryAfter(o)},_autoRetryAfter:function(e){var t=this,n=this._module.retries;n&&(n[e.data("uid")]||(n[e.data("uid")]=1),n[e.data("uid")]<=this.options.async.maxAutoRetries&&(n[e.data("uid")]++,setTimeout(function(){t._module.performUpload(e)},this.options.async.autoRetryAfter)))},_setUploadErrorState:function(t){var n,i=this;i._fileState(t,"failed"),t.removeClass("k-file-progress").addClass("k-file-error"),i._updateUploadProgress(t),n=e(".k-upload-pct",t),n.length>0?(n.parent().find(".k-i-warning").length||n.removeClass("k-upload-pct").addClass("k-icon k-i-warning"),n.empty()):e(".k-upload-status",t).prepend("<span class='k-icon k-i-warning'></span>"),this._updateHeaderUploadStatus(),this._fileAction(t,"retry"),this._fileAction(t,O,!0),i._retryClicked&&t.find(".k-i-retry").parent().focus()},_updateUploadProgress:function(t){var n,i,o,r=this;r.options.async.chunkSize?(n=t.data("uid"),r._module.metaData&&(i=r._module.metaData[n],i&&(o=i.totalChunks?Math.round(i.chunkIndex/i.totalChunks*100):100,r._onFileProgress({target:e(t,r.wrapper)},o)))):e(".k-progress",t).width("100%")},_hideUploadProgress:function(t){e(".k-progress",t).delay(j).fadeOut(G,function(){e(this).css("width","0%")})},_showUploadButton:function(){var t=this,n=e(".k-upload-selected",t.wrapper),i=e(".k-clear-selected",t.wrapper);0===n.length&&(n=t._renderAction("",this.localization.uploadSelectedFiles).addClass("k-upload-selected"),i=t._renderAction("",this.localization.clearSelectedFiles).addClass("k-clear-selected")),this.wrapper.append(i,n)},_hideUploadButton:function(){e(".k-upload-selected, .k-clear-selected",this.wrapper).remove()},_showHeaderUploadStatus:function(t){var n=this,i=n.localization,o=e(".k-dropzone",n.wrapper),r=e(".k-upload-status-total",n.wrapper);0!==r.length&&r.remove(),r='<strong class="k-upload-status k-upload-status-total"><span class="k-icon"></span></strong>',t?(r=e(r).append(i.headerStatusUploading),r.find(".k-icon").addClass($.loading)):(r=e(r).append(i.headerStatusUploaded),r.find(".k-icon").addClass($.warning)),o.length>0?o.append(r):e(".k-upload-button",n.wrapper).after(r)},_updateHeaderUploadStatus:function(){var t,n,i=this,o=e(".k-upload-status-total",this.wrapper),r=e(".k-file",i.wrapper).not(".k-file-success, .k-file-error, .k-file-invalid"),a=e(".k-file-invalid",i.wrapper),s=e(".k-file-error",i.wrapper),l=e(".k-file",i.wrapper).find(".k-i-play-sm");!l.length||l.length!==r.length&&i.options.async.concurrent?(0===r.length||a.length>0||s.length>0)&&(t=e(".k-file.k-file-error, .k-file.k-file-invalid",i.wrapper),o=e(".k-upload-status-total",i.wrapper),n=e(".k-icon",o).removeClass().addClass("k-icon").addClass(0!==t.length?$.warning:$.success),o.html(n).append(i.localization.headerStatusUploaded)):(n=e(".k-icon",o).removeClass().addClass("k-icon").addClass("k-i-pause-sm"),o.html(n).append(i.localization.headerStatusPaused))},_hideHeaderUploadstatus:function(){e(".k-upload-status-total",this.wrapper).remove()},_onParentFormSubmit:function(){var n,i=this,o=i.element;t!==this._module.onAbort&&this._module.onAbort(),o.value||(n=e(o),n.attr("disabled","disabled"),window.setTimeout(function(){n.removeAttr("disabled")},0))},_onParentFormReset:function(){e(".k-upload-files",this.wrapper).remove()},_supportsFormData:function(){return"undefined"!=typeof FormData},_supportsMultiple:function(){var e=this._userAgent().indexOf("Windows")>-1;return!(C.support.browser.opera||C.support.browser.safari&&e)},_supportsDrop:function(){var e=this._userAgent().toLowerCase(),t=/chrome/.test(e),n=!t&&/safari/.test(e),i=n&&/windows/.test(e);return!i&&this._supportsFormData()&&this.options.async.saveUrl},_userAgent:function(){return navigator.userAgent},_setupDropZone:function(){var t,n,i=this;e(".k-upload-button",i.wrapper).wrap("<div class='k-dropzone'></div>"),t=i._ns,n=e(".k-dropzone",i.wrapper).append(e("<em>"+i.localization.dropFilesHere+"</em>")).on("dragenter"+t,_).on("dragover"+t,function(e){e.preventDefault()}).on("drop"+t,e.proxy(i._onDrop,i)),b(n,t,function(){n.closest(".k-upload").hasClass("k-state-disabled")||n.addClass("k-dropzone-hovered")},function(){n.removeClass("k-dropzone-hovered")}),i._bindDocumentDragEventWrappers(n)},_setupCustomDropZone:function(){var t,n=this,i=e(n.options.dropZone);e(".k-upload-button",n.wrapper).wrap("<div class='k-dropzone'></div>").after(e("<em>"+n.localization.dropFilesHere+"</em>")),t=n._ns,i.on("dragenter"+t,_).on("dragover"+t,function(e){e.preventDefault()}).on("drop"+t,e.proxy(n._onDrop,n)),b(i,t,function(t){n.wrapper.hasClass("k-state-disabled")||(i.removeClass("k-dropzone-hovered"),e(t.target).addClass("k-dropzone-hovered"))},function(){i.removeClass("k-dropzone-hovered"),i.find(".k-dropzone-hovered").removeClass("k-dropzone-hovered")}),n._bindDocumentDragEventWrappers(i)},_bindDocumentDragEventWrappers:function(t){var n=this,i=n._ns;b(e(document),i,function(){n.wrapper.hasClass("k-state-disabled")||(t.addClass("k-dropzone-active"),t.closest(".k-upload").removeClass("k-upload-empty"))},function(){t.removeClass("k-dropzone-active"),0===e("li.k-file",t.closest(".k-upload")).length&&t.closest(".k-upload").addClass("k-upload-empty")})},_supportsRemove:function(){return!!this.options.async.removeUrl},_submitRemove:function(t,n,i,o){var r=this,a=r.options.async.removeField||"fileNames",s=e.extend(n.data,T()); +s[a]=t,jQuery.ajax({type:this.options.async.removeVerb,dataType:"json",dataFilter:v,url:this.options.async.removeUrl,traditional:!0,data:s,headers:n.headers,success:i,error:o,xhrFields:{withCredentials:this.options.async.withCredentials}})},_wrapInput:function(e){var t=this,n=t.options;return e.wrap("<div class='k-widget k-upload k-header'><div class='k-button k-upload-button' aria-label='"+this.localization.select+"'></div></div>"),n.async.saveUrl||e.closest(".k-upload").addClass("k-upload-sync"),e.closest(".k-upload").addClass("k-upload-empty"),e.closest(".k-button").append("<span>"+this.localization.select+"</span>"),e.closest(".k-upload")},_checkAllComplete:function(){0===e(".k-file.k-file-progress",this.wrapper).length&&this.trigger(P)},_inputFiles:function(e){return i(e)}}),K=function(e){this.name="syncUploadModule",this.element=e.wrapper,this.upload=e,this.element.closest("form").attr("enctype","multipart/form-data").attr("encoding","multipart/form-data")};K.prototype={onSelect:function(t,i){var o,r,a=this.upload,s=e(t.target),l=a._filesContainValidationErrors(i);a._addInput(s),o={fileNames:i},l?s.remove():o.relatedInput=s,r=a._enqueueFile(n(s),o),l&&a._hideUploadProgress(r),a._fileAction(r,O)},onRemove:function(e){var t=k(e),n=t.data("relatedInput");n&&n.remove(),this.upload._removeFileEntry(t)}},y=function(e){this.name="iframeUploadModule",this.element=e.wrapper,this.upload=e,this.iframes=[]},Y._frameId=0,y.prototype={onSelect:function(t,n){var i=this.upload,o=e(t.target),r=i._filesContainValidationErrors(n),a=this.prepareUpload(o,n,r);i.options.async.autoUpload?r?(i._fileAction(a,O),i._showHeaderUploadStatus(!1)):this.performUpload(a):(i._fileAction(a,O),r?i._updateHeaderUploadStatus():i._showUploadButton()),r&&i._hideUploadProgress(a)},prepareUpload:function(t,i,o){var r,a,s,l,c=this.upload,d=e(c.element),u=c.options.async.saveField||t.attr("name");return c._addInput(t),t.attr("name",u),o?(t.remove(),a={fileNames:i}):(s=this.createFrame(c.name+"_"+Y._frameId++),this.registerFrame(s),l=this.createForm(c.options.async.saveUrl,s.attr("name")).append(d),a={frame:s,relatedInput:d,fileNames:i}),r=c._enqueueFile(n(t),a),s&&s.data({form:l,file:r}),r},performUpload:function(t){var n,i,o,r={files:t.data("fileNames")},a=t.data("frame"),s=this.upload;if(s.trigger(M,r))s._removeFileEntry(a.data("file")),this.cleanupFrame(a),this.unregisterFrame(a);else{s._hideUploadButton(),s._showHeaderUploadStatus(!0),a.appendTo(document.body),n=a.data("form").attr("action",s.options.async.saveUrl).appendTo(document.body),r.data=e.extend({},r.data,T());for(i in r.data)o=n.find("input[name='"+i+"']"),0===o.length&&(o=e("<input>",{type:"hidden",name:i}).prependTo(n)),o.val(r.data[i]);s._fileAction(t,z),s._fileState(t,"uploading"),e(t).removeClass("k-file-error").addClass("k-file-progress"),a.one("load",e.proxy(this.onIframeLoad,this)),n[0].submit()}},onSaveSelected:function(){var t=this,n=t.upload;e(".k-file",this.element).each(function(){var i=e(this),o=w(i),r=n._filesContainValidationErrors(i.data("fileNames"));o||r||t.performUpload(i)})},onIframeLoad:function(t){var n,i=e(t.target);try{n=i.contents().text()}catch(o){n="Error trying to get server response: "+o}this.processResponse(i,n)},processResponse:function(t,n){var i=t.data("file"),o=this,r={responseText:n};m(n,function(n){e.extend(r,{statusText:"OK",status:"200"}),o.upload._onFileProgress({target:e(i,o.upload.wrapper)},100),o.upload._onUploadSuccess({target:e(i,o.upload.wrapper)},n,r),o.cleanupFrame(t),o.unregisterFrame(t)},function(){e.extend(r,{statusText:"error",status:"500"}),o.upload._onUploadError({target:e(i,o.upload.wrapper)},r)})},onCancel:function(t){var n=e(t.target).data("frame");this.stopFrameSubmit(n),this.cleanupFrame(n),this.unregisterFrame(n),this.upload._removeFileEntry(n.data("file"))},onRetry:function(e){var t=k(e);this.performUpload(t)},onRemove:function(e,t,n){var i=this,o=i.upload,r=k(e),a=r.data("frame");a?(i.unregisterFrame(a),o._removeFileEntry(r),i.cleanupFrame(a)):r.hasClass("k-file-success")?g(r,o,t,n):o._removeFileEntry(r)},onAbort:function(){var t=this.element,n=this;e.each(this.iframes,function(){e("input",this.data("form")).appendTo(t),n.stopFrameSubmit(this[0]),this.data("form").remove(),this.remove()}),this.iframes=[]},createFrame:function(t){return e("<iframe name='"+t+"' id='"+t+"' style='display:none;' />")},createForm:function(t,n){return e("<form enctype='multipart/form-data' method='POST' action='"+t+"' target='"+n+"'/>")},stopFrameSubmit:function(e){t!==e.stop?e.stop():e.document&&e.document.execCommand("Stop")},registerFrame:function(e){this.iframes.push(e)},unregisterFrame:function(t){this.iframes=e.grep(this.iframes,function(e){return e.attr("name")!=t.attr("name")})},cleanupFrame:function(e){var t=e.data("form");e.data("file").data("frame",null),setTimeout(function(){t.remove(),e.remove()},1)}},x=function(e){this.name="formDataUploadModule",this.element=e.wrapper,this.upload=e,this.position={},this.metaData={},this.cancelled={},this.resume={},this.paused={},this.retries={}},x.prototype={onSelect:function(t,n){var i,o,r=this.upload,a=this,s=e(t.target),l=this.prepareUpload(s,n);e.each(l,function(t){i=r._filesContainValidationErrors(e(this.data("fileNames"))),r.options.async.autoUpload?i?(r._fileAction(this,O),r._showHeaderUploadStatus(!1)):r.options.async.chunkSize?(a.prepareChunk(this),o=this.prev(),(r.options.async.concurrent||0===t&&!o.length||0===t&&o.hasClass("k-file-success"))&&a.performUpload(this)):a.performUpload(this):(r._fileAction(this,O),i?r._updateHeaderUploadStatus():(r._showUploadButton(),this.addClass("k-toupload"))),i&&r._hideUploadProgress(this)})},prepareUpload:function(t,n){var i=this.enqueueFiles(n);return t.is("input")&&(e.each(i,function(){e(this).data("relatedInput",t)}),t.data("relatedFileEntries",i),this.upload._addInput(t)),i},enqueueFiles:function(t){var n,i,o,r,a=this.upload,s=t.length,l=[];if(a.options.async.batch===!0)n=e.map(t,function(e){return e.name}).join(", "),(a.directory||a.options.directoryDrop)&&e(t).each(function(){(this.rawFile.webkitRelativePath||this.rawFile.relativePath)&&(this.name=this.rawFile.webkitRelativePath||this.rawFile.relativePath)}),r=a._enqueueFile(n,{fileNames:t}),r.data("files",t),l.push(r);else for(i=0;i<s;i++)o=t[i],n=o.name,(a.directory||a.options.directoryDrop)&&(o.rawFile.webkitRelativePath||o.rawFile.relativePath)&&(o.name=o.rawFile.webkitRelativePath||o.rawFile.relativePath),r=a._enqueueFile(n,{fileNames:[o]}),r.data("files",[o]),l.push(r);return l},performUpload:function(t){var n,i,o=this.upload,r=this.createFormData(),a=this.createXHR(),s={files:t.data("fileNames"),XMLHttpRequest:a};if(o.trigger(M,s))this.removeFileEntry(t);else{if(0===t.find(".k-i-cancel").length&&(o.options.async.chunkSize&&o._fileAction(t,L),o._fileAction(t,z,o.options.async.chunkSize)),o.wrapper.find(".k-toupload").length||o._hideUploadButton(),o._showHeaderUploadStatus(!0),s.formData)r=s.formData;else{s.data=e.extend({},s.data,T());for(i in s.data)r.append(i,s.data[i]);n=t.data("files"),n&&this.populateFormData(r,n)}o._fileState(t,"uploading"),e(t).removeClass("k-file-error").addClass("k-file-progress"),o.options.async.useArrayBuffer&&window.FileReader?this._readFile(o.options.async.saveUrl,r,t,a):this.postFormData(o.options.async.saveUrl,r,t,a)}},_readFile:function(n,i,o,r){var a=this,s=a.upload,l=o.data("files")[0],c=new FileReader;c.onload=function(c){try{a.fileArrayBuffer=a.fileArrayBuffer?a._appendBuffer(a.fileArrayBuffer,c.target.result):c.target.result}catch(d){return s._onUploadError({target:e(o,s.wrapper)},r),t}a.position[l.uid]>l.size?(a.postFormData(s.options.async.saveUrl,a.fileArrayBuffer,o,r),a.fileArrayBuffer=null):a._readFile(n,i,o,r)},c.onerror=function(){s._onUploadError({target:e(o,s.wrapper)},r)},c.readAsArrayBuffer(a._getCurrentChunk(l.rawFile,l.uid))},_appendBuffer:function(e,t){var n=new Uint8Array(e.byteLength+t.byteLength);return n.set(new Uint8Array(e),0),n.set(new Uint8Array(t),e.byteLength),n.buffer},onSaveSelected:function(){var t=this,n=t.upload;e(".k-toupload",this.element).filter(function(){var t=e(this),i=w(t),o=n._filesContainValidationErrors(t.data("fileNames"));return!i&&!o}).each(function(i){var o=e(this),r=o.prev();o.removeClass("k-toupload"),n.options.async.chunkSize?(t.prepareChunk(o),(n.options.async.concurrent||0===i&&!r.length||0===i&&r.hasClass("k-file-success")||r.hasClass("k-file-error"))&&t.performUpload(o)):t.performUpload(o)})},onCancel:function(e){var t=k(e);this.upload.options.async.chunkSize&&(this.cancelled[t.data("uid")]=!0),this.stopUploadRequest(t),this.removeFileEntry(t)},onPause:function(e){var t=k(e),n=t.data("uid"),i=this.upload.options.async;i.chunkSize&&(this.retries[n]=i.maxAutoRetries+1,this.paused[n]=!0,this.resume[n]=!1)},onResume:function(e){var t=k(e),n=t.data("uid");this.upload.options.async.chunkSize&&(delete this.paused[n],this.resume[n]=!0,this.retries[t.data("uid")]=1,this._increaseChunkIndex(n),this.performUpload(t))},onRetry:function(e){var t=k(e),n=this.upload.options.async;n.chunkSize&&(this.retries[t.data("uid")]=n.maxAutoRetries+1,delete this.paused[t.data("uid")]),this.performUpload(t)},onRemove:function(e,t,n){var i=this,o=i.upload,r=k(e),a=this.upload.options.async;a.chunkSize&&(this.retries[r.data("uid")]=a.maxAutoRetries+1),r.hasClass("k-file-success")?g(r,o,t,n):i.removeFileEntry(r)},createXHR:function(){return new XMLHttpRequest},postFormData:function(e,t,n,i){var o,r=this;n.data("request",i),i.addEventListener("load",function(e){r.onRequestSuccess.call(r,e,n)},!1),i.addEventListener(R,function(e){r.onRequestError.call(r,e,n)},!1),i.upload.addEventListener("progress",function(e){r.onRequestProgress.call(r,e,n)},!1),i.open("POST",e,!0),i.withCredentials=this.upload.options.async.withCredentials,o=this.upload.options.async.accept,o&&i.setRequestHeader("Accept",o),i.send(t)},createFormData:function(){return new FormData},populateFormData:function(e,t){var n,i,o,r,a=t.length,s=this.upload;if(s.options.async.chunkSize)o=t[0].uid,n=this._getCurrentChunk(t[0].rawFile,o),e.append(s.options.async.saveField||s.name,n),r=JSON.stringify(this.metaData[o]),e.append("metadata",r);else for(i=0;i<a;i++)e.append(s.options.async.saveField||s.name,t[i].rawFile);return e},onRequestSuccess:function(t,n){function i(){a.upload._onUploadError({target:e(n,a.upload.wrapper)},r)}function o(t){var i=a.upload.options.async.batch,o=a.upload.options.async.chunkSize,s=a.upload.options.async.concurrent,l=t.fileUid;a.paused[l]||a.cancelled[l]||(delete a.retries[l],!o||i||t.uploaded?!o||i||s||!n.next().length||n.next().hasClass("k-toupload")?(a.upload._onFileProgress({target:e(n,a.upload.wrapper)},100),a.upload._onUploadSuccess({target:e(n,a.upload.wrapper)},t,r),a.cleanupFileEntry(n)):(a.upload._onFileProgress({target:e(n,a.upload.wrapper)},100),a._resetChunkIndex(l),a.upload._onUploadSuccess({target:e(n,a.upload.wrapper)},t,r),a.performUpload(n.next())):(a._increaseChunkIndex(l),a.performUpload(n)))}var r=t.target,a=this;r.status>=200&&r.status<=299?m(r.responseText,o,i):i()},onRequestError:function(t,n){var i=t.target;this.upload._onUploadError({target:e(n,this.upload.wrapper)},i)},cleanupFileEntry:function(t){var n=t.data("relatedInput"),i=!0;n&&(e.each(n.data("relatedFileEntries")||[],function(){this.parent().length>0&&this[0]!=t[0]&&(i=i&&this.hasClass("k-file-success"))}),i&&n.remove())},removeFileEntry:function(e){var t=this.upload.options.async.chunkSize,n=this.upload.options.async.concurrent,i=this.upload.wrapper.find(".k-upload-selected").length>0;this.cleanupFileEntry(e),!t||n||i||e.next().length&&this.performUpload(e.next()),this.upload._removeFileEntry(e)},onRequestProgress:function(t,n){var i,o=Math.round(100*t.loaded/t.total),r=n.data("uid");this.upload.options.async.chunkSize&&(i=this.metaData[r],o=i&&i.totalChunks?Math.round(i.chunkIndex/i.totalChunks*100):100),this.upload._onFileProgress({target:e(n,this.upload.wrapper)},o)},stopUploadRequest:function(e){e.data("request").abort()},prepareChunk:function(e){var t=e.data("files")[0],n=t.rawFile,i=t.uid,o=this.upload.options.async.chunkSize;this.position[i]=0,this.metaData[i]={chunkIndex:0,contentType:n.type,fileName:n.name,relativePath:t.name,totalFileSize:n.size,totalChunks:Math.ceil(n.size/o),uploadUid:i}},_decreaseChunkIndex:function(e){this.metaData[e].chunkIndex--},_increaseChunkIndex:function(e){this.metaData[e].chunkIndex++},_resetChunkIndex:function(e){this.metaData[e].chunkIndex=0},_decreasePosition:function(e){this.position[e]-=this.upload.options.async.chunkSize},_getCurrentChunk:function(e,t){var n,i=this.position[t],o=this.upload.options.async,r=o.chunkSize||o.bufferChunkSize;return this.position[t]||(this.position[t]=0),this.position[t]+=r,(n=this._getChunker(e))?e[n](i,this.position[t]):e},_getChunker:function(e){return e.slice?"slice":e.mozSlice?"mozSlice":e.webkitSlice?"webkitSlice":null}},C.ui.plugin(Y)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.filebrowser.min",["kendo.listview.min","kendo.dropdownlist.min","kendo.upload.min"],e)}(function(){return function(e,t){function n(e,t,n){var i,o;e.on("dragenter"+x,function(){t(),o=new Date,i||(i=setInterval(function(){var e=new Date-o;e>100&&(n(),clearInterval(i),i=null)},100))}).on("dragover"+x,function(){o=new Date})}function i(e,n){return e!==t&&e.match(/\/$/)||(e=(e||"")+"/"),e+n}function o(e){if(!e)return"";var t=" bytes";return e>=1073741824?(t=" GB",e/=1073741824):e>=1048576?(t=" MB",e/=1048576):e>=1024&&(t=" KB",e/=1024),Math.round(100*e)/100+t}function r(e,t){var n=e[t];return h(n)?n.from||n.field||t:n}var a,s,l,c,d=window.kendo,u=d.ui.Widget,h=e.isPlainObject,p=e.proxy,f=e.extend,g=d.support.placeholder,m=d.support.browser,v=d.isFunction,_=/(^\/|\/$)/g,b="change",w="apply",k="error",y="click",x=".kendoFileBrowser",C=".kendoBreadcrumbs",S=".kendoSearchBox",T="name",D="size",A="type",E={field:A,dir:"asc"},I=d.template('<li class="k-tile-empty"><strong>${text}</strong></li>'),M='<div class="k-widget k-filebrowser-toolbar k-header k-floatwrap"><div class="k-toolbar-wrap"># if (showUpload) { # <div class="k-widget k-upload"><div class="k-button k-button-icontext k-upload-button"><span class="k-icon k-i-plus"></span>#=messages.uploadFile#<input type="file" name="file" /></div></div># } ## if (showCreate) { #<button type="button" class="k-button k-button-icon"><span class="k-icon k-i-folder-add" /></button># } ## if (showDelete) { #<button type="button" class="k-button k-button-icon k-state-disabled"><span class="k-icon k-i-close" /></button> # } #</div><div class="k-tiles-arrange"><label>#=messages.orderBy#: <select /></label></div></div>';f(!0,d.data,{schemas:{filebrowser:{data:function(e){return e.items||e||[]},model:{id:"name",fields:{name:"name",size:"size",type:"type"}}}}}),f(!0,d.data,{transports:{filebrowser:d.data.RemoteTransport.extend({init:function(t){d.data.RemoteTransport.fn.init.call(this,e.extend(!0,{},this.options,t))},_call:function(t,n){n.data=e.extend({},n.data,{path:this.options.path()}),v(this.options[t])?this.options[t].call(this,n):d.data.RemoteTransport.fn[t].call(this,n)},read:function(e){this._call("read",e)},create:function(e){this._call("create",e)},destroy:function(e){this._call("destroy",e)},update:function(){},options:{read:{type:"POST"},update:{type:"POST"},create:{type:"POST"},destroy:{type:"POST"}}})}}),a=m.msie&&m.version<8?function(e){return e.offsetTop}:function(t){return t.offsetTop-e(t).height()},s=u.extend({init:function(e,t){var n=this;t=t||{},u.fn.init.call(n,e,t),n.element.addClass("k-filebrowser"),n.element.on(y+x,".k-filebrowser-toolbar button:not(.k-state-disabled):has(.k-i-close)",p(n._deleteClick,n)).on(y+x,".k-filebrowser-toolbar button:not(.k-state-disabled):has(.k-i-folder-add)",p(n._addClick,n)).on("keydown"+x,"li.k-state-selected input",p(n._directoryKeyDown,n)).on("blur"+x,"li.k-state-selected input",p(n._directoryBlur,n)),n._dataSource(),n.refresh(),n.path(n.options.path)},options:{name:"FileBrowser",messages:{uploadFile:"Upload",orderBy:"Arrange by",orderByName:"Name",orderBySize:"Size",directoryNotFound:"A directory with this name was not found.",emptyFolder:"Empty Folder",deleteFile:'Are you sure you want to delete "{0}"?',invalidFileType:'The selected file "{0}" is not valid. Supported file types are {1}.',overwriteFile:'A file with name "{0}" already exists in the current directory. Do you want to overwrite it?',dropFilesHere:"drop file here to upload",search:"Search"},transport:{},path:"/",fileTypes:"*.*"},events:[k,b,w],destroy:function(){var e=this;u.fn.destroy.call(e),e.dataSource.unbind(k,e._errorHandler),e.element.add(e.list).add(e.toolbar).off(x),d.destroy(e.element)},value:function(){var e,t=this,n=t._selectedItem(),o=t.options.transport.fileUrl;if(n&&"f"===n.get(A))return e=i(t.path(),n.get(T)).replace(_,""),o&&(e=v(o)?o(e):d.format(o,encodeURIComponent(e))),e},_selectedItem:function(){var e=this.listView,t=e.select();if(t.length)return this.dataSource.getByUid(t.attr(d.attr("uid")))},_toolbar:function(){var t=this,n=d.template(M),i=t.options.messages,o=[{text:i.orderByName,value:"name"},{text:i.orderBySize,value:"size"}];t.toolbar=e(n({messages:i,showUpload:t.options.transport.uploadUrl,showCreate:t.options.transport.create,showDelete:t.options.transport.destroy})).appendTo(t.element).find(".k-upload input").kendoUpload({multiple:!1,localization:{dropFilesHere:i.dropFilesHere},async:{saveUrl:t.options.transport.uploadUrl,autoUpload:!0},upload:p(t._fileUpload,t),error:function(e){t._error({xhr:e.XMLHttpRequest,status:"error"})}}).end(),t.upload=t.toolbar.find(".k-upload input").data("kendoUpload"),t.arrangeBy=t.toolbar.find(".k-tiles-arrange select").kendoDropDownList({dataSource:o,dataTextField:"text",dataValueField:"value",change:function(){t.orderBy(this.value())}}).data("kendoDropDownList"),t._attachDropzoneEvents()},_attachDropzoneEvents:function(){var t=this;t.options.transport.uploadUrl&&(n(e(document.documentElement),e.proxy(t._dropEnter,t),e.proxy(t._dropLeave,t)),t._scrollHandler=p(t._positionDropzone,t))},_dropEnter:function(){this._positionDropzone(),e(document).on("scroll"+x,this._scrollHandler)},_dropLeave:function(){this._removeDropzone(),e(document).off("scroll"+x,this._scrollHandler)},_positionDropzone:function(){var e=this,t=e.element,n=t.offset();e.toolbar.find(".k-dropzone").addClass("k-filebrowser-dropzone").offset(n).css({width:t[0].clientWidth,height:t[0].clientHeight,lineHeight:t[0].clientHeight+"px"})},_removeDropzone:function(){this.toolbar.find(".k-dropzone").removeClass("k-filebrowser-dropzone").css({width:"",height:"",lineHeight:"",top:"",left:""})},_deleteClick:function(){var e=this,t=e.listView.select(),n=d.format(e.options.messages.deleteFile,t.find("strong").text());t.length&&e._showMessage(n,"confirm")&&e.listView.remove(t)},_addClick:function(){this.createDirectory()},_getFieldName:function(e){return r(this.dataSource.reader.model.fields,e)},_fileUpload:function(e){var t,n=this,i=n.options,o=i.fileTypes,r=RegExp(("("+o.split(",").join(")|(")+")").replace(/\*\./g,".*."),"i"),a=e.files[0].name,s=e.files[0].size,l=T,c=D;r.test(a)?(e.data={path:n.path()},t=n._createFile(a,s),t?n.upload.one("success",function(e){var i=n._insertFileToList(t);i._override&&(i.set(l,e.response[n._getFieldName(l)]),i.set(c,e.response[n._getFieldName(c)]),n.listView.dataSource.pushUpdate(i)),n._tiles=n.listView.items().filter("["+d.attr("type")+"=f]")}):e.preventDefault()):(e.preventDefault(),n._showMessage(d.format(i.messages.invalidFileType,a,o)))},_findFile:function(e){var t,n,i,o=this.dataSource.data(),r=A,a=T;for(e=e.toLowerCase(),t=0,i=o.length;t<i;t++)if("f"===o[t].get(r)&&o[t].get(a).toLowerCase()===e){n=o[t];break}return n},_createFile:function(e,t){var n=this,i={},o=A,r=n._findFile(e);return r?n._showMessage(d.format(n.options.messages.overwriteFile,e),"confirm")?(r._override=!0,r):null:(i[o]="f",i[T]=e,i[D]=t,i)},_insertFileToList:function(e){var t,n,i,o,r;if(e._override)return e;for(n=this.dataSource,i=n.view(),o=0,r=i.length;o<r;o++)if("f"===i[o].get(A)){t=o;break}return n.insert(++t,e)},createDirectory:function(){var e,t,n=this,i=0,o=A,r=T,a=n.dataSource.data(),s=n._nameDirectory(),l=new n.dataSource.reader.model;for(e=0,t=a.length;e<t;e++)"d"===a[e].get(o)&&(i=e);l.set(o,"d"),l.set(r,s),n.listView.one("dataBound",function(){var e=n.listView.items().filter("["+d.attr("uid")+"="+l.uid+"]");e.length&&this.edit(e),this.element.scrollTop(e.attr("offsetTop")-this.element[0].offsetHeight),setTimeout(function(){n.listView.element.find(".k-edit-item input").select()})}).one("save",function(e){var t=e.model.get(r);t?e.model.set(r,n._nameExists(t,l.uid)?n._nameDirectory():t):e.model.set(r,s)}),n.dataSource.insert(++i,l)},_directoryKeyDown:function(e){13==e.keyCode&&e.currentTarget.blur()},_directoryBlur:function(){this.listView.save()},_nameExists:function(e,t){var n,i,o=this.dataSource.data(),r=A,a=T;for(n=0,i=o.length;n<i;n++)if("d"===o[n].get(r)&&o[n].get(a).toLowerCase()===e.toLowerCase()&&o[n].uid!==t)return!0;return!1},_nameDirectory:function(){var t,n,i,o="New folder",r=this.dataSource.data(),a=[],s=A,l=T;for(n=0,i=r.length;n<i;n++)"d"===r[n].get(s)&&r[n].get(l).toLowerCase().indexOf(o.toLowerCase())>-1&&a.push(r[n].get(l));if(e.inArray(o,a)>-1){n=2;do t=o+" ("+n+")",n++;while(e.inArray(t,a)>-1);o=t}return o},orderBy:function(e){this.dataSource.sort([{field:A,dir:"asc"},{field:e,dir:"asc"}])},search:function(e){this.dataSource.filter({field:T,operator:"contains",value:e})},_content:function(){var t=this;t.list=e('<ul class="k-reset k-floats k-tiles" />').appendTo(t.element).on("dblclick"+x,"li",p(t._dblClick,t)),t.listView=new d.ui.ListView(t.list,{dataSource:t.dataSource,template:t._itemTmpl(),editTemplate:t._editTmpl(),selectable:!0,autoBind:!1,dataBinding:function(e){t.toolbar.find(".k-i-close").parent().addClass("k-state-disabled"),"remove"!==e.action&&"sync"!==e.action||(e.preventDefault(),d.ui.progress(t.listView.element,!1))},dataBound:function(){t.dataSource.view().length?t._tiles=this.items().filter("["+d.attr("type")+"=f]"):this.wrapper.append(I({text:t.options.messages.emptyFolder}))},change:p(t._listViewChange,t)})},_dblClick:function(t){var n,o=this,r=e(t.currentTarget);r.hasClass("k-edit-item")&&o._directoryBlur(),r.filter("["+d.attr("type")+"=d]").length?(n=o.dataSource.getByUid(r.attr(d.attr("uid"))),n&&(o.path(i(o.path(),n.get(T))),o.breadcrumbs.value(o.path()))):r.filter("["+d.attr("type")+"=f]").length&&o.trigger(w)},_listViewChange:function(){var e=this._selectedItem();e&&(this.toolbar.find(".k-i-close").parent().removeClass("k-state-disabled"),this.trigger(b,{selected:e}))},_dataSource:function(){var e,t=this,n=t.options,i=n.transport,o=f({},E),r={field:T,dir:"asc"},a={type:i.type||"filebrowser",sort:[o,r]};h(i)&&(i.path=p(t.path,t),a.transport=i),h(n.schema)?a.schema=n.schema:i.type&&h(d.data.schemas[i.type])&&(e=d.data.schemas[i.type]),t.dataSource&&t._errorHandler?t.dataSource.unbind(k,t._errorHandler):t._errorHandler=p(t._error,t),t.dataSource=d.data.DataSource.create(a).bind(k,t._errorHandler)},_navigation:function(){var t=this,n=e('<div class="k-floatwrap"><input/><input/></div>').appendTo(this.element);t.breadcrumbs=n.find("input:first").kendoBreadcrumbs({value:t.options.path,change:function(){t.path(this.value())}}).data("kendoBreadcrumbs"),t.searchBox=n.parent().find("input:last").kendoSearchBox({label:t.options.messages.search,change:function(){t.search(this.value())}}).data("kendoSearchBox")},_error:function(e){var t,n,i=this;i.trigger(k,e)||(t=e.xhr.status,"error"==e.status?"404"==t?i._showMessage(i.options.messages.directoryNotFound):"0"!=t&&i._showMessage("Error! The requested URL returned "+t+" - "+e.xhr.statusText):"timeout"==t&&i._showMessage("Error! Server timeout."),n=i.dataSource,n.hasChanges()&&n.cancelChanges())},_showMessage:function(e,t){return window[t||"alert"](e)},refresh:function(){var e=this;e._navigation(),e._toolbar(),e._content()},_editTmpl:function(){var e='<li class="k-tile k-state-selected" '+d.attr("uid")+'="#=uid#" ';return e+=d.attr("type")+'="${'+A+'}">',e+="#if("+A+' == "d") { #',e+='<div class="k-thumb"><span class="k-icon k-i-folder"></span></div>',e+="#}else{#",e+='<div class="k-thumb"><span class="k-icon k-i-loading"></span></div>',e+="#}#",e+="#if("+A+' == "d") { #',e+='<input class="k-input" '+d.attr("bind")+'="value:'+T+'"/>',e+="#}#",e+="</li>",p(d.template(e),{sizeFormatter:o})},_itemTmpl:function(){var e='<li class="k-tile" '+d.attr("uid")+'="#=uid#" ';return e+=d.attr("type")+'="${'+A+'}">',e+="#if("+A+' == "d") { #',e+='<div class="k-thumb"><span class="k-icon k-i-folder"></span></div>',e+="#}else{#",e+='<div class="k-thumb"><span class="k-icon k-i-file"></span></div>',e+="#}#",e+="<strong>${"+T+"}</strong>",e+="#if("+A+' == "f") { # <span class="k-filesize">${this.sizeFormatter('+D+")}</span> #}#",e+="</li>",p(d.template(e),{sizeFormatter:o})},path:function(e){var n=this,i=n._path||"";return e!==t?(n._path=e.replace(_,"")+"/",n.dataSource.read({path:n._path}),t):(i&&(i=i.replace(_,"")),"/"===i||""===i?"":i+"/")}}),l=u.extend({init:function(e,t){var n=this;t=t||{},u.fn.init.call(n,e,t),g&&n.element.attr("placeholder",n.options.label),n._wrapper(),n.element.on("keydown"+S,p(n._keydown,n)).on("change"+S,p(n._updateValue,n)),n.wrapper.on(y+S,"a",p(n._click,n)),g||n.element.on("focus"+S,p(n._focus,n)).on("blur"+S,p(n._blur,n))},options:{name:"SearchBox",label:"Search",value:""},events:[b],destroy:function(){var e=this;e.wrapper.add(e.element).add(e.label).off(S),u.fn.destroy.call(e)},_keydown:function(e){13===e.keyCode&&this._updateValue()},_click:function(e){e.preventDefault(),this._updateValue()},_updateValue:function(){var e=this,t=e.element.val();t!==e.value()&&(e.value(t),e.trigger(b))},_blur:function(){this._updateValue(),this._toggleLabel()},_toggleLabel:function(){g||this.label.toggle(!this.element.val())},_focus:function(){this.label.hide()},_wrapper:function(){var t=this.element,n=t.parents(".k-search-wrap");t[0].style.width="",t.addClass("k-input"),n.length||(n=t.wrap(e('<div class="k-widget k-search-wrap k-textbox"/>')).parent(),g||e('<label style="display:block">'+this.options.label+"</label>").insertBefore(t),e('<a href="#" class="k-icon k-i-zoom k-search"/>').appendTo(n)),this.wrapper=n,this.label=n.find(">label")},value:function(e){var n=this;return e!==t?(n.options.value=e,n.element.val(e),n._toggleLabel(),t):n.options.value}}),c=u.extend({init:function(e,t){var n=this;t=t||{},u.fn.init.call(n,e,t),n._wrapper(),n.wrapper.on("focus"+C,"input",p(n._focus,n)).on("blur"+C,"input",p(n._blur,n)).on("keydown"+C,"input",p(n._keydown,n)).on(y+C,"a.k-i-arrow-60-up:first",p(n._rootClick,n)).on(y+C,"a:not(.k-i-arrow-60-up)",p(n._click,n)),n.value(n.options.value)},options:{name:"Breadcrumbs",gap:50},events:[b],destroy:function(){var e=this;u.fn.destroy.call(e),e.wrapper.add(e.wrapper.find("input")).add(e.wrapper.find("a")).off(C)},_update:function(e){e="/"===(e||"").charAt(0)?e:"/"+(e||""),e!==this.value()&&(this.value(e),this.trigger(b))},_click:function(t){t.preventDefault(),this._update(this._path(e(t.target).prevAll("a:not(.k-i-arrow-60-up)").addBack()))},_rootClick:function(e){e.preventDefault(),this._update("")},_focus:function(){var e=this,t=e.element;e.overlay.hide(),e.element.val(e.value()),setTimeout(function(){t.select()})},_blur:function(){if(!this.overlay.is(":visible")){var e=this,t=e.element,n=t.val().replace(/\/{2,}/g,"/");e.overlay.show(),t.val(""),e._update(n)}},_keydown:function(e){var t=this;13===e.keyCode&&(t._blur(),setTimeout(function(){t.overlay.find("a:first").focus()}))},_wrapper:function(){var t,n=this.element,i=n.parents(".k-breadcrumbs");n[0].style.width="",n.addClass("k-input"),i.length||(i=n.wrap(e('<div class="k-widget k-breadcrumbs k-textbox"/>')).parent()),t=i.find(".k-breadcrumbs-wrap"),t.length||(t=e('<div class="k-breadcrumbs-wrap"/>').appendTo(i)),this.wrapper=i,this.overlay=t},refresh:function(){var n,i,o,r,a="",s=this.value();for(s!==t&&s.match(/^\//)||(s="/"+(s||"")),n=s.split("/"),o=0,r=n.length;o<r;o++)i=n[o],i&&(a||(a+='<a href="#" class="k-icon k-i-arrow-60-up" title="Go to parent folder"></a>'),a+='<a class="k-link" href="#">'+n[o]+"</a>",a+='<span class="k-icon k-i-arrow-60-right" title="Go to child folder"></span>');this.overlay.empty().append(e(a)),this._adjustSectionWidth()},_adjustSectionWidth:function(){var t,n=this,i=n.wrapper,o=i.width()-n.options.gap,r=n.overlay.find("a");r.each(function(n){t=e(this),t.parent().width()>o&&(n==r.length-1?t.width(o):t.prev().addBack().hide())})},value:function(e){return e!==t?(this._value=e.replace(/\/{2,}/g,"/"),this.refresh(),t):this._value},_path:function(t){return"/"+e.map(t,function(t){return e(t).text()}).join("/")}}),d.ui.plugin(s),d.ui.plugin(c),d.ui.plugin(l)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.imagebrowser.min",["kendo.filebrowser.min"],e)}(function(){return function(e,t){function n(e,n){return e!==t&&e.match(/\/$/)||(e=(e||"")+"/"),e+n}function i(e){if(!e)return"";var t=" bytes";return e>=1073741824?(t=" GB",e/=1073741824):e>=1048576?(t=" MB",e/=1048576):e>=1024&&(t=" KB",e/=1024),Math.round(100*e)/100+t}var o,r,a=window.kendo,s=a.ui.FileBrowser,l=e.isPlainObject,c=e.proxy,d=e.extend,u=a.support.browser,h=a.isFunction,p=/(^\/|\/$)/g,f="error",g=".kendoImageBrowser",m="name",v="size",_="type",b={field:_,dir:"asc"},w=a.template('<li class="k-tile-empty"><strong>${text}</strong></li>');d(!0,a.data,{schemas:{imagebrowser:{data:function(e){return e.items||e||[]},model:{id:"name",fields:{name:"name",size:"size",type:"type"}}}}}),d(!0,a.data,{transports:{imagebrowser:a.data.RemoteTransport.extend({init:function(t){a.data.RemoteTransport.fn.init.call(this,e.extend(!0,{},this.options,t))},_call:function(t,n){n.data=e.extend({},n.data,{path:this.options.path()}),h(this.options[t])?this.options[t].call(this,n):a.data.RemoteTransport.fn[t].call(this,n)},read:function(e){this._call("read",e)},create:function(e){this._call("create",e)},destroy:function(e){this._call("destroy",e)},update:function(){},options:{read:{type:"POST"},update:{type:"POST"},create:{type:"POST"},destroy:{type:"POST"}}})}}),o=u.msie&&u.version<8?function(e){return e.offsetTop}:function(t){return t.offsetTop-e(t).height()},r=s.extend({init:function(e,t){var n=this;t=t||{},s.fn.init.call(n,e,t),n.element.addClass("k-imagebrowser")},options:{name:"ImageBrowser",fileTypes:"*.png,*.gif,*.jpg,*.jpeg"},value:function(){var e,t=this,i=t._selectedItem(),o=t.options.transport.imageUrl;if(i&&"f"===i.get(_))return e=n(t.path(),i.get(m)).replace(p,""),o&&(e=h(o)?o(e):a.format(o,encodeURIComponent(e))),e},_fileUpload:function(e){var n,i=this,o=i.options,r=o.fileTypes,s=RegExp(("("+r.split(",").join(")|(")+")").replace(/\*\./g,".*."),"i"),l=e.files[0].name,c=e.files[0].size,d=m,u=v;s.test(l)?(e.data={path:i.path()},n=i._createFile(l,c),n?(n._uploading=!0,i.upload.one("error",function(){n=t}),i.upload.one("success",function(e){if(n){delete n._uploading;var t=i._insertFileToList(n);t._override&&(t.set(d,e.response[i._getFieldName(d)]),t.set(u,e.response[i._getFieldName(u)]),i.listView.dataSource.pushUpdate(t)),i._tiles=i.listView.items().filter("["+a.attr("type")+"=f]"),i._scroll()}})):e.preventDefault()):(e.preventDefault(),i._showMessage(a.format(o.messages.invalidFileType,l,r)))},_content:function(){var t=this;t.list=e('<ul class="k-reset k-floats k-tiles" />').appendTo(t.element).on("scroll"+g,c(t._scroll,t)).on("dblclick"+g,"li",c(t._dblClick,t)),t.listView=new a.ui.ListView(t.list,{dataSource:t.dataSource,template:t._itemTmpl(),editTemplate:t._editTmpl(),selectable:!0,autoBind:!1,dataBinding:function(e){t.toolbar.find(".k-i-close").parent().addClass("k-state-disabled"),"remove"!==e.action&&"sync"!==e.action||(e.preventDefault(),a.ui.progress(t.listView.element,!1))},dataBound:function(){t.dataSource.view().length?(t._tiles=this.items().filter("["+a.attr("type")+"=f]"), +t._scroll()):this.wrapper.append(w({text:t.options.messages.emptyFolder}))},change:c(t._listViewChange,t)})},_dataSource:function(){var e,t=this,n=t.options,i=n.transport,o=d({},b),r={field:m,dir:"asc"},s={type:i.type||"imagebrowser",sort:[o,r]};l(i)&&(i.path=c(t.path,t),s.transport=i),l(n.schema)?s.schema=n.schema:i.type&&l(a.data.schemas[i.type])&&(e=a.data.schemas[i.type]),t.dataSource&&t._errorHandler?t.dataSource.unbind(f,t._errorHandler):t._errorHandler=c(t._error,t),t.dataSource=a.data.DataSource.create(s).bind(f,t._errorHandler)},_loadImage:function(t){var n=this,i=e(t),o=n.dataSource.getByUid(i.attr(a.attr("uid"))),r=o.get(m),s=n.options.transport.thumbnailUrl,l=e("<img />",{alt:r}),c="?";o._uploading||(l.hide().on("load"+g,function(){e(this).prev().remove().end().addClass("k-image").fadeIn()}),i.find(".k-i-loading").after(l),h(s)?s=s(n.path(),encodeURIComponent(r)):(s.indexOf("?")>=0&&(c="&"),s=s+c+"path="+encodeURIComponent(n.path()+r),o._override&&(s+="&_="+(new Date).getTime(),delete o._override)),l.attr("src",s),t.loaded=!0)},_scroll:function(){var e=this;e.options.transport&&e.options.transport.thumbnailUrl&&(clearTimeout(e._timeout),e._timeout=setTimeout(function(){var t=a._outerHeight(e.list),n=e.list.scrollTop(),i=n+t;e._tiles.each(function(){var t=o(this),r=t+this.offsetHeight;if((t>=n&&t<i||r>=n&&r<i)&&e._loadImage(this),t>i)return!1}),e._tiles=e._tiles.filter(function(){return!this.loaded})},250))},_itemTmpl:function(){var e=this,t='<li class="k-tile" '+a.attr("uid")+'="#=uid#" ';return t+=a.attr("type")+'="${'+_+'}">',t+="#if("+_+' == "d") { #',t+='<div class="k-thumb"><span class="k-icon k-i-folder"></span></div>',t+="#}else{#",t+=e.options.transport&&e.options.transport.thumbnailUrl?'<div class="k-thumb"><span class="k-icon k-i-loading"></span></div>':'<div class="k-thumb"><span class="k-icon k-i-file"></span></div>',t+="#}#",t+="<strong>${"+m+"}</strong>",t+="#if("+_+' == "f") { # <span class="k-filesize">${this.sizeFormatter('+v+")}</span> #}#",t+="</li>",c(a.template(t),{sizeFormatter:i})}}),a.ui.plugin(r)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("util/undoredostack.min",["kendo.core.min"],e)}(function(){!function(e){var t=e.Observable.extend({init:function(t){e.Observable.fn.init.call(this,t),this.clear()},events:["undo","redo"],push:function(e){this.stack=this.stack.slice(0,this.currentCommandIndex+1),this.currentCommandIndex=this.stack.push(e)-1},undo:function(){if(this.canUndo()){var e=this.stack[this.currentCommandIndex--];e.undo(),this.trigger("undo",{command:e})}},redo:function(){if(this.canRedo()){var e=this.stack[++this.currentCommandIndex];e.redo(),this.trigger("redo",{command:e})}},clear:function(){this.stack=[],this.currentCommandIndex=-1},canUndo:function(){return this.currentCommandIndex>=0},canRedo:function(){return this.currentCommandIndex!=this.stack.length-1}});e.deepExtend(e,{util:{UndoRedoStack:t}})}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/main.min",["util/undoredostack.min","kendo.combobox.min","kendo.dropdownlist.min","kendo.window.min","kendo.colorpicker.min"],e)}(function(){!function(e,t){var n,i,o,r,a=window.kendo,s=a.Class,l=a.ui.Widget,c=a.support.mobileOS,d=a.support.browser,u=e.extend,h=e.proxy,p=a.deepExtend,f=a.keys,g="select",m="select.k-select-overlay",v="k-placeholder",_="placeholder",b=200,w="en",k=s.extend({init:function(e){this.options=e},getHtml:function(){var e=this.options;return a.template(e.template,{useWithBlock:!1})(e)}}),y={editorWrapperTemplate:'<table cellspacing="4" cellpadding="0" class="k-widget k-editor k-header" role="presentation"><tbody><tr role="presentation"><td class="k-editor-toolbar-wrap" role="presentation"><ul class="k-editor-toolbar" role="toolbar" /></td></tr><tr><td class="k-editable-area" /></tr></tbody></table>',buttonTemplate:'# var iconCssClass= "k-icon k-i-" + kendo.toHyphens(data.cssClass.replace("k-", ""));#<a tabindex="0" role="button" class="k-tool"#= data.popup ? " data-popup" : "" # unselectable="on" title="#= data.title #" aria-label="#= data.title #"><span unselectable="on" class="k-tool-icon #= iconCssClass #"></span></a>',tableWizardButtonTemplate:'# var iconCssClass= "k-icon k-i-" + kendo.toHyphens(data.cssClass.replace("k-", ""));#<a tabindex="0" role="button" class="k-tool"#= data.popup ? " data-popup" : "" # unselectable="on" title="#= data.title #"><span unselectable="on" class="k-tool-icon #= iconCssClass #"></span><span class="k-tool-text">#= data.title #</span></a>',colorPickerTemplate:'<div class="k-colorpicker k-icon k-i-#= data.cssClass.replace("k-", "") #" />',comboBoxTemplate:'<select title="#= data.title #" aria-label="#= data.title #" class="#= data.cssClass #" />',dropDownListTemplate:'<span class="k-editor-dropdown"><select title="#= data.title #" aria-label="#= data.title #" class="#= data.cssClass #" /></span>',separatorTemplate:'<span class="k-separator" />',overflowAnchorTemplate:'<a tabindex="0" role="button" class="k-tool k-overflow-anchor" data-popup unselectable="on" title="#= data.title #" aria-label="#= data.title #" aria-haspopup="true" aria-expanded="false"><span unselectable="on" class="k-icon k-i-more-vertical"></span></a>',formatByName:function(t,n){for(var i=0;i<n.length;i++)if(e.inArray(t,n[i].tags)>=0)return n[i]},getToolCssClass:function(e){var t={superscript:"sup-script",subscript:"sub-script",justifyLeft:"align-left",justifyCenter:"align-center",justifyRight:"align-right",justifyFull:"align-justify",insertUnorderedList:"list-unordered",insertOrderedList:"list-ordered","import":"login",indent:"indent-increase",outdent:"indent-decrease",createLink:"link-horizontal",unlink:"unlink-horizontal",insertImage:"image",insertFile:"file-add",viewHtml:"html",foreColor:"foreground-color",backColor:"paint",createTable:"table-insert",addColumnLeft:"table-column-insert-left",addColumnRight:"table-column-insert-right",addRowAbove:"table-row-insert-above",addRowBelow:"table-row-insert-below",deleteRow:"table-row-delete",deleteColumn:"table-column-delete",tableWizard:"table-properties",tableWizardInsert:"table-wizard",cleanFormatting:"clear-css"},n=t[e];return n?n:e},registerTool:function(e,t){var n=t.options;n&&n.template&&(n.template.options.cssClass="k-"+y.getToolCssClass(e)),t.name||(t.options.name=e,t.name=e.toLowerCase()),T.defaultTools[e]=t},registerFormat:function(e,t){T.fn.options.formats[e]=t},cacheComments:function(e,t){for(var n in t)e=e.replace(t[n],"{"+n+"}");return e},retrieveComments:function(e,t){for(var n in t)e=e.replace("{"+n+"}",t[n]);return e}},x={bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",superscript:"Superscript",subscript:"Subscript",justifyCenter:"Center text",justifyLeft:"Align text left",justifyRight:"Align text right",justifyFull:"Justify",insertUnorderedList:"Insert unordered list",insertOrderedList:"Insert ordered list",indent:"Indent",outdent:"Outdent",createLink:"Insert hyperlink",unlink:"Remove hyperlink",insertImage:"Insert image",insertFile:"Insert file",insertHtml:"Insert HTML",viewHtml:"View HTML",fontName:"Select font family",fontNameInherit:"(inherited font)",fontSize:"Select font size",fontSizeInherit:"(inherited size)",formatBlock:"Format",formatting:"Format",foreColor:"Color",backColor:"Background color",style:"Styles",emptyFolder:"Empty Folder",editAreaTitle:"Editable area. Press F10 for toolbar.",uploadFile:"Upload",overflowAnchor:"More tools",orderBy:"Arrange by:",orderBySize:"Size",orderByName:"Name",invalidFileType:'The selected file "{0}" is not valid. Supported file types are {1}.',deleteFile:'Are you sure you want to delete "{0}"?',overwriteFile:'A file with name "{0}" already exists in the current directory. Do you want to overwrite it?',directoryNotFound:"A directory with this name was not found.",imageWebAddress:"Web address",imageAltText:"Alternate text",imageWidth:"Width (px)",imageHeight:"Height (px)",fileWebAddress:"Web address",fileTitle:"Title",fileText:"Text",linkWebAddress:"Web address",linkText:"Text",linkToolTip:"ToolTip",linkOpenInNewWindow:"Open link in new window",dialogUpdate:"Update",dialogInsert:"Insert",dialogOk:"Ok",dialogCancel:"Cancel",cleanFormatting:"Clean formatting",createTable:"Create a table",createTableHint:"Create a {0} x {1} table",addColumnLeft:"Add column on the left",addColumnRight:"Add column on the right",addRowAbove:"Add row above",addRowBelow:"Add row below",deleteRow:"Delete row",deleteColumn:"Delete column",tableWizard:"Table Wizard",tableTab:"Table",cellTab:"Cell",accessibilityTab:"Accessibility",caption:"Caption",summary:"Summary",width:"Width",height:"Height",units:"Units",cellSpacing:"Cell Spacing",cellPadding:"Cell Padding",cellMargin:"Cell Margin",alignment:"Alignment",background:"Background",cssClass:"CSS Class",id:"ID",border:"Border",borderStyle:"Border Style",collapseBorders:"Collapse borders",wrapText:"Wrap text",associateCellsWithHeaders:"Associate cells with headers",alignLeft:"Align Left",alignCenter:"Align Center",alignRight:"Align Right",alignLeftTop:"Align Left Top",alignCenterTop:"Align Center Top",alignRightTop:"Align Right Top",alignLeftMiddle:"Align Left Middle",alignCenterMiddle:"Align Center Middle",alignRightMiddle:"Align Right Middle",alignLeftBottom:"Align Left Bottom",alignCenterBottom:"Align Center Bottom",alignRightBottom:"Align Right Bottom",alignRemove:"Remove Alignment",columns:"Columns",rows:"Rows",selectAllCells:"Select All Cells",exportAs:"Export As","import":"Import",print:"Print"},C=!c||c.ios&&c.flatVersion>=500||!c.ios&&t!==document.documentElement.contentEditable,S={basic:["bold","italic","underline"],alignment:["justifyLeft","justifyCenter","justifyRight"],lists:["insertUnorderedList","insertOrderedList"],indenting:["indent","outdent"],links:["createLink","unlink"],tables:["tableWizard","createTable","addColumnLeft","addColumnRight","addRowAbove","addRowBelow","deleteRow","deleteColumn"]},T=l.extend({init:function(n,i){var o,r,s,c,d,f,g=this,m=a.ui.editor,v=m.Dom;C&&(l.fn.init.call(g,n,i),g.options=p({},g.options,i),g.options.tools=g.options.tools.slice(),n=g.element,f=n[0],c=v.name(f),this._registerHandler(n.closest("form"),"submit",h(g.update,g,t)),s=u({},g.options),s.editor=g,"textarea"==c?(g._wrapTextarea(),r=g.wrapper.find(".k-editor-toolbar"),f.id&&r.attr("aria-controls",f.id)):(g.element.attr("contenteditable",!0).addClass("k-widget k-editor k-editor-inline"),s.popup=!0,r=e('<ul class="k-editor-toolbar" role="toolbar" />').insertBefore(n)),g.toolbar=new m.Toolbar(r[0],s),g.toolbar.bindTo(g),"textarea"==c&&setTimeout(function(){var e=g.wrapper[0].style.height,t=parseInt(e,10),n=g.wrapper.height();e.indexOf("px")>0&&!isNaN(t)&&n>t&&g.wrapper.height(t-(n-t))}),g._resizable(),g._initializeContentElement(g),g.keyboard=new m.Keyboard([new m.BackspaceHandler(g),new m.TypingHandler(g),new m.SystemHandler(g),new m.SelectAllHandler(g)]),g.clipboard=new m.Clipboard(this),g.undoRedoStack=new a.util.UndoRedoStack,i&&i.value?o=i.value:g.textarea?(o=f.value,g.options.encoded&&e.trim(f.defaultValue).length&&(o=f.defaultValue),d=v.getAllComments(e("<div></div>").html(o)[0]),o=y.cacheComments(o,d),o=o.replace(/[\r\n\v\f\t ]+/gi," "),o=y.retrieveComments(o,d)):o=f.innerHTML,g.value(o||"\ufeff"),this._registerHandler(document,{mousedown:function(){g._endTyping()},mouseup:function(e){g._mouseup(e)}}),g._initializeImmutables(),g.toolbar.resize(),a.notify(g))},setOptions:function(e){var t=this;l.fn.setOptions.call(t,e),e.tools&&t.toolbar.bindTo(t),this._initializePlaceholder()},_togglePlaceholder:function(t){var n=this,i=n.body,o=e(i),r=n.options.placeholder;n.textarea&&r&&(o.attr("aria-label",function(){return t?r:""}),o.toggleClass(v,t))},_endTyping:function(){var e=this.keyboard;try{e.isTypingInProgress()&&(e.endTyping(!0),this.saveSelection())}catch(t){}},_selectionChange:function(){this._selectionStarted=!1,this.saveSelection(),this.trigger("select",{})},_resizable:function(){var n,i,o=this.options.resizable,r=e.isPlainObject(o)?o.content===t||o.content===!0:o;r&&this.textarea&&(n=e("<div class='k-resize-handle'><span class='k-icon k-i-arrow-45-down-right' /></div>").insertAfter(this.textarea),this.wrapper.addClass("k-resizable"),this.wrapper.kendoResizable(u({},this.options.resizable,{draggableElement:n,start:function(t){var n=this.editor=e(t.currentTarget).closest(".k-editor");this.initialSize=n.height(),n.find("td:last").append("<div class='k-overlay' />")},resize:function(e){var t=e.y.initialDelta,n=this.initialSize+t,i=this.options.min||0,o=this.options.max||1/0;n=Math.min(o,Math.max(i,n)),this.editor.height(n)},resizeend:function(){this.editor.find(".k-overlay").remove(),this.editor=null}})),a.support.mobileOS.ios&&(i=this.wrapper.getKendoResizable(),i.draggable.options.ignore=m))},_initializeTableResizing:function(){var e=this;a.ui.editor.TableResizing.create(e),e._showTableResizeHandlesProxy=h(e._showTableResizeHandles,e),e.bind(g,e._showTableResizeHandlesProxy)},_destroyTableResizing:function(){var e=this,t=e.tableResizing;t&&(t.destroy(),e.tableResizing=null),e._showTableResizeHandlesProxy&&e.unbind(g,e._showTableResizeHandlesProxy)},_showTableResizeHandles:function(){var e=this,t=e.tableResizing;t&&t.showResizeHandles()},_initializeColumnResizing:function(){a.ui.editor.ColumnResizing.create(this)},_destroyColumnResizing:function(){var e=this;e.columnResizing&&(e.columnResizing.destroy(),e.columnResizing=null)},_initializeRowResizing:function(){a.ui.editor.RowResizing.create(this)},_destroyRowResizing:function(){var e=this;e.rowResizing&&(e.rowResizing.destroy(),e.rowResizing=null)},_wrapTextarea:function(){var t=this,n=t.element,i=n[0].style.width,o=n[0].style.height,r=y.editorWrapperTemplate,a=e(r).insertBefore(n).width(i).height(o),s=a.find(".k-editable-area");n.attr("autocomplete","off").appendTo(s).addClass("k-content k-raw-content").css("display","none"),t.textarea=n,t.wrapper=a},_createContentElement:function(t){var n,i,o,r=this,s=r.textarea,l=r.options.domain,d=l||document.domain,u="",h='javascript:""',p="";return s.hide(),n=e("<iframe />",{title:r.options.messages.editAreaTitle,frameBorder:"0"})[0],e(n).css("display","").addClass("k-content").attr("tabindex",s[0].tabIndex).insertBefore(s),(l||d!=location.hostname)&&(u='<script>document.domain="'+d+'"</script>',h="javascript:document.write('"+u+"')",n.src=h),i=n.contentWindow||n,o=i.document||n.contentDocument,e(n).one("load",function(){r.toolbar.decorateFrom(o.body)}),p=document.getElementsByTagName("html")[0].getAttribute("lang")||w,o.open(),o.write("<!DOCTYPE html><html lag='"+p+"'><head><meta charset='utf-8' /><title>Kendo UI Editor content</title><style>html{padding:0;margin:0;height:100%;min-height:100%;cursor:text;}body{padding:0;margin:0;}body{box-sizing:border-box;font-size:12px;font-family:Verdana,Geneva,sans-serif;margin-top:-1px;padding:5px .4em 0;word-wrap: break-word;-webkit-nbsp-mode: space;-webkit-line-break: after-white-space;"+(a.support.isRtl(s)?"direction:rtl;":"")+(c.ios?"word-break:keep-all;":"")+"}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em}h3{font-size:1.16em}h4{font-size:1em}h5{font-size:.83em}h6{font-size:.7em}p{margin:0 0 1em;}.k-marker{display:none;}.k-paste-container,.Apple-style-span{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}ul,ol{padding-left:2.5em}span{-ms-high-contrast-adjust:none;}a{color:#00a}code{font-size:1.23em}telerik\\3Ascript{display: none;}.k-table{width:100%;border-spacing:0;margin: 0 0 1em;}.k-table td{min-width:1px;padding:.2em .3em;}.k-table,.k-table td{outline:0;border: 1px dotted #ccc;}.k-table p{margin:0;padding:0;}.k-column-resize-handle-wrapper {position: absolute; height: 10px; width:10px; cursor: col-resize; z-index: 2;}.k-column-resize-handle {width: 100%; height: 100%;}.k-column-resize-handle > .k-column-resize-marker {width:2px; height:100%; margin:0 auto; background-color:#00b0ff; display:none; opacity:0.8;}.k-row-resize-handle-wrapper {position: absolute; cursor: row-resize; z-index:2; width: 10px; height: 10px;}.k-row-resize-handle {display: table; width: 100%; height: 100%;}.k-row-resize-marker-wrapper{display: table-cell; height:100%; width:100%; margin:0; padding:0; vertical-align: middle;}.k-row-resize-marker{margin: 0; padding:0; width:100%; height:2px; background-color: #00b0ff; opacity:0.8; display:none;}.k-table-resize-handle-wrapper {position: absolute; background-color: #fff; border: 1px solid #000; z-index: 100; width: 5px; height: 5px;}.k-table-resize-handle {width: 100%; height: 100%;}.k-table-resize-handle.k-resize-east{cursor:e-resize;}.k-table-resize-handle.k-resize-north{cursor:n-resize;}.k-table-resize-handle.k-resize-northeast{cursor:ne-resize;}.k-table-resize-handle.k-resize-northwest{cursor:nw-resize;}.k-table-resize-handle.k-resize-south{cursor:s-resize;}.k-table-resize-handle.k-resize-southeast{cursor:se-resize;}.k-table-resize-handle.k-resize-southwest{cursor:sw-resize;}.k-table-resize-handle.k-resize-west{cursor:w-resize;}.k-table.k-table-resizing{opacity:0.6;}.k-placeholder{color:grey}k\\:script{display:none;}</style>"+u+e.map(t,function(e){return"<link rel='stylesheet' href='"+e+"'>"}).join("")+"</head><body autocorrect='off' contenteditable='true'></body></html>"),o.close(),i},_blur:function(){var e=this.textarea,t=e?e.val():this._oldValue,n=this.options.encoded?this.encodedValue():this.value();this.update(),e&&e.trigger("blur"),n!=t&&(this.trigger("change"),e&&e.trigger("change"))},_spellCorrect:function(e){var n,i=!1;this._registerHandler(e.body,{contextmenu:function(){e.one("select",function(){n=null}),e._spellCorrectTimeout=setTimeout(function(){n=new a.ui.editor.RestorePoint(e.getRange(),e.body),i=!1},10)},input:function(){if(n)return a.support.browser.mozilla&&!i?(i=!0,t):(a.ui.editor._finishUpdate(e,n),t)}})},_registerHandler:function(t,n,i){var o,r,s,l=this,c=".kendoEditor";if(t=e(t),this._handlers||(this._handlers=[]),t.length)if(e.isPlainObject(n))for(s in n)n.hasOwnProperty(s)&&this._registerHandler(t,s,n[s]);else for(o=a.applyEventMap(n).split(" "),r=0;r<o.length;r++)l._handlers.push({element:t,type:o[r]+c,handler:i}),t.on(o[r]+c,i)},_deregisterHandlers:function(){var e,t,n=this._handlers;for(e=0;e<n.length;e++)t=n[e],t.element.off(t.type,t.handler);this._handlers=[]},_initializeContentElement:function(){var n,i,o,r,s,l=this;l.textarea?(l.window=l._createContentElement(l.options.stylesheets),n=l.document=l.window.contentDocument||l.window.document,n.body||(r=n.createElement("body"),r.setAttribute("contenteditable","true"),r.setAttribute("autocorrect","off"),n.getElementsByTagName("html")[0].appendChild(r),s=setInterval(function(){e(l.document).find("body").length>1&&(e(l.document).find("body:last").remove(),window.clearInterval(s))},10)),l.body=n.body,i=l.window,o=n,this._registerHandler(n,"mouseup",h(this._mouseup,this))):(l.window=window,n=l.document=document,l.body=l.element[0],i=l.body,o=l.body,l.toolbar.decorateFrom(l.body)),this._registerHandler(i,"blur",h(this._blur,this)),l._registerHandler(o,"down",h(l._mousedown,l));try{n.execCommand("enableInlineTableEditing",null,!1)}catch(c){}a.support.touch&&this._registerHandler(n,{keydown:function(){a._activeElement()!=n.body&&l.window.focus()}}),this._initializePlaceholder(),this._spellCorrect(l),this._registerHandler(l.body,{keydown:function(e){var n,i,o,r,a,s,c,d,u,p;return(e.keyCode!==f.BACKSPACE&&e.keyCode!==f.DELETE||"true"===l.body.getAttribute("contenteditable"))&&(e.keyCode===f.F10?(setTimeout(h(l.toolbar.focus,l.toolbar),100),l.toolbar.preventPopupHide=!0,e.preventDefault(),t):(e.keyCode!=f.LEFT&&e.keyCode!=f.RIGHT||(n=l.getRange(),i=e.keyCode==f.LEFT,o=n[i?"startContainer":"endContainer"],r=n[i?"startOffset":"endOffset"],a=i?-1:1,s=r+a,c=i?s:r,3==o.nodeType&&"\ufeff"==o.nodeValue[c]&&(n.setStart(o,s),n.collapse(!0),l.selectRange(n))),d=l.toolbar.tools,u=l.keyboard.toolFromShortcut(d,e),p=u?d[u].options:{},u&&!p.keyPressCommand?(e.preventDefault(),/^(undo|redo)$/.test(u)||l.keyboard.endTyping(!0),l.trigger("keydown",e),l.exec(u),l._runPostContentKeyCommands(e),!1):(l.keyboard.clearTimeout(),l.keyboard.keydown(e),t)))},keypress:function(e){setTimeout(function(){l._runPostContentKeyCommands(e),l._showTableResizeHandles()},0)},keyup:function(t){var n=[f.BACKSPACE,f.TAB,f.PAGEUP,f.PAGEDOWN,f.END,f.HOME,f.LEFT,f.UP,f.RIGHT,f.DOWN,f.INSERT,f.DELETE];(e.inArray(t.keyCode,n)>-1||65==t.keyCode&&t.ctrlKey&&!t.altKey&&!t.shiftKey)&&(window.clearTimeout(this._refreshInterval),this._refreshInterval=window.setTimeout(function(){l._selectionChange()},b)),l.keyboard.keyup(t)},click:function(e){var t,n=a.ui.editor.Dom;"img"===n.name(e.target)&&(t=l.createRange(),t.selectNode(e.target),l.selectRange(t))},"cut copy paste drop dragover":function(e){l.clipboard["on"+e.type](e)},focusin:function(){l.body.hasAttribute("contenteditable")&&(e(this).addClass("k-state-active"),l.toolbar.show(),l._togglePlaceholder(!1))},focusout:function(){setTimeout(function(){var t,n=a._activeElement(),i=l.body,o=l.toolbar;o.options.popup&&(t=o.window.element.get(0),t&&!e.contains(t,n)&&t!=n&&(o.preventPopupHide=!1)),n==i||e.contains(i,n)||e(n).is(".k-editortoolbar-dragHandle")||o.focused()||(e(i).removeClass("k-state-active"),o.hide()),l._togglePlaceholder(!l.value().trim())},10)}}),l._initializeColumnResizing(),l._initializeRowResizing(),l._initializeTableResizing()},_initializePlaceholder:function(){var t,n,i=this,o=i.options.placeholder;i.textarea&&o&&(t="<style id='"+_+"'>."+v+":before { content: '"+o+"'; }</style>",n=e(i.document.head),n.find("#"+_).remove(),n.append(t),i._togglePlaceholder(!i.value().trim()))},_initializeImmutables:function(){var e=this,t=a.ui.editor;e.options.immutables&&(e.immutables=new t.Immutables(e))},_mousedown:function(t){var n,i=this;i._selectionStarted=!0,e(i.body).parents(".k-window").length&&t.stopPropagation(),d.gecko||(n=e(t.target).closest("a[href]"),(2==t.which||1==t.which&&t.ctrlKey)&&n&&n.is("a[href]")&&window.open(n.attr("href"),"_new"),t.target.tagName&&"html"===t.target.tagName.toLowerCase()&&setTimeout(function(){i.body.focus()},0))},_mouseup:function(t){var n=this;a.support.mobileOS.ios&&t&&e(t.target).is(m)||n._selectionStarted&&setTimeout(function(){n._selectionChange()},1)},_runPostContentKeyCommands:function(e){var t,n,i,o,r=this.getRange(),a=this.keyboard.toolsFromShortcut(this.toolbar.tools,e);for(t=0;t<a.length;t++)n=a[t],i=n.options,i.keyPressCommand&&(o=new i.command({range:r}),o.changesContent()&&(this.keyboard.endTyping(!0),this.exec(n.name)))},refresh:function(){var e,t=this;t.textarea&&(t._destroyResizings(),e=t.value(),t.textarea.val(e),t.wrapper.find("iframe").remove(),t._initializeContentElement(t),t.value(e))},events:["select","change","execute","error","paste","keydown","keyup"],options:{name:"Editor",messages:x,placeholder:"",formats:{},encoded:!0,domain:null,resizable:!1,deserialization:{custom:null},serialization:{entities:!0,semantic:!0,scripts:!1},pasteCleanup:{all:!1,css:!1,custom:null,keepNewLines:!1,msAllFormatting:!1,msConvertLists:!0,msTags:!0,none:!1,span:!1},stylesheets:[],dialogOptions:{modal:!0,resizable:!1,draggable:!0,animation:!1},imageBrowser:null,fileBrowser:null,fontName:[{text:"Arial",value:"Arial, Helvetica, sans-serif"},{text:"Courier New",value:'"Courier New", Courier, monospace'},{text:"Georgia",value:"Georgia, serif"},{text:"Impact",value:"Impact, Charcoal, sans-serif"},{text:"Lucida Console",value:'"Lucida Console", Monaco, monospace'},{text:"Tahoma",value:"Tahoma, Geneva, sans-serif"},{text:"Times New Roman",value:'"Times New Roman", Times, serif'},{text:"Trebuchet MS",value:'"Trebuchet MS", Helvetica, sans-serif'},{text:"Verdana",value:"Verdana, Geneva, sans-serif"}],fontSize:[{text:"1 (8pt)",value:"xx-small"},{text:"2 (10pt)",value:"x-small"},{text:"3 (12pt)",value:"small"},{text:"4 (14pt)",value:"medium"},{text:"5 (18pt)",value:"large"},{text:"6 (24pt)",value:"x-large"},{text:"7 (36pt)",value:"xx-large"}],formatBlock:[{text:"Paragraph",value:"p"},{text:"Quotation",value:"blockquote"},{text:"Heading 1",value:"h1"},{text:"Heading 2",value:"h2"},{text:"Heading 3",value:"h3"},{text:"Heading 4",value:"h4"},{text:"Heading 5",value:"h5"},{text:"Heading 6",value:"h6"}],tools:[].concat.call(["formatting"],S.basic,S.alignment,S.lists,S.indenting,S.links,["insertImage"],S.tables)},destroy:function(){var e=this;l.fn.destroy.call(this),this._endTyping(!0),this._deregisterHandlers(),clearTimeout(this._spellCorrectTimeout),this._focusOutside(),this.toolbar.destroy(),e._destroyUploadWidget(),e._destroyResizings(),a.destroy(this.wrapper)},_destroyResizings:function(){var e=this;e._destroyTableResizing(),a.ui.editor.TableResizing.dispose(e),e._destroyRowResizing(),a.ui.editor.RowResizing.dispose(e),e._destroyColumnResizing(),a.ui.editor.ColumnResizing.dispose(e)},_focusOutside:function(){if(a.support.browser.msie&&this.textarea){var t=e("<input style='position:fixed;left:1px;top:1px;width:1px;height:1px;font-size:0;border:0;opacity:0' />").appendTo(document.body).focus();t.blur().remove()}},_destroyUploadWidget:function(){var e=this;e._uploadWidget&&(e._uploadWidget.destroy(),e._uploadWidget=null)},state:function(e){var t,n,i=T.defaultTools[e],o=i&&(i.options.finder||i.finder),r=a.ui.editor.RangeUtils;return!!o&&(t=this.getRange(),n=r.textNodes(t),!n.length&&t.collapsed&&(n=[t.startContainer]),o.getFormat?o.getFormat(n):o.isFormatted(n))},value:function(e){var n=this.body,i=a.ui.editor,o=this.options,r=i.Serializer.domToXhtml(n,o.serialization);return e===t?r:(e!=r&&(i.Serializer.htmlToDom(e,n,o.deserialization),this.selectionRestorePoint=null,this.update(),this.toolbar.refreshTools()),t)},saveSelection:function(t){t=t||this.getRange();var n=t.commonAncestorContainer,i=this.body;(n==i||e.contains(i,n))&&(this.selectionRestorePoint=new a.ui.editor.RestorePoint(t,i))},_focusBody:function(){var e,t=this.body,n=this.wrapper&&this.wrapper.find("iframe")[0],i=this.document.documentElement,o=a._activeElement();!n&&t.scrollHeight>t.clientHeight?(e=t.scrollTop,t.focus(),t.scrollTop=e):o!=t&&o!=n&&(e=i.scrollTop,t.focus(),i.scrollTop=e)},restoreSelection:function(){this._focusBody(),this.selectionRestorePoint&&this.selectRange(this.selectionRestorePoint.toRange())},focus:function(){this.restoreSelection()},update:function(e){e=e||this.options.encoded?this.encodedValue():this.value(),this.textarea?(this.textarea.val(e),this._togglePlaceholder(!e.trim())):this._oldValue=e},encodedValue:function(){return a.ui.editor.Dom.encode(this.value())},createRange:function(e){return a.ui.editor.RangeUtils.createRange(e||this.document)},getSelection:function(){return a.ui.editor.SelectionUtils.selectionFromDocument(this.document)},selectRange:function(e){this._focusBody();var t=this.getSelection();t.removeAllRanges(),t.addRange(e),this.saveSelection(e)},getRange:function(){var e=this.getSelection(),t=e&&e.rangeCount>0?e.getRangeAt(0):this.createRange(),n=this.document;return t.startContainer!=n||t.endContainer!=n||t.startOffset||t.endOffset||(t.setStart(this.body,0),t.collapse(!0)),t},_containsRange:function(e){var t=a.ui.editor.Dom,n=this.body;return e&&t.isAncestorOrSelf(n,e.startContainer)&&t.isAncestorOrSelf(n,e.endContainer)},_deleteSavedRange:function(){"_range"in this&&delete this._range},selectedHtml:function(){return a.ui.editor.Serializer.domToXhtml(this.getRange().cloneContents())},paste:function(t,n){this.focus();var i=new a.ui.editor.InsertHtmlCommand(e.extend({range:this.getRange(),html:t},n));i.editor=this,i.exec()},exec:function(e,n){var i,o,r,a,s=this,l=null;if(!e)throw Error("kendoEditor.exec(): `name` parameter cannot be empty");if("true"!==s.body.getAttribute("contenteditable")&&"print"!==e&&"pdf"!==e&&"exportAs"!==e)return!1;if(e=e.toLowerCase(),s.keyboard.isTypingInProgress()||(s._focusBody(),s.selectRange(s._range||s.getRange())),o=s.toolbar.toolById(e),!o)for(a in T.defaultTools)if(a.toLowerCase()==e){o=T.defaultTools[a];break}if(o){if(i=s.getRange(),o.command&&(l=o.command(u({range:i,body:s.body,immutables:!!s.immutables},n))),r=s.trigger("execute",{name:e,command:l}))return;if(/^(undo|redo)$/i.test(e))s.undoRedoStack[e]();else if(l&&(s.execCommand(l),l.async))return l.change=h(s._selectionChange,s),t;s._selectionChange()}},execCommand:function(e){e.managesUndoRedo||this.undoRedoStack.push(e),e.editor=this,e.exec()}});T.defaultTools={undo:{options:{key:"Z",ctrl:!0}},redo:{options:{key:"Y",ctrl:!0}}},a.ui.plugin(T),n=s.extend({init:function(e){this.options=e},initialize:function(e,t){e.attr({unselectable:"on",title:t.title,"aria-label":t.title})},command:function(e){return new this.options.command(e)},update:e.noop}),n.exec=function(e,t,n){e.exec(t,{value:n})},y.registerTool("separator",new n({template:new k({template:y.separatorTemplate})})),i=d.msie&&d.version<9?"\ufeff":"",o="\ufeff",r=o,(d.msie||d.edge)&&(r=o=" "),u(a.ui,{editor:{ToolTemplate:k,EditorUtils:y,Tool:n,_bomFill:i,emptyElementContent:o,emptyTableCellContent:r}}),a.PDFMixin&&(a.PDFMixin.extend(T.prototype),T.prototype._drawPDF=function(){return a.drawing.drawDOM(this.body,this.options.pdf)},T.prototype.saveAsPDF=function(){var t,n=new e.Deferred,i=n.promise(),o={promise:i};if(!this.trigger("pdfExport",o))return t=this.options.pdf,this._drawPDF(n).then(function(e){return a.drawing.exportPDF(e,t)}).done(function(e){a.saveAs({dataURI:e,fileName:t.fileName,proxyURL:t.proxyURL,proxyTarget:t.proxyTarget,forceProxy:t.forceProxy}),n.resolve()}).fail(function(e){n.reject(e)}),i})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/dom.min",["editor/main.min"],e)}(function(){!function(e){function t(e){var t,n,i={};for(t=0,n=e.length;t<n;t++)i[e[t]]=!0;return i}var n,i,o,r,a,s,l,c,d,u,h,p=window.kendo,f=e.map,g=e.extend,m=p.support.browser,v="style",_="float",b="cssFloat",w="styleFloat",k="class",y="k-marker",x=t("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed".split(",")),C="p,div,h1,h2,h3,h4,h5,h6,address,applet,blockquote,button,center,dd,dir,dl,dt,fieldset,form,frameset,hr,iframe,isindex,map,menu,noframes,noscript,object,pre,script,table,tbody,td,tfoot,th,thead,tr,header,article,nav,footer,section,aside,main,figure,figcaption".split(","),S=C.concat(["ul","ol","li"]),T=t(S),D=t("area,base,br,col,command,embed,hr,img,input,keygen,link,menuitem,meta,param,source,track,wbr".split(",")),A="span,em,a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,strike,strong,sub,sup,textarea,tt,u,var,data,time,mark,ruby".split(","),E=t(A),I=t("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected".split(",")),M=function(e){1==e.nodeType&&e.normalize()};m.msie&&m.version>=8&&(M=function(e){if(1==e.nodeType&&e.firstChild)for(var t=e.firstChild,n=t;;){if(n=n.nextSibling,!n)break;3==n.nodeType&&3==t.nodeType&&(n.nodeValue=t.nodeValue+n.nodeValue,h.remove(t)),t=n}}),n=/^\s+$/,i=/^[\n\r\t]+$/,o=/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i,r=/\ufeff/g,a=/^(\s+|\ufeff)$/,l="color,padding-left,padding-right,padding-top,padding-bottom,background-color,background-attachment,background-image,background-position,background-repeat,border-top-style,border-top-width,border-top-color,border-bottom-style,border-bottom-width,border-bottom-color,border-left-style,border-left-width,border-left-color,border-right-style,border-right-width,border-right-color,font-family,font-size,font-style,font-variant,font-weight,line-height".split(","),c=/[<>\&]/g,d=/[\u00A0-\u2666<>\&]/g,u={34:"quot",38:"amp",39:"apos",60:"lt",62:"gt",160:"nbsp",161:"iexcl",162:"cent",163:"pound",164:"curren",165:"yen",166:"brvbar",167:"sect",168:"uml",169:"copy",170:"ordf",171:"laquo",172:"not",173:"shy",174:"reg",175:"macr",176:"deg",177:"plusmn",178:"sup2",179:"sup3",180:"acute",181:"micro",182:"para",183:"middot",184:"cedil",185:"sup1",186:"ordm", +187:"raquo",188:"frac14",189:"frac12",190:"frac34",191:"iquest",192:"Agrave",193:"Aacute",194:"Acirc",195:"Atilde",196:"Auml",197:"Aring",198:"AElig",199:"Ccedil",200:"Egrave",201:"Eacute",202:"Ecirc",203:"Euml",204:"Igrave",205:"Iacute",206:"Icirc",207:"Iuml",208:"ETH",209:"Ntilde",210:"Ograve",211:"Oacute",212:"Ocirc",213:"Otilde",214:"Ouml",215:"times",216:"Oslash",217:"Ugrave",218:"Uacute",219:"Ucirc",220:"Uuml",221:"Yacute",222:"THORN",223:"szlig",224:"agrave",225:"aacute",226:"acirc",227:"atilde",228:"auml",229:"aring",230:"aelig",231:"ccedil",232:"egrave",233:"eacute",234:"ecirc",235:"euml",236:"igrave",237:"iacute",238:"icirc",239:"iuml",240:"eth",241:"ntilde",242:"ograve",243:"oacute",244:"ocirc",245:"otilde",246:"ouml",247:"divide",248:"oslash",249:"ugrave",250:"uacute",251:"ucirc",252:"uuml",253:"yacute",254:"thorn",255:"yuml",402:"fnof",913:"Alpha",914:"Beta",915:"Gamma",916:"Delta",917:"Epsilon",918:"Zeta",919:"Eta",920:"Theta",921:"Iota",922:"Kappa",923:"Lambda",924:"Mu",925:"Nu",926:"Xi",927:"Omicron",928:"Pi",929:"Rho",931:"Sigma",932:"Tau",933:"Upsilon",934:"Phi",935:"Chi",936:"Psi",937:"Omega",945:"alpha",946:"beta",947:"gamma",948:"delta",949:"epsilon",950:"zeta",951:"eta",952:"theta",953:"iota",954:"kappa",955:"lambda",956:"mu",957:"nu",958:"xi",959:"omicron",960:"pi",961:"rho",962:"sigmaf",963:"sigma",964:"tau",965:"upsilon",966:"phi",967:"chi",968:"psi",969:"omega",977:"thetasym",978:"upsih",982:"piv",8226:"bull",8230:"hellip",8242:"prime",8243:"Prime",8254:"oline",8260:"frasl",8472:"weierp",8465:"image",8476:"real",8482:"trade",8501:"alefsym",8592:"larr",8593:"uarr",8594:"rarr",8595:"darr",8596:"harr",8629:"crarr",8656:"lArr",8657:"uArr",8658:"rArr",8659:"dArr",8660:"hArr",8704:"forall",8706:"part",8707:"exist",8709:"empty",8711:"nabla",8712:"isin",8713:"notin",8715:"ni",8719:"prod",8721:"sum",8722:"minus",8727:"lowast",8730:"radic",8733:"prop",8734:"infin",8736:"ang",8743:"and",8744:"or",8745:"cap",8746:"cup",8747:"int",8756:"there4",8764:"sim",8773:"cong",8776:"asymp",8800:"ne",8801:"equiv",8804:"le",8805:"ge",8834:"sub",8835:"sup",8836:"nsub",8838:"sube",8839:"supe",8853:"oplus",8855:"otimes",8869:"perp",8901:"sdot",8968:"lceil",8969:"rceil",8970:"lfloor",8971:"rfloor",9001:"lang",9002:"rang",9674:"loz",9824:"spades",9827:"clubs",9829:"hearts",9830:"diams",338:"OElig",339:"oelig",352:"Scaron",353:"scaron",376:"Yuml",710:"circ",732:"tilde",8194:"ensp",8195:"emsp",8201:"thinsp",8204:"zwnj",8205:"zwj",8206:"lrm",8207:"rlm",8211:"ndash",8212:"mdash",8216:"lsquo",8217:"rsquo",8218:"sbquo",8220:"ldquo",8221:"rdquo",8222:"bdquo",8224:"dagger",8225:"Dagger",8240:"permil",8249:"lsaquo",8250:"rsaquo",8364:"euro"},h={block:T,inline:E,findNodeIndex:function(e,t){var n=0;if(!e)return-1;for(;;){if(e=e.previousSibling,!e)break;t&&3==e.nodeType||n++}return n},isDataNode:function(e){return e&&null!==e.nodeValue&&null!==e.data},isAncestorOf:function(t,n){try{return!h.isDataNode(t)&&(e.contains(t,h.isDataNode(n)?n.parentNode:n)||n.parentNode==t)}catch(i){return!1}},isAncestorOrSelf:function(e,t){return h.isAncestorOf(e,t)||e==t},findClosestAncestor:function(e,t){if(h.isAncestorOf(e,t))for(;t&&t.parentNode!=e;)t=t.parentNode;return t},getAllComments:function(e){for(var t=[],n=document.createNodeIterator(e,NodeFilter.SHOW_COMMENT,function(){return NodeFilter.FILTER_ACCEPT},!1),i=n.nextNode();i;)t.push(i.nodeValue),i=n.nextNode();return t},getNodeLength:function(e){return h.isDataNode(e)?e.length:e.childNodes.length},splitDataNode:function(e,t){for(var n,i=e.cloneNode(!1),o="",r=e.nextSibling;r&&3==r.nodeType&&r.nodeValue;)o+=r.nodeValue,n=r,r=r.nextSibling,h.remove(n);e.deleteData(t,e.length),i.deleteData(0,t),i.nodeValue+=o,h.insertAfter(i,e)},attrEquals:function(e,t){var n,i;for(n in t)if(i=e[n],n==_&&(i=e[p.support.cssFloat?b:w]),"object"==typeof i){if(!h.attrEquals(i,t[n]))return!1}else if(i!=t[n])return!1;return!0},blockParentOrBody:function(e){return h.parentOfType(e,S)||e.ownerDocument.body},blockParents:function(t){var n,i,o,r=[];for(n=0,i=t.length;n<i;n++)o=h.parentOfType(t[n],h.blockElements),o&&e.inArray(o,r)<0&&r.push(o);return r},windowFromDocument:function(e){return e.defaultView||e.parentWindow},normalize:M,blockElements:S,nonListBlockElements:C,inlineElements:A,empty:x,fillAttrs:I,nodeTypes:{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12},toHex:function(e){var t=o.exec(e);return t?"#"+f(t.slice(1),function(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}).join(""):e},encode:function(e,t){var n=!t||t.entities?d:c;return e.replace(n,function(e){var t=e.charCodeAt(0),n=u[t];return n?"&"+n+";":e})},isBom:function(e){return e&&3===e.nodeType&&/^[\ufeff]+$/.test(e.nodeValue)},stripBom:function(e){return(e||"").replace(r,"")},stripBomNode:function(e){h.isBom(e)&&e.parentNode.removeChild(e)},insignificant:function(e){var t=e.attributes;return"k-marker"==e.className||h.is(e,"br")&&("k-br"==e.className||t._moz_dirty||t._moz_editor_bogus_node)},tableCell:function(e){return h.is(e,"td")||h.is(e,"th")},significantNodes:function(t){return e.grep(t,function(e){var t=h.name(e);return"br"!=t&&(!h.insignificant(e)&&(!h.emptyTextNode(e)&&!(1==e.nodeType&&!x[t]&&h.emptyNode(e))))})},emptyTextNode:function(e){return e&&3==e.nodeType&&a.test(e.nodeValue)},emptyNode:function(e){return 1==e.nodeType&&!h.significantNodes(e.childNodes).length},name:function(e){return e.nodeName.toLowerCase()},significantChildNodes:function(t){return e.grep(t.childNodes,function(e){return 3!=e.nodeType||!h.isWhitespace(e)})},lastTextNode:function(e){var t,n=null;if(3==e.nodeType)return e;for(t=e.lastChild;t;t=t.previousSibling)if(n=h.lastTextNode(t))return n;return n},is:function(e,t){return e&&h.name(e)==t},isMarker:function(e){return e.className==y},isWhitespace:function(e){return n.test(e.nodeValue)},allWhitespaceContent:function(e){for(var t=e.firstChild;t&&h.isWhitespace(t);)t=t.nextSibling;return!t},isEmptyspace:function(e){return i.test(e.nodeValue)},htmlIndentSpace:function(t){var n,o,a,s,l,c;return!(!h.isDataNode(t)||!h.isWhitespace(t))&&(!!i.test(t.nodeValue)||(n=function(e,t){for(;e[t];)if(e=e[t],h.significantNodes([e]).length>0)return e},o=t.parentNode,a=n(t,"previousSibling"),s=n(t,"nextSibling"),r.test(t.nodeValue)?!(!a&&!s):!!e(o).is("tr,tbody,thead,tfoot,table,ol,ul")||!!((h.isBlock(o)||h.is(o,"body"))&&(l=a&&h.isBlock(a),c=s&&h.isBlock(s),!s&&l||!a&&c||l&&c))))},isBlock:function(e){return T[h.name(e)]},isSelfClosing:function(e){return D[h.name(e)]},isEmpty:function(e){return x[h.name(e)]},isInline:function(e){return E[h.name(e)]},isBr:function(e){return"br"==h.name(e)},list:function(e){var t=e?h.name(e):"";return"ul"==t||"ol"==t||"dl"==t},scrollContainer:function(e){var t=h.windowFromDocument(e),n=(t.contentWindow||t).document||t.ownerDocument||t;return n="BackCompat"==n.compatMode?n.body:n.scrollingElement||n.documentElement},scrollTo:function(t,n){var i,o,r,a,s=t.ownerDocument,l=h.windowFromDocument(s),c=l.innerHeight,d=h.scrollContainer(s);h.isDataNode(t)?n?(a=h.create(s,"span",{innerHTML:""}),h.insertBefore(a,t),i=e(a)):i=e(t.parentNode):i=e(t),o=i.offset().top,r=i[0].offsetHeight,!n&&r||(r=parseInt(i.css("line-height"),10)||Math.ceil(1.2*parseInt(i.css("font-size"),10))||15),a&&h.remove(a),r+o>d.scrollTop+c&&(d.scrollTop=r+o-c)},persistScrollTop:function(e){s=h.scrollContainer(e).scrollTop},offset:function(e,t){for(var n={top:e.offsetTop,left:e.offsetLeft},i=e.offsetParent;i&&(!t||h.isAncestorOf(t,i));)n.top+=i.offsetTop,n.left+=i.offsetLeft,i=i.offsetParent;return n},restoreScrollTop:function(e){"number"==typeof s&&(h.scrollContainer(e).scrollTop=s,s=void 0)},insertAt:function(e,t,n){e.insertBefore(t,e.childNodes[n]||null)},insertBefore:function(e,t){return t.parentNode?t.parentNode.insertBefore(e,t):t},insertAfter:function(e,t){return t.parentNode.insertBefore(e,t.nextSibling)},remove:function(e){e.parentNode&&e.parentNode.removeChild(e)},removeChildren:function(e){for(;e.firstChild;)e.removeChild(e.firstChild)},removeTextSiblings:function(e){for(var t=e.parentNode;e.nextSibling&&3==e.nextSibling.nodeType;)t.removeChild(e.nextSibling);for(;e.previousSibling&&3==e.previousSibling.nodeType;)t.removeChild(e.previousSibling)},trim:function(e){var t,n;for(t=e.childNodes.length-1;t>=0;t--)n=e.childNodes[t],h.isDataNode(n)?h.stripBom(n.nodeValue).length||h.remove(n):n.className!=y&&(h.trim(n),(!h.isEmpty(n)&&0===n.childNodes.length||h.isBlock(n)&&h.allWhitespaceContent(n))&&h.remove(n));return e},closest:function(e,t){for(;e&&h.name(e)!=t;)e=e.parentNode;return e},closestBy:function(e,t,n){for(;e&&!t(e);){if(n&&n(e))return null;e=e.parentNode}return e},sibling:function(e,t){do e=e[t];while(e&&1!=e.nodeType);return e},next:function(e){return h.sibling(e,"nextSibling")},prev:function(e){return h.sibling(e,"previousSibling")},parentOfType:function(e,t){do e=e.parentNode;while(e&&!h.ofType(e,t));return e},ofType:function(t,n){return e.inArray(h.name(t),n)>=0},changeTag:function(e,t,n){var i,o,r,a,s,l=h.create(e.ownerDocument,t),c=e.attributes;if(!n)for(i=0,o=c.length;i<o;i++)s=c[i],s.specified&&(r=s.nodeName,a=s.nodeValue,r==k?l.className=a:r==v?l.style.cssText=e.style.cssText:l.setAttribute(r,a));for(;e.firstChild;)l.appendChild(e.firstChild);return h.insertBefore(l,e),h.remove(e),l},editableParent:function(e){for(;e&&(3==e.nodeType||"true"!==e.contentEditable);)e=e.parentNode;return e},wrap:function(e,t){return h.insertBefore(t,e),t.appendChild(e),t},unwrap:function(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)},wrapper:function(t){var n=h.closestBy(t,function(e){return e.parentNode&&h.significantNodes(e.parentNode.childNodes).length>1});return e(n).is("body,.k-editor")?void 0:n},create:function(e,t,n){return h.attr(e.createElement(t),n)},createEmptyNode:function(e,t,n){var i=h.attr(e.createElement(t),n);return i.innerHTML="\ufeff",i},attr:function(e,t){t=g({},t),t&&v in t&&(h.style(e,t.style),delete t.style);for(var n in t)null===t[n]?(e.removeAttribute(n),delete t[n]):"className"==n&&(e[n]=t[n]);return g(e,t)},mergeAttributes:function(t,n){t.attributes.length&&e.each(t.attributes,function(){"contenteditable"!==this.name&&e(n).attr(this.name,this.value)})},style:function(t,n){e(t).css(n||{})},unstyle:function(e,t){for(var n in t)n==_&&(n=p.support.cssFloat?b:w),e.style[n]="";""===e.style.cssText&&e.removeAttribute(v)},inlineStyle:function(t,n,i){var o,r=e(h.create(t.ownerDocument,n,i));return t.appendChild(r[0]),o=f(l,function(e){return m.msie&&"line-height"==e&&"1px"==r.css(e)?"line-height:1.5":e+":"+r.css(e)}).join(";"),r.remove(),o},getEffectiveBackground:function(e){var t=e.css("background-color")||"";return t.indexOf("rgba(0, 0, 0, 0")<0&&"transparent"!==t?t:"html"===e[0].tagName.toLowerCase()?"Window":h.getEffectiveBackground(e.parent())},innerText:function(e){var t=e.innerHTML;return t=t.replace(/<!--(.|\s)*?-->/gi,""),t=t.replace(/<\/?[^>]+?\/?>/gm,"")},removeClass:function(t,n){var i,o,r=" "+t.className+" ",a=n.split(" ");for(i=0,o=a.length;i<o;i++)r=r.replace(" "+a[i]+" "," ");r=e.trim(r),r.length?t.className=r:t.removeAttribute(k)},commonAncestor:function(){var e,t,n,i,o,r=arguments.length,a=[],s=1/0,l=null;if(!r)return null;if(1==r)return arguments[0];for(e=0;e<r;e++){for(t=[],n=arguments[e];n;)t.push(n),n=n.parentNode;a.push(t.reverse()),s=Math.min(s,t.length)}if(1==r)return a[0][0];for(e=0;e<s;e++){for(i=a[0][e],o=1;o<r;o++)if(i!=a[o][e])return l;l=i}return l},closestSplittableParent:function(t){var n,i,o;return n=1==t.length?h.parentOfType(t[0],["ul","ol"]):h.commonAncestor.apply(null,t),n||(n=h.parentOfType(t[0],["p","td"])||t[0].ownerDocument.body),h.isInline(n)&&(n=h.blockParentOrBody(n)),i=f(t,h.editableParent),o=h.commonAncestor(i)[0],e.contains(n,o)&&(n=o),n},closestEditable:function(t,n){var i,o=h.editableParent(t);return i=h.ofType(t,n)?t:h.parentOfType(t,n),i&&o&&e.contains(i,o)?i=o:!i&&o&&(i=o),i},closestEditableOfType:function(t,n){var i=h.closestEditable(t,n);if(i&&h.ofType(i,n)&&!e(i).is(".k-editor"))return i},filter:function(e,t,n){var i=function(t){return h.name(t)==e};return h.filterBy(t,i,n)},filterBy:function(e,t,n){for(var i,o=0,r=e.length,a=[];o<r;o++)i=t(e[o]),(i&&!n||!i&&n)&&a.push(e[o]);return a},ensureTrailingBreaks:function(t){var n=e(t).find("p,td,th"),i=n.length,o=0;if(i)for(;o<i;o++)h.ensureTrailingBreak(n[o]);else h.ensureTrailingBreak(t)},removeTrailingBreak:function(t){e(t).find("br[type=_moz],.k-br").remove()},ensureTrailingBreak:function(e){var t,n,i;h.removeTrailingBreak(e),t=e.lastChild,n=t&&h.name(t),(!n||"br"!=n&&"img"!=n||"br"==n&&"k-br"!=t.className)&&(i=e.ownerDocument.createElement("br"),i.className="k-br",e.appendChild(i))}},p.ui.editor.Dom=h}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/serializer.min",["editor/dom.min"],e)}(function(){!function(e,t){var n,i,o,r,a=window.kendo,s=a.ui.editor,l=s.Dom,c=e.extend,d="xx-small,x-small,small,medium,large,x-large,xx-large".split(","),u=/"/g,h=/<br[^>]*>/i,p=/^\d+(\.\d*)?(px)?$/i,f=/<p>(?: )?<\/p>/i,g=/(\*?[-#\/\*\\\w]+(?:\[[0-9a-z_-]+\])?)\s*:\s*((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/g,m=/^sizzle-\d+/i,v=/^k-script-/i,_=/\s*onerror\s*=\s*(?:'|")?([^'">\s]*)(?:'|")?/i,b='<br class="k-br">',w=document.createElement("div");w.innerHTML=" <hr>",n=3===w.firstChild.nodeType,w=null,i=e.isFunction,o="td",r={toEditableHtml:function(e){return(e||"").replace(/<!\[CDATA\[(.*)?\]\]>/g,"<!--[CDATA[$1]]-->").replace(/<(\/?)script([^>]*)>/gi,"<$1k:script$2>").replace(/<img([^>]*)>/gi,function(e){return e.replace(_,"")}).replace(/(<\/?img[^>]*>)[\r\n\v\f\t ]+/gi,"$1").replace(/^<(table|blockquote)/i,b+"<$1").replace(/^[\s]*( |\u00a0)/i,"$1").replace(/<\/(table|blockquote)>$/i,"</$1>"+b)},_toEditableImmutables:function(t){for(var n=s.Immutables.immutable,i=l.emptyTextNode,o=t.firstChild,r=t.lastChild;i(o);)o=o.nextSibling;for(;i(r);)r=r.previousSibling;o&&n(o)&&e(b).prependTo(t),r&&n(r)&&e(b).appendTo(t)},_fillEmptyElements:function(t){e(t).find("p,td").each(function(){var t,n=e(this);if(/^\s*$/g.test(n.text())&&!n.find("img,input").length){for(t=this;t.firstChild&&3!=t.firstChild.nodeType;)t=t.firstChild;1!=t.nodeType||l.empty[l.name(t)]||(t.innerHTML=l.is(t,"td")?a.ui.editor.emptyTableCellContent:a.ui.editor.emptyElementContent)}})},_removeSystemElements:function(t){e(".k-paste-container",t).remove()},_resetOrderedLists:function(e){var t,n,i,o=e.getElementsByTagName("ol");for(t=0;t<o.length;t++)n=o[t],i=n.getAttribute("start"),n.setAttribute("start",1),i?n.setAttribute("start",i):n.removeAttribute(i)},_preventScriptExecution:function(t){e(t).find("*").each(function(){var e,t,n,i,o=this.attributes,r=[];for(t=0,n=o.length;t<n;t++)e=o[t],i=e.nodeName,e.specified&&/^on/i.test(i)&&(this.setAttribute("k-script-"+i,e.value),r.push(i));for(t=0,n=r.length;t<n;t++)this.removeAttribute(r[t])})},htmlToDom:function(t,n,o){var s=a.support.browser,c=s.msie,d=c&&s.version<9,u="originalsrc",h="originalhref",p=o||{},f=p.immutables;return t=r.toEditableHtml(t),d&&(t="<br/>"+t,t=t.replace(/href\s*=\s*(?:'|")?([^'">\s]*)(?:'|")?/,h+'="$1"'),t=t.replace(/src\s*=\s*(?:'|")?([^'">\s]*)(?:'|")?/,u+'="$1"')),i(p.custom)&&(t=p.custom(t)||t),n.innerHTML=t,f&&f.deserialize(n),d?(l.remove(n.firstChild),e(n).find("k\\:script,script,link,img,a").each(function(){var e=this;e[h]&&(e.setAttribute("href",e[h]),e.removeAttribute(h)),e[u]&&(e.setAttribute("src",e[u]),e.removeAttribute(u))})):c&&(l.normalize(n),r._resetOrderedLists(n)),r._preventScriptExecution(n),r._fillEmptyElements(n),r._removeSystemElements(n),r._toEditableImmutables(n),e("table",n).addClass("k-table"),n},domToXhtml:function(i,r){function c(t){return e.grep(t,function(e){return"style"!=e.name})}function _(e,t){E.push("<"+t),y(e),E.push(">")}function b(t){var n,i,o,r=e.trim,a=r(t),s=[];for(g.lastIndex=0;;){if(n=g.exec(a),!n)break;i=r(n[1].toLowerCase()),o=r(n[2]),"font-size-adjust"!=i&&"font-stretch"!=i&&(i.indexOf("color")>=0?o=l.toHex(o):i.indexOf("font")>=0?o=o.replace(u,"'"):/\burl\(/g.test(o)&&(o=o.replace(u,"")),s.push({property:i,value:o}))}return s}function w(e){var t,n=b(e);for(t=0;t<n.length;t++)E.push(n[t].property),E.push(":"),E.push(n[t].value),E.push(";")}function k(e){var t,n,i,o,a,s,c=[],d=e.attributes;for(n=0,i=d.length;n<i;n++)t=d[n],o=t.nodeName,a=t.value,s=t.specified,"value"==o&&"value"in e&&e.value?s=!0:"type"==o&&"text"==a?s=!0:"class"!=o||a?m.test(o)?s=!1:"complete"==o?s=!1:"altHtml"==o?s=!1:"start"==o&&l.is(e,"ul")?s=!1:"start"==o&&l.is(e,"ol")&&"1"==a?s=!1:o.indexOf("_moz")>=0?s=!1:v.test(o)?s=!!r.scripts:"data-role"==o&&"resizable"==a&&(l.is(e,"tr")||l.is(e,"td"))&&(s=!1):s=!1,s&&c.push(t);return c}function y(n,i){var o,r,s,c,d,u,h,f;if(i=i||k(n),l.is(n,"img")&&(u=n.style.width,h=n.style.height,f=e(n),u&&p.test(u)&&(f.attr("width",parseInt(u,10)),l.unstyle(n,{width:t})),h&&p.test(h)&&(f.attr("height",parseInt(h,10)),l.unstyle(n,{height:t}))),i.length)for(o=0,r=i.length;o<r;o++)s=i[o],c=s.nodeName,d=s.value,"class"==c&&"k-table"==d||(c=c.replace(v,""),E.push(" "),E.push(c),E.push('="'),"style"==c?w(d||n.style.cssText):E.push("src"==c||"href"==c?a.htmlEncode(n.getAttribute(c,2)):l.fillAttrs[c]?c:d),E.push('"'))}function x(e,t,n){for(var i=e.firstChild;i;i=i.nextSibling)T(i,t,n)}function C(e){return e.nodeValue.replace(/\ufeff/g,"")}function S(e){if(l.isBom(e)){do{if(e=e.parentNode,l.is(e,o)&&1===e.childNodes.length)return!0;if(1!==e.childNodes.length)return!1}while(!l.isBlock(e));return!0}return!1}function T(i,o,a){var c,d,u,h,p,f,g=i.nodeType;if(I&&s.Immutables.immutable(i))E.push(I.serialize(i));else if(1==g){if(c=l.name(i),f=e(i),f.hasClass("k-table-resize-handle-wrapper")||f.hasClass("k-column-resize-handle-wrapper")||f.hasClass("k-row-resize-handle-wrapper"))return;if(!c||l.insignificant(i))return;if(!r.scripts&&("script"==c||"k:script"==c))return;if(d=M[c],d&&(t===d.semantic||r.semantic^d.semantic))return d.start(i),x(i,!1,d.skipEncoding),d.end(i),t;E.push("<"),E.push(c),y(i),l.empty[c]?E.push(" />"):(E.push(">"),x(i,o||l.is(i,"pre")),E.push("</"),E.push(c),E.push(">"))}else if(3==g){if(S(i))return E.push(" "),t;h=C(i),!o&&n&&(u=i.parentNode,p=i.previousSibling,p||(p=(l.isInline(u)?u:i).previousSibling),p&&""!==p.innerHTML&&!l.isBlock(p)||(h=h.replace(/^[\r\n\v\f\t ]+/,"")),h=h.replace(/ +/," ")),E.push(a?h:l.encode(h,r))}else 4==g?(E.push("<![CDATA["),E.push(i.data),E.push("]]>")):8==g&&(i.data.indexOf("[CDATA[")<0?(E.push("<!--"),E.push(i.data),E.push("-->")):(E.push("<!"),E.push(i.data),E.push(">")))}function D(e){var t=e.childNodes.length,n=t&&3==e.firstChild.nodeType;return n&&(1==t||2==t&&l.insignificant(e.lastChild))}function A(){e.isFunction(r.custom)&&(E=r.custom(E)||E)}var E=[],I=r&&r.immutables,M={iframe:{start:function(e){_(e,"iframe")},end:function(){E.push("</iframe>")}},"k:script":{start:function(e){_(e,"script")},end:function(){E.push("</script>")},skipEncoding:!0},span:{semantic:!0,start:function(t){var n,i,o=t.style,r=k(t),a=c(r);a.length&&(E.push("<span"),y(t,a),E.push(">")),"underline"==o.textDecoration&&E.push("<u>"),n=[],o.color&&n.push('color="'+l.toHex(o.color)+'"'),o.fontFamily&&n.push('face="'+o.fontFamily+'"'),o.fontSize&&(i=e.inArray(o.fontSize,d),n.push('size="'+i+'"')),n.length&&E.push("<font "+n.join(" ")+">")},end:function(e){var t=e.style;(t.color||t.fontFamily||t.fontSize)&&E.push("</font>"),"underline"==t.textDecoration&&E.push("</u>"),c(k(e)).length&&E.push("</span>")}},strong:{semantic:!0,start:function(e){_(e,"b")},end:function(){E.push("</b>")}},em:{semantic:!0,start:function(e){_(e,"i")},end:function(){E.push("</i>")}},b:{semantic:!1,start:function(e){_(e,"strong")},end:function(){E.push("</strong>")}},i:{semantic:!1,start:function(e){_(e,"em")},end:function(){E.push("</em>")}},u:{semantic:!1,start:function(t){var n,i,o;E.push("<span"),n=k(t),i=e(n).filter(function(e,t){return"style"==t.name})[0],o={nodeName:"style",value:"text-decoration:underline;"},i&&(o.value=i.value,/text-decoration/i.test(o.value)||(o.value="text-decoration:underline;"+o.value),n.splice(e.inArray(i,n),1)),n.push(o),y(t,n),E.push(">")},end:function(){E.push("</span>")}},font:{semantic:!1,start:function(e){var t,n,i;E.push('<span style="'),t=e.getAttribute("color"),n=d[e.getAttribute("size")],i=e.getAttribute("face"),t&&(E.push("color:"),E.push(l.toHex(t)),E.push(";")),i&&(E.push("font-family:"),E.push(i),E.push(";")),n&&(E.push("font-size:"),E.push(n),E.push(";")),E.push('">')},end:function(){E.push("</span>")}}};return M.script=M["k:script"],r=r||{},t===r.semantic&&(r.semantic=!0),D(i)?(E=l.encode(C(i.firstChild).replace(/[\r\n\v\f\t ]+/," "),r),A(),E):(x(i),E=E.join(""),A(),""===E.replace(h,"").replace(f,"")?"":E)}},c(s,{Serializer:r})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/components.min",["editor/serializer.min"],e)}(function(){!function(e,t){var n=window.kendo,i=n.ui.DropDownList,o=n.ui.editor.Dom,r=i.extend({init:function(t,o){var r=this;i.fn.init.call(r,t,o),n.support.mobileOS.ios&&(this._initSelectOverlay(),this.bind("dataBound",e.proxy(this._initSelectOverlay,this))),r.text(r.options.title),r.element.attr("title",r.options.title),r.wrapper.attr("title",r.options.title),r.bind("open",function(){if(r.options.autoSize){var e,t=r.list;t.css({whiteSpace:"nowrap",width:"auto"}),e=t.width(),e>0?e+=20:e=r._listWidth,t.css("width",e+n.support.scrollbar()),r._listWidth=e}})},options:{name:"SelectBox",index:-1},_initSelectOverlay:function(){var t,i,o,r,a=this,s=a.value(),l=this.dataSource.view(),c="",d=n.htmlEncode;for(i=0;i<l.length;i++)t=l[i],c+="<option value='"+d(t.value)+"'",t.value==s&&(c+=" selected"),c+=">"+d(t.text)+"</option>";o=e("<select class='k-select-overlay'>"+c+"</select>"),r=e(this.element).closest(".k-widget"),r.next(".k-select-overlay").remove(),o.insertAfter(r),o.on("change",function(){a.value(this.value),a.trigger("change")})},value:function(e){var n=this,o=i.fn.value.call(n,e);return e===t?o:(i.fn.value.call(n)||n.text(n.options.title),t)},decorate:function(t){var n,i,r,a,s=this,l=s.dataSource,c=l.data();for(t&&s.list.css("background-color",o.getEffectiveBackground(e(t))),n=0;n<c.length;n++)i=c[n].tag||"span",r=c[n].className,a=o.inlineStyle(t,i,{className:r}),a=a.replace(/"/g,"'"),c[n].style=a+";display:inline-block";l.trigger("change")}});n.ui.plugin(r),n.ui.editor.SelectBox=r}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/range.min",["editor/components.min"],e)}(function(){!function(e){function t(e,t,n,i){var o,r,a,s;if(e==t)return i-n;for(o=t;o&&o.parentNode!=e;)o=o.parentNode;if(o)return y(o)-n;for(o=e;o&&o.parentNode!=t;)o=o.parentNode;if(o)return i-y(o)-1;for(r=k.commonAncestor(e,t),a=e;a&&a.parentNode!=r;)a=a.parentNode;for(a||(a=r),s=t;s&&s.parentNode!=r;)s=s.parentNode;return s||(s=r),a==s?0:y(s)-y(a)}function n(e,n){function i(e){try{return t(e.startContainer,e.endContainer,e.startOffset,e.endOffset)<0}catch(n){return!0}}i(e)&&(n?(e.commonAncestorContainer=e.endContainer=e.startContainer,e.endOffset=e.startOffset):(e.commonAncestorContainer=e.startContainer=e.endContainer,e.startOffset=e.endOffset),e.collapsed=!0)}function i(e){e.collapsed=e.startContainer==e.endContainer&&e.startOffset==e.endOffset;for(var t=e.startContainer;t&&t!=e.endContainer&&!k.isAncestorOf(t,e.endContainer);)t=t.parentNode;e.commonAncestorContainer=t}function o(e){var t=e.duplicate(),n=e.duplicate();return t.collapse(!0),n.collapse(!1),k.commonAncestor(e.parentElement(),t.parentElement(),n.parentElement())}function r(e,t,n){var i,o=t[n?"startContainer":"endContainer"],r=t[n?"startOffset":"endOffset"],a=0,s=x(o),l=s?o:o.childNodes[r]||null,c=s?o.parentNode:o,d=t.ownerDocument,u=d.body.createTextRange();3!=o.nodeType&&4!=o.nodeType||(a=r),c||(c=d.body),"img"==c.nodeName.toLowerCase()?(u.moveToElementText(c),u.collapse(!1),e.setEndPoint(n?"StartToStart":"EndToStart",u)):(i=c.insertBefore(k.create(d,"a"),l),u.moveToElementText(i),k.remove(i),u[n?"moveStart":"moveEnd"]("character",a),u.collapse(!1),e.setEndPoint(n?"StartToStart":"EndToStart",u))}function a(e,t,n,i){var o,r,a,s,l,c,d,u=k.create(t.ownerDocument,"a"),h=e.duplicate(),p=i?"StartToStart":"StartToEnd",f=!1;u.innerHTML="\ufeff",h.collapse(i),r=h.parentElement(),k.isAncestorOrSelf(n,r)||(r=n);do f?r.insertBefore(u,u.previousSibling):(r.appendChild(u),f=!0),h.moveToElementText(u);while((o=h.compareEndPoints(p,e))>0&&u.previousSibling);a=u.nextSibling,o==-1&&x(a)?(h.setEndPoint(i?"EndToStart":"EndToEnd",e),k.remove(u),c=[a,h.text.length]):(s=!i&&u.previousSibling,l=i&&u.nextSibling,x(l)?c=[l,0]:x(s)?c=[s,s.length]:(d=y(u),c=r.nextSibling&&d==r.childNodes.length-1?[r.nextSibling,0]:[r,d]),k.remove(u)),t[i?"setStart":"setEnd"].apply(t,c)}var s,l,c,d,u,h,p,f,g,m=window.kendo,v=m.Class,_=e.extend,b=m.ui.editor,w=m.support.browser,k=b.Dom,y=k.findNodeIndex,x=k.isDataNode,C=k.findClosestAncestor,S=k.getNodeLength,T=k.normalize,D={selectionFromWindow:function(e){return"getSelection"in e?e.getSelection():new l(e.document)},selectionFromRange:function(e){var t=g.documentFromRange(e);return D.selectionFromDocument(t)},selectionFromDocument:function(e){return D.selectionFromWindow(k.windowFromDocument(e))}},A=v.extend({init:function(t){e.extend(this,{ownerDocument:t,startContainer:t,endContainer:t,commonAncestorContainer:t,startOffset:0,endOffset:0,collapsed:!0})},setStart:function(e,t){this.startContainer=e,this.startOffset=t,i(this),n(this,!0)},setEnd:function(e,t){this.endContainer=e,this.endOffset=t,i(this),n(this,!1)},setStartBefore:function(e){this.setStart(e.parentNode,y(e))},setStartAfter:function(e){this.setStart(e.parentNode,y(e)+1)},setEndBefore:function(e){this.setEnd(e.parentNode,y(e))},setEndAfter:function(e){this.setEnd(e.parentNode,y(e)+1)},selectNode:function(e){this.setStartBefore(e),this.setEndAfter(e)},selectNodeContents:function(e){this.setStart(e,0),this.setEnd(e,e[1===e.nodeType?"childNodes":"nodeValue"].length)},collapse:function(e){var t=this;e?t.setEnd(t.startContainer,t.startOffset):t.setStart(t.endContainer,t.endOffset)},deleteContents:function(){var e=this,t=e.cloneRange();e.startContainer!=e.commonAncestorContainer&&e.setStartAfter(C(e.commonAncestorContainer,e.startContainer)),e.collapse(!0),function n(e){for(;e.next();)e.hasPartialSubtree()?n(e.getSubtreeIterator()):e.remove()}(new s(t))},cloneContents:function(){var e=g.documentFromRange(this);return function t(n){for(var i,o=e.createDocumentFragment();i=n.next();)i=i.cloneNode(!n.hasPartialSubtree()),n.hasPartialSubtree()&&i.appendChild(t(n.getSubtreeIterator())),o.appendChild(i);return o}(new s(this))},extractContents:function(){var e,t=this,n=t.cloneRange();return t.startContainer!=t.commonAncestorContainer&&t.setStartAfter(C(t.commonAncestorContainer,t.startContainer)),t.collapse(!0),e=g.documentFromRange(t),function i(n){for(var o,r=e.createDocumentFragment();o=n.next();)n.hasPartialSubtree()?(o=o.cloneNode(!1),o.appendChild(i(n.getSubtreeIterator()))):n.remove(t.originalRange),r.appendChild(o);return r}(new s(n))},insertNode:function(e){var t=this;x(t.startContainer)?(t.startOffset!=t.startContainer.nodeValue.length&&k.splitDataNode(t.startContainer,t.startOffset),k.insertAfter(e,t.startContainer)):k.insertAt(t.startContainer,e,t.startOffset),t.setStart(t.startContainer,t.startOffset)},cloneRange:function(){return e.extend(new A(this.ownerDocument),{startContainer:this.startContainer,endContainer:this.endContainer,commonAncestorContainer:this.commonAncestorContainer,startOffset:this.startOffset,endOffset:this.endOffset,collapsed:this.collapsed,originalRange:this})},toString:function(){var e=this.startContainer.nodeName,t=this.endContainer.nodeName;return("#text"==e?this.startContainer.nodeValue:e)+"("+this.startOffset+") : "+("#text"==t?this.endContainer.nodeValue:t)+"("+this.endOffset+")"}});A.fromNode=function(e){return new A(e.ownerDocument)},s=v.extend({init:function(t){if(e.extend(this,{range:t,_current:null,_next:null,_end:null}),!t.collapsed){var n=t.commonAncestorContainer;this._next=t.startContainer!=n||x(t.startContainer)?C(n,t.startContainer):t.startContainer.childNodes[t.startOffset],this._end=t.endContainer!=n||x(t.endContainer)?C(n,t.endContainer).nextSibling:t.endContainer.childNodes[t.endOffset]}},hasNext:function(){return!!this._next},next:function(){var e=this,t=e._current=e._next;return e._next=e._current&&e._current.nextSibling!=e._end?e._current.nextSibling:null,x(e._current)&&(e.range.endContainer==e._current&&(t=t.cloneNode(!0),t.deleteData(e.range.endOffset,t.length-e.range.endOffset)),e.range.startContainer==e._current&&(t=t.cloneNode(!0),t.deleteData(0,e.range.startOffset))),t},traverse:function(e){function t(){return i._current=i._next,i._next=i._current&&i._current.nextSibling!=i._end?i._current.nextSibling:null,i._current}for(var n,i=this;n=t();)i.hasPartialSubtree()?i.getSubtreeIterator().traverse(e):e(n);return n},remove:function(e){var t,n,i,o,r,a=this,s=a.range.startContainer==a._current,l=a.range.endContainer==a._current;x(a._current)&&(s||l)?(t=s?a.range.startOffset:0,n=l?a.range.endOffset:a._current.length,i=n-t,e&&(s||l)&&(a._current==e.startContainer&&t<=e.startOffset&&(e.startOffset-=i),a._current==e.endContainer&&n<=e.endOffset&&(e.endOffset-=i)),a._current.deleteData(t,i)):(o=a._current.parentNode,!e||a.range.startContainer!=o&&a.range.endContainer!=o||(r=y(a._current),o==e.startContainer&&r<=e.startOffset&&(e.startOffset-=1),o==e.endContainer&&r<e.endOffset&&(e.endOffset-=1)),k.remove(a._current))},hasPartialSubtree:function(){return!x(this._current)&&(k.isAncestorOrSelf(this._current,this.range.startContainer)||k.isAncestorOrSelf(this._current,this.range.endContainer))},getSubtreeIterator:function(){return new s(this.getSubRange())},getSubRange:function(){var e=this,t=e.range.cloneRange();return t.selectNodeContents(e._current),k.isAncestorOrSelf(e._current,e.range.startContainer)&&t.setStart(e.range.startContainer,e.range.startOffset),k.isAncestorOrSelf(e._current,e.range.endContainer)&&t.setEnd(e.range.endContainer,e.range.endOffset),t}}),l=v.extend({init:function(e){this.ownerDocument=e,this.rangeCount=1},addRange:function(e){var t=this.ownerDocument.body.createTextRange();r(t,e,!1),r(t,e,!0),t.select()},removeAllRanges:function(){var e=this.ownerDocument.selection;"None"!=e.type&&e.empty()},getRangeAt:function(){var e,t,n,i,r,s,l,c,d=new A(this.ownerDocument),u=this.ownerDocument.selection;try{if(e=u.createRange(),t=e.item?e.item(0):e.parentElement(),t.ownerDocument!=this.ownerDocument)return d}catch(h){return d}if("Control"==u.type)d.selectNode(e.item(0));else if(n=o(e),a(e,d,n,!0),a(e,d,n,!1),9==d.startContainer.nodeType&&d.setStart(d.endContainer,d.startOffset),9==d.endContainer.nodeType&&d.setEnd(d.startContainer,d.endOffset),0===e.compareEndPoints("StartToEnd",e)&&d.collapse(!1),i=d.startContainer,r=d.endContainer,s=this.ownerDocument.body,!(d.collapsed||0!==d.startOffset||d.endOffset!=S(d.endContainer)||i==r&&x(i)&&i.parentNode==s)){for(l=!1,c=!1;0===y(i)&&i==i.parentNode.firstChild&&i!=s;)i=i.parentNode,l=!0;for(;y(r)==S(r.parentNode)-1&&r==r.parentNode.lastChild&&r!=s;)r=r.parentNode,c=!0;i==s&&r==s&&l&&c&&(d.setStart(i,0),d.setEnd(r,S(s)))}return d}}),c=v.extend({init:function(e){this.enumerate=function(){function t(e){if(k.is(e,"img")||3==e.nodeType&&(!k.isEmptyspace(e)||"\ufeff"==e.nodeValue))n.push(e);else for(e=e.firstChild;e;)t(e),e=e.nextSibling}var n=[];return new s(e).traverse(t),n}}}),d=s.extend({hasPartialSubtree:function(){var e=b.Immutables&&b.Immutables.immutable;return e&&!e(this._current)&&s.fn.hasPartialSubtree.call(this)},getSubtreeIterator:function(){return new d(this.getSubRange())}}),u=v.extend({init:function(e){this.enumerate=function(){ +function t(e){if(i&&!i(e))if(k.is(e,"img")||3==e.nodeType&&(!k.isEmptyspace(e)||"\ufeff"==e.nodeValue))n.push(e);else for(e=e.firstChild;e;)t(e),e=e.nextSibling}var n=[],i=b.Immutables&&b.Immutables.immutable;return new d(e).traverse(t),n}}}),h=v.extend({init:function(e,t,n){var i=this;i.range=e,i.rootNode=g.documentFromRange(e),i.body=t||i.getEditable(e),"body"!=k.name(i.body)&&(i.rootNode=i.body),i.startContainer=i.nodeToPath(e.startContainer),i.endContainer=i.nodeToPath(e.endContainer),i.startOffset=i.offset(e.startContainer,e.startOffset),i.endOffset=i.offset(e.endContainer,e.endOffset),i.immutables=n&&n.immutables,i.immutables&&(i.serializedImmutables=b.Immutables.removeImmutables(i.body)),i.html=i.body.innerHTML,i.immutables&&!i.serializedImmutables.empty&&b.Immutables.restoreImmutables(i.body,i.serializedImmutables)},index:function(e){for(var t,n=0,i=e.nodeType;e=e.previousSibling;)t=e.nodeType,3==t&&i==t||n++,i=t;return n},getEditable:function(e){for(var t=e.commonAncestorContainer;t&&(3==t.nodeType||t.attributes&&(!t.attributes.contentEditable||"false"==t.attributes.contentEditable.nodeValue.toLowerCase()));)t=t.parentNode;return t},restoreHtml:function(){var e=this;k.removeChildren(e.body),e.body.innerHTML=e.html,e.immutables&&!e.serializedImmutables.empty&&b.Immutables.restoreImmutables(e.body,e.serializedImmutables)},offset:function(e,t){if(3==e.nodeType)for(;(e=e.previousSibling)&&3==e.nodeType;)t+=e.nodeValue.length;return t},nodeToPath:function(e){for(var t=[];e!=this.rootNode;)t.push(this.index(e)),e=e.parentNode;return t},toRangePoint:function(e,t,n,i){for(var o=this.rootNode,r=n.length,a=i;r--;)o=o.childNodes[n[r]];for(;o&&3==o.nodeType&&o.nodeValue.length<a;)a-=o.nodeValue.length,o=o.nextSibling;o&&a>=0&&e[t?"setStart":"setEnd"](o,a)},toRange:function(){var e=this,t=e.range.cloneRange();return e.toRangePoint(t,!0,e.startContainer,e.startOffset),e.toRangePoint(t,!1,e.endContainer,e.endOffset),t}}),p=v.extend({init:function(){this.caret=null},addCaret:function(e){var t=this,n=t.caret=k.create(g.documentFromRange(e),"span",{className:"k-marker"});return e.insertNode(n),k.stripBomNode(n.previousSibling),k.stripBomNode(n.nextSibling),e.selectNode(n),n},removeCaret:function(e){var t,n,i,o,r=this,a=r.caret.previousSibling,s=0;a&&(s=x(a)?a.nodeValue.length:y(a)),t=r.caret.parentNode,n=a?y(a):0,k.remove(r.caret),T(t),i=t.childNodes[n],x(i)?e.setStart(i,s):i?(o=k.lastTextNode(i),o?e.setStart(o,o.nodeValue.length):e[a?"setStartAfter":"setStartBefore"](i)):(w.msie||t.innerHTML||(t.innerHTML='<br _moz_dirty="" />'),e.selectNodeContents(t)),e.collapse(!0)},add:function(e,t){var n,i,o=this,r=e.collapsed&&!g.isExpandable(e),a=g.documentFromRange(e);return t&&e.collapsed&&(o.addCaret(e),e=g.expand(e)),n=e.cloneRange(),n.collapse(!1),o.end=k.create(a,"span",{className:"k-marker"}),n.insertNode(o.end),n=e.cloneRange(),n.collapse(!0),o.start=o.end.cloneNode(!0),n.insertNode(o.start),o._removeDeadMarkers(o.start,o.end),r&&(i=a.createTextNode("\ufeff"),k.insertAfter(i.cloneNode(),o.start),k.insertBefore(i,o.end)),T(e.commonAncestorContainer),e.setStartBefore(o.start),e.setEndAfter(o.end),e},_removeDeadMarkers:function(e,t){e.previousSibling&&"\ufeff"==e.previousSibling.nodeValue&&k.remove(e.previousSibling),t.nextSibling&&"\ufeff"==t.nextSibling.nodeValue&&k.remove(t.nextSibling)},_normalizedIndex:function(e){for(var t=y(e),n=e;n.previousSibling;)3==n.nodeType&&3==n.previousSibling.nodeType&&t--,n=n.previousSibling;return t},remove:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p=this,f=p.start,g=p.end;for(T(e.commonAncestorContainer);!f.nextSibling&&f.parentNode;)f=f.parentNode;for(;!g.previousSibling&&g.parentNode;)g=g.parentNode;if(t=f.previousSibling&&3==f.previousSibling.nodeType&&f.nextSibling&&3==f.nextSibling.nodeType,n=g.previousSibling&&3==g.previousSibling.nodeType&&g.nextSibling&&3==g.nextSibling.nodeType,i=t&&n,f=f.nextSibling,g=g.previousSibling,o=f===g&&k.isBom(f),o&&f.length>1&&(f.nodeValue=f.nodeValue.charAt(0)),r=o,a=!1,f==p.end&&(a=!!p.start.previousSibling,f=g=p.start.previousSibling||p.end.nextSibling,r=!0),k.remove(p.start),k.remove(p.end),!f||!g)return e.selectNodeContents(e.commonAncestorContainer),void e.collapse(!0);if(s=r?x(f)?f.nodeValue.length:f.childNodes.length:0,l=x(g)?g.nodeValue.length:g.childNodes.length,3==f.nodeType)for(;f.previousSibling&&3==f.previousSibling.nodeType;)f=f.previousSibling,s+=f.nodeValue.length;if(3==g.nodeType)for(;g.previousSibling&&3==g.previousSibling.nodeType;)g=g.previousSibling,l+=g.nodeValue.length;c=f.parentNode,d=g.parentNode,u=this._normalizedIndex(f),h=this._normalizedIndex(g),T(c),3==f.nodeType&&(f=c.childNodes[u]),T(d),3==g.nodeType&&(g=d.childNodes[h]),r?(3==f.nodeType?e.setStart(f,s):e[a?"setStartAfter":"setStartBefore"](f),e.collapse(!0)):(3==f.nodeType?e.setStart(f,s):e.setStartBefore(f),3==g.nodeType?e.setEnd(g,l):e.setEndAfter(g)),p.caret&&p.removeCaret(e)}}),f=/[\u0009-\u000d]|\u0020|\u00a0|\ufeff|\.|,|;|:|!|\(|\)|\?/,g={nodes:function(e){var t=g.textNodes(e);return t.length||(e.selectNodeContents(e.commonAncestorContainer),t=g.textNodes(e),t.length||(t=k.significantChildNodes(e.commonAncestorContainer))),t},textNodes:function(e){return new c(e).enumerate()},editableTextNodes:function(e){var t=[],n=b.Immutables&&b.Immutables.immutableParent;return n&&!n(e.commonAncestorContainer)&&(t=new u(e).enumerate()),t},documentFromRange:function(e){var t=e.startContainer;return 9==t.nodeType?t:t.ownerDocument},createRange:function(e){return w.msie&&w.version<9?new A(e):e.createRange()},selectRange:function(e){var t,n=g.image(e);n&&(e.setStartAfter(n),e.setEndAfter(n)),t=D.selectionFromRange(e),t.removeAllRanges(),t.addRange(e)},stringify:function(e){return m.format("{0}:{1} - {2}:{3}",k.name(e.startContainer),e.startOffset,k.name(e.endContainer),e.endOffset)},split:function(e,t,n){function i(i){var o,r=e.cloneRange();r.collapse(i),r[i?"setStartBefore":"setEndAfter"](t),o=r.extractContents(),n&&(o=k.trim(o)),k[i?"insertBefore":"insertAfter"](o,t)}i(!0),i(!1)},mapAll:function(t,n){var i=[];return new s(t).traverse(function(t){var o=n(t);o&&e.inArray(o,i)<0&&i.push(o)}),i},getAll:function(e,t){var n=t;return"string"==typeof t&&(t=function(e){return k.is(e,n)}),g.mapAll(e,function(e){if(t(e))return e})},getMarkers:function(e){return g.getAll(e,function(e){return"k-marker"==e.className})},image:function(e){var t=g.getAll(e,"img");if(1==t.length)return t[0]},isStartOf:function(e,t){var n,i,o;if(0!==e.startOffset)return!1;for(n=e.cloneRange();0===n.startOffset&&n.startContainer!=t;){for(i=k.findNodeIndex(n.startContainer),o=n.startContainer.parentNode;i>0&&o[i-1]&&k.insignificant(o[i-1]);)i--;n.setStart(o,i)}return 0===n.startOffset&&n.startContainer==t},isEndOf:function(e,t){function n(e){k.insignificant(e)||k.isDataNode(e)&&/^[\ufeff]*$/.test(e.nodeValue)||o.push(e)}var i,o,r=e.cloneRange();return r.collapse(!1),i=r.startContainer,k.isDataNode(i)&&r.startOffset==k.getNodeLength(i)&&(r.setStart(i.parentNode,k.findNodeIndex(i)+1),r.collapse(!0)),r.setEnd(t,k.getNodeLength(t)),o=[],new s(r).traverse(n),!o.length},wrapSelectedElements:function(e){function t(e,t){var n,i=k.getNodeLength(t);if(e==i)return!0;for(n=e;n<i;n++)if(!k.insignificant(t.childNodes[n]))return!1;return!0}for(var n=k.editableParent(e.startContainer),i=k.editableParent(e.endContainer);0===e.startOffset&&e.startContainer!=n;)e.setStart(e.startContainer.parentNode,k.findNodeIndex(e.startContainer));for(;t(e.endOffset,e.endContainer)&&e.endContainer!=i;)e.setEnd(e.endContainer.parentNode,k.findNodeIndex(e.endContainer)+1);return e},expand:function(e){var t,n,i,o,r=e.cloneRange(),a=r.startContainer.childNodes[0===r.startOffset?0:r.startOffset-1],s=r.endContainer.childNodes[r.endOffset];return x(a)&&x(s)?(t=a.nodeValue,n=s.nodeValue,t&&n?(i=t.split("").reverse().join("").search(f),o=n.search(f),i&&o?(o=o==-1?n.length:o,i=i==-1?0:t.length-i,r.setStart(a,i),r.setEnd(s,o),r):r):r):r},isExpandable:function(e){var t,n,i,o,r,a,s=e.startContainer,l=g.documentFromRange(e);return s!=l&&s!=l.body&&(t=e.cloneRange(),!!(n=s.nodeValue)&&(i=n.substring(0,t.startOffset),o=n.substring(t.startOffset),r=0,a=0,i&&(r=i.split("").reverse().join("").search(f)),o&&(a=o.search(f)),r&&a))}},_(b,{SelectionUtils:D,W3CRange:A,RangeIterator:s,W3CSelection:l,RangeEnumerator:c,RestorePoint:h,Marker:p,RangeUtils:g})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/immutables.min",["editor/range.min"],e)}(function(){!function(e,t){var n=window.kendo,i=n.Class,o=n.ui.editor,r=o.Dom,a=n.template,s=o.RangeUtils,l=["ul","ol","tbody","thead","table"],c=["bold","italic","underline","strikethrough","superscript","subscript","forecolor","backcolor","fontname","fontsize","createlink","unlink","autolink","addcolumnleft","addcolumnright","addrowabove","addrowbelow","deleterow","deletecolumn","mergecells","formatting","cleanformatting"],d="k-immutable",u="["+d+"]",h="[contenteditable='false']",p=function(t){return e(t).is("body,.k-editor")},f=function(e){return e.getAttribute&&"false"==e.getAttribute("contenteditable")},g=function(e){return r.closestBy(e,f,p)},m=function(e){var t=g(e.startContainer),n=g(e.endContainer);(t||n)&&(t&&e.setStartBefore(t),n&&e.setEndAfter(n))},v=function(e){if(g(e.commonAncestorContainer))return!0;if(g(e.startContainer)||g(e.endContainer)){var t=s.editableTextNodes(e);if(0===t.length)return!0}return!1},_=function(e){var t,n="",i="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(t=e||10;t>0;--t)n+=i.charAt(Math.round(Math.random()*(i.length-1)));return n},b=function(t){var n,i,o,a={empty:!0};return e(t).find(h).each(function(t,s){n=r.name(s),i=_(),o="<"+n+" "+d+"='"+i+"'></"+n+">",a[i]={node:s,style:e(s).attr("style")},a.empty=!1,e(s).replaceWith(o)}),a},w=function(t,n){var i,o;e(t).find(u).each(function(t,r){i=r.getAttribute(d),o=n[i],e(r).replaceWith(o.node),o.style!=e(o.node).attr("style")&&e(o.node).removeAttr("style").attr("style",o.style)})},k=function(e){var t=n.keys;return e===t.BACKSPACE||e==t.DELETE},y=function(e){var n=e?e.options:t;n&&n.finder&&n.finder._initOptions({immutables:!0})},x=i.extend({init:function(t){this.editor=t,this.serializedImmutables={},this.options=e.extend({},t&&t.options&&t.options.immutables);var n=t.toolbar.tools;y(n.justifyLeft),y(n.justifyCenter),y(n.justifyRight),y(n.justifyFull)},serialize:function(e){var t,n=this._toHtml(e);return n.indexOf(d)===-1?(t=this.randomId(),n=n.replace(/>/," "+d+'="'+t+'">')):t=n.match(/k-immutable\s*=\s*['"](.*)['"]/)[1],this.serializedImmutables[t]=e,n},_toHtml:function(e){var t,n=this.options.serialization,i=typeof n;switch(i){case"string":return a(n)(e);case"function":return n(e);default:return t=r.name(e),"<"+t+"></"+t+">"}},deserialize:function(t){var i=this,o=this.options.deserialization;e(u,t).each(function(){var t=this.getAttribute(d),r=i.serializedImmutables[t];n.isFunction(o)&&o(this,r),e(this).replaceWith(r)}),i.serializedImmutables={}},randomId:function(e){return _(e)},keydown:function(e,t){var n=k(e.keyCode),i=n&&this._cancelDeleting(e,t)||!n&&this._cancelTyping(e,t);if(i)return e.preventDefault(),!0},_cancelTyping:function(e,t){var n=this.editor,i=n.keyboard;return t.collapsed&&!i.typingInProgress&&i.isTypingKey(e)&&v(t)},_cancelDeleting:function(e,t){var i,o,a,s,c=n.keys,d=e.keyCode===c.BACKSPACE,u=e.keyCode==c.DELETE;if(!d&&!u)return!1;if(i=!1,t.collapsed){if(v(t))return!0;if(o=this.nextImmutable(t,u),o&&d&&(a=r.closest(t.commonAncestorContainer,"li"),a&&(s=r.closest(o,"li"),s&&s!==a)))return i;if(o&&!r.tableCell(o)){if(r.parentOfType(o,l)===r.parentOfType(t.commonAncestorContainer,l)){for(;o&&1==o.parentNode.childNodes.length;)o=o.parentNode;if(r.tableCell(o))return i;this._removeImmutable(o,t)}i=!0}}return i},nextImmutable:function(e,t){var n,i=e.commonAncestorContainer;if(r.isBom(i)||t&&s.isEndOf(e,i)||!t&&s.isStartOf(e,i)){if(n=this._nextNode(i,t),n&&r.isBlock(n)&&!g(n))for(;n&&n.children&&n.children[t?0:n.children.length-1];)n=n.children[t?0:n.children.length-1];return g(n)}},_removeImmutable:function(e,t){var n=this.editor,i=new o.RestorePoint(t,n.body);r.remove(e),o._finishUpdate(n,i)},_nextNode:function(e,t){for(var n,i=t?"nextSibling":"previousSibling",o=e;o&&!n;)n=o[i],n&&r.isDataNode(n)&&/^\s|[\ufeff]$/.test(n.nodeValue)&&(o=n,n=o[i]),n||(o=o.parentNode);return n}});x.immutable=f,x.immutableParent=g,x.expandImmutablesIn=m,x.immutablesContext=v,x.toolsToBeUpdated=c,x.removeImmutables=b,x.restoreImmutables=w,o.Immutables=x}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/command.min",["editor/immutables.min"],e)}(function(){!function(e){function t(e,t){var n=e.selectionRestorePoint=new a(e.getRange(),e.body),i=new d(t,n);return i.editor=e,e.undoRedoStack.push(i),n}var n=window.kendo,i=n.Class,o=n.ui.editor,r=o.Dom,a=o.RestorePoint,s=o.Marker,l=e.extend,c=i.extend({init:function(e){this.options=e,this.restorePoint=new a(e.range,e.body,{immutables:e.immutables}),this.marker=new s,this.formatter=e.formatter},getRange:function(){return this.restorePoint.toRange()},lockRange:function(e){return this.marker.add(this.getRange(),e)},releaseRange:function(e){this.marker.remove(e),this.editor.selectRange(e)},undo:function(){var e=this.restorePoint;e.restoreHtml(),this.editor.selectRange(e.toRange())},redo:function(){this.exec()},createDialog:function(t,i){var o=this.editor;return e(t).appendTo(document.body).kendoWindow(l({},o.options.dialogOptions,i)).closest(".k-window").toggleClass("k-rtl",n.support.isRtl(o.wrapper)).end()},exec:function(){var e=this.lockRange(!0);this.formatter.editor=this.editor,this.formatter.toggle(e),this.releaseRange(e)},immutables:function(){return this.editor&&this.editor.options.immutables},expandImmutablesIn:function(e){this.immutables()&&(n.ui.editor.Immutables.expandImmutablesIn(e),this.restorePoint=new a(e,this.editor.body))}}),d=i.extend({init:function(e,t){this.body=e.body,this.startRestorePoint=e,this.endRestorePoint=t},redo:function(){r.removeChildren(this.body),this.body.innerHTML=this.endRestorePoint.html,this.editor.selectRange(this.endRestorePoint.toRange())},undo:function(){r.removeChildren(this.body),this.body.innerHTML=this.startRestorePoint.html,this.editor.selectRange(this.startRestorePoint.toRange())}});l(o,{_finishUpdate:t,Command:c,GenericCommand:d})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/toolbar.min",["editor/range.min"],e)}(function(){!function(e,t){var n,i=window.kendo,o=i.ui,r=o.editor,a=o.Widget,s=e.extend,l=e.proxy,c=i.keys,d=".kendoEditor",u=r.EditorUtils,h=r.ToolTemplate,p=r.Tool,f=i._outerWidth,g=i._outerHeight,m="overflowAnchor",v=".k-tool-group:visible a.k-tool:not(.k-state-disabled),.k-tool.k-overflow-anchor:visible,.k-tool-group:visible .k-widget.k-colorpicker,.k-tool-group:visible .k-selectbox,.k-tool-group:visible .k-dropdown,.k-tool-group:visible .k-combobox .k-input",_={"k-i-sup-script":"superscript","k-i-sub-script":"subscript","k-i-align-left":"justifyLeft","k-i-align-center":"justifyCenter","k-i-align-right":"justifyRight","k-i-align-justify":"justifyFull","k-i-list-unordered":"insertUnorderedList","k-i-list-ordered":"insertOrderedList","k-i-login":"import","k-i-indent-increase":"indent","k-i-indent-decrease":"outdent","k-i-link-horizontal":"createLink","k-i-unlink-horizontal":"unlink","k-i-image":"insertImage","k-i-file-add":"insertFile","k-i-html":"viewHtml","k-i-foreground-color":"foreColor","k-i-paint":"backColor","k-i-table-insert":"createTable","k-i-table-column-insert-left":"addColumnLeft","k-i-table-column-insert-right":"addColumnRight","k-i-table-row-insert-above":"addRowAbove","k-i-table-row-insert-below":"addRowBelow","k-i-table-row-delete":"deleteRow","k-i-table-column-delete":"deleteColumn","k-i-table-properties":"tableWizard","k-i-table-wizard":"tableWizardInsert","k-i-clear-css":"cleanFormatting"},b=p.extend({initialize:function(t,n){t.attr({unselectable:"on"});var i=n.editor.toolbar;t.attr("aria-controls",n.editor.element.attr("id")).on("click",e.proxy(function(){this.overflowPopup.toggle()},i))},options:{name:m},command:e.noop,update:e.noop,destroy:e.noop});u.registerTool(m,new b({key:"",ctrl:!0,template:new h({template:u.overflowAnchorTemplate})})),n=a.extend({init:function(e,t){var n=this;t=s({},t,{name:"EditorToolbar"}),a.fn.init.call(n,e,t),t.popup&&n._initPopup(),t.resizable&&t.resizable.toolbar&&(n._resizeHandler=i.onResize(function(){n.resize(!0)}),n.element.addClass("k-toolbar-resizable"))},events:["execute"],groups:{basic:["bold","italic","underline","strikethrough"],scripts:["subscript","superscript"],alignment:["justifyLeft","justifyCenter","justifyRight","justifyFull"],links:["insertImage","insertFile","createLink","unlink"],lists:["insertUnorderedList","insertOrderedList","indent","outdent"],tables:["createTable","addColumnLeft","addColumnRight","addRowAbove","addRowBelow","deleteRow","deleteColumn"],advanced:["viewHtml","cleanFormatting","print","pdf","exportAs","import"],fonts:["fontName","fontSize"],colors:["foreColor","backColor"]},overflowFlaseTools:["formatting","fontName","fontSize","foreColor","backColor","insertHtml"],_initPopup:function(){var t=this;this.window=e(this.element).wrap("<div class='editorToolbarWindow k-header' />").parent().prepend("<button class='k-button k-bare k-editortoolbar-dragHandle'><span class='k-icon k-i-handler-drag' /></button>").kendoWindow({title:!1,resizable:!1,draggable:{dragHandle:".k-editortoolbar-dragHandle"},animation:{open:{effects:"fade:in"},close:{effects:"fade:out"}},minHeight:42,visible:!1,autoFocus:!1,actions:[],dragend:function(){this._moved=!0}}).on("mousedown",function(n){e(n.target).is(".k-icon")||(t.preventPopupHide=!0)}).on("focusout",function(){t.options.editor.element.focusout()}).data("kendoWindow")},_toggleOverflowStyles:function(e,t){e.find("> li").toggleClass("k-item k-state-default",t).find(".k-tool:not(.k-state-disabled),.k-overflow-button").toggleClass("k-overflow-button k-button",t)},_initOverflowPopup:function(t){var n=this,i="<ul class='k-editor-overflow-popup k-overflow-container k-list-container'></ul>";n.overflowPopup=e(i).appendTo("body").kendoPopup({anchor:t,origin:"bottom right",position:"top right",copyAnchorStyles:!1,open:function(e){this.element.is(":empty")&&e.preventDefault(),n._toggleOverflowStyles(this.element,!0),t.attr("aria-expanded",!0)},close:function(){t.attr("aria-expanded",!1)},activate:l(n.focusOverflowPopup,n)}).data("kendoPopup")},items:function(){var e,t,n=this.options.resizable&&this.options.resizable.toolbar;return t=this.element.children().find("> *, select"),n&&(e=this.overflowPopup,t=t.add(e.element.children().find("> *"))),t},focused:function(){return this.element.find(".k-state-focused").length>0||this.preventPopupHide||this.overflowPopup&&this.overflowPopup.visible()},toolById:function(e){var t,n=this.tools;for(t in n)if(t.toLowerCase()==e)return n[t]},toolGroupFor:function(t){var n,i=this.groups;if(this.isCustomTool(t))return"custom";for(n in i)if(e.inArray(t,i[n])>=0)return n},bindTo:function(t){var n=this,i=n.window;n._editor&&n._editor.unbind("select",l(n.resize,n)),n._editor=t,n.options.resizable&&n.options.resizable.toolbar&&t.options.tools.push(m),n.tools=n.expandTools(t.options.tools),n.render(),n.element.find(".k-combobox .k-input").keydown(function(t){var n=e(this).closest(".k-combobox").data("kendoComboBox"),i=t.keyCode;i==c.RIGHT||i==c.LEFT?n.close():i==c.DOWN&&(n.dropDown.isOpened()||(t.stopImmediatePropagation(),n.open()))}),n._attachEvents(),n.items().each(function(){var i,o=n._toolName(this),r="moreVertical"!==o?n.tools[o]:n.tools.overflowAnchor,a=r&&r.options,s=t.options.messages,l=a&&a.tooltip||s[o],c=e(this);r&&r.initialize&&("fontSize"!=o&&"fontName"!=o||(i=s[o+"Inherit"],c.find("input").val(i).end().find("span.k-input").text(i).end()),r.initialize(c,{title:n._appendShortcutSequence(l,r),editor:n._editor}),c.closest(".k-widget",n.element).addClass("k-editor-widget"),c.closest(".k-colorpicker",n.element).next(".k-colorpicker").addClass("k-editor-widget"))}),t.bind("select",l(n.resize,n)),n.update(),i&&i.wrapper.css({top:"",left:"",width:""})},show:function(){var e,t,n,o=this,r=o.window,a=o.options.editor,s=i.support.browser;r&&(e=r.wrapper,t=a.element,e.is(":visible")&&o.window.options.visible||(e[0].style.width||e.width(this._getWindowWidth()),r._moved||(n=t.offset(),e.css({top:Math.max(0,parseInt(n.top,10)-g(e)-parseInt(o.window.element.css("padding-bottom"),10)),left:Math.max(0,parseInt(n.left,10))})),(s.msie||s.edge)&&o._overlaps(t)?setTimeout(function(){r.open()},0):r.open()))},_getWindowWidth:function(){var e=this,t=e.window.wrapper,n=e.options.editor.element;return f(n)-parseInt(t.css("border-left-width"),10)-parseInt(t.css("border-right-width"),10)},_overlaps:function(e){var t=this.window.wrapper,n=t.offset(),i=n.left,o=n.top,r=e.offset(),a=r.left,s=r.top;return!(a+e.width()<i||a>i+t.width()||s+e.height()<o||s>o+t.height())},hide:function(){this.window&&this.window.close()},focus:function(){var e="tabIndex",t=this.element,n=this._editor.element.attr(e);t.attr(e,n||0).focus().find(v).first().focus(),n||0===n||t.removeAttr(e)},focusOverflowPopup:function(){var e="tabIndex",t=this.overflowPopup.element,n=this._editor.element.attr(e);t.closest(".k-animation-container").addClass("k-overflow-wrapper"),t.attr(e,n||0).find(v).first().focus(),n||0===n||t.removeAttr(e)},_appendShortcutSequence:function(e,t){if(!t.key)return e;var n=e+" (";return t.ctrl&&(n+="Ctrl + "),t.shift&&(n+="Shift + "),t.alt&&(n+="Alt + "),n+=t.key+")"},_nativeTools:["insertLineBreak","insertParagraph","redo","undo","autoLink"],tools:{},isCustomTool:function(e){return!(e in i.ui.Editor.defaultTools)},expandTools:function(t){var n,o,a,l,c=this._nativeTools,d=i.deepExtend({},i.ui.Editor.defaultTools),u={};for(o=0;o<t.length;o++)n=t[o],l=n.name,e.isPlainObject(n)?l&&d[l]?(u[l]=s({},d[l]),s(u[l].options,n)):(a=s({cssClass:"k-i-gear",type:"button",title:""},n),a.name||(a.name="custom"),a.cssClass="k-"+a.name,a.template||"button"!=a.type||(a.template=r.EditorUtils.buttonTemplate,a.title=a.title||a.tooltip),u[l]={options:a}):d[n]&&(u[n]=d[n]);for(o=0;o<c.length;o++)u[c[o]]||(u[c[o]]=d[c[o]]);return u},render:function(){function t(t){var n;return t.getHtml?n=t.getHtml():(e.isFunction(t)||(t=i.template(t)),n=t(r)),e.trim(n)}function n(){h.children().length&&(y&&(h.data("position",k),k++),h.appendTo(_))}function o(t){t!==m?(h=e("<li class='k-tool-group' role='presentation' />"),h.data("overflow",e.inArray(t,x)===-1)):h=e("<li class='k-overflow-tools' />")}var r,a,s,c,d,u,h,p,f=this,g=f.tools,v=f._editor.element,_=f.element.empty(),b=f._editor.options.tools,w=i.support.browser,k=0,y=f.options.resizable&&f.options.resizable.toolbar,x=this.overflowFlaseTools;for(_.empty(),b.length&&(c=b[0].name||b[0]),o(c,x),p=0;p<b.length;p++)c=b[p].name||b[p],r=g[c]&&g[c].options,!r&&e.isPlainObject(c)&&(r=c),a=r&&r.template,"break"==c&&(n(),e("<li class='k-row-break' />").appendTo(f.element),o(c,x)),a&&(u=f.toolGroupFor(c),d==u&&c!=m||(n(),o(c,x),d=u),c==m&&(a.options.title=f.options.messages.overflowAnchor),a=t(a),s=e(a).appendTo(h),"custom"==u&&(n(),o(c,x)),r.exec&&s.hasClass("k-tool")&&s.click(l(r.exec,v[0])));n(),e(f.element).children(":has(> .k-tool)").addClass("k-button-group"),f.options.popup&&w.msie&&w.version<9&&f.window.wrapper.find("*").attr("unselectable","on"),f.updateGroups(),y&&f._initOverflowPopup(f.element.find(".k-overflow-anchor")),f.angular("compile",function(){return{elements:f.element}})},updateGroups:function(){e(this.element).children().each(function(){e(this).addClass("k-state-disabled"),e(this).children().filter(function(){return!e(this).hasClass("k-state-disabled")}).removeClass("k-group-end").first().addClass("k-group-start").end().last().addClass("k-group-end").end().parent().removeClass("k-state-disabled").css("display","")})},decorateFrom:function(t){this.items().filter(".k-decorated").each(function(){var n=e(this).data("kendoSelectBox");n&&n.decorate(t)})},destroy:function(){a.fn.destroy.call(this);var e,t=this.tools;for(e in t)t[e].destroy&&t[e].destroy();this.window&&this.window.destroy(),this._resizeHandler&&i.unbindResize(this._resizeHandler),this.overflowPopup&&this.overflowPopup.destroy()},_attachEvents:function(){var t=this,n=t.overflowPopup?t.overflowPopup.element:e([]);t.attachToolsEvents(t.element.add(n))},attachToolsEvents:function(t){var n=this,o="[role=button].k-tool",r=o+":not(.k-state-disabled)",a=o+".k-state-disabled",s=".k-dropdown",l=".k-colorpicker",u=[o,s,l].join(",");t.off(d).on("mouseenter"+d,r,function(){e(this).addClass("k-state-hover")}).on("mouseleave"+d,r,function(){e(this).removeClass("k-state-hover")}).on("mousedown"+d,u,function(e){e.preventDefault()}).on("keydown"+d,v,function(t){function o(e,t,n){var i=t.find(v),o=i.index(l)+e;return n&&(o=Math.max(0,Math.min(i.length-1,o))),i[o]}var r,a,s,l=this,d=n.options.resizable&&n.options.resizable.toolbar,u=i.support.isRtl(n.element)?-1:1,h=t.keyCode;h==c.RIGHT||h==c.LEFT?a=e(l).is(".k-dropdown")?e(l):o(h==c.RIGHT?1*u:-1*u,n.element,!0):!d||h!=c.UP&&h!=c.DOWN?h==c.HOME?(a=n.element.find(v)[0],t.preventDefault()):h==c.END?(r=n.element.find(v).filter(function(){return"hidden"!==e(this).css("visibility")}),a=r[r.length-1],t.preventDefault()):h==c.ESC?(n.overflowPopup&&n.overflowPopup.visible()&&n.overflowPopup.close(),a=n._editor):h!=c.TAB||t.ctrlKey||t.altKey||(s=d&&e(l.parentElement).hasClass("k-overflow-tool-group")?n.overflowPopup.element:n.element,t.shiftKey?a=o(-1,s):(a=o(1,s),a&&"hidden"!==e(a).closest(".k-overflow-tools").css("visibility")||(a=n._editor))):a=o(h==c.DOWN?1:-1,n.overflowPopup.element,!0),a&&(t.preventDefault(),a.focus()),h!==c.ENTER&&h!==c.SPACEBAR||!e(l).is("a")||e(l).attr("href")||n._executeToolCommand(l,t)}).on("click"+d,r,function(e){n._executeToolCommand(this,e)}).on("click"+d,a,function(e){e.preventDefault()})},_executeToolCommand:function(t,n){var i=this,o=e(t);n.preventDefault(),n.stopPropagation(),o.removeClass("k-state-hover"),o.is("[data-popup]")||i._editor.exec(i._toolName(t))},_toolName:function(t){var n,o,r;if(t)return n=t.className,/k-tool\b/i.test(n)&&(n=t.firstChild.className),o=e.grep(n.split(" "),function(e){return!/^k-(widget|tool|tool-icon|icon|state-hover|header|combobox|dropdown|selectbox|colorpicker)$/i.test(e)}),o[0]?(r=o[0],_[r]&&(r=_[r]),r.indexOf("k-i-")>=0?i.toCamelCase(r.substring(r.indexOf("k-i-")+4)):r.substring(r.lastIndexOf("-")+1)):"custom"},refreshTools:function(){var t=this,n=t._editor,i=n.getRange(),o=r.RangeUtils.textNodes(i),a=n.options.immutables,s=t._immutablesContext(i);o=r.Dom.filterBy(o,r.Dom.htmlIndentSpace,!0),o.length||(o=[i.startContainer]),t.items().each(function(){var n,i=t.tools[t._toolName(this)];i&&(n=e(this),i.update&&i.update(n,o),a&&t._updateImmutablesState(i,n,s))}),this.update()},_immutablesContext:function(e){if(this._editor.options.immutables)return e.collapsed?r.Immutables.immutablesContext(e):0===r.RangeUtils.editableTextNodes(e).length},_updateImmutablesState:function(n,i,o){var a,s,l,c,d,u=n.name,h=i,p=n.options.trackImmutables;if(p===t&&(p=e.inArray(u,r.Immutables.toolsToBeUpdated)>-1),p){if(a=o?"none":"",!i.is(".k-tool")){s=i.data();for(l in s)if(l.match(/^kendo[A-Z][a-zA-Z]*/)){c=s[l],h=c.wrapper;break}}h.css("display",a),d=h.closest("li"),0===d.children(":visible").length&&d.css("display",a)}},update:function(){this.updateGroups()},_resize:function(e){var t=e.width,n=this.options.resizable&&this.options.resizable.toolbar,i=this.overflowPopup,o=this.options.editor.element,r=this.window;this.refreshTools(),n&&(r&&(r.wrapper.width(this._getWindowWidth()),r._moved||r.wrapper.css({left:Math.max(0,parseInt(o.offset().left,10))})),i.visible()&&i.close(!0),this._refreshWidths(),this._shrink(t),this._stretch(t),this._toggleOverflowStyles(this.element,!1),this._toggleOverflowStyles(this.overflowPopup.element,!0),this.element.children("li.k-overflow-tools").css("visibility",i.element.is(":empty")?"hidden":"visible"))},_refreshWidths:function(){this.element.children("li").each(function(t,n){var i=e(n);i.data("outerWidth",f(i,!0))})},_shrink:function(e){var t,n,i;if(e<this._groupsWidth())for(n=this._visibleGroups().filter(":not(.k-overflow-tools)"),i=n.length-1;i>=0&&(t=n.eq(i),!(e>this._groupsWidth()));i--)this._hideGroup(t)},_stretch:function(e){var t,n,i;if(e>this._groupsWidth())for(n=this._hiddenGroups(),i=0;i<n.length&&(t=n.eq(i),!(e<this._groupsWidth())&&this._showGroup(t,e));i++);},_hiddenGroups:function(){var t=this.overflowPopup,n=this.element.children("li.k-tool-group").filter(":hidden");return n=n.add(t.element.children("li")),n.sort(function(t,n){return e(t).data("position")>e(n).data("position")?1:-1}),n},_visibleGroups:function(){return this.element.children("li.k-tool-group, li.k-overflow-tools").filter(":visible")},_groupsWidth:function(){var t=0;return this._visibleGroups().each(function(){t+=e(this).data("outerWidth")}),Math.ceil(t)},_hideGroup:function(e){if(e.data("overflow")){var t=this.overflowPopup;e.detach().prependTo(t.element).addClass("k-overflow-tool-group")}else e.hide()},_showGroup:function(t,n){var i,o;return!(!(t.length&&n>this._groupsWidth()+t.data("outerWidth"))||t.hasClass("k-state-disabled"))&&(t.hasClass("k-overflow-tool-group")?(i=t.data("position"),0===i?t.detach().prependTo(this.element):(o=this.element.children().filter(function(t,n){return e(n).data("position")===i-1}),t.detach().insertAfter(o)),t.removeClass("k-overflow-tool-group")):t.show(),!0)}}),e.extend(r,{Toolbar:n})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/viewhtml.min",["editor/command.min"],e)}(function(){!function(e,t){var n=window.kendo,i=e.extend,o=n.ui.editor,r=o.EditorUtils,a=o.Command,s=o.Tool,l=o.ToolTemplate,c=o.Dom,d=a.extend({init:function(e){var t=this;t.options=e,a.fn.init.call(t,e),t.attributes=null,t.async=!0},exec:function(){function i(e){h.deserialization.immutables=u.immutables,u.value(f.find(g).val()),h.deserialization.immutables=t,o(e),l.change&&l.change(),u.trigger("change")}function o(e){e.preventDefault(),f.data("kendoWindow").destroy(),u.immutables&&(u.immutables.serializedImmutables={}),u.focus()}var a,s,l=this,u=l.editor,h=u.options,p=u.options.messages,f=e(n.template(d.template)(p)).appendTo(document.body),g=".k-editor-textarea";h.serialization.immutables=u.immutables,s=c.getAllComments(u.body),a=r.cacheComments(u.value(),s),a=d.indent(a),a=r.retrieveComments(a,s),h.serialization.immutables=t,this.createDialog(f,{title:p.viewHtml,close:o,visible:!1}).find(g).val(a).end().find(".k-dialog-update").click(i).end().find(".k-dialog-close").click(o).end().data("kendoWindow").center().open(),f.find(g).focus()}});i(d,{template:"<div class='k-editor-dialog k-popup-edit-form k-viewhtml-dialog'><div class='k-edit-form-container'></div><textarea class='k-editor-textarea k-input'></textarea><div class='k-edit-buttons k-state-default'><button class='k-dialog-update k-button k-primary'>#: dialogUpdate #</button><button class='k-dialog-close k-button'>#: dialogCancel #</button></div></div></div>",indent:function(e){return e.replace(/<\/(p|li|ul|ol|h[1-6]|table|tr|td|th)>/gi,"</$1>\n").replace(/<(ul|ol)([^>]*)><li/gi,"<$1$2>\n<li").replace(/<br \/>/gi,"<br />\n").replace(/\n$/,"")}}),n.ui.editor.ViewHtmlCommand=d,o.EditorUtils.registerTool("viewHtml",new s({command:d,template:new l({template:r.buttonTemplate,title:"View HTML"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/format.min",["editor/command.min"],e)}(function(){!function(e){var t=window.kendo,n=e.extend,i=t.ui.editor,o=i.Tool,r=i.Command,a=i.EditorUtils,s=r.extend({init:function(e){e.formatter=e.formatter();var t=e.formatter.finder;t&&a.formatByName("immutable",t.format)&&t._initOptions({ +immutables:e.immutables}),r.fn.init.call(this,e)}}),l=o.extend({init:function(e){o.fn.init.call(this,e)},command:function(e){var t=this;return new s(n(e,{formatter:t.options.formatter}))},update:function(e,t){var n=this.options.finder.isFormatted(t);e.toggleClass("k-state-selected",n),e.attr("aria-pressed",n)}});e.extend(i,{FormatCommand:s,FormatTool:l})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/inlineformat.min",["editor/plugins/format.min"],e)}(function(){!function(e){var t=window.kendo,n=t.Class,i=t.ui.editor,o=t.ui.Editor.fn.options.formats,r=i.EditorUtils,a=i.Tool,s=i.ToolTemplate,l=i.FormatTool,c=i.Dom,d=i.RangeUtils,u=e.extend,h=i.EditorUtils.registerTool,p=i.EditorUtils.registerFormat,f="mousedown.kendoEditor",g="keydown.kendoEditor",m="k-marker",v=n.extend({init:function(e){this.format=e},numberOfSiblings:function(e){var t,n=0,i=0,o=0,r=e.parentNode;for(t=r.firstChild;t;t=t.nextSibling)t!=e&&(t.className==m?o++:3==t.nodeType?n++:i++);return o>1&&r.firstChild.className==m&&r.lastChild.className==m?0:i+n},findSuitable:function(e,t){var n,i;if(!t&&this.numberOfSiblings(e)>0)return null;for(n=e.parentNode,i=this.format[0].tags;!c.ofType(n,i);){if(this.numberOfSiblings(n)>0)return null;n=n.parentNode}return n},findFormat:function(e){var t,n,i,o,r,a=this.format,s=c.attrEquals;for(t=0,n=a.length;t<n;t++){if(i=e,o=a[t].tags,r=a[t].attr,i&&c.ofType(i,o)&&s(i,r))return i;for(;i;)if(i=c.parentOfType(i,o),i&&s(i,r))return i}return null},isFormatted:function(e){var t,n;for(t=0,n=e.length;t<n;t++)if(this.findFormat(e[t]))return!0;return!1}}),_=n.extend({init:function(e,t){this.finder=new v(e),this.attributes=u({},e[0].attr,t),this.tag=e[0].tags[0]},wrap:function(e){return c.wrap(e,c.create(e.ownerDocument,this.tag,this.attributes))},activate:function(e,t){this.finder.isFormatted(t)?(this.split(e),this.remove(t)):this.apply(t)},toggle:function(e){var t=this.immutables()?d.editableTextNodes:d.textNodes,n=t(e);n.length>0&&this.activate(e,n)},immutables:function(){return this.editor&&this.editor.options.immutables},apply:function(e){var t,n,i,o,r=[];if(e.length>1)for(t=0,n=e.length;t<n;t++)i=e[t],o=this.format(i,!0),r.push(o);else i=e[0],o=this.format(i,!1);this.consolidate(r)},format:function(e,t){var n=this.finder.findSuitable(e),i=this.attributes,o=i?i.style||{}:{};if(n)c.is(n,"font")&&(o.color&&n.removeAttribute("color"),o.fontName&&n.removeAttribute("face"),o.fontSize&&n.removeAttribute("size")),c.attr(n,i);else{for(;!c.isBlock(e.parentNode)&&1==e.parentNode.childNodes.length&&"true"!==e.parentNode.contentEditable&&t;)e=e.parentNode;n=this.wrap(e)}return n},remove:function(e){var t,n,i;for(t=0,n=e.length;t<n;t++)i=this.finder.findFormat(e[t]),i&&(this.attributes&&this.attributes.style?(c.unstyle(i,this.attributes.style),i.style.cssText||i.attributes["class"]||c.unwrap(i)):c.unwrap(i))},split:function(e){var t,n,i=d.textNodes(e),o=i.length;if(o>0)for(t=0;t<o;t++)n=this.finder.findFormat(i[t]),n&&d.split(e,n,!0)},consolidate:function(e){for(var t,n;e.length>1;)if(t=e.pop(),n=e[e.length-1],t.previousSibling&&t.previousSibling.className==m&&n.appendChild(t.previousSibling),t.tagName==n.tagName&&t.previousSibling==n&&t.style.cssText==n.style.cssText&&t.className===n.className){for(;t.firstChild;)n.appendChild(t.firstChild);c.remove(t)}}}),b=v.extend({init:function(e,t){this.format=e,this.greedyProperty=t,v.fn.init.call(this,e)},getInlineCssValue:function(t){var n,i,o,r,a,s,l,d,u,h,p,f,g=t.attributes,m=e.trim;if(g)for(n=0,i=g.length;n<i;n++)if(o=g[n],r=o.nodeName,a=o.nodeValue,o.specified&&"style"==r)for(s=m(a||t.style.cssText).split(";"),d=0,u=s.length;d<u;d++)if(l=s[d],l.length){if(h=l.split(":"),p=m(h[0].toLowerCase()),f=m(h[1]),p!=this.greedyProperty)continue;return p.indexOf("color")>=0?c.toHex(f):f}},getFormatInner:function(t){var n,i,o,r=e(c.isDataNode(t)?t.parentNode:t),a=r.parentsUntil("[contentEditable]").addBack().toArray().reverse();for(n=0,i=a.length;n<i;n++)if(o="className"==this.greedyProperty?a[n].className:this.getInlineCssValue(a[n]))return o;return"inherit"},getFormat:function(e){var t,n,i=this.getFormatInner(e[0]);for(t=1,n=e.length;t<n;t++)if(i!=this.getFormatInner(e[t]))return"";return i},isFormatted:function(e){return""!==this.getFormat(e)}}),w=_.extend({init:function(e,n,i){_.fn.init.call(this,e,n),this.values=n,this.finder=new b(e,i),i&&(this.greedyProperty=t.toCamelCase(i))},activate:function(e,t){var n=this.greedyProperty,i="apply";this.split(e),n&&"inherit"==this.values.style[n]&&(i="remove"),this[i](t)}}),k=l.extend({init:function(e){l.fn.init.call(this,u(e,{finder:new v(e.format),formatter:function(){return new _(e.format)}}))}}),y=a.extend({update:function(e,t){var n=e.data(this.type);n.close(),n.value(this.finder.getFormat(t))}}),x=y.extend({init:function(e){a.fn.init.call(this,e),this.type=t.support.browser.msie||t.support.touch?"kendoDropDownList":"kendoComboBox",this.format=[{tags:["span","font"]}],this.finder=new b(this.format,e.cssAttr)},command:function(e){var t=this.options,n=this.format,o={};return new i.FormatCommand(u(e,{formatter:function(){return o[t.domAttr]=e.value,new w(n,{style:o},t.cssAttr)}}))},initialize:function(e,n){var i,o,r,s=n.editor,l=this.options,c=l.name,d=[];l.defaultValue&&(d=[{text:s.options.messages[l.defaultValue[0].text],value:l.defaultValue[0].value}]),i=d.concat(l.items?l.items:s.options[c]||[]),e.attr({title:n.title}),e[this.type]({dataTextField:"text",dataValueField:"value",dataSource:i,change:function(){s._range=o,a.exec(s,c,this.value())},close:function(){setTimeout(function(){s._deleteSavedRange()},0)},highlightFirst:!1}),e.closest(".k-widget").removeClass("k-"+c).find("*").addBack().attr("unselectable","on"),r=e.data(this.type),r.value("inherit"),r.wrapper.on(f,".k-select,.k-input",function(){var e=s.getRange();o=s._containsRange(e)?e:o}).on(g,function(e){e.keyCode===t.keys.ENTER&&(s._deleteSavedRange(),e.preventDefault())})}}),C=a.extend({init:function(e){a.fn.init.call(this,e),this.format=[{tags:["span","font"]}],this.finder=new b(this.format,e.cssAttr)},options:{palette:"websafe"},update:function(){this._widget.close()},command:function(e){var t=this.options,n=this.format,o={};return new i.FormatCommand(u(e,{formatter:function(){return o[t.domAttr]=e.value,new w(n,{style:o},t.cssAttr)}}))},initialize:function(n,i){var o=this,s=i.editor,l=this.name,c=u({},C.fn.options,this.options),d=c.palette,h=c.columns;n=this._widget=new t.ui.ColorPicker(n,{toolIcon:"k-icon k-i-"+r.getToolCssClass(c.name),palette:d,columns:h,change:function(){var e=n.value();t.support.browser.msie&&o.storedRange&&o._inputFocused&&s.selectRange(o.storedRange),e&&a.exec(s,l,e),delete o.storedRange,delete o._inputFocused,s.focus()},open:function(t){var n=t.sender;o.storedRange=s.getRange(),n._popup.element.on(f,function(t){e(t.target).is("input.k-color-value")||t.preventDefault()}),n._popup.element.is("[unselectable='on']")||n._popup.element.attr({unselectable:"on"}).find("*:not(input)").attr("unselectable","on").end().find("input").on("focus",function(){o._inputFocused=!0})},close:function(e){e.sender._popup.element.off(f),t.support.browser.msie&&o.storedRange&&o._inputFocused&&s.selectRange(o.storedRange)},activate:function(e){e.preventDefault(),"rgba(255, 255, 255, 0)"!==e.sender._value.toCssRgba()&&n.trigger("change")}}),n.wrapper.attr({title:i.title,unselectable:"on"}).find("*:not(input)").attr("unselectable","on"),n.value("transparent")}});u(i,{InlineFormatFinder:v,InlineFormatter:_,DelayedExecutionTool:y,GreedyInlineFormatFinder:b,GreedyInlineFormatter:w,InlineFormatTool:k,FontTool:x,ColorTool:C}),p("bold",[{tags:["strong","b"]},{tags:["span"],attr:{style:{fontWeight:"bold"}}}]),h("bold",new k({key:"B",ctrl:!0,format:o.bold,template:new s({template:r.buttonTemplate,title:"Bold"})})),p("italic",[{tags:["em","i"]},{tags:["span"],attr:{style:{fontStyle:"italic"}}}]),h("italic",new k({key:"I",ctrl:!0,format:o.italic,template:new s({template:r.buttonTemplate,title:"Italic"})})),p("underline",[{tags:["span"],attr:{style:{textDecoration:"underline"}}},{tags:["u"]}]),h("underline",new k({key:"U",ctrl:!0,format:o.underline,template:new s({template:r.buttonTemplate,title:"Underline"})})),p("strikethrough",[{tags:["del","strike"]},{tags:["span"],attr:{style:{textDecoration:"line-through"}}}]),h("strikethrough",new k({format:o.strikethrough,template:new s({template:r.buttonTemplate,title:"Strikethrough"})})),p("superscript",[{tags:["sup"]}]),h("superscript",new k({format:o.superscript,template:new s({template:r.buttonTemplate,title:"Superscript"})})),p("subscript",[{tags:["sub"]}]),h("subscript",new k({format:o.subscript,template:new s({template:r.buttonTemplate,title:"Subscript"})})),h("foreColor",new C({cssAttr:"color",domAttr:"color",name:"foreColor",template:new s({template:r.colorPickerTemplate,title:"Color"})})),h("backColor",new C({cssAttr:"background-color",domAttr:"backgroundColor",name:"backColor",template:new s({template:r.colorPickerTemplate,title:"Background Color"})})),h("fontName",new x({cssAttr:"font-family",domAttr:"fontFamily",name:"fontName",defaultValue:[{text:"fontNameInherit",value:"inherit"}],template:new s({template:r.comboBoxTemplate,title:"Font Name"})})),h("fontSize",new x({cssAttr:"font-size",domAttr:"fontSize",name:"fontSize",defaultValue:[{text:"fontSizeInherit",value:"inherit"}],template:new s({template:r.comboBoxTemplate,title:"Font Size"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/link.min",["editor/plugins/inlineformat.min"],e)}(function(){!function(e,t){function n(e,t){for(var n=e.length;n--&&!t.test(e[n]););return n}function i(e,t){var n=t.exec(e);return n?n.index:-1}var o=window.kendo,r=o.Class,a=e.extend,s=e.proxy,l=o.ui.editor,c=l.Dom,d=l.RangeUtils,u=l.EditorUtils,h=l.Command,p=l.Tool,f=l.ToolTemplate,g=l.InlineFormatter,m=l.InlineFormatFinder,v=d.textNodes,_=d.editableTextNodes,b=l.EditorUtils.registerTool,w=o.keys,k="http://",y=/^\w*:\/\//,x=/[\w\/\$\-_\*\?]/i,C=r.extend({findSuitable:function(e){return c.parentOfType(e,["a"])}}),S=r.extend({init:function(){this.finder=new C},apply:function(e,t){var n,i,o,r,a,s,l,u=this.immutables?_(e):v(e);if(t.innerText){for(i=d.documentFromRange(e),n=d.getMarkers(e),e.deleteContents(),r=c.create(i,"a",t),e.insertNode(r),a=r.parentNode,"a"==c.name(a)&&c.insertAfter(r,a),c.emptyNode(a)&&c.remove(a),s=r,l=0;l<n.length;l++)c.insertAfter(n[l],s),s=n[l];n.length&&(c.insertBefore(i.createTextNode("\ufeff"),n[1]||n[0]),c.insertAfter(i.createTextNode("\ufeff"),n[1]||n[0]),e.setStartBefore(n[0]),e.setEndAfter(n[n.length-1]))}else o=new g([{tags:["a"]}],t),o.finder=this.finder,o.apply(u)}}),T=h.extend({init:function(e){var t=this;e.formatter={toggle:function(e){var n=t.immutables()?_(e):v(e);new g([{tags:["a"]}]).remove(n)}},this.options=e,h.fn.init.call(this,e)}}),D=h.extend({init:function(e){var t;this.options=e,h.fn.init.call(this,e),this.formatter=new S,e.url?this.exec=function(){this.formatter.immutables=t&&t.immutables(),this.formatter.apply(e.range,{href:e.url,innerText:e.text||e.url,target:e.target})}:(this.attributes=null,this.async=!0)},_dialogTemplate:function(){return o.template("<div class=\"k-editor-dialog k-popup-edit-form\"><div class=\"k-edit-form-container\"><div class='k-edit-label'><label for='k-editor-link-url'>#: messages.linkWebAddress #</label></div><div class='k-edit-field'><input type='text' class='k-textbox' id='k-editor-link-url'></div><div class='k-edit-label k-editor-link-text-row'><label for='k-editor-link-text'>#: messages.linkText #</label></div><div class='k-edit-field k-editor-link-text-row'><input type='text' class='k-textbox' id='k-editor-link-text'></div><div class='k-edit-label'><label for='k-editor-link-title'>#: messages.linkToolTip #</label></div><div class='k-edit-field'><input type='text' class='k-textbox' id='k-editor-link-title'></div><div class='k-edit-label'></div><div class='k-edit-field'><input type='checkbox' class='k-checkbox' id='k-editor-link-target'><label for='k-editor-link-target' class='k-checkbox-label'>#: messages.linkOpenInNewWindow #</label></div><div class='k-edit-buttons k-state-default'><button class=\"k-dialog-insert k-button k-primary\">#: messages.dialogInsert #</button><button class=\"k-dialog-close k-button\">#: messages.dialogCancel #</button></div></div></div>")({messages:this.editor.options.messages})},exec:function(){var t,n,i,o,r=this.editor.options.messages;this._initialText="",this._range=this.lockRange(!0),this.formatter.immutables=this.immutables(),t=v(this._range),n=t.length?this.formatter.finder.findSuitable(t[0]):null,i=t.length&&"img"==c.name(t[0]),o=this.createDialog(this._dialogTemplate(),{title:r.createLink,close:s(this._close,this),visible:!1}),n&&(this._range.selectNodeContents(n),t=v(this._range)),this._initialText=this.linkText(t),o.find(".k-dialog-insert").click(s(this._apply,this)).end().find(".k-dialog-close").click(s(this._close,this)).end().find(".k-edit-field input").keydown(s(this._keydown,this)).end().find("#k-editor-link-url").val(this.linkUrl(n)).end().find("#k-editor-link-text").val(this._initialText).end().find("#k-editor-link-title").val(n?n.title:"").end().find("#k-editor-link-target").attr("checked",!!n&&"_blank"==n.target).end().find(".k-editor-link-text-row").toggle(!i),this._dialog=o.data("kendoWindow").center().open(),e("#k-editor-link-url",o).focus().select()},_keydown:function(e){var t=o.keys;e.keyCode==t.ENTER?this._apply(e):e.keyCode==t.ESC&&this._close(e)},_apply:function(t){var n,i,o,r=this._dialog.element,a=e("#k-editor-link-url",r).val(),s=e("#k-editor-link-text",r);a&&a!=k&&(a.indexOf("@")>0&&!/^(\w+:)|(\/\/)/i.test(a)&&(a="mailto:"+a),this.attributes={href:a},n=e("#k-editor-link-title",r).val(),n&&(this.attributes.title=n),s.is(":visible")&&(i=s.val(),i||this._initialText?i&&i!==this._initialText&&(this.attributes.innerText=c.stripBom(i)):this.attributes.innerText=a),o=e("#k-editor-link-target",r).is(":checked"),this.attributes.target=o?"_blank":null,this.formatter.apply(this._range,this.attributes)),this._close(t),this.change&&this.change()},_close:function(e){e.preventDefault(),this._dialog.destroy(),c.windowFromDocument(d.documentFromRange(this._range)).focus(),this.releaseRange(this._range)},linkUrl:function(e){return e?e.getAttribute("href",2):k},linkText:function(e){var t,n="";for(t=0;t<e.length;t++)n+=e[t].nodeValue;return c.stripBom(n||"")},redo:function(){var e=this.lockRange(!0);this.formatter.apply(e,this.attributes),this.releaseRange(e)}}),A=h.extend({init:function(e){h.fn.init.call(this,e),this.formatter=new S},exec:function(){var e,t,n,i=this.detectLink();i&&(e=this.getRange(),t=new o.ui.editor.Marker,n=e.cloneRange(),n.setStart(i.start.node,i.start.offset),n.setEnd(i.end.node,i.end.offset),e=this.lockRange(),t.add(n),this.formatter.apply(n,{href:this._ensureWebProtocol(i.text)}),t.remove(n),this.releaseRange(e))},detectLink:function(){var e,t,n=this.getRange(),i=n.startContainer,o=n.startOffset,r=i.previousSibling;return!r&&(c.isBom(i)&&!i.nextSibling||!o&&c.isDataNode(i))&&(i=i.parentNode,o=0),e=new R({node:i,offset:o,cancelAtNode:function(e){return e&&"a"===c.name(e)}}),t=new I(e),t.detectLink()},changesContent:function(){return!!this.detectLink()},_ensureWebProtocol:function(e){var t=this._hasProtocolPrefix(e);return t?e:this._prefixWithWebProtocol(e)},_hasProtocolPrefix:function(e){return y.test(e)},_prefixWithWebProtocol:function(e){return k+e}}),E=p.extend({init:function(t){this.options=t,this.finder=new m([{tags:["a"]}]),p.fn.init.call(this,e.extend(t,{command:T}))},initialize:function(e,t){p.fn.initialize.call(this,e,t),e.addClass("k-state-disabled")},update:function(e,t){e.toggleClass("k-state-disabled",!this.finder.isFormatted(t)).removeClass("k-state-hover")}}),I=r.extend({init:function(e){this.traverser=e,this.start=M(),this.end=M(),this.text=""},detectLink:function(){var t,n,i,o,r=this.traverser.node,a=this.traverser.offset;if(c.isDataNode(r)){if(t=r.data.substring(0,a),/\s{2}$/.test(c.stripBom(t)))return}else 0===a&&(n=c.closestEditableOfType(r,c.blockElements),n&&n.previousSibling&&this.traverser.init({node:n.previousSibling}));return this.traverser.traverse(e.proxy(this._detectEnd,this)),this.end.blank()||(this.traverser=this.traverser.clone(this.end),this.traverser.traverse(e.proxy(this._detectStart,this)),this._isLinkDetected()||(i=this.traverser.extendOptions(this.start),o=new P(i),o.traverse(e.proxy(this._skipStartPuntuation,this)),this._isLinkDetected()||(this.start=M()))),this.start.blank()?null:{start:this.start,end:this.end,text:this.text}},_isLinkDetected:function(){return y.test(this.text)||/^w{3}\./i.test(this.text)},_detectEnd:function(e,t){var i=n(e,x);if(i>-1)return this.end.node=t,this.end.offset=i+1,!1},_detectStart:function(e,t){var i=n(e,/\s/),o=i+1;if(this.text=e.substring(o)+this.text,this.start.node=t,this.start.offset=o,i>-1)return!1},_skipStartPuntuation:function(e,t,n){var o=i(e,/\w/),r=o;if(o===-1&&(r=e.length),this.text=this.text.substring(r),this.start.node=t,this.start.offset=r+(0|n),o>-1)return!1}}),M=function(){return{node:null,offset:null,blank:function(){return null===this.node&&null===this.offset}}},F=r.extend({init:function(n){this.node=n.node,this.offset=n.offset===t?c.isDataNode(this.node)&&this.node.length||0:n.offset,this.cancelAtNode=n.cancelAtNode||this.cancelAtNode||e.noop},traverse:function(e){e&&(this.cancel=!1,this._traverse(e,this.node,this.offset))},_traverse:function(e,n,i){var o,r,a,s;if(n&&!this.cancel){if(3!==n.nodeType)return r=this.edgeNode(n),this.cancel=this.cancel||this.cancelAtNode(r),this._traverse(e,r);if(o=n.data,i!==t&&(o=this.subText(o,i)),this.cancel=e(o,n,i)===!1,a=this.next(n),!a)for(s=n.parentNode;!a&&c.isInline(s);)a=this.next(s),s=s.parentNode;this.cancel=this.cancel||this.cancelAtNode(a),this._traverse(e,a)}},extendOptions:function(t){return e.extend({node:this.node,offset:this.offset,cancelAtNode:this.cancelAtNode},t||{})},edgeNode:function(e){},next:function(e){},subText:function(e,t){}}),R=F.extend({subText:function(e,t){return e.substring(0,t)},next:function(e){return e.previousSibling},edgeNode:function(e){return e.lastChild},clone:function(e){var t=this.extendOptions(e);return new R(t)}}),P=F.extend({subText:function(e,t){return e.substring(t)},next:function(e){return e.nextSibling},edgeNode:function(e){return e.firstChild},clone:function(e){var t=this.extendOptions(e);return new P(t)}});a(o.ui.editor,{LinkFormatFinder:C,LinkFormatter:S,UnlinkCommand:T,LinkCommand:D,AutoLinkCommand:A,UnlinkTool:E,DomTextLinkDetection:I,LeftDomTextTraverser:R,RightDomTextTraverser:P}),b("createLink",new p({key:"K",ctrl:!0,command:D,template:new f({template:u.buttonTemplate,title:"Create Link"})})),b("unlink",new E({key:"K",ctrl:!0,shift:!0,template:new f({template:u.buttonTemplate,title:"Remove Link"})})),b("autoLink",new p({key:[w.ENTER,w.SPACEBAR],keyPressCommand:!0,command:A}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/formatblock.min",["editor/plugins/format.min"],e)}(function(){!function(e){var t,n=window.kendo,i=n.Class,o=e.extend,r=n.ui.editor,a=n.ui.Editor.fn.options.formats,s=r.Dom,l=r.ToolTemplate,c=r.FormatTool,d=r.EditorUtils,u=d.registerTool,h=d.registerFormat,p=r.RangeUtils,f=i.extend({init:function(e){this.format=e},contains:function(e,t){var n,i,o;for(n=0,i=t.length;n<i;n++)if(o=t[n],!o||!s.isAncestorOrSelf(e,o))return!1;return!0},findSuitable:function(t){var n,i,o,r,a=this.format,l=[];for(n=0,i=t.length;n<i;n++){for(r=a.length-1;r>=0&&!(o=s.ofType(t[n],a[r].tags)?t[n]:s.closestEditableOfType(t[n],a[r].tags));r--);if(!o||"true"===o.contentEditable)return[];e.inArray(o,l)<0&&l.push(o)}for(this._resolveListsItems(l),n=0,i=l.length;n<i;n++)if(this.contains(l[n],l))return[l[n]];return l},_resolveListsItems:function(e){var t,n,i;for(t=0;t<e.length;t++)n=e[t],i=s.is(n,"li")?n:s.wrapper(n),i=i&&s.list(i)?i.children[0]:i,s.is(i,"li")&&(n=e[t]=i)},findFormat:function(e){var t,n,i,o,a,l,c=this.format,d=s.editableParent(e),u=this.options&&this.options.immutables,h=r.Immutables;for(t=0,n=c.length;t<n;t++){if(i=e,o=c[t].tags,a=c[t].attr,u&&o&&"immutable"==o[0]&&(l=h.immutableParent(i),l&&s.attrEquals(l,a)))return i;for(;i&&s.isAncestorOf(d,i);){if(s.ofType(i,o)&&s.attrEquals(i,a))return i;i=i.parentNode}}return null},getFormat:function(e){var t,n,i=this,o=function(e){return i.findFormat(s.isDataNode(e)?e.parentNode:e)},r=o(e[0]);if(!r)return"";for(t=1,n=e.length;t<n;t++)if(r!=o(e[t]))return"";return r.nodeName.toLowerCase()},isFormatted:function(e){for(var t=0,n=e.length;t<n;t++)if(!this.findFormat(e[t]))return!1;return!0}}),g=i.extend({init:function(e,t){this.format=e,this.values=t,this.finder=new f(e)},wrap:function(e,t,n){var i,o,r,a,l,c=1==n.length?s.blockParentOrBody(n[0]):s.commonAncestor.apply(null,n);for(s.isInline(c)&&(c=s.blockParentOrBody(c)),i=s.significantChildNodes(c),o=s.findNodeIndex(i[0]),r=s.create(c.ownerDocument,e,t),a=0;a<i.length;a++)l=i[a],s.isBlock(l)?(s.attr(l,t),r.childNodes.length&&(s.insertBefore(r,l),r=r.cloneNode(!1)),o=s.findNodeIndex(l)+1):r.appendChild(l);r.firstChild&&s.insertAt(c,r,o)},apply:function(t){function n(e){return o({},e&&e.attr,f)}var i,r,a,l,c,u,h,p,f=this.values;if(this._handleImmutables(t,!0),r=s.filter("img",t),a=d.formatByName("img",this.format),l=n(a),e.each(r,function(){s.attr(this,l)}),r.length!=t.length)if(c=s.filter("img",t,!0),u=this.finder.findSuitable(c),u.length)for(h=0,p=u.length;h<p;h++)i=d.formatByName(s.name(u[h]),this.format),s.attr(u[h],n(i));else i=this.format[0],this.wrap(i.tags[0],n(i),c)},_handleImmutables:function(e,t){var n,i,o,a,l;if(this.immutables()&&(n=d.formatByName("immutable",this.format)))for(i=r.Immutables,o=e.length-1,a=o;a>=0;a--)l=i.immutableParent(e[a]),l&&(l!==e[a+1]&&(t?s.attr(l,n.attr):s.unstyle(l,n.attr.style)),e.splice(a,1))},immutables:function(){return this.editor&&this.editor.options.immutables},remove:function(e){var t,n,i,o,r;for(this._handleImmutables(e,!1),t=0,n=e.length;t<n;t++)i=this.finder.findFormat(e[t]),i&&(r=s.name(i),o=d.formatByName(r,this.format),o.attr.style&&s.unstyle(i,o.attr.style),o.attr.className&&s.removeClass(i,o.attr.className))},toggle:function(e){var t=this,n=s.filterBy(p.nodes(e),s.htmlIndentSpace,!0);t.finder.isFormatted(n)?t.remove(n):t.apply(n)}}),m=i.extend({init:function(e,t){var n=this;n.format=e,n.values=t,n.finder=new f(e)},apply:function(e){var t,n,i,o,a,l,c,d,u,h,p=this.format,f=s.blockParents(e),m=p[0].tags[0];if(f.length)for(t=0,n=f.length;t<n;t++)d=f[t],u=this.immutables()&&r.Immutables.immutableParent(d),u||(c=s.name(d),"li"==c?(i=d.parentNode,o=new r.ListFormatter(i.nodeName.toLowerCase(),m),a=this.editor.createRange(),a.selectNode(f[t]),o.toggle(a)):m&&("td"==c||d.attributes.contentEditable)?new g(p,this.values).apply(d.childNodes):(l=s.changeTag(d,m),s.attr(l,p[0].attr)));else h=new g(p,this.values),h.editor=this.editor,h.apply(e)},toggle:function(e){var t=p.textNodes(e);t.length||(e.selectNodeContents(e.commonAncestorContainer),t=p.textNodes(e),t.length||(t=s.significantChildNodes(e.commonAncestorContainer))),this.apply(t)},immutables:function(){return this.editor&&this.editor.options.immutables}}),v=c.extend({init:function(e){c.fn.init.call(this,o(e,{finder:new f(e.format),formatter:function(){return new g(e.format)}}))}});o(r,{BlockFormatFinder:f,BlockFormatter:g,GreedyBlockFormatter:m,BlockFormatTool:v}),t=["ul","ol","li"],h("justifyLeft",[{tags:s.nonListBlockElements,attr:{style:{textAlign:"left"}}},{tags:["img"],attr:{style:{"float":"left",display:"",marginLeft:"",marginRight:""}}},{tags:["immutable"],attr:{style:{"float":"left",display:"",marginLeft:"",marginRight:""}}},{tags:t,attr:{style:{textAlign:"left",listStylePosition:""}}}]),u("justifyLeft",new v({format:a.justifyLeft,template:new l({template:d.buttonTemplate,title:"Justify Left"})})),h("justifyCenter",[{tags:s.nonListBlockElements,attr:{style:{textAlign:"center"}}},{tags:["img"],attr:{style:{display:"block",marginLeft:"auto",marginRight:"auto","float":""}}},{tags:["immutable"],attr:{style:{display:"block",marginLeft:"auto",marginRight:"auto","float":""}}},{tags:t,attr:{style:{textAlign:"center",listStylePosition:"inside"}}}]),u("justifyCenter",new v({format:a.justifyCenter,template:new l({template:d.buttonTemplate,title:"Justify Center"})})),h("justifyRight",[{tags:s.nonListBlockElements,attr:{style:{textAlign:"right"}}},{tags:["img"],attr:{style:{"float":"right",display:"",marginLeft:"",marginRight:""}}},{tags:["immutable"],attr:{style:{"float":"right",display:"",marginLeft:"",marginRight:""}}},{tags:t,attr:{style:{textAlign:"right",listStylePosition:"inside"}}}]),u("justifyRight",new v({format:a.justifyRight,template:new l({template:d.buttonTemplate,title:"Justify Right"})})),h("justifyFull",[{tags:s.nonListBlockElements,attr:{style:{textAlign:"justify"}}},{tags:["img"],attr:{style:{display:"block",marginLeft:"auto",marginRight:"auto","float":""}}},{tags:["immutable"],attr:{style:{display:"block",marginLeft:"auto",marginRight:"auto","float":""}}},{tags:t,attr:{style:{textAlign:"justify",listStylePosition:""}}}]),u("justifyFull",new v({format:a.justifyFull,template:new l({template:d.buttonTemplate,title:"Justify Full"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/lists.min",["editor/plugins/formatblock.min"],e)}(function(){!function(e){var t=window.kendo,n=t.Class,i=e.extend,o=t.ui.editor,r=o.Dom,a=o.RangeUtils,s=o.EditorUtils,l=o.Command,c=o.ToolTemplate,d=o.FormatTool,u=o.BlockFormatFinder,h=a.textNodes,p=o.EditorUtils.registerTool,f=u.extend({init:function(e){this.tag=e;var t=this.tags=["ul"==e?"ol":"ul",e];u.fn.init.call(this,[{tags:t}])},isFormatted:function(e){var t,n,i=[];for(n=0;n<e.length;n++)t=this.findFormat(e[n]),t&&r.name(t)==this.tag&&i.push(t);if(i.length<1)return!1;if(i.length!=e.length)return!1;for(n=0;n<i.length&&i[n].parentNode==t.parentNode;n++)if(i[n]!=t)return!1;return!0},findSuitable:function(e){var t=this.findFormat(e[0]);return t&&r.name(t)==this.tag?t:null}}),g=n.extend({init:function(e,t){var n=this;n.finder=new f(e),n.tag=e,n.unwrapTag=t},isList:function(e){return r.list(e)},immutables:function(){return this.editor&&!!this.editor.options.immutables},wrap:function(t,n){var i,a,s=r.create(t.ownerDocument,"li"),l=this.immutables()?o.Immutables.immutable:e.noop;for(i=0;i<n.length;i++)if(a=n[i],r.is(a,"li"))t.appendChild(a);else if(this.isList(a))for(;a.firstChild;)t.appendChild(a.firstChild);else if(r.is(a,"td")){for(;a.firstChild;)s.appendChild(a.firstChild);t.appendChild(s),a.appendChild(t),t=t.cloneNode(!1),s=s.cloneNode(!1)}else s.appendChild(a),r.isBlock(a)&&(t.appendChild(s),l(a)||r.unwrap(a),s=s.cloneNode(!1));s.firstChild&&t.appendChild(s)},containsAny:function(e,t){for(var n=0;n<t.length;n++)if(r.isAncestorOrSelf(e,t[n]))return!0;return!1},suitable:function(e,t){if("k-marker"==e.className){var n=e.nextSibling;if(n&&r.isBlock(n))return!1;if(n=e.previousSibling,n&&r.isBlock(n))return!1}return this.containsAny(e,t)||r.isInline(e)||3==e.nodeType},_parentLists:function(t){var n=r.closestEditable(t);return e(t).parentsUntil(n,"ul,ol")},split:function(e){var t,n,i,o,s,l,c=h(e);if(c.length)for(t=r.parentOfType(c[0],["li"]),n=r.parentOfType(c[c.length-1],["li"]),e.setStartBefore(t),e.setEndAfter(n),o=0,s=c.length;o<s;o++)l=this.finder.findFormat(c[o]),l&&(i=this._parentLists(l),i.length?a.split(e,i.last()[0],!0):a.split(e,l,!0))},merge:function(e,t){for(var n,i=t.previousSibling;i&&("k-marker"==i.className||3==i.nodeType&&r.isWhitespace(i));)i=i.previousSibling;if(i&&r.name(i)==e){for(;t.firstChild;)i.appendChild(t.firstChild);r.remove(t),t=i}for(n=t.nextSibling;n&&("k-marker"==n.className||3==n.nodeType&&r.isWhitespace(n));)n=n.nextSibling;if(n&&r.name(n)==e){for(;t.lastChild;)n.insertBefore(t.lastChild,n.firstChild);r.remove(t)}},breakable:function(e){return e!=e.ownerDocument.body&&!/table|tbody|tr|td/.test(r.name(e))&&!e.attributes.contentEditable},applyOnSection:function(t,n){function i(){u.push(this)}var o,a,s,l,c=this.tag,d=r.closestSplittableParent(n),u=[],h=this.finder.findSuitable(n);for(h||(h=new f("ul"==c?"ol":"ul").findSuitable(n)),/table|tbody/.test(r.name(d))?o=e.map(n,function(e){return r.parentOfType(e,["td"])}):(o=r.significantChildNodes(d),e.grep(o,r.isBlock).length&&(o=e.grep(o,e.proxy(function(e){return this.containsAny(e,n)},this))),o.length||(o=n)),a=0;a<o.length;a++)s=o[a],l=(!h||!r.isAncestorOrSelf(h,s))&&this.suitable(s,n),l&&(h&&this.isList(s)?(e.each(s.children,i),r.remove(s)):u.push(s));for(u.length==o.length&&this.breakable(d)&&(u=[d]),h||(h=r.create(d.ownerDocument,c),r.isBlock(u[0])&&r.mergeAttributes(u[0],h),r.insertBefore(h,u[0])),this.wrap(h,u);r.isBom(h.nextSibling);)r.remove(h.nextSibling);r.is(h,c)||r.changeTag(h,c),this.merge(c,h)},apply:function(t){function n(){i&&d.push({section:i,nodes:a})}var i,a,s,l,c=0,d=[],u=t.length,h=this.immutables()?o.Immutables.immutableParent:e.noop;for(c=0;c<u;c++)l=h(t[c])||t[c],s=r.closestEditable(l,["td","body"]),i&&s==i?a.push(l):(n(),a=[l],i=s);for(n(),c=0;c<d.length;c++)this.applyOnSection(d[c].section,d[c].nodes)},unwrap:function(e){var t,n,i,o,a=e.ownerDocument.createDocumentFragment(),s=this.unwrapTag;for(n=e.firstChild;n;n=n.nextSibling){for(i=r.create(e.ownerDocument,s||"p");n.firstChild;)o=n.firstChild,r.isBlock(o)?(i.firstChild&&(a.appendChild(i),i=r.create(e.ownerDocument,s||"p")),a.appendChild(o)):i.appendChild(o);i.firstChild&&a.appendChild(i)}t=this._parentLists(e),t[0]?(r.insertAfter(a,t.last()[0]),t.last().remove()):r.insertAfter(a,e),r.remove(e)},remove:function(e){var t,n,i;for(n=0,i=e.length;n<i;n++)t=this.finder.findFormat(e[n]),t&&this.unwrap(t)},toggle:function(e){var t,n=this,i=h(e),o=e.commonAncestorContainer;i.length||(e.selectNodeContents(o),i=h(e),i.length||(t=o.ownerDocument.createTextNode(""),e.startContainer.appendChild(t),i=[t],e.selectNode(t.parentNode))),i=r.filterBy(i,r.htmlIndentSpace,!0),n.finder.isFormatted(i)?(n.split(e),n.remove(i)):n.apply(i)}}),m=l.extend({init:function(e){e.formatter=new g(e.tag),l.fn.init.call(this,e)}}),v=d.extend({init:function(e){this.options=e,d.fn.init.call(this,i(e,{finder:new f(e.tag)}))},command:function(e){return new m(i(e,{tag:this.options.tag}))}});i(o,{ListFormatFinder:f,ListFormatter:g,ListCommand:m,ListTool:v}),p("insertUnorderedList",new v({tag:"ul",template:new c({template:s.buttonTemplate,title:"Insert unordered list"})})),p("insertOrderedList",new v({tag:"ol",template:new c({template:s.buttonTemplate,title:"Insert ordered list"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/formatting.min",["editor/plugins/inlineformat.min"],e)}(function(){!function(e){function t(e){var t,o,r=l.closestEditableOfType(e,["li"]);r&&(t=new i.ListFormatter(l.name(r.parentNode)),o=n.ui.editor.W3CRange.fromNode(e),o.selectNode(r),t.toggle(o))}var n=window.kendo,i=n.ui.editor,o=i.Tool,r=i.ToolTemplate,a=i.DelayedExecutionTool,s=i.Command,l=i.Dom,c=i.EditorUtils,d=i.RangeUtils,u=c.registerTool,h=a.extend({init:function(e){var t=this;o.fn.init.call(t,n.deepExtend({},t.options,e)),t.type="kendoSelectBox",t.finder={getFormat:function(){return""}}},options:{items:[{text:"Paragraph",value:"p"},{text:"Quotation",value:"blockquote"},{text:"Heading 1",value:"h1"},{text:"Heading 2",value:"h2"},{text:"Heading 3",value:"h3"},{text:"Heading 4",value:"h4"},{text:"Heading 5",value:"h5"},{text:"Heading 6",value:"h6"}],width:110},toFormattingItem:function(e){var t,n=e.value;return n?e.tag||e.className?e:(t=n.indexOf("."),0===t?e.className=n.substring(1):t==-1?e.tag=n:(e.tag=n.substring(0,t),e.className=n.substring(t+1)),e):e},command:function(t){var n=this,o=t.value;return o=this.toFormattingItem(o),new i.FormatCommand({ +range:t.range,formatter:function(){var t,r=(o.tag||o.context||"span").split(","),a=[{tags:r,attr:{className:o.className||""}}];return t=e.inArray(r[0],l.inlineElements)>=0?new i.GreedyInlineFormatter(a):new i.GreedyBlockFormatter(a),t.editor=n.editor,t}})},initialize:function(e,t){var i=t.editor,r=this.options,a=r.name,s=this;s.editor=i,e.width(r.width),e.kendoSelectBox({dataTextField:"text",dataValueField:"value",dataSource:r.items||i.options[a],title:i.options.messages[a],autoSize:!0,change:function(){var e=this.dataItem();e&&o.exec(i,a,e.toJSON())},dataBound:function(){var e,t=this.dataSource.data();for(e=0;e<t.length;e++)t[e]=s.toFormattingItem(t[e])},highlightFirst:!1,template:n.template('<span unselectable="on" style="display:block;#=(data.style||"")#">#:data.text#</span>')}),e.addClass("k-decorated").closest(".k-widget").removeClass("k-"+a).find("*").addBack().attr("unselectable","on")},getFormattingValue:function(t,n){var i,o,r,a,s,l,c;for(i=0;i<t.length;i++)if(o=t[i],r=o.tag||o.context||"",a=o.className?"."+o.className:"",s=r+a,l=e(n[0]).closest(s)[0]){if(1==n.length)return o.value;for(c=1;c<n.length&&e(n[c]).closest(s)[0];c++)if(c==n.length-1)return o.value}return""},update:function(t,n){var i,o,r,s,c,d=e(t).data(this.type);if(d&&(i=d.dataSource,o=i.data(),c=l.commonAncestor.apply(null,n),c==l.closestEditable(c)||this._ancestor!=c)){for(this._ancestor=c,r=0;r<o.length;r++)s=o[r].context,o[r].visible=!s||!!e(c).closest(s).length;i.filter([{field:"visible",operator:"eq",value:!0}]),a.fn.update.call(this,t,n),d.value(this.getFormattingValue(i.view(),n)),d.wrapper.toggleClass("k-state-disabled",!i.view().length)}},destroy:function(){this._ancestor=null}}),p=s.extend({exec:function(){var e,t,n,i=this.lockRange(!0);for(this.tagsToClean=this.options.remove||"strong,em,span,sup,sub,del,b,i,u,font".split(","),d.wrapSelectedElements(i),e=d.mapAll(i,function(e){return e}),t=e.length-1;t>=0;t--)n=e[t],this.immutableParent(n)||this.clean(n);this.releaseRange(i)},clean:function(n){var o,r,a,s,c;if(n&&!l.isMarker(n)){if(o=l.name(n),"ul"==o||"ol"==o)for(r=new i.ListFormatter(o),a=n.previousSibling,s=n.nextSibling,r.unwrap(n);a&&a!=s;a=a.nextSibling)this.clean(a);else if("blockquote"==o)l.changeTag(n,"p");else if(1!=n.nodeType||l.insignificant(n))t(n);else{for(c=n.childNodes.length-1;c>=0;c--)this.clean(n.childNodes[c]);n.removeAttribute("style"),n.removeAttribute("class")}e.inArray(o,this.tagsToClean)>-1&&l.unwrap(n)}},immutableParent:function(e){return this.immutables()&&i.Immutables.immutableParent(e)}});e.extend(i,{FormattingTool:h,CleanFormatCommand:p}),u("formatting",new h({template:new r({template:c.dropDownListTemplate,title:"Format"})})),u("cleanFormatting",new o({command:p,template:new r({template:c.buttonTemplate,title:"Clean formatting"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/image.min",["kendo.imagebrowser.min","editor/command.min"],e)}(function(){!function(e,t){var n=window.kendo,i=e.extend,o=n.ui.editor,r=o.EditorUtils,a=o.Dom,s=r.registerTool,l=o.ToolTemplate,c=o.RangeUtils,d=o.Command,u=n.keys,h="#k-editor-image-url",p="#k-editor-image-title",f="#k-editor-image-width",g="#k-editor-image-height",m=d.extend({init:function(e){var t=this;d.fn.init.call(t,e),t.async=!0,t.attributes={}},insertImage:function(e,t){var n,i=this.attributes,o=c.documentFromRange(t);if(i.src&&"http://"!=i.src){if(n=function(){setTimeout(function(){i.width||e.removeAttribute("width"),i.height||e.removeAttribute("height"),e.removeAttribute("complete")})},!e)return e=a.create(o,"img",i),e.onload=e.onerror=n,t.deleteContents(),t.insertNode(e),e.nextSibling||a.insertAfter(o.createTextNode("\ufeff"),e),n(),t.setStartAfter(e),t.setEndAfter(e),c.selectRange(t),!0;e.onload=e.onerror=n,a.attr(e,i),n()}return!1},_dialogTemplate:function(e){return n.template('<div class="k-editor-dialog k-popup-edit-form"><div class="k-edit-form-container"><div class="k-edit-form-content"># if (showBrowser) { #<div class="k-filebrowser k-imagebrowser"></div># } #<div class=\'k-edit-label\'><label for="k-editor-image-url">#: messages.imageWebAddress #</label></div><div class=\'k-edit-field\'><input type="text" class="k-textbox" id="k-editor-image-url"></div><div class=\'k-edit-label\'><label for="k-editor-image-title">#: messages.imageAltText #</label></div><div class=\'k-edit-field\'><input type="text" class="k-textbox" id="k-editor-image-title"></div><div class=\'k-edit-label\'><label for="k-editor-image-width">#: messages.imageWidth #</label></div><div class=\'k-edit-field\'><input type="text" class="k-textbox" id="k-editor-image-width"></div><div class=\'k-edit-label\'><label for="k-editor-image-height">#: messages.imageHeight #</label></div><div class=\'k-edit-field\'><input type="text" class="k-textbox" id="k-editor-image-height"></div></div><div class="k-edit-buttons k-state-default"><button class="k-dialog-insert k-button k-primary">#: messages.dialogInsert #</button><button class="k-dialog-close k-button">#: messages.dialogCancel #</button></div></div></div>')({messages:this.editor.options.messages,showBrowser:e})},redo:function(){var e=this,t=e.lockRange();e.insertImage(c.image(t),t)||e.releaseRange(t)},exec:function(){function e(e){var t=s.element,n=parseInt(t.find(f).val(),10),i=parseInt(t.find(g).val(),10);m.attributes={src:t.find(h).val().replace(/ /g,"%20"),alt:t.find(p).val()},m.attributes.width=null,m.attributes.height=null,!isNaN(n)&&n>0&&(m.attributes.width=n),!isNaN(i)&&i>0&&(m.attributes.height=i),_=m.insertImage(b,v),o(e),m.change&&m.change()}function o(e){e.preventDefault(),s.destroy(),a.windowFromDocument(c.documentFromRange(v)).focus(),_||m.releaseRange(v)}function r(t){t.keyCode==u.ENTER?e(t):t.keyCode==u.ESC&&o(t)}var s,l,d,m=this,v=m.lockRange(),_=!1,b=c.image(v),w=b&&b.getAttribute("width")||"",k=b&&b.getAttribute("height")||"",y=n.support.browser.msie,x=m.editor.options,C=x.messages,S=x.imageBrowser,T=!!(n.ui.ImageBrowser&&S&&S.transport&&S.transport.read!==t),D={title:C.insertImage,visible:!1,resizable:T};this.expandImmutablesIn(v),D.close=o,T&&(D.width=750),s=this.createDialog(m._dialogTemplate(T),D).toggleClass("k-filebrowser-dialog",T).find(".k-dialog-insert").click(e).end().find(".k-dialog-close").click(o).end().find(".k-edit-field input").keydown(r).end().find(h).val(b?b.getAttribute("src",2):"http://").end().find(p).val(b?b.alt:"").end().find(f).val(w).end().find(g).val(k).end().data("kendoWindow"),l=s.element,T&&(this._imageBrowser=new n.ui.ImageBrowser(l.find(".k-imagebrowser"),i({},S)),this._imageBrowser.bind("change",function(e){"f"===e.selected.get("type")&&l.find(h).val(this.value())}),this._imageBrowser.bind("apply",e)),y&&(d=l.closest(".k-window").height(),l.css("max-height",d)),s.center().open(),l.find(h).focus().select()}});n.ui.editor.ImageCommand=m,s("insertImage",new o.Tool({command:m,template:new l({template:r.buttonTemplate,title:"Insert Image"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/import.min",["editor/main.min"],e)}(function(){!function(e,t){var n=window.kendo,i=e.extend,o=e.proxy,r=n.ui.editor,a=r.EditorUtils,s=r.Command,l=r.Tool,c=a.registerTool,d=r.ToolTemplate,u='<div contenteditable="false" class="k-loading-mask" style="width: 100%; height: 100%; position: absolute; top: 0px; left: 0px;"><div class="k-loading-image"></div><div class="k-loading-color"></div></div>',h=s.extend({exec:function(){(this.editor._uploadWidget||this._initializeUploadWidget()).element.click()},_initializeUploadWidget:function(){var t=this,n=t.editor,i=n.options["import"],r=e('<input id="editorImport" name="files" type="file" />').kendoUpload({success:o(t._onUploadSuccess,t),progress:o(t._onUploadProgress,t),select:o(t._onUploadSelect,t),error:o(t._onUploadError,t),complete:o(t._onUploadComplete,t),showFileList:!1,multiple:!1,async:{saveUrl:i.proxyUrl,autoUpload:!0,saveField:"file"},validation:{allowedExtensions:i.allowedExtensions,maxFileSize:i.maxFileSize}}).getKendoUpload();return n._uploadWidget=r,r},_onUploadComplete:function(e){this._trigger("complete",e),e.sender.clearAllFiles(),this._removeLoadingOverlay()},_onUploadSuccess:function(e){this.editor.value(e.response.html.replace(/<\/?body>/gi,"")),this._trigger("success",e)},_onUploadProgress:function(e){this._trigger("progress",e)},_onUploadSelect:function(e){this._trigger("select",e),e.files[0].validationErrors||this._initLoadingOverlay()},_onUploadError:function(e){this._trigger("error",e)},_trigger:function(e,t){var n=this.editor,i=n.options["import"];"function"==typeof i[e]&&i[e].call(n,t)},_initLoadingOverlay:function(){var t=this.editor.body;r.Dom.is(t,"body")?this._iframeWrapper=this._container=this.editor.wrapper.find("iframe").parent().css({position:"relative"}).append(u):this._container=e(t).append(u),n.ui.progress(this._container,!0)},_removeLoadingOverlay:function(){n.ui.progress(this._container,!1),e(this._iframeWrapper).css({position:""}),delete this._container,delete this._iframeWrapper}});i(r,{ImportCommand:h}),c("import",new l({command:h,template:new d({template:a.buttonTemplate,title:"Import"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/insert.min",["editor/command.min"],e)}(function(){!function(e){var t=window.kendo,n=t.ui.editor,i=n.Command,o=n.GenericCommand,r=n.EditorUtils,a=r.registerTool,s=n.Tool,l=n.ToolTemplate,c=n.RestorePoint,d=e.extend,u=i.extend({init:function(e){i.fn.init.call(this,e),this.managesUndoRedo=!0},exec:function(){var e,t=this.editor,n=this.options,i=n.range,r=t.body,a=new c(i,r),s=n.html||n.value||"";t.selectRange(i),t.clipboard.paste(s,n),n.postProcess&&n.postProcess(t,t.getRange()),e=new o(a,new c(t.getRange(),r)),e.editor=t,t.undoRedoStack.push(e),t.focus()}}),h=s.extend({initialize:function(e,t){var i=t.editor,o=this.options,r=o.items?o.items:i.options.insertHtml;this._selectBox=new n.SelectBox(e,{dataSource:r,dataTextField:"text",dataValueField:"value",change:function(){s.exec(i,"insertHtml",this.value())},title:i.options.messages.insertHtml,highlightFirst:!1})},command:function(e){return new u(e)},update:function(e){var t=e.data("kendoSelectBox")||e.find("select").data("kendoSelectBox");t.close(),t.value(t.options.title)}});d(n,{InsertHtmlCommand:u,InsertHtmlTool:h}),a("insertHtml",new h({template:new l({template:r.dropDownListTemplate,title:"Insert HTML",initialValue:"Insert HTML"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/export.min",["editor/main.min"],e)}(function(){!function(e,t){var n=window.kendo,i=e.extend,o=e.proxy,r=n.ui.editor,a=r.EditorUtils,s=r.Command,l=r.Tool,c=a.registerTool,d=r.ToolTemplate,u=[{text:"Docx",value:"docx"},{text:"Rtf",value:"rtf"},{text:"Pdf",value:"pdf"},{text:"Html",value:"html"},{text:"Plain Text",value:"txt"}],h=s.extend({init:function(e){var t=this;t.options=e,s.fn.init.call(t,e),t.attributes=null,t.exportType=e.exportType},exec:function(){var e=this,t=this.lockRange(!0);e.postToProxy(),e.releaseRange(t)},postToProxy:function(){this.generateForm().appendTo("body").submit().remove()},generateForm:function(){var t=this,n=t.editor.options.exportAs,i=e("<form>").attr({action:n&&n.proxyURL||"",method:"POST"});return i.append([t.valueInput(),t.exportTypeInput(),t.fileNameInput()]),i},valueInput:function(){var t=this.editor;return e("<input>").attr({value:t.encodedValue(),name:"value",type:"hidden"})},exportTypeInput:function(){var t=this;return e("<input>").attr({value:t.exportType,name:"exportType",type:"hidden"})},fileNameInput:function(){var t=this.editor,n=t.options.exportAs,i=n&&n.fileName||t.element.attr("id")||"editor";return e("<input>").attr({value:i,name:"fileName",type:"hidden"})}}),p=l.extend({init:function(e){var t=this;l.fn.init.call(t,n.deepExtend({},t.options,e)),t.type="kendoSelectBox"},options:{items:u,width:115},command:function(e){var t=e.value;return new r.ExportAsCommand({range:e.range,exportType:t.exportType})},initialize:function(e,t){var i=this,r=t.editor,a=i.options,s=a.name,l=o(i.changeHandler,i),c=a.items||r.options[s];c.unshift({text:r.options.messages[s],value:""}),i.editor=r,e.width(a.width),e.kendoSelectBox({dataTextField:"text",dataValueField:"value",dataSource:c,autoSize:!0,change:l,open:function(e){var t=e.sender;t.items()[0].style.display="none",t.unbind("open")},highlightFirst:!1,template:n.template('<span unselectable="on" style="display:block;#=(data.style||"")#">#:data.text#</span>')}),e.addClass("k-decorated").closest(".k-widget").removeClass("k-"+s).find("*").addBack().attr("unselectable","on")},changeHandler:function(e){var t=e.sender,n=t.dataItem(),i=n&&n.value;this._exec(i),t.value("")},_exec:function(e){e&&l.exec(this.editor,this.options.name,{exportType:e})},destroy:function(){this._ancestor=null}});i(r,{ExportAsTool:p,ExportAsCommand:h}),c("exportAs",new p({template:new d({template:a.dropDownListTemplate,title:"Export As"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/indent.min",["editor/plugins/formatblock.min"],e)}(function(){!function(e,t){function n(n,i){var o="rtl"==e(n).css("direction"),r=o?"Right":"Left",a="td"!=s.name(n)?"margin"+r:"padding"+r;return i===t?n.style[a]||0:(i>0?n.style[a]=i+"px":(n.style[a]="",n.style.cssText||n.removeAttribute("style")),t)}var i=window.kendo,o=i.Class,r=e.extend,a=i.ui.editor,s=a.Dom,l=a.EditorUtils,c=l.registerTool,d=a.Command,u=a.Tool,h=a.ToolTemplate,p=a.RangeUtils,f=s.blockElements,g=a.BlockFormatFinder,m=a.BlockFormatter,v=o.extend({init:function(){this.finder=new g([{tags:s.blockElements}])},apply:function(t){var i,o,r,a,l,c,d,u,h,p,f,g;if(t=s.filterBy(t,s.htmlIndentSpace,!0),i=this.finder.findSuitable(t),o=[],i=this.mapImmutables(i),i.length){for(r=0,a=i.length;r<a;r++)s.is(i[r],"li")?e(i[r]).index()?e.inArray(i[r].parentNode,o)<0&&o.push(i[r]):o.push(i[r].parentNode):o.push(i[r]);for(;o.length;)if(l=o.shift(),s.is(l,"li"))if(c=l.parentNode,d=e(l).prev("li"),u=d.find("ul,ol").last(),h=e(l).children("ul,ol")[0],h&&d[0])u[0]?(u.append(l),u.append(e(h).children()),s.remove(h)):(d.append(h),h.insertBefore(l,h.firstChild));else for(h=d.children("ul,ol")[0],h||(h=s.create(l.ownerDocument,s.name(c)),d.append(h));l&&l.parentNode==c;)h.appendChild(l),l=o.shift();else for(p=parseInt(n(l),10)+30,n(l,p),f=0;f<o.length;f++)e.contains(l,o[f])&&o.splice(f,1)}else g=new m([{tags:["p"]}],{style:{marginLeft:30}}),g.apply(t)},mapImmutables:function(t){if(this.immutables){var n=[];return e.map(t,function(t){var i=a.Immutables.immutableParent(t);if(i){if(e.inArray(i,n)!==-1)return null;n.push(i)}return i||t})}return t},remove:function(t){t=s.filterBy(t,s.htmlIndentSpace,!0);var i,o,r,a,l,c,d,u,h=this.finder.findSuitable(t);for(h=this.mapImmutables(h),o=0,r=h.length;o<r;o++){if(d=e(h[o]),d.is("li")){if(a=d.parent(),l=a.parent(),l.is("li,ul,ol")&&!n(a[0])){if(i&&e.contains(i,l[0]))continue;c=d.nextAll("li"),c.length&&e(a[0].cloneNode(!1)).appendTo(d).append(c),l.is("li")?d.insertAfter(l):d.appendTo(l),a.children("li").length||a.remove();continue}if(i==a[0])continue;i=a[0]}else i=h[o];u=parseInt(n(i),10)-30,n(i,u)}}}),_=d.extend({init:function(t){var n=this;t.formatter={toggle:e.proxy(function(e){var t=new v;t.immutables=this.editor&&this.editor.options.immutables,t.apply(p.nodes(e))},n)},d.fn.init.call(this,t)}}),b=d.extend({init:function(t){var n=this;t.formatter={toggle:e.proxy(function(e){var t=new v;t.immutables=this.editor&&this.editor.options.immutables,t.remove(p.nodes(e))},n)},d.fn.init.call(this,t)}}),w=u.extend({init:function(e){u.fn.init.call(this,e),this.finder=new g([{tags:f}])},initialize:function(t,n){u.fn.initialize.call(this,t,n),e.extend(this.options,{immutables:n.editor&&n.editor.options.immutables}),t.addClass("k-state-disabled")},update:function(i,o){var r,l,c,d,u,h,p=this.finder.findSuitable(o);for(c=0,d=p.length;c<d;c++)if(u=p[c],this.options.immutables&&(h=a.Immutables.immutableParent(u),h&&(u=h)),r=n(u),r||(l=e(u).parents("ul,ol").length,r=s.is(u,"li")&&(l>1||n(u.parentNode))||s.ofType(u,["ul","ol"])&&l>0),r)return i.removeClass("k-state-disabled"),t;i.addClass("k-state-disabled").removeClass("k-state-hover")}});r(a,{IndentFormatter:v,IndentCommand:_,OutdentCommand:b,OutdentTool:w}),c("indent",new u({command:_,template:new h({template:l.buttonTemplate,title:"Indent"})})),c("outdent",new w({command:b,template:new h({template:l.buttonTemplate,title:"Outdent"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/linebreak.min",["editor/plugins/formatblock.min"],e)}(function(){!function(e){var t=window.kendo,n=e.extend,i=t.ui.editor,o=i.Dom,r=i.Command,a=i.Tool,s=i.BlockFormatter,l=o.normalize,c=i.RangeUtils,d=i.EditorUtils.registerTool,u=r.extend({init:function(e){this.options=e,r.fn.init.call(this,e)},_insertMarker:function(e,t){var n,i=o.create(e,"a");return i.className="k-marker",t.insertNode(i),i.parentNode||(n=t.commonAncestorContainer,n.innerHTML="",n.appendChild(i)),l(i.parentNode),i},_moveFocus:function(e,t){var n,i;if(o.isEmpty(t))e.setStartBefore(t);else{if(e.selectNodeContents(t),n=c.textNodes(e)[0],!n){for(;t.childNodes.length&&!o.is(t.firstChild,"br");)t=t.firstChild;n=t}o.isEmpty(n)?e.setStartBefore(n):(o.emptyNode(n)&&(n.innerHTML="\ufeff"),i=n.firstChild||n,o.isDataNode(i)?e.setStart(i,0):e.setStartBefore(i))}},shouldTrim:function(e){var t="p,h1,h2,h3,h4,h5,h6".split(","),n=o.parentOfType(e.startContainer,t),i=o.parentOfType(e.endContainer,t);return n&&!i||!n&&i},_blankAfter:function(e){for(;e&&(o.isMarker(e)||""===o.stripBom(e.nodeValue));)e=e.nextSibling;return!e},exec:function(){var t,n,r,a,d,u,h,p,f,g,m,v,_,b,w=this.getRange(),k=c.documentFromRange(w),y=i.emptyElementContent;this.expandImmutablesIn(w),g=this.shouldTrim(w),w.deleteContents(),d=this._insertMarker(k,w),o.stripBomNode(d.previousSibling),o.stripBomNode(d.nextSibling),u=o.closestEditableOfType(d,["li"]),h=o.closestEditableOfType(d,"h1,h2,h3,h4,h5,h6".split(",")),p=o.is(d.parentNode,"table")&&d.parentNode,u?o.emptyNode(u)&&(a=o.create(k,"p"),o.next(u)&&(f=w.cloneRange(),f.selectNode(u),c.split(f,u.parentNode)),m=e("br",u),1==m.length&&m.remove(),v=u.parentNode,_=u.parentNode.children.length,b=_>1&&1==u.childNodes.length&&u.children[0],o.insertAfter(a,v),o.remove(1==_?u.parentNode:u),b&&b!==d?(a.appendChild(b),a.appendChild(d)):a.innerHTML=y,r=a):h&&this._blankAfter(d)?(a=this._insertParagraphAfter(h),o.remove(d),r=a):p&&(a=this._insertParagraphAfter(p),o.remove(d),r=a),r||(u||h||new s([{tags:["p"]}]).apply([d]),w.selectNode(d),t=o.parentOfType(d,[u?"li":h?o.name(h):"p"]),c.split(w,t,g),n=t.previousSibling,o.is(n,"li")&&n.firstChild&&!o.is(n.firstChild,"br")&&(n=n.firstChild),r=t.nextSibling,this.clean(n,{links:!0}),this.clean(r,{links:!0}),o.is(r,"li")&&r.firstChild&&!o.is(r.firstChild,"br")&&(r=r.firstChild),o.remove(t),l(n)),l(r),this._moveFocus(w,r),w.collapse(!0),o.scrollTo(r,!0),c.selectRange(w)},_insertParagraphAfter:function(e){var t=this.getRange(),n=c.documentFromRange(t),r=i.emptyElementContent,a=o.create(n,"p");return o.insertAfter(a,e),a.innerHTML=r,a},clean:function(t,n){var r,a=t;if(t.firstChild&&o.is(t.firstChild,"br")&&o.remove(t.firstChild),o.isDataNode(t)&&!t.nodeValue&&(t=t.parentNode),t){for(r=!1;t.firstChild&&1==t.firstChild.nodeType;)r=r||o.significantNodes(t.childNodes).length>1,t=t.firstChild;if(o.isEmpty(t)||!/^\s*$/.test(t.innerHTML)||r||(e(a).find(".k-br").remove(),t.innerHTML=i.emptyElementContent),n&&n.links)for(;t!=a;){if(o.is(t,"a")&&o.emptyNode(t)){o.unwrap(t);break}t=t.parentNode}}}}),h=r.extend({init:function(e){this.options=e,r.fn.init.call(this,e)},exec:function(){var e,n,i,r,a,s,d=this.getRange();this.expandImmutablesIn(d),e=o.create(c.documentFromRange(d),"br"),n=d.startContainer,r=t.support.browser,a=r.msie&&r.version<11,s=o.is(n,"table")&&n,d.deleteContents(),s?o.insertAfter(e,s):d.insertNode(e),l(e.parentNode),a||e.nextSibling&&!o.isWhitespace(e.nextSibling)||(i=e.cloneNode(!0),i.className="k-br",o.insertAfter(i,e)),d.setStartAfter(e),d.collapse(!0),o.scrollTo(e.nextSibling||e,!0),c.selectRange(d)}});n(i,{ParagraphCommand:u,NewLineCommand:h}),d("insertLineBreak",new a({key:13,shift:!0,command:h})),d("insertParagraph",new a({key:13,command:u}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/file.min",["kendo.filebrowser.min","editor/plugins/link.min"],e)}(function(){!function(e,t){var n=window.kendo,i=e.extend,o=n.ui.editor,r=o.EditorUtils,a=o.Dom,s=r.registerTool,l=o.ToolTemplate,c=o.RangeUtils,d=o.Command,u=o.LinkFormatter,h=c.textNodes,p=n.keys,f="#k-editor-file-url",g="#k-editor-file-text",m="#k-editor-file-title",v=d.extend({init:function(e){var t=this;d.fn.init.call(t,e),t.formatter=new u,t.async=!0,t.attributes={}},insertFile:function(e,t){var n=this.attributes,i=c.documentFromRange(t);if(n.href&&"http://"!=n.href){if(!e)return e=a.create(i,"a",{href:n.href}),e.innerHTML=n.innerHTML,e.title=n.title,t.deleteContents(),t.insertNode(e),e.nextSibling||a.insertAfter(i.createTextNode("\ufeff"),e),t.setStartAfter(e),t.setEndAfter(e),c.selectRange(t),!0;a.attr(e,n)}return!1},_dialogTemplate:function(e){return n.template('<div class="k-editor-dialog k-popup-edit-form"><div class="k-edit-form-container"><div class="k-edit-form-content"># if (showBrowser) { #<div class="k-filebrowser"></div># } #<div class=\'k-edit-label\'><label for="k-editor-file-url">#: messages.fileWebAddress #</label></div><div class=\'k-edit-field\'><input type="text" class="k-textbox" id="k-editor-file-url"></div><div class=\'k-edit-label\'><label for="k-editor-file-text">#: messages.fileText #</label></div><div class=\'k-edit-field\'><input type="text" class="k-textbox" id="k-editor-file-text"></div><div class=\'k-edit-label\'><label for="k-editor-file-title">#: messages.fileTitle #</label></div><div class=\'k-edit-field\'><input type="text" class="k-textbox" id="k-editor-file-title"></div></div><div class="k-edit-buttons k-state-default"><button class="k-dialog-insert k-button k-primary">#: messages.dialogInsert #</button><button class="k-dialog-close k-button">#: messages.dialogCancel #</button></div></div></div>')({messages:this.editor.options.messages,showBrowser:e})},redo:function(){var e=this,t=e.lockRange();this.formatter.apply(t,this.attributes),e.releaseRange(t)},exec:function(){function e(e){var t=s.element,n=t.find(f).val().replace(/ /g,"%20"),i=t.find(g).val(),r=t.find(m).val();u.attributes={href:n,innerHTML:""!==i?i:n,title:r},b=u.insertFile(w,v),o(e),u.change&&u.change()}function o(e){e.preventDefault(),s.destroy(),a.windowFromDocument(c.documentFromRange(v)).focus(),b||u.releaseRange(v)}function r(t){t.keyCode==p.ENTER?e(t):t.keyCode==p.ESC&&o(t)}var s,l,d,u=this,v=u.lockRange(),_=h(v),b=!1,w=_.length?this.formatter.finder.findSuitable(_[0]):null,k=n.support.browser.msie,y=u.editor.options,x=y.messages,C=y.fileBrowser,S=!!(n.ui.FileBrowser&&C&&C.transport&&C.transport.read!==t),T={title:x.insertFile,visible:!1,resizable:S};this.expandImmutablesIn(v),T.close=o,S&&(T.width=750),s=this.createDialog(u._dialogTemplate(S),T).toggleClass("k-filebrowser-dialog",S).find(".k-dialog-insert").click(e).end().find(".k-dialog-close").click(o).end().find(".k-edit-field input").keydown(r).end().find(f).val(w?w.getAttribute("href",2):"http://").end().find(g).val(w?w.innerText:"").end().find(m).val(w?w.title:"").end().data("kendoWindow"),l=s.element,S&&(u._fileBrowser=new n.ui.FileBrowser(l.find(".k-filebrowser"),i({},C)),u._fileBrowser.bind("change",function(e){"f"===e.selected.get("type")&&l.find(f).val(this.value())}),u._fileBrowser.bind("apply",e)),k&&(d=l.closest(".k-window").height(),l.css("max-height",d)),s.center().open(),l.find(f).focus().select()}});n.ui.editor.FileCommand=v,s("insertFile",new o.Tool({command:v,template:new l({template:r.buttonTemplate,title:"Insert File"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/tables.min",["editor/plugins/formatblock.min","editor/plugins/insert.min"],e)}(function(){!function(e,t){var n=window.kendo,i=e.extend,o=e.proxy,r=n.ui.editor,a=r.Dom,s=r.EditorUtils,l=r.RangeUtils,c=r.Command,d="kendoEditor",u="k-state-active",h="k-state-selected",p=r.Tool,f=r.ToolTemplate,g=r.InsertHtmlCommand,m=r.BlockFormatFinder,v=r.EditorUtils.registerTool,_=n.getTouches,b=n.template,w="<td style='width:#=width#%;'>#=content#</td>",k=new m([{tags:["table"]}]),y=g.extend({init:function(t){var n=e.extend({postProcess:this.postProcess,skipCleaners:!0},t||{});g.fn.init.call(this,n)},_tableHtml:function(e,t){var n,i;return e=e||1,t=t||1,n=b(w)({width:100/t,content:r.emptyTableCellContent}),i=100/e,"<table class='k-table' data-last>"+Array(e+1).join("<tr style='height:"+i+"%;'>"+Array(t+1).join(n)+"</tr>")+"</table>"},postProcess:function(t,n){var i=e("table[data-last]",t.document).removeAttr("data-last");n.setStart(i.find("td")[0],0),n.collapse(!0),t.selectRange(n)},exec:function(){var e=this.options;e.html=this._tableHtml(e.rows,e.columns),g.fn.exec.call(this)}}),x=p.extend({initialize:function(t,n){var i,a,l,c;p.fn.initialize.call(this,t,n),i=e(this.options.popupTemplate).appendTo("body").kendoPopup({anchor:t,copyAnchorStyles:!1,open:o(this._open,this),activate:o(this._activate,this),close:o(this._close,this)}).data("kendoPopup"),t.click(o(this._toggle,this)).keydown(o(this._keydown,this)),a=this._editor=n.editor,this._popup=i,l=new r.TableWizardTool({template:new f({template:s.tableWizardButtonTemplate,title:a.options.messages.tableWizard}),command:r.TableWizardCommand,insertNewTable:!0}),v("tableWizardInsert",l),c=e("<div class='k-editor-toolbar'>"+l.options.template.getHtml()+"</div>"),c.appendTo(i.element),a.toolbar&&a.toolbar.attachToolsEvents(c)},popup:function(){return this._popup},_activate:e.noop,_open:function(){this._popup.options.anchor.addClass(u)},_close:function(){this._popup.options.anchor.removeClass(u)},_keydown:function(e){var t=n.keys,i=e.keyCode;i==t.DOWN&&e.altKey?this._popup.open():i==t.ESC&&this._popup.close()},_toggle:function(t){var n=e(t.target).closest(".k-tool");n.hasClass("k-state-disabled")||this.popup().toggle()},update:function(e){var t=this.popup();t.wrapper&&"block"==t.wrapper.css("display")&&t.close(),e.removeClass("k-state-hover")},destroy:function(){this._popup.destroy()}}),C=x.extend({init:function(t){this.cols=8,this.rows=6,x.fn.init.call(this,e.extend(t,{command:y,popupTemplate:"<div class='k-ct-popup'>"+Array(this.cols*this.rows+1).join("<span class='k-ct-cell k-state-disabled' />")+"<div class='k-status'></div></div>"}))},_activate:function(){function t(t){var n=e(window);return{row:Math.floor((t.clientY+n.scrollTop()-u.top)/o)+1,col:Math.floor((t.clientX+n.scrollLeft()-u.left)/i)+1}}var i,o,r=this,a=r._popup.element,s=a.find(".k-ct-cell"),l=s.eq(0),c=s.eq(s.length-1),u=n.getOffset(l),h=n.getOffset(c),p=r.cols,f=r.rows;a.find("*").addBack().attr("unselectable","on"),h.left+=c[0].offsetWidth,h.top+=c[0].offsetHeight,i=(h.left-u.left)/p,o=(h.top-u.top)/f,a.autoApplyNS(d).on("mousemove",".k-ct-cell",function(e){r._setTableSize(t(e))}).on("mouseleave",".k-ct-cell",function(){r._setTableSize()}).on("down",".k-ct-cell",function(e){e.preventDefault();var n=_(e)[0];r._exec(t(n.location))})},_valid:function(e){return e&&e.row>0&&e.col>0&&e.row<=this.rows&&e.col<=this.cols},_exec:function(e){this._valid(e)&&(this._editor.exec("createTable",{rows:e.row,columns:e.col}),this._popup.close())},_setTableSize:function(t){var i=this._popup.element,o=i.find(".k-status"),r=i.find(".k-ct-cell"),a=this.cols,s=this._editor.options.messages;this._valid(t)?(o.text(n.format(s.createTableHint,t.row,t.col)),r.each(function(n){e(this).toggleClass(h,n%a<t.col&&n/a<t.row)})):(o.text(s.createTable),r.removeClass(h))},_keydown:function(e){var t,i,o,r,a,s,l,c;x.fn._keydown.call(this,e),this._popup.visible()&&(t=n.keys,i=e.keyCode,o=this._popup.element.find(".k-ct-cell"),r=Math.max(o.filter(".k-state-selected").last().index(),0),a=Math.floor(r/this.cols),s=r%this.cols,l=!1,i!=t.DOWN||e.altKey?i==t.UP?(l=!0,a--):i==t.RIGHT?(l=!0,s++):i==t.LEFT&&(l=!0,s--):(l=!0,a++),c={row:Math.max(1,Math.min(this.rows,a+1)),col:Math.max(1,Math.min(this.cols,s+1))},i==t.ENTER?this._exec(c):this._setTableSize(c),l&&(e.preventDefault(),e.stopImmediatePropagation()))},_open:function(){var e=this._editor.options.messages;x.fn._open.call(this),this.popup().element.find(".k-status").text(e.createTable).end().find(".k-ct-cell").removeClass(h)},_close:function(){x.fn._close.call(this),this.popup().element.off("."+d)}}),S=c.extend({exec:function(){for(var e,t,n,i,o=this.lockRange(!0),s=o.endContainer;"td"!=a.name(s);)s=s.parentNode;if(!this.immutables()||!r.Immutables.immutableParent(s)){for(t=s.parentNode,e=t.children.length,n=t.cloneNode(!0),i=0;i<t.cells.length;i++)n.cells[i].innerHTML=r.emptyTableCellContent;"before"==this.options.position?a.insertBefore(n,t):a.insertAfter(n,t),this.releaseRange(o)}}}),T=c.extend({exec:function(){var e,t,n,i,o=this.lockRange(!0),s=a.closest(o.endContainer,"td"),l=a.closest(s,"table"),c=l.rows,d=this.options.position;if(!this.immutables()||!r.Immutables.immutableParent(s)){for(e=a.findNodeIndex(s,!0),t=0;t<c.length;t++)n=c[t].cells[e],i=n.cloneNode(),i.innerHTML=r.emptyTableCellContent,"before"==d?a.insertBefore(i,n):a.insertAfter(i,n);this.releaseRange(o)}}}),D=c.extend({exec:function(){var t,n,i,o=this.lockRange(),s=l.mapAll(o,function(t){return e(t).closest("tr")[0]}),c=s[0];if(!this.immutables()||!r.Immutables.immutableParent(c)){if(t=a.closest(c,"table"),t.rows.length<=s.length)n=a.next(t),n&&!a.insignificant(n)||(n=a.prev(t)),a.remove(t);else for(i=0;i<s.length;i++)c=s[i],a.removeTextSiblings(c),n=a.next(c)||a.prev(c),n=n.cells[0],a.remove(c);n&&(o.setStart(n,0),o.collapse(!0),this.editor.selectRange(o))}}}),A=c.extend({exec:function(){var e,t,n=this.lockRange(),i=a.closest(n.endContainer,"td"),o=a.closest(i,"table"),s=o.rows,l=a.findNodeIndex(i,!0),c=s[0].cells.length;if(!this.immutables()||!r.Immutables.immutableParent(i)){if(1==c)e=a.next(o),e&&!a.insignificant(e)||(e=a.prev(o)),a.remove(o);else for(a.removeTextSiblings(i),e=a.next(i)||a.prev(i),t=0;t<s.length;t++)a.remove(s[t].cells[l]);e&&(n.setStart(e,0),n.collapse(!0),this.editor.selectRange(n))}}}),E=p.extend({command:function(e){return e=i(e,this.options),"delete"==e.action?"row"==e.type?new D(e):new A(e):"row"==e.type?new S(e):new T(e)},initialize:function(e,t){p.fn.initialize.call(this,e,t),e.addClass("k-state-disabled")},update:function(e,t){var n=!k.isFormatted(t);e.toggleClass("k-state-disabled",n)}});i(n.ui.editor,{PopupTool:x,TableCommand:y,InsertTableTool:C,TableModificationTool:E,InsertRowCommand:S,InsertColumnCommand:T,DeleteRowCommand:D,DeleteColumnCommand:A}),v("createTable",new C({template:new f({template:s.buttonTemplate,popup:!0,title:"Create table"})})),v("addColumnLeft",new E({type:"column",position:"before",template:new f({template:s.buttonTemplate,title:"Add column on the left"})})),v("addColumnRight",new E({type:"column",template:new f({template:s.buttonTemplate,title:"Add column on the right"})})),v("addRowAbove",new E({type:"row",position:"before",template:new f({template:s.buttonTemplate,title:"Add row above"})})),v("addRowBelow",new E({type:"row",template:new f({template:s.buttonTemplate,title:"Add row below"})})),v("deleteRow",new E({type:"row",action:"delete",template:new f({template:s.buttonTemplate,title:"Delete row"})})),v("deleteColumn",new E({type:"column",action:"delete",template:new f({template:s.buttonTemplate,title:"Delete column"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/clipboard.min",["editor/command.min"],e); +}(function(){!function(e){var t=window.kendo,n=t.Class,i=t.ui.editor,o=i.RangeUtils,r=i.Dom,a=i.RestorePoint,s=i.Marker,l=t.support.browser,c=e.extend,d=n.extend({init:function(e){this.editor=e;var t=e.options.pasteCleanup;this.cleaners=[new h(t),new p(t),new f(t),new g(t),new v(t),new _(t),new y(t),new x(t)]},htmlToFragment:function(e){var t=this.editor,n=t.document,i=r.create(n,"div"),o=n.createDocumentFragment();for(i.innerHTML=e;i.firstChild;)o.appendChild(i.firstChild);return o},isBlock:function(e){return/<(div|p|ul|ol|table|h[1-6])/i.test(e)},_startModification:function(){var e,t,n=this.editor;if(!this._inProgress)return this._inProgress=!0,e=n.getRange(),t=new a(e,n.body),r.persistScrollTop(n.document),{range:e,restorePoint:t}},_endModification:function(e){i._finishUpdate(this.editor,e.restorePoint),this.editor._selectionChange(),this._inProgress=!1},_contentModification:function(e,t){var n=this,i=n.editor,o=n._startModification();o&&(e.call(n,i,o.range),setTimeout(function(){t.call(n,i,o.range),n._endModification(o)}))},_removeBomNodes:function(e){var t,n=o.textNodes(e);for(t=0;t<n.length;t++)n[t].nodeValue=r.stripBom(n[t].nodeValue)||n[t].nodeValue},_onBeforeCopy:function(e){var t=new s;t.add(e),this._removeBomNodes(e),t.remove(e),this.editor.selectRange(e)},oncopy:function(){this._onBeforeCopy(this.editor.getRange())},oncut:function(){this._onBeforeCopy(this.editor.getRange()),this._contentModification(e.noop,e.noop)},_fileToDataURL:function(t){var n=e.Deferred(),i=new FileReader;return t instanceof window.File||!t.getAsFile||(t=t.getAsFile()),i.onload=e.proxy(n.resolve,n),i.readAsDataURL(t),n.promise()},_triggerPaste:function(e,t){var n={html:e||""};n.html=n.html.replace(/\ufeff/g,""),this.editor.trigger("paste",n),this.paste(n.html,t||{})},_handleImagePaste:function(e){var t,n;if("FileReader"in window&&!(l.msie&&l.version>10))return t=e.clipboardData||e.originalEvent.clipboardData||window.clipboardData||{},n=t.items||t.files,this._insertImages(n)},_insertImages:function(t){var n,i,o;if(t&&(n=e.grep(t,function(e){return/^image\//i.test(e.type)}),i=e.grep(t,function(e){return/^text\/html/i.test(e.type)}),!i.length&&n.length&&(o=this._startModification())))return e.when.apply(e,e.map(n,this._fileToDataURL)).done(e.proxy(function(){var t=Array.prototype.slice.call(arguments),n=e.map(t,function(e){return'<img src="'+e.target.result+'" />'}).join("");this._triggerPaste(n),this._endModification(o)},this)),!0},onpaste:function(n){if("false"!==this.editor.body.contentEditable){if(this._handleImagePaste(n))return void n.preventDefault();this.expandImmutablesIn(),this._contentModification(function(i,o){var a,s,l,c=r.create(i.document,"div",{className:"k-paste-container",innerHTML:"\ufeff"}),d=t.support.browser,u=i.body;this._decoreateClipboardNode(c,u),u.appendChild(c),d.webkit&&this._moveToCaretPosition(c,o),d.msie&&d.version<11?(n.preventDefault(),a=i.createRange(),a.selectNodeContents(c),i.selectRange(a),s=i.document.body.createTextRange(),s.moveToElementText(c),e(u).unbind("paste"),s.execCommand("Paste"),e(u).bind("paste",e.proxy(this.onpaste,this))):(l=i.createRange(),l.selectNodeContents(c),i.selectRange(l)),o.deleteContents()},function(t,n){var i,o="";t.selectRange(n),i=e(t.body).children(".k-paste-container"),i.each(function(){var e=this.lastChild;e&&r.is(e,"br")&&r.remove(e),o+=this.innerHTML}),i.remove(),this._triggerPaste(o,{clean:!0})})}},ondragover:function(e){(l.msie||l.edge)&&(e.stopPropagation(),e.preventDefault())},ondrop:function(e){var t,n;"FileReader"in window&&(t=(e.originalEvent||e).dataTransfer||{},n=t.items||t.files,this._insertImages(n)&&e.preventDefault())},_decoreateClipboardNode:function(t,n){var i,o,r,a;(l.msie||l.webkit)&&(t=e(t),t.css({borderWidth:"0px",width:"0px",height:"0px",overflow:"hidden",margin:"0",padding:"0"}),l.msie&&(i=e(n.ownerDocument.documentElement),t.css({fontVariant:"normal",fontWeight:"normal",lineSpacing:"normal",lineHeight:"normal",textDecoration:"none"}),o=i.css("color"),o&&t.css("color",o),r=i.css("fontFamily"),r&&t.css("fontFamily",r),a=i.css("fontSize"),a&&t.css("fontSize",a)))},_moveToCaretPosition:function(t,n){var i=this,o=i.editor.body,a=r.offset(t,o),s=i._caretOffset(n,o),l=s.left-a.left,c=s.top-a.top,d="translate("+l+"px,"+c+"px)";e(t).css({"-webkit-transform":d,transform:d})},_caretOffset:function(e,t){var n,i,o,a,s,l,c=this.editor,d=r.create(c.document,"span",{innerHTML:"\ufeff"}),u=e.startContainer;return e.collapsed?(i=r.isDataNode(u),i&&(r.isBom(u)||0===e.startOffset)?r.insertBefore(d,u):i&&e.startOffset===u.length?r.insertAfter(d,u):(e.insertNode(d),n=!0)):(u=u===t?u.childNodes[e.startOffset]:u,r.insertBefore(d,u)),o=r.offset(d,t),a=d.previousSibling,s=d.nextSibling,r.remove(d),n&&r.isDataNode(a)&&r.isDataNode(s)&&!r.isBom(a)&&!r.isBom(s)&&(l=a.length,s.data=a.data+s.data,e.setStart(s,l),r.remove(a),e.collapse(!0),c.selectRange(e)),o},expandImmutablesIn:function(e){var n,i,o,r=this.editor;r&&r.options.immutables&&(n=r.body,e=e||r.getRange(),t.ui.editor.Immutables.expandImmutablesIn(e),e.startContainer===n&&0===e.startOffset&&(i=n.ownerDocument,o=i.createTextNode("\ufeff"),n.insertBefore(o,n.childNodes[0]),e.setStartBefore(o)),r.selectRange(e))},splittableParent:function(e,t){var n,i;if(e)return r.closestEditableOfType(t,["p","ul","ol"])||t.parentNode;if(n=t.parentNode,i=t.ownerDocument.body,r.isInline(n))for(;n.parentNode!=i&&!r.isBlock(n.parentNode);)n=n.parentNode;return n},paste:function(t,n){var i,a,l,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C=this.editor;if(this.expandImmutablesIn(),n=c({clean:!1,split:!0},n),!n.skipCleaners)for(i=0,a=this.cleaners.length;i<a;i++)this.cleaners[i].applicable(t)&&(t=this.cleaners[i].clean(t));if(n.clean&&(t=t.replace(/(<br>(\s| )*)+(<\/?(div|p|li|col|t))/gi,"$3"),t=t.replace(/<(a|span)[^>]*><\/\1>/gi,"")),t=t.replace(/<(a|span|font)([^>]*)> <\/\1>/gi,"<$1$2> </$1>"),t=t.replace(/^<li/i,"<ul><li").replace(/li>$/g,"li></ul>"),d=this.isBlock(t),C.focus(),u=C.getRange(),u.deleteContents(),u.startContainer==C.document&&u.selectNodeContents(C.body),h=new s,p=h.addCaret(u),f=this.splittableParent(d,p),g=!1,m=f!=C.body&&!r.is(f,"td"),n.split&&m&&(d||r.isInline(f))&&(u.selectNode(p),o.split(u,f,!0),g=!0),v=this.htmlToFragment(t),v.firstChild&&"k-paste-container"===v.firstChild.className){for(_=[],i=0,a=v.childNodes.length;i<a;i++)_.push(v.childNodes[i].innerHTML);v=this.htmlToFragment(_.join("<br />"))}if(l=v.childNodes,e(l).filter("table").addClass("k-table").end().find("table").addClass("k-table"),e(l).each(function(e,t){r.isBlock(t)&&!r.isSelfClosing(t)&&""===t.innerHTML&&t.appendChild(C.document.createTextNode("\ufeff"))}),u.insertNode(v),f=this.splittableParent(d,p),g){for(;p.parentNode!=f;)r.unwrap(p.parentNode);r.unwrap(p.parentNode)}if(r.normalize(u.commonAncestorContainer),p.style.display="inline",r.restoreScrollTop(C.document),r.scrollTo(p),h.removeCaret(u),b=u.commonAncestorContainer.parentNode,u.collapsed&&"tbody"==r.name(b)&&(u.setStartAfter(e(b).closest("table")[0]),u.collapse(!0)),w=e(u.commonAncestorContainer.parentNode).closest("table"),w.get(0)){for(k=w.parent().contents(),y=k.length-1,x=k.get(y);null!==x.nodeValue&&(" "===x.nodeValue||""===x.nodeValue);)y-=1,x=k.get(y);x===w.get(0)&&r.insertAfter(r.createEmptyNode(C.document,"p"),w[0])}C.selectRange(u)}}),u=n.extend({init:function(e){this.options=e||{},this.replacements=[]},clean:function(e,t){var n,i,o=this,r=t||o.replacements;for(n=0,i=r.length;n<i;n+=2)e=e.replace(r[n],r[n+1]);return e}}),h=u.extend({init:function(e){u.fn.init.call(this,e),this.replacements=[/<(\/?)script([^>]*)>/i,"<$1telerik:script$2>"]},applicable:function(e){return!this.options.none&&/<script[^>]*>/i.test(e)}}),p=u.extend({init:function(e){u.fn.init.call(this,e);var t=" ";this.replacements=[/<span\s+class="Apple-tab-span"[^>]*>\s*<\/span>/gi,t,/\t/gi,t,/ /gi,t]},applicable:function(e){return/ |class="?Apple-tab-span/i.test(e)}}),f=u.extend({init:function(e){u.fn.init.call(this,e),this.junkReplacements=[/<\?xml[^>]*>/gi,"",/<!--(.|\n)*?-->/g,"",/"/g,"'",/<o:p> <\/o:p>/gi," ",/<\/?(meta|link|style|o:|v:|x:)[^>]*>((?:.|\n)*?<\/(meta|link|style|o:|v:|x:)[^>]*>)?/gi,"",/<\/o>/g,""],this.replacements=this.junkReplacements.concat([/(?:<br> [\s\r\n]+|<br>)*(<\/?(h[1-6]|hr|p|div|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|address|pre|form|blockquote|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br> [\s\r\n]+|<br>)*/g,"$1",/<br><br>/g,"<BR><BR>",/<br>(?!\n)/g," ",/<table([^>]*)>(\s| )+<t/gi,"<table$1><t",/<tr[^>]*>(\s| )*<\/tr>/gi,"",/<tbody[^>]*>(\s| )*<\/tbody>/gi,"",/<table[^>]*>(\s| )*<\/table>/gi,"",/<BR><BR>/g,"<br>",/^\s*( )+/gi,"",/( |<br[^>]*>)+\s*$/gi,"",/mso-[^;"]*;?/gi,"",/<(\/?)b(\s[^>]*)?>/gi,"<$1strong$2>",/<(\/?)font(\s[^>]*)?>/gi,this.convertFontMatch,/<(\/?)i(\s[^>]*)?>/gi,"<$1em$2>",/style=(["|'])\s*\1/g,"",/(<br[^>]*>)?\n/g,function(e,t){return t?e:" "}])},convertFontMatch:function(e,t,n){var i=/face=['"]([^'"]+)['"]/i,o=i.exec(n),r=n&&o&&o[1];return t?"</span>":r?'<span style="font-family:'+r+'">':"<span>"},applicable:function(e){return/class="?Mso/i.test(e)||/style="[^"]*mso-/i.test(e)||/urn:schemas-microsoft-com:office/.test(e)},stripEmptyAnchors:function(e){return e.replace(/<a([^>]*)>\s*<\/a>/gi,function(e,t){return!t||t.indexOf("href")<0?"":e})},listType:function(e,t){var n,i=e.innerHTML,o=r.innerText(e),a=i.match(/^(?:<span [^>]*texhtml[^>]*>)?<span [^>]*(?:Symbol|Wingdings)[^>]*>([^<]+)/i),s=a&&a[1],l=/^[a-z\d]/i.test(s),c=function(e){return e.replace(/^(?: |[\u00a0\n\r\s])+/,"")};return a&&(n=!0),i=i.replace(/<\/?\w+[^>]*>/g,"").replace(/ /g," "),!n&&/^[\u2022\u00b7\u00a7\u00d8o]\u00a0+/.test(i)||n&&/^.\u00a0+/.test(i)||s&&!l&&t?{tag:"ul",style:this._guessUnorderedListStyle(c(o))}:/^\s*\w+[\.\)][\u00a0 ]{2,}/.test(i)?{tag:"ol",style:this._guessOrderedListStyle(c(o))}:void 0},_convertToLi:function(e){var t,n=r.name(e);return 1==e.childNodes.length?t=e.firstChild.nodeType===r.nodeTypes.TEXT_NODE?r.innerText(e):e.firstChild.innerHTML.replace(/^\w+[\.\)]( )+ /,""):(r.remove(e.firstChild),3==e.firstChild.nodeType&&/^[ivxlcdm]+\.$/i.test(e.firstChild.nodeValue)&&r.remove(e.firstChild),/^( |\s)+$/i.test(e.firstChild.innerHTML)&&r.remove(e.firstChild),t="p"!=n?"<"+n+">"+e.innerHTML+"</"+n+">":e.innerHTML),r.remove(e),r.create(document,"li",{innerHTML:t})},_guessUnorderedListStyle:function(e){return/^[\u2022\u00b7\u00FC\u00D8\u002dv-]/.test(e)?null:/^o/.test(e)?"circle":"square"},_guessOrderedListStyle:function(e){var t=null;return/^\d/.test(e)||(t=(/^[a-z]/.test(e)?"lower-":"upper-")+(/^[ivxlcdm]/i.test(e)?"roman":"alpha")),t},extractListLevels:function(e){var n=/style=['"]?[^'"]*?mso-list:\s?[a-zA-Z]+(\d+)\s[a-zA-Z]+(\d+)\s(\w+)/gi;return e=e.replace(n,function(e,n,i){return t.format('data-list="{0}" data-level="{1}" {2}',n,i,e)})},_createList:function(e,t){return r.create(document,e,{style:{listStyleType:t}})},lists:function(t){var n,i,o,a,s,c,d,u,h,p,f,g,m,v,_,b,w=e(t).find(r.blockElements.join(",")),k=-1,y={},x=["p","h1","h2","h3","h4","h5","h6"],C=!1;for(u=0;u<w.length;u++)h=w[u],m=e(h).data(),v=m.list,n=r.name(h),C=!!e(h).parents("table").length,C||(_=this.listType(h,m),p=_&&_.tag,!p||x.indexOf(n)<0?h.innerHTML?i&&!c&&i.appendChild(h):r.remove(h):l.msie||(f=m.level||parseFloat(h.style.marginLeft||0),b=p+v,y[f]||(y[f]={}),(!o||o<0)&&(o=f,a=v,s=e(t).find("[data-list='"+a+"']:last")[0],d=this._createList(p,_.style),r.insertBefore(d,h),k=f,y[f][b]=d),c=s===h,g=y[f][b],(f>k||!g)&&(g=this._createList(p,_.style),y[f][b]=g,i.appendChild(g)),i=this._convertToLi(h),g.appendChild(i),c?o=k=-1:k=f))},removeAttributes:function(e){for(var t=e.attributes,n=t.length;n--;)"colspan"!=r.name(t[n])&&e.removeAttributeNode(t[n])},createColGroup:function(n){var i=n.cells,o=e(n).closest("table"),r=o.children("colgroup");i.length<2||(r.length&&(i=r.children(),r[0].parentNode.removeChild(r[0])),r=e(e.map(i,function(e){var n=e.width;return n&&0!==parseInt(n,10)?t.format('<col style="width:{0}px;"/>',n):"<col />"}).join("")),r.is("colgroup")||(r=e("<colgroup/>").append(r)),r.prependTo(o))},convertHeaders:function(t){var n,i=t.cells,o=e.map(i,function(t){var n=e(t).children("p").children("strong")[0];if(n&&"strong"==r.name(n))return n});if(o.length==i.length){for(n=0;n<o.length;n++)r.unwrap(o[n]);for(e(t).closest("table").find("colgroup").after("<thead></thead>").end().find("thead").append(t),n=0;n<i.length;n++)r.changeTag(i[n],"th")}},removeParagraphs:function(t){var n,i,o,a,s;for(n=0;n<t.length;n++)for(this.removeAttributes(t[n]),a=e(t[n]),s=a.children("p"),i=0,o=s.length;i<o;i++)i<o-1&&r.insertAfter(r.create(document,"br"),s[i]),r.unwrap(s[i])},removeDefaultColors:function(e){for(var t=0;t<e.length;t++)/^\s*color:\s*[^;]*;?$/i.test(e[t].style.cssText)&&r.unwrap(e[t])},tables:function(t){var n,i,o,r,a,s=e(t).find("table"),l=this;for(r=0;r<s.length;r++){for(n=s[r].rows,o=i=n[0],a=1;a<n.length;a++)n[a].cells.length>o.cells.length&&(o=n[a]);l.createColGroup(o),l.convertHeaders(i),l.removeAttributes(s[r]),l.removeParagraphs(s.eq(r).find("td,th")),l.removeDefaultColors(s.eq(r).find("span"))}},headers:function(t){var n,i=e(t).find("p.MsoTitle");for(n=0;n<i.length;n++)r.changeTag(i[n],"h1")},removeFormatting:function(t){e(t).find("*").each(function(){e(this).css({fontSize:"",fontFamily:""}),this.getAttribute("style")||this.style.cssText||this.removeAttribute("style")})},clean:function(e){var t,n=this,i=this.options;return i.none?(e=u.fn.clean.call(n,e,this.junkReplacements),e=n.stripEmptyAnchors(e)):(e=i.msConvertLists?this.extractListLevels(e):e,e=u.fn.clean.call(n,e),e=n.stripEmptyAnchors(e),t=r.create(document,"div",{innerHTML:e}),n.headers(t),i.msConvertLists&&n.lists(t),n.tables(t),i.msAllFormatting&&n.removeFormatting(t),e=t.innerHTML.replace(/(<[^>]*)\s+class="?[^"\s>]*"?/gi,"$1")),e}}),g=u.extend({init:function(e){u.fn.init.call(this,e),this.replacements=[/\s+class="Apple-style-span[^"]*"/gi,"",/<(div|p|h[1-6])\s+style="[^"]*"/gi,"<$1",/^<div>(.*)<\/div>$/,"$1"]},applicable:function(e){return/class="?Apple-style-span|style="[^"]*-webkit-nbsp-mode/i.test(e)}}),m=u.extend({clean:function(e){var t=r.create(document,"div",{innerHTML:e});return t=this.cleanDom(t),t.innerHTML},cleanDom:function(e){return e}}),v=m.extend({cleanDom:function(t){var n=this.collectTags();return e(t).find(n).each(function(){r.unwrap(this)}),t},collectTags:function(){if(this.options.span)return"span"},applicable:function(){return this.options.span}}),_=m.extend({cleanDom:function(t){var n=this.collectAttr(),i=e(t).find("["+n.join("],[")+"]");return i.removeAttr(n.join(" ")),t},collectAttr:function(){return this.options.css?["class","style"]:[]},applicable:function(){return this.options.css}}),b=function(){this.text="",this.add=function(e){this.text+=e}},w=n.extend({init:function(e){this.separators=e||{text:" ",line:"<br/>"},this.lines=[],this.inlineBlockText=[],this.resetLine()},appendText:function(e){3===e.nodeType&&(e=e.nodeValue),this.textContainer.add(e)},appendInlineBlockText:function(e){this.inlineBlockText.push(e)},flashInlineBlockText:function(){this.inlineBlockText.length&&(this.appendText(this.inlineBlockText.join(" ")),this.inlineBlockText=[])},endLine:function(){this.flashInlineBlockText(),this.resetLine()},html:function(){var e,t,n,i,o,r,a,s,l=this.separators,c="",d=this.lines;for(this.flashInlineBlockText(),e=0,t=d.length,n=t-1;e<t;e++){for(i=d[e],o=0,r=i.length,a=r-1;o<r;o++)s=i[o].text,c+=s,o!==a&&(c+=l.text);e!==n&&(c+=l.line)}return c},resetLine:function(){this.textContainer=new b,this.line=[],this.line.push(this.textContainer),this.lines.push(this.line)}}),k=n.extend({init:function(e){this.callback=e},enumerate:function(e){var t,n;e&&(t=this.callback(e),n=e.firstChild,!t&&n&&this.enumerate(n),this.enumerate(e.nextSibling))}}),y=u.extend({init:function(t){u.fn.init.call(this,t),this.hasText=!1,this.enumerator=new k(e.proxy(this.buildText,this))},clean:function(e){var t=r.create(document,"div",{innerHTML:e});return this.cleanDom(t)},cleanDom:function(e){return this.separators=this.getDefaultSeparators(),this.htmlLines=new w(this.separators),this.enumerator.enumerate(e.firstChild),this.hasText=!1,this.htmlLines.html()},buildText:function(e){if(r.isDataNode(e)){if(r.isEmptyspace(e))return;this.htmlLines.appendText(e.nodeValue.replace("\n",this.separators.line)),this.hasText=!0}else{if(r.isBlock(e)&&this.hasText){var t=this.actions[r.name(e)]||this.actions.block;return t(this,e)}r.isBr(e)&&this.htmlLines.appendText(this.separators.line)}},applicable:function(){var e=this.options;return e.all||e.keepNewLines},getDefaultSeparators:function(){return this.options.all?{text:" ",line:" "}:{text:" ",line:"<br/>"}},actions:{ul:e.noop,ol:e.noop,table:e.noop,thead:e.noop,tbody:e.noop,td:function(e,t){var n=new y({all:!0}),i=n.cleanDom(t);return e.htmlLines.appendInlineBlockText(i),!0},block:function(e){e.htmlLines.endLine()}}}),x=u.extend({clean:function(e){return this.options.custom(e)},applicable:function(){return"function"==typeof this.options.custom}});c(i,{Clipboard:d,Cleaner:u,ScriptCleaner:h,TabCleaner:p,MSWordFormatCleaner:f,WebkitFormatCleaner:g,HtmlTagsCleaner:v,HtmlAttrCleaner:_,HtmlContentCleaner:y,HtmlTextLines:w,CustomCleaner:x})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/keyboard.min",["editor/command.min"],e)}(function(){!function(e){function t(e,t){return t.startContainer===e&&t.endContainer===e&&0===t.startOffset&&t.endOffset==e.childNodes.length}function n(e,t,n){for(var i=e?e[t]:null;i&&!n(i);)i=i[t];return i}var i=window.kendo,o=i.Class,r=i.ui.editor,a=r.RangeUtils,s=r.Dom,l=r.RestorePoint,c=r.Marker,d=i.support.browser,u='<br class="k-br">',h=e.extend,p=s.nodeTypes,f="previousSibling",g="td,th,caption",m="table,tbody,thead,tfoot,tr",v=m+","+g,_=function(t){return!t.collapsed&&e(t.commonAncestorContainer).is(m)},b=o.extend({remove:function(t){var n,i,o,r,l,d,u,h=this,p=new c;p.add(t,!1),n=a.getAll(t,function(t){return e(t).is(v)}),i=a.documentFromRange(t),o=p.start,r=p.end,l=g.split(","),d=s.parentOfType(o,l),u=s.parentOfType(r,l),h._removeContent(o,d,!0),h._removeContent(r,u,!1),e(n).each(function(t,n){n=e(n),(n.is(g)?n:n.find(g)).each(function(e,t){t.innerHTML=""})}),d&&!o.previousSibling&&s.insertBefore(i.createTextNode("\ufeff"),o),u&&!r.nextSibling&&s.insertAfter(i.createTextNode("\ufeff"),r),d?t.setStartBefore(o):n[0]&&(d=e(n[0]),d=d.is(g)?d:d.find(g).first(),d.length&&t.setStart(d.get(0),0)),t.collapse(!0),s.remove(o),s.remove(r)},_removeContent:function(t,n,i){if(n){var o,r=i?"nextSibling":"previousSibling",a=function(t){for(;t&&!t[r];)t=t.parentNode;return t&&e.contains(n,t)?t[r]:null};for(t=a(t);t;)o=a(t),s.remove(t),t=o}}}),w=o.extend({init:function(e){this.editor=e},keydown:function(n){var i,o,a,s,c=this,u=c.editor,p=u.keyboard,f=p.isTypingKey(n),g=h(e.Event(),n);return c.editor.trigger("keydown",g),g.isDefaultPrevented()?(n.preventDefault(),!0):!(g.isDefaultPrevented()||!f||p.isTypingInProgress())&&(i=u.getRange(),o=u.body,c.startRestorePoint=new l(i,o),_(i)&&(a=new b(u),a.remove(i),u.selectRange(i)),d.webkit&&!i.collapsed&&t(o,i)&&(o.innerHTML=""),u.immutables&&r.Immutables.immutablesContext(i)&&(s=new r.BackspaceHandler(u),s.deleteSelection(i)),p.startTyping(function(){c.endRestorePoint=r._finishUpdate(u,c.startRestorePoint)}),!0)},keyup:function(e){var t=this.editor.keyboard;return this.editor.trigger("keyup",e),!!t.isTypingInProgress()&&(t.endTyping(),!0)}}),k=o.extend({init:function(e){this.editor=e},_addCaret:function(e){var t=s.create(this.editor.document,"a");return!i.support.browser.chrome&&e.firstChild&&e.firstChild.nodeType===p.ELEMENT_NODE&&(e=e.firstChild),s.insertAt(e,t,0),s.stripBomNode(t.previousSibling),s.stripBomNode(t.nextSibling),t},_restoreCaret:function(e){var t=this.editor.createRange();!e.nextSibling&&s.isDataNode(e.previousSibling)?t.setStart(e.previousSibling,e.previousSibling.length):t.setStartAfter(e),t.collapse(!0),this.editor.selectRange(t),s.remove(e)},_handleDelete:function(e){var t,n,i=e.endContainer,o=s.closestEditableOfType(i,s.blockElements);return!(!o||!r.RangeUtils.isEndOf(e,o))&&(t=s.next(o),!(!t||"p"!=s.name(t))&&(n=this._addCaret(t),this._merge(o,t),this._restoreCaret(n),!0))},_cleanBomBefore:function(e){for(var t=e.startOffset,n=e.startContainer,i=n.nodeValue,o=0;t-o>=0&&"\ufeff"==i[t-o-1];)o++;o>0&&(n.deleteData(t-o,o),e.setStart(n,Math.max(0,t-o)),e.collapse(!0),this.editor.selectRange(e))},_handleBackspace:function(t){var i,o,a,l,c,d,u,h,p,g,m,v,_,b=t.startContainer,w=s.closestEditableOfType(b,["li"]),k=s.closestEditableOfType(b,"p,h1,h2,h3,h4,h5,h6".split(",")),y=this.editor;if(s.isDataNode(b)){if(t.collapsed&&/^\s[\ufeff]+$/.test(b.nodeValue))return t.setStart(b,0),t.setEnd(b,b.length),y.selectRange(t),!1;this._cleanBomBefore(t)}return i=n(k,f,function(e){return!s.htmlIndentSpace(e)}),t.collapsed&&t.startOffset!==t.endOffset&&t.startOffset<0&&(t.startOffset=0,t.endOffset=0,y.selectRange(t)),o=w&&r.RangeUtils.isStartOf(t,w),a=w&&e(w).index(),l=o&&a>0,l&&(k=w,i=s.prev(w)),k&&i&&s.is(i,"table")&&r.RangeUtils.isStartOf(t,k)?(""===k.innerText&&(k.innerHTML="\ufeff"),!0):r.RangeUtils.isStartOf(t,k)&&(parseInt(k.style.marginLeft,10)>0||parseInt(k.style.marginRight,10)>0)?(y.exec("outdent"),!0):k&&i&&r.RangeUtils.isStartOf(t,k)||l?(c=this._addCaret(k),this._merge(i,k),this._restoreCaret(c),!0):o&&0===a?(d=w.firstChild,d||(w.innerHTML=r.emptyElementContent,d=w.firstChild),u=new r.ListFormatter(s.name(w.parentNode),"p"),t.selectNodeContents(w),u.toggle(t),s.insignificant(d)?t.setStartBefore(d):t.setStart(d,0),y.selectRange(t),!0):(h=b.childNodes[t.startOffset-1],p=t,g=h&&s.closestEditableOfType(h,["a"]),m=n(h||b,f,function(e){return!s.isDataNode(e)||!s.isBom(e)&&e.length>0}),(g||(0===t.startOffset||h)&&s.is(m,"a"))&&(g=g||m,p=y.createRange(),p.setStart(g,g.childNodes.length),p.collapse(!0)),g=g||s.closestEditableOfType(h||p.startContainer,["a"]),v=g&&r.RangeUtils.isEndOf(p,g),v&&(_=new r.UnlinkCommand({range:p,body:y.body,immutables:!!y.immutables}),y.execCommand(_),y._selectionChange()),!1)},_handleSelection:function(t){var n,i,o,a,l=t.commonAncestorContainer,d=s.closest(l,"table"),u=r.emptyElementContent,h=this.editor;return _(t)?(n=new b(h),n.remove(t),h.selectRange(t),!0):(i=new c,i.add(t,!1),t.commonAncestorContainer===h.body&&this._surroundFullyContent(i,t),h.immutables&&this._handleImmutables(i),this._surroundFullySelectedAnchor(i,t),t.setStartAfter(i.start),t.setEndBefore(i.end),o=t.startContainer,a=t.endContainer,t.deleteContents(),"li"===a.tagName.toLocaleLowerCase()&&s.emptyNode(a)&&(t.selectNode(a),t.deleteContents()),d&&""===e(d).text()&&(t.selectNode(d),t.deleteContents()),l=t.commonAncestorContainer,"p"===s.name(l)&&""===l.innerHTML&&(l.innerHTML=u,t.setStart(l,0)),this._join(o,a),s.insertAfter(h.document.createTextNode("\ufeff"),i.start),i.remove(t),o=t.startContainer,"tr"==s.name(o)&&(o=o.childNodes[Math.max(0,t.startOffset-1)],t.setStart(o,s.getNodeLength(o))),t.collapse(!0),h.selectRange(t),!0)},_handleImmutables:function(e){var t=r.Immutables.immutableParent,n=t(e.start),i=t(e.start);n&&s.insertBefore(e.start,n),i&&s.insertAfter(e.end,i),n&&s.remove(n),i&&i.parentNode&&s.remove(i)},_surroundFullyContent:function(e,t){var n=t.commonAncestorContainer.children,i=n[0],o=n[n.length-1];this._moveMarker(e,t,i,o)},_surroundFullySelectedAnchor:function(t,n){var i=t.start,o=e(i).closest("a").get(0),r=t.end,a=e(r).closest("a").get(0);this._moveMarker(t,n,o,a)},_moveMarker:function(e,t,n,i){var o=e.start,r=e.end;n&&a.isStartOf(t,n)&&s.insertBefore(o,n),i&&a.isEndOf(t,i)&&s.insertAfter(r,i)},_root:function(e){for(;e&&"body"!=s.name(e)&&e.parentNode&&"body"!=s.name(e.parentNode);)e=e.parentNode;return e},_join:function(e,t){e=this._root(e),t=this._root(t),e!=t&&s.is(t,"p")&&this._merge(e,t)},_merge:function(e,t){for(s.removeTrailingBreak(e);e&&t.firstChild;)1==e.nodeType?(e=s.list(e)?e.children[e.children.length-1]:e,e&&e.appendChild(t.firstChild)):e.nodeType===p.TEXT_NODE?this._mergeWithTextNode(e,t.firstChild):e.parentNode.appendChild(t.firstChild);s.remove(t)},_mergeWithTextNode:function(e,t){e&&e.nodeType===p.TEXT_NODE&&(e.nextSibling&&this._isCaret(e.nextSibling)?s.insertAfter(t,e.nextSibling):s.insertAfter(t,e))},_isCaret:function(t){return e(t).is("a")},keydown:function(e){var t,n,o=this.editor,a=o.getRange(),s=e.keyCode,c=i.keys,d=s===c.BACKSPACE,u=s==c.DELETE;o.immutables&&o.immutables.keydown(e,a)||(!d&&!u||a.collapsed?d?t="_handleBackspace":u&&(t="_handleDelete"):t="_handleSelection",t&&(n=new l(a,o.body),this[t](a)&&(e.preventDefault(),r._finishUpdate(o,n))))},deleteSelection:function(e){this._handleSelection(e)},keyup:e.noop}),y=o.extend({init:function(e){this.editor=e,this.systemCommandIsInProgress=!1},createUndoCommand:function(){this.startRestorePoint=this.endRestorePoint=r._finishUpdate(this.editor,this.startRestorePoint)},changed:function(){return!!this.startRestorePoint&&this.startRestorePoint.html!=this.editor.body.innerHTML},keydown:function(e){var t=this,n=t.editor,i=n.keyboard;return i.isModifierKey(e)?(i.isTypingInProgress()&&i.endTyping(!0),t.startRestorePoint=new l(n.getRange(),n.body),!0):!!i.isSystem(e)&&(t.systemCommandIsInProgress=!0,t.changed()&&(t.systemCommandIsInProgress=!1,t.createUndoCommand()),!0)},keyup:function(){var e=this;return!(!e.systemCommandIsInProgress||!e.changed())&&(e.systemCommandIsInProgress=!1,e.createUndoCommand(),!0)}}),x=o.extend({init:function(e){this.editor=e},keydown:function(e){!d.webkit||e.isDefaultPrevented()||!e.ctrlKey||65!=e.keyCode||e.altKey||e.shiftKey||(this.editor.options.immutables&&this._toSelectableImmutables(),this._selectEditorBody())},_selectEditorBody:function(){var e=this.editor,t=e.getRange();t.selectNodeContents(e.body),e.selectRange(t)},_toSelectableImmutables:function(){for(var t=this.editor,n=t.body,i=r.Immutables.immutable,o=s.emptyTextNode,a=n.firstChild,l=n.lastChild;o(a);)a=a.nextSibling;for(;o(l);)l=l.previousSibling;a&&i(a)&&e(u).prependTo(n),l&&i(l)&&e(u).appendTo(n)},keyup:e.noop}),C=o.extend({init:function(e){this.handlers=e,this.typingInProgress=!1},isCharacter:function(e){return e>=48&&e<=90||e>=96&&e<=111||e>=186&&e<=192||e>=219&&e<=222||229==e},toolFromShortcut:function(t,n){var i,o,r=String.fromCharCode(n.keyCode),a=this._getShortcutModifier(n,navigator.platform);for(i in t)if(o=e.extend({ctrl:!1,alt:!1,shift:!1},t[i].options),(o.key==r||o.key==n.keyCode)&&o.ctrl==a&&o.alt==n.altKey&&o.shift==n.shiftKey)return i},_getShortcutModifier:function(e,t){var n=t.toUpperCase().indexOf("MAC")>=0;return n?e.metaKey:e.ctrlKey},toolsFromShortcut:function(t,n){var i,o,r,a=String.fromCharCode(n.keyCode),s=[],l=function(e){return e==a||e==n.keyCode||e==n.charCode};for(i in t)o=e.extend({ctrl:!1,alt:!1,shift:!1},t[i].options),r=e.isArray(o.key)?e.grep(o.key,l).length>0:l(o.key),r&&o.ctrl==n.ctrlKey&&o.alt==n.altKey&&o.shift==n.shiftKey&&s.push(t[i]);return s},isTypingKey:function(e){var t=e.keyCode;return this.isCharacter(t)&&!e.ctrlKey&&!e.altKey||32==t||13==t||8==t||46==t&&!e.shiftKey&&!e.ctrlKey&&!e.altKey},isModifierKey:function(e){var t=e.keyCode;return 17==t&&!e.shiftKey&&!e.altKey||16==t&&!e.ctrlKey&&!e.altKey||18==t&&!e.ctrlKey&&!e.shiftKey},isSystem:function(e){return 46==e.keyCode&&e.ctrlKey&&!e.altKey&&!e.shiftKey},startTyping:function(e){this.onEndTyping=e,this.typingInProgress=!0},stopTyping:function(){this.typingInProgress&&this.onEndTyping&&this.onEndTyping(),this.typingInProgress=!1},endTyping:function(t){var n=this;n.clearTimeout(),t?n.stopTyping():n.timeout=window.setTimeout(e.proxy(n.stopTyping,n),1e3)},isTypingInProgress:function(){return this.typingInProgress},clearTimeout:function(){window.clearTimeout(this.timeout)},notify:function(e,t){var n,i=this.handlers;for(n=0;n<i.length&&!i[n][t](e);n++);},keydown:function(e){this.notify(e,"keydown")},keyup:function(e){this.notify(e,"keyup")}});h(r,{TypingHandler:w,SystemHandler:y,BackspaceHandler:k,SelectAllHandler:x,Keyboard:C})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/exportpdf.min",["editor/command.min"],e)}(function(){!function(e){var t=window.kendo,n=t.ui.editor,i=n.Command,o=n.EditorUtils,r=o.registerTool,a=n.Tool,s=n.ToolTemplate,l=e.extend,c=i.extend({init:function(e){this.async=!0,i.fn.init.call(this,e)},exec:function(){var e=this,t=e.lockRange(!0),n=e.editor;n._destroyResizings(),n.saveAsPDF().then(function(){e.releaseRange(t),n._initializeColumnResizing(),n._initializeRowResizing(),n._initializeTableResizing()})}});l(n,{ExportPdfCommand:c}),r("pdf",new a({command:c,template:new s({template:o.buttonTemplate,title:"Export PDF"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/plugins/print.min",["editor/command.min"],e)}(function(){!function(e){var t=window.kendo,n=t.ui.editor,i=n.Command,o=n.EditorUtils,r=o.registerTool,a=n.Tool,s=n.ToolTemplate,l=e.extend,c=i.extend({init:function(e){i.fn.init.call(this,e),this.managesUndoRedo=!0},exec:function(){var e=this.editor;t.support.browser.msie?e.document.execCommand("print",!1,null):e.window.print&&e.window.print()}});l(n,{PrintCommand:c}),r("print",new a({command:c,template:new s({template:o.buttonTemplate,title:"Print"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/resizing/resizing-utils.min",["editor/main.min"],e)}(function(){!function(e,t){function n(e){var t=e.value,n=e.min,i=e.max;return h(u(p(t),p(i)),p(n))}function i(t){return t&&!f(t).is("body")&&t.scrollHeight>t.clientHeight?e.support.scrollbar():0}function o(e,t){return r(e)?p(e):p(e)/t*100}function r(e){return typeof e===k&&b.test(e)}function a(e){return typeof e===k&&w.test(e)}function s(e){return p(e)+v}function l(e){return p(e)+_}var c=window,d=c.Math,u=d.min,h=d.max,p=c.parseFloat,f=e.jQuery,g=f.extend,m=e.ui.editor,v="%",_="px",b=/(\d+)(\.?)(\d*)%/,w=/(\d+)(\.?)(\d*)px/,k="string",y={constrain:n,getScrollBarWidth:i,calculatePercentageRatio:o,inPercentages:r,inPixels:a,toPercentages:s,toPixels:l};g(m,{ResizingUtils:y})}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/resizing/table-element-resizing.min",["editor/main.min","kendo.resizable.min","editor/resizing/resizing-utils.min"],e)}(function(){!function(e,t){var n=e.jQuery,i=n.extend,o=n.noop,r=n.proxy,a=e.ui.editor,s=e.Class,l="keydown",c="mousedown",d="mouseenter",u="mouseleave",h="mousemove",p="mouseup",f=",",g=".",m=":last-child",v="table",_=s.extend({init:function(e,t){var o=this;o.options=i({},o.options,t),o.options.tags=n.isArray(o.options.tags)?o.options.tags:[o.options.tags],n(e).is(v)&&(o.element=e,o._attachEventHandlers())},destroy:function(){var e=this,t=e.options.eventNamespace;e.element&&(n(e.element).off(t),e.element=null),n(e.options.rootElement).off(l+t),e._destroyResizeHandle()},options:{tags:[],min:0,rootElement:null,eventNamespace:"",rtl:!1,handle:{dataAttribute:"",height:0,width:0,classNames:{},template:""}},_attachEventHandlers:function(){var e=this,t=e.options;n(e.element).on(h+t.eventNamespace,t.tags.join(f),r(e.detectElementBorderHovering,e))},resizingInProgress:function(){var e=this,t=e._resizable;return!!t&&!!t.resizing},resize:o,detectElementBorderHovering:function(e){var t=this,i=t.options,o=i.handle,r=n(e.currentTarget),a=t.resizeHandle,s=o.dataAttribute;t.resizingInProgress()||(!r.is(m)&&t.elementBorderHovered(r,e)?a?a.data(s)&&a.data(s)!==r[0]&&t.showResizeHandle(r,e):t.showResizeHandle(r,e):a&&t._destroyResizeHandle())},elementBorderHovered:o,showResizeHandle:function(e,t){var n=this;0===t.buttons&&(n._initResizeHandle(),n.setResizeHandlePosition(e),n.setResizeHandleDimensions(),n.setResizeHandleDataAttributes(e[0]),n._attachResizeHandleEventHandlers(),n._initResizable(e), +n._hideResizeMarker(),n.resizeHandle.show())},_initResizeHandle:function(){var e=this,t=e.options;e._destroyResizeHandle(),e.resizeHandle=n(t.handle.template).appendTo(t.rootElement)},setResizeHandlePosition:o,setResizeHandleDimensions:o,setResizeHandleDataAttributes:function(e){var t=this;t.resizeHandle.data(t.options.handle.dataAttribute,e)},_attachResizeHandleEventHandlers:function(){var e=this,t=e.options,n=t.eventNamespace,i=t.handle.classNames.marker,o=e.resizeHandle;e.resizeHandle.on(c+n,function(){o.find(g+i).show()}).on(p+n,function(){o.find(g+i).hide()})},_hideResizeMarker:function(){var e=this;e.resizeHandle.find(g+e.options.handle.classNames.marker).hide()},_destroyResizeHandle:function(){var e=this;e.resizeHandle&&(e._destroyResizable(),e.resizeHandle.off(e.options.eventNamespace).remove(),e.resizeHandle=null)},_initResizable:function(t){var n=this;n.resizeHandle&&(n._destroyResizable(),n._resizable=new e.ui.Resizable(t,{draggableElement:n.resizeHandle[0],start:r(n.onResizeStart,n),resize:r(n.onResize,n),resizeend:r(n.onResizeEnd,n)}))},_destroyResizable:function(){var e=this;e._resizable&&(e._resizable.destroy(),e._resizable=null)},onResizeStart:function(){this._disableKeyboard()},onResize:function(e){this.setResizeHandleDragPosition(e)},setResizeHandleDragPosition:o,onResizeEnd:function(e){var t=this;t.resize(e),t._destroyResizeHandle(),t._enableKeyboard()},_enableKeyboard:function(){var e=this.options;n(e.rootElement).off(l+e.eventNamespace)},_disableKeyboard:function(){var e=this.options;n(e.rootElement).on(l+e.eventNamespace,function(e){e.preventDefault()})},_forceResizing:function(e){var t=this._resizable;t&&t.userEvents&&t.userEvents._end(e)}}),b=s.extend({create:function(e,t){var i=this,o=t.name,r=t.eventNamespace;n(e.body).on(d+r,v,function(n){var r=n.currentTarget,a=e[o];n.stopPropagation(),a?a.element===r||a.resizingInProgress()||(i._destroyResizing(e,t),i._initResizing(e,r,t)):i._initResizing(e,r,t)}).on(u+r,v,function(r){var a,s=e[o];r.stopPropagation(),!s||s.resizingInProgress()||s.resizeHandle||(a=n(s.element).parents(v)[0],a&&(i._destroyResizing(e,t),i._initResizing(e,a,t)))}).on(u+r,function(){var n=e[o];n&&!n.resizingInProgress()&&i._destroyResizing(e,t)}).on(p+r,function(r){var a,s=e[o];s&&s.resizingInProgress()&&(a=n(r.target).parents(v)[0],a&&(s._forceResizing(r),i._destroyResizing(e,t),i._initResizing(e,a,t)))})},dispose:function(e,t){n(e.body).off(t.eventNamespace)},_initResizing:function(t,n,i){var o=i.name,r=i.type;t[o]=new r(n,{rtl:e.support.isRtl(t.element),rootElement:t.body})},_destroyResizing:function(e,t){var n=t.name;e[n]&&(e[n].destroy(),e[n]=null)}});b.current=new b,_.create=function(e,t){b.current.create(e,t)},_.dispose=function(e,t){b.current.dispose(e,t)},i(a,{TableElementResizing:_})}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/resizing/column-resizing.min",["editor/main.min","editor/resizing/resizing-utils.min","editor/resizing/table-element-resizing.min"],e)}(function(){!function(e,t){var n=window,i=n.Math,o=i.abs,r=e.jQuery,a=r.extend,s=e.ui.editor,l=s.TableElementResizing,c=s.ResizingUtils,d=c.constrain,u=c.calculatePercentageRatio,h=c.getScrollBarWidth,p=c.inPercentages,f=c.toPercentages,g=c.toPixels,m=e._outerWidth,v=".kendoEditorColumnResizing",_="k-column-resize-handle",b="k-column-resize-marker",w="body",k="tbody",y="td",x="th",C="tr",S=",",T="width",D=l.extend({options:{tags:[y,x],min:20,rootElement:null,eventNamespace:v,rtl:!1,handle:{dataAttribute:"column",width:10,height:0,classNames:{handle:_,marker:b},template:'<div class="k-column-resize-handle-wrapper" unselectable="on" contenteditable="false"><div class="'+_+'"><div class="'+b+'"></div></div></div>'}},elementBorderHovered:function(e,t){var n=this,i=n.options,o=i.handle.width,a=e.offset().left+(i.rtl?0:m(e)),s=t.clientX+r(e[0].ownerDocument).scrollLeft();return s>a-o&&s<a+o},setResizeHandlePosition:function(e){var t=this,n=r(t.element).children(k),i=t.options,o=i.rtl,a=i.handle.width,s=r(i.rootElement),l=s.is(w)?0:s.scrollTop(),c=s.is(w)?0:s.scrollLeft(),d=o?0:m(e),u=o?h(s[0]):0,p=e.offset().left-(s.offset().left+parseFloat(s.css("borderLeftWidth")))-parseFloat(e.css("marginLeft")),f=n.offset().top-(s.offset().top+parseFloat(s.css("borderTopWidth")))-parseFloat(n.css("marginTop"));t.resizeHandle.css({top:f+l,left:p+d+(c-u)-a/2,position:"absolute"})},setResizeHandleDimensions:function(){var e=this,t=r(e.element).children(k);e.resizeHandle.css({width:e.options.handle.width,height:t.height()})},setResizeHandleDragPosition:function(e){var t=this,n=r(r(e.currentTarget).data(t.options.handle.dataAttribute)),i=t.options,o=r(i.rootElement),a=i.handle?i.handle.width:0,s=i.min,l=i.rtl,c=m(n),u=n.offset().left-(o.offset().left+parseFloat(o.css("borderLeftWidth")))-parseFloat(n.css("marginLeft")),p=m(n.next()),f=r(t.resizeHandle),g=o.is(w)?0:o.scrollLeft(),v=l?h(o[0]):0,_=f.offset().left-(o.offset().left+parseFloat(o.css("borderLeftWidth")))-parseFloat(f.css("marginLeft")),b=d({value:_+(g-v)+e.x.delta,min:u+(g-v)-(l?p:0)+s,max:u+c+(g-v)+(l?0:p)-a-s});f.css({left:b})},resize:function(e){var t,n,i,o=this,a=r(r(e.currentTarget).data(o.options.handle.dataAttribute)),s=o.options,l=s.rtl?-1:1,c=s.min,u=l*e.x.initialDelta;o._setTableComputedWidth(),o._setColumnsComputedWidth(),i=m(a),n=m(a.next()),t=d({value:i+u,min:c,max:i+n-c}),o._resizeColumn(a[0],t),o._resizeTopAndBottomColumns(a[0],t),o._resizeAdjacentColumns(a.index(),n,i,i-t)},_setTableComputedWidth:function(){var e=this.element;""===e.style[T]&&(e.style[T]=g(m(r(e))))},_setColumnsComputedWidth:function(){var e,t=this,n=r(t.element).children(k),i=m(n),o=n.children(C).children(y),a=o.length,s=o.map(function(){return m(r(this))});for(e=0;e<a;e++)o[e].style[T]=p(o[e].style[T])?f(u(s[e],i)):g(s[e])},_resizeTopAndBottomColumns:function(e,t){var n,i=this,o=r(e).index(),a=r(i.element).children(k).children(C).children(i.options.tags.join(S)).filter(function(){var t=this;return r(t).index()===o&&t!==e}),s=a.length;for(n=0;n<s;n++)i._resizeColumn(a[n],t)},_resizeColumn:function(e,t){e.style[T]=p(e.style[T])?f(u(t,m(r(this.element).children(k)))):g(t)},_resizeAdjacentColumns:function(e,t,n,i){var o,a=this,s=r(a.element).children(k).children(C).children(a.options.tags.join(S)).filter(function(){return r(this).index()===e+1}),l=s.length;for(o=0;o<l;o++)a._resizeAdjacentColumn(s[o],t,n,i)},_resizeAdjacentColumn:function(e,t,n,i){var r=this,a=r.options.min,s=d({value:t+i,min:a,max:o(n+t-a)});r._resizeColumn(e,s)}});D.create=function(e){l.create(e,{name:"columnResizing",type:D,eventNamespace:v})},D.dispose=function(e){l.dispose(e,{eventNamespace:v})},a(s,{ColumnResizing:D})}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/resizing/row-resizing.min",["editor/main.min","editor/resizing/resizing-utils.min","editor/resizing/table-element-resizing.min"],e)}(function(){!function(e,t){var n=window.Math,i=n.abs,o=e.jQuery,r=o.extend,a=e.ui.editor,s=a.TableElementResizing,l=a.ResizingUtils,c=l.getScrollBarWidth,d=l.constrain,u=l.calculatePercentageRatio,h=l.inPercentages,p=l.toPercentages,f=l.toPixels,g=e._outerHeight,m=".kendoEditorRowResizing",v="k-row-resize-handle",_="k-row-resize-marker-wrapper",b="k-row-resize-marker",w="body",k="tr",y="tbody",x="height",C=s.extend({options:{tags:[k],min:20,rootElement:null,eventNamespace:m,rtl:!1,handle:{dataAttribute:"row",width:0,height:10,classNames:{handle:v,marker:b},template:'<div class="k-row-resize-handle-wrapper" unselectable="on" contenteditable="false"><div class="'+v+'"><div class="'+_+'"><div class="'+b+'"></div></div></div></div>'}},elementBorderHovered:function(e,t){var n=this,i=n.options.handle[x],r=e.offset().top+g(e),a=t.clientY+o(e[0].ownerDocument).scrollTop();return a>r-i&&a<r+i},setResizeHandlePosition:function(e){var t=this,n=t.options,i=n.handle[x],r=o(n.rootElement),a=r.is(w)?0:r.scrollTop(),s=r.is(w)?0:r.scrollLeft(),l=n.rtl?c(r[0]):0,d=e.offset().left-(r.offset().left+parseFloat(r.css("borderLeftWidth")))-parseFloat(e.css("marginLeft")),u=e.offset().top-(r.offset().top+parseFloat(r.css("borderTopWidth")))-parseFloat(e.css("marginTop"));t.resizeHandle.css({top:u+g(e)+a-i/2,left:d+(s-l),position:"absolute"})},setResizeHandleDimensions:function(){var e=this;e.resizeHandle.css({width:o(e.element).children(y).width(),height:e.options.handle[x]})},setResizeHandleDragPosition:function(e){var t=this,n=t.options,i=n.min,r=o(t.element).children(y),a=o(t.resizeHandle),s=o(e.currentTarget).data(n.handle.dataAttribute),l=o(s),c=o(n.rootElement),u=c.is(w)?0:c.scrollTop(),h=r.offset().top-(c.offset().top+parseFloat(c.css("borderTopWidth")))-parseFloat(r.css("marginTop")),p=l.offset().top-(c.offset().top+parseFloat(c.css("borderTopWidth")))-parseFloat(l.css("marginTop")),f=a.offset().top-(Math.max(0,c.offset().top)+parseFloat(c.css("borderTopWidth")))-parseFloat(a.css("marginTop")),m=d({value:f+u+e.y.delta,min:p+u+i,max:h+g(r)+u-n.handle[x]-i});a.css({top:m})},resize:function(e){var t=this,n=t.options,r=o(e.currentTarget).data(n.handle.dataAttribute),a=g(o(r)),s=o(t.element),l=g(s),c=s.children(y),u=c.height(),p=r.style[x],m=d({value:a+e.y.initialDelta,min:n.min,max:i(u-n.min)});t._setRowsHeightInPixels(),r.style[x]=f(m),t._setTableHeight(l+(m-a)),h(p)&&t._setRowsHeightInPercentages()},_setRowsHeightInPixels:function(){var e,t=this,n=o(t.element).children(y).children(k),i=n.length,r=n.map(function(){return g(o(this))});for(e=0;e<i;e++)n[e].style[x]=f(r[e])},_setRowsHeightInPercentages:function(){var e,t=this,n=o(t.element).children(y),i=n.height(),r=n.children(k),a=r.length,s=r.map(function(){return g(o(this))});for(e=0;e<a;e++)r[e].style[x]=p(u(s[e],i))},_setTableHeight:function(e){var t=this.element;t.style[x]=h(t.style[x])?p(u(e,o(t).parent().height())):f(e)}});C.create=function(e){s.create(e,{name:"rowResizing",type:C,eventNamespace:m})},C.dispose=function(e){s.dispose(e,{eventNamespace:m})},r(a,{RowResizing:C})}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/resizing/table-resize-handle.min",["editor/main.min","kendo.draganddrop.min","editor/resizing/resizing-utils.min"],e)}(function(){!function(e,t){var n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C=e.jQuery,S=C.extend,T=C.noop,D=C.proxy,A=e.ui.editor,E=e.Class,I=e.ui.Draggable,M=e.Observable,F=A.ResizingUtils.getScrollBarWidth,R=e._outerWidth,P=e._outerHeight,z=".kendoEditorTableResizeHandle",B="k-table-resize-handle",L="dragStart",H="drag",N="dragEnd",O="halfInside",V="mouseover",W="mouseout",U="body",q="table",j="east",G="north",$="northeast",Y="northwest",K="south",Q="southeast",X="southwest",J="west",Z=".",ee=M.extend({init:function(e){var t=this;M.fn.init.call(t),t.options=S({},t.options,e),t.element=C(t.options.template).appendTo(t.options.appendTo)[0],t._attachEventHandlers(),t._addStyles(),t._initDraggable(),t._initPositioningStrategy(),t._initDraggingStrategy(),C(t.element).data(q,t.options.resizableElement)},destroy:function(){var e=this;C(e.element).off(z).remove(),e.element=null,e._destroyDraggable(),e.unbind()},options:{appendTo:null,direction:Q,resizableElement:null,rtl:!1,template:"<div class='k-table-resize-handle-wrapper' unselectable='on' contenteditable='false'><div class='"+B+"'></div></div>"},events:[L,H,N,V,W],show:function(){this._setPosition()},_setPosition:function(){var e=this,t=e._positioningStrategy.getPosition();C(e.element).css({top:t.top,left:t.left,position:"absolute"})},_attachEventHandlers:function(){var e=this;C(e.element).on(V+z,D(e._onMouseOver,e)).on(W+z,D(e._onMouseOut,e))},_onMouseOver:function(){this.trigger(V)},_onMouseOut:function(){this.trigger(W)},_addStyles:function(){var e=this;C(e.element).children(Z+B).addClass("k-resize-"+e.options.direction)},_initPositioningStrategy:function(){var e=this,t=e.options;e._positioningStrategy=n.create({name:t.direction,handle:e.element,resizableElement:t.resizableElement,rootElement:t.rootElement,rtl:t.rtl})},_initDraggable:function(){var e=this,t=e.element;!e._draggable&&t&&(e._draggable=new I(t,{dragstart:D(e._onDragStart,e),drag:D(e._onDrag,e),dragend:D(e._onDragEnd,e)}))},_onDragStart:function(){this.trigger(L)},_onDrag:function(e){var t=this;t.trigger(H,t._draggingStrategy.adjustDragDelta({deltaX:e.x.delta,deltaY:e.y.delta,initialDeltaX:e.x.initialDelta,initialDeltaY:e.y.initialDelta}))},_onDragEnd:function(){this.trigger(N)},_destroyDraggable:function(){var e=this;e._draggable&&(e._draggable.destroy(),e._draggable=null)},_initDraggingStrategy:function(){var e=this;e._draggingStrategy=h.create({name:e.options.direction})}}),te=E.extend({init:function(){this._items=[]},register:function(e,t){this._items.push({name:e,type:t})},create:function(e){var t,n,i,o=this._items,r=o.length,a=e.name?e.name.toLowerCase():"";for(i=0;i<r;i++)if(n=o[i],n.name.toLowerCase()===a){t=n;break}if(t)return new t.type(e)}}),ne=te.extend({});ne.current=new ne,n=E.extend({init:function(e){var t=this;t.options=S({},t.options,e)},options:{handle:null,offset:O,resizableElement:null,rootElement:null,rtl:!1},getPosition:function(){var e=this,t=e.calculatePosition(),n=e.applyHandleOffset(t),i=e.applyScrollOffset(n);return i},calculatePosition:T,applyHandleOffset:function(e){var t=this.options,n=C(t.handle);return t.offset===O?{top:e.top-P(n)/2,left:e.left-R(n)/2}:e},applyScrollOffset:function(e){var t=this.options,n=C(t.rootElement),i=t.rtl?F(n[0]):0;return n.is(U)?e:{top:e.top+(n.scrollTop()||0),left:e.left+(n.scrollLeft()||0)-i}}}),n.create=function(e){return ne.current.create(e)},i=n.extend({calculatePosition:function(){var e=C(this.options.resizableElement),t=e.position();return{top:t.top+P(e)/2,left:t.left+R(e)}}}),ne.current.register(j,i),o=n.extend({calculatePosition:function(){var e=C(this.options.resizableElement),t=e.position();return{top:t.top,left:t.left+R(e)/2}}}),ne.current.register(G,o),r=n.extend({calculatePosition:function(){var e=C(this.options.resizableElement),t=e.position();return{top:t.top,left:t.left+R(e)}}}),ne.current.register($,r),a=n.extend({calculatePosition:function(){var e=C(this.options.resizableElement),t=e.position();return{top:t.top,left:t.left}}}),ne.current.register(Y,a),s=n.extend({calculatePosition:function(){var e=C(this.options.resizableElement),t=e.position();return{top:t.top+P(e),left:t.left+R(e)/2}}}),ne.current.register(K,s),l=n.extend({calculatePosition:function(){var e=C(this.options.resizableElement),t=e.position();return{top:t.top+P(e),left:t.left+R(e)}}}),ne.current.register(Q,l),c=n.extend({calculatePosition:function(){var e=C(this.options.resizableElement),t=e.position();return{top:t.top+P(e),left:t.left}}}),ne.current.register(X,c),d=n.extend({calculatePosition:function(){var e=C(this.options.resizableElement),t=e.position();return{top:t.top+P(e)/2,left:t.left}}}),ne.current.register(J,d),u=te.extend({}),u.current=new u,h=E.extend({init:function(e){var t=this;t.options=S({},t.options,e)},options:{deltaX:{adjustment:null,modifier:null},deltaY:{adjustment:null,modifier:null}},adjustDragDelta:function(e){var t=this.options,n=t.deltaX.adjustment*t.deltaX.modifier,i=t.deltaY.adjustment*t.deltaY.modifier;return{deltaX:e.deltaX*n,deltaY:e.deltaY*i,initialDeltaX:e.initialDeltaX*n,initialDeltaY:e.initialDeltaY*i}}}),h.create=function(e){return u.current.create(e)},p=h.extend({options:{deltaX:{adjustment:1,modifier:1},deltaY:{adjustment:0,modifier:0}}}),f=p.extend({options:{deltaX:{modifier:1}}}),u.current.register(j,f),g=p.extend({options:{deltaX:{modifier:-1}}}),u.current.register(J,g),m=h.extend({options:{deltaX:{adjustment:0,modifier:0},deltaY:{adjustment:1,modifier:1}}}),v=m.extend({options:{deltaY:{modifier:-1}}}),u.current.register(G,v),_=m.extend({options:{deltaY:{modifier:1}}}),u.current.register(K,_),b=h.extend({options:{deltaX:{adjustment:1,modifier:1},deltaY:{adjustment:1,modifier:1}}}),w=b.extend({options:{deltaX:{modifier:1},deltaY:{modifier:-1}}}),u.current.register($,w),k=b.extend({options:{deltaX:{modifier:-1},deltaY:{modifier:-1}}}),u.current.register(Y,k),y=b.extend({options:{deltaX:{modifier:1},deltaY:{modifier:1}}}),u.current.register(Q,y),x=b.extend({options:{deltaX:{modifier:-1},deltaY:{modifier:1}}}),u.current.register(X,x),S(A,{TableResizeHandle:ee})}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/resizing/table-resizing.min",["editor/main.min","editor/resizing/table-resize-handle.min","editor/resizing/resizing-utils.min"],e)}(function(){!function(e,t){function n(e){return t===e}var i=window,o=i.Math,r=o.min,a=o.max,s=e.jQuery,l=s.contains,c=s.extend,d=s.proxy,u=e.support.browser,h=e.ui.editor,p=e.Class,f=h.TableResizeHandle,g=h.ResizingUtils,m=g.calculatePercentageRatio,v=g.constrain,_=g.inPercentages,b=g.inPixels,w=g.toPercentages,k=g.toPixels,y=e._outerWidth,x=e._outerHeight,C=".kendoEditorTableResizing",S="k-table-resize-handle-wrapper",T="k-table",D="k-table-resizing",A="dragStart",E="drag",I="dragEnd",M="keydown",F="mousedown",R="mouseover",P="mouseout",z="td",B="tr",L="tbody",H="table",N="width",O="height",V="east",W="north",U="northeast",q="northwest",j="south",G="southeast",$="southwest",Y="west",K=".",Q=p.extend({init:function(e,t){var n=this;n.options=c({},n.options,t),n.handles=[],s(e).is(H)&&(n.element=e)},destroy:function(){var e=this;s(e.element).off(C),e.element=null,s(e.options.rootElement).off(M+C),e._destroyResizeHandles()},options:{appendHandlesTo:null,rtl:!1,rootElement:null,minWidth:10,minHeight:10,handles:[{direction:q},{direction:W},{direction:U},{direction:V},{direction:G},{direction:j},{direction:$},{direction:Y}]},resize:function(e){var t=this,n=c({},{deltaX:0,deltaY:0,initialDeltaX:0,initialDeltaY:0},e);t._resizeWidth(n.deltaX,n.initialDeltaX),t._resizeHeight(n.deltaY,n.initialDeltaY),t.showResizeHandles()},_resizeWidth:function(e,t){var i,o,l,c,d=this,u=s(d.element),h=u[0].style[N],p=y(u),f=u.parent().width(),g=d._getMaxDimensionValue(N);0!==e&&(n(d._initialElementWidth)&&(d._initialElementWidth=p),c=v({value:d._initialElementWidth+t,min:d.options.minWidth,max:g}),_(h)?(p+e>f?(o=a(c,f),l=r(c,f)):(o=r(c,f),l=a(c,f)),i=w(m(o,l))):i=k(c),d._setColumnsWidth(),u[0].style[N]=i)},_resizeHeight:function(e,t){var i,o,l,c,d=this,u=s(d.element),h=u[0].style[O],p=x(u),f=u.parent(),g=f.height(),b=d._getMaxDimensionValue(O),y=d.options.minHeight,C=d._hasRowsInPixels();0!==e&&(n(d._initialElementHeight)&&(d._initialElementHeight=p),c=v({value:d._initialElementHeight+t,min:y,max:b}),C&&e<0&&d._setRowsHeightInPercentages(),_(h)?(p+e>g?(o=a(c,g),l=r(c,g)):(o=r(c,g),l=a(c,g)),i=w(m(o,l))):i=k(c),u[0].style[O]=i,C&&e<0&&d._setRowsHeightInPixels())},_getMaxDimensionValue:function(e){var t=this,n=s(t.element),i=e.toLowerCase(),o=t.options.rtl?-1:1,r=s(t.element).parent(),a=r[0],l=r[i](),c=o*(e===N?r.scrollLeft():r.scrollTop());return a===n.closest(z)[0]?""!==a.style[i]||_(t.element.style[i])?l+c:1/0:l+c},_setColumnsWidth:function(){function e(e){var t=e.style.width;return""!==t?!!_(t):!!s(e).hasClass(T)}var t,n=this,i=s(n.element),o=i.parent()[0],r=i.closest(z),a=r.closest(B).children(),l=a.length;if(e(i[0])&&o===r[0]&&""===o.style[N])for(t=0;t<l;t++)a[t].style[N]=k(s(a[t]).width())},_hasRowsInPixels:function(){var e,t=this,n=s(t.element).children(L).children(B);for(e=0;e<n.length;e++)if(""===n[e].style.height||b(n[e].style.height))return!0;return!1},_setRowsHeightInPercentages:function(){var e,t=this,n=s(t.element).children(L),i=n.height(),o=n.children(B),r=o.length,a=o.map(function(){return x(s(this))});for(e=0;e<r;e++)o[e].style[O]=w(m(a[e],i))},_setRowsHeightInPixels:function(){var e,t=this,n=s(t.element).children(L).children(B),i=n.length,o=n.map(function(){return x(s(this))});for(e=0;e<i;e++)n[e].style[O]=k(o[e])},showResizeHandles:function(){var e=this;e._initResizeHandles(),e._showResizeHandles()},_initResizeHandles:function(){var e,t=this,n=t.handles,i=t.options,o=t.options.handles,r=o.length;if(!(n&&n.length>0)){for(e=0;e<r;e++)t.handles.push(new f(c({appendTo:i.appendHandlesTo,resizableElement:t.element,rootElement:i.rootElement,rtl:i.rtl},o[e])));t._bindToResizeHandlesEvents()}},_destroyResizeHandles:function(){var e,t=this,n=t.handles?t.handles.length:0;for(e=0;e<n;e++)t.handles[e].destroy()},_showResizeHandles:function(){var e,t=this,n=t.handles||[],i=n.length;for(e=0;e<i;e++)t.handles[e].show()},_bindToResizeHandlesEvents:function(){var e,t,n=this,i=n.handles||[],o=i.length;for(e=0;e<o;e++)t=i[e],t.bind(A,d(n._onResizeHandleDragStart,n)),t.bind(E,d(n._onResizeHandleDrag,n)),t.bind(I,d(n._onResizeHandleDragEnd,n)),t.bind(R,d(n._onResizeHandleMouseOver,n)),t.bind(P,d(n._onResizeHandleMouseOut,n))},_onResizeHandleDragStart:function(){var e=this,t=s(e.element);t.addClass(D),e._initialElementHeight=x(t),e._initialElementWidth=y(t),e._disableKeyboard()},_onResizeHandleDrag:function(e){this.resize(e)},_onResizeHandleDragEnd:function(){var e=this;s(e.element).removeClass(D),e._enableKeyboard()},_enableKeyboard:function(){s(this.options.rootElement).off(M+C)},_disableKeyboard:function(){s(this.options.rootElement).on(M+C,function(e){e.preventDefault()})}}),X=p.extend({create:function(e){var t=this;s(e.body).on(F+C,H,function(n){var i=n.target,o=n.currentTarget,r=e.tableResizing,a=r?r.element:null;if(r){if(a&&o!==a){if(l(o,a)&&a!==i&&l(a,i))return;a!==i&&(e._destroyTableResizing(),t._initResizing(e,o))}}else t._initResizing(e,o);e._showTableResizeHandles()}).on(F+C,function(t){var n=e.tableResizing,i=n?n.element:null,o=t.target,r=s(o).hasClass(S)||s(o).parents(K+S).length>0;!n||i===o||l(i,o)||r||e._destroyTableResizing()})},dispose:function(e){s(e.body).off(C)},_initResizing:function(t,n){u.msie||u.mozilla||(t.tableResizing=new Q(n,{appendHandlesTo:t.body,rtl:e.support.isRtl(t.element),rootElement:t.body}))}});X.current=new X,Q.create=function(e){X.current.create(e)},Q.dispose=function(e){X.current.dispose(e)},c(h,{TableResizing:Q})}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/table-wizard/table-wizard-command.min",["editor/plugins/tables.min"],e)}(function(){!function(e,t){var n=window.kendo,i=n.ui.editor,o=i.EditorUtils,r=i.RangeUtils,a=i.Dom,s=o.registerTool,l=i.ToolTemplate,c=i.Command,d=new i.BlockFormatFinder([{tags:["table"]}]),u=new i.BlockFormatFinder([{tags:["td","th"]}]),h=/([a-z]+|%)$/i,p=c.extend({exec:function(){var o=this,r=o.editor,a=o.range=o.lockRange(),s=o._sourceTable=o.options.insertNewTable?t:o._selectedTable(a),l=o._selectedTableCells=s?o._selectedCells(a):t,c={visible:!1,messages:r.options.messages,closeCallback:e.proxy(o.onDialogClose,o),table:o.parseTable(s,l),dialogOptions:r.options.dialogOptions,isRtl:n.support.isRtl(r.wrapper)},d=new i.TableWizardDialog(c);d.open()},onDialogClose:function(e){var t=this;t.releaseRange(t.range),e&&(t.options.insertNewTable?t.insertTable(t.createNewTable(e)):t.updateTable(e,t._sourceTable,t._selectedTableCells))},releaseRange:function(e){var t=this,n=t.editor.document;a.windowFromDocument(n).focus(),c.fn.releaseRange.call(t,e)},insertTable:function(e){var t=this.range;t.insertNode(e),t.collapse(!0),this.editor.selectRange(t),this._ensureFocusableAfterTable(e)},_ensureFocusableAfterTable:function(t){for(var n=e(t).parent().contents(),i=n.length-1,o=n.get(i);null!==o.nodeValue&&(" "===o.nodeValue||""===o.nodeValue);)i-=1,o=n.get(i);o===t&&a.insertAfter(a.createEmptyNode(this.editor.document,"p"),t)},updateTable:function(t,n,i){for(var o,r,s,l,c,d,u,h,p=this,f=e(n.rows).toArray(),g=t.tableProperties,m=g.rows,v=g.columns,_=function(e){return e[e.length-1]};i.length>1;)i.pop();if(o=i.length?_(i).parentNode:_(f),p._deleteTableRows(f,f.length-m),f.length<m)for(l=e(o).index(),c=o.cells.length,d=m-f.length,s=o.parentNode;d;)r=s.insertRow(l+1),p._insertCells(c-r.cells.length,r),d--;f[0].cells.length>v&&e(f).each(function(e,t){for(;t.cells.length>v;)t.deleteCell(-1)}),f[0].cells.length<v&&(u=e(_(i)||_(o.cells)).index(),e(f).each(function(e,t){p._insertCells(v-t.cells.length,t,u+1)})),p._updateTableProperties(n,g),h=t.cellProperties,i[0]&&a.attr(i[0],{id:h.id||null}),(h.selectAllCells?e(f).children():e(i)).each(function(e,t){p._updateCellProperties(t,h)}),p._updateCaption(n,g),g.cellsWithHeaders=g.cellsWithHeaders||!1,p.cellsWithHeadersAssociated(n)!=g.cellsWithHeaders&&p.associateCellsWithHeader(n,g.cellsWithHeaders)},_isHeadingRow:function(e){return a.is(e.parentNode,"thead")||a.is(e.cells[0],"th")},associateCellsWithHeader:function(t,n){var i,o,r,a=(new Date).getTime(),s=[],l=t.rows[0].cells.length,c=function(){for(var e=0;e<l;e++)s[e]="table"+ ++a},d=function(t,i){e(i)[n?"attr":"removeAttr"]("id",s[t])},u=function(t,i){e(i)[n?"attr":"removeAttr"]("headers",s[t])},h=this._isHeadingRow;e(t.rows).each(function(n,a){if(h(a))for(i=n,o=t.rows[++i],r=o&&!h(o),r&&(c(),e(a.cells).each(d));r;)e(o.cells).each(u),o=t.rows[++i],r=o&&!h(o)})},cellsWithHeadersAssociated:function(t){var n,i=e(t.rows).children(),o=this._isHeadingRow,r=[];return i.each(function(e,t){t.id&&o(t.parentNode)&&r.push(t.id)}),n=i.filter(function(t,n){var i=n.getAttribute("headers");return i&&!o(n.parentNode)&&e.inArray(i,r)>-1}),!!n.length},_insertCells:function(e,t,n){n=isNaN(n)?-1:n;for(var i,o=0;o<e;o++)i=t.insertCell(n),i.innerHTML=" "},_deleteTableRows:function(e,t){for(var n,i,o=0;o<t;o++)n=e.pop(),i=n.parentNode,i.removeChild(n),i.rows.length||a.remove(i)},createNewTable:function(e){var t,n,i,o,r,s=this,l=s.editor.document,c=e.tableProperties,d=e.cellProperties,u=d.selectAllCells,h=a.create(l,"table");for(s._updateTableProperties(h,c),s._updateCaption(h,c),t=h.createTBody(),n=0;n<c.rows;n++)for(i=t.insertRow(),o=0;o<c.columns;o++)r=i.insertCell(),r.innerHTML=" ",0===n&&0===o&&d.id&&(r.id=d.id),s._updateCellProperties(r,u||0===n&&0===o?d:{});return c.cellsWithHeaders&&s.associateCellsWithHeader(h,c.cellsWithHeaders),h},_updateTableProperties:function(t,n){var i=this._getStylesData(n);a.attr(t,{cellSpacing:n.cellSpacing||null,cellPadding:n.cellPadding||null,className:n.className||null,id:n.id||null,summary:n.summary||null,style:i||null}),e(t).addClass("k-table")},_updateCellProperties:function(e,t){var n=this._getStylesData(t);n.padding=t.cellPadding||null,n.margin=t.cellMargin||null,a.attr(e,{style:n||null,className:t.className||null})},_updateCaption:function(e,t){var n,i;e.caption&&!t.captionContent?e.deleteCaption():t.captionContent&&(n=e.createCaption(),n.innerHTML=t.captionContent,i=this._getAlignmentData(t.captionAlignment),a.attr(n,{style:{textAlign:i.textAlign,verticalAlign:i.verticalAlign}}))},_getStylesData:function(e){var t=this._getAlignmentData(e.alignment),n="wrapText"in e?e.wrapText?"":"nowrap":null;return{width:e.width?e.width+e.widthUnit:null,height:e.height?e.height+e.heightUnit:null,textAlign:t.textAlign,verticalAlign:t.verticalAlign,backgroundColor:e.bgColor||"",borderWidth:e.borderWidth,borderStyle:e.borderStyle,borderColor:e.borderColor||"",borderCollapse:e.collapseBorders?"collapse":null,whiteSpace:n}},_getAlignmentData:function(e){var t,n="",i=n;return e&&(e.indexOf(" ")!=-1?(t=e.split(" "),n=t[0],i=t[1]):n=e),{textAlign:n,verticalAlign:i}},parseTable:function(n,i){var o,r,a,s,l,c,d,u,h,p;return n?(o=this,r=n.style,a=n.rows,s=n.caption,l=e(s?s.cloneNode(!0):t),l.find(".k-marker").remove(),c=n.className,c=c.replace(/^k-table\s|\sk-table$/,""),c=c.replace(/\sk-table\s/," "),c=c.replace(/^k-table$/,""),d=o._getAlignment(n,!0),u=s?o._getAlignment(s):t,h=o.cellsWithHeadersAssociated(n),p={tableProperties:{width:r.width||n.width?parseFloat(r.width||n.width):null,height:r.height||n.height?parseFloat(r.height||n.height):null,columns:a[0]?a[0].children.length:0,rows:a.length,widthUnit:o._getUnit(r.width),heightUnit:o._getUnit(r.height),cellSpacing:n.cellSpacing,cellPadding:n.cellPadding,alignment:d.textAlign,bgColor:r.backgroundColor||n.bgColor,className:c,id:n.id,borderWidth:r.borderWidth||n.border,borderColor:r.borderColor,borderStyle:r.borderStyle||"",collapseBorders:!!r.borderCollapse,summary:n.summary,captionContent:s?l.html():"",captionAlignment:s&&u.textAlign?u.textAlign+" "+u.verticalAlign:"",cellsWithHeaders:h},selectedCells:[]},p.rows=o.parseTableRows(a,i,p),p):{tableProperties:{},selectedCells:[]}},parseTableRows:function(t,n,i){var o,r,a,s,l,c,d,u=this,h=[];for(c=0;c<t.length;c++)for(o=t[c],r={cells:[]},a=o.cells,h.push(r),d=0;d<a.length;d++)s=a[d],l=u.parseCell(s),e.inArray(s,n)!=-1&&i.selectedCells.push(l),r.cells.push(l);return h},parseCell:function(e){var t,n=this,i=e.style,o=n._getAlignment(e);return o=o.textAlign?o.textAlign+" "+o.verticalAlign:"",t={width:i.width||e.width?parseFloat(i.width||e.width):null,height:i.height||e.height?parseFloat(i.height||e.height):null,widthUnit:n._getUnit(i.width),heightUnit:n._getUnit(i.height),cellMargin:i.margin,cellPadding:i.padding,alignment:o,bgColor:i.backgroundColor||e.bgColor,className:e.className,id:e.id,borderWidth:i.borderWidth||e.border,borderColor:i.borderColor,borderStyle:i.borderStyle,wrapText:"nowrap"!=i.whiteSpace}},_getAlignment:function(e,t){var n,i=e.style,o=i.textAlign||e.align||"";return t?{textAlign:o}:(n=i.verticalAlign||e.vAlign||"",o&&n?{textAlign:o,verticalAlign:n}:!o&&n?{textAlign:"left",verticalAlign:n}:o&&!n?{textAlign:o,verticalAlign:"top"}:{textAlign:"",verticalAlign:""})},_getUnit:function(e){var t=(e||"").match(h);return t?t[0]:"px"},_selectedTable:function(e){var t=a.filterBy(r.nodes(e),a.htmlIndentSpace,!0);return d.findSuitable(t)[0]},_selectedCells:function(e){var t=a.filterBy(r.nodes(e),a.htmlIndentSpace,!0);return u.findSuitable(t)}}),f=i.Tool.extend({command:function(e){return e.insertNewTable=this.options.insertNewTable,new p(e)}}),g=f.extend({update:function(e,t){var n=!d.isFormatted(t);e.toggleClass("k-state-disabled",n)}});n.ui.editor.TableWizardTool=f,n.ui.editor.TableWizardCommand=p,s("tableWizard",new g({command:p,insertNewTable:!1,template:new l({template:o.buttonTemplate,title:"Table Wizard"})}))}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.tabstrip.min",["kendo.data.min"],e)}(function(){return function(e,t){function n(t){t.children(b).addClass(E),t.children("a").addClass(C).children(b).addClass(E),t.filter(":not([disabled]):not([class*=k-state-disabled])").addClass(N),t.filter("li[disabled]").addClass(H).attr("aria-disabled","true").removeAttr("disabled"),t.filter(":not([class*=k-state])").children("a").filter(":focus").parent().addClass(O+" "+U),t.attr("role","tab"),t.filter("."+O).attr("aria-selected",!0),t.each(function(){var t=e(this);t.children("."+C).length||t.contents().filter(function(){return!(this.nodeName.match(v)||3==this.nodeType&&!d(this.nodeValue))}).wrapAll("<span UNSELECTABLE='on' class='"+C+"'/>")})}function i(e){var t=e.children(".k-item");t.filter(".k-first:not(:first-child)").removeClass(I),t.filter(".k-last:not(:last-child)").removeClass(S),t.filter(":first-child").addClass(I),t.filter(":last-child").addClass(S)}function o(e,t){return"<span class='k-button k-button-icon k-bare k-tabstrip-"+e+"' unselectable='on'><span class='k-icon "+t+"'></span></span>"}var r=window.kendo,a=r.ui,s=r.keys,l=e.map,c=e.each,d=e.trim,u=e.extend,h=r.isFunction,p=r.template,f=r._outerWidth,g=r._outerHeight,m=a.Widget,v=/^(a|div)$/i,_=".kendoTabStrip",b="img",w="href",k="prev",y="next",x="show",C="k-link",S="k-last",T="click",D="error",A=":empty",E="k-image",I="k-first",M="select",F="activate",R="k-content",P="contentUrl",z="mouseenter",B="mouseleave",L="contentLoad",H="k-state-disabled",N="k-state-default",O="k-state-active",V="k-state-focused",W="k-state-hover",U="k-tab-on-top",q=".k-item:not(."+H+")",j=".k-item",G=".k-tabstrip-items > "+q+":not(."+O+")",$=200,Y={content:p("<div class='k-content'#= contentAttributes(data) # role='tabpanel'>#= content(item) #</div>"),itemWrapper:p("<#= tag(item) # class='k-link'#= contentUrl(item) ##= textAttributes(item) #>#= image(item) ##= sprite(item) ##= text(item) #</#= tag(item) #>"), +item:p("<li class='#= wrapperCssClass(group, item) #' role='tab' #=item.active ? \"aria-selected='true'\" : ''#>#= itemWrapper(data) #</li>"),image:p("<img class='k-image' alt='' src='#= imageUrl #' />"),sprite:p("<span class='k-sprite #= spriteCssClass #'></span>"),empty:p("")},K={wrapperCssClass:function(e,t){var n="k-item",i=t.index;return n+=t.enabled===!1?" k-state-disabled":" k-state-default",0===i&&(n+=" k-first"),i==e.length-1&&(n+=" k-last"),n},textAttributes:function(e){return e.url?" href='"+e.url+"'":""},text:function(e){return e.encoded===!1?e.text:r.htmlEncode(e.text)},tag:function(e){return e.url?"a":"span"},contentAttributes:function(e){return e.active!==!0?" style='display:none' aria-hidden='true' aria-expanded='false'":""},content:function(e){return e.content?e.content:e.contentUrl?"":" "},contentUrl:function(e){return e.contentUrl?r.attr("content-url")+'="'+e.contentUrl+'"':""}},Q=m.extend({init:function(t,n){var i,o,a,s=this;m.fn.init.call(s,t,n),s._animations(s.options),n=s.options,s._contentUrls=n.contentUrls||[],s._wrapper(),s._isRtl=r.support.isRtl(s.wrapper),s._tabindex(),s._updateClasses(),s._dataSource(),n.dataSource&&s.dataSource.fetch(),s._tabPosition(),s._scrollable(),s._contentUrls.length?s.wrapper.find(".k-tabstrip-items > .k-item").each(function(t,n){var i=s._contentUrls[t];"string"==typeof i&&e(n).find(">."+C).data(P,i)}):s._contentUrls.length=s.tabGroup.find("li.k-item").length,s.wrapper.on(z+_+" "+B+_,G,s._toggleHover).on("focus"+_,e.proxy(s._active,s)).on("blur"+_,function(){s._current(null)}),s._keyDownProxy=e.proxy(s._keydown,s),n.navigatable&&s.wrapper.on("keydown"+_,s._keyDownProxy),s.options.value&&(i=s.options.value),s.wrapper.children(".k-tabstrip-items").on(T+_,".k-state-disabled .k-link",!1).on(T+_," > "+q,function(t){var n,i=s.wrapper[0];if(i!==document.activeElement)if(n=r.support.browser.msie)try{i.setActive()}catch(o){i.focus()}else i.focus();s._click(e(t.currentTarget))&&t.preventDefault()}),o=s.tabGroup.children("li."+O),a=s.contentHolder(o.index()),o[0]&&a.length>0&&0===a[0].childNodes.length&&s.activateTab(o.eq(0)),s.element.attr("role","tablist"),s.element[0].id&&(s._ariaId=s.element[0].id+"_ts_active"),s.value(i),r.notify(s)},_active:function(){var e=this.tabGroup.children().filter("."+O);e=e[0]?e:this._endItem("first"),e[0]&&this._current(e)},_endItem:function(e){return this.tabGroup.children(q)[e]()},_getItem:function(e){return this.tabGroup.children(j)[e]()},_item:function(e,t){var n;return n=t===k?"last":"first",e?(e=e[t](),e[0]||(e=this.tabGroup.children(j)[n]()),e.hasClass(H)&&e.addClass(V),(e.hasClass(H)||e.hasClass(O))&&(this._focused=e),e):this._endItem(n)},_current:function(e){var n=this,i=n._focused,o=n._ariaId;return e===t?i:(i&&(n.tabGroup.children("#"+o).removeAttr("id"),i.removeClass(V)),e&&(e.hasClass(O)||e.addClass(V),n.element.removeAttr("aria-activedescendant"),o=e[0].id||o,o&&(e.attr("id",o),n.element.attr("aria-activedescendant",o))),n._focused=e,t)},_keydown:function(e){var n,i=this,o=e.keyCode,r=i._current(),a=i._isRtl,l=/top|bottom/.test(i.options.tabPosition);if(e.target==e.currentTarget&&r){if(o!==s.DOWN||l)if(o!==s.UP||l)if(o===s.RIGHT&&l)n=a?k:y;else if(o===s.LEFT&&l)n=a?y:k;else if(o==s.ENTER||o==s.SPACEBAR)i._click(r),e.preventDefault();else{if(o==s.HOME)return i._click(i._getItem("first")),e.preventDefault(),t;if(o==s.END)return i._click(i._getItem("last")),e.preventDefault(),t}else n=k;else n=y;n&&(i._click(i._item(r,n)),e.preventDefault())}},_dataSource:function(){var t=this;t.dataSource&&t._refreshHandler?t.dataSource.unbind("change",t._refreshHandler):t._refreshHandler=e.proxy(t.refresh,t),t.dataSource=r.data.DataSource.create(t.options.dataSource).bind("change",t._refreshHandler)},setDataSource:function(e){var t=this;t.options.dataSource=e,t._dataSource(),t.dataSource.fetch()},_animations:function(e){e&&"animation"in e&&!e.animation&&(e.animation={open:{effects:{}},close:{effects:{}}})},refresh:function(e){var t,n,i,o,a=this,s=a.options,l=r.getter(s.dataEncodedField),c=r.getter(s.dataTextField),d=r.getter(s.dataContentField),u=r.getter(s.dataContentUrlField),h=r.getter(s.dataImageUrlField),p=r.getter(s.dataUrlField),f=r.getter(s.dataSpriteCssClass),g=[],m=a.dataSource.view();for(e=e||{},i=e.action,i&&(m=e.items),t=0,o=m.length;t<o;t++)n={text:c(m[t])},s.dataEncodedField&&(n.encoded=l(m[t])),s.dataContentField&&(n.content=d(m[t])),s.dataContentUrlField&&(n.contentUrl=u(m[t])),s.dataUrlField&&(n.url=p(m[t])),s.dataImageUrlField&&(n.imageUrl=h(m[t])),s.dataSpriteCssClass&&(n.spriteCssClass=f(m[t])),g[t]=n;if("add"==e.action)e.index<a.tabGroup.children().length?a.insertBefore(g,a.tabGroup.children().eq(e.index)):a.append(g);else if("remove"==e.action)for(t=0;t<m.length;t++)a.remove(e.index);else"itemchange"==e.action?(t=a.dataSource.view().indexOf(m[0]),e.field===s.dataTextField&&a.tabGroup.children().eq(t).find(".k-link").text(m[0].get(e.field)),e.field===s.dataUrlField&&(a._contentUrls[t]=m[0].get(e.field))):(a.trigger("dataBinding"),a.remove("li"),a._contentUrls=[],a.append(g),a.trigger("dataBound"))},value:function(n){var i=this;return n===t?i.select().text():(n!=i.value()&&i.tabGroup.children().each(function(){e.trim(e(this).text())==n&&i.select(this)}),t)},items:function(){return this.tabGroup[0].children},setOptions:function(e){var t=this,n=t.options.animation;t._animations(e),e.contentUrls&&(t._contentUrls=e.contentUrls),e.animation=u(!0,n,e.animation),e.navigatable?t.wrapper.on("keydown"+_,t._keyDownProxy):t.wrapper.off("keydown"+_,t._keyDownProxy),m.fn.setOptions.call(t,e)},events:[M,F,x,D,L,"change","dataBinding","dataBound"],options:{name:"TabStrip",dataEncodedField:"",dataTextField:"",dataContentField:"",dataImageUrlField:"",dataUrlField:"",dataSpriteCssClass:"",dataContentUrlField:"",tabPosition:"top",animation:{open:{effects:"expand:vertical fadeIn",duration:200},close:{duration:200}},collapsible:!1,navigatable:!0,contentUrls:!1,scrollable:{distance:$}},destroy:function(){var e=this,t=e.scrollWrap;m.fn.destroy.call(e),e._refreshHandler&&e.dataSource.unbind("change",e._refreshHandler),e.wrapper.off(_),e.wrapper.children(".k-tabstrip-items").off(_),e._scrollableModeActive&&(e._scrollPrevButton.off().remove(),e._scrollNextButton.off().remove()),r.destroy(e.wrapper),t.children(".k-tabstrip").unwrap()},select:function(t){var n=this;return 0===arguments.length?n.tabGroup.children("li."+O):(isNaN(t)||(t=n.tabGroup.children().get(t)),t=n.tabGroup.find(t),e(t).each(function(t,i){i=e(i),i.hasClass(O)||n.trigger(M,{item:i[0],contentElement:n.contentHolder(i.index())[0]})||n.activateTab(i)}),n)},enable:function(e,t){return this._toggleDisabled(e,t!==!1),this},disable:function(e){return this._toggleDisabled(e,!1),this},reload:function(t){var n,i;return t=this.tabGroup.find(t),n=this,i=n._contentUrls,t.each(function(){var t=e(this),o=t.find("."+C).data(P)||i[t.index()],r=n.contentHolder(t.index());o&&n.ajaxRequest(t,r,null,o)}),n},append:function(e){var t=this,n=t._create(e);return c(n.tabs,function(e){var i=n.contents[e];t.tabGroup.append(this),"bottom"==t.options.tabPosition?t.tabGroup.before(i):t._scrollableModeActive?t._scrollPrevButton.before(i):t.wrapper.append(i),t.angular("compile",function(){return{elements:[i]}})}),i(t.tabGroup),t._updateContentElements(),t.resize(!0),t},_appendUrlItem:function(e){this._contentUrls.push(e)},_moveUrlItem:function(e,t){this._contentUrls.splice(t,0,this._contentUrls.splice(e,1)[0])},_removeUrlItem:function(e){this._contentUrls.splice(e,1)},insertBefore:function(t,n){n=e(t).is(e(n))?this.tabGroup.find(n).next():this.tabGroup.find(n);var o=this,r=o._create(t),a=o.element.find("[id='"+n.attr("aria-controls")+"']");return c(r.tabs,function(t){var i=r.contents[t],s=r.newTabsCreated?o._contentUrls.length-(r.tabs.length-t):e(i).index()-1;n.before(this),a.before(i),o._moveUrlItem(s,e(this).index()),o.angular("compile",function(){return{elements:[i]}})}),i(o.tabGroup),o._updateContentElements(r.newTabsCreated),o.resize(!0),o},insertAfter:function(t,n){n=e(t).is(e(n))?this.tabGroup.find(n).prev():this.tabGroup.find(n);var o=this,r=o._create(t),a=o.element.find("[id='"+n.attr("aria-controls")+"']");return c(r.tabs,function(t){var i=r.contents[t],s=r.newTabsCreated?o._contentUrls.length-(r.tabs.length-t):e(i).index()-1;n.after(this),a.after(i),o._moveUrlItem(s,e(this).index()),o.angular("compile",function(){return{elements:[i]}})}),i(o.tabGroup),o._updateContentElements(r.newTabsCreated),o.resize(!0),o},remove:function(t){var n,i=this,o=typeof t;return"string"===o?t=i.tabGroup.find(t):"number"===o&&(t=i.tabGroup.children().eq(t)),n=t.map(function(){var t=e(this).index(),n=i.contentElement(t);return r.destroy(n),i._removeUrlItem(t),n}),t.remove(),n.empty(),n.remove(),i._updateContentElements(),i.resize(!0),i},_create:function(t){var i,o,a,s=this,c=!1;return t=t instanceof r.data.ObservableArray?t.toJSON():t,e.isPlainObject(t)||e.isArray(t)?(t=e.isArray(t)?t:[t],c=!0,i=l(t,function(n,i){return s._appendUrlItem(t[i].contentUrl||null),e(Q.renderItem({group:s.tabGroup,item:u(n,{index:i})}))}),o=l(t,function(t,n){if("string"==typeof t.content||t.contentUrl)return e(Q.renderContent({item:u(t,{index:n})}))})):(i="string"==typeof t&&"<"!=t[0]?s.element.find(t):e(t),o=e(),i.each(function(){if(/k-tabstrip-items/.test(this.parentNode.className)){var t=s.element.find("[id='"+this.getAttribute("aria-controls")+"']");a=t}else a=e("<div class='"+R+"'/>");o=o.add(a)}),n(i)),{tabs:i,contents:o,newTabsCreated:c}},_toggleDisabled:function(t,n){t=this.tabGroup.find(t),t.each(function(){e(this).toggleClass(N,n).toggleClass(H,!n).attr("aria-disabled",!n)})},_updateClasses:function(){var o,r,a,s=this;s.wrapper.addClass("k-widget k-header k-tabstrip"),s.tabGroup=s.wrapper.children("ul").addClass("k-tabstrip-items k-reset"),s.tabGroup[0]||(s.tabGroup=e("<ul class='k-tabstrip-items k-reset'/>").appendTo(s.wrapper)),o=s.tabGroup.find("li").addClass("k-item"),o.length&&(r=o.filter("."+O).index(),a=r>=0?r:t,s.tabGroup.contents().filter(function(){return 3==this.nodeType&&!d(this.nodeValue)}).remove()),r>=0&&o.eq(r).addClass(U),s.contentElements=s.wrapper.children("div"),s.contentElements.addClass(R).eq(a).addClass(O).css({display:"block"}),o.length&&(n(o),i(s.tabGroup),s._updateContentElements(!0))},_elementId:function(e,t){var n,i=e.attr("id"),o=this.element.attr("id");return!i||i.indexOf(o+"-")>-1?(n=(o||r.guid())+"-",n+(t+1)):i},_updateContentElements:function(t){var n=this,i=n._contentUrls,o=n.tabGroup.children(".k-item"),a=n.wrapper.children("div"),s=n._elementId.bind(n);a.length&&o.length>a.length?a.each(function(n){var i=s(e(this),n),r=o.filter("[aria-controls="+(this.id||0)+"]")[0];!r&&t&&(r=o[n]),r&&r.setAttribute("aria-controls",i),this.setAttribute("id",i)}):o.each(function(t){var o=a.eq(t),r=s(o,t);this.setAttribute("aria-controls",r),!o.length&&i[t]?e("<div class='"+R+"'/>").appendTo(n.wrapper).attr("id",r):(o.attr("id",r),e(this).children(".k-loading")[0]||i[t]||e("<span class='k-loading k-complete'/>").prependTo(this)),o.attr("role","tabpanel"),o.filter(":not(."+O+")").attr("aria-hidden",!0).attr("aria-expanded",!1),o.filter("."+O).attr("aria-expanded",!0)}),n.contentElements=n.contentAnimators=n.wrapper.children("div"),n.tabsHeight=g(n.tabGroup)+parseInt(n.wrapper.css("border-top-width"),10)+parseInt(n.wrapper.css("border-bottom-width"),10),r.kineticScrollNeeded&&r.mobile.ui.Scroller&&(r.touchScroller(n.contentElements),n.contentElements=n.contentElements.children(".km-scroll-container"))},_wrapper:function(){var e=this;e.wrapper=e.element.is("ul")?e.element.wrapAll("<div />").parent():e.element,e.scrollWrap=e.wrapper.parent(".k-tabstrip-wrapper"),e.scrollWrap[0]||(e.scrollWrap=e.wrapper.wrapAll("<div class='k-tabstrip-wrapper' />").parent())},_tabPosition:function(){var e=this,t=e.options.tabPosition;e.wrapper.addClass("k-floatwrap k-tabstrip-"+t),"bottom"==t&&e.tabGroup.appendTo(e.wrapper),e.resize(!0)},_setContentElementsDimensions:function(){var e,t,n,i,o,r,a=this,s=a.options.tabPosition;"left"!=s&&"right"!=s||(e=a.wrapper.children(".k-content"),t=e.filter(":visible"),n="margin-"+s,i=a.tabGroup,o=f(i),r=Math.ceil(i.height())-parseInt(t.css("padding-top"),10)-parseInt(t.css("padding-bottom"),10)-parseInt(t.css("border-top-width"),10)-parseInt(t.css("border-bottom-width"),10),setTimeout(function(){e.css(n,o).css("min-height",r)}))},_resize:function(){this._setContentElementsDimensions(),this._scrollable()},_sizeScrollWrap:function(e){var t,n;e.is(":visible")&&(t=this.options.tabPosition,n=Math.floor(g(e,!0))+("left"===t||"right"===t?2:this.tabsHeight),this.scrollWrap.css("height",n).css("height"))},_toggleHover:function(t){e(t.currentTarget).toggleClass(W,t.type==z)},_click:function(e){var t,n,i=this,o=e.find("."+C),r=o.attr(w),a=i.options.collapsible,s=e.index(),l=i.contentHolder(s),c=e.parent().children(),d=c.filter("."+V);if(e.closest(".k-widget")[0]==i.wrapper[0]){if(e.is("."+H+(a?"":",."+O)))return d.removeClass(V),i._focused=e,e.addClass(V),i._current(e),i._scrollableModeActive&&i._scrollTabsToItem(e),!0;if(n=o.data(P)||i._contentUrls[s]||r&&("#"==r.charAt(r.length-1)||r.indexOf("#"+i.element[0].id+"-")!=-1),t=!r||n,i.tabGroup.children("[data-animating]").length)return t;if(i.trigger(M,{item:e[0],contentElement:l[0]}))return!0;if(t!==!1)return a&&e.is("."+O)?(i.deactivateTab(e),!0):(i.activateTab(e)&&(t=!0),t)}},_scrollable:function(){var e,t,n,i,a,s,l,c,d=this,u=d.options;d._scrollableAllowed()&&(d.wrapper.addClass("k-tabstrip-scrollable"),e=d.wrapper[0].offsetWidth,t=d.tabGroup[0].scrollWidth,t>e&&!d._scrollableModeActive?(d._nowScrollingTabs=!1,d._isRtl=r.support.isRtl(d.element),a=r.support.mobileOS?"touchstart":"mousedown",s=r.support.mobileOS?"touchend":"mouseup",l=r.support.browser,c=d._isRtl&&!l.msie&&!l.edge,d.wrapper.append(o("prev","k-i-arrow-60-left")+o("next","k-i-arrow-60-right")),n=d._scrollPrevButton=d.wrapper.children(".k-tabstrip-prev"),i=d._scrollNextButton=d.wrapper.children(".k-tabstrip-next"),d.tabGroup.css({marginLeft:f(n)+9,marginRight:f(i)+12}),n.on(a+_,function(){d._nowScrollingTabs=!0,d._scrollTabsByDelta(u.scrollable.distance*(c?1:-1))}),i.on(a+_,function(){d._nowScrollingTabs=!0,d._scrollTabsByDelta(u.scrollable.distance*(c?-1:1))}),n.add(i).on(s+_,function(){d._nowScrollingTabs=!1}),d._scrollableModeActive=!0,d._toggleScrollButtons()):d._scrollableModeActive&&t<=e?(d._scrollableModeActive=!1,d.wrapper.removeClass("k-tabstrip-scrollable"),d._scrollPrevButton.off().remove(),d._scrollNextButton.off().remove(),d.tabGroup.css({marginLeft:"",marginRight:""})):d._scrollableModeActive?d._toggleScrollButtons():d.wrapper.removeClass("k-tabstrip-scrollable"))},_scrollableAllowed:function(){var e=this.options;return e.scrollable&&!e.scrollable.distance&&(e.scrollable={distance:$}),e.scrollable&&!isNaN(e.scrollable.distance)&&("top"==e.tabPosition||"bottom"==e.tabPosition)},_scrollTabsToItem:function(e){var t,n=this,i=n.tabGroup,o=i.scrollLeft(),r=f(e),a=n._isRtl?e.position().left:e.position().left-i.children().first().position().left,s=i[0].offsetWidth,l=Math.ceil(parseFloat(i.css("padding-left")));n._isRtl?a<0?t=o+a-(s-o)-l:a+r>s&&(t=o+a-r+2*l):o+s<a+r?t=a+r-s+2*l:o>a&&(t=a-l),i.finish().animate({scrollLeft:t},"fast","linear",function(){n._toggleScrollButtons()})},_scrollTabsByDelta:function(e){var t=this,n=t.tabGroup,i=n.scrollLeft();n.finish().animate({scrollLeft:i+e},"fast","linear",function(){t._nowScrollingTabs&&!jQuery.fx.off?t._scrollTabsByDelta(e):t._toggleScrollButtons()})},_toggleScrollButtons:function(){var e=this,t=e.tabGroup,n=r.scrollLeft(t);e._scrollPrevButton.toggle(0!==n),e._scrollNextButton.toggle(n<t[0].scrollWidth-t[0].offsetWidth-1)},deactivateTab:function(e){var t=this,n=t.options.animation,i=n.open,o=u({},n.close),a=o&&"effects"in o;e=t.tabGroup.find(e),o=u(a?o:u({reverse:!0},i),{hide:!0}),r.size(i.effects)?(e.kendoAddClass(N,{duration:i.duration}),e.kendoRemoveClass(O,{duration:i.duration})):(e.addClass(N),e.removeClass(O)),e.removeAttr("aria-selected"),t.contentAnimators.filter("."+O).kendoStop(!0,!0).kendoAnimate(o).removeClass(O).attr("aria-hidden",!0)},activateTab:function(e){var t,n,i,o,a,s,l,c,d,h,p,f,m,v,_,b;if(!this.tabGroup.children("[data-animating]").length)return e=this.tabGroup.find(e),t=this,n=t.options.animation,i=n.open,o=u({},n.close),a=o&&"effects"in o,s=e.parent().children(),l=s.filter("."+O),c=s.index(e),d=i&&"duration"in i&&"effects"in i,o=u(a?o:u({reverse:!0},i),{hide:!0}),r.size(i.effects)?(l.kendoRemoveClass(O,{duration:o.duration}),e.kendoRemoveClass(W,{duration:o.duration})):(l.removeClass(O),e.removeClass(W)),h=t.contentAnimators,t.inRequest&&(t.xhr.abort(),t.inRequest=!1),0===h.length?(t.tabGroup.find("."+U).removeClass(U),e.addClass(U).css("z-index"),e.addClass(O),t._current(e),t.trigger("change"),t._scrollableModeActive&&t._scrollTabsToItem(e),!1):(p=h.filter("."+O),f=t.contentHolder(c),m=f.closest(".k-content"),t.tabsHeight=g(t.tabGroup)+parseInt(t.wrapper.css("border-top-width"),10)+parseInt(t.wrapper.css("border-bottom-width"),10),t._sizeScrollWrap(p),0===f.length?(p.removeClass(O).attr("aria-hidden",!0).kendoStop(!0,!0).kendoAnimate(o),!1):(e.attr("data-animating",!0),v=(e.children("."+C).data(P)||t._contentUrls[c]||!1)&&f.is(A),_=function(){l.removeAttr("aria-selected"),e.attr("aria-selected",!0),t._current(e),t._sizeScrollWrap(m),m.addClass(O).removeAttr("aria-hidden").kendoStop(!0,!0).attr("aria-expanded",!0).kendoAnimate(u({init:function(){t.trigger(x,{item:e[0],contentElement:f[0]}),r.resize(f)}},i,{complete:function(){e.removeAttr("data-animating"),t.trigger(F,{item:e[0],contentElement:f[0]}),r.resize(f),t.scrollWrap.css("height","").css("height"),d&&(r.support.browser.msie||r.support.browser.edge)&&f.finish().animate({opacity:.9},"fast","linear",function(){f.finish().animate({opacity:1},"fast","linear")})}}))},b=function(){v?(e.removeAttr("data-animating"),t.ajaxRequest(e,f,function(){e.attr("data-animating",!0),_(),t.trigger("change")})):(_(),t.trigger("change")),t._scrollableModeActive&&t._scrollTabsToItem(e)},p.removeClass(O),t.tabGroup.find("."+U).removeClass(U),e.addClass(U).css("z-index"),r.size(i.effects)?(l.kendoAddClass(N,{duration:i.duration}),e.kendoAddClass(O,{duration:i.duration})):(l.addClass(N),e.addClass(O)),p.attr("aria-hidden",!0),p.attr("aria-expanded",!1),p.length?p.kendoStop(!0,!0).kendoAnimate(u({complete:b},o)):b(),!0))},contentElement:function(n){var i,o,a,s;if(isNaN(n-0))return t;if(i=this.contentElements&&this.contentElements[0]&&!r.kineticScrollNeeded?this.contentElements:this.contentAnimators,o=e(this.tabGroup.children()[n]).attr("aria-controls"),i)for(a=0,s=i.length;a<s;a++)if(i.eq(a).closest(".k-content")[0].id==o)return i[a];return t},contentHolder:function(t){var n=e(this.contentElement(t)),i=n.children(".km-scroll-container");return r.support.touch&&i[0]?i:n},ajaxRequest:function(t,n,i,o){var a,s,l,c,d,u,p,f,g,m;t=this.tabGroup.find(t),a=this,s=e.ajaxSettings.xhr,l=t.find("."+C),c={},d=t.width()/2,u=!1,p=t.find(".k-loading").removeClass("k-complete"),p[0]||(p=e("<span class='k-loading'/>").prependTo(t)),f=2*d-p.width(),g=function(){p.animate({marginLeft:(parseInt(p.css("marginLeft"),10)||0)<d?f:0},500,g)},r.support.browser.msie&&r.support.browser.version<10&&setTimeout(g,40),o=o||l.data(P)||a._contentUrls[t.index()]||l.attr(w),a.inRequest=!0,m={type:"GET",cache:!1,url:o,dataType:"html",data:c,xhr:function(){var t=this,n=s(),i=t.progressUpload?"progressUpload":!!t.progress&&"progress";return n&&e.each([n,n.upload],function(){this.addEventListener&&this.addEventListener("progress",function(e){i&&t[i](e)},!1)}),t.noProgress=!(window.XMLHttpRequest&&"upload"in new XMLHttpRequest),n},progress:function(e){if(e.lengthComputable){var t=parseInt(e.loaded/e.total*100,10)+"%";p.stop(!0).addClass("k-progress").css({width:t,marginLeft:0})}},error:function(e,t){a.trigger("error",{xhr:e,status:t})&&this.complete()},stopProgress:function(){clearInterval(u),p.stop(!0).addClass("k-progress")[0].style.cssText=""},complete:function(e){a.inRequest=!1,this.noProgress?setTimeout(this.stopProgress,500):this.stopProgress(),"abort"==e.statusText&&p.remove()},success:function(e){var s,l,c;p.addClass("k-complete");try{s=this,l=10,s.noProgress&&(p.width(l+"%"),u=setInterval(function(){s.progress({lengthComputable:!0,loaded:Math.min(l,100),total:100}),l+=10},40)),a.angular("cleanup",function(){return{elements:n.get()}}),r.destroy(n),n.html(e)}catch(d){c=window.console,c&&c.error&&c.error(d.name+": "+d.message+" in "+o),this.error(this.xhr,"error")}i&&i.call(a,n),a.angular("compile",function(){return{elements:n.get()}}),a.trigger(L,{item:t[0],contentElement:n[0]})}},"object"==typeof o&&(m=e.extend(!0,{},m,o),h(m.url)&&(m.url=m.url())),a.xhr=e.ajax(m)}});u(Q,{renderItem:function(e){e=u({tabStrip:{},group:{}},e);var t=Y.empty,n=e.item;return Y.item(u(e,{image:n.imageUrl?Y.image:t,sprite:n.spriteCssClass?Y.sprite:t,itemWrapper:Y.itemWrapper},K))},renderContent:function(e){return Y.content(u(e,K))}}),r.ui.plugin(Q)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("editor/table-wizard/table-wizard-dialog.min",["editor/table-wizard/table-wizard-command.min","kendo.tabstrip.min"],e)}(function(){!function(e,t){var n=window.kendo,i={format:"0",min:0},o=["px","em"],r=["solid","dotted","dashed","double","groove","ridge","inset","outset","initial","inherit","none","hidden"],a={dataSource:[{className:"k-icon k-i-table-align-middle-left",value:"left"},{className:"k-icon k-i-table-align-middle-center",value:"center"},{className:"k-icon k-i-table-align-middle-right",value:"right"},{className:"k-icon k-i-align-remove",value:""}],dataTextField:"className",dataValueField:"value",template:"<span class='#: className #' title='#: tooltip #'></span>",valueTemplate:"<span class='k-align-group #: className #' title='#: tooltip #'></span>"},s={dataSource:[{className:"k-icon k-i-table-align-top-left",value:"left top"},{className:"k-icon k-i-table-align-top-center",value:"center top"},{className:"k-icon k-i-table-align-top-right",value:"right top"},{className:"k-icon k-i-table-align-middle-left",value:"left middle"},{className:"k-icon k-i-table-align-middle-center",value:"center middle"},{className:"k-icon k-i-table-align-middle-right",value:"right middle"},{className:"k-icon k-i-table-align-bottom-left",value:"left bottom"},{className:"k-icon k-i-table-align-bottom-center",value:"center bottom"},{className:"k-icon k-i-table-align-bottom-right",value:"right bottom"},{className:"k-icon k-i-align-remove",value:""}],dataTextField:"className",dataValueField:"value",template:"<span class='#: className #' title='#: tooltip #'></span>",valueTemplate:"<span class='k-align-group #: className #' title='#: tooltip #'></span>"},l={dataSource:[{className:"k-icon k-i-table-align-top-left",value:"left top"},{className:"k-icon k-i-table-align-top-center",value:"center top"},{className:"k-icon k-i-table-align-top-right",value:"right top"},{className:"k-icon k-i-table-align-bottom-left",value:"left bottom"},{className:"k-icon k-i-table-align-bottom-center",value:"center bottom"},{className:"k-icon k-i-table-align-bottom-right",value:"right bottom"},{className:"k-icon k-i-align-remove",value:""}],dataTextField:"className",dataValueField:"value",template:"<span class='#: className #' title='#: tooltip #'></span>",valueTemplate:"<span class='k-align-group #: className #' title='#: tooltip #'></span>"},c='<div class="k-editor-dialog k-editor-table-wizard-dialog k-action-window k-popup-edit-form"><div class="k-edit-form-container"><div id="k-table-wizard-tabs" class="k-root-tabs"><ul><li class="k-state-active">#= messages.tableTab #</li><li>#= messages.cellTab #</li><li>#= messages.accessibilityTab #</li></ul><div id="k-table-properties"><div class="k-edit-label"><label for="k-editor-table-width">#= messages.width #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-table-width" /><input id="k-editor-table-width-type" aria-label="#= messages.units #" /></div><div class="k-edit-label"><label for="k-editor-table-height">#= messages.height #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-table-height" /><input id="k-editor-table-height-type" aria-label="#= messages.units #" /></div><div class="k-edit-label"><label for="k-editor-table-columns">#= messages.columns #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-table-columns" /></div><div class="k-edit-label"><label for="k-editor-table-rows">#= messages.rows #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-table-rows" /></div><div class="k-edit-label"><label for="k-editor-table-cell-spacing">#= messages.cellSpacing #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-table-cell-spacing" /></div><div class="k-edit-label"><label for="k-editor-table-cell-padding">#= messages.cellPadding #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-table-cell-padding" /></div><div class="k-edit-label"><label for="k-editor-table-alignment">#= messages.alignment #</label></div><div class="k-edit-field"><input id="k-editor-table-alignment" class="k-align" /></div><div class="k-edit-label"><label for="k-editor-table-bg">#= messages.background #</label></div><div class="k-edit-field"><input id="k-editor-table-bg" /></div><div class="k-edit-label"><label for="k-editor-css-class">#= messages.cssClass #</label></div><div class="k-edit-field"><input id="k-editor-css-class" class="k-textbox" type="text" /></div><div class="k-edit-label"><label for="k-editor-id">#= messages.id #</label></div><div class="k-edit-field"><input id="k-editor-id" class="k-textbox" type="text" /></div><div class="k-edit-label"><label for="k-editor-border-width">#= messages.border #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-border-width" /><input id="k-editor-border-color" /></div><div class="k-edit-label"><label for="k-editor-border-style">#= messages.borderStyle #</label></div><div class="k-edit-field"><input id="k-editor-border-style" /></div><div class="k-edit-label"> </div><div class="k-edit-field"><input id="k-editor-collapse-borders" type="checkbox" class="k-checkbox" /><label for="k-editor-collapse-borders" class="k-checkbox-label">#= messages.collapseBorders #</label></div></div><div id="k-cell-properties"><div class="k-edit-field"><input id="k-editor-selectAllCells" type="checkbox" class="k-checkbox" /><label for="k-editor-selectAllCells" class="k-checkbox-label">#= messages.selectAllCells #</label></div><div class="k-edit-label"><label for="k-editor-cell-width">#= messages.width #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-cell-width" /><input id="k-editor-cell-width-type" aria-label="#= messages.units #" /></div><div class="k-edit-label"><label for="k-editor-cell-height">#= messages.height #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-cell-height" /><input id="k-editor-cell-height-type" aria-label="#= messages.units #" /></div><div class="k-edit-label"><label for="k-editor-table-cell-margin">#= messages.cellMargin #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-table-cell-margin" /></div><div class="k-edit-label"><label for="k-editor-table-cells-padding">#= messages.cellPadding #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-table-cells-padding" /></div><div class="k-edit-label"><label for="k-editor-cell-alignment">#= messages.alignment #</label></div><div class="k-edit-field"><input id="k-editor-cell-alignment" class="k-align" /></div><div class="k-edit-label"><label for="k-editor-cell-bg">#= messages.background #</label></div><div class="k-edit-field"><input id="k-editor-cell-bg" /></div><div class="k-edit-label"><label for="k-editor-cell-css-class">#= messages.cssClass #</label></div><div class="k-edit-field"><input id="k-editor-cell-css-class" class="k-textbox" type="text" /></div><div class="k-edit-label"><label for="k-editor-cell-id">#= messages.id #</label></div><div class="k-edit-field"><input id="k-editor-cell-id" class="k-textbox" type="text" /></div><div class="k-edit-label"><label for="k-editor-cell-border-width">#= messages.border #</label></div><div class="k-edit-field"><input type="numeric" id="k-editor-cell-border-width" /><input id="k-editor-cell-border-color" /></div><div class="k-edit-label"><label for="k-editor-cell-border-style">#= messages.borderStyle #</label></div><div class="k-edit-field"><input id="k-editor-cell-border-style" /></div><div class="k-edit-label"> </div><div class="k-edit-field"><input id="k-editor-wrap-text" type="checkbox" class="k-checkbox" /><label for="k-editor-wrap-text" class="k-checkbox-label">#= messages.wrapText #</label></div></div><div id="k-accessibility-properties"><div class="k-edit-label"><label for="k-editor-table-caption">#= messages.caption #</label></div><div class="k-edit-field"><input id="k-editor-table-caption" class="k-textbox" type="text" /></div><div class="k-edit-label"><label for="k-editor-accessibility-alignment">#= messages.alignment #</label></div><div class="k-edit-field"><input id="k-editor-accessibility-alignment" class="k-align" /></div><div class="k-edit-label"><label for="k-editor-accessibility-summary">#= messages.summary #</label></div><div class="k-edit-field"><textarea id="k-editor-accessibility-summary" class="k-textbox"></textarea></div><div class="k-edit-label"> </div><div class="k-edit-field"><input id="k-editor-cells-headers" type="checkbox" class="k-checkbox" /><label for="k-editor-cells-headers" class="k-checkbox-label">#= messages.associateCellsWithHeaders #</label></div></div></div><div class="k-edit-buttons k-state-default"><button class="k-button k-primary k-dialog-ok">#= messages.dialogOk #</button><button class="k-button k-dialog-close">#= messages.dialogCancel #</button></div></div></div>',d=n.Class.extend({init:function(e){this.options=e},open:function(){function t(e){e.preventDefault(),l.destroy(),r.destroy()}function i(e){l.collectDialogValues(u),t(e),l.change&&l.change(),c.closeCallback(u)}function o(e){t(e),c.closeCallback()}var r,a,s,l=this,c=l.options,d=c.dialogOptions,u=c.table,h=c.messages,p=n.support.browser.msie;d.close=o,d.title=h.tableWizard,d.visible=c.visible,r=e(l._dialogTemplate(h)).appendTo(document.body).kendoWindow(d).closest(".k-window").toggleClass("k-rtl",c.isRtl).end().find(".k-dialog-ok").click(i).end().find(".k-dialog-close").click(o).end().data("kendoWindow"),a=r.element,l._initTabStripComponent(a),l._initTableViewComponents(a,u),l._initCellViewComponents(a,u),l._initAccessibilityViewComponents(a,u),r.center(),r.open(),p&&(s=a.closest(".k-window").height(),a.css("max-height",s))},_initTabStripComponent:function(e){var t=this.components={};t.tabStrip=e.find("#k-table-wizard-tabs").kendoTabStrip({animation:!1}).data("kendoTabStrip")},collectDialogValues:function(){var e=this,t=e.options.table;e._collectTableViewValues(t),e._collectCellViewValues(t),e._collectAccessibilityViewValues(t)},_collectTableViewValues:function(e){var t=this.components.tableView,n=e.tableProperties;n.width=t.width.value(),n.widthUnit=t.widthUnit.value(),n.height=t.height.value(),n.columns=t.columns.value(),n.rows=t.rows.value(),n.heightUnit=t.heightUnit.value(),n.cellSpacing=t.cellSpacing.value(),n.cellPadding=t.cellPadding.value(),n.alignment=t.alignment.value(),n.bgColor=t.bgColor.value(),n.className=t.className.value,n.id=t.id.value,n.borderWidth=t.borderWidth.value(),n.borderColor=t.borderColor.value(),n.borderStyle=t.borderStyle.value(),n.collapseBorders=t.collapseBorders.checked},_collectCellViewValues:function(e){var t=e.cellProperties={},n=this.components.cellView;t.selectAllCells=n.selectAllCells.checked,t.width=n.width.value(),t.widthUnit=n.widthUnit.value(),t.height=n.height.value(),t.heightUnit=n.heightUnit.value(),t.cellMargin=n.cellMargin.value(), +t.cellPadding=n.cellPadding.value(),t.alignment=n.alignment.value(),t.bgColor=n.bgColor.value(),t.className=n.className.value,t.id=n.id.value,t.borderWidth=n.borderWidth.value(),t.borderColor=n.borderColor.value(),t.borderStyle=n.borderStyle.value(),t.wrapText=n.wrapText.checked,t.width||(t.selectAllCells=!0,t.width=100/e.tableProperties.columns,t.widthUnit="%")},_collectAccessibilityViewValues:function(e){var t=e.tableProperties,n=this.components.accessibilityView;t.captionContent=n.captionContent.value,t.captionAlignment=n.captionAlignment.value(),t.summary=n.summary.value,t.cellsWithHeaders=n.cellsWithHeaders.checked},_addUnit:function(t,n){n&&e.inArray(n,t)==-1&&t.push(n)},_initTableViewComponents:function(e,t){var n=this.components,i=n.tableView={},a=t.tableProperties=t.tableProperties||{};a.borderStyle=a.borderStyle||"",this._addUnit(o,a.widthUnit),this._addUnit(o,a.heightUnit),this._initNumericTextbox(e.find("#k-editor-table-width"),"width",a,i),this._initNumericTextbox(e.find("#k-editor-table-height"),"height",a,i),this._initNumericTextbox(e.find("#k-editor-table-columns"),"columns",a,i,{min:1,value:4}),this._initNumericTextbox(e.find("#k-editor-table-rows"),"rows",a,i,{min:1,value:4}),this._initDropDownList(e.find("#k-editor-table-width-type"),"widthUnit",a,i,o),this._initDropDownList(e.find("#k-editor-table-height-type"),"heightUnit",a,i,o),this._initNumericTextbox(e.find("#k-editor-table-cell-spacing"),"cellSpacing",a,i),this._initNumericTextbox(e.find("#k-editor-table-cell-padding"),"cellPadding",a,i),this._initTableAlignmentDropDown(e.find("#k-editor-table-alignment"),a),this._initColorPicker(e.find("#k-editor-table-bg"),"bgColor",a,i),this._initInput(e.find("#k-editor-css-class"),"className",a,i),this._initInput(e.find("#k-editor-id"),"id",a,i),this._initNumericTextbox(e.find("#k-editor-border-width"),"borderWidth",a,i),this._initColorPicker(e.find("#k-editor-border-color"),"borderColor",a,i),this._initDropDownList(e.find("#k-editor-border-style"),"borderStyle",a,i,r),this._initCheckbox(e.find("#k-editor-collapse-borders"),"collapseBorders",a,i)},_initCellViewComponents:function(e,t){var n,i=this.components,a=i.cellView={};t.selectedCells=t.selectedCells=t.selectedCells||[],n=t.selectedCells[0]||{borderStyle:"",wrapText:!0},this._addUnit(o,n.widthUnit),this._addUnit(o,n.heightUnit),this._initCheckbox(e.find("#k-editor-selectAllCells"),"selectAllCells",t.tableProperties,a),this._initNumericTextbox(e.find("#k-editor-cell-width"),"width",n,a),this._initNumericTextbox(e.find("#k-editor-cell-height"),"height",n,a),this._initDropDownList(e.find("#k-editor-cell-width-type"),"widthUnit",n,a,o),this._initDropDownList(e.find("#k-editor-cell-height-type"),"heightUnit",n,a,o),this._initNumericTextbox(e.find("#k-editor-table-cell-margin"),"cellMargin",n,a),this._initNumericTextbox(e.find("#k-editor-table-cells-padding"),"cellPadding",n,a),this._initCellAlignmentDropDown(e.find("#k-editor-cell-alignment"),n),this._initColorPicker(e.find("#k-editor-cell-bg"),"bgColor",n,a),this._initInput(e.find("#k-editor-cell-css-class"),"className",n,a),this._initInput(e.find("#k-editor-cell-id"),"id",n,a),this._initNumericTextbox(e.find("#k-editor-cell-border-width"),"borderWidth",n,a),this._initColorPicker(e.find("#k-editor-cell-border-color"),"borderColor",n,a),this._initDropDownList(e.find("#k-editor-cell-border-style"),"borderStyle",n,a,r),this._initCheckbox(e.find("#k-editor-wrap-text"),"wrapText",n,a)},_initAccessibilityViewComponents:function(e,t){var n=this.components,i=n.accessibilityView={},o=t.tableProperties;this._initInput(e.find("#k-editor-table-caption"),"captionContent",o,i),this._initAccessibilityAlignmentDropDown(e.find("#k-editor-accessibility-alignment"),o),this._initInput(e.find("#k-editor-accessibility-summary"),"summary",o,i),this._initCheckbox(e.find("#k-editor-cells-headers"),"cellsWithHeaders",o,i)},_initNumericTextbox:function(t,n,o,r,a){var s=r[n]=t.kendoNumericTextBox(a?e.extend({},i,a):i).data("kendoNumericTextBox");n in o&&s.value(parseInt(o[n],10))},_initDropDownList:function(e,t,n,i,o){var r=i[t]=e.kendoDropDownList({dataSource:o}).data("kendoDropDownList");this._setComponentValue(r,n,t)},_initTableAlignmentDropDown:function(e,t){var n=this.options.messages,i=this.components.tableView,o=a.dataSource;o[0].tooltip=n.alignLeft,o[1].tooltip=n.alignCenter,o[2].tooltip=n.alignRight,o[3].tooltip=n.alignRemove,this._initAlignmentDropDown(e,a,"alignment",t,i)},_initCellAlignmentDropDown:function(e,t){var n=this.options.messages,i=this.components.cellView,o=s.dataSource;o[0].tooltip=n.alignLeftTop,o[1].tooltip=n.alignCenterTop,o[2].tooltip=n.alignRightTop,o[3].tooltip=n.alignLeftMiddle,o[4].tooltip=n.alignCenterMiddle,o[5].tooltip=n.alignRightMiddle,o[6].tooltip=n.alignLeftBottom,o[7].tooltip=n.alignCenterBottom,o[8].tooltip=n.alignRightBottom,o[9].tooltip=n.alignRemove,this._initAlignmentDropDown(e,s,"alignment",t,i)},_initAccessibilityAlignmentDropDown:function(e,t){var n=this.options.messages,i=this.components.accessibilityView,o=l.dataSource;o[0].tooltip=n.alignLeftTop,o[1].tooltip=n.alignCenterTop,o[2].tooltip=n.alignRightTop,o[3].tooltip=n.alignLeftBottom,o[4].tooltip=n.alignCenterBottom,o[5].tooltip=n.alignRightBottom,o[6].tooltip=n.alignRemove,this._initAlignmentDropDown(e,l,"captionAlignment",t,i)},_initAlignmentDropDown:function(e,t,n,i,o){var r=o[n]=e.kendoDropDownList(t).data("kendoDropDownList");r.list.addClass("k-align").css("width","110px"),this._setComponentValue(r,i,n)},_setComponentValue:function(e,t,n){n in t&&e.value(t[n])},_initColorPicker:function(e,t,n,i){var o=i[t]=e.kendoColorPicker({buttons:!1,clearButton:!0}).data("kendoColorPicker");n[t]&&o.value(n[t])},_initInput:function(e,t,n,i){var o=i[t]=e.get(0);t in n&&(o.value=n[t])},_initCheckbox:function(e,t,n,i){var o=i[t]=e.get(0);t in n&&(o.checked=n[t])},destroy:function(){this._destroyComponents(this.components.tableView),this._destroyComponents(this.components.cellView),this._destroyComponents(this.components.accessibilityView),this._destroyComponents(this.components),delete this.components},_destroyComponents:function(e){for(var t in e)e[t].destroy&&e[t].destroy(),delete e[t]},_dialogTemplate:function(e){return n.template(c)({messages:e})}});n.ui.editor.TableWizardDialog=d}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.editor.min",["kendo.combobox.min","kendo.dropdownlist.min","kendo.resizable.min","kendo.window.min","kendo.colorpicker.min","kendo.imagebrowser.min","kendo.numerictextbox.min","util/undoredostack.min","editor/main.min","editor/dom.min","editor/serializer.min","editor/range.min","editor/command.min","editor/components.min","editor/toolbar.min","editor/immutables.min","editor/plugins/viewhtml.min","editor/plugins/link.min","editor/plugins/lists.min","editor/plugins/formatting.min","editor/plugins/image.min","editor/plugins/import.min","editor/plugins/insert.min","editor/plugins/export.min","editor/plugins/indent.min","editor/plugins/linebreak.min","editor/plugins/format.min","editor/plugins/inlineformat.min","editor/plugins/formatblock.min","editor/plugins/file.min","editor/plugins/tables.min","editor/plugins/clipboard.min","editor/plugins/keyboard.min","editor/plugins/exportpdf.min","editor/plugins/print.min","editor/resizing/column-resizing.min","editor/resizing/row-resizing.min","editor/resizing/table-resizing.min","editor/resizing/table-resize-handle.min","editor/table-wizard/table-wizard-command.min","editor/table-wizard/table-wizard-dialog.min"],e)}(function(){return window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.maskedtextbox.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(e){return e+h}function i(e,t){for(var n=0;n<t.length&&e[n]===t[n];)n++;return n}function o(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}var r=window,a=r.Math.min,s=r.kendo,l=s.caret,c=s.keys,d=s.ui,u=d.Widget,h=".kendoMaskedTextBox",p=e.proxy,f=window.setTimeout,g="k-state-disabled",m="k-state-invalid",v="disabled",_="readonly",b="change",w="mouseup",k="drop",y="keydown",x="paste",C="input",S=n(s.support.propertyChangeEvent?"propertychange":C),T=u.extend({init:function(t,n){var i,o,r=this;u.fn.init.call(r,t,n),r._rules=e.extend({},r.rules,r.options.rules),t=r.element,i=t[0],r._wrapper(),r._tokenize(),r._form(),r.element.addClass("k-textbox").attr("autocomplete","off").on("focus"+h,function(){var e=i.value;e?r._togglePrompt(!0):i.value=r._old=r._emptyMask,r._oldValue=e,r._timeoutId=f(function(){l(t,0,e?r._maskLength:0)})}).on("focusout"+h,function(){var e=t.val();clearTimeout(r._timeoutId),i.value=r._old="",e!==r._emptyMask&&(i.value=r._old=e),r._change(),r._togglePrompt()}),o=t.is("[disabled]")||e(r.element).parents("fieldset").is(":disabled"),o?r.enable(!1):r.readonly(t.is("[readonly]")),r.value(r.options.value||t.val()),r._validationIcon=e("<span class='k-icon k-i-warning'></span>").insertAfter(t),s.notify(r)},options:{name:"MaskedTextBox",clearPromptChar:!1,unmaskOnPost:!1,promptChar:"_",culture:"",rules:{},value:"",mask:""},events:[b],rules:{0:/\d/,9:/\d|\s/,"#":/\d|\s|\+|\-/,L:/[a-zA-Z]/,"?":/[a-zA-Z]|\s/,"&":/\S/,C:/./,A:/[a-zA-Z0-9]/,a:/[a-zA-Z0-9]|\s/},setOptions:function(t){var n=this;u.fn.setOptions.call(n,t),n._rules=e.extend({},n.rules,n.options.rules),n._tokenize(),this._unbindInput(),this._bindInput(),n.value(n.element.val())},destroy:function(){var e=this;e.element.off(h),e._formElement&&(e._formElement.off("reset",e._resetHandler),e._formElement.off("submit",e._submitHandler)),u.fn.destroy.call(e)},raw:function(){var e=this._unmask(this.element.val(),0);return e.replace(RegExp(o(this.options.promptChar),"g"),"")},value:function(e){var n=this.element,i=this._emptyMask;return e===t?this.element.val():(null===e&&(e=""),i?(e=this._unmask(e+""),n.val(e?i:""),this._mask(0,this._maskLength,e),this._unmaskedValue=null,e=n.val(),this._oldValue=e,s._activeElement()!==n&&(e===i?n.val(""):this._togglePrompt()),t):(this._oldValue=e,n.val(e),t))},_togglePrompt:function(e){var t=this.element[0],n=t.value;this.options.clearPromptChar&&(n=e?this._oldValue:n.replace(RegExp(o(this.options.promptChar),"g")," "),t.value=this._old=n)},readonly:function(e){this._editable({readonly:e===t||e,disable:!1})},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t||e)})},_bindInput:function(){var e,t,i=this;i._maskLength&&(i.options.$angular&&i.element.off(C),i.element.on(n(y),p(i._keydown,i)).on(n(k),p(i._drop,i)).on(n(b),p(i._trackChange,i)).on(S,p(i._inputHandler,i)),s.support.browser.msie&&(e=s.support.browser.version,e>8&&e<11&&(t=[n(w),n(k),n(y),n(x)].join(" "),i.element.on(t,p(i._legacyIEInputHandler,i)))))},_unbindInput:function(){var e=[S,n(y),n(w),n(k),n(x)].join(" ");this.element.off(e)},_editable:function(e){var t=this,n=t.element,i=t.wrapper,o=e.disable,r=e.readonly;t._unbindInput(),r||o?(n.attr(v,o).attr(_,r),i.toggleClass(g,o)):(n.removeAttr(v).removeAttr(_),i.removeClass(g),t._bindInput())},_change:function(){var e=this,t=e.value();t!==e._oldValue?(e._oldValue=t,e.trigger(b),e.element.trigger(b)):""===t&&e.__changing&&e.element.trigger(b)},inputChange:function(e){var t,n,o,r,c,d=this,u=d._old,h=d.element[0],p=h.value,f=l(h),g=f[1],m=p.length-u.length,v=s.support.mobileOS;d.__dropping&&m<0||(m===-1&&v.android&&"chrome"===v.browser&&(e=!0),t=a(g,i(p,u)),n=p.substring(t,g),h.value=p.substring(0,t)+d._emptyMask.substring(t),o=d._mask(t,g,n),r=d._trimStartPromptChars(p.substring(g),a(m,o-t)),c=d._unmask(r,u.length-r.length),d._mask(o,o,c),e&&(o=d._findCaretPosBackwards(t)),l(h,o),d.__dropping=!1)},_trimStartPromptChars:function(e,t){for(var n=this.options.promptChar;t-- >0&&0===e.indexOf(n);)e=e.substring(1);return e},_findCaretPosBackwards:function(e){var t=this._find(e,!0);return t<e&&(t+=1),t},_inputHandler:function(){s._activeElement()===this.element[0]&&this.inputChange(this.__backward)},_legacyIEInputHandler:function(e){var t=this,n=t.element[0],i=n.value,o=e.type;t.__pasting="paste"===o,f(function(){"mouseup"===o&&t.__pasting||n.value&&n.value!==i&&t.inputChange(t.__backward)})},_trackChange:function(){var e=this;e.__changing=!0,f(function(){e.__changing=!1})},_form:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){f(function(){t.value(n[0].value)})},t._submitHandler=function(){t.element[0].value=t._old=t.raw()},t.options.unmaskOnPost&&o.on("submit",t._submitHandler),t._formElement=o.on("reset",t._resetHandler))},_keydown:function(e){var t=e.keyCode;this.__backward=t===c.BACKSPACE,t===c.ENTER&&this._change()},_drop:function(){this.__dropping=!0},_find:function(e,t){var n=this.element.val()||this._emptyMask,i=1;for(t===!0&&(i=-1);e>-1||e<=this._maskLength;){if(n.charAt(e)!==this.tokens[e])return e;e+=i}return-1},_mask:function(e,n,i,o){var r,a,c,d,u=this.element[0],h=u.value||this._emptyMask,p=this.options.promptChar,f=0;for(e=this._find(e,o),e>n&&(n=e),a=this._unmask(h.substring(n),n),i=this._unmask(i,e),r=i.length,i&&(a=a.replace(RegExp("^_{0,"+r+"}"),"")),i+=a,h=h.split(""),c=i.charAt(f);e<this._maskLength;)h[e]=c||p,c=i.charAt(++f),d===t&&f>r&&(d=e),e=this._find(e+1);return u.value=this._old=h.join(""),s._activeElement()===u&&(d===t&&(d=this._maskLength),l(u,d)),d},_unmask:function(t,n){var i,o,r,a,s,l,c,d;if(!t)return"";if(this._unmaskedValue===t)return this._unmaskedValue;for(t=(t+"").split(""),r=0,a=n||0,s=this.options.promptChar,l=t.length,c=this.tokens.length,d="";a<c&&(i=t[r],o=this.tokens[a],i===o||i===s?(d+=i===s?s:"",r+=1,a+=1):"string"!=typeof o?(o&&o.test&&o.test(i)||e.isFunction(o)&&o(i)?(d+=i,a+=1):1===l&&this._blinkInvalidState(),r+=1):a+=1,!(r>=l)););return this._unmaskedValue=d,d},_wrapper:function(){var e=this,t=e.element,n=t[0],i=t.wrap("<span class='k-widget k-maskedtextbox'></span>").parent();i[0].style.cssText=n.style.cssText,n.style.width="100%",e.wrapper=i.addClass(n.className)},_blinkInvalidState:function(){var e=this;e.wrapper.addClass(m),clearTimeout(e._invalidStateTimeout),e._invalidStateTimeout=f(p(e._removeInvalidState,e),100)},_removeInvalidState:function(){var e=this;e.wrapper.removeClass(m),e._invalidStateTimeout=null},_tokenize:function(){for(var e,t,n,i,o=[],r=0,a=this.options.mask||"",l=a.split(""),c=l.length,d=0,u="",h=this.options.promptChar,p=s.getCulture(this.options.culture).numberFormat,f=this._rules;d<c;d++)if(e=l[d],t=f[e])o[r]=t,u+=h,r+=1;else for("."===e||","===e?e=p[e]:"$"===e?e=p.currency.symbol:"\\"===e&&(d+=1,e=l[d]),e=e.split(""),n=0,i=e.length;n<i;n++)o[r]=e[n],u+=e[n],r+=1;this.tokens=o,this._emptyMask=u,this._maskLength=u.length}});d.plugin(T)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.toolbar.min",["kendo.core.min","kendo.userevents.min","kendo.popup.min"],e)}(function(){return function(e,t){function n(e){e.target.is(".k-toggle-button")||e.target.toggleClass(V,"press"==e.type)}function i(t){return t=e(t),t.hasClass("km-actionsheet")?t.closest(".km-popup-wrapper"):t.addClass("km-widget km-actionsheet").wrap('<div class="km-actionsheet-wrapper km-actionsheet-tablet km-widget km-popup"></div>').parent().wrap('<div class="km-popup-wrapper k-popup"></div>').parent()}function o(t){e(t.target).closest("a.k-button").length&&t.preventDefault()}function r(t,n){var i="next"===n?e.fn.next:e.fn.prev,o="next"===n?e.fn.first:e.fn.last,a=i.call(t);return!a.length&&t.is("."+Z)?t:a.is(":kendoFocusable")||!a.length?a:a.find(":kendoFocusable").length?o.call(a.find(":kendoFocusable")):r(a,n)}var a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x=window.kendo,C=x.Class,S=x.ui.Widget,T=e.proxy,D=x.isFunction,A=x.keys,E=x._outerWidth,I="k-toolbar",M="k-button",F="k-overflow-button",R="k-toggle-button",P="k-button-group",z="k-split-button",B="k-separator",L="k-spacer",H="spacer",N="k-popup",O="k-toolbar-resizable",V="k-state-active",W="k-state-disabled",U="k-state-hidden",q="k-group-start",j="k-group-end",G="k-primary",$="k-icon",Y="k-i-",K="k-button-icon",Q="k-button-icontext",X="k-list-container k-split-container",J="k-split-button-arrow",Z="k-overflow-anchor",ee="k-overflow-container",te="k-toolbar-first-visible",ne="k-toolbar-last-visible",ie="click",oe="toggle",re="open",ae="close",se="overflowOpen",le="overflowClose",ce="never",de="auto",ue="always",he="k-overflow-hidden",pe="_optionlist",fe=x.attr("uid");x.toolbar={},a={overflowAnchor:'<div tabindex="0" class="k-overflow-anchor k-button"></div>',overflowContainer:'<ul class="k-overflow-container k-list-container"></ul>'},x.toolbar.registerComponent=function(e,t,n){a[e]={toolbar:t,overflow:n}},s=x.Class.extend({addOverflowAttr:function(){this.element.attr(x.attr("overflow"),this.options.overflow||de)},addUidAttr:function(){this.element.attr(fe,this.options.uid)},addIdAttr:function(){this.options.id&&this.element.attr("id",this.options.id)},addOverflowIdAttr:function(){this.options.id&&this.element.attr("id",this.options.id+"_overflow")},attributes:function(){this.options.attributes&&this.element.attr(this.options.attributes)},show:function(){this.element.removeClass(U).show(),this.options.hidden=!1},hide:function(){this.element.addClass(U).hide(),this.overflow&&this.overflowHidden&&this.overflowHidden(),this.options.hidden=!0},remove:function(){this.element.remove()},enable:function(e){e===t&&(e=!0),this.element.toggleClass(W,!e),this.options.enable=e},twin:function(){var n=this.element.attr(fe);return this.overflow&&this.options.splitContainerId?e("#"+this.options.splitContainerId).find("["+fe+"='"+n+"']").data(this.options.type):this.overflow?this.toolbar.element.find("["+fe+"='"+n+"']").data(this.options.type):this.toolbar.options.resizable?this.toolbar.popup.element.find("["+fe+"='"+n+"']").data(this.options.type):t}}),x.toolbar.Item=s,l=s.extend({init:function(n,i){var o=e(n.useButtonTag?'<button tabindex="0"></button>':'<a href tabindex="0"></a>');this.element=o,this.options=n,this.toolbar=i,this.attributes(),n.primary&&o.addClass(G),n.togglable&&(o.addClass(R),this.toggle(n.selected)),n.url===t||n.useButtonTag||(o.attr("href",n.url),n.mobile&&o.attr(x.attr("role"),"button")),n.group&&(o.attr(x.attr("group"),n.group),this.group=this.toolbar.addToGroup(this,n.group)),!n.togglable&&n.click&&D(n.click)&&(this.clickHandler=n.click),n.togglable&&n.toggle&&D(n.toggle)&&(this.toggleHandler=n.toggle)},toggle:function(e,t){e=!!e,this.group&&e?this.group.select(this):this.group||this.select(e),t&&this.twin()&&this.twin().toggle(e)},getParentGroup:function(){if(this.options.isChild)return this.element.closest("."+P).data("buttonGroup")},_addGraphics:function(){var t,n,i,o=this.element,r=this.options.icon,a=this.options.spriteCssClass,s=this.options.imageUrl;(a||s||r)&&(t=!0,o.contents().filter(function(){return!e(this).hasClass("k-sprite")&&!e(this).hasClass($)&&!e(this).hasClass("k-image")}).each(function(n,i){(1==i.nodeType||3==i.nodeType&&e.trim(i.nodeValue).length>0)&&(t=!1)}),o.addClass(t?K:Q)),r?(n=o.children("span."+$).first(),n[0]||(n=e('<span class="'+$+'"></span>').prependTo(o)),n.addClass(Y+r)):a?(n=o.children("span.k-sprite").first(),n[0]||(n=e('<span class="k-sprite '+$+'"></span>').prependTo(o)),n.addClass(a)):s&&(i=o.children("img.k-image").first(),i[0]||(i=e('<img alt="icon" class="k-image" />').prependTo(o)),i.attr("src",s))}}),x.toolbar.Button=l,c=l.extend({init:function(e,t){l.fn.init.call(this,e,t);var n=this.element;n.addClass(M),this.addIdAttr(),e.align&&n.addClass("k-align-"+e.align),"overflow"!=e.showText&&e.text&&n.html(e.mobile?'<span class="km-text">'+e.text+"</span>":e.text),e.hasIcon="overflow"!=e.showIcon&&(e.icon||e.spriteCssClass||e.imageUrl),e.hasIcon&&this._addGraphics(),this.addUidAttr(),this.addOverflowAttr(),this.enable(e.enable),e.hidden&&this.hide(),this.element.data({type:"button",button:this})},select:function(e){e===t&&(e=!1),this.element.toggleClass(V,e),this.options.selected=e}}),x.toolbar.ToolBarButton=c,d=l.extend({init:function(t,n){this.overflow=!0,l.fn.init.call(this,e.extend({},t),n);var i=this.element;"toolbar"!=t.showText&&t.text&&i.html(t.mobile?'<span class="km-text">'+t.text+"</span>":'<span class="k-text">'+t.text+"</span>"),t.hasIcon="toolbar"!=t.showIcon&&(t.icon||t.spriteCssClass||t.imageUrl),t.hasIcon&&this._addGraphics(),t.isChild||this._wrap(),this.addOverflowIdAttr(),this.attributes(),this.addUidAttr(),this.addOverflowAttr(),this.enable(t.enable),i.addClass(F+" "+M),t.hidden&&this.hide(),t.togglable&&this.toggle(t.selected),this.element.data({type:"button",button:this})},_wrap:function(){this.element=this.element.wrap("<li></li>").parent()},overflowHidden:function(){this.element.addClass(he)},select:function(e){e===t&&(e=!1),this.options.isChild?this.element.toggleClass(V,e):this.element.find(".k-button").toggleClass(V,e),this.options.selected=e}}),x.toolbar.OverflowButton=d,x.toolbar.registerComponent("button",c,d),u=s.extend({createButtons:function(t){var n,i,o=this.options,r=o.buttons||[];for(i=0;i<r.length;i++)r[i].uid||(r[i].uid=x.guid()),n=new t(e.extend({mobile:o.mobile,isChild:!0,type:"button"},r[i]),this.toolbar),n.element.appendTo(this.element)},refresh:function(){this.element.children().filter(":not('."+U+"'):first").addClass(q),this.element.children().filter(":not('."+U+"'):last").addClass(j)}}),x.toolbar.ButtonGroup=u,h=u.extend({init:function(t,n){var i=this.element=e("<div></div>");this.options=t,this.toolbar=n,this.addIdAttr(),t.align&&i.addClass("k-align-"+t.align),this.createButtons(c),this.attributes(),this.addUidAttr(),this.addOverflowAttr(),this.refresh(),i.addClass(P),this.element.data({type:"buttonGroup",buttonGroup:this})}}),x.toolbar.ToolBarButtonGroup=h,p=u.extend({init:function(t,n){var i=this.element=e("<li></li>");this.options=t,this.toolbar=n,this.overflow=!0,this.addOverflowIdAttr(),this.createButtons(d),this.attributes(),this.addUidAttr(),this.addOverflowAttr(),this.refresh(),i.addClass((t.mobile?"":P)+" k-overflow-group"),this.element.data({type:"buttonGroup",buttonGroup:this})},overflowHidden:function(){this.element.addClass(he)}}),x.toolbar.OverflowButtonGroup=p,x.toolbar.registerComponent("buttonGroup",h,p),f=s.extend({init:function(t,n){var i=this.element=e('<div class="'+z+'" tabindex="0"></div>');this.options=t,this.toolbar=n,this.mainButton=new c(e.extend({},t,{hidden:!1}),n),this.arrowButton=e('<a class="'+M+" "+J+'"><span class="'+(t.mobile?"km-icon km-arrowdown":"k-icon k-i-arrow-60-down")+'"></span></a>'),this.popupElement=e('<ul class="'+X+'"></ul>'),this.mainButton.element.removeAttr("href tabindex").appendTo(i),this.arrowButton.appendTo(i),this.popupElement.appendTo(i),t.align&&i.addClass("k-align-"+t.align),t.id||(t.id=t.uid),i.attr("id",t.id+"_wrapper"),this.addOverflowAttr(),this.addUidAttr(),this.createMenuButtons(),this.createPopup(),this._navigatable(),this.mainButton.main=!0,this.enable(t.enable),t.hidden&&this.hide(),i.data({type:"splitButton",splitButton:this,kendoPopup:this.popup})},_navigatable:function(){var t=this;t.popupElement.on("keydown","."+M,function(n){var i=e(n.target).parent();n.preventDefault(),n.keyCode===A.ESC||n.keyCode===A.TAB||n.altKey&&n.keyCode===A.UP?(t.toggle(),t.focus()):n.keyCode===A.DOWN?r(i,"next").focus():n.keyCode===A.UP?r(i,"prev").focus():n.keyCode===A.SPACEBAR||n.keyCode===A.ENTER?t.toolbar.userEvents.trigger("tap",{target:e(n.target)}):n.keyCode===A.HOME?i.parent().find(":kendoFocusable").first().focus():n.keyCode===A.END&&i.parent().find(":kendoFocusable").last().focus()})},createMenuButtons:function(){var t,n,i=this.options,o=i.menuButtons;for(n=0;n<o.length;n++)t=new c(e.extend({mobile:i.mobile,type:"button",click:i.click},o[n]),this.toolbar),t.element.wrap("<li></li>").parent().appendTo(this.popupElement)},createPopup:function(){var n=this,r=this.options,a=this.element;this.popupElement.attr("id",r.id+pe).attr(fe,r.rootUid),r.mobile&&(this.popupElement=i(this.popupElement)),this.popup=this.popupElement.kendoPopup({appendTo:r.mobile?e(r.mobile).children(".km-pane"):null,anchor:a,isRtl:this.toolbar._isRtl,copyAnchorStyles:!1,animation:r.animation,open:function(e){var i=n.toolbar.trigger(re,{target:a});return i?(e.preventDefault(),t):(n.adjustPopupWidth(e.sender),t)},activate:function(){this.element.find(":kendoFocusable").first().focus()},close:function(e){var t=n.toolbar.trigger(ae,{target:a});t&&e.preventDefault(),a.focus()}}).data("kendoPopup"),this.popup.element.on(ie,"a.k-button",o)},adjustPopupWidth:function(e){var t,n=e.options.anchor,i=E(n);x.wrap(e.element).addClass("k-split-wrapper"),t="border-box"!==e.element.css("box-sizing")?i-(E(e.element)-e.element.width()):i,e.element.css({fontFamily:n.css("font-family"),"min-width":t})},remove:function(){this.popup.element.off(ie,"a.k-button"),this.popup.destroy(),this.element.remove()},toggle:function(){(this.options.enable||this.popup.visible())&&this.popup.toggle()},enable:function(e){e===t&&(e=!0),this.mainButton.enable(e),this.element.toggleClass(W,!e),this.options.enable=e},focus:function(){this.element.focus()},hide:function(){this.popup&&this.popup.close(),this.element.addClass(U).hide(),this.options.hidden=!0},show:function(){this.element.removeClass(U).hide(),this.options.hidden=!1}}),x.toolbar.ToolBarSplitButton=f,g=s.extend({init:function(t,n){var i,o,r,a=this.element=e('<li class="'+z+'"></li>'),s=t.menuButtons;for(this.options=t,this.toolbar=n,this.overflow=!0,o=(t.id||t.uid)+pe,this.mainButton=new d(e.extend({},t)),this.mainButton.element.appendTo(a),r=0;r<s.length;r++)i=new d(e.extend({mobile:t.mobile,type:"button",splitContainerId:o},s[r]),this.toolbar),i.element.appendTo(a);this.addUidAttr(),this.addOverflowAttr(),this.mainButton.main=!0,a.data({type:"splitButton",splitButton:this})},overflowHidden:function(){this.element.addClass(he)}}),x.toolbar.OverflowSplitButton=g,x.toolbar.registerComponent("splitButton",f,g),m=s.extend({init:function(t,n){var i=this.element=e("<div> </div>");this.element=i,this.options=t,this.toolbar=n,this.attributes(),this.addIdAttr(),this.addUidAttr(),this.addOverflowAttr(),i.addClass(B),i.data({type:"separator",separator:this})}}),v=s.extend({init:function(t,n){var i=this.element=e("<li> </li>");this.element=i,this.options=t,this.toolbar=n,this.overflow=!0,this.attributes(),this.addUidAttr(),this.addOverflowIdAttr(),i.addClass(B),i.data({type:"separator",separator:this})},overflowHidden:function(){this.element.addClass(he)}}),x.toolbar.registerComponent("separator",m,v),_=s.extend({init:function(t,n){var i=this.element=e("<div> </div>");this.element=i,this.options=t,this.toolbar=n,i.addClass(L),i.data({type:H})}}),x.toolbar.registerComponent(H,_),b=s.extend({init:function(t,n,i){var o=D(t)?t(n):t;o=o instanceof jQuery?o.wrap("<div></div>").parent():e("<div></div>").html(o),this.element=o,this.options=n,this.options.type="template",this.toolbar=i,this.attributes(),this.addUidAttr(),this.addIdAttr(),this.addOverflowAttr(),o.data({type:"template",template:this})}}),x.toolbar.TemplateItem=b,w=s.extend({init:function(t,n,i){var o=e(D(t)?t(n):t);o=o instanceof jQuery?o.wrap("<li></li>").parent():e("<li></li>").html(o),this.element=o,this.options=n,this.options.type="template",this.toolbar=i,this.overflow=!0,this.attributes(),this.addUidAttr(),this.addOverflowIdAttr(),this.addOverflowAttr(),o.data({type:"template",template:this})},overflowHidden:function(){this.element.addClass(he)}}),x.toolbar.OverflowTemplateItem=w,k=C.extend({init:function(e){this.name=e,this.buttons=[]},add:function(e){this.buttons[this.buttons.length]=e},remove:function(t){var n=e.inArray(t,this.buttons);this.buttons.splice(n,1)},select:function(e){var t,n;for(n=0;n<this.buttons.length;n++)t=this.buttons[n],t.select(!1);e.select(!0),e.twin()&&e.twin().select(!0)}}),y=S.extend({init:function(t,i){var r,a=this;if(S.fn.init.call(a,t,i),i=a.options,t=a.wrapper=a.element,t.addClass(I+" k-widget"),this.uid=x.guid(),this._isRtl=x.support.isRtl(t),this._groups={},t.attr(fe,this.uid),a.isMobile="boolean"==typeof i.mobile?i.mobile:a.element.closest(".km-root")[0],a.animation=a.isMobile?{open:{effects:"fade"}}:{},a.isMobile&&(t.addClass("km-widget"),$="km-icon",Y="km-",M="km-button",P="km-buttongroup",V="km-state-active",W="km-state-disabled"),i.resizable?(a._renderOverflow(),t.addClass(O),a.overflowUserEvents=new x.UserEvents(a.element,{threshold:5,allowSelection:!0,filter:"."+Z,tap:T(a._toggleOverflow,a)}),a._resizeHandler=x.onResize(function(){a.resize()})):a.popup={element:e([])},i.items&&i.items.length){for(r=0;r<i.items.length;r++)a.add(i.items[r]);i.resizable&&a._shrink(a.element.innerWidth())}a.userEvents=new x.UserEvents(document,{threshold:5,allowSelection:!0,filter:"["+fe+"="+this.uid+"] a."+M+", ["+fe+"="+this.uid+"] ."+F,tap:T(a._buttonClick,a),press:n,release:n}),a.element.on(ie,"a.k-button",o),a._navigatable(),i.resizable&&a.popup.element.on(ie,NaN,o),i.resizable&&this._toggleOverflowAnchor(),x.notify(a)},events:[ie,oe,re,ae,se,le],options:{name:"ToolBar",items:[],resizable:!0,mobile:null},addToGroup:function(e,t){var n;return n=this._groups[t]?this._groups[t]:this._groups[t]=new k,n.add(e),n},destroy:function(){var t=this;t.element.find("."+z).each(function(t,n){e(n).data("kendoPopup").destroy()}),t.element.off(ie,"a.k-button"),t.userEvents.destroy(),t.options.resizable&&(x.unbindResize(t._resizeHandler),t.overflowUserEvents.destroy(),t.popup.element.off(ie,"a.k-button"),t.popup.destroy()),S.fn.destroy.call(t)},add:function(t){var n,i,o,r=a[t.type],s=t.template,l=this,c=l.isMobile?"":"k-item k-state-default",d=t.overflowTemplate;if(e.extend(t,{uid:x.guid(),animation:l.animation,mobile:l.isMobile,rootUid:l.uid}),t.menuButtons)for(o=0;o<t.menuButtons.length;o++)e.extend(t.menuButtons[o],{uid:x.guid()});s&&!d||t.type===H?t.overflow=ce:t.overflow||(t.overflow=de),t.overflow!==ce&&l.options.resizable&&(d?i=new w(d,t,l):r&&(i=new r.overflow(t,l),i.element.addClass(c)),i&&(t.overflow===de&&i.overflowHidden(),i.element.appendTo(l.popup.container),l.angular("compile",function(){return{elements:i.element.get()}}))),t.overflow!==ue&&(s?n=new b(s,t,l):r&&(n=new r.toolbar(t,l)),n&&(n.element.appendTo(l.element),l.angular("compile",function(){return{elements:n.element.get()}})))},_getItem:function(t){var n,i,o,r,a=this.options.resizable;return n=this.element.find(t),n.length||(n=e(".k-split-container[data-uid="+this.uid+"]").find(t)),r=n.length?n.data("type"):"",i=n.data(r),i?(i.main&&(n=n.parent("."+z),r="splitButton",i=n.data(r)),a&&(o=i.twin())):a&&(n=this.popup.element.find(t),r=n.length?n.data("type"):"",o=n.data(r),o&&o.main&&(n=n.parent("."+z),r="splitButton",o=n.data(r))),{type:r,toolbar:i,overflow:o}},remove:function(e){var t=this._getItem(e);t.toolbar&&t.toolbar.remove(),t.overflow&&t.overflow.remove(),this.resize(!0)},hide:function(e){var t,n=this._getItem(e);n.toolbar&&("button"===n.toolbar.options.type&&n.toolbar.options.isChild?(t=n.toolbar.getParentGroup(),n.toolbar.hide(),t&&t.refresh()):n.toolbar.options.hidden||n.toolbar.hide()),n.overflow&&("button"===n.overflow.options.type&&n.overflow.options.isChild?(t=n.overflow.getParentGroup(),n.overflow.hide(),t&&t.refresh()):n.overflow.options.hidden||n.overflow.hide()),this.resize(!0)},show:function(e){var t=this._getItem(e);t.toolbar&&("button"===t.toolbar.options.type&&t.toolbar.options.isChild?(t.toolbar.show(),t.toolbar.getParentGroup().refresh()):t.toolbar.options.hidden&&t.toolbar.show()),t.overflow&&("button"===t.overflow.options.type&&t.overflow.options.isChild?(t.toolbar.show(),t.overflow.getParentGroup().refresh()):t.overflow.options.hidden&&t.overflow.show()),this.resize(!0)},enable:function(e,n){var i=this._getItem(e);t===n&&(n=!0),i.toolbar&&i.toolbar.enable(n),i.overflow&&i.overflow.enable(n)},getSelectedFromGroup:function(e){return this.element.find("."+R+"[data-group='"+e+"']").filter("."+V)},toggle:function(n,i){var o=e(n),r=o.data("button");r.options.togglable&&(i===t&&(i=!0),r.toggle(i,!0))},_renderOverflow:function(){var t=this,n=a.overflowContainer,o=t._isRtl,s=o?"left":"right";t.overflowAnchor=e(a.overflowAnchor).addClass(M),t.element.append(t.overflowAnchor),t.isMobile?(t.overflowAnchor.append('<span class="km-icon km-more"></span>'), +n=i(n)):t.overflowAnchor.append('<span class="k-icon k-i-more-vertical"></span>'),t.popup=new x.ui.Popup(n,{origin:"bottom "+s,position:"top "+s,anchor:t.overflowAnchor,isRtl:o,animation:t.animation,appendTo:t.isMobile?e(t.isMobile).children(".km-pane"):null,copyAnchorStyles:!1,open:function(n){var i=x.wrap(t.popup.element).addClass("k-overflow-wrapper");t.isMobile?t.popup.container.css("max-height",parseFloat(e(".km-content:visible").innerHeight())-15+"px"):i.css("margin-left",(o?-1:1)*((E(i)-i.width())/2+1)),t.trigger(se)&&n.preventDefault()},activate:function(){this.element.find(":kendoFocusable").first().focus()},close:function(e){t.trigger(le)&&e.preventDefault(),this.element.focus()}}),t.popup.element.on("keydown","."+M,function(n){var i,o=e(n.target),a=o.parent(),s=a.is("."+P)||a.is("."+z);n.preventDefault(),n.keyCode===A.ESC||n.keyCode===A.TAB||n.altKey&&n.keyCode===A.UP?(t._toggleOverflow(),t.overflowAnchor.focus()):n.keyCode===A.DOWN?(i=!s||s&&o.is(":last-child")?a:o,r(i,"next").focus()):n.keyCode===A.UP?(i=!s||s&&o.is(":first-child")?a:o,r(i,"prev").focus()):n.keyCode===A.SPACEBAR||n.keyCode===A.ENTER?(t.userEvents.trigger("tap",{target:e(n.target)}),t.overflowAnchor.focus()):n.keyCode===A.HOME?a.parent().find(":kendoFocusable").first().focus():n.keyCode===A.END&&a.parent().find(":kendoFocusable").last().focus()}),t.popup.container=t.isMobile?t.popup.element.find("."+ee):t.popup.element,t.popup.container.attr(fe,this.uid)},_toggleOverflowAnchor:function(){var e=!1,t=this._isRtl?"padding-left":"padding-right";e=this.options.mobile?this.popup.element.find("."+ee).children(":not(."+he+", ."+N+")").length>0:this.popup.element.children(":not(."+he+", ."+N+")").length>0,e?(this.overflowAnchor.css({visibility:"visible",width:""}),this.wrapper.css(t,this.overflowAnchor.outerWidth(!0))):(this.overflowAnchor.css({visibility:"hidden",width:"1px"}),this.wrapper.css(t,""))},_buttonClick:function(n){var i,o,r,a,s,l,c,d=this,u=n.target.closest("."+J).length;return n.preventDefault(),u?(d._toggle(n),t):(o=e(n.target).closest("."+M,d.element),o.hasClass(Z)||(r=o.data("button"),!r&&d.popup&&(o=e(n.target).closest("."+F,d.popup.container),r=o.parent("li").data("button")),r&&r.options.enable&&(r.options.togglable?(s=D(r.toggleHandler)?r.toggleHandler:null,r.toggle(!r.options.selected,!0),l={target:o,group:r.options.group,checked:r.options.selected,id:r.options.id,item:r},s&&s.call(d,l),d.trigger(oe,l)):(s=D(r.clickHandler)?r.clickHandler:null,l={sender:d,target:o,id:r.options.id,item:r},s&&s.call(d,l),d.trigger(ie,l)),r.options.url&&(r.options.attributes&&r.options.attributes.target&&(c=r.options.attributes.target),window.open(r.options.url,c||"_self")),o.hasClass(F)&&d.popup.close(),a=o.closest(".k-split-container"),a[0]&&(i=a.data("kendoPopup"),(i?i:a.parents(".km-popup-wrapper").data("kendoPopup")).close()))),t)},_navigatable:function(){var t=this;t.element.attr("tabindex",0).on("focusin",function(t){var n=e(t.target),i=e(this).find(":kendoFocusable:first");n.is("."+I)&&0!==i.length&&(i.is("."+Z)&&(i=r(i,"next")),i.length&&i[0].focus())}).on("keydown",T(t._keydown,t))},_keydown:function(n){var i,o,r,a,s,l,c,d,u,h=e(n.target),p=n.keyCode,f=this.element.children(":not(.k-separator):visible"),g=this._isRtl?-1:1;if(p===A.TAB&&(i=h.parentsUntil(this.element).last(),o=!1,r=!1,a=!1,f.not("."+Z).length||(a=!0),i.length||(i=h),i.is("."+Z)&&!a&&(s=f.last(),n.shiftKey&&n.preventDefault(),s.is(":kendoFocusable")?f.last().focus():f.last().find(":kendoFocusable").last().focus()),n.shiftKey||f.index(i)!==f.length-1||(o=!i.is("."+P)||h.is(":last-child")),l=f.index(i)===f.not(".k-overflow-anchor").first().index(),n.shiftKey&&l&&(r=!i.is("."+P)||h.is(":first-child")),o&&this.overflowAnchor&&"hidden"!==this.overflowAnchor.css("visibility")&&!a&&(n.preventDefault(),this.overflowAnchor.focus()),(r||a&&n.shiftKey)&&(n.preventDefault(),c=this._getPrevFocusable(this.wrapper),c&&c.focus()),this._preventNextFocus=!1),n.altKey&&p===A.DOWN)return d=e(document.activeElement).data("splitButton"),u=e(document.activeElement).is("."+Z),d?d.toggle():u&&this._toggleOverflow(),t;if((p===A.SPACEBAR||p===A.ENTER)&&!h.is("input, checkbox"))return p===A.SPACEBAR&&n.preventDefault(),h.is("."+z)?(h=h.children().first(),this.userEvents.trigger("tap",{target:h})):p===A.SPACEBAR&&this.userEvents.trigger("tap",{target:h}),t;if(p===A.HOME){if(h.is(".k-dropdown")||h.is("input"))return;this.overflowAnchor?f.eq(1).focus():f.first().focus(),n.preventDefault()}else if(p===A.END){if(h.is(".k-dropdown")||h.is("input"))return;this.overflowAnchor&&"hidden"!=e(this.overflowAnchor).css("visibility")?this.overflowAnchor.focus():f.last().focus(),n.preventDefault()}else p!==A.RIGHT||this._preventNextFocus||h.is("input, select, .k-dropdown, .k-colorpicker")||!this._getNextElement(n.target,1*g)?p!==A.LEFT||this._preventNextFocus||h.is("input, select, .k-dropdown, .k-colorpicker")||!this._getNextElement(n.target,-1*g)||(this._getNextElement(n.target,-1*g).focus(),n.preventDefault()):(this._getNextElement(n.target,1*g).focus(),n.preventDefault())},_getNextElement:function(t,n){var i=this.element.children(":not(.k-separator):visible"),o=i.index(i.index(t)===-1?t.parentElement:t),r=this.overflowAnchor?1:0,a=n,s=1===n?i.length-1:r,l=1===n?r:i.length-1,c=i[o+n];if(this._preventNextFocus=!1,e(t).closest("."+P).length&&!e(t).is(1===n?":last-child":":first-child"))return e(t).closest("."+P).children()[e(t).closest("."+P).children().index(t)+n];for(this.overflowAnchor&&t===this.overflowAnchor[0]&&n===-1&&(c=i[i.length-1]),o===s&&(c=!this.overflowAnchor||this.overflowAnchor&&"hidden"===e(this.overflowAnchor).css("visibility")?i[l]:this.overflowAnchor);!e(c).is(":kendoFocusable");){if(c=n===-1&&e(c).closest("."+P).length?e(c).children(":not(label, div)").last():e(c).children(":not(label, div)").first(),!c.length&&(a+=n,c=i[o+a],!c))return this.overflowAnchor;this._preventNextFocus=!e(c).closest("."+P).length}return c},_getPrevFocusable:function(n){if(n.is("html"))return n;var i,o,r=n.prevAll();return r.each(function(){return o=e(this),o.is(":kendoFocusable")?(i=o,!1):o.find(":kendoFocusable").length>0?(i=o.find(":kendoFocusable").last(),!1):t}),i?i:this._getPrevFocusable(n.parent())},_toggle:function(t){var n=e(t.target).closest("."+z).data("splitButton");t.preventDefault(),n.options.enable&&n.toggle()},_toggleOverflow:function(){this.popup.toggle()},_resize:function(e){var t=e.width;this.options.resizable&&(this.popup.close(),this._shrink(t),this._stretch(t),this._markVisibles(),this._toggleOverflowAnchor())},_childrenWidth:function(){var t=0;return this.element.children(":visible:not(."+U+", ."+L+")").each(function(){t+=E(e(this),!0)}),Math.ceil(t)},_shrink:function(e){var t,n,i;if(e<this._childrenWidth())for(n=this.element.children(":visible:not([data-overflow='never'], ."+Z+")"),i=n.length-1;i>=0&&(t=n.eq(i),!(e>this._childrenWidth()));i--)this._hideItem(t)},_stretch:function(e){var t,n,i;if(e>this._childrenWidth())for(n=this.element.children(":hidden:not('."+U+"')"),i=0;i<n.length&&(t=n.eq(i),!(e<this._childrenWidth())&&this._showItem(t,e));i++);},_hideItem:function(e){e.hide(),this.popup&&this.popup.container.find(">li[data-uid='"+e.data("uid")+"']").removeClass(he)},_showItem:function(e,t){return!!(e.length&&t>this._childrenWidth()+E(e,!0))&&(e.show(),this.popup&&this.popup.container.find(">li[data-uid='"+e.data("uid")+"']").addClass(he),!0)},_markVisibles:function(){var e=this.popup.container.children(),t=this.element.children(":not(.k-overflow-anchor)"),n=e.filter(":not(.k-overflow-hidden)"),i=t.filter(":visible");e.add(t).removeClass(te+" "+ne),n.first().add(i.first()).addClass(te),n.last().add(i.last()).addClass(ne)}}),x.ui.plugin(y)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mediaplayer.min",["kendo.slider.min","kendo.toolbar.min","kendo.dropdownlist.min","kendo.tooltip.min"],e)}(function(){return function(e,t){var n=window.kendo,i="end",o="pause",r="play",a="ready",s="timeChange",l="volumeChange",c="k-i-full-screen",d="k-i-full-screen-exit",u="k-i-volume-off",h="k-i-volume-down",p="k-i-volume-up",f="k-mediaplayer-quality",g="k-i-play",m="k-i-pause",v="k-mediaplayer-titlebar",_="k-title",b="k-mediaplayer-toolbar-wrap",w="k-mediaplayer-toolbar",k="k-mediaplayer-seekbar",y="k-mediaplayer-volume",x="k-mediaplayer-media",C="k-mediaplayer-overlay",S="k-mediaplayer-yt",T=".",D=n.ui,A=".kendoMediaPlayer",E=new Date(1970,0,1),I=60*E.getTimezoneOffset(),M=n.ui.Widget,F=e.isArray,R={shortTime:"mm:ss",longTime:"HH:mm:ss"},P=n.template,z=e.proxy,B=n.keys,L={htmlPlayer:"<video class='"+x+"'> </video>",titleBar:P("<div class='"+v+"' role='heading'><span class='"+_+"'>Video Title</span></div>"),toolBar:"<div class='"+b+"'><div class='"+w+"'></div></div>",youtubePlayer:"<div class='"+S+"'> </div>",toolBarTime:"<span class='k-mediaplayer-currenttime'>00:00:00</span> / <span class='k-mediaplayer-duration'>00:00:00</span>",slider:"<input class='"+k+"' value='0' title='seekbar' />",volumeSlider:"<input class='"+y+"' title='volume'/>",qualityDropDown:"<input class='"+f+"' title='video quality' />",toolTip:"#= kendo.toString(new Date(value), 'HH:mm:ss') #"},H=M.extend({init:function(t,i){this.wrapper=e(t),M.fn.init.call(this,t,i),this.wrapper.addClass("k-mediaplayer k-widget"),i=this.options,this._currentIndex=0,this._createTitlebar(),this._createToolbar(),this._createDropDown(),this._createSlider(),this._createVolumeSlider(),this._timers={},this._aria(),this._navigatable(),i.fullScreen&&this.fullScreen(!0),i.media&&this.media(this.options.media),n.notify(this)},events:[i,o,r,a,s,l],options:{name:"MediaPlayer",autoPlay:!1,autoRepeat:!1,volume:100,fullScreen:!1,mute:!1,navigatable:!1,forwardSeek:!0,media:null,messages:{pause:"Pause",play:"Play",mute:"Mute",unmute:"Unmute",quality:"Quality",fullscreen:"Full Screen"}},_msToTime:function(e){var t=new Date(E.getTime());return t.setSeconds(e),t},_timeToSec:function(e){var t=new Date(e).getTime();return t/1e3},_createTitlebar:function(){this._titleBar=this.wrapper.find(T+v),0===this._titleBar.length&&(this.wrapper.append(L.titleBar),this._titleBar=this.wrapper.find(T+v))},_createSlider:function(){var e=this.wrapper.find(T+k);this._slider||(this._sliderDragChangeHandler=z(this._sliderDragChange,this),this._sliderDraggingHandler=z(this._sliderDragging,this),e=this.wrapper.find(T+k),this._slider=new D.Slider(e[0],{smallStep:1e3,tickPlacement:"none",showButtons:!1,change:this._sliderDragChangeHandler,slide:this._sliderDraggingHandler,tooltip:{template:L.toolTip},dragHandleTitle:""}))},_createVolumeSlider:function(){var e=this.wrapper.find(T+y);this._volumeSlider||(this._volumeDraggingHandler=z(this._volumeDragging,this),this._volumeChangeHandler=z(this._volumeChange,this),e.width(87),this._volumeSlider=new D.Slider(e[0],{smallStep:1,min:0,max:100,value:this.options.volume,slide:this._volumeDraggingHandler,change:this._volumeChangeHandler,tickPlacement:"none",showButtons:!1,tooltip:{enabled:!1},dragHandleTitle:""}))},_resetTime:function(){this._youTubeVideo?this._ytmedia.seekTo(0,!0):this._media.currentTime=0,this._mediaTimeUpdate(),e.grep(this._toolBar.options.items,function(e){return!!e.template}).template=L.toolBarTime},_currentUrl:function(){var e=this.media();return F(e.source)?e.source[this._currentIndex].url:e.source},_isYouTubeUrl:function(){return!!this._currentUrl().match("youtube.com/|youtu.be/")},_setPlayerUrl:function(){var e,t=this._youTubeVideo;this.stop(),this._youTubeVideo=this._isYouTubeUrl(),t!==this._youTubeVideo&&(this.wrapper.find(T+S).toggle(),this.wrapper.find(T+x).toggle()),e=this._media||this._ytmedia,this._initializePlayer(),e&&(this.mute(this.mute()),this.volume(this.volume())),this._youTubeVideo?this._ytmedia&&(this._videoOverlay&&this._videoOverlay.hide(),this.options.autoPlay?(this._ytmedia.loadVideoById(this._getMediaId()),this._playStateToggle(!0)):(this._ytmedia.cueVideoById(this._getMediaId()),this._playStateToggle(!0))):(this._videoOverlay.show(),this.wrapper.find(T+x+" > source").remove(),this.wrapper.find(T+x).attr("src",this._currentUrl()),this.options.autoPlay&&this.play())},_createToolbar:function(){var t=this.wrapper.find(T+w);0===t.length&&(this._toolbarClickHandler=z(this._toolbarClick,this),this.wrapper.append(L.toolBar),t=this.wrapper.find(T+w),t.width(this.wrapper.find(T+x).width()),this._toolBar=new D.ToolBar(t,{click:this._toolbarClickHandler,resizable:!1,items:[{type:"button",attributes:{"class":"k-play-button"},icon:"play"},{template:L.toolBarTime,attributes:{"class":"k-mediaplayer-currenttime-wrap"}},{type:"separator",attributes:{"class":"k-toolbar-spacer"}},{type:"button",attributes:{"class":"k-volume-button"},icon:"volume-up"},{template:L.volumeSlider,attributes:{"class":"k-mediaplayer-volume-wrap"}},{template:L.qualityDropDown,attributes:{"class":"k-mediaplayer-quality-wrap"}},{type:"button",attributes:{"class":"k-fullscreen-button"},icon:"full-screen"}]}),this._toolBar.wrapper.off("keydown"),t.before(L.slider),this._volumeButton=t.find(".k-volume-button"),this._fullscreenButton=t.find(".k-fullscreen-button"),this._volumeButton.attr("title",this.options.mute?this.options.messages.unmute:this.options.messages.mute),this._volumeButton.attr("aria-label",this.options.mute?this.options.messages.unmute:this.options.messages.mute),this._fullscreenButton.attr("title",this.options.messages.fullscreen),this._fullscreenButton.attr("aria-label",this.options.messages.fullscreen),t.width("auto"),this._currentTimeElement=t.find(".k-mediaplayer-currenttime"),this._durationElement=t.find(".k-mediaplayer-duration"),this._playButton=t.find(".k-play-button"),this._playButtonSpan=this._playButton.find(".k-i-play"),this.options.autoPlay&&this._playStateToggle(!0),e([this._volumeButton[0],t.find(".k-mediaplayer-volume-wrap")[0],t.find(".k-mediaplayer-quality-wrap")[0],this._fullscreenButton[0]]).wrapAll("<div class='k-align-right' />"),t.find(".k-button").addClass("k-bare"))},_createDropDown:function(){var e=this.wrapper.find(T+f),n=this.media();t===e.data("kendoDropDownList")&&(this._dropDownSelectHandler=z(this._dropDownSelect,this),this._dropDown=new D.DropDownList(e,{dataTextField:"quality",dataValueField:"url",popup:{position:"bottom",origin:"top",appendTo:this.wrapper},animation:{open:{effects:"slideIn:up",duration:1}},select:this._dropDownSelectHandler}),n&&F(n.source)&&(this._dropDown.setDataSource(n.source),this._dropDown.select(0)),this._dropDown.wrapper.addClass("k-button k-bare"),this._dropDown.wrapper.attr("title",this.options.messages.quality).hide(),this._dropDown.wrapper.find("span.k-i-arrow-60-down").removeClass("k-i-arrow-60-down").addClass("k-icon k-i-hd"),this._dropDown.list.addClass("k-quality-list"))},_dropDownSelect:function(e){this._currentIndex!==e.item.index()&&(this._currentIndex=e.item.index(),this._setPlayerUrl())},_toolbarClick:function(t){var n,i=e(t.target).children().first(),o=i.hasClass(g);this.media()&&((i.hasClass(g)||i.hasClass(m))&&(o?this.play():this.pause()),(i.hasClass(c)||i.hasClass(d))&&(this._isInFullScreen?(i.removeClass(d).addClass(c),this.fullScreen(!1)):(i.removeClass(c).addClass(d),this.fullScreen(!0))),(i.hasClass(u)||i.hasClass(h)||i.hasClass(p))&&(n=this.mute(),this.mute(!n)))},_sliderDragging:function(){this.media()&&(this._isDragging=!0)},_sliderDragChange:function(e){var t=this,n=e.sender,i=1e3*I;this.media()&&(t._sliderChangeFired=!0,t._isDragging=!1,!this.options.forwardSeek&&n.value()>this._seekBarLastPosition?setTimeout(function(){n.value(t._seekBarLastPosition)},1):this._youTubeVideo?t._ytmedia.seekTo(t._timeToSec(e.value-i)):t._media.currentTime=t._timeToSec(e.value-i),t.trigger(s),t._preventPlay=!0)},_changeVolumeButtonImage:function(e){var t=this._volumeButton,n=t.find("span"),i=n.attr("class");i=i.substring(0,i.lastIndexOf(" ")),0===e?(n.attr("class",i+" "+u),t.attr("title",this.options.messages.unmute),t.attr("aria-label",this.options.messages.unmute)):e>0&&e<51?(n.attr("class",i+" "+h),t.attr("title",this.options.messages.mute),t.attr("aria-label",this.options.messages.mute)):(n.attr("class",i+" "+p),t.attr("title",this.options.messages.mute),t.attr("aria-label",this.options.messages.mute))},_volumeDragging:function(e){this.media()&&(this.volume(e.value),this._changeVolumeButtonImage(e.value),this.trigger(l))},_volumeChange:function(e){this.media()&&(this.volume(e.value),this._changeVolumeButtonImage(e.value),this.trigger(l))},_mediaTimeUpdate:function(){var e,t=this._youTubeVideo?this._ytmedia.getCurrentTime():this._media.currentTime;return t=t?t:0,e=this._msToTime(t),this._currentTimeElement.text(n.toString(e,this._timeFormat)),this._isDragging||(this._seekBarLastPosition=1e3*(t+I),this._slider.value(this._seekBarLastPosition)),this.isPlaying()},_playStateToggle:function(e){t===e&&(e=this._playButtonSpan.is(T+g)),e?(this._playButtonSpan.removeClass(g).addClass(m),this._playButton.attr("title",this.options.messages.pause),this._playButton.attr("aria-label",this.options.messages.pause)):(this._playButtonSpan.removeClass(m).addClass(g),this._playButton.attr("title",this.options.messages.play),this._playButton.attr("aria-label",this.options.messages.play))},_mediaEnded:function(){this._playStateToggle(!1),this._currentTimeElement.text(n.toString(this._msToTime(0),this._timeFormat)),this._slider.value(1e3*(0+I)),this.trigger(i)},_mediaPlay:function(){this.trigger(r)},_mediaReady:function(){this.trigger(a)},_mediaDurationChange:function(){var e=this._msToTime(this._youTubeVideo?this._ytmedia.getDuration():this._media.duration);this._timeFormat=0===e.getHours()?R.shortTime:R.longTime,this._durationElement.text(n.toString(e,this._timeFormat)),this._slider.setOptions({min:E.getTime(),max:e.getTime()}),this._isFirstRun||(this._resetTime(),this._isFirstRun=!0)},_createYoutubePlayer:function(){this._mediaTimeUpdateHandler=z(this._mediaTimeUpdate,this),this._mediaDurationChangeHandler=z(this._mediaDurationChange,this),this.wrapper.prepend(L.youtubePlayer),this._ytPlayer=this.wrapper.find(T+S)[0],e(this._ytPlayer).css({width:this.wrapper.width(),height:this.wrapper.height()}),window.YT&&window.YT.Player?this._configurePlayer():(window.onYouTubeIframeAPIReadyRegister||(window.onYouTubeIframeAPIReadyRegister=[],e.getScript("https://www.youtube.com/iframe_api"),window.onYouTubeIframeAPIReady=function(){if(window.onYouTubeIframeAPIReadyRegister)for(var e=0;e<window.onYouTubeIframeAPIReadyRegister.length;e++)window.onYouTubeIframeAPIReadyRegister[e]._youtubeApiReady();window.onYouTubeIframeAPIReadyRegister.length=0,window.onYouTubeIframeAPIReadyRegister=t}),window.onYouTubeIframeAPIReadyRegister[window.onYouTubeIframeAPIReadyRegister.length]=this)},_poll:function(e,t,n,i){var o=this;return null!==o._timers[e]&&clearTimeout(o._timers[e]),o._timers[e]=setTimeout(function(i){return function r(){t.call(i)&&(o._timers[e]=setTimeout(r,n))}}(i),n)},_youtubeApiReady:function(){this._configurePlayer()},_configurePlayer:function(){var e,t={autoplay:+this.options.autoPlay,wmode:"transparent",controls:0,rel:0,showinfo:0};this._onYouTubePlayerReady=z(this._onYouTubePlayerReady,this),window.onYouTubePlayerReady=this._onYouTubePlayerReady,this._onPlayerStateChangeHandler=z(this._onPlayerStateChange,this),window.onPlayerStateChange=this._onPlayerStateChange,e=new window.YT.Player(this.wrapper.find(T+S)[0],{height:this.wrapper.height(),width:this.wrapper.width(),videoId:this._getMediaId(),playerVars:t,events:{onReady:this._onYouTubePlayerReady,onStateChange:this._onPlayerStateChangeHandler}})},_onYouTubePlayerReady:function(e){this._ytmedia=e.target,this._ytmedia.getIframe().style.width="100%",this._ytmedia.getIframe().style.height="100%",this._youTubeVideo=!0,this._mediaDurationChangeHandler(),this.options.autoPlay?(this._playStateToggle(!0),this._ytmedia.loadVideoById(this._getMediaId())):this._ytmedia.cueVideoById(this._getMediaId()),this.options.mute&&this.mute(!0),this.trigger(a)},_updateTitle:function(){this.titlebar().text(this.media().title||this.media().source)},_onPlayerStateChange:function(e){0===e.data?(this._slider.value(0),this._paused=!1,this._playStateToggle(!0),this.trigger(i),this.options.autoRepeat&&this.play()):1===e.data?(this._mediaDurationChange(),this._ytmedia.setVolume(this.volume()),this._sliderChangeFired?this._sliderChangeFired=!1:this._uiDisplay(!1),this.trigger(r),this._playStateToggle(!0),this._poll("progress",this._mediaTimeUpdate,500,this),this._paused=!1):2===e.data&&(this._paused||(this._uiDisplay(!0),this._playStateToggle(!1),this.trigger(o),this._paused=!0))},_getMediaId:function(){var e=this._currentUrl(),t=/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/,n=e.match(t);return n&&11===n[7].length&&(e=n[7]),e},_mouseClick:function(){this.isPaused()?this.play():this.pause()},_initializePlayer:function(){this._mouseMoveHandler||(this._mouseMoveHandler=z(this._mouseMove,this),this._mouseInHandler=z(this._mouseIn,this),this._mouseOutHandler=z(this._mouseOut,this),e(this.wrapper).on("mouseenter"+A,this._mouseInHandler).on("mouseleave"+A,this._mouseOutHandler).on("mousemove"+A,this._mouseMoveHandler)),!this._ytmedia&&this._youTubeVideo?this._createYoutubePlayer():this._media||this._youTubeVideo||this._createHtmlPlayer()},_createHtmlPlayer:function(){this._videoOverlay||(this._mouseClickHanlder=z(this._mouseClick,this),this.wrapper.append("<div class='"+C+"'></div>"),this._videoOverlay=this.wrapper.find(".k-mediaplayer-overlay").on("click"+A,this._mouseClickHanlder)),this._mediaTimeUpdateHandler=z(this._mediaTimeUpdate,this),this._mediaDurationChangeHandler=z(this._mediaDurationChange,this),this._mediaEndedHandler=z(this._mediaEnded,this),this._mediaCanPlayHandler=z(this._mediaReady,this),this._mediaPlayHandler=z(this._mediaPlay,this),this._videoOverlay.after(L.htmlPlayer),this._media=this.wrapper.find(T+x)[0],e(this._media).css({width:"100%",height:"100%"}),this.options.mute&&this.mute(!0),this._media.ontimeupdate=this._mediaTimeUpdateHandler,this._media.ondurationchange=this._mediaDurationChangeHandler,this._media.oncanplay=this._mediaCanPlayHandler,this._media.onplay=this._mediaPlayHandler,this._media.onended=this._mediaEndedHandler,this._media.loop=this.options.autoRepeat},_mouseIn:function(){this._uiDisplay(!0)},_mouseOut:function(){this._poll("mouseIdle",this._mouseIdle,3e3,this)},_mouseIdle:function(){return this._uiDisplay(!1),!1},_mouseMove:function(){this._titleBar.is(":animated")||this._toolBar.element.is(":animated")||this._slider.wrapper.is(":animated")||this._uiDisplay(!0),this._poll("mouseIdle",this._mouseIdle,3e3,this)},_uiDisplay:function(e){var t="slow",n=this._titleBar.add(this._toolBar.element.parent());e?n.fadeIn(t):(n.fadeOut(t),this.options.navigatable&&this.wrapper.focus())},setOptions:function(e){M.fn.setOptions.call(this,e)},destroy:function(){M.fn.destroy.call(this),this.isPaused()||this.pause(),this.element.off(A),this.element.find(T+C).off(A),this._timers=null,this._mouseMoveHandler=null,this._mouseOutHandler=null,this._mouseInHandler=null,this._mouseClickHanlder=null,this._keyDownHandler=null,this._fullscreenHandler=null,this._toolbarClickHandler=null,this._sliderDragChangeHandler=null,this._sliderDraggingHandler=null,this._volumeDraggingHandler=null,this._volumeChangeHandler=null,this._youtubeApiReadyHandler=null,this._onYouTubePlayerReady=null,this._onPlayerStateChangeHandler=null,this._dropDownSelectHandler=null,this._youTubeVideo?this._ytmedia.destroy():(this._media.ontimeupdate=this._mediaTimeUpdateHandler=null,this._media.ondurationchange=this._mediaDurationChangeHandler=null,this._media.oncanplay=this._mediaCanPlayHandler=null,this._media.onplay=this._mediaPlayHandler=null,this._media.onended=this._mediaEndedHandler=null,this._media.src="",this._media.remove()),this._mouseMoveTimer=null,clearTimeout(this._mouseMoveTimer),n.destroy(this.element)},seek:function(e){if(t===e)return 1e3*this._youTubeVideo?this._ytmedia.getCurrentTime():this._media?this._media.currentTime:0;var n=e/1e3;return this._youTubeVideo?n+3>=this._ytmedia.getDuration()|0?this._ytmedia.seekTo(this._ytmedia.getDuration()-3|0,!0):this._ytmedia.seekTo(n,!0):this._media.currentTime=n,this},play:function(){return this._youTubeVideo?this._ytmedia.playVideo():(n.support.mobileOS&&this._uiDisplay(!1),this._media.play()),this._paused=!1,this._playStateToggle(!0),this},stop:function(){return this._youTubeVideo&&this._ytmedia?this._ytmedia.stopVideo():this._media&&!this._youTubeVideo&&(n.support.mobileOS&&this._uiDisplay(!0),this._media.pause(),this._media.currentTime=0),this._paused=!0,this._playStateToggle(!1),this},pause:function(){return this._youTubeVideo?this._ytmedia.pauseVideo():(n.support.mobileOS&&this._uiDisplay(!0),this._media.pause()),this._paused=!0,this._playStateToggle(!1),this.trigger(o),this},toolbar:function(){return this._toolBar},dropdown:function(){return this._dropDown},titlebar:function(){return this._titleBar},fullScreen:function(e){if(t===e)return this._isInFullScreen||!1;var n=this.element.get(0);e?(this.element.addClass("k-mediaplayer-fullscreen"),n.requestFullscreen?n.requestFullscreen():n.webkitRequestFullscreen?n.webkitRequestFullscreen():n.mozRequestFullScreen?n.mozRequestFullScreen():n.msRequestFullscreen&&n.msRequestFullscreen(),this._isInFullScreen=!0):(document.cancelFullscreen?document.cancelFullscreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msCancelFullscreen?document.msCancelFullscreen():document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen&&document.msExitFullscreen(),this.element.removeClass("k-mediaplayer-fullscreen"),this._isInFullScreen=!1),this._slider.resize()},volume:function(e){return t===e?t!==this._volume?this._volume:this._volume=this.options.volume:(this._volume=e,this.mute(e<=0),this._youTubeVideo?this._ytmedia.setVolume(this._volume):this._media.volume=this._volume/100,this._volumeSlider.value(e),t)},mute:function(e){var n=this._youTubeVideo?this._ytmedia&&this._ytmedia.isMuted():this._media&&this._media.muted;return t===e||e===n?n:(this._youTubeVideo?e?this._ytmedia.mute():this._ytmedia.unMute():this._media.muted=e,this._volumeSlider.value(e?0:this._media&&100*this._media.volume||this._ytmedia&&this._ytmedia.getVolume()),this.trigger(l),this._changeVolumeButtonImage(this._volumeSlider.value()),t)},isEnded:function(){return this._youTubeVideo?0===this._ytmedia.getPlayerState():this._media.ended},media:function(e){var n=this.dropdown();return t===e?t!==this._mediaData?this._mediaData:this._mediaData=this.options.media:(F(e.source)?(n.setDataSource(e.source),n.wrapper.show()):n.wrapper.hide(),this._mediaData=e,this._updateTitle(),this._setPlayerUrl(),t)},isPaused:function(){return this._paused},isPlaying:function(){return!this.isEnded()&&!this._paused},_aria:function(){this.wrapper.attr("role","region")},_navigatable:function(){this._fullscreenHandler=z(this._fullscreen,this),e(document).on("webkitfullscreenchange mozfullscreenchange fullscreenchange"+A,this._fullscreenHandler),this.options.navigatable&&(this.wrapper.attr("tabIndex",0),this._keyDownHandler=z(this._keyDown,this),this.wrapper.on("keydown"+A,this._keyDownHandler))},_fullscreen:function(){var e=document.fullScreen||document.mozFullScreen||document.webkitIsFullScreen;this._uiDisplay(!0),this._slider.resize(),e||(this.wrapper.find('span[class*="k-i-fullscreen"]').removeClass(d).addClass(c),this.fullScreen(!1))},_keyDown:function(e){var t,n;e.preventDefault(),t=this.wrapper.find('span[class*="k-i-fullscreen"]'),e.keyCode===B.SPACEBAR?this.isPlaying()?this.pause():this.play():e.keyCode!==B.ENTER||this._isInFullScreen?77===e.keyCode?(n=this.mute(),this.mute(!n)):e.keyCode===B.ESC&&this._isInFullScreen&&(t.removeClass(d).addClass(c),this.fullScreen(!1)):(t.removeClass(c).addClass(d),this.fullScreen(!0))},_error:function(){},_progress:function(){}});D.plugin(H)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.pivotgrid.min",["kendo.dom.min","kendo.data.min"],e)}(function(){return function(e,t){function n(e){var n="string"==typeof e?[{name:e}]:e,i="[object Array]"===we.call(n)?n:n!==t?[n]:[];return ye(i,function(e){return"string"==typeof e?{name:e}:{name:e.name,type:e.type}})}function i(e){var n="string"==typeof e?[{name:[e],expand:!1}]:e,i="[object Array]"===we.call(n)?n:n!==t?[n]:[];return ye(i,function(e){return"string"==typeof e?{name:[e],expand:!1}:{name:"[object Array]"===we.call(e.name)?e.name.slice():[e.name],expand:e.expand}})}function o(e){return e.indexOf(" ")!==-1&&(e='["'+e+'"]'),e}function r(e,t,n,i){var o,a,s,l;if(n||(n=t),i||(i=0),l=n.members[i],l&&!l.measure){if(s=l.children,a=s.length,n===t?e[pe.stringify([l.name])]=!!a:a&&(e[pe.stringify(se(n,i))]=!0),a)for(o=0;o<a;o++)r(e,t,s[o],i);r(e,t,n,i+1)}}function a(t){var n,i,o={};t.length&&r(o,t[0]),n=[];for(i in o)n.push({name:e.parseJSON(i),expand:o[i]});return n}function s(e,t){var n,i,o,r,a=t.tuples||[],s=a[0];if(s&&e.length<s.members.length)for(n=s.members,i=0;i<n.length;i++)if(!n[i].measure){for(o=!1,r=0;r<e.length;r++)if(0===H(e[r]).indexOf(n[i].hierarchy)){o=!0;break}o||e.push({name:[n[i].name],expand:!1})}}function l(e){var t,n=[],i=e.members;for(t=0;t<i.length;t++)i[t].measure||n.push({name:[i[t].name],expand:i[t].children.length>0});return n}function c(e,t,n){var o,r;return e=e||{},s(t,e),n.length>1&&t.push({name:De,measure:!0,children:i(n)}),o={members:t},e.tuples&&(r=x(e.tuples,o),r.tuple&&(t=l(r.tuple))),t}function d(e){var t=pe.getter(e.field,!0);return function(n,i){return e.aggregate(t(n.dataItem),i,n)}}function u(e){return"number"==typeof e&&!isNaN(e)}function h(e){return e&&e.getTime}function p(e){return e[e.length]={value:"",fmtValue:"",ordinal:e.length},e}function f(e,t,n){if(e.tuples.length<_(t.tuples,n))return t}function g(e,t,n,i,o){var r,a,s,l=e.length,c=_(t,i),d=i.length||1;for(a=0;a<n;a++)for(r=0;r<l;r++)s=v(e[r],t)*d,s+=r%d,o[a*l+r].ordinal=a*c+s}function m(e,t,n,i,o){var r,a,s,l=e.length,c=i.length||1;for(a=0;a<l;a++)for(s=v(e[a],t),s*=c,s+=a%c,r=0;r<n;r++)o[a*n+r].ordinal=s*n+r}function v(e,t){return x(t,e).index}function _(e,t){var n,i,o;if(!e.length)return 0;for(n=e.slice(),i=n.shift(),o=1;i;)i.members?[].push.apply(n,i.members):i.children&&(i.measure||(o+=i.children.length),[].push.apply(n,i.children)),i=n.shift();return t.length&&(o*=t.length),o}function b(e){return e||(e={tuples:[]}),e.tuples||(e.tuples=[]),e}function w(e,t,n){var i,o,r,a;if(!e)return 0;for(i=Math.max(n.length,1),o=e.members.slice(0,t),r=o.shift(),a=i;r;)r.name===De?a+=i-1:r.children?[].push.apply(o,r.children):(a++,[].push.apply(o,r.members)),r=o.shift();return a}function k(e,t,n){var i,o,r,a,s,l;if(!t[0])return{parsedRoot:null,tuples:e,memberIndex:0,index:0};if(i=x(e,t[0]),!i.tuple)return{parsedRoot:null,tuples:t,memberIndex:0,index:0};if(o=i.tuple.members,r=t[0].members,a=-1,o.length!==r.length)return{parsedRoot:null,tuples:t,memberIndex:0,index:0};for(s=0,l=o.length;s<l;s++)!o[s].measure&&r[s].children[0]&&(a==-1&&r[s].children.length&&(a=s),o[s].children=r[s].children);return n=Math.max(n.length,1),{parsedRoot:i.tuple,index:i.index*n,memberIndex:a,tuples:e}}function y(e,t){var n,i,o=!0;for(e=e.members,t=t.members,n=0,i=e.length;n<i;n++)e[n].measure||t[n].measure||(o=o&&H(e[n])===H(t[n]));return o}function x(e,t){var n,i,o,r,a,s,l,c=0;for(n=0,i=e.length;n<i;n++){if(o=e[n],y(o,t))return{tuple:o,index:c};for(c++,a=0,s=o.members.length;a<s;a++)if(l=o.members[a],!l.measure&&(r=x(l.children,t),c+=r.index,r.tuple))return{tuple:r.tuple,index:c}}return{index:c}}function C(e,t){var n,i,o,r="";for(i=0,o=e.length;i<o;i++)n=e[i],r+=n.name,t[r]||(t[r]=n)}function S(e,t){var n,i,o,r,a=e.members,s="",l="";for(n=0,i=a.length;n<i;n++){if(o=a[n],r){if(t[s+o.name]){s+=o.name,r=t[s];continue}return t[s+o.parentName]?t[s+o.parentName]:t[l+o.parentName]?t[l+o.parentName]:t[l]}if(s+=o.name,r=t[o.parentName], +!r&&(r=t[s],!r))return null;r&&(l+=r.name)}return r}function T(e,t){var n,i,o,r;if(0===t.length)return-1;for(n=t[0],i=e.members,o=0,r=i.length;o<r;o++)if(i[o].name==n.name)return o}function D(n,i){if(!(i<0)){var o={name:De,measure:!0,children:[e.extend({members:[],dataIndex:n.dataIndex},n.members[i])]};n.members.splice(i,1,o),n.dataIndex=t}}function A(e,t){var n,i,o,r,a,s;if(e.length<1)return[];for(n=[],i={},o=T(e[0],t),r=0;r<e.length;r++)a=e[r],a.dataIndex=r,D(a,o),s=S(a,i),s?s.children.push(o<0||!s.measure?a:a.members[o].children[0]):n.push(a),C(a.members,i);return n}function E(e,t){var n,i,o,r,a,s,l,c,d;if(!e||!e.length)return t;for(n=[],i=M(e),o=i.length,r=Math.max(t.length/o,1),a=0;a<o;a++)for(l=r*a,c=r*i[a],s=0;s<r;s++)d=parseInt(c+s,10),n[parseInt(l+s,10)]=t[d]||{value:"",fmtValue:"",ordinal:d};return n}function I(e,t){var n,i,o,r,a,s,l,c;if(!e||!e.length)return t;for(n=[],i=M(e),o=i.length,r=Math.max(t.length/o,1),s=0;s<r;s++)for(l=o*s,a=0;a<o;a++)c=i[a]+l,n[l+a]=t[c]||{value:"",fmtValue:"",ordinal:c};return n}function M(e){var n,i,o,r,a,s,l;for(e=e.slice(),n=[],i=e.shift();i;){for(i.dataIndex!==t&&n.push(i.dataIndex),a=0,o=0,r=i.members.length;o<r;o++)l=i.members[o],s=l.children,l.measure?[].splice.apply(e,[0,0].concat(s)):[].splice.apply(e,[a,0].concat(s)),a+=s.length;i=e.shift()}return n}function F(e){var t=e.split(".");return t.length>2?t[0]+"."+t[1]:e}function R(e,t){var n=e.length-1,i=e[n],o=P(t,i);return o&&o.dir?i="ORDER("+i+".Children,"+o.field+".CurrentMember.MEMBER_CAPTION,"+o.dir+")":i+=".Children",e[n]=i,e}function P(e,t){for(var n=0,i=e.length;n<i;n++)if(0===t.indexOf(e[n].field))return e[n];return null}function z(e){var t,n="CROSSJOIN({";return e.length>2?(t=e.pop(),n+=z(e)):(n+=e.shift(),t=e.pop()),n+="},{",n+=t,n+="})"}function B(e,t){var n=e.slice(0);return t.length>1&&n.push("{"+L(t).join(",")+"}"),z(n)}function L(e){for(var n,i=0,o=e.length,r=[];i<o;i++)n=e[i],r.push(n.name!==t?n.name:n);return r}function H(e){return e=e.name||e,"[object Array]"===we.call(e)&&(e=e[e.length-1]),e}function N(e){for(var t=e.length,n=[],i=0;i<t;i++)n.push(e[i].name[0]);return n}function O(e,t){var n,i,o,r=0,a=e.length,s=t.length;for(t=t.slice(0);r<a;r++)for(n=e[r],o=0;o<s;o++)if(i=F(t[o]),n.indexOf(i)!==-1){t[o]=n;break}return{names:t,expandedIdx:o,uniquePath:t.slice(0,o+1).join("")}}function V(e){for(var t,n,i,o,r,a,s=[],l=[],c=[],d=0,u=e.length;d<u;d++)if(t=e[d],o=t.name,a=!1,"[object Array]"!==we.call(o)&&(t.name=o=[o]),o.length>1)l.push(t);else{for(r=F(o[0]),n=0,i=c.length;n<i;n++)if(0===c[n].name[0].indexOf(r)){a=!0;break}a||c.push(t),t.expand&&s.push(t)}return s=s.concat(l),{root:c,expanded:s}}function W(e,t,n){var i,o,r,a,s,l,c,d,u="";if(e=e||[],i=V(e),o=i.root,r=N(o),a=[],i=i.expanded,s=i.length,l=0,d=[],r.length>1||t.length>1){for(a.push(B(r,t));l<s;l++)c=R(i[l].name,n),d=O(c,r).names,a.push(B(d,t));u+=a.join(",")}else{for(;l<s;l++)c=R(i[l].name,n),d.push(c[0]);u+=r.concat(d).join(",")}return u}function U(e){var t="",n=e.value,i=e.field,o=e.operator;return"in"==o?(t+="{",t+=n,t+="}"):(t+="neq"==o||"doesnotcontain"==o?"-":"",t+="Filter(",t+=i+".MEMBERS",t+=pe.format(Y[o],i,n),t+=")"),t}function q(e,t){var n,i,o="",r=e.filters,a=r.length;for(i=a-1;i>=0;i--)n="SELECT (",n+=U(r[i]),n+=") ON 0",i==a-1?(n+=" FROM ["+t+"]",o=n):o=n+" FROM ( "+o+" )";return o}function j(e,t,n){var i,o,r="";if(t){r+="<"+e+">";for(o in t)i=t[o],n&&(o=o.replace(/([A-Z]+(?=$|[A-Z][a-z])|[A-Z]?[a-z]+)/g,"$1_").toUpperCase().replace(/_$/,"")),r+="<"+o+">"+i+"</"+o+">";r+="</"+e+">"}else r+="<"+e+"/>";return r}function G(e){if(null==e)return[];var t=we.call(e);return"[object Array]"!==t?[e]:e}function $(e){var t,n,i,o,r={tuples:[]},a=G(pe.getter("Tuples.Tuple",!0)(e)),s=pe.getter("Caption['#text']"),l=pe.getter("UName['#text']"),c=pe.getter("LName['#text']"),d=pe.getter("LNum['#text']"),u=pe.getter("CHILDREN_CARDINALITY['#text']",!0),h=pe.getter("['@Hierarchy']"),p=pe.getter("PARENT_UNIQUE_NAME['#text']",!0);for(t=0;t<a.length;t++){for(n=[],i=G(a[t].Member),o=0;o<i.length;o++)n.push({children:[],caption:s(i[o]),name:l(i[o]),levelName:c(i[o]),levelNum:d(i[o]),hasChildren:parseInt(u(i[o]),10)>0,parentName:p(i[o]),hierarchy:h(i[o])});r.tuples.push({members:n})}return r}var Y,K,Q,X,J,Z,ee,te,ne,ie,oe,re,ae,se,le,ce,de,ue,he,pe=window.kendo,fe=pe.ui,ge=pe.Class,me=fe.Widget,ve=pe.data.DataSource,_e=pe._outerWidth,be=pe._outerHeight,we={}.toString,ke=function(e){return e},ye=e.map,xe=e.extend,Ce=pe.isFunction,Se="change",Te="error",De="Measures",Ae="progress",Ee="stateReset",Ie="auto",Me="<div/>",Fe=".kendoPivotGrid",Re="__row_total__",Pe="dataBinding",ze="dataBound",Be="expandMember",Le="collapseMember",He="k-i-collapse",Ne="k-i-expand",Oe="<span>#: data.member.caption || data.member.name #</span>",Ve='<span class="k-icon k-i-kpi-status-#=data.dataItem.value > 0 ? "open" : data.dataItem.value < 0 ? "deny" : "hold"#" title="#:data.dataItem.value#"></span>',We='<span class="k-icon k-i-kpi-trend-#=data.dataItem.value > 0 ? "increase" : data.dataItem.value < 0 ? "decrease" : "equal"#" title="#:data.dataItem.value#"></span>',Ue='#= data.dataItem ? kendo.htmlEncode(data.dataItem.fmtValue || data.dataItem.value) || " " : " " #',qe='<table class="k-pivot-layout"><tr><td><div class="k-pivot-rowheaders"></div></td><td><div class="k-pivot-table k-state-default"></div></td></tr></table>',je="rows",Ge="columns",$e={sum:function(e,t){var n=t.accumulator;return u(n)?u(e)&&(n+=e):n=e,n},count:function(e,t){return(t.accumulator||0)+1},average:{aggregate:function(e,n){var i=n.accumulator;return n.count===t&&(n.count=0),u(i)?u(e)&&(i+=e):i=e,u(e)&&n.count++,i},result:function(e){var t=e.accumulator;return u(t)&&(t/=e.count),t}},max:function(e,t){var n=t.accumulator;return u(n)||h(n)||(n=e),n<e&&(u(e)||h(e))&&(n=e),n},min:function(e,t){var n=t.accumulator;return u(n)||h(n)||(n=e),n>e&&(u(e)||h(e))&&(n=e),n}},Ye=ge.extend({init:function(e){this.options=xe({},this.options,e),this.dimensions=this._normalizeDescriptors("field",this.options.dimensions),this.measures=this._normalizeDescriptors("name",this.options.measures)},_normalizeDescriptors:function(e,t){var n,i,o,r;if(t=t||{},n={},"[object Array]"===we.call(t)){for(o=0,r=t.length;o<r;o++)i=t[o],"string"==typeof i?n[i]={}:i[e]&&(n[i[e]]=i);t=n}return t},_rootTuples:function(e,n){var i,o,r,a,s=n.length||1,l=this.dimensions||[],c=0,d=e.length,u=[],h=[];if(d||n.length){for(c=0;c<s;c++){for(i={members:[]},a=0;a<d;a++)o=e[a],r=o.split("&"),i.members[i.members.length]={children:[],caption:(l[o]||{}).caption||"All",name:o,levelName:o,levelNum:"0",hasChildren:!0,parentName:r.length>1?r[0]:t,hierarchy:o};s>1&&(i.members[i.members.length]={children:[],caption:n[c].caption,name:n[c].descriptor.name,levelName:"MEASURES",levelNum:"0",hasChildren:!1,parentName:t,hierarchy:"MEASURES"}),u[u.length]=i}h.push(Re)}return{keys:h,tuples:u}},_expandedTuples:function(e,n,i){var o,r,a,s,l,c,d,u,h,p,f,g=i.length||1,m=this.dimensions||[],v=[],_=[];for(a in e){for(s=e[a],d=this._findExpandedMember(n,s.uniquePath),l=v[d.index]||[],c=_[d.index]||[],u=d.member.names,o=0;o<g;o++){for(r={members:[]},f=0;f<u.length;f++)f===d.member.expandedIdx?(r.members[r.members.length]={children:[],caption:s.value,name:s.name,hasChildren:!1,levelNum:1,levelName:s.parentName+s.name,parentName:s.parentName,hierarchy:s.parentName+s.name},0===o&&c.push(se(r,f).join(""))):(p=u[f],h=p.split("&"),r.members[r.members.length]={children:[],caption:(m[p]||{}).caption||"All",name:p,levelName:p,levelNum:"0",hasChildren:!0,parentName:h.length>1?h[0]:t,hierarchy:p});g>1&&(r.members[r.members.length]={children:[],caption:i[o].caption,name:i[o].descriptor.name,levelName:"MEASURES",levelNum:"0",hasChildren:!0,parentName:t,hierarchy:"MEASURES"}),l[l.length]=r}v[d.index]=l,_[d.index]=c}return{keys:_,tuples:v}},_findExpandedMember:function(e,t){for(var n=0;n<e.length;n++)if(e[n].uniquePath===t)return{member:e[n],index:n}},_asTuples:function(e,t,n){var i,o;return n=n||[],i=this._rootTuples(t.root,n),o=this._expandedTuples(e,t.expanded,n),{keys:[].concat.apply(i.keys,o.keys),tuples:[].concat.apply(i.tuples,o.tuples)}},_measuresInfo:function(e,t){for(var n,i,o=0,r=e&&e.length,a=[],s={},l={},c=this.measures||{};o<r;o++)i=e[o].descriptor.name,n=c[i]||{},a.push(i),n.result&&(s[i]=n.result),n.format&&(l[i]=n.format);return{names:a,formats:l,resultFuncs:s,rowAxis:t}},_toDataArray:function(e,t,n,i){var o,r,a,s,l,c,d,u,h,p,f=[],g=1,m=[],v=n.length||1,_=i.length||1;for(t.rowAxis?(m=t.names,g=m.length):p=t.names,a=0;a<v;a++)for(d=e[n[a]||Re],c=0;c<g;c++)for(t.rowAxis&&(p=[m[c]]),s=0;s<_;s++)for(h=i[s]||Re,u=d.items[h],o=h===Re?d.aggregates:u?u.aggregates:{},l=0;l<p.length;l++)r=p[l],this._addData(f,o[r],t.formats[r],t.resultFuncs[r]);return f},_addData:function(e,t,n,i){var o,r="";t&&(t=i?i(t):t.accumulator,r=n?pe.format(n,t):t),o=e.length,e[o]={ordinal:o,value:t||"",fmtValue:r}},_matchDescriptors:function(e,n,i){for(var o,r,a,s,l=n.names,c=n.expandedIdx;c>0;)if(o=l[--c].split("&"),o.length>1&&(r=o[0],a=o[1],s=i[r](e),s=s!==t&&null!==s?""+s:s,s!=a))return!1;return!0},_calculateAggregate:function(e,t,n){var i,o,r,a={};for(r=0;r<e.length;r++)o=e[r].descriptor.name,i=n.aggregates[o]||{},i.accumulator=e[r].aggregator(t,i),a[o]=i;return a},_processColumns:function(e,n,i,o,r,a,s,l){for(var c,d,u,h,p,f,g,m,v=r.dataItem,_=0;_<n.length;_++)d=n[_],this._matchDescriptors(v,d,i)&&(m=d.names.slice(0,d.expandedIdx).join(""),f=d.names[d.expandedIdx],c=i[f](v),c=c!==t&&null!==c?""+c:c,g=f,f=f+"&"+c,p=m+f,u=o[p]||{index:s.columnIndex,parentName:g,name:f,uniquePath:m+g,value:c},h=a.items[p]||{aggregates:{}},a.items[p]={index:u.index,aggregates:this._calculateAggregate(e,r,h)},l&&(o[p]||s.columnIndex++,o[p]=u))},_measureAggregators:function(e){var t,n,i,o,r,a,s=e.measures||[],l=this.measures||{},c=[];if(s.length){for(i=0,o=s.length;i<o;i++)if(t=s[i],n=l[t.name],r=null,n){if(a=n.aggregate,"string"==typeof a){if(r=$e[a.toLowerCase()],!r)throw Error("There is no such aggregate function");n.aggregate=r.aggregate||r,n.result=r.result}c.push({descriptor:t,caption:n.caption,result:n.result,aggregator:d(n)})}}else c.push({descriptor:{name:"default"},caption:"default",aggregator:function(){return 1}});return c},_buildGetters:function(e){var t,n,i,r={};for(i=0;i<e.length;i++)n=e[i],t=n.split("&"),t.length>1?r[t[0]]=pe.getter(t[0],!0):r[n]=pe.getter(o(n),!0);return r},_parseDescriptors:function(e){var t,n=V(e),i=N(n.root),o=n.expanded,r=[];for(t=0;t<o.length;t++)r.push(O(o[t].name,i));return{root:i,expanded:r}},_filter:function(e,t){var n,i,o;if(!t)return e;for(i=0,o=t.filters;i<o.length;i++)n=o[i],"in"===n.operator&&(o[i]=this._normalizeFilter(n));return new pe.data.Query(e).filter(t).data},_normalizeFilter:function(e){var t,n=e.value.split(","),i=[];if(!n.length)return n;for(t=0;t<n.length;t++)i.push({field:e.field,operator:"eq",value:n[t]});return{logic:"or",filters:i}},process:function(e,n){var o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C,S,T,D,A,E,I,M,F,R;if(e=e||[],n=n||{},e=this._filter(e,n.filter),o=n.measures||[],r="rows"===n.measuresAxis,a=n.columns||[],s=n.rows||[],!a.length&&s.length&&(!o.length||o.length&&r)&&(a=s,s=[],r=!1),a.length||s.length||(r=!1),!a.length&&o.length&&(a=i(n.measures)),a=this._parseDescriptors(a),s=this._parseDescriptors(s),l={},c={},d={},h={columnIndex:0},p=this._measureAggregators(n),f=this._buildGetters(a.root),g=this._buildGetters(s.root),m=!1,v=a.expanded,_=s.expanded,k=0!==_.length,F=e.length,R=0,a.root.length||s.root.length)for(m=!0,R=0;R<F;R++)for(b=e[R],w={dataItem:b,index:R},S=l[Re]||{items:{},aggregates:{}},this._processColumns(p,v,f,c,w,S,h,!k),S.aggregates=this._calculateAggregate(p,w,S),l[Re]=S,y=0;y<_.length;y++)x=_[y],this._matchDescriptors(b,x,g)?(D=x.names.slice(0,x.expandedIdx).join(""),C=x.names[x.expandedIdx],A=C,u=g[C](b),u=u!==t?""+u:u,C=C+"&"+u,T=D+C,d[T]={uniquePath:D+A,parentName:A,name:C,value:u},E=l[T]||{items:{},aggregates:{}},this._processColumns(p,v,f,c,w,E,h,!0),E.aggregates=this._calculateAggregate(p,w,E),l[T]=E):this._processColumns(p,v,f,c,w,{items:{},aggregates:{}},h,!0);return m&&F?(!(p.length>1)||n.columns&&n.columns.length||(a={root:[],expanded:[]}),I=this._asTuples(c,a,r?[]:p),M=this._asTuples(d,s,r?p:[]),c=I.tuples,d=M.tuples,l=this._toDataArray(l,this._measuresInfo(p,r),M.keys,I.keys)):l=c=d=[],{axes:{columns:{tuples:c},rows:{tuples:d}},data:l}}}),Ke=ge.extend({init:function(e,t){this.transport=t,this.options=t.options||{},this.transport.discover||Ce(e.discover)&&(this.discover=e.discover)},read:function(e){return this.transport.read(e)},update:function(e){return this.transport.update(e)},create:function(e){return this.transport.create(e)},destroy:function(e){return this.transport.destroy(e)},discover:function(e){return this.transport.discover?this.transport.discover(e):(e.success({}),t)},catalog:function(n){var i,o=this.options||{};return n===t?(o.connection||{}).catalog:(i=o.connection||{},i.catalog=n,this.options.connection=i,e.extend(this.transport.options,{connection:i}),t)},cube:function(e){var n,i=this.options||{};return e===t?(i.connection||{}).cube:(n=i.connection||{},n.cube=e,this.options.connection=n,xe(!0,this.transport.options,{connection:n}),t)}}),Qe=ve.extend({init:function(t){var o,r=((t||{}).schema||{}).cube,a="columns",s={axes:ke,cubes:ke,catalogs:ke,measures:ke,dimensions:ke,hierarchies:ke,levels:ke,members:ke};r&&(s=e.extend(s,this._cubeSchema(r)),this.cubeBuilder=new Ye(r)),ve.fn.init.call(this,xe(!0,{},{schema:s},t)),this.transport=new Ke(this.options.transport||{},this.transport),this._columns=i(this.options.columns),this._rows=i(this.options.rows),o=this.options.measures||[],"[object Object]"===we.call(o)&&(a=o.axis||"columns",o=o.values||[]),this._measures=n(o),this._measuresAxis=a,this._skipNormalize=0,this._axes={}},_cubeSchema:function(t){return{dimensions:function(){var e,n=[],i=t.dimensions;for(e in i)n.push({name:e,caption:i[e].caption||e,uniqueName:e,defaultHierarchy:e,type:1});return t.measures&&n.push({name:De,caption:De,uniqueName:De,type:2}),n},hierarchies:function(){return[]},measures:function(){var e,n=[],i=t.measures;for(e in i)n.push({name:e,caption:e,uniqueName:e,aggregator:e});return n},members:e.proxy(function(e,n){var i,r,a=n.levelUniqueName||n.memberUniqueName,s=this.options.schema.data,l=Ce(s)?s:pe.getter(s,!0),c=this.options.data&&l(this.options.data)||this._rawData||[],d=[],u=0,h={};if(a&&(a=a.split(".")[0]),!n.treeOp)return d.push({caption:t.dimensions[a].caption||a,childrenCardinality:"1",dimensionUniqueName:a,hierarchyUniqueName:a,levelUniqueName:a,name:a,uniqueName:a}),d;for(i=pe.getter(o(a),!0);u<c.length;u++)r=i(c[u]),!r&&0!==r||h[r]||(h[r]=!0,d.push({caption:r,childrenCardinality:"0",dimensionUniqueName:a,hierarchyUniqueName:a,levelUniqueName:a,name:r,uniqueName:r}));return d},this)}},options:{serverSorting:!0,serverPaging:!0,serverFiltering:!0,serverGrouping:!0,serverAggregates:!0},catalog:function(e){return e===t?this.transport.catalog():(this.transport.catalog(e),this._mergeState({}),this._axes={},this.data([]),t)},cube:function(e){return e===t?this.transport.cube():(this.transport.cube(e),this._axes={},this._mergeState({}),this.data([]),t)},axes:function(){return this._axes},columns:function(e){return e===t?this._columns:(this._skipNormalize+=1,this._clearAxesData=!0,this._columns=i(e),this.query({columns:e,rows:this.rowsAxisDescriptors(),measures:this.measures(),sort:this.sort(),filter:this.filter()}),t)},rows:function(e){return e===t?this._rows:(this._skipNormalize+=1,this._clearAxesData=!0,this._rows=i(e),this.query({columns:this.columnsAxisDescriptors(),rows:e,measures:this.measures(),sort:this.sort(),filter:this.filter()}),t)},measures:function(e){return e===t?this._measures:(this._skipNormalize+=1,this._clearAxesData=!0,this.query({columns:this.columnsAxisDescriptors(),rows:this.rowsAxisDescriptors(),measures:n(e),sort:this.sort(),filter:this.filter()}),t)},measuresAxis:function(){return this._measuresAxis||"columns"},_expandPath:function(e,t){var n,o,r,a="columns"===t?"columns":"rows",s="columns"===t?"rows":"columns",l=i(e),d=H(l[l.length-1]);for(this._lastExpanded=a,l=c(this.axes()[a],l,this.measures()),n=0;n<l.length;n++)if(o=H(l[n]),o===d){if(l[n].expand)return;l[n].expand=!0}else l[n].expand=!1;r={},r[a]=l,r[s]=this._descriptorsForAxis(s),this._query(r)},_descriptorsForAxis:function(e){var t=this.axes(),n=this[e]()||[];return t&&t[e]&&t[e].tuples&&t[e].tuples[0]&&(n=a(t[e].tuples||[])),n},columnsAxisDescriptors:function(){return this._descriptorsForAxis("columns")},rowsAxisDescriptors:function(){return this._descriptorsForAxis("rows")},_process:function(e,t){this._view=e,t=t||{},t.items=t.items||this._view,this.trigger(Se,t)},_query:function(e){var t=this;return e||(this._skipNormalize+=1,this._clearAxesData=!0),t.query(xe({},{page:t.page(),pageSize:t.pageSize(),sort:t.sort(),filter:t.filter(),group:t.group(),aggregate:t.aggregate(),columns:this.columnsAxisDescriptors(),rows:this.rowsAxisDescriptors(),measures:this.measures()},e))},query:function(t){var n=this._mergeState(t);return this._data.length&&this.cubeBuilder?(this._params(n),this._updateLocalData(this._pristineData),e.Deferred().resolve().promise()):this.read(n)},_mergeState:function(e){return e=ve.fn._mergeState.call(this,e),e!==t&&(this._measures=n(e.measures),e.columns?e.columns=i(e.columns):e.columns||(this._columns=[]),e.rows?e.rows=i(e.rows):e.rows||(this._rows=[])),e},filter:function(e){return e===t?this._filter:(this._skipNormalize+=1,this._clearAxesData=!0,this._query({filter:e,page:1}),t)},expandColumn:function(e){this._expandPath(e,"columns")},expandRow:function(e){this._expandPath(e,"rows")},success:function(e){var t;this.cubeBuilder&&(t=(this.reader.data(e)||[]).slice(0)),ve.fn.success.call(this,e),t&&(this._pristineData=t)},_processResult:function(e,t){var n,i,o,r,a,s,l,c,d,u,h;return this.cubeBuilder&&(n=this.cubeBuilder.process(e,this._requestData),e=n.data,t=n.axes),c=this.columns(),d=this.rows(),u=t.columns&&t.columns.tuples,c.length||!d.length||!u||!this._rowMeasures().length&&this.measures().length||(t={columns:{},rows:t.columns}),c.length||d.length||"rows"!==this.measuresAxis()||!u||(t={columns:{},rows:t.columns}),this._axes={columns:b(this._axes.columns),rows:b(this._axes.rows)},t={columns:b(t.columns),rows:b(t.rows)},i=this._normalizeTuples(t.columns.tuples,this._axes.columns.tuples,c,this._columnMeasures()),o=this._normalizeTuples(t.rows.tuples,this._axes.rows.tuples,d,this._rowMeasures()),this._skipNormalize>0&&(this._skipNormalize-=1),this.cubeBuilder||(e=this._normalizeData({columnsLength:t.columns.tuples.length,rowsLength:t.rows.tuples.length,columnIndexes:i,rowIndexes:o,data:e})),"rows"==this._lastExpanded?(r=t.columns.tuples,s=this._columnMeasures(),a=f(t.columns,this._axes.columns,s),a&&(l="columns",t.columns=a,g(r,a.tuples,t.rows.tuples.length,s,e),this.cubeBuilder||(e=this._normalizeData({columnsLength:_(t.columns.tuples,s),rowsLength:t.rows.tuples.length,data:e})))):"columns"==this._lastExpanded&&(r=t.rows.tuples,s=this._rowMeasures(),a=f(t.rows,this._axes.rows,s),a&&(l="rows",t.rows=a,m(r,a.tuples,t.columns.tuples.length,s,e),this.cubeBuilder||(e=this._normalizeData({columnsLength:_(t.rows.tuples,s),rowsLength:t.columns.tuples.length,data:e})))),this._lastExpanded=null,h=this._mergeAxes(t,e,l),this._axes=h.axes,h.data},_readData:function(e){var t=this.reader.axes(e),n=this.reader.data(e);return this.cubeBuilder&&(this._rawData=n),this._processResult(n,t)},_createTuple:function(e,t,n){var i,o,r,a,s,l,c,d,u=e.members,h=u.length,p={members:[]},f=0;for(t&&(h-=1);f<h;f++)d=u[f],o=+d.levelNum,r=d.name,a=d.parentName,c=d.caption||r,s=d.hasChildren,l=d.hierarchy,i=d.levelName,n&&(c="All",0===o?a=d.name:o-=1,s=!0,r=l=i=a),p.members.push({name:r,children:[],caption:c,levelName:i,levelNum:""+o,hasChildren:s,hierarchy:l,parentName:n?"":a});return t&&p.members.push({name:t.name,children:[]}),p},_hasRoot:function(e,t,n){var i,o,r,a,s,l,c;if(t.length)return x(t,e).tuple;for(i=e.members,a=!0,l=0,c=i.length;l<c;l++)if(o=i[l],s=+o.levelNum||0,r=n[l],!(0===s||r&&o.name===H(r))){a=!1;break}return a},_mergeAxes:function(e,t,n){var i,o,r,a,s,l=this._columnMeasures(),c=this._rowMeasures(),d=this.axes(),u=_(d.rows.tuples,c),h=e.rows.tuples.length,p=_(d.columns.tuples,l),f=e.columns.tuples.length;return"columns"==n?(f=p,o=e.columns.tuples):(o=A(e.columns.tuples,l),t=I(o,t)),r=k(d.columns.tuples,o,l),"rows"==n?(h=_(e.rows.tuples,c),o=e.rows.tuples):(o=A(e.rows.tuples,c),t=E(o,t)),a=k(d.rows.tuples,o,c),d.columns.tuples=r.tuples,d.rows.tuples=a.tuples,p!==_(d.columns.tuples,l)?(i=r.index+w(r.parsedRoot,r.memberIndex,l),s=p+f,t=this._mergeColumnData(t,i,h,f,s)):u!==_(d.rows.tuples,c)&&(i=a.index+w(a.parsedRoot,a.memberIndex,c),t=this._mergeRowData(t,i,h,f)),0===d.columns.tuples.length&&0===d.rows.tuples.length&&(t=[]),{axes:d,data:t}},_mergeColumnData:function(e,t,n,i,o){var r,a,s,l=this.data().toJSON(),c=0,d=Math.max(this._columnMeasures().length,1);for(n=Math.max(n,1),l.length>0&&(c=d,o-=d),r=0;r<n;r++)a=t+r*o,s=e.splice(0,i),s.splice(0,c),[].splice.apply(l,[a,0].concat(s));return l},_mergeRowData:function(e,t,n,i){var o,r,a,s=this.data().toJSON(),l=Math.max(this._rowMeasures().length,1);for(i=Math.max(i,1),s.length>0&&(n-=l,e.splice(0,i*l)),o=0;o<n;o++)a=e.splice(0,i),r=t*i+o*i,[].splice.apply(s,[r,0].concat(a));return s},_columnMeasures:function(){var e=this.measures(),t=[];return"columns"===this.measuresAxis()&&(0===this.columns().length?t=e:e.length>1&&(t=e)),t},_rowMeasures:function(){var e=this.measures(),t=[];return"rows"===this.measuresAxis()&&(0===this.rows().length?t=e:e.length>1&&(t=e)),t},_updateLocalData:function(e,t){this.cubeBuilder&&(t&&(this._requestData=t),e=this._processResult(e)),this._data=this._observe(e),this._ranges=[],this._addRange(this._data),this._total=this._data.length,this._pristineTotal=this._total,this._process(this._data)},data:function(e){var n=this;return e===t?n._data:(this._pristineData=e.slice(0),this._updateLocalData(e,{columns:this.columns(),rows:this.rows(),measures:this.measures()}),t)},_normalizeTuples:function(e,t,n,i){var o,r,a,s=i.length||1,l=0,c=[],d={},u=0;if(e.length){if(this._skipNormalize<=0&&!this._hasRoot(e[0],t,n)){for(this._skipNormalize=0;l<s;l++)c.push(this._createTuple(e[0],i[l],!0)),d[l]=l;e.splice.apply(e,[0,e.length].concat(c).concat(e)),l=s}if(i.length)for(a=o=e[l],r=o.members.length-1;o;){if(u>=s&&(u=0),o.members[r].name!==i[u].name&&(e.splice(l,0,this._createTuple(o,i[u])),d[l]=l),l+=1,u+=1,o=e[l],s>u&&(!o||le(a,r-1)!==le(o,r-1))){for(;u<s;u++)e.splice(l,0,this._createTuple(a,i[u])),d[l]=l,l+=1;o=e[l]}a=o}return d}},_addMissingDataItems:function(e,n){for(;n.rowIndexes[parseInt(e.length/n.columnsLength,10)]!==t;)for(var i=0;i<n.columnsLength;i++)e=p(e);for(;n.columnIndexes[e.length%n.columnsLength]!==t;)e=p(e);return e},_normalizeOrdinals:function(e,t,n){var i=n.lastOrdinal;if(!t)return p(e);if(t.ordinal-i>1)for(i+=1;i<t.ordinal&&e.length<n.length;)e=this._addMissingDataItems(p(e),n),i+=1;return t.ordinal=e.length,e[e.length]=t,e},_normalizeData:function(e){var t,n,i,o=e.data,r=0,a=[];if(e.lastOrdinal=0,e.columnIndexes=e.columnIndexes||{},e.rowIndexes=e.rowIndexes||{},e.columnsLength=e.columnsLength||1,e.rowsLength=e.rowsLength||1,e.length=e.columnsLength*e.rowsLength,i=e.length,o.length===i)return o;for(;a.length<i;)t=o[r++],t&&(n=t.ordinal),a=this._normalizeOrdinals(this._addMissingDataItems(a,e),t,e),e.lastOrdinal=n;return a},discover:function(t,n){var i=this,o=i.transport;return e.Deferred(function(e){o.discover(xe({success:function(t){t=i.reader.parse(t),i._handleCustomErrors(t)||(n&&(t=n(t)),e.resolve(t))},error:function(t,n,o){e.reject(t),i.error(t,n,o)}},t))}).promise().done(function(){i.trigger("schemaChange")})},schemaMeasures:function(){var e=this;return e.discover({data:{command:"schemaMeasures",restrictions:{catalogName:e.transport.catalog(),cubeName:e.transport.cube()}}},function(t){return e.reader.measures(t)})},schemaKPIs:function(){var e=this;return e.discover({data:{command:"schemaKPIs",restrictions:{catalogName:e.transport.catalog(),cubeName:e.transport.cube()}}},function(t){return e.reader.kpis(t)})},schemaDimensions:function(){var e=this;return e.discover({data:{command:"schemaDimensions",restrictions:{catalogName:e.transport.catalog(),cubeName:e.transport.cube()}}},function(t){return e.reader.dimensions(t)})},schemaHierarchies:function(e){var t=this;return t.discover({data:{command:"schemaHierarchies",restrictions:{catalogName:t.transport.catalog(),cubeName:t.transport.cube(),dimensionUniqueName:e}}},function(e){return t.reader.hierarchies(e)})},schemaLevels:function(e){var t=this;return t.discover({data:{command:"schemaLevels",restrictions:{catalogName:t.transport.catalog(),cubeName:t.transport.cube(),hierarchyUniqueName:e}}},function(e){return t.reader.levels(e)})},schemaCubes:function(){var e=this;return e.discover({data:{command:"schemaCubes",restrictions:{catalogName:e.transport.catalog()}}},function(t){return e.reader.cubes(t)})},schemaCatalogs:function(){var e=this;return e.discover({data:{command:"schemaCatalogs"}},function(t){return e.reader.catalogs(t)})},schemaMembers:function(e){var t=this,n=function(e){return function(n){return t.reader.members(n,e)}}(e);return t.discover({data:{command:"schemaMembers",restrictions:xe({catalogName:t.transport.catalog(),cubeName:t.transport.cube()},e)}},n)},_params:function(e){this._clearAxesData&&(this._axes={},this._data=this._observe([]),this._clearAxesData=!1,this.trigger(Ee));var t=ve.fn._params.call(this,e);return t=xe({measures:this.measures(),measuresAxis:this.measuresAxis(),columns:this.columns(),rows:this.rows()},t),this.cubeBuilder&&(this._requestData=t),t}});Qe.create=function(e){e=e&&e.push?{data:e}:e;var t=e||{},n=t.data;if(t.data=n,!(t instanceof Qe)&&t instanceof pe.data.DataSource)throw Error("Incorrect DataSource type. Only PivotDataSource instances are supported");return t instanceof Qe?t:new Qe(t)},Y={contains:', InStr({0}.CurrentMember.MEMBER_CAPTION,"{1}") > 0',doesnotcontain:', InStr({0}.CurrentMember.MEMBER_CAPTION,"{1}")',startswith:', Left({0}.CurrentMember.MEMBER_CAPTION,Len("{1}"))="{1}"',endswith:', Right({0}.CurrentMember.MEMBER_CAPTION,Len("{1}"))="{1}"',eq:', {0}.CurrentMember.MEMBER_CAPTION = "{1}"',neq:', {0}.CurrentMember.MEMBER_CAPTION = "{1}"'},K={schemaCubes:"MDSCHEMA_CUBES",schemaCatalogs:"DBSCHEMA_CATALOGS",schemaMeasures:"MDSCHEMA_MEASURES",schemaDimensions:"MDSCHEMA_DIMENSIONS",schemaHierarchies:"MDSCHEMA_HIERARCHIES",schemaLevels:"MDSCHEMA_LEVELS",schemaMembers:"MDSCHEMA_MEMBERS",schemaKPIs:"MDSCHEMA_KPIS"},Q={read:function(e){var t,n,i,o,r,a='<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Header/><Body><Execute xmlns="urn:schemas-microsoft-com:xml-analysis"><Command><Statement>';return a+="SELECT NON EMPTY {",t=e.columns||[],n=e.rows||[],i=e.measures||[],o="rows"===e.measuresAxis,r=e.sort||[],!t.length&&n.length&&(!i.length||i.length&&o)&&(t=n,n=[],o=!1),t.length||n.length||(o=!1),t.length?a+=W(t,o?[]:i,r):i.length&&!o&&(a+=L(i).join(",")),a+="} DIMENSION PROPERTIES CHILDREN_CARDINALITY, PARENT_UNIQUE_NAME ON COLUMNS",(n.length||o&&i.length>1)&&(a+=", NON EMPTY {",a+=n.length?W(n,o?i:[],r):L(i).join(","),a+="} DIMENSION PROPERTIES CHILDREN_CARDINALITY, PARENT_UNIQUE_NAME ON ROWS"),e.filter?(a+=" FROM ",a+="(",a+=q(e.filter,e.connection.cube),a+=")"):a+=" FROM ["+e.connection.cube+"]",1==i.length&&t.length&&(a+=" WHERE ("+L(i).join(",")+")"),a+="</Statement></Command><Properties><PropertyList><Catalog>"+e.connection.catalog+"</Catalog><Format>Multidimensional</Format></PropertyList></Properties></Execute></Body></Envelope>",a.replace(/\&/g,"&")},discover:function(t){t=t||{};var n='<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Header/><Body><Discover xmlns="urn:schemas-microsoft-com:xml-analysis">';return n+="<RequestType>"+(K[t.command]||t.command)+"</RequestType>",n+="<Restrictions>"+j("RestrictionList",t.restrictions,!0)+"</Restrictions>",t.connection&&t.connection.catalog&&(t.properties=e.extend({},{Catalog:t.connection.catalog},t.properties)),n+="<Properties>"+j("PropertyList",t.properties)+"</Properties>",n+="</Discover></Body></Envelope>"}},X=pe.data.RemoteTransport.extend({init:function(e){var t=e;e=this.options=xe(!0,{},this.options,e),pe.data.RemoteTransport.call(this,e),Ce(t.discover)?this.discover=t.discover:"string"==typeof t.discover?this.options.discover={url:t.discover}:t.discover||(this.options.discover=this.options.read)},setup:function(t,n){return t.data=t.data||{},e.extend(!0,t.data,{connection:this.options.connection}),pe.data.RemoteTransport.fn.setup.call(this,t,n)},options:{read:{dataType:"text",contentType:"text/xml",type:"POST"},discover:{dataType:"text",contentType:"text/xml",type:"POST"},parameterMap:function(e,t){return Q[t](e,t)}},discover:function(t){return e.ajax(this.setup(t,"discover"))}}),J={cubes:{name:pe.getter("CUBE_NAME['#text']",!0),caption:pe.getter("CUBE_CAPTION['#text']",!0),description:pe.getter("DESCRIPTION['#text']",!0),type:pe.getter("CUBE_TYPE['#text']",!0)},catalogs:{name:pe.getter("CATALOG_NAME['#text']",!0),description:pe.getter("DESCRIPTION['#text']",!0)},measures:{name:pe.getter("MEASURE_NAME['#text']",!0),caption:pe.getter("MEASURE_CAPTION['#text']",!0),uniqueName:pe.getter("MEASURE_UNIQUE_NAME['#text']",!0),description:pe.getter("DESCRIPTION['#text']",!0),aggregator:pe.getter("MEASURE_AGGREGATOR['#text']",!0),groupName:pe.getter("MEASUREGROUP_NAME['#text']",!0),displayFolder:pe.getter("MEASURE_DISPLAY_FOLDER['#text']",!0),defaultFormat:pe.getter("DEFAULT_FORMAT_STRING['#text']",!0)},kpis:{name:pe.getter("KPI_NAME['#text']",!0),caption:pe.getter("KPI_CAPTION['#text']",!0),value:pe.getter("KPI_VALUE['#text']",!0),goal:pe.getter("KPI_GOAL['#text']",!0),status:pe.getter("KPI_STATUS['#text']",!0),trend:pe.getter("KPI_TREND['#text']",!0),statusGraphic:pe.getter("KPI_STATUS_GRAPHIC['#text']",!0),trendGraphic:pe.getter("KPI_TREND_GRAPHIC['#text']",!0),description:pe.getter("KPI_DESCRIPTION['#text']",!0),groupName:pe.getter("MEASUREGROUP_NAME['#text']",!0)},dimensions:{name:pe.getter("DIMENSION_NAME['#text']",!0),caption:pe.getter("DIMENSION_CAPTION['#text']",!0),description:pe.getter("DESCRIPTION['#text']",!0),uniqueName:pe.getter("DIMENSION_UNIQUE_NAME['#text']",!0),defaultHierarchy:pe.getter("DEFAULT_HIERARCHY['#text']",!0),type:pe.getter("DIMENSION_TYPE['#text']",!0)},hierarchies:{name:pe.getter("HIERARCHY_NAME['#text']",!0),caption:pe.getter("HIERARCHY_CAPTION['#text']",!0),description:pe.getter("DESCRIPTION['#text']",!0),uniqueName:pe.getter("HIERARCHY_UNIQUE_NAME['#text']",!0),dimensionUniqueName:pe.getter("DIMENSION_UNIQUE_NAME['#text']",!0),displayFolder:pe.getter("HIERARCHY_DISPLAY_FOLDER['#text']",!0),origin:pe.getter("HIERARCHY_ORIGIN['#text']",!0),defaultMember:pe.getter("DEFAULT_MEMBER['#text']",!0)},levels:{name:pe.getter("LEVEL_NAME['#text']",!0),caption:pe.getter("LEVEL_CAPTION['#text']",!0),description:pe.getter("DESCRIPTION['#text']",!0),uniqueName:pe.getter("LEVEL_UNIQUE_NAME['#text']",!0),dimensionUniqueName:pe.getter("DIMENSION_UNIQUE_NAME['#text']",!0),displayFolder:pe.getter("LEVEL_DISPLAY_FOLDER['#text']",!0),orderingProperty:pe.getter("LEVEL_ORDERING_PROPERTY['#text']",!0),origin:pe.getter("LEVEL_ORIGIN['#text']",!0),hierarchyUniqueName:pe.getter("HIERARCHY_UNIQUE_NAME['#text']",!0)},members:{name:pe.getter("MEMBER_NAME['#text']",!0),caption:pe.getter("MEMBER_CAPTION['#text']",!0),uniqueName:pe.getter("MEMBER_UNIQUE_NAME['#text']",!0),dimensionUniqueName:pe.getter("DIMENSION_UNIQUE_NAME['#text']",!0),hierarchyUniqueName:pe.getter("HIERARCHY_UNIQUE_NAME['#text']",!0),levelUniqueName:pe.getter("LEVEL_UNIQUE_NAME['#text']",!0),childrenCardinality:pe.getter("CHILDREN_CARDINALITY['#text']",!0)}},Z=["axes","catalogs","cubes","dimensions","hierarchies","levels","measures"],ee=pe.data.XmlDataReader.extend({init:function(e){pe.data.XmlDataReader.call(this,e),this._extend(e)},_extend:function(e){for(var t,n,i=0,o=Z.length;i<o;i++)t=Z[i], +n=e[t],n&&n!==ke&&(this[t]=n)},parse:function(e){var t=pe.data.XmlDataReader.fn.parse(e.replace(/<(\/?)(\w|-)+:/g,"<$1"));return pe.getter("['Envelope']['Body']",!0)(t)},errors:function(e){var t=pe.getter("['Fault']",!0)(e);return t?[{faultstring:pe.getter("faultstring['#text']",!0)(t),faultcode:pe.getter("faultcode['#text']",!0)(t)}]:null},axes:function(e){var t,n,i,o;for(e=pe.getter('ExecuteResponse["return"].root',!0)(e),t=G(pe.getter("Axes.Axis",!0)(e)),i={columns:{},rows:{}},o=0;o<t.length;o++)n=t[o],"sliceraxis"!==n["@name"].toLowerCase()&&(i.columns.tuples?i.rows=$(n):i.columns=$(n));return i},data:function(e){var t,n,i,o,r,a;for(e=pe.getter('ExecuteResponse["return"].root',!0)(e),t=G(pe.getter("CellData.Cell",!0)(e)),n=[],i=pe.getter("['@CellOrdinal']"),o=pe.getter("Value['#text']"),r=pe.getter("FmtValue['#text']"),a=0;a<t.length;a++)n.push({value:o(t[a]),fmtValue:r(t[a]),ordinal:parseInt(i(t[a]),10)});return n},_mapSchema:function(e,t){var n,i,o,r,a;for(e=pe.getter('DiscoverResponse["return"].root',!0)(e),n=G(pe.getter("row",!0)(e)),i=[],o=0;o<n.length;o++){r={};for(a in t)r[a]=t[a](n[o]);i.push(r)}return i},measures:function(e){return this._mapSchema(e,J.measures)},kpis:function(e){return this._mapSchema(e,J.kpis)},hierarchies:function(e){return this._mapSchema(e,J.hierarchies)},levels:function(e){return this._mapSchema(e,J.levels)},dimensions:function(e){return this._mapSchema(e,J.dimensions)},cubes:function(e){return this._mapSchema(e,J.cubes)},catalogs:function(e){return this._mapSchema(e,J.catalogs)},members:function(e){return this._mapSchema(e,J.members)}}),xe(!0,pe.data,{PivotDataSource:Qe,XmlaTransport:X,XmlaDataReader:ee,PivotCubeBuilder:Ye,transports:{xmla:X},readers:{xmla:ee}}),te=function(e,t){if(!e)return null;for(var n=0,i=e.length;n<i;n++)if(e[n].field===t)return e[n];return null},ne=function(e,t){var n,i,o=[];for(n=0,i=e.length;n<i;n++)e[n].field!==t&&o.push(e[n]);return o},pe.ui.PivotSettingTarget=me.extend({init:function(t,n){var i=this;me.fn.init.call(i,t,n),i.element.addClass("k-pivot-setting"),i.dataSource=pe.data.PivotDataSource.create(n.dataSource),i._refreshHandler=e.proxy(i.refresh,i),i.dataSource.first(Se,i._refreshHandler),n.template||(i.options.template="<div data-"+pe.ns+'name="${data.name || data}">${data.name || data}'+(i.options.enabled?'<a class="k-button k-button-icon k-bare"><span class="k-icon k-i-close k-setting-delete"></span></a>':"")+"</div>"),i.template=pe.template(i.options.template),i.emptyTemplate=pe.template(i.options.emptyTemplate),i._sortable(),i.element.on("click"+Fe,".k-button,.k-item",function(t){var n=e(t.target),o=n.closest("["+pe.attr("name")+"]").attr(pe.attr("name"));o&&(n.hasClass("k-i-close")?i.remove(o):i.options.sortable&&n[0]===t.currentTarget&&i.sort({field:o,dir:n.find(".k-i-sort-asc-sm")[0]?"desc":"asc"}))}),(n.filterable||n.sortable)&&(i.fieldMenu=new fe.PivotFieldMenu(i.element,{messages:i.options.messages.fieldMenu,filter:".k-setting-fieldmenu",filterable:n.filterable,sortable:n.sortable,dataSource:i.dataSource})),i.refresh()},options:{name:"PivotSettingTarget",template:null,filterable:!1,sortable:!1,emptyTemplate:"<div class='k-empty'>${data}</div>",setting:"columns",enabled:!0,messages:{empty:"Drop Fields Here"}},setDataSource:function(e){this.dataSource.unbind(Se,this._refreshHandler),this.dataSource=this.options.dataSource=e,this.fieldMenu&&this.fieldMenu.setDataSource(e),e.first(Se,this._refreshHandler),this.refresh()},_sortable:function(){var e=this;e.options.enabled&&(this.sortable=this.element.kendoSortable({connectWith:this.options.connectWith,hint:e.options.hint,cursor:"move",start:function(e){e.item.focus().blur()},change:function(t){var n=t.item.attr(pe.attr("name"));"receive"==t.action?e.add(n):"remove"==t.action?e.remove(n):"sort"==t.action&&e.move(n,t.newIndex)}}).data("kendoSortable"))},_indexOf:function(e,t){var n,i,o=-1;for(n=0,i=t.length;n<i;n++)if(H(t[n])===e){o=n;break}return o},_isKPI:function(e){return"kpi"===e.type||e.measure},validate:function(e){var t,n,i=2==e.type||"aggregator"in e||this._isKPI(e);return i?"measures"===this.options.setting:"measures"===this.options.setting?i:(t=this.dataSource[this.options.setting](),n=e.defaultHierarchy||e.uniqueName,!(this._indexOf(n,t)>-1)&&(t=this.dataSource["columns"===this.options.setting?"rows":"columns"](),!(this._indexOf(n,t)>-1)))},add:function(t){var n,i,o=this.dataSource[this.options.setting]();for(t=e.isArray(t)?t.slice(0):[t],n=0,i=t.length;n<i;n++)this._indexOf(t[n],o)!==-1&&(t.splice(n,1),n-=1,i-=1);t.length&&(o=o.concat(t),this.dataSource[this.options.setting](o))},move:function(e,t){var n=this.dataSource[this.options.setting](),i=this._indexOf(e,n);i>-1&&(e=n.splice(i,1)[0],n.splice(t,0,e),this.dataSource[this.options.setting](n))},remove:function(e){var t=this.dataSource[this.options.setting](),n=this._indexOf(e,t),i=this.dataSource.sort(),o=this.dataSource.filter();n>-1&&(o&&(o.filters=ne(o.filters,e),this.dataSource._filter.filters=o.filters,o.filters.length||(this.dataSource._filter=null)),i&&(i=ne(i,e),this.dataSource._sort=i),t.splice(n,1),this.dataSource[this.options.setting](t))},sort:function(e){var t=this.options.sortable,n=t===!0||t.allowUnsort,i=n&&"asc"===e.dir,o=this.dataSource.sort()||[],r=ne(o,e.field);i&&o.length!==r.length&&(e=null),e&&r.push(e),this.dataSource.sort(r)},refresh:function(){var e,n="",i=this.dataSource[this.options.setting](),o=i.length,r=0;if(o)for(;r<o;r++)e=i[r],e=e.name===t?{name:e}:e,n+=this.template(xe({sortIcon:this._sortIcon(e.name)},e));else n=this.emptyTemplate(this.options.messages.empty);this.element.html(n)},destroy:function(){me.fn.destroy.call(this),this.dataSource.unbind(Se,this._refreshHandler),this.element.off(Fe),this.sortable&&this.sortable.destroy(),this.fieldMenu&&this.fieldMenu.destroy(),this.element=null,this._refreshHandler=null},_sortIcon:function(e){var t=this.dataSource.sort(),n=te(t,H(e)),i="";return n&&(i="k-i-sort-"+n.dir),i}}),ie=me.extend({init:function(n,i){var o,r,a=this;me.fn.init.call(a,n,i),a._dataSource(),a._bindConfigurator(),a._wrapper(),a._createLayout(),a._columnBuilder=o=new ce,a._rowBuilder=r=new de,a._contentBuilder=new ue,a._templates(),a.columnsHeader.add(a.rowsHeader).on("click","span.k-icon",function(){var n,i,s,l,c=e(this),d=o,u="expandColumn",h=c.attr(pe.attr("path")),p={axis:"columns",path:e.parseJSON(h)};c.parent().is("td")&&(d=r,u="expandRow",p.axis="rows"),i=c.hasClass(He),s=d.metadata[h],l=s.expanded===t,n=i?Le:Be,p.childrenLoaded=s.maxChildren>s.children,a.trigger(n,p)||(d.metadata[h].expanded=!i,c.toggleClass(He,!i).toggleClass(Ne,i),!i&&l?a.dataSource[u](p.path):a.refresh())}),a._scrollable(),a.options.autoBind&&a.dataSource.fetch(),pe.notify(a)},events:[Pe,ze,Be,Le],options:{name:"PivotGrid",autoBind:!0,reorderable:!0,filterable:!1,sortable:!1,height:null,columnWidth:100,configurator:"",columnHeaderTemplate:null,rowHeaderTemplate:null,dataCellTemplate:null,kpiStatusTemplate:null,kpiTrendTemplate:null,messages:{measureFields:"Drop Data Fields Here",columnFields:"Drop Column Fields Here",rowFields:"Drop Rows Fields Here"}},_templates:function(){var e=this.options.columnHeaderTemplate,t=this.options.rowHeaderTemplate,n=this.options.dataCellTemplate,i=this.options.kpiStatusTemplate,o=this.options.kpiTrendTemplate;this._columnBuilder.template=pe.template(e||Oe,{useWithBlock:!!e}),this._contentBuilder.dataTemplate=pe.template(n||Ue,{useWithBlock:!!n}),this._contentBuilder.kpiStatusTemplate=pe.template(i||Ve,{useWithBlock:!!i}),this._contentBuilder.kpiTrendTemplate=pe.template(o||We,{useWithBlock:!!o}),this._rowBuilder.template=pe.template(t||Oe,{useWithBlock:!!t})},_bindConfigurator:function(){var t=this.options.configurator;t&&e(t).kendoPivotConfigurator("setDataSource",this.dataSource)},cellInfoByElement:function(t){return t=e(t),this.cellInfo(t.index(),t.parent("tr").index())},cellInfo:function(e,t){var n,i=this._contentBuilder,o=i.columnIndexes[e||0],r=i.rowIndexes[t||0];return o&&r?(n=r.index*i.rowLength+o.index,{columnTuple:o.tuple,rowTuple:r.tuple,measure:o.measure||r.measure,dataItem:this.dataSource.view()[n]}):null},setDataSource:function(e){this.options.dataSource=e,this._dataSource(),this.measuresTarget&&this.measuresTarget.setDataSource(e),this.rowsTarget&&this.rowsTarget.setDataSource(e),this.columnsTarget&&this.columnsTarget.setDataSource(e),this._bindConfigurator(),this.options.autoBind&&e.fetch()},setOptions:function(e){me.fn.setOptions.call(this,e),this._templates()},destroy:function(){me.fn.destroy.call(this),clearTimeout(this._headerReflowTimeout)},_dataSource:function(){var t=this,n=t.options.dataSource;n=e.isArray(n)?{data:n}:n,t.dataSource&&this._refreshHandler?t.dataSource.unbind(Se,t._refreshHandler).unbind(Ee,t._stateResetHandler).unbind(Ae,t._progressHandler).unbind(Te,t._errorHandler):(t._refreshHandler=e.proxy(t.refresh,t),t._progressHandler=e.proxy(t._requestStart,t),t._stateResetHandler=e.proxy(t._stateReset,t),t._errorHandler=e.proxy(t._error,t)),t.dataSource=pe.data.PivotDataSource.create(n).bind(Se,t._refreshHandler).bind(Ae,t._progressHandler).bind(Ee,t._stateResetHandler).bind(Te,t._errorHandler)},_error:function(){this._progress(!1)},_requestStart:function(){this._progress(!0)},_stateReset:function(){this._columnBuilder.reset(),this._rowBuilder.reset()},_wrapper:function(){var e=this.options.height;this.wrapper=this.element.addClass("k-widget k-pivot"),e&&this.wrapper.css("height",e)},_measureFields:function(){this.measureFields=e(Me).addClass("k-pivot-toolbar k-header k-settings-measures"),this.measuresTarget=this._createSettingTarget(this.measureFields,{setting:"measures",messages:{empty:this.options.messages.measureFields}})},_createSettingTarget:function(t,n){var i='<span tabindex="0" class="k-button" data-'+pe.ns+'name="${data.name}">${data.name}',o=n.sortable,r="";return o&&(r+="#if (data.sortIcon) {#",r+='<span class="k-icon ${data.sortIcon}-sm"></span>',r+="#}#"),(n.filterable||o)&&(r+='<span class="k-icon k-i-more-vertical k-setting-fieldmenu"></span>'),this.options.reorderable&&(r+='<span class="k-icon k-i-close k-setting-delete"></span>'),r&&(i+='<span class="k-field-actions">'+r+"</span>"),i+="</span>",new pe.ui.PivotSettingTarget(t,e.extend({template:i,emptyTemplate:'<span class="k-empty">${data}</span>',enabled:this.options.reorderable,dataSource:this.dataSource},n))},_initSettingTargets:function(){this.columnsTarget=this._createSettingTarget(this.columnFields,{connectWith:this.rowFields,setting:"columns",filterable:this.options.filterable,sortable:this.options.sortable,messages:{empty:this.options.messages.columnFields,fieldMenu:this.options.messages.fieldMenu}}),this.rowsTarget=this._createSettingTarget(this.rowFields,{connectWith:this.columnFields,setting:"rows",filterable:this.options.filterable,sortable:this.options.sortable,messages:{empty:this.options.messages.rowFields,fieldMenu:this.options.messages.fieldMenu}})},_createLayout:function(){var t=this,n=e(qe),i=n.find(".k-pivot-rowheaders"),o=n.find(".k-pivot-table"),r=e(Me).addClass("k-grid k-widget");t._measureFields(),t.columnFields=e(Me).addClass("k-pivot-toolbar k-header k-settings-columns"),t.rowFields=e(Me).addClass("k-pivot-toolbar k-header k-settings-rows"),t.columnsHeader=e('<div class="k-grid-header-wrap" />').wrap('<div class="k-grid-header" />'),t.columnsHeader.parent().css("padding-right",pe.support.scrollbar()),t.rowsHeader=e('<div class="k-grid k-widget k-alt"/>'),t.content=e('<div class="k-grid-content" />'),i.append(t.measureFields),i.append(t.rowFields),i.append(t.rowsHeader),r.append(t.columnsHeader.parent()),r.append(t.content),o.append(t.columnFields),o.append(r),t.wrapper.append(n),t.columnsHeaderTree=new pe.dom.Tree(t.columnsHeader[0]),t.rowsHeaderTree=new pe.dom.Tree(t.rowsHeader[0]),t.contentTree=new pe.dom.Tree(t.content[0]),t._initSettingTargets()},_progress:function(e){pe.ui.progress(this.wrapper,e)},_resize:function(){this.content[0].firstChild&&(this._setSectionsWidth(),this._setSectionsHeight(),this._setContentWidth(),this._setContentHeight(),this._columnHeaderReflow())},_columnHeaderReflow:function(){var e=this.columnsHeader.children("table");pe.support.browser.mozilla&&(clearTimeout(this._headerReflowTimeout),e.css("table-layout","auto"),this._headerReflowTimeout=setTimeout(function(){e.css("table-layout","")}))},_setSectionsWidth:function(){var e=this.rowsHeader,t=e.parent(".k-pivot-rowheaders").width(Ie),n=Math.max(_e(this.measureFields),_e(this.rowFields));n=Math.max(e.children("table").width(),n),t.width(n)},_setSectionsHeight:function(){var e=this.measureFields.height(Ie).height(),t=this.columnFields.height(Ie).height(),n=this.rowFields.height(Ie).innerHeight(),i=this.columnsHeader.height(Ie).innerHeight(),o=n-this.rowFields.height(),r=t>e?t:e,a=i>n?i:n;this.measureFields.height(r),this.columnFields.height(r),this.rowFields.height(a-o),this.columnsHeader.height(a)},_setContentWidth:function(){var e=this.content.find("table"),t=this.columnsHeader.children("table"),n=e.children("colgroup").children().length,i=n*this.options.columnWidth,o=Math.ceil(i/this.content.width()*100);o<100&&(o=100),e.add(t).css("width",o+"%"),this._resetColspan(t)},_setContentHeight:function(){var e=this,n=e.content,i=e.rowsHeader,o=e.wrapper.innerHeight(),r=pe.support.scrollbar(),a=n[0].offsetHeight===n[0].clientHeight,s=e.options.height;if(e.wrapper.is(":visible")){if(!o||!s)return a&&(r=0),n.height("auto"),i.height(n.height()-r),t;o-=be(e.columnFields),o-=be(e.columnsHeader.parent()),o<=2*r&&(o=2*r+1,a||(o+=r)),n.height(o),a&&(r=0),i.height(o-r)}},_resetColspan:function(e){var n=this,i=e.children("tbody").children(":first").children(":first");n._colspan===t&&(n._colspan=i.attr("colspan")),i.attr("colspan",1),clearTimeout(n._layoutTimeout),n._layoutTimeout=setTimeout(function(){i.attr("colspan",n._colspan),n._colspan=t})},_axisMeasures:function(e){var t=[],n=this.dataSource,i=n.measures(),o=i.length>1||i[0]&&i[0].type;return n.measuresAxis()===e&&(0===n[e]().length||o)&&(t=i),t},items:function(){return[]},refresh:function(){var e,t=this,n=t.dataSource,i=n.axes(),o=(i.columns||{}).tuples||[],r=(i.rows||{}).tuples||[],a=t._columnBuilder,s=t._rowBuilder,l={},c={};t.trigger(Pe,{action:"rebind"})||(a.measures=t._axisMeasures(Ge),s.measures=t._axisMeasures(je),t.columnsHeaderTree.render(a.build(o)),t.rowsHeaderTree.render(s.build(r)),l={indexes:a._indexes,measures:a.measures,metadata:a.metadata},c={indexes:s._indexes,measures:s.measures,metadata:s.metadata},t.contentTree.render(t._contentBuilder.build(n.view(),l,c)),t._resize(),t.touchScroller?t.touchScroller.contentResized():(e=pe.touchScroller(t.content),e&&e.movable&&(t.touchScroller=e,e.movable.bind("change",function(e){t.columnsHeader.scrollLeft(-e.sender.x),t.rowsHeader.scrollTop(-e.sender.y)}))),t._progress(!1),t.trigger(ze))},_scrollable:function(){var t=this,n=t.columnsHeader,i=t.rowsHeader;t.content.scroll(function(){n.scrollLeft(this.scrollLeft),i.scrollTop(this.scrollTop)}),i.bind("DOMMouseScroll"+Fe+" mousewheel"+Fe,e.proxy(t._wheelScroll,t))},_wheelScroll:function(t){var n,i;t.ctrlKey||(n=pe.wheelDeltaY(t),i=this.content.scrollTop(),n&&(t.preventDefault(),e(t.currentTarget).one("wheel"+Fe,!1),this.rowsHeader.scrollTop(i+-n),this.content.scrollTop(i+-n)))}}),oe=pe.dom.element,re=pe.dom.html,ae=function(e,t){return{maxChildren:0,children:0,maxMembers:0,members:0,measures:1,levelNum:e,parentMember:0!==t}},se=function(e,t){for(var n=[],i=0;i<=t;i++)n.push(e.members[i].name);return n},le=function(e,t){for(var n="",i=0;i<=t;i++)n+=e.members[i].name;return n},ce=ge.extend({init:function(){this.measures=1,this.metadata={}},build:function(e){var t=this._tbody(e),n=this._colGroup();return[oe("table",null,[n,t])]},reset:function(){this.metadata={}},_colGroup:function(){for(var e=this._rowLength(),t=[],n=0;n<e;n++)t.push(oe("col",null));return oe("colgroup",null,t)},_tbody:function(e){var t=e[0];return this.map={},this.rows=[],this.rootTuple=t,this._indexes=[],t?(this._buildRows(t,0),this._normalize()):this.rows.push(oe("tr",null,[oe("th",null,[re(" ")])])),oe("tbody",null,this.rows)},_normalize:function(){for(var e,t,n,i,o,r=this.rows,a=r.length,s=0;s<a;s++)if(e=r[s],1!==e.rowSpan)for(i=e.children,n=0,t=i.length;n<t;n++)o=i[n],o.tupleAll&&(o.attr.rowSpan=e.rowSpan)},_rowIndex:function(e){for(var t=this.rows,n=t.length,i=0;i<n&&t[i]!==e;i++);return i},_rowLength:function(){var e=this.rows[0]?this.rows[0].children:[],t=e.length,n=0,i=0;if(t)for(;i<t;i++)n+=e[i].attr.colSpan||1;return n||(n=this.measures),n},_row:function(e,t,n){var i,o,r=this.rootTuple.members[t].name,a=e.members[t].levelNum,s=r+a,l=this.map,c=l[s];return c?(c.notFirst=!1,c.parentMember&&c.parentMember===n||(c.parentMember=n,c.collapsed=0,c.colSpan=0)):(c=oe("tr",null,[]),c.parentMember=n,c.collapsed=0,c.colSpan=0,c.rowSpan=1,l[s]=c,i=l[r+(+a-1)],i&&(o=i.children,c.notFirst=!(!o[1]||o[1].attr.className.indexOf("k-alt")!==-1)||i.notFirst),this.rows.splice(this._rowIndex(i)+1,0,c)),c},_measures:function(e,t,n){var i,o,r,a=this.map,s=a.measureRow;for(s||(s=oe("tr",null,[]),a.measureRow=s,this.rows.push(s)),o=0,r=e.length;o<r;o++)i=e[o],s.children.push(this._cell(n||"",[this._content(i,t)],i));return r},_content:function(e,t){return re(this.template({member:e,tuple:t}))},_cell:function(e,t,n){var i=oe("th",{className:"k-header"+e},t);return i.value=n.caption||n.name,i},_buildRows:function(e,n,i){var o,r,a,s,l,c,d,u,h,p,f=e.members,g=f[n],m=f[n+1],v=[],_=0,b=0,w=0;if(g.measure)return this._measures(g.children,e),t;if(u=pe.stringify(se(e,n)),o=this._row(e,n,i),a=g.children,s=a.length,h=this.metadata[u],h||(this.metadata[u]=h=ae(+g.levelNum,n),h.rootLevelNum=+this.rootTuple.members[n].levelNum),this._indexes.push({path:u,tuple:e}),g.hasChildren&&(h.expanded===!1&&(b=h.maxChildren,o.collapsed+=b,h.children=0,s=0),d={className:"k-icon "+(s?He:Ne)},d[pe.attr("path")]=u,v.push(oe("span",d))),v.push(this._content(g,e)),l=this._cell(o.notFirst?" k-first":"",v,g),o.children.push(l),o.colSpan+=1,s){for(c=this._cell(" k-alt",[this._content(g,e)],g),o.children.push(c);_<s;_++)r=this._buildRows(a[_],n,g);p=r.colSpan,b=r.collapsed,l.attr.colSpan=p,h.children=p,h.members=1,o.colSpan+=p,o.collapsed+=b,o.rowSpan=r.rowSpan+1,m&&(m.measure?p=this._measures(m.children,e," k-alt"):(r=this._buildRows(e,n+1),p=r.colSpan,o.collapsed+=r.collapsed,w=r.collapsed),c.attr.colSpan=p,p-=1,h.members+=p,o.colSpan+=p)}else m&&(m.measure?p=this._measures(m.children,e):(r=this._buildRows(e,n+1),p=r.colSpan,o.collapsed+=r.collapsed,w=r.collapsed),h.members=p,p>1&&(l.attr.colSpan=p,o.colSpan+=p-1));return h.maxMembers<h.members+w&&(h.maxMembers=h.members+w),a=h.children+b,h.maxChildren<a&&(h.maxChildren=a),(c||l).tupleAll=!0,o}}),de=ge.extend({init:function(){this.metadata={}},build:function(e){var t=this._tbody(e),n=this._colGroup();return[oe("table",null,[n,t])]},reset:function(){this.metadata={}},_rowLength:function(){for(var e=this.rows[0].children,t=0,n=0,i=e[n];i;)t+=i.attr.colSpan||1,i=e[++n];return t},_colGroup:function(){for(var e=this._rowLength(),t=[],n=0;n<e;n++)t.push(oe("col",null));return oe("colgroup",null,t)},_tbody:function(e){var t=e[0];return this.rootTuple=t,this.rows=[],this.map={},this._indexes=[],t?(this._buildRows(t,0),this._normalize()):this.rows.push(oe("tr",null,[oe("td",null,[re(" ")])])),oe("tbody",null,this.rows)},_normalize:function(){for(var e,t,n,i,o=this.rows,r=o.length,a=0,s=this.rootTuple.members,l=s[0].name,c=s.length,d=0,u=this.map;a<r;a++)for(e=o[a],d=0;d<c;d++)n=this[s[d].name],t=e.colSpan["dim"+d],t&&t.colSpan<n&&(t.attr.colSpan=n-t.colSpan+1);e=u[l],i=u[l+"all"],e&&(e.children[0].attr.className="k-first"),i&&(i.children[0].attr.className+=" k-first")},_row:function(e){var t=oe("tr",null,e);return t.rowSpan=1,t.colSpan={},this.rows.push(t),t},_content:function(e,t){return re(this.template({member:e,tuple:t}))},_cell:function(e,t,n){var i=oe("td",{className:e},t);return i.value=n.caption||n.name,i},_buildRows:function(e,t){var n,i,o,r,a,s,l,c,d,u=this.map,h=e.members,p=h[t],f=h[t+1],g=p.children,m=g.length,v=+p.levelNum,_=this.rootTuple.members[t].name,b=se(e,t-1).join(""),w=+this.rootTuple.members[t].levelNum,k=b+(w===v?"":p.parentName||""),y=u[k+"all"]||u[k],x=v+1,C=[];if(!y||y.hasChild?y=this._row():y.hasChild=!0,p.measure){for(l=y.allCell?"k-grid-footer":"",y.children.push(this._cell(l,[this._content(g[0],e)],g[0])),y.rowSpan=m,d=1;d<m;d++)this._row([this._cell(l,[this._content(g[d],e)],g[d])]);return y}if(u[b+p.name]=y,n=pe.stringify(se(e,t)),s=this.metadata[n],s||(this.metadata[n]=s=ae(v,t),s.rootLevelNum=w),this._indexes.push({path:n,tuple:e}),p.hasChildren&&(s.expanded===!1&&(m=0,s.children=0),c={className:"k-icon "+(m?He:Ne)},c[pe.attr("path")]=n,C.push(oe("span",c))),C.push(this._content(p,e)),l=y.allCell&&!m?"k-grid-footer":"",i=this._cell(l,C,p),i.colSpan=x,y.children.push(i),y.colSpan["dim"+t]=i,(!this[_]||this[_]<x)&&(this[_]=x),m){for(y.allCell=!1,y.hasChild=!1,d=0;d<m;d++)r=this._buildRows(g[d],t),y!==r&&(y.rowSpan+=r.rowSpan);y.rowSpan>1&&(i.attr.rowSpan=y.rowSpan),s.children=y.rowSpan,o=this._cell("k-grid-footer",[this._content(p,e)],p),o.colSpan=x,a=this._row([o]),a.colSpan["dim"+t]=o,a.allCell=!0,u[b+p.name+"all"]=a,f&&(r=this._buildRows(e,t+1),o.attr.rowSpan=r.rowSpan),y.rowSpan+=a.rowSpan,s.members=a.rowSpan}else f&&(y.hasChild=!1,this._buildRows(e,t+1),(o||i).attr.rowSpan=y.rowSpan,s.members=y.rowSpan);return s.maxChildren<s.children&&(s.maxChildren=s.children),s.maxMembers<s.members&&(s.maxMembers=s.members),y}}),ue=ge.extend({init:function(){this.columnAxis={},this.rowAxis={}},build:function(e,n,i){var o,r,a=n.indexes[0],s=n.metadata[a?a.path:t];return this.columnAxis=n,this.rowAxis=i,this.data=e,this.rowLength=s?s.maxChildren+s.maxMembers:n.measures.length||1,this.rowLength||(this.rowLength=1),o=this._tbody(),r=this._colGroup(),[oe("table",null,[r,o])]},_colGroup:function(){var e=this.columnAxis.measures.length||1,t=[],n=0;for(this.rows[0]&&(e=this.rows[0].children.length);n<e;n++)t.push(oe("col",null));return oe("colgroup",null,t)},_tbody:function(){return this.rows=[],this.data[0]?(this.columnIndexes=this._indexes(this.columnAxis,this.rowLength),this.rowIndexes=this._indexes(this.rowAxis,Math.ceil(this.data.length/this.rowLength)),this._buildRows()):this.rows.push(oe("tr",null,[oe("td",null,[re(" ")])])),oe("tbody",null,this.rows)},_indexes:function(e,n){var i,o,r,a,s,l,c=[],d=e.indexes,u=e.metadata,h=e.measures,p=h.length||1,f=0,g=0,m=0,v=d.length;if(!v){for(r=0;r<p;r++)c[r]={index:r,measure:h[r],tuple:null};return c}for(;m<v;m++){if(i=d[m],o=u[i.path],s=o.children+o.members,l=0,s&&(s-=p),o.expanded===!1&&o.children!==o.maxChildren&&(l=o.maxChildren),o.parentMember&&o.levelNum===o.rootLevelNum&&(s=-1),s>-1){for(r=0;r<p;r++)a=s+r,o.children||(a+=g),c[s+g+r]={children:s,index:f,measure:h[r],tuple:i.tuple},f+=1;for(;c[g]!==t;)g+=1}if(g===n)break;f+=l}return c},_buildRows:function(){for(var e,t=this.rowIndexes,n=t.length,i=0;i<n;i++)e=t[i],e&&this.rows.push(this._buildRow(e))},_buildRow:function(e){for(var n,i,o,r,a,s,l,c=e.index*this.rowLength,d=this.columnIndexes,u=d.length,h=[],p=0;p<u;p++)n=d[p],n!==t&&(a={},n.children&&(a.className="k-alt"),r="",s=this.data[c+n.index],l=n.measure||e.measure,i={columnTuple:n.tuple,rowTuple:e.tuple,measure:l,dataItem:s},""!==s.value&&l&&l.type&&("status"===l.type?r=this.kpiStatusTemplate(i):"trend"===l.type&&(r=this.kpiTrendTemplate(i))),r||(r=this.dataTemplate(i)),o=oe("td",a,[re(r)]),o.value=s.value,h.push(o));return a={},e.children&&(a.className="k-grid-footer"),oe("tr",a,h)}}),fe.plugin(ie),pe.PivotExcelExporter=pe.Class.extend({init:function(e){this.options=e,this.widget=e.widget,this.dataSource=this.widget.dataSource},_columns:function(){var e,t=this.widget.columnsHeaderTree.children[0],n=this.widget.rowsHeaderTree.children[0],i=t.children[0].children.length,o=n.children[0].children.length,r=this.widget.options.columnWidth,a=[];if(o&&this.dataSource.data()[0])for(e=0;e<o;e++)a.push({autoWidth:!0});for(e=0;e<i;e++)a.push({autoWidth:!1,width:r});return a},_cells:function(e,t,n){for(var i,o,r,a,s,l=[],c=0,d=e.length;c<d;c++){for(o=[],r=e[c].children,i=r.length,a=0;a<i;a++)s=r[a],o.push({background:"#7a7a7a",color:"#fff",value:s.value,colSpan:s.attr.colSpan||1,rowSpan:s.attr.rowSpan||1});n&&n(o,c),l.push({cells:o,type:t})}return l},_rows:function(){var e,t,n=this.widget.columnsHeaderTree.children[0],i=this.widget.rowsHeaderTree.children[0],o=n.children[0].children.length,r=i.children[0].children.length,a=n.children[1].children,s=i.children[1].children,l=this.widget.contentTree.children[0].children[1].children,c=this._cells(a,"header");return r&&c[0].cells.splice(0,0,{background:"#7a7a7a",color:"#fff",value:"",colSpan:r,rowSpan:a.length}),e=function(e,t){for(var n,i,r=0,a=l[t].children;r<o;r++)n=a[r],i=+n.value,isNaN(i)&&(i=n.value),e.push({background:"#dfdfdf",color:"#333",value:i,colSpan:1,rowSpan:1})},t=this._cells(s,"data",e),c.concat(t)},_freezePane:function(){var e=this.widget.columnsHeaderTree.children[0],t=this.widget.rowsHeaderTree.children[0],n=t.children[0].children.length,i=e.children[1].children;return{colSplit:n,rowSplit:i.length}},workbook:function(){var t;return this.dataSource.view()[0]?(t=e.Deferred(),t.resolve()):t=this.dataSource.fetch(),t.then(e.proxy(function(){return{sheets:[{columns:this._columns(),rows:this._rows(),freezePane:this._freezePane(),filter:null}]}},this))}}),he={extend:function(t){t.events.push("excelExport"),t.options.excel=e.extend(t.options.excel,this.options),t.saveAsExcel=this.saveAsExcel},options:{proxyURL:"",filterable:!1,fileName:"Export.xlsx"},saveAsExcel:function(){var t=this.options.excel||{},n=new pe.PivotExcelExporter({widget:this});n.workbook().then(e.proxy(function(e){if(!this.trigger("excelExport",{workbook:e})){var n=new pe.ooxml.Workbook(e);n.toDataURLAsync().then(function(n){pe.saveAs({dataURI:n,fileName:e.fileName||t.fileName,proxyURL:t.proxyURL,forceProxy:t.forceProxy})})}},this))}},pe.PivotExcelMixin=he,pe.ooxml&&pe.ooxml.Workbook&&he.extend(ie.prototype),pe.PDFMixin&&(pe.PDFMixin.extend(ie.prototype),ie.fn._drawPDF=function(){return this._drawPDFShadow({width:this.wrapper.width()},{avoidLinks:this.options.pdf.avoidLinks})})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.pivot.fieldmenu.min",["kendo.pivotgrid.min","kendo.menu.min","kendo.window.min","kendo.treeview.min","kendo.dropdownlist.min"],e)}(function(){return function(e,t){function n(e,t){var n,i,o=[];for(n=0,i=e.length;n<i;n++)e[n].field!==t&&o.push(e[n]);return o}function i(e,t,n){var i,o,r,a;if(!e)return[];for(e=e.filters,i=0,o=[],r=e.length;i<r;i++)a=e[i].operator,(n||"in"===a)&&a!==n||e[i].field!==t||o.push(e[i]);return o}function o(t,n,o){var r,a=0,s=o.length;if(t=i(t,n,"in")[0])for(r=t.value.split(",");a<s;a++)o[a].checked=e.inArray(o[a].uniqueName,r)>=0;else for(;a<s;a++)o[a].checked=!0}function r(e,t){var n,i=e.length;for(n=0;n<i;n++)e[n].checked&&0!==e[n].level()&&t.push(e[n].uniqueName),e[n].hasChildren&&r(e[n].children.view(),t)}var a=window.kendo,s=a.ui,l="kendoContextMenu",c=e.proxy,d=".kendoPivotFieldMenu",u=s.Widget,h="k-filter-item",p="aria-label",f=u.extend({init:function(e,t){u.fn.init.call(this,e,t),this._dataSource(),this._layout(),a.notify(this)},events:[],options:{name:"PivotFieldMenu",filter:null,filterable:!0,sortable:!0,messages:{info:"Show items with value that:",sortAscending:"Sort Ascending",sortDescending:"Sort Descending",filterFields:"Fields Filter",filter:"Filter",include:"Include Fields...",title:"Fields to include",clear:"Clear",ok:"OK",cancel:"Cancel",operators:{contains:"Contains",doesnotcontain:"Does not contain",startswith:"Starts with",endswith:"Ends with",eq:"Is equal to",neq:"Is not equal to"}}},_layout:function(){var t=this.options;this.wrapper=e(a.template(m)({ns:a.ns,filterable:t.filterable,sortable:t.sortable,messages:t.messages})),this.menu=this.wrapper[l]({filter:t.filter,target:this.element,orientation:"vertical",showOn:"click",closeOnClick:!1,open:c(this._menuOpen,this),select:c(this._select,this),copyAnchorStyles:!1}).data(l),this._createWindow(),t.filterable&&this._initFilterForm()},_initFilterForm:function(){var e=this.menu.element.find("."+h),t=c(this._filter,this);this._filterOperator=new a.ui.DropDownList(e.find("select")),this._filterValue=e.find(".k-textbox"),this._updateFilterAriaLabel(),e.on("submit"+d,t).on("click"+d,".k-button-filter",t).on("click"+d,".k-button-clear",c(this._reset,this))},_setFilterForm:function(e){var t=this._filterOperator,n="",i="";e&&(n=e.operator,i=e.value),t.value(n),t.value()||t.select(0),this._filterValue.val(i)},_clearFilters:function(e){var t,n,o=this.dataSource.filter()||{},r=0;for(o.filters=o.filters||[],t=i(o,e),n=t.length;r<n;r++)o.filters.splice(o.filters.indexOf(t[r]),1);return o},_convert:function(t){var n=this.dataSource.options.schema,i=((n.model||{}).fields||{})[this.currentMember];return i&&("number"===i.type?t=parseFloat(t):"boolean"===i.type&&(t=!!e.parseJSON(t))),t},_filter:function(e){var n,i,o=this,r=o._convert(o._filterValue.val());return e.preventDefault(),""===r?(o.menu.close(),t):(n={field:o.currentMember,operator:o._filterOperator.value(),value:r},i=o._clearFilters(o.currentMember),i.filters.push(n),o.dataSource.filter(i),o.menu.close(),t)},_updateFilterAriaLabel:function(){var e=this.menu.element.find("."+h),t=this._filterOperator.value(),n=this.options.messages.operators[t];e.find("select").attr(p,n)},_reset:function(e){var t=this,n=t._clearFilters(t.currentMember);e.preventDefault(),n.filters[0]||(n={}),t.dataSource.filter(n),t._setFilterForm(null),t.menu.close()},_sort:function(e){var t=this.currentMember,i=this.dataSource.sort()||[];i=n(i,t),i.push({field:t,dir:e}),this.dataSource.sort(i),this.menu.close()},setDataSource:function(e){this.options.dataSource=e,this._dataSource()},_dataSource:function(){this.dataSource=a.data.PivotDataSource.create(this.options.dataSource)},_createWindow:function(){var t=this.options.messages;this.includeWindow=e(a.template(v)({messages:t})).on("click"+d,".k-button-ok",c(this._applyIncludes,this)).on("click"+d,".k-button-cancel",c(this._closeWindow,this)),this.includeWindow=new s.Window(this.includeWindow,{title:t.title,visible:!1,resizable:!1,open:c(this._windowOpen,this)})},_applyIncludes:function(e){var t,n=[],o=this.treeView.dataSource.view(),a=o[0].checked,s=this.dataSource.filter(),l=i(s,this.currentMember,"in")[0];r(o,n),l&&(a?(s.filters.splice(s.filters.indexOf(l),1),s.filters.length||(s={})):l.value=n.join(","),t=s),n.length&&(t||a||(t={field:this.currentMember,operator:"in",value:n.join(",")},s&&(s.filters.push(t),t=s))),t&&this.dataSource.filter(t),this._closeWindow(e)},_closeWindow:function(e){e.preventDefault(),this.includeWindow.close()},_treeViewDataSource:function(){var e=this;return a.data.HierarchicalDataSource.create({schema:{model:{id:"uniqueName",hasChildren:function(e){return parseInt(e.childrenCardinality,10)>0}}},transport:{read:function(t){var n={},i=e.treeView.dataSource.get(t.data.uniqueName),r=t.data.uniqueName;r?(n.memberUniqueName=i.uniqueName.replace(/\&/g,"&"),n.treeOp=1):n.levelUniqueName=e.currentMember+".[(ALL)]",e.dataSource.schemaMembers(n).done(function(n){o(e.dataSource.filter(),e.currentMember,n),t.success(n)}).fail(t.error)}}})},_createTreeView:function(e){var t=this;t.treeView=new s.TreeView(e,{autoBind:!1,dataSource:t._treeViewDataSource(),dataTextField:"caption",template:"#: data.item.caption || data.item.name #",checkboxes:{checkChildren:!0},dataBound:function(){s.progress(t.includeWindow.element,!1)}})},_menuOpen:function(t){if(t.event){var n=a.attr("name");this.currentMember=e(t.event.target).closest("["+n+"]").attr(n),this.options.filterable&&this._setFilterForm(i(this.dataSource.filter(),this.currentMember)[0])}},_select:function(t){var n=e(t.item);e(".k-pivot-filter-window").not(this.includeWindow.element).kendoWindow("close"),n.hasClass("k-include-item")?this.includeWindow.center().open():n.hasClass("k-sort-asc")?this._sort("asc"):n.hasClass("k-sort-desc")?this._sort("desc"):n.hasClass(h)&&this._updateFilterAriaLabel(); +},_windowOpen:function(){this.treeView||this._createTreeView(this.includeWindow.element.find(".k-treeview")),s.progress(this.includeWindow.element,!0),this.treeView.dataSource.read()},destroy:function(){u.fn.destroy.call(this),this.menu&&(this.menu.destroy(),this.menu=null),this.treeView&&(this.treeView.destroy(),this.treeView=null),this.includeWindow&&(this.includeWindow.destroy(),this.includeWindow=null),this.wrapper=null,this.element=null}}),g='<div class="k-filterable k-content" tabindex="-1" data-role="fieldmenu"><form class="k-filter-menu"><div><div class="k-filter-help-text">#=messages.info#</div><select>#for(var op in messages.operators){#<option value="#=op#">#=messages.operators[op]#</option>#}#</select><input class="k-textbox" type="text" '+p+'="#=messages.filter#" title="#=messages.filter#" /><div><a class="k-button k-primary k-button-filter" href="\\#">#=messages.filter#</a><a class="k-button k-button-clear" href="\\#">#=messages.clear#</a></div></div></form></div>',m='<ul class="k-pivot-fieldmenu"># if (sortable) {#<li class="k-item k-sort-asc"><span class="k-link"><span class="k-icon k-i-sort-asc-sm"></span>${messages.sortAscending}</span></li><li class="k-item k-sort-desc"><span class="k-link"><span class="k-icon k-i-sort-desc-sm"></span>${messages.sortDescending}</span></li># if (filterable) {#<li class="k-separator"></li># } ## } ## if (filterable) {#<li class="k-item k-include-item"><span class="k-link"><span class="k-icon k-i-filter"></span>${messages.include}</span></li><li class="k-separator"></li><li class="k-item '+h+'"><span class="k-link"><span class="k-icon k-i-filter"></span>${messages.filterFields}</span><ul><li>'+g+"</li></ul></li># } #</ul>",v='<div class="k-popup-edit-form k-pivot-filter-window"><div class="k-edit-form-container"><div class="k-treeview"></div><div class="k-edit-buttons k-state-default"><a class="k-button k-primary k-button-ok" href="\\#">${messages.ok}</a><a class="k-button k-button-cancel" href="\\#">${messages.cancel}</a></div></div>';s.plugin(f)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.filter.min",["kendo.core.min","kendo.buttongroup.min"],e)}(function(){var e={number:"<input type='text' title='#=field#' data-#=ns#role='numerictextbox' data-#=ns#bind='value: value'/>",string:"<input type='text' title='#=field#' class='k-textbox' data-#=ns#bind='value: value'/>","boolean":"# var checkboxGuid = kendo.guid(); # <input class='k-checkbox' data-role='checkbox' id='#= checkboxGuid #' data-#=ns#bind='checked: value' type='checkbox'><label for='#= checkboxGuid #' class='k-checkbox-label k-no-text'>&\\#8203;</label>",date:"<input type='text' title='#=field#' data-#=ns#role='datepicker' data-#=ns#bind='value: value'/>"},t="<select data-#=ns#bind='value: operator' title='#=operatorsLabel#' data-#=ns#role='dropdownlist'>#for(var op in operators){#<option value='#=op#'>#=operators[op]#</option>#}#</select>",n="<div data-#=ns#bind='value: logic' data-#=ns#role='filterbuttongroup'>#for(var op in operators){#<span value='#=op#'>#=operators[op]#</span>#}#</div>",i="<ul class='k-filter-container'><li class='k-filter-group-main'></li></ul>",o="<div class='k-filter-toolbar'><div class='k-toolbar' id='#=uid#'><div class='k-filter-toolbar-item'>"+n+"</div><div class='k-filter-toolbar-item'><button data-role='button' class='k-button k-button-icon' role='button' aria-disabled='false' title='#=addExpression#' aria-label='#=addExpression#' tabindex='0'><span class='k-icon k-i-filter-add-expression'></span></button></div><div class='k-filter-toolbar-item'><button data-role='button' class='k-button k-button-icon' role='button' aria-disabled='false' title='#=addGroup#' aria-label='#=addGroup#' tabindex='0'><span class='k-icon k-i-filter-add-group'></span></button></div><div class='k-filter-toolbar-item'><button data-role='button' class='k-button-flat k-button k-button-icon' role='button' title='#=close#' aria-label='#=close#' aria-disabled='false' tabindex='0'><span class='k-icon k-i-close'></span></button></div></div></div>",r="<li class='k-filter-item'><div class='k-filter-toolbar'><div class='k-toolbar'><div class='k-filter-toolbar-item'>"+n+"</div><div class='k-filter-toolbar-item'><button data-role='button' class='k-button k-button-icon' role='button' title='#=addExpression#' aria-label='#=addExpression#' aria-disabled='false' tabindex='0'><span class='k-icon k-i-filter-add-expression'></span></button></div><div class='k-filter-toolbar-item'><button data-role='button' class='k-button k-button-icon' role='button' title='#=addGroup#' aria-label='#=addGroup#' aria-disabled='false' tabindex='0'><span class='k-icon k-i-filter-add-group'></span></button></div><div class='k-filter-toolbar-item'><button data-role='button' class='k-button-flat k-button k-button-icon' role='button' title='#=close#' aria-label='#=close#' aria-disabled='false' tabindex='0'><span class='k-icon k-i-close'></span></button></div></div></div></li>",a="<li class='k-filter-item'><div class='k-filter-toolbar'><div class='k-toolbar' id='#=uid#'><div class='k-filter-toolbar-item k-filter-field'><select data-#=ns#bind='value: field' title='#=fieldsLabel#' class='k-filter-dropdown' data-auto-width='true' data-#=ns#role='dropdownlist'>#for(var current in fields){#<option value='#=fields[current].name#'>#=fields[current].label#</option>#}#</select></div><div class='k-filter-toolbar-item k-filter-operator'></div><div class='k-filter-toolbar-item k-filter-value'></div><div class='k-filter-toolbar-item'><button data-role='button' class='k-button-flat k-button k-button-icon' role='button' title='#=close#' aria-label='#=close#' aria-disabled='false' tabindex='0'><span class='k-icon k-i-close'></span></button></div></div></div></li>";return function(n){function s(e,t){var n,i;if(e.uid===t)return e;if(e.filters)for(n=0;n<e.filters.length;n++)if(i=s(e.filters[n],t))return i}var l=window.kendo,c=l.ui,d=c.Widget,u=c.ButtonGroup,h="change",p=".kendoFilter",f="Is equal to",g="Is not equal to",m=n.proxy,v=u.extend({init:function(e,t){var n=this;u.fn.init.call(n,e,t)},options:{name:"FilterButtonGroup"},value:function(e){return void 0===e?this._value:(this._value=e,u.fn.select.call(this,this.wrapper.find("[value='"+e+"']")[0]),void this.trigger(h))},select:function(e){e!==-1&&this.value(n(e).attr("value"))}}),_=d.extend({init:function(e,t){var i,o=this;d.fn.init.call(o,e,t),o.element=n(e).addClass("k-widget k-filter"),o.dataSource=t.dataSource,o.operators=n.extend(o.options.operators,t.operators),o._getFieldsInfo(),o._modelChangeHandler=m(o._modelChange,o),o._renderMain(),t.expression&&o._addExpressionTree(o.filterModel),o._renderApplyButton(),o.options.expressionPreview&&(o._previewContainer||(o._previewContainer=n('<div class="k-filter-preview"></div>').insertAfter(o.element.children().eq(0))),i=o._createPreview(o.filterModel.toJSON()),o._previewContainer.html(i)),o._attachEvents()},events:[h],options:{name:"Filter",dataSource:null,expression:null,applyButton:!1,fields:[],mainLogic:"and",messages:{and:"And",or:"Or",apply:"Apply",close:"Close",addExpression:"Add Expression",fields:"Fields",operators:"Operators",addGroup:"Add Group"},operators:{string:{eq:f,neq:g,startswith:"Starts with",contains:"Contains",doesnotcontain:"Does not contain",endswith:"Ends with",isnull:"Is null",isnotnull:"Is not null",isempty:"Is empty",isnotempty:"Is not empty",isnullorempty:"Has no value",isnotnullorempty:"Has value"},number:{eq:f,neq:g,gte:"Is greater than or equal to",gt:"Is greater than",lte:"Is less than or equal to",lt:"Is less than",isnull:"Is null",isnotnull:"Is not null"},date:{eq:f,neq:g,gte:"Is after or equal to",gt:"Is after",lte:"Is before or equal to",lt:"Is before",isnull:"Is null",isnotnull:"Is not null"},"boolean":{eq:f,neq:g}}},applyFilter:function(){var e=this.filterModel.toJSON();this.dataSource.filter(this._hasFieldsFilter(e.filters||[])?e:{})},destroy:function(){this.element.off(p),l.destroy(this.element.find(".k-filter-group-main")),this._previewContainer=null,this._applyButton=null,this._modelChangeHandler=null,d.fn.destroy.call(this)},setOptions:function(e){l.deepExtend(this.options,e),this.destroy(),this.element.empty(),this.init(this.element,this.options)},getOptions:function(){var e=n.extend(!0,{},this.options);return delete e.dataSource,e.expression=this.filterModel.toJSON(),e},_addExpressionTree:function(e){var t,n;if(e.filters)for(t=this.element.find("[id="+e.uid+"]"),n=0;n<e.filters.length;n++)e.filters[n].logic?this._addGroup(t,e.filters[n]):this._addExpression(t,e.filters[n]),e.filters[n].filters&&this._addExpressionTree(e.filters[n])},_attachEvents:function(){var e=this;e.element.on("click"+p,"button.k-button",function(t){var i,o,r;t.preventDefault(),i=n(t.currentTarget),o=i.find("span"),r=(o.length?o:i).attr("class").split("-").pop(),"close"==r?e._removeExpression(i.closest(".k-toolbar")):"expression"==r?e._addExpression(i.closest(".k-toolbar")):"group"==r?e._addGroup(i.closest(".k-toolbar")):"apply"==r&&e.applyFilter()})},_addExpression:function(e,t){var i,o=this,r=e.attr("id"),c=e.closest(".k-filter-toolbar").next("ul.k-filter-lines"),d=t?o._fields[t.field]:o._defaultField,u="";t?i=t:(i=s(o.filterModel,r),i.filters||i.set("filters",[]),i=o._addNewModel(i.filters,d)),c.length||(c=n("<ul class='k-filter-lines'></ul>").appendTo(e.closest("li"))),u=n(l.template(a)({fields:o._fields,operators:o.operators[d.type],close:o.options.messages.close,fieldsLabel:o.options.messages.fields,uid:i.uid,ns:l.ns})).appendTo(c),o._addExpressionControls(u.find(".k-toolbar"),d,i),t||o._expressionChange()},_addExpressionControls:function(e,t,n){var i=e.find(".k-filter-toolbar-item"),o=i.eq(1),r=i.eq(2);l.destroy(o),l.destroy(r),o.empty(),r.empty(),this._appendOperators(o,t),this._appendEditor(r,t),this._bindModel(e,n),this._showHideEditor(e,n)},_appendOperators:function(e,i){n(l.template(t)({operators:this.operators[i.type],operatorsLabel:this.options.messages.operators,ns:l.ns})).appendTo(e)},_appendEditor:function(e,t){l.isFunction(t.editor)?t.editor(e,n.extend(!0,{},{field:t.name})):n(l.template(t.editor)({ns:l.ns,field:t.name})).appendTo(e)},_addNewModel:function(e,t){var n;return e.push({field:t.name}),n=e[e.length-1],n.set("value",t.defaultValue),n.set("operator","eq"),n},_addGroup:function(e,t){var i,o=this,a=o.filterModel,c=e.attr("id"),d=e.closest(".k-filter-toolbar").next("ul.k-filter-lines");t?a=t:(a=s(a,c),a.filters||a.set("filters",[]),a.filters.push({logic:o.options.mainLogic}),a=a.filters[a.filters.length-1]),d.length||(d=n("<ul class='k-filter-lines'></ul>").appendTo(e.closest("li"))),i=n(l.template(r)({operators:{and:o.options.messages.and,or:o.options.messages.or},addExpression:o.options.messages.addExpression,addGroup:o.options.messages.addGroup,close:o.options.messages.close,ns:l.ns})).appendTo(d),o._bindModel(i.find(".k-toolbar"),a),t||o._expressionChange()},_bindModel:function(e,t){e.attr("id",t.uid),t.bind("change",this._modelChangeHandler),l.bind(e,t),e.parent().attr(l.attr("stop"),!0)},_createPreview:function(e){var t,n,i="",o=!1,r=this._hasFieldsFilter(e.filters||[]),a="";if(!e.filters||!e.filters.length||!r)return"";for(i+='<span class="k-filter-preview-bracket">(</span>',n=0;n<e.filters.length;n++)t=e.filters[n],t.filters&&(a=this._createPreview(t),a&&(o&&(i+='<span class="k-filter-preview-operator"> '+e.logic.toLocaleUpperCase()+" </span>"),o=!0),i+=a),t.field&&(o&&(i+='<span class="k-filter-preview-operator"> '+e.logic.toLocaleUpperCase()+" </span>"),o=!0,i+='<span class="k-filter-preview-field">'+this._fields[t.field].label+"</span>",i+='<span class="k-filter-preview-criteria"> '+this._getOperatorText(t.field,t.operator),t.operator.indexOf("is")<0?(i+=" </span>",i+="<span class='k-filter-preview-value'>'"+l.htmlEncode(t.value)+"'</span>"):i+="</span>");return i+='<span class="k-filter-preview-bracket">)</span>'},_expressionChange:function(){var e=this,t=e.filterModel.toJSON(),n="";e.options.expressionPreview&&(n=e._createPreview(t),e._previewContainer.html(n)),e.trigger(h,{expression:t})},_getOperatorText:function(e,t){var n=this._fields[e].type;return this.options.operators[n][t]},_getFieldsInfo:function(){var t,i,o=this,r=o.options.fields.length?o.options.fields:(o.options.dataSource.options.schema.model||{}).fields;o._fields={};for(i in r)t=r[i],t=n.extend(!0,{},{name:t.name||i,editor:t.editorTemplate||e[t.type||"string"],defaultValue:t.defaultValue||"",type:t.type||"string",label:t.label||t.name||i}),o._fields[t.name]=t,o._defaultField||(o._defaultField=t)},_hasFieldsFilter:function(e,t){t=!!t;for(var n=0;n<e.length;n++)if(e[n].filters&&(t=this._hasFieldsFilter(e[n].filters,t)),e[n].field)return!0;return t},_modelChange:function(e){var t,n,i,o,r=this,a=r.element.find("[id="+e.sender.uid+"]");return r._showHideEditor(a,e.sender),"field"!==e.field?void("filters"!==e.field&&r._expressionChange()):(t=e.sender.field,n=e.sender.parent(),i=r._fields[t],o=r._addNewModel(n,i),e.sender.unbind("change",r._modelChangeHandler),n.remove(e.sender),r._addExpressionControls(a,i,o),void r._expressionChange())},_renderMain:function(){var e=this;n(i).appendTo(e.element),e.filterModel=l.observable(e.options.expression?e.options.expression:{logic:e.options.mainLogic}),n(l.template(o)({operators:{and:e.options.messages.and,or:e.options.messages.or},addExpression:e.options.messages.addExpression,addGroup:e.options.messages.addGroup,close:e.options.messages.close,uid:e.filterModel.uid,ns:l.ns})).appendTo(e.element.find("li:first")),e._bindModel(e.element.find(".k-toolbar:first"),e.filterModel)},_removeExpression:function(e){var t,n,i=this,o=e.attr("id"),r=e.closest("li"),a=r.hasClass("k-filter-group-main");a?(r=r.find(".k-filter-lines"),i.filterModel.filters&&(i.filterModel.filters.empty(),delete i.filterModel.filters)):(n=s(i.filterModel,o),t=n.parent(),n.unbind("change",i._modelChangeHandler),t.remove(n),t.length||delete t.parent().filters,r.siblings().length||(r=r.parent())),l.destroy(r),r.remove(),i._expressionChange()},_renderApplyButton:function(){var e=this;e.options.applyButton&&(e._applyButton||(e._applyButton=n(l.format('<button type="button" aria-label="{0}" title="{0}" class="k-button k-filter-apply">{0}</button>',e.options.messages.apply)).appendTo(e.element)))},_showHideEditor:function(e,t){var n,i;t.logic||(n=t.operator,i=e.find(".k-filter-toolbar-item:eq(2)"),"isnull"==n||"isnotnull"==n||"isempty"==n||"isnotempty"==n||"isnullorempty"==n||"isnotnullorempty"==n?i.hide():i.show())}});c.plugin(_),c.plugin(v)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.filtercell.min",["kendo.autocomplete.min","kendo.datepicker.min","kendo.numerictextbox.min","kendo.combobox.min","kendo.dropdownlist.min"],e)}(function(){return function(e,t){function n(t){var n="string"==typeof t?t:t.operator;return e.inArray(n,v)>-1}function i(t,n){var o,r,a=[];if(e.isPlainObject(t))if(t.hasOwnProperty("filters"))a=t.filters;else if(t.field==n)return t;for(e.isArray(t)&&(a=t),o=0;o<a.length;o++)if(r=i(a[o],n))return r}function o(t,n){t.filters&&(t.filters=e.grep(t.filters,function(e){return o(e,n),e.filters?e.filters.length:e.field!=n}))}function r(e,t){var n=a.getter(t,!0);return function(t){for(var i,o,r=e(t),a=[],s=0,l={};s<r.length;)i=r[s++],o=n(i),l.hasOwnProperty(o)||(a.push(i),l[o]=!0);return a}}var a=window.kendo,s=a.ui,l=a.data.DataSource,c=s.Widget,d="change",u="boolean",h="enums",p="string",f="Is equal to",g="Is not equal to",m=e.proxy,v=["isnull","isnotnull","isempty","isnotempty","isnullorempty","isnotnullorempty"],_=c.extend({init:function(i,o){var r,s,l,f,g,v,_,b,w,k,y,x,C;if(i=e(i).addClass("k-filtercell"),r=this.wrapper=e("<span/>").appendTo(i),s=this,g=o,b=s.operators=o.operators||{},w=s.input=e("<input/>").attr(a.attr("bind"),"value: value").appendTo(r),k=o?o.suggestDataSource:null,k&&(o=e.extend({},o,{suggestDataSource:{}})),c.fn.init.call(s,i[0],o),k&&(s.options.suggestDataSource=k),o=s.options,l=s.dataSource=o.dataSource,s.model=l.reader.model,_=o.type=p,y=a.getter("reader.model.fields",!0)(l)||{},x=y[o.field],x&&x.type&&(_=o.type=x.type),o.values&&(o.type=_=h),b=b[_]||o.operators[_],!g.operator)for(v in b){o.operator=v;break}s._parse=function(e){return null!=e?e+"":e},s.model&&s.model.fields&&(C=s.model.fields[o.field],C&&C.parse&&(s._parse=m(C.parse,C))),s.defaultOperator=o.operator,s.viewModel=f=a.observable({operator:o.operator,value:null,operatorVisible:function(){var e=this.get("value");return null!==e&&e!==t&&"undefined"!=e||n(this.get("operator"))&&!s._clearInProgress}}),f.bind(d,m(s.updateDsFilter,s)),_==p&&s.initSuggestDataSource(o),null!==o.inputWidth&&(w.addClass("k-sized-input"),w.width(o.inputWidth)),w.attr("aria-label",s._getColumnTitle()),w.attr("title",s._getColumnTitle()),s._setInputType(o,_),_!=u&&o.showOperators!==!1?s._createOperatorDropDown(b):(e('<div unselectable="on" />').css("display","none").text("eq").appendTo(r),r.addClass("k-operator-hidden")),s._createClearIcon(),a.bind(this.wrapper,f),_==p&&(o.template||s.setAutoCompleteSource()),_==h&&s.setComboBoxSource(s.options.values),s._refreshUI(),s._refreshHandler=m(s._refreshUI,s),s.dataSource.bind(d,s._refreshHandler)},_setInputType:function(t,n){var i,o,r,s,l,c=this,d=c.input;"function"==typeof t.template?(t.template.call(c.viewModel,{element:c.input,dataSource:c.suggestDataSource}),c._angularItems("compile")):n==p?d.attr(a.attr("role"),"autocomplete").attr(a.attr("text-field"),t.dataTextField||t.field).attr(a.attr("filter"),t.suggestionOperator).attr(a.attr("delay"),t.delay).attr(a.attr("min-length"),t.minLength).attr(a.attr("value-primitive"),!0):"date"==n?d.attr(a.attr("role"),"datepicker"):n==u?(d.remove(),i=e("<input type='radio'/>"),o=c.wrapper,r=a.guid(),s=e("<label/>").text(t.messages.isTrue).append(i),i.attr(a.attr("bind"),"checked:value").attr("name",r).val("true"),l=s.clone().text(t.messages.isFalse),i.clone().val("false").appendTo(l),o.append([s,l])):"number"==n?d.attr(a.attr("role"),"numerictextbox").attr("title",c._getColumnTitle()):n==h&&d.attr(a.attr("role"),"combobox").attr(a.attr("text-field"),"text").attr(a.attr("suggest"),!0).attr(a.attr("filter"),"contains").attr(a.attr("value-field"),"value").attr(a.attr("value-primitive"),!0)},_getColumnTitle:function(){var e=this.options.column;return e?e.title||e.field:""},_createOperatorDropDown:function(t){var n,i,o=[],r=this.viewModel;for(n in t)o.push({text:t[n],value:n});i=e('<input class="k-dropdown-operator" '+a.attr("bind")+'="value: operator"/>').appendTo(this.wrapper),this.operatorDropDown=i.kendoDropDownList({dataSource:o,dataTextField:"text",dataValueField:"value",open:function(){this.popup.element.width(150)},valuePrimitive:!0}).data("kendoDropDownList"),r.bind("change",function(){var e=t[r.operator];i.attr("aria-label",e)}),this.operatorDropDown.wrapper.find(".k-i-arrow-60-down").removeClass("k-i-arrow-60-down").addClass("k-i-filter")},initSuggestDataSource:function(e){var n=e.suggestDataSource;n instanceof l||(!e.customDataSource&&n&&(n.group=t),n=this.suggestDataSource=l.create(n)),e.customDataSource||(n._pageSize=t,n.reader.data=r(n.reader.data,this.options.field)),this.suggestDataSource=n},setAutoCompleteSource:function(){var e=this.input.data("kendoAutoComplete");e&&e.setDataSource(this.suggestDataSource)},setComboBoxSource:function(e){var t=l.create({data:e}),n=this.input.data("kendoComboBox");n&&n.setDataSource(t)},_refreshUI:function(){var t=this,n=i(t.dataSource.filter(),this.options.field)||{},o=t.viewModel;t.manuallyUpdatingVM=!0,n=e.extend(!0,{},n),t.options.type==u&&o.value!==n.value&&t.wrapper.find(":radio").prop("checked",!1),n.operator&&o.set("operator",n.operator),o.set("value",n.value),t.manuallyUpdatingVM=!1},updateDsFilter:function(i){var o,r,a,s,l=this,c=l.viewModel;l.manuallyUpdatingVM||"operator"==i.field&&c.value===t&&!n(c)||"operator"==i.field&&l._clearInProgress&&null!==c.value||(o=e.extend({},l.viewModel.toJSON(),{field:l.options.field}),r={logic:"and",filters:[]},a=!1,(o.value!==t&&null!==o.value||n(o)&&!this._clearInProgress)&&(r.filters.push(o),a=l.trigger(d,{filter:r,field:l.options.field})),(l._clearInProgress||null===o.value)&&(a=l.trigger(d,{filter:null,field:l.options.field})),a||(s=l._merge(r),l.dataSource.filter(s.filters.length?s:{})))},_merge:function(t){var i,r,a,s=this,l=t.logic||"and",c=t.filters,d=s.dataSource.filter()||{filters:[],logic:"and"};for(o(d,s.options.field),r=0,a=c.length;r<a;r++)i=c[r],i.value=s._parse(i.value);return c=e.grep(c,function(e){return""!==e.value&&null!==e.value||n(e)}),c.length&&(d.filters.length?(t.filters=c,"and"!==d.logic&&(d.filters=[{logic:d.logic,filters:d.filters}],d.logic="and"),d.filters.push(c.length>1?t:c[0])):(d.filters=c,d.logic=l)),d},_createClearIcon:function(){var t=this;e("<button type='button' class='k-button k-button-icon' title = "+t.options.messages.clear+"/>").attr("aria-label",t.options.messages.clear).attr(a.attr("bind"),"visible:operatorVisible").html("<span class='k-icon k-i-filter-clear'/>").click(m(t.clearFilter,t)).appendTo(t.wrapper)},clearFilter:function(){this._clearInProgress=!0,n(this.viewModel.operator)&&this.viewModel.set("operator",this.defaultOperator),this.viewModel.set("value",null),this._clearInProgress=!1},_angularItems:function(e){var t=this.wrapper.closest("th").get(),n=this.options.column;this.angular(e,function(){return{elements:t,data:[{column:n}]}})},destroy:function(){var e=this;e.filterModel=null,e.operatorDropDown=null,e._angularItems("cleanup"),e._refreshHandler&&(e.dataSource.bind(d,e._refreshHandler),e._refreshHandler=null),a.unbind(e.element),c.fn.destroy.call(e),a.destroy(e.element)},events:[d],options:{name:"FilterCell",delay:200,minLength:1,inputWidth:null,values:t,customDataSource:!1,field:"",dataTextField:"",type:"string",suggestDataSource:null,suggestionOperator:"startswith",operator:"eq",showOperators:!0,template:null,messages:{isTrue:"is true",isFalse:"is false",filter:"Filter",clear:"Clear",operator:"Operator"},operators:{string:{eq:f,neq:g,startswith:"Starts with",contains:"Contains",doesnotcontain:"Does not contain",endswith:"Ends with",isnull:"Is null",isnotnull:"Is not null",isempty:"Is empty",isnotempty:"Is not empty",isnullorempty:"Has no value",isnotnullorempty:"Has value"},number:{eq:f,neq:g,gte:"Is greater than or equal to",gt:"Is greater than",lte:"Is less than or equal to",lt:"Is less than",isnull:"Is null",isnotnull:"Is not null"},date:{eq:f,neq:g,gte:"Is after or equal to",gt:"Is after",lte:"Is before or equal to",lt:"Is before",isnull:"Is null",isnotnull:"Is not null"},enums:{eq:f,neq:g,isnull:"Is null",isnotnull:"Is not null"}}}});s.plugin(_)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.panelbar.min",["kendo.data.min"],e)}(function(){return function(e,t){function n(t){t=e(t),t.filter(".k-first:not(:first-child)").removeClass(T),t.filter(".k-last:not(:last-child)").removeClass(_),t.filter(":first-child").addClass(T),t.filter(":last-child").addClass(_)}function i(t){var n=t,i=t.children("ul"),o=n.children(".k-link").children(".k-icon");t.hasClass("k-panelbar")||(!o.length&&i.length?o=e("<span class='k-icon' />").appendTo(n):i.length&&i.children().length||(o.remove(),i.remove()))}var o=window.kendo,r=o.ui,a=o.keys,s=e.extend,l=e.proxy,c=e.each,d=e.isArray,u=o.template,h=r.Widget,p=o.data.HierarchicalDataSource,f=/^(ul|a|div)$/i,g=".kendoPanelBar",m="img",v="href",_="k-last",b="k-link",w="."+b,k="error",y=".k-item",x=".k-group",C=x+":visible",S="k-image",T="k-first",D="change",A="expand",E="select",I="k-content",M="activate",F="collapse",R="dataBound",P="mouseenter",z="mouseleave",B="contentLoad",L="undefined",H="k-state-active",N="> .k-panel",O="> .k-content",V="string",W="k-state-focused",U="k-state-disabled",q="k-state-selected",j="."+q,G="k-state-highlight",$=y+":not(.k-state-disabled)",Y="> "+$+" > "+w+", .k-panel > "+$+" > "+w,K=y+".k-state-disabled > .k-link",Q="> li > "+j+", .k-panel > li > "+j,X="k-state-default",J="aria-disabled",Z="aria-expanded",ee="aria-hidden",te="aria-selected",ne=":visible",ie=":empty",oe="single",re={text:"dataTextField",url:"dataUrlField",spriteCssClass:"dataSpriteCssClassField",imageUrl:"dataImageUrlField"},ae={aria:function(e){var t="";return(e.items||e.content||e.contentUrl||e.expanded)&&(t+=Z+"='"+(e.expanded?"true":"false")+"' "),e.enabled===!1&&(t+=J+"='true'"),t},wrapperCssClass:function(e,t){var n="k-item",i=t.index;return n+=t.enabled===!1?" "+U:t.expanded===!0?" "+H:" k-state-default",0===i&&(n+=" k-first"),i==e.length-1&&(n+=" k-last"),t.cssClass&&(n+=" "+t.cssClass),n},textClass:function(e,t){var n=b;return t.firstLevel&&(n+=" k-header"),e.selected&&(n+=" "+q),n},textAttributes:function(e){return e?" href='"+e+"'":""},arrowClass:function(e){var t="k-icon";return t+=e.expanded?" k-panelbar-collapse k-i-arrow-60-up":" k-panelbar-expand k-i-arrow-60-down"},text:function(e){return e.encoded===!1?e.text:o.htmlEncode(e.text)},groupAttributes:function(e){return e.expanded!==!0?" style='display:none'":""},ariaHidden:function(e){return e.expanded!==!0},groupCssClass:function(){return"k-group k-panel"},contentAttributes:function(e){return e.item.expanded!==!0?" style='display:none'":""},content:function(e){return e.content?e.content:e.contentUrl?"":" "},contentUrl:function(e){return e.contentUrl?'href="'+e.contentUrl+'"':""}},se=function(e){return e.children("span").children(".k-icon")},le=o.ui.DataBoundWidget.extend({init:function(t,n){var i,r,a=this;d(n)&&(n={dataSource:n}),r=n&&!!n.dataSource,h.fn.init.call(a,t,n),t=a.wrapper=a.element.addClass("k-widget k-reset k-header k-panelbar"),n=a.options,t[0].id&&(a._itemId=t[0].id+"_pb_active"),a._tabindex(),a._accessors(),a._dataSource(),a._templates(),a._initData(r),a._updateClasses(),a._animations(n),t.on("click"+g,Y,function(t){a._click(e(t.currentTarget))&&t.preventDefault()}).on(P+g+" "+z+g,Y,a._toggleHover).on("click"+g,K,!1).on("click"+g,".k-request-retry",l(a._retryRequest,a)).on("keydown"+g,e.proxy(a._keydown,a)).on("focus"+g,function(){var e=a.select();a._current(e[0]?e:a._first())}).on("blur"+g,function(){a._current(null)}).attr("role","menu"),i=t.find("li."+H+" > ."+I),i[0]&&a.expand(i.parent(),!1),n.dataSource||a._angularCompile(),o.notify(a)},events:[A,F,E,M,D,k,R,B],options:{name:"PanelBar",dataSource:{},animation:{expand:{effects:"expand:vertical",duration:200},collapse:{duration:200}},messages:{loading:"Loading...",requestFailed:"Request failed.",retry:"Retry"},autoBind:!0,loadOnDemand:!0,expandMode:"multiple",template:"",dataTextField:null},_angularCompile:function(){var e=this;e.angular("compile",function(){return{elements:e.element.children("li"),data:[{dataItem:e.options.$angular}]}})},_angularCompileElements:function(t,n){var i=this;i.angular("compile",function(){return{elements:t,data:e.map(n,function(e){return[{dataItem:e}]})}})},_angularCleanup:function(){var e=this;e.angular("cleanup",function(){return{elements:e.element.children("li")}})},destroy:function(){h.fn.destroy.call(this),this.element.off(g),this._angularCleanup(),o.destroy(this.element)},_initData:function(e){var t=this;e&&(t.element.empty(),t.options.autoBind&&(t._progress(!0),t.dataSource.fetch()))},_templates:function(){var e=this,t=e.options,n=l(e._fieldAccessor,e);t.template&&typeof t.template==V?t.template=u(t.template):t.template||(t.template=u("# var text = "+n("text")+"(data.item); ## if (typeof data.item.encoded != 'undefined' && data.item.encoded === false) {##= text ## } else { ##: text ## } #")),e.templates={content:u("<div role='region' class='k-content'#= contentAttributes(data) #>#= content(item) #</div>"),group:u("<ul role='group' aria-hidden='#= ariaHidden(group) #' class='#= groupCssClass(group) #'#= groupAttributes(group) #>#= renderItems(data) #</ul>"),itemWrapper:u("# var url = "+n("url")+"(item); ## var imageUrl = "+n("imageUrl")+"(item); ## var spriteCssClass = "+n("spriteCssClass")+"(item); ## var contentUrl = contentUrl(item); ## var tag = url||contentUrl ? 'a' : 'span'; #<#= tag # class='#= textClass(item, group) #' #= contentUrl ##= textAttributes(url) #># if (imageUrl) { #<img class='k-image' alt='' src='#= imageUrl #' /># } ## if (spriteCssClass) { #<span class='k-sprite #= spriteCssClass #'></span># } ##= data.panelBar.options.template(data) ##= arrow(data) #</#= tag #>"),item:u("<li role='menuitem' #=aria(item)#class='#= wrapperCssClass(group, item) #'"+o.attr("uid")+"='#= item.uid #'>#= itemWrapper(data) ## if (item.items && item.items.length > 0) { ##= subGroup({ items: item.items, panelBar: panelBar, group: { expanded: item.expanded } }) ## } else if (item.content || item.contentUrl) { ##= renderContent(data) ## } #</li>"),loading:u("<div class='k-item'><span class='k-icon k-i-loading'></span> #: data.messages.loading #</div>"),retry:u("#: data.messages.requestFailed # <button class='k-button k-request-retry'>#: data.messages.retry #</button>"),arrow:u("<span class='#= arrowClass(item) #'></span>"),empty:u("")}},setOptions:function(e){var t=this.options.animation;this._animations(e),e.animation=s(!0,t,e.animation),"dataSource"in e&&this.setDataSource(e.dataSource),h.fn.setOptions.call(this,e)},expand:function(n,i){var o=this,r={};return n=this.element.find(n),o._animating&&n.find("ul").is(":visible")?(o.one("complete",function(){setTimeout(function(){o.expand(n)})}),t):(o._animating=!0,i=i!==!1,n.each(function(t,a){var s,l;if(a=e(a),s=n.children(".k-group,.k-content"),s.length||(s=o._addGroupElement(n)),l=s.add(a.find(O)),!a.hasClass(U)&&l.length>0){if(o.options.expandMode==oe&&o._collapseAllExpanded(a))return o;n.find("."+G).removeClass(G),a.addClass(G),i||(r=o.options.animation,o.options.animation={expand:{effects:{}},collapse:{hide:!0,effects:{}}}),o._triggerEvent(A,a)||o._toggleItem(a,!1,!1),i||(o.options.animation=r)}}),o)},collapse:function(t,n){var i=this,o={};return i._animating=!0,n=n!==!1,t=i.element.find(t),t.each(function(t,r){r=e(r);var a=r.find(N).add(r.find(O));!r.hasClass(U)&&a.is(ne)&&(r.removeClass(G),n||(o=i.options.animation,i.options.animation={expand:{effects:{}},collapse:{hide:!0,effects:{}}}),i._triggerEvent(F,r)||i._toggleItem(r,!0),n||(i.options.animation=o))}),i},updateArrow:function(t){var n=this;t=e(t),t.children(w).children(".k-panelbar-collapse, .k-panelbar-expand").remove(),t.filter(function(){var t=n.dataItem(this);return t?t.hasChildren||t.content||t.contentUrl:e(this).find(".k-panel").length>0||e(this).find(".k-content").length>0}).children(".k-link:not(:has([class*=k-i-arrow]))").each(function(){var t=e(this),n=t.parent();t.append("<span class='k-icon "+(n.hasClass(H)?" k-panelbar-collapse k-i-arrow-60-up":" k-panelbar-expand k-i-arrow-60-down")+"'/>")})},_accessors:function(){var e,t,n,i=this,r=i.options,a=i.element;for(e in re)t=r[re[e]],n=a.attr(o.attr(e+"-field")),!t&&n&&(t=n),t||(t=e),d(t)||(t=[t]),r[re[e]]=t},_progress:function(e,t){var n=this.element,i=this.templates.loading({messages:this.options.messages});1==arguments.length?(t=e,t?n.html(i):n.empty()):se(e).toggleClass("k-i-loading",t).removeClass("k-i-refresh")},_refreshRoot:function(t){var n,i,o,a=this,l=a.element,c={firstLevel:!0,expanded:!0,length:l.children().length};for(this.element.empty(),n=e.map(t,function(t,n){return"string"==typeof t?e(t):(t.items=[],e(a.renderItem({group:c,item:s(t,{index:n})})))}),this.element.append(n),i=this.element.children(".k-item"),o=0;o<t.length;o++)this.trigger("itemChange",{item:i.eq(o).find(".k-link").first(),data:t[o],ns:r});this._angularCompileElements(n,t)},_refreshChildren:function(e,t){var n,o,a,s;if(t.children(".k-group").empty(),s=e.children.data(),s.length)for(this.append(e.children,t),this.options.loadOnDemand&&this._toggleGroup(t.children(".k-group"),!1),o=t.children(".k-group").children("li"),n=0;n<o.length;n++)a=o.eq(n),this.trigger("itemChange",{item:a.find(".k-link").first(),data:this.dataItem(a),ns:r});else i(t), +o=t.children(".k-group").children("li"),this._angularCompileElements(o,s)},findByUid:function(t){var n,i,r=this.element.find(".k-item"),a=o.attr("uid");for(i=0;i<r.length;i++)if(r[i].getAttribute(a)==t){n=r[i];break}return e(n)},refresh:function(e){var n,i,o=this.options,r=e.node,a=e.action,s=e.items,l=this.wrapper,c=o.loadOnDemand;if(e.field){if(!s[0]||!s[0].level)return;return this._updateItems(s,e.field)}if(r&&(l=this.findByUid(r.uid),this._progress(l,!1)),"add"==a?this._appendItems(e.index,s,l):"remove"==a?this.remove(this.findByUid(s[0].uid)):"itemchange"==a?this._updateItems(s):"itemloaded"==a?this._refreshChildren(r,l):this._refreshRoot(s),"remove"!=a)for(n=0;n<s.length;n++)c&&!s[n].expanded||(i=s[n],this._hasChildItems(i)&&i.load());this.trigger(R,{node:r?l:t})},_error:function(e){var t=e.node&&this.findByUid(e.node.uid),n=this.templates.retry({messages:this.options.messages});t?(this._progress(t,!1),this._expanded(t,!1),se(t).addClass("k-i-refresh"),e.node.loaded(!1)):(this._progress(!1),this.element.html(n))},_retryRequest:function(e){e.preventDefault(),this.dataSource.fetch()},items:function(){return this.element.find(".k-item > span:first-child")},setDataSource:function(e){var t=this.options;t.dataSource=e,this._dataSource(),this.options.autoBind&&(this._progress(!0),this.dataSource.fetch())},_bindDataSource:function(){this._refreshHandler=l(this.refresh,this),this._errorHandler=l(this._error,this),this.dataSource.bind(D,this._refreshHandler),this.dataSource.bind(k,this._errorHandler)},_unbindDataSource:function(){var e=this.dataSource;e&&(e.unbind(D,this._refreshHandler),e.unbind(k,this._errorHandler))},_fieldAccessor:function(t){var n=this.options[re[t]]||[],i=n.length,r="(function(item) {";return 0===i?r+="return item['"+t+"'];":(r+="var levels = ["+e.map(n,function(e){return"function(d){ return "+o.expr(e)+"}"}).join(",")+"];",r+="if(item.level){return levels[Math.min(item.level(), "+i+"-1)](item);}else",r+="{return levels["+i+"-1](item)}"),r+="})"},_dataSource:function(){var e=this,t=e.options,n=t.dataSource;n&&(n=d(n)?{data:n}:n,e._unbindDataSource(),n.fields||(n.fields=[{field:"text"},{field:"url"},{field:"spriteCssClass"},{field:"imageUrl"}]),e.dataSource=p.create(n),e._bindDataSource())},_appendItems:function(t,n,i){var o,r,a,l,c,d=this;for(i.hasClass("k-panelbar")?(o=i.children("li"),r=i):(r=i.children(".k-group"),r.length||(r=d._addGroupElement(i)),o=r.children("li")),a={firstLevel:i.hasClass("k-panelbar"),expanded:!0,length:o.length},l=e.map(n,function(t,n){return e("string"==typeof t?t:d.renderItem({group:a,item:s(t,{index:n})}))}),typeof t==L&&(t=o.length),c=0;c<l.length;c++)0===o.length||0===t?r.append(l[c]):l[c].insertAfter(o[t-1]);d._angularCompileElements(l,n),d.dataItem(i)&&(d.dataItem(i).hasChildren=!0,d.updateArrow(i))},_updateItems:function(t,n){var i,o,a,l,c,d,u=this,h={panelBar:u.options,item:l,group:{}},p="expanded"!=n;if("selected"==n)t[0][n]?(c=u.findByUid(t[0].uid),c.hasClass(U)||u.select(c,!0)):u.clearSelection();else{for(d=e.map(t,function(e){return u.findByUid(e.uid)}),p&&u.angular("cleanup",function(){return{elements:d}}),i=0;i<t.length;i++)h.item=l=t[i],h.panelBar=u,a=d[i],o=a.parent(),p&&(h.group={firstLevel:o.hasClass("k-panelbar"),expanded:a.parent().hasClass(H),length:a.children().length},a.children(".k-link").remove(),a.prepend(u.templates.itemWrapper(s(h,{arrow:l.hasChildren||l.content||l.contentUrl?u.templates.arrow:u.templates.empty},ae)))),"expanded"==n?u._toggleItem(a,!l[n],!l[n]||"true"):"enabled"==n&&(u.enable(a,l[n]),l[n]||l.selected&&l.set("selected",!1)),a.length&&this.trigger("itemChange",{item:a.find(".k-link").first(),data:l,ns:r});p&&u.angular("compile",function(){return{elements:d,data:e.map(t,function(e){return[{dataItem:e}]})}})}},_toggleDisabled:function(e,t){e=this.element.find(e),e.toggleClass(X,t).toggleClass(U,!t).attr(J,!t)},dataItem:function(t){var n=e(t).closest(y).attr(o.attr("uid")),i=this.dataSource;return i&&i.getByUid(n)},select:function(n,i){var o=this;return n===t?o.element.find(Q).parent():(n=o.element.find(n),n.length?n.each(function(){var n=e(this),r=n.children(w);return n.hasClass(U)?o:(o._updateSelected(r,i),t)}):this._updateSelected(n),o)},clearSelection:function(){this.select(e())},enable:function(e,t){return this._toggleDisabled(e,t!==!1),this},disable:function(e){return this._toggleDisabled(e,!1),this},append:function(e,t){t=this.element.find(t);var i=this._insert(e,t,t.length?t.find(N):null);return c(i.items,function(){i.group.append(this),n(this)}),this.updateArrow(t),n(i.group.find(".k-first, .k-last")),i.group.height("auto"),this},insertBefore:function(e,t){t=this.element.find(t);var i=this._insert(e,t,t.parent());return c(i.items,function(){t.before(this),n(this)}),n(t),i.group.height("auto"),this},insertAfter:function(e,t){t=this.element.find(t);var i=this._insert(e,t,t.parent());return c(i.items,function(){t.after(this),n(this)}),n(t),i.group.height("auto"),this},remove:function(e){e=this.element.find(e);var t=this,i=e.parentsUntil(t.element,y),o=e.parent("ul");return e.remove(),!o||o.hasClass("k-panelbar")||o.children(y).length||o.remove(),i.length&&(i=i.eq(0),t.updateArrow(i),n(i)),t},reload:function(t){var n=this;t=n.element.find(t),t.each(function(){var t=e(this);n._ajaxRequest(t,t.children("."+I),!t.is(ne))})},_first:function(){return this.element.children($).first()},_last:function(){var e=this.element.children($).last(),t=e.children(C);return t[0]?t.children($).last():e},_current:function(n){var i=this,o=i._focused,r=i._itemId;return n===t?o:(i.element.removeAttr("aria-activedescendant"),o&&o.length&&(o[0].id===r&&o.removeAttr("id"),o.children(w).removeClass(W)),e(n).length&&(r=n[0].id||r,n.attr("id",r).children(w).addClass(W),i.element.attr("aria-activedescendant",r)),i._focused=n,t)},_keydown:function(e){var t=this,n=e.keyCode,i=t._current();e.target==e.currentTarget&&(n==a.DOWN||n==a.RIGHT?(t._current(t._nextItem(i)),e.preventDefault()):n==a.UP||n==a.LEFT?(t._current(t._prevItem(i)),e.preventDefault()):n==a.ENTER||n==a.SPACEBAR?(t._click(i.children(w)),e.preventDefault()):n==a.HOME?(t._current(t._first()),e.preventDefault()):n==a.END&&(t._current(t._last()),e.preventDefault()))},_nextItem:function(e){if(!e)return this._first();var t=e.children(C),n=e.nextAll(":visible").first();return t[0]&&(n=t.children("."+T)),n[0]||(n=e.parent(C).parent(y).next()),n[0]||(n=this._first()),n.hasClass(U)&&(n=this._nextItem(n)),n},_prevItem:function(e){if(!e)return this._last();var t,n=e.prevAll(":visible").first();if(n[0])for(t=n;t[0];)t=t.children(C).children("."+_),t[0]&&(n=t);else n=e.parent(C).parent(y),n[0]||(n=this._last());return n.hasClass(U)&&(n=this._prevItem(n)),n},_insert:function(t,n,i){var o,r,a,l=this,c=e.isPlainObject(t),d=n&&n[0];return d||(i=l.element),r={firstLevel:i.hasClass("k-panelbar"),expanded:e(n).hasClass(H),length:i.children().length},d&&!i.length&&(i=e(l.renderGroup({group:r,options:l.options})).appendTo(n)),c||e.isArray(t)||t instanceof p?(t instanceof p&&(t=t.data()),o=e.map(c?[t]:t,function(t,n){return e("string"==typeof t?t:l.renderItem({group:r,item:s(t,{index:n})}))}),d&&(a=l.dataItem(n),a?(a.hasChildren=!0,n.attr(Z,a.expanded).not("."+H).children("ul").attr(ee,!a.expanded)):n.attr(Z,!1))):(o="string"==typeof t&&"<"!=t.charAt(0)?l.element.find(t):e(t),l._updateItemsClasses(o)),t.length||(t=[t]),l._angularCompileElements(o,t),{items:o,group:i}},_toggleHover:function(t){var n=e(t.currentTarget);n.parents("li."+U).length||n.toggleClass("k-state-hover",t.type==P)},_updateClasses:function(){var t,i,o,r,a,s=this;t=s.element.find("li > ul").not(function(){return e(this).parentsUntil(".k-panelbar","div").length}).addClass("k-group k-panel").attr("role","group"),r=t.parent(),a=s.dataItem(r),o=a&&a.expanded||!1,t.parent().attr(Z,o).not("."+H).children("ul").attr(ee,!o).hide(),i=s.element.add(t).children(),s._updateItemsClasses(i),s.updateArrow(i),n(i)},_updateItemsClasses:function(e){for(var t=e.length,n=0;n<t;n++)this._updateItemClasses(e[n],n)},_updateItemClasses:function(t,n){var i,r,a=this._selected,s=this.options.contentUrls,l=s&&s[n],c=this.element[0];t=e(t).addClass("k-item").attr("role","menuitem"),o.support.browser.msie&&t.css("list-style-position","inside").css("list-style-position",""),t.children(m).addClass(S),r=t.children("a").addClass(b),r[0]&&(r.attr("href",l),r.children(m).addClass(S)),t.filter(":not([disabled]):not([class*=k-state])").addClass("k-state-default"),t.filter("li[disabled]").addClass("k-state-disabled").attr(J,!0).removeAttr("disabled"),t.children("div").addClass(I).attr("role","region").attr(ee,!0).hide().parent().attr(Z,!1),r=t.children(j),r[0]&&(a&&a.removeAttr(te).children(j).removeClass(q),r.addClass(q),this._selected=t.attr(te,!0)),t.children(w)[0]||(i="<span class='"+b+"'/>",s&&s[n]&&t[0].parentNode==c&&(i='<a class="k-link k-header" href="'+s[n]+'"/>'),t.contents().filter(function(){return!(this.nodeName.match(f)||3==this.nodeType&&!e.trim(this.nodeValue))}).wrapAll(i)),t.parent(".k-panelbar")[0]&&t.children(w).addClass("k-header")},_click:function(e){var t,n,i,o,r,a,s,l,c,d=this,u=d.element;if(!e.parents("li."+U).length&&e.closest(".k-widget")[0]==u[0]){if(r=e.closest(w),a=r.closest(y),d._updateSelected(r),s=a.children(".k-group,.k-content"),l=this.dataItem(a),!s.length&&(d.options.loadOnDemand&&l&&l.hasChildren||this._hasChildItems(a)||a.content||a.contentUrl)&&(s=d._addGroupElement(a)),n=a.find(N).add(a.find(O)),i=r.attr(v),o=i&&("#"==i.charAt(i.length-1)||i.indexOf("#"+d.element[0].id+"-")!=-1),t=!(!o&&!n.length),n.data("animating"))return t;if(d._triggerEvent(E,a)&&(t=!0),t!==!1)return d.options.expandMode==oe&&d._collapseAllExpanded(a)?t:(n.length&&(c=n.is(ne),d._triggerEvent(c?F:A,a)||(t=d._toggleItem(a,c))),t)}},_hasChildItems:function(e){return e.items&&e.items.length>0||e.hasChildren},_toggleItem:function(e,n,i){var o,r,a=this,s=e.find(N),l=e.find(w),c=l.attr(v),d=a.dataItem(e),u=!n,h=d&&d.loaded();return d&&!i&&d.expanded!==u?(d.set("expanded",u),o=d.hasChildren||!!d.content||!!d.contentUrl):(!d||i&&"true"!==i||h||d.content||d.contentUrl?s.length?(this._toggleGroup(s,n),o=!0):(r=e.children("."+I),r.length&&(o=!0,r.is(ie)&&c!==t?a._ajaxRequest(e,r,n):a._toggleGroup(r,n))):(a.options.loadOnDemand&&this._progress(e,!0),e.children(".k-group,.k-content").remove(),o=d.hasChildren,d.load()),o)},_toggleGroup:function(e,n){var i=this,o=i.options.animation,r=o.expand,a=o.collapse&&"effects"in o.collapse,l=s({},o.expand,o.collapse);return a||(l=s(l,{reverse:!0})),e.is(ne)!=n?(i._animating=!1,t):(e.attr(ee,!!n),e.parent().attr(Z,!n).toggleClass(H,!n).find("> .k-link > .k-panelbar-collapse,> .k-link > .k-panelbar-expand").toggleClass("k-i-arrow-60-up",!n).toggleClass("k-panelbar-collapse",!n).toggleClass("k-i-arrow-60-down",n).toggleClass("k-panelbar-expand",n),n?(r=s(l,{hide:!0}),r.complete=function(){i._animationCallback()}):r=s({complete:function(e){i._triggerEvent(M,e.closest(y)),i._animationCallback()}},r),e.kendoStop(!0,!0).kendoAnimate(r),t)},_animationCallback:function(){var e=this;e.trigger("complete"),e._animating=!1},_addGroupElement:function(t){var n=e('<ul role="group" aria-hidden="true" class="k-group k-panel" style="display:none"></ul>');return t.append(n),n},_collapseAllExpanded:function(t){var n,i=this,o=!1,r=t.find(N).add(t.find(O));return r.is(ne)&&(o=!0),r.is(ne)||0===r.length||(n=t.siblings(),n.find(N).add(n.find(O)).filter(function(){return e(this).is(ne)}).each(function(t,n){n=e(n),o=i._triggerEvent(F,n.closest(y)),o||i._toggleGroup(n,!0)}),i.one("complete",function(){setTimeout(function(){n.each(function(e,t){var n=i.dataItem(t);n&&n.set("expanded",!1)})})})),o},_ajaxRequest:function(t,n,i){var o=this,r=t.find(".k-panelbar-collapse, .k-panelbar-expand"),a=t.find(w),s=setTimeout(function(){r.addClass("k-i-loading")},100),l={},c=a.attr(v);e.ajax({type:"GET",cache:!1,url:c,dataType:"html",data:l,error:function(e,t){r.removeClass("k-i-loading"),o.trigger(k,{xhr:e,status:t})&&this.complete()},complete:function(){clearTimeout(s),r.removeClass("k-i-loading")},success:function(e){function r(){return{elements:n.get()}}try{o.angular("cleanup",r),n.html(e),o.angular("compile",r)}catch(a){var s=window.console;s&&s.error&&s.error(a.name+": "+a.message+" in "+c),this.error(this.xhr,"error")}o._toggleGroup(n,i),o.trigger(B,{item:t[0],contentElement:n[0]})}})},_triggerEvent:function(e,t){var n=this;return n.trigger(e,{item:t[0]})},_updateSelected:function(e,t){var n=this,i=n.element,o=e.parent(y),r=n._selected,a=n.dataItem(o);r&&r.removeAttr(te),n._selected=o.attr(te,!0),i.find(Q).removeClass(q),i.find("> ."+G+", .k-panel > ."+G).removeClass(G),e.addClass(q),e.parentsUntil(i,y).filter(":has(.k-header)").addClass(G),n._current(o[0]?o:null),a&&a.set("selected",!0),t||n.trigger(D)},_animations:function(e){e&&"animation"in e&&!e.animation&&(e.animation={expand:{effects:{}},collapse:{hide:!0,effects:{}}})},renderItem:function(e){var t,n,i=this;return e=s({panelBar:i,group:{}},e),t=i.templates.empty,n=e.item,i.templates.item(s(e,{itemWrapper:i.templates.itemWrapper,renderContent:i.renderContent,arrow:i._hasChildItems(n)||n.content||n.contentUrl?i.templates.arrow:t,subGroup:!e.loadOnDemand||n.expanded?i.renderGroup:t},ae))},renderGroup:function(e){var t=this,n=t.templates||e.panelBar.templates;return n.group(s({renderItems:function(e){for(var t="",n=0,i=e.items,o=i?i.length:0,r=s({length:o},e.group);n<o;n++)t+=e.panelBar.renderItem(s(e,{group:r,item:s({index:n},i[n])}));return t}},e,ae))},renderContent:function(e){return e.panelBar.templates.content(s(e,ae))}});o.ui.plugin(le)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.responsivepanel.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=e.proxy,i=".kendoResponsivePanel",o="open",r="close",a="click"+i+" touchstart"+i+" touchend"+i,s=kendo.ui.Widget,l=s.extend({init:function(t,o){s.fn.init.call(this,t,o),this._guid="_"+kendo.guid(),this._toggleHandler=n(this._toggleButtonClick,this),this._closeHandler=n(this._close,this),e(document.documentElement).on(a,this.options.toggleButton,this._toggleHandler),this._registerBreakpoint(),this.element.addClass("k-rpanel k-rpanel-"+this.options.orientation+" "+this._guid),this._resizeHandler=n(this.resize,this,!0),e(window).on("resize"+i,this._resizeHandler)},_mediaQuery:"@media (max-width: #= breakpoint-1 #px) {.#= guid #.k-rpanel-animate.k-rpanel-left,.#= guid #.k-rpanel-animate.k-rpanel-right {-webkit-transition: -webkit-transform .2s ease-out;-ms-transition: -ms-transform .2s ease-out;transition: transform .2s ease-out;} .#= guid #.k-rpanel-top {overflow: hidden;}.#= guid #.k-rpanel-animate.k-rpanel-top {-webkit-transition: max-height .2s linear;-ms-transition: max-height .2s linear;transition: max-height .2s linear;}} @media (min-width: #= breakpoint #px) {#= toggleButton # { display: none; } .#= guid #.k-rpanel-left { float: left; } .#= guid #.k-rpanel-right { float: right; } .#= guid #.k-rpanel-left, .#= guid #.k-rpanel-right {position: relative;-webkit-transform: translateX(0);-ms-transform: translateX(0);transform: translateX(0);-webkit-transform: translateX(0) translateZ(0);-ms-transform: translateX(0) translateZ(0);transform: translateX(0) translateZ(0);} .k-ie9 .#= guid #.k-rpanel-left { left: 0; } .#= guid #.k-rpanel-top { max-height: none; }}",_registerBreakpoint:function(){var e=this.options;this._registerStyle(kendo.template(this._mediaQuery)({breakpoint:e.breakpoint,toggleButton:e.toggleButton,guid:this._guid}))},_registerStyle:function(t){var n=e("head,body")[0],i=document.createElement("style");n.appendChild(i),i.styleSheet?i.styleSheet.cssText=t:i.appendChild(document.createTextNode(t))},options:{name:"ResponsivePanel",orientation:"left",toggleButton:".k-rpanel-toggle",breakpoint:640,autoClose:!0},events:[o,r],_resize:function(){this.element.removeClass("k-rpanel-animate k-rpanel-expanded"),e(document.documentElement).off(a,this._closeHandler)},_toggleButtonClick:function(e){e.preventDefault(),"touchend"!=e.type&&(this.element.hasClass("k-rpanel-expanded")?this.close():this.open())},open:function(){this.trigger(o)||(this.element.addClass("k-rpanel-animate k-rpanel-expanded"),this.options.autoClose&&e(document.documentElement).on(a,this._closeHandler))},close:function(){this.trigger(r)||(this.element.addClass("k-rpanel-animate").removeClass("k-rpanel-expanded"),e(document.documentElement).off(a,this._closeHandler))},_close:function(t){var n=t.isDefaultPrevented(),i=e(t.target).closest(this.options.toggleButton+",.k-rpanel");i.length||n||this.close()},destroy:function(){s.fn.destroy.call(this),e(window).off("resize"+i,this._resizeHandler),e(document.documentElement).off(a,this._closeHandler)}});kendo.ui.plugin(l)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.timepicker.min",["kendo.popup.min","kendo.dateinput.min"],e)}(function(){return function(e,t){function n(){var e=new $,t=new $(e.getFullYear(),e.getMonth(),e.getDate(),0,0,0),n=new $(e.getFullYear(),e.getMonth(),e.getDate(),12,0,0);return-1*(t.getTimezoneOffset()-n.getTimezoneOffset())}function i(e){return 60*e.getHours()*P+e.getMinutes()*P+1e3*e.getSeconds()+e.getMilliseconds()}function o(e){var t=new Date(2100,0,1);return t.setMinutes(-e),t}function r(e,t,n){var o,r=i(t),a=i(n);return!e||r==a||(o=i(e),r>o&&(o+=z),a<r&&(a+=z),o>=r&&o<=a)}function a(e){var t=e.parseFormats;e.format=g(e.format||u.getCulture(e.culture).calendars.standard.patterns.t),t=q(t)?t:[t],t.splice(0,0,e.format),e.parseFormats=t}function s(e){e.preventDefault()}function l(e,t){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds())}var c,d,u=window.kendo,h=u.keys,p=u.parseDate,f=u._activeElement,g=u._extractFormat,m=u.support,v=m.browser,_=u.ui,b=_.Widget,w="open",k="close",y="change",x=".kendoTimePicker",C="click"+x,S="k-state-default",T="disabled",D="readonly",A="li",E="<span/>",I="k-state-focused",M="k-state-hover",F="mouseenter"+x+" mouseleave"+x,R="mousedown"+x,P=6e4,z=864e5,B="k-state-selected",L="k-state-disabled",H="aria-selected",N="aria-expanded",O="aria-hidden",V="aria-disabled",W="aria-activedescendant",U="id",q=e.isArray,j=e.extend,G=e.proxy,$=Date,Y=new $;Y=new $(Y.getFullYear(),Y.getMonth(),Y.getDate(),0,0,0),c=function(t){var n=this,i=t.id;n.options=t,n._dates=[],n.ul=e('<ul tabindex="-1" role="listbox" aria-hidden="true" unselectable="on" class="k-list k-reset"/>').css({overflow:m.kineticScrollNeeded?"":"auto"}).on(C,A,G(n._click,n)).on("mouseenter"+x,A,function(){e(this).addClass(M)}).on("mouseleave"+x,A,function(){e(this).removeClass(M)}),n.list=e("<div class='k-list-container k-list-scroller' unselectable='on'/>").append(n.ul).on(R,s),i&&(n._timeViewID=i+"_timeview",n._optionID=i+"_option_selected",n.ul.attr(U,n._timeViewID)),n._popup(),n._heightHandler=G(n._height,n),n.template=u.template('<li tabindex="-1" role="option" class="k-item" unselectable="on">#=data#</li>',{useWithBlock:!1})},c.prototype={current:function(n){var i=this,o=i.options.active;return n===t?i._current:(i._current&&(i._current.removeClass(B),i._current&&i._current.length&&(i._current[0].removeAttribute(U),i._current[0].removeAttribute(H))),n&&(n=e(n).addClass(B).attr(U,i._optionID).attr(H,!0),i.scroll(n[0])),i._current=n,o&&o(n),t)},close:function(){this.popup.close()},destroy:function(){var e=this;e.ul.off(x),e.list.off(x),e.popup.destroy()},open:function(){var e,t=this;t.ul[0].firstChild||t.bind(),e=t.popup._hovered,t.popup._hovered=!0,t.popup.open(),setTimeout(function(){t.popup._hovered=e},1),t._current&&t.scroll(t._current[0])},dataBind:function(e){for(var t,n=this,i=n.options,o=i.format,a=u.toString,s=n.template,l=e.length,c=0,d="";c<l;c++)t=e[c],r(t,i.min,i.max)&&(d+=s(a(t,o,i.culture)));n._html(d)},refresh:function(){var e,t,r=this,a=r.options,s=a.format,c=n(),d=c<0,h=u.parseDate(r._value),p=h?l(h,a.min):l(new Date,a.min),f=a.min,g=a.max,m=i(f),v=i(g),_=i(o(a.interval)),b=a.interval*P,w=u.toString,k=r.template,y=a.useValueToRender?p:new Date((+a.min)),x=new $(y),C="";for(t=d?(z+c*P)/b:z/b,m==v&&_!==v||(m>v&&(v+=z),t=(v-m)/b+1);;){if(v&&(i(y)>=v||x.getDate()!=y.getDate())){e=i(y),x<y&&(e+=z),e>v&&(y=new $((+g))),i(y)>0&&(C+=k(w(y,s,a.culture)));break}if(x.getDate()!=y.getDate())break;C+=k(w(y,s,a.culture)),y.setTime(y.getTime()+b)}r._html(C)},bind:function(){var e=this,t=e.options.dates;t&&t[0]?e.dataBind(t):e.refresh()},_html:function(e){var t=this;t.ul[0].innerHTML=e,t.popup.unbind(w,t._heightHandler),t.popup.one(w,t._heightHandler),t.current(null),t.select(t._value)},scroll:function(e){if(e){var t=this.list[0],n=e.offsetTop,i=e.offsetHeight,o=t.scrollTop,r=t.clientHeight,a=n+i;o>n?o=n:a>o+r&&(o=a-r),t.scrollTop=o}},select:function(t){var n,i=this,o=i.options,r=i._current;t instanceof Date&&(t=u.toString(t,o.format,o.culture)),"string"==typeof t&&(r&&r.text()===t?t=r:(t=e.grep(i.ul[0].childNodes,function(e){return(e.textContent||e.innerText)==t}),t=t[0]?t:null)),n=i._distinctSelection(t),i.current(n)},_distinctSelection:function(t){var n,o,r=this;return t&&t.length>1&&(n=i(r._value),o=e.inArray(n,r._dates),t=r.ul.children()[o]),t},setOptions:function(e){var t=this.options;e.min=p(e.min),e.max=p(e.max),this.options=j(t,e,{active:t.active,change:t.change,close:t.close,open:t.open}),this.bind()},toggle:function(){var e=this;e.popup.visible()?e.close():e.open()},value:function(e){var t=this;t._value=e,t.ul[0].firstChild&&t.select(e)},_click:function(t){var n=this,i=e(t.currentTarget),o=i.text(),r=n.options.dates;r&&r.length>0&&(o=r[i.index()]),t.isDefaultPrevented()||(n.select(i),n.options.change(o,!0),n.close())},_height:function(){var e=this,t=e.list,n=t.parent(".k-animation-container"),i=e.options.height;e.ul[0].children.length&&t.add(n).show().height(e.ul[0].scrollHeight>i?i:"auto").hide()},_parse:function(e){var t=this,n=t.options,o=i(n.min)!=i(Y)?n.min:null,r=i(n.max)!=i(Y)?n.max:null,a=t._value||o||r||Y;return e instanceof $?e:(e=p(e,n.parseFormats,n.culture),e&&(e=new $(a.getFullYear(),a.getMonth(),a.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())),e)},_adjustListWidth:function(){var e,t,n=this.list,i=n[0].style.width,o=this.options.anchor,r=u._outerWidth;!n.data("width")&&i||(e=window.getComputedStyle?window.getComputedStyle(o[0],null):0,t=e?parseFloat(e.width):r(o),e&&(v.mozilla||v.msie)&&(t+=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight)+parseFloat(e.borderLeftWidth)+parseFloat(e.borderRightWidth)),i=t-(r(n)-n.width()),n.css({fontFamily:o.css("font-family"),width:i}).data("width",i))},_popup:function(){var e=this,t=e.list,n=e.options,i=n.anchor;e.popup=new _.Popup(t,j(n.popup,{anchor:i,open:n.open,close:n.close,animation:n.animation,isRtl:m.isRtl(n.anchor)}))},move:function(e){var n=this,i=e.keyCode,o=n.ul[0],r=n._current,a=i===h.DOWN;if(i===h.UP||a){if(e.altKey)return n.toggle(a),t;r=a?r?r[0].nextSibling:o.firstChild:r?r[0].previousSibling:o.lastChild,r&&n.select(r),n.options.change(n._current.text()),e.preventDefault()}else i!==h.ENTER&&i!==h.TAB&&i!==h.ESC||(e.preventDefault(),r&&n.options.change(r.text(),!0),n.close())}},c.getMilliseconds=i,u.TimeView=c,d=b.extend({init:function(t,n){var o,r,s,l,d,h,f=this;b.fn.init.call(f,t,n),t=f.element,n=f.options,n.min=p(t.attr("min"))||p(n.min),n.max=p(t.attr("max"))||p(n.max),a(n),f._initialOptions=j({},n),f._wrapper(),f.timeView=r=new c(j({},n,{id:t.attr(U),anchor:f.wrapper,format:n.format,change:function(e,n){n?f._change(e):t.val(e)},open:function(e){f.timeView._adjustListWidth(),f.trigger(w)?e.preventDefault():(t.attr(N,!0),o.attr(O,!1))},close:function(e){f.trigger(k)?e.preventDefault():(t.attr(N,!1),o.attr(O,!0))},active:function(e){t&&t.length&&t[0].removeAttribute(W),e&&t.attr(W,r._optionID)}})),o=r.ul,f._icon(),f._reset();try{t[0].setAttribute("type","text")}catch(g){t[0].type="text"}t.addClass("k-input").attr({role:"combobox","aria-expanded":!1,"aria-owns":r._timeViewID,autocomplete:"off"}),s=t.is("[disabled]")||e(f.element).parents("fieldset").is(":disabled"),s?f.enable(!1):f.readonly(t.is("[readonly]")),n.dateInput&&(l=n.min,d=n.max,h=new $,i(l)==i(d)&&(l=new $(h.getFullYear(),h.getMonth(),h.getDate(),0,0,0),d=new $(h.getFullYear(),h.getMonth(),h.getDate(),24,0,0)),f._dateInput=new _.DateInput(t,{culture:n.culture,format:n.format,min:l,max:d,value:n.value,interval:n.interval})),f._old=f._update(n.value||f.element.val()),f._oldText=t.val(),u.notify(f)},options:{name:"TimePicker",min:Y,max:Y,format:"",dates:[],parseFormats:[],value:null,interval:30,height:200,animation:{},dateInput:!1},events:[w,k,y],setOptions:function(e){var t=this,n=t._value;b.fn.setOptions.call(t,e),e=t.options,a(e),t.timeView.setOptions(e),n&&t.element.val(u.toString(n,e.format,e.culture))},dataBind:function(e){q(e)&&this.timeView.dataBind(e)},_editable:function(e){var t=this,n=e.disable,i=e.readonly,o=t._arrow.off(x),r=t.element.off(x),a=t._inputWrapper.off(x);t._dateInput&&t._dateInput._unbindInput(),i||n?(a.addClass(n?L:S).removeClass(n?S:L),r.attr(T,n).attr(D,i).attr(V,n)):(a.addClass(S).removeClass(L).on(F,t._toggleHover),r&&r.length&&(r[0].removeAttribute(T),r[0].removeAttribute(D)),r.attr(V,!1).on("keydown"+x,G(t._keydown,t)).on("focusout"+x,G(t._blur,t)).on("focus"+x,function(){t._inputWrapper.addClass(I)}),t._dateInput&&t._dateInput._bindInput(),o.on(C,G(t._click,t)).on(R,s))},readonly:function(e){this._editable({readonly:e===t||e,disable:!1})},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t||e)})},destroy:function(){var e=this;b.fn.destroy.call(e),e.timeView.destroy(),e.element.off(x),e._arrow.off(x),e._inputWrapper.off(x),e._form&&e._form.off("reset",e._resetHandler)},close:function(){this.timeView.close()},open:function(){this.timeView.open()},min:function(e){return this._option("min",e)},max:function(e){return this._option("max",e)},value:function(e){var n=this;return e===t?n._value:(n._old=n._update(e),null===n._old&&n.element.val(""),n._oldText=n.element.val(),t)},_blur:function(){var e=this,t=e.element.val();e.close(),t!==e._oldText&&e._change(t),e._inputWrapper.removeClass(I)},_click:function(){var e=this,t=e.element;e.timeView.toggle(),m.touch||t[0]===f()||t.trigger("focus")},_change:function(e){var t,n,i,o=this,r=o.element.val();e=o._update(e),t=!u.calendar.isEqualDate(o._old,e),n=t&&!o._typing,i=r!==o.element.val(),(n||i)&&o.element.trigger(y),t&&(o._old=e,o._oldText=o.element.val(),o.trigger(y)),o._typing=!1},_icon:function(){var t,n=this,i=n.element;t=i.next("span.k-select"),t[0]||(t=e('<span unselectable="on" class="k-select" aria-label="select"><span class="k-icon k-i-clock"></span></span>').insertAfter(i)),n._arrow=t.attr({role:"button","aria-controls":n.timeView._timeViewID})},_keydown:function(e){var t=this,n=e.keyCode,i=t.timeView,o=t.element.val();i.popup.visible()||e.altKey?(i.move(e),t._dateInput&&e.stopImmediatePropagation&&e.stopImmediatePropagation()):n===h.ENTER&&o!==t._oldText?t._change(o):t._typing=!0},_option:function(e,n){var i=this,o=i.options;return n===t?o[e]:(n=i.timeView._parse(n),n&&(n=new $((+n)),o[e]=n,i.timeView.options[e]=n,i.timeView.bind()),t)},_toggleHover:function(t){e(t.currentTarget).toggleClass(M,"mouseenter"===t.type)},_update:function(e){var t=this,n=t.options,i=t.timeView,o=i._parse(e);return r(o,n.min,n.max)||(o=null),t._value=o,t._dateInput&&o?t._dateInput.value(o||e):t.element.val(u.toString(o||e,n.format,n.culture)),i.value(o),o},_wrapper:function(){var t,n=this,i=n.element;t=i.parents(".k-timepicker"),t[0]||(t=i.wrap(E).parent().addClass("k-picker-wrap k-state-default"),t=t.wrap(E).parent()),t[0].style.cssText=i[0].style.cssText,n.wrapper=t.addClass("k-widget k-timepicker").addClass(i[0].className),i.css({width:"100%",height:i[0].style.height}),n._inputWrapper=e(t[0].firstChild)},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){t.value(n[0].defaultValue),t.max(t._initialOptions.max),t.min(t._initialOptions.min)},t._form=o.on("reset",t._resetHandler))}}),_.plugin(d)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.datetimepicker.min",["kendo.datepicker.min","kendo.timepicker.min"],e)}(function(){return function(e,t){function n(e){var t=new Date(2100,0,1);return t.setMinutes(-e),t}function i(e){e.preventDefault()}function o(t){var n,i=r.getCulture(t.culture).calendars.standard.patterns,o=!t.parseFormats.length;t.format=d(t.format||i.g),t.timeFormat=n=d(t.timeFormat||i.t),r.DateView.normalize(t),o&&t.parseFormats.unshift("yyyy-MM-ddTHH:mm:ss"),e.inArray(n,t.parseFormats)===-1&&t.parseFormats.push(n)}var r=window.kendo,a=r.TimeView,s=r.parseDate,l=r.support,c=r._activeElement,d=r._extractFormat,u=r.calendar,h=u.isInRange,p=u.restrictValue,f=u.isEqualDatePart,g=a.getMilliseconds,m=r.ui,v=m.Widget,_="open",b="close",w="change",k=".kendoDateTimePicker",y="click"+k,x=l.mouseAndTouchPresent?r.applyEventMap("up",k.slice(1)):y,C="disabled",S="readonly",T="k-state-default",D="k-state-focused",A="k-state-hover",E="k-state-disabled",I="mouseenter"+k+" mouseleave"+k,M="mousedown"+k,F="month",R="<span/>",P="aria-activedescendant",z="aria-expanded",B="aria-hidden",L="aria-owns",H="aria-disabled",N=Date,O=new N(1800,0,1),V=new N(2099,11,31),W={view:"date"},U={view:"time"},q=e.extend,j=v.extend({init:function(t,n){var i,a=this;v.fn.init.call(a,t,n),t=a.element,n=a.options,n.disableDates=r.calendar.disabled(n.disableDates),n.min=s(t.attr("min"))||s(n.min),n.max=s(t.attr("max"))||s(n.max),o(n),a._initialOptions=q({},n),a._wrapper(),a._views(),a._icons(),a._reset(),a._template();try{t[0].setAttribute("type","text")}catch(l){t[0].type="text"}t.addClass("k-input").attr({role:"combobox","aria-expanded":!1,autocomplete:"off"}),a._midnight=a._calculateMidnight(n.min,n.max),i=t.is("[disabled]")||e(a.element).parents("fieldset").is(":disabled"),i?a.enable(!1):a.readonly(t.is("[readonly]")),a._createDateInput(n),a._old=a._update(n.value||a.element.val()),a._oldText=t.val(),r.notify(a)},options:{name:"DateTimePicker",value:null,format:"",timeFormat:"",culture:"",parseFormats:[],dates:[],disableDates:null,min:new N(O),max:new N(V),interval:30,height:200,footer:"",start:F,depth:F,animation:{},month:{},ARIATemplate:'Current focused date is #=kendo.toString(data.current, "d")#',dateButtonText:"Open the date view",timeButtonText:"Open the time view",dateInput:!1,weekNumber:!1},events:[_,b,w],setOptions:function(e){var t,n,i,a=this,l=a._value;v.fn.setOptions.call(a,e),e=a.options,e.min=t=s(e.min),e.max=n=s(e.max),o(e),a._midnight=a._calculateMidnight(e.min,e.max),i=e.value||a._value||a.dateView._current,t&&!f(t,i)&&(t=new N(O)),n&&!f(n,i)&&(n=new N(V)),a.dateView.setOptions(e),a.timeView.setOptions(q({},e,{format:e.timeFormat,min:t,max:n})),a._createDateInput(e),a._dateInput||a.element.val(r.toString(l,e.format,e.culture)),l&&a._updateARIA(l)},_editable:function(t){var n=this,o=n.element.off(k),r=n._dateIcon.off(k),a=n._timeIcon.off(k),s=n._inputWrapper.off(k),l=t.readonly,c=t.disable;l||c?(s.addClass(c?E:T).removeClass(c?T:E),o.attr(C,c).attr(S,l).attr(H,c)):(s.addClass(T).removeClass(E).on(I,n._toggleHover),o&&o.length&&(o[0].removeAttribute(C),o[0].removeAttribute(S,!1),o[0].removeAttribute(H,!1)),o.on("keydown"+k,e.proxy(n._keydown,n)).on("focus"+k,function(){n._inputWrapper.addClass(D)}).on("focusout"+k,function(){n._inputWrapper.removeClass(D),o.val()!==n._oldText&&n._change(o.val()),n.close("date"),n.close("time")}),r.on(M,i).on(x,function(e){n.toggle("date"),n._focusElement(e.type)}),a.on(M,i).on(x,function(e){n.toggle("time"),n._focusElement(e.type)}))},_focusElement:function(e){var t=this.element;l.touch&&(!l.mouseAndTouchPresent||(e||"").match(/touch/i))||t[0]===c()||t.trigger("focus")},readonly:function(e){this._editable({readonly:e===t||e,disable:!1})},enable:function(e){this._editable({readonly:!1, +disable:!(e=e===t||e)})},destroy:function(){var e=this;v.fn.destroy.call(e),e.dateView.destroy(),e.timeView.destroy(),e.element.off(k),e._dateIcon.off(k),e._timeIcon.off(k),e._inputWrapper.off(k),e._form&&e._form.off("reset",e._resetHandler)},close:function(e){"time"!==e&&(e="date"),this[e+"View"].close()},open:function(e){"time"!==e&&(e="date"),this[e+"View"].open()},min:function(e){return this._option("min",e)},max:function(e){return this._option("max",e)},toggle:function(e){var t="timeView";"time"!==e?e="date":t="dateView",this[e+"View"].toggle(),this[t].close()},value:function(e){var n=this;return e===t?n._value:(n._old=n._update(e),null===n._old&&n.element.val(""),n._oldText=n.element.val(),t)},_change:function(e){var t,n,i,o=this,r=o.element.val();e=o._update(e),t=+o._old!=+e,n=t&&!o._typing,i=r!==o.element.val(),(n||i)&&o.element.trigger(w),t&&(o._old=e,o._oldText=o.element.val(),o.trigger(w)),o._typing=!1},_option:function(e,i){var o,r,a=this,l=a.options,c=a.timeView,d=c.options,u=a._value||a._old;if(i===t)return l[e];if(i=s(i,l.parseFormats,l.culture)){if(l.min.getTime()===l.max.getTime()&&(d.dates=[]),l[e]=new N(i.getTime()),a.dateView[e](i),a._midnight=a._calculateMidnight(l.min,l.max),u&&(o=f(l.min,u),r=f(l.max,u)),o||r){if(d[e]=i,o&&!r&&(d.max=n(l.interval)),r){if(a._midnight)return c.dataBind([V]),t;o||(d.min=O)}}else d.max=V,d.min=O;c.bind()}},_toggleHover:function(t){e(t.currentTarget).toggleClass(A,"mouseenter"===t.type)},_update:function(t){var i,o,a,l,c,d=this,u=d.options,g=u.min,m=u.max,v=u.dates,_=d.timeView,b=d._value,k=s(t,u.parseFormats,u.culture),y=null===k&&null===b||k instanceof Date&&b instanceof Date;return u.disableDates&&u.disableDates(k)&&(k=null,d._old||d.element.val()||(t=null)),+k===+b&&y?(c=r.toString(k,u.format,u.culture),c!==t&&(d.element.val(null===k?t:c),t instanceof String&&d.element.trigger(w)),k):(null!==k&&f(k,g)?k=p(k,g,m):h(k,g,m)||(k=null),d._value=k,_.value(k),d.dateView.value(k),k&&(a=d._old,o=_.options,v[0]&&(v=e.grep(v,function(e){return f(k,e)}),v[0]&&(_.dataBind(v),l=!0)),l||(f(k,g)&&(o.min=g,o.max=n(u.interval),i=!0),f(k,m)&&(d._midnight?(_.dataBind([V]),l=!0):(o.max=m,i||(o.min=O),i=!0))),!l&&(!a&&i||a&&!f(a,k))&&(i||(o.max=V,o.min=O),_.bind())),d._dateInput&&k?d._dateInput.value(k||t):d.element.val(r.toString(k||t,u.format,u.culture)),d._updateARIA(k),k)},_keydown:function(e){var t=this,n=t.dateView,i=t.timeView,o=t.element.val(),a=n.popup.visible(),s=t._dateInput&&e.stopImmediatePropagation;e.altKey&&e.keyCode===r.keys.DOWN?t.toggle(a?"time":"date"):a?(n.move(e),t._updateARIA(n._current)):i.popup.visible()?i.move(e):e.keyCode===r.keys.ENTER&&o!==t._oldText?t._change(o):(t._typing=!0,s=!1),s&&e.stopImmediatePropagation()},_views:function(){var e,t,n,i,o,l,c=this,d=c.element,u=c.options,p=d.attr("id");c.dateView=e=new r.DateView(q({},u,{id:p,anchor:c.wrapper,change:function(){var t,n,i=e.calendar.value(),o=+i,a=+u.min,s=+u.max;o!==a&&o!==s||(t=o===a?a:s,t=new N(c._value||t),t.setFullYear(i.getFullYear(),i.getMonth(),i.getDate()),h(t,a,s)&&(i=t)),c._value&&(n=r.date.setHours(new Date(i),c._value),h(n,a,s)&&(i=n)),c._change(i),c.close("date")},close:function(e){c.trigger(b,W)?e.preventDefault():(d.attr(z,!1),n.attr(B,!0),t.popup.visible()||d&&d.length&&d[0].removeAttribute(L))},open:function(t){c.trigger(_,W)?t.preventDefault():(d.val()!==c._oldText&&(l=s(d.val(),u.parseFormats,u.culture),c.dateView[l?"current":"value"](l)),n.attr(B,!1),d.attr(z,!0).attr(L,e._dateViewID),c._updateARIA(l))}})),n=e.div,o=u.min.getTime(),c.timeView=t=new a({id:p,value:u.value,anchor:c.wrapper,animation:u.animation,format:u.timeFormat,culture:u.culture,height:u.height,interval:u.interval,min:new N(O),max:new N(V),dates:o===u.max.getTime()?[new Date(o)]:[],parseFormats:u.parseFormats,change:function(n,i){n=t._parse(n),n<u.min?(n=new N((+u.min)),t.options.min=n):n>u.max&&(n=new N((+u.max)),t.options.max=n),i?(c._timeSelected=!0,c._change(n)):(d.val(r.toString(n,u.format,u.culture)),e.value(n),c._updateARIA(n))},close:function(t){c.trigger(b,U)?t.preventDefault():(i.attr(B,!0),d.attr(z,!1),e.popup.visible()||d&&d.length&&d[0].removeAttribute(L))},open:function(e){t._adjustListWidth(),c.trigger(_,U)?e.preventDefault():(d.val()!==c._oldText&&(l=s(d.val(),u.parseFormats,u.culture),c.timeView.value(l)),i.attr(B,!1),d.attr(z,!0).attr(L,t._timeViewID),t.options.active(t.current()))},active:function(e){d&&d.length&&d[0].removeAttribute(P),e&&d.attr(P,t._optionID)},useValueToRender:!0}),i=t.ul},_icons:function(){var t=this,n=t.element,i=t.options,o=n.next("span.k-select");o[0]||(o=e('<span unselectable="on" class="k-select"><span class="k-link k-link-date" aria-label="'+i.dateButtonText+'"><span unselectable="on" class="k-icon k-i-calendar"></span></span><span class="k-link k-link-time" aria-label="'+i.timeButtonText+'"><span unselectable="on" class="k-icon k-i-clock"></span></span></span>').insertAfter(n)),o=o.children(),t._dateIcon=o.eq(0).attr("aria-controls",t.dateView._dateViewID),t._timeIcon=o.eq(1).attr("aria-controls",t.timeView._timeViewID)},_wrapper:function(){var t,n=this,i=n.element;t=i.parents(".k-datetimepicker"),t[0]||(t=i.wrap(R).parent().addClass("k-picker-wrap k-state-default"),t=t.wrap(R).parent()),t[0].style.cssText=i[0].style.cssText,i.css({width:"100%",height:i[0].style.height}),n.wrapper=t.addClass("k-widget k-datetimepicker").addClass(i[0].className),n._inputWrapper=e(t[0].firstChild)},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){t.value(n[0].defaultValue),t.max(t._initialOptions.max),t.min(t._initialOptions.min)},t._form=o.on("reset",t._resetHandler))},_template:function(){this._ariaTemplate=r.template(this.options.ARIATemplate)},_createDateInput:function(e){this._dateInput&&(this._dateInput.destroy(),this._dateInput=null),e.dateInput&&(this._dateInput=new m.DateInput(this.element,{culture:e.culture,format:e.format,min:e.min,max:e.max,interval:e.interval}))},_calculateMidnight:function(e,t){return g(e)+g(t)===0},_updateARIA:function(e){var t,n=this,i=n.dateView.calendar;n.element&&n.element.length&&n.element[0].removeAttribute(P),i&&(t=i._cell,t.attr("aria-label",n._ariaTemplate({current:e||i.current()})),n.element.attr(P,t.attr("id")))}});m.plugin(j)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.daterangepicker.min",["kendo.core.min","kendo.multiviewcalendar.min","kendo.datepicker.min"],e)}(function(){return function(e,t){function n(e){e.preventDefault()}var i,o=window.kendo,r=o.ui,a=o.keys,s=r.Widget,l="month",c="open",d="close",u="change",h="<div />",p="min",f="max",g=o.template,m=e.extend,v="id",_=o.support,b=_.mobileOS,w="k-state-selected",k="aria-expanded",y="aria-disabled",x="k-state-disabled",C="disabled",S="readonly",T="k-state-default",D="aria-hidden",A=".kendoDateRangePicker",E="click"+A,I="mousedown"+A,M=_.mouseAndTouchPresent?o.applyEventMap("up",A.slice(1)):E,F=e.proxy,R=o.parseDate,P=function(e){o.DateView.call(this,e)};P.prototype=Object.create(o.DateView.prototype),P.prototype._calendar=function(){var t,i=this,a=i.calendar,s=i.options;a||(t=e(h).attr(v,o.guid()).appendTo(i.popup.element).on(I,n).on(E,"td:has(.k-link)",F(i._click,i)),i.calendar=a=new r.MultiViewCalendar(t),i._setOptions(s),o.calendar.makeUnselectable(a.element),a.navigate(i._value||i._current,s.start),i.calendar.selectRange(i._range||s.range||{}))},P.prototype._setOptions=function(e){this.calendar.setOptions({focusOnNav:!1,change:e.change,culture:e.culture,dates:e.dates,depth:e.depth,footer:e.footer,format:e.format,selectable:e.selectable,max:e.max,min:e.min,month:e.month,weekNumber:e.weekNumber,start:e.start,disableDates:e.disableDates,range:e.range})},P.prototype.range=function(e){this._range=e,this.calendar&&(e.start||e.end?this.calendar.selectRange(e):this.calendar.rangeSelectable.clear())},P.prototype.move=function(e){var t=this,n=e.keyCode,i=t.calendar,o=e.ctrlKey&&n==a.DOWN||n==a.ENTER,r=!1;if(e.altKey)n==a.DOWN?(t.open(),e.preventDefault(),r=!0):n==a.UP&&(t.close(),e.preventDefault(),r=!0);else if(t.popup.visible()){if(n==a.ESC||o&&i._cell.hasClass(w))return t.close(),e.preventDefault(),!0;t._current=i._move(e,!0),r=!0}return r},P.prototype._click=function(e){b.ios||b.android&&"firefox"==b.browser?this._range&&this._range.end&&this.close():this._range&&null===this._range.end&&e.currentTarget.className.indexOf("k-state-selected")!==-1&&this.close()},o.DateRangeView=P,i=s.extend({init:function(e,t){var n,i,r=this;s.fn.init.call(r,e,t),e=r.element,t=r.options,t.disableDates=o.calendar.disabled(t.disableDates),t.min=R(e.attr("min"))||R(t.min),t.max=R(e.attr("max"))||R(t.max),r._initialOptions=m({},t),r._buildHTML(),r._range=r.options.range,r.dateView=new P(m({},t,{id:e.attr(v),anchor:r.wrapper,views:2,selectable:"range",range:r._range,change:function(){var e=this.selectRange();r.range(e),r.trigger(u),r._startDateInput.trigger(u),r._endDateInput.trigger(u)},close:function(e){r.trigger(d)?e.preventDefault():(r.wrapper.attr(k,!1),n.attr(D,!0))},open:function(e){r.trigger(c)?e.preventDefault():(r.wrapper.attr(k,!0),n.attr(D,!1),r._updateARIA())}})),n=r.dateView.div,r._ariaTemplate=g(this.options.ARIATemplate),r._reset(),r.wrapper.attr({role:"combobox","aria-expanded":!1,"aria-owns":r.dateView._dateViewID,autocomplete:"off"}),r._inputs.on(M+A,F(r._click,r)).on("keydown"+A,F(r._keydown,r)),r._initializeDateInputs(),i=e.is("[disabled]"),i?r.enable(!1):r.readonly(e.is("[readonly]"))},options:{name:"DateRangePicker",labels:!0,footer:"",format:"",culture:"",min:new Date(1900,0,1),max:new Date(2099,11,31),start:l,depth:l,animation:{},month:{},startField:"",endField:"",dates:[],disableDates:null,range:null,ARIATemplate:'Current focused date is #=kendo.toString(data.current, "D")#',weekNumber:!1,messages:{startLabel:"Start",endLabel:"End"}},events:[c,d,u],setOptions:function(e){var t=this;s.fn.setOptions.call(t,e),e=t.options,e.min=R(e.min),e.max=R(e.max),t._inputs.off(A),this._initializeDateInputs(),t.dateView.setOptions(e),t._range=e.range},_click:function(){var e=this;e._preventInputAction||e.dateView.popup.visible()||e.dateView.open()},_keydown:function(e){var n=this,i=n.dateView,o=!1;return n._preventInputAction?(e.stopImmediatePropagation(),t):(o=i.move(e),n._updateARIA(i._current),o&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),t)},_updateARIA:function(e){var t,n=this,i=n.dateView.calendar;n.element&&n.element.length&&n.element[0].removeAttribute("aria-activedescendant"),i&&(e&&!i._dateInViews(e)&&i.navigate(e),t=i._cellByDate(e||i.current()),i._focusCell(t),t.attr("aria-label",n._ariaTemplate({current:e||i.current()})),n.element.attr("aria-activedescendant",t.attr("id")))},_startChange:function(e){var t=this,n=e.sender,i=n.value(),o=t._endDateInput.value();t.options.disableDates(i)&&(e.sender.value(null),i=null),t.range({start:i,end:o}),t.trigger(u)},_endChange:function(e){var t=this,n=e.sender,i=n.value(),o=t._startDateInput.value();t.options.disableDates(i)&&(e.sender.value(null),i=null),t.range({start:o,end:i}),t.trigger(u)},_initializeDateInputs:function(){var e=this,t=e.options,n=t.range||{},i={footer:t.footer,format:t.format,culture:t.culture,min:t.min,max:t.max,start:t.start,startField:t.startField,endField:t.endField,depth:t.depth,animation:t.animation,month:t.month,dates:t.dates,disableDates:t.disableDates,ARIATemplate:t.ARIATemplate,weekNumber:t.weekNumber};e._startDateInput&&(e._startDateInput.destroy(),e._endDateInput.destroy(),e.wrapper.empty(),e._buildHTML(),e._inputs.on(M+A,F(e._click,e)).on("keydown"+A,F(e._keydown,e))),e._startDateInput=e._startInput.kendoDateInput(m(!0,i,{value:n.start})).getKendoDateInput(),e._endDateInput=e._endInput.kendoDateInput(m(!0,i,{value:n.end})).getKendoDateInput(),e._startChangeHandler=F(e._startChange,e),e._startDateInput.bind(u,e._startChangeHandler),e._endChangeHandler=F(e._endChange,e),e._endDateInput.bind(u,e._endChangeHandler)},_buildHTML:function(){var t=this,n=t.element;t.wrapper||(t.wrapper=n.addClass("k-widget k-daterangepicker")),t.options.labels?(e('<span class="k-textbox-container"><input/><label class="k-label">'+t.options.messages.startLabel+"</label></span>").appendTo(t.wrapper),e('<span> </span><span class="k-textbox-container"><input/><label class="k-label">'+t.options.messages.endLabel+"</label></span>").appendTo(t.wrapper)):e("<input/><span> </span><input/>").appendTo(t.wrapper),t._startInput=t.wrapper.find("input").eq(0),t._endInput=t.wrapper.find("input").eq(1),""!==t.options.startField&&(t._startInput.attr(o.attr("bind"),"value: "+t.options.startField),t._startInput.attr("name",t.options.startField)),""!==t.options.endField&&(t._endInput.attr(o.attr("bind"),"value: "+t.options.endField),t._endInput.attr("name",t.options.endField)),t._inputs=t._startInput.add(t._endInput)},_option:function(e,n){var i=this,o=i.options;return n===t?o[e]:(n=R(n,o.parseFormats,o.culture),n&&(o[e]=new Date((+n)),i.dateView[e](n)),t)},_reset:function(){var t=this,n=t.element,i=n.attr("form"),o=i?e("#"+i):n.closest("form");o[0]&&(t._resetHandler=function(){t.max(t._initialOptions.max),t.min(t._initialOptions.min)},t._form=o.on("reset",t._resetHandler))},_editable:function(t){var n=this,i=n._inputs,o=t.readonly,r=t.disable;o||r?(n.wrapper.addClass(r?x:T).removeClass(r?T:x),i.attr(C,r).attr(S,o).attr(y,r),n._preventInputAction=!0):(n.wrapper.addClass(T).removeClass(x),e.each(i,function(e,t){t.removeAttribute(C),t.removeAttribute(S)}),i.attr(y,!1),n._preventInputAction=!1)},destroy:function(){var e=this;e._startDateInput&&(e._startDateInput.unbind(u,e._startChangeHandler),e._startDateInput.destroy(),e._startChangeHandler=null),e._endDateInput&&(e._endDateInput.unbind(u,e._endChangeHandler),e._endDateInput.destroy(),e._endChangeHandler=null),e._form&&e._form.off("reset",e._resetHandler),e._inputs.off(A),e._inputs=null,e.dateView.destroy(),e.element.off(A),s.fn.destroy.call(e)},range:function(e){var n=this;return e===t?n._range:(n._range=e,n.dateView.range({start:null,end:null}),e||(n._startDateInput.value(null),n._endDateInput.value(null)),n._startDateInput.value(e.start?e.start:null),n._endDateInput.value(e.end?e.end:null),e.start&&!e.end?n.dateView.range({start:e.start,end:null}):e.start&&e.start&&+e.start<=+e.end&&n.dateView.range({start:e.start,end:e.end}),t)},open:function(){this.dateView.open()},close:function(){this.dateView.close()},min:function(e){return this._option(p,e)},max:function(e){return this._option(f,e)},readonly:function(e){this._startDateInput.readonly(e),this._endDateInput.readonly(e),this._editable({readonly:e===t||e,disable:!1})},enable:function(e){this._startDateInput.enable(e),this._endDateInput.enable(e),e||this.close(),this._editable({readonly:!1,disable:!(e=e===t||e)})}}),o.ui.plugin(i)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.scrollview.min",["kendo.fx.min","kendo.data.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){function n(e){return"k-"+e}var i,o,r,a,s,l,c,d,u,h=window.kendo,p=h.ui,f=e.proxy,g=h.effects.Transition,m=h.ui.Pane,v=h.ui.PaneDimensions,_=p.DataBoundWidget,b=h.data.DataSource,w=Math,k=w.abs,y=w.ceil,x=w.round,C=w.max,S=w.min,T=w.floor,D="change",A="click",E="changing",I="refresh",M="primary",F="scrollview-page",R="function",P="itemChange",z="cleanup",B=3,L=-1,H=0,N=1,O=-1,V=0,W=1,U=h.Observable.extend({init:function(e){var t=this;this.dataSource=e,this.pendingRequestArray=[],this.initialFetch=!1,this.useRanges=e.options.serverPaging,h.Observable.fn.init.call(this),e.bind("change",function(){t._change()})},_change:function(){this.trigger("reset",{offset:this.offset})},page:function(e,t){var n=this;this.useRanges||(this.dataSource.page(e+1),t?t(n.dataSource.view()):n.trigger("page",{page:e})),this.useRanges&&this.dataSource.range(e*this.dataSource.pageSize(),this.dataSource.pageSize(),function(){t?t(n.dataSource.view()):n.trigger("page",{page:e})})},scrollTo:function(e){var t=Math.ceil(this.dataSource.total()/this.dataSource.pageSize()||1),n=e-1,i=n-1,o=e,r=t>0&&e+1>=t?-1:e+1,a=t>0&&r+1>=t?-1:r+1;r>=0&&this.pendingRequestArray.push(r),n>=0&&this.pendingRequestArray.push(n),i>=0&&this.pendingRequestArray.push(i),a>=0&&this.pendingRequestArray.push(a),this.page(o)},getViewData:function(){var e,t,n=this.dataSource.view();if(this.dataSource.options.pageSize>1)for(e=[],t=0;t<n.length;t++)e.push(n[t]);else e=n[0];return e},destroy:function(){var e=this;e.dataSource.unbind(),e.dataSource=null}});h.ui.ScrollViewDataReader=U,i=h.Class.extend({init:function(t){var i=this,o=e("<ul class='"+n("scrollview-nav")+"'/>"),r=e("<div class='"+n("scrollview-nav-wrap")+"'></div>");r.append(o),t._navigationContainer.append(r),this._changeProxy=f(i,"_change"),this._refreshProxy=f(i,"_refresh"),t.bind(D,this._changeProxy),t.bind(I,this._refreshProxy),o.on(A,"li.k-link",f(this._click,t)),e.extend(i,{element:o,scrollView:t})},items:function(){return this.element.children()},_refresh:function(e){var t,i="";for(t=0;t<e.pageCount;t++)i+='<li class="k-link"></li>';this.element.html(i),this.items().eq(e.page).addClass(n(M)),this.scrollView._toggleNavigation({currentPage:e.page})},_change:function(e){var t,i,o,r,a,s;e.isDefaultPrevented()||(t=this.scrollView._navigationContainer.find(".k-scrollview-nav"),i=this.scrollView.element.width(),o=(i-t.width())/2,r=t.find("li.k-link:eq(0)").outerWidth(!0)/2,this.items().removeClass(n(M)).eq(e.nextPage).addClass(n(M)),a=this.items().eq(e.nextPage).length>0?this.items().eq(e.nextPage).position().left:0,(a>i/2||a<t.scrollLeft()+i/2)&&(s=0,s=a>i/2?t.scrollLeft()+a-i/2:t.scrollLeft()-(i/2-a),s+=o+r,t.animate({scrollLeft:s},300)),this.scrollView._toggleNavigation({currentPage:e.currentPage,nextPage:e.nextPage}))},_click:function(t){var n=e(t.currentTarget).index();this.scrollTo(n)},destroy:function(){this.scrollView.unbind(D,this._changeProxy),this.scrollView.unbind(I,this._refreshProxy),this.element.off(A),this.element.remove()}}),h.ui.ScrollViewPager=i,o="transitionEnd",r="dragStart",a="dragEnd",s=h.Observable.extend({init:function(t,n){var i,s,l,c,d,u,p=this;h.Observable.fn.init.call(this),this.element=t,this.container=t.parent(),i=new h.ui.Movable(p.element),s=new g({axis:"x",movable:i,onEnd:function(){p.trigger(o)}}),l=new h.UserEvents(t,{fastTap:!0,start:function(e){2*k(e.x.velocity)>=k(e.y.velocity)?l.capture():l.cancel(),p.trigger(r,e),s.cancel()},allowSelection:!0,end:function(e){p.trigger(a,e)}}),c=new v({element:p.element,container:p.container}),d=c.x,d.bind(D,function(){p.trigger(D)}),u=new m({dimensions:c,userEvents:l,movable:i,elastic:!0}),e.extend(p,{duration:n&&n.duration||1,movable:i,transition:s,userEvents:l,dimensions:c,dimension:d,pane:u}),this.bind([o,r,a,D],n)},size:function(){return{width:this.dimensions.x.getSize(),height:this.dimensions.y.getSize()}},total:function(){return this.dimension.getTotal()},offset:function(){return-this.movable.x},updateDimension:function(){this.dimension.update(!0)},refresh:function(){this.dimensions.refresh(),this.dimensions.y.enabled=!1},moveTo:function(e){this.movable.moveAxis("x",-e)},transitionTo:function(e,t,n){n?this.moveTo(-e):this.transition.moveTo({location:e,duration:this.duration,ease:t})},destroy:function(){var e=this;e.userEvents.destroy(),e.unbind(),e.movable=e.tansition=e.dimensions=e.dimension=e.pane=null,e.element.remove()}}),h.ui.ScrollViewElasticPane=s,l=h.Observable.extend({init:function(e,t,n){var i=this;h.Observable.fn.init.call(this),i.element=e,i.pane=t,i._getPages(),this.page=0,this.pageSize=n.pageSize||1,this.contentHeight=n.contentHeight,this.enablePager=n.enablePager,this.pagerOverlay=n.pagerOverlay},scrollTo:function(e,n){var i=this;(e!=i.page||n)&&(i.trigger("resize",{currentPage:this.page,nextPage:e,data:t})||(i.page=e,i.pane.transitionTo(-e*i.pane.size().width,g.easeOutExpo,n)))},paneMoved:function(e,n,i,o){var r,a,s,l=this,c=l.pane,d=c.size().width*l.pageSize,u=x,h=n?g.easeOutBack:g.easeOutExpo;return e===O?u=y:e===W&&(u=T),a=u(c.offset()/d),a<0||a>=l.pageCount?(s=a<0?0:-this.page*this.pane.size().width,this.pane.transitionTo(s,h,o)):(r=C(l.minSnap,S(-a*d,l.maxSnap)),a!=l.page&&i&&i({currentPage:l.page,nextPage:a})&&(r=-l.page*c.size().width),c.transitionTo(r,h,o),t)},updatePage:function(){var e=this.pane,t=x(e.offset()/e.size().width);return t!=this.page&&(this.page=t,!0)},forcePageUpdate:function(){return this.updatePage()},resizeTo:function(e){var t,n,i=this.pane,o=e.width;this.pageElements.width(o),"100%"===this.contentHeight&&(t=this.element.parent().height(),this.enablePager===!0&&(n=this.element.parent().find("ul.k-scrollview-nav"),!this.pagerOverlay&&n.length&&(t-=h._outerHeight(n,!0))),this.element.css("height",t),this.pageElements.css("height",t)),i.updateDimension(),this._paged||(this.page=T(i.offset()/o)),this.scrollTo(this.page,!0,!0),this.pageCount=T(i.total()/o),this.minSnap=-(this.pageCount-1)*o,this.maxSnap=0},_getPages:function(){this.pageElements=this.element.find(h.roleSelector("page")),this._paged=this.pageElements.length>0},destroy:function(){var e=this;e.pane=null,e.element.remove()}}),h.ui.ScrollViewContent=l,c=h.Observable.extend({init:function(e,t,n){var i=this;h.Observable.fn.init.call(this),i.element=e,i.pane=t,i.options=n,i._templates(),i.page=n.page||0,i.pages=[],i._initPages(),i.resizeTo(i.pane.size()),i.pane.dimension.forceEnabled()},setDataSource:function(e){this.dataSource=b.create(e),this._dataReader(),this._pendingPageRefresh=!1,this._pendingWidgetRefresh=!1},_viewShow:function(){var e=this;e._pendingWidgetRefresh&&(setTimeout(function(){e._resetPages()},0),e._pendingWidgetRefresh=!1)},_dataReader:function(){this.dataReader=new U(this.dataSource),this._pageProxy=f(this,"_onPage"),this._resetProxy=f(this,"_onReset"),this.dataReader.bind({page:this._pageProxy,reset:this._resetProxy})},_templates:function(){var e=this.options.template,t=this.options.emptyTemplate,n={},i={};typeof e===R&&(n.template=e,e="#=this.template(data)#"),this.template=f(h.template(e),n),typeof t===R&&(i.emptyTemplate=t,t="#=this.emptyTemplate(data)#"),this.emptyTemplate=f(h.template(t),i)},_initPages:function(){var e,t,n=this.pages,i=this.element;for(t=0;t<B;t++)e=new d(i),n.push(e);this.pane.updateDimension()},resizeTo:function(e){var t,n,i,o=this.pages,r=this.pane;for(t=0;t<o.length;t++)o[t].setWidth(e.width);"auto"===this.options.contentHeight?this.element.css("height",this.pages[1].element.height()):"100%"===this.options.contentHeight?(n=this.element.parent().height(),this.options.enablePager===!0&&(i=this.element.parent().find("ul.k-scrollview-nav"),!this.options.pagerOverlay&&i.length&&(n-=h._outerHeight(i,!0))),this.element.css("height",n),o[0].element.css("height",n),o[1].element.css("height",n),o[2].element.css("height",n)):this.options.contentHeight&&(o[0].element.css("height",this.options.contentHeight),o[1].element.css("height",this.options.contentHeight),o[2].element.css("height",this.options.contentHeight)),r.updateDimension(),this._repositionPages(),this.width=e.width},scrollTo:function(e,n,i){var o=this,r=o.dataReader;(e!=o.page||n)&&r.page(e,function(a){return i?(r.scrollTo(e),t):(o.trigger("resize",{currentPage:o.page,nextPage:e,data:a})||(n?o.page=e:(r.pagerScroll=e>o.page?-1:1,o.page=e+r.pagerScroll),r.scrollTo(e)),t)})},paneMoved:function(e,n,i,o){var r,a,s,l=this,c=l.pane,d=c.size().width,u=c.offset(),p=Math.abs(u)>=d/3,f=n?h.effects.Transition.easeOutBack:h.effects.Transition.easeOutExpo,g=!!l.dataSource.options.serverPaging&&l.page+2>l.pageCount,m=0;e===W?0!==l.page&&(m=-1):e!==O||g?u>0&&p&&!g?m=1:u<0&&p&&0!==l.page&&(m=-1):m=1,r=l.page,m&&(r=m>0?r+1:r-1,l instanceof h.ui.VirtualScrollViewContent?(l.dataReader.page(r),a=l.dataReader.getViewData()):a=t,a instanceof Array||(a=[a]),s=l.pages?l.pages[1].element:t),i&&l.page!=r&&i({currentPage:l.page,nextPage:r,element:s,data:a})&&(m=0),0===m?l._cancelMove(f,o):m===-1?l._moveBackward(o):1===m&&l._moveForward(o)},updatePage:function(){var e=this.pages;return 0!==this.pane.offset()&&(this.pane.offset()>0?(e.push(this.pages.shift()),this.page++,this.page+2<this.pageCount&&this.dataReader.pendingRequestArray.push(this.page+2),this.page+1<this.pageCount&&this.dataReader.page(this.page+1),this.page+1==this.pageCount&&this.setPageContent(this.pages[2],null)):(e.unshift(this.pages.pop()),this.page--,this.page-2>=0&&this.dataReader.pendingRequestArray.push(this.page-2),this.page-1>=0&&this.dataReader.page(this.page-1)),this._repositionPages(),this._resetMovable(),!0)},forcePageUpdate:function(){var e=this.pane.offset(),t=3*this.pane.size().width/4;return k(e)>t&&this.updatePage()},_resetMovable:function(){this.pane.moveTo(0)},_moveForward:function(e){this.pane.transitionTo(-this.width,h.effects.Transition.easeOutExpo,e)},_moveBackward:function(e){this.pane.transitionTo(this.width,h.effects.Transition.easeOutExpo,e)},_cancelMove:function(e,t){this.pane.transitionTo(0,e,t)},_resetPages:function(){this.page=this.options.page||0,this._repositionPages(),this.trigger("reset")},_onPage:function(e){if(e.page>=this.pageCount&&this.setPageContent(this.pages[2],null),this.page==e.page?!this.dataReader.pagerScroll||0===this.dataReader.pagerScroll&&this.dataReader.initialFetch?this.setPageContent(this.pages[1],this.dataReader.getViewData()):(this.dataReader.pagerScroll<0?this._moveForward():this._moveBackward(),this.dataReader.pagerScroll=0,this.setPageContent(this.pages[1],this.dataReader.getViewData())):this.page+1==e.page?this.setPageContent(this.pages[2],this.dataReader.getViewData()):this.page-1==e.page&&this.setPageContent(this.pages[0],this.dataReader.getViewData()),this.dataReader.pendingRequestArray.length>0&&this.dataReader.initialFetch){var t=this.dataReader.pendingRequestArray.shift();this.dataReader.page(t)}},_onReset:function(){this.pageCount=y(this.dataSource.total()/this.dataSource.pageSize())},_repositionPages:function(){var e=this.pages;e[0].position(L),e[1].position(H),e[2].position(N)},setPageContent:function(e,n){var i=this.template,o=this.emptyTemplate;e.content(null!==n&&n!==t?i(n):o({}))},destroy:function(){var e,t=this,n=t.pages;for(t.dataReader.unbind(),t.dataSource.unbind(),t.dataReader=t.dataSource=t.pane=null,e=0;e<n.length;e++)n[e].destroy();t.element.remove()}}),h.ui.VirtualScrollViewContent=c,d=h.Class.extend({init:function(t){this.element=e("<li class='"+n(F)+"'></li>"),this.width=t.width(),this.element.width(this.width),t.append(this.element)},content:function(e){this.element.html(e)},position:function(e){this.element.css("transform","translate3d("+this.width*e+"px, 0, 0)")},setWidth:function(e){this.width=e,this.element.width(e)},destroy:function(){var e=this;e.element.remove(),e.element=null}}),h.ui.VirtualPage=d,u=_.extend({init:function(e,t){var o,r,a=this;_.fn.init.call(a,e,t),t=a.options,e=a.element,h.stripWhitespace(e[0]),e.wrapInner(0===e.children().length?"<ul class='k-scrollview-wrap'/>":"<div class='k-scrollview-wrap'/>"),e.addClass("k-widget "+n("scrollview")),a._initNavigation(),this.options.enablePager?(this.pager=new i(this),this.options.pagerOverlay&&e.addClass(n("scrollview-overlay"))):(this._changeProxy=f(a,"_toggleNavigation"),this.bind(D,this._changeProxy)),a.inner=e.children().first(),a.page=0,a.inner.css("height",t.contentHeight),a.pane=new s(a.inner,{duration:this.options.duration,transitionEnd:f(this,"_transitionEnd"),dragStart:f(this,"_dragStart"),dragEnd:f(this,"_dragEnd"),change:f(this,I)}),a.bind("resize",function(){a.pane.refresh()}),a.page=t.page,o=0===this.inner.children().length,r=o?new c(a.inner,a.pane,t):new l(a.inner,a.pane,t),r.page=a.page,r.bind("reset",function(){this._pendingPageRefresh=!1,a.trigger(I,{pageCount:r.pageCount,page:r.page}),a._toggleNavigation({currentPage:r.page,nextPage:r.page})}),r.bind("resize",function(e){var t=r.page,n=e.nextPage;t!=n&&(e._defaultPrevented=a.trigger(D,{currentPage:r.page,nextPage:e.nextPage,data:e.data})),a._toggleNavigation({currentPage:r.page,nextPage:e.nextPage})}),r.bind(P,function(e){a.trigger(P,e),a.angular("compile",function(){return{elements:e.item,data:[{dataItem:e.data}]}})}),r.bind(z,function(e){a.angular("cleanup",function(){return{elements:e.item}})}),a._content=r,a.setDataSource(t.dataSource),this.viewInit(),this.viewShow()},options:{name:"ScrollView",page:0,duration:400,velocityThreshold:.8,contentHeight:"auto",pageSize:1,bounceVelocityThreshold:1.6,enablePager:!0,enableNavigationButtons:!0,pagerOverlay:!0,autoBind:!0,template:"",emptyTemplate:""},events:[E,D,I],destroy:function(){_.fn.destroy.call(this),this._content.destroy(),this.pane.destroy(),this.pager&&this.pager.destroy(),this.inner=null,h.destroy(this.element)},viewInit:function(){this.options.autoBind&&this._content.scrollTo(this._content.page,!0,!0)},viewShow:function(){this.pane.refresh()},refresh:function(){var e=this._content,t=this.options;e.resizeTo(this.pane.size()),this.page=e.page,(e instanceof l||e.dataReader.initialFetch)&&(t.enablePager?this.trigger(I,{pageCount:e.pageCount,page:e.page}):this.trigger(D,{pageCount:e.pageCount,currentPage:e.page}))},content:function(e){this.element.children().first().html(e),this._content._getPages(),this.pane.refresh()},scrollTo:function(e,t,n){this._content.scrollTo(e,t,n)},prev:function(){var e=this,n=e._content.page-1;e._content instanceof c?e._content.paneMoved(W,t,function(t){return e.trigger(D,t)}):n>-1&&e.scrollTo(n)},next:function(){var e=this,n=e._content.page+1;e._content instanceof c?e._content.paneMoved(O,t,function(t){return e.trigger(D,t)}):n<e._content.pageCount&&e.scrollTo(n)},setDataSource:function(e){var t,n=this;this._content instanceof c&&(t=!e,e instanceof b?(e.options.pageSize=e.options.pageSize||1,this.dataSource=e=new b(e.options)):this.dataSource=b.create(e),this._content.setDataSource(this.dataSource),this.options.autoBind&&!t&&this.dataSource.fetch(function(){n._content.dataReader.initialFetch=!0,n.scrollTo(n._content.page,!0,!0),n._content.trigger("reset")}))},items:function(){return this.element.find(".k-"+F)},_dragStart:function(){this._content.forcePageUpdate()},_dragEnd:function(e){var t=this,n=e.x.velocity,i=this.options.velocityThreshold,o=V,r=k(n)>this.options.bounceVelocityThreshold;n>i?o=W:n<-i&&(o=O),this._content.paneMoved(o,r,function(e){return t.trigger(D,e)})},_transitionEnd:function(){this._content.updatePage()},_initNavigation:function(){var t=this,n=t._navigationContainer=e("<div class='k-scrollview-elements'></div>"),i=e('<a class="k-scrollview-prev"><span class="k-icon k-i-arrowhead-w"></span></a>').hide(),o=e('<a class="k-scrollview-next"><span class="k-icon k-i-arrowhead-e"></span></a>').hide();n.append(i),n.append(o),t.element.append(n),n.on(A,"a.k-scrollview-prev",f(t.prev,t)),n.on(A,"a.k-scrollview-next",f(t.next,t))},_toggleNavigation:function(e){var t=e.nextPage||0===e.nextPage?e.nextPage:e.currentPage,n=this._navigationContainer,i=n.find(">a.k-scrollview-prev"),o=n.find(">a.k-scrollview-next");i.hide(),o.hide(),(t||0===t)&&(0!==t&&i.show(),t!=this._content.pageCount-1&&o.show())}}),p.plugin(u)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.splitter.min",["kendo.resizable.min"],e)}(function(){return function(e,t){function n(e){return v.test(e)}function i(e){return m.test(e)||/^\d+$/.test(e)}function o(e){return!n(e)&&!i(e)}function r(e,t){var i=parseInt(e,10);return n(e)&&(i=Math.floor(i*t/100)),i}function a(e,n){return function(i,o){var r,a=this.element.find(i).data(E);return 1==arguments.length?a[e]:(a[e]=o,n&&(r=this.element.data("kendo"+this.options.name),r.resize(!0)),t)}}function s(e){var t=this,n=e.orientation;t.owner=e,t._element=e.element,t.orientation=n,p(t,n===S?c:l),t._resizable=new d.ui.Resizable(e.element,{orientation:n,handle:".k-splitbar-draggable-"+n+"[data-marker="+e._marker+"]",hint:f(t._createHint,t),start:f(t._start,t),max:f(t._max,t),min:f(t._min,t),invalidClass:"k-restricted-size-"+n, +resizeend:f(t._stop,t)})}var l,c,d=window.kendo,u=d.ui,h=d.keys,p=e.extend,f=e.proxy,g=u.Widget,m=/^\d+(\.\d+)?px$/i,v=/^\d+(\.\d+)?%$/i,_=".kendoSplitter",b="expand",w="collapse",k="contentLoad",y="error",x="resize",C="layoutChange",S="horizontal",T="vertical",D="mouseenter",A="click",E="pane",I="mouseleave",M="k-state-focused",F="k-"+E,R="."+F,P=g.extend({init:function(e,t){var n,i=this;g.fn.init.call(i,e,t),i.wrapper=i.element,i.options.orientation&&(n=i.options.orientation.toLowerCase()!=T),i.orientation=n?S:T,i._dimension=n?"width":"height",i._keys={decrease:n?h.LEFT:h.UP,increase:n?h.RIGHT:h.DOWN},i._resizeStep=10,i._marker=d.guid().substring(0,8),i._initPanes(),i.resizing=new s(i),i.element.triggerHandler("init"+_)},events:[b,w,k,y,x,C],_addOverlays:function(){this._panes().append("<div class='k-splitter-overlay k-overlay' />")},_removeOverlays:function(){this._panes().children(".k-splitter-overlay").remove()},_attachEvents:function(){var t=this,n=t.options.orientation;t.element.children(".k-splitbar-draggable-"+n).on("keydown"+_,f(t._keydown,t)).on("mousedown"+_,function(e){e.currentTarget.focus()}).on("focus"+_,function(t){e(t.currentTarget).addClass(M)}).on("blur"+_,function(n){e(n.currentTarget).removeClass(M),t.resizing&&t.resizing.end()}).on(D+_,function(){e(this).addClass("k-splitbar-"+t.orientation+"-hover")}).on(I+_,function(){e(this).removeClass("k-splitbar-"+t.orientation+"-hover")}).on("mousedown"+_,f(t._addOverlays,t)).end().children(".k-splitbar").on("dblclick"+_,f(t._togglePane,t)).children(".k-collapse-next, .k-collapse-prev").on(A+_,t._arrowClick(w)).end().children(".k-expand-next, .k-expand-prev").on(A+_,t._arrowClick(b)).end().end(),e(window).on("resize"+_+t._marker,f(t.resize,t,!1)),e(document).on("mouseup"+_+t._marker,f(t._removeOverlays,t))},_detachEvents:function(){var t=this;t.element.children(".k-splitbar-draggable-"+t.orientation).off(_).end().children(".k-splitbar").off("dblclick"+_).children(".k-collapse-next, .k-collapse-prev, .k-expand-next, .k-expand-prev").off(_),e(window).off(_+t._marker),e(document).off(_+t._marker)},options:{name:"Splitter",orientation:S,panes:[]},destroy:function(){g.fn.destroy.call(this),this._detachEvents(),this.resizing&&this.resizing.destroy(),d.destroy(this.element),this.wrapper=this.element=null},_keydown:function(t){var n,i=this,o=t.keyCode,r=i.resizing,a=e(t.currentTarget),s=i._keys,l=o===s.increase,c=o===s.decrease;l||c?(t.ctrlKey?(n=a[c?"next":"prev"](),r&&r.isResizing()&&r.end(),n[i._dimension]()?i._triggerAction(w,a[c?"prev":"next"]()):i._triggerAction(b,n)):r&&r.move((c?-1:1)*i._resizeStep,a),t.preventDefault()):o===h.HOME?(r.move(-r._maxPosition,a),t.preventDefault()):o===h.END?(r.move(r._maxPosition,a),t.preventDefault()):o===h.ENTER&&r&&(r.end(),t.preventDefault())},_initPanes:function(){var e=this.options.panes||[],t=this;this.element.addClass("k-widget").addClass("k-splitter").children().each(function(n,i){"script"!=i.nodeName.toLowerCase()&&t._initPane(i,e[n])}),this.resize()},_initPane:function(t,n){t=e(t).attr("role","group").addClass(F),t.data(E,n?n:{}).toggleClass("k-scrollable",!n||n.scrollable!==!1),this.ajaxRequest(t)},ajaxRequest:function(e,t,n){var i,o=this;e=o.element.find(e),i=e.data(E),t=t||i.contentUrl,t&&(e.append("<span class='k-icon k-i-loading k-pane-loading' />"),d.isLocalUrl(t)?jQuery.ajax({url:t,data:n||{},type:"GET",dataType:"html",success:function(t){o.angular("cleanup",function(){return{elements:e.get()}}),e.html(t),o.angular("compile",function(){return{elements:e.get()}}),o.trigger(k,{pane:e[0]})},error:function(t,n){o.trigger(y,{pane:e[0],status:n,xhr:t})}}):e.removeClass("k-scrollable").html("<iframe src='"+t+"' frameborder='0' class='k-content-frame'>This page requires frames in order to show content</iframe>"))},_triggerAction:function(e,t){this.trigger(e,{pane:t[0]})||this[e](t[0])},_togglePane:function(t){var n,i=this,o=e(t.target);o.closest(".k-splitter")[0]==i.element[0]&&(n=o.children(".k-icon:not(.k-resize-handle)"),1===n.length&&(n.is(".k-collapse-prev")?i._triggerAction(w,o.prev()):n.is(".k-collapse-next")?i._triggerAction(w,o.next()):n.is(".k-expand-prev")?i._triggerAction(b,o.prev()):n.is(".k-expand-next")&&i._triggerAction(b,o.next())))},_arrowClick:function(t){var n=this;return function(i){var o,r=e(i.target);r.closest(".k-splitter")[0]==n.element[0]&&(o=r.is(".k-"+t+"-prev")?r.parent().prev():r.parent().next(),n._triggerAction(t,o))}},_updateSplitBar:function(e,t,n){var i=function(e,t){return t?"<div class='k-icon "+e+"' />":""},o=this.orientation,r=t.resizable!==!1&&n.resizable!==!1,a=t.collapsible,s=t.collapsed,l=n.collapsible,c=n.collapsed;e.addClass("k-splitbar k-state-default k-splitbar-"+o).attr("role","separator").attr("aria-expanded",!(s||c)).removeClass("k-splitbar-"+o+"-hover").toggleClass("k-splitbar-draggable-"+o,r&&!s&&!c).toggleClass("k-splitbar-static-"+o,!r&&!a&&!l).html(i("k-collapse-prev k-i-arrow-60-up",a&&!s&&!c&&o==T)+i("k-collapse-prev k-i-arrow-60-left",a&&!s&&!c&&o==S)+i("k-expand-prev k-i-arrow-60-down",a&&s&&!c&&o==T)+i("k-expand-prev k-i-arrow-60-right",a&&s&&!c&&o==S)+i("k-resize-handle k-i-hbar",r&&o==T)+i("k-resize-handle k-i-vbar",r&&o==S)+i("k-collapse-next k-i-arrow-60-down",l&&!c&&!s&&o==T)+i("k-collapse-next k-i-arrow-60-right",l&&!c&&!s&&o==S)+i("k-expand-next k-i-arrow-60-up",l&&c&&!s&&o==T)+i("k-expand-next k-i-arrow-60-left",l&&c&&!s&&o==S)),r||a||l||e.removeAttr("tabindex")},_updateSplitBars:function(){var t=this;this.element.children(".k-splitbar").each(function(){var n=e(this),i=n.prevAll(R).first().data(E),o=n.nextAll(R).first().data(E);o&&t._updateSplitBar(n,i,o)})},_removeSplitBars:function(){this.element.children(".k-splitbar").remove()},_panes:function(){return this.element?this.element.children(R):e()},_resize:function(){var n,i,a,s,l,c,u,h,p,f,g=this,m=g.element,v=m.children(R),_=g.orientation==S,b=m.children(".k-splitbar"),w=b.length,k=_?"width":"height",y=m[k]();g.wrapper.addClass("k-splitter-resizing"),0===w?(w=v.length-1,v.slice(0,w).after("<div tabindex='0' class='k-splitbar' data-marker='"+g._marker+"' />"),g._updateSplitBars(),b=m.children(".k-splitbar")):g._updateSplitBars(),b.each(function(){y-=this[_?"offsetWidth":"offsetHeight"]}),n=0,i=0,a=e(),v.css({position:"absolute",top:0})[k](function(){var s,l=e(this),c=l.data(E)||{};if(l.removeClass("k-state-collapsed"),c.collapsed)s=c.collapsedSize?r(c.collapsedSize,y):0,l.css("overflow","hidden").addClass("k-state-collapsed");else{if(o(c.size))return a=a.add(this),t;s=r(c.size,y)}return i++,n+=s,s}),y-=n,s=a.length,l=Math.floor(y/s),a.slice(0,s-1).css(k,l).end().eq(s-1).css(k,y-(s-1)*l),c=0,u=_?"height":"width",h=_?"left":"top",p=_?"offsetWidth":"offsetHeight",0===s&&(f=v.filter(function(){return!(e(this).data(E)||{}).collapsed}).last(),f[k](y+f[0][p])),m.children().css(u,m[u]()).each(function(e,t){"script"!=t.tagName.toLowerCase()&&(t.style[h]=Math.floor(c)+"px",c+=t[p])}),g._detachEvents(),g._attachEvents(),g.wrapper.removeClass("k-splitter-resizing"),d.resize(v),g.trigger(C)},toggle:function(e,n){var i,o=this;e=o.element.find(e),i=e.data(E),(n||i.collapsible)&&(1==arguments.length&&(n=i.collapsed!==t&&i.collapsed),i.collapsed=!n,i.collapsed?e.css("overflow","hidden"):e.css("overflow",""),o.resize(!0))},collapse:function(e){this.toggle(e,!1)},expand:function(e){this.toggle(e,!0)},_addPane:function(e,t,n){var i=this;return n.length&&(i.options.panes.splice(t,0,e),i._initPane(n,e),i._removeSplitBars(),i.resize(!0)),n},append:function(t){t=t||{};var n=this,i=e("<div />").appendTo(n.element);return n._addPane(t,n.options.panes.length,i)},insertBefore:function(t,n){n=e(n),t=t||{};var i=this,o=i.wrapper.children(".k-pane").index(n),r=e("<div />").insertBefore(e(n));return i._addPane(t,o,r)},insertAfter:function(t,n){n=e(n),t=t||{};var i=this,o=i.wrapper.children(".k-pane").index(n),r=e("<div />").insertAfter(e(n));return i._addPane(t,o+1,r)},remove:function(t){var n=this;return t=n.wrapper.find(t),t.length&&(d.destroy(t),t.each(function(t,i){n.options.panes.splice(n.wrapper.children(".k-pane").index(i),1),e(i).remove()}),n._removeSplitBars(),n.options.panes.length&&n.resize(!0)),n},size:a("size",!0),min:a("min"),max:a("max")});u.plugin(P),l={sizingProperty:"height",sizingDomProperty:"offsetHeight",alternateSizingProperty:"width",positioningProperty:"top",mousePositioningProperty:"pageY"},c={sizingProperty:"width",sizingDomProperty:"offsetWidth",alternateSizingProperty:"height",positioningProperty:"left",mousePositioningProperty:"pageX"},s.prototype={press:function(e){this._resizable.press(e)},move:function(e,t){this.pressed||(this.press(t),this.pressed=!0),this._resizable.target||this._resizable.press(t),this._resizable.move(e)},end:function(){this._resizable.end(),this.pressed=!1},destroy:function(){this._resizable.destroy(),this._resizable=this._element=this.owner=null},isResizing:function(){return this._resizable.resizing},_createHint:function(t){var n=this;return e("<div class='k-ghost-splitbar k-ghost-splitbar-"+n.orientation+" k-state-default' />").css(n.alternateSizingProperty,t[n.alternateSizingProperty]())},_start:function(t){var n=this,o=e(t.currentTarget),r=o.prev(),a=o.next(),s=r.data(E),l=a.data(E),c=parseInt(r[0].style[n.positioningProperty],10),d=parseInt(a[0].style[n.positioningProperty],10)+a[0][n.sizingDomProperty]-o[0][n.sizingDomProperty],u=parseInt(n._element.css(n.sizingProperty),10),h=function(e){var t=parseInt(e,10);return(i(e)?t:u*t/100)||0},p=h(s.min),f=h(s.max)||d-c,g=h(l.min),m=h(l.max)||d-c;n.previousPane=r,n.nextPane=a,n._maxPosition=Math.min(d-g,c+f),n._minPosition=Math.max(c+p,d-m)},_max:function(){return this._maxPosition},_min:function(){return this._minPosition},_stop:function(t){var n,i,r,a,s,l,c,u,h=this,p=e(t.currentTarget),f=h.owner;return f._panes().children(".k-splitter-overlay").remove(),t.keyCode!==d.keys.ESC&&(n=t.position,i=p.prev(),r=p.next(),a=i.data(E),s=r.data(E),l=n-parseInt(i[0].style[h.positioningProperty],10),c=parseInt(r[0].style[h.positioningProperty],10)+r[0][h.sizingDomProperty]-n-p[0][h.sizingDomProperty],u=h._element.children(R).filter(function(){return o(e(this).data(E).size)}).length,(!o(a.size)||u>1)&&(o(a.size)&&u--,a.size=l+"px"),(!o(s.size)||u>1)&&(s.size=c+"px"),f.resize(!0)),!1}}}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.scheduler.view.min",["kendo.core.min"],e)}(function(){return kendo.ui.scheduler={},function(e){function t(e,t){function n(e,o){var r,a;if(o=o[t])for(r=i[e]=i[e]||[],a=0;a<o.length;a++)r.push(o[a]),n(e+1,o[a])}var i=[];return n(0,e),i}function n(){return x.support.cssBorderSpacing?"":'cellspacing="0"'}function i(t,i){return t.length?'<table role="presentation"'+n()+' class="'+e.trim("k-scheduler-table "+(i||""))+'"><tr>'+t.join("</tr><tr>")+"</tr></table>":""}function o(e,t){return e.length?"<div style='position:relative'>"+i(e,t)+"</div>":""}function r(t,n,o){var r,a=[];if(o>0)for(r=0;r<t;r++)a.push("<th>​</th>");return n&&a.push('<th class="k-scheduler-times-all-day">'+n.text+"</th>"),o<1?e():e('<div class="k-scheduler-times">'+i(a)+"</div>")}function a(t,n,r){var a,s,l,c,d,u,h,p,f,g,m=[];for(s=0;s<t.length;s++){for(l=t[s],c=[],d=n/l.length,a=0;a<l.length;a++)u=l[a],c.push('<th colspan="'+(u.colspan||d)+'" class="'+(u.className||"")+'">'+u.text+"</th>");m.push(c.join(""))}if(h=[],r){for(p=t[t.length-1],f=[],g=r.cellContent,a=0;a<p.length;a++)f.push('<td class="'+(p[a].className||"")+'">'+(g?g(a):" ")+"</td>");h.push(f.join(""))}return e('<div class="k-scheduler-header k-state-default"><div class="k-scheduler-header-wrap">'+i(m)+o(h,"k-scheduler-header-all-day")+"</div></div>")}function s(t,n,o){var r,a,s,l,c,d,u=Array(n).join().split(","),h=[];for(a=0;a<t.length;a++)for(s=t[a],l=n/s.length,r=0;r<s.length;r++)c=s[r].className||"",d=s[r].text,s[r].allDay&&(c="k-scheduler-times-all-day"),o&&c.indexOf("k-scheduler-group-cell")!==-1&&(d='<span class="k-scheduler-group-text">'+d+"</span>"),u[l*r]+='<th class="'+c+'" rowspan="'+l+'">'+d+"</th>";for(r=0;r<n;r++)h.push(u[r]);return n<1?e():e('<div class="k-scheduler-times">'+i(h)+"</div>")}function l(){return e('<div class="k-scheduler-content"><table role="presentation"'+n()+' class="k-scheduler-table"/></div>')}function c(){return w=w?w:x.support.scrollbar()}function d(e,t,n){var i,o,r,a,s;for(i=e.length-1;i>=0;i--)o=u(e[i]),r=o.start,s=o.end,a=r<=t&&s>=t,(a||r>=t&&s<=n||t<=r&&n>=r)&&(r<t&&(t=r),s>n&&(n=s));return h(e,t,n)}function u(e){return{start:e.start,end:e.end}}function h(e,t,n){var i,o,r=[];for(i=0;i<e.length;i++)o=u(e[i]),(o.start<t&&o.end>t||o.start>=t&&o.end<=n)&&r.push(e[i]);return r}function p(e){return g(e)}function f(e){return g(e)}function g(e){var t,n,i,o,r,a,s,l=[];for(t=0;t<e.length;t++){for(n=e[t],i=u(n),o=null,r=0,a=l.length;r<a;r++)if(s=i.start>l[r].end,i.start<l[r].start||s){o=l[r],o.end<i.end&&(o.end=i.end);break}o||(o={start:i.start,end:i.end,events:[]},l.push(o)),o.events.push(n)}return l}function m(t,n,i,o){var r=[];return e.each(n,function(e,n){var a=n.className?"k-slot-cell "+n.className:"k-slot-cell",s={text:n.text,className:a};s[t]=o&&!n.minorTicks?m(t,n.columns,i,o):i,r.push(s)}),r}function v(t,n,i,o,r,a){var s,l,c,d=n[0],u=[];if(d){if(r&&i)e.each(r,function(e,i){i[t]=a&&!i.minorTicks?v(t,n,i.columns,o,i.columns,a):v(t,n,null,o)}),u=r;else for(s=d.dataSource.view(),l=0;l<s.length;l++)c={text:o({text:x.htmlEncode(x.getter(d.dataTextField)(s[l])),color:x.getter(d.dataColorField)(s[l]),field:d.field,title:d.title,name:d.name,value:x.getter(d.dataValueField)(s[l])}),className:"k-slot-cell k-scheduler-group-cell"},c[t]=v(t,n.slice(1),i,o),u.push(c);return u}return i}function _(t){return function(n){if(e.isArray(n)||n instanceof x.data.ObservableArray){for(var i=0;i<n.length;i++)if(n[i]==t)return!0;return!1}return n==t}}function b(e){e.className=e.className.replace(y,"")+" k-state-selected"}var w,k,y,x=window.kendo,C=x.ui,S=x.date.getDate,T=C.Widget,D=x._outerHeight,A=x.keys,E=".kendoSchedulerView",I="k-event-inverse",M=1024,F=Math,R='<div class="k-marquee k-scheduler-marquee"><div class="k-marquee-color"></div><div class="k-marquee-text"><div class="k-label-top"></div><div class="k-label-bottom"></div></div></div>',P=x.Class.extend({init:function(e,t){this._index=e,this._timeSlotCollections=[],this._daySlotCollections=[],this._isRtl=t},addTimeSlotCollection:function(e,t){return this._addCollection(e,t,this._timeSlotCollections)},addDaySlotCollection:function(e,t){return this._addCollection(e,t,this._daySlotCollections)},_addCollection:function(e,t,n){var i=new H(e,t,this._index,n.length);return n.push(i),i},timeSlotCollectionCount:function(){return this._timeSlotCollections.length},daySlotCollectionCount:function(){return this._daySlotCollections.length},daySlotByPosition:function(e,t,n){return this._slotByPosition(e,t,this._daySlotCollections,n)},timeSlotByPosition:function(e,t,n){return this._slotByPosition(e,t,this._timeSlotCollections,n)},_slotByPosition:function(e,t,n,i){var o,r,a,s,l,c,d,u,h;for(o=0;o<n.length;o++)for(r=n[o],a=0;a<r.count();a++)if(s=r.at(a),l=s.offsetWidth,c=s.offsetHeight,u=s.offsetLeft+l,h=s.offsetTop+c,i||(d=r.at(a+1)),d&&(d.offsetLeft!=s.offsetLeft?u=this._isRtl?s.offsetLeft+(s.offsetLeft-d.offsetLeft):d.offsetLeft:h=d.offsetTop),e>=s.offsetLeft&&e<u&&t>=s.offsetTop&&t<h)return s},refresh:function(){var e;for(e=0;e<this._daySlotCollections.length;e++)this._daySlotCollections[e].refresh();for(e=0;e<this._timeSlotCollections.length;e++)this._timeSlotCollections[e].refresh()},timeSlotRanges:function(e,t){var n,i=this._timeSlotCollections,o=this._startSlot(e,i);if(!o.inRange&&e>=o.slot.end&&(o=null),n=o,e<t&&(n=this._endSlot(t,i)),n&&!n.inRange&&t<=n.slot.start&&(n=null),null===o&&null===n)return[];if(null===o){if(n.slot.end<=e)return[];o={inRange:!0,slot:i[n.slot.collectionIndex].first()}}if(null===n){if(o.slot.start>=t)return[];n={inRange:!0,slot:i[o.slot.collectionIndex].last()}}return this._continuousRange(B,i,o,n)},daySlotRanges:function(e,t,n){var i,o=this._daySlotCollections,r=this._startSlot(e,o,n);if(!r.inRange&&e>=r.slot.end&&(r=null),i=r,e<t&&(i=this._endSlot(t,o,n)),i&&!i.inRange&&t<=i.slot.start&&(i=null),null===r&&null===i)return[];if(null===r){if(i.slot.end<=e)return[];do e+=x.date.MS_PER_DAY,r=this._startSlot(e,o,n);while(!r.inRange&&e>=r.slot.end)}if(null===i){if(r.slot.start>=t)return[];do t-=x.date.MS_PER_DAY,i=this._endSlot(t,o,n);while(!i.inRange&&t<=i.slot.start)}return this._continuousRange(L,o,r,i)},_continuousRange:function(e,t,n,i){var o,r,a,s,l,c,d=n.slot,u=i.slot,h=d.collectionIndex,p=u.collectionIndex,f=[];for(o=h;o<=p;o++)r=t[o],a=r.first(),s=r.last(),l=!1,c=!1,o==h&&(c=!n.inRange),o==p&&(l=!i.inRange),a.start<d.start&&(a=d),s.start>u.start&&(s=u),h<p&&(o==h?l=!0:o==p?c=!0:l=c=!0),f.push(new e({start:a,end:s,collection:r,head:l,tail:c}));return f},slotRanges:function(e,t){var n=e._startTime||x.date.toUtcTime(e.start),i=e._endTime||x.date.toUtcTime(e.end);return void 0===t&&(t=e.isMultiDay()),t?this.daySlotRanges(n,i,e.isAllDay):this.timeSlotRanges(n,i)},ranges:function(e,t,n,i){return"number"!=typeof e&&(e=x.date.toUtcTime(e)),"number"!=typeof t&&(t=x.date.toUtcTime(t)),n?this.daySlotRanges(e,t,i):this.timeSlotRanges(e,t)},_startCollection:function(e,t){var n,i;for(n=0;n<t.length;n++)if(i=t[n],i.startInRange(e))return i;return null},_endCollection:function(e,t,n){var i,o;for(i=0;i<t.length;i++)if(o=t[i],o.endInRange(e,n))return o;return null},_getCollections:function(e){return e?this._daySlotCollections:this._timeSlotCollections},continuousSlot:function(e,t){var n=t?-1:1,i=this._getCollections(e.isDaySlot),o=i[e.collectionIndex+n];return o?o[t?"last":"first"]():void 0},firstSlot:function(){var e=this._getCollections(this.daySlotCollectionCount());return e[0].first()},lastSlot:function(){var e=this._getCollections(this.daySlotCollectionCount());return e[e.length-1].last()},upSlot:function(e,t,n){var i=this,o=function(e,n,o){var r=0===o;if(!t&&!e&&r&&i.daySlotCollectionCount())return i._daySlotCollections[0].at(n)};return this.timeSlotCollectionCount()||(t=!0),this._verticalSlot(e,-1,o,n)},downSlot:function(e,t,n){var i=this,o=function(e,n,o){if(!t&&e&&i.timeSlotCollectionCount())return i._timeSlotCollections[o].at(0)};return this.timeSlotCollectionCount()||(t=!0),this._verticalSlot(e,1,o,n)},leftSlot:function(e,t){return this._horizontalSlot(e,-1,t)},rightSlot:function(e,t){return this._horizontalSlot(e,1,t)},_horizontalSlot:function(e,t,n){var i,o=e.index,r=e.isDaySlot,a=e.collectionIndex,s=this._getCollections(r);return r=!n&&r,r?o+=t:a+=t,i=s[a],i?i.at(o):void 0},_verticalSlot:function(e,t,n,i){var o,r=e.index,a=e.isDaySlot,s=e.collectionIndex,l=this._getCollections(a);return(e=n(a,s,r))?e:(a=!i&&a,a?s+=t:r+=t,o=l[s],o?o.at(r):void 0)},_collection:function(e,t){var n=t?this._daySlotCollections:this._timeSlotCollections;return n[e]},_startSlot:function(e,t,n){var i,o=this._startCollection(e,t),r=!0;return o||(o=t[0],r=!1),i=o.slotByStartDate(e,n),i||(i=o.first(),r=!1),{slot:i,inRange:r}},_endSlot:function(e,t,n){var i,o=this._endCollection(e,t,n),r=!0;return o||(o=t[t.length-1],r=!1),i=o.slotByEndDate(e,n),i||(i=o.last(),r=!1),{slot:i,inRange:r}},getSlotCollection:function(e,t){return this[t?"getDaySlotCollection":"getTimeSlotCollection"](e)},getTimeSlotCollection:function(e){return this._timeSlotCollections[e]},getDaySlotCollection:function(e){return this._daySlotCollections[e]}}),z=x.Class.extend({init:function(t){e.extend(this,t)},innerHeight:function(){var e,t=this.collection,n=this.start.index,i=this.end.index,o=0;for(e=n;e<=i;e++)o+=t.at(e).offsetHeight;return o},events:function(){return this.collection.events()},addEvent:function(e){this.events().push(e)},startSlot:function(){return this.start.offsetLeft>this.end.offsetLeft?this.end:this.start},endSlot:function(){return this.start.offsetLeft>this.end.offsetLeft?this.start:this.end}}),B=z.extend({innerHeight:function(){var e,t=this.collection,n=this.start.index,i=this.end.index,o=0;for(e=n;e<=i;e++)o+=t.at(e).offsetHeight;return o},outerRect:function(e,t,n){return this._rect("offset",e,t,n)},_rect:function(e,t,n,i){var o,r,a,s,l,c,d,u,h=this.start,p=this.end,f=x.support.isRtl(h.element);return"number"!=typeof t&&(t=x.date.toUtcTime(t)),"number"!=typeof n&&(n=x.date.toUtcTime(n)),i?(o=h.offsetTop,r=p.offsetTop+p[e+"Height"],f?(a=p.offsetLeft,s=h.offsetLeft+h[e+"Width"]):(a=h.offsetLeft,s=p.offsetLeft+p[e+"Width"])):(l=t-h.start,l<0&&(l=0),c=h.end-h.start,o=h.offsetTop+h[e+"Height"]*l/c,d=p.end-n,d<0&&(d=0),u=p.end-p.start,r=p.offsetTop+p[e+"Height"]-p[e+"Height"]*d/u,f?(a=Math.round(p.offsetLeft+p[e+"Width"]*d/u),s=Math.round(h.offsetLeft+h[e+"Width"]-h[e+"Width"]*l/c)):(a=Math.round(h.offsetLeft+h[e+"Width"]*l/c),s=Math.round(p.offsetLeft+p[e+"Width"]-p[e+"Width"]*d/u))),{top:o,bottom:r,left:0===a?a:a+1,right:s}},innerRect:function(e,t,n){return this._rect("client",e,t,n)}}),L=z.extend({innerWidth:function(){var e,t=this.collection,n=this.start.index,i=this.end.index,o=0,r=n!==i?"offsetWidth":"clientWidth";for(e=n;e<=i;e++)o+=t.at(e)[r];return o}}),H=x.Class.extend({init:function(e,t,n,i){this._slots=[],this._events=[],this._start=x.date.toUtcTime(e),this._end=x.date.toUtcTime(t),this._groupIndex=n,this._collectionIndex=i},refresh:function(){for(var e=0;e<this._slots.length;e++)this._slots[e].refresh()},startInRange:function(e){return this._start<=e&&e<this._end},endInRange:function(e,t){var n=t?e<this._end:e<=this._end;return this._start<=e&&n},slotByStartDate:function(e){var t,n,i=e;for("number"!=typeof i&&(i=x.date.toUtcTime(e)),t=0;t<this._slots.length;t++)if(n=this._slots[t],n.startInRange(i))return n;return null},slotByEndDate:function(e,t){var n,i,o=e;if("number"!=typeof o&&(o=x.date.toUtcTime(e)),t)return this.slotByStartDate(e,!1);for(n=0;n<this._slots.length;n++)if(i=this._slots[n],i.endInRange(o))return i;return null},count:function(){return this._slots.length},events:function(){return this._events},addTimeSlot:function(e,t,n,i){var o=new O(e,t,n,this._groupIndex,this._collectionIndex,this._slots.length,i);this._slots.push(o)},addDaySlot:function(e,t,n,i){var o=new V(e,t,n,this._groupIndex,this._collectionIndex,this._slots.length,i);this._slots.push(o)},first:function(){return this._slots[0]},last:function(){return this._slots[this._slots.length-1]},at:function(e){return this._slots[e]}}),N=x.Class.extend({init:function(e,t,n,i,o,r){this.element=e,this.clientWidth=e.clientWidth,this.clientHeight=e.clientHeight,this.offsetWidth=e.offsetWidth,this.offsetHeight=e.offsetHeight,this.offsetTop=e.offsetTop,this.offsetLeft=e.offsetLeft,this.start=t,this.end=n,this.element=e,this.groupIndex=i,this.collectionIndex=o,this.index=r,this.isDaySlot=!1},refresh:function(){var e=this.element;this.clientWidth=e.clientWidth,this.clientHeight=e.clientHeight,this.offsetWidth=e.offsetWidth,this.offsetHeight=e.offsetHeight,this.offsetTop=e.offsetTop,this.offsetLeft=e.offsetLeft},startDate:function(){return x.timezone.toLocalDate(this.start)},endDate:function(){return x.timezone.toLocalDate(this.end)},startInRange:function(e){return this.start<=e&&e<this.end},endInRange:function(e){return this.start<e&&e<=this.end},startOffset:function(){return this.start},endOffset:function(){return this.end}}),O=N.extend({init:function(e,t,n,i,o,r,a){N.fn.init.apply(this,arguments),this.isHorizontal=!!a},offsetX:function(e,t){return e?this.offsetLeft+t:this.offsetLeft+t},startInRange:function(e){return this.start<=e&&e<this.end},endInRange:function(e){return this.start<e&&e<=this.end},startOffset:function(t,n,i){var o,r,a,s,l;if(i)return this.start;if(o=e(this.element).offset(),r=this.end-this.start,this.isHorizontal){if(l=x.support.isRtl(this.element),a=t-o.left,s=Math.floor(r*(a/this.offsetWidth)),l)return this.start+r-s}else a=n-o.top,s=Math.floor(r*(a/this.offsetHeight));return this.start+s},endOffset:function(t,n,i){var o,r,a,s,l;if(i)return this.end;if(o=e(this.element).offset(),r=this.end-this.start,this.isHorizontal){if(l=x.support.isRtl(this.element),a=t-o.left,s=Math.floor(r*(a/this.offsetWidth)),l)return this.start+r-s}else a=n-o.top,s=Math.floor(r*(a/this.offsetHeight));return this.start+s}}),V=N.extend({init:function(e,t,n,i,o,r,a){if(N.fn.init.apply(this,arguments),this.eventCount=a,this.isDaySlot=!0,this.element.children.length){var s=this.element.children[0];this.firstChildHeight=s.offsetHeight,this.firstChildTop=s.offsetTop}else this.firstChildHeight=3,this.firstChildTop=0},startDate:function(){var e=new Date(this.start);return x.timezone.apply(e,"Etc/UTC")},endDate:function(){var e=new Date(this.end);return x.timezone.apply(e,"Etc/UTC")},startInRange:function(e){return this.start<=e&&e<this.end},endInRange:function(e){return this.start<e&&e<=this.end}});x.ui.SchedulerView=T.extend({init:function(t,n){T.fn.init.call(this,t,n),this._normalizeOptions(),this._scrollbar=c(),this._isRtl=x.support.isRtl(t),this._resizeHint=e(),this._moveHint=e(),this._cellId=x.guid(),this._resourcesForGroups(),this._selectedSlots=[]},visibleEndDate:function(){return this.endDate()},_normalizeOptions:function(){var e=this.options;e.startTime&&e.startTime.setMilliseconds(0),e.endTime&&e.endTime.setMilliseconds(0),e.workDayStart&&e.workDayStart.setMilliseconds(0),e.workDayEnd&&e.workDayEnd.setMilliseconds(0)},_isMobile:function(){var e=this.options;return e.mobile===!0&&x.support.mobileOS||"phone"===e.mobile||"tablet"===e.mobile},_addResourceView:function(){var e=new P(this.groups.length,this._isRtl);return this.groups.push(e),e},dateForTitle:function(){return x.format(this.options.selectedDateFormat,this.startDate(),this.endDate())},shortDateForTitle:function(){return x.format(this.options.selectedShortDateFormat,this.startDate(),this.endDate())},mobileDateForTitle:function(){return x.format(this.options.selectedMobileDateFormat||this.options.selectedShortDateFormat,this.startDate(),this.endDate())},_changeGroup:function(e,t){var n=t?"prevGroupSlot":"nextGroupSlot",i=this[n](e.start,e.groupIndex,e.isAllDay);return i&&(e.groupIndex+=t?-1:1),this._isGroupedByDate()&&!i&&(e.groupIndex=t?this.groups.length-1:0),i},_changeDate:function(e,t,n){var i,o,r,a=this.groups[e.groupIndex];if(n){if(i=a._getCollections(!1),o=a.daySlotCollectionCount()?t.index-1:t.collectionIndex-1,o>=0)return i[o]._slots[i[o]._slots.length-1]}else if(i=a._getCollections(a.daySlotCollectionCount()),o=a.daySlotCollectionCount()?0:t.collectionIndex+1,r=a.daySlotCollectionCount()?t.collectionIndex+1:0,i[o]&&i[o]._slots[r])return i[o]._slots[r]},_changeGroupContinuously:function(){return null},_changeViewPeriod:function(){return!1},_isInRange:function(e,t){return!!(e&&t&&this.options.min&&this.options.max)&&(S(e)<=S(this.options.min)||S(t)>=S(this.options.max))},_horizontalSlots:function(e,t,n,i){var o,r,a,s=i?"leftSlot":"rightSlot",l={startSlot:t[0].start,endSlot:t[t.length-1].end},c=this.groups[e.groupIndex],d=this._isVerticallyGrouped();return n||(o=this._normalizeHorizontalSelection(e,t,i),o&&(l.startSlot=l.endSlot=o)),this._isGroupedByDate()&&!n?(r=this._changeGroup(e,i),r?l.startSlot=l.endSlot=r:l=this._getNextHorizontalRange(c,s,l)):(l.startSlot=c[s](l.startSlot),l.endSlot=c[s](l.endSlot),n||d||l.startSlot&&l.endSlot||(l.startSlot=l.endSlot=this._changeGroup(e,i))),l.startSlot&&l.endSlot||this._isGroupedByDate()||(a=this._continuousSlot(e,t,i),a=this._changeGroupContinuously(e,a,n,i),a&&(l.startSlot=l.endSlot=a)),l},_getNextHorizontalRange:function(e,t,n){return this._isVerticallyGrouped()||(n.startSlot=e[t](n.startSlot),n.endSlot=e[t](n.endSlot)),n},_verticalSlots:function(e,t,n,i){var o,r,a=this.groups[e.groupIndex],s={startSlot:t[0].start,endSlot:t[t.length-1].end};return n||(o=this._normalizeVerticalSelection(e,t,i),o&&(s.startSlot=s.endSlot=o)),r=i?"upSlot":"downSlot",s=this._getNextVerticalRange(a,r,s,n),n||!this._isVerticallyGrouped()||s.startSlot&&s.endSlot||(s.startSlot=s.endSlot=this._isGroupedByDate()?this._changeDate(e,o,i):this._changeGroup(e,i)),s},_getNextVerticalRange:function(e,t,n,i){return n.startSlot=e[t](n.startSlot,i),n.endSlot=e[t](n.endSlot,i),n},_normalizeHorizontalSelection:function(){return null},_normalizeVerticalSelection:function(e,t,n){var i;return i=n?t[0].start:t[t.length-1].end},_continuousSlot:function(){return null},_footer:function(){var t,n=this,i=n.options;n._isMobile()&&(t='<div class="k-header k-scheduler-footer">',t+='<span class="k-state-default k-scheduler-today"><a href="#" class="k-link">',t+=i.messages.today+"</a></span>",t+="</div>",n.footer=e(t).appendTo(n.element)),n.footer&&n.footer.on("click"+E,".k-scheduler-today",function(e){var t,o,r,a,s;e.preventDefault(),t=n.options.timezone,o="today",r=new Date,t?(s=x.timezone.offset(r,t),a=x.timezone.convert(r,r.getTimezoneOffset(),s)):a=r,n.trigger("navigate",{view:n.name||i.name,action:o,date:a})})},constrainSelection:function(e){var t,n=this.groups[0];this.inRange(e)?n.daySlotCollectionCount()?n.timeSlotCollectionCount()||(e.isAllDay=!0):e.isAllDay=!1:(t=n.firstSlot(),e.isAllDay=t.isDaySlot,e.start=t.startDate(),e.end=t.endDate()),this.groups[e.groupIndex]||(e.groupIndex=0)},move:function(e,t,n){var i,o,r,a,s,l,c=!1,d=this.groups[e.groupIndex],u=this._isGroupedByDate()&&this._isVerticallyGrouped();if(d.timeSlotCollectionCount()||(e.isAllDay=!0),i=d.ranges(e.start,e.end,e.isAllDay,!1),t===A.DOWN||t===A.UP){if(c=!0,a=t===A.UP,this._updateDirection(e,i,n,a,!0),s=this._verticalSlots(e,i,n,a),!s.startSlot&&!n&&this._changeViewPeriod(e,a,!u))return c}else if((t===A.LEFT||t===A.RIGHT)&&(c=!0,a=t===A.LEFT,this._updateDirection(e,i,n,a,!1),s=this._horizontalSlots(e,i,n,a),!s.startSlot&&!n&&this._changeViewPeriod(e,a,u)))return c;return c&&(o=s.startSlot,r=s.endSlot,n?(l=e.backward,l&&o?e.start=o.startDate():!l&&r&&(e.end=r.endDate())):o&&r&&(e.isAllDay=o.isDaySlot,e.start=o.startDate(),e.end=r.endDate()),e.events=[]),c},moveToEventInGroup:function(t,n,i,o){var r,a,s,l,c=t._continuousEvents||[],d=o?-1:1,u=c.length,h=o?u-1:0;if(i.length)for(s=i[i.length-1],l=0;l<c.length;l++)c[l].uid===s&&(h=l+d);for(;h<u&&h>-1;){if(a=c[h],(!o&&a.start.startDate()>=n.startDate()||o&&a.start.startDate()<=n.startDate())&&a&&e.inArray(a.uid,i)===-1){r=!!a;break}h+=d}return a},moveToEvent:function(e,t){var n,i,o,r,a,s,l=e.groupIndex,c=this.groups[l],d=c.ranges(e.start,e.end,e.isAllDay,!1)[0].start,u=this.groups.length,h=t?-1:1,p=e.events;if(this._isGroupedByDate())if(i=this._getAllEvents(),o=this._getUniqueEvents(i),r=this._getSortedEvents(o),0===p.length)a=this._getNextEventIndexBySlot(d,r,l),t&&a--,n=r[a];else for(s=this._getStartIdx(p,r);s<r.length&&s>-1&&(p.length>0&&(d=this._getSelectedSlot(d,r,n,s,h,t)),d);){if((!t&&r[s].start.startDate()>=d.startDate()||t&&r[s].start.startDate()<=d.startDate())&&p[0]!=r[s].uid){n=r[s];break}s+=h}else for(;l<u&&l>-1&&(n=this.moveToEventInGroup(c,d,p,t),l+=h,c=this.groups[l],c&&!n);)p=[],d=t?c.lastSlot():c.firstSlot(!0);return n&&(e.events=[n.uid],e.start=n.start.startDate(),e.end=n.end.endDate(),e.isAllDay=n.start.isDaySlot,e.groupIndex=n.start.groupIndex),!!n},current:function(e){return void 0===e?this._current:(this._current=e,void(this.content.has(e)&&this._scrollTo(e,this.content[0])))},select:function(e){this.clearSelection(),this._selectEvents(e)||this._selectSlots(e)},_getNextEventIndexBySlot:function(e,t,n){var i,o,r=0,a=x.date.getDate(e.startDate());for(i=0;i<t.length;i++)if(o=x.date.getDate(t[i].start.startDate()),a>o)r++;else if(a.getTime()===o.getTime()&&n>t[i].start.groupIndex)r++;else{if(!(a.getTime()===o.getTime()&&n>=t[i].start.groupIndex&&e.startDate()>t[i].start.startDate()))break;r++}return r},_getSelectedSlot:function(e,t,n,i,o,r){var a,s;return t[i+o]&&t[i].start.groupIndex!==t[i+o].start.groupIndex&&(a=t[i+o].start.groupIndex,s=this.groups[a],s&&!n||(e=null),e=r?s.lastSlot():s.firstSlot(!0)),e},_getStartIdx:function(t,n){var i=0;return e.each(n,function(){return this.uid!==t[0]&&void i++}),i},_getAllEvents:function(){var e,t=[],n=this.groups;for(e=0;e<n.length;e++)n[e]._continuousEvents&&(t=t.concat(n[e]._continuousEvents)); +return t},_getUniqueEvents:function(e){var t,n,i,o=[];for(t=0;t<e.length;t++){for(n=!1,i=0;i<o.length;i++)if(e[t].uid===o[i].uid){n=!0;break}n||o.push(e[t])}return o},_getSortedEvents:function(t){return t.sort(function(t,n){var i=t.start.startDate(),o=n.start.startDate(),r=x.date.getDate(i)-x.date.getDate(o);return 0===r&&(r=t.start.groupIndex-n.start.groupIndex),0===r&&(r=i.getTime()-o.getTime()),0===r&&(t.start.isDaySlot&&!n.start.isDaySlot&&(r=-1),!t.start.isDaySlot&&n.start.isDaySlot&&(r=1)),0===r&&(r=e(t.element).index()-e(n.element).index()),r})},_selectSlots:function(e){var t,n,i,o,r,a,s,l=e.isAllDay,c=this.groups[e.groupIndex];for(c.timeSlotCollectionCount()||(l=!0),this._selectedSlots=[],t=c.ranges(e.start,e.end,l,!1),o=0;o<t.length;o++)for(r=t[o],a=r.collection,s=r.start.index;s<=r.end.index;s++)i=a.at(s),n=i.element,n.setAttribute("aria-selected",!0),b(n),this._selectedSlots.push({start:i.startDate(),end:i.endDate(),element:n});e.backward&&(n=t[0].start.element),this.current(n)},_selectEvents:function(t){var n,i,o,r=!1,a=t.events,s=this._getAllEvents(),l=s.length;if(!a[0]||!s[0])return r;for(o=e(),t.events=[],n=0;n<l;n++)e.inArray(s[n].uid,a)>-1&&(i=s[n],o=o.add(i.element),t.events.indexOf(i.uid)===-1&&t.events.push(i.uid));return o[0]&&(o.addClass("k-state-selected").attr("aria-selected",!0),this.current(o.last()[0]),this._selectedSlots=[],r=!0),r},inRange:function(e){var t=this.startDate(),n=x.date.addDays(this.endDate(),1),i=e.start,o=e.end;return t<=i&&i<n&&t<o&&o<=n},_resourceValue:function(e,t){return e.valuePrimitive&&(t=x.getter(e.dataValueField)(t)),t},_resourceBySlot:function(e){var t,n,i,o,r,a=this.groupedResources,s={};if(a.length)for(t=e.groupIndex,n=a.length-1;n>=0;n--)i=a[n],o=this._resourceValue(i,i.dataSource.view()[t%i.dataSource.total()]),i.multiple&&(o=[o]),r=x.setter(i.field),r(s,o),t=Math.floor(t/i.dataSource.total());return s},_createResizeHint:function(t,n,i,o){return e(R).css({left:t,top:n,width:i,height:o})},_removeResizeHint:function(){this._resizeHint.remove(),this._resizeHint=e()},_removeMoveHint:function(t){t?(this._moveHint.filter("[data-uid='"+t+"']").remove(),this._moveHint=this._moveHint.filter("[data-uid!='"+t+"']")):(this._moveHint.remove(),this._moveHint=e())},_scrollTo:function(e,t){var n=e.offsetTop,i=e.offsetHeight,o=t.scrollTop,r=t.clientHeight,a=n+i,s=0;s=o>n?n:a>o+r?i<=r?a-r:n:o,t.scrollTop=s},_inverseEventColor:function(e){var t=e.css("color"),n=new k(t).isDark(),i=e.css("background-color"),o=new k(i).isDark();n==o&&e.addClass(I)},_eventTmpl:function(t,n){var i,o=this.options,r=e.extend({},x.Template,o.templateSettings),a=r.paramName,s="",l=typeof t,c={storage:{},count:0};return"function"===l?(c.storage["tmpl"+c.count]=t,s+="#=this.tmpl"+c.count+"("+a+")#",c.count++):"string"===l&&(s+=t),i=x.template(x.format(n,s),r),c.count>0&&(i=e.proxy(i,c.storage)),i},eventResources:function(e){var t,n,i,o,r,a,s,l,c,d,u=[],h=this.options;if(!h.resources)return u;for(t=0;t<h.resources.length;t++)if(n=h.resources[t],i=n.field,o=x.getter(i)(e),null!=o)for(n.multiple||(o=[o]),r=n.dataSource.view(),a=0;a<o.length;a++){for(s=null,l=o[a],n.valuePrimitive||(l=x.getter(n.dataValueField)(l)),c=0;c<r.length;c++)if(r[c].get(n.dataValueField)==l){s=r[c];break}null!==s&&(d=x.getter(n.dataColorField)(s),u.push({field:n.field,title:n.title,name:n.name,text:x.getter(n.dataTextField)(s),value:l,color:d}))}return u},createLayout:function(i){var o,r,a,s,l,c=-1;for(i.rows||(i.rows=[]),o=0;o<i.rows.length;o++)if(i.rows[o].allDay){c=o;break}r=i.rows[c],c>=0&&i.rows.splice(c,1),a=this.columnLevels=t(i,"columns"),s=this.rowLevels=t(i,"rows"),this.table=e('<table role="presentation"'+n()+' class="k-scheduler-layout k-scheduler-'+this.name+'view"><tbody></tbody></table>'),l=s[s.length-1].length,this.table.find("tbody:first").append(this._topSection(a,r,l)),this.table.find("tbody:first").append(this._bottomSection(a,s,l)),this.element.append(this.table),this._isMobile()&&a.length>1&&"horizontal"===this._groupOrientation()&&x._outerWidth(e(window))<M&&(this.table.find(".k-scheduler-content .k-scheduler-table").width(100*a[a.length-2].length+"%"),this.table.find(".k-scheduler-header .k-scheduler-table").width(100*a[a.length-2].length+"%")),this._scroller()},refreshLayout:function(){var t,n,i,o,r,a,s=this,l=s.element.find(">.k-scheduler-toolbar"),c=s.element.innerHeight(),d=this._scrollbar,u=0,h=this._isRtl?"left":"right";for(t=0;t<l.length;t++)c-=D(l.eq(t));s.datesHeader&&(u=D(s.datesHeader)),s.timesHeader&&D(s.timesHeader)>u&&(u=D(s.timesHeader)),s.datesHeader&&s.timesHeader&&(n=s.datesHeader.find("table:first tr"),s.timesHeader.find("tr").height(function(t){e(this).height(n.eq(t).height())})),u&&(c-=u),s.footer&&(c-=D(s.footer)),i=function(e){var t,n;return!!e[0].style.height||(t=e.height(),e.height("auto"),n=e.height(),t!=n?(e.height(""),!0):(e.height(""),!1))},o=s.content[0],r=x.support.kineticScrollNeeded?0:d,i(s.element)&&(s.content.height(c>2*d?c:2*d+1),s.times.height(o.clientHeight),a=s.times.find("table"),a.length&&a.height(s.content.find("table")[0].clientHeight)),o.offsetWidth-o.clientWidth>0?(s.table.addClass("k-scrollbar-v"),s.datesHeader.css("padding-"+h,r-parseInt(s.datesHeader.children().css("border-"+h+"-width"),10))):s.datesHeader.css("padding-"+h,""),o.offsetHeight-o.clientHeight>0||o.clientHeight>s.content.children(".k-scheduler-table").height()?s.table.addClass("k-scrollbar-h"):s.table.removeClass("k-scrollbar-h")},_topSection:function(t,n,i){var o,s=t[t.length-1].length;return this.timesHeader=r(t.length,n,i),this.datesHeader=a(t,s,n),o="<tr "+(this._isMobile()?"class='k-mobile-header'":"")+">",e(o).append(this.timesHeader.add(this.datesHeader).wrap("<td>").parent())},_bottomSection:function(t,n,i){return this.times=s(n,i,this._isMobile()),this.content=l(t[t.length-1],n[n.length-1]),e("<tr>").append(this.times.add(this.content).wrap("<td>").parent())},_scroller:function(){var t,n=this;this.content.bind("scroll"+E,function(){n.datesHeader.find(">.k-scheduler-header-wrap").scrollLeft(this.scrollLeft),n.times.scrollTop(this.scrollTop)}),t=x.touchScroller(this.content,{avoidScrolling:function(t){return e(t.event.target).closest(".k-event.k-event-active").length>0}}),t&&t.movable&&(this._touchScroller=t,this.content=t.scrollElement,t.movable.bind("change",function(e){n.datesHeader.find(">.k-scheduler-header-wrap").scrollLeft(-e.sender.x),n.times.scrollTop(-e.sender.y)}))},_resourcesForGroups:function(){var e,t,n,i,o=[],r=this.options.group,a=this.options.resources;if(r=r&&r.resources?r.resources:[],a&&r.length)for(e=0,t=a.length;e<t;e++)for(n=0,i=r.length;n<i;n++)a[e].name===r[n]&&o.push(a[e]);this.groupedResources=o},_createDateLayout:function(e,t,n){return m("rows",e,t,n)},_createColumnsLayout:function(e,t,n,i,o){return v("columns",e,t,n,i,o)},_groupOrientation:function(){var e=this.options.group;return e&&e.resources?e.orientation:"horizontal"},_isGroupedByDate:function(){return this.options.group&&this.options.group.date},_isVerticallyGrouped:function(){return this.groupedResources.length&&"vertical"===this._groupOrientation()},_createRowsLayout:function(e,t,n,i){return v("rows",e,t,n,i)},selectionByElement:function(){return null},clearSelection:function(){this.content.find(".k-state-selected").removeAttr("id").attr("aria-selected",!1).removeClass("k-state-selected")},destroy:function(){var e=this;T.fn.destroy.call(this),e.table&&(x.destroy(e.table),e.table.remove()),e.footer&&(x.destroy(e.footer),e.footer.remove()),e.groups=null,e.table=null,e.content=null,e.times=null,e.datesHeader=null,e.timesHeader=null,e.footer=null,e._resizeHint=null,e._moveHint=null},calendarInfo:function(){return x.getCulture().calendars.standard},prevGroupSlot:function(e,t,n){var i,o=this.groups[t],r=o.ranges(e,e,n,!1)[0].start;if(!(t<=0))return this._isGroupedByDate()?r:this._isVerticallyGrouped()?o.timeSlotCollectionCount()?(i=o._collection(n?r.index:r.collectionIndex,!1),i.last()):(i=o._collection(o.daySlotCollectionCount()-1,!0),i.at(r.index)):o.timeSlotCollectionCount()?(i=o._collection(n?0:o.timeSlotCollectionCount()-1,n),n?i.last():i.at(r.index)):(i=o._collection(r.collectionIndex,!0),i.last())},nextGroupSlot:function(e,t,n){var i,o,r=this.groups[t],a=r.ranges(e,e,n,!1)[0].start;if(!(t>=this.groups.length-1))return this._isGroupedByDate()?a:this._isVerticallyGrouped()?r.timeSlotCollectionCount()?(o=r.daySlotCollectionCount(),i=r._collection(o?0:a.collectionIndex,o),n?i.first():i.at(a.collectionIndex)):(i=r._collection(0,!0),i.at(a.index)):r.timeSlotCollectionCount()?(i=r._collection(0,n),n?i.first():i.at(a.index)):(i=r._collection(a.collectionIndex,!0),i.first())},_eventOptionsForMove:function(){return{}},_updateEventForResize:function(){},_updateEventForSelection:function(e){return e}}),k=function(e){var t,n,i,o,r,a=this,s=k.formats;if(1===arguments.length)for(e=a.resolveColor(e),o=0;o<s.length;o++)t=s[o].re,n=s[o].process,i=t.exec(e),i&&(r=n(i),a.r=r[0],a.g=r[1],a.b=r[2]);else a.r=arguments[0],a.g=arguments[1],a.b=arguments[2];a.r=a.normalizeByte(a.r),a.g=a.normalizeByte(a.g),a.b=a.normalizeByte(a.b)},k.prototype={resolveColor:function(e){return e=e||"#000","#"==e.charAt(0)&&(e=e.substr(1,6)),e=e.replace(/ /g,""),e=e.toLowerCase(),e=k.namedColors[e]||e},normalizeByte:function(e){return e<0||isNaN(e)?0:e>255?255:e},percBrightness:function(){var e=this;return F.sqrt(.241*e.r*e.r+.691*e.g*e.g+.068*e.b*e.b)},isDark:function(){var e=this,t=e.percBrightness();return t<180}},k.formats=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,process:function(e){return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10)]}},{re:/^(\w{2})(\w{2})(\w{2})$/,process:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,process:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}}],k.namedColors={aqua:"00ffff",azure:"f0ffff",beige:"f5f5dc",black:"000000",blue:"0000ff",brown:"a52a2a",coral:"ff7f50",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgray:"a9a9a9",darkgreen:"006400",darkorange:"ff8c00",darkred:"8b0000",dimgray:"696969",fuchsia:"ff00ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lightblue:"add8e6",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumblue:"0000cd",navy:"000080",olive:"808000",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",pink:"ffc0cb",plum:"dda0dd",purple:"800080",red:"ff0000",royalblue:"4169e1",salmon:"fa8072",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",snow:"fffafa",steelblue:"4682b4",tan:"d2b48c",teal:"008080",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"},y=/\s*k-state-selected/,e.extend(C.SchedulerView,{createColumns:p,createRows:f,rangeIndex:u,collidingEvents:d,groupEqFilter:_})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.scheduler.dayview.min",["kendo.scheduler.view.min"],e)}(function(){return function(e,t){function n(e){var t=new Date(1980,1,1,0,0,0);return d(t,x(e)),t}function i(e,t,n){return e>=t&&e<=n}function o(e,t,n,i){return i=i?e<=n:e<n,e>t&&i}function r(e,t,n,i){var o,r=e._continuousEvents,a=r[r.length-1],l=m(t.start.startDate()).getTime();if(i&&a&&m(a.start.startDate()).getTime()==l){for(o=r.length-1;o>-1&&!(r[o].isAllDay||m(r[o].start.startDate()).getTime()<l);o--);r.splice(o+1,0,{element:n,isAllDay:!0,uid:n.attr(s.attr("uid")),start:t.start,end:t.end})}else r.push({element:n,isAllDay:i,uid:n.attr(s.attr("uid")),start:t.start,end:t.end})}function a(e){var t=[],n=e.workWeekStart%7,i=Math.abs(e.workWeekEnd%7);for(t.push(n);i!=n;)n>6?n-=7:n++,t.push(n);return t}var s=window.kendo,l=s.ui,c=s.support.browser,d=s.date.setTime,u=l.SchedulerView,h=s._outerWidth,p=s._outerHeight,f=e.extend,g=e.proxy,m=s.date.getDate,v=s.date.MS_PER_MINUTE,_=s.date.MS_PER_DAY,b="k-current-time",w="k-current-time-arrow",k="k-event-inverse",y=.8666,x=s.date.getMilliseconds,C=".kendoMultiDayView",S=s.template('<div title="(#=kendo.format("{0:t} - {1:t}", start, end)#): #=title.replace(/"/g,"&\\#34;")#"><div class="k-event-template k-event-time">#:kendo.format("{0:t} - {1:t}", start, end)#</div><div class="k-event-template">${title}</div></div>'),T=s.template('<div title="(#=kendo.format("{0:t}", start)#): #=title.replace(/"/g,"&\\#34;")#"><div class="k-event-template">${title}</div></div>'),D=s.template("#var dateString = isMobile ? kendo.toString(date,'ddd')[0] : kendo.toString(date,'ddd M/dd'); #<span class='k-link k-nav-day'>#=dateString#</span>"),A='<div role="gridcell" aria-selected="false" data-#=ns#uid="#=uid#"#if (resources[0]) { #style="background-color:#=resources[0].color#; border-color: #=resources[0].color#"class="k-event"#} else {#class="k-event"#}#><span class="k-event-actions"># if(data.tail || data.middle) {#<span class="k-icon k-i-arrow-60-left"></span>#}## if(data.isException()) {#<span class="k-icon k-i-non-recurrence"></span># } else if(data.isRecurring()) {#<span class="k-icon k-i-reload"></span># } #</span>{0}<span class="k-event-actions">#if (showDelete) {#<a href="\\#" class="k-link k-event-delete" title="${data.messages.destroy}" aria-label="${data.messages.destroy}"><span class="k-icon k-i-close"></span></a>#}## if(data.head || data.middle) {#<span class="k-icon k-i-arrow-60-right"></span>#}#</span>#if(resizable && !singleDay && !data.tail && !data.middle){#<span class="k-resize-handle k-resize-w"></span>#}##if(resizable && !singleDay && !data.head && !data.middle){#<span class="k-resize-handle k-resize-e"></span>#}#</div>',E='<div role="gridcell" aria-selected="false" data-#=ns#uid="#=uid#" #if (resources[0]) { #style="background-color:#=resources[0].color #; border-color: #=resources[0].color#"class="k-event"#} else {#class="k-event"#}#><span class="k-event-actions"># if(data.isException()) {#<span class="k-icon k-i-non-recurrence"></span># } else if(data.isRecurring()) {#<span class="k-icon k-i-reload"></span># } #</span>{0}<span class="k-event-actions">#if (showDelete) {#<a href="\\#" class="k-link k-event-delete" title="${data.messages.destroy}" aria-label="${data.messages.destroy}"><span class="k-icon k-i-close"></span></a>#}#</span><span class="k-event-top-actions"># if(data.tail || data.middle) {#<span class="k-icon k-i-arrow-60-up"></span># } #</span><span class="k-event-bottom-actions"># if(data.head || data.middle) {#<span class="k-icon k-i-arrow-60-down"></span># } #</span># if(resizable && !data.tail && !data.middle) {#<span class="k-resize-handle k-resize-n"></span># } ## if(resizable && !data.head && !data.middle) {#<span class="k-resize-handle k-resize-s"></span># } #</div>',I=u.extend({init:function(e,t){var n=this;u.fn.init.call(n,e,t),n.title=n.options.title||n.options.name,n._workDays=a(n.options),n._templates(),n._editable(),n.calculateDateRange(),n._groups(),n._currentTime(!0)},_currentTimeMarkerUpdater:function(){this._updateCurrentTimeMarker(new Date)},_updateCurrentTimeMarker:function(t){var n,i,o,r,a,l,d,u,f,g,m,v,_,k,x,C,S=this.options;for(S.currentTimeMarker.useLocalTimezone===!1&&(n=S.dataSource.options.schema.timezone,S.dataSource&&n&&(i=s.timezone.offset(t,n),t=s.timezone.convert(t,t.getTimezoneOffset(),i))),this.times.find("."+b).remove(),this.content.find("."+b).remove(),o=S.group&&"horizontal"!=S.group.orientation?this.groups.length:1,r=this.times.find("tr:first th:first"),a=this.times.find("tr:first th:last"),l=0;l<o;l++){if(d=this.groups[l],!d)return;if(u=s.date.toUtcTime(t),f=d.timeSlotRanges(u,u+1),0===f.length)return;g=f[0].collection,m=g.slotByStartDate(t),m&&(v="<div class='"+b+"'></div>",_=e(v).prependTo(this.times),k=Math.round(f[0].innerRect(t,new Date(t.getTime()+1),!1).top),x={},C=this.content[0].scrollWidth,(c.msie||c.edge)&&(C-=1),this._isRtl?(x.right=r.position().left+p(r)-p(a),_.addClass(w+"-left")):(x.left=a.position().left,_.addClass(w+"-right")),x.top=k-h(_)*y/2,_.css(x),e(v).prependTo(this.content).css({top:k,height:"1px",right:0,width:C,left:0}))}},_currentTime:function(e){var n=this,i=n.options.currentTimeMarker;i!==!1&&i.updateInterval!==t&&(n._currentTimeMarkerUpdater(),e&&(n._currentTimeUpdateTimer=setInterval(g(this._currentTimeMarkerUpdater,n),i.updateInterval)))},_updateResizeHint:function(e,t,n,i){var o,r,a,l,c,d,h,p,f,g,m,v,_=e.isMultiDay(),b=this.groups[t],w=b.ranges(n,i,_,e.isAllDay);for(this._removeResizeHint(),c=0;c<w.length;c++)if(d=w[c],h=d.startSlot(),this._isGroupedByDate()&&_)for(p=h.index;p<=d.end.index;p++)f=d.collection._slots[p],o=f.offsetWidth,r=f.clientHeight,a=f.offsetTop,l=u.fn._createResizeHint.call(this,f.offsetLeft,a,o,r),this._resizeHint=this._resizeHint.add(l);else o=h.offsetWidth,r=h.clientHeight,a=h.offsetTop,_?o=d.innerWidth():(g=d.outerRect(n,i,this.options.snap),a=g.top,r=g.bottom-g.top),l=u.fn._createResizeHint.call(this,h.offsetLeft,a,o,r),this._resizeHint=this._resizeHint.add(l);m="t",v=this.content,_&&(m="M/dd",v=this.element.find(".k-scheduler-header-wrap:has(.k-scheduler-header-all-day) > div"),v.length||(v=this.content)),this._resizeHint.appendTo(v),this._resizeHint.find(".k-label-top,.k-label-bottom").text(""),this._resizeHint.first().addClass("k-first").find(".k-label-top").text(s.toString(s.timezone.toLocalDate(n),m)),this._resizeHint.last().addClass("k-last").find(".k-label-bottom").text(s.toString(s.timezone.toLocalDate(i),m))},_updateMoveHint:function(t,n,i){var o,r,a,l,c,d,u,h,p,f,g=t.isMultiDay(),m=this.groups[n],v=s.date.toUtcTime(t.start)+i,_=v+t.duration(),b=m.ranges(v,_,g,t.isAllDay);for(v=s.timezone.toLocalDate(v),_=s.timezone.toLocalDate(_),this._removeMoveHint(t.uid),!g&&(0===x(_)||x(_)<x(this.startTime()))&&b.length>1&&b.pop(),o=e(),r=0;r<b.length;r++)if(a=b[r],l=a.start,d={left:l.offsetLeft+2,top:l.offsetTop},this._isGroupedByDate()&&g)for(u=l.index;u<=a.end.index;u++)h=a.collection._slots[u],d.left=this._isRtl?.1*h.clientWidth+h.offsetLeft+2:h.offsetLeft+2,d.height=h.offsetHeight,d.width=.9*h.clientWidth-4,c=this._createEventElement(t.clone({start:v,end:_}),!g),t.inverseColor&&c.addClass(k),this._appendMoveHint(c,d),o=o.add(c);else this._isRtl&&(d.left=.1*l.clientWidth+l.offsetLeft+2),g?d.width=a.innerWidth()-4:(p=a.outerRect(v,_,this.options.snap),d.top=p.top,d.height=p.bottom-p.top,d.width=.9*l.clientWidth-4),c=this._createEventElement(t.clone({start:v,end:_}),!g),t.inverseColor&&c.addClass(k),this._appendMoveHint(c,d),o=o.add(c);f=this.content,g&&(f=this.element.find(".k-scheduler-header-wrap:has(.k-scheduler-header-all-day) > div"),f.length||(f=this.content)),o.appendTo(f)},_appendMoveHint:function(e,t){e.addClass("k-event-drag-hint"),e.css(t),this._moveHint=this._moveHint.add(e)},_slotByPosition:function(e,t){var n,i,o,r;for(this._isVerticallyGrouped()?(i=this.content.offset(),t+=this.content[0].scrollTop,e+=this.content[0].scrollLeft):i=this.element.find(".k-scheduler-header-wrap:has(.k-scheduler-header-all-day)").find(">div").offset(),i&&(e-=i.left,t-=i.top),e=Math.ceil(e),t=Math.ceil(t),r=0;r<this.groups.length;r++)if(o=this.groups[r],n=o.daySlotByPosition(e,t,this._isGroupedByDate()))return n;for(i&&(e+=i.left,t+=i.top),i=this.content.offset(),e-=i.left,t-=i.top,this._isVerticallyGrouped()||(t+=this.content[0].scrollTop,e+=this.content[0].scrollLeft),e=Math.ceil(e),t=Math.ceil(t),r=0;r<this.groups.length;r++)if(o=this.groups[r],n=o.timeSlotByPosition(e,t))return n;return null},_groupCount:function(){var e=this.groupedResources,t=this._isGroupedByDate();return e.length?"vertical"===this._groupOrientation()?t?this._columnCountForLevel(e.length-1):this._rowCountForLevel(e.length-1):t?this._columnCountForLevel(e.length)/this._columnCountForLevel(0):this._columnCountForLevel(e.length)/this._columnOffsetForResource(e.length):1},_columnCountInResourceView:function(){var e=this.groupedResources,t=this._isGroupedByDate();return!e.length||this._isVerticallyGrouped()?t?this._rowCountForLevel(0):this._columnCountForLevel(0):t?this._columnCountForLevel(0):this._columnOffsetForResource(e.length)},_timeSlotGroups:function(e,t){var n,i,o,r,a,s,l,c,d,u,h=this._timeSlotInterval(),p=e,f=this._isGroupedByDate(),g=this.content.find("tr:not(.k-scheduler-header-all-day)");for(g.attr("role","row"),a=g.length,this._isVerticallyGrouped()&&(f&&(p=t),a=Math.floor(a/p)),s=0;s<p;s++)for(l=0,c=0,this._isVerticallyGrouped()?l=s:c=s,o=l*a;o<(l+1)*a;){if(d=g[o].children,o%a===0&&(i=x(new Date((+this.startTime())))),u=0,f)if(this._isVerticallyGrouped())for(r=0;r<e;r++)n=this.groups[r],this._addTimeSlotGroup(n,d,r,i,h,s);else for(n=this.groups[s],r=c;r<e*t;r+=e)this._addTimeSlotGroup(n,d,r,i,h,u),u++;else for(n=this.groups[s],r=c*t;r<(c+1)*t;r++)this._addTimeSlotGroup(n,d,r,i,h,u),u++;i+=h,o++}},_addTimeSlotGroup:function(e,t,n,i,o,r){var a,s,l,c=t[n],d=e.getTimeSlotCollection(r),u=this._dates[r];u&&c&&(a=Date.UTC(u.getFullYear(),u.getMonth(),u.getDate()),s=a+i,l=s+o,c.setAttribute("role","gridcell"),c.setAttribute("aria-selected",!1),d.addTimeSlot(c,s,l))},_addDaySlotGroup:function(e,t,n,i,o){var r,a=t[n],l=this._dates[o];l&&(r=Date.UTC(l.getFullYear(),l.getMonth(),l.getDate()),a.setAttribute("role","gridcell"),a.setAttribute("aria-selected",!1),e.addDaySlot(a,r,r+s.date.MS_PER_DAY))},_daySlotGroups:function(e,t){var n,i,o,r,a,s,l,c,d,u=e,h=this._isGroupedByDate();for(this._isVerticallyGrouped()?(h&&(u=t),n=this.element.find(".k-scheduler-header-all-day")):n=this.element.find(".k-scheduler-header-all-day tr"),n.attr("role","row"),o=0;o<u;o++)if(r=0,this._isVerticallyGrouped()&&(r=o),l=n[r].children,c=0,this._isVerticallyGrouped()||(c=o),d=0,h)if(this._isVerticallyGrouped())for(i=0;i<e;i++)a=this.groups[i],s=a.getDaySlotCollection(0),this._addDaySlotGroup(s,l,i,t,o);else for(a=this.groups[o],s=a.getDaySlotCollection(0),i=c;i<e*t;i+=e)this._addDaySlotGroup(s,l,i,t,d),d++;else for(a=this.groups[o],s=a.getDaySlotCollection(0),i=c*t;i<(c+1)*t;i++)this._addDaySlotGroup(s,l,i,t,d),d++},_groups:function(){var e,t,n,i=this._groupCount(),o=this._columnCountInResourceView();for(this.groups=[],e=0;e<i;e++){for(t=this._addResourceView(e),n=0;n<o;n++)this._dates[n]&&t.addTimeSlotCollection(this._dates[n],s.date.addDays(this._dates[n],1));this.options.allDaySlot&&t.addDaySlotCollection(this._dates[0],s.date.addDays(this._dates[this._dates.length-1],1))}this._timeSlotGroups(i,o),this.options.allDaySlot&&this._daySlotGroups(i,o)},options:{name:"MultiDayView",selectedDateFormat:"{0:D}",selectedShortDateFormat:"{0:d}",selectedMobileDateFormat:"{0:MMM} {0:dd} - {1:dd}",allDaySlot:!0,showWorkHours:!1,title:"",startTime:s.date.today(),endTime:s.date.today(),minorTickCount:2,majorTick:60,majorTimeHeaderTemplate:"<span class='k-time-text'>#=kendo.toString(date, 'h:mm')#</span> <span class='k-time-period'>#=kendo.toString(date, 'tt')#</span>",minorTimeHeaderTemplate:"&\\#8203;",groupHeaderTemplate:"#=text#",slotTemplate:" ",allDaySlotTemplate:" ",eventTemplate:S,allDayEventTemplate:T,dateHeaderTemplate:D,editable:!0,workDayStart:new Date(1980,1,1,8,0,0),workDayEnd:new Date(1980,1,1,17,0,0),workWeekStart:1,workWeekEnd:5,footer:{command:"workDay"},messages:{allDay:"all day",showFullDay:"Show full day",showWorkDay:"Show business hours"},currentTimeMarker:{updateInterval:1e4,useLocalTimezone:!0}},events:["remove","add","edit"],_templates:function(){var e=this.options,t=f({},s.Template,e.templateSettings);this.eventTemplate=this._eventTmpl(e.eventTemplate,E),this.allDayEventTemplate=this._eventTmpl(e.allDayEventTemplate,A),this.majorTimeHeaderTemplate=s.template(e.majorTimeHeaderTemplate,t),this.minorTimeHeaderTemplate=s.template(e.minorTimeHeaderTemplate,t),this.dateHeaderTemplate=s.template(e.dateHeaderTemplate,t),this.slotTemplate=s.template(e.slotTemplate,t),this.allDaySlotTemplate=s.template(e.allDaySlotTemplate,t),this.groupHeaderTemplate=s.template(e.groupHeaderTemplate,t)},_editable:function(){this.options.editable&&(this._isMobile()?this._touchEditable():this._mouseEditable())},_mouseEditable:function(){var t=this;t.element.on("click"+C,".k-event a:has(.k-i-close)",function(n){t.trigger("remove",{uid:e(this).closest(".k-event").attr(s.attr("uid"))}),n.preventDefault()}),t.options.editable.create!==!1&&t.element.on("dblclick"+C,".k-scheduler-content td",function(n){var i,o;e(this).parent().hasClass("k-scheduler-header-all-day")||(i=t._slotByPosition(n.pageX,n.pageY),i&&(o=t._resourceBySlot(i),t.trigger("add",{eventInfo:f({start:i.startDate(),end:i.endDate()},o)})),n.preventDefault())}).on("dblclick"+C,".k-scheduler-header-all-day td",function(e){var n,i=t._slotByPosition(e.pageX,e.pageY);i&&(n=t._resourceBySlot(i),t.trigger("add",{eventInfo:f({},{isAllDay:!0,start:s.date.getDate(i.startDate()),end:s.date.getDate(i.startDate())},n)})),e.preventDefault()}),t.options.editable.update!==!1&&t.element.on("dblclick"+C,".k-event",function(n){t.trigger("edit",{uid:e(this).closest(".k-event").attr(s.attr("uid"))}),n.preventDefault()})},_touchEditable:function(){var n=this,i=0;s.support.mobileOS.android&&(i=5),n.options.editable.create!==!1&&(n._addUserEvents=new s.UserEvents(n.element,{threshold:i,filter:".k-scheduler-content td",useClickAsTap:!s.support.browser.edge,tap:function(i){var o,r,a,s;n._scrolling||e(i.target).parent().hasClass("k-scheduler-header-all-day")||(o=i.x.location!==t?i.x.location:i.x,r=i.y.location!==t?i.y.location:i.y,a=n._slotByPosition(o,r),a&&(s=n._resourceBySlot(a),n.trigger("add",{eventInfo:f({start:a.startDate(),end:a.endDate()},s)})),i.preventDefault())}}),n._allDayUserEvents=new s.UserEvents(n.element,{threshold:i,useClickAsTap:!s.support.browser.edge,filter:".k-scheduler-header-all-day td",tap:function(e){var i,o,r,a;n._scrolling||(i=e.x.location!==t?e.x.location:e.x,o=e.y.location!==t?e.y.location:e.y,r=n._slotByPosition(i,o),r&&(a=n._resourceBySlot(r),n.trigger("add",{eventInfo:f({},{isAllDay:!0,start:s.date.getDate(r.startDate()),end:s.date.getDate(r.startDate())},a)})),e.preventDefault())}})),n.options.editable.update!==!1&&(n._editUserEvents=new s.UserEvents(n.element,{threshold:i,useClickAsTap:!s.support.browser.edge,filter:".k-event",tap:function(t){var i,o;n._scrolling||(i=e(t.target).closest(".k-event"),o=e(t.touch.initialTouch),o.hasClass("k-i-close")?n.trigger("remove",{uid:i.attr(s.attr("uid"))}):i.hasClass("k-event-active")||n.trigger("edit",{uid:i.attr(s.attr("uid"))}),t.preventDefault())}}))},_layout:function(e){var t,n,i,o=[],r=[],a=this.options,l=this,c=l._isGroupedByDate();for(t=0;t<e.length;t++)n={},n.text=l.dateHeaderTemplate({date:e[t],isMobile:l._isMobile()}),s.date.isToday(e[t])&&(n.className="k-today"),o.push(n);return i=this.groupedResources,a.allDaySlot&&r.push({text:a.messages.allDay,allDay:!0,cellContent:function(t){var n=t;return t=i.length&&"vertical"!==l._groupOrientation()?t%e.length:t,l.allDaySlotTemplate({date:e[t],resources:function(){return l._resourceBySlot({groupIndex:n})}})}}),this._forTimeRange(this.startTime(),this.endTime(),function(e,t,n,i){var o=t?l.majorTimeHeaderTemplate:l.minorTimeHeaderTemplate,a={text:o({date:e}),className:i?"k-slot-cell":""};r.push(a)}),i.length&&("vertical"===this._groupOrientation()?c?(r=this._createDateLayout(o,r),o=this._createColumnsLayout(i,null,this.groupHeaderTemplate)):r=this._createRowsLayout(i,r,this.groupHeaderTemplate):o=c?this._createColumnsLayout(i,o,this.groupHeaderTemplate,o):this._createColumnsLayout(i,o,this.groupHeaderTemplate)),{columns:o,rows:r}},_footer:function(){var t,n,i,o=this.options;o.footer!==!1&&(t='<div class="k-header k-scheduler-footer">',n=o.footer.command,this._isMobile()&&(t+='<span class="k-state-default k-scheduler-today"><a href="#" class="k-link">',t+=o.messages.today+"</a></span>"),n&&"workDay"===n?this._isMobile()?(t+='<span class="k-state-default k-scheduler-fullday"><a href="#" class="k-link">',t+=(o.showWorkHours?o.messages.showFullDay:o.messages.showWorkDay)+"</a></span>"):(t+='<ul class="k-reset k-header">',t+='<li class="k-state-default k-scheduler-fullday"><a href="#" class="k-link"><span class="k-icon k-i-clock"></span>',t+=(o.showWorkHours?o.messages.showFullDay:o.messages.showWorkDay)+"</a></li>",t+="</ul>"):t+=" ",t+="</div>",this.footer=e(t).appendTo(this.element),i=this,this.footer.on("click"+C,".k-scheduler-fullday",function(e){e.preventDefault(),i.trigger("navigate",{view:i.name||o.name,date:o.date,isWorkDay:!o.showWorkHours})}),this.footer.on("click"+C,".k-scheduler-today",function(e){var t,n,r,a,l;e.preventDefault(),t=i.options.timezone,n="today",r=new Date,t?(l=s.timezone.offset(r,t),a=s.timezone.convert(r,r.getTimezoneOffset(),l)):a=r,i.trigger("navigate",{view:i.name||o.name,action:n,date:a})}))},_forTimeRange:function(e,t,i,o){var r,a,s,l,c,u,h,p,f,g,m,b,w,k,y,C;for(e=n(e),t=n(t),r=this,a=x(e),s=x(t),l=r.options.minorTickCount,c=r.options.majorTick*v,u=c/l||1,h=new Date((+e)),p=h.getDate(),g=0,b="",m=_/u,a!=s&&(a>s&&(s+=_),m=(s-a)/u),m=Math.round(m);g<m;g++)w=g%(c/u),k=0===w,y=w<l-1,C=w===l-1,b+=i(h,k,y,C),d(h,u,!1);return s&&(f=x(h),p<h.getDate()&&(f+=_),f>s&&(h=new Date((+t)))),o&&(b+=o(h)),b},_content:function(e){var t,n,i,o=this,r=o.options,a=o.startTime(),s=this.endTime(),l=1,c=1,d=e.length,u="",h=this.groupedResources,p=this.allDaySlotTemplate,f=!1,g=o._isGroupedByDate(),m=0;for(h.length&&(f="vertical"===o._groupOrientation(),f?(c=this._rowCountForLevel(this.rowLevels.length-2),g&&(l=this._columnCountForLevel(this.columnLevels.length-1)),r.allDaySlot&&(t=function(t){var n,i='<tr class="k-scheduler-header-all-day">',r=g?0:t,a=function(){return o._resourceBySlot({groupIndex:r})};if(g)for(;r<l;r++)i+="<td>"+p({date:e[m],resources:a})+"</td>";else for(n=0;n<e.length;n++)i+="<td>"+p({date:e[n],resources:a})+"</td>";return i+"</tr>"})):l=g?this._columnCountForLevel(this.columnLevels.length-1)/this._columnCountForLevel(0):this._columnCountForLevel(this.columnLevels.length-2)),u+="<tbody>",n=function(t,n,r){var a,s,c,u="",h=0;if(u="<tr"+(r?' class="k-middle-row"':"")+">",g)for(a=0,s=d;a<s;a++){for(h=0;h<l;h++)c=a,f&&(c=m),u=o._addCellsToContent(u,e,t,c,h,i);if(f)break}else for(;h<l;h++)for(a=0,s=d;a<s;a++)u=o._addCellsToContent(u,e,t,a,h,i);return u+="</tr>"},i=0;i<c;i++)u+=t?t(i):"",u+=this._forTimeRange(a,s,n),f&&m++;u+="</tbody>",this.content.find("table").append(u)},_addCellsToContent:function(e,t,n,i,o,r){var a,l=this,c="",d=this.slotTemplate,u="vertical"===this._groupOrientation(),h=function(e){return function(){return l._resourceBySlot({groupIndex:e})}};return s.date.isToday(t[i])&&(c+="k-today"),(s.date.getMilliseconds(n)<s.date.getMilliseconds(this.options.workDayStart)||s.date.getMilliseconds(n)>=s.date.getMilliseconds(this.options.workDayEnd)||!this._isWorkDay(t[i]))&&(c+=" k-nonwork-hour"),e+="<td"+(""!==c?' class="'+c+'"':"")+">",a=s.date.getDate(t[i]),s.date.setTime(a,s.date.getMilliseconds(n)),e+=d({date:a,resources:h(u&&!l._isGroupedByDate()?r:o)}),e+="</td>"},_isWorkDay:function(e){var t,n=e.getDay(),i=this._workDays;for(t=0;t<i.length;t++)if(i[t]===n)return!0;return!1},_render:function(t){var n,i=this;t=t||[],this._dates=t,this._startDate=t[0],this._endDate=t[t.length-1||0],this.createLayout(this._layout(t)),this._content(t),this._footer(),this.refreshLayout(),n=this.element.find(".k-scheduler-header-all-day td"),n.length&&(this._allDayHeaderHeight=n.first()[0].clientHeight),i.element.on("click"+C,".k-nav-day",function(t){var n,o=e(t.currentTarget).closest("th"),r=o.offset(),a=0,s=p(o);i._isGroupedByDate()&&(i._isVerticallyGrouped()?(a=h(i.times),s=0):s=p(i.datesHeader)),n=i._slotByPosition(r.left+a,r.top+s),i.trigger("navigate",{view:"day",date:n.startDate()})})},startTime:function(){var e=this.options;return e.showWorkHours?e.workDayStart:e.startTime},endTime:function(){var e=this.options;return e.showWorkHours?e.workDayEnd:e.endTime},startDate:function(){return this._startDate},endDate:function(){ +return this._endDate},_end:function(e){var t=x(this.endTime())||_;return e&&(t=0),new Date(this._endDate.getTime()+t)},nextDate:function(){return s.date.nextDay(this.endDate())},previousDate:function(){return s.date.previousDay(this.startDate())},calculateDateRange:function(){this._render([this.options.date])},destroy:function(){var e=this;e._currentTimeUpdateTimer&&clearInterval(e._currentTimeUpdateTimer),e.datesHeader&&e.datesHeader.off(C),e.element&&e.element.off(C),e.footer&&e.footer.remove(),u.fn.destroy.call(this),this._isMobile()&&e.options.editable&&(e.options.editable.create!==!1&&(e._addUserEvents.destroy(),e._allDayUserEvents.destroy()),e.options.editable.update!==!1&&e._editUserEvents.destroy())},inRange:function(e){var t,n,i,o,r=u.fn.inRange.call(this,e);return e.isAllDay?r:(t=x(this.startTime()),n=x(this.endTime())||s.date.MS_PER_DAY,i=x(e.start),o=x(e.end)||s.date.MS_PER_DAY,r&&t<=i&&o<=n)},selectionByElement:function(e){var t=e.offset();return this._slotByPosition(t.left,t.top)},_timeSlotInterval:function(){var e=this.options;return e.majorTick/e.minorTickCount*v},_timeSlotIndex:function(e){var t=this.options,n=x(e),i=x(this.startTime()),o=t.majorTick/t.minorTickCount*v;return(n-i)/o},_slotIndex:function(e,t){return t?this._dateSlotIndex(e):this._timeSlotIndex(e)},_dateSlotIndex:function(e,t){var n,o,r,a,l=this._dates||[],c=1;for(n=0,o=l.length;n<o;n++)if(r=s.date.getDate(l[n]),a=new Date(s.date.getDate(l[n]).getTime()+_-(t?0:1)),i(e,r,a))return n*c;return-1},_positionAllDayEvent:function(t,n){var i,o,r,a,s,l,c,d=n.innerWidth(),h=n.start.index,p=n.end.index,f=u.collidingEvents(n.events(),h,p),g=this._headerColumnCount||0,m=2,v=h!==p?5:4,_=this._allDayHeaderHeight,b=n.startSlot();for(t.css({left:b.offsetLeft+m,width:d-v}),n.addEvent({slotIndex:h,start:h,end:p,element:t}),f.push({slotIndex:h,start:h,end:p,element:t}),i=u.createRows(f),i.length&&i.length>g&&(this._headerColumnCount=i.length),o=n.start.offsetTop,r=0,a=i.length;r<a;r++)for(s=i[r].events,l=0,c=s.length;l<c;l++)e(s[l].element).css({top:o+r*_})},_arrangeColumns:function(e,t,n,i){var o,r,a,s,l,c,d,h,p,f,g,m,v=i.start;for(e={element:e,slotIndex:v.index,start:t,end:t+n},r=v.clientWidth,a=.1*r,l=i.events(),c=u.collidingEvents(l,e.start,e.end),i.addEvent(e),c.push(e),o=u.createColumns(c),d=(r-a)/o.length,h=0,p=o.length;h<p;h++)for(s=o[h].events,f=0,g=s.length;f<g;f++)m=d-4,s[f].element[0].style.width=(m>0?m:d)+"px",s[f].element[0].style.left=(this._isRtl?a:0)+v.offsetLeft+h*d+2+"px"},_positionEvent:function(e,t,n){var i=e._startTime||e.start,o=e._endTime||e.end,r=n.innerRect(i,o,!1),a=r.bottom-r.top-2;a<0&&(a=0),t.css({top:r.top,height:a}),this._arrangeColumns(t,r.top,t[0].clientHeight,n)},_createEventElement:function(t,n,o,r){var a,l,c,d,u,h,p=n?this.eventTemplate:this.allDayEventTemplate,g=this.options,v=g.editable,b=this._isMobile(),w=v&&v.destroy!==!1&&!b,k=v&&v.resize!==!1,y=m(this.startDate()),C=m(this.endDate()),S=x(this.startTime()),T=x(this.endTime()),D=t._time("start"),A=t._time("end");return S>=T&&(T=x(new Date(this.endTime().getTime()+_-1))),n||t.isAllDay||(C=new Date(C.getTime()+_)),l=t.start,c=t.end,t.isAllDay&&(c=m(t.end)),!i(m(l),y,C)&&!i(c,y,C)||n&&D<S&&A>T?a=!0:m(l)<y||n&&D<S?r=!0:(c>C&&!n||n&&A>T)&&(o=!0),d=this.eventResources(t),t._startTime&&D!==s.date.getMilliseconds(t.start)&&(l=new Date(D),l=s.timezone.apply(l,"Etc/UTC")),t._endTime&&A!==s.date.getMilliseconds(t.end)&&(c=new Date(A),c=s.timezone.apply(c,"Etc/UTC")),u=f({},{ns:s.ns,resizable:k,showDelete:w,middle:a,head:o,tail:r,singleDay:1==this._dates.length,resources:d,inverseColor:!1,messages:g.messages},t,{start:l,end:c}),h=e(p(u)),this.angular("compile",function(){return{elements:h,data:[{dataItem:u}]}}),h},_isInTimeSlot:function(e){var t,n=this.startTime(),i=this.endTime(),r=e._startTime||e.start,a=e._endTime||e.end;return x(i)===x(s.date.getDate(i))&&(i=s.date.getDate(i),d(i,_-1)),e._date("end")>e._date("start")&&(a=+e._date("end")+(_-1)),a=e._endTime?a-e._date("end"):x(new Date(a)),r=e._startTime?r-e._date("start"):x(new Date(r)),i=x(i),n=x(n),n===r&&r===a||(t=r!==i,o(r,n,i,t)||o(a,n,i,t)||o(n,r,a)||o(i,r,a))},_isInDateSlot:function(e){var t=this.groups[0],n=t.firstSlot().start,o=t.lastSlot().end-1,r=s.date.toUtcTime(e.start),a=s.date.toUtcTime(e.end);return(i(r,n,o)||i(a,n,o)||i(n,r,a)||i(o,r,a))&&(!i(a,n,n)||i(a,r,r)||e.isAllDay)},_updateAllDayHeaderHeight:function(e){var t,n;if(this._height!==e&&(this._height=e,t=this.element.find(".k-scheduler-header-all-day td"),t.length))for(t.parent().add(this.element.find(".k-scheduler-times-all-day").parent()).height(e),n=0;n<this.groups.length;n++)this.groups[n].refresh()},_renderEvents:function(e,t){var n,i,o,a,s,l,c,d,u,h,p,f,g,m,v,b,w,k,y,x,C,S=this.datesHeader.find(".k-scheduler-header-wrap > div"),T=this._isGroupedByDate();for(i=0,o=e.length;i<o;i++)if(n=e[i],this._isInDateSlot(n))if(a=n.isAllDay||n.duration()>=_,s=a&&!this._isVerticallyGrouped()?S:this.content,a){if(this.options.allDaySlot&&(p=this.groups[t],p._continuousEvents||(p._continuousEvents=[]),c=p.slotRanges(n),c.length))if(d=c[0],b=d.start.index,w=d.end.index,T&&b!==w)for(u=d.start.start,h=d.end.end,k=new Date(u),y=new Date(u),x=d.start.index;x<=d.end.index;x++)l=this._createEventElement(n,!a,x!==w,x!==b),C=p.daySlotRanges(k,y,!0)[0],y.setDate(y.getDate()+1),k.setDate(k.getDate()+1),this._positionAllDayEvent(l,C),r(p,C,l,!0),l.appendTo(s),this._inverseEventColor(l);else l=this._createEventElement(n,!a),this._positionAllDayEvent(l,c[0]),r(p,c[0],l,!0),l.appendTo(s),this._inverseEventColor(l)}else if(this._isInTimeSlot(n))for(p=this.groups[t],p._continuousEvents||(p._continuousEvents=[]),c=p.slotRanges(n),f=c.length,g=0;g<f;g++)d=c[g],u=n.start,h=n.end,f>1&&(0===g?h=d.end.endDate():g==f-1?u=d.start.startDate():(u=d.start.startDate(),h=d.end.endDate())),m=n.clone({start:u,end:h,_startTime:n._startTime,_endTime:n.endTime}),this._isInTimeSlot(m)&&(v=d.head,l=this._createEventElement(n,!a,v,d.tail),l.appendTo(s),this._inverseEventColor(l),this._positionEvent(m,l,d),r(p,d,l,!1))},render:function(t){var n,o,r,a;for(this._headerColumnCount=0,this._groups(),this.element.find(".k-event").remove(),t=new s.data.Query(t).sort([{field:"start",dir:"asc"},{field:"end",dir:"desc"}]).toArray(),n=[],this._eventsByResource(t,this.groupedResources,n),o=e.map(this._dates,function(t){return Math.max.apply(null,e.map(n,function(n){return e.grep(n,function(e){return e.isMultiDay()&&i(t,m(e.start),m(e.end))}).length}))}),r=Math.max.apply(null,o),this._updateAllDayHeaderHeight((r+1)*this._allDayHeaderHeight),a=0;a<n.length;a++)this._renderEvents(n[a],a);this.refreshLayout(),this._currentTime(!1),this.trigger("activate")},_eventsByResource:function(e,t,n){var i,o,r,a,l=t[0];if(l)for(i=l.dataSource.view(),o=0;o<i.length;o++)r=this._resourceValue(l,i[o]),a=new s.data.Query(e).filter({field:l.field,operator:u.groupEqFilter(r)}).toArray(),t.length>1?this._eventsByResource(a,t.slice(1),n):n.push(a);else n.push(e)},_columnOffsetForResource:function(e){return this._columnCountForLevel(e)/this._columnCountForLevel(e-1)},_columnCountForLevel:function(e){var t=this.columnLevels[e];return t?t.length:0},_rowCountForLevel:function(e){var t=this.rowLevels[e];return t?t.length:0},clearSelection:function(){this.content.add(this.datesHeader).find(".k-state-selected").removeAttr("id").attr("aria-selected",!1).removeClass("k-state-selected")},_updateDirection:function(e,t,n,i,o){var r=e.isAllDay,a=t[0].start,s=t[t.length-1].end;n&&(o?r||a.index!==s.index||a.collectionIndex!==s.collectionIndex||(e.backward=i):(r&&a.index===s.index||!r&&a.collectionIndex===s.collectionIndex)&&(e.backward=i))},_changeViewPeriod:function(e,t,n){var i,o,r,a,s,l,c,u,h,p,f,g,m;if(!n)return i=t?this.previousDate():this.nextDate(),o=e.start,r=e.end,a=this._isGroupedByDate()&&this._isVerticallyGrouped(),s=this.groups[e.groupIndex],l=t?s._timeSlotCollections:s._getCollections(s.daySlotCollectionCount()),c=l[l.length-1]._slots,u=t||s.daySlotCollectionCount()?c.length-1:0,p=new Date(i),f=new Date(i),!this._isInRange(p,f)&&(e.start=p,e.end=f,a?(g=new Date(c[u].startDate()),m=new Date(c[u].endDate()),h=x(m)?x(m):_,d(e.start,x(g)),d(e.end,h),s.daySlotCollectionCount()&&(e.isAllDay=!e.isAllDay)):(h=e.isAllDay||!x(r)?_:x(r),d(e.start,x(o)),d(e.end,h)),this._isVerticallyGrouped()||(e.groupIndex=t?this.groups.length-1:0),e.events=[],!0)}});f(!0,l,{MultiDayView:I,DayView:I.extend({options:{name:"DayView",title:"Day",selectedMobileDateFormat:"{0:MMM d}"},name:"day"}),WeekView:I.extend({options:{name:"WeekView",title:"Week",selectedDateFormat:"{0:D} - {1:D}",selectedShortDateFormat:"{0:d} - {1:d}"},name:"week",calculateDateRange:function(){var e,t,n=this.options.date,i=s.date.dayOfWeek(n,this.calendarInfo().firstDay,-1),o=[];for(e=0,t=7;e<t;e++)o.push(i),i=s.date.nextDay(i);this._render(o)}}),WorkWeekView:I.extend({options:{name:"WorkWeekView",title:"Work Week",selectedDateFormat:"{0:D} - {1:D}",selectedShortDateFormat:"{0:d} - {1:d}"},name:"workWeek",nextDate:function(){var e=s.date.dayOfWeek(s.date.nextDay(this.startDate()),this.calendarInfo().firstDay,1);return s.date.addDays(e,this._workDays[0])},previousDate:function(){var e=s.date.dayOfWeek(this.startDate(),this.calendarInfo().firstDay,-1),t=this._workDays;return s.date.addDays(e,t[t.length-1]-7)},calculateDateRange:function(){for(var e=this.options.date,t=s.date.dayOfWeek,n=t(e,this.calendarInfo().firstDay,-1),i=t(n,this.options.workWeekStart,1),o=t(i,this.options.workWeekEnd,1),r=[];i<=o;)r.push(i),i=s.date.nextDay(i);this._render(r)}})})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.scheduler.agendaview.min",["kendo.scheduler.view.min"],e)}(function(){return function(e){function t(e){var t,n,i=0;for(t=0,n=e.length;t<n;t++)i+=e[t].items.length;return i}function n(e,t){return e.valuePrimitive&&(t=r.getter(e.dataValueField)(t)),t}function i(e){for(var t,n=0,i=e.length,r=[];n<i;n++)t=e[n],t.groups?(t=o(t.groups),r=r.concat(t)):r=r.concat(o(t.items));return r}function o(e){for(var t=[].concat(e),n=t.shift(),i=[],o=[].push;n;)n.groups?o.apply(t,n.groups):n.items?o.apply(t,n.items):o.call(i,n),n=t.shift();return i}var r=window.kendo,a=r.ui,s=".kendoAgendaView",l='<div class="k-task" title="#:(data.title || "").replace(/"/g,"\'")#" data-#=kendo.ns#uid="#=uid#"># if (resources[0]) {#<span class="k-scheduler-mark" style="background-color:#=resources[0].color#"></span># } ## if (data.isException()) { #<span class="k-icon k-i-non-recurrence"></span># } else if (data.isRecurring()) {#<span class="k-icon k-i-reload"></span># } #<span class="k-scheduler-task-text">{0}</span>#if (showDelete) {#<a href="\\#" class="k-link k-event-delete" title="${data.messages.destroy}" aria-label="${data.messages.destroy}"><span class="k-icon k-i-close"></span></a>#}#</div>',c='# if (!isMobile) { #<strong class="k-scheduler-agendaday">#=kendo.toString(date, "dd")#</strong><em class="k-scheduler-agendaweek">#=kendo.toString(date,"dddd")#</em><span class="k-scheduler-agendadate">#=kendo.toString(date, "y")#</span># } else { #<div class="k-scheduler-datecolumn-wrap"><span class="k-mobile-scheduler-agendadate"><span class="k-mobile-scheduler-agendaday">#=kendo.toString(date, "dd")#</span> <span class="k-mobile-scheduler-agendamonth">#=kendo.toString(date, "MMMM")#</span></span><span class="k-mobile-scheduler-agendaweekday">#=kendo.toString(date, "dddd")#</span></div># } #',d='# if (!isMobile) { #<strong class="k-scheduler-adgendagroup">#=value#</strong># } else { #<span class="k-scheduler-group-text">#=value#</span># } #',u=r.Class.extend({init:function(e){this._view=e},_getColumns:function(e,t){return e.concat(t)},_getGroupsInDay:function(){return[]},_getSumOfItemsForDate:function(){return 0},_renderTaskGroupsCells:function(e,t,n,i){var o=this._view;0===n&&0===i&&t.length&&o._renderTaskGroupsCells(e,t)},_renderDateCell:function(e,t,n,i,o,a){var s=this._view,l=s._isMobile();e.push(r.format('<td class="k-scheduler-datecolumn{3}{2}" rowspan="{0}">{1}</td>',n.length,s._dateTemplate({date:i,isMobile:l}),o!=a.length-1||t.length?"":" k-last",t.length?"":" k-first"))},_renderDates:function(){},_getParents:function(e){return e.splice(0)},_getGroupsByDate:function(){},_renderTaskGroups:function(e,t,n){var i=this._view;e.append(i._renderTaskGroups(t,n))}}),h=r.Class.extend({init:function(e){this._view=e},_getColumns:function(e,t){var n,i,o=this._view;return o._isMobile()?e.concat(t):(n=t.slice(0,1),i=t.slice(1),n.concat(e).concat(i))},_compareDateGroups:function(e,t,n){return e[n].text==t[n].text&&(0===n||this._compareDateGroups(e,t,n-1))},_getGroupsInDay:function(e,t){var n,i,o,r,a,s=[],l=null;for(n=0;n<e.length;n++)for(i=0;i<e[n].items.length;i++){if(o=0,0===s.length)for(o;o<t[n].length;o++)s.push([1]);else for(o;o<t[n].length;o++)if(this._compareDateGroups(t[n],l,o))s[o][s[o].length-1]++;else{for(r=s[o][s[o].length-1]-1,a=0;a<r;a++)s[o].push(0);s[o].push(1)}l=t[n]}return s},_getSumOfItemsForDate:function(e){var t,n=0;for(t=0;t<e.length;t++)n+=e[t].items.length;return n},_renderTaskGroupsCells:function(e,t,n,i,o,a,s,l){var c,d=this._view,u=d._isMobile();if(u)0===n&&0===i&&t.length&&d._renderTaskGroupsCells(e,t);else for(0===n&&0===i&&e.push(r.format('<td class="k-scheduler-datecolumn k-first" rowspan="{0}">{1}</td>',a,d._dateTemplate({date:s,isMobile:u}))),c=0;c<t[n].length;c++)o[c][l]&&e.push(r.format('<td class="k-scheduler-groupcolumn" rowspan="{0}">{1}</td>',o[c][l],d._groupTemplate({value:t[n][c].text,isMobile:u}),t[n][c].className))},_renderDateCell:function(){},_renderDates:function(e){var t,n=this._view,i=n._groupsByDate.sort(function(e,t){return e.array[0].value.getTime()-t.array[0].value.getTime()});for(t=0;t<i.length;t++)e.append(n._renderTaskGroups(i[t].array,i[t].groups))},_getParents:function(e){return e.slice(0)},_getGroupsByDate:function(e,t,n){var i,o,r,a,s=this._view;if(e[t].items)for(i=0;i<e[t].items.length;i++){for(o=e[t].items[i].value,r=!1,a=0;a<s._groupsByDate.length;a++)s._groupsByDate[a].array[0].value.getTime()===o.getTime()&&(r=!0,s._groupsByDate[a].array.push(e[t].items[i]),s._groupsByDate[a].groups.push(n));r||s._groupsByDate.push({array:[e[t].items[i]],groups:[n]})}},_renderTaskGroups:function(){}});r.ui.scheduler.AgendaGroupedView=u,r.ui.scheduler.AgendaGroupedByDateView=h,a.AgendaView=a.SchedulerView.extend({init:function(t,n){a.SchedulerView.fn.init.call(this,t,n),this._groupedView=this._getGroupedView(),n=this.options,n.editable&&(n.editable=e.extend({"delete":!0},n.editable,{create:!1,update:!1},{messages:n.messages})),this.title=n.title,this._eventTemplate=this._eventTmpl(n.eventTemplate,l),this._dateTemplate=r.template(n.eventDateTemplate),this._groupTemplate=r.template(n.eventGroupTemplate),this._timeTemplate=r.template(n.eventTimeTemplate),this.element.on("mouseenter"+s,".k-scheduler-agenda .k-scheduler-content tr","_mouseenter").on("mouseleave"+s,".k-scheduler-agenda .k-scheduler-content tr","_mouseleave").on("click"+s,".k-scheduler-agenda .k-scheduler-content .k-link:has(.k-i-close)","_remove"),this._renderLayout(n.date)},name:"agenda",_getGroupedView:function(){return this._isGroupedByDate()?new r.ui.scheduler.AgendaGroupedByDateView(this):new r.ui.scheduler.AgendaGroupedView(this)},_mouseenter:function(t){e(t.currentTarget).addClass("k-state-hover")},_mouseleave:function(t){e(t.currentTarget).removeClass("k-state-hover")},_remove:function(t){t.preventDefault(),this.trigger("remove",{uid:e(t.currentTarget).closest(".k-task").attr(r.attr("uid"))})},nextDate:function(){return r.date.nextDay(this.startDate())},startDate:function(){return this._startDate},endDate:function(){return this._endDate},previousDate:function(){return r.date.previousDay(this.startDate())},_renderLayout:function(e){this._startDate=e,this._endDate=r.date.addDays(e,7),this.createLayout(this._layout()),this._footer(),this.table.addClass("k-scheduler-agenda")},_layout:function(){var e,t,n,i=[{text:this.options.messages.time,className:"k-scheduler-timecolumn"},{text:this.options.messages.event}];if(this._isMobile()||i.splice(0,0,{text:this.options.messages.date,className:"k-scheduler-datecolumn"}),e=this.groupedResources,e.length){for(t=[],n=0;n<e.length;n++)t.push({text:"",className:"k-scheduler-groupcolumn"});i=this._groupedView._getColumns(t,i)}return{columns:i}},_tasks:function(e){var t,n,i,o,a,s,l,c=[];for(t=0;t<e.length;t++)if(n=e[t],i=n.start,o=n.isAllDay?r.date.getDate(n.end):n.end,a=Math.ceil((o-r.date.getDate(i))/r.date.MS_PER_DAY),n.isAllDay&&(a+=1),s=n.clone(),s.startDate=r.date.getDate(i),s.startDate>=this.startDate()&&c.push(s),a>1)for(s.end=r.date.nextDay(i),s.head=!0,l=1;l<a;l++)i=s.end,s=n.clone(),s.start=s.startDate=r.date.getDate(i),s.end=r.date.nextDay(i),l==a-1?(s.end=new Date(s.start.getFullYear(),s.start.getMonth(),s.start.getDate(),o.getHours(),o.getMinutes(),o.getSeconds(),o.getMilliseconds()),s.tail=!0):(s.isAllDay=!0,s.middle=!0),(r.date.getDate(s.end)<=this.endDate()&&s.start>=this.startDate()||r.date.getDate(s.start).getTime()==this.endDate().getTime())&&c.push(s);return new r.data.Query(c).sort([{field:"start",dir:"asc"},{field:"end",dir:"asc"}]).groupBy({field:"startDate"}).toArray()},_renderTaskGroups:function(e,t){var n,i,o,a,s,l,c,d,u=[],h=this.options.editable,p=h&&h.destroy!==!1&&!this._isMobile(),f=this._isMobile(),g=this._groupedView._getSumOfItemsForDate(e),m=this._groupedView._getGroupsInDay(e,t),v=0;for(n=0;n<e.length;n++)for(i=e[n].value,o=e[n].items,a=r.date.isToday(i),s=0;s<o.length;s++)l=o[s],c=[],d=f?[]:c,this._groupedView._renderTaskGroupsCells(d,t,n,s,m,g,i,v),v++,0===s&&(f?(d.push(r.format('<td class="k-scheduler-datecolumn {1}" colspan="2">{0}</td>',this._dateTemplate({date:i,isMobile:f}),this.groupedResources.length?"":"k-first")),u.push('<tr role="row" aria-selected="false"'+(a?' class="k-today">':">")+d.join("")+"</tr>")):this._groupedView._renderDateCell(c,t,o,i,n,e)),l.format=l.head?"{0:t}":l.tail?"{1:t}":"{0:t}-{1:t}",l.resources=this.eventResources(l),c.push(r.format('<td class="k-scheduler-timecolumn {4}"><div>{0}{1}{2}</div></td><td>{3}</td>',l.tail||l.middle?'<span class="k-icon k-i-arrow-60-left"></span>':"",this._timeTemplate(l.clone({start:l._startTime||l.start,end:l.endTime||l.end})),l.head||l.middle?'<span class="k-icon k-i-arrow-60-right"></span>':"",this._eventTemplate(l.clone({showDelete:p,messages:this.options.messages})),!this.groupedResources.length&&f?"k-first":"")),u.push('<tr role="row" aria-selected="false"'+(a?' class="k-today">':">")+c.join("")+"</tr>");return u.join("")},_renderTaskGroupsCells:function(e,t){var n,i=this._isMobile();for(n=0;n<t.length;n++)e.push(r.format('<td class="k-scheduler-groupcolumn{2}" rowspan="{0}">{1}</td>',t[n].rowSpan,this._groupTemplate({value:t[n].text,isMobile:i}),t[n].className))},render:function(e){var t,n,o=this.content.find("table").empty(),r=[];e.length>0&&(t=this.groupedResources,t.length?(r=this._createGroupConfiguration(e,t,null),this._groupsByDate=[],this._renderGroups(r,o,[]),this._groupedView._renderDates(o)):(r=this._tasks(e),o.append(this._renderTaskGroups(r,[])))),n=this._eventsList=i(r),this._angularItems(o,n),this.refreshLayout(),this.trigger("activate")},_angularItems:function(e,t){this.angular("compile",function(){var n=[],i=t.map(function(t){return n.push({dataItem:t}),e.find(".k-task["+r.attr("uid")+"="+t.uid+"]")});return{elements:i,data:n}})},_renderGroups:function(e,t,n){var i,o,r;for(i=0,o=e.length;i<o;i++)r=this._groupedView._getParents(n),r.push(e[i]),this._groupedView._getGroupsByDate(e,i,r),e[i].groups?this._renderGroups(e[i].groups,t,r):this._groupedView._renderTaskGroups(t,e[i].items,r)},_createGroupConfiguration:function(e,i,o){var s,l,c,d,u,h,p,f=i[0],g=[],m=f.dataSource.view(),v=this._isMobile();for(s=0;s<m.length;s++)l=n(f,m[s]),c=new r.data.Query(e).filter({field:f.field,operator:a.SchedulerView.groupEqFilter(l)}).toArray(),c.length&&(d=this._tasks(c),u=o?"":" k-first",s===m.length-1&&(!o||o.className.indexOf("k-last")>-1)&&(u+=" k-last"),h={text:r.getter(f.dataTextField)(m[s]),value:l,rowSpan:0,className:u},i.length>1?(h.groups=this._createGroupConfiguration(c,i.slice(1),h),o&&(o.rowSpan+=h.rowSpan)):(h.items=d,p=t(h.items),v&&(p+=h.items.length),h.rowSpan=p,o&&(o.rowSpan+=p)),g.push(h));return g},selectionByElement:function(t){var n,i,o;if(t=e(t),!t.hasClass("k-scheduler-datecolumn")&&this._eventsList.length)return t.is(".k-task")&&(t=t.closest("td")),this._isMobile()?(o=t.parent(),n=o.parent().children().filter(function(){return e(this).children(":not(.k-scheduler-datecolumn)").length}).index(o)):n=t.parent().index(),i=this._eventsList[n],{index:n,start:i.start,end:i.end,isAllDay:i.isAllDay,uid:i.uid}},select:function(e){this.clearSelection();var t=this.table.find(".k-task").eq(e.index).closest("tr").addClass("k-state-selected").attr("aria-selected",!0)[0];this.current(t)},move:function(e,t){var n,i=!1,o=e.index;return t==r.keys.UP?(o--,i=!0):t==r.keys.DOWN&&(o++,i=!0),i&&(n=this._eventsList[o],n&&(e.start=n.start,e.end=n.end,e.isAllDay=n.isAllDay,e.events=[n.uid],e.index=o)),i},moveToEvent:function(){return!1},constrainSelection:function(e){var t=this._eventsList[0];t&&(e.start=t.start,e.end=t.end,e.isAllDay=t.isAllDay,e.events=[t.uid],e.index=0)},isInRange:function(){return!0},destroy:function(){this.element&&this.element.off(s),a.SchedulerView.fn.destroy.call(this)},options:{title:"Agenda",name:"agenda",editable:!0,selectedDateFormat:"{0:D}-{1:D}",selectedShortDateFormat:"{0:d} - {1:d}",selectedMobileDateFormat:"{0: MMM} {0:dd} - {1:dd}",eventTemplate:"#:title#",eventTimeTemplate:"#if(data.isAllDay) {##=this.options.messages.allDay##} else { ##=kendo.format(format, start, end)## } #",eventDateTemplate:c,eventGroupTemplate:d,messages:{event:"Event",date:"Date",time:"Time",allDay:"all day"}}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.scheduler.monthview.min",["kendo.scheduler.view.min"],e)}(function(){return function(e){function t(e,t){return e.slice(t).concat(e.slice(0,t))}function n(e,t){for(var n=t.firstDay,i=new Date(e.getFullYear(),e.getMonth(),0,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds());i.getDay()!=n;)o.date.setTime(i,-1*d);return i}function i(e,t,n){var i,o=t,r=n;return i=e,i>=o&&i<=r}var o=window.kendo,r=o.ui,a=r.SchedulerView,s=".kendoMonthView",l=e.extend,c=o.date.getDate,d=o.date.MS_PER_DAY,u=6,h=7,p="k-event-inverse",f=o.template('<span class="k-link k-nav-day">#:kendo.toString(date, "dd")#</span>'),g='<div role="gridcell" aria-selected="false" data-#=ns#uid="#=uid#"#if (resources[0]) { #style="background-color:#=resources[0].color #; border-color: #=resources[0].color#"class="k-event"#} else {#class="k-event"#}#><span class="k-event-actions"># if(data.tail || data.middle) {#<span class="k-icon k-i-arrow-60-left"></span>#}## if(data.isException()) {#<span class="k-icon k-i-non-recurrence"></span># } else if(data.isRecurring()) {#<span class="k-icon k-i-reload"></span>#}#</span>{0}<span class="k-event-actions">#if (showDelete) {#<a href="\\#" class="k-link k-event-delete" title="${data.messages.destroy}" aria-label="${data.messages.destroy}"><span class="k-icon k-i-close"></span></a>#}## if(data.head || data.middle) {#<span class="k-icon k-i-arrow-60-right"></span>#}#</span># if(resizable && !data.tail && !data.middle) {#<span class="k-resize-handle k-resize-w"></span>#}## if(resizable && !data.head && !data.middle) {#<span class="k-resize-handle k-resize-e"></span>#}#</div>',m=o.template('<div title="#=title.replace(/"/g,"&\\#34;")#"><div class="k-event-template">#:title#</div></div>'),v=o.template('<div style="width:#=width#px;left:#=left#px;top:#=top#px" class="k-more-events k-button"><span>...</span></div>'),_=o.Class.extend({init:function(e){this._view=e},_verticalRowCountForLevel:function(e){var t=this._view;return t._rowCountForLevel(e)},_horizontalGroupCountForLevel:function(e){var t=this._view;return t._columnCountForLevel(e)},_getCalendarRowsLength:function(e,t){return t/e},_createRows:function(e,t,n,i){var o,r=this._view,a=h,s=r._isVerticallyGrouped(),l="";for(o=0;o<n;o++)l+=r._createRow(e,t,a,s?i:o);return l},_adjustStartDate:function(e){return o.date.addDays(e,h)},_getContent:function(e,t,n){return e({date:t,resources:n})},_getTimeSlotByPosition:function(e,t,n){var i=this._view.groups[n];return i.daySlotByPosition(e,t)},_nextSlotStartDate:function(e){return o.date.nextDay(e)},_createRowsLayout:function(e,t,n){var i=this._view;return i._createRowsLayout(e,t,n)},_createVerticalColumnsLayout:function(e,t,n,i){return i},_createColumnsLayout:function(e,t,n){var i=this._view;return i._createColumnsLayout(e,t,n)},_verticalGroupCount:function(e){var t=this._view;return t._rowCountForLevel(e)},_horizontalGroupCount:function(e){var t=this._view;return t._columnCountForLevel(e)/t._columnOffsetForResource(e)},_positionEvent:function(e,t,n,i,o,r,a){var s,l=this._view,c=l._isMobile();i>1&&(0===a?r=n.end.endDate():a==i-1?o=n.start.startDate():(o=n.start.startDate(),r=n.end.endDate())),s=e.clone({start:o,end:r,head:n.head,tail:n.tail}),c?l._positionMobileEvent(n,l._createEventElement(s),t):l._positionEvent(n,l._createEventElement(s),t)},_addDaySlotCollections:function(e,t,n){var i,r,a,s,l,c,d,p,f,g,m,v=this._view,_=h,b=u;for(i=0;i<e;i++)for(r=0,a=0,v._isVerticallyGrouped()&&(a=i),s=a*b;s<(a+1)*b;s++)for(l=v.groups[i],c=l.addDaySlotCollection(o.date.addDays(n,r),o.date.addDays(n,r+_)),d=t[s],p=d.children,f=0,d.setAttribute("role","row"),v._isVerticallyGrouped()||(f=i),g=f*_;g<(f+1)*_;g++)m=p[g],v.addDaySlot(c,m,n,r),r++},_changePeriodGroupIndex:function(e){var t=this._view;return e?t.groups.length-1:0},_createResizeHint:function(e){var t=this._view,n=e.startSlot().offsetLeft,i=e.start.offsetTop,o=e.innerWidth(),r=e.start.clientHeight-2,s=a.fn._createResizeHint.call(t,n,i,o,r);t._appendResizeHint(s)},_createMoveHint:function(e,t){var n=this._view,i=e.startSlot(),o=e.endSlot(),r=n._createEventElement(t.clone({head:e.head,tail:e.tail}));r.css({left:i.offsetLeft+2,top:i.offsetTop+i.firstChildHeight,height:n.options.eventHeight,width:e.innerWidth()-(i.index!==o.index?5:4)}),r.addClass("k-event-drag-hint"),t.inverseColor&&r.addClass(p),n._appendMoveHint(r)}}),b=o.Class.extend({init:function(e){this._view=e},_verticalRowCountForLevel:function(){return 1},_horizontalGroupCountForLevel:function(e){var t=this._view;return t._columnCountForLevel(e+1)/h},_createRows:function(e,t,n){var i,r,a=this._view,s=h,l=a._isVerticallyGrouped(),c="",d=0;if(l){for(i=new Date(e),r=a._groupCount(),d;d<u;d++)c+=a._createRow(i,t,r,d),i=o.date.addDays(i,s);e=o.date.nextDay(e)}else{for(d;d<s;d++)c+=a._createRow(e,t,n,d),e=o.date.nextDay(e);e=o.date.addDays(e,s)}return c},_adjustStartDate:function(e,t){var n=this._view,i=n._isVerticallyGrouped();return i?t?o.date.addDays(e,h*(u-1)+1):o.date.nextDay(e):o.date.addDays(e,h)},_getContent:function(e,t,n,i){return 0===i?e({date:t,resources:n}):""},_getTimeSlotByPosition:function(e,t,n){var i=this._view.groups[n];return i.daySlotByPosition(e,t,!0)},_nextSlotStartDate:function(e){return e},_getCalendarRowsLength:function(){var e=this._view,t=e._isVerticallyGrouped();return t?h:u},_createRowsLayout:function(e,t,n,i){var o=this._view;return o._createDateLayout(i,null,!1)},_createVerticalColumnsLayout:function(e,t,n){var i,r,a=this._view,s=e[0],l=[],c=s.dataSource.view();for(i=0;i<c.length*u;i++)r={text:n({text:o.htmlEncode(o.getter(s.dataTextField)(c[i%c.length])),color:o.getter(s.dataColorField)(c[i%c.length]),field:s.field,title:s.title,name:s.name,value:o.getter(s.dataValueField)(c[i%c.length])}),className:"k-slot-cell"},r.columns=a._createColumnsLayout(e.slice(1),null,n),l.push(r);return l},_createColumnsLayout:function(e,t,n,i){var o=this._view;return o._createColumnsLayout(e,t,n,i,!0)},_verticalGroupCount:function(e){var t=this._view;return t._columnCountForLevel(e)/u},_horizontalGroupCount:function(e){var t=this._view;return t._columnCountForLevel(e)/h},_positionEvent:function(e,t,n,i,o,r){var a,s,l,c,d=this._view,u=n.start.index,h=n.end.index,p=d._isMobile();for(a=n.start.index;a<=n.end.index;a++)s=n.collection._slots[a],l=t.daySlotRanges(s.start,s.start,!0)[0],c=e.clone({start:a===u?o:s.startDate(),end:a===h?r:s.endDate(),head:a!==h||n.head,tail:a!==u||n.tail}),p?d._positionMobileEvent(l,d._createEventElement(c),t):d._positionEvent(l,d._createEventElement(c),t)},_addDaySlotCollections:function(e,t,n){var i,r,a,s,l,c,d,p,f,g,m,v,_,b,w=this._view,k=h,y=u,x=w._isVerticallyGrouped();for(i=0;i<k;i++)for(r=0;r<y;r++)for(a=0,s=x?i:r,l=t[s],c=l.children,d=0,l.setAttribute("role","row"),w._isVerticallyGrouped()||(d=i),p=d*e;p<(d+1)*e;p++)f=r*k+i,g=x?p+r*e:p,m=c[g],v=x?p:a,_=w.groups[v],b=0===i?_.addDaySlotCollection(o.date.addDays(n,f),o.date.addDays(n,f+k)):_._daySlotCollections[r],w.addDaySlot(b,m,n,f),a++},_changePeriodGroupIndex:function(e,t,n){var i=this._view;return t&&i._isVerticallyGrouped()?e?i.groups.length-1:0:n},_createResizeHint:function(e){var t,n,i,o,r,s,l,c=this._view;if(c._isVerticallyGrouped())t=e.startSlot().offsetLeft,n=e.start.offsetTop,i=e.startSlot().offsetWidth,o=e.endSlot().offsetTop+e.startSlot().offsetHeight-e.startSlot().offsetTop-2,r=a.fn._createResizeHint.call(c,t,n,i,o),c._appendResizeHint(r);else for(s=e.startSlot().index;s<=e.endSlot().index;s++)l=e.collection._slots[s],t=l.offsetLeft,n=l.offsetTop,i=l.offsetWidth,o=l.offsetHeight-2,r=a.fn._createResizeHint.call(c,t,n,i,o),c._appendResizeHint(r)},_createMoveHint:function(e,t){var n,i,o,r=this._view,a=e.startSlot(),s=e.endSlot();for(n=a.index;n<=s.index;n++)i=e.collection._slots[n],o=r._createEventElement(t.clone({head:e.head,tail:e.tail})),o.css({left:i.offsetLeft,top:i.offsetTop+i.firstChildHeight,height:r.options.eventHeight,width:i.offsetWidth-2}),o.addClass("k-event-drag-hint"),t.inverseColor&&o.addClass(p),r._appendMoveHint(o)}});o.ui.scheduler.MonthGroupedView=_,o.ui.scheduler.MonthGroupedByDateView=b,r.MonthView=a.extend({init:function(e,t){var n=this;a.fn.init.call(n,e,t),n._groupedView=n._getGroupedView(),n.title=n.options.title,n._templates(),n._editable(),n._renderLayout(n.options.date),n._groups()},name:"month",_getGroupedView:function(){return this._isGroupedByDate()?new o.ui.scheduler.MonthGroupedByDateView(this):new o.ui.scheduler.MonthGroupedView(this)},_updateDirection:function(e,t,n,i,o){var r,a,s,l,c;n&&(r=t[0].start,a=t[t.length-1].end,s=r.index===a.index,l=r.collectionIndex===a.collectionIndex,c=o?s&&l||l:s&&l,c&&(e.backward=i))},_changeDate:function(e,t,n){var i,o,r,a=this.groups[e.groupIndex];if(n){if(i=a._getCollections(a.daySlotCollectionCount()),o=t.collectionIndex-1,o>=0)return i[o]._slots[i[o]._slots.length-1]}else if(i=a._getCollections(a.daySlotCollectionCount()),o=t.collectionIndex+1,r=0,i[o]&&i[o]._slots[r])return i[o]._slots[r]},_getNextHorizontalRange:function(e,t,n){var i=this._isVerticallyGrouped();return n.startSlot=e[t](n.startSlot,i),n.endSlot=e[t](n.endSlot,i),n},_getNextVerticalRange:function(e,t,n,i){var o=this._isVerticallyGrouped()&&this._isGroupedByDate();return n.startSlot=e[t](n.startSlot,i,o),n.endSlot=e[t](n.endSlot,i,o),n},_changeViewPeriod:function(e,t,n){var i,r,a=n?7:1;return t&&(a*=-1),i=o.date.addDays(e.start,a),r=o.date.addDays(e.end,a),!this._isInRange(i,r)&&(e.start=i,e.end=r,(!n||n&&this._isVerticallyGrouped())&&(e.groupIndex=this._groupedView._changePeriodGroupIndex(t,n,e.groupIndex)),e.events=[],!0)},_continuousSlot:function(e,t,n){var i=e.backward?0:t.length-1,o=this.groups[e.groupIndex];return o.continuousSlot(t[i].start,n)},_changeGroupContinuously:function(e,t,n,i){var o,r,a,s;return n||(o=e.groupIndex,r=this.groups.length-1,a=this._isVerticallyGrouped(),s=this.groups[o],!t&&a?(t=s[i?"lastSlot":"firstSlot"](),o+=i?-1:1):t&&!a&&(o=i?r:0),(o<0||o>r)&&(o=i?r:0,t=null),e.groupIndex=o),t},_normalizeHorizontalSelection:function(e,t,n){var i;return i=n?t[0].start:t[t.length-1].end}, +_normalizeVerticalSelection:function(e,t){var n;return n=e.backward?t[0].start:t[t.length-1].end},_templates:function(){var e=this.options,t=l({},o.Template,e.templateSettings);this.eventTemplate=this._eventTmpl(e.eventTemplate,g),this.dayTemplate=o.template(e.dayTemplate,t),this.groupHeaderTemplate=o.template(e.groupHeaderTemplate,t)},dateForTitle:function(){return o.format(this.options.selectedDateFormat,this._firstDayOfMonth,this._lastDayOfMonth)},shortDateForTitle:function(){return o.format(this.options.selectedShortDateFormat,this._firstDayOfMonth,this._lastDayOfMonth)},mobileDateForTitle:function(){return o.format(this.options.selectedMobileDateFormat,this._firstDayOfMonth,this._lastDayOfMonth)},nextDate:function(){return o.date.nextDay(this._lastDayOfMonth)},previousDate:function(){return o.date.previousDay(this._firstDayOfMonth)},startDate:function(){return this._startDate},endDate:function(){return this._endDate},_renderLayout:function(t){var i=this;this._firstDayOfMonth=o.date.firstDayOfMonth(t),this._lastDayOfMonth=o.date.lastDayOfMonth(t),this._startDate=n(t,this.calendarInfo()),this.createLayout(this._layout()),this._content(),this.refreshLayout(),this.content.on("click"+s,".k-nav-day,.k-more-events",function(t){var n=e(t.currentTarget).offset(),o=i._slotByPosition(n.left,n.top);t.preventDefault(),i.trigger("navigate",{view:"day",date:o.startDate()})}),this._footer()},_editable:function(){this.options.editable&&(this._isMobile()?this._touchEditable():this._mouseEditable())},_mouseEditable:function(){var t=this;t.element.on("click"+s,".k-scheduler-monthview .k-event a:has(.k-i-close)",function(n){t.trigger("remove",{uid:e(this).closest(".k-event").attr(o.attr("uid"))}),n.preventDefault()}),t.options.editable.create!==!1&&t.element.on("dblclick"+s,".k-scheduler-monthview .k-scheduler-content td",function(n){var i,o=e(n.currentTarget).offset(),r=t._slotByPosition(o.left,o.top);r&&(i=t._resourceBySlot(r),t.trigger("add",{eventInfo:l({isAllDay:!0,start:r.startDate(),end:r.startDate()},i)})),n.preventDefault()}),t.options.editable.update!==!1&&t.element.on("dblclick"+s,".k-scheduler-monthview .k-event",function(n){t.trigger("edit",{uid:e(this).closest(".k-event").attr(o.attr("uid"))}),n.preventDefault()})},_touchEditable:function(){var t=this,n=0;o.support.mobileOS.android&&(n=5),t.options.editable.create!==!1&&(t._addUserEvents=new o.UserEvents(t.element,{threshold:n,useClickAsTap:!o.support.browser.edge,filter:".k-scheduler-monthview .k-scheduler-content td",tap:function(n){var i,o,r;t._scrolling||(i=e(n.target).offset(),o=t._slotByPosition(i.left,i.top),o&&(r=t._resourceBySlot(o),t.trigger("add",{eventInfo:l({isAllDay:!0,start:o.startDate(),end:o.startDate()},r)})),n.preventDefault())}}))},selectionByElement:function(t){var n=e(t).offset();return this._slotByPosition(n.left,n.top)},_columnCountForLevel:function(e){var t=this.columnLevels[e];return t?t.length:0},_rowCountForLevel:function(e){var t=this.rowLevels[e];return t?t.length:0},_content:function(){var e,t="<tbody>",n=1,i=this._groupedView,o=this.groupedResources;for(o.length&&this._isVerticallyGrouped()&&(n=i._verticalRowCountForLevel(o.length-1)),e=0;e<n;e++)t+=this._createCalendar(e);t+="</tbody>",this.content.find("table").html(t)},_createCalendar:function(e){var t,n,i,r=this.startDate(),a=h*u,s=h,l=[r],c="",d=1,p=this._isVerticallyGrouped(),f=this._groupedView,g=this.groupedResources;for(g.length&&(p||(d=f._horizontalGroupCountForLevel(g.length-1))),this._slotIndices={},t=f._getCalendarRowsLength(s,a),n=0;n<t;n++)c+="<tr>",l.push(r),i=n*s,c+=f._createRows(r,i,d,e),r=f._adjustStartDate(r,n===t-1),c+="</tr>";return this._weekStartDates=l,this._endDate=o.date.previousDay(r),c},_createRow:function(e,t,n,i){var r,a=this,s=a._firstDayOfMonth,l=a._lastDayOfMonth,d=a.dayTemplate,u="",h="",p=this._groupedView,f=function(){return a._resourceBySlot({groupIndex:i})};for(r=0;r<n;r++)u="",o.date.isToday(e)&&(u+="k-today"),o.date.isInDateRange(e,s,l)||(u+=" k-other-month"),h+="<td ",""!==u&&(h+='class="'+u+'"'),h+=">",h+=p._getContent(d,e,f,r),h+="</td>",a._slotIndices[c(e).getTime()]=t+r,e=p._nextSlotStartDate(e);return h},_layout:function(){var n,i,o,r=this.calendarInfo(),a=this._isMobile()?r.days.namesShort.map(function(e){return e[0]}):r.days.names,s=t(a,r.firstDay),l=e.map(s,function(e){return{text:e}}),c=this.groupedResources,d=this._groupedView;if(c.length)if(this._isVerticallyGrouped()){for(i=[],o=0;o<6;o++)i.push({text:"<div> </div>",className:"k-hidden k-slot-cell"});n=d._createRowsLayout(c,i,this.groupHeaderTemplate,l),l=d._createVerticalColumnsLayout(c,i,this.groupHeaderTemplate,l)}else l=d._createColumnsLayout(c,l,this.groupHeaderTemplate,l);return{columns:l,rows:n}},_createEventElement:function(t){var n,i=this.options,r=i.editable,a=this._isMobile();return t.showDelete=r&&r.destroy!==!1&&!a,t.resizable=r&&r.resize!==!1&&!a,t.ns=o.ns,t.resources=this.eventResources(t),t.inverseColor=!1,t.messages=i.messages||{destroy:"Delete"},n=e(this.eventTemplate(t)),this.angular("compile",function(){return{elements:n,data:[{dataItem:t}]}}),n},_isInDateSlot:function(e){var t=this.groups[0],n=t.firstSlot().start,r=t.lastSlot().end-1,a=o.date.toUtcTime(e.start),s=o.date.toUtcTime(e.end);return(i(a,n,r)||i(s,n,r)||i(n,a,s)||i(r,a,s))&&(!i(s,n,n)||i(s,a,a)||e.isAllDay)},_slotIndex:function(e){return this._slotIndices[c(e).getTime()]},_positionMobileEvent:function(t,n,i){var r,s,l,c,d,u,h,p=t.start;t.start.offsetLeft>t.end.offsetLeft&&(p=t.end),r=t.start.index,s=r,l=3,c=a.collidingEvents(t.events(),r,s),c.push({element:n,start:r,end:s}),d=a.createRows(c),u=t.collection.at(r),h=u.container,h||(h=e(o.format('<div class="k-events-container" style="top:{0};left:{1};width:{2}"/>',p.offsetTop+p.firstChildTop+p.firstChildHeight+"px",p.offsetLeft+"px",p.offsetWidth+"px")),u.container=h,this.content[0].appendChild(h[0])),d.length<=l&&(t.addEvent({element:n,start:r,end:s,groupIndex:p.groupIndex}),i._continuousEvents.push({element:n,uid:n.attr(o.attr("uid")),start:t.start,end:t.end}),h[0].appendChild(n[0]))},_positionEvent:function(t,n,i){var r,s,l,c,d,u,h,p,f,g,m,_,b,w,k,y=this.options.eventHeight,x=t.start;for(t.start.offsetLeft>t.end.offsetLeft&&(x=t.end),r=t.start.index,s=t.end.index,l=x.eventCount,c=a.collidingEvents(t.events(),r,s),d=r!==s?5:4,c.push({element:n,start:r,end:s}),u=a.createRows(c),h=0,p=Math.min(u.length,l);h<p;h++)for(f=u[h].events,g=x.offsetTop+x.firstChildTop+x.firstChildHeight+h*y+3*h+"px",m=0,_=f.length;m<_;m++)f[m].element[0].style.top=g;if(u.length>l)for(b=r;b<=s;b++)w=t.collection,k=w.at(b),k.more||(k.more=e(v({ns:o.ns,start:b,end:b,width:k.clientWidth-2,left:k.offsetLeft+2,top:k.offsetTop+k.firstChildTop+k.firstChildHeight+l*y+3*l})),this.content[0].appendChild(k.more[0]));else t.addEvent({element:n,start:r,end:s,groupIndex:x.groupIndex}),n[0].style.width=t.innerWidth()-d+"px",n[0].style.left=x.offsetLeft+2+"px",n[0].style.height=y+"px",i._continuousEvents.push({element:n,uid:n.attr(o.attr("uid")),start:t.start,end:t.end}),n.appendTo(this.content),this._inverseEventColor(n)},_slotByPosition:function(e,t){var n,i,o=this.content.offset();for(e-=o.left,t-=o.top,t+=this.content[0].scrollTop,e+=this.content[0].scrollLeft,e=Math.ceil(e),t=Math.ceil(t),n=0;n<this.groups.length;n++)if(i=this._groupedView._getTimeSlotByPosition(e,t,n))return i;return null},_appendResizeHint:function(e){e.appendTo(this.content),this._resizeHint=this._resizeHint.add(e)},_updateResizeHint:function(e,t,n,i){var r,a,s;for(this._removeResizeHint(),r=this.groups[t],a=r.ranges(n,i,!0,e.isAllDay),s=0;s<a.length;s++)this._groupedView._createResizeHint(a[s]);this._resizeHint.find(".k-label-top,.k-label-bottom").text(""),this._resizeHint.first().addClass("k-first").find(".k-label-top").text(o.toString(o.timezone.toLocalDate(n),"M/dd")),this._resizeHint.last().addClass("k-last").find(".k-label-bottom").text(o.toString(o.timezone.toLocalDate(i),"M/dd"))},_updateMoveHint:function(e,t,n){var i,r=o.date.toUtcTime(e.start)+n,a=r+e.duration(),s=this.groups[t],l=s.ranges(r,a,!0,e.isAllDay);for(this._removeMoveHint(e.uid),i=0;i<l.length;i++)this._groupedView._createMoveHint(l[i],e)},_appendMoveHint:function(e){e.appendTo(this.content),this._moveHint=this._moveHint.add(e)},_groups:function(){var e,t=this._groupCount(),n=this.content[0].getElementsByTagName("tr"),i=this.startDate();for(this.groups=[],e=0;e<t;e++)this._addResourceView(e);this._groupedView._addDaySlotCollections(t,n,i)},addDaySlot:function(e,t,n,i){var r,a=t.clientHeight,s=t.children.length?t.children[0].offsetHeight+3:0,l=o.date.addDays(n,i),c=o.date.MS_PER_DAY;n.getHours()!==l.getHours()&&(c+=(n.getHours()-l.getHours())*o.date.MS_PER_HOUR),l=o.date.toUtcTime(l),c+=l,r=Math.floor((a-s-this.options.moreButtonHeight)/(this.options.eventHeight+3)),t.setAttribute("role","gridcell"),t.setAttribute("aria-selected",!1),e.addDaySlot(t,l,c,r)},render:function(e){this.content.children(".k-event,.k-more-events,.k-events-container").remove(),this._groups(),e=new o.data.Query(e).sort([{field:"start",dir:"asc"},{field:"end",dir:"desc"}]).toArray();var t=this.groupedResources;t.length?this._renderGroups(e,t,0,1):this._renderEvents(e,0),this.refreshLayout(),this.trigger("activate")},_renderEvents:function(e,t){var n,i,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b;for(i=0,r=e.length;i<r;i++)if(n=e[i],this._isInDateSlot(n))if(c=this.groups[t],d=this._groupedView._view,u=d._isMobile(),c._continuousEvents||(c._continuousEvents=[]),h=c.slotRanges(n,!0),p=h.length,u)for(a=h[0],s=a.start.start,l=a.end.end,f=new Date(a.start.start),g=h[h.length-1].end.end,m=new Date(f),v=new Date(l);f.getTime()<=g&&n.end>=o.timezone.toLocalDate(f)&&n.start<=o.timezone.toLocalDate(g);)_=c.daySlotRanges(m.getTime(),v.getTime(),!0)[0],v.setDate(v.getDate()+1),m.setDate(m.getDate()+1),_&&(_.head=null,_.middle=null,_.tail=null,this._groupedView._positionEvent(n,c,_,1,s,l,0)),f=o.date.addDays(f,1);else for(b=0;b<p;b++)a=h[b],s=n.start,l=n.end,this._groupedView._positionEvent(n,c,a,p,s,l,b)},_renderGroups:function(e,t,n,i){var r,s,l,c,d=t[0];if(d)for(r=d.dataSource.view(),s=0;s<r.length;s++)l=this._resourceValue(d,r[s]),c=new o.data.Query(e).filter({field:d.field,operator:a.groupEqFilter(l)}).toArray(),t.length>1?n=this._renderGroups(c,t.slice(1),n++,i+1):this._renderEvents(c,n++);return n},_groupCount:function(){var e=this.groupedResources,t=this._groupedView;return e.length?this._isVerticallyGrouped()?t._verticalGroupCount(e.length-1):t._horizontalGroupCount(e.length):1},_columnOffsetForResource:function(e){return this._columnCountForLevel(e)/this._columnCountForLevel(e-1)},destroy:function(){this.table&&this.table.removeClass("k-scheduler-monthview"),this.content&&this.content.off(s),this.element&&this.element.off(s),a.fn.destroy.call(this),this._isMobile()&&this.options.editable&&this.options.editable.create!==!1&&this._addUserEvents.destroy()},events:["remove","add","edit","navigate"],options:{title:"Month",name:"month",eventHeight:25,moreButtonHeight:13,editable:!0,selectedDateFormat:"{0:y}",selectedShortDateFormat:"{0:y}",selectedMobileDateFormat:"{0:MMMM}",groupHeaderTemplate:"#=text#",dayTemplate:f,eventTemplate:m}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.scheduler.recurrence.min",["kendo.dropdownlist.min","kendo.datepicker.min","kendo.numerictextbox.min"],e)}(function(){return function(e,t){function n(e,t){var n;return 0!==e&&e<t?n=t-e:(n=e%t,n&&(n=t-n)),n}function i(e){var t=e.getMonth(),n=m(e)?oe[t]:re[t];return n+e.getDate()}function o(e,n){var i,o;return e=new Date(e.getFullYear(),e.getMonth(),e.getDate()),te(e,0),i=e.getFullYear(),n!==t?(ee(e,n,-1),e.setDate(e.getDate()+4)):e.setDate(e.getDate()+(4-(e.getDay()||7))),te(e,0),o=Math.floor((e.getTime()-new Date(i,0,1,(-6)))/864e5),1+Math.floor(o/7)}function r(e,t){var n=ne(e).getDay(),i=7-(n+7-(t||7))||7;return i<0&&(i+=7),Math.ceil((e.getDate()-i)/7)+1}function a(e,t){return e+(e<t?7:0)}function s(e,t,n){var i,o,s,l,c,d=t.offset;return d?(i=new Date(e.getFullYear(),e.getMonth()+1,0),o=r(i,n),s=a(t.day,n),l=s<a(new Date(e.getFullYear(),e.getMonth(),1).getDay(),n),c=s>a(i.getDay(),n),d<0?d=o+(d+1-(c?1:0)):l&&(d+=1),o-=c?1:0,d<(l?1:0)||d>o?null:d):r(e,n)}function l(e,t){return r(new Date(e.getFullYear(),e.getMonth()+1,0),t)}function c(e,t,n){return r(e,n)===s(e,t,n)}function d(e,t,n){for(var i,o,l,c,d=a(t.getDay(),n),u=e.length,h=[],p=0;p<u;p++)if(o=e[p],c=r(t,n),i=s(t,o,n),null!==i)if(c<i)h.push(o);else if(c===i)if(l=a(o.day,n),d<l)h.push(o);else if(d===l)return null;return h}function u(e,t,n){for(var i,o=0,r=e.length,a=[];o<r;o++){if(i=e[o],n&&(i=n(i)),t===i)return null;t<i&&a.push(i)}return a}function h(e,t){for(var n,i=0,o=e.length;i<o;i++){if(n=parseInt(e[i],10),isNaN(n)||n<t.start||n>t.end||0===n&&t.start<0)return null;e[i]=n}return e.sort(v)}function p(e){for(var n,i,o,r=0,a=e.length;r<a;r++){if(n=e[r],i=n.length,o=n.substring(i-2).toUpperCase(),o=le[o],o===t)return null;e[r]={offset:parseInt(n.substring(0,i-2),10)||0,day:o}}return e}function f(e){for(var t,n,i=0,o=e.length,r=[];i<o;i++)t=e[i],"string"==typeof t?n=t:(n=""+se[t.day],t.offset&&(n=t.offset+n)),r.push(n);return""+r}function g(e){var t=e.getMonth();return 1===t?1===new Date(e.getFullYear(),1,29).getMonth()?29:28:ae[t]}function m(e){return e=e.getFullYear(),e%4===0&&e%100!==0||e%400===0}function v(e,t){return e-t}function _(e,t){var n,i,o=0,r=[];if(e)for(e=e.split(e.indexOf(";")!==-1?";":","),n=e.length;o<n;o++)i=A(e[o],t),i&&r.push(i);return r}function b(t,n,i){for(var o=e.isArray(t)?t:_(t,i),r=n.getTime()-n.getMilliseconds(),a=0,s=o.length;a<s;a++)if(o[a].getTime()===r)return!0;return!1}function w(e,t){var n,i,o=0,r=[].concat(e);for(n=r.length;o<n;o++)i=r[o],i=G.timezone.convert(i,t||i.getTimezoneOffset(),"Etc/UTC"),r[o]=G.toString(i,he);return r.join(",")}function k(e,t){var n=new Date(e);switch(t.freq){case"yearly":n.setFullYear(n.getFullYear(),0,1);break;case"monthly":n.setFullYear(n.getFullYear(),n.getMonth(),1);break;case"weekly":ee(n,t.weekStart,-1)}return t.hours&&n.setHours(0),t.minutes&&n.setMinutes(0),t.seconds&&n.setSeconds(0),n}function y(e,t){var n=new Date(e);switch(t.freq){case"yearly":n.setFullYear(n.getFullYear(),11,31);break;case"monthly":n.setFullYear(n.getFullYear(),n.getMonth()+1,0);break;case"weekly":ee(n,t.weekStart,-1),n.setDate(n.getDate()+6)}return t.hours&&n.setHours(23),t.minutes&&n.setMinutes(59),t.seconds&&n.setSeconds(59),n}function x(e,t,n){var i,o,r,a,s=e.length,l=[];for(r=0,a=n.length;r<a;r++)i=n[r],i<0?i=s+i:i-=1,o=e[i],o&&o.start>=t&&l.push(o);return l}function C(e,t,n){var i,o,r=[];for(o=0;o<e.length;o++)i=e[o],b(t,i.start,n)||r.push(i);return r}function S(e,n,i,o){var r,a,s,l,c,d,u,h,p,f,g,m,v,S,A,E,M,F,R,P,z,B,L,H,N,O,V,W,U,q,j,G,$,Y,K,Q,X=I(e.recurrenceRule,o),ee=[];if(!X)return[e];for(P=X.positions,z=P?0:1,f=X.start,g=X.end,(f||g)&&(e=e.clone({start:f?new Date(f.value[0]):t,end:g?new Date(g.value[0]):t})),M=e.start,E=M.getTime(),A=ie(M),S=_(e.recurrenceException,o),!S[0]&&X.exdates&&(S=X.exdates.value,e.set("recurrenceException",w(S,o))),h=n=new Date(n),i=new Date(i),v=X.freq,R=we[v],F=X.count,X.until&&X.until<i&&(i=new Date(X.until)),m="yearly"===v||"monthly"===v||"weekly"===v,n<E||F||X.interval>1||m||("daily"===v||"hourly"===v)&&!X.seconds?n=new Date(E):(l=n.getHours(),c=n.getMinutes(),d=n.getSeconds(),X.hours||(l=M.getHours()),X.minutes||(c=M.getMinutes()),X.seconds||(d=M.getSeconds()),n.setHours(l,c,d,M.getMilliseconds())),X._startPeriod=new Date(n),P&&(n=k(n,X),i=y(i,X),V=ie(i)-ie(n),V<0&&(l=n.getHours(),i.setHours(l,n.getMinutes(),n.getSeconds(),n.getMilliseconds()),J.adjustDST(i,l)),X._startPeriod=new Date(n),X._endPeriod=y(n,X)),u=e.duration(),X._startTime=r=J.toInvariantTime(n),R.setup&&R.setup(X,M,n),R.limit(n,i,X);n<=i;)if(s=new Date(n),Z(s,u),p=n>=h||s>h,(p&&!b(S,n,o)||P)&&(r=J.toUtcTime(J.getDate(n))+ie(X._startTime),a=r+u,E!==n.getTime()||A!==ie(X._startTime)?(e.isAllDay||(W=e.startTimezone||e.endTimezone,U=e.endTimezone||e.startTimezone,(o&&W||!o&&!W)&&(q=D(n,o)-D(e.start,o),j=D(s,o)-D(e.end,o),G=D(n,W)-D(e.start,W),$=D(s,U)-D(e.end,U),q!==G&&(Y=6e4*(q-G),L=new Date(n.getTime()-Y),N=r-Y),j!==$&&(K=6e4*(j-$),H=new Date(s.getTime()-K),O=a-K))),ee.push(e.toOccurrence({start:L||new Date(n),end:H||s,_startTime:N||r,_endTime:O||a})),L=H=N=O=null):(e._startTime=r,e._endTime=a,ee.push(e))),P){if(R.next(n,X),R.limit(n,i,X),n>X._endPeriod&&(B=x(ee.slice(z),M,P),B=C(B,S,o),ee=ee.slice(0,z).concat(B),X._endPeriod=y(n,X),z=ee.length),F&&F===z)break}else{if(F&&F===z)break;z+=1,Q=T(n),R.next(n,X),Q&&"hourly"!==X.freq&&J.toInvariantTime(e.start).getTime()!==J.toInvariantTime(n).getTime()&&(X._startTime=r=new Date(n.getTime()-36e5)),R.limit(n,i,X)}return ee}function T(e){var t=e.getTimezoneOffset(),n=new Date(e.getTime()-36e5),i=n.getTimezoneOffset();return t<i}function D(e,t){return t?G.timezone.offset(e,t):e.getTimezoneOffset()}function A(e,t){return e=G.parseDate(e,ce),e&&t&&(e=$.apply(e,t)),e}function E(e,t){var n,i,o,r,a,s,l,c,d=e.split(";");for(l=0,c=d.length;l<c;l++)if(n=d[l].split(":"),i=n[0],o=n[1],i.indexOf("TZID")!==-1&&(r=i.substring(i.indexOf("TZID")).split("=")[1]),o)for(o=o.split(","),a=0,s=o.length;a<s;a++)o[a]=A(o[a],r||t);if(o)return{value:o,tzid:r}}function I(n,i){var o,r,a,s,l,c,d,u,f,g={},m=0,v=!1,_=function(e,t){var n=e.day,i=t.day;return n<u&&(n+=7),i<u&&(i+=7),n-i};if(!n)return null;for(c=n.split("\n"),c[1]||n.indexOf("DTSTART")===-1&&n.indexOf("DTEND")===-1&&n.indexOf("EXDATE")===-1||(c=n.split(" ")),m=0,a=c.length;m<a;m++)l=e.trim(c[m]),l.indexOf("DTSTART")!==-1?g.start=E(l,i):l.indexOf("DTEND")!==-1?g.end=E(l,i):l.indexOf("EXDATE")!==-1?g.exdates=E(l,i):l.indexOf("RRULE")!==-1?s=l.substring(6):e.trim(l)&&(s=l);for(s=s.split(";"),m=0,a=s.length;m<a;m++)switch(d=s[m],o=d.split("="),r=e.trim(o[1]).split(","),e.trim(o[0]).toUpperCase()){case"FREQ":g.freq=r[0].toLowerCase();break;case"UNTIL":g.until=A(r[0],i);break;case"COUNT":g.count=parseInt(r[0],10);break;case"INTERVAL":g.interval=parseInt(r[0],10);break;case"BYSECOND":g.seconds=h(r,{start:0,end:60}),v=!0;break;case"BYMINUTE":g.minutes=h(r,{start:0,end:59}),v=!0;break;case"BYHOUR":g.hours=h(r,{start:0,end:23}),v=!0;break;case"BYMONTHDAY":g.monthDays=h(r,{start:-31,end:31}),v=!0;break;case"BYYEARDAY":g.yearDays=h(r,{start:-366,end:366}),v=!0;break;case"BYMONTH":g.months=h(r,{start:1,end:12}),v=!0;break;case"BYDAY":g.weekDays=f=p(r),v=!0;break;case"BYWEEKNO":g.weeks=h(r,{start:-53,end:53}),v=!0;break;case"BYSETPOS":g.positions=h(r,{start:-366,end:366});break;case"WKST":g.weekStart=u=le[r[0]]}return g.freq===t||g.count!==t&&g.until?null:(g.interval||(g.interval=1),u===t&&(g.weekStart=u=G.culture().calendar.firstDay),f&&(g.weekDays=f.sort(_)),g.positions&&!v&&(g.positions=null),g._hasRuleValue=v,g)}function M(e,t){for(var n,i=e.value,o=e.tzid||"",r=i.length,a=0;a<r;a++)n=i[a],n=$.convert(n,o||t||n.getTimezoneOffset(),"Etc/UTC"),i[a]=G.toString(n,"yyyyMMddTHHmmssZ");return o&&(o=";TZID="+o),o+":"+i.join(",")+" "}function F(e,n){var i=e.weekStart,o="FREQ="+e.freq.toUpperCase(),r=e.exdates||"",a=e.start||"",s=e.end||"",l=e.until;return e.interval>1&&(o+=";INTERVAL="+e.interval),e.count&&(o+=";COUNT="+e.count),l&&(l=$.convert(l,n||l.getTimezoneOffset(),"Etc/UTC"),o+=";UNTIL="+G.toString(l,"yyyyMMddTHHmmssZ")),e.months&&(o+=";BYMONTH="+e.months),e.weeks&&(o+=";BYWEEKNO="+e.weeks),e.yearDays&&(o+=";BYYEARDAY="+e.yearDays),e.monthDays&&(o+=";BYMONTHDAY="+e.monthDays),e.weekDays&&(o+=";BYDAY="+f(e.weekDays)),e.hours&&(o+=";BYHOUR="+e.hours),e.minutes&&(o+=";BYMINUTE="+e.minutes),e.seconds&&(o+=";BYSECOND="+e.seconds),e.positions&&(o+=";BYSETPOS="+e.positions),i!==t&&(o+=";WKST="+se[i]),a&&(a="DTSTART"+M(a,n)),s&&(s="DTEND"+M(s,n)),r&&(r="EXDATE"+M(r,n)),(a||s||r)&&(o=a+s+r+"RRULE:"+o),o}var R,P,z,B,L,H,N,O,V,W,U,q,j,G=window.kendo,$=G.timezone,Y=G.Class,K=G.ui,Q=K.Widget,X=K.DropDownList,J=G.date,Z=J.setTime,ee=J.setDayOfWeek,te=J.adjustDST,ne=J.firstDayOfMonth,ie=J.getMilliseconds,oe=[0,31,60,91,121,152,182,213,244,274,305,335,366],re=[0,31,59,90,120,151,181,212,243,273,304,334,365],ae=[31,28,31,30,31,30,31,31,30,31,30,31],se={0:"SU",1:"MO",2:"TU",3:"WE",4:"TH",5:"FR",6:"SA"},le={SU:0,MO:1,TU:2,WE:3,TH:4,FR:5,SA:6},ce=["yyyy-MM-ddTHH:mm:ss.fffzzz","yyyy-MM-ddTHH:mm:sszzz","yyyy-MM-ddTHH:mm:ss","yyyy-MM-ddTHH:mm","yyyy-MM-ddTHH","yyyy-MM-dd","yyyyMMddTHHmmssfffzzz","yyyyMMddTHHmmsszzz","yyyyMMddTHHmmss","yyyyMMddTHHmm","yyyyMMddTHH","yyyyMMdd"],de=["months","weeks","yearDays","monthDays","weekDays","hours","minutes","seconds"],ue=de.length,he="yyyyMMddTHHmmssZ",pe={months:function(e,t,n){var i=n.months,o=u(i,e.getMonth()+1),r=!1;return null!==o&&(o.length?e.setMonth(o[0]-1,1):e.setFullYear(e.getFullYear()+1,i[0]-1,1),r=!0),r},monthDays:function(e,t,n){for(var i,o,r,a=!1,s=e.getHours(),l=function(e){return e<0&&(e=i+e+1),e};e<=t;){if(o=e.getMonth(),i=g(e),r=u(n.monthDays,e.getDate(),l),null===r)return a;if(a=!0,r.length){if(e.setMonth(o,r.sort(v)[0]),te(e,s),o===e.getMonth())break}else e.setMonth(o+1,1)}return a},yearDays:function(e,t,n){for(var o,r,a=!1,s=e.getHours(),l=function(e){return e<0&&(e=o+e),e};e<t;){if(o=m(e)?366:365,r=u(n.yearDays,i(e),l),null===r)return a;if(a=!0,o=e.getFullYear(),r.length){e.setFullYear(o,0,r.sort(v)[0]),te(e,s);break}e.setFullYear(o+1,0,1)}return a},weeks:function(e,t,n){for(var i,r,a,s=n.weekStart,l=!1,c=e.getHours(),d=function(e){return e<0&&(e=53+e),e};e<t;){if(r=u(n.weeks,o(e,s),d),null===r)return l;if(l=!0,i=e.getFullYear(),r.length){a=7*r.sort(v)[0]-1,e.setFullYear(i,0,a),ee(e,s,-1),te(e,c);break}e.setFullYear(i+1,0,1)}return l},weekDays:function(e,t,n){var i,o,a=n.weekDays,s=n.weekStart,u=d(a,e,s),h=e.getHours();if(null===u)return!1;if(i=u[0],i||(i=a[0],ee(e,s)),o=i.day,i.offset)for(;e<=t&&!c(e,i,s);)r(e,s)===l(e,s)?(e.setMonth(e.getMonth()+1,1),te(e,h)):(e.setDate(e.getDate()+7),te(e,h),ee(e,s,-1));return e.getDay()!==o&&ee(e,o),!0},hours:function(e,t,n){var i=n.hours,o=n._startTime,r=o.getHours(),a=u(i,r),s=!1;return null!==a&&(s=!0,e.setHours(r),te(e,r),a.length?(a=a[0],e.setHours(a)):(a=e.getHours(),e.setDate(e.getDate()+1),te(e,a),a=i[0],e.setHours(a),te(e,a)),n.minutes&&e.setMinutes(0),o.setHours(a,e.getMinutes())),s},minutes:function(e,t,n){var i=n.minutes,o=e.getMinutes(),r=u(i,o),a=n._startTime.getHours(),s=!1;return null!==r&&(s=!0,r.length?r=r[0]:(a+=1,r=i[0]),n.seconds&&e.setSeconds(0),e.setHours(a,r),a%=24,te(e,a),n._startTime.setHours(a,r,e.getSeconds())),s},seconds:function(e,t,n){var i=n.seconds,o=n._startTime.getHours(),r=u(i,e.getSeconds()),a=e.getMinutes(),s=!1;return null!==r&&(s=!0,r.length?e.setSeconds(r[0]):(a+=1,e.setMinutes(a,i[0]),a>59&&(a%=60,o=(o+1)%24)),n._startTime.setHours(o,a,e.getSeconds())),s}},fe=Y.extend({next:function(e,t){var n,i,o=t._startTime,r=o.getDate();if(t.seconds)i=e.getSeconds()+1,e.setSeconds(i),o.setSeconds(i),o.setDate(r);else{if(!t.minutes)return!1;n=e.getMinutes()+1,e.setMinutes(n),o.setMinutes(n),o.setDate(r)}return!0},normalize:function(e){var t=e.rule;4===e.idx&&t.hours&&(t._startTime.setHours(0),this._hour(e.date,t))},limit:function(e,n,i){for(var o,r,a,s,l,c=i.interval;e<=n;){for(a=r=t,l=e.getDate(),s=0;s<ue;s++){if(o=de[s],i[o]){if(a=pe[o](e,n,i),r!==t&&a)break;r=a}a&&this.normalize({date:e,rule:i,day:l,idx:s})}if((1===c||!this.interval(i,e))&&s===ue)break}},interval:function(e,t){var i,o,r,s,l=new Date(e._startPeriod),c=new Date(t),d=t.getHours(),u=e.weekStart,h=e.interval,p=e.freq,f=!1,g=0,m=0,v=1;return"hourly"===p?(i=c.getTimezoneOffset()-l.getTimezoneOffset(),o=e._startTime.getHours(),c=c.getTime(),d!==o&&(c+=(o-d)*J.MS_PER_HOUR),c-=l,i&&(c-=i*J.MS_PER_MINUTE),i=Math.floor(c/J.MS_PER_HOUR),g=n(i,h),0!==g&&(this._hour(t,e,g),f=!0)):"daily"===p?(J.setTime(c,-l,!0),i=Math.round(c/J.MS_PER_DAY),g=n(i,h),0!==g&&(this._date(t,e,g),f=!0)):"weekly"===p?(g=this._getNumberOfWeeksBetweenDates(l,t),r=a(t.getDay(),u),s=a(l.getDay(),u),r<s&&(g+=1),g=n(g,h),0!==g&&(J.setDayOfWeek(t,e.weekStart,-1),t.setDate(t.getDate()+7*g),te(t,d),f=!0)):"monthly"===p?(i=t.getFullYear()-l.getFullYear(),i=t.getMonth()-l.getMonth()+12*i,g=n(i,h),0!==g&&(v=e._hasRuleValue?1:t.getDate(),t.setFullYear(t.getFullYear(),t.getMonth()+g,v),te(t,d),f=!0)):"yearly"===p&&(i=t.getFullYear()-l.getFullYear(),g=n(i,h),e.months||(m=t.getMonth()),e.yearDays||e.monthDays||e.weekDays||(v=t.getDate()),0!==g&&(t.setFullYear(t.getFullYear()+g,m,v),te(t,d),f=!0)),f},_getNumberOfWeeksBetweenDates:function(e,t){var n=(t-e)/6048e5,i=Math.floor(n);return n-i>.99&&(i=Math.round(n)),i},_hour:function(e,t,n){var i=t._startTime,o=i.getHours();n&&(o+=n),e.setHours(o),o%=24,i.setHours(o),te(e,o)},_date:function(e,t,n){var i=e.getHours();e.setDate(e.getDate()+n),te(e,i)||this._hour(e,t)}}),ge=fe.extend({next:function(e,t){fe.fn.next(e,t)||this._hour(e,t,1)},normalize:function(e){var t=e.rule;4===e.idx&&(t._startTime.setHours(0),this._hour(e.date,t))}}),me=fe.extend({next:function(e,t){fe.fn.next(e,t)||this[t.hours?"_hour":"_date"](e,t,1)}}),ve=me.extend({setup:function(e,t){e.weekDays||(e.weekDays=[{day:t.getDay(),offset:0}])}}),_e=fe.extend({next:function(e,t){var n,i;if(!fe.fn.next(e,t))if(t.hours)this._hour(e,t,1);else if(t.monthDays||t.weekDays||t.yearDays||t.weeks)this._date(e,t,1);else{for(n=e.getDate(),i=e.getHours(),e.setMonth(e.getMonth()+1),te(e,i);e.getDate()!==n;)e.setDate(n),te(e,i);this._hour(e,t)}},normalize:function(e){var t=e.rule,n=e.date,i=n.getHours();0!==e.idx||t.monthDays||t.weekDays?fe.fn.normalize(e):(n.setDate(e.day),te(n,i))},setup:function(e,t,n){e.monthDays||e.weekDays||n.setDate(t.getDate())}}),be=_e.extend({next:function(e,t){var n,i=e.getHours();if(!fe.fn.next(e,t))if(t.hours)this._hour(e,t,1);else if(t.monthDays||t.weekDays||t.yearDays||t.weeks)this._date(e,t,1);else if(t.months){for(n=e.getDate(),e.setMonth(e.getMonth()+1),te(e,i);e.getDate()!==n;)e.setDate(n),te(e,i);this._hour(e,t)}else e.setFullYear(e.getFullYear()+1),te(e,i),this._hour(e,t)},setup:function(){}}),we={hourly:new ge,daily:new me,weekly:new ve,monthly:new _e,yearly:new be},ke="click",ye="change";G.recurrence={rule:{parse:I,serialize:F},expand:S,dayInYear:i,weekInYear:o,weekInMonth:r,numberOfWeeks:l,isException:b,toExceptionString:w},R=function(e){for(var t=G.culture().calendar.days.namesShort,n=t.length,i="",o=0,r=[];o<n;o++)r.push(o);for(t=t.slice(e).concat(t.slice(0,e)),r=r.slice(e).concat(r.slice(0,e)),o=0;o<n;o++)i+='<label class="k-check"><input class="k-recur-weekday-checkbox" type="checkbox" value="'+r[o]+'" /> '+t[o]+"</label>";return i},P=function(e){for(var t=G.culture().calendar.days.names,n=t.length,i="",o=0,r=[];o<n;o++)r.push(o);for(t=t.slice(e).concat(t.slice(0,e)),r=r.slice(e).concat(r.slice(0,e)),o=0;o<n;o++)i+='<li class="k-item"><label class="k-label">',i+='<span class="k-item-title">'+t[o]+"</span>",i+='<input class="k-recur-weekday-checkbox k-check" type="checkbox" value="'+r[o]+'" />',i+="</label></li>";return i},z=G.template('# if (frequency !== "never") { #<div class="k-edit-label"><label>#:messages.repeatEvery#</label></div><div class="k-edit-field"><input class="k-recur-interval" title="#:messages.interval#"/>#:messages.interval#</div># } ## if (frequency === "weekly") { #<div class="k-edit-label"><label>#:messages.repeatOn#</label></div><div class="k-edit-field">#=weekDayCheckBoxes(firstWeekDay)#</div># } else if (frequency === "monthly") { #<div class="k-edit-label"><label>#:messages.repeatOn#</label></div><div class="k-edit-field"><ul class="k-reset"><li><label><input class="k-recur-month-radio" type="radio" name="month" value="monthday" title="#:messages.day#" />#:messages.day#</label><input class="k-recur-monthday" title="#:messages.day#" /></li><li><input class="k-recur-month-radio" type="radio" name="month" value="weekday" title="#:messages.repeatOn#" /><input class="k-recur-weekday-offset" title="#:messages.repeatOn#" /><input class="k-recur-weekday" title="#:messages.day#" /></li></ul></div># } else if (frequency === "yearly") { #<div class="k-edit-label"><label>#:messages.repeatOn#</label></div><div class="k-edit-field"><ul class="k-reset"><li><input class="k-recur-year-radio" type="radio" name="year" value="monthday" title="#:messages.repeatOn#" /><input class="k-recur-month" title="#:messages.repeatOn#" /><input class="k-recur-monthday" title="#:messages.day#" /></li><li><input class="k-recur-year-radio" type="radio" name="year" value="weekday" title="#:messages.repeatOn#" /><input class="k-recur-weekday-offset" title="#:messages.repeatOn#" /><input class="k-recur-weekday" title="#:messages.day#" />#:messages.of#<input class="k-recur-month" title="#:messages.of#"/></li></ul></div># } ## if (frequency !== "never") { #<div class="k-edit-label"><label>#:end.label#</label></div><div class="k-edit-field"><ul class="k-reset"><li><label><input class="k-recur-end-never" type="radio" name="end" value="never" />#:end.never#</label></li><li><label><input class="k-recur-end-count" type="radio" name="end" value="count" />#:end.after#</label><input class="k-recur-count" title="#:end.occurrence#" />#:end.occurrence#</li><li><label><input class="k-recur-end-until" type="radio" name="end" value="until" />#:end.on#</label><input class="k-recur-until" title="#:end.on#" /></li></ul></div># } #'),B=[{day:0,offset:0},{day:1,offset:0},{day:2,offset:0},{day:3,offset:0},{day:4,offset:0},{day:5,offset:0},{day:6,offset:0}],L=[{day:1,offset:0},{day:2,offset:0},{day:3,offset:0},{day:4,offset:0},{day:5,offset:0}],H=[{day:0,offset:0},{day:6,offset:0}],N=Q.extend({init:function(e,t){var n,i=this,o=t&&t.frequencies;Q.fn.init.call(i,e,t),i.wrapper=i.element,t=i.options,t.start=n=t.start||J.today(),o&&(t.frequencies=o),"string"==typeof n&&(t.start=G.parseDate(n,"yyyyMMddTHHmmss")),null===t.firstWeekDay&&(t.firstWeekDay=G.culture().calendar.firstDay),i._namespace="."+t.name},options:{value:"",start:"",timezone:"",spinners:!0,firstWeekDay:null,frequencies:["never","daily","weekly","monthly","yearly"],mobile:!1,messages:{recurrenceEditorTitle:"Recurrence editor",frequencies:{never:"Never",hourly:"Hourly",daily:"Daily",weekly:"Weekly",monthly:"Monthly",yearly:"Yearly"},hourly:{repeatEvery:"Repeat every: ",interval:" hour(s)"},daily:{repeatEvery:"Repeat every: ",interval:" day(s)"},weekly:{interval:" week(s)",repeatEvery:"Repeat every: ",repeatOn:"Repeat on: "},monthly:{repeatEvery:"Repeat every: ",repeatOn:"Repeat on: ",interval:" month(s)",day:"Day "},yearly:{repeatEvery:"Repeat every: ",repeatOn:"Repeat on: ",interval:" year(s)",of:" of "},end:{label:"End:",mobileLabel:"Ends",never:"Never",after:"After ",occurrence:" occurrence(s)",on:"On "},offsetPositions:{first:"first",second:"second",third:"third",fourth:"fourth",last:"last"},weekdays:{day:"day",weekday:"weekday",weekend:"weekend day"}}},events:["change"],_initInterval:function(){var e=this,t=e._value;e._container.find(".k-recur-interval").kendoNumericTextBox({spinners:e.options.spinners,value:t.interval||1,decimals:0,format:"#",min:1,change:function(){t.interval=this.value(),e._trigger()}})},_weekDayRule:function(e){var t=this,n=(t._weekDay.element||t._weekDay).val(),i=+(t._weekDayOffset.element||t._weekDayOffset).val(),o=null,r=null;e||("day"===n?(o=B,r=i):"weekday"===n?(o=L,r=i):"weekend"===n?(o=H,r=i):o=[{offset:i,day:+n}]),t._value.weekDays=o,t._value.positions=r},_weekDayView:function(){var e,t,n,i,o=this,r=o._value.weekDays,a=o._value.positions,s=o._weekDayOffset;r&&(n=r.length,a&&(7===n?(t="day",e=a):5===n?(t="weekday",e=a):2===n&&(t="weekend",e=a)),t||(r=r[0],t=r.day,e=r.offset||""),i=s.value?"value":"val",s[i](e),o._weekDay[i](t))},_initWeekDay:function(){var t,n=this,i=n.options.messages.weekdays,o=n.options.messages.offsetPositions,r=n._container.find(".k-recur-weekday"),a=function(){n._weekDayRule(),n._trigger()};r[0]&&(n._weekDayOffset=new X(n._container.find(".k-recur-weekday-offset"),{change:a,dataTextField:"text",dataValueField:"value",dataSource:[{text:o.first,value:"1"},{text:o.second,value:"2"},{text:o.third,value:"3"},{text:o.fourth, +value:"4"},{text:o.last,value:"-1"}]}),t=[{text:i.day,value:"day"},{text:i.weekday,value:"weekday"},{text:i.weekend,value:"weekend"}],n._weekDay=new X(r,{value:n.options.start.getDay(),change:a,dataTextField:"text",dataValueField:"value",dataSource:t.concat(e.map(G.culture().calendar.days.names,function(e,t){return{text:e,value:t}}))}),n._weekDayView())},_initWeekDays:function(){var t,n,i,o,r,a=this,s=a._value,l=a._container.find(".k-recur-weekday-checkbox");if(l[0]&&(l.on(ke+a._namespace,function(){s.weekDays=e.map(l.filter(":checked"),function(e){return{day:+e.value,offset:0}}),a.options.mobile||a._trigger()}),s.weekDays))for(i=0,o=l.length,r=s.weekDays.length;i<o;i++)for(n=l[i],t=0;t<r;t++)n.value==s.weekDays[t].day&&(n.checked=!0)},_initMonthDay:function(){var e=this,t=e._value,n=e._container.find(".k-recur-monthday");n[0]&&(e._monthDay=new G.ui.NumericTextBox(n,{spinners:e.options.spinners,min:1,max:31,decimals:0,format:"#",value:t.monthDays?t.monthDays[0]:e.options.start.getDate(),change:function(){var n=this.value();t.monthDays=n?[n]:n,e._trigger()}}))},_initCount:function(){var e=this,t=e._container.find(".k-recur-count"),n=e._value;e._count=t.kendoNumericTextBox({spinners:e.options.spinners,value:n.count||1,decimals:0,format:"#",min:1,change:function(){n.count=this.value(),e._trigger()}}).data("kendoNumericTextBox")},_initUntil:function(){var e=this,t=e._container.find(".k-recur-until"),n=e.options.start,i=e._value,o=i.until;e._until=t.kendoDatePicker({min:o&&o<n?o:n,value:o||new Date(n.getFullYear(),n.getMonth(),n.getDate(),23,59,59),change:function(){var t=this.value();i.until=new Date(t.getFullYear(),t.getMonth(),t.getDate(),23,59,59),e._trigger()}}).data("kendoDatePicker")},_trigger:function(){this.options.mobile||this.trigger("change")}}),O=N.extend({init:function(e,t){var n=this;N.fn.init.call(n,e,t),n._initFrequency(),n._initContainer(),n.value(n.options.value)},options:{name:"RecurrenceEditor"},events:["change"],destroy:function(){var e=this;e._frequency.destroy(),e._container.find("input[type=radio],input[type=checkbox]").off(ke+e._namespace),G.destroy(e._container),N.fn.destroy.call(e)},value:function(e){var n,i=this,o=i.options.timezone;return e===t?i._value.freq?F(i._value,o):"":(i._value=I(e,o)||{},n=i._value.freq,n?i._frequency.value(n):i._frequency.select(0),i._initView(i._frequency.value()),t)},_initContainer:function(){var t=this.element,n=e('<div class="k-recur-view" />'),i=t.parent(".k-edit-field");i[0]?n.insertAfter(i):t.append(n),this._container=n},_initFrequency:function(){var t,n=this,i=n.options,o=i.frequencies,r=i.messages.frequencies,a=e("<input />").attr({title:i.messages.recurrenceEditorTitle});o=e.map(o,function(e){return{text:r[e],value:e}}),t=o[0],t&&"never"===t.value&&(t.value=""),n.element.append(a),n._frequency=new X(a,{dataTextField:"text",dataValueField:"value",dataSource:o,change:function(){n._value={},n._initView(n._frequency.value()),n.trigger("change")}})},_initView:function(e){var n=this,i=n._value,o=n.options,r={frequency:e||"never",weekDayCheckBoxes:R,firstWeekDay:o.firstWeekDay,messages:o.messages[e],end:o.messages.end};return G.destroy(n._container),n._container.html(z(r)),e?(i.freq=e,"weekly"!==e||i.weekDays||(i.weekDays=[{day:o.start.getDay(),offset:0}]),n._initInterval(),n._initWeekDays(),n._initMonthDay(),n._initWeekDay(),n._initMonth(),n._initCount(),n._initUntil(),n._period(),n._end(),t):(n._value={},t)},_initMonth:function(){var t,n=this,i=n._value,o=i.months||[n.options.start.getMonth()+1],r=n._container.find(".k-recur-month");r[0]&&(t={change:function(){i.months=[+this.value()],n.trigger("change")},dataTextField:"text",dataValueField:"value",dataSource:e.map(G.culture().calendar.months.names,function(e,t){return{text:e,value:t+1}})},n._month1=new X(r[0],t),n._month2=new X(r[1],t),o&&(o=o[0],n._month1.value(o),n._month2.value(o)))},_end:function(){var e,t=this,n=t._value,i=t._container,o=t._namespace,r=function(e){t._toggleEnd(e.currentTarget.value),t.trigger("change")};t._buttonNever=i.find(".k-recur-end-never").on(ke+o,r),t._buttonCount=i.find(".k-recur-end-count").on(ke+o,r),t._buttonUntil=i.find(".k-recur-end-until").on(ke+o,r),n.count?e="count":n.until&&(e="until"),t._toggleEnd(e)},_period:function(){var e=this,t=e._value,n="monthly"===t.freq,i=n?e._toggleMonthDay:e._toggleYear,o=".k-recur-"+(n?"month":"year")+"-radio",r=e._container.find(o);(n||"yearly"===t.freq)&&(r.on(ke+e._namespace,function(t){i.call(e,t.currentTarget.value),e.trigger("change")}),e._buttonMonthDay=r.eq(0),e._buttonWeekDay=r.eq(1),i.call(e,t.weekDays?"weekday":"monthday"))},_toggleEnd:function(e){var t,n,i,o,r=this;"count"===e?(r._buttonCount.prop("checked",!0),i=!0,o=!1,t=r._count.value(),n=null):"until"===e?(r._buttonUntil.prop("checked",!0),i=!1,o=!0,t=null,n=r._until.value()):(r._buttonNever.prop("checked",!0),i=o=!1,t=n=null),r._count&&r._count.enable(i),r._until&&r._until.enable(o),r._value.count=t,r._value.until=n},_toggleMonthDay:function(e){var t,n=this,i=!1,o=!0,r=!1;"monthday"===e?(n._buttonMonthDay.prop("checked",!0),t=[n._monthDay.value()],i=!0,o=!1,r=!0):(n._buttonWeekDay.prop("checked",!0),t=null),n._weekDay.enable(o),n._weekDayOffset.enable(o),n._monthDay.enable(i),n._value.monthDays=t,n._weekDayRule(r)},_toggleYear:function(e){var t,n=this,i=!1,o=!0;"monthday"===e?(i=!0,o=!1,t=n._month1.value()):t=n._month2.value(),n._month1.enable(i),n._month2.enable(o),n._value.months=[t],n._toggleMonthDay(e)}}),K.plugin(O),V=G.template('<div data-role="content"><ul><li class="k-item"><label class="k-label"><span class="k-item-title">#:headerTitle#</span><div class="k-recur-pattern"></div></label></li><li class="k-item k-recur-view"></li></ul></div>'),W=G.template('# if (frequency !== "never") { #<label class="k-label"><span class="k-item-title">#:messages.repeatEvery#</span><div class="k-recur-editor-wrap"><input class="k-recur-interval" type="number" pattern="\\\\d*"/># if (messages.interval.length) { #<label class="k-recur-editor-text">#:messages.interval#</label># } #</div></label># } ## if (frequency === "weekly") { #<ul class="k-recur-items-wrap"><li class="k-item k-no-click"><label class="k-label"><span class="k-item-title">#:messages.repeatOn#</span></label></li>#=weekDayCheckBoxes(firstWeekDay)#</ul># } else if (frequency === "monthly") { #<ul class="k-recur-items-wrap"><li class="k-item"><label class="k-label"><span class="k-item-title">#:messages.repeatBy#</span><div class="k-repeat-rule"></div></label></li><li class="k-monthday-view k-item" style="display:none"><label class="k-label"><span class="k-item-title">#:messages.day#</span><div><input class="k-recur-monthday" type="number" title="#:messages.day#" pattern="\\\\d*"/></div></label></li><li class="k-weekday-view k-item" style="display:none"><ul class="k-recur-items-wrap"><li class="k-item"><label class="k-label"><span class="k-item-title">#:messages.every#</span><div><select class="k-recur-weekday-offset" title="#:messages.every#"></select></div></label></li><li class="k-item"><label class="k-label"><span class="k-item-title">#:messages.day#</span><div><select class="k-recur-weekday" title="#:messages.day#"></select></div></label></li></ul></li></ul># } else if (frequency === "yearly") { #<ul class="k-recur-items-wrap"><li class="k-item"><label class="k-label"><span class="k-item-title">#:messages.repeatBy#</span><div class="k-repeat-rule"></div></label></li><li class="k-monthday-view k-item" style="display:none"><label class="k-label"><span class="k-item-title">#:messages.day#</span><div><input class="k-recur-monthday" type="number" title="#:messages.day#" pattern="\\\\d*"/></div></label></li><li class="k-weekday-view k-item" style="display:none"><ul class="k-recur-items-wrap"><li class="k-item"><label class="k-label"><span class="k-item-title">#:messages.every#</span><div><select class="k-recur-weekday-offset" title="#:messages.every#"></select></div></label></li><li class="k-item"><label class="k-label"><span class="k-item-title">#:messages.day#</span><div><select class="k-recur-weekday" title="#:messages.day#"></select></div></label></li></ul></li><li class="k-item"><label class="k-label"><span class="k-item-title">#:messages.month#</span><div><select class="k-recur-month" title="#:messages.month#"></select></div></label></li></ul># } #'),U=G.template('# if (endPattern === "count") { #<label class="k-label"><span class="k-item-title">#:messages.after#</span><div><input class="k-recur-count" type="number" pattern="\\\\d*" /></div></label># } else if (endPattern === "until") { #<label class="k-label"><span class="k-item-title">#:messages.on#</span><div><input type="date" class="k-recur-until" /></div></label># } #'),q=G.template('<select class="k-scheduler-select">#for (var i = 0, length = dataSource.length; i < length; i++) {#<option value="#=dataSource[i].value#" #= value === dataSource[i].value ? "selected" : "" #>#:dataSource[i].text#</option>#}#</select>'),j=N.extend({init:function(e,t){var n=this;N.fn.init.call(n,e,t),t=n.options,n._optionTemplate=G.template('<option value="#:value#">#:text#</option>'),n.value(t.value),n._pane=t.pane,n._initRepeatButton(),n._initParentRepeatEnd(),n._defaultValue=n._value},options:{name:"MobileRecurrenceEditor",animations:{left:"slide",right:"slide:right"},mobile:!0,messages:{cancel:"Cancel",update:"Save",endTitle:"Repeat ends",repeatTitle:"Repeat pattern",headerTitle:"Repeat event",end:{patterns:{never:"Never",after:"After...",on:"On..."},never:"Never",after:"End repeat after",on:"End repeat on"},daily:{interval:""},hourly:{interval:""},weekly:{interval:""},monthly:{interval:"",repeatBy:"Repeat by: ",dayOfMonth:"Day of the month",dayOfWeek:"Day of the week",repeatEvery:"Repeat every",every:"Every",day:"Day "},yearly:{interval:"",repeatBy:"Repeat by: ",dayOfMonth:"Day of the month",dayOfWeek:"Day of the week",repeatEvery:"Repeat every: ",every:"Every",month:"Month",day:"Day"}}},events:["change"],value:function(e){var n=this,i=n.options.timezone;return e===t?n._value.freq?F(n._value,i):"":(n._value=I(e,i)||{},t)},destroy:function(){this._destroyView(),G.destroy(this._endFields),this.element.off(ke+this._namespace),N.fn.destroy.call(this)},_initInterval:function(){var e=this,t=e._value;e._container.find(".k-recur-interval").val(e._value.interval||1).on(ye+e._namespace,function(n){t.interval=n.target.value,e._trigger()})},_initRepeatButton:function(){var t=this,n=t.options.messages.frequencies[this._value.freq||"never"];t._chevronButton=e('<span class="k-icon k-i-arrow-chevron-right"></span>'),t._repeatValue=e('<span class="">'+n+"</span>"),t.element.append(t._repeatValue).append(t._chevronButton),t.element.parents("li.k-item").on(ke+t._namespace,function(e){e.preventDefault(),t._createView("repeat"),t._pane.navigate(t._view,t.options.animations.left)})},_endLiItem:function(){var e=this;return'<li class="k-item"><label class="k-label"><span class="k-item-title">'+e.options.messages.end.mobileLabel+"</span><label></li>"},_initParentRepeatEnd:function(){var t=this,n=e(t._endLiItem()).insertAfter(t.element.parents("li.k-item")),i=e('<div class="k-scheduler-recur-end-wrap"><span class="k-scheduler-recur-end"></span></div>').appendTo(n.find(".k-label"));n.on(ke+t._namespace,function(e){e.preventDefault(),t._navigateToView("repeat")}),t._endParentLabelField=n.toggle(!!t._value.freq),t._endParentEndButton=i.find(".k-scheduler-recur-end").text(t._endText())},_initRepeatEnd:function(){var t=this,n=e(t._endLiItem()).insertAfter(t._container),i=e('<div class="k-scheduler-recur-end-wrap"><span class="k-scheduler-recur-end"></span><span class="k-icon k-i-arrow-chevron-right"></span></div>').appendTo(n.find(".k-label"));n.on(ke+t._namespace,function(e){e.preventDefault(),t._navigateToView("end")}),t._endLabelField=n.toggleClass("k-state-disabled",!t._value.freq),t._endButton=i.find(".k-scheduler-recur-end").text(t._endText())},_navigateToView:function(e){var t=this;t._createView(e),t._pane.navigate(t._view,t.options.animations.left)},_endText:function(){var e=this._value,t=this.options.messages.end,n=t.never;return e.count?n=G.format("{0} {1}",t.after,e.count):e.until&&(n=G.format("{0} {1:d}",t.on,e.until)),n},_initFrequency:function(){var t=this,n=t.options.messages.frequencies,i=q({dataSource:e.map(this.options.frequencies,function(e){return{text:n[e],value:"never"!==e?e:""}}),value:t._value.freq||"",ns:G.ns});t._view.element.find(".k-recur-pattern").append(i),t._view.element.find(".k-scheduler-select").on(ye+t._namespace,function(e){var n=e.target.value;t._value={freq:n},t._initRepeatView(!0)})},_initEndNavigation:function(){var e,t=this,n=t.options.messages.end.patterns,i=t._value,o="";i.count?o="count":i.until&&(o="until"),e=q({dataSource:[{text:n.never,value:""},{text:n.after,value:"count"},{text:n.on,value:"until"}],value:o,ns:G.ns}),t._view.element.find(".k-recur-pattern").append(e),t._view.element.find(".k-scheduler-select").on(ye+t._namespace,function(e){var n=e.target.value,o=null,r=null;t._initEndView(n),t._count.length?(o=t._count.val(),r=null):t._until.length&&(o=null,r=t._until.val?G.parseDate(t._until.val(),"yyyy-MM-dd"):t._until.value()),i.count=o,i.until=r})},_createView:function(t){var n=this,i=n.options,o=i.messages,r=o["repeat"===t?"repeatTitle":"endTitle"],a='<div data-role="view" class="k-popup-edit-form k-scheduler-edit-form k-mobile-list" id="recurrence"><div data-role="header" class="k-header"><a href="#" class="k-header-cancel k-scheduler-cancel k-link" title="'+o.cancel+'"aria-label="'+o.cancel+'"><span class="k-icon k-i-arrow-chevron-left"></span></a>'+o.headerTitle+'<a href="#" class="k-header-done k-scheduler-update k-link" title="'+o.update+'" aria-label="'+o.update+'"><span class="k-icon k-i-check"></span></a></div>',s=n._pane.view().id;n._view=n._pane.append(a+V({headerTitle:r})),n._view.element.on(ke+n._namespace,"a.k-scheduler-cancel, a.k-scheduler-update",function(t){t.preventDefault(),t.stopPropagation(),e(this).hasClass("k-scheduler-update")?(n.trigger("change"),n._defaultValue=e.extend({},n._value)):n._value=n._defaultValue;var i=n._value.freq;n._endParentEndButton.text(n._endText()),n._endParentLabelField.toggle(!!i&&"never"!==i),n._endButton.text(n._endText()),n._repeatValue.text(o.frequencies[i||"never"]),n._pane.one("viewShow",function(){n._destroyView()}),n._pane.navigate(s,n.options.animations.right)}),n._container=n._view.element.find(".k-recur-view"),"repeat"===t?(n._initFrequency(),n._initRepeatView(!0),n._initRepeatEnd()):(n._initEndNavigation(),n._initEndView())},_destroyView:function(){this._view&&(this._view.destroy(),this._view.element.remove(),this._container=null),this._view=null},_initRepeatView:function(e){var n=this,i=n._value.freq||"never",o={frequency:i,weekDayCheckBoxes:e?P:R,firstWeekDay:n.options.firstWeekDay,messages:n.options.messages[i]},r=W(o),a=n._container=n._container||this._pane.view().content.find("li.k-recur-view"),s=n._value;return n._endLabelField&&n._endLabelField.toggleClass("k-state-disabled","never"===i),G.destroy(a),a.html(r),r?(a.show(),"weekly"!==i||s.weekDays||(s.weekDays=[{day:n.options.start.getDay(),offset:0}]),n._initInterval(),n._initMonthDay(),n._initWeekDays(),n._initWeekDay(),n._initMonth(),n._period(),t):(n._value={},a.hide(),t)},_initMonthDay:function(){var e=this,t=e._value,n=e._monthDay=e._container.find(".k-recur-monthday");n.attr({min:1,max:31}).val(t.monthDays?t.monthDays[0]:e.options.start.getDate()).on(ye+e._namespace,function(n){t.count=n.target.value,e._trigger()})},_initCount:function(){var e=this,t=e._count=e._container.find(".k-recur-count"),n=e._value;t.val(n.count||1).on(ye+e._namespace,function(t){n.count=t.target.value,e._trigger()})},_initEndView:function(e){var n,i=this,o=i._value;e===t&&(o.count?e="count":o.until&&(e="until")),n={endPattern:e,messages:i.options.messages.end},G.destroy(i._container),i._container.html(U(n)),i._initCount(),i._initUntil()},_initWeekDay:function(){var t,n=this,i=n.options.messages.weekdays,o=n.options.messages.offsetPositions,r=n._container.find(".k-recur-weekday"),a=function(){n._weekDayRule(),n.trigger("change")};r[0]&&(n._weekDayOffset=n._container.find(".k-recur-weekday-offset").html(n._options([{text:o.first,value:"1"},{text:o.second,value:"2"},{text:o.third,value:"3"},{text:o.fourth,value:"4"},{text:o.last,value:"-1"}])).change(a),t=[{text:i.day,value:"day"},{text:i.weekday,value:"weekday"},{text:i.weekend,value:"weekend"}],t=t.concat(e.map(G.culture().calendar.days.names,function(e,t){return{text:e,value:t}})),n._weekDay=r.html(n._options(t)).change(a).val(n.options.start.getDay()),n._weekDayView())},_initMonth:function(){var t,n=this,i=n._value,o=n.options.start,r=i.months||[o.getMonth()+1],a=n._container.find(".k-recur-month"),s=G.culture().calendar.months.names;a[0]&&(t=e.map(s,function(e,t){return{text:e,value:t+1}}),a.html(n._options(t)).change(function(){i.months=[+this.value]}),n._monthSelect=a,r&&a.val(r[0]))},_period:function(){var e,t,n,i=this,o=i._value,r=i._container,a=i.options.messages[o.freq],s=r.find(".k-repeat-rule"),l=r.find(".k-weekday-view"),c=r.find(".k-monthday-view");s[0]&&(e=o.weekDays?"weekday":"monthday",t=q({value:e,dataSource:[{text:a.dayOfMonth,value:"monthday"},{text:a.dayOfWeek,value:"weekday"}],ns:G.ns}),n=function(e){var t=i._weekDay.val(),n=i._weekDayOffset.val(),r=i._monthDay.val(),a=i._monthSelect?i._monthSelect.val():null;"monthday"===e?(o.weekDays=null,o.monthDays=r?[r]:r,o.months=a?[+a]:a,l.hide(),c.show()):(o.monthDays=null,o.months=a?[+a]:a,o.weekDays=[{offset:+n,day:+t}],l.show(),c.hide())},s.append(t),s.find(".k-scheduler-select").on(ye+i._namespace,function(e){n(e.target.value)}),n(e))},_initUntil:function(){var e=this,t=e._container.find(".k-recur-until"),n=e.options.start,i=e._value,o=i.until,r=o&&o<n?o:n;e._until=G.support.input.date?t.attr("min",G.toString(r,"yyyy-MM-dd")).val(G.toString(o||n,"yyyy-MM-dd")).on("change",function(){i.until=G.parseDate(this.value,"yyyy-MM-dd")}):t.kendoDatePicker({min:r,value:o||n,change:function(){i.until=this.value()}}).data("kendoDatePicker")},_options:function(e,t){var n=0,i="",o=e.length,r=this._optionTemplate;for(t&&(i+=r({value:"",text:t}));n<o;n++)i+=r(e[n]);return i}}),K.plugin(j)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.scheduler.timelineview.min",["kendo.scheduler.view.min"],e)}(function(){return function(e,t){function n(e){var t=new Date(1980,1,1,0,0,0);return d(t,v(e)),t}function i(e){var t=[],n=e.workWeekStart%7,i=Math.abs(e.workWeekEnd%7);for(t.push(n);i!=n;)n>6?n-=7:n++,t.push(n);return t}function o(e){var t,n=0;if(e.columns){for(t=0;t<e.columns.length;t++)n+=o(e.columns[t]);return e.colspan=n,n}return e.colspan=1,1}function r(e,t,n){var i,o,r,s;for(i=e.length-1;i>=0;i--)o=e[i].rectLeft,s=e[i].rectRight,r=o<=t&&s>=t,(r||o>=t&&s<=n||t<=o&&n>=o)&&(o<t&&(t=o),s>n&&(n=s));return a(e,t,n)}function a(e,t,n){var i,o,r=[];for(i=0;i<e.length;i++)o={rectLeft:e[i].rectLeft,rectRight:e[i].rectRight},(o.rectLeft<t&&o.rectRight>t||o.rectLeft>=t&&o.rectRight<=n)&&r.push(e[i]);return r}var s,l=window.kendo,c=l.ui,d=l.date.setTime,u=c.SchedulerView,h=l._outerWidth,p=l._outerHeight,f=e.extend,g=e.proxy,m=l.date.getDate,v=l.date.getMilliseconds,_=l.date.MS_PER_DAY,b=l.date.MS_PER_MINUTE,w="k-current-time",k="k-current-time-arrow",y="k-scheduler-header-wrap",x="k-event-inverse",C=.8666,S=".kendoTimelineView",T=l.template('<div><div class="k-event-template k-event-time">#:kendo.format("{0:t} - {1:t}", start, end)#</div><div class="k-event-template">${title}</div></div>'),D=l.template("<span class='k-link k-nav-day'>#=kendo.format('{0:m}', date)#</span>"),A='<div role="gridcell" aria-selected="false" data-#=ns#uid="#=uid#"#if (resources[0]) { #style="background-color:#=resources[0].color#; border-color: #=resources[0].color#"class="k-event" #} else {#class="k-event"#}#><span class="k-event-actions"># if(data.tail) {#<span class="k-icon k-i-arrow-60-left"></span>#}## if(data.isException()) {#<span class="k-icon k-i-non-recurrence"></span># } else if(data.isRecurring()) {#<span class="k-icon k-i-reload"></span># } #</span>{0}<span class="k-event-actions">#if (showDelete) {#<a href="\\#" class="k-link k-event-delete" title="${data.messages.destroy}" aria-label="${data.messages.destroy}"><span class="k-icon k-i-close"></span></a>#}## if(data.head) {#<span class="k-icon k-i-arrow-60-right"></span>#}#</span>#if(resizable && !data.tail){#<span class="k-resize-handle k-resize-w"></span>#}##if(resizable && !data.head){#<span class="k-resize-handle k-resize-e"></span>#}#</div>',E=l.Class.extend({init:function(e){this._view=e},_getTimeSlotByPosition:function(e,t,n){var i=this._view.groups[n];return i.timeSlotByPosition(e,t)},_hideHeaders:function(){var e=this._view;e.timesHeader.find("table tr:last").hide(),e.datesHeader.find("table tr:last").hide()},_setColspan:function(e){o(e)},_createRowsLayout:function(e,t,n){var i=this._view;return i._createRowsLayout(e,t,n)},_createVerticalColumnsLayout:function(e,t,n,i){return i},_createColumnsLayout:function(e,t,n){var i=this._view;return i._createColumnsLayout(e,t,n)},_getRowCount:function(){var e=this._view;return e._groupCount()},_getGroupsCount:function(){return 1},_addContent:function(e,t,n,i,o,r,a,s){var c,d,u,h,p=this._view,f="",g=p.options,m=function(t){var n,i="",o="",r=function(e){return function(){return p._resourceBySlot({groupIndex:e})}};return l.date.isToday(e[u])&&(o+="k-today"),(l.date.getMilliseconds(t)<l.date.getMilliseconds(g.workDayStart)||l.date.getMilliseconds(t)>=l.date.getMilliseconds(g.workDayEnd)||!p._isWorkDay(e[u]))&&(o+=" k-nonwork-hour"),i+="<td"+(""!==o?' class="'+o+'"':"")+">",n=l.date.getDate(e[u]),l.date.setTime(n,l.date.getMilliseconds(t)),i+=a({date:n,resources:r(s?c:d)}),i+="</td>"};for(c=0;c<i;c++){for(f+="<tr>",d=0;d<n;d++)for(u=0,h=t;u<h;u++)f+=p._forTimeRange(o,r,m);f+="</tr>"}return f},_addTimeSlotsCollections:function(e,t,n,i,o){var r,a,s,l,c,d,u,h,p,f,g,m,_=this._view,b=n.length;for(o&&(b=Math.floor(b/e)),r=0;r<e;r++)for(a=0,s=_.groups[r],o&&(a=r),c=a*b,d=0,o||(d=r),u=n[c].children,h=u.length/(o?1:e),p=h/t,f=0;f<t;f++)for(g=f*p+h*d,l=v(new Date((+_.startTime()))),m=0;m<p;m++)_._addTimeSlotToCollection(s,u,m,g,f,l,i),l+=i},_getVerticalGroupCount:function(e){return e},_getVerticalRowCount:function(e,t,n){var i=this._view;return i._isVerticallyGrouped()?e[t].maxRowCount:n},_renderEvent:function(e,t,n,i,o,r){var a,s=this._view,l=s._createEventElement(n.occurrence,t,o.head||n.head,o.tail||n.tail);l.appendTo(r).css({top:0,height:s.options.eventHeight}),a={start:n.occurrence._startTime||n.occurrence.start,end:n.occurrence._endTime||n.occurrence.end,element:l,uid:t.uid,slotRange:o,rowIndex:0,offsetTop:0},e.events[t.uid]=a,s._inverseEventColor(l),s.addContinuousEvent(i,o,l,t.isAllDay),s._arrangeRows(a,o,e)},_verticalCountForLevel:function(e){var t=this._view;return t._rowCountForLevel(e)},_horizontalCountForLevel:function(e){var t=this._view;return t._columnCountForLevel(e)},_updateCurrentVerticalTimeMarker:function(t,n){var i=this._view,o="<div class='"+w+"'></div>",r=i.datesHeader.find("."+y),a=Math.round(t[0].innerRect(n,new Date(n.getTime()+1),!1).left),s=e(o).prependTo(r).addClass(k+"-down");s.css({left:i._adjustLeftPosition(a-h(s)*C/2),top:r.find("tr:last").prev().position().top}),e(o).prependTo(i.content).css({left:i._adjustLeftPosition(a),width:"1px",height:i.content[0].scrollHeight-1,top:0})},_changeGroup:function(){return t},_prevGroupSlot:function(e,t,n){var i,o=this._view;return o._isVerticallyGrouped()?e:(i=t._collection(0,n),i.last())},_nextGroupSlot:function(e,t,n){var i,o=this._view;return o._isVerticallyGrouped()?e:(i=t._collection(0,n),i.first())},_verticalSlots:function(e,t){var n=this._view;return n._changeGroup(e,t)},_verticalMethod:function(e){return e?"leftSlot":"rightSlot"},_normalizeVerticalSelection:function(){return t},_horizontalSlots:function(e,t,n,i,o,r,a){var s=this._view,l={};return l.startSlot=t[n](i),l.endSlot=t[n](o),r||!s._isHorizontallyGrouped()||l.startSlot&&l.endSlot||(l.startSlot=l.endSlot=s._changeGroup(e,a)),l},_changeVerticalViewPeriod:function(){return!1},_changeHorizontalViewPeriod:function(e,t,n,i){var o=this._view;return!(e.startSlot&&e.endSlot||t||!o._changeViewPeriod(n,i,!1))},_updateDirection:function(e,t,n,i){var o=this._view;o._updateDirection(e,t,n,i,!0)},_createMoveHint:function(e,t){var n,i,o,r,a=this._view,s=e.start,l=a._createEventElement(t.occurrence,t.occurrence,!1,!1);l.addClass("k-event-drag-hint"),n=e.innerRect(t.occurrence.start,t.occurrence.end,a.options.snap),i=n.right-n.left-2,i<0&&(i=0),o=a._adjustLeftPosition(n.left),r={left:o,top:s.offsetTop,height:s.offsetHeight-2,width:i},l.css(r),t.occurrence.inverseColor&&l.addClass(x),a._appendMoveHint(l)},_adjustLeftPosition:function(e){var t=this._view;return t._isRtl&&(e-=t.content[0].scrollWidth-t.content[0].clientWidth),e}}),I=l.Class.extend({init:function(e){this._view=e},_getTimeSlotByPosition:function(e,t,n){var i=this._view.groups[n];return i.timeSlotByPosition(e,t,!0)},_hideHeaders:function(){var e=this._view;e._isVerticallyGrouped()?e.times.find(".k-last").hide():(e.timesHeader.find("table tr").eq(2).hide(),e.datesHeader.find("table tr").eq(2).hide())},_setColspan:function(){},_createRowsLayout:function(e,t,n,i){var o=this._view;return o._createDateLayout(i,null,!0)},_createVerticalColumnsLayout:function(e,t,n){var i=this._view;return i._createColumnsLayout(e,null,n)},_createColumnsLayout:function(e,t,n,i){var o=this._view;return o._createColumnsLayout(e,t,n,i,!0)},_getRowCount:function(e){var t=this._view;return t._rowCountForLevel(e)},_getGroupsCount:function(){var e=this._view;return e._groupCount()},_addContent:function(e,t,n,i,o,r,a,s){var c,u,h,p,f=this._view,g="",m=f.options,v=function(t,n,i,o,r,s){var d,u="",p="",g=f._isVerticallyGrouped()?c:h,v=function(e){return function(){return f._resourceBySlot({groupIndex:e})}};return l.date.isToday(e[h])&&(p+="k-today"),(l.date.getMilliseconds(t)<l.date.getMilliseconds(m.workDayStart)||l.date.getMilliseconds(t)>=l.date.getMilliseconds(m.workDayEnd)||!f._isWorkDay(e[g]))&&(p+=" k-nonwork-hour"),u+="<td"+(""!==p?' class="'+p+'"':"")+">",d=l.date.getDate(e[h]),l.date.setTime(d,l.date.getMilliseconds(t)),u+=a({date:d,resources:v(s)}),u+="</td>"},_=new Date(o),w=f.options.minorTickCount,k=f.options.majorTick*b,y=k/w||1;for(u=0;u<i;u++){for(g+="<tr>",u%(i/f._dates.length)===0&&(c=u/(i/f._dates.length),_=new Date(f._dates[c]),l.date.setTime(_,l.date.getMilliseconds(o))),h=0,p=t;h<p;h++)if(g+=f._forTimeRange(_,r,v,s,n),s){d(_,y,!1);break}g+="</tr>"}return g},_addTimeSlotsCollections:function(e,t,n,i,o){var r,a,s,l,c,d,u,h,p,f,g,m,_=this._view,b=n.length;for(o&&(b/=t),r=0;r<t;r++)for(a=0,o&&(a=r),l=a*b,c=0,d=n[l].children,u=o?b:d.length/(t*e),h=d.length/t,s=v(new Date((+_.startTime()))),f=0;f<u;f++){for(o?(p=0,d=n[f+u*r].children):(p=r*h+e*f,c++),g=0;g<e;g++)m=_.groups[g],_._addTimeSlotToCollection(m,d,g,p,r,s,i);s+=i}},_getVerticalGroupCount:function(){var e=this._view;return e.content.find("tr").length},_getVerticalRowCount:function(e,t,n){return n},_renderEvent:function(e,t,n,i,o,r,a,s){var l,c,d,u,h,p=this._view,f=[];for(c=o.start.index;c<=o.end.index;c++)l=p._createEventElement(n.occurrence,t,c!==s,c!==a),l.appendTo(r).css({top:0,height:p.options.eventHeight}),d=i._timeSlotCollections[0]._slots[c],u=i.timeSlotRanges(d.start,d.end,!1)[0],h={start:c===a?n.occurrence._startTime||n.occurrence.start:d.start,end:c===s?n.occurrence._endTime||n.occurrence.end:d.end,element:l,uid:t.uid,slotRange:u,rowIndex:0,offsetTop:0},e.events[t.uid]=h,f.push(h),p.addContinuousEvent(i,u,l,t.isAllDay),p._arrangeRows(h,u,e);e.events[t.uid]=f},_verticalCountForLevel:function(e){var t=this._view;return t._columnCountForLevel(e)},_horizontalCountForLevel:function(e,t){var n=this._view;return n._columnCountForLevel(t)/n._columnCountForLevel(2)},_updateCurrentVerticalTimeMarker:function(t,n){var i=this._view,o=i.times.find("tr:first th:first"),r=i.times.find("tr:first th:last"),a="<div class='"+w+"'></div>",s=e(a).prependTo(i.times),l=Math.round(t[0].innerRect(n,new Date(n.getTime()+1),!1).top),c={};this._isRtl?(c.right=o.position().left+p(o)-p(r),s.addClass(k+"-left")):(c.left=r.position().left,s.addClass(k+"-right")),c.top=l-h(s)*C/2,s.css(c),e(a).prependTo(i.content).css({top:l,height:"1px",right:"1px",width:i.content[0].scrollWidth,left:0})},_changeGroup:function(e,t,n){var i=this._view;n||(e.groupIndex=t?i.groups.length-1:0)},_prevGroupSlot:function(e){return e},_nextGroupSlot:function(e){return e},_changeDate:function(e,t,n){var i,o,r=this._view,a=r.groups[e.groupIndex];if(t){if(i=a._getCollections(!1),o=n.index-1,o>=0)return i[0]._slots[o]}else if(i=a._getCollections(!1),o=n.index+1,i[0]&&i[0]._slots[o])return i[0]._slots[o]},_verticalSlots:function(e,t,n){return this._changeDate(e,t,n)},_verticalMethod:function(e,t){return t?e?"upSlot":"downSlot":e?"leftSlot":"rightSlot"},_normalizeVerticalSelection:function(e,n,i,o){var r=this._view;return o?t:r._normalizeVerticalSelection(e,n,i)},_horizontalSlots:function(e,t,n,i,o,r,a){var s=this._view,l=s._changeGroup(e,a),c={};return l?c.startSlot=c.endSlot=l:s._isVerticallyGrouped()||(c.startSlot=t[n](i),c.endSlot=t[n](o)),c},_changeVerticalViewPeriod:function(e,t,n,i){var o=this._view;return!(e.startSlot&&e.endSlot||t||!o._changeViewPeriod(n,i,o._isVerticallyGrouped()))},_changeHorizontalViewPeriod:function(e,t,n,i){var o=this._view;return!o._isVerticallyGrouped()&&!(e.startSlot&&e.endSlot||t||!o._changeViewPeriod(n,i,!1))},_updateDirection:function(e,t,n,i){var o=this._view;o._updateDirection(e,t,n,i,!o._isVerticallyGrouped())},_createMoveHint:function(e,t){var n,i,o,r,a=this._view,s=e.start,l=e.end;for(n=s.index;n<=l.index;n++)i=e.collection._slots[n],o=a._createEventElement(t.occurrence,t.occurrence,!1,!1),o.addClass("k-event-drag-hint"),r={left:i.offsetLeft+2,top:i.offsetTop,height:a.options.eventHeight,width:i.offsetWidth},o.css(r),t.occurrence.inverseColor&&o.addClass(x),a._appendMoveHint(o)},_adjustLeftPosition:function(e){var t=this._view;return t._isRtl&&!t._isVerticallyGrouped()&&(e-=t.content[0].scrollWidth-t.content[0].offsetWidth),e}});l.ui.scheduler.TimelineGroupedView=E,l.ui.scheduler.TimelineGroupedByDateView=I,s=u.extend({init:function(e,t){var n=this;u.fn.init.call(n,e,t),n._groupedView=n._getGroupedView(),n.title=n.options.title||n.options.name,n._workDays=i(n.options),n._templates(),n._editable(),n.calculateDateRange(),n._groups(),n._currentTime(!0)},name:"timeline",_getGroupedView:function(){return this._isGroupedByDate()?new l.ui.scheduler.TimelineGroupedByDateView(this):new l.ui.scheduler.TimelineGroupedView(this)},_getNextEventIndexBySlot:function(e,t,n){var i,o;if(this._isVerticallyGrouped())return l.ui.SchedulerView.fn._getNextEventIndexBySlot.call(this,e,t,n);for(i=0,o=0;o<t.length;o++)if(e.startDate()>t[o].start.startDate())i++;else{if(!(e.startDate().getTime()===t[o].start.startDate().getTime()&&n>t[o].start.groupIndex))break;i++}return i},_getSelectedSlot:function(e,t,n,i,o,r){return this._isVerticallyGrouped()?l.ui.SchedulerView.fn._getSelectedSlot.call(this,e,t,n,i,o,r):e},_getSortedEvents:function(t){return this._isVerticallyGrouped()?l.ui.SchedulerView.fn._getSortedEvents.call(this,t):t.sort(function(t,n){var i=t.start.startDate().getTime()-n.start.startDate().getTime();return 0===i&&(t.start.isDaySlot&&!n.start.isDaySlot&&(i=-1),!t.start.isDaySlot&&n.start.isDaySlot&&(i=1)),0===i&&(i=t.start.groupIndex-n.start.groupIndex),0===i&&(i=e(t.element).index()-e(n.element).index()),i})},_currentTimeMarkerUpdater:function(){this._updateCurrentTimeMarker(new Date)},_updateCurrentTimeMarker:function(t){var n,i,o,r,a,s,c,d,u,p,f,g,m,v=this.options;if(this.datesHeader.find("."+w).remove(),this.times.find("."+w).remove(),this.content.find("."+w).remove(),this._isInDateSlot({start:t,end:t}))for(v.currentTimeMarker.useLocalTimezone===!1&&(n=v.dataSource.options.schema.timezone,v.dataSource&&n&&(i=l.timezone.offset(t,n), +t=l.timezone.convert(t,t.getTimezoneOffset(),i))),o=v.group&&"vertical"!=v.group.orientation?this.groups.length:1,r=0;r<o;r++){if(a=this.groups[r],!a)return;if(s=l.date.toUtcTime(t),c=a.timeSlotRanges(s,s+1),0===c.length)return;d=c[0].collection,u=d.slotByStartDate(t),u&&(this._isVerticallyGrouped()?this._groupedView._updateCurrentVerticalTimeMarker(c,t):(p="<div class='"+w+"'></div>",f=this.datesHeader.find("."+y),g=Math.round(c[0].innerRect(t,new Date(t.getTime()+1),!1).left),m=e(p).prependTo(f).addClass(k+"-down"),m.css({left:this._adjustLeftPosition(g-h(m)*C/2),top:f.find("tr:last").prev().position().top}),e(p).prependTo(this.content).css({left:this._adjustLeftPosition(g),width:"1px",height:this.content[0].scrollHeight-1,top:0})))}},_adjustLeftPosition:function(e){return this._groupedView._adjustLeftPosition(e)},_currentTime:function(e){var n=this,i=n.options.currentTimeMarker;i!==!1&&i.updateInterval!==t&&(n._currentTimeMarkerUpdater(),e&&(n._currentTimeUpdateTimer=setInterval(g(this._currentTimeMarkerUpdater,n),i.updateInterval)))},_editable:function(){this.options.editable&&(this._isMobile()?this._touchEditable():this._mouseEditable())},_mouseEditable:function(){var t=this;t.element.on("click"+S,".k-event a:has(.k-i-close)",function(n){t.trigger("remove",{uid:e(this).closest(".k-event").attr(l.attr("uid"))}),n.preventDefault()}),t.options.editable.create!==!1&&t.element.on("dblclick"+S,".k-scheduler-content td",function(e){var n,i=t._slotByPosition(e.pageX,e.pageY);i&&(n=t._resourceBySlot(i),t.trigger("add",{eventInfo:f({start:i.startDate(),end:i.endDate()},n)})),e.preventDefault()}),t.options.editable.update!==!1&&t.element.on("dblclick"+S,".k-event",function(n){t.trigger("edit",{uid:e(this).closest(".k-event").attr(l.attr("uid"))}),n.preventDefault()})},_touchEditable:function(){var n=this,i=0;l.support.mobileOS.android&&(i=5),n.options.editable.create!==!1&&(n._addUserEvents=new l.UserEvents(n.element,{threshold:i,useClickAsTap:!l.support.browser.edge,filter:".k-scheduler-content td",tap:function(e){var i,o,r,a;n._scrolling||(i=e.x.location!==t?e.x.location:e.x,o=e.y.location!==t?e.y.location:e.y,r=n._slotByPosition(i,o),r&&(a=n._resourceBySlot(r),n.trigger("add",{eventInfo:f({start:r.startDate(),end:r.endDate()},a)})),e.preventDefault())}})),n.options.editable.update!==!1&&(n._editUserEvents=new l.UserEvents(n.element,{threshold:i,useClickAsTap:!l.support.browser.edge,filter:".k-event",tap:function(t){var i,o;n._scrolling||(i=e(t.target).closest(".k-event"),o=e(t.touch.initialTouch),o.hasClass("k-i-close")?n.trigger("remove",{uid:i.attr(l.attr("uid"))}):i.hasClass("k-event-active")||n.trigger("edit",{uid:i.attr(l.attr("uid"))}),t.preventDefault())}}))},_slotByPosition:function(e,t){var n,i,o,r=this.content,a=r.offset();for(e-=a.left,t-=a.top,this._isRtl?(o=l.support.browser,o.mozilla?(e+=r[0].scrollWidth-r[0].offsetWidth,e+=r[0].scrollLeft):o.msie?(e-=r.scrollLeft(),e+=r[0].scrollWidth-r[0].offsetWidth):o.webkit&&(e+=r[0].scrollLeft)):e+=r[0].scrollLeft,t+=r[0].scrollTop,e=Math.ceil(e),t=Math.ceil(t),i=0;i<this.groups.length;i++)if(n=this._groupedView._getTimeSlotByPosition(e,t,i))return n;return null},options:{name:"TimelineView",title:"Timeline",selectedDateFormat:"{0:D}",selectedShortDateFormat:"{0:d}",selectedMobileDateFormat:"{0:MMM dd}",date:l.date.today(),startTime:l.date.today(),endTime:l.date.today(),showWorkHours:!1,minorTickCount:2,editable:!0,workDayStart:new Date(1980,1,1,8,0,0),workDayEnd:new Date(1980,1,1,17,0,0),workWeekStart:1,workWeekEnd:5,majorTick:60,eventHeight:25,eventMinWidth:0,columnWidth:100,groupHeaderTemplate:"#=text#",majorTimeHeaderTemplate:"#=kendo.toString(date, 't')#",slotTemplate:" ",eventTemplate:T,dateHeaderTemplate:D,footer:{command:"workDay"},currentTimeMarker:{updateInterval:1e4,useLocalTimezone:!0},messages:{defaultRowText:"All events",showFullDay:"Show full day",showWorkDay:"Show business hours"}},events:["remove","add","edit"],_templates:function(){var e=this.options,t=f({},l.Template,e.templateSettings);this.eventTemplate=this._eventTmpl(e.eventTemplate,A),this.majorTimeHeaderTemplate=l.template(e.majorTimeHeaderTemplate,t),this.dateHeaderTemplate=l.template(e.dateHeaderTemplate,t),this.slotTemplate=l.template(e.slotTemplate,t),this.groupHeaderTemplate=l.template(e.groupHeaderTemplate,t)},_render:function(t){var n=this;t=t||[],n._dates=t,n._startDate=t[0],n._endDate=t[t.length-1||0],n._calculateSlotRanges(),n.createLayout(n._layout(t)),n._content(t),n._footer(),n._setContentWidth(),n.refreshLayout(),n.datesHeader.on("click"+S,".k-nav-day",function(t){var i=e(t.currentTarget).closest("th"),o=n._slotByPosition(i.offset().left,n.content.offset().top);n.trigger("navigate",{view:"timeline",date:o.startDate()})}),n._groupedView._hideHeaders()},_setContentWidth:function(){var e=this.content,t=e.width(),n=this.content.find("table"),i=n.find("tr:first").children().length,o=100,r=i*this.options.columnWidth;t<r&&(o=Math.ceil(r/t*100)),n.add(this.datesHeader.find("table")).css("width",o+"%")},_calculateSlotRanges:function(){var e,t,n,i,o=this._dates,r=this.startTime(),a=this.endTime();for(a=v(a),r=v(r),a===r?a+=_-1:a<r&&(a+=_),e=[],t=0;t<o.length;t++)n=m(o[t]),d(n,r),i=m(o[t]),d(i,a),e.push({start:l.date.toUtcTime(n),end:l.date.toUtcTime(i)});this._slotRanges=e},_forTimeRange:function(e,t,i,o,r){var a,s,l,c,u,h,p,f,g,m,w,k,y,x,C,S;for(e=n(e),t=n(t),a=this,s=v(e),l=v(t),c=a.options.minorTickCount,u=a.options.majorTick*b,h=u/c||1,p=new Date((+e)),f=0,m="",g=_/h,s!=l&&(s>l&&(l+=_),g=(l-s)/h),g=o?1:Math.round(g),r&&(g*=r);f<g;f++)w=f%(u/h),k=0===w,y=w<c-1,x=w===c-1,C=c,g%c!==0&&(S=g-(f+1)<c,k&&S&&(C=g%c)),m+=i(p,k,y,x,C,f%r),o||(r?f%r===r-1&&d(p,h,!1):d(p,h,!1));return m},_layout:function(e){var t,n,i,o=[],r=[],a=this,s=[{text:a.options.messages.defaultRowText}],l=a._groupedView,c=[];for(t=0;t<a.options.minorTickCount;t++)c.push({text:"​",className:"k-last",minorTicks:!0});for(this._forTimeRange(a.startTime(),a.endTime(),function(e,t,n,i,r){var s,d=a.majorTimeHeaderTemplate;t&&(s={text:d({date:e}),className:i?"k-slot-cell":"",columns:c.slice(0,r)},l._setColspan(s),o.push(s))}),n=0;n<e.length;n++)r.push({text:a.dateHeaderTemplate({date:e[n]}),className:"k-slot-cell",columns:o.slice(0)});return i=this.groupedResources,i.length&&("vertical"===this._groupOrientation()?(s=l._createRowsLayout(i,null,this.groupHeaderTemplate,r),r=l._createVerticalColumnsLayout(i,null,this.groupHeaderTemplate,r)):r=l._createColumnsLayout(i,r,this.groupHeaderTemplate,r)),{columns:r,rows:s}},_footer:function(){var t,n,i,o=this.options;o.footer!==!1&&(t='<div class="k-header k-scheduler-footer">',n=o.footer.command,this._isMobile()&&(t+='<span class="k-state-default k-scheduler-today"><a href="#" class="k-link">',t+=o.messages.today+"</a></span>"),n&&"workDay"===n?this._isMobile()?(t+='<span class="k-state-default k-scheduler-fullday"><a href="#" class="k-link">',t+=(o.showWorkHours?o.messages.showFullDay:o.messages.showWorkDay)+"</a></span>"):(t+='<ul class="k-reset k-header">',t+='<li class="k-state-default k-scheduler-fullday"><a href="#" class="k-link"><span class="k-icon k-i-clock"></span>',t+=(o.showWorkHours?o.messages.showFullDay:o.messages.showWorkDay)+"</a></li>",t+="</ul>"):t+=" ",t+="</div>",this.footer=e(t).appendTo(this.element),i=this,this.footer.on("click"+S,".k-scheduler-fullday",function(e){e.preventDefault(),i.trigger("navigate",{view:i.name||o.name,date:i.startDate(),isWorkDay:!o.showWorkHours})}),this.footer.on("click"+S,".k-scheduler-today",function(e){var t,n,r,a,s;e.preventDefault(),t=i.options.timezone,n="today",r=new Date,t?(s=l.timezone.offset(r,t),a=l.timezone.convert(r,r.getTimezoneOffset(),s)):a=r,i.trigger("navigate",{view:i.name||o.name,action:n,date:a})}))},_columnCountForLevel:function(e){var t=this.columnLevels[e];return t?t.length:0},_rowCountForLevel:function(e){var t=this.rowLevels[e];return t?t.length:0},_isWorkDay:function(e){var t,n=e.getDay(),i=this._workDays;for(t=0;t<i.length;t++)if(i[t]===n)return!0;return!1},_content:function(e){var t=this,n=t.startTime(),i=this.endTime(),o=1,r=1,a=e.length,s="",l=this.groupedResources,c=this.slotTemplate,d=!1;l.length&&(d="vertical"===t._groupOrientation(),d?(r=t._groupedView._getRowCount(this.rowLevels.length-1),o=t._groupedView._getGroupsCount()):o=t._groupCount()),s+="<tbody>",s+=t._groupedView._addContent(e,a,o,r,n,i,c,d),s+="</tbody>",this.content.find("table").append(s)},_groups:function(){var e,t,n,i,o,r,a=this._groupCount(),s=this._dates,c=s.length;for(this.groups=[],e=0;e<a;e++)t=this._addResourceView(e),n=s[0],i=s[s.length-1||0],o=v(this.startTime()),r=v(this.endTime()),0!==o&&r<=o&&(n=m(n),d(n,o),i=m(i),d(i,r)),t.addTimeSlotCollection(n,l.date.addDays(i,1));this._timeSlotGroups(a,c)},_isHorizontallyGrouped:function(){return this.groupedResources.length&&"horizontal"===this._groupOrientation()},_timeSlotGroups:function(e,t){var n=this._timeSlotInterval(),i=this._isVerticallyGrouped(),o=this.content.find("tr");o.attr("role","row"),this._groupedView._addTimeSlotsCollections(e,t,o,n,i)},_addTimeSlotToCollection:function(e,t,n,i,o,r,a){var s=t[n+i],l=e.getTimeSlotCollection(0),c=this._dates[o],d=Date.UTC(c.getFullYear(),c.getMonth(),c.getDate()),u=d+r,h=u+a;s.setAttribute("role","gridcell"),s.setAttribute("aria-selected",!1),l.addTimeSlot(s,u,h,!0)},startDate:function(){return this._startDate},endDate:function(){return this._endDate},visibleEndDate:function(){var e=v(this.startTime()),t=v(this.endTime()),n=this.endDate();return 0!==e&&t<=e&&(n=l.date.addDays(n,1)),n},startTime:function(){var e=this.options;return e.showWorkHours?e.workDayStart:e.startTime},endTime:function(){var e=this.options;return e.showWorkHours?e.workDayEnd:e.endTime},_timeSlotInterval:function(){var e=this.options;return e.majorTick/e.minorTickCount*b},nextDate:function(){return l.date.nextDay(this.endDate())},previousDate:function(){return l.date.previousDay(this.startDate())},calculateDateRange:function(){this._render([this.options.date])},render:function(e){var t,n,i,o,r;for(this._headerColumnCount=0,this._groups(),this.element.find(".k-event").remove(),e=new l.data.Query(e).sort([{field:"start",dir:"asc"},{field:"end",dir:"desc"}]).toArray(),t=[],this._eventsByResource(e,this.groupedResources,t),n=[],i=0,o=0;o<t.length;o++)r={groupIndex:o,maxRowCount:0,events:{}},n.push(r),this._renderEvents(t[o],o,r),i<r.maxRowCount&&(i=r.maxRowCount);this._setRowsHeight(n,t.length,i),this._positionEvents(n,t.length),this._currentTime(!1),this.trigger("activate")},_positionEvents:function(t,n){var i,o,r,a,s;for(i=0;i<n;i++){o=t[i].events;for(r in o)if(a=o[r],e.isArray(a))for(s=0;s<a.length;s++)this._positionEvent(a[s]);else this._positionEvent(a)}},_setRowsHeight:function(t,n,i){var o,r,a,s,l,c=this.options.eventHeight+2,d=this._getBottomRowOffset(),u=this._groupedView,h=u._getVerticalGroupCount(n);for(n=this._isVerticallyGrouped()?h:1,o=0;o<n;o++)r=u._getVerticalRowCount(t,o,i),r=r?r:1,a=(c+2)*r+d,s=e(this.times.find("tr")[o]),l=e(this.content.find("tr")[o]),s.height(a),l.height(a);this._setContentWidth(),this.refreshLayout(),this._refreshSlots()},_getBottomRowOffset:function(){var e,t,n=.5*this.options.eventHeight,i=this._isMobile();return i?(e=30,t=60):(e=15,t=30),n>t?n=t:n<e&&(n=e),n},_positionEvent:function(e){var t,n,i,o=this.options.eventHeight+2,r=e.slotRange.innerRect(e.start,e.end,!1),a=this._adjustLeftPosition(r.left),s=r.right-r.left-2;s<0&&(s=0),s<this.options.eventMinWidth&&(t=e.slotRange.collection,n=t._slots[t._slots.length-1],i=n.offsetLeft+n.offsetWidth,s=this.options.eventMinWidth,i<a+s&&(s=i-r.left-2)),e.element.css({top:e.slotRange.start.offsetTop+e.rowIndex*(o+2)+"px",left:a,width:s})},_refreshSlots:function(){for(var e=0;e<this.groups.length;e++)this.groups[e].refresh()},_eventsByResource:function(e,t,n){var i,o,r,a,s=t[0];if(s)for(i=s.dataSource.view(),o=0;o<i.length;o++)r=this._resourceValue(s,i[o]),a=new l.data.Query(e).filter({field:s.field,operator:u.groupEqFilter(r)}).toArray(),t.length>1?this._eventsByResource(a,t.slice(1),n):n.push(a);else n.push(e)},_isInDateSlot:function(e){var t=e.start,n=e.end,i=m(this._startDate),o=l.date.addDays(m(this.visibleEndDate()),1);return t<o&&i<=n},_isInTimeSlot:function(e){var t,n=e._startTime||l.date.toUtcTime(e.start),i=e._endTime||l.date.toUtcTime(e.end),o=this._slotRanges;for(n===i&&(i+=1),t=0;t<o.length;t++)if(n<o[t].end&&o[t].start<i)return!0;return!1},_adjustEvent:function(e){var t,n=e.start,i=e.end,o=e._time("start"),r=e._time("end"),a=v(this.startTime()),s=v(this.endTime()),c=null,u=null,h=!1,p=!1;return e.isAllDay&&(n=m(n),o=0,i=m(i),r=_,u=l.date.addDays(i,1)),0===s&&(s=_),s<=a?(o<a&&o>=s&&(c=m(n),d(c,a),p=!0),r>s&&r<=a&&(u=m(i),d(u,s),h=!0)):(a>o?(c=m(n),d(c,a),p=!0):s<=o&&(c=m(n),c=l.date.addDays(c,1),d(c,a),p=!0),s<r?(u=m(i),d(u,s),h=!0):a>r&&(u=m(i),u=l.date.addDays(u,-1),d(u,s),h=!0)),t=e.clone({start:c?c:n,end:u?u:i,_startTime:c?l.date.toUtcTime(c):e._startTime,_endTime:u?l.date.toUtcTime(u):e._endTime,isAllDay:!1}),{occurrence:t,head:h,tail:p}},_renderEvents:function(e,t,n){var i,o,r,a,s,l,c,d,u,h,p;for(o=0,r=e.length;o<r;o++)i=e[o],this._isInDateSlot(i)&&(a=i.isAllDay||i.duration()>=_,s=this.content,(a||this._isInTimeSlot(i))&&(l=this._adjustEvent(i),c=this.groups[t],c._continuousEvents||(c._continuousEvents=[]),this._isInTimeSlot(l.occurrence)&&(d=c.slotRanges(l.occurrence,!1),u=d[0],h=u.start.index,p=u.end.index,this._groupedView._renderEvent(n,i,l,c,u,s,h,p))))},addContinuousEvent:function(e,t,n,i){var o=e._continuousEvents;o.push({element:n,isAllDay:i,uid:n.attr(l.attr("uid")),start:t.start,end:t.end})},_createEventElement:function(t,n,i,o){var r,a,s=this.eventTemplate,c=this.options.editable,d=this._isMobile(),u=c&&c.destroy!==!1&&!d,h=c&&c.resize!==!1,p=n._time("start"),g=n._time("end"),m=n.start,v=n.end,_=this.eventResources(n);return n._startTime&&p!==l.date.getMilliseconds(n.start)&&(m=new Date(p),m=l.timezone.apply(m,"Etc/UTC")),n._endTime&&g!==l.date.getMilliseconds(n.end)&&(v=new Date(g),v=l.timezone.apply(v,"Etc/UTC")),r=f({},{ns:l.ns,resizable:h,showDelete:u,head:i,tail:o,singleDay:1==this._dates.length,resources:_,inverseColor:!1,messages:this.options.messages},n,{start:m,end:v}),a=e(s(r)),this.angular("compile",function(){return{elements:a,data:[{dataItem:r}]}}),a},_arrangeRows:function(e,t,n){var i,o,a,s,l,c,d=t.start.index,h=t.end.index,p=e.slotRange.innerRect(e.start,e.end,!1),f=p.right+this.options.eventMinWidth,g=r(t.events(),p.left,f);for(t.addEvent({slotIndex:d,start:d,end:h,rectLeft:p.left,rectRight:f,element:e.element,uid:e.uid}),g.push({start:d,end:h,uid:e.uid}),i=u.createRows(g),n.maxRowCount<i.length&&(n.maxRowCount=i.length),o=0,a=i.length;o<a;o++)for(s=i[o].events,l=0,c=s.length;l<c;l++)n.events[s[l].uid].rowIndex=o},_groupCount:function(){var e=this.groupedResources,t=this._groupedView;return e.length?"vertical"===this._groupOrientation()?t._verticalCountForLevel(e.length-1):t._horizontalCountForLevel(e.length-1,this.columnLevels.length-1):1},_updateEventForSelection:function(e){var t=this._adjustEvent(e.clone());return t.occurrence},_eventOptionsForMove:function(e){return e.isAllDay?{isAllDay:!1}:{}},_updateEventForResize:function(e){e.isAllDay&&e.set("isAllDay",!1)},_updateMoveHint:function(e,t,n){var i,o,r,a=this.groups[t],s=e.clone({start:e.start,end:e.end}),l=s.duration();if(s.start=new Date(s.start.getTime()+n),s.end=new Date(+s.start+l),this._removeMoveHint(e.uid),this._isInDateSlot(s)&&(s.isAllDay||s.duration()>=_||this._isInTimeSlot(s)))for(i=this._adjustEvent(s),o=a.slotRanges(i.occurrence,!1),r=0;r<o.length;r++)this._groupedView._createMoveHint(o[r],i)},_appendMoveHint:function(e){e.appendTo(this.content),this._moveHint=this._moveHint.add(e)},_updateResizeHint:function(e,t,n,i){var o,r,a,s,c,d,h,p,f,g,m,v=this.groups[t],_=v.ranges(n,i,!1,!1);for(this._removeResizeHint(),o=0;o<_.length;o++){if(r=_[o],a=r.startSlot(),s=r.innerRect(n,i,!1),s.top=a.offsetTop,c=s.right-s.left,c<0)for(d=0;d<r.events().length;d++)if(r.events()[d].uid===e.uid){c=r.events()[d].rectRight-s.left;break}h=r.endSlot().offsetTop+a.offsetHeight-s.top,p=this._adjustLeftPosition(s.left),f=u.fn._createResizeHint.call(this,p,s.top,c,h),this._resizeHint=this._resizeHint.add(f)}g="t",m=this.content,this._resizeHint.appendTo(m),this._resizeHint.find(".k-label-top,.k-label-bottom").text(""),this._resizeHint.first().addClass("k-first").find(".k-label-top").text(l.toString(l.timezone.toLocalDate(n),g)),this._resizeHint.last().addClass("k-last").find(".k-label-bottom").text(l.toString(l.timezone.toLocalDate(i),g))},selectionByElement:function(e){var t=e.offset();return this._slotByPosition(t.left,t.top)},_updateDirection:function(e,t,n,i,o){var r=t[0].start,a=t[t.length-1].end;n&&!o&&r.index===a.index&&r.collectionIndex===a.collectionIndex&&(e.backward=i)},_changeGroup:function(e,t){var n=t?"prevGroupSlot":"nextGroupSlot",i=this[n](e.start,e.groupIndex,!1);return i&&(e.groupIndex+=t?-1:1),this._groupedView._changeGroup(e,t,i),i},prevGroupSlot:function(e,t,n){var i=this.groups[t],o=i.ranges(e,e,n,!1)[0].start;if(!(t<=0))return this._groupedView._prevGroupSlot(o,i,n)},nextGroupSlot:function(e,t,n){var i=this.groups[t],o=i.ranges(e,e,n,!1)[0].start;if(!(t>=this.groups.length-1))return this._groupedView._nextGroupSlot(o,i,n)},_verticalSlots:function(e,t,n,i){var o=this._groupedView,r=o._verticalMethod(i,n),a=t[0].start,s=t[t.length-1].end,l=this.groups[e.groupIndex],c=o._normalizeVerticalSelection(e,t,i,n);return c&&(a=s=c),a=l[r](a),s=l[r](s),n||!this._isVerticallyGrouped()||a&&s||(a=s=o._verticalSlots(e,i,c)),{startSlot:a,endSlot:s}},_horizontalSlots:function(e,t,n,i){var o=i?"upSlot":"downSlot",r=t[0].start,a=t[t.length-1].end,s=this.groups[e.groupIndex],l={};return n?(l.startSlot=s[o](r),l.endSlot=s[o](a),n||!this._isHorizontallyGrouped()||r&&a||(l.startSlot=l.endSlot=this._changeGroup(e,i))):l=this._groupedView._horizontalSlots(e,s,o,r,a,n,i),l},_changeViewPeriod:function(e,t){var n,i=t?this.previousDate():this.nextDate(),o=e.start,r=e.end,a=new Date(i),s=new Date(i);return!this._isInRange(a,s)&&(e.start=a,e.end=s,this._isHorizontallyGrouped()&&(e.groupIndex=t?this.groups.length-1:0),n=r-o,t?(r=v(this.endTime()),r=0===r?_:r,d(e.start,r-n),d(e.end,r)):(o=v(this.startTime()),d(e.start,o),d(e.end,o+n)),e.events=[],!0)},move:function(e,t,n){var i,o,r,a,s,c=!1,d=this.groups[e.groupIndex],u=l.keys,h=this._groupedView,p=d.ranges(e.start,e.end,!1,!1);if(t===u.DOWN||t===u.UP){if(c=!0,r=t===u.UP,h._updateDirection(e,p,n,r),a=this._verticalSlots(e,p,n,r),h._changeVerticalViewPeriod(a,n,e,r))return c}else if((t===u.LEFT||t===u.RIGHT)&&(c=!0,r=t===u.LEFT,this._updateDirection(e,p,n,r,!1),a=this._horizontalSlots(e,p,n,r),h._changeHorizontalViewPeriod(a,n,e,r)))return c;return c&&(i=a.startSlot,o=a.endSlot,n?(s=e.backward,s&&i?e.start=i.startDate():!s&&o&&(e.end=o.endDate())):i&&o&&(e.start=i.startDate(),e.end=o.endDate()),e.events=[]),c},destroy:function(){var e=this;e.element&&e.element.off(S),e.footer&&e.footer.remove(),e._currentTimeUpdateTimer&&clearInterval(e._currentTimeUpdateTimer),u.fn.destroy.call(this),this._isMobile()&&e.options.editable&&(e.options.editable.create!==!1&&e._addUserEvents.destroy(),e.options.editable.update!==!1&&e._editUserEvents.destroy())}}),f(!0,c,{TimelineView:s,TimelineWeekView:s.extend({options:{name:"TimelineWeekView",title:"Timeline Week",selectedDateFormat:"{0:D} - {1:D}",selectedShortDateFormat:"{0:d} - {1:d}",selectedMobileDateFormat:"{0:MMM dd} - {1:dd}",majorTick:120},name:"timelineWeek",calculateDateRange:function(){var e,t,n=this.options.date,i=l.date.dayOfWeek(n,this.calendarInfo().firstDay,-1),o=[];for(e=0,t=7;e<t;e++)o.push(i),i=l.date.nextDay(i);this._render(o)}}),TimelineWorkWeekView:s.extend({options:{name:"TimelineWorkWeekView",title:"Timeline Work Week",selectedDateFormat:"{0:D} - {1:D}",selectedShortDateFormat:"{0:d} - {1:d}",selectedMobileDateFormat:"{0:MMM dd} - {1:dd}",majorTick:120},name:"timelineWorkWeek",nextDate:function(){var e=l.date.dayOfWeek(l.date.nextDay(this.endDate()),this.calendarInfo().firstDay,1);return l.date.addDays(e,this._workDays[0])},previousDate:function(){var e=l.date.dayOfWeek(this.startDate(),this.calendarInfo().firstDay,-1),t=this._workDays;return l.date.addDays(e,t[t.length-1]-7)},calculateDateRange:function(){for(var e=this.options.date,t=l.date.dayOfWeek(e,this.options.workWeekStart,-1),n=l.date.dayOfWeek(t,this.options.workWeekEnd,1),i=[];t<=n;)i.push(t),t=l.date.nextDay(t);this._render(i)}}),TimelineMonthView:s.extend({options:{name:"TimelineMonthView",title:"Timeline Month",selectedDateFormat:"{0:D} - {1:D}",selectedShortDateFormat:"{0:d} - {1:d}",workDayStart:new Date(1980,1,1,0,0,0),workDayEnd:new Date(1980,1,1,23,59,59),footer:!1,majorTick:1440,minorTickCount:1},name:"timelineMonth",calculateDateRange:function(){var e,t,n=this.options.date,i=l.date.firstDayOfMonth(n),o=l.date.lastDayOfMonth(n),r=[];for(e=0,t=o.getDate();e<t;e++)r.push(i),i=l.date.nextDay(i);this._render(r)}})})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.scheduler.min",["kendo.dropdownlist.min","kendo.editable.min","kendo.multiselect.min","kendo.window.min","kendo.datetimepicker.min","kendo.scheduler.recurrence.min","kendo.scheduler.view.min","kendo.scheduler.dayview.min","kendo.scheduler.agendaview.min","kendo.scheduler.monthview.min","kendo.scheduler.timelineview.min","kendo.dialog.min","kendo.pane.min","kendo.pdf.min","kendo.switch.min"],e)}(function(){return function(e,t){function n(e,t){return t=t||"",e.startTimezone&&(t=e.startTimezone,e.endTimezone&&(t+=" | "+e.endTimezone)),t}function i(e,t){var n=t.timezone;n&&(e[P.attr("timezone")]=n)}function o(e,t){var n,i=t.model.fields[t.field].validation;i&&(n=i.validDateValidator,n&&Y(n)&&n.message&&(e[P.attr("validDate-msg")]=n.message))}function r(e,t){var n,i=t.model.fields[t.field].validation;i&&(n=i.dateCompare,n&&Y(n)&&n.message&&(e[P.attr("dateCompare-msg")]=n.message))}function a(e,t){return function(n){return n=e(n),l(n,"apply",t),n||[]}}function s(e,t){return function(n){return n&&("[object Array]"===X.call(n)||n instanceof P.data.ObservableArray||(n=[n])),l(n,"remove",t,!0),n=e(n),n||[]}}function l(e,t,n,i){var o,r,a;for(e=e||[],r=0,a=e.length;r<a;r++)o=e[r],i?o.startTimezone||o.endTimezone?n?(o.start=P.timezone.convert(o.start,o.startTimezone||o.endTimezone,n),o.end=P.timezone.convert(o.end,o.endTimezone||o.startTimezone,n),o.start=P.timezone[t](o.start,n),o.end=P.timezone[t](o.end,n)):(o.start=P.timezone[t](o.start,o.startTimezone||o.endTimezone),o.end=P.timezone[t](o.end,o.endTimezone||o.startTimezone)):n&&(o.start=P.timezone[t](o.start,n),o.end=P.timezone[t](o.end,n)):o.startTimezone||o.endTimezone?(o.start=P.timezone[t](o.start,o.startTimezone||o.endTimezone),o.end=P.timezone[t](o.end,o.endTimezone||o.startTimezone),n&&(o.start=P.timezone.convert(o.start,o.startTimezone||o.endTimezone,n),o.end=P.timezone.convert(o.end,o.endTimezone||o.startTimezone,n))):n&&(o.start=P.timezone[t](o.start,n),o.end=P.timezone[t](o.end,n)),i&&delete o.uid;return e}function c(e,t){for(var n,i=e.length,o=0;o<i;o++)if(n=e[o],n.uid===t)return n}function d(e,t,n){return e=n?P.timezone.convert(e,t,n):P.timezone.remove(e,t)}function u(e){var t,n;return!(e.filter("[name=start]").length&&e.filter("[title=Start]").length||e.filter("[name=end]").length&&e.filter("[title=End]").length)||(n=P.widgetInstance(e,P.ui),n?(t=P.parseDate(e.val(),n.options.format),!!t&&n.value()):(t=P.parseDate(e.val()),!!t))}function h(e){var t,n,i,o,r,a,s,l,c,u,h,p;return!(e.filter("[name=end]").length&&(t=e.closest(".k-scheduler-edit-form"),n=t.find("[name=start]:visible"),i=t.find("[name=end]:visible"),i[0]&&n[0]&&(a=P.widgetInstance(n,P.ui),s=P.widgetInstance(i,P.ui),l=t.data("kendoEditable"),c=l?l.options.model:null,a&&s?(o=a.value(),r=s.value()):(o=P.parseDate(n.val()),r=P.parseDate(i.val())),o&&r)))||(c&&(u=n.attr(P.attr("timezone")),h=c.startTimezone,p=c.endTimezone,h=h||p,p=p||h,h&&(o=d(o,h,u),r=d(r,p,u))),o<=r)}function p(e,t,n,i){for(var o=e.length,r=[],a=0;a<o;a++)r=r.concat(e[a].expand(t,n,i));return r}function f(e){return delete e.name,delete e.prefix,delete e.remove,delete e.edit,delete e.add,delete e.navigate,e}function g(t,n){var i,o,r=(t.fields||t)[n],a=["url","email","number","date","boolean"],s=r?r.validation:{},l=P.attr("type"),c=e.inArray,d={};for(i in s)o=s[i],c(i,a)>=0?d[l]=i:P.isFunction(o)||(d[i]=Y(o)?o.value||i:o),d[P.attr(i+"-msg")]=o.message;return d}function m(t,n){var i=g(n,t.field);return function(o){e(P.format('<select data-{0}bind="value:{1}" title="'+n.title+'">',P.ns,t.field)).appendTo(o).attr(i).kendoDropDownList({dataTextField:t.dataTextField,dataValueField:t.dataValueField,dataSource:t.dataSource,valuePrimitive:t.valuePrimitive,optionLabel:"None",template:P.format('<span class="k-scheduler-mark" style="background-color:#= data.{0}?{0}:"none" #"></span>#={1}#',t.dataColorField,t.dataTextField)})}}function v(t,n){var i=g(n,t.field);return function(n){var o,r,a="",s=t.dataSource.view();for(o=0,r=s.length;o<r;o++)a+=P.format('<option value="{0}">{1}</option>',P.getter(t.dataValueField)(s[o]),P.getter(t.dataTextField)(s[o]));e(P.format('<select data-{0}bind="value:{1}">{2}</select>',P.ns,t.field,a,t.valuePrimitive)).appendTo(n).attr(i)}}function _(t){var n=g(t.model,t.field);return function(t,i){e('<textarea name="description" class="k-textbox" title="'+i.title+'"/>').attr(n).appendTo(t)}}function b(t,n){var i=g(n,t.field);return function(n){e(P.format('<select data-{0}bind="value:{1}">',P.ns,t.field)).appendTo(n).attr(i).kendoMultiSelect({dataTextField:t.dataTextField,dataValueField:t.dataValueField,dataSource:t.dataSource,valuePrimitive:t.valuePrimitive,itemTemplate:P.format('<span class="k-scheduler-mark" style="background-color:#= data.{0}?{0}:"none" #"></span>#={1}#',t.dataColorField,t.dataTextField),tagTemplate:P.format('<span class="k-scheduler-mark" style="background-color:#= data.{0}?{0}:"none" #"></span>#={1}#',t.dataColorField,t.dataTextField)})}}function w(t,n){var i=g(n,t.field);return function(n){var o,r,a="",s=t.dataSource.view();for(o=0,r=s.length;o<r;o++)a+=P.format('<option value="{0}">{1}</option>',P.getter(t.dataValueField)(s[o]),P.getter(t.dataTextField)(s[o]));e(P.format('<select data-{0}bind="value:{1}" multiple="multiple" data-{0}value-primitive="{3}">{2}</select>',P.ns,t.field,a,t.valuePrimitive)).appendTo(n).attr(i)}}function k(e,t){var n,i=e.end.getTime()-e.start.getTime(),o=new Date(e.start.getTime());return P.date.setTime(o,t),n=new Date(o.getTime()),P.date.setTime(n,i,!0),{start:o,end:n}}var y,x,C,S,T,D,A,E,I,M,F,R,P=window.kendo,z=P.date,B=z.MS_PER_DAY,L=z.getDate,H=P.date.getMilliseconds,N=P.recurrence,O=e.extend({F10:121},P.keys),V=P.ui,W=V.Widget,U=V.DataBoundWidget,q="string",j=V.Popup,G=V.Calendar,$=P.data.DataSource,Y=e.isPlainObject,K=e.extend,Q=e.proxy,X=Object.prototype.toString,J=e.isArray,Z=".kendoScheduler",ee="click",te="mousedown",ne=P.support.pointers?"pointerdown":"touchstart",ie=P.support.pointers?"pointermove":"touchmove",oe=P.support.pointers?"pointerup":"touchend",re=P.support.mousemove,ae="change",se="progress",le="error",ce="cancel",de="remove",ue="resetSeries",he="save",pe="add",fe="edit",ge="k-state-focused",me="k-state-expanded",ve=".k-scheduler-views",_e="k-event-inverse",be=/(?:value:start|value:end)(?:,|$)/,we=L(new Date),ke=",",ye=/\;/g,xe="recurrenceException",Ce="Are you sure you want to delete this event?",Se="Do you want to delete only this event occurrence or the whole series?",Te="Do you want to edit only this event occurrence or the whole series?",De="Are you sure you want to delete this event occurrence?",Ae="Are you sure you want to reset the whole series?",Ee="Are you sure you want to delete the whole series?",Ie='<a class="k-button #=className#" #=attr# href="\\#">#=text#</a>',Me=P.template('<li class="k-current-view" data-#=ns#name="#=view#"><a role="button" href="\\#" class="k-link">${views[view].title}</a></li>'),Fe=P.template('<div class="k-floatwrap k-header k-scheduler-toolbar"># if (pdf) { #<ul class="k-reset k-scheduler-tools"><li><a role="button" href="\\#" class="k-button k-pdf"><span class="k-icon k-i-file-pdf"></span>${messages.pdf}</a></li></ul># } #<ul class="k-reset k-scheduler-navigation"><li class="k-state-default k-header k-nav-today"><a role="button" href="\\#" class="k-link" title="${messages.today}">${messages.today}</a></li><li class="k-state-default k-header k-nav-prev"><a role="button" href="\\#" class="k-link" title="${messages.previous}" aria-label="${messages.previous}"><span class="k-icon k-i-arrow-60-left" style="pointer-events: none"></span></a></li><li class="k-state-default k-header k-nav-next"><a role="button" href="\\#" class="k-link" title="${messages.next}" aria-label="${messages.next}"><span class="k-icon k-i-arrow-60-right" style="pointer-events: none"></span></a></li><li class="k-state-default k-nav-current"><a role="button" href="\\#" class="k-link"><span class="k-icon k-i-calendar"></span><span class="k-sm-date-format" data-#=ns#bind="text: formattedShortDate"></span><span class="k-lg-date-format" data-#=ns#bind="text: formattedDate"></span></a></li></ul>#if(viewsCount === 1){#<a role="button" data-#=ns#name="#=view#" href="\\#" class="k-link k-scheduler-refresh"><span class="k-icon k-i-reload"></span></a>#}else{#<ul class="k-reset k-header k-scheduler-views">#for(var view in views){#<li class="k-state-default k-view-#= view.toLowerCase() #" data-#=ns#name="#=view#"><a role="button" href="\\#" class="k-link">${views[view].title}</a></li>#}#</ul>#}#</div>'),Re=P.template('<div class="k-header k-scheduler-toolbar"><ul class="k-reset k-scheduler-tools"># if (pdf) { #<li><a role="button" href="\\#" class="k-button k-pdf"><span class="k-icon k-i-file-pdf"></span></a></li># } #<li><a role="button" href="\\#" class="k-button k-nav-calendar"><span class="k-icon k-i-calendar"></span></a></li># if (editable) { #<li><a role="button" href="\\#" class="k-button k-create-event"><span class="k-icon k-i-plus"></span></a></li># } #</ul>#if(viewsCount === 1){#<a role="button" data-#=ns#name="#=view#" href="\\#" class="k-link k-scheduler-refresh"><span class="k-icon k-i-reload"></span></a>#}else{#<select class="k-scheduler-mobile-views">#for(var view in views){#<option class="k-state-default k-view-#= view.toLowerCase() #" value="#=view#">${views[view].title}</option>#}#</select>#}#</div><div class="k-header k-scheduler-toolbar"><ul class="k-reset k-header k-scheduler-navigation"><li class="k-state-default k-nav-prev"><a role="button" href="\\#" class="k-link"><span class="k-icon k-i-arrow-chevron-left"></span></a></li><li class="k-state-default k-nav-current"><span class="k-m-date-format" data-#=ns#bind="text: formattedMobileDate"></span><span class="k-y-date-format" data-#=ns#bind="text: formattedYear"></span></li><li class="k-state-default k-nav-next"><a role="button" href="\\#" class="k-link"><span class="k-icon k-i-arrow-chevron-right"></span></a></li></ul></div>'),Pe=function(t,n){var a={name:n.field,title:n.title},s=n.model.isAllDay,l=P.attr("validate")+"='"+!s+"'",c=P.attr("validate")+"='"+s+"'";i(a,n),o(a,n),r(a,n),e('<input type="datetime-local" required '+P.attr("type")+'="datetime-local" '+P.attr("bind")+'="value:'+n.field+', invisible:isAllDay" '+l+"/>").attr(a).appendTo(t),e('<input type="date" required '+P.attr("type")+'="date" '+P.attr("bind")+'="value:'+n.field+',visible:isAllDay" '+c+"/>").attr(a).appendTo(t),e("<span "+P.attr("for")+'="'+n.field+'" class="k-invalid-msg"/>').hide().appendTo(t)},ze=function(t,n){var a={name:n.field,title:n.title},s=n.model.isAllDay,l=P.attr("validate")+"='"+!s+"' ",c=P.attr("validate")+"='"+s+"' ";i(a,n),o(a,n),r(a,n),e('<input type="text" required '+P.attr("type")+'="date" '+P.attr("role")+'="datetimepicker" '+P.attr("bind")+'="value:'+n.field+',invisible:isAllDay" '+l+"/>").attr(a).appendTo(t),e('<input type="text" required '+P.attr("type")+'="date" '+P.attr("role")+'="datepicker" '+P.attr("bind")+'="value:'+n.field+',visible:isAllDay" '+c+"/>").attr(a).appendTo(t), +e("<span "+P.attr("bind")+'="text: '+n.field+'Timezone"></span>').appendTo(t),"end"===n.field&&e("<span "+P.attr("bind")+'="text: startTimezone, invisible: endTimezone"></span>').appendTo(t),e("<span "+P.attr("for")+'="'+n.field+'" class="k-invalid-msg"/>').hide().appendTo(t)},Be=function(t,n){e("<div "+P.attr("bind")+'="value:'+n.field+'" />').attr({name:n.field}).appendTo(t).kendoRecurrenceEditor({start:n.model.start,timezone:n.timezone,messages:n.messages})},Le=function(t,n){e("<div "+P.attr("bind")+'="value:'+n.field+'" />').attr({name:n.field}).appendTo(t).kendoMobileRecurrenceEditor({start:n.model.start,timezone:n.timezone,messages:n.messages,pane:n.pane,value:n.model[n.field]})},He=function(t,n){e('<input type="checkbox" data-role="switch"'+P.attr("bind")+'="value:'+n.field+'" />').appendTo(t)},Ne=function(t,i){var o=n(i.model,i.messages.noTimezone);e('<span class="k-timezone-label"></span>').text(o).appendTo(t),e('<span class="k-icon k-i-arrow-chevron-right"></span>').appendTo(t),t.closest("li.k-item label").click(i.click)},Oe=function(t,n){e('<a href="#" class="k-button" data-bind="invisible:isAllDay">'+n.messages.timezoneEditorButton+"</a>").click(n.click).appendTo(t)},Ve=function(t,n){e('<div class="k-mobiletimezoneeditor" '+P.attr("bind")+'="value:'+n.field+'" />').attr({name:n.field}).appendTo(t).kendoMobileTimezoneEditor({optionLabel:n.noTimezone})},We=function(n,i){var o=i.visible||i.visible===t;e("<div "+P.attr("bind")+'="value:'+i.field+'" />').attr({name:i.field}).toggle(o).appendTo(n).kendoTimezoneEditor({optionLabel:i.noTimezone,title:i.title})},Ue=P.Class.extend({init:function(t,n){var i=t.timezone;this.reader=n,n.model&&(this.model=n.model),this.timezone=i,this.data=a(e.proxy(this.data,this),i),this.serialize=s(e.proxy(this.serialize,this),i)},errors:function(e){return this.reader.errors(e)},parse:function(e){return this.reader.parse(e)},data:function(e){return this.reader.data(e)},total:function(e){return this.reader.total(e)},groups:function(e){return this.reader.groups(e)},aggregates:function(e){return this.reader.aggregates(e)},serialize:function(e){return this.reader.serialize(e)}}),qe=P.data.Model.define({init:function(e){var t=this;P.data.Model.fn.init.call(t,e),t._defaultId=t.defaults[t.idField]},_time:function(e){var t=this[e],n="_"+e+"Time";return this[n]?this[n]-P.date.toUtcTime(P.date.getDate(t)):H(t)},_date:function(e){var t="_"+e+"Time";return this[t]?this[t]-this._time(e):P.date.getDate(this[e])},clone:function(t,n){var i=this.uid,o=new this.constructor(e.extend({},this.toJSON(),t));return n||(o.uid=i),o},duration:function(){var e=this.end,t=this.start,n=(e.getTimezoneOffset()-t.getTimezoneOffset())*P.date.MS_PER_MINUTE;return e-t-n},expand:function(e,t,n){return N?N.expand(this,e,t,n):[this]},update:function(e){for(var t in e)this.set(t,e[t]);this._startTime&&this.set("_startTime",P.date.toUtcTime(this.start)),this._endTime&&this.set("_endTime",P.date.toUtcTime(this.end))},isMultiDay:function(){return this.isAllDay||this.duration()>=P.date.MS_PER_DAY},isException:function(){return!this.isNew()&&this.recurrenceId},isOccurrence:function(){return this.isNew()&&this.recurrenceId},isRecurring:function(){return!(!this.recurrenceRule&&!this.recurrenceId)},isRecurrenceHead:function(){return!(!this.id||!this.recurrenceRule)},toOccurrence:function(t){return t=e.extend(t,{recurrenceException:null,recurrenceRule:null,recurrenceId:this.id||this.recurrenceId}),t[this.idField]=this.defaults[this.idField],this.clone(t,!0)},toJSON:function(){var e=P.data.Model.fn.toJSON.call(this);return e.uid=this.uid,delete e._startTime,delete e._endTime,e},shouldSerialize:function(e){return P.data.Model.fn.shouldSerialize.call(this,e)&&"_defaultId"!==e},set:function(e,t){var n,i,o,r=this.isAllDay||!1;P.data.Model.fn.set.call(this,e,t),"isAllDay"==e&&t!=r&&(n=P.date.getDate(this.start),i=new Date(this.end),o=P.date.getMilliseconds(i),0===o&&t&&(o=B),this.set("start",n),t===!0?(P.date.setTime(i,-o),i<n&&(i=n)):P.date.setTime(i,B-o),this.set("end",i))},id:"id",fields:{id:{type:"number"},title:{defaultValue:"",type:"string"},start:{type:"date",validation:{required:!0,validDate:{value:u}}},startTimezone:{type:"string"},end:{type:"date",validation:{required:!0,validDate:{value:u},dateCompare:{value:h}}},endTimezone:{type:"string"},recurrenceRule:{defaultValue:"",type:"string"},recurrenceException:{defaultValue:"",type:"string"},isAllDay:{type:"boolean",defaultValue:!1},description:{type:"string"}}}),je=$.extend({init:function(e){$.fn.init.call(this,K(!0,{},{schema:{modelBase:qe,model:qe}},e)),this.reader=new Ue(this.options.schema,this.reader)},expand:function(e,t){var n,i=this.view(),o={};return e&&t&&(n=t.getTimezoneOffset(),t=new Date(t.getTime()+B-1),t.getTimezoneOffset()!==n&&(t=P.timezone.apply(t,n)),o={logic:"or",filters:[{logic:"and",filters:[{field:"start",operator:"gte",value:e},{field:"end",operator:"gte",value:e},{field:"start",operator:"lte",value:t}]},{logic:"and",filters:[{field:"start",operator:"lte",value:new Date(e.getTime()+B-1)},{field:"end",operator:"gte",value:e}]}]},i=new P.data.Query(p(i,e,t,this.reader.timezone)).filter(o).toArray()),i},cancelChanges:function(e){e&&e.isOccurrence()&&this._removeExceptionDate(e),$.fn.cancelChanges.call(this,e)},insert:function(e,t){if(t){if(!(t instanceof qe)){var n=t;t=this._createNewModel(),t.accept(n)}return(!this._pushCreated&&t.isRecurrenceHead()||t.recurrenceId)&&(t=t.recurrenceId?t:t.toOccurrence(),this._addExceptionDate(t)),$.fn.insert.call(this,e,t)}},pushCreate:function(e){this._pushCreated=!0,$.fn.pushCreate.call(this,e),this._pushCreated=!1},remove:function(e){return e.isRecurrenceHead()?this._removeExceptions(e):e.isRecurring()&&this._addExceptionDate(e),$.fn.remove.call(this,e)},_removeExceptions:function(e){for(var t=this.data().slice(0),n=t.shift(),i=e.id;n;)n.recurrenceId===i&&$.fn.remove.call(this,n),n=t.shift();e.set(xe,"")},_removeExceptionDate:function(e){var t,n,i,o;e.recurrenceId&&(t=this.get(e.recurrenceId),t&&(n=e.defaults.start,i=RegExp("(\\"+ke+"?)"+N.toExceptionString(n,this.reader.timezone)),o=(t.recurrenceException||"").replace(ye,ke).replace(/\,$/,""),i.test(o)?t.set(xe,o.replace(i,"")):(n=e.start,i=RegExp("(\\"+ke+"?)"+N.toExceptionString(n,this.reader.timezone)),t.set(xe,o.replace(i,"")))))},_addExceptionDate:function(e){var t,n=e.start,i=this.reader.timezone,o=this.get(e.recurrenceId),r=(o.recurrenceException||"").replace(ye,ke).replace(/\,$/,"");N.isException(r,n,i)||(t=N.toExceptionString(n,i),e.defaults.start=n,o.set(xe,r+(r&&t?ke:"")+t))}});je.create=function(e){(J(e)||e instanceof P.data.ObservableArray)&&(e={data:e});var t=e||{},n=t.data;if(t.data=n,!(t instanceof je)&&t instanceof P.data.DataSource)throw Error("Incorrect DataSource type. Only SchedulerDataSource instances are supported");return t instanceof je?t:new je(t)},K(!0,P.data,{SchedulerDataSource:je,SchedulerDataReader:Ue,SchedulerEvent:qe}),y={update:{text:"Save",className:"k-primary k-scheduler-update"},canceledit:{text:"Cancel",className:"k-scheduler-cancel"},destroy:{text:"Delete",imageClass:"k-i-close",className:"k-primary k-scheduler-delete",iconClass:"k-icon"}},x={mobile:{dateRange:Pe,timezonePopUp:Ne,timezone:Ve,recurrence:Le,description:_,multipleResources:w,resources:v,isAllDay:He},desktop:{dateRange:ze,timezonePopUp:Oe,timezone:We,recurrence:Be,description:_,multipleResources:b,resources:m}},C=P.Observable.extend({init:function(e,t){P.Observable.fn.init.call(this),this.element=e,this.options=K(!0,{},this.options,t),this.createButton=this.options.createButton,this.toggleDateValidationHandler=Q(this._toggleDateValidation,this)},_toggleDateValidation:function(t){if("isAllDay"==t.field){var n,i,o,r=this.container,a=this.editable.options.model.isAllDay,s=P.attr("bind");r.find("["+s+"*=end],["+s+"*=start]").each(function(){n=e(this),be.test(n.attr(s))&&(i=n.is("["+P.attr("role")+"=datetimepicker],[type*=datetime]"),o=a!==i,n.attr(P.attr("validate"),o))})}},fields:function(e,t){var n,i,o=this,r=o.options.messages,a=o.options.timezone,s=function(e){e.preventDefault(),o._initTimezoneEditor(t,this)},l=[{field:"title",title:r.editor.title},{field:"start",title:r.editor.start,editor:e.dateRange,timezone:a},{field:"end",title:r.editor.end,editor:e.dateRange,timezone:a},{field:"isAllDay",title:r.editor.allDayEvent,editor:e.isAllDay}];P.timezone.windows_zones&&(l.push({field:"timezone",title:r.editor.timezone,editor:e.timezonePopUp,click:s,messages:r.editor,model:t}),l.push({field:"startTimezone",title:r.editor.startTimezone,editor:e.timezone,noTimezone:r.editor.noTimezone}),l.push({field:"endTimezone",title:r.editor.endTimezone,editor:e.timezone,noTimezone:r.editor.noTimezone})),t.recurrenceId||l.push({field:"recurrenceRule",title:r.editor.repeat,editor:e.recurrence,timezone:a,messages:r.recurrenceEditor,pane:this.pane}),"description"in t&&l.push({field:"description",title:r.editor.description,editor:e.description({model:t,field:"description"})});for(n=0;n<this.options.resources.length;n++)i=this.options.resources[n],l.push({field:i.field,title:i.title,editor:i.multiple?e.multipleResources(i,t):e.resources(i,t)});return l},end:function(){return this.editable.end()},_buildDesktopEditTemplate:function(e,t,n){var i,o,r,a,s=this.options.messages,l=K({},P.Template,this.options.templateSettings),c=l.paramName,d="";for(i=0,o=t.length;i<o;i++)r=t[i],"startTimezone"===r.field&&(d+='<div class="k-popup-edit-form k-scheduler-edit-form k-scheduler-timezones" style="display:none">',d+='<div class="k-edit-form-container">',d+='<div class="k-edit-label"></div>',d+='<div class="k-edit-field"><label class="k-check"><input class="k-timezone-toggle" type="checkbox" />'+s.editor.separateTimezones+"</label></div>"),d+='<div class="k-edit-label"><label for="'+r.field+'">'+(r.title||r.field||"")+"</label></div>",!e.editable||e.editable(r.field)?(n.push(r),d+="<div "+P.attr("container-for")+'="'+r.field+'" class="k-edit-field"></div>'):(a="#:",r.field?(r=P.expr(r.field,c),a+=r+"==null?'':"+r):a+="''",a+="#",a=P.template(a,l),d+='<div class="k-edit-field">'+a(e)+"</div>"),"endTimezone"===r.field&&(d+=this._createEndTimezoneButton());return d},_buildMobileEditTemplate:function(e,t,n){var i,o,r,a,s=this.options.messages,l=K({},P.Template,this.options.templateSettings),c=l.paramName,d="";for(d+="<ul>",i=0,o=t.length;i<o;i++)r=t[i],"timezone"!==r.field&&"recurrenceRule"!==r.field||(d+="</ul><ul>"),"startTimezone"===r.field&&(d+='<div class="k-popup-edit-form k-scheduler-edit-form k-scheduler-timezones" style="display:none">',d+='<ul><li class="k-item"><label class="k-label">',d+='<span class="k-item-title">'+s.editor.separateTimezones+"</span>",d+='<input class="k-timezone-toggle" data-role="switch" type="checkbox">',d+="</label></li>"),!e.editable||e.editable(r.field)?(d+='<li class="k-item">',d+="timezone"===r.field?'<label class="k-label" data-bind="css: { k-state-disabled: isAllDay }">':'<label class="k-label">',d+='<span class="k-item-title">'+(r.title||r.field||"")+"</span>",n.push(r),d+="<div "+P.attr("container-for")+'="'+r.field+'"></div>'):(a="#:",d+='<li class="k-item">',d+='<label class="k-label k-no-click">',d+='<span class="k-item-title">'+(r.title||r.field||"")+"</span>",r.field?(r=P.expr(r.field,c),a+=r+"==null?'':"+r):a+="''",a+="#",a=P.template(a,l),d+='<span class="k-no-editor">'+a(e)+"</span>"),d+="</label></li>","recurrenceRule"===r.field&&(d+="</ul><ul>"),"endTimezone"===r.field&&(d+=this._createEndTimezoneButton());return d+="</ul>"},_buildEditTemplate:function(e,t,n,i){var o=K({},P.Template,this.options.templateSettings),r=this.options.editable.template,a="";return r?(typeof r===q&&(r=P.unescape(r)),a+=P.template(r,o)(e)):a+=i?'<div data-role="content">'+this._buildMobileEditTemplate(e,t,n)+"</div>":this._buildDesktopEditTemplate(e,t,n),a},_createEndTimezoneButton:function(){return"</ul></div>"},_revertTimezones:function(e){e.set("startTimezone",this._startTimezone),e.set("endTimezone",this._endTimezone),delete this._startTimezone,delete this._endTimezone}}),S=C.extend({init:function(){C.fn.init.apply(this,arguments),this.pane=P.Pane.wrap(this.element,{viewEngine:{viewOptions:{renderOnInit:!0,wrap:!1,wrapInSections:!0,detachOnHide:!1,detachOnDestroy:!1}}}),this.pane.element.parent().css("height",this.options.height),this.view=this.pane.view()},options:{animations:{left:"slide",right:"slide:right"}},destroy:function(){this.close(),this.unbind(),this.pane.destroy()},_initTimezoneEditor:function(t){var i,o=this,r=o.pane,a=o.options.messages,s=o.timezoneView,l=s?s.content.find(".k-scheduler-timezones"):o.container.find(".k-scheduler-timezones"),c=l.find("input.k-timezone-toggle").data("kendoSwitch"),d=l.find("li.k-item:not(.k-zonepicker):last"),u=function(e){if("startTimezone"===e.field){var n=t.startTimezone;c.enable(n),n||(d.hide(),t.set("endTimezone",""),c.value(!1))}};o._startTimezone=t.startTimezone||"",o._endTimezone=t.endTimezone||"",s||(i='<div data-role="view" class="k-popup-edit-form k-scheduler-edit-form k-mobile-list"><div data-role="header" class="k-header"><a href="\\#" class="k-header-cancel k-scheduler-cancel k-link" title="'+a.cancel+'"aria-label="'+a.cancel+'"><span class="k-icon k-i-arrow-chevron-left"></span></a>'+a.editor.timezoneTitle+'<a href="\\#" class="k-header-done k-scheduler-update k-link" title="'+a.save+'" aria-label="'+a.save+'"><span class="k-icon k-i-check"></span></a></div><div data-role="content"></div>',this.timezoneView=s=r.append(i),s.contentElement.append(l.show()),s.element.on(ee+Z,".k-scheduler-cancel, .k-scheduler-update",function(i){var s,l;i.preventDefault(),i.stopPropagation(),e(this).hasClass("k-scheduler-cancel")&&o._revertTimezones(t),t.unbind("change",u),s=o._editPane,l=n(t,a.editor.noTimezone),s.content.find(".k-timezone-label").text(l),r.navigate(s,o.options.animations.right)}),c.bind("change",function(e){d.toggle(e.checked),t.set("endTimezone","")}),t.bind("change",u)),c.value(!!t.endTimezone),c.enable(!!t.startTimezone),t.endTimezone?d.show():d.hide(),r.navigate(s,o.options.animations.left)},showDialog:function(t){var n=t.buttons.map(function(e){return{text:e.text,action:e.click}});n.push({text:this.options.messages.cancel,primary:!0}),e("<div />").appendTo(document.body).kendoDialog({close:function(){this.destroy()},modal:{preventScroll:!0},closable:!1,title:!1,content:t.text,actions:n})},editEvent:function(t){var n,i,o,r,a,s,l,c=this.pane,d="",u=this.options.messages,h=u.save,p=u.destroy,f=u.cancel,g=u.editor.editorTitle,m=u.resetSeries;return d+='<div data-role="view" class="k-popup-edit-form k-scheduler-edit-form k-mobile-list"'+P.attr("uid")+'="'+t.uid+'"><div data-role="header" class="k-header"><a href="\\#" class="k-header-cancel k-scheduler-cancel k-link" title="'+f+'"aria-label="'+f+'"><span class="k-icon k-i-arrow-chevron-left"></span></a>'+g+'<a href="\\#" class="k-header-done k-scheduler-update k-link" title="'+h+'" aria-label="'+h+'"><span class="k-icon k-i-check"></span></a></div>',n=this.fields(x.mobile,t),i=this,o=[],d+=this._buildEditTemplate(t,n,o,!0),d+="</div>",r=c.append(d),!t.isNew()&&this.options.editable&&this.options.editable.destroy!==!1&&t.isRecurrenceHead()&&t.recurrenceException&&(a='<ul class="k-edit-buttons"><li class="k-item"><span href="#" class="k-scheduler-resetSeries k-label" aria-label="'+m+'">'+m+"</span></li></ul>",r.contentElement.append(a)),!t.isNew()&&this.options.editable&&this.options.editable.destroy!==!1&&(s='<ul class="k-edit-buttons"><li class="k-item"><span href="#" class="k-scheduler-delete k-label" aria-label="'+p+'">'+p+"</span></li></ul>",r.contentElement.append(s)),this._editPane=r,l=this.container=r.element,this.editable=l.kendoEditable({fields:o,model:t,clearContainer:!1,target:i.options.target,validateOnBlur:!0}).data("kendoEditable"),this.trigger("edit",{container:l,model:t})?this.trigger("cancel",{container:l,model:t}):(l.on(ee+Z,"a.k-scheduler-edit, a.k-scheduler-cancel, a.k-scheduler-update, span.k-scheduler-delete, span.k-scheduler-resetSeries",function(n){var o,r;n.preventDefault(),n.stopPropagation(),o=e(this),o.hasClass("k-scheduler-edit")?c.navigate(this._editPane,i.options.animations.right):(r="cancel",o.hasClass("k-scheduler-update")?r="save":o.hasClass("k-scheduler-delete")?r="remove":o.hasClass("k-scheduler-resetSeries")&&(r=ue),i.trigger(r,{container:l,model:t}))}),c.navigate(r,i.options.animations.left),t.bind("change",i.toggleDateValidationHandler)),this.editable},_views:function(){return this.pane.element.find(P.roleSelector("view")).not(this.view.element)},close:function(){var e,t,n,i;if(this.container){for(this.pane.navigate("",this.options.animations.right),e=this._views(),n=0,i=e.length;n<i;n++)t=e.eq(n).data("kendoView"),t&&t.purge();e.remove(),this.container=null,this.editable&&(this.editable.options.model.unbind("change",this.toggleDateValidationHandler),this.editable.destroy(),this.editable=null),this.timezoneView=null}}}),T=C.extend({destroy:function(){this.close(),this.unbind()},editEvent:function(t){var n,i,o,r=this,a=r.options.editable,s="<div "+P.attr("uid")+'="'+t.uid+'" class="k-popup-edit-form k-scheduler-edit-form"><div class="k-edit-form-container">',l=r.options.messages,c=l.save,d=l.cancel,u=l.destroy,h=l.resetSeries,p=this.fields(x.desktop,t),f=[];return s+=this._buildEditTemplate(t,p,f,!1),i=Y(a)?a.window:{},s+='<div class="k-edit-buttons k-state-default">',s+=this.createButton({name:"update",text:c,attr:n})+this.createButton({name:"canceledit",text:d,attr:n}),!t.isNew()&&a.destroy!==!1&&t.isRecurrenceHead()&&t.recurrenceException&&(s+=this.createButton({name:"resetSeries",text:h,attr:n})),t.isNew()||a.destroy===!1||(s+=this.createButton({name:"delete",text:u,attr:n})),s+="</div></div></div>",o=this.container=e(s).appendTo(r.element).eq(0).kendoWindow(K({modal:!0,resizable:!1,draggable:!0,title:l.editor.editorTitle,visible:!1,close:function(e){e.userTriggered&&r.trigger(ce,{container:o,model:t})&&e.preventDefault()}},i)),r.editable=o.kendoEditable({fields:f,model:t,clearContainer:!1,validateOnBlur:!0,target:r.options.target}).data("kendoEditable"),r.trigger(fe,{container:o,model:t})?r.trigger(ce,{container:o,model:t}):(o.data("kendoWindow").center().open(),o.on(ee+Z,"a.k-scheduler-cancel",function(e){e.preventDefault(),e.stopPropagation(),r.trigger(ce,{container:o,model:t})}),o.on(ee+Z,"a.k-scheduler-update",function(e){e.preventDefault(),e.stopPropagation(),r.trigger("save",{container:o,model:t})}),o.on(ee+Z,"a.k-scheduler-delete",function(e){e.preventDefault(),e.stopPropagation(),r.trigger(de,{container:o,model:t})}),o.on(ee+Z,"a.k-scheduler-resetSeries",function(e){e.preventDefault(),e.stopPropagation(),r.trigger(ue,{container:o,model:t})}),P.cycleForm(o),t.bind("change",r.toggleDateValidationHandler)),r.editable},close:function(){var e=this,t=function(){e.editable&&(e.editable.options.model.unbind("change",e.toggleDateValidationHandler),e.editable.destroy(),e.editable=null,e.container=null),e.popup&&(e.popup.destroy(),e.popup=null)};e.editable?(e._timezonePopup&&e._timezonePopup.data("kendoWindow")&&(e._timezonePopup.data("kendoWindow").destroy(),e._timezonePopup=null),e.container.is(":visible")?e.container.data("kendoWindow").bind("deactivate",t).close():t()):t()},_createEndTimezoneButton:function(){var e=this.options.messages,t="";return t+='<div class="k-edit-buttons k-state-default">',t+=this.createButton({name:"savetimezone",text:e.save})+this.createButton({name:"canceltimezone",text:e.cancel}),t+="</div></div></div>"},showDialog:function(t){var n,i,o,r=P.format("<div class='k-popup-edit-form'><div class='k-edit-form-container'><p class='k-popup-message'>{0}</p>",t.text);for(r+='<div class="k-edit-buttons k-state-default">',n=0;n<t.buttons.length;n++)r+=this.createButton(t.buttons[n]);r+="</div></div></div>",i=this.element,this.popup&&this.popup.destroy(),o=this.popup=e(r).appendTo(i).eq(0).on(ee,".k-button",function(n){n.preventDefault(),o.close();var i=e(n.currentTarget).index();t.buttons[i].click()}).kendoWindow({modal:!0,resizable:!1,draggable:!1,title:t.title,visible:!1,close:function(){this.destroy(),i.focus()}}).getKendoWindow(),o.center().open()},_initTimezoneEditor:function(e,t){var n,i=this,o=i.container.find(".k-scheduler-timezones"),r=o.find("input.k-timezone-toggle"),a=o.find(".k-edit-label:last").add(o.find(".k-edit-field:last")),s=o.find(".k-scheduler-savetimezone"),l=o.find(".k-scheduler-canceltimezone"),c=i._timezonePopup,d=function(t){if("startTimezone"===t.field){var n=e.startTimezone;r.prop("disabled",!n),n||(a.hide(),e.set("endTimezone",""),r.prop("checked",!1))}};i._startTimezone=e.startTimezone,i._endTimezone=e.endTimezone,c||(i._timezonePopup=c=o.kendoWindow({modal:!0,resizable:!1,draggable:!0,title:i.options.messages.editor.timezoneEditorTitle,visible:!1,close:function(n){e.unbind("change",d),n.userTriggered&&i._revertTimezones(e),t&&t.focus()}}),r.click(function(){a.toggle(r.prop("checked")),e.set("endTimezone","")}),s.click(function(e){e.preventDefault(),n.close()}),l.click(function(t){t.preventDefault(),i._revertTimezones(e),n.close()}),e.bind("change",d)),r.prop("checked",e.endTimezone).prop("disabled",!e.startTimezone),e.endTimezone?a.show():a.hide(),n=c.data("kendoWindow"),n.center().open()}}),D=U.extend({init:function(t,n){var i=this;W.fn.init.call(i,t,n),i.options.views&&i.options.views.length||(i.options.views=["day","week"]),i.resources=[],i._initModel(),i._wrapper(),i._views(),i._toolbar(),i._dataSource(),i._resources(),i._resizeHandler=function(){i.resize()},i.wrapper.on(te+Z+" selectstart"+Z,function(t){e(t.target).is(":kendoFocusable")||t.preventDefault()}),i.options.editable&&i.options.editable.resize!==!1&&i._resizable(),i._movable(),i._bindResize(),i.options.messages&&i.options.messages.recurrence&&(N.options=i.options.messages.recurrence),i._selectable(),i._touchHandlers(),i._ariaId=P.guid(),i._createEditor()},_bindResize:function(){e(window).on("resize"+Z,this._resizeHandler)},_unbindResize:function(){e(window).off("resize"+Z,this._resizeHandler)},dataItems:function(){var n,i,o,r,a,s=this,l=s.items(),c=s._data,d=e.map(l,function(t){return e(t).attr("data-uid")}),u={},h=d.length;for(n=0;n<h;n++)u[d[n]]=null;for(o=c.length,n=0;n<o;n++)r=c[n],u[r.uid]!==t&&(u[r.uid]=r);a=[];for(i in u)a.push(u[i]);return a},_isMobile:function(){var e=this.options;return e.mobile===!0&&P.support.mobileOS||"phone"===e.mobile||"tablet"===e.mobile},_isTouch:function(e){return/touch/.test(e.type)||e.originalEvent&&/touch/.test(e.originalEvent.pointerType)},_isInverseColor:function(e){return e.hasClass(_e)},_groupsByResource:function(e,t,n,i,o){var r,a,s,l,c,d,u;if(n||(n=[]),r=e[0]){for(s=r.dataSource.view(),l=0,c=0;c<s.length;c++)d=P.getter(r.dataValueField)(s[c]),u=t+l+c,a=this._groupsByResource(e.slice(1),u,n,d,r.field),a[r.field]=d,l=a.groupIndex,o&&i&&(a[o]=i),1===e.length&&(a.groupIndex=t+c,n.push(a));return a}return{}},data:function(){return this._data},select:function(n){var i,o,r,a,s,l,c,d,u,h,p=this,f=p.view(),g=p._selection,m=f.groups;if(n===t)return r=f._selectedSlots,g?(g&&g.events&&(o=p._selectedEvents()),{start:g.start,end:g.end,events:o,slots:r,resources:f._resourceBySlot(g)}):[];if(!n)return p._selection=null,p._old=null,f.clearSelection(),t;if(e.isArray(n)&&(n={events:n.splice(0)}),n.resources){s=[],l=[],f.groupedResources&&p._groupsByResource(f.groupedResources,0,l);for(a in n.resources)s.push({field:a,operator:"eq",value:n.resources[a]});i=new P.data.Query(l).filter(s).toArray()}return n.events&&n.events.length?(p._selectEvents(n.events,i),p._select(),t):(m&&n.start&&n.end&&(c=L(f._startDate),d=P.date.addDays(L(f._endDate),1),n.start<d&&c<=n.end&&(u=i&&i.length?m[i[0].groupIndex]:m[0],u.timeSlotCollectionCount()||(n.isAllDay=!0),h=u.ranges(n.start,n.end,n.isAllDay,!1),h.length&&(p._selection={start:P.timezone.toLocalDate(h[0].start.start),end:P.timezone.toLocalDate(h[h.length-1].end.end),groupIndex:h[0].start.groupIndex,index:h[0].start.index,isAllDay:h[0].start.isDaySlot,events:[]},p._select()))),t)},_selectEvents:function(e,t){var n,i,o,r,a,s,l,c,d=this,u=d.view(),h=u.groups,p=e.length,f=t&&t.length;for(n=0;n<p;n++)if(h&&f){for(i=h[t[0].groupIndex],o=[],r=i.timeSlotCollectionCount(),a=i.daySlotCollectionCount(),s=0;s<r;s++)o=o.concat(i.getTimeSlotCollection(s).events());for(l=0;l<a;l++)o=o.concat(i.getDaySlotCollection(l).events());o=new P.data.Query(o).filter({field:"element[0].getAttribute('data-uid')",operator:"eq",value:e[n]}).toArray(),o[0]&&d._createSelection(o[0].element)}else c=u.element.find(P.format(".k-event[data-uid={0}], .k-task[data-uid={0}]",e[n])),c.length&&d._createSelection(c[0])},_touchHandlers:function(){var t,n,i,o,r,a=this,s=a.wrapper,l=e.proxy(a._touchMove,a);s.on(ne+Z,".k-scheduler-header-all-day td, .k-scheduler-content td, .k-event",function(e){var i=a.wrapper.find(".k-scheduler-content");a._isTouch(e)&&(i.stop(!0,!1),a._touchPosX=t=a._tapPosition(e,"X"),a._touchPosY=n=a._tapPosition(e,"Y"),a._userTouched=!0,a.view()._scrolling=!1,r=Date.now(),s.on(ie+Z,".k-scheduler-header-all-day td, .k-scheduler-content td, .k-event",l))}),s.on(oe+Z,".k-scheduler-header-all-day td, .k-scheduler-content td, .k-event",function(e){var c,d,u;a._isTouch(e)&&(c=Date.now()-r,d=a.wrapper.find(".k-scheduler-content"),u=-a._amplitude*(3e3/c),i=a._tapPosition(e,"X"),o=a._tapPosition(e,"Y"),a._dragging||(a.options.selectable&&(Math.abs(i-t)<=10||Math.abs(o-n)<=10)&&a._mouseDownSelection(e),!P.support.kineticScrollNeeded&&c<200&&Math.abs(i-t)>10&&d.animate({scrollTop:d[0].scrollTop+u}),s.off(ie+Z,".k-scheduler-header-all-day td, .k-scheduler-content td",l)))})},_selectable:function(){var t,n=this,i=n.wrapper;n.options.selectable&&(n._tabindex(),i.on(te+Z,".k-scheduler-header-all-day td, .k-scheduler-content td, .k-event",function(e){n._isTouch(e)||n._mouseDownSelection(e)}),t=e.proxy(n._mouseMove,n),i.on(te+Z,".k-scheduler-header-all-day td, .k-scheduler-content td",function(e){var o=e.which,r=e.button,a=o&&3===o||r&&2==r;n._isTouch(e)||a||i.on(re+Z,".k-scheduler-header-all-day td, .k-scheduler-content td",t)}),i.on("mouseup"+Z+" mousecancel"+Z,function(){i.off(re+Z,".k-scheduler-header-all-day td, .k-scheduler-content td",t)}),i.on("focus"+Z,function(){n._selection||n._userTouched||n._selectFirstSlot(),n._select()}),i.on("focusout"+Z,function(t){n._ctrlKey=n._shiftKey=!1,n.toolbar.find("ul > li").removeClass(ge),e(t.relatedTarget).closest(ve).length||n.toolbar.find(ve).removeClass(me)}),i.on("keydown"+Z,Q(n._keydown,n)),i.on("keyup"+Z,function(e){n._ctrlKey=e.ctrlKey,n._shiftKey=e.shiftKey}))},_mouseDownSelection:function(e){var t=e.which,n=e.button,i=t&&3===t||n&&2==n;i||(e.ctrlKey&&(this._ctrlKey=e.ctrlKey),e.shiftKey&&(this._shiftKey=e.shiftKey),this._createSelection(e.currentTarget)),P._activeElement()!==this.wrapper.get(0)?P.focusElement(this.wrapper):this._select(),this.toolbar.find("ul > li").removeClass(ge)},_selectFirstSlot:function(){this._createSelection(this.wrapper.find(".k-scheduler-content").find("td:first"))},_select:function(){var t,n,i,o,r,a=this,s=a.view(),l=a.wrapper,c=s.current(),d=a._selection,u=a._old?a._old.selection:null,h=a._old?a._old.eventsLength:null;if(d&&(c&&(c.removeAttribute("id"),c.removeAttribute("aria-label"),l.removeAttr("aria-activedescendant")),s.select(d),c=s.current(),c&&(u!==c||d.events&&h!==d.events.length))){if(t=e(c).data("uid"),a._old&&t&&t===e(a._old.selection).data("uid")&&d.events&&a._old.eventsLength===d.events.length)return;i=d,o=a._selectedEvents(),r=s._selectedSlots,o[0]?(i=o[0]||d,n=P.format(a.options.messages.ariaEventLabel,i.title,i.start,i.start)):n=P.format(a.options.messages.ariaSlotLabel,i.start,i.end),c.setAttribute("id",a._ariaId),c.setAttribute("aria-label",n),l.attr("aria-activedescendant",a._ariaId),a._old={selection:c,eventsLength:o.length},a.trigger("change",{start:d.start,end:d.end,events:o,slots:r,resources:s._resourceBySlot(d)})}},_selectedEvents:function(){for(var e,t=this._selection.events,n=t.length,i=0,o=[];i<n;i++)e=this.occurrenceByUid(t[i]),e&&o.push(e);return o},_tapPosition:function(e,t){return/touch/.test(e.type)?(e.originalEvent||e).changedTouches[0]["page"+t]:e["page"+t]},_touchMove:function(e){var t=this,n=t.wrapper.find(".k-scheduler-content"),i=n[0].scrollHeight>n[0].clientHeight,o=n[0].scrollWidth>n[0].clientWidth,r=t._tapPosition(e,"Y"),a=t._tapPosition(e,"X"),s=n[0].scrollTop-Math.round(r-t._touchPosY),l=n[0].scrollLeft-Math.round(a-t._touchPosX),c=i&&Math.abs(r-t._touchPosY)>10,d=o&&Math.abs(r-t._touchPosY)>10;t._dragging||P.support.kineticScrollNeeded||!t._isTouch(e)||(c||d)&&(t._amplitude=Math.round(r-t._touchPosY),t._touchPosY=r,t._touchPosX=a,n.animate({scrollTop:s,scrollLeft:l},0),t.view()._scrolling=!0)},_mouseMove:function(t){var n=this;clearTimeout(n._moveTimer),n._isTouch(t)||(n._moveTimer=setTimeout(function(){var i,o,r,a=n.view(),s=n._selection;s&&(i=a.selectionByElement(e(t.currentTarget)),i&&s.groupIndex===i.groupIndex&&(o=i.startDate(),r=i.endDate(),o>=s.end?s.backward=!1:r<=s.start&&(s.backward=!0),s.backward?s.start=o:s.end=r,n._select()))},5))},_viewByIndex:function(e){var t,n=this.views;for(t in n){if(!e)return t;e--}},_keydown:function(n){var i,o,r,a,s,l,c=this,d=n.keyCode,u=c.view(),h=u.options.editable,p=c._selection,f=e.extend(p),g=16===d||18===d||17===d||91===d||92===d,m=".k-scheduler-tools > li,.k-scheduler-navigation > li,.k-scheduler-views > li.k-state-selected:visible, .k-scheduler-views > li.k-current-view:visible",v=c.toolbar.find(m),_=c.toolbar.find(ve),b=e(n.target).closest(ve).length||c.toolbar.find(".k-scheduler-views .k-state-focused").length,w=_.children().index(c.toolbar.find("."+ge)),k=P.support.isRtl(c.element),y=k?-1:1;if(w==-1&&(w=_.children().index(c.toolbar.find(".k-state-selected"))),c._ctrlKey=n.ctrlKey,c._shiftKey=n.shiftKey,d===O.F10)return c.toolbar.find("ul > li:first").focus().addClass(ge),n.preventDefault(),t;if(d===O.TAB){if(c.toolbar.find("."+ge).length)return o=v.index(c.toolbar.find("."+ge)),o===-1&&c._focusedView&&(o=v.index(c.toolbar.find(".k-scheduler-views > .k-state-selected"))),r=n.shiftKey?v[o-1]:v[o+1],c.toolbar.find("."+ge).removeClass(ge),r?(e(r).addClass(ge).focus(),c._focusedView=null,n.preventDefault(),t):(c.element.focus(),n.preventDefault(),t)}else if(d===O.ENTER||d===O.SPACEBAR){if(b&&c._focusedView&&!c._focusedView.hasClass("k-state-selected"))return a=c._focusedView.data().name,c.trigger("navigate",{view:a,action:"changeView",date:c.date()})||(c.view(a),_.removeClass(me),c.toolbar.find(".k-current-view:visible").length&&(e(document.activeElement).blur(),c.toolbar.find(".k-current-view:visible").addClass(ge).find(".k-link").focus())),n.preventDefault(),t;if(c.toolbar.find("."+ge+":visible").length)return c.toolbar.find("."+ge+":visible").click(),n.preventDefault(),t}else if(n.altKey&&d===O.DOWN){if(c.toolbar.find("."+ge+":visible").length)return c.toolbar.find("."+ge+":visible").click(),n.preventDefault(),t}else{if(d===O.RIGHT&&b)return e(c.toolbar.find("."+ge)).removeClass(ge),c._focusedView=e(k?w-1===0?_.children(":not(.k-current-view):last"):_.children()[w+1*y]:w+1===_.children().length?_.children(":not(.k-current-view):first"):_.children()[w+1*y]),c._focusedView.focus().addClass(ge),n.preventDefault(),t;if(d===O.LEFT&&b)return e(c.toolbar.find("."+ge)).removeClass(ge),c._focusedView=e(k?w+1===_.children().length?_.children(":not(.k-current-view):first"):_.children()[w-1*y]:w-1===0?_.children(":not(.k-current-view):last"):_.children()[w-1*y]),c._focusedView.focus().addClass(ge),n.preventDefault(),t;if(d===O.DOWN&&c.toolbar.find(ve).hasClass(me))return c.toolbar.find("."+ge).removeClass(ge),i=c._focusedView?_.find(c._focusedView).index():_.children(".k-scheduler-views > .k-state-selected").index(),c._focusedView=e(i+1===_.children().length?_.children(":not(.k-current-view):first"):_.children()[i+1*y]),c._focusedView.focus().addClass(ge),n.preventDefault(),t;if(d===O.UP&&c.toolbar.find(ve).hasClass(me))return c.toolbar.find("."+ge).removeClass(ge),i=c._focusedView?_.find(c._focusedView).index():_.children(".k-scheduler-views > .k-state-selected").index(), +c._focusedView=e(i-1===0?_.children(":not(.k-current-view):last"):_.children()[i-1*y]),c._focusedView.focus().addClass(ge),n.preventDefault(),t;if(n.altKey&&d===O.DOWN&&c.toolbar.find(".k-nav-current").hasClass(ge))return c._showCalendar(),n.preventDefault(),t;if(d===O.ESC&&c.popup&&c.popup.visible())return c.popup.close(),n.preventDefault(),t;if(d===O.ESC&&c.toolbar.find(ve).hasClass(me))return c.toolbar.find(ve).removeClass(me),c.toolbar.find(ve).children().removeClass(ge),c._focusedView=null,c.toolbar.find(".k-current-view").focus().addClass(ge),n.preventDefault(),t}if(!g){if(!p)return c._selectFirstSlot(),c._select(),c.element.focus(),t;d===O.TAB?u.moveToEvent(p,n.shiftKey)&&(c._select(),document.activeElement.getAttribute("id")!==c.element.attr("id")&&c.element.focus(),n.preventDefault()):d===O.ENTER||d===O.SPACEBAR?p.events.length&&h?h.update!==!1&&c.editEvent(p.events[0]):h&&h.create!==!1&&(p.isAllDay&&(p=e.extend({},p,{end:P.date.addDays(p.end,-1)})),n.preventDefault(),c.addEvent(K({},p,u._resourceBySlot(p)))):d===O.DELETE&&h!==!1&&h.destroy!==!1?c.removeEvent(p.events[0]):d>=49&&d<=57?(s=c._viewByIndex(d-49),s&&!c.trigger("navigate",{view:s,action:"changeView",date:c.date()})&&c.view(s)):u.move(p,d,n.shiftKey)&&(u.inRange(p)?c._select():(l=c.date().getTime()>p.start.getTime()?"previous":"next",c.trigger("navigate",{view:c._selectedViewName,action:l,date:p.start})?(p.start=f.start,p.end=f.end):c.date(p.start)),c.toolbar.find("ul > li").removeClass(ge),n.preventDefault()),c._adjustSelectedDate()}},_createSelection:function(t){var n,i,o=this._selection;t=e(t),t.is(".k-event")&&(n=t.attr(P.attr("uid")),o&&o.events.indexOf(n)!==-1&&!this._ctrlKey)||(o&&(this._ctrlKey||this._shiftKey)||(o=this._selection={events:[],groupIndex:0}),i=this.view().selectionByElement(t),i&&(o.groupIndex=i.groupIndex||0),n&&(i=c(this._data,n)),i&&i.uid&&(n=[i.uid]),this._updateSelection(i,n),this._adjustSelectedDate())},_updateSelection:function(e,n,i){var o,r,a,s=this._selection;e&&s&&(o=this.view(),e.uid&&(e=o._updateEventForSelection(e)),this._shiftKey&&s.start&&s.end?(r=e.end<s.end,s.end=e.endDate?e.endDate():e.end,r&&o._timeSlotInterval&&P.date.setTime(s.end,-o._timeSlotInterval())):(s.start=e.startDate?e.startDate():e.start,s.end=e.endDate?e.endDate():e.end),s.isAllDay="isDaySlot"in e?e.isDaySlot:e.isAllDay,null!==i&&i!==t&&(s.groupIndex=i),s.index=e.index,this._ctrlKey?(a=n&&n.length?s.events.indexOf(n[0]):-1,a>-1?s.events.splice(a,1):s.events=s.events.concat(n||[])):s.events=n||[])},options:{name:"Scheduler",date:we,editable:!0,autoBind:!0,snap:!0,mobile:!1,timezone:"",allDaySlot:!0,min:new Date(1900,0,1),max:new Date(2099,11,31),toolbar:null,workWeekStart:1,workWeekEnd:5,showWorkHours:!1,startTime:we,endTime:we,currentTimeMarker:{updateInterval:1e4,useLocalTimezone:!0},footer:{},messages:{today:"Today",pdf:"Export to PDF",save:"Save",cancel:"Cancel",destroy:"Delete",resetSeries:"Reset Series",deleteWindowTitle:"Delete event",next:"Next",previous:"Previous",ariaSlotLabel:"Selected from {0:t} to {1:t}",ariaEventLabel:"{0} on {1:D} at {2:t}",views:{day:"Day",week:"Week",workWeek:"Work Week",agenda:"Agenda",month:"Month",timeline:"Timeline",timelineWeek:"Timeline Week",timelineWorkWeek:"Timeline Work Week",timelineMonth:"Timeline Month"},recurrenceMessages:{deleteWindowTitle:"Delete Recurring Item",resetSeriesWindowTitle:"Reset Series",deleteWindowOccurrence:"Delete current occurrence",deleteWindowSeries:"Delete the series",editWindowTitle:"Edit Recurring Item",editWindowOccurrence:"Edit current occurrence",editWindowSeries:"Edit the series"},editable:{confirmation:Ce},editor:{title:"Title",start:"Start",end:"End",allDayEvent:"All day event",description:"Description",repeat:"Repeat",timezone:"Timezone",startTimezone:"Start timezone",endTimezone:"End timezone",separateTimezones:"Use separate start and end time zones",timezoneEditorTitle:"Timezones",timezoneEditorButton:"Time zone",timezoneTitle:"Time zones",noTimezone:"No timezone",editorTitle:"Event"}},height:null,width:null,resources:[],group:{resources:[],orientation:"horizontal"},views:[],selectable:!1},events:[de,fe,ce,he,"add","dataBinding","dataBound","moveStart","move","moveEnd","resizeStart","resize","resizeEnd","navigate","change"],destroy:function(){var t,n,i,o=this;if(W.fn.destroy.call(o),o.dataSource&&(o.dataSource.unbind(ae,o._refreshHandler),o.dataSource.unbind(se,o._progressHandler),o.dataSource.unbind(le,o._errorHandler)),o._resourceRefreshHandler)for(n=0;n<o.resources.length;n++)i=o.resources[n].dataSource,i.unbind(ae,o._resourceRefreshHandler),i.unbind(se,o._resourceProgressHandler),i.unbind(le,o._resourceErrorHandler);o.calendar&&(o.calendar.destroy(),o.popup.destroy()),o.view()&&o.view().destroy(),o._editor&&o._editor.destroy(),this._moveDraggable&&this._moveDraggable.destroy(),this._resizeDraggable&&this._resizeDraggable.destroy(),t=o.element.add(o.wrapper).add(o.toolbar).add(o.popup),t.off(Z),clearTimeout(o._moveTimer),o._model=null,o.toolbar=null,o.element=null,e(window).off("resize"+Z,o._resizeHandler),P.destroy(o.wrapper)},setDataSource:function(e){this.options.dataSource=e,this._dataSource(),this.options.autoBind&&e.fetch?e.fetch():J(e)&&this.view(this._selectedView)},items:function(){var e=this.wrapper.find(".k-scheduler-content"),t=this.view();return t&&"agenda"===t.options.name?e.find(".k-task"):e.find(".k-event").add(this.wrapper.find(".k-scheduler-header-wrap").find(".k-scheduler-header-all-day").siblings())},_movable:function(){var n,i,o,r,a,s,l,c,d,u,h=this,p=0,f=[],g=[],m=h._isMobile(),v=h.options.editable&&h.options.editable.move!==!1,_=h.options.editable&&h.options.editable.resize!==!1;(v||_&&m)&&(h._dragging=!1,m&&P.support.mobileOS.android&&(p=5),h._moveDraggable=new P.ui.Draggable(h.element,{distance:p,filter:".k-event",ignore:".k-resize-handle",holdToDrag:m,autoScroll:!0}),v&&h._moveDraggable.bind("dragstart",function(e){var a,p,g,m,v=h.view(),_=e.currentTarget,b=h._isTouch(e);if(h._dragging=!0,!v.options.editable||v.options.editable.move===!1)return h._dragging=!1,e.preventDefault(),t;if(b&&!_.hasClass("k-event-active"))return h._dragging=!1,h.element.find(".k-event-active").removeClass("k-event-active"),e.preventDefault(),t;if(s=h.occurrenceByUid(_.attr(P.attr("uid"))),l=s.clone(),u=s.clone(),l.update(v._eventOptionsForMove(l)),l.inverseColor=h._isInverseColor(_),f=[],h._selection)for(a=h._selection.events,p=0;p<a.length;p++)g=h.occurrenceByUid(a[p]).clone(),m=this.element.find('div.k-event[data-uid="'+g.uid+'"]').eq(0),g.update(v._eventOptionsForMove(g)),m.length&&(g.inverseColor=h._isInverseColor(m)),f.push(g);else f.push(l);n=v._slotByPosition(e.x.startLocation,e.y.startLocation),o=v._resourceBySlot(n),d=r=n.startOffset(e.x.startLocation,e.y.startLocation,h.options.snap),i=n,c=n,n&&!h.trigger("moveStart",{event:s})||e.preventDefault()}).bind("drag",function(t){var o,u,p,m,v,_=h.view(),b=_._slotByPosition(t.x.location,t.y.location);if(b){if(a=b.startOffset(t.x.location,t.y.location,h.options.snap),b.isDaySlot!==n.isDaySlot)if(b.isDaySlot!==c.isDaySlot)for(m=e(n.element).index(),v=e(b.element).parent().children().eq(m),n=_._slotByPosition(v.offset().left,v.offset().top),r=n.startOffset(t.x.location,t.y.location,!0),g=f.map(function(e){return e.clone()}),p=0;p<f.length;p++)f[p].isAllDay!=b.isDaySlot&&(f[p].isAllDay=b.isDaySlot,f[p].end=P.date.getDate(f[p].start),f[p].start=P.date.getDate(f[p].start),b.isDaySlot||(P.date.setTime(f[p].start,P.date.getMilliseconds(_.startTime())),P.date.setTime(f[p].end,P.date.getMilliseconds(_.startTime())+_._timeSlotInterval())));else n=e.extend(!0,{},c),r=d,f=g;for(o=a-r,p=0;p<f.length;p++)_._updateMoveHint(f[p],b.groupIndex,o);if(u=k(l,o),h.trigger("move",{event:s,slot:{element:b.element,start:b.startDate(),end:b.endDate(),isDaySlot:b.isDaySlot},resources:_._resourceBySlot(b),start:u.start,end:u.end}))for(p=0;p<f.length;p++)_._updateMoveHint(f[p],b.groupIndex,o);else i=b}}).bind("dragend",function(t){var n,d,u,p,m,v,_,b,w,y;if(h.view()._removeMoveHint(),n=a-r,d=k(l,n),u=d.start,p=d.end,h._dragging=!1,m=h.view()._resourceBySlot(i),v=h.trigger("moveEnd",{event:s,slot:{element:i.element,start:i.startDate(),end:i.endDate()},start:u,end:p,resources:m}),!v&&(s.start.getTime()!==u.getTime()||s.end.getTime()!==p.getTime()||c.isDaySlot!==i.isDaySlot||P.stringify(m)!==P.stringify(o))){for(h._isMultiDrag=f.length>1,_=0;_<f.length;_++)b=f[_],d=k(b,n),w=h.view()._eventOptionsForMove(b),y=e.extend({isAllDay:b.isAllDay,start:d.start,end:d.end},w,m),h._updateEvent(null,b,y);h._isMultiDrag&&(h.dataSource.sync(),h._isMultiDrag=!1)}t.currentTarget.removeClass("k-event-active"),this.cancelHold(),f=[],g=[]}).bind("dragcancel",function(){h.view()._removeMoveHint(),this.cancelHold(),f=[],g=[]}),h._moveDraggable.bind("hold",function(e){h._isTouch(e)&&(h.element.find(".k-event-active").removeClass("k-event-active"),h.options.selectable&&h._createSelection(e.currentTarget),e.currentTarget.addClass("k-event-active"))}))},_resizable:function(){function t(e){var t,n={"k-resize-e":"east","k-resize-w":"west","k-resize-n":"north","k-resize-s":"south"};for(t in n)if(e.hasClass(t))return n[t]}var n,i,o,r,a,s=this,l=0;s._isMobile()&&P.support.mobileOS.android&&(l=5),s._resizeDraggable=new P.ui.Draggable(s.element,{distance:l,filter:".k-resize-handle",autoScroll:!0,dragstart:function(t){var l=e(t.currentTarget),c=l.closest(".k-event"),d=c.attr(P.attr("uid")),u=s.view();s._dragging=!0,o=s.occurrenceByUid(d),r=o.clone(),u._updateEventForResize(r),a=u._slotByPosition(t.x.startLocation,t.y.startLocation),s.trigger("resizeStart",{event:o})&&t.preventDefault(),n=P.date.toUtcTime(r.start),i=P.date.toUtcTime(r.end)},drag:function(l){var c,d,u,h,p,f;a&&(c=e(l.currentTarget),d=t(c),u=s.view(),h=u._slotByPosition(l.x.location,l.y.location),h&&a.groupIndex==h.groupIndex&&(a=h,p=n,f=i,"south"==d?!a.isDaySlot&&a.end-P.date.toUtcTime(r.start)>=u._timeSlotInterval()&&(i=r.isAllDay?a.startOffset(l.x.location,l.y.location,s.options.snap):a.endOffset(l.x.location,l.y.location,s.options.snap)):"north"==d?!a.isDaySlot&&P.date.toUtcTime(r.end)-a.start>=u._timeSlotInterval()&&(n=a.startOffset(l.x.location,l.y.location,s.options.snap)):"east"==d?a.isDaySlot&&P.date.toUtcTime(P.date.getDate(a.endDate()))>=P.date.toUtcTime(P.date.getDate(r.start))?i=r.isAllDay?a.startOffset(l.x.location,l.y.location,s.options.snap):a.endOffset(l.x.location,l.y.location,s.options.snap):!a.isDaySlot&&a.end-P.date.toUtcTime(r.start)>=u._timeSlotInterval()&&(i=a.endOffset(l.x.location,l.y.location,s.options.snap)):"west"==d&&(a.isDaySlot&&P.date.toUtcTime(P.date.getDate(r.end))>=P.date.toUtcTime(P.date.getDate(a.startDate()))?n=a.startOffset(l.x.location,l.y.location,s.options.snap):!a.isDaySlot&&P.date.toUtcTime(r.end)-a.start>=u._timeSlotInterval()&&(n=a.startOffset(l.x.location,l.y.location,s.options.snap))),s.trigger("resize",{event:o,slot:{element:a.element,start:a.startDate(),end:a.endDate()},start:P.timezone.toLocalDate(n),end:P.timezone.toLocalDate(i),resources:u._resourceBySlot(a)})?(n=p,i=f):u._updateResizeHint(r,a.groupIndex,n,i)))},dragend:function(l){var c,d=e(l.currentTarget),u=new Date(r.start.getTime()),h=new Date(r.end.getTime()),p=t(d);s._dragging=!1,s.view()._removeResizeHint(),"south"==p?h=P.timezone.toLocalDate(i):"north"==p?u=P.timezone.toLocalDate(n):"east"==p?h=a.isDaySlot?P.date.getDate(P.timezone.toLocalDate(i)):P.timezone.toLocalDate(i):"west"==p&&(a.isDaySlot?(u=new Date(P.timezone.toLocalDate(n)),u.setHours(0),u.setMinutes(0)):u=P.timezone.toLocalDate(n)),c=s.trigger("resizeEnd",{event:o,slot:{element:a.element,start:a.startDate(),end:a.endDate()},start:u,end:h,resources:s.view()._resourceBySlot(a)}),!c&&h.getTime()>=u.getTime()&&(r.start.getTime()==u.getTime()&&r.end.getTime()==h.getTime()||(s.view()._updateEventForResize(o),s._updateEvent(p,o,{start:u,end:h}))),a=null,o=null},dragcancel:function(){s._dragging=!1,s.view()._removeResizeHint(),a=null,o=null}})},_updateEvent:function(e,t,n){var i,o=this,r=function(e,t){try{o._preventRefresh=!0,e.update(n),o._convertDates(e)}finally{o._preventRefresh=!1}o.trigger(he,{event:e})||(t&&t(),o._isMultiDrag||o.dataSource.sync())},a=function(e){return e.recurrenceRule?o.dataSource.getByUid(e.uid):o.dataSource.get(e.recurrenceId)},s=function(){var i,s,l=a(t);"south"!=e&&"north"!=e||(n.start&&(i=P.date.getDate(l.start),P.date.setTime(i,H(n.start)),n.start=i),n.end&&(s=P.date.getDate(l.end),P.date.setTime(s,H(n.end)),n.end=s)),o.dataSource._removeExceptions(l),r(l)},l=function(){var e=a(t),n=function(){o._convertDates(e),o._selection&&o._selection.events.push(s)},i=e.toOccurrence({start:t.start,end:t.end}),s=i.uid;r(o.dataSource.add(i),n)};t.recurrenceRule||t.isOccurrence()?(i=o.options.messages.recurrenceMessages,o._showRecurringDialog(t,l,s,{title:i.editWindowTitle,text:i.editRecurring?i.editRecurring:Te,occurrenceText:i.editWindowOccurrence,seriesText:i.editWindowSeries})):r(o.dataSource.getByUid(t.uid))},_modelForContainer:function(t){return t=e(t).closest("["+P.attr("uid")+"]"),this.dataSource.getByUid(t.attr(P.attr("uid")))},showDialog:function(e){this._editor.showDialog(e)},focus:function(){this.wrapper.focus()},_confirmation:function(e,t,n){var i,o,r,a,s,l=this.options.editable;l===!0||l.confirmation!==!1?(i=this.options.messages,o=i.deleteWindowTitle,r=typeof l.confirmation===q?l.confirmation:i.editable.confirmation,this._isEditorOpened()&&t.isRecurring()&&(a=this.options.messages.recurrenceMessages,o=a.deleteWindowTitle,r=t.isException()?a.deleteRecurringConfirmation?a.deleteRecurringConfirmation:De:a.deleteSeriesConfirmation?a.deleteSeriesConfirmation:Ee,n&&(o=a.resetSeriesWindowTitle,r=a.resetSeriesConfirmation?a.resetSeriesConfirmation:Ae)),s=[{name:"destroy",text:n?i.resetSeries:i.destroy,click:function(){e()}}],this._isMobile()&&P.Pane||s.push({name:"canceledit",text:i.cancel,click:function(){e(!0)}}),this._unbindResize(),this.showDialog({model:t,text:r,title:o,buttons:s}),this._bindResize()):e()},addEvent:function(e){var t,n,i=this._editor.editable,o=this.dataSource;e=e||{},n=this.trigger("add",{event:e}),!n&&(i&&i.end()||!i)&&(this.cancelEvent(),e&&e.toJSON&&(e=e.toJSON()),t=o.add(e),t&&(this.cancelEvent(),this._editEvent(t)))},saveEvent:function(){var e,t,n,i=this._editor;i&&(e=i.editable,t=i.container,n=this._modelForContainer(t),t&&e&&e.end()&&!this.trigger(he,{container:t,event:n})&&(n.dirty||n.isOccurrence()||this._convertDates(n,"remove"),this.dataSource.sync()))},cancelEvent:function(){var e,t=this._editor,n=t.container;n&&(e=this._modelForContainer(n),e&&e.isOccurrence()&&(this._convertDates(e,"remove"),this._convertDates(this.dataSource.get(e.recurrenceId),"remove")),this.dataSource.cancelChanges(e),t.close())},editEvent:function(e){var t="string"==typeof e?this.occurrenceByUid(e):e;t&&(this.cancelEvent(),t.isRecurring()?this._editRecurringDialog(t):this._editEvent(t))},_editEvent:function(e){this._preventRefresh=!0,this._unbindResize(),this._createPopupEditor(e),this._bindResize()},_editRecurringDialog:function(e){var t=this,n=function(){e.isException()?t._editEvent(e):t.addEvent(e)},i=function(){e.recurrenceId&&(e=t.dataSource.get(e.recurrenceId)),t._editEvent(e)},o=t.options.messages.recurrenceMessages;t._showRecurringDialog(e,n,i,{title:o.editWindowTitle,text:o.editRecurring?o.editRecurring:Te,occurrenceText:o.editWindowOccurrence,seriesText:o.editWindowSeries})},_showRecurringDialog:function(e,t,n,i){var o=this.options.editable,r=Y(o)?o.editRecurringMode:"dialog";"occurrence"===r||this._isMultiDrag?t():"series"===r?n():(this._unbindResize(),this.showDialog({model:e,title:i.title,text:i.text,buttons:[{text:i.occurrenceText,click:t},{text:i.seriesText,click:n}]}),this._bindResize())},_createButton:function(e){var t=e.template||Ie,n=typeof e===q?e:e.name||e.text,i={className:"k-scheduler-"+(n||"").replace(/\s/g,""),text:n,attr:""};if(!(n||Y(e)&&e.template))throw Error("Custom commands should have name specified");return Y(e)?(e.className&&(e.className+=" "+i.className),"edit"===n&&Y(e.text)&&(e=K(!0,{},e),e.text=e.text.edit),i=K(!0,i,y[n],e)):i=K(!0,i,y[n]),P.template(t)(i)},_convertDates:function(e,t){var n=this.dataSource.reader.timezone,i=e.startTimezone,o=e.endTimezone,r=e.start,a=e.start;t=t||"apply",i=i||o,o=o||i,i&&(n?"apply"===t?(r=P.timezone.convert(e.start,n,i),a=P.timezone.convert(e.end,n,o)):(r=P.timezone.convert(e.start,i,n),a=P.timezone.convert(e.end,o,n)):(r=P.timezone[t](e.start,i),a=P.timezone[t](e.end,o)),e._set("start",r),e._set("end",a))},_createEditor:function(){var e,n=this;e=n._editor=this._isMobile()&&P.Pane?new S(this.wrapper,K({},this.options,{target:this,timezone:n.dataSource.reader.timezone,resources:n.resources,createButton:Q(this._createButton,this)})):new T(this.wrapper,K({},this.options,{target:this,createButton:Q(this._createButton,this),timezone:n.dataSource.reader.timezone,resources:n.resources})),e.bind("cancel",function(e){return n.trigger("cancel",{container:e.container,event:e.model})?(e.preventDefault(),t):(n._preventRefresh=!1,n.cancelEvent(),n._attemptRefresh&&n.refresh(),n.focus(),t)}),e.bind("edit",function(e){n.trigger(fe,{container:e.container,event:e.model})&&e.preventDefault()}),e.bind("save",function(){n._preventRefresh=!1,n.saveEvent()}),e.bind("remove",function(e){n._preventRefresh=!1,n.removeEvent(e.model)}),e.bind("resetSeries",function(e){n._confirmation(function(t){n._preventRefresh=!1,t||(n.dataSource._removeExceptions(e.model),n.saveEvent())},e.model,!0)})},_createPopupEditor:function(e){var t=this._editor;e.isNew()&&!e.isOccurrence()||(e.isOccurrence()&&this._convertDates(e.recurrenceId?this.dataSource.get(e.recurrenceId):e),this._convertDates(e)),this.editable=t.editEvent(e)},removeEvent:function(e){var t=this,n="string"==typeof e?t.occurrenceByUid(e):e;n&&(n.isRecurring()?t._deleteRecurringDialog(n):t._confirmation(function(e){e||t._removeEvent(n)},n))},occurrenceByUid:function(e){var t=this.dataSource.getByUid(e);return t||(t=c(this._data,e)),t},occurrencesInRange:function(e,t){return new P.data.Query(this._data).filter({logic:"or",filters:[{logic:"and",filters:[{field:"start",operator:"gte",value:e},{field:"end",operator:"gte",value:e},{field:"start",operator:"lt",value:t}]},{logic:"and",filters:[{field:"start",operator:"lte",value:e},{field:"end",operator:"gt",value:e}]}]}).toArray()},_removeEvent:function(e){this.trigger(de,{event:e})||this.dataSource.remove(e)&&this.dataSource.sync()},_deleteRecurringDialog:function(e){var t,n,i,o,r,a=this,s=e,l=a.options.editable,c=Y(l)?l.editRecurringMode:"dialog",d=function(){var e=s.recurrenceId?s:s.toOccurrence(),t=a.dataSource.get(e.recurrenceId);a._convertDates(t),a._removeEvent(e)},u=function(){s.recurrenceId&&(s=a.dataSource.get(s.recurrenceId)),a._removeEvent(s)};("dialog"!=c||a._isEditorOpened())&&(t=function(){a._confirmation(function(e){e||d()},s)},n=function(){a._confirmation(function(e){e||u()},s)}),i=n||u,o=t||d,a._isEditorOpened()?e.isException()?o():i():(r=a.options.messages.recurrenceMessages,a._showRecurringDialog(e,o,i,{title:r.deleteWindowTitle,text:r.deleteRecurring?r.deleteRecurring:Se,occurrenceText:r.deleteWindowOccurrence,seriesText:r.deleteWindowSeries}))},_isEditorOpened:function(){return!!this._editor.container},_unbindView:function(e){var t=this;t.angular("cleanup",function(){return{elements:t.items()}}),e.destroy()},_bindView:function(e){var t=this;t.options.editable&&(t._viewRemoveHandler&&e.unbind(de,t._viewRemoveHandler),t._viewRemoveHandler=function(e){t.removeEvent(e.uid)},e.bind(de,t._viewRemoveHandler),t._viewAddHandler&&e.unbind(pe,t._viewAddHandler),t._viewAddHandler=function(e){t.addEvent(e.eventInfo)},e.bind(pe,this._viewAddHandler),t._viewEditHandler&&e.unbind(fe,t._viewEditHandler),t._viewEditHandler=function(e){t.editEvent(e.uid)},e.bind(fe,this._viewEditHandler)),t._viewNavigateHandler&&e.unbind("navigate",t._viewNavigateHandler),t._viewNavigateHandler=function(e){var n,i;e.view&&(n="isWorkDay"in e,i=n?"changeWorkDay":"changeView",t.trigger("navigate",{view:e.view,isWorkDay:e.isWorkDay,action:i,date:e.date})||(n&&(t._workDayMode=e.isWorkDay),t._selectView(e.view),t.date(e.date)))},e.bind("navigate",t._viewNavigateHandler),t._viewActivateHandler&&e.unbind("activate",t._viewActivateHandler),t._viewActivateHandler=function(){var e=this;t._selection&&(e.constrainSelection(t._selection),t._select(),t._adjustSelectedDate())},e.bind("activate",t._viewActivateHandler)},_selectView:function(e){var t,n,i,o,r=this;e&&r.views[e]&&(r._selectedView&&r._unbindView(r._selectedView),r._selectedView=r._renderView(e),r._selectedViewName=e,r._viewsCount>1&&!r._isMobile()?(t=Me({views:r.views,view:e,ns:P.ns}),n=r.toolbar.find(".k-scheduler-views li:first-child"),n.is(".k-current-view")?n.replaceWith(t):r.toolbar.find(".k-scheduler-views").prepend(t),i=r.toolbar.find(".k-scheduler-views li").removeClass("k-state-selected"),i.end().find(".k-view-"+e.replace(/\./g,"\\.").toLowerCase()).addClass("k-state-selected")):(o=r.toolbar.find(".k-scheduler-mobile-views"),o.find("[value="+e.replace(/\./g,"\\.")+"]").prop("selected","selected")))},view:function(e){var n=this;return e?(n._selectView(e),n.rebind(),t):n._selectedView},viewName:function(){return this.view().name},_renderView:function(e){var t=this._initializeView(e);return this._bindView(t),(P.support.mouseAndTouchPresent||P.support.pointers)&&(t.content.css("-ms-touch-action","pinch-zoom"),t.content.css("touch-action","pinch-zoom")),this._model.set("formattedDate",t.dateForTitle()),this._model.set("formattedShortDate",t.shortDateForTitle()),this._model.set("formattedMobileDate",t.mobileDateForTitle?t.mobileDateForTitle():t.shortDateForTitle()),this._model.set("formattedYear",P.format("{0:yyyy}",t.startDate())),t},resize:function(e){var t=this.getSize(),n=this._size,i=this.view();i&&i.groups&&(!e&&n&&t.width===n.width&&t.height===n.height||(this.refresh({action:"resize"}),this._size=t))},_adjustSelectedDate:function(){var e=this._model.selectedDate,t=this._selection,n=t.start;n&&!P.date.isInDateRange(e,L(n),L(t.end))&&e.setFullYear(n.getFullYear(),n.getMonth(),n.getDate())},_initializeView:function(e){var t,n,i=this.views[e];if(i){if(t=Y(i),n=i.type,typeof n===q&&(n=P.getter(i.type)(window)),!n)throw Error("There is no such view");i=new n(this.wrapper,f(K(!0,{},this.options,t?i:{},{resources:this.resources,date:this.date(),startTime:P.parseDate(i.startTime)||P.parseDate(this.options.startTime),endTime:P.parseDate(i.endTime)||P.parseDate(this.options.endTime),showWorkHours:this._workDayMode})))}return i},_views:function(){var e,t,n,i,o,r,a,s,l,c=this.options.views;for(this.views={},this._viewsCount=0,a=0,s=c.length;a<s;a++)l=!1,e=c[a],i=Y(e),i?(r=o=e.type?e.type:e,typeof r!==q&&(o=e.name||e.title,l=!0)):r=o=e,t=A[o],t&&!l&&(e.type=t.type,t.title=this.options.messages.views[o],"day"===t.type?t.messages={allDay:this.options.messages.allDay}:"agenda"===t.type&&(t.messages={event:this.options.messages.event,date:this.options.messages.date,time:this.options.messages.time})),e=K({title:o},t,i?e:{}),o&&(this.views[o]=e,this._viewsCount++,n&&!e.selected||(n=o));n&&(this._selectedViewName=n)},rebind:function(){this.dataSource.fetch()},_dataSource:function(){var e=this,t=e.options,n=t.dataSource;n=J(n)?{data:n}:n,!t.timezone||n instanceof je?n instanceof je&&(t.timezone=n.options.schema?n.options.schema.timezone:""):n=K(!0,n,{schema:{timezone:t.timezone}}),e.dataSource&&e._refreshHandler?e.dataSource.unbind(ae,e._refreshHandler).unbind(se,e._progressHandler).unbind(le,e._errorHandler):(e._refreshHandler=Q(e.refresh,e),e._progressHandler=Q(e._requestStart,e),e._errorHandler=Q(e._error,e)),e.dataSource=P.data.SchedulerDataSource.create(n).bind(ae,e._refreshHandler).bind(se,e._progressHandler).bind(le,e._errorHandler),e.options.dataSource=e.dataSource},_error:function(){this._progress(!1)},_requestStart:function(){this._progress(!0)},_progress:function(e){var t=this.element.find(".k-scheduler-content");P.ui.progress(t,e)},_resources:function(){var t,n,i,o,r,a=this,s=a.options.resources,l=[];for(t=0;t<s.length;t++){if(n=s[t],i=n.field,o=n.name||i,r=n.dataSource,!i||!r)throw Error('The "field" and "dataSource" options of the scheduler resource are mandatory.');a.resources.push({field:i,name:o,title:n.title||i,dataTextField:n.dataTextField||"text",dataValueField:n.dataValueField||"value",dataColorField:n.dataColorField||"color",valuePrimitive:null==n.valuePrimitive||n.valuePrimitive,multiple:n.multiple||!1,dataSource:a._resourceDataSource(r,o,l)})}a.options.autoBind?e.when.apply(null,l).then(function(){a.view(a._selectedViewName)}):a._selectView(a._selectedViewName)},_resourceDataSource:function(e,t,n){var i=this,o=J(e)?{data:e}:e,r=P.data.DataSource.create(o);return i.options.autoBind?n.push(r.fetch(function(){i._bindResourceEvents(this,t)})):i._bindResourceEvents(r,t),r},_bindResourceEvents:function(e,t){var n=this,i=n.options.group&&n.options.group.resources.length,o=i&&n.options.group.resources.indexOf(t)>-1;!n._resourceRefreshHandler&&o&&(n._resourceRefreshHandler=Q(n._refreshResource,n),n._resourceProgressHandler=Q(n._requestStart,n),n._resourceErrorHandler=Q(n._error,n)),o&&e.bind(ae,n._resourceRefreshHandler).bind(se,n._resourceProgressHandler).bind(le,n._resourceErrorHandler)},_refreshResource:function(){var e=this;e.view(e._selectedViewName)},_initModel:function(){var e=this;e._model=P.observable({selectedDate:new Date(this.options.date),formattedDate:"",formattedShortDate:""}),e._model.bind("change",function(t){"selectedDate"===t.field&&e.view(e._selectedViewName)})},_wrapper:function(){var e=this,t=e.options,n=t.height,i=t.width;e.wrapper=e.element.addClass("k-widget k-scheduler k-floatwrap").attr("role","grid").attr("aria-multiselectable",!0),e._isMobile()&&e.wrapper.addClass("k-scheduler-mobile"),n&&e.wrapper.height(n),i&&e.wrapper.width(i)},date:function(e){return null!=e&&L(e)>=L(this.options.min)&&L(e)<=L(this.options.max)&&this._model.set("selectedDate",e),L(this._model.get("selectedDate"))},_toolbar:function(){var n,i,o=this,r=o.options,a=[];r.toolbar&&(a=e.isArray(r.toolbar)?r.toolbar:[r.toolbar]),n=this._isMobile()?Re:Fe,i=e(n({messages:r.messages,pdf:e.grep(a,function(e){return"pdf"==e||"pdf"==e.name}).length>0,ns:P.ns,view:o._selectedViewName,views:o.views,viewsCount:o._viewsCount,editable:o.options.editable})),o.wrapper.append(i),o.toolbar=i,P.bind(o.toolbar,o._model),i.on(ee+Z,".k-pdf",function(e){e.preventDefault(),o.saveAsPDF()}),i.on(ee+Z,".k-create-event",function(e){e.preventDefault(),o.addEvent()}),i.on(ee+Z,".k-nav-calendar",function(e){e.preventDefault(),o._showCalendar(e.target)}),i.on(ee+Z,".k-scheduler-navigation li",function(n){var i,r=e(this),a=new Date(o.date()),s="",l=new Date,c=o.options.timezone;if(n.preventDefault(),r.hasClass("k-nav-today"))s="today",c?(i=P.timezone.offset(l,c),a=P.timezone.convert(l,l.getTimezoneOffset(),i)):a=l;else if(r.hasClass("k-nav-next"))s="next",a=o.view().nextDate();else if(r.hasClass("k-nav-prev"))s="previous",a=o.view().previousDate();else if(r.hasClass("k-nav-current")&&!o._isMobile())return o._showCalendar(),t;o.trigger("navigate",{view:o._selectedViewName,action:s,date:a})||o.date(a)}),i.on(ee+Z,".k-scheduler-views li:not(.k-current-view), .k-scheduler-refresh",function(t){t.preventDefault();var n=e(this).attr(P.attr("name"));o.trigger("navigate",{view:n,action:"changeView",date:o.date()})||(o.view(n),o.element.find("."+me).removeClass(me))}),i.on(ee+Z,".k-scheduler-views li.k-current-view",function(t){t.preventDefault(),o.element.find(".k-scheduler-views").toggleClass(me),e(document).on(te+Z,function(t){0===e(t.target).closest(".k-scheduler-views").length&&(o.element.find("."+me).removeClass(me),e(document).off(ee+Z))})}),i.find(".k-scheduler-mobile-views").on("change",function(e){o.view(e.target.value)}),i.find("li").hover(function(){e(this).addClass("k-state-hover")},function(){e(this).removeClass("k-state-hover")})},_showCalendar:function(t){var n=this,i=t||n.toolbar.find(".k-nav-current"),o=e('<div class="k-calendar-container"><div class="k-scheduler-calendar"/></div>');n.popup||(n.popup=new j(o,{anchor:i,activate:function(){n.popup&&n.calendar&&(n.popup._toggleResize(!1),n.calendar.element.find("table").focus(),n.popup._toggleResize(!0))},open:function(){n.calendar||(n.calendar=new G(this.element.find(".k-scheduler-calendar"),{change:function(){var e=this.value();n.trigger("navigate",{view:n._selectedViewName,action:"changeDate",date:e})||(n.date(e),n.popup.close()),n._isMobile||(n._selectedView.element.focus(),n.toolbar.find(".k-nav-current").focus().addClass(ge))},min:n.options.min,max:n.options.max})),n.calendar.element.on("keydown"+Z,function(e){e.keyCode!==O.ESC&&e.keyCode!==O.TAB||(n.popup.close(),n._selectedView.element.focus(),n.toolbar.find(".k-nav-current").focus().addClass(ge))}),n.calendar.value(n.date())},copyAnchorStyles:!1})),n.popup.open()},refresh:function(e){var n=this,i=this.view(),o=e&&"itemchange"===e.action&&(this._editor.editable||this._preventRefresh)||"signalr"===this.dataSource.options.type&&this._preventRefresh;if(this._progress(!1),this.angular("cleanup",function(){return{elements:n.items()}}),e=e||{},i)return o?(this._attemptRefresh="signalr"===this.dataSource.options.type,t):(this.trigger("dataBinding",{action:e.action||"rebind",index:e.index,items:e.items})||(e&&"resize"===e.action||!this._editor||this._editor.close(),this._data=this.dataSource.expand(i.startDate(),i.visibleEndDate()),i.refreshLayout(),i.render(this._data),this.trigger("dataBound"),this._attemptRefresh=!1),t)},slotByPosition:function(e,t){var n,i=this.view();return i._slotByPosition?(n=i._slotByPosition(e,t),n?{startDate:n.startDate(),endDate:n.endDate(),groupIndex:n.groupIndex,element:n.element,isDaySlot:n.isDaySlot}:null):null},slotByElement:function(t){var n=e(t).offset();return this.slotByPosition(n.left,n.top)},resourcesBySlot:function(e){return this.view()._resourceBySlot(e)}}),A={day:{type:"kendo.ui.DayView"},week:{type:"kendo.ui.WeekView"},workWeek:{type:"kendo.ui.WorkWeekView"},agenda:{type:"kendo.ui.AgendaView"},month:{type:"kendo.ui.MonthView"},timeline:{type:"kendo.ui.TimelineView"},timelineWeek:{type:"kendo.ui.TimelineWeekView"},timelineWorkWeek:{type:"kendo.ui.TimelineWorkWeekView"},timelineMonth:{type:"kendo.ui.TimelineMonthView"}},V.plugin(D),P.PDFMixin&&(P.PDFMixin.extend(D.prototype),E="k-scheduler-pdf-export",D.fn._drawPDF=function(t){var n,i,o,r=this.wrapper,a=r[0].style.cssText;return r.css({width:r.width(),height:r.height()}),r.addClass(E),n=this,i=new e.Deferred,o=r.find(".k-scheduler-content").find("table").css("table-layout","auto"),setTimeout(function(){o.css("table-layout","fixed"),n.resize(!0),n._drawPDFShadow({},{avoidLinks:n.options.pdf.avoidLinks}).done(function(e){var n={page:e,pageNumber:1,progress:1,totalPages:1};t.notify(n),i.resolve(n.page)}).fail(function(e){i.reject(e)}).always(function(){r[0].style.cssText=a,r.removeClass(E),n.resize(!0),n.resize(!0)})}),i}),I=W.extend({init:function(e,t){var n=this,i=P.timezone.windows_zones;if(!i||!P.timezone.zones_titles)throw Error("kendo.timezones.min.js is not included.");W.fn.init.call(n,e,t),n.wrapper=n.element,n._zonesQuery=new P.data.Query(i),n._zoneTitleId=P.guid(),n._zoneTitlePicker(),n._zonePicker(),n._zoneTitle.bind("cascade",function(){this.value()||n._zone.wrapper.hide()}),n._zone.bind("cascade",function(){n._value=this.value(),n.trigger("change")}),n.value(n.options.value)},options:{name:"TimezoneEditor",value:"",optionLabel:"No timezone"},events:["change"],_zoneTitlePicker:function(){var t=this,n=e('<input id="'+t._zoneTitleId+'" aria-label="'+t.options.title+'"/>').appendTo(t.wrapper);t._zoneTitle=new P.ui.DropDownList(n,{dataSource:P.timezone.zones_titles,dataValueField:"other_zone",dataTextField:"name",optionLabel:t.options.optionLabel})},_zonePicker:function(){var t=this,n=e('<input aria-label="'+t.options.title+'"/>').appendTo(this.wrapper);t._zone=new P.ui.DropDownList(n,{dataValueField:"zone",dataTextField:"territory",dataSource:t._zonesQuery.data, +cascadeFrom:t._zoneTitleId,dataBound:function(){t._value=this.value(),this.wrapper.toggle(this.dataSource.view().length>1)}}),t._zone.wrapper.hide()},destroy:function(){W.fn.destroy.call(this),P.destroy(this.wrapper)},value:function(e){var n,i=this;return e===t?i._value:(n=i._zonesQuery.filter({field:"zone",operator:"eq",value:e}).data[0],n?(i._zoneTitle.value(n.other_zone),i._zone.value(n.zone)):i._zoneTitle.select(0),t)}}),V.plugin(I),M=P.template('<option value="#=other_zone#">#=name#</option>'),F=P.template('<option value="#=zone#">#=territory#</option>'),R=W.extend({init:function(e,t){var n=this,i=P.timezone.windows_zones;if(!i||!P.timezone.zones_titles)throw Error("kendo.timezones.min.js is not included.");W.fn.init.call(n,e,t),n.wrapper=n.element,n._zonesQuery=new P.data.Query(i),n._zoneTitlePicker(),n._zonePicker(),n.value(n.options.value)},options:{name:"MobileTimezoneEditor",optionLabel:"No timezone",value:""},events:["change"],_bindZones:function(e){var t=e?this._filter(e):[];this._zone.html(this._options(t,F))},_filter:function(e){return this._zonesQuery.filter({field:"other_zone",operator:"eq",value:e}).data},_options:function(e,t,n){var i=0,o="",r=e.length;for(n&&(o+=t({other_zone:"",name:n}));i<r;i++)o+=t(e[i]);return o},_zoneTitlePicker:function(){var t=this,n=t._options(P.timezone.zones_titles,M,t.options.optionLabel);t._zoneTitle=e("<select>"+n+"</select>").appendTo(t.wrapper).change(function(){var e=this.value,n=t._zonePickerLabel,i=n.find("select");t._bindZones(e),e&&i.children().length>1?n.show():n.hide(),t._value=t._zone[0].value,t.trigger("change")})},_zonePicker:function(){var t=this;t._zonePickerLabel=e("<li class='k-item k-zonepicker' style='display:none'><label class='k-label'><span class='k-item-title'></span><div></div></label></li>"),t._zone=e("<select></select>").appendTo(t._zonePickerLabel.find("div")).change(function(){t._value=this.value,t.trigger("change")}),this.wrapper.closest(".k-item").after(t._zonePickerLabel),t._bindZones(t._zoneTitle.val()),t._value=t._zone[0].value},destroy:function(){W.fn.destroy.call(this),P.destroy(this.wrapper)},value:function(e){var n,i=this,o=i._zone,r="",a="";return e===t?i._value:(n=i._zonesQuery.filter({field:"zone",operator:"eq",value:e}).data[0],n&&(a=n.zone,r=n.other_zone),i._zoneTitle.val(r),i._bindZones(r),o.val(a),a=o[0].value,a&&o.children.length>1?i._zonePickerLabel.show():i._zonePickerLabel.hide(),i._value=a,t)}}),V.plugin(R)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.touch.min",["kendo.core.min","kendo.userevents.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui.Widget,o=e.proxy,r=Math.abs,a=20,s=i.extend({init:function(e,t){function r(e){return function(t){s._triggerTouch(e,t)}}function a(e){return function(t){s.trigger(e,{touches:t.touches,distance:t.distance,center:t.center,event:t.event})}}var s=this;i.fn.init.call(s,e,t),t=s.options,e=s.element,s.wrapper=e,s.events=new n.UserEvents(e,{filter:t.filter,surface:t.surface,minHold:t.minHold,multiTouch:t.multiTouch,allowSelection:!0,fastTap:t.fastTap,press:r("touchstart"),hold:r("hold"),tap:o(s,"_tap"),gesturestart:a("gesturestart"),gesturechange:a("gesturechange"),gestureend:a("gestureend")}),t.enableSwipe?(s.events.bind("start",o(s,"_swipestart")),s.events.bind("move",o(s,"_swipemove"))):(s.events.bind("start",o(s,"_dragstart")),s.events.bind("move",r("drag")),s.events.bind("end",r("dragend"))),n.notify(s)},events:["touchstart","dragstart","drag","dragend","tap","doubletap","hold","swipe","gesturestart","gesturechange","gestureend"],options:{name:"Touch",surface:null,global:!1,fastTap:!1,filter:null,multiTouch:!1,enableSwipe:!1,minXDelta:30,maxYDelta:20,maxDuration:1e3,minHold:800,doubleTapTimeout:800},cancel:function(){this.events.cancel()},destroy:function(){i.fn.destroy.call(this),this.events.destroy()},_triggerTouch:function(e,t){this.trigger(e,{touch:t.touch,event:t.event})&&t.preventDefault()},_tap:function(e){var t=this,i=t.lastTap,o=e.touch;i&&o.endTime-i.endTime<t.options.doubleTapTimeout&&n.touchDelta(o,i).distance<a?(t._triggerTouch("doubletap",e),t.lastTap=null):(t._triggerTouch("tap",e),t.lastTap=o)},_dragstart:function(e){this._triggerTouch("dragstart",e)},_swipestart:function(e){2*r(e.x.velocity)>=r(e.y.velocity)&&e.sender.capture()},_swipemove:function(e){var t=this,n=t.options,i=e.touch,o=e.event.timeStamp-i.startTime,a=i.x.initialDelta>0?"right":"left";r(i.x.initialDelta)>=n.minXDelta&&r(i.y.initialDelta)<n.maxYDelta&&o<n.maxDuration&&(t.trigger("swipe",{direction:a,touch:e.touch}),i.cancel())}});n.ui.plugin(s)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.gantt.list.min",["kendo.dom.min","kendo.touch.min","kendo.draganddrop.min","kendo.columnsorter.min","kendo.datetimepicker.min","kendo.editable.min"],e)}(function(){return function(e){function t(e){var t,n,i=[],o=e.className;for(t=0,n=e.level;t<n;t++)i.push(r("span",{className:o}));return i}function n(){var t=i._activeElement();t&&"body"!==t.nodeName.toLowerCase()&&e(t).blur()}var i=window.kendo,o=i.dom,r=o.element,a=o.text,s=i.support.browser,l=i.support.mobileOS,c=i.ui,d=c.Widget,u=e.extend,h=i._outerWidth,p=i._outerHeight,f=e.map,g=e.isFunction,m=s.msie&&s.version<9,v=i.keys,_={title:"Title",start:"Start Time",end:"End Time",percentComplete:"% Done",parentId:"Predecessor ID",id:"ID",orderId:"Order ID"},b="string",w=".kendoGanttList",k="click",y=".",x="<table style='visibility: hidden;'><tbody><tr style='height:{0}'><td> </td></tr></tbody></table>",C={wrapper:"k-treelist k-grid k-widget",header:"k-header",alt:"k-alt",rtl:"k-rtl",editCell:"k-edit-cell",group:"k-treelist-group",gridHeader:"k-grid-header",gridHeaderWrap:"k-grid-header-wrap",gridContent:"k-grid-content",gridContentWrap:"k-grid-content",selected:"k-state-selected",icon:"k-icon",iconCollapse:"k-i-collapse",iconExpand:"k-i-expand",iconHidden:"k-i-none",iconPlaceHolder:"k-icon k-i-none",input:"k-input",link:"k-link",resizeHandle:"k-resize-handle",resizeHandleInner:"k-resize-handle-inner",dropPositions:"k-i-insert-up k-i-insert-down k-i-plus k-i-insert-middle",dropTop:"k-i-insert-up",dropBottom:"k-i-insert-down",dropAdd:"k-i-plus",dropMiddle:"k-i-insert-middle",dropDenied:"k-i-cancel",dragStatus:"k-drag-status",dragClue:"k-drag-clue",dragClueText:"k-clue-text"},S=c.GanttList=d.extend({init:function(t,n){d.fn.init.call(this,t,n),0===this.options.columns.length&&this.options.columns.push("title"),this.dataSource=this.options.dataSource,this._columns(),this._layout(),this._domTrees(),this._header(),this._sortable(),this._editable(),this._selectable(),this._draggable(),this._resizable(),this._attachEvents(),this._adjustHeight(),this.bind("render",function(){var t,n;this.options.resizable&&(t=this.header.find("col"),n=this.content.find("col"),this.header.find("th").not(":last").each(function(i){var o=h(e(this));t.eq(i).width(o),n.eq(i).width(o)}),t.last().css("width","auto"),n.last().css("width","auto"))},!0)},_adjustHeight:function(){this.content&&this.content.height(this.element.height()-p(this.header.parent()))},destroy:function(){d.fn.destroy.call(this),this._reorderDraggable&&this._reorderDraggable.destroy(),this._tableDropArea&&this._tableDropArea.destroy(),this._contentDropArea&&this._contentDropArea.destroy(),this._columnResizable&&this._columnResizable.destroy(),this.touch&&this.touch.destroy(),this.timer&&clearTimeout(this.timer),this.content.off(w),this.header.find("thead").off(w),this.header.find(y+S.link).off(w),this.header=null,this.content=null,this.levels=null,i.destroy(this.element)},options:{name:"GanttList",selectable:!0,editable:!0,resizable:!1},_attachEvents:function(){var t=this,n=S.styles;t.content.on(k+w,"td > span."+n.icon+":not(."+n.iconHidden+")",function(n){var i=e(this),o=t._modelFromElement(i);o.set("expanded",!o.get("expanded")),n.stopPropagation()})},_domTrees:function(){this.headerTree=new o.Tree(this.header[0]),this.contentTree=new o.Tree(this.content[0])},_columns:function(){var e=this.options.columns,t=function(){this.field="",this.title="",this.editable=!1,this.sortable=!1};this.columns=f(e,function(e){return e=typeof e===b?{field:e,title:_[e]}:e,u(new t,e)})},_layout:function(){var t=this,n=this.options,o=this.element,r=S.styles,a=function(){var o,r=typeof n.rowHeight===b?n.rowHeight:n.rowHeight+"px",a=e(i.format(x,r));return t.content.append(a),o=p(a.find("tr")),a.remove(),o};o.addClass(r.wrapper).append("<div class='"+r.gridHeader+"'><div class='"+r.gridHeaderWrap+"'></div></div>").append("<div class='"+r.gridContentWrap+"'></div>"),this.header=o.find(y+r.gridHeaderWrap),this.content=o.find(y+r.gridContent),n.rowHeight&&(this._rowHeight=a())},_header:function(){var e=this.headerTree,t=r("colgroup",null,this._cols()),n=r("thead",{role:"rowgroup"},[r("tr",{role:"row"},this._ths())]),i=r("table",{style:{minWidth:this.options.listWidth+"px"},role:"grid"},[t,n]);e.render([i])},_render:function(e){var t,n,i,o={style:{minWidth:this.options.listWidth+"px"},tabIndex:0,role:"treegrid"};this._rowHeight&&(o.style.height=e.length*this._rowHeight+"px"),this.levels=[{field:null,value:0}],t=r("colgroup",null,this._cols()),n=r("tbody",{role:"rowgroup"},this._trs(e)),i=r("table",o,[t,n]),this.contentTree.render([i]),this.trigger("render")},_ths:function(){var e,t,n,i,o=this.columns,s=[];for(n=0,i=o.length;n<i;n++)e=o[n],t={"data-field":e.field,"data-title":e.title,className:S.styles.header,role:"columnheader"},s.push(r("th",t,[a(e.title)]));return this.options.resizable&&s.push(r("th",{className:S.styles.header,role:"columnheader"})),s},_cols:function(){var e,t,n,i,o,a=this.columns,s=[];for(i=0,o=a.length;i<o;i++)e=a[i],n=e.width,t=n&&0!==parseInt(n,10)?{style:{width:typeof n===b?n:n+"px"}}:null,s.push(r("col",t,[]));return this.options.resizable&&s.push(r("col",{style:{width:"1px"}})),s},_trs:function(e){var t,n,i,o,r,a=[],s=[],l=S.styles;for(o=0,r=e.length;o<r;o++)t=e[o],i=this._levels({idx:t.parentId,id:t.id,summary:t.summary}),n={"data-uid":t.uid,"data-level":i,role:"row"},t.summary&&(n["aria-expanded"]=t.expanded),o%2!==0&&s.push(l.alt),t.summary&&s.push(l.group),s.length&&(n.className=s.join(" ")),a.push(this._tds({task:t,attr:n,level:i})),s=[];return a},_tds:function(e){var t,n,i,o=[],a=this.columns;for(n=0,i=a.length;n<i;n++)t=a[n],o.push(this._td({task:e.task,column:t,level:e.level}));return this.options.resizable&&o.push(r("td",{role:"gridcell"})),r("tr",e.attr,o)},_td:function(e){var n,o,s,l=[],c=this.options.resourcesField,d=S.styles,u=e.task,h=e.column,p=u.get(h.field);if(h.field==c){for(p=p||[],n=[],s=0;s<p.length;s++)n.push(i.format("{0} [{1}]",p[s].get("name"),p[s].get("formatedValue")));n=n.join(", ")}else n=h.format?i.format(h.format,p):p;return"title"===h.field&&(l=t({level:e.level,className:d.iconPlaceHolder}),l.push(r("span",{className:d.icon+" "+(u.summary?u.expanded?d.iconCollapse:d.iconExpand:d.iconHidden)})),o=i.format("{0}, {1:P0}",n,u.percentComplete)),l.push(r("span",{"aria-label":o},[a(n)])),r("td",{role:"gridcell"},l)},_levels:function(e){var t,n,i,o=this.levels,r=e.summary,a=e.idx,s=e.id;for(n=0,i=o.length;n<i;n++)if(t=o[n],t.field==a)return r&&o.push({field:s,value:t.value+1}),t.value},_sortable:function(){var e,t,n,o,r,a=this,s=this.options.resourcesField,l=this.columns,c=this.header.find("th["+i.attr("field")+"]"),d=function(e){(0===a.dataSource.total()||a.editable&&a.editable.trigger("validate"))&&e.preventDefault()};for(o=0,r=c.length;o<r;o++)e=l[o],e.sortable&&e.field!==s&&(n=c.eq(o),t=n.data("kendoColumnSorter"),t&&t.destroy(),n.attr("data-"+i.ns+"field",e.field).kendoColumnSorter({dataSource:this.dataSource,change:d}));c=null},_selectable:function(){var t=this,n=this.options.selectable;n&&this.content.on(k+w,"tr",function(n){var i=e(this);t.editable&&t.editable.trigger("validate"),n.ctrlKey?t.clearSelection():t.select(i)})},select:function(e){var t=this.content.find(e),n=S.styles.selected;return t.length?(t.siblings(y+n).removeClass(n).attr("aria-selected",!1).end().addClass(n).attr("aria-selected",!0),void this.trigger("change")):this.content.find(y+n)},clearSelection:function(){var e=this.select();e.length&&(e.removeClass(S.styles.selected),this.trigger("change"))},_setDataSource:function(e){this.dataSource=e,this._sortable()},_editable:function(){var t=this,i=this.options.editable,o=S.styles,r="span."+o.icon+":not("+o.iconHidden+")",a=function(){var e=t.editable;e&&(e.end()?t._closeCell():e.trigger("validate"))},s=function(t){var i=e(t.currentTarget);i.hasClass(o.editCell)||n()};i&&i.update!==!1&&(this._startEditHandler=function(n){var i=n.currentTarget?e(n.currentTarget):n,o=t._columnFromElement(i);t.editable||o&&o.editable&&t._editCell({cell:i,column:o})},t.content.on("focusin"+w,function(){clearTimeout(t.timer),t.timer=null}).on("focusout"+w,function(){t.timer=setTimeout(a,1)}).on("keydown"+w,function(e){e.keyCode===v.ENTER&&e.preventDefault()}).on("keyup"+w,function(e){var i,o,r=e.keyCode;switch(r){case v.ENTER:n(),a();break;case v.ESC:t.editable&&(i=t._editableContainer,o=t._modelFromElement(i),t.trigger("cancel",{model:o,cell:i})||t._closeCell(!0))}}),l?t.touch=t.content.kendoTouch({filter:"td",touchstart:function(e){s(e.touch)},doubletap:function(n){e(n.touch.initialTouch).is(r)||t._startEditHandler(n.touch)}}).data("kendoTouch"):t.content.on("mousedown"+w,"td",function(e){s(e)}).on("dblclick"+w,"td",function(n){e(n.target).is(r)||t._startEditHandler(n)}))},_editCell:function(t){var n,o=this.options.resourcesField,r=S.styles,a=t.cell,s=t.column,l=this._modelFromElement(a),c=this.dataSource._createNewModel(l.toJSON()),d=c.fields[s.field]||c[s.field],u=d.validation,h=i.attr("type"),p=i.attr("bind"),f=i.attr("format"),v={name:s.field,required:!!d.validation&&d.validation.required===!0};return s.field===o?void s.editor(a,c):(this._editableContent=a.children().detach(),this._editableContainer=a,a.data("modelCopy",c),"date"!==d.type&&"date"!==e.type(d)||s.format&&!/H|m|s|F|g|u/.test(s.format)||(v[p]="value:"+s.field,v[h]="date",s.format&&(v[f]=i._extractFormat(s.format)),n=function(t,n){e('<input type="text"/>').attr(v).appendTo(t).kendoDateTimePicker({format:n.format})}),this.editable=a.addClass(r.editCell).kendoEditable({fields:{field:s.field,format:s.format,editor:s.editor||n},model:c,clearContainer:!1}).data("kendoEditable"),u&&u.dateCompare&&g(u.dateCompare)&&u.message&&(e("<span "+i.attr("for")+'="'+s.field+'" class="k-invalid-msg"/>').hide().appendTo(a),a.find("[name="+s.field+"]").attr(i.attr("dateCompare-msg"),u.message)),this.editable.bind("validate",function(e){var t=this.element.find(":kendoFocusable:first").focus();m&&t.focus(),e.preventDefault()}),void(this.trigger("edit",{model:l,cell:a})&&this._closeCell(!0)))},_closeCell:function(e){var t=S.styles,n=this._editableContainer,i=this._modelFromElement(n),o=this._columnFromElement(n),r=o.field,a=n.data("modelCopy"),s={};s[r]=a.get(r),n.empty().removeData("modelCopy").removeClass(t.editCell).append(this._editableContent),this.editable.unbind(),this.editable.destroy(),this.editable=null,this._editableContainer=null,this._editableContent=null,e||("start"===r&&(s.end=new Date(s.start.getTime()+i.duration())),this.trigger("update",{task:i,updateInfo:s}))},_draggable:function(){var t,n=this,o=null,r=!0,a=S.styles,s=i.support.isRtl(this.element),c="tr["+i.attr("level")+" = 0]:last",d={},h=this.options.editable,p=function(){o=null,t=null,r=!0,d={}},f=function(e){for(var t=e;t;){if(o.get("id")===t.get("id")){r=!1;break}t=n.dataSource.taskParent(t)}},g=function(){var n=e(t).height(),o=i.getOffset(t).top;u(t,{beforeLimit:o+.25*n,afterLimit:o+.75*n})},m=function(e){var n,o,r,s,l;t&&(n=e.location,o=a.dropAdd,r="add",s=parseInt(t.attr(i.attr("level")),10),n<=t.beforeLimit?(l=t.prev(),o=a.dropTop,r="insert-before"):n>=t.afterLimit&&(l=t.next(),o=a.dropBottom,r="insert-after"),l&&parseInt(l.attr(i.attr("level")),10)===s&&(o=a.dropMiddle),d.className=o,d.command=r)},v=function(){return n._reorderDraggable.hint.children(y+a.dragStatus).removeClass(a.dropPositions)};h&&h.reorder!==!1&&h.update!==!1&&(this._reorderDraggable=this.content.kendoDraggable({distance:10,holdToDrag:l,group:"listGroup",filter:"tr[data-uid]",ignore:y+a.input,hint:function(t){return e('<div class="'+a.header+" "+a.dragClue+'"/>').css({width:300,paddingLeft:t.css("paddingLeft"),paddingRight:t.css("paddingRight"),lineHeight:t.height()+"px",paddingTop:t.css("paddingTop"),paddingBottom:t.css("paddingBottom")}).append('<span class="'+a.icon+" "+a.dragStatus+'" /><span class="'+a.dragClueText+'"/>')},cursorOffset:{top:-20,left:0},container:this.content,dragstart:function(e){var t=n.editable;return t&&t.reorder!==!1&&t.trigger("validate")?void e.preventDefault():(o=n._modelFromElement(e.currentTarget),this.hint.children(y+a.dragClueText).text(o.get("title")),void(s&&this.hint.addClass(a.rtl)))},drag:function(e){r&&(m(e.y),v().addClass(d.className))},dragend:function(){p()},dragcancel:function(){p()}}).data("kendoDraggable"),this._tableDropArea=this.content.kendoDropTargetArea({distance:0,group:"listGroup",filter:"tr[data-uid]",dragenter:function(e){t=e.dropTarget,f(n._modelFromElement(t)),g(),v().toggleClass(a.dropDenied,!r)},dragleave:function(){r=!0,v()},drop:function(){var e=n._modelFromElement(t),i=e.orderId,a={parentId:e.parentId};if(r){switch(d.command){case"add":a.parentId=e.id;break;case"insert-before":a.orderId=e.parentId===o.parentId&&e.orderId>o.orderId?i-1:i;break;case"insert-after":a.orderId=e.parentId===o.parentId&&e.orderId>o.orderId?i:i+1}n.trigger("update",{task:o,updateInfo:a})}}}).data("kendoDropTargetArea"),this._contentDropArea=this.element.kendoDropTargetArea({distance:0,group:"listGroup",filter:y+a.gridContent,drop:function(){var e=n._modelFromElement(n.content.find(c)),t=e.orderId,i={parentId:null,orderId:null!==o.parentId?t+1:t};n.trigger("update",{task:o,updateInfo:i})}}).data("kendoDropTargetArea"))},_resizable:function(){var t=this,n=S.styles,i=function(i){var o,r,a=e(i.currentTarget),s=t.resizeHandle,l=a.position(),c=l.left,d=h(a),u=a.closest("div"),f=i.clientX+e(window).scrollLeft(),g=t.options.columnResizeHandleWidth;return c+=u.scrollLeft(),s||(s=t.resizeHandle=e('<div class="'+n.resizeHandle+'"><div class="'+n.resizeHandleInner+'" /></div>')),o=a.offset().left+d,(r=f>o-g&&f<o+g)?(u.append(s),void s.show().css({top:l.top,left:c+d-g-1,height:p(a),width:3*g}).data("th",a)):void s.hide()};this.options.resizable&&(this._columnResizable&&this._columnResizable.destroy(),this.header.find("thead").on("mousemove"+w,"th",i),this._columnResizable=this.header.kendoResizable({handle:y+n.resizeHandle,start:function(n){var i=e(n.currentTarget).data("th"),o="col:eq("+i.index()+")",r=t.header.find("table"),a=t.content.find("table");t.element.addClass("k-grid-column-resizing"),this.col=a.children("colgroup").find(o).add(r.find(o)),this.th=i,this.startLocation=n.x.location,this.columnWidth=h(i),this.table=r.add(a),this.totalWidth=this.table.width()-h(r.find("th:last"))},resize:function(e){var t=11,n=e.x.location-this.startLocation;this.columnWidth+n<t&&(n=t-this.columnWidth),this.table.css({minWidth:this.totalWidth+n}),this.col.width(this.columnWidth+n)},resizeend:function(){var e,n,i;t.element.removeClass("k-grid-column-resizing"),e=Math.floor(this.columnWidth),n=Math.floor(h(this.th)),i=t.columns[this.th.index()],t.trigger("columnResize",{column:i,oldWidth:e,newWidth:n}),this.table=this.col=this.th=null}}).data("kendoResizable"))},_modelFromElement:function(e){var t=e.closest("tr"),n=this.dataSource.getByUid(t.attr(i.attr("uid")));return n},_columnFromElement:function(e){var t=e.closest("td"),n=t.parent(),i=n.children().index(t);return this.columns[i]}});u(!0,c.GanttList,{styles:C})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.gantt.timeline.min",["kendo.dom.min","kendo.touch.min","kendo.draganddrop.min"],e)}(function(){return function(e){function t(e){return delete e.name,delete e.prefix,delete e.views,e}function n(e){var t=[],n=e.workWeekStart;for(t.push(n);e.workWeekEnd!=n;)n>6?n-=7:n++,t.push(n);return t}function i(){var t=kendo._activeElement();t&&"body"!==t.nodeName.toLowerCase()&&e(t).blur()}var o,r,a=kendo.ui.Widget,s=kendo.dom.element,l=kendo.dom.text,c=kendo.dom.html,d=e.isPlainObject,u=kendo._outerWidth,h=kendo._outerHeight,p=e.extend,f=e.proxy,g=kendo.support.browser,m=!1,v=kendo.keys,_=kendo.data.Query,b="string",w=".kendoGanttTimeline",k="click",y="dblclick",x="mousemove",C="mouseenter",S="mouseleave",T="keydown",D=".",A=kendo.template("#=kendo.toString(start, 't')#"),E=kendo.template("#=kendo.toString(start, 'ddd M/dd')#"),I=kendo.template("#=kendo.toString(start, 'ddd M/dd')# - #=kendo.toString(kendo.date.addDays(end, -1), 'ddd M/dd')#"),M=kendo.template("#=kendo.toString(start, 'MMM')#"),F=kendo.template("#=kendo.toString(start, 'yyyy')#"),R=kendo.template('<div class="#=styles.marquee#"><div class="#=styles.marqueeColor#"></div></div>'),P=kendo.template('<div style="z-index: 100002;" class="#=styles.tooltipWrapper#"><div class="#=styles.tooltipContent#"><div>#=messages.start#: #=kendo.toString(start, format)#</div><div>#=messages.end#: #=kendo.toString(end, format)#</div></div></div>'),z=kendo.template('<div style="z-index: 100002;" class="#=styles.tooltipWrapper#" ><div class="#=styles.tooltipContent#">#=text#%</div><div class="#=styles.tooltipCallout#" style="left:13px;"></div></div>'),B=kendo.template('<div class="#=kendo.htmlEncode(styles.taskDetails)#"><strong>#=kendo.htmlEncode(task.title)#</strong><div class="#=styles.taskDetailsPercent#">#=kendo.toString(task.percentComplete, "p0")#</div><ul class="#=styles.reset#"><li>#=messages.start#: #=kendo.toString(task.start, "h:mm tt ddd, MMM d")#</li><li>#=messages.end#: #=kendo.toString(task.end, "h:mm tt ddd, MMM d")#</li></ul></div>'),L="<table style='visibility: hidden;'><tbody><tr style='height:{0}'><td> </td></tr></tbody></table>",H={day:{type:"kendo.ui.GanttDayView"},week:{type:"kendo.ui.GanttWeekView"},month:{type:"kendo.ui.GanttMonthView"},year:{type:"kendo.ui.GanttYearView"}},N={alt:"k-alt",reset:"k-reset",nonWorking:"k-nonwork-hour",header:"k-header",gridHeader:"k-grid-header",gridHeaderWrap:"k-grid-header-wrap",gridContent:"k-grid-content",tasksWrapper:"k-gantt-tables",rowsTable:"k-gantt-rows",columnsTable:"k-gantt-columns",tasksTable:"k-gantt-tasks",dependenciesWrapper:"k-gantt-dependencies",resource:"k-resource",resourceAlt:"k-resource k-alt",task:"k-task",taskSingle:"k-task-single",taskMilestone:"k-task-milestone",taskSummary:"k-task-summary",taskWrap:"k-task-wrap",taskMilestoneWrap:"k-milestone-wrap",resourcesWrap:"k-resources-wrap",taskDot:"k-task-dot",taskDotStart:"k-task-start",taskDotEnd:"k-task-end",taskDragHandle:"k-task-draghandle",taskContent:"k-task-content",taskTemplate:"k-task-template",taskActions:"k-task-actions",taskDelete:"k-task-delete",taskComplete:"k-task-complete",taskDetails:"k-task-details",taskDetailsPercent:"k-task-pct",link:"k-link",icon:"k-icon",iconDelete:"k-i-close",taskResizeHandle:"k-resize-handle",taskResizeHandleWest:"k-resize-w",taskResizeHandleEast:"k-resize-e",taskSummaryProgress:"k-task-summary-progress",taskSummaryComplete:"k-task-summary-complete",line:"k-line",lineHorizontal:"k-line-h",lineVertical:"k-line-v",arrowWest:"k-arrow-w",arrowEast:"k-arrow-e",dragHint:"k-drag-hint",dependencyHint:"k-dependency-hint",tooltipWrapper:"k-widget k-tooltip k-popup k-group k-reset",tooltipContent:"k-tooltip-content",tooltipCallout:"k-callout k-callout-s",callout:"k-callout",marquee:"k-marquee k-gantt-marquee",marqueeColor:"k-marquee-color"},O=kendo.ui.GanttView=a.extend({init:function(e,t){a.fn.init.call(this,e,t),this.title=this.options.title||this.options.name,this.header=this.element.find(D+O.styles.gridHeader),this.content=this.element.find(D+O.styles.gridContent),this.contentWidth=this.content.width(),this._workDays=n(this.options),this._headerTree=t.headerTree,this._taskTree=t.taskTree,this._taskTemplate=t.taskTemplate?kendo.template(t.taskTemplate,p({},kendo.Template,t.templateSettings)):null,this._dependencyTree=t.dependencyTree,this._taskCoordinates={},this._currentTime()},destroy:function(){a.fn.destroy.call(this),clearTimeout(this._tooltipTimeout),this.headerRow=null,this.header=null,this.content=null,this._dragHint=null,this._resizeHint=null,this._resizeTooltip=null,this._taskTooltip=null,this._percentCompleteResizeTooltip=null,this._headerTree=null,this._taskTree=null,this._dependencyTree=null},options:{showWorkHours:!1,showWorkDays:!1,workDayStart:new Date(1980,1,1,8,0,0),workDayEnd:new Date(1980,1,1,17,0,0),workWeekStart:1,workWeekEnd:5,hourSpan:1,slotSize:100,currentTimeMarker:{updateInterval:1e4}},renderLayout:function(){this._slots=this._createSlots(),this._tableWidth=this._calculateTableWidth(),this.createLayout(this._layout()),this._slotDimensions(),this._adjustHeight(),this.content.find(D+O.styles.dependenciesWrapper).width(this._tableWidth)},_adjustHeight:function(){this.content&&this.content.height(this.element.height()-h(this.header))},createLayout:function(e){var t=this._headers(e),n=this._colgroup(),i=this._headerTree,o=s("tbody",null,t),r=s("table",{style:{width:this._tableWidth+"px"},role:"presentation"},[n,o]);i.render([r]),this.headerRow=this.header.find("table:first tr").last()},_slotDimensions:function(){var e,t,n,i,o=this.headerRow[0].children,r=this._timeSlots();for(n=0,i=o.length;n<i;n++)t=o[n],e=r[n],e.offsetLeft=t.offsetLeft,e.offsetWidth=t.offsetWidth},render:function(e){var t,n,i=e.length,o=O.styles,r=this._rowsTable(i),a=this._columnsTable(i),s=this._tasksTable(e),l=this.options.currentTimeMarker,c=this.options.calculatedSize;this._taskTree.render([r,a,s]),t=this.content.find(D+o.rowsTable),c&&(n=c.row*e.length,this.content.find(D+o.tasksTable).height(n),t.height(n)),this._contentHeight=t.height(),this._rowHeight=c?c.row:this._contentHeight/t.find("tr").length,this.content.find(D+o.columnsTable).height(this._contentHeight),l!==!1&&void 0!==l.updateInterval&&this._renderCurrentTime()},_rowsTable:function(e){var t,n,i=[],o=O.styles,r=[null,{className:o.alt}];for(n=0;n<e;n++)t=s("tr",r[n%2],[s("td",null,[l(" ")])]),i.push(t);return this._createTable(1,i,{className:o.rowsTable})},_columnsTable:function(){var e,t,n,i,o,r=[],a=O.styles,c=this._timeSlots(),d=c.length,u=0;for(o=0;o<d;o++)t=c[o],i={},n=t.span,u+=n,1!==n&&(i.colspan=n),t.isNonWorking&&(i.className=a.nonWorking),r.push(s("td",i,[l(" ")]));return e=s("tr",null,r),this._createTable(u,[e],{className:a.columnsTable})},_tasksTable:function(e){var t,n,i,o,r,a,l,c,d=[],u=O.styles,h=this._taskCoordinates={},p=this._calculateMilestoneWidth(),f=Math.round(p.width),g=this.options.resourcesField,v=[u.resource,u.resourceAlt],_=this.options.calculatedSize,b=this._calculateResourcesMargin(),w=this._calculateTaskBorderWidth(),k=function(e){var t=i.left,n=t+i.width;o.isMilestone()&&(t-=f/2,n=t+f),h[o.id]={start:t,end:n,rowIndex:e}};for(l=0,c=e.length;l<c;l++)o=e[l],i=this._taskPosition(o),i.borderWidth=w,t=s("tr",null),n=s("td"),o.start<=this.end&&o.end>=this.start&&(n.children.push(this._renderTask(e[l],i)),o[g]&&o[g].length&&(r=m?this._tableWidth-i.left:Math.max(i.width||p.clientWidth,0)+i.left,a={width:this._tableWidth-(r+b)+"px"},a[m?"right":"left"]=r+"px",_&&(a.height=_.cell+"px"),n.children.push(s("div",{className:u.resourcesWrap,style:a},this._renderResources(o[g],v[l%2])))),k(l)),t.children.push(n),d.push(t);return this._createTable(1,d,{className:O.styles.tasksTable})},_createTable:function(e,t,n){var i,o,r,a=[];for(r=0;r<e;r++)a.push(s("col"));return i=s("colgroup",null,a),o=s("tbody",null,t),n.style||(n.style={}),n.style.width=this._tableWidth+"px",n.role="presentation",s("table",n,[i,o])},_calculateTableWidth:function(){var e,t,n,i,o=this._timeSlots(),r=0,a=0;for(n=0,i=o.length;n<i;n++)e=o[n].span,a+=e,e>r&&(r=e);return t=Math.round(a*this.options.slotSize/r)},_calculateMilestoneWidth:function(){var t,n,i=O.styles.task+" "+O.styles.taskMilestone,o=e("<div class='"+i+"' style='visibility: hidden; position: absolute'>");return this.content.append(o),n=o[0].getBoundingClientRect(),t={width:n.right-n.left,clientWidth:o[0].clientWidth},o.remove(),t},_calculateResourcesMargin:function(){var t,n=e("<div class='"+O.styles.resourcesWrap+"' style='visibility: hidden; position: absolute'>");return this.content.append(n),t=parseInt(n.css(m?"margin-right":"margin-left"),10),n.remove(),t},_calculateTaskBorderWidth:function(){var t,n,i=O.styles.task+" "+O.styles.taskSingle,o=e("<div class='"+i+"' style='visibility: hidden; position: absolute'>");return this.content.append(o),n=kendo.getComputedStyles(o[0],["border-left-width"]),t=parseFloat(n["border-left-width"],10),o.remove(),t},_renderTask:function(e,t){var n,i,o,r=this.options.editable,a=t.left,l=O.styles,c=l.taskWrap,d=this.options.calculatedSize,u={},h={className:c,style:{left:a+"px"}};return d&&(h.style.height=d.cell+"px"),e.summary?i=this._renderSummary(e,t):e.isMilestone()?(i=this._renderMilestone(e,t),h.className+=" "+l.taskMilestoneWrap):i=this._renderSingleTask(e,t),n=s("div",h,[i]),r&&r.dependencyCreate!==!1&&(n.children.push(s("div",{className:l.taskDot+" "+l.taskDotStart})),n.children.push(s("div",{className:l.taskDot+" "+l.taskDotEnd}))),e.summary||e.isMilestone()||!r||r.dragPercentComplete===!1||r.update===!1||null!==this._taskTemplate||(o=Math.round(t.width*e.percentComplete),u[m?"right":"left"]=o+"px",n.children.push(s("div",{className:l.taskDragHandle,style:u}))),n},_renderSingleTask:function(e,t){var n,i,o,r=O.styles,a=Math.round(t.width*e.percentComplete),d=[],u=this.options.editable;return null!==this._taskTemplate?n=c(this._taskTemplate(e)):(n=l(e.title),d.push(s("div",{className:r.taskComplete,style:{width:a+"px"}}))),i=s("div",{className:r.taskContent},[s("div",{className:r.taskTemplate},[n])]),d.push(i),u&&(u.destroy!==!1&&i.children.push(s("span",{className:r.taskActions},[s("a",{className:r.link+" "+r.taskDelete,href:"#","aria-label":"Delete"},[s("span",{className:r.icon+" "+r.iconDelete})])])),u.resize!==!1&&u.update!==!1&&(i.children.push(s("span",{className:r.taskResizeHandle+" "+r.taskResizeHandleWest})),i.children.push(s("span",{className:r.taskResizeHandle+" "+r.taskResizeHandleEast})))),o=s("div",{className:r.task+" "+r.taskSingle,"data-uid":e.uid,style:{width:Math.max(t.width-2*t.borderWidth,0)+"px"}},d)},_renderMilestone:function(e){var t=O.styles,n=s("div",{className:t.task+" "+t.taskMilestone,"data-uid":e.uid});return n},_renderSummary:function(e,t){var n=O.styles,i=Math.round(t.width*e.percentComplete),o=s("div",{className:n.task+" "+n.taskSummary,"data-uid":e.uid,style:{width:t.width+"px"}},[s("div",{className:n.taskSummaryProgress,style:{width:i+"px"}},[s("div",{className:n.taskSummaryComplete,style:{width:t.width+"px"}})])]);return o},_renderResources:function(e,t){var n,i,o,r=[];for(i=0,o=e.length;i<o;i++)n=e[i],r.push(s("span",{className:t,style:{color:n.get("color")}},[l(n.get("name"))]));return m&&r.reverse(),r},_taskPosition:function(e){var t=Math.round,n=t(this._offset(m?e.end:e.start)),i=t(this._offset(m?e.start:e.end));return{left:n,width:i-n}},_offset:function(e){var t,n,i,o,r=this._timeSlots(),a=0;return r.length?(o=this._slotIndex("start",e),t=r[o],t.end<e?a=t.offsetWidth:t.start<=e&&(n=e-t.start,i=t.end-t.start,a=n/i*t.offsetWidth),m&&(a=t.offsetWidth+1-a),t.offsetLeft+a):0},_slotIndex:function(e,t,n){var i,o=this._timeSlots(),r=0,a=o.length-1;n&&(o=[].slice.call(o).reverse());do i=Math.ceil((a+r)/2),o[i][e]<t?r=i:(i===a&&i--,a=i);while(r!==a);return n&&(r=o.length-1-r),r},_timeByPosition:function(t,n,i){var o,r,a,s=this._slotByPosition(t);return n?i?s.end:s.start:(o=t-e(D+O.styles.tasksTable).offset().left,r=s.end-s.start,a=o-s.offsetLeft,m&&(a=s.offsetWidth-a),new Date(s.start.getTime()+r*(a/s.offsetWidth)))},_slotByPosition:function(t){var n=t-e(D+O.styles.tasksTable).offset().left,i=this._slotIndex("offsetLeft",n,m); +return this._timeSlots()[i]},_renderDependencies:function(e){var t,n,i=[],o=this._dependencyTree;for(t=0,n=e.length;t<n;t++)i.push.apply(i,this._renderDependency(e[t]));o.render(i)},_renderDependency:function(e){var t,n,i,o,r=this._taskCoordinates[e.predecessorId],a=this._taskCoordinates[e.successorId];if(!r||!a)return[];for(n="_render"+["FF","FS","SF","SS"][m?3-e.type:e.type],t=this[n](r,a),i=0,o=t.length;i<o;i++)t[i].attr["data-uid"]=e.uid;return t},_renderFF:function(e,t){var n=this._dependencyFF(e,t,!1);return n[n.length-1].children[0]=this._arrow(!0),n},_renderSS:function(e,t){var n=this._dependencyFF(t,e,!0);return n[0].children[0]=this._arrow(!1),n.reverse()},_renderFS:function(e,t){var n=this._dependencyFS(e,t,!1);return n[n.length-1].children[0]=this._arrow(!1),n},_renderSF:function(e,t){var n=this._dependencyFS(t,e,!0);return n[0].children[0]=this._arrow(!0),n.reverse()},_dependencyFF:function(e,t,n){var i,o=this,r=[],a=0,s=0,l=0,c=0,d=n?"start":"end",u=2,h=1,p=this._rowHeight,f=10,g=e.rowIndex*p+Math.floor(p/2)-1,m=t.rowIndex*p+Math.floor(p/2)-1,v=O.styles,_=function(){r.push(o._line(v.line+" "+v.lineHorizontal,{left:a+"px",top:s+"px",width:l+"px"}))},b=function(){r.push(o._line(v.line+" "+v.lineVertical,{left:a+"px",top:s+"px",height:c+"px"}))};return a=e[d],s=g,l=f,i=t[d]-e[d],i>0!==n&&(l=Math.abs(i)+f),n?(a-=l,l-=h,_()):(_(),a+=l-u),m<s?(c=s-m,c+=u,s=m,b()):(c=m-s,c+=u,b(),s+=c-u),l=Math.abs(a-t[d]),n||(l-=h,a-=l),_(),r},_dependencyFS:function(e,t,n){var i=this,o=[],r=0,a=0,s=0,l=0,c=this._rowHeight,d=Math.floor(c/2),u=10,h=2*u,p=t.start-e.end,f=2,g=1,m=e.rowIndex*c+Math.floor(c/2)-1,v=t.rowIndex*c+Math.floor(c/2)-1,_=O.styles,b=function(){o.push(i._line(_.line+" "+_.lineHorizontal,{left:r+"px",top:a+"px",width:s+"px"}))},w=function(){o.push(i._line(_.line+" "+_.lineVertical,{left:r+"px",top:a+"px",height:l+"px"}))};return r=e.end,a=m,s=u,n&&(r+=g,p>h&&(s=p-(u-f)),s-=g),b(),r+=s-f,p<=h&&(l=n?Math.abs(v-m)-d:d,v<m?(a-=l,l+=f,w()):(w(),a+=l),s=e.end-t.start+h,s<u&&(s=u),r-=s-f,b()),v<m?(l=a-v,a=v,l+=f,w()):(l=v-a,w(),a+=l),s=t.start-r,n||(s-=g),b(),o},_line:function(e,t){return s("div",{className:e,style:t})},_arrow:function(e){return s("span",{className:e?O.styles.arrowWest:O.styles.arrowEast})},_colgroup:function(){var e,t,n,i=this._timeSlots(),o=i.length,r=[];for(e=0;e<o;e++)for(t=0,n=i[e].span;t<n;t++)r.push(s("col"));return s("colgroup",null,r)},_createDragHint:function(e){this._dragHint=e.clone().addClass(O.styles.dragHint).css("cursor","move"),e.parent().append(this._dragHint)},_updateDragHint:function(e){var t=this._offset(e);this._dragHint.css({left:t})},_removeDragHint:function(){this._dragHint.remove(),this._dragHint=null},_createResizeHint:function(t){var n,i,o=O.styles,r=this._taskCoordinates[t.id].rowIndex*this._rowHeight,a=this.options,s=a.messages;this._resizeHint=e(R({styles:o})).css({top:0,height:this._contentHeight}),this.content.append(this._resizeHint),this._resizeTooltip=e(P({styles:o,start:t.start,end:t.end,messages:s.views,format:a.resizeTooltipFormat})).css({top:0,left:0}),this.content.append(this._resizeTooltip),this._resizeTooltipWidth=u(this._resizeTooltip),n=h(this._resizeTooltip),i=r-n,i<0&&(i=r+this._rowHeight),this._resizeTooltipTop=i},_updateResizeHint:function(t,n,i){var o=this._offset(m?n:t),r=this._offset(m?t:n),a=r-o,s=i!==m?o:r,l=this._tableWidth-kendo.support.scrollbar(),c=this._resizeTooltipWidth,d=this.options,u=d.messages,h=e(D+O.styles.tasksTable).offset().left-e(D+O.styles.tasksWrapper).offset().left;m&&(o+=h),this._resizeHint.css({left:o,width:a}),this._resizeTooltip&&this._resizeTooltip.remove(),s-=Math.round(c/2),s<0?s=0:s+c>l&&(s=l-c),m&&(s+=h),this._resizeTooltip=e(P({styles:O.styles,start:t,end:n,messages:u.views,format:d.resizeTooltipFormat})).css({top:this._resizeTooltipTop,left:s,"min-width":c}).appendTo(this.content)},_removeResizeHint:function(){this._resizeHint.remove(),this._resizeHint=null,this._resizeTooltip.remove(),this._resizeTooltip=null},_updatePercentCompleteTooltip:function(t,n,i){var o,r,a,s;this._removePercentCompleteTooltip(),o=this._percentCompleteResizeTooltip=e(z({styles:O.styles,text:i})).appendTo(this.element),r=Math.round(u(o)/2),a=o.find(D+O.styles.callout),s=Math.round(u(a)/2),o.css({top:t-(h(o)+s),left:n-r}),a.css("left",r-s)},_removePercentCompleteTooltip:function(){this._percentCompleteResizeTooltip&&this._percentCompleteResizeTooltip.remove(),this._percentCompleteResizeTooltip=null},_updateDependencyDragHint:function(e,t,n){this._removeDependencyDragHint(),n?this._creteVmlDependencyDragHint(e,t):this._creteDependencyDragHint(e,t)},_creteDependencyDragHint:function(t,n){var i=O.styles,o=n.x-t.x,r=n.y-t.y,a=Math.sqrt(o*o+r*r),s=Math.atan(r/o);o<0&&(s+=Math.PI),e("<div class='"+i.line+" "+i.lineHorizontal+" "+i.dependencyHint+"'></div>").css({top:t.y,left:t.x,width:a,"transform-origin":"0% 0","-ms-transform-origin":"0% 0","-webkit-transform-origin":"0% 0",transform:"rotate("+s+"rad)","-ms-transform":"rotate("+s+"rad)","-webkit-transform":"rotate("+s+"rad)"}).appendTo(this.content)},_creteVmlDependencyDragHint:function(t,n){var i=e("<kvml:line class='"+O.styles.dependencyHint+"' style='position:absolute; top: 0px; left: 0px;' strokecolor='black' strokeweight='2px' from='"+t.x+"px,"+t.y+"px' to='"+n.x+"px,"+n.y+"px'></kvml:line>").appendTo(this.content);i[0].outerHTML=i[0].outerHTML},_removeDependencyDragHint:function(){this.content.find(D+O.styles.dependencyHint).remove()},_createTaskTooltip:function(t,n,i){var o,r=O.styles,a=this.options,s=this.content,l=s.offset(),c=s.width(),d=kendo.scrollLeft(s),p=e(n).parents("tr").first(),f=p.offset(),g=a.tooltip&&a.tooltip.template?kendo.template(a.tooltip.template):B,v=m?i-(l.left+d+kendo.support.scrollbar()):i-(l.left-d),_=f.top+h(p)-l.top+s.scrollTop(),b=this._taskTooltip=e('<div style="z-index: 100002;" class="'+r.tooltipWrapper+'" ><div class="'+r.taskContent+'"></div></div>');b.css({left:v,top:_}).appendTo(s).find(D+r.taskContent).append(g({styles:r,task:t,messages:a.messages.views})),h(b)<f.top-l.top&&b.css("top",f.top-l.top-h(b)+s.scrollTop()),o=u(b),o+v-d>c&&(v-=o,v<d&&(v=d+c-(o+17)),b.css("left",v))},_removeTaskTooltip:function(){this._taskTooltip&&this._taskTooltip.remove(),this._taskTooltip=null},_scrollTo:function(e){var t=e.offset().left,n=e.width(),i=t+n,o=e.closest("tr"),r=o.offset().top,a=o.height(),s=r+a,l=this.content,c=l.offset(),d=c.top,u=l.height(),h=d+u,p=c.left,f=l.width(),g=p+f,m=kendo.support.scrollbar();r<d?l.scrollTop(l.scrollTop()+(r-d)):s>h&&l.scrollTop(l.scrollTop()+(s+m-h)),t<p&&n>f&&i<g||i>g&&n<f?l.scrollLeft(l.scrollLeft()+(i+m-g)):(i>g&&n>f&&t>p||t<p&&n<f)&&l.scrollLeft(l.scrollLeft()+(t-p))},_scrollToDate:function(e){var t,n=this.start,i=this.end;e>=n&&e<i&&(t=this._offset(e),kendo.support.isRtl(this.element)&&(t=this._tableWidth-t),kendo.scrollLeft(this.content,t))},_timeSlots:function(){return this._slots&&this._slots.length?this._slots[this._slots.length-1]:[]},_headers:function(e){var t,n,i,o,r,a,l,d,u=[],h=O.styles;for(r=0,a=e.length;r<a;r++){for(t=e[r],n=[],l=0,d=t.length;l<d;l++)i=t[l],o=c(i.text),n.push(s("td",{colspan:i.span,className:h.header+(i.isNonWorking?" "+h.nonWorking:"")},[o]));u.push(s("tr",null,n))}return u},_hours:function(e,t){var n,i,o,r=[],a=this.options,s=a.workDayStart.getHours(),l=a.workDayEnd.getHours(),c=a.hourSpan;for(e=new Date(e),t=new Date(t),a.showWorkHours&&e.setHours(s);e<t;)n=new Date(e),o=n.getHours(),i=o>=s&&o<l,n.setHours(n.getHours()+c),o==n.getHours()&&n.setHours(n.getHours()+2*c),a.showWorkHours&&!i||r.push({start:e,end:n,isNonWorking:!i,span:1}),e=n;return r},_days:function(e,t){var n,i,o=[];for(e=new Date(e),t=new Date(t);e<t;)n=t<kendo.date.nextDay(e)?t:kendo.date.nextDay(e),i=this._isWorkDay(e),this.options.showWorkDays&&!i||o.push({start:e,end:n,isNonWorking:!i,span:1}),e=n;return o},_weeks:function(e,t){var n,i,o,r=[],a=this.calendarInfo().firstDay;for(e=new Date(e),t=new Date(t);e<t;)n=kendo.date.dayOfWeek(kendo.date.addDays(e,1),a,1),n>t&&(n=t),i=this._days(e,n),o=i.length,o>0&&r.push({start:i[0].start,end:i[o-1].end,span:o}),e=n;return r},_months:function(e,t){var n,i,o,r,a=[];for(e=new Date(e),t=new Date(t);e<t;)n=new Date(e),i=kendo.date.firstDayOfMonth(new Date(n.setMonth(n.getMonth()+1))),n=t<i?t:i,o=this._days(e,n),r=o.length,r>0&&a.push({start:o[0].start,end:o[r-1].end,span:r}),e=n;return a},_years:function(e,t){var n,i,o,r=[];for(e=new Date(e),t=new Date(t);e<t;)n=new Date(e),n=kendo.date.firstDayOfMonth(new Date(n.setMonth(12))),n>=t&&(n=t),o=n.getMonth()||12,i=o-e.getMonth(),r.push({start:e,end:n,span:i}),e=n;return r},_slotHeaders:function(e,t){var n,i,o,r=[];for(i=0,o=e.length;i<o;i++)n=e[i],r.push({text:t(n),isNonWorking:!!n.isNonWorking,span:n.span});return r},_isWorkDay:function(e){var t,n,i=e.getDay(),o=this._workDays;for(t=0,n=o.length;t<n;t++)if(o[t]===i)return!0;return!1},calendarInfo:function(){return kendo.getCulture().calendars.standard},_renderCurrentTime:function(){var t,n=this._getCurrentTime(),i=this._offset(n),o=e("<div class='k-current-time'></div>"),r=O.styles,a=e(D+r.tasksWrapper),s=e(D+r.tasksTable);this.content&&this._timeSlots().length&&(this.content.find(".k-current-time").remove(),t=this._timeSlots()[this._slotIndex("start",n)],n<t.start||n>t.end||(a.length&&s.length&&(i+=s.offset().left-a.offset().left),o.css({left:i+"px",top:"0px",width:"1px",height:this._contentHeight+"px"}).appendTo(this.content)))},_getCurrentTime:function(){return new Date},_currentTime:function(){var e=this.options.currentTimeMarker;e!==!1&&void 0!==e.updateInterval&&(this._renderCurrentTime(),this._currentTimeUpdateTimer=setInterval(f(this._renderCurrentTime,this),e.updateInterval))}});p(!0,O,{styles:N}),kendo.ui.GanttDayView=O.extend({name:"day",options:{timeHeaderTemplate:A,dayHeaderTemplate:E,resizeTooltipFormat:"h:mm tt ddd, MMM d"},range:function(e){var t=this.options.range;this.start=kendo.date.getDate(e.start),this.end=kendo.date.getDate(e.end),(kendo.date.getMilliseconds(e.end)>0||this.end.getTime()===this.start.getTime())&&(this.end=kendo.date.addDays(this.end,1)),t&&t.start&&(this.start=kendo.date.getDate(t.start),this.start.setHours(t.start.getHours())),t&&t.end&&(this.end=kendo.date.getDate(t.end),this.end.setHours(t.end.getHours()))},_createSlots:function(){var e,t,n,i,o=[],r=this._days(this.start,this.end),a=[];for(n=0,i=r.length;n<i;n++)e=r[n],t=this._hours(e.start,e.end),e.span=t.length,a.push.apply(a,t);return o.push(r),o.push(a),o},_layout:function(){var e=[],t=this.options;return e.push(this._slotHeaders(this._slots[0],kendo.template(t.dayHeaderTemplate))),e.push(this._slotHeaders(this._slots[1],kendo.template(t.timeHeaderTemplate))),e}}),kendo.ui.GanttWeekView=O.extend({name:"week",options:{dayHeaderTemplate:E,weekHeaderTemplate:I,resizeTooltipFormat:"h:mm tt ddd, MMM d"},range:function(e){var t,n=this.options.range,i=this.calendarInfo(),o=i.firstDay,r=e.end;o===r.getDay()&&r.setDate(r.getDate()+7),this.start=kendo.date.getDate(kendo.date.dayOfWeek(e.start,o,-1)),this.end=kendo.date.getDate(kendo.date.dayOfWeek(r,o,1)),n&&n.start&&(this.start=kendo.date.getDate(n.start)),n&&n.end&&(t=new Date(n.end),this.end=kendo.date.getDate(t)<n.end?kendo.date.getDate(new Date(t.setDate(t.getDate()+1))):kendo.date.getDate(t))},_createSlots:function(){var e=[];return e.push(this._weeks(this.start,this.end)),e.push(this._days(this.start,this.end)),e},_layout:function(){var e=[],t=this.options;return e.push(this._slotHeaders(this._slots[0],kendo.template(t.weekHeaderTemplate))),e.push(this._slotHeaders(this._slots[1],kendo.template(t.dayHeaderTemplate))),e}}),kendo.ui.GanttMonthView=O.extend({name:"month",options:{weekHeaderTemplate:I,monthHeaderTemplate:M,resizeTooltipFormat:"dddd, MMM d, yyyy"},range:function(e){var t,n=this.options.range;this.start=kendo.date.firstDayOfMonth(e.start),this.end=kendo.date.addDays(kendo.date.getDate(kendo.date.lastDayOfMonth(e.end)),1),n&&n.start&&(this.start=kendo.date.getDate(n.start)),n&&n.end&&(t=new Date(n.end),this.end=kendo.date.getDate(t)<n.end?kendo.date.getDate(new Date(t.setDate(t.getDate()+1))):kendo.date.getDate(t))},_createSlots:function(){var e=[];return e.push(this._months(this.start,this.end)),e.push(this._weeks(this.start,this.end)),e},_layout:function(){var e=[],t=this.options;return e.push(this._slotHeaders(this._slots[0],kendo.template(t.monthHeaderTemplate))),e.push(this._slotHeaders(this._slots[1],kendo.template(t.weekHeaderTemplate))),e}}),kendo.ui.GanttYearView=O.extend({name:"year",options:{yearHeaderTemplate:F,monthHeaderTemplate:M,resizeTooltipFormat:"dddd, MMM d, yyyy"},range:function(e){var t,n=this.options.range;this.start=kendo.date.firstDayOfMonth(new Date(e.start.setMonth(0))),this.end=kendo.date.firstDayOfMonth(new Date(e.end.setMonth(12))),n&&n.start&&(this.start=kendo.date.firstDayOfMonth(n.start)),n&&n.end&&(t=kendo.date.firstDayOfMonth(n.end),this.end=kendo.date.getDate(new Date(t.setMonth(t.getMonth()+1))))},_createSlots:function(){var t=[],n=this._months(this.start,this.end);return e(n).each(function(e,t){t.span=1}),t.push(this._years(this.start,this.end)),t.push(n),t},_layout:function(){var e=[],t=this.options;return e.push(this._slotHeaders(this._slots[0],kendo.template(t.yearHeaderTemplate))),e.push(this._slotHeaders(this._slots[1],kendo.template(t.monthHeaderTemplate))),e}}),o={wrapper:"k-timeline k-grid k-widget",gridHeader:"k-grid-header",gridHeaderWrap:"k-grid-header-wrap",gridContent:"k-grid-content",gridContentWrap:"k-grid-content",tasksWrapper:"k-gantt-tables",dependenciesWrapper:"k-gantt-dependencies",task:"k-task",line:"k-line",taskResizeHandle:"k-resize-handle",taskResizeHandleWest:"k-resize-w",taskDragHandle:"k-task-draghandle",taskComplete:"k-task-complete",taskDelete:"k-task-delete",taskWrapActive:"k-task-wrap-active",taskWrap:"k-task-wrap",taskDot:"k-task-dot",taskDotStart:"k-task-start",taskDotEnd:"k-task-end",hovered:"k-state-hover",selected:"k-state-selected",origin:"k-origin"},r=kendo.ui.GanttTimeline=a.extend({init:function(e,t){a.fn.init.call(this,e,t),this.options.views&&this.options.views.length||(this.options.views=["day","week","month"]),m=kendo.support.isRtl(e),this._wrapper(),this._domTrees(),this._views(),this._selectable(),this._draggable(),this._resizable(),this._percentResizeDraggable(),this._createDependencyDraggable(),this._attachEvents(),this._tooltip()},options:{name:"GanttTimeline",messages:{views:{day:"Day",week:"Week",month:"Month",year:"Year",start:"Start",end:"End"}},snap:!0,selectable:!0,editable:!0},destroy:function(){a.fn.destroy.call(this),clearTimeout(this._tooltipTimeout),this._currentTimeUpdateTimer&&clearInterval(this._currentTimeUpdateTimer),this._unbindView(this._selectedView),this._moveDraggable&&this._moveDraggable.destroy(),this._resizeDraggable&&this._resizeDraggable.destroy(),this._percentDraggable&&this._percentDraggable.destroy(),this._dependencyDraggable&&this._dependencyDraggable.destroy(),this.touch&&this.touch.destroy(),this._headerTree=null,this._taskTree=null,this._dependencyTree=null,this.wrapper.off(w),kendo.destroy(this.wrapper)},_wrapper:function(){var t=r.styles,n=this,i=this.options,o=function(){var o,r,a=typeof i.rowHeight===b?i.rowHeight:i.rowHeight+"px",s=e(kendo.format(L,a)),l=n.wrapper.find(D+t.tasksWrapper);return l.append(s),o=h(s.find("tr")),r=s.find("td").height(),s.remove(),{row:o,cell:r}};this.wrapper=this.element.addClass(t.wrapper).append("<div class='"+t.gridHeader+"'><div class='"+t.gridHeaderWrap+"'></div></div>").append("<div class='"+t.gridContentWrap+"'><div class='"+t.tasksWrapper+"'></div><div class='"+t.dependenciesWrapper+"'></div></div>"),i.rowHeight&&(this._calculatedSize=o())},_domTrees:function(){var e=r.styles,t=kendo.dom.Tree,n=this.wrapper;this._headerTree=new t(n.find(D+e.gridHeaderWrap)[0]),this._taskTree=new t(n.find(D+e.tasksWrapper)[0]),this._dependencyTree=new t(n.find(D+e.dependenciesWrapper)[0])},_views:function(){var e,t,n,i,o,r,a,s=this.options.views;for(this.views={},r=0,a=s.length;r<a;r++)e=s[r],t=d(e),t&&e.selectable===!1||(n=t?"string"!=typeof e.type?e.title:e.type:e,i=H[n],i&&(t&&(e.type=i.type),i.title=this.options.messages.views[n]),e=p({title:n},i,t?e:{}),n&&(this.views[n]=e,o&&!e.selected||(o=n)));o&&(this._selectedViewName=o)},view:function(e){return e&&(this._selectView(e),this.trigger("navigate",{view:e,action:"changeView"})),this._selectedView},_selectView:function(e){e&&this.views[e]&&(this._selectedView&&this._unbindView(this._selectedView),this._selectedView=this._initializeView(e),this._selectedViewName=e)},_viewByIndex:function(e){var t,n=this.views;for(t in n){if(!e)return t;e--}},_initializeView:function(e){var n,i,o,r=this.views[e];if(r){if(n=r.type,"string"==typeof n&&(n=kendo.getter(r.type)(window)),!n)throw Error("There is no such view");i={},p(i,this.options.range,r.range),o=r.date||this.options.date,r=new n(this.wrapper,t(p(!0,{headerTree:this._headerTree,taskTree:this._taskTree,dependencyTree:this._dependencyTree,calculatedSize:this._calculatedSize},r,this.options,{date:o,range:i})))}return r},_unbindView:function(e){e&&e.destroy()},_range:function(e){var t,n,i={field:"start",dir:"asc"},o={field:"end",dir:"desc"};return e&&e.length?(t=new _(e).sort(i).toArray()[0].start||new Date,n=new _(e).sort(o).toArray()[0].end||new Date,{start:new Date(t),end:new Date(n)}):{start:new Date,end:new Date}},_render:function(e){var t=this.view(),n=this._range(e),i=t.options.date;this._tasks=e,t.range(n),t.renderLayout(),t.render(e),i&&t._scrollToDate(i)},_renderDependencies:function(e){this.view()._renderDependencies(e)},_taskByUid:function(e){var t,n,i=this._tasks,o=i.length;for(n=0;n<o;n++)if(t=i[n],t.uid===e)return t},_draggable:function(){var e,t,n,o,a=this,s=this.options.snap,l=r.styles,c=this.options.editable,d=function(){a.view()._removeDragHint(),e&&e.css("opacity",1),e=null,t=null,a.dragInProgress=!1};c&&c.move!==!1&&c.update!==!1&&(this._moveDraggable=new kendo.ui.Draggable(this.wrapper,{distance:0,filter:D+l.task,holdToDrag:kendo.support.mobileOS,ignore:D+l.taskResizeHandle}),this._moveDraggable.bind("dragstart",function(i){var r=a.view();return e=i.currentTarget.parent(),t=a._taskByUid(i.currentTarget.attr("data-uid")),a.trigger("moveStart",{task:t})?void i.preventDefault():(n=t.start,o=r._timeByPosition(i.x.location,s)-n,r._createDragHint(e),e.css("opacity",.5),clearTimeout(a._tooltipTimeout),void(a.dragInProgress=!0))}).bind("drag",kendo.throttle(function(e){var i,r,l;a.dragInProgress&&(i=a.view(),r=new Date(i._timeByPosition(e.x.location,s)-o),l=r,a.trigger("move",{task:t,start:r})||(n=r,m&&(l=new Date(n.getTime()+t.duration())),i._updateDragHint(l)))},15)).bind("dragend",function(){a.trigger("moveEnd",{task:t,start:n}),d()}).bind("dragcancel",function(){d()}).userEvents.bind("select",function(){i()}))},_resizable:function(){var e,t,n,o,a,s=this,l=this.options.snap,c=r.styles,d=this.options.editable,u=function(){s.view()._removeResizeHint(),e=null,t=null,s.dragInProgress=!1};d&&d.resize!==!1&&d.update!==!1&&(this._resizeDraggable=new kendo.ui.Draggable(this.wrapper,{distance:0,filter:D+c.taskResizeHandle,holdToDrag:!1}),this._resizeDraggable.bind("dragstart",function(i){return a=i.currentTarget.hasClass(c.taskResizeHandleWest),m&&(a=!a),e=i.currentTarget.closest(D+c.task),t=s._taskByUid(e.attr("data-uid")),s.trigger("resizeStart",{task:t})?void i.preventDefault():(n=t.start,o=t.end,s.view()._createResizeHint(t),clearTimeout(s._tooltipTimeout),void(s.dragInProgress=!0))}).bind("drag",kendo.throttle(function(e){var i,r;s.dragInProgress&&(i=s.view(),r=i._timeByPosition(e.x.location,l,!a),a?n=r<o?r:o:o=r>n?r:n,s.trigger("resize",{task:t,start:n,end:o})||i._updateResizeHint(n,o,a))},15)).bind("dragend",function(){s.trigger("resizeEnd",{task:t,resizeStart:a,start:n,end:o}),u()}).bind("dragcancel",function(){u()}).userEvents.bind("select",function(){i()}))},_percentResizeDraggable:function(){var e,t,n,o,a,s,l,c,d,h,p=this,f=r.styles,g=this.options.editable,v=function(){p.view()._removePercentCompleteTooltip(),t=null,e=null,p.dragInProgress=!1},_=function(e){t.find(D+f.taskComplete).width(e).end().siblings(D+f.taskDragHandle).css(m?"right":"left",e)};g&&g.dragPercentComplete!==!1&&g.update!==!1&&(this._percentDraggable=new kendo.ui.Draggable(this.wrapper,{distance:0,filter:D+f.taskDragHandle,holdToDrag:!1}),this._percentDraggable.bind("dragstart",function(i){return p.trigger("percentResizeStart")?void i.preventDefault():(t=i.currentTarget.siblings(D+f.task),e=p._taskByUid(t.attr("data-uid")),l=e.percentComplete,n=t.offset(),o=this.element.offset(),a=t.find(D+f.taskComplete).width(),s=u(t),clearTimeout(p._tooltipTimeout),void(p.dragInProgress=!0))}).bind("drag",kendo.throttle(function(e){if(p.dragInProgress){h=m?-e.x.initialDelta:e.x.initialDelta;var t=Math.max(0,Math.min(s,a+h));l=Math.round(t/s*100),_(t),c=n.top-o.top,d=n.left+t-o.left,m&&(d+=s-2*t),p.view()._updatePercentCompleteTooltip(c,d,l)}},15)).bind("dragend",function(){p.trigger("percentResizeEnd",{task:e,percentComplete:l/100}),v()}).bind("dragcancel",function(){_(a),v()}).userEvents.bind("select",function(){i()}))},_createDependencyDraggable:function(){var t,n,o,a=this,s=e(),l=e(),c=g.msie&&g.version<9,d=r.styles,p=this.options.editable,f=function(){t.css("display","").removeClass(d.hovered),t.parent().removeClass(d.origin),t=null,m(!1),l=e(),s=e(),a.view()._removeDependencyDragHint(),a.dragInProgress=!1},m=function(e){l.hasClass(d.origin)||(l.find(D+d.taskDot).css("display",e?"block":""),s.toggleClass(d.hovered,e))};p&&p.dependencyCreate!==!1&&(c&&document.namespaces&&document.namespaces.add("kvml","urn:schemas-microsoft-com:vml","#default#VML"),this._dependencyDraggable=new kendo.ui.Draggable(this.wrapper,{distance:0,filter:D+d.taskDot,holdToDrag:!1}),this._dependencyDraggable.bind("dragstart",function(e){var i,r;return a.trigger("dependencyDragStart")?void e.preventDefault():(t=e.currentTarget.css("display","block").addClass(d.hovered),t.parent().addClass(d.origin),i=t.offset(),r=a.wrapper.find(D+d.tasksWrapper).offset(),n=Math.round(i.left-r.left+h(t)/2),o=Math.round(i.top-r.top+u(t)/2),clearTimeout(a._tooltipTimeout),void(a.dragInProgress=!0))}).bind("drag",kendo.throttle(function(t){var i,r,u,h;a.dragInProgress&&(a.view()._removeDependencyDragHint(),i=e(kendo.elementUnderCursor(t)),r=a.wrapper.find(D+d.tasksWrapper).offset(),u=t.x.location-r.left,h=t.y.location-r.top,a.view()._updateDependencyDragHint({x:n,y:o},{x:u,y:h},c),m(!1),s=i.hasClass(d.taskDot)?i:e(),l=i.closest(D+d.taskWrap),m(!0))},15)).bind("dragend",function(){var e,n,i,o,r;s.length&&(e=t.hasClass(d.taskDotStart),n=s.hasClass(d.taskDotStart),i=e?n?3:2:n?1:0,o=a._taskByUid(t.siblings(D+d.task).attr("data-uid")),r=a._taskByUid(s.siblings(D+d.task).attr("data-uid")),o!==r&&a.trigger("dependencyDragEnd",{type:i,predecessor:o,successor:r})),f()}).bind("dragcancel",function(){f()}).userEvents.bind("select",function(){i()}))},_selectable:function(){var t=this,n=r.styles;this.options.selectable&&this.wrapper.on(k+w,D+n.task,function(n){n.stopPropagation(),n.ctrlKey?t.trigger("clear"):t.trigger("select",{uid:e(this).attr("data-uid")})}).on(k+w,D+n.taskWrap,function(t){t.stopPropagation(),e(this).css("z-index","0");var i=e(document.elementFromPoint(t.clientX,t.clientY));i.hasClass(n.line)&&i.click(),e(this).css("z-index","")}).on(k+w,D+n.tasksWrapper,function(){t.selectDependency().length>0?t.clearSelection():t.trigger("clear")}).on(k+w,D+n.line,function(e){e.stopPropagation(),t.selectDependency(this)})},select:function(e){var t=this.wrapper.find(e),n=r.styles;return t.length?(this.clearSelection(),t.addClass(n.selected),void(kendo.support.mobileOS&&t.parent().addClass(n.taskWrapActive))):this.wrapper.find(D+n.task+D+n.selected)},selectDependency:function(t){var n,i=this.wrapper.find(t),o=r.styles;return i.length?(this.clearSelection(),this.trigger("clear"),n=e(i).attr("data-uid"),void this.wrapper.find(D+o.line+"[data-uid='"+n+"']").addClass(o.selected)):this.wrapper.find(D+o.line+D+o.selected)},clearSelection:function(){var e=r.styles;this.wrapper.find(D+e.selected).removeClass(e.selected),kendo.support.mobileOS&&this.wrapper.find(D+e.taskWrapActive).removeClass(e.taskWrapActive)},_attachEvents:function(){var t=this,n=r.styles,i=this.options.editable;i&&(this._tabindex(),this.wrapper.on(k+w,D+n.taskDelete,function(i){t.trigger("removeTask",{uid:e(this).closest(D+n.task).attr("data-uid")}),i.stopPropagation(),i.preventDefault()}).on(T+w,function(e){var n,i=t.options.editable;e.keyCode===v.DELETE&&i&&i.dependencyDestroy!==!1&&(n=t.selectDependency(),n.length&&(t.trigger("removeDependency",{uid:n.attr("data-uid")}),t.clearSelection()))}),kendo.support.mobileOS?this.touch=this.wrapper.kendoTouch({filter:D+n.task,doubletap:function(n){t.options.editable.update!==!1&&t.trigger("editTask",{uid:e(n.touch.currentTarget).attr("data-uid")})}}).data("kendoTouch"):this.wrapper.on(y+w,D+n.task,function(n){t.options.editable.update!==!1&&(t.trigger("editTask",{uid:e(this).attr("data-uid")}),n.stopPropagation(),n.preventDefault())}))},_tooltip:function(){var t,n=this,i=this.options.tooltip,o=r.styles,a=function(e){t=e.clientX};i&&i.visible===!1||(kendo.support.mobileOS?(this.wrapper.on(k+w,D+o.taskDelete,function(e){e.stopPropagation(),n.view()._removeTaskTooltip()}).on(S+w,D+o.task,function(t){var i=e(t.relatedTarget).parents(D+o.taskWrap,D+o.task);0===i.length&&n.view()._removeTaskTooltip()}),this.touch&&this.touch.bind("tap",function(t){var i=t.touch.target,o=n._taskByUid(e(i).attr("data-uid")),r=t.touch.x.client;n.view()._taskTooltip&&n.view()._removeTaskTooltip(),n.view()._createTaskTooltip(o,i,r)}).bind("doubletap",function(){n.view()._removeTaskTooltip()})):this.wrapper.on(C+w,D+o.task,function(){var i=this,o=n._taskByUid(e(this).attr("data-uid"));n.dragInProgress||(n._tooltipTimeout=setTimeout(function(){n.view()._createTaskTooltip(o,i,t)},800),e(this).on(x,a))}).on(S+w,D+o.task,function(){clearTimeout(n._tooltipTimeout),n.view()._removeTaskTooltip(),e(this).off(x,a)}))}}),p(!0,r,{styles:o})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.gantt.min",["kendo.data.min","kendo.popup.min","kendo.window.min","kendo.resizable.min","kendo.gantt.list.min","kendo.gantt.timeline.min","kendo.grid.min","kendo.pdf.min"],e)}(function(){return function(e,t){function n(e){return"["+g.attr("uid")+(e?"='"+e+"']":"]")}function i(e){return delete e.name,delete e.prefix,delete e.remove,delete e.edit,delete e.add,delete e.navigate,e}function o(e){var t,n,i,o,r,a;if(e.filter("[name=end], [name=start]").length){for(t=e.attr("name"),n=g.widgetInstance(e,g.ui),i={},o=e;o!==window&&!r;)o=o.parent(),r=o.data("kendoEditable");return!(a=r?r.options.model:null)||(i.start=a.start,i.end=a.end,i[t]=n?n.value():g.parseDate(e.val()),i.start<=i.end)}return!0}function r(t,n){var i=t.parents("["+g.attr("role")+'="gantt"]'),o=[],r=a(i);t.attr(H,0),n&&r.each(function(t,n){o[t]=e(n).scrollTop()});try{t[0].setActive()}catch(s){t[0].focus()}n&&r.each(function(t,n){e(n).scrollTop(o[t])})}function a(t){return e(t).parentsUntil("body").filter(function(e,t){var n=g.getComputedStyles(t,["overflow"]);return"visible"!=n.overflow}).add(window)}var s,l,c,d,u,h,p,f,g=window.kendo,m=e.extend({F10:121},g.keys),v="matchMedia"in window,_=g.support.browser,b=g.support.mobileOS,w=g.Observable,k=g.ui.Widget,y=g.data.DataSource,x=g.data.ObservableObject,C=g.data.ObservableArray,S=g.data.Query,T=e.isArray,D=e.inArray,A=g.isFunction,E=e.proxy,I=e.extend,M=e.isPlainObject,F=e.map,R=g._outerWidth,P=g._outerHeight,z=3,B=".kendoGantt",L="p0",H="tabIndex",N="click",O="width",V="string",W={down:{origin:"bottom left",position:"top left"},up:{origin:"top left",position:"bottom left"}},U="aria-activedescendant",q="aria-label",j="gantt_active_cell",G="action-option-focused",$=".",Y="Are you sure you want to delete this task?",K="Are you sure you want to delete this dependency?",Q=g.template('<button class="#=styles.buttonToggle#" type="button" '+q+'="Toggle"><span class="#=styles.iconToggle#"></span></button>'),X='<button class="#=styles.button# #=className#" type="button" #if (action) {#data-action="#=action#"#}#><span class="#=iconClass#"></span><span>#=text#</span></button>',J='<a class="#=className#" #=attr# href="\\#">#=text#</a>',Z=g.template('<li class="#=styles.currentView# #=styles.viewButtonDefault#"><a href="\\#" class="#=styles.link#">&nbps;</a></li>'),ee=g.template('<ul class="#=styles.viewsWrapper#">#for(var view in views){#<li class="#=styles.viewButtonDefault# #=styles.viewButton#-#= view.toLowerCase() #" data-#=ns#name="#=view#"><a href="\\#" class="#=styles.link#">#=views[view].title#</a></li>#}#</ul>'),te=g.template('<div class="#=styles.popupWrapper#"><ul class="#=styles.popupList#" role="listbox">#for(var i = 0, l = actions.length; i < l; i++){#<li class="#=styles.item#" data-action="#=actions[i].data#" role="option">#=actions[i].text#</span>#}#</ul></div>'),ne=function(t,n){var i={name:n.field,title:n.title},o=n.model.fields[n.field].validation;o&&M(o)&&o.message&&(i[g.attr("dateCompare-msg")]=o.message),e('<input type="text" required '+g.attr("type")+'="date" '+g.attr("role")+'="datetimepicker" '+g.attr("bind")+'="value:'+n.field+'" '+g.attr("validate")+"='true' />").attr(i).appendTo(t),e("<span "+g.attr("for")+'="'+n.field+'" class="k-invalid-msg"/>').hide().appendTo(t)},ie=function(t,n){e('<a href="#" class="'+n.styles.button+'">'+n.messages.assignButton+"</a>").click(n.click).appendTo(t)},oe={wrapper:"k-widget k-gantt",rowHeight:"k-gantt-rowheight",listWrapper:"k-gantt-layout k-gantt-treelist",list:"k-gantt-treelist",timelineWrapper:"k-gantt-layout k-gantt-timeline",timeline:"k-gantt-timeline",splitBarWrapper:"k-splitbar k-state-default k-splitbar-horizontal k-splitbar-draggable-horizontal k-gantt-layout",splitBar:"k-splitbar",splitBarHover:"k-splitbar-horizontal-hover",popupWrapper:"k-list-container",popupList:"k-list k-reset",resizeHandle:"k-resize-handle",icon:"k-icon",item:"k-item",line:"k-line",buttonDelete:"k-gantt-delete",buttonCancel:"k-gantt-cancel",buttonSave:"k-gantt-update",buttonToggle:"k-gantt-toggle",primary:"k-primary",hovered:"k-state-hover",selected:"k-state-selected",focused:"k-state-focused",gridHeader:"k-grid-header",gridHeaderWrap:"k-grid-header-wrap",gridContent:"k-grid-content",tasks:"k-gantt-tasks",popup:{form:"k-popup-edit-form",editForm:"k-gantt-edit-form",formContainer:"k-edit-form-container",resourcesFormContainer:"k-resources-form-container",message:"k-popup-message",buttonsContainer:"k-edit-buttons k-state-default",button:"k-button",editField:"k-edit-field",editLabel:"k-edit-label",resourcesField:"k-gantt-resources"},toolbar:{headerWrapper:"k-floatwrap k-header k-gantt-toolbar",footerWrapper:"k-floatwrap k-header k-gantt-toolbar",toolbar:"k-gantt-toolbar",expanded:"k-state-expanded",views:"k-gantt-views",viewsWrapper:"k-reset k-header k-gantt-views",actions:"k-gantt-actions",button:"k-button k-button-icontext",buttonToggle:"k-button k-button-icon k-gantt-toggle",iconPlus:"k-icon k-i-plus",iconPdf:"k-icon k-i-file-pdf",iconToggle:"k-icon k-i-layout-1-by-4",viewButtonDefault:"k-state-default",viewButton:"k-view",currentView:"k-current-view",link:"k-link",pdfButton:"k-gantt-pdf",appendButton:"k-gantt-create"}},re=w.extend({init:function(e,t){w.fn.init.call(this),this.element=e,this.options=I(!0,{},this.options,t),this._popup()},options:{direction:"down",navigatable:!1},_current:function(e){var t=f.styles,n=this.list.find($+t.focused),i=n[e]();i.length&&(n.removeClass(t.focused).removeAttr("id"),i.addClass(t.focused).attr("id",G),this.list.find("ul").removeAttr(U).attr(U,G))},_popup:function(){var t=this,n=f.styles,i="li"+$+n.item,o=$+n.toolbar.appendButton,r=this.options.messages.actions,a=this.options.navigatable;this.list=e(te({styles:n,actions:[{data:"add",text:r.addChild},{data:"insert-before",text:r.insertBefore},{data:"insert-after",text:r.insertAfter}]})),this.element.append(this.list),this.popup=new g.ui.Popup(this.list,I({ +anchor:this.element.find(o),open:function(){t._adjustListWidth()},animation:this.options.animation},W[this.options.direction])),this.element.on(N+B,o,function(i){var o=e(this),r=o.attr(g.attr("action"));i.preventDefault(),r?t.trigger("command",{type:r}):(t.popup.open(),a&&t.list.find("li:first").addClass(n.focused).attr("id",G).end().find("ul").attr({TABINDEX:0,"aria-activedescendant":G}).focus())}),this.list.find(i).hover(function(){e(this).addClass(n.hovered)},function(){e(this).removeClass(n.hovered)}).end().on(N+B,i,function(){t.trigger("command",{type:e(this).attr(g.attr("action"))}),t.popup.close()}),a&&(this.popup.bind("close",function(){t.list.find(i).removeClass(n.focused).end().find("ul").attr(H,0),t.element.parents("["+g.attr("role")+'="gantt"]').find($+n.gridContent+" > table:first").focus()}),this.list.find("ul").on("keydown"+B,function(e){var i=e.keyCode;switch(i){case m.UP:e.preventDefault(),t._current("prev");break;case m.DOWN:e.preventDefault(),t._current("next");break;case m.ENTER:t.list.find($+n.focused).click();break;case m.ESC:e.preventDefault(),t.popup.close()}}))},_adjustListWidth:function(){var e,t,n=this.list,i=f.styles,o=n[0].style.width,r=this.element.find($+i.toolbar.appendButton),a=R(n);!n.data(O)&&o||(e=window.getComputedStyle?window.getComputedStyle(r[0],null):0,t=e?parseFloat(e.width):R(r),e&&(_.mozilla||_.msie)&&(t+=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight)+parseFloat(e.borderLeftWidth)+parseFloat(e.borderRightWidth)),o="border-box"!==n.css("box-sizing")?t-(R(n)-n.width()):t,a>o&&(o=a),n.css({fontFamily:r.css("font-family"),width:o}).data(O,o))},destroy:function(){clearTimeout(this._focusTimeout),this.popup.destroy(),this.element.off(B),this.list.off(B),this.unbind()}}),ae=function(e,t){return function(n){var i,o;if(n=T(n)?{data:n}:n,i=n||{},o=i.data,i.data=o,!(i instanceof e)&&i instanceof y)throw Error("Incorrect DataSource type. Only "+t+" instances are supported");return i instanceof e?i:new e(i)}},se=g.data.Model.define({id:"id",fields:{id:{type:"number"},predecessorId:{type:"number"},successorId:{type:"number"},type:{type:"number"}}}),le=y.extend({init:function(e){y.fn.init.call(this,I(!0,{},{schema:{modelBase:se,model:se}},e))},successors:function(e){return this._dependencies("predecessorId",e)},predecessors:function(e){return this._dependencies("successorId",e)},dependencies:function(e){var t=this.predecessors(e),n=this.successors(e);return t.push.apply(t,n),t},_dependencies:function(e,t){var n=this.view(),i={field:e,operator:"eq",value:t};return n=new S(n).filter(i).toArray()}});le.create=ae(le,"GanttDependencyDataSource"),l=g.data.Model.define({duration:function(){var e=this.end,t=this.start;return e-t},isMilestone:function(){return 0===this.duration()},_offset:function(e){var t,n,i=["start","end"];for(n=0;n<i.length;n++)t=new Date(this.get(i[n]).getTime()+e),this.set(i[n],t)},id:"id",fields:{id:{type:"number"},parentId:{type:"number",defaultValue:null,validation:{required:!0}},orderId:{type:"number",validation:{required:!0}},title:{type:"string",defaultValue:"New task"},start:{type:"date",validation:{required:!0}},end:{type:"date",validation:{required:!0,dateCompare:o,message:"End date should be after or equal to the start date"}},percentComplete:{type:"number",validation:{required:!0,min:0,max:1,step:.01}},summary:{type:"boolean"},expanded:{type:"boolean",defaultValue:!0}}}),c=y.extend({init:function(e){y.fn.init.call(this,I(!0,{},{schema:{modelBase:l,model:l}},e))},remove:function(e){var t=e.get("parentId"),n=this.taskAllChildren(e);return this._removeItems(n),e=y.fn.remove.call(this,e),this._childRemoved(t,e.get("orderId")),e},add:function(e){if(e)return e=this._toGanttTask(e),this.insert(this.taskSiblings(e).length,e)},insert:function(e,t){if(t)return t=this._toGanttTask(t),t.set("orderId",e),t=y.fn.insert.call(this,e,t),this._reorderSiblings(t,this.taskSiblings(t).length-1),this._resolveSummaryFields(this.taskParent(t)),t},taskChildren:function(e){var n,i=this.view(),o={field:"parentId",operator:"eq",value:null},r=this._sort&&this._sort.length?this._sort:{field:"orderId",dir:"asc"};if(e){if(n=e.get("id"),n===t||null===n||""===n)return[];o.value=n}return i=new S(i).filter(o).sort(r).toArray()},taskAllChildren:function(e){var t=[],n=this,i=function(e){var o=n.taskChildren(e);t.push.apply(t,o),F(o,i)};return e?i(e):t=this.view(),t},taskSiblings:function(e){if(!e)return null;var t=this.taskParent(e);return this.taskChildren(t)},taskParent:function(e){return e&&null!==e.get("parentId")?this.get(e.parentId):null},taskLevel:function(e){for(var t=0,n=this.taskParent(e);null!==n;)t+=1,n=this.taskParent(n);return t},taskTree:function(e){var t,n,i,o,r=[],a=this.taskChildren(e);for(n=0,i=a.length;n<i;n++)t=a[n],r.push(t),t.get("expanded")&&(o=this.taskTree(t),r.push.apply(r,o));return r},update:function(e,n){var i,o,r=this,a=function(e,t){var n,i,o=r.taskAllChildren(e);for(n=0,i=o.length;n<i;n++)o[n]._offset(t)},s=function(e){var t=e.field,n=e.sender;switch(t){case"start":r._resolveSummaryStart(r.taskParent(n)),a(n,n.get(t).getTime()-i.getTime());break;case"end":r._resolveSummaryEnd(r.taskParent(n));break;case"percentComplete":r._resolveSummaryPercentComplete(r.taskParent(n));break;case"orderId":r._reorderSiblings(n,i)}};n.parentId!==t&&(i=e.get("parentId"),i!==n.parentId&&(e.set("parentId",n.parentId),r._childRemoved(i,e.get("orderId")),e.set("orderId",r.taskSiblings(e).length-1),r._resolveSummaryFields(r.taskParent(e))),delete n.parentId),e.bind("change",s);for(o in n)i=e.get(o),e.set(o,n[o]);e.unbind("change",s)},_resolveSummaryFields:function(e){e&&(this._updateSummary(e),this.taskChildren(e).length&&(this._resolveSummaryStart(e),this._resolveSummaryEnd(e),this._resolveSummaryPercentComplete(e)))},_resolveSummaryStart:function(e){var t=this,n=function(e){var n,i,o,r=t.taskChildren(e),a=r[0].start.getTime();for(i=1,o=r.length;i<o;i++)n=r[i].start.getTime(),n<a&&(a=n);return new Date(a)};this._updateSummaryRecursive(e,"start",n)},_resolveSummaryEnd:function(e){var t=this,n=function(e){var n,i,o,r=t.taskChildren(e),a=r[0].end.getTime();for(i=1,o=r.length;i<o;i++)n=r[i].end.getTime(),n>a&&(a=n);return new Date(a)};this._updateSummaryRecursive(e,"end",n)},_resolveSummaryPercentComplete:function(e){var t=this,n=function(e){var n=t.taskChildren(e),i=new S(n).aggregate([{field:"percentComplete",aggregate:"average"}]);return i.percentComplete.average};this._updateSummaryRecursive(e,"percentComplete",n)},_updateSummaryRecursive:function(e,t,n){var i,o;e&&(i=n(e),e.set(t,i),o=this.taskParent(e),o&&this._updateSummaryRecursive(o,t,n))},_childRemoved:function(e,t){var n,i,o=null===e?null:this.get(e),r=this.taskChildren(o);for(n=t,i=r.length;n<i;n++)r[n].set("orderId",n);this._resolveSummaryFields(o)},_reorderSiblings:function(e,t){var n,i=e.get("orderId"),o=i>t,r=o?t:i,a=o?i:t,s=o?r:r+1,l=this.taskSiblings(e);for(a=Math.min(a,l.length-1),n=r;n<=a;n++)l[n]!==e&&(l[n].set("orderId",s),s+=1)},_updateSummary:function(e){if(null!==e){var t=this.taskChildren(e).length;e.set("summary",t>0)}},_toGanttTask:function(e){if(!(e instanceof l)){var t=e;e=this._createNewModel(),e.accept(t)}return e}}),c.create=ae(c,"GanttDataSource"),I(!0,g.data,{GanttDataSource:c,GanttTask:l,GanttDependencyDataSource:le,GanttDependency:se}),d={desktop:{dateRange:ne,resources:ie}},u=g.Observable.extend({init:function(e,t){g.Observable.fn.init.call(this),this.element=e,this.options=I(!0,{},this.options,t),this.createButton=this.options.createButton},fields:function(t,n){var i,o=this,r=this.options,a=r.messages.editor,s=r.resources,l=function(e){e.preventDefault(),s.editor(o.container.find($+f.styles.popup.resourcesField),n)};return r.editable.template?i=e.map(n.fields,function(e,t){return{field:t}}):(i=[{field:"title",title:a.title},{field:"start",title:a.start,editor:t.dateRange},{field:"end",title:a.end,editor:t.dateRange},{field:"percentComplete",title:a.percentComplete,format:L}],n.get(s.field)&&i.push({field:s.field,title:a.resources,messages:a,editor:t.resources,click:l,styles:f.styles.popup})),i},_buildEditTemplate:function(e,t,n){var i,o,r,a,s=this.options.resources,l=this.options.editable.template,c=I({},g.Template,this.options.templateSettings),d=c.paramName,u=f.styles.popup,h="";if(l)typeof l===V&&(l=g.unescape(l)),h+=g.template(l,c)(e);else for(i=0,o=t.length;i<o;i++)r=t[i],h+='<div class="'+u.editLabel+'"><label for="'+r.field+'">'+(r.title||r.field||"")+"</label></div>",r.field===s.field&&(h+='<div class="'+u.resourcesField+'" style="display:none"></div>'),!e.editable||e.editable(r.field)?(n.push(r),h+="<div "+g.attr("container-for")+'="'+r.field+'" class="'+u.editField+'"></div>'):(a="#:",r.field?(r=g.expr(r.field,d),a+=r+"==null?'':"+r):a+="''",a+="#",a=g.template(a,c),h+='<div class="'+u.editField+'">'+a(e)+"</div>");return h}}),h=u.extend({destroy:function(){this.close(),this.unbind()},editTask:function(e){this.editable=this._createPopupEditor(e)},close:function(){var e=this,t=function(){e.editable&&(e.editable.destroy(),e.editable=null,e.container=null),e.popup&&(e.popup.destroy(),e.popup=null)};this.editable&&this.container.is(":visible")?(e.trigger("close",{window:e.container}),this.container.data("kendoWindow").bind("deactivate",t).close()):t()},showDialog:function(t){var n,i,o,r,a=t.buttons,s=f.styles.popup,l=g.format('<div class="{0}"><div class="{1}"><p class="{2}">{3}</p><div class="{4}">',s.form,s.formContainer,s.message,t.text,s.buttonsContainer);for(n=0,i=a.length;n<i;n++)l+=this.createButton(a[n]);l+="</div></div></div>",o=this.element,this.popup&&this.popup.destroy(),r=this.popup=e(l).appendTo(o).eq(0).on("click",$+s.button,function(t){t.preventDefault(),r.close();var n=e(t.currentTarget).index();a[n].click()}).kendoWindow({modal:!0,autoFocus:!1,resizable:!1,draggable:!1,title:t.title,visible:!1,deactivate:function(){this.destroy(),o.focus()}}).getKendoWindow(),r.center().open(),r.element.find(".k-primary").focus()},_createPopupEditor:function(t){var n,i,o=this,r={},a=this.options.messages,s=f.styles,l=s.popup,c=g.format('<div {0}="{1}" class="{2} {3}"><div class="{4}">',g.attr("uid"),t.uid,l.form,l.editForm,l.formContainer),u=this.fields(d.desktop,t),h=[];return c+=this._buildEditTemplate(t,u,h),c+='<div class="'+l.buttonsContainer+'">',c+=this.createButton({name:"update",text:a.save,className:f.styles.primary}),c+=this.createButton({name:"cancel",text:a.cancel}),o.options.editable.destroy!==!1&&(c+=this.createButton({name:"delete",text:a.destroy})),c+="</div></div></div>",n=this.container=e(c).appendTo(this.element).eq(0).kendoWindow(I({modal:!0,resizable:!1,draggable:!0,title:a.editor.editorTitle,visible:!1,close:function(e){e.userTriggered&&o.trigger("cancel",{container:n,model:t})&&e.preventDefault()}},r)),i=n.kendoEditable({fields:h,model:t,clearContainer:!1,validateOnBlur:!0,target:o.options.target}).data("kendoEditable"),g.cycleForm(n),this.trigger("edit",{container:n,model:t})?o.trigger("cancel",{container:n,model:t}):(n.data("kendoWindow").center().open(),n.on(N+B,$+s.buttonCancel,function(e){e.preventDefault(),e.stopPropagation(),o.trigger("cancel",{container:n,model:t})}),n.on(N+B,$+s.buttonSave,function(e){var i,r,a,s,l;for(e.preventDefault(),e.stopPropagation(),i=o.fields(d.desktop,t),r={},s=0,l=i.length;s<l;s++)a=i[s].field,r[a]=t.get(a);o.trigger("save",{container:n,model:t,updateInfo:r})}),n.on(N+B,$+s.buttonDelete,function(e){e.preventDefault(),e.stopPropagation(),o.trigger("remove",{container:n,model:t})})),i}}),p=k.extend({init:function(e,t){k.fn.init.call(this,e,t),this.wrapper=this.element,this.model=this.options.model,this.resourcesField=this.options.resourcesField,this.createButton=this.options.createButton,this._initContainer(),this._attachHandlers()},events:["save"],open:function(){this.window.center().open()},close:function(){this.window.bind("deactivate",E(this.destroy,this)).close()},destroy:function(){this._dettachHandlers(),this.grid.destroy(),this.grid=null,this.window.destroy(),this.window=null,k.fn.destroy.call(this),g.destroy(this.wrapper),this.element=this.wrapper=null},_attachHandlers:function(){var t=f.styles,n=this.grid,i=this._cancelProxy=E(this._cancel,this);this.container.on(N+B,$+t.buttonCancel,this._cancelProxy),this._saveProxy=E(this._save,this),this.container.on(N+B,$+t.buttonSave,this._saveProxy),this.window.bind("close",function(e){e.userTriggered&&i(e)}),n.wrapper.on(N+B,"input[type='checkbox']",function(){var t=e(this),i=e(t).closest("tr"),o=n.dataSource.getByUid(i.attr(g.attr("uid"))),r=e(t).is(":checked")?1:"";o.set("value",r)})},_dettachHandlers:function(){this._cancelProxy=null,this._saveProxy=null,this.container.off(B),this.grid.wrapper.off()},_cancel:function(e){e.preventDefault(),this.close()},_save:function(e){e.preventDefault(),this._updateModel(),this.wrapper.is($+f.styles.popup.resourcesField)||this.trigger("save",{container:this.wrapper,model:this.model}),this.close()},_initContainer:function(){var t=this,n=f.styles.popup,i=g.format('<div class="{0} {1}"><div class="{2} {3}"/></div>"',n.form,n.editForm,n.formContainer,n.resourcesFormContainer);i=e(i),this.container=i.find($+n.resourcesFormContainer),this.window=i.kendoWindow({modal:!0,resizable:!1,draggable:!0,visible:!1,title:this.options.messages.resourcesEditorTitle,open:function(){t.grid.resize(!0)}}).data("kendoWindow"),this._resourceGrid(),this._createButtons()},_resourceGrid:function(){var t=this,n=this.options.messages,i=e('<div id="resources-grid"/>').appendTo(this.container);this.grid=new g.ui.Grid(i,{columns:[{field:"name",title:n.resourcesHeader,template:"<label><input type='checkbox' value='#=name#'# if (value > 0 && value !== null) {#checked='checked'# } #/>#=name#</labe>"},{field:"value",title:n.unitsHeader,template:function(e){var t=e.format,n=null!==e.value?e.value:"";return t?g.toString(n,t):n}}],height:280,sortable:!0,editable:!0,filterable:!0,dataSource:{data:t.options.data,schema:{model:{id:"id",fields:{id:{from:"id"},name:{from:"name",type:"string",editable:!1},value:{from:"value",type:"number",validation:this.options.unitsValidation},format:{from:"format",type:"string"}}}}},save:function(e){var t=!!e.values.value;e.container.parent().find("input[type='checkbox']").prop("checked",t)}})},_createButtons:function(){var e,t,n=this.options.buttons,i='<div class="'+f.styles.popup.buttonsContainer+'">';for(e=0,t=n.length;e<t;e++)i+=this.createButton(n[e]);i+="</div>",this.container.append(i)},_updateModel:function(){var e,t,n,i=[],o=this.grid.dataSource.data();for(t=0,n=o.length;t<n;t++)e=o[t].get("value"),null!==e&&e>0&&i.push(o[t]);this.model[this.resourcesField]=i}}),f=k.extend({init:function(e,t,n){T(t)&&(t={dataSource:t}),s={append:{text:"Add Task",action:"add",className:f.styles.toolbar.appendButton,iconClass:f.styles.toolbar.iconPlus},pdf:{text:"Export to PDF",className:f.styles.toolbar.pdfButton,iconClass:f.styles.toolbar.iconPdf}},k.fn.init.call(this,e,t),n&&(this._events=n),this._wrapper(),this._resources(),this.options.views&&this.options.views.length||(this.options.views=["day","week","month"]),this._timeline(),this._toolbar(),this._footer(),this._adjustDimensions(),this._preventRefresh=!0,this.view(this.timeline._selectedViewName),this._preventRefresh=!1,this._dataSource(),this._assignments(),this._dropDowns(),this._list(),this._dependencies(),this._resizable(),this._scrollable(),this._dataBind(),this._attachEvents(),this._createEditor(),g.notify(this)},events:["dataBinding","dataBound","add","edit","remove","cancel","save","change","navigate","moveStart","move","moveEnd","resizeStart","resize","resizeEnd","columnResize"],options:{name:"Gantt",autoBind:!0,navigatable:!1,selectable:!0,editable:!0,resizable:!1,columnResizeHandleWidth:z,columns:[],views:[],dataSource:{},dependencies:{},resources:{},assignments:{},taskTemplate:null,messages:{save:"Save",cancel:"Cancel",destroy:"Delete",deleteTaskConfirmation:Y,deleteDependencyConfirmation:K,deleteTaskWindowTitle:"Delete task",deleteDependencyWindowTitle:"Delete dependency",views:{day:"Day",week:"Week",month:"Month",year:"Year",start:"Start",end:"End"},actions:{append:"Add Task",addChild:"Add Child",insertBefore:"Add Above",insertAfter:"Add Below",pdf:"Export to PDF"},editor:{editorTitle:"Task",resourcesEditorTitle:"Resources",title:"Title",start:"Start",end:"End",percentComplete:"Complete",resources:"Resources",assignButton:"Assign",resourcesHeader:"Resources",unitsHeader:"Units"}},showWorkHours:!0,showWorkDays:!0,toolbar:null,workDayStart:new Date(1980,1,1,8,0,0),workDayEnd:new Date(1980,1,1,17,0,0),workWeekStart:1,workWeekEnd:5,hourSpan:1,snap:!0,height:600,listWidth:"30%",rowHeight:null},select:function(e){var n=this.list;return e?(n.select(e),this.list.element.find("table[role=treegrid]").focus(),t):n.select()},clearSelection:function(){this.list.clearSelection()},destroy:function(){k.fn.destroy.call(this),this.dataSource&&(this.dataSource.unbind("change",this._refreshHandler),this.dataSource.unbind("progress",this._progressHandler),this.dataSource.unbind("error",this._errorHandler)),this.dependencies&&(this.dependencies.unbind("change",this._dependencyRefreshHandler),this.dependencies.unbind("error",this._dependencyErrorHandler)),this.timeline&&(this.timeline.unbind(),this.timeline.destroy()),this.list&&(this.list.unbind(),this.list.destroy()),this.footerDropDown&&this.footerDropDown.destroy(),this.headerDropDown&&this.headerDropDown.destroy(),this._editor&&this._editor.destroy(),this._resizeDraggable&&this._resizeDraggable.destroy(),this.toolbar.off(B),v&&(this._mediaQuery.removeListener(this._mediaQueryHandler),this._mediaQuery=null),e(window).off("resize"+B,this._resizeHandler),e(this.wrapper).off(B),this.toolbar=null,this.footer=null},setOptions:function(t){var n,i=g.deepExtend({},this.options,t),o=this._events;t.views||(n=this.view().name,i.views=e.map(this.options.views,function(e){var t=M(e),i=t?"string"!=typeof e.type?e.title:e.type:e;return n===i?t?e.selected=!0:e={type:i,selected:!0}:t&&(e.selected=!1),e})),t.dataSource||(i.dataSource=this.dataSource),t.dependencies||(i.dependencies=this.dependencies),t.resources||(i.resources=this.resources),t.assignments||(i.assignments=this.assignments),this.destroy(),this.element.empty(),this.options=null,this.init(this.element,i,o),k.fn._setEvents.call(this,i)},_attachEvents:function(){this._resizeHandler=E(this.resize,this,!1),e(window).on("resize"+B,this._resizeHandler)},_wrapper:function(){var e=f.styles,t=[e.icon,e.resizeHandle].join(" "),n=this.options,i=n.height,o=n.width;this.wrapper=this.element.addClass(e.wrapper).append("<div class='"+e.listWrapper+"'><div></div></div>").append("<div class='"+e.splitBarWrapper+"'><div class='"+t+"'></div></div>").append("<div class='"+e.timelineWrapper+"'><div></div></div>"),this.wrapper.find($+e.list).width(n.listWidth),i&&this.wrapper.height(i),o&&this.wrapper.width(o),n.rowHeight&&this.wrapper.addClass(e.rowHeight)},_toolbar:function(){var t,n,i,o=this,r=f.styles,a=$+r.toolbar.views+" > li",s=$+r.toolbar.pdfButton,l=$+r.buttonToggle,c=$+r.gridContent,d=e($+r.list),u=e($+r.timeline),h=r.hovered,p=this.options.toolbar,_=e("<div class='"+r.toolbar.actions+"'>"),b=function(e){e.matches?d.css({display:"none","max-width":0}):(d.css({display:"inline-block",width:"30%","max-width":"none"}),u.css("display","inline-block"),o.refresh(),u.find(c).scrollTop(o.scrollTop)),o._resize()};A(p)||(p=typeof p===V?p:this._actions(p),p=E(g.template(p),this)),i=e(Q({styles:r.toolbar})),n=e(ee({ns:g.ns,views:this.timeline.views,styles:r.toolbar})),_.append(p({})),t=e("<div class='"+r.toolbar.headerWrapper+"'>").append(i).append(n).append(_),n.find("li").length>1&&n.prepend(Z({styles:r.toolbar})),this.wrapper.prepend(t),this.toolbar=t,v&&(this._mediaQueryHandler=E(b,this),this._mediaQuery=window.matchMedia("(max-width: 480px)"),this._mediaQuery.addListener(this._mediaQueryHandler)),t.on(N+B,a,function(t){var i,a,s;t.preventDefault(),i=o.list,a=e(this).attr(g.attr("name")),s=n.find($+r.toolbar.currentView),s.is(":visible")&&s.parent().toggleClass(r.toolbar.expanded),i.editable&&i.editable.trigger("validate")||(o.trigger("navigate",{view:a})||o.view(a),o.toolbar.find($+r.focused).removeClass(r.focused))}).on("keydown"+B,a,function(t){var n=e($+r.toolbar.views).children(":not(.k-current-view)"),i=n.index(o._focusedView&&o._focusedView[0]||n.closest($+r.selected)[0]);t.keyCode===m.RIGHT?(e(o.toolbar.find($+r.focused)).removeClass(r.focused),o._focusedView=e(i+1===n.length?n[0]:n[i+1]),o._focusedView.focus().addClass(r.focused),t.preventDefault()):t.keyCode===m.LEFT?(e(o.toolbar.find($+r.focused)).removeClass(r.focused),o._focusedView=e(0===i?n[n.length-1]:n[i-1]),o._focusedView.focus().addClass(r.focused),t.preventDefault()):t.keyCode===m.DOWN&&o.toolbar.find($+r.toolbar.currentView).parent().hasClass(r.toolbar.expanded)?(e(o.toolbar.find($+r.focused)).removeClass(r.focused),o._focusedView=e(i+1===n.length?n[0]:n[i+1]),o._focusedView.focus().addClass(r.focused),t.preventDefault()):t.keyCode===m.UP&&o.toolbar.find($+r.toolbar.currentView).parent().hasClass(r.toolbar.expanded)?(e(o.toolbar.find($+r.focused)).removeClass(r.focused),o._focusedView=e(0===i?n[n.length-1]:n[i-1]),o._focusedView.focus().addClass(r.focused),t.preventDefault()):t.keyCode!==m.ENTER&&t.keyCode!==m.SPACEBAR||!o._focusedView?(t.keyCode===m.SPACEBAR||t.keyCode===m.ENTER||t.keyCode===m.DOWN&&t.altKey)&&o.toolbar.find($+r.toolbar.currentView+" > a").hasClass(r.focused)?(o.toolbar.find($+r.toolbar.currentView).parent().toggleClass(r.toolbar.expanded),t.preventDefault()):t.keyCode===m.ESC&&o.toolbar.find($+r.toolbar.currentView).parent().hasClass(r.toolbar.expanded)?(o.toolbar.find($+r.toolbar.currentView).parent().toggleClass(r.toolbar.expanded).blur(),o._focusedView=null,o.toolbar.find($+r.toolbar.currentView+" > a").addClass(r.focused).focus(),t.preventDefault()):t.keyCode>=49&&t.keyCode<=57&&o.view(o.timeline._viewByIndex(t.keyCode-49)):(o.view(o._focusedView.text().toLowerCase()),t.preventDefault())}).on(N+B,s,function(e){e.preventDefault(),o.saveAsPDF()}).on(N+B,l,function(e){e.preventDefault(),d.is(":visible")?(d.css({display:"none",width:"0"}),u.css({display:"inline-block",width:"100%"}),o.refresh(),u.find(c).scrollTop(o.scrollTop)):(u.css({display:"none",width:0}),d.css({display:"inline-block",width:"100%","max-width":"none"}).find(c).scrollTop(o.scrollTop)),o._resize()}),this.wrapper.on("focusout"+B,function(t){e(t.relatedTarget).closest($+r.toolbar.toolbar).length||o.toolbar.find($+r.focused).removeClass(r.focused),e(t.relatedTarget).closest($+r.toolbar.views).length||o.toolbar.find($+r.toolbar.views).removeClass(r.toolbar.expanded)}).find($+r.toolbar.toolbar+" li").hover(function(){e(this).addClass(h)},function(){e(this).removeClass(h)})},_actions:function(){var e,t,n=this.options,i=n.editable,o=n.toolbar,r="";if(!T(o)){if(!i||i.create===!1)return r;o=["append"]}for(e=0,t=o.length;e<t;e++)r+=this._createButton(o[e]);return r},_footer:function(){var t,n,i,o,r,a=this.options.editable;a&&a.create!==!1&&(t=f.styles.toolbar,n=this.options.messages.actions,i=e(g.template(X)(I(!0,{styles:t},s.append,{text:n.append}))),o=e("<div class='"+t.actions+"'>").append(i),r=e("<div class='"+t.footerWrapper+"'>").append(o),this.wrapper.append(r),this.footer=r)},_createButton:function(e){var t=e.template||X,n=this.options.messages.actions,i=typeof e===V?e:e.name||e.text,o=s[i]?s[i].className:"k-gantt-"+(i||"").replace(/\s/g,""),r={iconClass:"",action:"",text:i,className:o,styles:f.styles.toolbar};if(!(i||M(e)&&e.template))throw Error("Custom commands should have name specified");return r=I(!0,r,s[i],{text:n[i]}),M(e)&&(e.className&&D(r.className,e.className.split(" "))<0&&(e.className+=" "+r.className),r=I(!0,r,e)),g.template(t)(r)},_adjustDimensions:function(){var e=this.element,t=f.styles,n=$+t.list,i=$+t.timeline,o=$+t.splitBar,r=P(this.toolbar),a=this.footer?P(this.footer):0,s=e.height(),l=e.width(),c=R(e.find(o)),d=R(e.find(n));e.children([n,i,o].join(",")).height(s-(r+a)).end().children(i).width(l-(c+d)),l<d+c&&e.find(n).width(l-c)},_scrollTo:function(e){var t,i,o=this.timeline.view(),r=this.list,a=g.attr("uid"),s="string"==typeof e?e:e.closest("tr"+n()).attr(a),l=function(){0!==i.length&&t()};o.content.is(":visible")?(i=o.content.find(n(s)),t=function(){o._scrollTo(i)}):(i=r.content.find(n(s)),t=function(){i.get(0).scrollIntoView()}),l()},_dropDowns:function(){var e=this,t=$+f.styles.toolbar.actions,n=this.options.messages.actions,i=this.timeline,o=this.options.editable,r=function(t){var n,o=t.type,r=e.dataSource,a=r._createNewModel(),s=e.dataItem(e.select()),l=r.taskParent(s),c=i.view()._timeSlots()[0],d="add"===o?s:l,u=e.list.editable;u&&u.trigger("validate")||(a.set("title","New task"),d?(a.set("parentId",d.get("id")),a.set("start",d.get("start")),a.set("end",d.get("end"))):(a.set("start",c.start),a.set("end",c.end)),"add"!==o&&(n=s.get("orderId"),n="insert-before"===o?n:n+1),e._createTask(a,n))};o&&o.create!==!1&&(this.footerDropDown=new re(this.footer.children(t).eq(0),{messages:{actions:n},direction:"up",animation:{open:{effects:"slideIn:up"}},navigatable:e.options.navigatable}),this.headerDropDown=new re(this.toolbar.children(t).eq(0),{messages:{actions:n},navigatable:e.options.navigatable}),this.footerDropDown.bind("command",r),this.headerDropDown.bind("command",r))},_list:function(){var e,t,n=this,i=n.options.navigatable,o=f.styles,a=this.wrapper.find($+o.list),s=a.find("> div"),l=this.wrapper.find($+o.toolbar.actions+" > button"),c={columns:this.options.columns||[],dataSource:this.dataSource,selectable:this.options.selectable,editable:this.options.editable,resizable:this.options.resizable,columnResizeHandleWidth:this.options.columnResizeHandleWidth,listWidth:R(a),resourcesField:this.resources.field,rowHeight:this.options.rowHeight},d=c.columns,u=function(){i&&(n._current(n._cachedCurrent),r(n.list.content.find("table"),!0)),delete n._cachedCurrent};for(t=0;t<d.length;t++)e=d[t],e.field===this.resources.field&&"function"!=typeof e.editor&&(e.editor=E(this._createResourceEditor,this));this.list=new g.ui.GanttList(s,c),this.list.bind("render",function(){n._navigatable()},!0).bind("edit",function(e){n._cachedCurrent=e.cell,n.trigger("edit",{task:e.model,container:e.cell})&&e.preventDefault()}).bind("cancel",function(e){n.trigger("cancel",{task:e.model,container:e.cell})&&e.preventDefault(),u()}).bind("update",function(e){n._updateTask(e.task,e.updateInfo),u()}).bind("change",function(){n.trigger("change");var e=n.list.select();e.length?(l.removeAttr("data-action","add"),n.timeline.select("[data-uid='"+e.attr("data-uid")+"']")):(l.attr("data-action","add"),n.timeline.clearSelection())}).bind("columnResize",function(e){n.trigger("columnResize",{column:e.column,oldWidth:e.oldWidth,newWidth:e.newWidth})})},_timeline:function(){var e=this,n=f.styles,o=i(I(!0,{resourcesField:this.resources.field},this.options)),r=this.wrapper.find($+n.timeline+" > div"),a=$+n.toolbar.currentView+" > "+$+n.toolbar.link;this.timeline=new g.ui.GanttTimeline(r,o),this.timeline.bind("navigate",function(t){var i=t.view.replace(/\./g,"\\.").toLowerCase(),o=e.toolbar.find($+n.toolbar.views+" > li").removeClass(n.selected).end().find($+n.toolbar.viewButton+"-"+i).addClass(n.selected).find($+n.toolbar.link).text();e.toolbar.find(a).text(o),e.refresh()}).bind("moveStart",function(n){var i=e.list.editable;return i&&i.trigger("validate")?(n.preventDefault(),t):(e.trigger("moveStart",{task:n.task})&&n.preventDefault(),t)}).bind("move",function(t){var n=t.task,i=t.start,o=new Date(i.getTime()+n.duration());e.trigger("move",{task:n,start:i,end:o})&&t.preventDefault()}).bind("moveEnd",function(t){var n=t.task,i=t.start,o=new Date(i.getTime()+n.duration());e.trigger("moveEnd",{task:n,start:i,end:o})||e._updateTask(e.dataSource.getByUid(n.uid),{start:i,end:o})}).bind("resizeStart",function(n){var i=e.list.editable;return i&&i.trigger("validate")?(n.preventDefault(),t):(e.trigger("resizeStart",{task:n.task})&&n.preventDefault(),t)}).bind("resize",function(t){e.trigger("resize",{task:t.task,start:t.start,end:t.end})&&t.preventDefault()}).bind("resizeEnd",function(t){var n=t.task,i={};t.resizeStart?i.start=t.start:i.end=t.end,e.trigger("resizeEnd",{task:n,start:t.start,end:t.end})||e._updateTask(e.dataSource.getByUid(n.uid),i)}).bind("percentResizeStart",function(t){var n=e.list.editable;n&&n.trigger("validate")&&t.preventDefault()}).bind("percentResizeEnd",function(t){e._updateTask(e.dataSource.getByUid(t.task.uid),{percentComplete:t.percentComplete})}).bind("dependencyDragStart",function(t){var n=e.list.editable;n&&n.trigger("validate")&&t.preventDefault()}).bind("dependencyDragEnd",function(t){var n=e.dependencies._createNewModel({type:t.type,predecessorId:t.predecessor.id,successorId:t.successor.id});e._createDependency(n)}).bind("select",function(t){var n=e.list.editable;n&&n.trigger("validate"),e.select("[data-uid='"+t.uid+"']")}).bind("editTask",function(t){var n=e.list.editable;n&&n.trigger("validate")||e.editTask(t.uid)}).bind("clear",function(){e.clearSelection()}).bind("removeTask",function(t){var n=e.list.editable;n&&n.trigger("validate")||e.removeTask(e.dataSource.getByUid(t.uid))}).bind("removeDependency",function(t){var n=e.list.editable;n&&n.trigger("validate")||e.removeDependency(e.dependencies.getByUid(t.uid))})},_dataSource:function(){var e=this.options,t=e.dataSource;t=T(t)?{data:t}:t,this.dataSource&&this._refreshHandler?this.dataSource.unbind("change",this._refreshHandler).unbind("progress",this._progressHandler).unbind("error",this._errorHandler):(this._refreshHandler=E(this.refresh,this),this._progressHandler=E(this._requestStart,this),this._errorHandler=E(this._error,this)),this.dataSource=g.data.GanttDataSource.create(t).bind("change",this._refreshHandler).bind("progress",this._progressHandler).bind("error",this._errorHandler)},_dependencies:function(){var e=this.options.dependencies||{},t=T(e)?{data:e}:e;this.dependencies&&this._dependencyRefreshHandler?this.dependencies.unbind("change",this._dependencyRefreshHandler).unbind("error",this._dependencyErrorHandler):(this._dependencyRefreshHandler=E(this.refreshDependencies,this),this._dependencyErrorHandler=E(this._error,this)),this.dependencies=g.data.GanttDependencyDataSource.create(t).bind("change",this._dependencyRefreshHandler).bind("error",this._dependencyErrorHandler)},_resources:function(){var e=this.options.resources,t=e.dataSource||{};this.resources={field:"resources",dataTextField:"name",dataColorField:"color",dataFormatField:"format"},I(this.resources,e),this.resources.dataSource=g.data.DataSource.create(t)},_assignments:function(){var e=this.options.assignments,t=e.dataSource||{};this.assignments?this.assignments.dataSource.unbind("change",this._assignmentsRefreshHandler):this._assignmentsRefreshHandler=E(this.refresh,this),this.assignments={dataTaskIdField:"taskId",dataResourceIdField:"resourceId",dataValueField:"value"},I(this.assignments,e),this.assignments.dataSource=g.data.DataSource.create(t),this.assignments.dataSource.bind("change",this._assignmentsRefreshHandler)},_createEditor:function(){var e=this,n=this._editor=new h(this.wrapper,I({},this.options,{target:this,resources:{field:this.resources.field,editor:E(this._createResourceEditor,this)},createButton:E(this._createPopupButton,this)}));n.bind("cancel",function(n){var i=e.dataSource.getByUid(n.model.uid);return e.trigger("cancel",{container:n.container,task:i})?(n.preventDefault(),t):(e.cancelTask(),t)}).bind("edit",function(t){var n=e.dataSource.getByUid(t.model.uid);e.trigger("edit",{container:t.container,task:n})&&t.preventDefault()}).bind("save",function(t){var n=e.dataSource.getByUid(t.model.uid);e.saveTask(n,t.updateInfo)}).bind("remove",function(t){e.removeTask(t.model.uid)}).bind("close",e._onDialogClose)},_onDialogClose:function(){},_createResourceEditor:function(e,t){var n,i=this,o=t instanceof x?t:t.model,r=o.get("id"),a=this.options.messages,s=this.resources.field,l={step:.01},c=this.assignments.dataSource.options.schema.model; +c&&c.fields.Units&&c.fields.Units.validation&&I(!0,l,c.fields.Units.validation),n=this._resourceEditor=new p(e,{resourcesField:s,unitsValidation:l,data:this._wrapResourceData(r),model:o,messages:I({},a.editor),buttons:[{name:"update",text:a.save,className:f.styles.primary},{name:"cancel",text:a.cancel}],createButton:E(this._createPopupButton,this),save:function(e){i._updateAssignments(e.model.get("id"),e.model.get(s))}}),n.open()},_createPopupButton:function(e){var t=e.name||e.text,n={className:f.styles.popup.button+" k-gantt-"+(t||"").replace(/\s/g,""),text:t,attr:""};if(!(t||M(e)&&e.template))throw Error("Custom commands should have name specified");return M(e)&&(e.className&&(e.className+=" "+n.className),n=I(!0,n,e)),g.template(J)(n)},view:function(e){return this.timeline.view(e)},range:function(e){var t=this.dataSource,n=this.view(),i=this.timeline;return e&&(n.options.range={start:e.start,end:e.end},i._render(t.taskTree()),i._renderDependencies(this.dependencies.view())),{start:n.start,end:n.end}},date:function(e){var t=this.view();return e&&(t.options.date=e,t._scrollToDate(e)),t.options.date},dataItem:function(e){var t,n;return e?(t=this.list,n=t.content.find(e),t._modelFromElement(n)):null},setDataSource:function(e){this.options.dataSource=e,this._dataSource(),this.list._setDataSource(this.dataSource),this.options.autoBind&&e.fetch()},setDependenciesDataSource:function(e){this.options.dependencies=e,this._dependencies(),this.options.autoBind&&e.fetch()},items:function(){return this.wrapper.children(".k-task")},_updateAssignments:function(e,t){for(var n,i,o,r,a,s,l,c=this.assignments.dataSource,d=this.assignments.dataTaskIdField,u=this.assignments.dataResourceIdField,h=!1,p=new S(c.view()).filter({field:d,operator:"eq",value:e}).toArray();p.length;){for(n=p[0],r=0,a=t.length;r<a;r++)if(i=t[r],n.get(u)===i.get("id")){o=t[r].get("value"),this._updateAssignment(n,o),t.splice(r,1),h=!0;break}h||this._removeAssignment(n),h=!1,p.shift()}for(s=0,l=t.length;s<l;s++)i=t[s],this._createAssignment(i,e);c.sync()},cancelTask:function(){var e=this._editor,t=e.container;t&&e.close()},editTask:function(e){var t,n="string"==typeof e?this.dataSource.getByUid(e):e;n&&(t=this.dataSource._createNewModel(n.toJSON()),t.uid=n.uid,this.cancelTask(),this._editTask(t))},_editTask:function(e){this._editor.editTask(e)},saveTask:function(e,t){var n=this._editor,i=n.container,o=n.editable;i&&o&&o.end()&&this._updateTask(e,t)},_updateTask:function(e,t){var n=this.resources.field;this.trigger("save",{task:e,values:t})||(this._preventRefresh=!0,this.dataSource.update(e,t),t[n]&&this._updateAssignments(e.get("id"),t[n]),this._syncDataSource())},_updateAssignment:function(e,t){var n=this.assignments.dataValueField;e.set(n,t)},removeTask:function(e){var t=this,n="string"==typeof e?this.dataSource.getByUid(e):e;n&&this._taskConfirm(function(e){e||t._removeTask(n)},n)},_createTask:function(e,n){if(!this.trigger("add",{task:e,dependency:null})){var i=this.dataSource;this._preventRefresh=!0,n===t?i.add(e):i.insert(n,e),this._scrollToUid=e.uid,this._syncDataSource()}},_createDependency:function(e){this.trigger("add",{task:null,dependency:e})||(this._preventDependencyRefresh=!0,this.dependencies.add(e),this._preventDependencyRefresh=!1,this.dependencies.sync())},_createAssignment:function(e,t){var n=this.assignments,i=n.dataSource,o=n.dataTaskIdField,r=n.dataResourceIdField,a=n.dataValueField,s=i._createNewModel();s[o]=t,s[r]=e.get("id"),s[a]=e.get("value"),i.add(s)},removeDependency:function(e){var t=this,n="string"==typeof e?this.dependencies.getByUid(e):e;n&&this._dependencyConfirm(function(e){e||t._removeDependency(n)},n)},_removeTaskDependencies:function(e,t){this._preventDependencyRefresh=!0;for(var n=0,i=t.length;n<i;n++)this.dependencies.remove(t[n]);this._preventDependencyRefresh=!1,this.dependencies.sync()},_removeTaskAssignments:function(e){var t,n,i=this.assignments.dataSource,o=i.view(),r={field:this.assignments.dataTaskIdField,operator:"eq",value:e.get("id")};for(o=new S(o).filter(r).toArray(),this._preventRefresh=!0,t=0,n=o.length;t<n;t++)i.remove(o[t]);this._preventRefresh=!1,i.sync()},_removeTask:function(e){var t=this.dependencies.dependencies(e.id);this.trigger("remove",{task:e,dependencies:t})||(this._removeTaskDependencies(e,t),this._removeTaskAssignments(e),this._preventRefresh=!0,this.dataSource.remove(e)&&this._syncDataSource(),this._preventRefresh=!1)},_removeDependency:function(e){this.trigger("remove",{task:null,dependencies:[e]})||this.dependencies.remove(e)&&this.dependencies.sync()},_removeAssignment:function(e){this.assignments.dataSource.remove(e)},_taskConfirm:function(e,t){var n=this.options.messages;this._confirm(e,{model:t,text:n.deleteTaskConfirmation,title:n.deleteTaskWindowTitle})},_dependencyConfirm:function(e,t){var n=this.options.messages;this._confirm(e,{model:t,text:n.deleteDependencyConfirmation,title:n.deleteDependencyWindowTitle})},_confirm:function(e,t){var n,i,o=this.options.editable;o===!0||o.confirmation!==!1?(n=this.options.messages,i=[{name:"delete",text:n.destroy,className:f.styles.primary,click:function(){e()}},{name:"cancel",text:n.cancel,click:function(){e(!0)}}],this.showDialog(I(!0,{},t,{buttons:i}))):e()},showDialog:function(e){this._editor.showDialog(e)},refresh:function(){var e,t,i,o,r,a;this._preventRefresh||this.list.editable||(this._progress(!1),e=this.dataSource,t=e.taskTree(),i=this._scrollToUid,a=-1,this.current&&(r=this.current.closest("tr").attr(g.attr("uid")),a=this.current.index()),this.trigger("dataBinding")||(0!==this.resources.dataSource.data().length&&this._assignResources(t),this._editor&&this._editor.close(),this.clearSelection(),this.list._render(t),this.timeline._render(t),this.timeline._renderDependencies(this.dependencies.view()),i&&(this._scrollTo(i),this.select(n(i))),(i||r)&&a>=0&&(o=this.list.content.find("tr"+n(i||r)+" > td:eq("+a+")"),this._current(o)),this._scrollToUid=null,this.trigger("dataBound")))},refreshDependencies:function(){this._preventDependencyRefresh||this.trigger("dataBinding")||(this.timeline._renderDependencies(this.dependencies.view()),this.trigger("dataBound"))},_assignResources:function(e){var t,n,i=this.resources,o=this.assignments,r=function(){var e=o.dataSource.view(),t={field:o.dataTaskIdField};return e=new S(e).group(t).toArray()},a=r(),s=function(e,t){var n,o,r=e.get("id");for(g.setter(i.field)(e,new C([])),n=0,o=a.length;n<o;n++)a[n].value===r&&t(e,a[n].items)},l=function(e,t){var n,r,a,s,l,c,d,u;for(n=0,r=t.length;n<r;n++)a=t[n],s=i.dataSource.get(a.get(o.dataResourceIdField)),l=a.get(o.dataValueField),c=a.get(o.dataResourceIdField),d=s.get(i.dataFormatField)||L,u=g.toString(l,d),e[i.field].push(new x({id:c,name:s.get(i.dataTextField),color:s.get(i.dataColorField),value:l,formatedValue:u}))};for(t=0,n=e.length;t<n;t++)s(e[t],l)},_wrapResourceData:function(e){var t,n,i,o=this,r=[],a=this.resources.dataSource.view(),s=this.assignments.dataSource.view(),l=new S(s).filter({field:o.assignments.dataTaskIdField,operator:"eq",value:e}).toArray(),c=function(e){var t=null;return new S(l).filter({field:o.assignments.dataResourceIdField,operator:"eq",value:e}).select(function(e){t+=e.get(o.assignments.dataValueField)}),t};for(n=0,i=a.length;n<i;n++)t=a[n],r.push({id:t.get("id"),name:t.get(o.resources.dataTextField),format:t.get(o.resources.dataFormatField)||L,value:c(t.id)});return r},_syncDataSource:function(){this._preventRefresh=!1,this._requestStart(),this.dataSource.sync()},_requestStart:function(){this._progress(!0)},_error:function(){this._progress(!1)},_progress:function(e){g.ui.progress(this.element,e)},_resizable:function(){var t,n,i,o=this,r=this.wrapper,a=f.styles,s=$+a.gridContent,l=r.find($+a.list),c=r.find($+a.timeline);this._resizeDraggable=r.find($+a.splitBar).height(l.height()).hover(function(){e(this).addClass(a.splitBarHover)},function(){e(this).removeClass(a.splitBarHover)}).end().kendoResizable({orientation:"horizontal",handle:$+a.splitBar,start:function(){t=l.width(),n=c.width(),i=c.find(s).scrollLeft()},resize:function(e){var a=e.x.initialDelta;g.support.isRtl(r)&&(a*=-1),t+a<0||n-a<0||(l.width(t+a),c.width(n-a),c.find(s).scrollLeft(i+a),o.timeline.view()._renderCurrentTime())}}).data("kendoResizable")},_scrollable:function(){var t=this,n=f.styles,i=$+n.gridContent,o=$+n.gridHeaderWrap,r=this.timeline.element.find(o),a=this.timeline.element.find(i),s=this.list.element.find(o),l=this.list.element.find(i);b&&l.css("overflow-y","auto"),a.on("scroll",function(){t.scrollTop=this.scrollTop,r.scrollLeft(this.scrollLeft),l.scrollTop(this.scrollTop)}),l.on("scroll",function(){s.scrollLeft(this.scrollLeft)}).on("DOMMouseScroll"+B+" mousewheel"+B,function(t){var n=a.scrollTop(),i=g.wheelDeltaY(t);i&&(t.preventDefault(),e(t.currentTarget).one("wheel"+B,!1),a.scrollTop(n+-i))})},_navigatable:function(){var i,o=this,a=this.options.navigatable,s=this.options.editable,l=this.list.header.find("table"),c=this.list.content.find("table"),d=f.styles,u=g.support.isRtl(this.wrapper),h=this.timeline.element.find($+d.gridContent),p=l.add(c),v=n(),_={collapse:!1,expand:!0},b=function(e){var t=o.timeline.view()._timeSlots()[0].offsetWidth;h.scrollLeft(h.scrollLeft()+(e?-t:t))},w=function(e){var t=o.timeline.view()._rowHeight;h.scrollTop(h.scrollTop()+(e?-t:t))},k=function(e){var t=o.current.parent("tr"+n()),i=o.current.index(),a=t[e]();0!==o.select().length&&o.clearSelection(),0!==a.length?(o._current(a.children("td:eq("+i+")")),o._scrollTo(o.current)):o.current.is("td")&&"prev"==e?r(l):o.current.is("th")&&"next"==e&&r(c)},y=function(e){var t=o.current[e]();0!==t.length&&(o._current(t),i=o.current.index())},x=function(e){var t=o.dataItem(o.current);t.summary&&t.expanded!==e&&t.set("expanded",e)},C=function(){var e,t,n=o.options.editable;n&&n.destroy!==!1&&!o.list.editable&&(e=o.select(),t=g.attr("uid"),e.length&&o.removeTask(e.attr(t)))};return e(this.wrapper).on("mousedown"+B,"tr"+v+", div"+v+":not("+$+d.line+")",function(t){var i,l=e(t.currentTarget),c=e(t.target).is(":button,a,:input,a>.k-icon,textarea,span.k-icon,span.k-link,.k-input,.k-multiselect-wrap");t.ctrlKey||(a&&(i=l.is("tr")?e(t.target).closest("td"):o.list.content.find("tr"+n(l.attr(g.attr("uid")))+" > td:first"),o._current(i)),!a&&!s||c||(o._focusTimeout=setTimeout(function(){r(o.list.content.find("table"),!0)},2)))}).on("keydown"+B,function(n){var i,o=n.keyCode,r=this,a=e(r._getToolbarItems()),s=a.index(r.toolbar.find($+d.focused)[0]);if(s===-1&&e(n.target).closest($+d.toolbar.views).length&&(s=a.index(r.toolbar.find(".k-gantt-views > .k-state-selected:visible > a, .k-current-view:visible > a")[0])),i=n.shiftKey?a[s-1]:a[s+1],o===m.F10)r.toolbar.find(".k-button:visible:first").addClass(d.focused).focus(),n.preventDefault();else if(o==m.TAB&&e(n.target).closest($+d.toolbar.toolbar).length){if(r.toolbar.find($+d.focused).removeClass(d.focused).blur(),i)return e(i).addClass(d.focused).focus(),n.preventDefault(),t;this.list.element.is(":visible")?this.list.element.find("table[role=treegrid]").focus():this.element.find($+d.tasks)[0].focus(),n.preventDefault()}}.bind(this)),a!==!0?(c.on("keydown"+B,function(e){e.keyCode==m.DELETE&&C()}),t):(p.on("focus"+B,function(){var t=this===c.get(0)?"td":"th",n=o.select(),r=o.current||e(n.length?n:this).find(t+":eq("+(i||0)+")");o._current(r),e(o.toolbar.find($+d.focused)).removeClass(d.focused),e(o.toolbar.find($+d.toolbar.currentView)).parent().removeClass(d.toolbar.expanded)}).on("blur"+B,function(){o._current(),this==l&&e(this).attr(H,-1)}).on("keydown"+B,function(t){var n,i=t.keyCode;if(o.current)switch(n=o.current.is("td"),i){case m.RIGHT:t.preventDefault(),t.altKey?b():t.ctrlKey?x(u?_.collapse:_.expand):y(u?"prev":"next");break;case m.LEFT:t.preventDefault(),t.altKey?b(!0):t.ctrlKey?x(u?_.expand:_.collapse):y(u?"next":"prev");break;case m.UP:t.preventDefault(),t.altKey?w(!0):k("prev");break;case m.DOWN:t.preventDefault(),t.altKey?w():k("next");break;case m.SPACEBAR:t.preventDefault(),n&&o.select(o.current.closest("tr"));break;case m.ENTER:t.preventDefault(),n?o.options.editable&&o.options.editable.update!==!1&&(o._cachedCurrent=o.current,o.list._startEditHandler(o.current),e(this).one("keyup",function(e){e.stopPropagation()})):o.current.children("a.k-link").click();break;case m.ESC:break;case m.DELETE:n&&C();break;default:i>=49&&i<=57&&"input"!==t.target.tagName.toLowerCase()&&o.view(o.timeline._viewByIndex(i-49))}}),t)},_getToolbarItems:function(){return this.toolbar.find(".k-gantt-toggle:visible").toArray().concat(this.toolbar.find(".k-gantt-actions > .k-button:visible").toArray(),this.toolbar.find(".k-gantt-views > .k-state-selected:visible > a, .k-current-view:visible > a").toArray())},_current:function(t){var n,i=f.styles;this.current&&this.current.length&&this.current.removeClass(i.focused).removeAttr("id"),t&&t.length?(this.current=t.addClass(i.focused).attr("id",j),n=e(g._activeElement()),n.is("table")&&this.wrapper.find(n).length>0&&n.removeAttr(U).attr(U,j)):this.current=null},_dataBind:function(){var t,n=this;n.options.autoBind&&(this._preventRefresh=!0,this._preventDependencyRefresh=!0,t=e.map([this.dataSource,this.dependencies,this.resources.dataSource,this.assignments.dataSource],function(e){return e.fetch()}),e.when.apply(null,t).done(function(){n._preventRefresh=!1,n._preventDependencyRefresh=!1,n.refresh()}))},_resize:function(){this._adjustDimensions(),this.timeline.view()._adjustHeight(),this.timeline.view()._renderCurrentTime(),this.list._adjustHeight()}}),g.PDFMixin&&(g.PDFMixin.extend(f.fn),f.fn._drawPDF=function(){var e=f.styles,t="."+e.list,n=this.wrapper.find(t).width(),i=this.wrapper.clone();return i.find(t).css("width",n),this._drawPDFShadow({content:i},{avoidLinks:this.options.pdf.avoidLinks})}),g.ui.plugin(f),I(!0,f,{styles:oe})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.timeline.min",["kendo.fx.min","kendo.data.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){function n(e){return"k-"+e}function i(e){var t,n,i=e.css("transform");return"none"!=i?(n=i.match(/-?[\d\.]+/g),t=n[4],t/e.width()*100):0}function o(e,t){return e.offset().left-t.offset().left+e.width()/2}function r(e,t,n){e.css(t,n)}var a=window.kendo,s=a.ui,l=s.Widget,c=a.data.DataSource,d=a.effects.Transition,u=e.proxy,h=-1,p=0,f=1,g="vertical",m="transitionEnd",v=3,_="timeline-event",b="k-timeline-flag-wrap",w="k-timeline-track-item",k="k-timeline-scrollable-wrap",y='# var titleField = data.titleField, subtitleField = data.subtitleField, descriptionField = data.descriptionField, imagesField = data.imagesField, actionsField = data.actionsField, data = data.data; #<div class="k-card-header"># if(data[titleField]) { #<h5 class="k-card-title">#= data[titleField] #</h5># }if(data[subtitleField]) { #<h6 class="k-card-subtitle">#= data[subtitleField] #</h6># } #</div><div class="k-card-body"><div class="k-card-description"># if(data[descriptionField]) { #<p>#= data[descriptionField] #</p># }if(data[imagesField] && data[imagesField].length > 0) { #<img src="#= data[imagesField][0].src #" class="k-card-image" /># } #</div></div># if(data[actionsField] && data[actionsField].length > 0) { #<div class="k-card-actions"># for (var i = 0; i < data[actionsField].length; i++) { #<a class="k-button k-flat k-primary" href="#= data[actionsField][i].url ? data[actionsField][i].url : "\\#" #">#= data[actionsField][i].text #</a># } #</div># } #',x='# var titleField = data.titleField, subtitleField = data.subtitleField, descriptionField = data.descriptionField, imagesField = data.imagesField, actionsField = data.actionsField, data = data.data; #<div class="k-card-header"><h5 class="k-card-title"># if(data[titleField]) { #<span class="k-event-title">#= data[titleField] #</span># } #<span class="k-event-collapse k-button k-button-icon k-flat"><span class="k-icon k-i-arrow-chevron-right"></span></span></h5># if(data[subtitleField]) { #<h6 class="k-card-subtitle">#= data[subtitleField] #</h6># } #</div><div class="k-card-body"><div class="k-card-description"># if(data[descriptionField]) { #<p>#= data[descriptionField] #</p># } ## if(data[imagesField] && data[imagesField].length > 0) { #<img src="#= data[imagesField][0].src #" class="k-card-image" /># } #</div></div># if(data[actionsField] && data[actionsField].length > 0) { #<div class="k-card-actions"># for (var i = 0; i < data[actionsField].length; i++) { #<a class="k-button k-flat k-primary" href="#= data[actionsField][i].url ? data[actionsField][i].url : "\\#" #">#= data[actionsField][i].text #</a># } #</div># } #',C='<div class="k-timeline-track"><ul class="k-timeline-scrollable-wrap"># var itemTemplate = data.itemTemplate, dateField = data.dateField, dateFormat = data.dateFormat, showDateLabels = data.showDateLabels, data = data.data, year = 0; ## for (var i = 0; i < data.length; i++) {if(!(data[i][dateField] instanceof Date)) {continue;}var currentYear = data[i][dateField].getFullYear();if(year != currentYear) {year = currentYear; #<li class="k-timeline-track-item k-timeline-flag-wrap"><span class="k-timeline-flag">#= year #</span></li># } #<li class="k-timeline-track-item"><div class="k-timeline-date-wrap"># if(showDateLabels) { #<span class="k-timeline-date">#= kendo.toString(data[i][dateField], dateFormat) #</span># } #</div><a class="k-timeline-circle"></a></li># } #</ul></div>',S='# var itemTemplate = data.itemTemplate, dateField = data.dateField, titleField = data.titleField, descriptionField = data.descriptionField, subtitleField = data.subtitleField, imagesField = data.imagesField, actionsField = data.actionsField, alterMode = data.alterMode, collapsibleEvents = data.collapsibleEvents, dateFormat = data.dateFormat, showDateLabels = data.showDateLabels, data = data.data, counter = 0, year = 0, reverse = false; #<ul># for (var i = 0; i < data.length; i++) {if(!(data[i][dateField] instanceof Date)) {continue;}var currentYear = data[i][dateField].getFullYear();if(currentYear != year) {year = currentYear; #<li class="k-timeline-flag-wrap"><span class="k-timeline-flag">#= year #</span></li># } reverse = counter % 2 === 0 && alterMode; #<li class="#= reverse ? \'k-timeline-event k-reverse\' : \'k-timeline-event\' #" data-uid="#: data[i].uid #"># if(showDateLabels) { #<div class="k-timeline-date-wrap"><span class="k-timeline-date">#= kendo.toString(data[i][dateField], dateFormat) #</span></div># } #<a class="k-timeline-circle"></a><div class="#= collapsibleEvents ? \'k-timeline-card k-collapsed\' : \'k-timeline-card\' #"><div class="k-card"><span class="#= reverse ? \'k-timeline-card-callout k-card-callout k-callout-e\' : \'k-timeline-card-callout k-card-callout k-callout-w\' #"></span>#= itemTemplate({titleField: titleField, subtitleField: subtitleField, descriptionField: descriptionField, imagesField: imagesField, actionsField: actionsField, data: data[i]}) #</div></div></li># counter ++;} #</ul>',T='<a class="k-button k-timeline-arrow k-timeline-arrow-left k-state-disabled" title="previous"><span class="k-icon k-i-arrow-60-left"></span></a><a class="k-button k-timeline-arrow k-timeline-arrow-right" title="next"><span class="k-icon k-i-arrow-60-right"></span></a>',D=a.Class.extend({init:function(t){this.cardContainer=e("<div class='k-card' />");var i=e("<div class='k-timeline-card'></div>").append(this.cardContainer);this.element=e("<li class='"+n(_)+"'></li>").append(i),t.append(this.element)},content:function(t,n){var i=e("<span class='k-timeline-card-callout k-card-callout k-callout-n'></span>");this.cardContainer.html(t),this.cardContainer.append(i),this.element.attr("data-uid",n)},position:function(e){this.element.css("transform","translate3d("+this.element.width()*e+"px, 0, 0)")},setPageCallout:function(e,t){var n=this.element,i=n.find(".k-timeline-card-callout");i.css(e,t)},destroy:function(){var e=this;e.cardContainer=null,e.element.remove(),e.element=null}}),A=a.Observable.extend({init:function(t,n){var i,o,r,s=this;a.Observable.fn.init.call(this),this.element=t,i=new a.ui.Movable(s.element),o=new d({axis:"x",movable:i,onEnd:function(){s.trigger(m)}}),r=[],e.extend(s,{duration:n&&n.duration||1,movable:i,transition:o,pages:r,eventTemplate:n.eventTemplate,eventHeight:n.eventHeight,dataFieldMappings:n.dataFieldMappings}),this.bind([m],n)},initPages:function(){var e,t,n=this.pages,i=this.element;for(t=0;t<v;t++)e=new D(i),n.push(e)},repositionPages:function(){var e=this.pages;e[0].position(h),e[1].position(p),e[2].position(f)},setPageContent:function(e,t){var n=typeof this.eventTemplate===Function?this.eventTemplate:a.template(this.eventTemplate),i=this.dataFieldMappings,o=n({data:t,titleField:i.title,subtitleField:i.subtitle,descriptionField:i.description,imagesField:i.images,actionsField:i.actions});e.content(o,t.uid)},updatePage:function(e,t,n){var i=this.pages,o=null===e?i[1]:e?i[i.length-1]:i[0];this.setPageContent(o,t),o.setPageCallout("left",n/o.element.width()*100+"%")},moveTo:function(e){this.movable.moveAxis("x",-e)},transitionTo:function(e,t){this.transition.moveTo({location:e,duration:this.duration,ease:t})},destroy:function(){var e,t=this;for(e=0;e<t.pages.length;e++)t.pages[e].destroy();t.unbind(),t.movable=t.tansition=t.pane=null}}),E=a.ui.Widget.extend({init:function(t,n){var i=this,o=n.orientation||i.options.orientation;l.fn.init.call(this,t,n),this.element.addClass(o===g?"k-timeline k-widget k-timeline-vertical":"k-timeline k-widget k-timeline-horizontal"),o!=g?i._horizontal():i._vertical(),this.element.on("click",".k-card-actions",function(){var t=e(event.target),n=e(event.target).closest(".k-timeline-event").data("uid"),o=i.dataSource.getByUid(n);i.trigger("actionClick",{sender:i,element:t,dataItem:o})}),i.currentEventIndex=0,i._forward=null,i._eventPage=1,i._currentIndex=0,i._firstIndexInView=0,i._initDataFieldMappings(),i.setDataSource(n.dataSource)},_horizontal:function(){var t=this,n=this.element,i=this.options,o=e("<div />"),r=e("<div />"),a=e("<ul />");t._trackWrap=o,t._eventsWrap=r,t._eventsList=a,o.addClass("k-timeline-track-wrap"),r.addClass("k-timeline-events-list"),a.addClass("k-timeline-scrollable-wrap"),i.eventHeight&&a.height(i.eventHeight),o.append(T),r.append(a),o.appendTo(n),r.appendTo(n),e(window).on("resize",u(this,"_resizeHandler")),o.on("click",".k-timeline-track-item:not(.k-timeline-flag-wrap)",u(this,"_setCurrentEvent")),o.on("click",".k-timeline-arrow:not(.k-state-disabled)",u(this,"_navigateToView"))},_vertical:function(){var t=this,n=this.options,i=this.element;n.alternatingMode&&i.addClass("k-timeline-alternating"),n.collapsibleEvents&&(i.addClass("k-timeline-collapsible"),this.element.on("click",".k-card-header",function(){var n=e(this).closest(".k-timeline-card"),i=n.find(".k-card-body"),o=t.dataSource.getByUid(n.closest("li").data("uid"));n.hasClass("k-collapsed")?t.trigger("expand",{sender:t,dataItem:o})||(a.fx(i).expand("vertical").stop().play(),n.toggleClass("k-collapsed")):t.trigger("collapse",{sender:t,dataItem:o})||(a.fx(i).expand("vertical").stop().reverse(),n.toggleClass("k-collapsed"))}))},_renderContentVertical:function(e){var t,n,i,o=this,r=o.options;n=typeof r.eventTemplate===Function?r.eventTemplate:r.eventTemplate?a.template(r.eventTemplate):a.template(x,{useWithBlock:!1}),i=a.template(S,{useWithBlock:!1}),t=i({data:e,dateField:r.dataDateField,titleField:r.dataTitleField,subtitleField:r.dataSubtitleField,descriptionField:r.dataDescriptionField,imagesField:r.dataImagesField,actionsField:r.dataActionsField,itemTemplate:n,alterMode:r.alternatingMode,collapsibleEvents:r.collapsibleEvents,dateFormat:r.dateFormat,showDateLabels:r.showDateLabels}),this.element.html(t),r.eventWidth&&o.element.find(".k-card").width(r.eventWidth)},_renderContentHorizontal:function(t){var n,i,o,r=this,s=r.options,l=r._dataFieldMappings;i=typeof s.eventTemplate===Function?s.eventTemplate:s.eventTemplate?a.template(s.eventTemplate):a.template(y,{useWithBlock:!1}),o=a.template(C,{useWithBlock:!1}),n=o({data:t,itemTemplate:i,dateFormat:s.dateFormat,dateField:s.dataDateField,showDateLabels:s.showDateLabels}),s.initialEventIndex?r._trackWrap.append(e(n).find(".k-timeline-scrollable-wrap").css("transform","translateX(-100%)").parent()):(r._trackWrap.find(".k-timeline-track").length>0&&r._trackWrap.find(".k-timeline-track").empty(),r._trackWrap.append(n)),r.pane&&r.pane.destroy(),r.pane=new A(r._eventsList,{transitionEnd:u(this,"_transitionEnd"),eventTemplate:i,dataFieldMappings:l,eventHeight:s.eventHeight})},_initDataFieldMappings:function(){var e=this,t=e.options;e._dataFieldMappings={title:t.dataTitleField,subtitle:t.dataSubtitleField,date:t.dataDateField,description:t.dataDescriptionField,images:t.dataImagesField,actions:t.dataActionsField}},_transitionEnd:function(){this._forward?this.pane.pages.push(this.pane.pages.shift()):this.pane.pages.unshift(this.pane.pages.pop()),this._forward=null,this.pane.repositionPages(),this.pane.movable.moveAxis("x",0),this._animationInProgress=!1},_setCurrentEvent:function(t){var n=this,i=e(t.currentTarget),o=n.dataSource.view()[i.index("li[class='k-timeline-track-item']")],r=n._forward?n.pane.pages[2].element:n.pane.pages[0].element;n.trigger("change",{eventContainer:r,dataItem:o})||n.open(i)},open:function(t){var n,i=this,r=e(t),a=r.find(".k-timeline-circle"),s=r.index("li[class='k-timeline-track-item']"),l=i.dataSource.view()[s];i.currentEventIndex!==s&&(i._currentIndex=r.index(),n=i._forward=i.currentEventIndex<s,i.currentEventIndex=s,i.pane.updatePage(n,l,o(a,i._trackWrap)),i._forward?setTimeout(function(){i.pane.transition.moveTo({location:-i.pane.pages[2].element.width(),duration:800,ease:d.easeOutExpo})},200):setTimeout(function(){i.pane.transition.moveTo({location:i.pane.pages[0].element.width(),duration:800,ease:d.easeOutExpo})},200),i._repositionEvents())},_navigateToView:function(t){var n=this,i=e(t.currentTarget).hasClass("k-timeline-arrow-right")?1:-1;n.trigger("navigate",{sender:n,action:i>0?"next":"previous"})||n._animationInProgress||(n._animationInProgress=!0,i>0?n.next():n.previous(),n._updateArrows())},_updateArrows:function(){var e=this,t=e.element.find(".k-timeline-arrow");e._validateNavigation(!1)?t.filter(".k-timeline-arrow-left").addClass("k-state-disabled"):t.filter(".k-timeline-arrow-left").removeClass("k-state-disabled"),e._validateNavigation(!0)?t.filter(".k-timeline-arrow-right").addClass("k-state-disabled"):t.filter(".k-timeline-arrow-right").removeClass("k-state-disabled")},_validateNavigation:function(e){var t=this,n=t._end||0;return e?t._firstIndexInView+t.numOfEvents>=t.maxEvents:Math.abs(n)<=1},next:function(){var e=this,t=e.options;e._validateNavigation(!0)||t.orientation==g||(e._forward=!0,e._navigate()),e._updateArrows()},_navigate:function(){var t,n,r,a,s,l=this,c=l._forward,u=i(this._trackWrap.find("."+k)),h=c?-e("."+k).width():e("."+k).width(),p=l._currentIndex,f=l._firstIndexInView;u=c?u-100:u+100,u>=0&&(u=0),l._end=u,a=l._tackItemWidth,s=Math.floor(p/l.numOfEvents),c?1===l.numOfEvents?(t=0===f?1:f,n=this._trackWrap.find("."+w).eq(t).nextAll(":not(."+b+")").first(),l._firstIndexInView=n.index()):(t=f+l.numOfEvents-1,n=this._trackWrap.find("."+w).eq(t).nextAll(":not(."+b+")").first(),l._firstIndexInView=f+l.numOfEvents):1===l.numOfEvents?(t=f,n=this._trackWrap.find("."+w).eq(t).prevAll(":not(."+b+")").first(),l._firstIndexInView=n.index()):(t=f,n=this._trackWrap.find("."+w).eq(t).prevAll(":not(."+b+")").first(),n=n.length>0?n:this._trackWrap.find("."+w+":not(."+b+")").first(),l._firstIndexInView=f-l.numOfEvents<0?0:f-l.numOfEvents),r=l.dataSource.view()[n.index("li[class='k-timeline-track-item']")],this._trackWrap.find("."+k).css("transform","translateX("+u+"%)"),l._currentIndex!=n.index()?(l.currentEventIndex=n.index("li[class='k-timeline-track-item']"),l._currentIndex=n.index(),l.pane.updatePage(l._forward,r,0!==s||c?o(n.find(".k-timeline-circle"),l._trackWrap)+h:n.find(".k-timeline-circle").offset().left+15),setTimeout(function(){l.pane.transition.moveTo(c?{location:-l.pane.pages[2].element.width(),duration:800,ease:d.easeOutExpo}:{location:l.pane.pages[0].element.width(),duration:800,ease:d.easeOutExpo})},200)):this._trackWrap.find("."+k)[0].addEventListener("transitionend",function(){var e,t;1!=l.numOfEvents&&(e=l.pane.pages[1],t=o(n.find(".k-timeline-circle"),l._trackWrap),e.setPageCallout("left",t/e.element.width()*100+"%"))})},previous:function(){var e=this,t=e.options;e._validateNavigation(!1)||t.orientation==g||(e._forward=!1,e._navigate()),e._updateArrows()},expand:function(t){var n=e(t).find(".k-timeline-card"),i=e(t).find(".k-card-body");n.hasClass("k-collapsed")&&(a.fx(i).expand("vertical").stop().play(),n.removeClass("k-collapsed"))},collapse:function(t){var n=e(t).find(".k-timeline-card"),i=e(t).find(".k-card-body");n.hasClass("k-collapsed")||(a.fx(i).expand("vertical").stop().reverse(),n.addClass("k-collapsed"))},items:function(){return this.element.find("li[data-uid]")},_resizeHandler:function(){var e=this;setTimeout(function(){e._redrawEvents(),e.pane.repositionPages()})},redraw:function(){var e=this.options;e.orientation!=g&&(this._redrawEvents(),this.pane.repositionPages())},_redrawEvents:function(){var e,t=this,n=Math.floor(t.element.find(".k-timeline-scrollable-wrap").width()/150);t.element.width()<=480?(t.element.addClass("k-timeline-mobile"),e=100,t.numOfEvents=1,t._tackItemWidth=e,t.element.find("li.k-timeline-track-item").css("flex","1 0 "+e+"%"),t._repositionEvents()):(t.element.removeClass("k-timeline-mobile"),n!=t.numOfEvents&&(t.numOfEvents=n,e=100/n,r(t.element.find("li.k-timeline-track-item"),"flex","1 0 "+e+"%"),t._tackItemWidth=e,t._repositionEvents())),t._updateArrows()},_repositionEvents:function(){var e,n,a,s,l=this,c=l._tackItemWidth,d=null===l._forward?l.pane.pages[1]:l._forward?l.pane.pages[2]:l.pane.pages[0],u=this._trackWrap.find("."+k),h=i(u);if(n=1===l.numOfEvents?l.currentEventIndex*c:l._currentIndex*c,d){if(1===l.numOfEvents)return d.setPageCallout("left","50%"),a=n,r(u,"transform","translateX(-"+a+"%)"),l._firstIndexInView=l._currentIndex,l._updateArrows(),t;n>=Math.abs(h)+100?(a=Math.abs(h)+(n-(Math.abs(h)+100)+c),l._end=-a,r(u,"transform","translateX(-"+a+"%)"),l._firstIndexInView=l._currentIndex-l.numOfEvents+1):n<=Math.abs(h)?(a=n,l._end=-a,r(u,"transform","translateX(-"+a+"%)"),l._firstIndexInView=l._currentIndex):(s=u.find("li.k-timeline-track-item").eq(l._currentIndex).find(".k-timeline-circle"),e=o(s,l._trackWrap),d.setPageCallout("left",e/d.element.width()*100+"%"),l._firstIndexInView=Math.round(Math.abs(h)/c)),this._trackWrap.find("."+k)[0].addEventListener("transitionend",function(){var e,t,n;1!=l.numOfEvents&&(e=l.pane.pages[1],t=l._trackWrap.find("."+w).eq(l._currentIndex),n=o(t.find(".k-timeline-circle"),l._trackWrap),e.setPageCallout("left",n/e.element.width()*100+"%"))})}l._updateArrows()},_initHorizontal:function(){var e=this,t=e._trackWrap.find(".k-timeline-circle").first(),n=e.dataSource.view()[0];e.maxEvents=e._trackWrap.find(".k-timeline-track-item").length,e._currentIndex=1,e.pane.initPages(),e.pane.repositionPages(),e.pane.updatePage(e._forward,n,o(t,e._trackWrap)),e._updateArrows()},setDataSource:function(e){var n=this,i=n.options;e instanceof c?(this.dataSource=e=new c(e.options),this.dataSource._sort===t&&(this.dataSource._sort=[{field:i.dataDateField,dir:"asc"}])):(this.dataSource=c.create(e),this.dataSource._sort===t&&(this.dataSource._sort=[{field:i.dataDateField,dir:"asc"}])),this.dataSource.fetch(function(){var e=n.dataSource.view();"horizontal"===n.options.orientation?(n._renderContentHorizontal(e),n._redrawEvents(),n._initHorizontal()):n._renderContentVertical(e),n.trigger("dataBound",{sender:n})})},destroy:function(){var e=this.options;l.fn.destroy.call(this),e.orientation!=g&&this.pane.destroy(),this.element.off(),a.destroy(this.element)},options:{name:"Timeline",orientation:"vertical",dateFormat:"MMM d, yyyy",showDateLabels:!0,collapsibleEvents:!1,alternatingMode:!1,dataTitleField:"title",dataDateField:"date", +dataSubtitleField:"subtitle",dataDescriptionField:"description",dataImagesField:"images",dataActionsField:"actions"},events:["collapse","dataBound","expand","actionClick","change","navigate"]});a.ui.plugin(E)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.treelist.min",["kendo.dom.min","kendo.data.min","kendo.columnsorter.min","kendo.editable.min","kendo.window.min","kendo.filtermenu.min","kendo.selectable.min","kendo.resizable.min","kendo.treeview.draganddrop.min","kendo.pager.min"],e)}(function(){return function(e,t){function n(e){return function(t){return t[e]}}function i(e){return function(t){return!e(t)}}function o(){return"none"!==this.style.display}function r(n){var i=kendo.attr("index");return n.sort(function(n,o){var r,a;return n=e(n),o=e(o),r=n.attr(i),a=o.attr(i),r===t&&(r=e(n).index()),a===t&&(a=e(o).index()),r=parseInt(r,10),a=parseInt(a,10),r>a?1:r<a?-1:0})}function a(t){var n=t.find(">tr:not(.k-filter-row)"),i=function(){var t=e(this);return!t.hasClass("k-group-cell")&&!t.hasClass("k-hierarchy-cell")},o=e();return n.length>1&&(o=n.find("th").filter(i).filter(function(){return this.rowSpan>1})),o=o.add(n.last().find("th").filter(i)),r(o)}function s(e){var t,n,i=[],o=e.className;for(t=0,n=e.level;t<n;t++)i.push(Y("span",{className:o}));return i}function l(e){var t,n,i,o=0;for(n=0,i=e.length;n<i;n++)t=e[n].style.width,t&&t.indexOf("%")==-1&&(o+=parseInt(t,10));return o}function c(e,t){var n,i,o,r;e=e[0],t=t[0],e.rows.length&&t.rows.length&&e.rows.length!==t.rows.length&&(n=e.offsetHeight,i=t.offsetHeight,n>i?(o=t.rows[t.rows.length-1],r=n-i):(o=e.rows[e.rows.length-1],r=i-n),o.style.height=o.offsetHeight+r+"px")}function d(t){return e(t).is(":button,a,:input,a>.k-icon,textarea,span.k-select,span.k-icon,span.k-link,.k-input,.k-multiselect-wrap,.k-tool-icon")}function u(e){return e.parentColumn?!!u(e.parentColumn):!!e.locked}function h(e,t,n,i){var o,r,a=!!n.locked;do o=e[t],t+=i?1:-1,r=!!o.locked;while(o&&t>-1&&t<e.length&&o!=n&&!o.columns&&r===a);return o}function p(e,t,n,i,o){var r,a,s,l,c;return t.columns?(t=t.columns,t[i?0:t.length-1]):(r=x(t,e),a=r?r.columns:e,s=fe(t,a),0===s&&i&&1!==a.length?s++:s!=a.length-1||i||0===s?(s>0||0===s&&!i&&0!==s)&&(s+=i?-1:1):s--,l=fe(n,a),t=h(a,s,n,l>s),c=fe(t,o),(!t.columns||c&&c!==a.length-1)&&t&&t!=n&&t.columns?p(e,t,n,i,o):null)}function f(e){var t,n=[];for(t=0;t<e.length;t++)e[t].columns?n=n.concat(f(e[t].columns)):n.push(e[t]);return n}function g(e){return pe(e,function(e){return!e.hidden})}function m(e){return v([e]).length>0}function v(e){return pe(e,function(e){var t=!e.hidden;return t&&e.columns&&(t=v(e.columns).length>0),t})}function _(e,t){return he(e,function(e){var n;return m(e)&&!t||(n=!0),e.columns&&(e.columns=_(e.columns,n)),de({hidden:n},e)})}function b(e){var t=S(E(e));return t.concat(S(I(e)))}function w(e,t,n,i){var o=e[n],r=e[i],a=x(o,t);return t=a?a.columns:t,fe(r,t)}function k(t){var n,i,o,r,a,s,l,c=t.closest("table"),d=e().add(t),u=t.closest("tr"),h=c.find("tr"),p=h.index(u);if(p>0){for(n=h.eq(p-1),i=n.find("th").filter(function(){return!e(this).attr("rowspan")}),o=0,r=u.find("th").index(t),a=t.prevAll().filter(function(){return this.colSpan>1}),s=0;s<a.length;s++)o+=a[s].colSpan||1;for(r+=Math.max(o-1,0),o=0,s=0;s<i.length;s++)if(l=i.eq(s),o+=l.attr("data-colspan")?l[0].getAttribute("data-colspan"):1,r>=s&&r<o){d=k(l).add(d);break}}return d}function y(t){var n,i,o,r,a,s,l,c=t.closest("thead"),d=e().add(t),u=t.closest("tr"),h=c.find("tr"),p=h.index(u)+t[0].rowSpan,f=kendo.attr("colspan");if(p<=h.length-1){for(n=u.next(),i=t.prevAll(),i=i.filter(function(){return!this.rowSpan||1===this.rowSpan}),r=0,o=0;o<i.length;o++)r+=parseInt(i.eq(o).attr(f),10)||1;for(a=n.find("th"),s=parseInt(t.attr(f),10)||1,o=0;o<s;)n=a.eq(o+r),d=d.add(y(n)),l=parseInt(n.attr(f),10),l>1&&(s-=l-1),o++}return d}function x(e,t){var n=[];return C(e,t,n),n[n.length-1]}function C(e,t,n){var i,o;for(n=n||[],i=0;i<t.length;i++){if(e===t[i])return!0;if(t[i].columns){if(o=n.length,n.push(t[i]),C(e,t[i].columns,n))return!0;n.splice(o,n.length-o)}}return!1}function S(e){var t,n=[],i=[];for(t=0;t<e.length;t++)n.push(e[t]),e[t].columns&&(i=i.concat(e[t].columns));return i.length&&(n=n.concat(S(i))),n}function T(e,t,n,i){var o,r;for(n=n||0,i=i||{},i[n]=i[n]||0,r=0;r<t.length;r++){if(t[r]==e){o={cell:i[n],row:n};break}if(t[r].columns&&(o=T(e,t[r].columns,n+1,i)))break;i[n]++}return o}function D(t,n,i){var o,r,a,s,l,c,d,u;for(i=i||0,a=n,n=f(n),s={},l=t.find(">tr:not(.k-filter-row)"),c=function(){var t=e(this);return!t.hasClass("k-group-cell")&&!t.hasClass("k-hierarchy-cell")},d=0,u=n.length;d<u;d++)o=T(n[d],a),s[o.row]||(s[o.row]=l.eq(o.row).find(".k-header").filter(c)),r=s[o.row].eq(o.cell),r.attr(kendo.attr("index"),i+d);return n.length}function A(e){var t,n,i=1,o=0;for(t=0;t<e.length;t++)e[t].columns&&(n=A(e[t].columns),n>o&&(o=n));return i+o}function E(e){return pe(e,n("locked"))}function I(e){return pe(e,i(n("locked")))}function M(e,t){var n=e.find("tr"),i=n.length;n.each(function(e){var n,o=this.cells;for(n=0;n<o.length;n++)o[n].colSpan<=1&&o[n].attributes.rowspan&&(t.children[e].children[n].attr.rowSpan=i-e,o[n].rowSpan=i-e)})}function F(t,n){var i,o=t.find("tr"),r=[];for(o.filter(function(t){var n=!e(this).children().length;return n&&r.push(t),n}).remove(),i=r.length-1;i>=0;i--)n.children.splice(r[i],1);M(t,n)}function R(t,n){if(n===!0){t=e(t);var i,o;i=t.parent().scrollTop(),o=t.parent().scrollLeft(),kendo.focusElement(t),t.parent().scrollTop(i).scrollLeft(o)}else e(t).one("focusin",function(e){e.preventDefault()}).focus()}function P(e,t){var n,i=e.offsetHeight,o=t.offsetHeight;i>o?n=i+"px":i<o&&(n=o+"px"),n&&(e.style.height=t.style.height=n)}function z(e,t){return!(!(e&&t&&e.field)||e.selectable||e.command||e.editable&&!e.editable(t))&&(e.field&&t.editable&&t.editable(e.field))}function B(e,t){var n=(e||{}).field||"";return t.dirty&&t.dirtyFields&&t.dirtyFields[n]&&z(e,t)}function L(e){return t===e}function H(e){return"number"==typeof e&&!isNaN(e)}var N,O,V,W,U,q,j,G=kendo.data,$=kendo.dom,Y=$.element,K=$.text,Q=$.html,X=kendo._outerWidth,J=kendo.keys,Z=kendo._outerHeight,ee=kendo.ui,te=ee.DataBoundWidget,ne=G.DataSource,ie=G.ObservableArray,oe=G.Query,re=G.Model,ae=kendo.support.browser,se=kendo.template,le=kendo._activeElement,ce=e.isArray,de=e.extend,ue=e.proxy,he=e.map,pe=e.grep,fe=e.inArray,ge=e.isPlainObject,me=Array.prototype.push,ve="string",_e="change",be="itemChange",we="error",ke="progress",ye=".",xe=".kendoTreeList",Ce="click",Se="mousedown",Te="beforeEdit",De="edit",Ae="page",Ee="pageChange",Ie="save",Me="saveChanges",Fe="expand",Re="collapse",Pe="cellClose",ze="remove",Be="td:not(.k-group-cell):not(.k-hierarchy-cell):visible",Le="dataBinding",He="dataBound",Ne="cancel",Oe="tabIndex",Ve="filterMenuInit",We="filterMenuOpen",Ue="columnHide",qe="columnShow",je="th.k-header",Ge="columnReorder",$e="columnResize",Ye="columnMenuInit",Ke="columnMenuOpen",Qe="columnLock",Xe="columnUnlock",Je="parentId",Ze="dragstart",et="drag",tt="drop",nt="dragend",it="tr:visible",ot="td:visible",rt="th:visible",at="k-grid-norecords",st="tr:not(.k-footer-template):visible",lt=it+" > td:first:visible",ct=st+":last",dt=!1,ut="height",ht="incell",pt="inline",ft="popup",gt="table",mt={wrapper:"k-treelist k-grid k-widget k-display-block",header:"k-header",button:"k-button",alt:"k-alt",editCell:"k-edit-cell",editRow:"k-grid-edit-row",dirtyCell:"k-dirty-cell",group:"k-treelist-group",gridToolbar:"k-grid-toolbar",gridHeader:"k-grid-header",gridHeaderWrap:"k-grid-header-wrap",gridContent:"k-grid-content",gridContentWrap:"k-grid-content",gridFilter:"k-grid-filter",footerTemplate:"k-footer-template",focused:"k-state-focused",loading:"k-i-loading",refresh:"k-i-reload",retry:"k-request-retry",selected:"k-state-selected",status:"k-status",link:"k-link",withIcon:"k-with-icon",filterable:"k-filterable",icon:"k-icon",iconFilter:"k-i-filter",iconCollapse:"k-i-collapse",iconExpand:"k-i-expand",iconHidden:"k-i-none",iconPlaceHolder:"k-icon k-i-none",input:"k-input",dropPositions:"k-i-insert-up k-i-insert-down k-i-plus k-i-insert-middle",dropTop:"k-i-insert-up",dropBottom:"k-i-insert-down",dropAdd:"k-i-plus",dropMiddle:"k-i-insert-middle",dropDenied:"k-i-cancel",dragStatus:"k-drag-status",dragClue:"k-drag-clue",dragClueText:"k-clue-text"},vt={create:{imageClass:"k-i-plus",className:"k-grid-add",methodName:"addRow"},createchild:{imageClass:"k-i-plus",className:"k-grid-add",methodName:"addRow"},destroy:{imageClass:"k-i-close",className:"k-grid-delete",methodName:"removeRow"},edit:{imageClass:"k-i-edit",className:"k-grid-edit",methodName:"editRow"},update:{imageClass:"k-i-check",className:"k-primary k-grid-update",methodName:"saveRow"},canceledit:{imageClass:"k-i-cancel",className:"k-grid-cancel",methodName:"_cancelEdit"},cancel:{imageClass:"k-icon k-i-cancel",text:"Cancel changes",className:"k-grid-cancel-changes",methodName:"cancelChanges"},save:{imageClass:"k-icon k-i-check",text:"Save changes",className:"k-grid-save-changes",methodName:"saveChanges"},excel:{imageClass:"k-i-file-excel",className:"k-grid-excel",methodName:"saveAsExcel"},pdf:{imageClass:"k-i-file-pdf",className:"k-grid-pdf",methodName:"saveAsPDF"}},_t=kendo.Class.extend({init:function(e,t){var n=this;n.data=e||[],n.options=de(n.options,t)},options:{defaultParentId:null,idField:"id",parentIdField:Je},childrenMap:function(){var e,t,n,i,o=this,r={},a=o.data.length,s=o.options.idField,l=o.options.parentIdField;if(o._childrenMap)return o._childrenMap;for(i=0;i<a;i++)e=this.data[i],t=e[s],n=e[l],r[t]=r[t]||[],r[n]=r[n]||[],r[n].push(e);return o._childrenMap=r,r},idsMap:function(){var e,t,n=this,i={},o=n.data,r=o.length,a=n.options.idField;if(n._idMap)return n._idMap;for(t=0;t<r;t++)e=o[t],i[e[a]]=e;return n.idsMap=i,i},dataMaps:function(){var e,t,n,i,o=this,r={},a=o.data,s=a.length,l={},c=o.options.idField,d=o.options.parentIdField;if(o._dataMaps)return o._dataMaps;for(i=0;i<s;i++)e=a[i],t=e[c],n=e[d],l[t]=e,r[t]=r[t]||[],r[n]=r[n]||[],r[n].push(e);return o._dataMaps={children:r,ids:l}},rootNodes:function(){var e,t,n=this,i=n.data,o=n.options.defaultParentId,r=i.length,a=[],s=n.options.parentIdField;for(t=0;t<r;t++)e=i[t],e[s]===o&&a.push(e);return a},removeCollapsedSubtreesFromRootNodes:function(e){var t,n,i,o,r;for(e=e||{},t=this,n=t.rootNodes(),i=[],t._childrenMap=e.childrenMap=e.childrenMap||t.childrenMap(),e.maxDepth=e.maxDepth||1/0,r=0;r<n.length;r++)o=t.removeCollapsedSubtrees(n[r],e),i=i.concat(o);return i},removeCollapsedSubtrees:function(e,t){var n,i,o,r,a,s,l,c,d;if(t=t||{},n=this,i=[],a=t.childrenMap||{},s=t.maxDepth||1/0,l=n.options.idField,c=a[e[l]]||[],d=L(e.expanded)?t.expanded:e.expanded,i.push(e),c&&d)for(o=0;o<c.length&&!(i.length>=s);o++)r=n.removeCollapsedSubtrees(c[o],t),i=i.concat(r);return i}}),bt=function(e){this.data=e||[]};bt.prototype=new oe,bt.prototype.constructor=bt,bt.process=function(e,n,i){var o,r,a,s,l,c,d,u,h,p,f,g;return n=n||{},o=new bt(e),r=n.group,a=oe.normalizeGroup(r||[]).concat(oe.normalizeSort(n.sort||[])),s=n.filterCallback,l=n.filter,c=n.skip,d=n.take,a&&i&&(o=o.sort(a,t,t,i)),l&&(o=o.filter(l),s&&(o=s(o)),u=o.toArray().length),a&&!i&&(o=o.sort(a),r&&(e=o.toArray())),n.processFromRootNodes&&(f=new _t(o.toArray(),n),l&&(p=f.childrenMap()),g=f.removeCollapsedSubtreesFromRootNodes({childrenMap:l||a&&a.length?t:n.childrenMap,expanded:n.expanded,maxDepth:c+d||1/0}),h=f.childrenMap(),o=new bt(g)),c!==t&&d!==t&&(o=o.range(c,d)),r&&(o=o.group(r,e)),{total:u,data:o.toArray(),childrenMap:h,filteredChildrenMap:p}},N=re.define({id:"id",parentId:Je,fields:{id:{type:"number"},parentId:{type:"number",nullable:!0}},init:function(e){re.fn.init.call(this,e),this._loaded=!1,this.parentIdField||(this.parentIdField=Je),this.parentId=this.get(this.parentIdField)},accept:function(e){re.fn.accept.call(this,e),this.parentId=this.get(this.parentIdField)},set:function(e,t,n){e==Je&&this.parentIdField!=Je&&(this[this.parentIdField]=t),re.fn.set.call(this,e,t,n),e==this.parentIdField&&(this.parentId=this.get(this.parentIdField))},loaded:function(e){return e===t?this._loaded:(this._loaded=e,t)},shouldSerialize:function(e){return re.fn.shouldSerialize.call(this,e)&&"_loaded"!==e&&"_error"!=e&&"_edit"!=e&&!("parentId"!==this.parentIdField&&"parentId"===e)}}),N.parentIdField=Je,N.define=function(e,n){var i,o;return n===t&&(n=e,e=N),i=n.parentId||Je,n.parentIdField=i,o=re.define(e,n),i&&(o.parentIdField=i),o},O=ne.extend({init:function(e){e=e||{};var t=this;t._dataMaps=t._getDataMaps(),e.schema=de(!0,{},{modelBase:N,model:N},e.schema),ne.fn.init.call(this,e)},_addRange:function(){},_createNewModel:function(e){var t=this,n={},i=e instanceof re,o=this._modelParentIdField();return i&&(n=e),n=ne.fn._createNewModel.call(this,n),i||(e.parentId?e[n.parentIdField]=e.parentId:t._isPageable()&&e[o]&&(e[n.parentIdField]=e[o]),n.accept(e)),n},_shouldWrap:function(){return!0},_push:function(e,t){var n=ne.fn._readData.call(this,e);n||(n=e),this[t](n)},_getData:function(){return this._data||[]},_readData:function(e){var t=this,n=t._isPageable()?t._getData().toJSON():t.data();return e=ne.fn._readData.call(this,e),this._replaceData((n.toJSON?n.toJSON():n).concat(e),n),e instanceof ie?e:n},_replaceData:function(e,t){var n,i=e.length;for(n=0;n<i;n++)t[n]=e[n];t.length=i},_readAggregates:function(e){var t=de(this._aggregateResult,this.reader.aggregates(e));return""in t&&(t[this._defaultParentId()]=t[""],delete t[""]),t},read:function(e){var n=this;return n._isPageable()&&(n._dataMaps={},n._modelOptions().expanded||(n._skip=0,n._page=1,n._collapsedTotal=t)),ne.fn.read.call(n,e)},remove:function(e){this._removeChildData(e),this._removeFromDataMaps(e),ne.fn.remove.call(this,e)},_removeChildData:function(e,t){var n=this,i=n._isPageable(),o=i?this._getData():this.data(),r=i?n._getChildrenMap()||n.childrenMap(o):n._childrenMap(o),a=this._subtree(r,e.id),s=!L(t)&&t,l=this._removeItems(a,s);n._removeFromDataMaps(l)},pushDestroy:function(e){var t,n=this;for(ce(e)||(e=[e]),t=0;t<e.length;t++)n._removeChildData(e[t],!0),n._removeFromDataMaps(e[t]);ne.fn.pushDestroy.call(n,e)},insert:function(e,t){var n=this,i=n._createNewModel(t);return n._insertInDataMaps(i),ne.fn.insert.call(n,e,i)},_filterCallback:function(e){var t,n,i,o=this,r={},a=[],s=e.toArray(),l=o._modelIdField(),c=o._modelParentIdField(),d=o._isPageable(),u=[];for(t=0;t<s.length;t++)if(n=s[t],d){for(u=[],r[n[l]]||(r[n[l]]=!0,u.push(n)),i=o._parentNode(n);i&&!r[i[l]];)r[i[l]]=!0,u.unshift(i),i=o._parentNode(i);u.length&&(a=a.concat(u))}else for(;n&&(r[n[l]]||(r[n[l]]=!0,a.push(n)),!r[n[c]]);)r[n[c]]=!0,n=this.parentNode(n),n&&a.push(n);return new oe(a)},_subtree:function(e,t){var n,i,o=this,r=e[t]||[],a=o._defaultParentId(),s=o._modelIdField();for(n=0,i=r.length;n<i;n++)r[n][s]!==a&&(r=r.concat(o._subtree(e,r[n][s])));return r},_childrenMap:function(e){var t,n,i,o,r={};for(e=this._observeView(e),t=0;t<e.length;t++)n=e[t],i=n.id,o=n.parentId,r[i]=r[i]||[],r[o]=r[o]||[],r[o].push(n);return r},childrenMap:function(e){var t=this._createTreeView(e),n=t.childrenMap();return n},_getChildrenMap:function(){var e=this,t=e._getDataMaps();return t.children},_initIdsMap:function(e){var t=this,n=t._getDataMaps();return L(n.ids)&&(n.ids=t._idsMap(e)),n.ids},_idsMap:function(e){var t=this._createTreeView(e),n=t.idsMap();return n},_getIdsMap:function(){var e=this,t=e._getDataMaps();return t.ids||{}},_getFilteredChildrenMap:function(){var e=this,t=e._getDataMaps();return t.filteredChildren},_setFilteredChildrenMap:function(e){var t=this,n=t._getDataMaps();n.filteredChildren=e},_initDataMaps:function(e){var t=this,n=t._createTreeView(e);return t._dataMaps=n.dataMaps()},_initChildrenMapForParent:function(e){var t,n=this,i=n._getData(),o=n._getChildrenMap(),r=n._modelIdField(),a=n._modelParentIdField(),s=(e||{})[r];if(o&&e)for(o[s]=[],t=0;t<i.length;t++)i[t][a]===s&&o[s].push(i[t])},_getDataMaps:function(){var e=this;return e._dataMaps=e._dataMaps||{}},_createTreeView:function(e,t){var n=new _t(e,de(t,this._defaultTreeModelOptions()));return n},_defaultTreeModelOptions:function(){var e=this,t=e._modelOptions();return{defaultParentId:e._defaultParentId(),idField:e._modelIdField(),parentIdField:e._modelParentIdField(),expanded:t.expanded}},_defaultDataItemType:function(){return this.reader.model||kendo.data.ObservableObject},_calculateAggregates:function(e,t){var n,i,o,r,a,s,l,c,d,u,h,p,f,g;if(t=t||{},n=this,i={},s=t.filter,l=t.skip,c=t.take,d=L(l)||L(c)?1/0:l+c,u=n._isPageable(),h=t.filteredChildrenMap,p=t.childrenMap,u){if(L(t.aggregate))return i;f=h?h:p?p:n.childrenMap(n._getData())}for(!u&&s&&(e=oe.process(e,{filter:s,filterCallback:ue(this._filterCallback,this)}).data),g=u?f:n._childrenMap(e),i[this._defaultParentId()]=new oe(this._subtree(g,this._defaultParentId())).aggregate(t.aggregate),a=0;a<e.length&&!(a>=d);a++)o=e[a],r=this._subtree(g,o.id),i[o.id]=new oe(r).aggregate(t.aggregate);return i},_queryProcess:function(e,t){var n,i,o,r,a,s,l=this,c={};if(t=t||{},t.filterCallback=ue(this._filterCallback,this),l._isPageable())return l._processPageableQuery(e,t);for(n=this._defaultParentId(),c=oe.process(e,t),i=this._childrenMap(c.data),e=i[n]||[],r=0;r<e.length;r++)a=e[r],a.id!==n&&(s=i[a.id],o=!(!s||!s.length),a.loaded()||a.loaded(o||!a.hasChildren),(a.loaded()||a.hasChildren!==!0)&&(a.hasChildren=o),o&&(e=e.slice(0,r+1).concat(s,e.slice(r+1))));return c.data=e,c},_processPageableQuery:function(e,t){var n,i,o=this,r=o._getDataMaps();return o._getData()===e&&r.children&&r.ids||(r=o._initDataMaps(o._getData())),t.childrenMap=r.children||{},t.idsMap=r.ids||{},n=o._processTreeQuery(e,t),o._replaceWithObservedData(n.data,e),o._processDataItemsState(n.data,n.childrenMap),o._replaceItemsInDataMaps(n.data),n.dataToAggregate=o._dataToAggregate(n.data,t),t.filter&&(i=n.filteredChildrenMap,o._replaceInMapWithObservedData(i,e),o._setFilteredChildrenMap(i),t.filteredChildrenMap=i),n},_dataToAggregate:function(e){var t=this,n=e[0]||{},i=t._parentNodes(n),o=i.concat(e);return o},_replaceItemsInDataMaps:function(e){var n,i,o,r,a=this,s=ce(e)?e:[e],l=a._defaultDataItemType(),c=a._defaultParentId(),d=a._modelIdField(),u=a._modelParentIdField(),h=a._getDataMaps();for(r=0;r<s.length;r++)n=s[r],n instanceof l&&(a._insertInIdsMap(n),i=a._parentNodes(n),o=i&&i.length?i[i.length-1]:t,n[u]===c?a._replaceInMap(h.children,c,n,l):o&&a._replaceInMap(h.children,o[d],n,l))},_replaceInMap:function(e,t,n,i){var o,r,a=this._modelIdField();e[t]=e[t]||[],i=i||this._defaultDataItemType(),o=e[t].filter(function(e){return n[a]===e[a]})[0],r=o?e[t].indexOf(o):-1,r===-1||o instanceof i||(e[t][r]=n)},_replaceWithObservedData:function(e,t){var n,i,o,r,a,s,l=this,c=l._getDataMaps().ids||{},d=l._modelIdField(),u=l._defaultDataItemType();for(s=0;s<e.length;s++)n=e[s],i=n[d],n instanceof u||(c[i]instanceof u?e[s]=c[i]:(o=l._getById(i),r=t.indexOf(o),o&&r!==-1&&(a=t.at(r),e[s]=a)))},_replaceInMapWithObservedData:function(e,t){var n,i=this;for(n in e)i._replaceWithObservedData(e[n],t)},_insertInDataMaps:function(e){var t=this;t._isPageable()&&(t._insertInIdsMap(e),t._insertInChildrenMap(e))},_insertInIdsMap:function(e){var t=this,n=t._getIdsMap(),i=t._modelIdField();L(e[i])||(n[e[i]]=e)},_insertInChildrenMap:function(e,t){var n=this,i=n._getChildrenMap()||{},o=n._modelIdField(),r=n._modelParentIdField(),a=e[o],s=e[r];t=t||0,i[a]=i[a]||[],i[s]=i[s]||[],i[s].splice(t,0,e)},_removeFromDataMaps:function(e){var t,n=this;if(e=ce(e)?e:[e],n._isPageable())for(t=0;t<e.length;t++)n._removeFromIdsMap(e[t]),n._removeFromChildrenMap(e[t])},_removeFromIdsMap:function(e){var n=this,i=n._getIdsMap(),o=n._modelIdField();L(e[o])||(i[e[o]]=t)},_removeFromChildrenMap:function(e){var t,n=this,i=n._getChildrenMap()||{},o=n._modelParentIdField(),r=e[o];i[r]=i[r]||[],t=n._indexInChildrenMap(e),t!==-1&&i[r].splice(t,1)},_indexInChildrenMap:function(e){var t=this;return t._itemIndexInMap(e,t._getChildrenMap())},_itemIndexInMap:function(e,t){var n,i,o=this,r=t||{},a=o._modelParentIdField(),s=e[a];return r[s]=r[s]||[],n=r[s].filter(function(t){return e.uid===t.uid})[0],i=n?r[s].indexOf(n):-1},_getById:function(e){var t,n=this,i=n._modelIdField(),o=n._getData();for(t=0;t<o.length;t++)if(o[t][i]===e)return o[t]},_isLastItemInView:function(e){var t=this.view();return t.length&&t[t.length-1]===e},_defaultPageableQueryOptions:function(){var e=this,t=e._getDataMaps(),n={skip:e.skip(),take:e.take(),page:e.page(),pageSize:e.pageSize(),sort:e.sort(),filter:e.filter(),group:e.group(),aggregate:e.aggregate(),filterCallback:ue(e._filterCallback,e),childrenMap:t.children,idsMap:t.ids};return n},_isPageable:function(){var e=this.pageSize();return!L(e)&&e>0&&!this.options.serverPaging},_updateTotalForAction:function(e,t){var n=this;ne.fn._updateTotalForAction.call(n,e,t),n._isPageable()&&n._updateCollapsedTotalForAction(e,t)},_updateCollapsedTotalForAction:function(e,n){var i=this,o=parseInt(i._collapsedTotal,10);return H(i._collapsedTotal)?("add"===e?o+=n.length:"remove"===e?o-=n.length:"itemchange"===e||"sync"===e||i.options.serverPaging?"sync"===e&&(o=i._calculateCollapsedTotal()):o=i._calculateCollapsedTotal(),i._collapsedTotal=o,t):(i._calculateCollapsedTotal(),t)},_setFilterTotal:function(e,t){var n=this;ne.fn._setFilterTotal.call(n,e,t),n._setFilterCollapsedTotal(e)},_setFilterCollapsedTotal:function(e){var n=this;n.options.serverFiltering||(e!==t?n._collapsedTotal=e:(n._getFilteredChildrenMap()&&n._calculateCollapsedTotal(),n._setFilteredChildrenMap(t)))},collapsedTotal:function(){var e=this;return L(e._collapsedTotal)?e._calculateCollapsedTotal():e._collapsedTotal},_calculateCollapsedTotal:function(){var e=this,t=e._dataWithoutCollapsedSubtrees();return t.length&&(e._collapsedTotal=t.length),e._collapsedTotal},_dataWithoutCollapsedSubtrees:function(){return this._removeCollapsedSubtrees(this._getData())},_removeCollapsedSubtrees:function(e){var t=this,n=t._createTreeView(e),i=n.removeCollapsedSubtreesFromRootNodes({expanded:t._modelOptions().expanded,childrenMap:t._getChildrenMap()});return i},_processTreeQuery:function(e,t){var n=bt.process(e,de(t,this._defaultTreeModelOptions(),{processFromRootNodes:!0}));return n},_processDataItemsState:function(e,t){var n,i=e.length;for(n=0;n<i;n++)this._processDataItemState(e[n],t)},_processDataItemState:function(e,t){var n,i,o=this._defaultParentId();e.id!==o&&(n=t[e.id]||[],i=!(!n||!n.length),e.loaded&&(e.loaded()||e.loaded(i||!e.hasChildren),(e.loaded()||e.hasChildren!==!0)&&(e.hasChildren=i)))},_queueRequest:function(e,t){t.call(this)},_modelLoaded:function(e){var t=this.get(e);t.loaded(!0),t.hasChildren=this.childNodes(t).length>0},_modelError:function(e,t){this.get(e)._error=t},success:function(e,n){n&&t!==n.id||(this._data=this._observe([])),ne.fn.success.call(this,e,n),this._total=this._data.length},load:function(t){var n="_query",i=this.options.serverSorting||this.options.serverPaging||this.options.serverFiltering||this.options.serverGrouping||this.options.serverAggregates,o=e.Deferred().resolve().promise();if(t.loaded()){if(i)return o}else t.hasChildren&&(n="read",this._removeChildData(t));return this[n]({id:t.id}).done(ue(this._modelLoaded,this,t.id)).fail(ue(this._modelError,this,t.id))},contains:function(e,t){for(var n=this,i=n._modelIdField(),o=n._modelParentIdField(),r=e[i],a=n._isPageable();t;){if(t[o]===r)return!0;t=a?n._parentNode(t):n.parentNode(t)}return!1},_byParentId:function(e,t){var n,i,o=[],r=this.view();if(e===t)return[];for(i=0;i<r.length;i++)n=r.at(i),n.parentId==e&&o.push(n);return o},_defaultParentId:function(){return this.reader.model.fn.defaults[this.reader.model.parentIdField]},_modelOptions:function(){var e=(this.options.schema||{}).model||{};return e},_modelIdField:function(){var e=this._modelOptions();return e.id||"id"},_modelParentIdField:function(){var e=this._modelOptions();return e.parentId||Je},childNodes:function(e){return this._byParentId(e.id,this._defaultParentId())},rootNodes:function(){return this._byParentId(this._defaultParentId())},_rootNode:function(e){return this._parentNodes(e)[0]},_pageableRootNodes:function(e){var t,n,i,o,r,a,s,l;for(e=e||{},t=this,n=t._defaultParentId(),i=t._modelParentIdField(),o=[],r=t._nodesWithoutParentInView(e),l=0;l<r.length;l++)a=r[l],a[i]===n?o.push(a):(s=t._rootNode(a),s&&o.indexOf(s)===-1&&o.push(s));return o},parentNode:function(e){return this.get(e.parentId)},_parentNode:function(e){var t=this,n=t._modelParentIdField(),i=t._initIdsMap(t._getData()),o=e[n],r=i[o]||t._getById(o);return r},_parentNodes:function(e){for(var t=this,n=t._parentNode(e),i=[];n;)i.unshift(n),n=t._parentNode(n);return i},_parentNodesNotInView:function(){var e,t,n,i,o,r,a=this,s=a.view(),l=[],c=a._defaultParentId(),d=a._modelIdField(),u=a._modelParentIdField(),h=[];for(r=0;r<s.length;r++)n=s[r],i=n[d],o=n[u],e=a._parentInView(o),e||o===c||(h=a._parentNodes(n),t=h&&h.length?h[h.length-1]:a._getById(o),t&&l.indexOf(t)===-1&&l.push(t));return l},_nodesWithoutParentInView:function(e){var t,n,i,o,r,a,s,l,c,d;for(e=e||{},t=this,n=t.view(),i=e.childrenMap||t.childrenMap(t._getData()),o=t._modelIdField(),r=t._modelParentIdField(),l=[],c=[],d=0;d<n.length;d++)a=n[d],l=i[a[o]],s=t._parentInView(a[r]),s||c.push(a);return c},_parentInView:function(e){var t,n=this.view();for(t=0;t<n.length;t++)if(n[t].id===e)return n[t]},level:function(e){var t=-1;e instanceof N||(e=this.get(e));do e=this.parentNode(e),t++;while(e);return t},_pageableModelLevel:function(e){var t,n=this;return e&&n._isPageable()?(t=n._parentNodes(e),t.length):0},filter:function(e){var n=ne.fn.filter;return e===t?n.call(this,e):(n.call(this,e),t)},_pageableQueryOptions:function(e){var t=this._getDataMaps();return e.childrenMap=t.children,e.idsMap=t.ids,e},_flatData:function(e,t){return t=!!this._isPageable()||t,ne.fn._flatData.call(this,e,t)},data:function(e){var t=this,n=ne.fn.data.call(t,e);return t._isPageable()&&(t._initDataMaps(t._getData()),t._calculateCollapsedTotal()),n},cancelChanges:function(e){var t=this;ne.fn.cancelChanges.call(t,e),t._restorePageSizeAfterAddChild()},_modelCanceled:function(e){var t=this;t._isPageable()&&t._removeFromDataMaps(e)},_changesCanceled:function(){var e=this;e._isPageable()&&e._initDataMaps(e._getData())},_setAddChildPageSize:function(){var e=this,t={};e._isPageable()&&(e._addChildPageSize=e.pageSize()+1,t=e._defaultPageableQueryOptions(),t.take=e._addChildPageSize,t.pageSize=e._addChildPageSize,e._query(t))},_restorePageSizeAfterAddChild:function(){var e=this,n={};e._isPageable()&&(L(e._addChildPageSize)||(n=e._defaultPageableQueryOptions(),n.take=e._addChildPageSize-1,n.pageSize=e._addChildPageSize-1,e._query(n))),e._addChildPageSize=t},sync:function(){var e=this;return ne.fn.sync.call(e).then(function(){e._restorePageSizeAfterAddChild()})},_syncEnd:function(){var e=this;e._isPageable()&&e._initDataMaps(e._getData())}}),O.create=function(t){return e.isArray(t)?t={data:t}:t instanceof ie&&(t={data:t.toJSON()}),t instanceof O?t:new O(t)},V=ee.Pager.extend({options:{name:"TreeListPager"},totalPages:function(){var e=this,t=e.dataSource;return t&&t._filter?ee.Pager.fn.totalPages.call(e):Math.ceil((e._collapsedTotal()||0)/(e.pageSize()||1))},_createDataSource:function(e){this.dataSource=kendo.data.TreeListDataSource.create(e.dataSource)},_collapsedTotal:function(){var e=this.dataSource;return e?e.collapsedTotal()||0:0}}),W=kendo.Observable.extend({init:function(e,t){kendo.Observable.fn.init.call(this),t=this.options=de(!0,{},this.options,t),this.element=e,this.bind(this.events,t),this.model=this.options.model,this.fields=this._fields(this.options.columns),this._initContainer(),this.createEditable()},events:[],_initContainer:function(){this.wrapper=this.element},createEditable:function(){var e=this.options;this.editable=new ee.Editable(this.wrapper,{fields:this.fields,target:e.target,clearContainer:e.clearContainer,model:this.model,change:e.change})},_isEditable:function(e){return z(e,this.model)},_fields:function(e){var t,n,i,o=[];for(t=0,n=e.length;t<n;t++)i=e[t],this._isEditable(i)&&o.push({field:i.field,format:i.format,editor:i.editor});return o},end:function(){return this.editable.end()},close:function(){this.destroy()},destroy:function(){this.editable.destroy(),this.editable.element.find("["+kendo.attr("container-for")+"]").empty().end().removeAttr(kendo.attr("role")),this.model=this.wrapper=this.element=this.columns=this.editable=null}}),U=W.extend({init:function(e,t){W.fn.init.call(this,e,t),this._attachHandlers(),kendo.cycleForm(this.wrapper),this.open()},events:[Ne,Ie],options:{window:{modal:!0,resizable:!1,draggable:!0,title:"Edit",visible:!1}},_initContainer:function(){var t=this.options,n=[];this.wrapper=e('<div class="k-popup-edit-form"/>').attr(kendo.attr("uid"),this.model.uid).append('<div class="k-edit-form-container"/>'),t.template?(this._appendTemplate(n),this.fields=[]):this._appendFields(n),this._appendButtons(n),new $.Tree(this.wrapper.children()[0]).render(n),this.wrapper.appendTo(t.appendTo),this.window=new ee.Window(this.wrapper,t.window)},_appendTemplate:function(e){var t=this.options.template;typeof t===ve&&(t=kendo.unescape(t)),t=kendo.template(t)(this.model),e.push(Q(t))},_appendFields:function(e){var t,n,i,o=this.options.columns;for(t=0,n=o.length;t<n;t++)i=o[t],i.command||(e.push(Q('<div class="k-edit-label"><label for="'+i.field+'">'+(i.title||i.field||"")+"</label></div>")),e.push(this._isEditable(i)?Q("<div "+kendo.attr("container-for")+'="'+i.field+'" class="k-edit-field"></div>'):Y("div",{"class":"k-edit-field"},[this.options.fieldRenderer(i,this.model)])))},_appendButtons:function(e){e.push(Y("div",{"class":"k-edit-buttons k-state-default"},this.options.commandRenderer()))},_attachHandlers:function(){var e=this._cancelProxy=ue(this._cancel,this);this.wrapper.on(Ce+xe,".k-grid-cancel",this._cancelProxy),this._saveProxy=ue(this._save,this),this.wrapper.on(Ce+xe,".k-grid-update",this._saveProxy),this.window.bind("close",function(t){t.userTriggered&&e(t)})},_detachHandlers:function(){this._cancelProxy=null,this._saveProxy=null,this.wrapper.off(xe)},_cancel:function(e){this.trigger(Ne,e)},_save:function(){this.trigger(Ie)},open:function(){this.window.center().open()},close:function(){this.window.bind("deactivate",ue(this.destroy,this)).close()},destroy:function(){this.window.destroy(),this.window=null,this._detachHandlers(),W.fn.destroy.call(this)}}),q=W.extend({destroy:function(){var e=this;e.editable.destroy(),e.editable.element.off().empty().removeAttr(kendo.attr("role")),e.model=e.wrapper=e.element=e.columns=e.editable=null}}),j=te.extend({init:function(t,n){if(te.fn.init.call(this,t,n),dt=kendo.support.isRtl(t),this._dataSource(this.options.dataSource),this._aria(),this._columns(),this._layout(),this._navigatable(),this._selectable(),this._sortable(),this._resizable(),this._filterable(),this._attachEvents(),this._toolbar(),this._scrollable(),this._reorderable(),this._columnMenu(),this._minScreenSupport(),this._draggable(),this._pageable(),this.options.autoBind&&this.dataSource.fetch(),this._hasLockedColumns){var i=this;this.wrapper.addClass("k-grid-lockedcolumns"),this._resizeHandler=function(){i.resize()},e(window).on("resize"+xe,this._resizeHandler)}kendo.notify(this)},_draggable:function(){var t=this,n=this.options.editable,i=t.dataSource,o=i._modelIdField(),r=i._modelParentIdField(),a=t._isPageable();n&&n.move&&(this._dragging=new kendo.ui.HierarchicalDragAndDrop(this.wrapper,{$angular:this.$angular,autoScroll:!0,filter:"tbody>tr",itemSelector:"tr",allowedContainers:this.wrapper,hintText:function(t){var n=function(){return e(this).text()},i="<span class='k-header k-drag-separator' />";return t.children("td").map(n).toArray().join(i)},contains:ue(function(e,t){var n=this.dataItem(t),i=this.dataItem(e);return i==n||this.dataSource.contains(i,n)},this),itemFromTarget:function(e){var t=e.closest("tr");return{item:t,content:t}},dragstart:ue(function(e){this.wrapper.addClass("k-treelist-dragging");var t=this.dataItem(e); +return this.trigger(Ze,{source:t})},this),drag:ue(function(e){e.source=this.dataItem(e.source),this.trigger(et,e)},this),drop:ue(function(e){return e.source=this.dataItem(e.source),e.destination=this.dataItem(e.destination),this.wrapper.removeClass("k-treelist-dragging"),this.trigger(tt,e)},this),dragend:ue(function(e){var t,n=this.dataItem(e.destination),s=this.dataItem(e.source),l=s[r],c=i._indexInChildrenMap(s);a&&(i._removeFromChildrenMap(s),s[r]=n?n[o]:null,i._initChildrenMapForParent(n),s[r]=l),t=s.set("parentId",n?n.id:null),a&&t&&(i._removeFromChildrenMap(s),s[r]=l,i._removeFromChildrenMap(s),i._insertInChildrenMap(s,c)),e.source=s,e.destination=n,this.trigger(nt,e)},this),reorderable:!1,dropHintContainer:function(e){return e.children("td:eq(1)")},dropPositionFrom:function(e){return e.prevAll(".k-i-none").length>0?"after":"before"}}))},itemFor:function(e){return"number"==typeof e&&(e=this.dataSource.get(e)),this.tbody.find("["+kendo.attr("uid")+"="+e.uid+"]")},_itemFor:function(e){var t=this,n=t.lockedContent?t.lockedTable:t.table;return"number"==typeof e&&(e=this.dataSource.get(e)),n.find("["+kendo.attr("uid")+"="+e.uid+"]")},_scrollable:function(){var t,n,i;this.options.scrollable&&(t=this.thead.closest(".k-grid-header-wrap"),n=e(this.lockedContent).bind("DOMMouseScroll"+xe+" mousewheel"+xe,ue(this._wheelScroll,this)),this.content.bind("scroll"+xe,function(){t.scrollLeft(this.scrollLeft),n.scrollTop(this.scrollTop)}),i=kendo.touchScroller(this.content),i&&i.movable&&(this._touchScroller=i,i.movable.bind("change",function(e){t.scrollLeft(-e.sender.x),n&&n.scrollTop(-e.sender.y)})))},_wheelScroll:function(t){var n,i;t.ctrlKey||(n=kendo.wheelDeltaY(t),i=e(t.currentTarget),n&&(i[0].scrollHeight>i[0].clientHeight&&(i[0].scrollTop<i[0].scrollHeight-i[0].clientHeight&&n<0||i[0].scrollTop>0&&n>0)&&t.preventDefault(),i.one("wheel"+xe,!1),this.content.scrollTop(this.content.scrollTop()+-n)))},_progress:function(){var e=this.options.messages;this.tbody.find("tr").length||this._showStatus(kendo.template("<span class='#= className #' /> #: messages.loading #")({className:mt.icon+" "+mt.loading,messages:e}))},_error:function(e){this.dataSource.rootNodes().length||this._render({error:e})},refresh:function(t){var n,i,o;t=t||{},"itemchange"==t.action&&this.editor||this.trigger(Le)||(n=e(this.current()),i=!1,this._cancelEditor(),this._render(),this._adjustHeight(),this.options.navigatable&&((this._isActiveInTable()||this.editor)&&(i=n.is("th"),o=Math.max(this.cellIndex(n),0)),this._restoreCurrent(o,i)),this.trigger(He))},_angularFooters:function(e){var t,n,i,o=this.dataSource.aggregates(),r=this._footerItems();for(t=0;t<r.length;t++)n=r.eq(t),i=o[n.attr("data-parentId")],this._angularFooter(e,n.find("td").get(),i)},_angularFooter:function(e,t,n){var i=this.columns;this.angular(e,function(){return{elements:t,data:he(i,function(e){return{column:e,aggregate:n&&n[e.field]}})}})},items:function(){return this._hasLockedColumns?this._items(this.tbody).add(this._items(this.lockedTable)):this._items(this.tbody)},_items:function(t){return t.find("tr[data-uid]").filter(function(){return!e(this).hasClass(mt.footerTemplate)})},_footerItems:function(){var t=this.tbody;return this._hasLockedColumns&&(t=t.add(this.lockedTable)),t.find("tr").filter(function(){return e(this).hasClass(mt.footerTemplate)})},dataItems:function(){var e,t,n,i=kendo.ui.DataBoundWidget.fn.dataItems.call(this);if(this._hasLockedColumns){for(e=i.length,t=Array(2*e),n=e;--n>=0;)t[n]=t[n+e]=i[n];i=t}return i},_showNoRecordsTemplate:function(){var t,n='<div class="{0}">{1}</div>',i='<div class="k-grid-norecords-template"{1}>{0}</div>',o=this.options.scrollable&&!this.wrapper[0].style.height?' style="margin:0 auto;position:static;"':"";this._contentTree.render([]),this._hasLockedColumns&&this._lockedContentTree.render([]),t=kendo.format(i,this.options.messages.noRows,o),e(kendo.template(kendo.format(n,at,t))({})).insertAfter(this.table)},_showStatus:function(t){var n=this.element.find(".k-status"),i=e(this.content).add(this.lockedContent);n.length||(n=e("<div class='k-status' />").appendTo(this.element)),this._contentTree.render([]),this._hasLockedColumns&&this._lockedContentTree.render([]),i.hide(),n.html(t)},_hideStatus:function(){this.element.find(".k-status").remove(),this._hideNoRecordsTempalte(),e(this.content).add(this.lockedContent).show()},_hideNoRecordsTempalte:function(){this.element.find("."+at).remove()},_adjustHeight:function(){var e,t,n=this,i=this.element,o=i.find(ye+mt.gridContentWrap),r=i.find(ye+mt.gridHeader),a=i.find(ye+mt.gridToolbar),s=i.find(ye+mt.status),l=n._isPageable()&&n.pager&&n.pager.element.is(":visible")?Z(n.pager.element):0,c=kendo.support.scrollbar();i.css(ut,this.options.height),t=function(e){var t,n;return!!e[0].style.height||(t=e.height(),e.height("auto"),n=e.height(),e.height(""),t!=n)},t(i)&&(e=i.height()-Z(r)-Z(a)-Z(s)-l,o.height(e),this._hasLockedColumns&&(c=this.table[0].offsetWidth>this.table.parent()[0].clientWidth?c:0,this.lockedContent.height(e-c)))},_resize:function(e,t){this._applyLockedContainersWidth(),this._adjustHeight(),this.pager&&this.pager.element&&this.pager.resize(t)},_minScreenSupport:function(){var t=this.hideMinScreenCols();t&&(this.minScreenResizeHandler=ue(this.hideMinScreenCols,this),e(window).on("resize",this.minScreenResizeHandler))},_iterateMinScreenCols:function(e,n){var i,o,r,a=!1;for(i=0;i<e.length;i++)o=e[i],r=o.minScreenWidth,r!==t&&null!==r&&(a=!0,r>n?this.hideColumn(o):this.showColumn(o)),!o.hidden&&o.columns&&(a=this._iterateMinScreenCols(o.columns,n)||a);return a},hideMinScreenCols:function(){var e=this.columns,t=window.innerWidth>0?window.innerWidth:screen.width;return this._iterateMinScreenCols(e,t)},destroy:function(){te.fn.destroy.call(this);var t=this.dataSource;t.unbind(_e,this._refreshHandler),t.unbind(we,this._errorHandler),t.unbind(ke,this._progressHandler),this._navigatableTables=null,this._current=null,this._resizeHandler&&e(window).off("resize"+xe,this._resizeHandler),this._dragging&&(this._dragging.destroy(),this._dragging=null),this.resizable&&(this.resizable.destroy(),this.resizable=null),this.reorderable&&(this.reorderable.destroy(),this.reorderable=null),this._draggableInstance&&this._draggableInstance.element&&(this._draggableInstance.destroy(),this._draggableInstance=null),this.minScreenResizeHandler&&e(window).off("resize",this.minScreenResizeHandler),this._destroyEditor(),this.element.off(xe),this.wrapper.off(xe),this._touchScroller&&this._touchScroller.destroy(),this._destroyPager(),t&&(t._dataMaps=null),this._autoExpandable=null,this._refreshHandler=this._errorHandler=this._progressHandler=this._dataSourceFetchProxy=null,this.thead=this.content=this.tbody=this.table=this.element=this.lockedHeader=this.lockedContent=null,this._statusTree=this._headerTree=this._contentTree=this._lockedHeaderColsTree=this._lockedContentColsTree=this._lockedHeaderTree=this._lockedContentTree=null},options:{name:"TreeList",columns:[],autoBind:!0,scrollable:!0,selectable:!1,sortable:!1,toolbar:null,height:null,columnMenu:!1,messages:{noRows:"No records to display",loading:"Loading...",requestFailed:"Request failed.",retry:"Retry",commands:{edit:"Edit",update:"Update",canceledit:"Cancel",create:"Add new record",createchild:"Add child record",destroy:"Delete",excel:"Export to Excel",pdf:"Export to PDF"}},excel:{hierarchy:!0},resizable:!1,filterable:!1,editable:!1,reorderable:!1,pageable:!1},events:[_e,Te,De,Ae,Ie,Me,ze,Fe,Re,Le,He,Ne,Ze,et,tt,nt,Ve,be,Pe,We,Ue,qe,Ge,$e,Ye,Ke,Qe,Xe],_toggle:function(n,i){function o(){r._toggleData(),r._isPageable()?r.refresh():r._render(),r._syncLockedContentHeight()}var r=this,a=e.Deferred().resolve().promise(),s=n.loaded();return r._isIncellEditable()&&r.editor&&(e(le()).change(),r.closeCell()),n._error&&(n.expanded=!1,n._error=t),!s&&n.expanded?a:(t===i&&(i=!n.expanded),n.expanded=i,s||(a=this.dataSource.load(n).always(ue(function(){o()},this))),o(),a)},_toggleData:function(){var e=this;e._isPageable()&&e._togglePageableData()},_togglePageableData:function(){var e,t,n=this,i=n.dataSource,o=i._getData(),r=i._defaultPageableQueryOptions();n._renderProgress(!0),t=i._getChildrenMap()||i.childrenMap(i._getData()),i._processDataItemsState(o,t),e=i._processPageableQuery(o,r),r.childrenMap=e.childrenMap,r.filteredChildrenMap=e.filteredChildrenMap,i._aggregateResult=i._calculateAggregates(e.dataToAggregate,r),i.view(e.data),i._calculateCollapsedTotal(),n._refreshPager(),n._renderProgress(!1)},_refreshPager:function(){var e=this.pager;e&&e.refresh()},expand:function(e){return this._toggle(this.dataItem(e),!0)},collapse:function(e){return this._toggle(this.dataItem(e),!1)},_toggleChildren:function(t){var n,i=e(t.currentTarget),o=this.dataItem(i);o&&(n=o.expanded?Re:Fe,this.trigger(n,{model:o})||this._toggle(o),t.preventDefault())},_navigatable:function(){var t,n,i=this;i.options.navigatable&&(t=i.table.add(i.lockedTable),n=i.thead.parent().add(e(">table",i.lockedHeader)),i.options.scrollable&&(t=t.add(n),n.attr(Oe,-1)),this._navigatableTables=t,t.on(kendo.support.touch?"touchstart"+xe:"mousedown"+xe,it+">:visible",ue(i._tableClick,i)).on("focus"+xe,ue(i._tableFocus,i)).on("focusout"+xe,ue(i._tableBlur,i)).on("keydown"+xe,ue(i._tableKeyDown,i)))},cellIndex:function(t){var n=0;return this.lockedTable&&!e.contains(this.lockedTable[0],t[0])&&(n=f(E(this.columns)).length),e(t).parent().children().index(t)+n},_isActiveInTable:function(){var t=kendo._activeElement();return!!t&&(this.table[0]===t||e.contains(this.table[0],t)||this.lockedTable&&(this.lockedTable[0]===t||e.contains(this.lockedTable[0],t)))},_restoreCurrent:function(n,i){var o,r,a;n===t||n<0||(this._current&&this._current.removeClass("k-state-focused"),i?this.current(this.thead.find("th").eq(n)):(o=0,n=0,r=e(),this.lockedTable&&(r=this.lockedTable.find(">tbody>tr:visible").eq(o)),r=r.add(this.tbody.children().eq(o)),a=r.find(">td:visible").eq(n),this.current(a)),this._current&&R(this._current.closest("table")[0],!0))},current:function(t){var n=this._current;return t=e(t),!t.length||n&&n[0]===t[0]||(this._updateCurrentAttr(n,t),this._scrollCurrent()),t&&t.length&&(this._lastCellIndex=t.parent().children(Be).index(t)),this._current},_setCurrent:function(t){var n=this;return t=e(t),t[0]&&(n._current=t,n._updateCurrentAttr(n._current,t),n._scrollCurrent()),n._current},_scrollCurrent:function(){var t,n,i,o,r,a=this._current,s=this.options.scrollable;a&&s&&(t=a.parent(),n=t.closest("table").parent(),i=n.is(".k-grid-content-locked,.k-grid-header-locked"),o=n.is(".k-grid-content-locked,.k-grid-content"),r=e(this.content)[0],o&&this._scrollTo(this._relatedRow(t)[0],r),this.lockedContent&&(this.lockedContent[0].scrollTop=r.scrollTop),i||this._scrollTo(a[0],r))},_findCurrentCell:function(){var t=this,n=t.current(),i=e(t.table).add(t.header).add(t.lockedTable).add(t.lockedHeader);return n&&i.find(n).length>0?n:i.find(ye+mt.focused)},_scrollTo:function(t,n){var i,o=t.tagName.toLowerCase(),r="td"===o||"th"===o,a=t[r?"offsetLeft":"offsetTop"],s=t[r?"offsetWidth":"offsetHeight"],l=n[r?"scrollLeft":"scrollTop"],c=n[r?"clientWidth":"clientHeight"],d=a+s,u=0,h=0,p=0;dt&&r&&(i=e(t).closest("table")[0],ae.msie?h=i.offsetLeft:ae.mozilla&&(p=i.offsetLeft-kendo.support.scrollbar())),l=Math.abs(l+h-p),u=l>a?a:d>l+c?s<=c?d-c:a:l,u=Math.abs(u+h)+p,n[r?"scrollLeft":"scrollTop"]=u},_aria:function(){var e=this.element.attr("id")||"aria";e&&(this._elementId=e+"_active_element")},_currentDataIndex:function(e,n){var i,o=n.attr("data-index");return o?(i=E(this.columns).length,i&&!e.closest("div").hasClass("k-grid-content-locked")[0]?o-i:o):t},_prevVerticalCell:function(t,n){var i,r=n.parent(),s=t.children(it),l=s.index(r),c=this._currentDataIndex(t,n);if(c||n.hasClass("k-header"))return i=k(n),i.eq(i.length-2);if(c=Math.max(r.children(Be).index(n),this._lastCellIndex||0),r.hasClass("k-filter-row"))return a(t).filter(o).eq(c);if(l==-1){if(r=t.find("tr.k-filter-row:visible"),!r[0])return a(t).filter(o).eq(c)}else r=0===l?e():s.eq(l-1);return i=r.children(Be),i.eq(i.length>c?c:0)},_nextVerticalCell:function(e,n){var i,o,r,a,s,l,c=n.parent(),d=e.children(it),u=d.index(c),h=this._currentDataIndex(e,n);if(u!=-1&&h===t&&n.hasClass("k-header"))return y(n).eq(1);if(h=h?parseInt(h,10):c.children(Be).index(n),h=Math.max(h,this._lastCellIndex||0),c=d.eq(u==-1?0:u+n[0].rowSpan),o=h,this._currentDataIndex(e,n)!==t)for(r=c.children(":not(.k-group-cell):not(.k-hierarchy-cell)"),a=r.filter(":hidden"),s=0,l=a.length;s<l;s++)r.index(a[s])<h&&o--;return h=o,i=c.children(Be),i.eq(i.length>h?h:0)},_verticalContainer:function(e,t){var n=e.parent(),i=this._navigatableTables.length,o=Math.floor(i/2),r=fe(n[0],this._navigatableTables);return t&&(o*=-1),r+=o,(r>=0||r<i)&&(n=this._navigatableTables.eq(r)),n.find(t?"thead":"tbody")},_updateCurrentAttr:function(t,n){var i=e(t).data("headerId");e(t).removeClass(mt.focused).closest("table").removeAttr("aria-activedescendant"),i?(i=i.replace(this._elementId,""),e(t).attr("id",i)):e(t).removeAttr("id"),n.data("headerId",n.attr("id")).attr("id",this._elementId).addClass(mt.focused).closest("table").attr("aria-activedescendant",this._elementId),this._current=n},_tableKeyDown:function(t){var n=!1,i=this.current(),o=e(t.target),r=!t.isDefaultPrevented()&&!o.is(":button,a,:input,a>.k-icon");i=i?i:e(this.lockedTable).add(this.table).find(lt),r&&t.keyCode==J.UP&&(n=this._moveUp(i,t.shiftKey)),r&&t.keyCode==J.DOWN&&(n=this._moveDown(i,t.shiftKey)),r&&t.keyCode==(dt?J.LEFT:J.RIGHT)&&(n=t.altKey?this._handleExpand(i):this._moveRight(i)),r&&t.keyCode==(dt?J.RIGHT:J.LEFT)&&(n=t.altKey?this._handleCollapse(i):this._moveLeft(i)),r&&t.keyCode==J.PAGEDOWN&&(n=this._handlePageDown()),r&&t.keyCode==J.PAGEUP&&(n=this._handlePageUp()),t.keyCode!=J.ENTER&&t.keyCode!=J.F2||(n=this._handleEnterKey(i,t.currentTarget,o)),t.keyCode==J.ESC&&(n=this._handleEscKey(i,t.currentTarget)),r&&t.keyCode==J.HOME&&(n=this._handleHome(i,t.ctrlKey)),r&&t.keyCode==J.END&&(n=this._handleEnd(i,t.ctrlKey)),t.keyCode==J.TAB&&(n=this._handleTabKey(i,t.currentTarget,t.shiftKey)),n&&(t.preventDefault(),t.stopPropagation())},_handleExpand:function(e){var t=this,n=e.parent(),i=t.dataItem(n);return!e.hasClass("k-header")&&(!(!i||!i.hasChildren||i.expanded||t.trigger(Fe,{model:i}))&&(this.expand(n),!0))},_handleCollapse:function(e){var t=this,n=e.parent(),i=t.dataItem(n);return!e.hasClass("k-header")&&(!(!(i&&i.hasChildren&&i.expanded)||t.trigger(Re,{model:i}))&&(t.collapse(n),!0))},_handleHome:function(e,t){var n,i=e.parent(),o=i.parent(),r=this.lockedTable&&this.lockedTable.children("tbody")[0]===o[0],a=o[0]===this.tbody[0];if(t?n=this.lockedTable?this.lockedTable.find(lt):this.table.find(lt):(a||r)&&(a&&this.lockedTable&&(i=this._relatedRow(i)),n=i.children(ot+":first")),n&&n.length)return this.current(n),!0},_handleEnd:function(e,t){var n,i=e.parent(),o=i.parent(),r=this.lockedTable&&this.lockedTable.children("tbody")[0]===o[0],a=o[0]===this.tbody[0];if(t?n=this.table.find(ct+">"+ot+":last"):(a||r)&&(!a&&this.lockedTable&&(i=this._relatedRow(i)),n=i.children(ot+":last")),n&&n.length)return this.current(n),!0},_handlePageDown:function(){var e=this;return!!e._isPageable()&&(e.dataSource._restorePageSizeAfterAddChild(),e.dataSource.page(e.dataSource.page()+1),!0)},_handlePageUp:function(){var e=this;return!!e._isPageable()&&(e.dataSource._restorePageSizeAfterAddChild(),e.dataSource.page(e.dataSource.page()-1),!0)},_handleEscKey:function(t,n){var i,o,r,a,s,l=kendo._activeElement(),c=this;return t&&t.parent().hasClass("k-grid-edit-row")?(c._isIncellEditable()?(o=t.parent(),a=t.index(),r=o.index(),s=o.closest("tbody"),c.closeCell(!0),c._setCurrent(s.children().eq(r).children().eq(a))):(i=e(t).parent().index(),l&&l.blur(),this.cancelRow(),i>=0&&this.current(this.items().eq(i).children(ot).first())),ae.msie&&ae.version<9&&document.body.focus(),R(n,!0),!0):!!t.has(l).length&&(R(n,!0),!0)},_handleEnterKey:function(t,n,i){var o,r=this.options.editable,a=i.closest("[role=gridcell]");return i.is("table")||e.contains(t[0],i[0])||(t=a),t.is("th")?(t.find(".k-link").click(),!0):(o=t.find(":kendoFocusable:first"),o[0]&&t.hasClass("k-state-focused")?(o.focus(),!0):!(!r||i.is(":button,.k-button,textarea"))&&(a[0]||(a=t),this._handleEditing(a,!1,n),!0))},_handleTabKey:function(t,n,i){var o,r=this,a=r.options.editable&&r._isIncellEditable();return!(!a||t.is("th"))&&(o=e(le()).closest(ye+mt.editCell),o[0]&&o[0]!==t[0]&&(t=o),o=r._tabNext(t,n,i),o.length?(r._handleEditing(t,o,o.closest(gt)),!0):(r._preventPageSizeRestore=!1,!1))},_tabNext:function(e,t,n){var i=this,o=!0,r=n?e.prevAll(Be+":first"):e.nextAll(":visible:first");return r.length||(r=e.parent(),i.lockedTable&&(o=n&&t==i.lockedTable[0]||!n&&t==i.table[0],r=i._relatedRow(r)),o&&(r=r[n?"prevAll":"nextAll"]("tr:not(.k-grouping-row):not(.k-detail-row):visible:first")),r=r.children(Be+(n?":last":":first")),i.dataSource._restorePageSizeAfterAddChild()),r},_handleEditing:function(n,i,o){var r,a,s,l,c,d=this,u=e(kendo._activeElement()),h=ae.msie,p=d.options.editable&&d.options.editable.update!==!1,f=d._isIncellEditable(),g=e(i).parents("tr").index(),m=e(i).index(),v=e(n).parents("tr").index(),_=n.index();if(o=e(o),s=f?n.hasClass(mt.editCell):n.parent().hasClass("k-grid-edit-row"),d.editor){if(r=d.editor.wrapper,r&&e.contains(r[0],u[0])&&(ae.opera?u.blur().change().triggerHandler("blur"):(u.blur(),h&&u.blur())),!d.editor)return R(o),t;if(!d.editor.end())return d.current(f?r:r.children().filter(ot).first()),a=r.find(":kendoFocusable:first")[0],a&&a.focus(),t;f?(d._preventPageSizeRestore=!0,d.closeCell(),d._preventPageSizeRestore=!1,0===e(d.table).add(d.lockedTable).find(ye+mt.editCell).length&&d.current(o.find("tbody").children().eq(v).children().eq(_))):(d.saveRow(),s=!0)}i=e(i).length&&0===o.find(i).length?o.find("tbody").children().eq(g).children().eq(m):i,i&&d.current(i),R(o,!0),p&&(!s&&!i||i?(c=d.current().index(),f?(d.editCell(d.current()),l=e(d.table).add(d.lockedTable).find(ye+mt.editCell)[0],l?d._current=e(l):d.current(d._findCurrentCell())):(d.editRow(d.current().parent()),d.current(d.editor.wrapper.children().eq(c)),d.current().removeClass("k-state-focused"))):d.dataSource._restorePageSizeAfterAddChild())},_moveRight:function(e){var t=e.nextAll(ot).first(),n=e.parent();return e.hasClass("k-header")&&(t=e.nextAll(rt).first(),!t[0]&&this.lockedTable&&e.closest("table")[0]===this.lockedHeader.find("table")[0]&&(t=this.thead.find(rt+":first"))),!t[0]&&this.lockedTable&&e.closest("table")[0]===this.lockedTable[0]&&(t=this._relatedRow(n).children(ot).first()),t[0]&&t[0]!==e[0]&&R(t.closest("table"),!0),this.current(t),!0},_moveLeft:function(e){var t=e.prevAll(ot).first(),n=e.parent();return e.hasClass("k-header")&&(t=e.prevAll(rt).first(),!t[0]&&this.lockedTable&&e.closest("table")[0]===this.thead.parent()[0]&&(t=this.lockedHeader.find(">table>thead>tr>"+rt+":last"))),!t[0]&&this.lockedTable&&e.closest("table")[0]===this.table[0]&&(t=this._relatedRow(n).children(ot).last()),t[0]&&t[0]!==e[0]&&R(t.closest("table"),!0),this.current(t),!0},_moveUp:function(e,t){var n,i,o=e.parent().parent();return t?(n=e.parent(),n=n.prevAll(st+":first"),n=e.parent().is(st)?n.children().eq(e.index()):n.children(Be+":last")):(n=this._prevVerticalCell(o,e),n[0]||(this._lastCellIndex=0,o=this._verticalContainer(o,!0),n=this._prevVerticalCell(o,e),n[0]&&R(o.parent(),!0))),i=this._lastCellIndex||0,this.current(n),this._lastCellIndex=i,!0},_moveDown:function(e,t){var n,i,o=e.parent().parent();return t?(n=e.parent(),n=n.nextAll(st+":first"),n=e.parent().is(st)?n.children().eq(e.index()):n.children(Be+":first")):(n=this._nextVerticalCell(o,e),n[0]||(this._lastCellIndex=0,o=this._verticalContainer(o),n=this._nextVerticalCell(o,e),n[0]&&R(o.parent(),!0))),i=this._lastCellIndex||0,this.current(n),this._lastCellIndex=i,!0},_tableClick:function(t){var n=e(t.currentTarget),i=n.is("th"),o=this.table.add(this.lockedTable),r=this.thead.parent().add(e(">table",this.lockedHeader)),a=d(t.target),s=n.closest("table")[0];kendo.support.touch||s!==o[0]&&s!==o[1]&&s!==r[0]&&s!==r[1]||(this.options.navigatable&&this.current(n),!i&&a||setTimeout(function(){d(kendo._activeElement())&&e.contains(s,kendo._activeElement())||R(s,!0)}),i&&t.preventDefault())},_setTabIndex:function(e){this._navigatableTables.attr(Oe,-1),e.attr(Oe,0)},_tableFocus:function(t){var n=this.current(),i=e(t.currentTarget);n&&n.is(":visible")?n.addClass(mt.focused):this.current(i.find(lt)),this._setTabIndex(i)},_tableBlur:function(){var e=this.current();e&&e.removeClass(mt.focused)},_attachEvents:function(){var e=ye+mt.iconCollapse+", ."+mt.iconExpand+", ."+mt.refresh,t=ye+mt.retry;this.element.on(Se+xe,e,ue(this._toggleChildren,this)).on(Ce+xe,t,this._dataSourceFetchProxy).on(Ce+xe,".k-button[data-command]",ue(this._commandClick,this)),this._attachCellEditingEventHandlers()},_attachCellEditingEventHandlers:function(){var n=this,i=n.options.editable,o=n.selectable&&n.selectable.options.multiple,r=function(t){var i=le(),o=n.editor||{},r=o.element;!r||e.contains(r[0],i)||r[0]===i||e(i).closest(".k-animation-container").length||o.end()&&(t.relatedTarget||!n._isPageable()||L(n.dataSource._addChildPageSize)||(n._preventPageSizeRestore=!1),n.closeCell()),n._preventPageSizeRestore=!1};n._isIncellEditable()&&i.update!==!1&&n.wrapper.on(Ce+xe,"tr:not(.k-grouping-row) > td",function(i){var r=e(this),a=n.lockedTable&&r.closest("table")[0]===n.lockedTable[0];return r.hasClass(mt.editCell)||r.has("a.k-grid-delete").length||r.has("button.k-grid-delete").length||r.closest("tbody")[0]!==n.tbody[0]&&!a||e(i.target).is(":input")||e(i.target).hasClass(mt.iconExpand)||e(i.target).hasClass(mt.iconCollapse)?(n.editor||n.dataSource._restorePageSizeAfterAddChild(),n._preventPageSizeRestore=!1,t):(n.editor?n.editor.end()&&(o&&e(le()).blur(),n.closeCell(),n.editCell(r)):n.editCell(r),t)}).on("mousedown"+xe,"tr:not(.k-grouping-row) > td",function(t){n._preventPageSizeRestore=!(!n.editor||!n._isPageable()||L(n.dataSource._addChildPageSize))&&e(t.target).parents(ye+mt.editRow).length>0}).on("focusin"+xe,function(){e.contains(this,le())||(clearTimeout(n._closeCellTimeout),n._closeCellTimeout=null)}).on("focusout"+xe,function(e){n._closeCellTimeout=setTimeout(function(){r(e)},1)})},_commandByName:function(t){var n,i,o,r,a=this.columns,s=e.isArray(this.options.toolbar)?this.options.toolbar:[];if(t=t.toLowerCase(),vt[t])return vt[t];for(n=0;n<a.length;n++)if(o=a[n].command)for(i=0;i<o.length;i++)if(r=o[i].name,r&&r.toLowerCase()==t)return o[i];for(n=0;n<s.length;n++)if(r=s[n].name,r&&r.toLowerCase()==t)return s[n]},_commandClick:function(n){var i=e(n.currentTarget),o=i.attr("data-command"),r=this._commandByName(o),a=i.parentsUntil(this.wrapper,"tr");a=a.length?a:t,r&&(r.methodName?this[r.methodName](a):r.click&&r.click.call(this,n),n.preventDefault())},_ensureExpandableColumn:function(){var e,t;this._autoExpandable&&delete this._autoExpandable.expandable,e=pe(this.columns,i(n("hidden"))),e=pe(e,i(n("command"))),t=pe(e,n("expandable")),this.columns.length&&!t.length&&(this._autoExpandable=e[0],e[0].expandable=!0)},_columns:function(){var e,t=this.options.columns||[];this.columns=he(t,function(e){return e="string"==typeof e?{field:e}:e,de({encoded:!0},e)}),e=E(t),e.length>0&&(this._hasLockedColumns=!0,this.columns=e.concat(I(this.columns))),this.columns=_(this.columns),this._ensureExpandableColumn(),this._columnTemplates(),this._columnAttributes()},_columnTemplates:function(){var e,t,n,i=f(this.columns);for(e=0,t=i.length;e<t;e++)n=i[e],n.template&&(n.template=kendo.template(n.template)),n.headerTemplate&&(n.headerTemplate=kendo.template(n.headerTemplate)),n.footerTemplate&&(n.footerTemplate=kendo.template(n.footerTemplate))},_columnAttributes:function(){function t(t){var n,i,o,r;if(t&&t.style)for(n=t.style.split(";"),t.style={},i=0;i<n.length;i++)o=n[i].split(":"),r=e.trim(o[0]),r&&(t.style[e.camelCase(r)]=e.trim(o[1]))}var n,i,o=this.columns;for(n=0,i=o.length;n<i;n++)t(o[n].attributes),t(o[n].headerAttributes)},_layout:function(){var e,t,n,i=this.columns,o=this.element,r="";this.wrapper=o.addClass(mt.wrapper),r="<div class='#= gridHeader #'>",this._hasLockedColumns&&(r+="<div class='k-grid-header-locked'><table role='grid'><colgroup></colgroup><thead role='rowgroup' /></table></div>"),r+="<div class='#= gridHeaderWrap #'><table role='grid'><colgroup></colgroup><thead role='rowgroup' /></table></div></div>",this._hasLockedColumns&&(r+="<div class='k-grid-content-locked'><table role='treegrid' tabindex='0'><colgroup></colgroup><tbody /></table></div>"),r+="<div class='#= gridContentWrap # k-auto-scrollable'><table role='treegrid' tabindex='0'><colgroup></colgroup><tbody /></table></div>",this.options.scrollable||(r="<table role='treegrid' tabindex='0'><colgroup></colgroup><thead class='#= gridHeader #' role='rowgroup' /><tbody /></table>"),this.options.toolbar&&(r="<div class='#= header # #= gridToolbar #' />"+r),o.append(kendo.template(r)(mt)+"<div class='k-status' />"),this.toolbar=o.find(ye+mt.gridToolbar),e=o.find(ye+mt.gridHeader).find("thead").addBack().filter("thead"),this.thead=e.last(),this.options.scrollable&&(t=kendo.support.isRtl(o),o.find("div."+mt.gridHeader).css(t?"padding-left":"padding-right",kendo.support.scrollbar())),n=o.find(ye+mt.gridContentWrap),n.length?this.content=n:n=o,this.table=n.find(">table"),this.tbody=this.table.find(">tbody"),this._hasLockedColumns&&(this.lockedHeader=e.first().closest(".k-grid-header-locked"),this.lockedContent=o.find(".k-grid-content-locked"),this.lockedTable=this.lockedContent.children()),this._initVirtualTrees(),this._renderCols(),this._renderHeader(),this.angular("compile",function(){return{elements:e.find("th.k-header").get(),data:he(i,function(e){return{column:e}})}})},_initVirtualTrees:function(){this._headerColsTree=new $.Tree(this.thead.prev()[0]),this._contentColsTree=new $.Tree(this.tbody.prev()[0]),this._headerTree=new $.Tree(this.thead[0]),this._contentTree=new $.Tree(this.tbody[0]),this._statusTree=new $.Tree(this.element.children(".k-status")[0]),this.lockedHeader&&(this._lockedHeaderColsTree=new $.Tree(this.lockedHeader.find("colgroup")[0]),this._lockedContentColsTree=new $.Tree(this.lockedTable.find(">colgroup")[0]),this._lockedHeaderTree=new $.Tree(this.lockedHeader.find("thead")[0]),this._lockedContentTree=new $.Tree(this.lockedTable.find(">tbody")[0]))},_toolbar:function(){var t,n=this.options.toolbar,i=this.toolbar;n&&(e.isArray(n)?(t=this._buildCommands(n),new $.Tree(i[0]).render(t)):i.append(kendo.template(n)({})),this.angular("compile",function(){return{elements:i.get()}}))},_lockedColumns:function(){return pe(this.columns,n("locked"))},_nonLockedColumns:function(){return pe(this.columns,i(n("locked")))},_templateColumns:function(){return pe(this.columns,n("template"))},_flushCache:function(){this.options.$angular&&this._templateColumns().length&&(this._contentTree.render([]),this._hasLockedColumns&&this._lockedContentTree.render([]))},_render:function(t){var n,i,o,r,a,s,l,c,d,u,h,p,g=this;t=t||{},t=g._renderOptions(t),n=this.options.messages,i=g._isPageable(),o=g.dataSource,r={children:t.filteredChildrenMap||t.childrenMap,ids:t.idsMap},a=i?r&&r.children&&r.ids?r:o._initDataMaps(o._getData()):{},s=a.children,l=a.ids,t.childrenMap=s,t.idsMap=l,c=g._dataToRender(t),d=g._renderedModelLevel(c[0],t),u=kendo.attr("uid"),h=this.select().removeClass("k-state-selected").map(function(t,n){return e(n).attr(u)}),this._absoluteIndex=0,this._angularItems("cleanup"),this._angularFooters("cleanup"),this._flushCache(),g._clearRenderMap(),t.error?this._showStatus(kendo.template("#: messages.requestFailed # <button class='#= buttonClass #'>#: messages.retry #</button>")({buttonClass:[mt.button,mt.retry].join(" "),messages:n})):c.length?(i&&(p=g._viewChildrenMap(t)),this._hideStatus(),this._contentTree.render(this._trs({columns:f(I(this.columns)),editedColumn:t.editedColumn,editedColumnIndex:t.editedColumnIndex,aggregates:t.aggregates,selected:h,data:c,childrenMap:s,viewChildrenMap:p,visible:!0,level:0})),this._hasLockedColumns&&(this._absoluteIndex=0,this._lockedContentTree.render(this._trs({columns:f(E(this.columns)),editedColumn:t.editedColumn,editedColumnIndex:t.editedColumnIndex,aggregates:t.aggregates,selected:h,data:c,childrenMap:s,viewChildrenMap:p,visible:!0,level:d})))):(this._hideStatus(),this._showNoRecordsTemplate()),this._touchScroller&&this._touchScroller.contentResized(),this._muteAngularRebind(function(){this._angularItems("compile"),this._angularFooters("compile")}),this.items().filter(function(){return e.inArray(e(this).attr(u),h)>=0}).addClass("k-state-selected"),this._syncLockedContentHeight(),g._togglePagerVisibility()},_renderProgress:function(e){kendo.ui.progress(this.wrapper,e)},_renderOptions:function(e){var t,n,i;return e=e||{},t=this,n=t.dataSource._getDataMaps(),i=t.dataSource.filter(),t._isPageable()&&(e.childrenMap=n.children,e.idsMap=n.ids,i&&(e.filteredChildrenMap=n.filteredChildren)),e},_renderedModelLevel:function(e,t){return this._isPageable()?this.dataSource._pageableModelLevel(e,t):0},_viewChildrenMap:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g;for(e=e||{},t=this,n=t.dataSource,i=n.childrenMap(n.view()),o=n._modelIdField(),r=n._parentNodesNotInView(),t._clearRenderMap(),f=0;f<r.length;f++)for(a=r[f],s=a[o],t._markNodeAsNonRenderable(s),i[s]=i[s]||[],l=n._parentNodes(a),p=l.slice(),p.push(a),g=0;g<p.length-1;g++)c=p[g],d=c[o],t._markNodeAsNonRenderable(d),i[d]=i[d]||[],u=p[g+1],h=u[o],t._markNodeAsNonRenderable(h),i[h]=i[h]||[],i[d].indexOf(u)===-1&&i[d].unshift(u);return i},_clearRenderMap:function(){this._skipRenderingMap={}},_dataToRender:function(e){var t=this;return t._isPageable()?t.dataSource._pageableRootNodes(e):t.dataSource.rootNodes()},_markNodeAsNonRenderable:function(e){this._skipRenderingMap[e]=!0},_adjustRowsHeight:function(e,t){var n,i,o,r,a,s,l,c,d,u;if(this._hasLockedColumns){for(n=e[0].rows,i=n.length,r=t[0].rows,a=e.add(t),s=a.length,l=[],o=0;o<i&&r[o];o++)n[o].style.height&&(n[o].style.height=r[o].style.height="");for(o=0;o<i&&r[o];o++)c=n[o].offsetHeight,d=r[o].offsetHeight,u=0,c>d?u=c:c<d&&(u=d),l.push(u);for(o=0;o<s;o++)a[o].style.display="none";for(o=0;o<i;o++)l[o]&&(n[o].style.height=r[o].style.height=l[o]+1+"px");for(o=0;o<s;o++)a[o].style.display=""}},_ths:function(e,t){var n,i,o,r,a,s,l,c,d=[];for(l=0,c=e.length;l<c;l++)n=e[l],o=[],r=[mt.header],i=n.headerTemplate?n.headerTemplate({}):n.title||n.field||"",s=n.headerTemplate?Q(i):K(i),o.push(n.sortable?Y("a",{href:"#",className:mt.link},[s]):s),a={"data-field":n.field,"data-title":n.title,style:n.hidden===!0?{display:"none"}:{},className:r.join(" "),role:"columnheader"},n.columns||(a.rowSpan=t?t:1),n.headerAttributes&&(1===n.headerAttributes.colSpan&&delete n.headerAttributes.colSpan,n.headerAttributes["class"]&&(a.className+=" "+n.headerAttributes["class"],delete n.headerAttributes["class"])),n["data-index"]>-1&&(a["data-index"]=n["data-index"]),a=de(!0,{},a,n.headerAttributes),d.push(Y("th",a,o));return d},_cols:function(e){var t,n,i,o=[];for(i=0;i<e.length;i++)e[i].hidden!==!0&&(t=e[i].width,n={},t&&0!==parseInt(t,10)&&(n.style={width:"string"==typeof t?t:t+"px"}),o.push(Y("col",n)));return o},_clearColsCache:function(){this._headerColsTree.render([]),this.options.scrollable&&this._contentColsTree.render([]),this._hasLockedColumns&&(this._lockedHeaderColsTree.render([]),this._lockedContentColsTree.render([]))},_renderCols:function(){var e=I(this.columns);this._headerColsTree.render(this._cols(f(e))),this.options.scrollable&&this._contentColsTree.render(this._cols(f(e))),this._hasLockedColumns&&(e=E(this.columns),this._lockedHeaderColsTree.render(this._cols(f(e))),this._lockedContentColsTree.render(this._cols(f(e))))},_retrieveFirstColumn:function(t,n){var i,o=e();if(n.length&&t[0]){for(i=t[0];i.columns&&i.columns.length;)i=i.columns[0],n=n.filter(":not(:first())");o=o.add(n)}return o},_updateFirstColumnClass:function(){var t,n=this,i=n.columns||[],o=n.thead.find(">tr:not(:first)"); +i=I(i),t=n._retrieveFirstColumn(i,o),n.lockedHeader&&(o=n.lockedHeader.find("thead>tr:not(.k-filter-row):not(:first)"),i=E(n.columns),t=t.add(n._retrieveFirstColumn(i,o))),t.each(function(){var t=e(this).find("th");t.removeClass("k-first"),t.eq(0).addClass("k-first")})},_updateRowSpans:function(e){var t,n;for(t=e.length-1;t>=0;t--)n=g(e[t].cells).length>0,n&&(e[t].rowSpan=e.length-t)},_setColumnDataIndexes:function(e){for(var t=0;t<e.length;t++)e[t]["data-index"]=t},_updateColumnCellIndex:function(){var e,t=0;this.lockedHeader&&(e=this.lockedHeader.find("thead"),t=D(e,E(this.columns))),D(this.thead,I(this.columns),t)},_setParentsVisibility:function(e,t){var n,i,o=this.columns,r=[],a=t?function(e){return v(e.columns).length&&e.hidden}:function(e){return!v(e.columns).length&&!e.hidden};if(C(e,o,r)&&r.length)for(n=r.length-1;n>=0;n--)i=r[n],a(i)&&(i.hidden=!t)},_prepareColumns:function(t,n,i,o,r){var a,s,l=o||t[t.length-1],c=t[l.index+1],d=0;for(a=0;a<n.length;a++)s=e.extend({},n[a],{headerAttributes:n[a].headerAttributes||{}}),l.cells.push(s),n[a].columns&&n[a].columns.length&&(c||(c={rowSpan:0,cells:[],index:t.length},t.push(c)),n[a].columns.length&&(s.headerAttributes.colSpan=g(n[a].columns).length||1,s.headerAttributes["data-colspan"]=f(n[a].columns).length),this._prepareColumns(t,n[a].columns,s,c,n[a]),s.hidden||(d+=s.headerAttributes.colSpan-1),l.rowSpan=t.length-l.index),n[a].rowIndex=l.index,r&&(n[a].parentColumn=r),n[a].cellIndex=l.cells.length-1;i&&(i.headerAttributes.colSpan+=d)},_renderHeaderTree:function(e,t,n){var i,o=[],r=[];if(n){for(o=[{rowSpan:1,cells:[],index:0}],this._prepareColumns(o,t),this._updateRowSpans(o),i=0;i<o.length;i++)r.push(Y("tr",{role:"row"},this._ths(o[i].cells,o[i].rowSpan)));e.render(r)}else e.render([Y("tr",{role:"row"},this._ths(t))])},_renderHeader:function(){var e=I(this.columns),n=pe(this.columns,function(e){return e.columns!==t}).length>0;this._setColumnDataIndexes(f(this.columns)),this._renderHeaderTree(this._headerTree,e,n),this._hasLockedColumns&&(e=E(this.columns),this._renderHeaderTree(this._lockedHeaderTree,e,n),this._applyLockedContainersWidth(),this._syncLockedHeaderHeight()),this._updateFirstColumnClass()},_applyLockedContainersWidth:function(){var e,t,n,i,o,r;this._hasLockedColumns&&(e=l(this.lockedHeader.find(">table>colgroup>col")),t=this.thead.parent(),n=l(t.find(">colgroup>col")),i=this.wrapper[0].clientWidth,o=kendo.support.scrollbar(),e>=i&&(e=i-3*o),this.lockedHeader.add(this.lockedContent).width(e),t.add(this.table).width(n),r=i-e-2,this.content.width(r),t.parent().width(r-o))},_trs:function(t){var n,i,o,r,a,s,l,c,d,u=this,h=[],p=t.level,f=t.data,g=this.dataSource,m=g.aggregates()||{},v=g._modelIdField(),_=g._modelParentIdField(),b=t.columns,w=u._isPageable(),k=t.childrenMap||g.childrenMap(g._getData());for(s=0,l=f.length;s<l;s++)if(o=[],n=f[s],c=n[v],a=w?k[c]:n.loaded()?g.childNodes(n):[],r=a&&a.length,i={role:"row"},i[kendo.attr("uid")]=n.uid,r&&(i["aria-expanded"]=!!n.expanded),t.visible?(!w||w&&!u._skipRenderingMap[c])&&(this._absoluteIndex%2!==0&&o.push(mt.alt),this._absoluteIndex++):i.style={display:"none"},e.inArray(n.uid,t.selected)>=0&&o.push(mt.selected),r&&o.push(mt.group),n._edit&&o.push("k-grid-edit-row"),i.className=o.join(" "),u._skipRenderingMap[c]||(d=this._tds({model:n,attr:i,level:w?u._renderedModelLevel(n,t):p,editedColumn:t.editedColumn,editedColumnIndex:t.editedColumnIndex},b,ue(this._td,this)),h.push(d)),r){if(w&&(a=(t.viewChildrenMap||{})[c]||[]),0===a.length)continue;h=h.concat(this._trs({columns:b,editedColumn:t.editedColumn,editedColumnIndex:t.editedColumnIndex,aggregates:m,selected:t.selected,visible:w?t.visible:t.visible&&!!n.expanded,data:a,childrenMap:t.childrenMap||k,viewChildrenMap:t.viewChildrenMap,level:p+1}))}return this._hasFooterTemplate()&&n&&(i={className:mt.footerTemplate,"data-parentId":n[_]},t.visible||(i.style={display:"none"}),h.push(this._tds({model:m[n[_]],attr:i,level:p,editedColumn:t.editedColumn,editedColumnIndex:t.editedColumnIndex},b,this._footerId))),h},_footerId:function(t){var n=[],i=t.column,o=t.column.footerTemplate||e.noop,r=t.model[i.field]||{},a={role:"gridcell",style:i.hidden===!0?{display:"none"}:{}};return i.expandable&&(n=n.concat(s({level:t.level+1,className:mt.iconPlaceHolder}))),i.attributes&&de(!0,a,i.attributes,{style:i.hidden===!0?{display:"none"}:{}}),n.push(Q(o(r)||"")),Y("td",a,n)},_hasFooterTemplate:function(){return!!pe(this.columns,function(e){return e.footerTemplate}).length},_tds:function(e,t,n){var i,o,r,a=[],s=(e.editedColumn||{}).field,l=this._isIncellEditable(),c=t.length;for(o=0;o<c;o++)i=t[o],r=n({model:e.model,column:i,editColumn:!l||l&&i.field===s&&e.editedColumnIndex===o,level:e.level}),a.push(r);return Y("tr",e.attr,a)},_td:function(e){var t,n=[],i=e.model,o=e.column,r={role:"gridcell",style:o.hidden===!0?{display:"none"}:{}},a=this._isIncellEditable(),l=!1;return o.attributes&&de(!0,r,o.attributes),i._edit&&o.field&&e.editColumn&&(a||!a&&z(o,i))?(r[kendo.attr("container-for")]=o.field,a&&(r.className&&r.className.indexOf(mt.editCell)!==-1?r.className+=" "+mt.editCell:r.className||(r.className=mt.editCell))):(o.expandable&&(n=s({level:e.level,className:mt.iconPlaceHolder}),t=[mt.icon],t.push(i.hasChildren?i.expanded?mt.iconCollapse:mt.iconExpand:mt.iconHidden),i._error?t.push(mt.refresh):!i.loaded()&&i.expanded&&t.push(mt.loading),n.push(Y("span",{className:t.join(" ")})),r.style["white-space"]="nowrap"),B(o,i)&&(r.className?r.className+=mt.dirtyCell:r.className||(r.className=mt.dirtyCell)),o.command?(r.className&&r.className.indexOf("k-command-cell")!==-1?r.className+=" k-command-cell":r.className||(r.className="k-command-cell"),l=pe(o.command,function(e){return e===De||e.name===De}).length>0,n=this._buildCommands(i._edit&&!this._isIncellEditable()&&l?["update","canceledit"]:o.command)):n.push(this._cellContent(o,i)),r["class"]&&(r.className=r["class"]+" "+r.className)),Y("td",r,n)},_cellContent:function(e,t){var n,i=this,o=i._isIncellEditable(),r=o?i._evalDirtyIndicatorTemplate(e,t):"";return e.template?n=i._evalColumnTemplate(e,t):e.field?(n=t.get(e.field),null===n||L(n)?n=r:(e.format&&(n=kendo.format(e.format,n)),n=r+n)):(null===n||L(n))&&(n=""),e.template||!e.encoded?Q(n):o?Q(n):K(n)},_evalColumnTemplate:function(e,t){return this._isIncellEditable()?this._evalCustomColumnTemplate(e,t):e.template(t)},_evalCustomColumnTemplate:function(e,t){var n=this,i=n._customTemplateSettings(),o="#=this.columnTemplate("+i.paramName+")#",r=n._dirtyIndicatorTemplate(e.field)+o,a=ue(se(r,i),{columnTemplate:e.template});return a(t)},_evalDirtyIndicatorTemplate:function(e,t){var n=this._dirtyIndicatorTemplate(e.field);return se(n)(t)},_dirtyIndicatorTemplate:function(e){var t,n=this,i=n._customTemplateSettings(),o=i.paramName;return e&&o?(t="["===e.charAt(0)?kendo.expr(e,o+".dirtyFields"):o+".dirtyFields['"+e+"']","#= "+o+" && "+o+".dirty && "+o+".dirtyFields && "+t+" ? '<span class=\"k-dirty\"></span>' : '' #"):""},_customTemplateSettings:function(){return de({},kendo.Template,this.options.templateSettings)},_buildCommands:function(e){var t,n=[];for(t=0;t<e.length;t++)n.push(this._button(e[t]));return n},_button:function(e){var t=(e.name||e).toLowerCase(),n=this.options.messages.commands[t],i=[];return e=de({},vt[t],{text:n},e),e.imageClass&&i.push(Y("span",{className:["k-icon",e.imageClass].join(" ")})),Y("button",{type:"button","data-command":t,className:["k-button k-button-icontext",e.className].join(" ")},i.concat([K(e.text||e.name)]))},_positionResizeHandle:function(n){var i,o,r,s=e(n.currentTarget),l=this.resizeHandle,c=s.position(),d=X(s),u=s.closest("div"),h=t!==n.buttons?n.buttons:n.which||n.button,p=this.options.columnResizeHandleWidth||3,f=d;if(t===h||0===h){if(l||(l=this.resizeHandle=e('<div class="k-resize-handle"><div class="k-resize-handle-inner" /></div>')),i=a(s.closest("thead")).filter(":visible"),dt)f=s.position().left;else for(o=0;o<i.length&&i[o]!=s[0];o++)f+=i[o].offsetWidth;u.append(l),l.show().css({top:c.top,left:f-3*p/2,height:Z(s),width:3*p}).data("th",s),r=this,l.off("dblclick"+xe).on("dblclick"+xe,function(){var t=s.index();e.contains(r.thead[0],s[0])&&(t+=pe(r.columns,function(e){return e.locked&&!e.hidden}).length),r.autoFitColumn(t)})}},autoFitColumn:function(t){var n,i,r,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k=this,y=k.options,x=k.columns,C=kendo.support.browser,S=k.lockedHeader?a(k.lockedHeader.find(">table>thead")).filter(o).length:0;if(t="number"==typeof t?x[t]:ge(t)?pe(x,function(e){return e===t})[0]:pe(x,function(e){return e.field===t})[0],t&&!t.hidden){for(n=fe(t,x),s=t.locked,r=s?k.lockedHeader.children("table"):k.thead.parent(),i=r.find("[data-index='"+n+"']"),c=s?k.lockedTable:k.table,d=k.footer||e(),k.footer&&k.lockedContent&&(d=k.footer.children(s?".k-grid-footer-locked":".k-grid-footer-wrap")),u=d.find("table").first(),k.lockedHeader&&S>=n&&!s&&(n-=S),h=0;h<x.length&&x[h]!==t;h++)x[h].hidden&&n--;if(l=y.scrollable?r.find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+n+")").add(c.children("colgroup").find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+n+")")).add(u.find("colgroup").find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+n+")")):c.children("colgroup").find("col:not(.k-group-col):not(.k-hierarchy-col):eq("+n+")"),p=r.add(c).add(u),f=X(i),l.width(""),p.css("table-layout","fixed"),l.width("auto"),p.addClass("k-autofitting"),p.css("table-layout",""),g=Math.ceil(Math.max(X(i),X(c.find("tr").eq(0).children("td:visible").eq(n)),X(u.find("tr").eq(0).children("td:visible").eq(n)))),l.width(g),t.width=g,y.scrollable){for(m=r.find("col"),_=0,b=0,w=m.length;b<w;b+=1){if(v=m[b].style.width,!v||v.indexOf("%")!=-1){_=0;break}_+=parseInt(v,10)}_&&p.each(function(){this.style.width=_+"px"})}C.msie&&8==C.version&&(p.css("display","inline-table"),setTimeout(function(){p.css("display","table")},1)),p.removeClass("k-autofitting"),k.trigger($e,{column:t,oldWidth:f,newWidth:g}),k._applyLockedContainersWidth(),k._syncLockedContentHeight(),k._syncLockedHeaderHeight()}},_adjustLockedHorizontalScrollBar:function(){var e=this.table,t=e.parent(),n=e[0].offsetWidth>t[0].clientWidth?kendo.support.scrollbar():0;this.lockedContent.height(t.height()-n)},_syncLockedContentHeight:function(){this.lockedTable&&(this._touchScroller||this._adjustLockedHorizontalScrollBar(),this._adjustRowsHeight(this.table,this.lockedTable))},_syncLockedHeaderHeight:function(){var e,t;this.lockedHeader&&(e=this.lockedHeader.children("table"),t=this.thead.parent(),this._adjustRowsHeight(e,t),c(e,t))},_resizable:function(){if(this.options.resizable){this.resizable&&this.resizable.destroy();var t=this;e(this.lockedHeader).find("thead").add(this.thead).on("mousemove"+xe,"th",e.proxy(this._positionResizeHandle,this)),this.resizable=new kendo.ui.Resizable(this.wrapper,{handle:".k-resize-handle",start:function(n){var i,o,r=e(n.currentTarget).data("th"),s=e.inArray(r[0],a(r.closest("thead")).filter(":visible")),l="col:eq("+s+")";t.wrapper.addClass("k-grid-column-resizing"),t.lockedHeader&&e.contains(t.lockedHeader[0],r[0])?(i=t.lockedHeader,o=t.lockedTable):(i=t.thead.parent(),o=t.table),this.col=o.children("colgroup").find(l).add(i.find(l)),this.th=r,this.startLocation=n.x.location,this.columnWidth=X(r),this.table=this.col.closest("table"),this.totalWidth=this.table.width()},resize:function(e){var t=dt?-1:1,n=11,i=e.x.location*t-this.startLocation*t;this.columnWidth+i<n&&(i=n-this.columnWidth),this.table.width(this.totalWidth+i),this.col.width(this.columnWidth+i)},resizeend:function(){var e,n,i;t.wrapper.removeClass("k-grid-column-resizing"),e=this.th.attr("data-field"),n=pe(f(t.columns),function(t){return t.field==e}),i=Math.floor(X(this.th)),n[0].width=i,t._resize(),t._syncLockedContentHeight(),t._syncLockedHeaderHeight(),t.trigger($e,{column:n,oldWidth:this.columnWidth,newWidth:i}),this.table=this.col=this.th=null}})}},_sortable:function(){var n,i,o,s,l,c,d,u=this.options.sortable,h=pe(this.columns,function(e){return e.columns!==t}).length>0;if(u)for(s=h?this.lockedHeader?r(a(this.lockedHeader.find(">table>thead")).add(a(this.thead))):a(this.thead):e(this.lockedHeader).add(this.thead).find("th"),n=f(this.columns),c=0,d=s.length;c<d;c++)i=n[c],i.sortable!==!1&&!i.command&&i.field&&(l=s.eq(c),o=l.data("kendoColumnSorter"),o&&o.destroy(),l.kendoColumnSorter(de({},u,i.sortable,{dataSource:this.dataSource})))},_filterable:function(){var n,i,o,r,s,l,c,d,u,h=this.options.filterable,p=pe(this.columns,function(e){return e.columns!==t}).length>0;if(h&&!this.options.columnMenu)for(d=ue(function(e){this.trigger(Ve,{field:e.field,container:e.container})},this),u=ue(function(e){this.trigger(We,{field:e.field,container:e.container})},this),n=p?this.lockedHeader?a(this.lockedHeader.find(">table>thead")).add(a(this.thead)):a(this.thead):e(this.lockedHeader).add(this.thead).find("th"),r=f(this.columns),i=0,o=n.length;i<o;i++)s=r[i],l=n.eq(i),c=l.data("kendoFilterMenu"),c&&c.destroy(),s.command||s.filterable===!1||l.kendoFilterMenu(de(!0,{},h,s.filterable,{dataSource:this.dataSource,init:d,open:u}))},_change:function(){this.trigger(_e)},_isLocked:function(){return null!==this.lockedHeader},_selectable:function(){var n,i,o,r,a=this,s=this.options.selectable,l=this.table,c=a._isLocked();s&&(s=kendo.ui.Selectable.parseOptions(s),this._hasLockedColumns&&(l=l.add(this.lockedTable),i=s.multiple&&s.cell),n=">tbody>tr:not(.k-footer-template)",s.cell&&(n+=">td"),this.selectable=new kendo.ui.Selectable(l,{filter:n,aria:!0,multiple:s.multiple,change:ue(this._change,this),useAllItems:i,continuousItems:ue(this._continuousItems,this,n,s.cell),relatedTarget:!s.cell&&this._hasLockedColumns?ue(this._selectableTarget,this):t}),a.options.navigatable&&(o=s.multiple,r=s.cell,l.on("keydown"+xe,function(n){var i=a.current(),s=n.target;if(n.keyCode===J.SPACEBAR&&!n.shiftKey&&e.inArray(s,l)>-1&&!i.is(".k-header")){if(n.preventDefault(),n.stopPropagation(),i=r?i:i.parent(),c&&!r&&(i=i.add(a._relatedRow(i))),o)if(n.ctrlKey){if(i.hasClass(mt.selected))return i.removeClass(mt.selected),a.trigger(_e),t}else a.selectable.clear();else a.selectable.clear();r||(a.selectable._lastActive=i),a.selectable.value(i)}else!r&&(n.shiftKey&&n.keyCode==J.LEFT||n.shiftKey&&n.keyCode==J.RIGHT||n.shiftKey&&n.keyCode==J.UP||n.shiftKey&&n.keyCode==J.DOWN||n.keyCode===J.SPACEBAR&&n.shiftKey)&&(n.preventDefault(),n.stopPropagation(),i=i.parent(),c&&(i=i.add(a._relatedRow(i))),o?(a.selectable._lastActive||(a.selectable._lastActive=i),a.selectable.selectRange(a.selectable._firstSelectee(),i)):(a.selectable.clear(),a.selectable.value(i)))})))},_continuousItems:function(t,n){var i,o,r,a,s,l;if(this.lockedContent){for(i=e(t,this.lockedTable),o=e(t,this.table),r=n?E(this.columns).length:1,a=n?this.columns.length-r:1,s=[],l=0;l<i.length;l+=r)me.apply(s,i.slice(l,l+r)),me.apply(s,o.splice(0,a));return s}},_selectableTarget:function(t){var n,i,o,r=e();for(i=0,o=t.length;i<o;i++)n=this._relatedRow(t[i]),fe(n[0],t)<0&&(r=r.add(n));return r},_relatedRow:function(t){var n,i,o=this.lockedTable;return t=e(t),o?(n=t.closest(this.table.add(this.lockedTable)),i=n.find(">tbody>tr").index(t),n=n[0]===this.table[0]?o:this.table,n.find(">tbody>tr").eq(i)):t},select:function(n){var i=this.selectable;return i?(t!==n&&(i.options.multiple||(i.clear(),n=n.first()),this._hasLockedColumns&&(n=n.add(e.map(n,ue(this._relatedRow,this))))),i.value(n)):e()},clearSelection:function(){var e=this.select();e.length&&(this.selectable.clear(),this.trigger(_e))},_dataSource:function(e){var n=this,i=this.dataSource,o=n.options.pageable;i&&(i.unbind(_e,this._refreshHandler),i.unbind(we,this._errorHandler),i.unbind(ke,this._progressHandler)),this._refreshHandler=ue(this.refresh,this),this._errorHandler=ue(this._error,this),this._progressHandler=ue(this._progress,this),ge(e)&&(de(e,{table:n.table,fields:n.columns}),ge(o)&&o.pageSize!==t&&(e.pageSize=o.pageSize)),i=this.dataSource=O.create(e),o&&(i._collapsedTotal=t),i.bind(_e,this._refreshHandler),i.bind(we,this._errorHandler),i.bind(ke,this._progressHandler),this._dataSourceFetchProxy=ue(function(){this.dataSource.fetch()},this)},setDataSource:function(e){this._dataSource(e),this._sortable(),this._filterable(),this._columnMenu(),this._pageable(),this._contentTree.render([]),this.options.autoBind&&this.dataSource.fetch()},dataItem:function(t){var n,i,o;return t instanceof N?t:(n=e(t).closest("tr"),i=n.attr(kendo.attr("uid")),o=L(i)?null:this.dataSource.getByUid(i))},editRow:function(e){var n,i=this;if(!this._isIncellEditable()&&this.options.editable&&(typeof e===ve&&(e=this.tbody.find(e)),n=i._isPageable()&&i._isPopupEditable()&&e instanceof N?e:this.dataItem(e))){if(i.editor?(n._edit=!0,this._render(),this._cancelEditor()):i._preventPageSizeRestore=!1,"popup"!=this._editMode()&&(n._edit=!0),this.trigger(Te,{model:n}))return i.dataSource._restorePageSizeAfterAddChild(),t;this._render(),this._createEditor(n),this.trigger(De,{container:this.editor.wrapper,model:n})}},_cancelEdit:function(t){if(this.editor){var n;t=de(t,{container:this.editor.wrapper,model:this.editor.model}),this.trigger(Ne,t)||(this.options.navigatable&&(n=this.items().index(e(this.current()).parent())),this.cancelRow(),this.options.navigatable&&(this.current(this.items().eq(n).children().filter(ot).first()),R(this.table,!0)))}},cancelRow:function(){this._isIncellEditable()||(this._cancelEditor(),this._render())},saveRow:function(){var e,t=this.editor;this._isIncellEditable()||t&&(e={model:t.model,container:t.wrapper},t.end()&&!this.trigger(Ie,e)&&this.dataSource.sync())},addRow:function(e){var n=this,i=n.dataSource,o=n._isPageable(),r=n._isIncellEditable(),a=n._isInlineEditable(),s=this.editor,l=0,c={};if((!s||s.end())&&this.options.editable)return e?(e instanceof N||(e=this.dataItem(e)),c[e.parentIdField]=e.id,l=this.dataSource.indexOf(e)+1,this.expand(e).then(function(){var t=o&&i._isLastItemInView(e)&&(r||a);n._insertAt(c,l,t)}),t):(this._insertAt(c,l),t)},_insertAt:function(e,t,n){var i,o,r=this,a=r.dataSource;e=r.dataSource.insert(t,e),n&&a._setAddChildPageSize(),i=this._itemFor(e),r._isIncellEditable()?(o=i.children("td").eq(r._firstEditableColumnIndex(i)),r.editCell(o)):i&&i[0]?r.editRow(i):r._isPageable()&&r._isPopupEditable()&&r.editRow(e)},_firstEditableColumnIndex:function(e){var t,n,i=this,o=i.dataItem(e),r=f(i.columns),a=r.length;for(n=0;n<a;n++)if(t=r[n],o&&(!o.editable||o.editable(t.field))&&!t.command&&t.field&&t.hidden!==!0)return n;return-1},removeRow:function(t){var n=this.dataItem(t),i={model:n,row:t};this.options.editable&&n&&!this.trigger(ze,i)&&(document.activeElement===e(t).find(".k-grid-delete")[0]&&e(t).find(".k-grid-delete").blur(),this.dataSource.remove(n),this._isIncellEditable()||this.dataSource.sync())},_cancelEditor:function(){var e,t=this,n=t.editor;n&&(e=n.model,t._destroyEditor(),t._isIncellEditable()?t._shouldRestorePageSize()&&t.dataSource._restorePageSizeAfterAddChild():t.dataSource.cancelChanges(e),e._edit=!1),t._preventPageSizeRestore=!1},_shouldRestorePageSize:function(){var e=this;return e._isPageable()&&e._isIncellEditable()&&!e._preventPageSizeRestore},_destroyEditor:function(){this.editor&&(this.editor.close(),this.editor=null)},_createEditor:function(e){var t,n,i,o=this.itemFor(e),r=f(this.columns),a=[];for(t=0;t<r.length;t++)a.push(de({},r[t])),delete a[t].parentColumn;o=o.add(this._relatedRow(o)),n=this._editMode(),i={columns:a,model:e,target:this,clearContainer:!1,template:this.options.editable.template},"inline"==n?this.editor=new W(o,i):(de(i,{window:this.options.editable.window,commandRenderer:ue(function(){return this._buildCommands(["update","canceledit"])},this),fieldRenderer:ue(this._cellContent,this),save:ue(this.saveRow,this),cancel:ue(this._cancelEdit,this),appendTo:this.wrapper}),this.editor=new U(o,i))},_createIncellEditor:function(e,t){var n=this,i=de({},t.columns[0]);return delete i.parentColumn,new q(e,de({},{fieldRenderer:ue(n._cellContent,n),appendTo:n.wrapper,clearContainer:!1,target:n,columns:[i],model:t.model,change:t.change}))},editCell:function(t){var n,i,o=this;t=e(t),n=f(o.columns)[o.cellIndex(t)],i=o.dataItem(t),o._isIncellEditable()&&i&&z(n,i)&&o._editCell(t,n,i)},_editCell:function(e,n,i){var o,r=this;return r.trigger(Te,{model:i})?(r.dataSource._restorePageSizeAfterAddChild(),t):(r.closeCell(),i._edit=!0,r._cancelEditor(),r._render({editedColumn:n,editedColumnIndex:e.index()}),o=r.table.add(r.lockedTable).find(ye+mt.editCell).first(),r.editor=r._createIncellEditor(o,{columns:[n],model:i,change:function(t){r.trigger(Ie,{values:t.values,container:e,model:i})&&t.preventDefault()}}),r._current=o,r.trigger(De,{container:e,model:i}),t)},closeCell:function(e){var t,n,i=this,o=(i.editor||{}).element;o&&o[0]&&i._isIncellEditable()&&(n=i.dataItem(o),e&&i.trigger(Ne,{container:o,model:n})||(i.trigger(Pe,{type:e?Ne:Ie,model:n,container:o}),i._cancelEditor(),o.removeClass(mt.editCell),t=o.parent().removeClass(mt.editRow),i.lockedContent&&i._relatedRow(t).removeClass(mt.editRow),i._render(),i.trigger(be,{item:t,data:n,ns:ee}),i.lockedContent&&P(t.css("height","")[0],i._relatedRow(t).css("height","")[0])))},cancelChanges:function(){this.dataSource.cancelChanges()},saveChanges:function(){var e=this,t=(e.editor||{}).editable,n=t&&t.end();!n&&t||e.trigger(Me)||e.dataSource.sync()},_editMode:function(){var e="inline",t=this.options.editable;return t!==!0&&(e="string"==typeof t?t:t.mode||e),e.toLowerCase()},_isIncellEditable:function(){return this._editMode()===ht},_isInlineEditable:function(){return this._editMode()===pt},_isPopupEditable:function(){return this._editMode()===ft},hideColumn:function(e){this._toggleColumnVisibility(e,!0)},showColumn:function(e){this._toggleColumnVisibility(e,!1)},_toggleColumnVisibility:function(e,t){e=this._findColumn(e),e&&e.hidden!==t&&(e.hidden=t,this._setParentsVisibility(e,!t),this._ensureExpandableColumn(),this._clearColsCache(),this._renderCols(),this._renderHeader(),this._render(),this._adjustTablesWidth(),this.trigger(t?Ue:qe,{column:e}),t||e.width||this.table.add(this.thead.closest("table")).width(""),this._updateFirstColumnClass())},_findColumn:function(e){return e="number"==typeof e?this.columns[e]:ge(e)?pe(f(this.columns),function(t){return t===e})[0]:pe(f(this.columns),function(t){return t.field===e})[0]},_adjustTablesWidth:function(){var e,t,n,i=this.thead.prev().children(),o=0;for(e=0,t=i.length;e<t;e++){if(n=i[e].style.width,!n||n.indexOf("%")!=-1){o=0;break}o+=parseInt(n,10)}o&&this.table.add(this.thead.closest("table")).width(o)},_reorderable:function(){var t,n,i;this.options.reorderable&&(t=this.options.scrollable===!0,n=(t?".k-grid-header:first ":"table:first>.k-grid-header ")+je,i=this,this._draggableInstance=new ee.Draggable(this.wrapper,{group:kendo.guid(),filter:n,hint:function(t){return e('<div class="k-header k-reorder-clue k-drag-clue" />').html(t.attr(kendo.attr("title"))||t.attr(kendo.attr("field"))||t.text()).prepend('<span class="k-icon k-drag-status k-i-cancel" />')}}),this.reorderable=new ee.Reorderable(this.wrapper,{draggable:this._draggableInstance,dragOverContainers:ue(this._allowDragOverContainers,this),inSameContainer:function(t){return e(t.source).parent()[0]===e(t.target).parent()[0]&&w(b(i.columns),i.columns,t.sourceIndex,t.targetIndex)>-1},change:function(e){var t=b(i.columns),n=t[e.oldIndex],o=w(t,i.columns,e.oldIndex,e.newIndex);i.trigger(Ge,{newIndex:o,oldIndex:fe(n,t),column:n}),i.reorderColumn(o,n,"before"===e.position)}}))},_allowDragOverContainers:function(e,t){var n=b(this.columns);return n[e].lockable!==!1&&w(n,this.columns,e,t)>-1},_reorderTrees:function(n,i,o,r,a,s,l,c){var d,u,h,f,g,m,v,_,b=e(),w=a.find("tr:eq("+r[0].rowIndex+")"),k=s.children[r[0].rowIndex],y=w.children(),x=l?n[0]:n[n.length-1];for(_=0;_<r.length;_++)u=r[_].cellIndex,b=b.add(y.eq(u)),d=o.children[x.rowIndex].children,o===s&&l&&(u+=_),d.splice(l?x.cellIndex+_:x.cellIndex+1+_,0,k.children[u]);if(o===s&&l?k.children.splice(r[0].cellIndex+r.length,r.length):k.children.splice(r[0].cellIndex,r.length),h=i.find("tr:eq("+x.rowIndex+")"),v=h.find(">th.k-header:eq("+x.cellIndex+")"),v.length&&b[0]!==v[0]&&b[l?"insertBefore":"insertAfter"](v),c>=r[0].rowIndex+1&&1!=c){for(f=[],_=0;_<r.length;_++)r[_].columns&&(f=f.concat(r[_].columns));if(!f.length)return;for(g=[],_=0;_<n.length;_++)n[_].columns&&(g=g.concat(n[_].columns));if(!g.length&&(i!==a||x.cellIndex-r[0].cellIndex>1||r[0].cellIndex-x.cellIndex>1)&&(m=p(this.columns,x,r[0],l,this.columns),g=[m],!m&&f.length&&i.find("tr").length>r[0].rowIndex+1))return this._insertTree(f,a,s,i,o),t;if(!g.length)return;this._reorderTrees(g,i,o,f,a,s,l,c)}},_insertTree:function(t,n,i,o,r){var a,s=[],l=e(),c=n.find("tr:eq("+t[0].rowIndex+")"),d=i.children[t[0].rowIndex];for(a=0;a<t.length;a++)t[a].columns&&(s=s.concat(t[a].columns)),r.children[t[0].rowIndex].children.splice(a,0,d.children[t[a].rowIndex]),l=l.add(c.find(">th.k-header:eq("+t[a].cellIndex+")"));i.children[t[0].rowIndex].children.splice(t[0].cellIndex,t.length),o.find("tr:eq("+t[0].rowIndex+")").append(l),s.length&&this._insertTree(s,n,i,o,r)},_reorderHeader:function(e,t,n){var i,o,r=t.columns?A([t]):1,a=e.columns?A([e]):1,s=u(t),l=u(e),c=l?this.lockedHeader:this.thead,d=s?this.lockedHeader:this.thead,h=l?this._lockedHeaderTree:this._headerTree,p=s?this._lockedHeaderTree:this._headerTree,f=c.find("tr");if(r===a||r<f.length)this._reorderTrees([e],c,h,[t],d,p,n,r),M(c,h),F(d,p);else{if(c!==d)for(i=r-f.length,f.each(function(e){var t,n=this.cells;for(t=0;t<n.length;t++)n[t].colSpan<=1&&n[t].attributes.rowspan&&(h.children[e].children[t].attr.rowSpan+=i,n[t].rowSpan+=i)}),o=0;o<i;o++)h.children.push(Y("tr",{role:"row"})),c.is("thead")?c.append("<tr role='row'></tr>"):c.find("thead").append("<tr role='row'></tr>");this._reorderTrees([e],c,h,[t],d,p,n,r),F(d,p)}},reorderColumn:function(n,i,o){var r,a,s,l=i.parentColumn,c=l?l.columns:this.columns,d=fe(i,c),u=c[n],h=!!u.locked,p=pe(this.columns,function(e){return e.columns!==t}).length>0,g=I(c).length;d!==n&&(h&&!i.locked&&1==g||!h&&i.locked&&c.length-g==1||(o===t&&(o=n<d),p&&this._reorderHeader(u,i,o),r=!!i.locked,r=r!=h,i.locked=h,c.splice(o?n:n+1,0,i),c.splice(d<n?d:d+1,1),this._setColumnDataIndexes(f(this.columns)),this._clearColsCache(),this._renderCols(),p?this.lockedHeader?(c=I(this.columns),this._prepareColumns([{rowSpan:1,cells:[],index:0}],c),c=E(this.columns),this._prepareColumns([{rowSpan:1,cells:[],index:0}],c)):this._prepareColumns([{rowSpan:1,cells:[],index:0}],this.columns):(a=e(this.lockedHeader).add(this.thead).find("th"),a.eq(d)[o?"insertBefore":"insertAfter"](a.eq(n)),s=this._headerTree.children[0].children,this._hasLockedColumns&&(s=this._lockedHeaderTree.children[0].children.concat(s)),s.splice(o?n:n+1,0,s[d]),s.splice(d<n?d:d+1,1),this._hasLockedColumns&&(this._lockedHeaderTree.children[0].children=s.splice(0,E(c).length),this._headerTree.children[0].children=s)),this._updateColumnCellIndex(),this._applyLockedContainersWidth(),this._syncLockedHeaderHeight(),this._updateFirstColumnClass(),this.refresh(),r&&(h?this.trigger(Qe,{column:i}):this.trigger(Xe,{column:i}))))},lockColumn:function(e){var t,n=this.columns;e="number"==typeof e?n[e]:pe(n,function(t){return t.field===e})[0],e&&!e.hidden&&(t=E(n).length-1,this.reorderColumn(t,e,!1))},unlockColumn:function(e){var t,n=this.columns;e="number"==typeof e?n[e]:pe(n,function(t){return t.field===e})[0],e&&!e.hidden&&(t=E(n).length,this.reorderColumn(t,e,!0))},_columnMenu:function(){var n,i,o,s,l,c,d=e(this.lockedHeader).add(this.thead).find("th"),u=this.columns,h=this.options,p=h.columnMenu,g=ue(this._columnMenuInit,this),m=ue(this._columnMenuOpen,this),v=E(u).length,_=pe(this.columns,function(e){return e.columns!==t}).length>0;if(_?(u=f(u),d=this.lockedHeader?r(a(this.lockedHeader.find(">table>thead")).add(a(this.thead))):a(this.thead)):d=e(this.lockedHeader).add(this.thead).find("th"),p)for("boolean"==typeof p&&(p={}),c=0;c<d.length;c++)n=u[c],n.field&&(i=d.eq(c).data("kendoColumnMenu"),i&&i.destroy(),s=!1,n.sortable!==!1&&p.sortable!==!1&&h.sortable!==!1&&(s=de({},h.sortable,{compare:(n.sortable||{}).compare})),l=!1,h.filterable&&n.filterable!==!1&&p.filterable!==!1&&(l=de({pane:this.pane},n.filterable,h.filterable)),o={dataSource:this.dataSource,values:n.values,columns:p.columns,sortable:s,filterable:l,messages:p.messages,owner:this,closeCallback:e.noop,init:g,open:m,pane:this.pane,lockedColumns:!_&&n.lockable!==!1&&v>0},h.$angular&&(o.$angular=h.$angular),d.eq(c).kendoColumnMenu(o))},_columnMenuInit:function(e){this.trigger(Ye,{field:e.field,container:e.container})},_pageable:function(){var t,n=this,i=n.options.pageable;i&&(t=n.wrapper.children("div.k-grid-pager"),t.length||(t=e('<div class="k-pager-wrap k-grid-pager"/>').appendTo(n.wrapper)),n._destroyPager(),"object"==typeof i&&i instanceof kendo.ui.TreeListPager?n.pager=i:n.dataSource&&!n.dataSource.options.serverPaging&&n._createPager(t),n.pager&&n.pager.bind(Ee,function(e){n.trigger(Ae,{page:e.index})&&e.preventDefault()}))},_createPager:function(e,t){var n=this;n.pager=new V(e,de({},n.options.pageable,{dataSource:n.dataSource},t))},_destroyPager:function(){this.pager&&this.pager.destroy()},_isPageable:function(){var e=this;return e.options.pageable&&(!e.dataSource||e.dataSource&&e.dataSource._isPageable())},_togglePagerVisibility:function(){var e=this,t=e.options.pageable;t&&(ge(t)||t instanceof V)&&t.alwaysVisible===!1&&e.wrapper.find(".k-grid-pager").toggle((e.dataSource.collapsedTotal()||0)>=e.dataSource.pageSize())}}),kendo.ExcelMixin&&kendo.ExcelMixin.extend(j.prototype),kendo.PDFMixin&&(kendo.PDFMixin.extend(j.prototype),j.prototype._drawPDF=function(n){function i(){s&&c!==t?(a.unbind("change",o),a.one("change",function(){r.resolve(l)}),a.page(c)):r.resolve(l)}function o(){d._drawPDFShadow({width:d.wrapper.width()},{avoidLinks:d.options.pdf.avoidLinks}).done(function(e){var t=a.page(),o=s?a.totalPages():1,r={page:e,pageNumber:t,progress:t/o,totalPages:o};n.notify(r),l.append(r.page),t<o?a.page(t+1):i()}).fail(function(e){r.reject(e)})}var r,a,s,l,c,d=this;return d.options.pdf.paperSize&&"auto"!=d.options.pdf.paperSize?d._drawPDF_autoPageBreak(n):(r=new e.Deferred,a=d.dataSource,s=d.options.pdf.allPages,this._initPDFProgress(n),l=new kendo.drawing.Group,c=a.page(),s?(a.bind("change",o),a.page(1)):o(),r.promise())},j.prototype._initPDFProgress=function(t){var n,i=e("<div class='k-loading-pdf-mask'><div class='k-loading-color'/></div>");i.prepend(this.wrapper.clone().css({position:"absolute",top:0,left:0})),this.wrapper.append(i),n=e("<div class='k-loading-pdf-progress'>").appendTo(i).kendoProgressBar({type:"chunk",chunkCount:10,min:0,max:1,value:0}).data("kendoProgressBar"),t.progress(function(e){n.value(e.progress)}).always(function(){kendo.destroy(i),i.remove()})},j.prototype._drawPDF_autoPageBreak=function(n){function i(){u&&s!==t?(d.one("change",o),d.page(s)):(l.refresh(),o())}function o(){p.appendTo(document.body);var t=e.extend({},l.options.pdf,{_destructive:!0,progress:function(e){n.notify({page:e.page,pageNumber:e.pageNum,progress:.5+e.pageNum/e.totalPages/2,totalPages:e.totalPages})}});kendo.drawing.drawDOM(f,t).always(function(){p.remove()}).then(function(e){c.resolve(e)}).fail(function(e){c.reject(e)})}function r(){var e=d.page(),t=u?d.totalPages():1;a.append(h.find("tr")),e<t?d.page(e+1):(d.unbind("change",r),i())}var a,s,l=this,c=new e.Deferred,d=l.dataSource,u=l.options.pdf.allPages,h=l.wrapper.find('table[role="treeList"] > tbody'),p=e("<div>").css({position:"absolute",left:-1e4,top:-1e4}),f=l.wrapper.clone().css({height:"auto",width:"auto"}).appendTo(p);return f.find(".k-grid-content").css({height:"auto",width:"auto",overflow:"visible"}),f.find('table[role="treeList"], .k-grid-footer table').css({height:"auto",width:"100%",overflow:"visible"}),f.find(".k-grid-pager, .k-grid-toolbar, .k-grouping-header").remove(),f.find(".k-grid-header, .k-grid-footer").css({paddingRight:0}),this._initPDFProgress(n),a=f.find('table[role="treeList"] > tbody').empty(),s=d.page(),u?(d.bind("change",r), +d.page(1)):r(),c.promise()}),de(!0,kendo.data,{TreeListDataSource:O,TreeListModel:N}),ee.plugin(j),ee.plugin(V)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("util/main.min",["kendo.core.min"],e)}(function(){return function(){function e(e){return e*e}function t(e){return"string"!=typeof e&&(e+="px"),e}function n(e){var t,n,i=[];if(e)for(t=c.toHyphens(e).split("-"),n=0;n<t.length;n++)i.push("k-pos-"+t[n]);return i.join(" ")}function i(e){for(var t={1:"i",10:"x",100:"c",2:"ii",20:"xx",200:"cc",3:"iii",30:"xxx",300:"ccc",4:"iv",40:"xl",400:"cd",5:"v",50:"l",500:"d",6:"vi",60:"lx",600:"dc",7:"vii",70:"lxx",700:"dcc",8:"viii",80:"lxxx",800:"dccc",9:"ix",90:"xc",900:"cm",1e3:"m"},n=[1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],i="";e>0;)e<n[0]?n.shift():(i+=t[n[0]],e-=n[0]);return i}function o(e){var t,n,i,o,r;for(e=e.toLowerCase(),t={i:1,v:5,x:10,l:50,c:100,d:500,m:1e3},n=0,i=0,o=0;o<e.length;++o){if(r=t[e.charAt(o)],!r)return null;n+=r,r>i&&(n-=2*i),i=r}return n}function r(e){var t=Object.create(null);return function(){var n,i="";for(n=arguments.length;--n>=0;)i+=":"+arguments[n];return i in t?t[i]:t[i]=e.apply(this,arguments)}}function a(e){return l.test(e)}function s(e,t){function n(e){this.value=e}try{return e.call(t,function(e){throw new n(e)})}catch(i){if(i instanceof n)return i.value;throw i}}var l,c=window.kendo,d=c.deepExtend,u=Date.now;u||(u=function(){return(new Date).getTime()}),d(c,{util:{now:u,renderPos:n,renderSize:t,sqr:e,romanToArabic:o,arabicToRoman:i,memoize:r,isUnicodeLetter:a,withExit:s}}),l=RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]")}(),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("util/parse-xml.min",["kendo.core.min","util/main.min"],e)}(function(){"use strict";function e(e){var t,n=[];for(t=0;t<e.length;++t)n.push(e.charCodeAt(t));return n}function t(e,t){t>65535?(t-=65536,e.push(t>>>10&1023|55296,56320|1023&t)):e.push(t)}function n(e,n){function C(n){var i=e[j++];240&i^240?224&i^224?192&i^192?n.push(i):t(n,(31&i)<<6|63&e[j++]):t(n,(15&i)<<12|(63&e[j++])<<6|63&e[j++]):t(n,(3&i)<<18|(63&e[j++])<<12|(63&e[j++])<<6|63&e[j++])}function S(e){throw Error(e+", at "+j)}function T(t){for(var n=[];j<e.length&&t(e[j]);)n.push(e[j++]);return n}function D(e){return i.apply(0,T(e))}function A(){T(M)}function E(t){var n,i=j;for(n=0;n<t.length;++n)if(e[j++]!=t[n])return j=i,!1;return t}function I(e){E(e)||S("Expecting "+e.join(", "))}function M(e){return 9==e||10==e||13==e||32==e}function F(e){return e>=48&&e<=57}function R(e){return e>=48&&e<=57||(e|=32)>=97&&e<=102}function P(e){return 58==e||95==e||(e|=32)>=97&&e<=122}function z(e){return 45==e||F(e)||P(e)}function B(){for(var t=[];j<e.length;){if(E(s))return q("comment",i.apply(0,t));C(t)}}function L(){var e,t;E(h)?W():E(l)?B():(e=N(),t=U(e),G.push(t),E(c)?q("enter",e,t,!0):(I(f),q("enter",e,t),H(e),e!=N()&&S("Bad closing tag"),q("leave",e,t),A(),I(f)),G.pop())}function H(t){for(var n=[];j<e.length;){if(E(d))return n.length&&q("text",i.apply(0,n));if(E(r))for(;j<e.length&&!E(a);)C(n);else E(p)?(n.length&&q("text",i.apply(0,n)),L(),n=[]):E(v)?V(n):C(n)}S("Unclosed tag "+t)}function N(){return P(e[j])||S("Expecting XML name"),D(z)}function O(){var t,n=E(_)||E(b);for(n||S("Expecting string"),t=[];j<e.length;){if(E(n))return i.apply(0,t);E(v)?V(t):C(t)}S("Unfinished string")}function V(e){var n,i;E(w)?(n=E(k)||E(y)?parseInt(D(R),16):parseInt(D(F),10),isNaN(n)&&S("Bad numeric entity")):(i=N(),n=o[i],void 0===n&&S("Unknown entity "+i)),t(e,n),I(g)}function W(){q("decl",N(),U()),I(u)}function U(t){for(var n,i={$tag:t};j<e.length&&(A(),n=e[j],63!=n&&62!=n&&47!=n);)i[N()]=(I(m),O());return i}function q(e,t,i,o){var r=n&&n[e];r&&r.call($,t,i,o)}var j=0,G=[],$={is:function(e){for(var t=G.length,n=e.length;--t>=0&&--n>=0;)if(G[t].$tag!=e[n]&&"*"!=e[n])return!1;return n<0?G[G.length-1]:null},exit:function(){throw x},stack:G},Y=[];for(C(Y),65279!=Y[0]&&(j=0);j<e.length;)A(),I(p),L(),A()}var i=String.fromCharCode,o={amp:38,lt:60,gt:62,quot:34,apos:39,nbsp:160},r=e("<![CDATA["),a=e("]]>"),s=e("-->"),l=e("!--"),c=e("/>"),d=e("</"),u=e("?>"),h=e("?"),p=e("<"),f=e(">"),g=e(";"),m=e("="),v=e("&"),_=e('"'),b=e("'"),w=e("#"),k=e("x"),y=e("X"),x={};kendo.util.parseXML=function(){try{return n.apply(this,arguments)}catch(e){if(e!==x)throw e}}},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/commands.min",["kendo.core.min","kendo.binder.min","kendo.window.min","kendo.list.min","kendo.tabstrip.min"],e)}(function(){!function(e){function t(e){var t=document.createElement("textarea");n(t).addClass("k-spreadsheet-clipboard").val(e).appendTo(document.body).focus().select(),document.execCommand("copy"),n(t).remove()}var n,i,o,r,a,s,l,c,d,u,h;e.support.browser.msie&&e.support.browser.version<9||(n=e.jQuery,i={AUTO_FILL:"autoFill",CLEAR:"clear",CUT:"cut",EDIT:"edit",PASTE:"paste",VALIDATION:"validation"},o=e.spreadsheet.Command=e.Class.extend({init:function(e){this.options=e,this._workbook=e.workbook,this._property=e&&e.property,this._state={}},range:function(e){return void 0!==e&&this._setRange(e),this._range},_setRange:function(e){this._range=e},redo:function(){this.range().select(),this.exec()},undo:function(){this.setState(this._state)},getState:function(){this._state=this.range().getState(this._property)},setState:function(e){this.range().setState(e)},rejectState:function(e){return this.undo(),{title:e.title,body:e.message,reason:"error",type:"validationError"}},_forEachCell:function(e){var t=this.range(),n=t._ref;n.forEach(function(n){t.sheet().forEach(n.toRangeRef(),e.bind(this))}.bind(this))},usesImage:function(){return!1}}),e.spreadsheet.DrawingUpdateCommand=o.extend({init:function(e){this._sheet=e.sheet,this._drawing=e.drawing,this._orig=this._drawing.clone(),this._previous=e.previous},exec:function(){},undo:function(){this._drawing.reset(this._previous),this._sheet._activeDrawing=this._drawing,this._sheet.triggerChange({layout:!0})},redo:function(){this._drawing.reset(this._orig),this._sheet._activeDrawing=this._drawing,this._sheet.triggerChange({layout:!0})},usesImage:function(e){return this._drawing.image===e||this._orig.image===e||this._previous.image===e}}),r=o.extend({init:function(e){o.fn.init.call(this,e),this._drawing=e.drawing},usesImage:function(e){return this._drawing.image===e}}),e.spreadsheet.InsertImageCommand=r.extend({init:function(e){r.fn.init.call(this,e),this._blob=e.blob,this._width=e.width,this._height=e.height},exec:function(){var e=this.range(),t=e.sheet(),n=this._width,i=this._height,o=n/i;n>i?(n=Math.min(n,300),i=n/o):(i=Math.min(i,300),n=i*o),this._drawing=t.addDrawing({topLeftCell:e.topLeft(),offsetX:5,offsetY:5,width:n,height:i,opacity:1,image:this._workbook.addImage(this._blob)},!0),this._blob=null},undo:function(){var e=this.range().sheet();e._activeDrawing=null,e.removeDrawing(this._drawing)},redo:function(){var e=this.range().sheet();e._activeDrawing=this._drawing,e.addDrawing(this._drawing)}}),e.spreadsheet.DeleteDrawingCommand=r.extend({exec:function(){var e=this.range().sheet();e._activeDrawing=null,e.removeDrawing(this._drawing)},undo:function(){var e=this.range().sheet();e._activeDrawing=this._drawing,e.addDrawing(this._drawing)},redo:function(){this.exec()}}),a=r.extend({exec:function(){var e=this.range().sheet();this._origIndex=e._drawings.indexOf(this._drawing),e._drawings.splice(this._origIndex,1),this._newIndex=this._reorder(),e._drawings.splice(this._newIndex,0,this._drawing),e.triggerChange({drawings:!0})},undo:function(){var e=this.range().sheet();e._drawings.splice(this._newIndex,1),e._drawings.splice(this._origIndex,0,this._drawing),e.triggerChange({drawings:!0})}}),e.spreadsheet.BringToFrontCommand=a.extend({_reorder:function(){return this.range().sheet()._drawings.length}}),e.spreadsheet.SendToBackCommand=a.extend({_reorder:function(){return 0}}),s=o.extend({init:function(e){o.fn.init.call(this,e),this._target=e.target,this._value=e.value},exec:function(){this.getState(),this.setState(this._value)}}),e.spreadsheet.ColumnWidthCommand=s.extend({getState:function(){this._state=this.range().sheet().columnWidth(this._target)},setState:function(e){this.range().sheet().columnWidth(this._target,e)}}),e.spreadsheet.RowHeightCommand=s.extend({getState:function(){this._state=this.range().sheet().rowHeight(this._target)},setState:function(e){this.range().sheet().rowHeight(this._target,e)}}),e.spreadsheet.HyperlinkCommand=o.extend({init:function(e){o.fn.init.call(this,e),this._link=e.link},exec:function(){var e=this.range();this._prevLink=e.link(),this._prevUnderline=e.underline(),e.link(this._link),e.underline(!0),null==e.value()&&(this._hasSetValue=!0,e.value(this._link))},undo:function(){var e=this.range();e.link(this._prevLink),e.underline(this._prevUnderline),this._hasSetValue&&e.value(null)}}),e.spreadsheet.GridLinesChangeCommand=s.extend({getState:function(){this._state=this._range.sheet().showGridLines()},setState:function(e){this._range.sheet().showGridLines(e)}}),l=e.spreadsheet.PropertyChangeCommand=o.extend({_setRange:function(e){o.prototype._setRange.call(this,e.skipHiddenCells())},init:function(e){o.fn.init.call(this,e),this._value=e.value},exec:function(){var e=this.range();e.enable()&&(this.getState(),"format"===this.options.property&&this._workbook.trigger("changeFormat",{range:e}),e[this._property](this._value))}}),e.spreadsheet.ClearContentCommand=o.extend({exec:function(){var e,t,n,o,r,a=[];return this.range().enable()?this.range().canEditArrayFormula()?(this.getState(),e=this.range().skipHiddenCells(),e._ref.refs&&e._ref.refs.length>1?e._ref.refs.forEach(function(t){r=e.sheet().range(t),a=a.concat(r.values())}):a=e.values(),n=[],a.forEach(function(e){t=[],e.forEach(function(){t.push(null)}),n.push(t)}),e.sheet().trigger("changing",{data:n,range:e,changeType:i.CLEAR})?void 0:(e.clearContent(),o=e._getValidationState(),o?this.rejectState(o):void 0)):{reason:"error",type:"intersectsArray"}:{reason:"error",type:"cannotModifyDisabled"}},undo:function(){var e,t=this.range().skipHiddenCells(),n=t.sheet(),o=this._state.data,r=[];o.forEach(function(t){e=[],t.forEach(function(t){e.push(t.value)}),r.push(e)}),n.trigger("changing",{data:r,range:t,changeType:i.CLEAR})||this.setState(this._state)}}),e.spreadsheet.EditCommand=l.extend({init:function(e){e.property=e.property||"input",l.fn.init.call(this,e)},_setRange:function(e){l.prototype._setRange.apply(this,arguments),this._editRange=this.options.arrayFormula?e:e.sheet().activeCellSelection()},getState:function(){this._state=this.range().getState()},exec:function(){return this.range().sheet().withCultureDecimals(this._exec.bind(this))},undo:function(){var e=this._editRange,t=this._state;e.sheet().trigger("changing",{data:t.data[0][0].value,range:e,changeType:i.EDIT})||this.setState(this._state)},_exec:function(){var t,n,o=this.options.arrayFormula,r=this._editRange;if(!r.enable())return{reason:"error",type:"rangeDisabled"};if(!r.canEditArrayFormula())return{reason:"error",type:"intersectsArray"};if(t=this._value,this.getState(),!this.range().sheet().trigger("changing",{data:t,range:this._editRange,changeType:i.EDIT})){if("value"==this._property)return void r.value(t);try{if(r.link(null),""===t?r.value(null):(r.input(t,{arrayFormula:o}),/\n/.test(r.value())&&r.wrap(!0)),r._adjustRowHeight(),n=r._getValidationState())return this.rejectState(n)}catch(a){if(a instanceof e.spreadsheet.calc.ParseError)return{title:"Error in formula",body:a+"",reason:"error"};throw a}}}}),e.spreadsheet.InsertCommentCommand=l.extend({init:function(e){e.property="comment",l.fn.init.call(this,e)}}),e.spreadsheet.TextWrapCommand=l.extend({init:function(e){e.property="wrap",l.fn.init.call(this,e),this._value=e.value},getState:function(){var e={};this.range().forEachRow(function(t){var n=t.topLeft().row;e[n]=t.sheet().rowHeight(n)}),this._state=this.range().getState(this._property),this._rowHeight=e},undo:function(){var e,t=this.range().sheet(),n=this._rowHeight;this.range().setState(this._state);for(e in n)t.rowHeight(e,n[e])}}),e.spreadsheet.AdjustDecimalsCommand=o.extend({init:function(e){this._delta=e.value,e.property="format",o.fn.init.call(this,e)},exec:function(){var t=this.range().sheet(),n=this._delta,i=e.spreadsheet.formatting;this.getState(),t.batch(function(){this.range().forEachCell(function(e,o,r){var a,s=r.format;s||(a=r.value,"number"==typeof a&&/\./.test(a)&&(s="0."+(a+"").split(".")[1].replace(/\d/g,"0"))),(s||n>0)&&(s=i.adjustDecimals(s||"0",n),t.range(e,o).format(s))})}.bind(this))}}),e.spreadsheet.BorderChangeCommand=o.extend({init:function(e){e.property="border",o.fn.init.call(this,e),this._type=e.border,this._style=e.style},_batch:function(e){return this.range().sheet().batch(e,{})},exec:function(){var e=this;e.getState(),e._batch(function(){e[e._type](e._style)})},noBorders:function(){this.range().insideBorders(null),this.outsideBorders(null)},allBorders:function(e){this.range().insideBorders(e),this.outsideBorders(e)},leftBorder:function(e){this.range().leftColumn().borderLeft(e)},rightBorder:function(e){this.range().rightColumn().borderRight(e)},topBorder:function(e){this.range().topRow().borderTop(e)},bottomBorder:function(e){this.range().bottomRow().borderBottom(e)},outsideBorders:function(e){var t=this.range();t.leftColumn().borderLeft(e),t.topRow().borderTop(e),t.rightColumn().borderRight(e),t.bottomRow().borderBottom(e)},insideBorders:function(e){this.range().insideBorders(e),this.outsideBorders(null)},insideHorizontalBorders:function(e){this.range().insideHorizontalBorders(e)},insideVerticalBorders:function(e){this.range().insideVerticalBorders(e)}}),e.spreadsheet.MergeCellCommand=o.extend({init:function(e){o.fn.init.call(this,e),this._type=e.value},exec:function(){this.getState(),this[this._type]()},activate:function(e){this.range().sheet().activeCell(e)},getState:function(){this._state=this.range().getState()},undo:function(){"unmerge"!==this._type&&(this.range().unmerge(),this.activate(this.range().topLeft())),this.range().setState(this._state)},cells:function(){var e=this.range(),t=e._ref;e.merge(),this.activate(t)},horizontally:function(){var e=this.range().topRow()._ref;this.range().forEachRow(function(e){e.merge()}),this.activate(e)},vertically:function(){var e=this.range().leftColumn()._ref;this.range().forEachColumn(function(e){e.merge()}),this.activate(e)},unmerge:function(){var e=this.range(),t=e._ref.topLeft;e.unmerge(),this.activate(t)}}),e.spreadsheet.FreezePanesCommand=o.extend({init:function(e){o.fn.init.call(this,e),this._type=e.value},exec:function(){this.getState(),this._topLeft=this.range().topLeft(),this[this._type]()},getState:function(){this._state=this.range().sheet().getState()},undo:function(){this.range().sheet().setState(this._state)},panes:function(){var e=this._topLeft,t=this.range().sheet();t.frozenColumns(e.col).frozenRows(e.row)},rows:function(){var e=this._topLeft,t=this.range().sheet();t.frozenRows(e.row)},columns:function(){var e=this._topLeft,t=this.range().sheet();t.frozenColumns(e.col)},unfreeze:function(){var e=this.range().sheet();e.frozenRows(0).frozenColumns(0)}}),e.spreadsheet.PasteCommand=o.extend({init:function(e){o.fn.init.call(this,e),this._clipboard=e.workbook.clipboard(),this._clipboard.parse(),this._event=e.event,this._clipboardContent=this._clipboard._content,this._clipboardPasteRef=this._clipboard.pasteRef(),this._sheet=this._workbook.activeSheet(),this._range=this._sheet.range(this._clipboard.pasteRef()),this._state=this._range.getState()},exec:function(){return this.range().sheet().withCultureDecimals(this._exec.bind(this))},undo:function(){var e=this._sheet,t=e.range(this._clipboardPasteRef);e.trigger("changing",{data:this._state.data,range:t,changeType:i.PASTE})||this.setState(this._state)},_exec:function(){var e,t=this._clipboard.canPaste();return t.canPaste?(e=this._sheet.range(this._clipboardPasteRef),this._workbook.trigger("paste",{range:e,clipboardContent:this._clipboardContent})||this._sheet.trigger("changing",{data:this._clipboardContent.data,range:e,changeType:i.PASTE})?void this._event.preventDefault():(this._sheet.range(this._clipboardPasteRef).setState(this._clipboardContent,this._clipboard),void e._adjustRowHeight())):t.menuInvoked?{reason:"error",type:"useKeyboard"}:t.pasteOnMerged?{reason:"error",type:"modifyMerged"}:t.overflow?{reason:"error",type:"overflow"}:t.pasteOnDisabled?(this._event.preventDefault(),{reason:"error",type:"cannotModifyDisabled"}):{reason:"error"}}}),e.spreadsheet.AdjustRowHeightCommand=o.extend({exec:function(){var e=this.options,t=this._workbook.activeSheet(),n=e.range||t.range(e.rowIndex);n._adjustRowHeight()}}),e.spreadsheet.ToolbarPasteCommand=o.extend({exec:function(){return e.support.clipboard.paste?(this._workbook._view.clipboard.focus().select(),void document.execCommand("paste")):{reason:"error",type:"useKeyboard"}}}),e.spreadsheet.CutCommand=o.extend({_eventType:"cut",init:function(e){o.fn.init.call(this,e),this._clipboard=e.workbook.clipboard(),this._event=e.event},exec:function(){var e,t,n,o=this._clipboard.canCopy(),r=[];if(o.canCopy){if(n=this._workbook.activeSheet().selection(),"cut"==this._eventType){if(!n.enable())return this._event.preventDefault(),{reason:"error",type:"cannotModifyDisabled"};this.getState()}if(this._workbook.trigger(this._eventType,{range:n}))this._event.preventDefault();else if("cut"==this._eventType){if(e=n.values(),e.forEach(function(e){t=[],e.forEach(function(){t.push({})}),r.push(t)}),n.sheet().trigger("changing",{data:r,range:n,changeType:i.CUT}))return;this._clipboard.cut()}else this._clipboard.copy()}else{if(o.menuInvoked)return{reason:"error",type:"useKeyboard"};if(o.multiSelection)return{reason:"error",type:"unsupportedSelection"}}},undo:function(){var e=this.range();e.sheet().trigger("changing",{data:this._state.data,range:e,changeType:i.CUT})||this.setState(this._state)}}),e.spreadsheet.CopyCommand=e.spreadsheet.CutCommand.extend({_eventType:"copy",undo:n.noop}),e.spreadsheet.ToolbarCopyCommand=o.extend({init:function(e){o.fn.init.call(this,e),this._clipboard=e.workbook.clipboard()},undo:n.noop,exec:function(){if(!e.support.clipboard.copy)return{reason:"error",type:"useKeyboard"};var n=this._workbook._view.clipboard;t(n.html()),n.trigger("copy")}}),e.spreadsheet.AutoFillCommand=o.extend({init:function(e){o.fn.init.call(this,e)},origin:function(e){this._origin=e},exec:function(){var t,n=this.range();if(!n.enable())return{reason:"error",type:"rangeDisabled"};if(n.intersectingArrayFormula())return{reason:"error",type:"intersectsArray"};this.getState();try{if(t=n._previewFillFrom(this._origin),n.sheet().trigger("changing",{data:t.props,range:t.dest,changeType:i.AUTO_FILL}))return;t.dest._properties(t.props,!0)}catch(o){if(o instanceof e.spreadsheet.Range.FillError)return{reason:"error",type:o.code};throw o}},undo:function(){var e=this.range(),t=this._state;e.sheet().trigger("changing",{data:t.data,range:e,changeType:i.AUTO_FILL})||this.setState(this._state)}}),e.spreadsheet.ToolbarCutCommand=o.extend({init:function(e){o.fn.init.call(this,e),this._clipboard=e.workbook.clipboard()},exec:function(){if(!e.support.clipboard.copy)return{reason:"error",type:"useKeyboard"};var n=this._workbook._view.clipboard;t(n.html()),n.trigger("cut")}}),e.spreadsheet.FilterCommand=o.extend({undo:function(){this.range().filter(this._state)},exec:function(){var e=this.range();this._state=e.hasFilter(),e.filter(!this._state)}}),e.spreadsheet.SortCommand=o.extend({undo:function(){var e=this.range().sheet();e.setState(this._state)},exec:function(){var e,t=this.range(),n=t.sheet(),i=n.activeCell(),o=this.options.sheet?i.topLeft.col:this.options.column||0,r="asc"===this.options.value;return this._state=n.getState(),this.options.sheet&&(t=this.expandRange()),(e=t.cantSort())?{reason:"error",type:e.code}:void t.sort({column:o,ascending:r})},expandRange:function(){var t=this.range().sheet();return new e.spreadsheet.Range(t._sheetRef,t)}}),c=e.spreadsheet.ApplyFilterCommand=o.extend({column:function(){return this.options.column||0},undo:function(){var e=this.range().sheet();e.clearFilter(this.column()),this._state.length&&this.range().filter(this._state)},getState:function(){var e=this.range().sheet(),t=e.filter();t&&(this._state=t.columns.filter(function(e){return e.index==this.column()}.bind(this)))},exec:function(){var t,n,i=this.range(),o=this.column(),r=i.sheet().filter(),a=!1;this.options.valueFilter?n={column:o,filter:new e.spreadsheet.ValueFilter(this.options.valueFilter)}:this.options.customFilter&&(n={column:o,filter:new e.spreadsheet.CustomFilter(this.options.customFilter)}),this.getState(),r&&r.ref.eq(i._ref)&&r.columns.length?(r.columns.forEach(function(e){e.index===o&&(a=!0)}),t=r.columns.map(function(e){return e.index===o?n:{column:e.index,filter:e.filter}}),a||t.push(n)):t=n,i.filter(t)}}),e.spreadsheet.ClearFilterCommand=c.extend({exec:function(){var e=this.range(),t=this.column();this.getState(),e.clearFilter(t)}}),e.spreadsheet.HideLineCommand=o.extend({init:function(e){o.fn.init.call(this,e),this.axis=e.axis},undo:function(){var e=this.range().sheet();e.setAxisState(this._state)},exec:function(){var e=this.range().sheet();this._state=e.getAxisState(),"row"==this.axis?e.axisManager().hideSelectedRows():e.axisManager().hideSelectedColumns()}}),e.spreadsheet.UnHideLineCommand=e.spreadsheet.HideLineCommand.extend({exec:function(){var e=this.range().sheet();this._state=e.getAxisState(),"row"==this.axis?e.axisManager().unhideSelectedRows():e.axisManager().unhideSelectedColumns()}}),d=o.extend({exec:function(){this._expandedRange=this._expand(this.range()),this._state=this._expandedRange.getState(),this._indexes=this._exec(this._expandedRange.sheet())},undo:function(){var e=this,t=e._expandedRange,n=t.sheet();n.batch(function(){e._indexes.forEach(function(t){e._undoOne(n,t),n._restoreModifiedFormulas(t.formulas)}),t.setState(e._state)},{layout:!0,recalc:!0,ref:t._ref})}}),e.spreadsheet.DeleteRowCommand=d.extend({_expand:function(e){return e.resize({left:-(1/0),right:+(1/0)})},_exec:function(e){return e.axisManager().deleteSelectedRows()},_undoOne:function(e,t){e.insertRow(t.index),e.rowHeight(t.index,t.height)}}),e.spreadsheet.DeleteColumnCommand=d.extend({_expand:function(e){return e.resize({top:-(1/0),bottom:+(1/0)})},_exec:function(e){return e.axisManager().deleteSelectedColumns()},_undoOne:function(e,t){e.insertColumn(t.index),e.columnWidth(t.index,t.width)}}),u=o.extend({init:function(e){o.fn.init.call(this,e),this._value=e.value},undo:function(){var e=this,t=e.range().sheet();t.batch(function(){for(var n=e._pos.count;--n>=0;)e._undoOne(t,e._pos.base)},{layout:!0,recalc:!0})}}),e.spreadsheet.AddColumnCommand=u.extend({exec:function(){var e=this.range().sheet(),t=e.axisManager().preventAddColumn();return t?t:void(this._pos="left"===this._value?e.axisManager().addColumnLeft():e.axisManager().addColumnRight())},_undoOne:function(e,t){e.deleteColumn(t)}}),e.spreadsheet.AddRowCommand=u.extend({exec:function(){var e=this.range().sheet(),t=e.axisManager().preventAddRow();return t?t:void(this._pos="above"===this._value?e.axisManager().addRowAbove():e.axisManager().addRowBelow())},_undoOne:function(e,t){e.deleteRow(t)}}),e.spreadsheet.EditValidationCommand=o.extend({init:function(e){o.fn.init.call(this,e),this._value=e.value},exec:function(){var e=this,t=e.range().sheet();this.getState(),t.trigger("changing",{data:e._value,range:e.range(),changeType:i.VALIDATION})||t.withCultureDecimals(function(){e.range().validation(e._value)})},undo:function(){var e=this.range(),t=this._state;e.sheet().trigger("changing",{data:t.data[0][0].validation,range:e,changeType:i.VALIDATION})||this.setState(this._state)}}),e.spreadsheet.OpenCommand=o.extend({cannotUndo:!0,exec:function(){var e,t=this.options.file;return null===t.name.match(/.xlsx$/i)?{reason:"error",type:"openUnsupported"}:(e=this.options.workbook,void e.fromFile(this.options.file).then(function(){var t=e.excelImportErrors;t&&t.length&&e._view.openDialog("importError",{errors:t})}))}}),e.spreadsheet.SaveAsCommand=o.extend({cannotUndo:!0,exec:function(){var e=this.options.name+this.options.extension;".xlsx"===this.options.extension?this.options.workbook.saveAsExcel({fileName:e}):".pdf"===this.options.extension&&this.options.workbook.saveAsPDF(n.extend(this.options.pdf,{workbook:this.options.workbook,fileName:e}))}}),h=o.extend({init:function(e){o.fn.init.call(this,e),this._name=e.name,this._value=e.value},getState:function(){this._state=this._workbook.nameDefinition(this._name)},setState:function(){this._workbook.nameDefinition(this._name,this._state),this._workbook.trigger("change",{recalc:!0})}}),e.spreadsheet.DefineNameCommand=h.extend({exec:function(){this.getState();try{this._workbook.defineName(this._name,this._value),this._workbook.trigger("change",{recalc:!0})}catch(e){return{title:"Error",body:e+"",reason:"error"}}}}),e.spreadsheet.DeleteNameCommand=h.extend({exec:function(){this.getState(),this._workbook.undefineName(this._name),this._workbook.trigger("change",{recalc:!0})}}))}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/formulabar.min",["kendo.core.min"],e)}(function(){!function(e){var t,n,i;e.support.browser.msie&&e.support.browser.version<9||(t=e.jQuery,n={wrapper:"k-spreadsheet-formula-bar"},i=e.ui.Widget.extend({init:function(n,o){e.ui.Widget.call(this,n,o),n=this.element.addClass(i.classNames.wrapper),this.formulaInput=new e.spreadsheet.FormulaInput(t("<div/>").appendTo(n))},destroy:function(){this.formulaInput&&this.formulaInput.destroy(),this.formulaInput=null}}),e.spreadsheet.FormulaBar=i,t.extend(!0,i,{classNames:n}))}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/formulainput.min",["kendo.core.min"],e)}(function(){!function(e,t){function n(e){return"("==e||"["==e||"{"==e}function i(e){return")"==e||"]"==e||"}"==e}function o(e,t){return"("==t?")"==e:"["==t?"]"==e:"{"==t&&"}"==e}function r(e,t){return e.begin<=t.begin&&e.end>=t.end}function a(t){return e.spreadsheet.calc.runtime.FUNCS[t.toLowerCase()]}function s(e,t){return!(!e||!t)&&("ref"==e.type&&"ref"==t.type?e.ref.eq(t.ref):e.value===t.value)}var l,c,d,u,h,p,f,g,m;e.support.browser.msie&&e.support.browser.version<9||(l=e.jQuery,c=e.ui.Widget,d=".kendoFormulaInput",u=e.keys,h={wrapper:"k-spreadsheet-formula-input",listWrapper:"k-spreadsheet-formula-list"},p=["font-family","font-size","font-stretch","font-style","font-weight","letter-spacing","text-transform","line-height"],f={27:"esc",37:"left",39:"right",35:"end",36:"home",32:"spacebar"},g=/(^_|[^a-z0-9]$)/i,m=c.extend({init:function(e,t){c.call(this,e,t),e=this.element,e.addClass(m.classNames.wrapper).attr("contenteditable",!0).attr("spellcheck",!1).css("white-space","pre"),this.options.autoScale&&e.on("input",this.scale.bind(this)),this._highlightedRefs=[],this._staticTokens=[],this._formulaSource(), +this._formulaList(),this._popup(),this._tooltip(),e.on("keydown",this._keydown.bind(this)).on("keyup",this._keyup.bind(this)).on("blur",this._blur.bind(this)).on("input click",this._input.bind(this)).on("focus",this._focus.bind(this)).on("paste",this._paste.bind(this))},options:{name:"FormulaInput",autoScale:!1,filterOperator:"startswith",scalePadding:30,minLength:1},events:["keyup","focus"],enable:function(e){return void 0===e?"true"===this.element.attr("contenteditable"):(e?this.element.attr("contenteditable",e):this.element.removeAttr("contenteditable"),void this.element.toggleClass("k-state-disabled",!e))},getPos:function(){function e(e,t){try{!function o(n){if(n===e)throw t;if(1==n.nodeType)for(var i=n.firstChild;i;i=i.nextSibling)o(i);else 3==n.nodeType&&(t+=n.nodeValue.length)}(i)}catch(n){return n}}var n,i=this.element[0],o=t.getSelection(),r=e(o.focusNode,o.focusOffset),a=e(o.anchorNode,o.anchorOffset);if(null!=r&&null!=a)return r>a&&(n=r,r=a,a=n),{begin:r,end:a,collapsed:r==a}},setPos:function(e,n){function i(e,t){return e.startOffset!=t.startOffset||e.endOffset!=t.endOffset||e.startContainer!=t.endContainer||e.endContainer!=t.endContainer}function o(e,t){try{!function i(e){var n,o;if(3==e.nodeType){if(n=e.nodeValue.length,n>=t)throw e;t-=n}else if(1==e.nodeType)for(o=e.firstChild;o;o=o.nextSibling)i(o)}(e)}catch(n){return{node:n,pos:t}}}var r,a,s,l=this.element[0];e=o(l,e),n=null!=n?o(l,n):e,e&&n&&(r=document.createRange(),r.setStart(e.node,e.pos),r.setEnd(n.node,n.pos),a=t.getSelection(),s=a.getRangeAt(0),i(r,s)&&(a.removeAllRanges(),a.addRange(r)))},end:function(){this.setPos(this.length())},home:function(){this.setPos(0)},select:function(){this.setPos(0,this.length())},length:function(){return this.value().length},_formulaSource:function(){var t,n,i=[];for(n in e.spreadsheet.calc.runtime.FUNCS)g.test(n)||(t=n.toUpperCase(),i.push({value:t,text:t}));this.formulaSource=new e.data.DataSource({data:i})},_formulaList:function(){this.list=new e.ui.StaticList(l("<ul />").addClass(m.classNames.listWrapper).insertAfter(this.element),{autoBind:!1,selectable:!0,change:this._formulaListChange.bind(this),dataSource:this.formulaSource,dataValueField:"value",template:"#:data.value#"}),this.list.element.on("mousedown",function(e){e.preventDefault()})},_formulaListChange:function(){var e,t,n,i=this._tokenContext();i&&!this._mute&&(e=i.token,t=this.list.value()[0],n={replace:!0,token:e,end:e.end},i.nextToken&&"("==i.nextToken.value||(t+="("),this._replaceAt(n,t),this.popup.close())},_popup:function(){this.popup=new e.ui.Popup(this.list.element,{anchor:this.element})},_blur:function(){this.popup.close(),clearTimeout(this._focusId),this.trigger("blur")},_isFormula:function(){return/^=/.test(this.value())},_keydown:function(e){var t=e.keyCode;f[t]?(this.popup.close(),this._navigated=!0):this._move(t)&&(this._navigated=!0,e.preventDefault()),this._keyDownTimeout=setTimeout(this._syntaxHighlight.bind(this))},_keyup:function(){var e,t=this.popup;this._isFormula()&&!this._navigated&&(e=((this._tokenContext()||{}).token||{}).value,this.filter(e),e&&this.formulaSource.view().length?(t[t.visible()?"position":"open"](),this.list.focusFirst()):t.close()),this._navigated=!1,this._syntaxHighlight(),this.trigger("keyup")},_input:function(){this._syntaxHighlight()},_focus:function(){setTimeout(this._sync.bind(this)),this._focusTimeout=setTimeout(this._syntaxHighlight.bind(this)),this.trigger("focus")},_paste:function(n){var i,o,r;n.preventDefault(),i=this.getPos(),o=e.support.browser.msie?t.clipboardData.getData("Text"):n.originalEvent.clipboardData.getData("text/plain"),r=this.value(),r=r.substr(0,i.begin)+o+r.substr(i.end),this.value(r),this.setPos(i.begin+o.length),this.scale()},_move:function(e){var t=this.list,n=this.popup;if(n.visible()){if(e===u.DOWN)return t.focusNext(),t.focus()||t.focusFirst(),!0;if(e===u.UP)return t.focusPrev(),t.focus()||t.focusLast(),!0;if(e===u.ENTER)return t.select(t.focus()),n.close(),!0;if(e===u.TAB)return t.select(t.focus()),n.close(),!0;if(e===u.PAGEUP)return t.focusFirst(),!0;if(e===u.PAGEDOWN)return t.focusLast(),!0}return e===u.ENTER||e===u.TAB},_tokenContext:function(){var t,n,i,o=this.getPos(),a=this.value();if(!a||!o||!o.collapsed)return null;for(t=e.spreadsheet.calc.tokenize(a,this.row(),this.col()),i=0;i<t.length;++i)if(n=t[i],r(n,o)&&/^(?:str|sym|func)$/.test(n.type))return{token:n,nextToken:t[i+1]};return null},_sync:function(){this._editorToSync&&this.isActive()&&this._editorToSync.value(this.value())},_textContainer:function(){var t=e.getComputedStyles(this.element[0],p);t.position="absolute",t.visibility="hidden",t.whiteSpace="pre",t.top=-3333,t.left=-3333,this._span=l("<span style='white-space: pre'/>").css(t).insertAfter(this.element)},_tooltip:function(){this._cellTooltip=l('<div class="k-widget k-tooltip" style="position:absolute; display:none">A1</div>').insertAfter(this.element)},tooltip:function(e){this._cellTooltip.text(e)},toggleTooltip:function(e){this._cellTooltip.toggle(e)},isActive:function(){return this.element[0]===e._activeElement()},filter:function(e){!e||e.length<this.options.minLength||(this._mute=!0,this.list.select(-1),this._mute=!1,this.formulaSource.filter({field:this.list.options.dataValueField,operator:this.options.filterOperator,value:e}))},hide:function(){this.enable(!1),this.element.hide(),this._cellTooltip.hide()},show:function(){this.enable(!0),this.element.show()},row:function(){if(this.activeCell)return this.activeCell.row},col:function(){if(this.activeCell)return this.activeCell.col},position:function(e){e&&(this.show(),this.element.css({top:e.top+1+"px",left:e.left+1+"px"}),this._cellTooltip.css({top:e.top-this._cellTooltip.height()-10+"px",left:e.left}))},resize:function(e){e&&this.element.css({width:e.width-1,height:e.height-1})},canInsertRef:function(e){var t,n=this._canInsertRef(e),i=n&&n.token;if(i)for(t=0;t<this._staticTokens.length;t++)if(s(i,this._staticTokens[t]))return null;return n},_canInsertRef:function(t){function i(e){return e.begin>l.begin}function o(e){if(e){if(/^(?:num|str|bool|sym|ref)$/.test(e.type))return{replace:!0,token:e,end:e.end};if(/^(?:op|punc|startexp)$/.test(e.type))return e.end==l.end?a(e,c[u+1]):a(c[u-1],e)}}function a(e,t){if(null==e)return null;if(null==t)return/^(?:op|startexp)$/.test(e.type)||n(e.value)?{token:e,end:l.end}:null;if(s){if("op"==e.type&&/^(?:punc|op)$/.test(t.type))return{token:e,end:l.end}}else{if("startexp"==e.type)return{token:e,end:l.end};if(/^(?:op|punc)$/.test(e.type)&&/^[,;({]$/.test(e.value))return{token:e,end:l.end};if(/^(?:ref|sym)/.test(e.type))return{token:e,replace:!0,end:e.end};if(/^(?:ref|sym)/.test(t.type))return{token:t,replace:!0,end:t.end}}return!1}var s,l,c,d,u;if(this.popup.visible())return null;if(s=t,l=this.getPos(),l&&this._isFormula()){if(0===l.begin)return null;for(c=e.spreadsheet.calc.tokenize(this.value(),this.row(),this.col()),u=0;u<c.length;++u){if(d=c[u],r(d,l))return o(d);if(i(d))return a(c[u-1],d)}return a(d,null)}return null},refAtPoint:function(e){var t,n=this._canInsertRef();n&&(t=e.selection()._ref.simplify().clone().relative(0,0,3),e!==this.activeSheet&&(t=t.setSheet(e.name(),!0)),this._replaceAt(n,t.print(0,0)))},_replaceAt:function(e,t){var n,i=this.value(),o=e.token,r=i.substr(e.end);i=i.substr(0,e.replace?o.begin:e.end)+t,n=i.length,i+=r,this._value(i),this.setPos(n),this.scale(),this._syntaxHighlight()},syncWith:function(t){var n,i=this,o="input"+d,r=i._sync.bind(i);e.support.browser.msie&&(o="keydown"+d,n=function(){setTimeout(r)}),i._editorToSync=t,i.element.off(o).on(o,n||r)},scale:function(){var e,t,n=this.element;this._span||this._textContainer(),this._span.html(n.html()),e=this._span.width()+this.options.scalePadding,t=this._span.height(),e>n.width()&&n.width(e),t>n.height()&&n.height(t),this._sync()},_value:function(e){this.element.text(e)},value:function(e){if(void 0===e){var t=this.element[0].innerText;return t.replace(/\n$/,"")}this._value(e),this._syntaxHighlight()},highlightedRefs:function(){return this._highlightedRefs.slice()},_syntaxHighlight:function(){var t,s=this.getPos(),l=this.value(),c=e.spreadsheet.Pane.classNames.series,d=[],u=0,h=[],p=[];if(!s||s.collapsed){if(!/^=/.test(l))return(this._staticTokens.length||this._highlightedRefs.length)&&(this._staticTokens=[],this._highlightedRefs=[],this.element.text(l)),void(this.popup&&this.popup.close());p=e.spreadsheet.calc.tokenize(l,this.row(),this.col()),p.forEach(function(e){if(e.active=!1,e.cls=["k-syntax-"+e.type],"ref"==e.type&&(e.colorClass=c[u++%c.length],e.cls.push(e.colorClass),d.push(e)),s&&"punc"==e.type)if(n(e.value))h.unshift(e);else if(i(e.value)){var l=h.shift();l?o(e.value,l.value)?(r(e,s)||r(l,s))&&(e.cls.push("k-syntax-paren-match"),l.cls.push("k-syntax-paren-match")):(e.cls.push("k-syntax-error"),l.cls.push("k-syntax-error")):e.cls.push("k-syntax-error")}s&&r(e,s)&&(e.cls.push("k-syntax-at-point"),e.active=!0,t=e),"func"!=e.type||a(e.value)||s&&r(e,s)||e.cls.push("k-syntax-error")}),p.reverse().forEach(function(t){var n=t.begin,i=t.end,o=e.htmlEncode(l.substring(n,i));l=l.substr(0,n)+"<span class='"+t.cls.join(" ")+"'>"+o+"</span>"+l.substr(i)}),this.element.html(l),s&&this.setPos(s.begin,s.end),t&&/^(?:startexp|op|punc)$/.test(t.type)&&this._setStaticTokens(p),this._highlightedRefs=d}},_setStaticTokens:function(e){var t,n;for(this._staticTokens=[],t=0;t<e.length;t++)n=e[t],/^(?:num|str|bool|sym|ref)$/.test(n.type)&&this._staticTokens.push(n)},destroy:function(){this._editorToSync=null,this.element.off(d),clearTimeout(this._focusTimeout),clearTimeout(this._keyDownTimeout),this._cellTooltip=null,this._span=null,this.popup.destroy(),this.popup=null,c.fn.destroy.call(this)},insertNewline:function(){var e=this.value(),t=this.getPos(),n=t.end==e.length;e=e.substr(0,t.begin)+(n?"\n\n":"\n"+e.substr(t.end)),this.value(e),this.setPos(t.begin+1)}}),e.spreadsheet.FormulaInput=m,l.extend(!0,m,{classNames:h}))}(kendo,window)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/eventlistener.min",["kendo.core.min"],e)}(function(){!function(e){var t,n,i,o,r,a;e.support.browser.msie&&e.support.browser.version<9||(t=e.jQuery,n={8:"backspace",9:"tab",13:"enter",27:"esc",37:"left",38:"up",39:"right",40:"down",35:"end",36:"home",32:"spacebar",33:"pageup",34:"pagedown",46:"delete",113:":edit"},i=navigator.platform.toUpperCase().indexOf("MAC")>=0,o=function(e){return e>47&&e<58||e>64&&e<91||e>95&&e<112||e>185&&e<193||e>218&&e<223||229===e},r=function(e){var t=e.keyCode,i=n[t];return!i&&o(t)&&(i=":alphanum"),!i&&e.key&&1==e.key.length&&(i=":alphanum"),i},a=e.Class.extend({init:function(e,n,i){if(this._handlers={},this.target=e,this._observer=n||window,this.keyDownProxy=this.keyDown.bind(this),this.mouseProxy=this.mouse.bind(this),this.touchProxy=this.touch.bind(this),this.threshold=5,this._pressLocation=null,e.on("keydown",this.keyDownProxy),e.on("contextmenu mousedown cut copy paste scroll wheel click dblclick focus",this.mouseProxy),e.on("touchmove touchend",this.touchProxy),t(document.documentElement).on("mousemove mouseup",this.mouseProxy),t(document.documentElement).on("touchmove touchend",this.touchProxy),i)for(var o in i)this.on(o,i[o])},keyDown:function(e){this.handleEvent(e,r(e.originalEvent))},touch:function(e){this.handleEvent(e,e.type)},mouse:function(e){var t,n,i,o,r;e.which?t=3==e.which:e.button&&(t=2==e.button),n=e.type,"mousedown"===n&&(t?n="rightmousedown":this._pressLocation={x:e.pageX,y:e.pageY}),"mouseup"===n&&(t||(this._pressLocation=null)),"mousemove"===n&&this._pressLocation&&(i=this._pressLocation.x-e.pageX,o=this._pressLocation.y-e.pageY,r=Math.sqrt(i*i+o*o),r>this.threshold&&(n="mousedrag")),this.handleEvent(e,n)},handleEvent:function(e,t){var n,o,r="";e.mod=i?e.metaKey:e.ctrlKey&&!e.altKey,e.altKey&&(r+="alt+"),e.shiftKey&&(r+="shift+"),e.ctrlKey&&(r+="ctrl+"),r+=t,n=this._handlers["*+"+t],n&&n.call(this._observer,e,r),o=this._handlers[r],o&&o.call(this._observer,e,r)},on:function(e,t){var n=this._handlers;"string"==typeof t&&(t=this._observer[t]),"string"==typeof e&&(e=e.split(",")),e.forEach(function(e){n[e]=t})},destroy:function(){this.target.off("keydown",this.keyDownProxy),this.target.off("keydown",this.mouseProxy),t(document.documentElement).off("mousemove mouseup",this.mouseProxy)}}),e.spreadsheet.EventListener=a)}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/rangelist.min",["kendo.core.min"],e)}(function(){!function(e){function t(e){if(e.left.level===e.level){var t=e;e=e.left,t.left=e.right,e.right=t}return e}function n(e){if(e.right.right.level===e.level){var t=e;e=e.right,t.right=e.left,e.left=t,e.level+=1}return e}function i(e,o){return e===c?new l(1,o,c,c):(e.value.start>o.start?e.left=i(e.left,o):e.right=i(e.right,o),n(t(e)))}function o(e,i){var r,a;if(e===c)return e;if(r=e.value.start-i.start,0===r)if(e.left!==c&&e.right!==c){for(a=e.left;a.right!==c;)a=a.right;e.value=a.value,e.left=o(e.left,e.value)}else e=e.left===c?e.right:e.left;else r>0?e.left=o(e.left,i):e.right=o(e.right,i);return(e.left.level<e.level-1||e.right.level<e.level-1)&&(e.level-=1,e.right.level>e.level&&(e.right.level=e.level),e=t(e),e.right=t(e.right),e.right.right=t(e.right.right),e=n(e),e.right=n(e.right)),e}function r(e,t){e!==c&&(r(e.left,t),t.push(e.value),r(e.right,t))}function a(e,t,n){if(e!==c){var i=e.value;t.start<i.start&&a(e.left,t,n),i.intersects(t)&&n.push(i),t.end>i.end&&a(e.right,t,n)}}function s(e,t,n){t!==c&&(s(e,t.left,n),e.insert(n(t.value)),s(e,t.right,n))}var l,c,d,u,h,p,f;e.support.browser.msie&&e.support.browser.version<9||(l=e.Class.extend({init:function(e,t,n,i){this.level=e,this.value=t,this.left=n,this.right=i}}),c=new function(){this.left=this,this.right=this,this.level=0},d=e.Class.extend({init:function(e,t,n){this.start=e,this.end=t,this.value=n},intersects:function(e){return e.start<=this.end&&e.end>=this.start},clone:function(){return new d(this.start,this.end,this.value)}}),u=e.Class.extend({init:function(){this.root=c},insert:function(e){this.root=i(this.root,e)},remove:function(e){this.root=o(this.root,e)},findrange:function(e){for(var t=this.root;t!=c;)if(e<t.value.start)t=t.left;else{if(!(e>t.value.end))return t.value;t=t.right}return null},values:function(){var e=[];return r(this.root,e),e},intersecting:function(e,t){var n=[];return a(this.root,new d(e,t),n),n},map:function(e){var t=new u;return s(t,this.root,e),t},clone:function(){return this.map(function(e){return e.clone()})},first:function(){for(var e=this.root;e.left!=c;)e=e.left;return e},last:function(){for(var e=this.root;e.right!=c;)e=e.right;return e}}),h=e.Class.extend({init:function(e,t,n){void 0===t?this.tree=e:(this.tree=new u,this.tree.insert(new d(e,t,n)))},values:function(){return this.tree.values()},map:function(e){return new h(this.tree.map(e))},intersecting:function(e,t){return this.tree.intersecting(e,t)},first:function(){return this.tree.first().value},last:function(){return this.tree.last().value},insert:function(e,t,n){return this.tree.insert(new d(e,t,n))},value:function(e,t,n){var i,o,r,a,s,l,c,d,u;if(void 0===n)return void 0===t&&(t=e),this.intersecting(e,t)[0].value;if(i=this.tree.intersecting(e-1,t+1),i.length)for(o=i[0],r=i[i.length-1],o.end<e&&(o.value===n?e=o.start:i.shift()),r.start>t&&(r.value===n?t=r.end:i.pop()),a=0,s=i.length;a<s;a++)l=i[a],c=l.value,d=l.start,u=l.end,this.tree.remove(l),d<e&&(c!==n?this.insert(d,e-1,c):e=d),u>t&&(c!==n?this.insert(t+1,u,c):t=u);this.insert(e,t,n)},expandedValues:function(e,t){var n,i=this.intersecting(e,t),o=[],r=0;for(n=e;n<=t;n++)i[r].end<n&&r++,o.push({index:n-e,value:i[r].value});return o},sortedIndices:function(e,t,n,i){var o=this.expandedValues(e,t),r=function(e,t){return e.value===t.value?e.index-t.index:n(e.value,t.value)};return i&&(r=function(e,t){var o=i[e.index],r=i[t.index];return o.value===r.value?n(e.value,t.value):e.index-t.index}),o.sort(r),o},sort:function(e,t,n){var i,o,r;if(1!==this.intersecting(e,t).length)for(i=this.expandedValues(e,t),o=0,r=n.length;o<r;o++)this.value(o+e,o+e,i[n[o].index].value)},copy:function(e,t,n){var i,o,r,a,s,l=this.intersecting(e,t),c=n;for(o=0,r=l.length;o<r;o++)a=l[o].start,a<e&&(a=e),s=l[o].end,s>t&&(s=t),i=c+(s-a),this.value(c,i,l[o].value),c=++i},iterator:function(e,t){return new p(e,t,this.intersecting(e,t))},getState:function(){return this.tree.clone()},setState:function(e){this.tree=e.clone()},toJSON:function(){return this.values()},fromJSON:function(e){e.forEach(function(e){this.value(e.start,e.end,e.value)},this)}}),p=e.Class.extend({init:function(e,t,n){this.start=e,this.end=t,this.index=0,this.ranges=n},unique:function(){return this.ranges.map(function(e){return e.value})},at:function(e){for(;this.ranges[this.index]&&this.ranges[this.index].end<e;)this.index++;return this.ranges[this.index]&&this.ranges[this.index].value},forEach:function(e){for(var t=this.start;t<=this.end;t++)e(this.at(t),t);this.index=0}}),f=h.extend({init:function(e,t,n){this.tree=new u,this.range=new d(e,t,n)},intersecting:function(e,t){var n,i,o,r=this.tree.intersecting(e,t),a=[];if(!r.length)return[this.range];for(i=0,o=r.length;i<o;i++)n=r[i],n.start>e&&a.push(new d(e,n.start-1,this.range.value)),a.push(n),e=n.end+1;return n.end<t&&a.push(new d(n.end+1,t,this.range.value)),a},insert:function(e,t,n){n!==this.range.value&&this.tree.insert(new d(e,t,n))},lastRangeStart:function(){var e=this.tree.root;if(e===c)return this.range.start;for(;e.right!==c;)e=e.right;return e.value.end+1}}),e.spreadsheet.RangeTree=u,e.spreadsheet.RangeList=h,e.spreadsheet.SparseRangeList=f,e.spreadsheet.ValueRange=d)}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/propertybag.min",["kendo.core.min"],e)}(function(){!function(e){function t(e){return e.replace(/M/g,"m").replace(/'/g,'"').replace(/tt/,"am/pm")}function n(e){return e=e.clone(),e.value=e.value.deepClone(),e}function i(){var e=this.map(n);return e.clone=i,e}var o,r,a;e.support.browser.msie&&e.support.browser.version<9||(o=e.Class.extend({init:function(e){this.list=e},get:function(e){return this.parse(this.list.value(e,e))},set:function(e,t,n){void 0===n&&(n=t,t=e),this.list.value(e,t,n)},parse:function(e){return e},copy:function(e,t,n){this.list.copy(e,t,n)},iterator:function(e,t){return this.list.iterator(e,t)}}),r=o.extend({set:function(e,t,n){this.list.value(e,t,JSON.stringify(n))},parse:function(e){return JSON.parse(e)}}),a=o.extend({init:function(e,t){o.prototype.init.call(this,e),this.formats=t},set:function(n,i,o){o instanceof Date?(o=e.spreadsheet.dateToNumber(o),this.formats.value(n,i)||this.formats.value(n,i,t(e.culture().calendar.patterns.d))):"number"==typeof o&&(o=e.spreadsheet.calc.runtime.limitPrecision(o)),this.list.value(n,i,o)}}),e.spreadsheet.PropertyBag=e.Class.extend({specs:[{property:o,name:"format",value:null,sortable:!0,serializable:!0},{property:a,name:"value",value:null,sortable:!0,serializable:!0,depends:"format"},{property:o,name:"formula",value:null,sortable:!0,serializable:!0},{property:o,name:"background",value:null,sortable:!0,serializable:!0},{property:r,name:"vBorders",value:null,sortable:!1,serializable:!1},{property:r,name:"hBorders",value:null,sortable:!1,serializable:!1},{property:o,name:"color",value:null,sortable:!0,serializable:!0},{property:o,name:"fontFamily",value:null,sortable:!0,serializable:!0},{property:o,name:"underline",value:null,sortable:!0,serializable:!0},{property:o,name:"fontSize",value:null,sortable:!0,serializable:!0},{property:o,name:"italic",value:null,sortable:!0,serializable:!0},{property:o,name:"bold",value:null,sortable:!0,serializable:!0},{property:o,name:"textAlign",value:null,sortable:!0,serializable:!0},{property:o,name:"indent",value:null,sortable:!0,serializable:!0},{property:o,name:"verticalAlign",value:null,sortable:!0,serializable:!0},{property:o,name:"wrap",value:null,sortable:!0,serializable:!0},{property:o,name:"validation",value:null,sortable:!1,serializable:!0},{property:o,name:"enable",value:null,sortable:!1,serializable:!0},{property:o,name:"link",value:null,sortable:!0,serializable:!0},{property:o,name:"editor",value:null,sortable:!0,serializable:!0},{property:o,name:"comment",value:null,sortable:!0,serializable:!0}],init:function(t,n,o){o=o||{};var r=t*n-1;this.rowCount=t,this.columnCount=n,this.cellCount=r,this.properties={},this.lists={},this.specs.forEach(function(t){var n,i=t.name,a=o[i];void 0===a&&(a=t.value),this.lists[i]=new e.spreadsheet.SparseRangeList(0,r,a),n=this.properties[i]=new t.property(this.lists[i],this.lists[t.depends]),n.spec=t},this),this.lists.formula.tree.clone=i,this.lists.validation.tree.clone=i},getState:function(){var e={};return this.specs.forEach(function(t){e[t.name]=this.lists[t.name].getState()},this),e},setState:function(e){this.specs.forEach(function(t){this.lists[t.name].setState(e[t.name])},this)},get:function(e,t){if(void 0===t)return this.lists[e];switch(e){case"borderRight":t+=this.rowCount;case"borderLeft":e="vBorders";break;case"borderBottom":t++;case"borderTop":e="hBorders"}return t>this.cellCount?null:this.properties[e].get(t)},set:function(e,t,n,i){switch(e){case"borderRight":t+=this.rowCount,n+=this.rowCount;case"borderLeft":e="vBorders";break;case"borderBottom":t++,n++;case"borderTop":e="hBorders"}t<=n&&n<=this.cellCount&&this.properties[e].set(t,n,i)},fromJSON:function(e,t){var n,i;for(n=0;n<this.specs.length;n++)i=this.specs[n],i.serializable&&void 0!==t[i.name]&&this.set(i.name,e,e,t[i.name],!1);["borderLeft","borderRight","borderTop","borderBottom"].forEach(function(n){void 0!==t[n]&&this.set(n,e,e,t[n])},this)},copy:function(e,t,n){this.specs.forEach(function(i){this.properties[i.name].copy(e,t,n)},this)},iterator:function(e,t,n){var i=this.properties[e],o=i.iterator(t,n),r=o.at,a=this.cellCount;return o.at=function(e){return e>a?null:i.parse(r.call(o,e))},o.name=e,o.value=i.spec.value,o},sortable:function(){return this.specs.filter(function(e){return e.sortable}).map(function(e){return this.lists[e.name]},this)},iterators:function(e,t){return this.specs.reduce(function(n,i){return i.serializable&&n.push(this.iterator(i.name,e,t)),n}.bind(this),[])},forEach:function(e,t,n){function i(e,t,n){var i=t.at(n);i!==t.value&&(o[e]=i)}var o,r,a,s,l,c=this.iterators(e,t),d=this.iterator("hBorders",e,t+1),u=this.iterator("vBorders",e,t),h=this.iterator("vBorders",e+this.rowCount,t+this.rowCount);for(r=e;r<=t;r++){for(o={},a=0;a<c.length;a++)s=c[a],l=s.at(r),l!==s.value&&(o[s.name]=l);i("borderLeft",u,r),i("borderRight",h,r+this.rowCount),i("borderTop",d,r),(r+1)%this.rowCount&&i("borderBottom",d,r+1),n(o)}},forEachProperty:function(e){for(var t in this.properties)e(this.properties[t])}}),e.spreadsheet.ALL_PROPERTIES=e.spreadsheet.PropertyBag.prototype.specs.reduce(function(e,t){return t.serializable&&e.push(t.name),e},["borderTop","borderRight","borderBottom","borderLeft"]))}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/references.min",["kendo.core.min"],e)}(function(){"use strict";function e(t){var n=Math.floor(t/26)-1;return(n>=0?e(n):"")+String.fromCharCode(65+t%26)}function t(e){return/^[a-z_][a-z0-9_]*$/i.test(e)?e:"'"+e.replace(/\x27/g,"\\'")+"'"}function n(n,i,o,r){var a="";return++i,isFinite(i)?null==r||2&r||(i="$"+i):i="",isFinite(o)?(a=e(o),null==r||1&r||(a="$"+a)):o="",n?t(n)+"!"+a+i:a+i}var i,o,r,a,s,l,c,d;kendo.support.browser.msie&&kendo.support.browser.version<9||(i=kendo.spreadsheet,o=kendo.Class,r=o.extend({type:"ref",sheet:"",clone:function(){return this},hasSheet:function(){return this._hasSheet},simplify:function(){return this},setSheet:function(e,t){return this.sheet=e,null!=t&&(this._hasSheet=t),this},absolute:function(){return this},relative:function(){return this},adjust:function(){return this},toString:function(){return this.relative(0,0,3,3).print(0,0)},forEach:function(e,t){e.call(t,this)},map:function(e,t){return e.call(t,this)},intersects:function(e){return this.intersect(e)!==a},isCell:function(){return!1},toRow:function(){return this},toColumn:function(){return this},first:function(){return this},lastRange:function(){return this},size:function(){return 1},rangeAt:function(){return this},nextRangeIndex:function(){return 0},previousRangeIndex:function(){return 0},eq:function(e){var t,n,i,o,r=this,s=e;if(r===a||s===a)return r===s;if((s instanceof l||s instanceof c&&!(r instanceof l))&&(r=e,s=this),r instanceof l)return s=s.simplify(),s instanceof l&&r.row==s.row&&r.col==s.col&&r.sheet==s.sheet;if(r instanceof c){if(s instanceof c)return s.topLeft.eq(r.topLeft)&&s.bottomRight.eq(r.bottomRight);if(s instanceof d)return s.single()&&r.eq(s.refs[0])}else if(r instanceof d&&s instanceof d){if(t=r.refs,n=s.refs,t.length!=n.length)return!1;for(i=0,o=t.length;i<o;i++)if(!t[i].eq(n[i]))return!1;return!0}return r===s},concat:function(e){return new d([this,e])},replaceAt:function(e,t){return t},forEachColumnIndex:function(e){this.forEachAxisIndex("col",e)},forEachRowIndex:function(e){this.forEachAxisIndex("row",e)},forEachAxisIndex:function(e,t){var n=[],i="row"===e?"forEachRow":"forEachColumn";this[i](function(t){var i=t.first()[e];n.indexOf(i)===-1&&n.push(i)}),n.sort(function(e,t){return e>t?1:e<t?-1:0}).forEach(t)},valid:function(){return!1},renameSheet:function(e,t){if(this.sheet&&this.sheet.toLowerCase()==e.toLowerCase())return this.sheet=t,!0}}),r.display=n,a=new(r.extend({init:function(){},print:function(){return"#NULL!"},eq:function(e){return e===this},forEach:function(){}})),s=r.extend({ref:"name",init:function(e){this.name=e},clone:function(){return new s(this.name).setSheet(this.sheet,this.hasSheet())},print:function(){var e=t(this.name);return this.hasSheet()&&(e=t(this.sheet)+"!"+e),e}}),l=r.extend({ref:"cell",init:function(e,t,n){this.row=e,this.col=t,this.rel=n||0},clone:function(){return new l(this.row,this.col,this.rel).setSheet(this.sheet,this.hasSheet())},intersect:function(e){return e instanceof l?this.eq(e)?this:a:e.intersect(this)},print:function(e,i,o){var r,a,s=this.col,l=this.row,c=this.rel;return null==e&&c?(a=this.hasSheet()?t(this.sheet)+"!":"",s=isFinite(s)?1&c?"C["+s+"]":"C"+(s+1):"",l=isFinite(l)?2&c?"R["+l+"]":"R"+(l+1):"",a+l+s):(r=this.absolute(e,i),o?(l=r.row%1048576,s=r.col%16384,l<0&&(l+=1048576),s<0&&(s+=16384),n(this._hasSheet&&this.sheet,l,s,c)):r.valid()?n(this._hasSheet&&this.sheet,r.row,r.col,c):"#REF!")},absolute:function(e,t){var n=this.clone();return n.rel&!1?n:(1&n.rel&&(n.col=(n.col+t)%16384),2&n.rel&&(n.row=(n.row+e)%1048576),n.rel=0,n)},toRangeRef:function(){return new c(this,this)},relative:function(e,t,n){var i,o;return null==n&&(n=this.rel),i=2&n?this.row-e:this.row,o=1&n?this.col-t:this.col,new l(i,o,n).setSheet(this.sheet,this.hasSheet())},height:function(){return 1},width:function(){return 1},toString:function(){return n(null,this.row,this.col,3)},isCell:function(){return!0},leftColumn:function(){return this},rightColumn:function(){return this},topRow:function(){return this},bottomRow:function(){return this},forEachRow:function(e){e(this.toRangeRef())},forEachColumn:function(e){e(this.toRangeRef())},adjust:function(e,t,n,i,o,r,s){var l=this.absolute(e,t);if(o){if(l.row>=r){if(s<0&&l.row<r-s)return a;l.row+=s}}else if(l.col>=r){if(s<0&&l.col<r-s)return a;l.col+=s}return null!=n&&null!=i&&(l=l.relative(n,i,this.rel)),l},valid:function(){if(this.rel)throw Error("valid() called on relative reference");var e=this.col,t=this.row;return!(isFinite(e)&&e<0||isFinite(t)&&t<0)}}),c=r.extend({ref:"range",init:function(e,t){e._hasSheet&&t._hasSheet&&e.sheet.toLowerCase()!=t.sheet.toLowerCase()&&(this.endSheet=t.sheet),this.topLeft=new l(e.row,e.col,e.rel),this.bottomRight=new l(t.row,t.col,t.rel),this.normalize()},clone:function(){return new c(this.topLeft.clone(),this.bottomRight.clone()).setSheet(this.sheet,this.hasSheet())},_containsRange:function(e){return this._containsCell(e.topLeft)&&this._containsCell(e.bottomRight)},_containsCell:function(e){return e.sheet==this.sheet&&e.row>=this.topLeft.row&&e.col>=this.topLeft.col&&e.row<=this.bottomRight.row&&e.col<=this.bottomRight.col},contains:function(e){if(e instanceof Array){var t=this;return e.some(function(e){return t.contains(e)})}return e instanceof l?this._containsCell(e):e instanceof c&&this._containsRange(e)},_intersectRange:function(e){var t,n,i,o,r,s,d,u;return this.sheet!=e.sheet?a:(t=this.topLeft.col,n=this.topLeft.row,i=this.bottomRight.col,o=this.bottomRight.row,r=e.topLeft.col,s=e.topLeft.row,d=e.bottomRight.col,u=e.bottomRight.row,t<=d&&r<=i&&n<=u&&s<=o?new c(new l(Math.max(n,s),Math.max(t,r)),new l(Math.min(o,u),Math.min(i,d))).setSheet(this.sheet,this.hasSheet()):a)},intersect:function(e){return e instanceof l?this._containsCell(e)?e:a:e instanceof c?this._intersectRange(e).simplify():e instanceof d?e.intersect(this):a},simplify:function(){return this.isCell()?new l(this.topLeft.row,this.topLeft.col,this.topLeft.rel).setSheet(this.sheet,this.hasSheet()):this},normalize:function(){var e,t=this.topLeft,n=this.bottomRight,i=t.row,o=t.col,r=n.row,a=n.col,s=2&t.rel,c=1&t.rel,d=2&n.rel,u=1&n.rel,h=!1;return s===d&&c===u&&(i>r&&(h=!0,e=i,i=r,r=e,e=s,s=d,d=e),o>a&&(h=!0,e=o,o=a,a=e,e=c,c=u,u=e),h&&(this.topLeft=new l(i,o,c|s),this.bottomRight=new l(r,a,u|d))),this},print:function(e,n,i){if(i||this.absolute(e,n).valid()){var o=this.topLeft.print(e,n,i)+":"+this.bottomRight.print(e,n,i);return this.hasSheet()&&(o=t(this.sheet)+(this.endSheet?":"+t(this.endSheet):"")+"!"+o),o}return"#REF!"},absolute:function(e,t){return new c(this.topLeft.absolute(e,t),this.bottomRight.absolute(e,t)).setSheet(this.sheet,this.hasSheet())},relative:function(e,t,n,i){return null==i&&(i=n),new c(this.topLeft.relative(e,t,n),this.bottomRight.relative(e,t,i)).setSheet(this.sheet,this.hasSheet())},height:function(){if(this.topLeft.rel!=this.bottomRight.rel)throw Error("Mixed relative/absolute references");return this.bottomRight.row-this.topLeft.row+1},width:function(){if(this.topLeft.rel!=this.bottomRight.rel)throw Error("Mixed relative/absolute references");return this.bottomRight.col-this.topLeft.col+1},collapse:function(){return this.topLeft.toRangeRef()},leftColumn:function(){return new c(this.topLeft,new l(this.bottomRight.row,this.topLeft.col))},rightColumn:function(){return new c(new l(this.topLeft.row,this.bottomRight.col),this.bottomRight)},topRow:function(){return new c(this.topLeft,new l(this.topLeft.row,this.bottomRight.col))},bottomRow:function(){return new c(new l(this.bottomRight.row,this.topLeft.col),this.bottomRight)},toRangeRef:function(){return this},toRow:function(e){return e+=Math.max(0,this.topLeft.row),new c(new l(e,this.topLeft.col),new l(e,this.bottomRight.col)).setSheet(this.sheet,this.hasSheet())},toColumn:function(e){return e+=Math.max(0,this.topLeft.col),new c(new l(this.topLeft.row,e),new l(this.bottomRight.row,e)).setSheet(this.sheet,this.hasSheet())},toCell:function(e,t){return e+=Math.max(0,this.topLeft.row),t+=Math.max(0,this.topLeft.col),new l(e,t,0).setSheet(this.sheet,this.hasSheet())},forEachRow:function(e){var t,n=this.topLeft.row,i=this.bottomRight.row,o=this.topLeft.col,r=this.bottomRight.col;for(t=n;t<=i;t++)e(new c(new l(t,o),new l(t,r)))},forEachColumn:function(e){var t,n=this.topLeft.row,i=this.bottomRight.row,o=this.topLeft.col,r=this.bottomRight.col;for(t=o;t<=r;t++)e(new c(new l(n,t),new l(i,t)))},intersecting:function(e){return e.filter(function(e){return e.toRangeRef().intersects(this)},this)},union:function(e,t){var n,i=this.intersecting(e),o=this.topLeft.row,r=this.topLeft.col,a=this.bottomRight.row,s=this.bottomRight.col,d=!1;return i.forEach(function(e){e=e.toRangeRef(),e.topLeft.row<o&&(d=!0,o=e.topLeft.row),e.topLeft.col<r&&(d=!0,r=e.topLeft.col),e.bottomRight.row>a&&(d=!0,a=e.bottomRight.row),e.bottomRight.col>s&&(d=!0,s=e.bottomRight.col),t&&t(e)}),n=new c(new l(o,r),new l(a,s)),d?n.union(e,t):n},resize:function(e){ +function t(e){return e||0}var n=Math.max.bind(Math,0),i=this.topLeft.row+t(e.top),o=this.topLeft.col+t(e.left),r=this.bottomRight.row+t(e.bottom),s=this.bottomRight.col+t(e.right);return o<0&&s<0||i<0&&r<0?a:i<=r&&o<=s?new c(new l(n(i),n(o)),new l(n(r),n(s))):a},move:function(e,t){return new c(new l(this.topLeft.row+e,this.topLeft.col+t),new l(this.bottomRight.row+e,this.bottomRight.col+t))},first:function(){return this.topLeft.clone().setSheet(this.sheet,this.hasSheet())},isCell:function(){return!this.endSheet&&this.topLeft.eq(this.bottomRight)},toString:function(){return this.topLeft+":"+this.bottomRight},adjust:function(e,t,n,i,o,r,s){var l=this.topLeft.adjust(e,t,n,i,o,r,s),d=this.bottomRight.adjust(e,t,n,i,o,r,s);return l===a&&d===a?a:(l===a?(l=this.topLeft.absolute(e,t),o?l.row=r:l.col=r,null!=n&&null!=i&&(l=l.relative(n,i,this.topLeft.rel))):d===a&&(d=this.bottomRight.absolute(e,t),o?d.row=r-1:d.col=r-1,null!=n&&null!=i&&(d=d.relative(n,i,this.bottomRight.rel))),new c(l,d).setSheet(this.sheet,this.hasSheet()).simplify())},valid:function(){return this.topLeft.valid()&&this.bottomRight.valid()}}),d=r.extend({init:function(e){this.refs=e,this.length=e.length},clone:function(){return new d(this.refs.slice())},intersect:function(e){var t,n,i=[];for(t=0;t<this.length;++t)n=e.intersect(this.refs[t]),n!==a&&i.push(n);return i.length>0?new d(i).simplify():a},simplify:function(){var e=new d(this.refs.reduce(function(e,t){return t=t.simplify(),t!==a&&e.push(t),e},[]));return e.empty()?a:e.single()?e.refs[0]:e},absolute:function(e,t){return new d(this.refs.map(function(n){return n.absolute(e,t)}))},forEach:function(e,t){this.refs.forEach(function(n){n instanceof d?n.forEach(e,t):e.call(t,n)},t)},toRangeRef:function(){return this.refs[0].toRangeRef()},contains:function(e){return this.refs.some(function(t){return t.contains(e)})},map:function(e,t){var n=[];return this.forEach(function(i){n.push(e.call(t,i))}),new d(n)},first:function(){return this.refs[0].first()},lastRange:function(){return this.refs[this.length-1]},size:function(){return this.length},single:function(){return 1==this.length},empty:function(){return 0===this.length},isCell:function(){return this.single()&&this.refs[0].isCell()},rangeAt:function(e){return this.refs[e]},nextRangeIndex:function(e){return e===this.length-1?0:e+1},previousRangeIndex:function(e){return 0===e?this.length-1:e-1},concat:function(e){return new d(this.refs.concat([e]))},print:function(e,t,n){return this.refs.map(function(i){return i.print(e,t,n)}).join(",")},replaceAt:function(e,t){var n=this.refs.slice();return n.splice(e,1,t),new d(n)},leftColumn:function(){return this.map(function(e){return e.leftColumn()})},rightColumn:function(){return this.map(function(e){return e.rightColumn()})},topRow:function(){return this.map(function(e){return e.topRow()})},bottomRow:function(){return this.map(function(e){return e.bottomRow()})},forEachRow:function(e){this.forEach(function(t){t.forEachRow(e)})},forEachColumn:function(e){this.forEach(function(t){t.forEachColumn(e)})},adjust:function(e,t,n,i,o,r,a){return this.map(function(s){return s.adjust(e,t,n,i,o,r,a)}).simplify()},toString:function(){return this.refs.map(function(e){return""+e}).join(", ")},valid:function(){for(var e=this.refs.length;--e>=0;)if(this.refs[e].valid())return!1;return!0},renameSheet:function(e,t){this.refs.forEach(function(n){n.renameSheet(e,t)})}}),i.NULLREF=a,i.SHEETREF=new c(new l(0,0),new l(1/0,1/0)),i.FIRSTREF=new l(0,0),i.Ref=r,i.NameRef=s,i.CellRef=l,i.RangeRef=c,i.UnionRef=d,i.SHEETREF.print=function(){return"#SHEET"})},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/autofillcalculator.min",["kendo.core.min"],e)}(function(){!function(e){var t,n,i;e.support.browser.msie&&e.support.browser.version<9||(t=e.spreadsheet.RangeRef,n=e.spreadsheet.CellRef,i=e.Class.extend({init:function(e){this._grid=e},rectIsVertical:function(e,t,n,i){var o=this._grid.rectangle(e.toRangeRef()),r=this._grid.rectangle(t.toRangeRef());return Math.abs(r[i]-o[i])>Math.abs(o[n]-r[n])},autoFillDest:function(e,i){var o,r,a,s,l,c,d,u=e.topLeft,h=e.bottomRight,p=i.row>=u.row,f=i.col>=u.col;return o=p?f?4:3:f?2:1,4===o?(r=u,a=h,l=i.row>a.row||i.col>a.col,l&&(i=new n(Math.max(i.row,a.row),Math.max(i.col,a.col))),s=this.rectIsVertical(a,i,"right","bottom")?new n(i.row,a.col):new n(a.row,i.col)):3===o?(c=new n(u.col,h.row),i.row>h.row&&this.rectIsVertical(c,i,"left","bottom")?(r=u,s=new n(i.row,h.col)):(r=h,s=new n(u.row,i.col))):2===o?(d=new n(u.row,h.col),i.col>h.col&&!this.rectIsVertical(d,i,"right","top")?(r=u,s=new n(h.row,i.col)):(r=h,s=new n(i.row,u.col))):(r=h,s=this.rectIsVertical(u,i,"left","top")?new n(i.row,u.col):new n(u.row,i.col)),this._grid.normalize(new t(r,s))}}),e.spreadsheet.AutoFillCalculator=i)}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/navigator.min",["kendo.core.min","spreadsheet/autofillcalculator.min"],e)}(function(){!function(e){var t,n,i,o;e.support.browser.msie&&e.support.browser.version<9||(t=e.spreadsheet.RangeRef,n=e.spreadsheet.CellRef,i=e.Class.extend({init:function(e,t,n,i){this.rangeGetter=n,this.prevLeft=function(n){var o=i(this.range(n)),r=this.range(t.prevVisible(o.topLeft[e]));return i(r).topLeft[e]},this.nextRight=function(n){var o=i(this.range(n)),r=this.range(t.nextVisible(o.bottomRight[e]));return i(r).bottomRight[e]},this.nextLeft=function(n){var o=i(this.range(n));return t.nextVisible(o.bottomRight[e])},this.prevRight=function(n){var o=i(this.range(n));return t.prevVisible(o.topLeft[e])}},boundary:function(e,t){this.top=e,this.bottom=t},range:function(e){return this.rangeGetter(e,this.top,this.bottom)}}),o=e.Class.extend({init:function(t){this._sheet=t,this.columns=this._sheet._grid._columns,this.autoFillCalculator=new e.spreadsheet.AutoFillCalculator(t._grid),this.colEdge=new i("col",this._sheet._grid._columns,this.columnRange.bind(this),this.union.bind(this)),this.rowEdge=new i("row",this._sheet._grid._rows,this.rowRange.bind(this),this.union.bind(this))},height:function(e){this._viewPortHeight=e},union:function(e){return this._sheet.unionWithMerged(e)},columnRange:function(e,t,n){return this._sheet._ref(t,e,n-t,1)},rowRange:function(e,t,n){return this._sheet._ref(e,t,1,n-t)},selectionIncludesMergedCells:function(){return this._sheet.select().contains(this._sheet._mergedCells)},setSelectionValue:function(e){var t=this._sheet.selection();setTimeout(function(){t.value(e())})},selectAll:function(){this._sheet.select(this._sheet._sheetRef)},select:function(e,t,n){e=this.refForMode(e,t),n&&(e=this._sheet.select().concat(e)),this._sheet.select(e)},refForMode:function(e,t){var n=this._sheet._grid;switch(t){case"range":e=n.normalize(e);break;case"row":e=n.rowRef(e.row);break;case"column":e=n.colRef(e.col);break;case"sheet":e=this._sheet._sheetRef}return e},startSelection:function(e,n,i,o,r){if("autofill"==n)this._sheet.startAutoFill();else if(o&&"range"==n){var a=new t(this._sheet.activeCell().first(),e);this._sheet.select(a,!1,!1),this._sheet.startSelection(r)}else this._sheet.startSelection(r),this.select(e,n,i)},completeSelection:function(){this._sheet.completeSelection()},selectForContextMenu:function(e,t){var n=this._sheet;n._activeDrawing=null,n.select().contains(this.refForMode(e,t))||this.select(e,t)},selectDrawingForContextMenu:function(e){var t=this._sheet;t._activeDrawing=e,t.triggerChange({selection:!0})},modifySelection:function(e){var n,i,o=this.determineDirection(e),r=this._sheet,a=this._viewPortHeight,s=r._grid._rows,l=r._grid._columns,c=r.currentOriginalSelectionRange(),d=r.select().toRangeRef(),u=r.activeCell(),h=c.topLeft.clone(),p=c.bottomRight.clone();switch(this.colEdge.boundary(d.topLeft.row,d.bottomRight.row),this.rowEdge.boundary(d.topLeft.col,d.bottomRight.col),o){case"expand-left":h.col=this.colEdge.prevLeft(h.col),n=h;break;case"shrink-right":h.col=this.colEdge.nextLeft(h.col),n=h;break;case"expand-right":p.col=this.colEdge.nextRight(p.col),n=p;break;case"shrink-left":p.col=this.colEdge.prevRight(p.col),n=p;break;case"expand-up":h.row=this.rowEdge.prevLeft(h.row),n=h;break;case"shrink-down":h.row=this.rowEdge.nextLeft(h.row),n=h;break;case"expand-down":p.row=this.rowEdge.nextRight(p.row),n=p;break;case"shrink-up":p.row=this.rowEdge.prevRight(p.row),n=p;break;case"expand-page-up":h.row=s.prevPage(h.row,a);break;case"shrink-page-up":p.row=s.prevPage(p.row,a);break;case"expand-page-down":p.row=s.nextPage(p.row,a);break;case"shrink-page-down":h.row=s.nextPage(h.row,a);break;case"first-col":h.col=l.firstVisible(),p.col=u.bottomRight.col,n=h;break;case"last-col":p.col=l.lastVisible(),h.col=u.topLeft.col,n=p;break;case"first-row":h.row=s.firstVisible(),p.row=u.bottomRight.row,n=h;break;case"last-row":p.row=s.lastVisible(),h.row=u.topLeft.row,n=p;break;case"last":p.row=s.lastVisible(),p.col=l.lastVisible(),h=u.topLeft,n=p;break;case"first":h.row=s.firstVisible(),h.col=l.firstVisible(),p=u.bottomRight,n=h}return i=new t(h,p),this.union(i).intersects(u)?(n&&r.focus(n),void this.updateCurrentSelectionRange(i)):void this.modifySelection(o.replace("shrink","expand"))},moveActiveCell:function(e){var t=this._sheet,i=t.activeCell(),o=i.topLeft,r=i.bottomRight,a=t.originalActiveCell(),s=t._grid._rows,l=t._grid._columns,c=a.row,d=a.col;switch(e){case"left":d=l.prevVisible(o.col);break;case"up":c=s.prevVisible(o.row);break;case"right":d=l.nextVisible(r.col);break;case"down":c=s.nextVisible(r.row);break;case"first-col":d=l.firstVisible();break;case"last-col":d=l.lastVisible();break;case"first-row":c=s.firstVisible();break;case"last-row":c=s.lastVisible();break;case"last":c=s.lastVisible(),d=l.lastVisible();break;case"first":c=s.firstVisible(),d=l.firstVisible();break;case"next-page":c=s.nextPage(r.row,this._viewPortHeight);break;case"prev-page":c=s.prevPage(r.row,this._viewPortHeight)}t.select(new n(c,d))},navigateInSelection:function(e){function t(e){i=e.topLeft,o=e.bottomRight}var i,o,r,a,s,l=this._sheet,c=l.activeCell(),d=c.topLeft,u=l.originalActiveCell(),h=l._grid._rows,p=l._grid._columns,f=u.row,g=u.col,m=d.col,v=d.row;for(t(l.currentNavigationRange()),a=!1;!a;){switch(s=new n(f,g),e){case"next":o.eq(s)?(t(l.nextNavigationRange()),f=i.row,g=i.col):(g=p.nextVisible(m),(g==m||g>o.col)&&(g=i.col,r=h.nextVisible(f),f=r==f||r>o.row?i.row:r));break;case"previous":i.eq(s)?(t(l.previousNavigationRange()),f=o.row,g=o.col):(g=p.prevVisible(m),(g==m||g<i.col)&&(g=o.col,r=h.prevVisible(f),f=r==f||r<i.row?o.row:r));break;case"lower":o.eq(s)?(t(l.nextNavigationRange()),f=i.row,g=i.col):(f=h.nextVisible(v),(f==v||f>o.row)&&(f=i.row,r=p.nextVisible(g),g=r==g||r>o.col?i.col:r));break;case"upper":i.eq(s)?(t(l.previousNavigationRange()),f=o.row,g=o.col):(f=h.prevVisible(v),(f==v||f<i.row)&&(f=o.row,r=p.prevVisible(g),g=r==g||r<i.col?o.col:r));break;default:throw Error("Unknown entry navigation: "+e)}a=!this.shouldSkip(f,g),m=g,v=f}l.singleCellSelection()?l.select(new n(f,g)):l.activeCell(new n(f,g))},extendSelection:function(e,n){var i,o=this._sheet,r=o._grid;return"autofill"===n?void this.resizeAutoFill(e):("range"===n?e=r.normalize(e):"row"===n?e=r.rowRef(e.row).bottomRight:"column"===n&&(e=r.colRef(e.col).bottomRight),i=o.originalActiveCell().toRangeRef(),void this.updateCurrentSelectionRange(new t(i.topLeft,e)))},shouldSkip:function(e,t){var i,o;return!(!this._sheet.isHiddenRow(e)&&!this._sheet.isHiddenColumn(t))||(i=new n(e,t),o=!1,this._sheet.forEachMergedCell(function(e){e.intersects(i)&&!e.collapse().eq(i)&&(o=!0)}),o)},resizeAutoFill:function(e){var t,n,i,o=this._sheet,r=o.select(),a=o._autoFillOrigin,s=this.autoFillCalculator.autoFillDest(r,e),l=this.punch(r,s);l||(i=o.range(s)._previewFillFrom(o.range(a)),i&&(n=i.direction,t=i.hint)),o.updateAutoFill(s,l,t,n)},determineDirection:function(e){var t=this._sheet.currentSelectionRange(),n=this._sheet.activeCell(),i=n.topLeft.col==t.topLeft.col,o=n.bottomRight.col==t.bottomRight.col,r=n.topLeft.row==t.topLeft.row,a=n.bottomRight.row==t.bottomRight.row;switch(e){case"left":e=o?"expand-left":"shrink-left";break;case"right":e=i?"expand-right":"shrink-right";break;case"up":e=a?"expand-up":"shrink-up";break;case"down":e=r?"expand-down":"shrink-down";break;case"prev-page":e=a?"expand-page-up":"shrink-page-up";break;case"next-page":e=r?"expand-page-down":"shrink-page-down"}return e},updateCurrentSelectionRange:function(e){var t=this._sheet;t.select(t.originalSelect().replaceAt(t.selectionRangeIndex(),e),!1)},punch:function(e,i){var o,r,a;return i.topLeft.eq(e.topLeft)&&(i.bottomRight.row<e.bottomRight.row?(r=this.rowEdge.nextRight(i.bottomRight.row),o=new t(new n(r,e.topLeft.col),e.bottomRight)):i.bottomRight.col<e.bottomRight.col&&(a=this.colEdge.nextRight(i.bottomRight.col),o=new t(new n(e.topLeft.row,a),e.bottomRight))),o}}),e.spreadsheet.SheetNavigator=o)}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/axismanager.min",["kendo.core.min"],e)}(function(){!function(e){if(!(e.support.browser.msie&&e.support.browser.version<9)){var t=e.Class.extend({init:function(e){this._sheet=e},forEachSelectedColumn:function(e){var t=this._sheet;t.batch(function(){t.select().forEachColumnIndex(function(n,i){e(t,n,i)})},{layout:!0,recalc:!0})},forEachSelectedRow:function(e){var t=this._sheet;t.batch(function(){t.select().forEachRowIndex(function(n,i){e(t,n,i)})},{layout:!0,recalc:!0})},includesHiddenColumns:function(e){return this._sheet._grid._columns.includesHidden(e.topLeft.col,e.bottomRight.col)},includesHiddenRows:function(e){return this._sheet._grid._rows.includesHidden(e.topLeft.row,e.bottomRight.row)},selectionIncludesHiddenColumns:function(){return this.includesHiddenColumns(this._sheet.select())},selectionIncludesHiddenRows:function(){return this.includesHiddenRows(this._sheet.select())},deleteSelectedColumns:function(){var e=[],t=0;return this.forEachSelectedColumn(function(n,i){if(i-=t,!n.isHiddenColumn(i)){t++;var o=[];e.unshift({index:i,formulas:o,width:n.columnWidth(i)}),n._saveModifiedFormulas(o,function(){n.deleteColumn(i)})}}),e},deleteSelectedRows:function(){var e=[],t=0;return this.forEachSelectedRow(function(n,i){if(i-=t,!n.isHiddenRow(i)){t++;var o=[];e.unshift({index:i,formulas:o,height:n.rowHeight(i)}),n._saveModifiedFormulas(o,function(){n.deleteRow(i)})}}),e},hideSelectedColumns:function(){var t,n,i,o,r,a,s;for(this.forEachSelectedColumn(function(e,t){e.hideColumn(t)}),t=this._sheet,n=t.select().toRangeRef(),i=n.topLeft.col,o=n.bottomRight.col,r=null;;){if(a=o<t._columns._count,s=i>=0,!s&&!a)break;if(a&&!t.isHiddenColumn(o)){r=o;break}if(s&&!t.isHiddenColumn(i)){r=i;break}i--,o++}null!==r&&(n=new e.spreadsheet.RangeRef(new e.spreadsheet.CellRef(0,r),new e.spreadsheet.CellRef(t._rows._count-1,r)),t.range(n).select())},hideSelectedRows:function(){var t,n,i,o,r,a,s;for(this.forEachSelectedRow(function(e,t){e.hideRow(t)}),t=this._sheet,n=t.select().toRangeRef(),i=n.topLeft.row,o=n.bottomRight.row,r=null;;){if(a=o<t._rows._count,s=i>=0,!s&&!a)break;if(a&&!t.isHiddenRow(o)){r=o;break}if(s&&!t.isHiddenRow(i)){r=i;break}i--,o++}null!==r&&(n=new e.spreadsheet.RangeRef(new e.spreadsheet.CellRef(r,0),new e.spreadsheet.CellRef(r,t._columns._count-1)),t.range(n).select())},unhideSelectedColumns:function(){this.forEachSelectedColumn(function(e,t){e.unhideColumn(t)})},unhideSelectedRows:function(){this.forEachSelectedRow(function(e,t){e.unhideRow(t)})},preventAddRow:function(){var e=this._sheet.select().toRangeRef(),t=e.height();return this._sheet.preventInsertRow(0,t)},preventAddColumn:function(){var e=this._sheet.select().toRangeRef(),t=e.width();return this._sheet.preventInsertColumn(0,t)},addColumnLeft:function(){var e,t=this._sheet,n=0;return t.batch(function(){t.select().forEachColumnIndex(function(i){e||(e=i),t.insertColumn(e),++n})},{recalc:!0,layout:!0}),{base:e,count:n}},addColumnRight:function(){var e,t=this._sheet,n=0;return t.batch(function(){t.select().forEachColumnIndex(function(t){e=t+1,++n});for(var i=0;i<n;++i)t.insertColumn(e)},{recalc:!0,layout:!0}),{base:e,count:n}},addRowAbove:function(){var e,t=this._sheet,n=0;return t.batch(function(){t.select().forEachRowIndex(function(i){e||(e=i),t.insertRow(e),++n})},{recalc:!0,layout:!0}),{base:e,count:n}},addRowBelow:function(){var e,t=this._sheet,n=0;return t.batch(function(){t.select().forEachRowIndex(function(t){e=t+1,++n});for(var i=0;i<n;++i)t.insertRow(e)},{recalc:!0,layout:!0}),{base:e,count:n}}});e.spreadsheet.AxisManager=t}}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/clipboard.min",["kendo.core.min"],e)}(function(){!function(e){function t(){var e=new c(0,0,0);return{ref:e,mergedCells:[],data:[],foreign:!0,origRef:e.toRangeRef()}}function n(e,t,n,i){var o,r=e.data||(e.data=[]);r[t]||(r[t]=[]),r[t][n]=i,o=e.origRef.bottomRight,o.row=Math.max(o.row,t),o.col=Math.max(o.col,n)}function i(e){return e.replace(/^-(?:ms|moz|webkit)-/,"")}function o(e){var t={};return["borderBottom","borderRight","borderLeft","borderTop"].forEach(function(n){t[n]="none"==e[n+"Style"]?null:{size:1,color:e[n+"Color"]}}),t}function r(e,t,n,r,a){var s=window.getComputedStyle(n),l=n.innerText.replace(/\t$/,""),c=o(s),d={value:""===l?null:l,borderTop:c.borderTop||r.get(e,t)||null,borderBottom:c.borderBottom||r.get(e+1,t)||null,borderLeft:c.borderLeft||a.get(e,t)||null,borderRight:c.borderRight||a.get(e,t+1)||null,fontSize:parseInt(s["font-size"],10)};return r.set(e,t,d.borderTop),r.set(e+1,t,d.borderBottom),a.set(e,t,d.borderLeft),a.set(e,t+1,d.borderRight),"rgb(0, 0, 0)"!==s["background-color"]&&"rgba(0, 0, 0, 0)"!==s["background-color"]&&(d.background=s["background-color"]),"rgb(0, 0, 0)"!==s.color&&"rgba(0, 0, 0, 0)"!==s.color&&(d.color=s.color),"underline"==s["text-decoration"]&&(d.underline=!0),"italic"==s["font-style"]&&(d.italic=!0),"bold"==s["font-weight"]&&(d.bold=!0),"right"!==i(s["text-align"])&&(d.textAlign=i(s["text-align"])),"middle"!==s["vertical-align"]&&(d.verticalAlign=s["vertical-align"]),"normal"!==s["word-wrap"]&&(d.wrap=!0),d}function a(i){var o,a,s,l,d,u,h,p,f,g,m,v,_,b=t(),w=[],k=0,y=0;for(o=0;o<i.rows.length;++o)w.push([]);for(a=new e.spreadsheet.calc.runtime.Matrix,s=new e.spreadsheet.calc.runtime.Matrix,l=0;l<i.rows.length;++l,++k)for(d=i.rows[l],y=0,u=0;u<d.cells.length;++u){for(h=d.cells[u],p=h.rowSpan,f=h.colSpan;w[k][y];)y++;for(g=h.getAttribute("style"),m=/mso-ignore:colspan/.test(g),n(b,k,y,r(k,y,h,a,s)),(p>1||f>1&&!m)&&b.mergedCells.push(""+new e.spreadsheet.RangeRef(new c(k,y),new c(k+p-1,y+f-1))),v=k+p;--v>=k;)for(_=y+f;--_>=y;)v<w.length&&(w[v][_]=!0,v==k&&_==y||n(b,v,_,{}))}return b}function s(e){var i,o,r,a,s=t();if(e.indexOf("\t")===-1&&e.indexOf("\n")==-1)n(s,0,0,{value:e});else for(i=e.split("\n"),o=0;o<i.length;o++)for(r=i[o].split("\t"),a=0;a<r.length;a++)n(s,o,a,{value:r[a]});return s}var l,c,d;e.support.browser.msie&&e.support.browser.version<9||(l=e.jQuery,c=e.spreadsheet.CellRef,d=e.Class.extend({init:function(t){this._content={},this._externalContent={},this._internalContent={},this.workbook=t,this.origin=e.spreadsheet.NULLREF,this.iframe=document.createElement("iframe"),this.iframe.className="k-spreadsheet-clipboard-paste",this.menuInvoked=!1,this._uid=e.guid(),document.body.appendChild(this.iframe)},destroy:function(){document.body.removeChild(this.iframe)},canCopy:function(){var t={canCopy:!0},n=this.workbook.activeSheet().select();return n===e.spreadsheet.NULLREF&&(t.canCopy=!1),n instanceof e.spreadsheet.UnionRef&&(t.canCopy=!1,t.multiSelection=!0),this.menuInvoked&&(t.canCopy=!1,t.menuInvoked=!0),t},canPaste:function(){var e=this.workbook.activeSheet(),t=this.pasteRef(),n=e.range(t),i={canPaste:!0,pasteOnMerged:!1,pasteOnDisabled:!1};return n.enable()||(i.canPaste=!1,i.pasteOnDisabled=!0),t.eq(e.unionWithMerged(t))||(i.canPaste=!1,i.pasteOnMerged=!0),this.menuInvoked&&(i.canPaste=!1,i.menuInvoked=!0),(t.bottomRight.row>=e._rows._count||t.bottomRight.col>=e._columns._count)&&(i.canPaste=!1,i.overflow=!0),i},intersectsMerged:function(){var e,t=this.workbook.activeSheet();return this.parse(),this.origin=this._content.origRef,e=this.pasteRef(),!e.eq(t.unionWithMerged(e))},copy:function(){var e=this.workbook.activeSheet();this.origin=e.select(),this._internalContent=e.selection().getState(),delete this._externalContent.html,delete this._externalContent.plain},cut:function(){var e=this.workbook.activeSheet();this.copy(),e.range(e.select()).clear()},pasteRef:function(){var t,n,i,o,r=this.workbook.activeSheet();return this.origin===e.spreadsheet.NULLREF?r.select():(t=r.activeCell().first(),n=this.origin.first(),i=n.row-t.row,o=n.col-t.col,this.origin.relative(i,o,3))},paste:function(){var e=this.workbook.activeSheet(),t=this.pasteRef();e.range(t).setState(this._content,this),e.triggerChange({recalc:!0,ref:t})},external:function(e){return e&&(e.html||e.plain)?void(this._externalContent=e):this._externalContent},isExternal:function(){return!this._isInternal()},parse:function(){var e,n,i,o=t();this._isInternal()?o=this._internalContent:(e=this._externalContent,e.html?(n=this.iframe.contentWindow.document,n.open(),n.write(e.html),n.close(),i=n.querySelector("table"),o=i?a(i):s(e.plain)):o=s(e.plain),this.origin=o.origRef),this._content=o},_isInternal:function(){var e,t;return void 0===this._externalContent.html||(e=!!l("<div/>").html(this._externalContent.html).find("table.kendo-clipboard-"+this._uid).length,t=!!l("<div/>").html(this._externalContent.plain).find("table.kendo-clipboard-"+this._uid).length,e||t)}}),e.spreadsheet.Clipboard=d)}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/range.min",["kendo.core.min","util/text-metrics.min","util/main.min"],e)}(function(){!function(e){function t(e,n,i){for(;e<=n&&i(e);)e++;if(e>n)return[];for(var o=e+1;o<=n;++o)if(i(o))return[{begin:e,end:o-1}].concat(t(o+1,n,i));return[{begin:e,end:n}]}function n(e){return e.replace(/M/g,"m").replace(/'/g,'"').replace(/tt/,"am/pm")}function i(t){return!/^=/.test(t)&&/number|percent/.test(e.spreadsheet.calc.parse(null,0,0,t).type)}function o(t,n,i,o,r){var a={baselineMarkerSize:0,width:r===!0?n+"px":"auto","font-size":(o||12)+"px","font-family":i||"Arial","white-space":r===!0?"pre-wrap":"pre","overflow-wrap":r===!0?"break-word":"normal","word-wrap":r===!0?"break-word":"normal"};return e.util.measureText(t,a,{box:u,normalizeText:!1}).height}var r,a,s,l,c,d,u;e.support.browser.msie&&e.support.browser.version<9||(r=e.jQuery,a=e.spreadsheet.UnionRef,s=e.spreadsheet.CellRef,l=e.spreadsheet.RangeRef,c=["color","fontFamily","underline","italic","bold","textAlign","indent","verticalAlign","background","format","link","editor","borderTop","borderRight","borderBottom","borderLeft","comment"],d=e.Class.extend({init:function(e,t){this._sheet=t,this._ref=e},clone:function(){return new d(this._ref.clone(),this._sheet)},skipHiddenCells:function(){var e=[],n=this,i=n._sheet,o=i.isHiddenRow.bind(i),r=i.isHiddenColumn.bind(i);return n._ref.forEach(function(i){var a,c,d,u,h,p;for(i=n._normalize(i.toRangeRef()),a=i.topLeft,c=i.bottomRight,d=t(a.row,c.row,o),u=t(a.col,c.col,r),h=0;h<d.length;++h)for(p=0;p<u.length;++p)e.push(new l(new s(d[h].begin,u[p].begin),new s(d[h].end,u[p].end)))}),i.range(e.length>1?new a(e):e[0])},_normalize:function(e){return this._sheet._grid.normalize(e)},_set:function(e,t,n){var i=this,o=i._sheet;return i._ref.forEach(function(n){o._set(n.toRangeRef(),e,t)}),n||o.triggerChange({recalc:"formula"==e||"value"==e||"validation"==e,value:t,range:i,ref:i._ref}),i},_get:function(e){return this._sheet._get(this._ref.toRangeRef(),e)},_property:function(e,t){return void 0===t?this._get(e):this._set(e,t)},value:function(e){return void 0!==e&&this._set("formula",null,!0),this._property("value",e)},resize:function(e){var t=this._resizedRef(e);return new d(t,this._sheet)},_resizedRef:function(e){return this._ref.map(function(t){return t.toRangeRef().resize(e)})},input:function(t,o){var a,s,l,c,d,u,h;return o=r.extend({arrayFormula:!1},o),a=this._get("format"),void 0!==t?(l=this._ref.toRangeRef().topLeft,s=e.spreadsheet.calc.parse(this._sheet.name(),l.row,l.col,t,a),this._sheet.batch(function(){var i,r=null;"exp"==s.type?r=e.spreadsheet.calc.compile(s):"@"!=a?(i=a&&e.spreadsheet.formatting.type(s.value,a),"date"==s.type&&"date"!=i?this.format(s.format||n(e.culture().calendar.patterns.d)):"percent"==s.type&&"percent"!=i?this.format(100*s.value==(100*s.value|0)?"0%":"0.00%"):s.format&&(!a||s.currency||"number"==i&&"number"==s.type&&s.format.length>a.length)&&this.format(s.format)):"string"!=s.type&&(s.value=t),this.formula(r,o.arrayFormula),r||this.value(s.value)}.bind(this),{recalc:!0,value:t,ref:this._ref,editorChange:this._sheet.isInEditMode()}),this):(t=this._get("value"),c=this._get("formula"),d=a&&!c&&e.spreadsheet.formatting.type(t,a),c?t="="+c:a&&"date"==d&&(u=e.spreadsheet.formatting.text(t,a),s=e.spreadsheet.calc.parse(null,null,null,u,a),h=e.spreadsheet.formatting.text(s.value,a),u==h)?t=u:"date"===d?t=e.toString(e.spreadsheet.numberToDate(t),e.culture().calendar.patterns.d):"percent"===d?t=e.spreadsheet.calc.runtime.limitPrecision(100*t)+"%":"string"==typeof t&&(/^[=']/.test(t)||/^(?:true|false)$/i.test(t)||i(t))?t="'"+t:this._sheet._useCultureDecimals()&&"number"==typeof t&&t!=Math.floor(t)&&(t=(t+"").replace(".",e.culture().numberFormat["."])),t)},enable:function(t){return void 0===t?!e.util.withExit(function(e){this._sheet.forEach(this._ref,function(t,n,i){i.enable===!1&&e(!0)})},this):this._property("enable",t)},formula:function(e,t){var n,i,o=this;return void 0===e?(n=o._get("formula"),n?""+n:null):(t?(i=this._ref.toRangeRef(),e=o._sheet.range(i.topLeft)._set("formula",e)._get("formula"),e&&e.setArrayFormulaRange(i)):o._set("formula",e),o)},intersectingArrayFormula:function(){var t=this._ref.clone().simplify().setSheet(this._sheet.name());return e.util.withExit(function(n){this._sheet._forFormulas(function(i){var o=i.arrayFormulaRange;o&&(o=t.intersect(o))!==e.spreadsheet.NULLREF&&n({formula:i,intersection:o})})},this)},canEditArrayFormula:function(){var e=this.intersectingArrayFormula();return!e||e.formula.arrayFormulaRange.eq(e.intersection)},validation:function(e){if(void 0===e){var t=this._get("validation");return t?t.toJSON():null}return this._property("validation",e)},_getValidationState:function(){var e,t,n,i=this._ref.toRangeRef(),o=i.topLeft.row,r=i.topLeft.col,a=i.bottomRight.row,s=i.bottomRight.col;for(e=r;e<=s;e++)for(t=o;t<=a;t++)if(n=this._sheet._validation(t,e),n&&"reject"===n.type&&n.value===!1)return n;return!1},merge:function(){return this._ref=this._sheet._merge(this._ref),this},unmerge:function(){var e=this._sheet._mergedCells;return this._ref.forEach(function(t){t.toRangeRef().intersecting(e).forEach(function(t){e.splice(e.indexOf(t),1)})}),this._sheet.triggerChange({}),this},select:function(){return this._sheet.select(this._ref),this},values:function(t){var n,i,o,r,s,l,c,d,u,h;if(this._ref instanceof a)throw Error("Unsupported for multiple ranges.");if(this._ref===e.spreadsheet.NULLREF){if(void 0!==t)throw Error("Unsupported for NULLREF.");return[]}if(n=this._ref.toRangeRef(),i=n.topLeft.row,o=n.topLeft.col,r=n.bottomRight.row,s=n.bottomRight.col,void 0===t){for(t=Array(n.height()),d=0;d<t.length;d++)t[d]=Array(n.width());for(l=o;l<=s;l++)for(c=i;c<=r;c++)t[c-i][l-o]=this._sheet._value(c,l);return t}for(this._sheet._set(n,"formula",null),l=o;l<=s;l++)for(c=i;c<=r;c++)u=t[c-i],u&&(h=u[l-o],void 0!==h&&this._sheet._value(c,l,h));return this._sheet.triggerChange({recalc:!0,ref:n}),this},_properties:function(t,n){var i,o,r,s,l,c,d,u,h,p,f;if(this._ref instanceof a)throw Error("Unsupported for multiple ranges.");if(this._ref===e.spreadsheet.NULLREF){if(void 0!==t)throw Error("Unsupported for NULLREF.");return[]}if(i=this._ref.toRangeRef(),o=i.topLeft.row,r=i.topLeft.col,s=i.bottomRight.row,l=i.bottomRight.col,u=this._sheet,void 0===t)return t=Array(i.height()),u.forEach(i,function(e,n,i){e-=o,n-=r;var a=t[e]||(t[e]=[]);a[n]=i}),t;for(i=i.clone(),p=function(e){var t=h[e];i.topLeft.row=i.bottomRight.row=d,i.topLeft.col=i.bottomRight.col=c,"value"==e&&u._set(i,"formula",null),u._set(i,e,t)},c=r;c<=l;c++)if(n||!u.isHiddenColumn(c))for(d=o;d<=s;d++)!n&&u.isHiddenRow(d)||n&&u.isFilteredRow(d)||(f=t[d-o],f&&(h=f[c-r],h&&Object.keys(h).forEach(p)));return u.triggerChange({recalc:!0,ref:this._ref}),this},clear:function(e){var t,n,i;return e=e||{},t=e.clearAll||!Object.keys(e).length,n=this._sheet,i={recalc:t||e.contentsOnly,ref:this._ref},n.batch(function(){i.recalc&&this.formula(null),t&&this.validation(null),(t||e.formatOnly)&&(c.forEach(function(t){e.keepBorders&&/^border/i.test(t)||this[t](null)}.bind(this)),this.fontSize(null),this.wrap(null),this.unmerge())}.bind(this),i),this},clearContent:function(){return this.clear({contentsOnly:!0})},clearFormat:function(){return this.clear({formatOnly:!0})},isSortable:function(){return!this.cantSort()},cantSort:function(){var t,n,i,o,r,l;if(this._ref instanceof a)return{code:"cantSortMultipleSelection",message:"Unsupported for multiple ranges."};if(this._ref===e.spreadsheet.NULLREF)return{code:"cantSortNullRef",message:"Unsupported for NULLREF."};t=this._sheet._getMergedCells(this._ref.toRangeRef()),n=t.primary,i=t.secondary,o=null,r=null,l={};try{this._sheet.forEach(this,function(e,a){var c=new s(e,a).print(),d=n[c];if(d){if(null===o)o=d.width(),r=d.height();else if(o!=d.width()||r!=d.height())throw l}else if(!i[c]&&t.hasMerged)throw l})}catch(c){if(c!==l)throw c;return{code:"cantSortMixedCells",message:"Unsupported for range containing cells of different shapes."}}return!1},sort:function(e){var t=this.cantSort();if(t)throw Error(t.message);return void 0===e&&(e={column:0}),e=e instanceof Array?e:[e],this._sheet._sortBy(this._ref.toRangeRef(),e.map(function(e,t){return"number"==typeof e&&(e={column:e}),{index:void 0===e.column?t:e.column,ascending:void 0===e.ascending||e.ascending}})),this},isFilterable:function(){return!(this._ref instanceof a)},filter:function(e){if(this._ref instanceof a)throw Error("Unsupported for multiple ranges.");return e===!1?this.clearFilters():(e=e===!0?[]:e instanceof Array?e:[e],this._sheet._filterBy(this._ref.toRangeRef(),e.map(function(e,t){return{index:void 0===e.column?t:e.column,filter:e.filter}}))),this},clearFilter:function(e){this._sheet.clearFilter(e)},clearFilters:function(){var e,t=this._sheet.filter(),n=[];if(t){for(e=0;e<t.columns.length;e++)n.push(t.columns[e].index);this._sheet.batch(function(){this.clearFilter(n),this._filter=null},{layout:!0,filter:!0})}},hasFilter:function(){var e=this._sheet.filter();return!!e},leftColumn:function(){return new d(this._ref.leftColumn(),this._sheet)},rightColumn:function(){return new d(this._ref.rightColumn(),this._sheet)},topRow:function(){return new d(this._ref.topRow(),this._sheet)},bottomRow:function(){return new d(this._ref.bottomRow(),this._sheet)},column:function(e){return new d(this._ref.toColumn(e),this._sheet)},row:function(e){return new d(this._ref.toRow(e),this._sheet)},forEachRow:function(e){this._ref.forEachRow(function(t){e(new d(t,this._sheet))}.bind(this))},forEachColumn:function(e){this._ref.forEachColumn(function(t){e(new d(t,this._sheet))}.bind(this))},sheet:function(){return this._sheet},topLeft:function(){return this._ref.toRangeRef().topLeft},intersectingMerged:function(){var e=this._sheet,t=[];return e._mergedCells.forEach(function(e){e.intersects(this._ref)&&t.push(""+e)}.bind(this)),t},getState:function(t){var n,i,o=this._ref.first(),r={ref:o,data:[],origRef:this._ref,rows:this._sheet._rows.getState()};return t?n="input"===t?["value","formula"]:"border"===t?["borderLeft","borderTop","borderRight","borderBottom"]:[t]:(n=e.spreadsheet.ALL_PROPERTIES,r.mergedCells=this.intersectingMerged()),i=r.data,this.forEachCell(function(t,r,a){var s={},l=t-o.row,c=r-o.col;i[l]||(i[l]=[]),i[l][c]=s,n.forEach(function(t){var n=void 0===a[t]?null:a[t]; +(n instanceof e.spreadsheet.calc.runtime.Formula||n instanceof e.spreadsheet.validation.Validation)&&(n=n.deepClone()),s[t]=n})}),r},setState:function(e,t){var n=this._sheet,i=this._ref.first(),o=e.ref.row-i.row,r=e.ref.col-i.col,a=t&&!t.isExternal(),s=t&&!a;n.batch(function(){var l,c;e.mergedCells&&this.unmerge(),t||this._sheet._rows.setState(e.rows),l=i.row,c=this.hasFilter(),e.data.forEach(function(o,r){if(!(c&&a&&n.isHiddenRow(e.ref.row+r))){var d=i.col;o.forEach(function(o,u){var h,p;if(!(c&&a&&n.isHiddenColumn(e.ref.col+u))){if(h=t?n.range(l,d):n.range(i.row+r,i.col+u),h.enable()){for(p in o)"value"!=p&&(t&&"enable"==p||h._set(p,o[p]));if(!o.formula)if(s)try{null==o.value?h._set("value",null):h.input(o.value)}catch(f){h._set("value",o.value)}else h._set("value",o.value)}d++}}),l++}}),e.mergedCells&&e.mergedCells.forEach(function(e){e=n._ref(e).relative(o,r,3),n.range(e).merge()},this)}.bind(this),{recalc:!0,ref:this._ref})},_adjustRowHeight:function(){var t=this,n=t._sheet,i=n._getMergedCells(t._ref.toRangeRef()),o=i.primary,r=i.secondary;n.batch(function(){t.forEachRow(function(t){var i=t._ref.topLeft.row,a=n.rowHeight(i);t.forEachCell(function(t,i,l){var c,d,u,h,p=new s(t,i).print();r[p]||(c=o[p],d=c?n._columns.sum(c.topLeft.col,c.bottomRight.col):n.columnWidth(i),u=l.value,l.format&&null!=u&&(u=e.spreadsheet.formatting.format(u,l.format)),h=e.spreadsheet.util.getTextHeight(u,d,l.fontFamily,l.fontSize,l.wrap),a=Math.max(a,h))}),n.rowHeight(i,a)})},{layout:!0})},forEachCell:function(e){this._ref.forEach(function(t){this._sheet.forEach(t.toRangeRef(),e.bind(this))}.bind(this))},hasValue:function(){var t=this._sheet._defaultCellStyle;return e.util.withExit(function(e){this.forEachCell(function(n,i,o){var r,a;for(r in o)a=o[r],void 0!==a&&null!==a&&a!==t[r]&&e(!0)})},this)},wrap:function(e){return void 0===e?!!this._property("wrap"):(this._property("wrap",e),null!==e&&this._adjustRowHeight(),this)},fontSize:function(e){return void 0===e?this._property("fontSize"):(this._property("fontSize",e),null!==e&&this._adjustRowHeight(),this)},draw:function(e,t){this._sheet.draw(this,e,t)},insideBorders:function(e){return this.insideVerticalBorders(e).insideHorizontalBorders(e)},insideVerticalBorders:function(e){return this._ref.forEach(function(t){t instanceof l&&t.width()>1&&(t=t.clone(),t.topLeft.col++,this._sheet.range(t)._set("vBorders",e))},this),this},insideHorizontalBorders:function(e){return this._ref.forEach(function(t){t instanceof l&&t.height()>1&&(t=t.clone(),t.topLeft.row++,this._sheet.range(t)._set("hBorders",e))},this),this}}),r.each(c,function(e,t){d.prototype[t]=function(e){return this._property(t,e)}}),u=r('<div style="position: absolute !important; top: -4000px !important; height: auto !important;padding: 1px 3px !important; box-sizing: border-box; margin: 0 !important; border: 1px solid black !important;line-height: normal !important; visibility: hidden !important;white-space: pre-wrap;" />')[0],e.spreadsheet.util={getTextHeight:o},e.spreadsheet.Range=d)}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/runtime.min",["spreadsheet/references.min"],e)}(function(){"use strict";function e(t){return t instanceof e?t:void(this.code=t)}function t(e,t,n){for(var i,o=n(e),r=e;++e<t;)i=n(e),i>o&&(o=i,r=e);return r}function n(e,t){if(e.constructor!==t.constructor)return!1;if(e instanceof E)return e.sheet==t.sheet&&e.row==t.row&&e.col==t.col&&e.rel==t.rel;if(e instanceof I)return n(e.topLeft,t.topLeft)&&n(e.bottomRight,t.bottomRight)&&e.endSheet==t.endSheet;if(e instanceof M){var i=e.refs.length;if(i!=t.refs.length)return!1;for(;--i>=0;)if(!n(e.refs[i],t.refs[i]))return!1}return!0}function i(t,n){function i(e){var t,n,o,a,d;return c=e[0],t="{ ",Array.isArray(c)?(h+="while (i < args.length) { ",p+="while (i < args.length) { ",t+="xargs.push(tmp = []); stack.push(xargs); xargs = tmp; ",t+="while (i < args.length) { ",t+=e.map(i).join(""),t+="} ",t+="xargs = stack.pop(); ",p+="} ",h+="} "):"+"==c?(h+="while (i < args.length) { ",p+="while (i < args.length) { ",t+="if (i >= args.length) return new CalcError('N/A'); ",t+="xargs.push(tmp = []); stack.push(xargs); xargs = tmp; ",t+="do { ",t+=e.slice(1).map(i).join(""),t+="} while (i < args.length); ",t+="xargs = stack.pop(); ",p+="} ",h+="} "):"?"==c?t+="if (!("+l(e[1])+")) return new CalcError(err); ":(n=e[1],Array.isArray(n)&&/^#?collect/.test(n[0])?(o=/!$/.test(n[0]),a=n[2],r(),t+="try {var $"+c+" = this.cellValues(args.slice(i",a&&(t+=", i + "+a),t+=")"+(o?",true":"")+").reduce(function(ret, $"+c+"){ ","#"!=n[0].charAt(0)&&(t+="if ($"+c+" instanceof CalcError) throw $"+c+"; "),t+="if ("+l(n[1])+") ret.push($"+c+"); ",t+="return ret; ",t+="}.bind(this), []); ",t+=a?"i += "+a+"; ":"i = args.length; ",t+="xargs.push($"+c+")} catch(ex) { if (ex instanceof CalcError) return ex; throw ex; } ",p+="toResolve.push(args.slice(i)); "):"rest"==n?t+="xargs.push(args.slice(i)); i = args.length; ":((m=/^\*/.test(c))&&(v=!0,c=c.substr(1)),t+="var $"+c+" = args[i++]; ",d=!1,/!$/.test(n)?(n=n.substr(0,n.length-1),d=!0):t+="if ($"+c+" instanceof CalcError) return $"+c+"; ",t+=s(n,d)+"xargs.push($"+c+"); ")),t+="} "}function r(){return d?"$"+c:(g=!0,d=!0,p+="toResolve.push(args[i++]); ","($"+c+" = this.force($"+c+"))")}function a(e){return"("+(e?"(typeof "+r()+" == 'number' ? ($"+c+" = round($"+c+"), true) : false) || ":"(typeof "+r()+" == 'number') || ")+"(typeof $"+c+" == 'boolean' ? ($"+c+" = +$"+c+", true) : false) || (typeof $"+c+" == 'string' && !/^(?:=|true|false)/i.test($"+c+") ? (tmp = kendo.spreadsheet.calc.parse(0, 0, 0, $"+c+"), /^date|number|percent$/.test(tmp.type) ? ($"+c+" = +tmp.value, true) : false) : false))"}function s(e,t){d=!1;var n="if (!("+l(e)+")) { ";return d&&!t&&(n+=" if ($"+c+" instanceof CalcError) return $"+c+"; "),n+="return new CalcError(err); } ",d||(p+="i++; "),h+=m?"var $"+c+" = this._arrayArg(args[i]); if ($"+c+") { xargs.push($"+c+"); width = Math.max(width, $"+c+".width); height = Math.max(height, $"+c+".height); arrays.push(true) } else { xargs.push(args[i]); arrays.push(false); } i++; ":"xargs.push(args[i++]); arrays.push(false); ",n}function l(e){if(Array.isArray(e)){if("or"==e[0])return"("+e.slice(1).map(l).join(") || (")+")";if("and"==e[0])return"("+e.slice(1).map(l).join(") && (")+")";if("values"==e[0])return"("+e.slice(1).map(function(e){return r()+" === "+e}).join(") || (")+")";if("null"==e[0])return"("+l("null")+" ? (($"+c+" = "+e[1]+"), true) : false)";if("between"==e[0]||"[between]"==e[0])return"("+r()+" >= "+e[1]+" && $"+c+" <= "+e[2]+" ? true : ((err = 'NUM'), false))";if("(between)"==e[0])return"("+r()+" > "+e[1]+" && $"+c+" < "+e[2]+" ? true : ((err = 'NUM'), false))";if("(between]"==e[0])return"("+r()+" > "+e[1]+" && $"+c+" <= "+e[2]+" ? true : ((err = 'NUM'), false))";if("[between)"==e[0])return"("+r()+" >= "+e[1]+" && $"+c+" < "+e[2]+" ? true : ((err = 'NUM'), false))";if("assert"==e[0]){var t=e[2]||"N/A";return"(("+e[1]+") ? true : (err = "+JSON.stringify(t)+", false))"}if("not"==e[0])return"!("+l(e[1])+")";throw Error("Unknown array type condition: "+e[0])}if("number"==e||"datetime"==e)return a(!0);if("number!"==e)return"(typeof "+r()+" == 'number' ? ($"+c+" = round($"+c+"), true) : false)";if("integer"==e||"date"==e)return"("+a()+" && (($"+c+" |= 0), true))";if("divisor"==e)return"("+a(!0)+" && ($"+c+" == 0 ? ((err = 'DIV/0'), false) : true))";if("number+"==e)return"("+a(!0)+" && ($"+c+" >= 0 ? true : ((err = 'NUM'), false)))";if("integer+"==e)return"("+a()+" && (($"+c+" |= 0) >= 0 ? true : ((err = 'NUM'), false)))";if("number++"==e)return"("+a(!0)+" && ($"+c+" > 0 ? true : ((err = 'NUM'), false)))";if("integer++"==e)return"("+a()+" && (($"+c+" |= 0) > 0 ? true : ((err = 'NUM'), false)))";if("string"==e)return"((typeof "+r()+" == 'string' || typeof $"+c+" == 'boolean' || typeof $"+c+" == 'number') ? ($"+c+" += '', true) : ($"+c+" === undefined ? (($"+c+" = ''), true) : false))";if("boolean"==e)return"(typeof "+r()+" == 'boolean')";if("logical"==e)return"(typeof "+r()+" == 'boolean' || (typeof $"+c+" == 'number' ? ($"+c+" = !!$"+c+", true) : false))";if("matrix"==e)return r(),"((m = this.asMatrix($"+c+")) ? ($"+c+" = m) : false)";if("#matrix"==e)return"((m = this.asMatrix($"+c+")) ? ($"+c+" = m) : false)";if("ref"==e)return"($"+c+" instanceof kendo.spreadsheet.Ref)";if("area"==e)return"($"+c+" instanceof kendo.spreadsheet.CellRef || $"+c+" instanceof kendo.spreadsheet.RangeRef)";if("cell"==e)return"($"+c+" instanceof kendo.spreadsheet.CellRef)";if("null"==e)return"("+r()+" == null)";if("anyvalue"==e)return"("+r()+" != null && i <= args.length)";if("forced"==e)return"("+r()+", i <= args.length)";if("anything"==e)return"(i <= args.length)";if("blank"==e)return"("+r()+" == null || $"+c+" === '')";throw Error("Can't check for type: "+e)}var c,d,u,h="function arrayArgs(args) { var xargs = [], width = 0, height = 0, arrays = [], i = 0; ",p="function resolve(args, callback) { var toResolve = [], i = 0; ",f="'use strict'; function check(args) { var stack = [], tmp, xargs = [], i = 0, m, err = 'VALUE'; ",g=!1,m=!1,v=!1;return f+=n.map(i).join(""),f+="if (i < args.length) return new CalcError('N/A'); ",f+="return xargs; } ",h+="return { args: xargs, width: width, height: height, arrays: arrays }; } ",g?(p+="this.resolveCells(toResolve, callback); } ",u=Function("CalcError","round",f+p+h+" return { resolve: resolve, check: check, arrayArgs: arrayArgs };")):u=Function("CalcError","round",f+" return { check: check };"),u=u(e,o),v||delete u.arrayArgs,u}function o(e){return e===parseInt(e,10)?e:+e.toPrecision(14)}function r(e){return"number"==typeof e?o(e):e}function a(t,n,i){if(i instanceof e)return i;try{return n.apply(t,i)}catch(o){if(o instanceof e)return o;throw o}}function s(e,t,n,i){return function(o,r){function s(){var t,s,l,c,d,u;if(i&&(t=i.call(this,r),r=t.args,t.width>0&&t.height>0)){for(s=new P(this),l=0;l<t.height;++l)for(c=0;c<t.width;++c){for(d=[],u=0;u<r.length;++u)d[u]=t.arrays[u]?r[u].getNA(l,c):r[u];d=n.call(this,d),s.set(l,c,a(this,e,d))}return o(s)}d=n.call(this,r),o(a(this,e,d))}t?t.call(this,r,s):s.call(this)}}function l(t,n,i,o){return function(r,a){function s(){var n,s,l,c,d,u,h,p;if(o&&(n=o.call(this,a),a=n.args,n.width>0&&n.height>0))for(s=new P(this),l=n.width*n.height,c=function(e,t){return function(n){if(s.set(e,t,n),--l,0===l)return r(s)}},d=0;d<n.height&&l>0;++d)for(u=0;u<n.width&&l>0;++u){for(h=[],p=0;p<a.length;++p)h[p]=n.arrays[p]?a[p].getNA(d,u):a[p];if(h=i.call(this,h),h instanceof e){if(s.set(d,u,h),--l,0===l)return r(s)}else h.unshift(c(d,u)),t.apply(this,h)}else n=i.call(this,a),n instanceof e?r(n):(n.unshift(r),t.apply(this,n))}n?n.call(this,a,s):s.call(this)}}function c(e,t){return e=e.toLowerCase(),B[e]=t,{args:function(n,o){var r,a=i(e,n);return o&&(a.arrayArgs&&console.log(""+a.arrayArgs),a.resolve&&console.log(""+a.resolve),a.check&&console.log(""+a.check)),r=B[e]=s(t,a.resolve,a.check,a.arrayArgs),r.kendoSpreadsheetArgs=n,this},argsAsync:function(n,o){var r,a=i(e,n);return o&&(a.arrayArgs&&console.log(""+a.arrayArgs),a.resolve&&console.log(""+a.resolve),a.check&&console.log(""+a.check)),r=B[e]=l(t,a.resolve,a.check,a.arrayArgs),r.kendoSpreadsheetArgs=n,this}}}function d(e,t,n){return t++,(1461*(e+4800+((t-14)/12|0))/4|0)+(367*(t-2-12*((t-14)/12|0))/12|0)-(3*((e+4900+((t-14)/12|0))/100|0)/4|0)+n-32075}function u(e){var t,n,i,o,r,a,s;return t=e+68569,n=4*t/146097|0,t-=(146097*n+3)/4|0,o=4e3*(t+1)/1461001|0,t=t-(1461*o/4|0)+31,i=80*t/2447|0,a=t-(2447*i/80|0),t=i/11|0,r=i+2-12*t,s=100*(n-49)+o+t,r--,{year:s,month:r,date:a,day:(e+1)%7,ord:N[h(s)][r]+a}}function h(e){return e%4?0:e%100?1:e%400?0:1}function p(e){return h(e)?366:365}function f(e,t){return h(e)&&1==t?29:H[t]}function g(e,t,n){return t>=1&&t<=12&&n>=1&&n<=f(e,t-1)}function m(e){return u((0|e)+L)}function v(e,t,n){return d(e,t,n)-L}function _(e){var t,n,i,o,r=e-(0|e);return r<0&&r++,t=Math.round(W*r),n=Math.floor(t/V),t-=n*V,i=Math.floor(t/O),t-=i*O,o=Math.floor(t/1e3),t-=1e3*o,{hours:n,minutes:i,seconds:o,milliseconds:t}}function b(e){var t=m(e),n=_(e);return new Date(t.year,t.month,t.date,n.hours,n.minutes,n.seconds,n.milliseconds)}function w(e,t,n,i){return(e+(t+(n+i/1e3)/60)/60)/24}function k(e){var t=w(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds());return e=v(e.getFullYear(),e.getMonth(),e.getDate()),e<0?e-1+t:e+t}function y(e,t){return t&&(t=kendo.spreadsheet.formatting.makeDateFormat(t)),kendo.parseExactDate(e,t)||kendo.parseExactDate(e)||kendo.parseExactDate(e,["MMMM dd yyyy","MMMM dd yy","MMM dd yyyy","MMM dd yy","dd MMMM yyyy","dd MMMM yy","dd MMM yyyy","dd MMM yy","MMMM dd, yyyy","MMMM dd, yy","MMM dd, yyyy","MMM dd, yy","MMMM dd","MMM dd","MMMM yyyy","MMM yyyy","dd MMMM","dd MMM"])}function x(t){return function(n,i){return"string"==typeof n&&"string"!=typeof i&&(i=null==i?"":i+""),"string"!=typeof n&&"string"==typeof i&&(n=null==n?"":n+""),"number"==typeof n&&null==i&&(i=0),"number"==typeof i&&null==n&&(n=0),"string"==typeof n&&"string"==typeof i&&(n=n.toLowerCase(),i=i.toLowerCase()),typeof i==typeof n?t(n,i):new e("VALUE")}}var C,S,T,D,A,E,I,M,F,R,P,z,B,L,H,N,O,V,W,U,q,j;kendo.support.browser.msie&&kendo.support.browser.version<9||(C={},S=kendo.spreadsheet,S.calc=C,T=C.runtime={},D=kendo.Class,A=S.Ref,E=S.CellRef,I=S.RangeRef,M=S.UnionRef,F=S.NULLREF,e.prototype.toString=function(){return"#"+this.code+("NAME"==this.code?"?":"!")},R=D.extend({init:function(e,t,n,i){this.callback=e,this.formula=t,this.ss=n,this.parent=i},resolve:function(e){var t=this;e instanceof A?t.resolveCells([e],function(){t._resolve(e)}):t._resolve(e)},error:function(t){return new e(t)},_resolve:function(e){e=void 0===e?null:Array.isArray(e)?this.asMatrix(e):r(e);var t=this.formula;t.arrayFormulaRange?e=this.asMatrix(e)||this.asMatrix([[e]]):e instanceof I&&(e=this._arrayArg(e)),t.value=e,this.ss.onFormula(t)&&this.callback&&this.callback.call(t,e)},resolveCells:function(e,t){function n(e){e.exec(a.ss,function(){--o||t.call(a)},a)}function i(e){var t,n;for(t=0;t<e.length;++t)n=e[t],n.formula&&s.push(n.formula);return!0}var o,r,a=this,s=[];if(function l(e){var t,n;for(t=0;t<e.length;++t)n=e[t],n instanceof A&&i(a.getRefCells(n)),Array.isArray(n)&&l(n)}(e),!s.length)return t.call(a);for(o=s.length,r=0;r<s.length;++r)n(s[r])},cellValues:function(e,t){var n,i,o=[];for(n=0;n<e.length;++n)i=e[n],i instanceof A?(i=this.getRefData(i,t),o=o.concat(i)):Array.isArray(i)?o=o.concat(this.cellValues(i,t)):i instanceof P?o=o.concat(this.cellValues(i.data,t)):o.push(i);return o},fetchName:function(t,n){var i,o=this.formula,r=this.ss.nameValue(t,o.sheet,o.row,o.col);r instanceof z?(r=r.clone(o.sheet,o.row,o.col,!0),i=new S.ValidationFormulaContext(this.ss.workbook),r.exec(i,n,this)):(r instanceof A&&(r=r.absolute(o.row,o.col),r.sheet||(r.sheet=o.sheet)),n(null==r?new e("NAME"):r))},force:function(e){return e instanceof A?this.getRefData(e):e},func:function(t,n,i){t=t.toLowerCase();var o=B[t];return o?o.call(this,n,i):void n(new e("NAME"))},bool:function(e){return e instanceof A&&(e=this.getRefData(e)),"string"==typeof e?"true"==e.toLowerCase():"number"==typeof e?0!==e:"boolean"==typeof e?e:null!=e},_arrayArg:function(t){var n=this.formula;return!n.arrayFormulaRange&&t instanceof I?1==t.height()&&n.col>=t.topLeft.col&&n.col<=t.bottomRight.col?this.getRefData(new E(t.topLeft.row,n.col).setSheet(t.sheet)):1==t.width()&&n.row>=t.topLeft.row&&n.row<=t.bottomRight.row?this.getRefData(new E(n.row,t.topLeft.col).setSheet(t.sheet)):new e("VALUE"):this.asMatrix(t)},asMatrix:function(e){var t,n,i,o,r,a,s;return e instanceof P?e:(t=this,e instanceof I?(n=e.topLeft,i=n.row,o=n.col,r=t.getRefCells(e),a=new P(t),isFinite(e.width())&&(a.width=e.width()),isFinite(e.height())&&(a.height=e.height()),isFinite(i)||(i=0),isFinite(o)||(o=0),r.forEach(function(e){a.set(e.row-i,e.col-o,e.value)}),a):Array.isArray(e)&&e.length>0?(a=new P(t),s=0,e.forEach(function(e){var n=0,i=1;e.forEach(function(e){var o=e instanceof I;e instanceof A&&!o&&(e=t.getRefData(e)),(o||Array.isArray(e))&&(e=t.asMatrix(e)),e instanceof P?(e.each(function(e,t,i){a.set(s+t,n+i,e)}),i=Math.max(i,e.height),n+=e.width):a.set(s,n++,e)}),s+=i}),a):void 0)},getRefCells:function(e,t,n){var i=this.formula;return this.ss.getRefCells(e,t,i.sheet,i.row,i.col,n)},getRefData:function(e,t){var n=this.formula;return this.ss.getData(e,n.sheet,n.row,n.col,t)},workbook:function(){return this.ss.workbook}}),P=D.extend({init:function(e){this.context=e,this.height=0,this.width=0,this.data=[]},clone:function(){var e=new P(this.context);return e.height=this.height,e.width=this.width,e.data=this.data.map(function(e){return e.slice()}),e},get:function(e,t){var n=this.data[e],i=n?n[t]:null;return i instanceof A?this.context.getRefData(i):i},getNA:function(t,n){return t<this.height&&n<this.width?this.get(t,n):new e("N/A")},set:function(e,t,n){var i=this.data[e];null==i&&(i=this.data[e]=[]),i[t]=n,e>=this.height&&(this.height=e+1),t>=this.width&&(this.width=t+1)},each:function(e,t){var n,i,o;for(n=0;n<this.height;++n)for(i=0;i<this.width;++i)if(o=this.get(n,i),(t||null!=o)&&(o=e.call(this.context,o,n,i),void 0!==o))return o},map:function(e,t){var n=new P(this.context);return this.each(function(t,i,o){n.set(i,o,e.call(this,t,i,o))},t),n},eachRow:function(e){var t,n;for(t=0;t<this.height;++t)if(n=e.call(this.context,t),void 0!==n)return n},eachCol:function(e){var t,n;for(t=0;t<this.width;++t)if(n=e.call(this.context,t),void 0!==n)return n},mapRow:function(e){var t=new P(this.context);return this.eachRow(function(n){t.set(n,0,e.call(this.context,n))}),t},mapCol:function(e){var t=new P(this.context);return this.eachCol(function(n){t.set(0,n,e.call(this.context,n))}),t},toString:function(){return JSON.stringify(this.data)},transpose:function(){var e=new P(this.context);return this.each(function(t,n,i){e.set(i,n,t)}),e},unit:function(e){var t,n,i,o;for(this.width=this.height=e,t=this.data=Array(e),n=e;--n>=0;)for(i=t[n]=Array(e),o=e;--o>=0;)i[o]=n==o?1:0;return this},multiply:function(t){var n,i,o,r,a,s,l=this,c=new P(l.context);for(n=0;n<l.height;++n)for(i=0;i<t.width;++i){for(o=0,r=0;r<l.width;++r){if(a=l.get(n,r),s=t.get(r,i),"number"!=typeof a||"number"!=typeof s)throw new e("VALUE");o+=a*s}c.set(n,i,o)}return c},adds:function(e,t){var n,i,o,r,a=this,s=new P(a.context),l=t?-1:1;for(n=0;n<a.height;++n)for(i=0;i<a.width;++i)o=a.get(n,i),r=e.get(n,i),s.set(n,i,o+l*r);return s},determinant:function(){var e,t,n,i,o,r=this.clone().data,a=r.length,s=1;for(e=0;e<a;e++){for(t=e;t<a&&!r[t][e];t++);if(t==a)return 0;if(t!=e)for(s=-s,i=e;i<a;i++)o=r[e][i],r[e][i]=r[t][i],r[t][i]=o;for(n=e+1;n<a;n++)for(i=e+1;i<a;i++)r[n][i]-=r[e][i]*r[n][e]/r[e][e];s*=r[e][e]}return s},inverse:function(){var e,n,i,o,r,a,s=this.width,l=this.augment(new P(this.context).unit(s)),c=l.data;for(n=0;n<s;++n){if(i=t(n,s,function(e){return c[e][n]}),!c[i][n])return null;for(n!=i&&(e=c[n],c[n]=c[i],c[i]=e),o=n+1;o<s;++o){for(r=n+1;r<2*s;++r)c[o][r]-=c[n][r]*c[o][n]/c[n][n];c[o][n]=0}}for(o=0;o<s;++o)for(a=c[o][o],r=0;r<2*s;++r)c[o][r]/=a;for(n=s;--n>=0;)for(o=n;--o>=0;)if(c[o][n])for(r=2*s;--r>=s;)c[o][r]-=c[n][r]*c[o][n];return l.slice(0,s,s,s)},augment:function(e){var t=this.clone(),n=t.width;return e.each(function(e,i,o){t.set(i,o+n,e)}),t},slice:function(e,t,n,i){var o,r,a=new P(this.context);for(o=0;o<n;++o)for(r=0;r<i;++r)a.set(o,r,this.get(e+o,t+r));return a}}),z=D.extend({init:function(e,t,n,i,o,r,a){this.refs=e,this.handler=t,this.print=n,this.absrefs=null,this.sheet=i,this.row=o,this.col=r,this.onReady=[],this.pending=!1,this.arrayFormulaRange=a},setArrayFormulaRange:function(e){this.arrayFormulaRange=e.clone().setSheet(this.sheet)},clone:function(e,t,n,i){var o=e.toLowerCase(),r=this.refs,a=this.arrayFormulaRange;return(i||o!=this.sheet.toLowerCase())&&(r=r.map(function(t){return t.hasSheet()||t.sheet&&t.sheet.toLowerCase()==o||(t=t.clone().setSheet(e)),t}),a&&(a=a.clone().setSheet(e))),new z(r,this.handler,this.print,e,t,n,a)},deepClone:function(){var e=this.refs.map(function(e){return e.clone()});return new z(e,this.handler,this.print,this.sheet,this.row,this.col,this.arrayFormulaRange)},resolve:function(e){this.pending=!1,this.onReady.forEach(function(t){t(e)})},exec:function(t,n,i){var o,r,a;if("value"in this)n&&n(this.value);else{for(n&&this.onReady.push(n),o=new R(this.resolve,this,t,i),r=0;i;){if(i.formula===this)return this.pending=!1,void o.resolve(new e("CIRCULAR"));i=i.parent,++r}if(this.pending)return;this.pending=!0,a=function(){this.absrefs||(this.absrefs=this.refs.map(function(e){return e.absolute(this.row,this.col)},this)),this.handler.call(o)}.bind(this),r<20?a():setTimeout(a,0)}},reset:function(){this.onReady=[],this.pending=!1,delete this.value},renameSheet:function(e,t){e=e.toLowerCase(),this.absrefs=null,this.sheet.toLowerCase()==e&&(this.sheet=t),this.refs.forEach(function(n){n.renameSheet(e,t)})},adjust:function(e,t,i,o){function r(n){return n===F?n:n.sheet.toLowerCase()!=e?(c&&("row"==t&&a>=i&&(n=n.relative(o,0)),"col"==t&&s>=i&&(n=n.relative(0,o))),n):n.adjust(a,s,d,u,"row"==t,i,o)}var a,s,l,c,d,u,h,p,f;if(e=e.toLowerCase(),a=this.row,s=this.col,l=this.sheet.toLowerCase(),c=!1,l==e&&("row"==t&&a>=i&&(this.row+=o,c=!0),"col"==t&&s>=i&&(this.col+=o,c=!0)),d=this.row,u=this.col,this.absrefs=null,h=this.refs,p=c,this.refs=h.map(function(e){var t=r(e);return p||n(t,e)||(p=!0),t}),f=this.arrayFormulaRange,f&&(this.arrayFormulaRange=r(f),p||n(f,this.arrayFormulaRange)||(p=!0)),p)return new z(h,this.handler,this.print,this.sheet,a,s,f)},toString:function(){return this.print(this.row,this.col)}}),B=Object.create(null),B["if"]=function(t,n){var i=this,o=n[0],r=n[1],a=n[2];this.resolveCells([o],function(){var n=i.asMatrix(o);n?r(function(o){a(function(r){var a=i.asMatrix(o),s=i.asMatrix(r);t(n.map(function(t,n,l){return t instanceof e?t:i.bool(t)?a?a.get(n,l):o:s?s.get(n,l):r}))})}):(o=this.force(o),o instanceof e?t(o):i.bool(o)?r(t):a(t))})},B["φ"]=function(e){e((1+Math.sqrt(5))/2)},L=d(1900,0,-1),H=[31,28,31,30,31,30,31,31,30,31,30,31],N=[[0,31,59,90,120,151,181,212,243,273,304,334],[0,31,60,91,121,152,182,213,244,274,305,335]],O=6e4,V=60*O,W=24*V,T.CalcError=e,T.Formula=z,T.Matrix=P,T.packDate=v,T.unpackDate=m,T.packTime=w,T.unpackTime=_,T.serialToDate=b,T.dateToSerial=k,T.daysInMonth=f,T.validDate=g,T.isLeapYear=h,T.daysInYear=p,T.parseDate=y,T.limitPrecision=o,S.dateToNumber=k,S.numberToDate=b,S.defineFunction=c,S.CalcError=e,T.defineFunction=c,T.defineAlias=function(e,t){var n=B[t];if(!n)throw Error("Function "+t+" is not yet defined");n.kendoSpreadsheetAliases||(n.kendoSpreadsheetAliases=[t]),n.kendoSpreadsheetAliases.push(e),B[e]=n},T.FUNCS=B,U=["or","number",["null",0]],q=[["*a",U],["*b",U]],j=[["*a",["or","anyvalue",["null",0]]],["*b",["or","anyvalue",["null",0]]]],c("binary+",function(e,t){return e+t}).args(q),c("binary-",function(e,t){return e-t}).args(q),c("binary*",function(e,t){return e*t}).args(q),c("binary/",function(e,t){return e/t}).args([["*a",U],["*b","divisor"]]),c("binary^",function(e,t){return Math.pow(e,t)}).args(q),c("binary&",function(e,t){return null==e&&(e=""),null==t&&(t=""),""+e+t}).args([["*a",["or","number","string","boolean","null"]],["*b",["or","number","string","boolean","null"]]]),c("binary=",function(e,t){return e="string"==typeof e?e.toLowerCase():e,t="string"==typeof t?t.toLowerCase():t,e===t}).args(j),c("binary<>",function(e,t){return e!==t}).args(j),c("binary<",x(function(e,t){return e<t})).args(j),c("binary<=",x(function(e,t){return e<=t})).args(j),c("binary>",x(function(e,t){return e>t})).args(j),c("binary>=",x(function(e,t){return e>=t})).args(j),c("unary+",function(e){return e}).args([["*a",U]]),c("unary-",function(e){return-e}).args([["*a",U]]),c("unary%",function(e){return e/100}).args([["*a",U]]),c("binary:",function(e,t){return new I(e,t).setSheet(e.sheet||this.formula.sheet,e.hasSheet())}).args([["a","cell"],["b","cell"]]),c("binary,",function(e,t){return new M([e,t])}).args([["a","ref"],["b","ref"]]),c("binary ",function(e,t){return e.intersect(t)}).args([["a","ref"],["b","ref"]]),c("not",function(e){return!this.bool(e)}).args([["*a",["or","anyvalue",["null",0]]]]),c("isblank",function(e){return e instanceof E&&(e=this.getRefData(e),null==e)}).args([["*value","anything!"]]),c("iserror",function(t){return t instanceof e}).args([["*value","forced!"]]),c("iserr",function(t){return t instanceof e&&"N/A"!=t.code}).args([["*value","forced!"]]),c("isna",function(t){return t instanceof e&&"N/A"==t.code}).args([["*value","forced!"]]),c("islogical",function(e){return"boolean"==typeof e}).args([["*value","forced!"]]),c("isnontext",function(e){return"string"!=typeof e}).args([["*value","forced!"]]),c("istext",function(e){return"string"==typeof e}).args([["*value","forced!"]]),c("isnumber",function(e){return"number"==typeof e}).args([["*value","forced!"]]),c("isref",function(e){return e instanceof E||e instanceof I}).args([["*value","anything!"]]),B[",getname"]=function(e,t){this.fetchName(t[0],e)})},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/validation.min",["spreadsheet/runtime.min"],e)}(function(){"use strict";function e(e,t,o,s){var c,d,u,h;if("string"==typeof s&&(s=JSON.parse(s)),s.from&&("list"!==s.dataType||s.fromIsListValue||(s.from=kendo.format(r,s.from),s.fromIsListValue=!0),"date"===s.dataType&&(u=i.runtime.parseDate(s.from),u&&(s.from=kendo.format(a,s.from),s.fromIsDateValue=!0)),s.from=i.compile(i.parseFormula(e,t,o,s.from))),s.to&&("date"===s.dataType&&(h=i.runtime.parseDate(s.to),h&&(s.to=kendo.format(a,s.to),s.toIsDateValue=!0)),s.to=i.compile(i.parseFormula(e,t,o,s.to))),d="custom"==s.dataType?n.validationComparers.custom:"list"==s.dataType?n.validationComparers.list:n.validationComparers[s.comparerType],!d)throw kendo.format("'{0}' comparer is not implemented.",s.comparerType);return c=function(e){var t,n=this.to&&(this.to_value||0===this.to_value)?this.to_value:void 0;return null===e||""===e?this.value=!!this.allowNulls:"custom"==this.dataType?this.value=d(e,this.from_value,n):"list"==this.dataType?(t=this._getListData(),this.value=d(e,t,n)):this.value=d(e,this.from_value,n),this.value},new kendo.spreadsheet.validation.Validation(l.extend(s,{handler:c,sheet:e,row:t,col:o}))}var t,n,i,o,r,a,s,l=kendo.jQuery;kendo.support.browser.msie&&kendo.support.browser.version<9||(t=kendo.spreadsheet,n={},t.validation=n,i=t.calc,o=kendo.Class,r="_matrix({0})",a='DATEVALUE("{0}")',i.runtime.defineFunction("_matrix",function(e){return"string"==typeof e&&(e=this.asMatrix([e.split(/\s*,\s*/)])),e}).args([["m",["or","matrix","string"]]]),s=o.extend({init:function(e){this.handler=e.handler,this.from=e.from,this.to=e.to,this.dataType=e.dataType,this.comparerType=e.comparerType,this.type=e.type?e.type:"warning",this.allowNulls=!!e.allowNulls,this.fromIsDateValue=!!e.fromIsDateValue,this.toIsDateValue=!!e.toIsDateValue,this.showButton=e.showButton,this.fromIsListValue=!!e.fromIsListValue,this.sheet=e.sheet,this.row=e.row,this.col=e.col,e.tooltipMessageTemplate&&(this.tooltipMessageTemplate=e.tooltipMessageTemplate),e.tooltipTitleTemplate&&(this.tooltipTitleTemplate=e.tooltipTitleTemplate),e.messageTemplate&&(this.messageTemplate=e.messageTemplate),e.titleTemplate&&(this.titleTemplate=e.titleTemplate)},_formatMessages:function(e){var t=this.from?this.from_value:"",n=this.to?this.to_value:"",i=this.from?""+this.from:"",o=this.to?""+this.to:"",r=this.dataType,a=this.type,s=this.comparerType;return kendo.format(e,t,n,i,o,r,a,s)},_setMessages:function(){this.title="",this.message="",this.tooltipTitleTemplate&&(this.tooltipTitle=this._formatMessages(this.tooltipTitleTemplate)),this.tooltipMessageTemplate&&(this.tooltipMessage=this._formatMessages(this.tooltipMessageTemplate)),this.titleTemplate&&(this.title=this._formatMessages(this.titleTemplate)),this.messageTemplate&&(this.message=this._formatMessages(this.messageTemplate))},_getListData:function(){var e,t,n,i,o;if(!this.from_value||!this.from_value.data)return[];for(e=this.from_value.data,i=[],t=0;t<e.length;t++)if(o=e[t])for(n=0;n<o.length;n++)i.push(o[n]);return i},clone:function(e,t,n){var i=this._getOptions();return i.from&&(i.from=i.from.clone(e,t,n)),i.to&&(i.to=i.to.clone(e,t,n)),new s(l.extend(i,{handler:this.handler},{sheet:e,row:t,col:n}))},deepClone:function(){var e=new s(this);return e.from=e.from.deepClone(),e.to&&(e.to=e.to.deepClone()),e},exec:function(e,t,n,i){function o(t){return t instanceof kendo.spreadsheet.Ref&&(t=e.getData(t),Array.isArray(t)&&(t=t[0])),t}var r=this,a=function(e){r.from_value=o(e),r.value=r.handler.call(r,t,n),r._setMessages(),i&&i(r.value)};r.to?r.to.exec(e,function(t){r.to_value=o(t),r.from.exec(e,a)}):r.from.exec(e,a)},reset:function(){this.from&&this.from.reset(),this.to&&this.to.reset(),delete this.value},adjust:function(e,t,n,i){var o,r,a,l,c=this.row,d=this.col;if(this.from&&(o=this.from.adjust(e,t,n,i)),this.to&&(r=this.to.adjust(e,t,n,i)),this.sheet.toLowerCase()==e.toLowerCase())switch(t){case"row":c>=n&&(a=!0,this.row+=i);break;case"col":d>=n&&(a=!0,this.col+=i)}if(a||o||r)return l=new s(this),l.from=o,l.to=r,l.row=c,l.col=d,l},toJSON:function(){var e=this._getOptions();return e.from&&(e.from=""+e.from,"list"===e.dataType&&(e.from=e.from.replace(/^_matrix\((.*)\)$/i,"$1"),delete e.fromIsListValue),"date"===e.dataType&&this.fromIsDateValue&&(e.from=e.from.replace(/^DATEVALUE\("(.*)"\)$/i,"$1"),delete e.fromIsDateValue)),e.to&&(e.to=""+e.to,"date"===e.dataType&&this.toIsDateValue&&(e.to=e.to.replace(/^DATEVALUE\("(.*)"\)$/i,"$1"),delete e.toIsDateValue)),e},_getOptions:function(){return{from:this.from,to:this.to,dataType:this.dataType,type:this.type,comparerType:this.comparerType,row:this.row,col:this.col,sheet:this.sheet,allowNulls:this.allowNulls,fromIsListValue:this.fromIsListValue,fromIsDateValue:this.fromIsDateValue,toIsDateValue:this.toIsDateValue,tooltipMessageTemplate:this.tooltipMessageTemplate,tooltipTitleTemplate:this.tooltipTitleTemplate,messageTemplate:this.messageTemplate,titleTemplate:this.titleTemplate,showButton:this.showButton}}}),n.compile=e,n.validationComparers={greaterThan:function(e,t){return e>t},lessThan:function(e,t){return e<t},between:function(e,t,n){return e>=t&&e<=n},equalTo:function(e,t){return e==t},notEqualTo:function(e,t){return e!=t},greaterThanOrEqualTo:function(e,t){return e>=t},lessThanOrEqualTo:function(e,t){return e<=t},notBetween:function(e,t,n){return e<t||e>n},custom:function(e,t){return t},list:function(e,t){return t.indexOf(e)>-1}},n.Validation=s)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/sheet.min",["kendo.core.min","kendo.color.min","spreadsheet/runtime.min","spreadsheet/validation.min","spreadsheet/references.min"],e)}(function(){!function(e){var t,n,i,o,r,a,s,l;e.support.browser.msie&&e.support.browser.version<9||(t=e.spreadsheet.RangeRef,n=e.spreadsheet.UnionRef,i=e.spreadsheet.CellRef,o=e.spreadsheet.Range,a=e.Class.extend({init:function(t){this._sheet=t,this.selection=e.spreadsheet.FIRSTREF.toRangeRef(),this.originalSelection=e.spreadsheet.FIRSTREF.toRangeRef(),this._activeCell=e.spreadsheet.FIRSTREF.toRangeRef(),this.originalActiveCell=e.spreadsheet.FIRSTREF},currentSelectionRange:function(){return this.selection.rangeAt(this.selectionRangeIndex).toRangeRef()},currentOriginalNavigationRange:function(){return this.originalSelection.rangeAt(this.selectionRangeIndex).toRangeRef()},currentNavigationRange:function(){return this.singleCellSelection()?this._sheet._sheetRef:this.selection.rangeAt(this.selectionRangeIndex).toRangeRef()},nextNavigationRange:function(){return this.singleCellSelection()||(this.selectionRangeIndex=this.selection.nextRangeIndex(this.selectionRangeIndex)),this.currentNavigationRange()},previousNavigationRange:function(){return this.singleCellSelection()||(this.selectionRangeIndex=this.selection.previousRangeIndex(this.selectionRangeIndex)),this.currentNavigationRange(); +},activeCell:function(e){return e&&(this.originalActiveCell=e.first(),this._activeCell=this._sheet.unionWithMerged(e.toRangeRef()),this._sheet.focus(e),this._sheet.triggerChange({activeCell:!0,selection:!0})),this._activeCell},select:function(e,n,r,a){var s,l,c;if(e){if(e.eq(this.originalSelection))return;this._sheet.triggerSelect(new o(e,this._sheet)),this.originalSelection=e,this.selection=n,r!==!1?(e.isCell()?(this._sheet.forEachMergedCell(e,function(t){e=t.topLeft}),this.activeCell(e)):(e=this.selection.lastRange(),a&&a._sheet===this._sheet&&a.panes[0]&&(s=a.panes[0]._currentView.rows.values,l=a.panes[0]._currentView.columns.values,c=new t(new i(s.start,l.start),new i(s.end,l.end)),e=e.intersect(c)),this.activeCell(e.first())),this.selectionRangeIndex=this.selection.size()-1):this._sheet.triggerChange({selection:!0})}return this.selection},singleCellSelection:function(){return this._activeCell.eq(this.selection)}}),s=e.Observable.extend({init:function(){e.Observable.prototype.init.call(this),this._reinit.apply(this,arguments)},events:["changing","commandRequest","afterInsertRow","afterDeleteRow","insertRow","insertColumn","deleteRow","deleteColumn","hideRow","hideColumn","unhideRow","unhideColumn","select","dataBinding","dataBound"],_reinit:function(t,n,i,o,r,s,l){l=l||{},this._defaultCellStyle={background:l.background,color:l.color,fontFamily:l.fontFamily,fontSize:l.fontSize,italic:l.italic,bold:l.bold,underline:l.underline,wrap:l.wrap,verticalAlign:l.verticalAlign,textAlign:l.textAlign},this._rows=new e.spreadsheet.Axis(t,i),this._columns=new e.spreadsheet.Axis(n,o),this._filteredRows=new e.spreadsheet.RangeList(0,t-1,(!1)),this._mergedCells=[],this._frozenRows=0,this._frozenColumns=0,this._suspendChanges=!1,this._filter=null,this._showGridLines=!0,this._gridLinesColor=null,this._grid=new e.spreadsheet.Grid(this._rows,this._columns,t,n,r,s),this._sheetRef=this._grid.normalize(e.spreadsheet.SHEETREF),this._properties=new e.spreadsheet.PropertyBag(t,n,this._defaultCellStyle),this._sorter=new e.spreadsheet.Sorter(this._grid,this._properties.sortable()),this._viewSelection=new a(this),this._editSelection=new a(this),this._formulaSelections=[],this._drawings=[]},_selectionState:function(){return this._inEdit?this._editSelection:this._viewSelection},navigator:function(){return this._navigator||(this._navigator=new e.spreadsheet.SheetNavigator(this)),this._navigator},axisManager:function(){return this._axisManager||(this._axisManager=new e.spreadsheet.AxisManager(this)),this._axisManager},_name:function(e){return e?(this._sheetName=e,this):this._sheetName},name:function(){return this._name()},_property:function(e,t,n){return void 0===t?e():(e(t),this.triggerChange(n))},_field:function(e,t,n){return void 0===t?this[e]:(this[e]=t,this.triggerChange(n))},suspendChanges:function(e){return void 0===e?this._suspendChanges:(this._suspendChanges=e,this)},triggerChange:function(e){return this._suspendChanges||this.trigger("change",e),this},triggerSelect:function(e){this.trigger("select",{range:e})},setDataSource:function(t,n){this.dataSourceBinder&&this.dataSourceBinder.destroy(),this.dataSourceBinder=new e.spreadsheet.SheetDataSourceBinder({dataSource:t,sheet:this,columns:n}),this.dataSource=this.dataSourceBinder.dataSource},hideColumn:function(e){if(!this.trigger("hideColumn",{index:e}))return this._property(this._columns.hide.bind(this._columns),e,{layout:!0})},unhideColumn:function(e){if(!this.trigger("unhideColumn",{index:e}))return this._property(this._columns.unhide.bind(this._columns),e,{layout:!0})},isHiddenColumn:function(e){return this._grid._columns.hidden(e)},_copyRange:function(e,t){var n=this._grid,i=n.rowCount,o=n.normalize(e.topLeft),r=n.normalize(e.bottomRight),a=o.col*i+o.row,s=r.col*i+r.row,l=t.col*i+t.row;this._properties.copy(a,s,l)},_saveModifiedFormulas:function(e,t){var n,i=r;return r=e,n=t(),r=i,n},_restoreModifiedFormulas:function(t){var n=this._workbook;t.forEach(function(t){var i,o=n.sheetByName(t.sheet);t instanceof e.spreadsheet.calc.runtime.Formula&&(i=o._grid.cellRefIndex(t),o._properties.set("formula",i,i,t)),t instanceof e.spreadsheet.validation.Validation&&(i=o._grid.cellRefIndex(t),o._properties.set("validation",i,i,t))})},_adjustReferences:function(n,i,o,a){var s,l,c;this._mergedCells=a.reduce(function(e,r){return r=r.adjust(null,null,null,null,"row"==n,i,o),r instanceof t&&e.push(r),e},[]),this._workbook&&(s=this._name(),this._workbook._sheets.forEach(function(e){e._forFormulas(function(e){var t=e.adjust(s,n,i,o);t&&r&&r.push(t)}),e._forValidations(function(e){var t=e.adjust(s,n,i,o);t&&r&&r.push(t)})}),this._workbook.adjustNames(s,"row"==n,i,o)),l=this.select(),l=l.adjust(null,null,null,null,"row"==n,i,o),l!==e.spreadsheet.NULLREF&&this.select(l),c="col"==n?this._columns:this._rows,c.adjust(i,o),"row"==n&&(o<0?this._filteredRows.copy(i-o,this._rows._count-1,i):(this._filteredRows.copy(i,this._rows._count,i+o),this._filteredRows.value(i,i+o-1,!1))),this._drawings.forEach(function(e){e.topLeftCell&&(e.topLeftCell=e.topLeftCell.adjust(null,null,null,null,"row"==n,i,o))})},_forFormulas:function(e){var t=this._properties,n=t.get("formula").values(),i=n.length;n.forEach(function(t,n){e.call(this,t.value,n,i)},this)},_forValidations:function(e){var t=this._properties;t.get("validation").values().forEach(function(t){e.call(this,t.value)},this)},preventInsertRow:function(e,t){var n,i;return this.selectedHeaders().allRows?{reason:"error",type:"insertRowWhenColumnIsSelected"}:(t=t||1,n=this._grid,i=this.range(n.rowCount-t,0,t,n.columnCount),!!i.hasValue()&&{reason:"error",type:"shiftingNonblankCells"})},preventInsertColumn:function(e,t){var n,i;return this.selectedHeaders().allCols?{reason:"error",type:"insertColumnWhenRowIsSelected"}:(t=t||1,n=this._grid,i=this.range(0,n.columnCount-t,n.rowCount,t),!!i.hasValue()&&{reason:"error",type:"shiftingNonblankCells"})},insertRow:function(e){var n=this.preventInsertRow(e);if(n)throw Error("Shifting nonblank cells off the worksheet is not supported!");if(!this.trigger("insertRow",{index:e}))return this.batch(function(){var n,r,a,s,l,c,d=this._grid,u=d.columnCount,h=d.rowCount,p=this.frozenRows();for(e<p&&this.frozenRows(p+1),n=this._mergedCells.slice(),r=0;r<u;r++)a=new t(new i(e,r),new i(e,r)),s=d.normalize(a.topLeft),l=d.normalize(a.bottomRight),c=new t(new i(s.row,s.col),new i(h-2,l.col)),this._copyRange(c,new i(s.row+1,s.col)),new o(a,this).clear({clearAll:!0,keepBorders:!0});this._adjustReferences("row",e,1,n)},{recalc:!0,layout:!0,insertRow:{index:e},ref:new t(new i(e,0),new i(1/0,1/0))}),this.trigger("afterInsertRow",{index:e}),this},isEnabledRow:function(e){var n=new t(new i(e,0),new i(e,this._grid.columnCount));return new o(n,this).enable()},deleteRow:function(e){if(!this.isEnabledRow(e))return this;if(!this.trigger("deleteRow",{index:e}))return this.batch(function(){var n,r,a,s,l,c,d,u=this._grid,h=u.columnCount,p=this.frozenRows();for(e<p&&this.frozenRows(p-1),n=this._mergedCells.slice(),r=0;r<h;r++)a=new t(new i(e,r),new i(e,r)),new o(a,this).clear({clearAll:!0,keepBorders:!0}),s=u.normalize(a.topLeft),l=u.normalize(a.bottomRight),c=new t(new i(s.row+1,s.col),new i(1/0,l.col)),this._copyRange(c,s),d=u.normalize(c.bottomRight),new o(new t(d,d),this).clear();this._adjustReferences("row",e,-1,n)},{recalc:!0,layout:!0,deleteRow:{index:e},ref:new t(new i(e,0),new i(1/0,1/0))}),this.trigger("afterDeleteRow",{index:e}),this},insertColumn:function(e){if(!this.trigger("insertColumn",{index:e}))return this.batch(function(){var n,r,a,s,l,c,d=this._grid,u=d.columnCount,h=this.frozenColumns();for(e<h&&this.frozenColumns(h+1),n=this._mergedCells.slice(),r=u;r>=e&&(a=new t(new i(0,r),new i(1/0,r)),new o(a,this).clear({clearAll:!0,keepBorders:!0}),r!=e);r--)s=d.normalize(a.topLeft),l=d.normalize(a.bottomRight),c=new t(new i(s.row,s.col-1),new i(l.row,l.col-1)),this._copyRange(c,s);this._adjustReferences("col",e,1,n)},{recalc:!0,layout:!0,insertColumn:{index:e},ref:new t(new i(0,e),new i(1/0,1/0))}),this},isEnabledColumn:function(e){var n=new t(new i(0,e),new i(1/0,e));return new o(n,this).enable()},deleteColumn:function(e){if(!this.isEnabledColumn(e))return this;if(!this.trigger("deleteColumn",{index:e}))return this.batch(function(){var n,r,a,s,l,c,d=this._grid,u=d.columnCount,h=this.frozenColumns();for(e<h&&this.frozenColumns(h-1),n=this._mergedCells.slice(),r=e;r<u&&(a=new t(new i(0,r),new i(1/0,r)),new o(a,this).clear({clearAll:!0,keepBorders:!0}),r!=u-1);r++)s=d.normalize(a.topLeft),l=d.normalize(a.bottomRight),c=new t(new i(s.row,s.col+1),new i(l.row,l.col+1)),this._copyRange(c,s);this._adjustReferences("col",e,-1,n)},{recalc:!0,layout:!0,deleteColumn:{index:e},ref:new t(new i(0,e),new i(1/0,1/0))}),this},_filterRow:function(e){this._rows.hide(e),this._filteredRows.value(e,e,!0),this.triggerChange({layout:!0})},hideRow:function(e){if(!this.trigger("hideRow",{index:e}))return this._property(this._rows.hide.bind(this._rows),e,{layout:!0})},unhideRow:function(e){if(!this.trigger("unhideRow",{index:e}))return this._property(this._rows.unhide.bind(this._rows),e,{layout:!0})},isHiddenRow:function(e){return this._grid._rows.hidden(e)},isFilteredRow:function(e){return this._filteredRows.value(e)},columnWidth:function(e,t){return this._property(this._columns.value.bind(this._columns,e,e),t,{layout:!0})},rowHeight:function(e,t){return this._property(this._rows.value.bind(this._rows,e,e),t,{layout:!0})},frozenRows:function(e){return this._field("_frozenRows",e,{layout:!0})},frozenColumns:function(e){return this._field("_frozenColumns",e,{layout:!0})},showGridLines:function(e){return this._field("_showGridLines",e,{layout:!0})},gridLinesColor:function(e){return this._field("_gridLinesColor",e,{layout:!0})},_ref:function(n,o,r,a){var s=null;return n instanceof e.spreadsheet.Ref?n:n instanceof e.spreadsheet.Range?n._ref.toRangeRef():("string"==typeof n?s=e.spreadsheet.calc.parseReference(n):(r||(r=1),a||(a=1),s=new t(new i(n,o),new i(n+r-1,o+a-1))),s)},range:function(e,t,n,i){return new o(this._ref(e,t,n,i),this)},_getMergedCells:function(e){var t=this._grid,n={},i={},o=!1;return this.forEachMergedCell(e,function(r){var a=r.topLeft;t.forEach(r,function(t){a.eq(t)?(n[t.print()]=r,o=!0):e.contains(t)&&(i[t.print()]=a,o=!0)})}),{primary:n,secondary:i,hasMerged:o}},forEachMergedCell:function(e,t){var n=!1;void 0===t&&(t=e,n=!0),this._mergedCells.forEach(function(i){(n||i.intersects(e))&&t(i)})},forEachFilterHeader:function(e,t){var n,i=!1;void 0===t&&(t=e,i=!0),this._filter&&(n=[],this._filter.ref.forEachColumn(function(t){(i||t.intersects(e))&&n.push(t.topLeft)}),this._mergedCells.forEach(function(e){n=n.map(function(t){return e.intersects(t)?e:t})}),n.reduce(function(e,t){return e.indexOf(t)<0&&e.push(t),e},[]).forEach(t))},forEach:function(e,i){function o(e){function n(e){i(l++,s,e)}var o,a,s,l,c,d;for(e instanceof t||(e=e.toRangeRef()),o=r._grid.normalize(e.topLeft),a=r._grid.normalize(e.bottomRight),s=o.col;s<=a.col;s++)l=o.row,c=r._grid.index(l,s),d=r._grid.index(a.row,s),r._properties.forEach(c,d,n)}var r=this;e instanceof t||(e=r._ref(e)),e instanceof n?e.forEach(o):o(e)},startResizing:function(e){this._initialPosition=e,this._resizeInProgress=!0},startAutoFill:function(){this._autoFillInProgress=!0;var e=this.select();this._autoFillOrigin=e,this._autoFillDest=e,this.triggerChange({selection:!0})},updateAutoFill:function(e,t,n,i){this._autoFillDest=e,this._autoFillPunch=t,this._autoFillHint=n,this._autoFillDirection=i,this.triggerChange({selection:!0})},autoFillRef:function(){return this._autoFillDest},autoFillPunch:function(){return this._autoFillPunch},autoFillInProgress:function(){return this._autoFillInProgress},resizingInProgress:function(){return this._resizeInProgress},draggingInProgress:function(){return this._draggingInProgress},completeResizing:function(){var e,t;this._resizeInProgress&&(this._resizeInProgress=!1,e=this.resizeHintPosition(),this._initialPosition&&e?(t=this.resizeHandlePosition(),t.col!==-(1/0)?this.trigger("commandRequest",{command:"ColumnWidthCommand",options:{target:t.col,value:this.columnWidth(t.col)-(this._initialPosition.x-e.x)}}):this.trigger("commandRequest",{command:"RowHeightCommand",options:{target:t.row,value:this.rowHeight(t.row)-(this._initialPosition.y-e.y)}})):this.trigger("change",{resize:!0}))},_renderComment:function(e){var t=e?this.range(e).comment():null;t?this._commentRef&&e.eq(this._commentRef)||(this._commentRef=e,this.trigger("change",{comment:!0})):this._commentRef&&(this._commentRef=null,this.trigger("change",{comment:!0}))},resizeHandlePosition:function(){return this._resizeHandlePosition},resizeHintPosition:function(e){return void 0!==e&&(this._resizeHintPosition=e,this.trigger("change",{resize:!0})),this._resizeHintPosition},removeResizeHandle:function(){this._resizeHandlePosition&&(this._resizeHintPosition=void 0,this._resizeHandlePosition=void 0,this._initialPosition=void 0,this.trigger("change",{resize:!0}))},positionResizeHandle:function(e){this._resizeHandlePosition=e,this.trigger("change",{resize:!0})},startDragging:function(e){this._draggingInProgress=e},completeDragging:function(){var e,t,n,o,r,a,s=this._draggingInProgress;if(s){if(this._draggingInProgress=null,e=s.drawing,e.eq(s.copy))return;e.topLeftCell&&(t=this.drawingBoundingBox(e),n=this._rows.indexVisible(t.top),o=this._columns.indexVisible(t.left),r=new i(n,o),a=this.refBoundingBox(r),e.offsetX=t.left-a.left,e.offsetY=t.top-a.top,e.topLeftCell=r,this.triggerChange({dragging:!0})),this.trigger("commandRequest",{command:"DrawingUpdateCommand",options:{sheet:this,drawing:e,previous:s.copy}})}},startSelection:function(e){e&&e._sheet===this&&(this._currentView=e),this._selectionInProgress=!0},completeSelection:function(){var e,t;this._selectionInProgress&&(this._selectionInProgress=!1,this._resizeHintPosition=void 0,this.trigger("change",{selection:!0})),this._autoFillInProgress&&(this._autoFillInProgress=!1,e=this._autoFillDest,t=this._autoFillOrigin,this._autoFillPunch?this.trigger("commandRequest",{command:"ClearContentCommand",options:{operatingRange:this.range(this._autoFillPunch)}}):e.eq(t)?this.triggerChange({selection:!0}):this.trigger("commandRequest",{command:"AutoFillCommand",options:{operatingRange:this.range(e),origin:this.range(t)}}),this._autoFillDest=null,this._autoFillPunch=null,this._autoFillOrigin=null,this.select(e))},selectionInProgress:function(){return this._selectionInProgress},select:function(e,t){var n,i=this._selectionState();return e&&(e=this._ref(e),e=this._grid.normalize(e),n=this._grid.isAxis(e)?e:this.unionWithMerged(e)),i.select(e,n,t,this._currentView)},originalSelect:function(){return this._selectionState().originalSelection},currentSelectionRange:function(){return this._selectionState().currentSelectionRange()},currentOriginalSelectionRange:function(){return this._selectionState().currentOriginalNavigationRange()},currentNavigationRange:function(){return this._selectionState().currentNavigationRange()},nextNavigationRange:function(){return this._selectionState().nextNavigationRange()},previousNavigationRange:function(){return this._selectionState().previousNavigationRange()},selectionRangeIndex:function(){return this._selectionState().selectionRangeIndex},activeCell:function(e){return this._selectionState().activeCell(e)},originalActiveCell:function(){return this._selectionState().originalActiveCell},singleCellSelection:function(){return this._selectionState().singleCellSelection()},unionWithMerged:function(e){var t=this._mergedCells;return e.map(function(e){return e.toRangeRef().union(t)})},trim:function(e){var t=[],n=this._grid;return this._properties.forEachProperty(function(i){t.push(n.trim(e,i.list))}),this.unionWithMerged(e.topLeft.toRangeRef().union(t))},focus:function(e){if(!e){var t=this._focus;return this._focus=null,t}this._focus=e.toRangeRef()},activeCellSelection:function(){return new o(this._grid.normalize(this.activeCell()),this)},selection:function(){return new o(this._grid.normalize(this._selectionState().selection),this)},selectedHeaders:function(){var e=this.select(),t={},n={},i=!1,o=!1,r=this._grid.rowCount-1,a=this._grid.columnCount-1;return e.forEach(function(e){var s,l,c,d,u,h="partial",p="partial";if(e=e.toRangeRef(),l=e.bottomRight,c=e.topLeft,d=c.col<=0&&l.col>=a,u=c.row<=0&&l.row>=r,u&&(o=!0,p="full"),d&&(i=!0,h="full"),!u)for(s=c.row;s<=l.row;s++)"full"!==t[s]&&(t[s]=h);if(!d)for(s=c.col;s<=l.col;s++)"full"!==n[s]&&(n[s]=p)}),{rows:t,cols:n,allRows:o,allCols:i,all:o&&i}},isInEditMode:function(e){return void 0===e?this._inEdit:(this._inEdit=e,void(e&&(this._editSelection.selection=this._viewSelection.selection.clone(),this._editSelection.originalSelection=this._viewSelection.originalSelection.clone(),this._editSelection._activeCell=this._viewSelection._activeCell.clone(),this._editSelection.originalActiveCell=this._viewSelection.originalActiveCell.clone())))},_setFormulaSelections:function(e){this._formulaSelections=(e||[]).slice(),this.triggerChange({selection:!0})},_viewActiveCell:function(){return this._viewSelection._activeCell.toRangeRef()},toJSON:function(){function t(e){Object.keys(l).forEach(function(t){e[t]===l[t]&&delete e[t]})}var n,i={},o=this._rows.toJSON("height",i),r=this._columns.toJSON("width",{}),a=this._viewSelection,s=[],l=this._defaultCellStyle||{};return this.forEach(e.spreadsheet.SHEETREF,function(n,r,a){if(t(a),0!==Object.keys(a).length){a.link&&s.push({ref:e.spreadsheet.Ref.display(null,n,r),target:a.link});var l=i[n];void 0===l&&(l=o.length,o.push({index:n}),i[n]=l),n=o[l],a.index=r,void 0===n.cells&&(n.cells=[]),a.formula&&(a.formula=a.formula.arrayFormulaRange?{src:""+a.formula,ref:""+a.formula.arrayFormulaRange}:""+a.formula),a.validation&&(a.validation=a.validation.toJSON()),a.color&&(a.color=e.parseColor(a.color).toCss()),a.background&&(a.background=e.parseColor(a.background).toCss()),a.borderTop&&a.borderTop.color&&(a.borderTop.color=e.parseColor(a.borderTop.color).toCss()),a.borderBottom&&a.borderBottom.color&&(a.borderBottom.color=e.parseColor(a.borderBottom.color).toCss()),a.borderRight&&a.borderRight.color&&(a.borderRight.color=e.parseColor(a.borderRight.color).toCss()),a.borderLeft&&a.borderLeft.color&&(a.borderLeft.color=e.parseColor(a.borderLeft.color).toCss()),n.cells.push(a)}}),n={name:this._name(),rows:o,columns:r,selection:""+a.selection,activeCell:""+a.activeCell(),frozenRows:this.frozenRows(),frozenColumns:this.frozenColumns(),showGridLines:this.showGridLines(),gridLinesColor:this.gridLinesColor(),mergedCells:this._mergedCells.map(function(e){return""+e}),hyperlinks:s,defaultCellStyle:l,drawings:this._drawings.map(function(e){return e.toJSON()})},this._sort&&(n.sort={ref:""+this._sort.ref,columns:this._sort.columns.map(function(e){return{index:e.index,ascending:e.ascending}})}),this._filter&&(n.filter={ref:""+this._filter.ref,columns:this._filter.columns.map(function(e){var t=e.filter.toJSON();return t.index=e.index,t})}),n},fromJSON:function(t){this.batch(function(){var n,i,o,r,a,s,c,d,u,h,p,f;if(void 0!==t.name&&this._name(t.name),void 0!==t.frozenColumns&&this.frozenColumns(t.frozenColumns),void 0!==t.frozenRows&&this.frozenRows(t.frozenRows),void 0!==t.columns&&this._columns.fromJSON("width",t.columns),void 0!==t.rows)for(this._rows.fromJSON("height",t.rows),n=0;n<t.rows.length;n++)if(i=t.rows[n],o=i.index,void 0===o&&(o=n),i.cells)for(r=0;r<i.cells.length;r++)a=i.cells[r],s=a.index,void 0===s&&(s=r),a.formula&&(c="string"!=typeof a.formula,d=c?a.formula.src:a.formula,u=this._compileFormula(o,s,d),c&&u.setArrayFormulaRange(e.spreadsheet.calc.parseReference(a.formula.ref)),a.formula=u),a.validation&&(a.validation=this._compileValidation(o,s,a.validation)),this._properties.fromJSON(this._grid.index(o,s),a);t.drawings&&(this._drawings=t.drawings.map(l.fromJSON)),t.selection&&(this._viewSelection.selection=this._viewSelection.originalSelection=this._ref(t.selection)),t.activeCell&&(h=this._ref(t.activeCell),this._viewSelection._activeCell=h.toRangeRef(),this._viewSelection.originalActiveCell=h.first()),t.mergedCells&&t.mergedCells.forEach(function(e){this.range(e).merge()},this),t.sort&&(this._sort={ref:this._ref(t.sort.ref),columns:t.sort.columns.slice(0)}),t.filter&&(p=t.filter.ref,f=void 0===t.filter.columns?[]:t.filter.columns,p?(this._filter={ref:this._ref(p),columns:f.map(function(t){return{index:t.index,filter:e.spreadsheet.Filter.create(t)}})},this._refreshFilter()):e.logToConsole("Dropping filter for sheet '"+t.name+"' due to missing ref")),void 0!==t.showGridLines&&(this._showGridLines=t.showGridLines),this._gridLinesColor=t.gridLinesColor}),this._rows._refresh(),this._columns._refresh()},formula:function(e){return this._properties.get("formula",this._grid.cellRefIndex(e))},validation:function(e){return this._properties.get("validation",this._grid.cellRefIndex(e))},resetFormulas:function(){this._forFormulas(function(e){e.reset()})},resetValidations:function(){this._forValidations(function(e){e.reset()})},recalc:function(e,t){function n(){r--,a!=o||r||t()}var i=this._properties.get("formula").values(),o=i.length,r=0,a=0;if(!o&&t)return t();for(;a<o;)r++,i[a++].value.exec(e,t?n:null)},revalidate:function(e){var n=this;this._forValidations(function(o){var r=new i(o.row,o.col),a=new t(r,r);o.exec(e,n._get(a,"value"),n._get(a,"format"))})},_value:function(e,t,n){var i=this._grid.index(e,t);return void 0===n?this._properties.get("value",i):void this._properties.set("value",i,i,n)},_validation:function(e,t){var n=this._grid.index(e,t);return this._properties.get("validation",n)},_compileValidation:function(t,n,i){return i instanceof e.spreadsheet.validation.Validation?i.clone(this._name(),t,n):(null!=i.from&&(i.from=(i.from+"").replace(/^=/,"")),null!=i.to&&(i.to=(i.to+"").replace(/^=/,"")),e.spreadsheet.validation.compile(this._name(),t,n,i))},_compileFormula:function(t,n,i){return i=i.replace(/^=/,""),i=e.spreadsheet.calc.parseFormula(this._name(),t,n,i),e.spreadsheet.calc.compile(i)},_copyValuesInRange:function(e,t,n,i){var o,r,a,s,l;for(o=e.col;o<=t.col;o++)for(r=this._grid.index(e.row,o),a=this._grid.index(t.row,o),s=r,l=e.row;s<=a;++s,++l)n=n.clone(this._name(),l,o),this._properties.set(i,s,s,n);return n},_set:function(t,n,i){var o,r,a,s=this._grid.normalize(t.topLeft),l=this._grid.normalize(t.bottomRight);if("number"==typeof i&&(i=e.spreadsheet.calc.runtime.limitPrecision(i)),i&&"formula"==n)"string"==typeof i&&(i=this._compileFormula(s.row,s.col,i)),i=this._copyValuesInRange(s,l,i,"formula");else if(i&&"validation"==n)i=this._compileValidation(s.row,s.col,i),i=this._copyValuesInRange(s,l,i,"validation");else for(o=s.col;o<=l.col;o++)r=this._grid.index(s.row,o),a=this._grid.index(l.row,o),this._properties.set(n,r,a,i),"formula"==n&&this._properties.set("value",r,a,null)},_get:function(e,t){var n=this._grid.normalize(e.topLeft),i=this._grid.index(n.row,n.col);return this._properties.get(t,i)},batch:function(e,t){var n=this.suspendChanges();return this.suspendChanges(!0),e.call(this),this.suspendChanges(n).triggerChange(t||{recalc:!0})},_sortBy:function(e,t){var n=null;t.forEach(function(t){n=this._sorter.sortBy(e,t.index,this._properties.get("value"),t.ascending,n)},this),this._sort={ref:e,columns:t},this._refreshFilter(),this.forEach(e,function(e,t,n){var i,o,r=n.formula;r&&(i=e-r.row,0!==i&&(o=i>0?r.row:r.row+i,r.adjust(this.name(),"row",o,i)))}.bind(this)),this.triggerChange({recalc:!0})},_refreshFilter:function(){this._filter&&this._filterBy(this._filter.ref,this._filter.columns)},_filterBy:function(t,n){this.batch(function(){for(var i=t.topLeft.row;i<=t.bottomRight.row;i++)this.isFilteredRow(i)&&(this._filteredRows.value(i,i,!1),this._rows.unhide(i));n.forEach(function(n){var i,o,r,a=t.resize({top:1}).toColumn(n.index),s=[];if(a!==e.spreadsheet.NULLREF)for(this.forEach(a,function(e,t,n){n.row=e,s.push(n)}),n.filter.prepare(s),i=0;i<s.length;i++)o=s[i],r=n.filter.value(o),n.filter.matches(r)===!1&&this._filterRow(o.row)},this),this._filter={ref:t,columns:n}},{recalc:!0,layout:!0,filter:!0})},filterColumn:function(e){var t=this.filter().ref;return e.toRangeRef().topLeft.col-t.topLeft.col},filter:function(){return this._filter},clearFilter:function(e){this._clearFilter(e instanceof Array?e:[e])},_clearFilter:function(e){this._filter&&this.batch(function(){this._filter.columns=this._filter.columns.filter(function(t){return e.indexOf(t.index)<0}),this._refreshFilter()},{recalc:!0,layout:!0,filter:!0})},getAxisState:function(){return{rows:this._rows.getState(),columns:this._columns.getState()}},setAxisState:function(e){this._rows.setState(e.rows),this._columns.setState(e.columns),this.triggerChange({layout:!0})},getState:function(){return{rows:this._rows.getState(),columns:this._columns.getState(),mergedCells:this._mergedCells.map(function(e){return e.clone()}),properties:this._properties.getState()}},setState:function(t){this._rows.setState(t.rows),this._columns.setState(t.columns),this._mergedCells=t.mergedCells,this._properties.setState(t.properties),this.triggerChange(e.spreadsheet.ALL_REASONS)},_merge:function(t){var n,i=this._mergedCells,r=this;return this.batch(function(){n=t.map(function(t){var n,a,s,l,c,d,u;return t instanceof e.spreadsheet.CellRef?t:(n=t.toRangeRef().union(i,function(e){i.splice(i.indexOf(e),1)}),a=new o(n,r),s=a._get("formula"),l=a.value(),c=a.format(),d=a.background(),a.value(null),a.format(null),a.background(null),u=new o(n.collapse(),r),s?u._set("formula",s):u.value(l),u.format(c),u.background(d),i.push(n),n)});var a=r._viewSelection;a.selection=r.unionWithMerged(a.originalSelection),a._activeCell=r.unionWithMerged(a.originalActiveCell)},{activeCell:!0,selection:!0}),n},_useCultureDecimals:function(){return this._workbook&&this._workbook.options.useCultureDecimals},withCultureDecimals:function(t){var n=".";return this._useCultureDecimals()&&(n=e.culture().numberFormat["."]),e.spreadsheet.calc.withDecimalSeparator(n,t)},drawingBoundingBox:function(t){var n=t.offsetX,i=t.offsetY;return t.topLeftCell&&(n+=this._columns.sum(0,t.topLeftCell.col-1),i+=this._rows.sum(0,t.topLeftCell.row-1)),new e.spreadsheet.Rectangle(n,i,t.width,t.height)},refBoundingBox:function(e){return this._grid.rectangle(e.toRangeRef())},addDrawing:function(e,t){return e instanceof l||(e=new l(e)),this._drawings.push(e),t&&(this._activeDrawing=e),this.triggerChange({layout:!0}),e},removeDrawing:function(e){var t=this._drawings.indexOf(e);t>=0&&(this._drawings.splice(t,1),this.triggerChange({layout:!0}))},usesImage:function(e){for(var t=this._drawings.length;--t>=0;)if(this._drawings[t].image===e)return!0;return!1}}),l=e.Class.extend({init:function(e){this.reset(e)},toJSON:function(){return{topLeftCell:""+this.topLeftCell,offsetX:this.offsetX,offsetY:this.offsetY,width:this.width,height:this.height,image:this.image,opacity:this.opacity}},clone:function(){return new l(this)},reset:function(t){var n=t.topLeftCell;"string"==typeof n&&(n=e.spreadsheet.calc.parseReference(n)),this.topLeftCell=n,this.offsetX=t.offsetX||0,this.offsetY=t.offsetY||0,this.width=t.width,this.height=t.height,this.image=t.image,this.opacity=null!=t.opacity?t.opacity:1},eq:function(e){return(!this.topLeftCell&&!e.topLeftCell||this.topLeftCell&&e.topLeftCell&&this.topLeftCell.eq(e.topLeftCell))&&this.offsetX===e.offsetX&&this.offsetY===e.offsetY&&this.width===e.width&&this.height===e.height&&this.image===e.image&&this.opacity===e.opacity}}),l.fromJSON=function(e){return new l(e)},e.spreadsheet.Sheet=s,e.spreadsheet.Drawing=l)}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/sheetsbar.min",["kendo.core.min","kendo.sortable.min"],e)}(function(){!function(e){var t,n,i,o,r,a;e.support.browser.msie&&e.support.browser.version<9||(t=e.jQuery,n=e._outerWidth,i=".",o=" ",r={sheetsBarWrapper:"k-widget k-header",sheetsBarSheetsWrapper:"k-tabstrip k-floatwrap k-tabstrip-bottom",sheetsBarActive:"k-spreadsheet-sheets-bar-active",sheetsBarInactive:"k-spreadsheet-sheets-bar-inactive",sheetsBarAdd:"k-spreadsheet-sheets-bar-add",sheetsBarRemove:"k-spreadsheet-sheets-remove",sheetsBarItems:"k-spreadsheet-sheets-items",sheetsBarEditor:"k-spreadsheet-sheets-editor",sheetsBarScrollable:"k-tabstrip-scrollable",sheetsBarNext:"k-tabstrip-next",sheetsBarPrev:"k-tabstrip-prev",sheetsBarKItem:"k-item k-state-default",sheetsBarKActive:"k-state-active k-state-tab-on-top",sheetsBarKTextbox:"k-textbox",sheetsBarKLink:"k-link",sheetsBarKIcon:"k-icon",sheetsBarKFontIcon:"k-icon",sheetsBarKButton:"k-button k-button-icon",sheetsBarKButtonBare:"k-bare",sheetsBarKArrowW:"k-i-arrow-60-left",sheetsBarKArrowE:"k-i-arrow-60-right",sheetsBarKReset:"k-reset k-tabstrip-items",sheetsBarKIconX:"k-i-close",sheetsBarKSprite:"k-sprite",sheetsBarKIconPlus:"k-i-plus",sheetsBarHintWrapper:"k-widget k-tabstrip k-tabstrip-bottom k-spreadsheet-sheets-items-hint",sheetsBarKResetItems:"k-reset k-tabstrip-items"},a=e.ui.Widget.extend({init:function(t,n){var o=a.classNames;e.ui.Widget.call(this,t,n),t=this.element,t.addClass(o.sheetsBarWrapper),this._openDialog=n.openDialog,this._tree=new e.dom.Tree(t[0]),this._tree.render([this._addButton(),this._createSheetsWrapper([])]),this._toggleScrollEvents(!0),this._createSortable(),this._sortable.bind("start",this._onSheetReorderStart.bind(this)),this._sortable.bind("end",this._onSheetReorderEnd.bind(this)),t.on("click",i+o.sheetsBarRemove,this._onSheetRemove.bind(this)),t.on("click","li",this._onSheetSelect.bind(this)),t.on("dblclick","li"+i+o.sheetsBarActive,this._createEditor.bind(this)),t.on("click",i+o.sheetsBarAdd,this._onAddSelect.bind(this))},options:{name:"SheetsBar",scrollable:{distance:200}},events:["select","reorder","rename"],_createEditor:function(){this._editor||(this._renderSheets(this._sheets,this._selectedIndex,!0),this._editor=this.element.find(e.format("input{0}{1}",i,a.classNames.sheetsBarEditor)).focus().on("keydown",this._onEditorKeydown.bind(this)).on("blur",this._onEditorBlur.bind(this)))},_destroyEditor:function(e){var t=e?null:this._editor.val();this._editor.off(),this._editor=null,this._renderSheets(this._sheets,this._selectedIndex,!1),this._onSheetRename(t)},renderSheets:function(e,t){!e||t<0||this._renderSheets(e,t,!1)},_renderSheets:function(t,r,s){var l,c,d,u,h,p,f,g,m,v,_,b=this,w=a.classNames;b._isRtl=e.support.isRtl(b.element),b._sheets=t,b._selectedIndex=r,b._renderHtml(s,!0),b._scrollableAllowed()&&(d=b._sheetsWrapper(),u=d.children(i+w.sheetsBarPrev),h=d.children(i+w.sheetsBarNext),p=2,f=b.element.find(i+w.sheetsBarAdd),g=n(f)+f.position().left+p,m=n(u)+p,v=b._sheetsGroup(),u.css({left:g}),d.addClass(w.sheetsBarScrollable+o+w.sheetsBarSheetsWrapper),v.css({marginLeft:g}),l=d[0].offsetWidth,c=v[0].scrollWidth,c+g>l?(_=Math.ceil(e.parseFloat(h.css("right"))),b._scrollableModeActive||(b._nowScrollingSheets=!1,b._scrollableModeActive=!0),v.css({marginLeft:m+g,marginRight:n(h)+_+p})):b._scrollableModeActive&&c<=l?(b._scrollableModeActive=!1,v.css({marginLeft:g,marginRight:""})):v.css({marginLeft:g}),b._toggleScrollButtons())},_toggleScrollButtons:function(e){var t=this,n=t._sheetsGroup(),o=t._sheetsWrapper(),r=n.scrollLeft(),s=o.find(i+a.classNames.sheetsBarPrev),l=o.find(i+a.classNames.sheetsBarNext);e===!1?(s.toggle(!1),l.toggle(!1)):(s.toggle(t._isRtl?r<n[0].scrollWidth-n[0].offsetWidth-1:0!==r),l.toggle(t._isRtl?0!==r:r<n[0].scrollWidth-n[0].offsetWidth-1))},_toggleScrollEvents:function(e){var t=this,n=a.classNames,o=t.options,r=t._sheetsWrapper(),s=r.children(i+n.sheetsBarPrev),l=r.children(i+n.sheetsBarNext);e?(s.on("mousedown",function(){t._nowScrollingSheets=!0,t._scrollSheetsByDelta(o.scrollable.distance*(t._isRtl?1:-1))}),l.on("mousedown",function(){t._nowScrollingSheets=!0,t._scrollSheetsByDelta(o.scrollable.distance*(t._isRtl?-1:1))}),s.add(l).on("mouseup",function(){t._nowScrollingSheets=!1})):(s.off(),l.off())},_renderHtml:function(t,n){var i,r,s,l,c,d,u=[],h=e.dom,p=h.element,f=this._sheets,g=this._selectedIndex,m=a.classNames;for(i=0;i<f.length;i++)r=f[i], +s=i===g,l={className:m.sheetsBarKItem+o},c=[],l.className+=s?m.sheetsBarKActive+o+m.sheetsBarActive:m.sheetsBarInactive,s&&t?c.push(p("input",{type:"text",value:r.name(),className:m.sheetsBarKTextbox+o+m.sheetsBarEditor,maxlength:50},[])):(c.push(p("span",{className:m.sheetsBarKLink,title:r.name()},[h.text(r.name())])),f.length>1&&(d=p("span",{className:m.sheetsBarKIcon+o+m.sheetsBarKFontIcon+o+m.sheetsBarKIconX},[]),c.push(p("span",{className:m.sheetsBarKLink+o+m.sheetsBarRemove},[d])))),u.push(p("li",l,c));this._tree.render([this._addButton(),this._createSheetsWrapper(u,n)])},_createSheetsWrapper:function(t,n){var i,r=e.dom.element,s=a.classNames,l=[r("ul",{className:s.sheetsBarKReset},t)];return n=!0,n&&(i=s.sheetsBarKButton+o+s.sheetsBarKButtonBare+o,l.push(r("span",{className:i+s.sheetsBarPrev},[r("span",{className:s.sheetsBarKIcon+o+s.sheetsBarKArrowW},[])])),l.push(r("span",{className:i+s.sheetsBarNext},[r("span",{className:s.sheetsBarKIcon+o+s.sheetsBarKArrowE},[])]))),r("div",{className:s.sheetsBarItems},l)},_createSortable:function(){var n=a.classNames;this._sortable=new e.ui.Sortable(this.element,{filter:e.format("ul li.{0},ul li.{1}",n.sheetsBarActive,n.sheetsBarInactive),container:i+n.sheetsBarItems,axis:"x",animation:!1,ignore:"input",end:function(){this.draggable.hint&&this.draggable.hint.remove()},hint:function(e){var i=t(e).clone();return i.wrap("<div class='"+n.sheetsBarHintWrapper+"'><ul class='"+n.sheetsBarKResetItems+"'></ul></div>").closest("div")}})},_onEditorKeydown:function(e){this._editor&&(13===e.which&&this._destroyEditor(),27===e.which&&this._destroyEditor(!0))},_onEditorBlur:function(){this._editor&&this._destroyEditor()},_onSheetReorderEnd:function(e){e.preventDefault(),this.trigger("reorder",{oldIndex:e.oldIndex,newIndex:e.newIndex})},_onSheetReorderStart:function(e){this._editor&&e.preventDefault()},_onSheetRemove:function(e){var n,i=t(e.target).closest("li").text();this._editor&&this._destroyEditor(),n=function(e){var t=e.sender;t.isConfirmed()&&this.trigger("remove",{name:i,confirmation:!0})}.bind(this),this._openDialog("confirmation",{close:n})},_onSheetSelect:function(e){var n=t(e.target).text();return t(e.target).is(i+a.classNames.sheetsBarEditor)||!n?void e.preventDefault():(this._editor&&this._destroyEditor(),this._scrollSheetsToItem(t(e.target).closest("li")),void this.trigger("select",{name:n,isAddButton:!1}))},_onSheetRename:function(e){this._sheets[this._selectedIndex].name()!==e&&null!==e&&this.trigger("rename",{name:e,sheetIndex:this._selectedIndex})},_onAddSelect:function(){this.trigger("select",{isAddButton:!0})},_addButton:function(){var t=e.dom.element,n=a.classNames;return t("a",{className:n.sheetsBarAdd+o+n.sheetsBarKButton},[t("span",{className:n.sheetsBarKIcon+o+n.sheetsBarKFontIcon+o+n.sheetsBarKIconPlus},[])])},destroy:function(){this._sortable.destroy()},_scrollableAllowed:function(){var e=this.options;return e.scrollable&&!isNaN(e.scrollable.distance)},_scrollSheetsToItem:function(e){var t,i,o,r,a,s,l,c=this;c._scrollableModeActive&&(t=c._sheetsGroup(),i=t.scrollLeft(),o=n(e),r=c._isRtl?e.position().left:e.position().left-t.children().first().position().left,a=t[0].offsetWidth,s=Math.ceil(parseFloat(t.css("padding-left"))),c._isRtl?r<0?l=i+r-(a-i)-s:r+o>a&&(l=i+r-o+2*s):i+a<r+o?l=r+o-a+2*s:i>r&&(l=r-s),t.finish().animate({scrollLeft:l},"fast","linear",function(){c._toggleScrollButtons()}))},_sheetsGroup:function(){return this._sheetsWrapper().children("ul")},_sheetsWrapper:function(){return this.element.find(i+a.classNames.sheetsBarItems)},_scrollSheetsByDelta:function(e){var t=this,n=t._sheetsGroup(),i=n.scrollLeft();n.finish().animate({scrollLeft:i+e},"fast","linear",function(){t._nowScrollingSheets?t._scrollSheetsByDelta(e):t._toggleScrollButtons()})}}),e.spreadsheet.SheetsBar=a,t.extend(!0,a,{classNames:r}))}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/calc.min",["spreadsheet/runtime.min"],e)}(function(){"use strict";function e(e){E.DEC=e,E.ARG=","==e?";":",",E.COL=","==e?"\\":",",A=","==e?D:T}function t(e){e=e.toUpperCase();for(var t=0,n=0;n<e.length;++n)t=26*t+e.charCodeAt(n)-64;return t-1}function n(e){return parseInt(e,10)-1}function i(e,i){var o,r,a,s,l,c;if("#sheet"==e.toLowerCase())return b.SHEETREF;e:{if(!(o=/^(\$)?([a-z]+)(\$)?(\d+)$/i.exec(e))){for(s=d(e,{}),l=[];;){if(c=s.next(),c instanceof y)c.rel=0;else{if(!(c instanceof k))break e;c.topLeft.rel=0,c.bottomRight.rel=0}if(l.push(c),s.eof())break;if(!s.is("op",E.ARG))break e;s.next()}return 1==l.length?l[0]:new b.UnionRef(l)}if(r=n(o[4]),a=t(o[2]),r<1048576&&a<16384)return new y(n(o[4]),t(o[2]))}if(!i)throw Error("Cannot parse reference: "+e)}function o(e,t,n,i){function o(e){return e.index=v.length,v.push(e),e}function r(e,t,n){if(m(e,t))return i.next();var o=i.peek();o?i.croak("Expected "+e+" «"+t+"» but found "+o.type+" «"+o.value+"»"):n||i.croak("Expected "+e+" «"+t+"»")}function a(e){return g(p(u()),0,e)}function s(e){return"TRUE"==e.upper||"FALSE"==e.upper?"TRUE"==e.upper?M:F:o(new x(e.value))}function l(){var e,t=i.next();for(t=t.value,r("punc","("),e=[];;){if(m("punc",")"))break;if(m("op",E.ARG))e.push({type:"null"}),i.next();else{if(e.push(a(!1)),i.eof()||m("punc",")"))break;r("op",E.ARG)}}return r("punc",")",!0),{type:"func",func:t,args:e}}function c(t){return t.hasSheet()||t.setSheet(e),o(t)}function u(){var e;return m("ref")?e=c(i.next()):m("func")?e=l():m("punc","(")?(i.next(),e=a(!0),r("punc",")",!0)):m("punc","{")?(i.next(),e=h(),r("punc","}",!0)):m("num")||m("str")||m("error")?e=i.next():m("sym")?e=s(i.next()):m("op","+")||m("op","-")?e={type:"prefix",op:i.next().value,exp:u()}:i.croak(i.peek()?m("punc","[")?"External reference not supported":"Parse error":"Incomplete expression"),f(e)}function h(){for(var e=[],t=[e],n=!0;!i.eof()&&!m("punc","}");)n?n=!1:m(null,";")?(t.push(e=[]),i.next()):r(null,E.COL),e.push(a(!1));return{type:"matrix",value:t}}function p(e){return m("punc","(")||m("ref")||m("num")||m("func")?{type:"binary",op:" ",left:e,right:a(!1)}:e}function f(e){return m("op","%")?(i.next(),f({type:"postfix",op:"%",exp:e})):e}function g(e,t,n){var o,r,a=m("op");return a&&(n||a.value!=E.ARG)&&(o=A[a.value],o>t)?(i.next(),r=g(u(),o,n),g({type:"binary",op:";"==a.value?",":a.value,left:e,right:r},t,n)):e}var m,v=[];return i=d(i,{row:t,col:n}),m=i.is,{type:"exp",ast:a(!0),refs:v,sheet:e,row:t,col:n}}function r(e,t){var n,i=o(null,0,0,e);if(!(i.ast instanceof x))throw new I("Invalid name: "+e);return i=i.ast,t instanceof w||(n=o(i.sheet,0,0,t),t=n.ast instanceof w?n.ast:/^(?:str|num|bool|error)$/.test(n.ast.type)?n.ast.value:l(n)),{name:i,value:t}}function a(e){function t(e,i,o){function r(t){var r=e.op,a=A[r]<o||!o&&","==r||"prefix"==i.type&&o==A[r]&&"-"==i.op||"binary"==i.type&&o==A[r]&&e===i.right;return n(t(),a)}switch(e.type){case"num":return"(kendo.spreadsheet.calc._separators.DEC == '.' ? "+JSON.stringify(JSON.stringify(e.value))+" : "+JSON.stringify(JSON.stringify(e.value))+".replace('.' , kendo.spreadsheet.calc._separators.DEC))";case"bool":return JSON.stringify(e.value);case"error":return JSON.stringify("#"+e.value);case"str":return JSON.stringify(JSON.stringify(e.value));case"ref":return"this.refs["+e.index+"].print(row, col, mod)";case"prefix":return r(function(){return JSON.stringify(e.op)+" + "+t(e.exp,e,A[e.op])});case"postfix":return r(function(){return t(e.exp,e,A[e.op])+" + "+JSON.stringify(e.op)});case"binary":return r(function(){var i=n(t(e.left,e,A[e.op]),e.left instanceof x&&":"==e.op),o=n(t(e.right,e,A[e.op]),e.right instanceof x&&":"==e.op);return/^[,;]/.test(e.op)?i+" + kendo.spreadsheet.calc._separators.ARG + "+o:i+" + "+JSON.stringify(e.op)+" + "+o});case"func":return JSON.stringify(e.func+"(")+" + "+(e.args.length>0?e.args.map(function(n){return t(n,e,0)}).join(" + kendo.spreadsheet.calc._separators.ARG + ' ' + "):"''")+" + ')'";case"matrix":return"'{ ' + "+e.value.map(function(n){return n.map(function(n){return t(n,e,0)}).join(" + kendo.spreadsheet.calc._separators.COL + ' ' + ")}).join(" + '; ' + ")+"+ ' }'";case"null":return"''"}throw Error("Cannot make printer for node "+e.type)}function n(e,t){return t?"'(' + "+e+" + ')'":e}return R("function(row, col, mod){return("+t(e.ast,e,0)+")}")}function s(e,t){function n(e,t){switch(e.type){case"ref":return i(e,t);case"num":case"str":case"null":case"error":case"bool":return o(e,t);case"prefix":case"postfix":return a(e,t);case"binary":return s(e,t);case"func":return u(e,t);case"lambda":return h(e,t);case"matrix":return p(e.value,t,!0)}throw Error("Cannot CPS "+e.type)}function i(e,t){return"name"==e.ref?r(e,t):o(e,t)}function o(e,t){return t(e)}function r(e,t){return{type:"func",func:",getname",args:[f(t),e]}}function a(e,t){return n({type:"func",func:"unary"+e.op,args:[e.exp]},t)}function s(e,t){return n({type:"func",func:"binary"+e.op,args:[e.left,e.right]},t)}function l(e,t,i,o){return n(e,function(e){var r=f(o),a=g("T"),s=g("E");return{type:"func",func:"if",args:[r,e,{type:"lambda",vars:[a],body:n(t||M,function(e){return{type:"call",func:{type:"var",name:a},args:[e]}})},{type:"lambda",vars:[s],body:n(i||F,function(e){return{type:"call",func:{type:"var",name:s},args:[e]}})}]}})}function c(e,t){return 0===e.length?o(M,t):n({type:"func",func:"IF",args:[e[0],{type:"func",func:"AND",args:e.slice(1)},F]},t)}function d(e,t){return 0===e.length?o(F,t):n({type:"func",func:"IF",args:[e[0],M,{type:"func",func:"OR",args:e.slice(1)}]},t)}function u(e,t){switch(e.func.toLowerCase()){case"if":return l(e.args[0],e.args[1],e.args[2],t);case"and":return c(e.args,t);case"or":return d(e.args,t);case"true":return t(M);case"false":return t(F)}return function i(t,o){return o==e.args.length?{type:"func",func:e.func,args:t}:n(e.args[o],function(e){return i(t.concat([e]),o+1)})}([f(t)],0)}function h(e,t){var i=g("K"),o=n(e.body,function(e){return{type:"call",func:{type:"var",value:i},args:[e]}});return t({type:"lambda",vars:[i].concat(e.vars),body:o})}function p(e,t,i){var o=[];return function r(a){return a==e.length?t({type:"matrix",value:o}):(i?p:n)(e[a],function(e){return o[a]=e,r(a+1)})}(0)}function f(e){var t=g("R");return{type:"lambda",vars:[t],body:e({type:"var",name:t})}}function g(e){return e||(e=""),e="_"+e,e+ ++m}var m=0;return n(e,t)}function l(e){function t(e){var i=e.type;if("num"==i)return e.value+"";if("str"==i)return JSON.stringify(e.value);if("error"==i)return"context.error("+JSON.stringify(e.value)+")";if("return"==i)return"context.resolve("+t(e.value)+")";if("func"==i)return"context.func("+JSON.stringify(e.func)+", "+t(e.args[0])+", "+n(e.args.slice(1))+")";if("call"==i)return t(e.func)+"("+e.args.map(t).join(", ")+")";if("ref"==i)return"refs["+e.index+"]";if("bool"==i)return""+e.value;if("if"==i)return"(context.bool("+t(e.co)+") ? "+t(e.th)+" : "+t(e.el)+")";if("lambda"==i)return"(function("+e.vars.join(", ")+"){ return("+t(e.body)+") })";if("var"==i)return e.name;if("matrix"==i)return n(e.value);if("null"==i)return"null";throw Error("Cannot compile expression "+i)}function n(e){return"[ "+e.map(t).join(", ")+" ]"}var i,o=a(e),r=o.call(e),l=P[r];return l?l.clone(e.sheet,e.row,e.col):(i=t(s(e.ast,function(e){return{type:"return",value:e}})),i=["function(){","var context = this, refs = context.formula.absrefs",i,"}"].join(";\n"),l=new S.Formula(e.refs,R(i),o,e.sheet,e.row,e.col),P[r]=l.clone(e.sheet,e.row,e.col),l)}function c(e){return e}function d(e,i){function o(e,t){var n=r();return null==n||null!=e&&n.type!==e||null!=t&&n.value!==t?null:n}function r(){return null==C&&(C=s()),C}function a(){if(null!=C){var e=C;return C=null,e}return s()}function s(){var t,n=e.peek();return n&&("sym"!=n.type&&"rc"!=n.type&&"num"!=n.type||(t=b(8,d)||b(6,u)||b(6,f)||b(4,g)||b(4,m)||b(2,v)||b(2,_)),t||(t=e.next())),t}function l(o,r){var a,s,l,c,d;if("rc"==o.type)return!o.rel||i.forEditor||null!=i.row&&null!=i.col||e.croak("Cannot read relative cell in RC notation"),new y(o.row,o.col,o.rel);if("num"==o.type)return o.value<=1048577?S(new y(n(o.value),r?-(1/0):+(1/0),2)):null;if(a=o.value,s=/^(\$)?([a-z]+)(\$)?(\d+)$/i.exec(a))return l=n(s[4]),c=t(s[2]),l<=1048576&&c<=16383?S(new y(n(s[4]),t(s[2]),(s[1]?0:1)|(s[3]?0:2))):null;if(d="$"==a.charAt(0),d&&(a=a.substr(1)),/^\d+$/.test(a)){if(l=n(a),l<=1048576)return S(new y(n(a),r?-(1/0):+(1/0),d?0:2))}else if(c=t(a),c<=16383)return S(new y(r?-(1/0):+(1/0),t(a),d?0:1))}function d(e,t,n,i,o,r,a,s){if("sym"==e.type&&"op"==t.type&&":"==t.value&&"sym"==n.type&&"punc"==i.type&&"!"==i.value&&("sym"==o.type||"rc"==o.type||"num"==o.type&&o.value==o.value|0)&&"op"==r.type&&":"==r.value&&("sym"==a.type||"rc"==a.type||"num"==a.type&&a.value==a.value|0)&&a.type==o.type&&("punc"!=s.type||"("!=s.value||a.space)){var c=l(o,!0),d=l(a,!1);if(c&&d)return w(7),T(new k(c.setSheet(e.value,!0),d.setSheet(n.value,!0)).setSheet(e.value,!0),e,a)}}function u(e,t,n,i,o,r){var a,s;if("sym"==e.type&&"op"==t.type&&":"==t.value&&"sym"==n.type&&"punc"==i.type&&"!"==i.value&&("sym"==o.type||"rc"==o.type||"num"==o.type&&o.value==o.value|0)&&("punc"!=r.type||"("!=r.value||o.space)&&(a=l(o)))return w(5),s=a.clone(),T(new k(a.setSheet(e.value,!0),s.setSheet(n.value,!0)).setSheet(e.value,!0),e,o)}function f(e,t,n,i,o,r){if("sym"==e.type&&"punc"==t.type&&"!"==t.value&&("sym"==n.type||"rc"==n.type||"num"==n.type&&n.value==n.value|0)&&"op"==i.type&&":"==i.value&&("sym"==o.type||"rc"==o.type||"num"==o.type&&o.value==o.value|0)&&("punc"!=r.type||"("!=r.value||o.space)){var a=l(n,!0),s=l(o,!1);if(a&&s)return w(5),T(new k(a,s).setSheet(e.value,!0),e,o)}}function g(e,t,n,i){if("sym"==e.type&&"punc"==t.type&&"!"==t.value&&("sym"==n.type||"rc"==n.type||"num"==n.type&&n.value==n.value|0)&&("punc"!=i.type||"("!=i.value||n.space)){w(3);var o=l(n);return o&&isFinite(o.row)||(o=new x(n.value)),T(o.setSheet(e.value,!0),e,n)}}function m(e,t,n,i){if(("sym"==e.type||"rc"==e.type||"num"==e.type&&e.value==e.value|0)&&"op"==t.type&&":"==t.value&&("sym"==n.type||"rc"==n.type||"num"==n.type&&n.value==n.value|0)&&("punc"!=i.type||"("!=i.value||n.space)){var o=l(e,!0),r=l(n,!1);if(o&&r)return w(3),T(new k(o,r),e,n)}}function v(e,t){if(("sym"==e.type||"rc"==e.type)&&("punc"!=t.type||"("!=t.value||e.space)){var n=l(e);if(n&&isFinite(n.row)&&isFinite(n.col))return w(1),T(n,e,e)}}function _(e,t){if("sym"==e.type&&"punc"==t.type&&"("==t.value&&!e.space)return e.type="func",w(1),e}var b,w,C,S,T;return e=h(p(e),i),b=e.ahead,w=e.skip,C=null,S=null!=i.row&&null!=i.col?function(e){return 1&e.rel&&(e.col-=i.col),2&e.rel&&(e.row-=i.row),e}:c,T=i.forEditor?function(e,t,n){return e.begin=t.begin,e.end=n.end,e}:c,{peek:r,next:a,croak:e.croak,eof:e.eof,is:o}}function u(e){return" \t\r\n ".indexOf(e)>=0}function h(e,t){function n(e){return/[0-9]/i.test(e)}function i(e){return/[a-z$_]/i.test(e)||_.isUnicodeLetter(e)}function o(e){return i(e)||n(e)||"."==e}function r(e){return e in A}function a(e){return"\\!;(){}[]".indexOf(e)>=0}function s(){var e=!1,t=S(function(t){return t==E.DEC?!e&&(e=!0,!0):n(t)});return t==E.DEC?{type:"punc",value:E.DEC}:{type:"num",value:parseFloat(t.replace(E.DEC,"."))}}function l(t,n){return{type:"sym",value:t,upper:t.toUpperCase(),space:u(e.peek()),quote:n}}function c(e,t,n){if(!e&&!t&&!n)return null;if(!e&&!n||e&&n){var i=t?parseInt(t,10):0;return e?i:i-1}}function d(){var t,n,i=e.lookingAt(/^R(\[)?(-?[0-9]+)?(\])?C(\[)?(-?[0-9]+)?(\])?/i);return i&&(t=c(i[1],i[2],i[3]),n=c(i[4],i[5],i[6]),null!=t&&null!=n)?(e.skip(i),{type:"rc",row:t,col:n,rel:(i[4]||!(i[4]||i[5]||i[6])?1:0)|(i[1]||!(i[1]||i[2]||i[3])?2:0)}):l(S(o))}function h(){return e.next(),{type:"str",value:e.readEscaped('"')}}function p(){return e.next(),l(e.readEscaped("'"),!0)}function f(){return{type:"op",value:S(function(e,t){return t+e in A})}}function g(){return{type:"punc",value:e.next()}}function m(){if(e.eof())return null;var o,l=e.peek();return'"'==l?h():"'"==l?p():n(l)||l==E.DEC?s():i(l)?d():r(l)?f():a(l)?g():(o=e.lookingAt(/^#([a-z\/]+)[?!]?/i))?(e.skip(o),{type:"error",value:o[1]}):(t.forEditor||e.croak("Can't handle character with code: "+l.charCodeAt(0)),{type:"error",value:e.next()})}function v(){for(var n,i;x.length<=C;)S(u),n=e.pos(),i=m(),t.forEditor&&i&&(i.begin=n,i.end=e.pos()),x.push(i);return x[C]}function b(){var e=v();return e&&C++,e}function w(e,t){for(var n=C,i=[];e-- >0;)i.push(b()||z);return C=n,t.apply(i,i)}function k(e){C+=e}function y(){return null==v()}var x=[],C=0,S=e.readWhile;return{next:b,peek:v,eof:y,croak:e.croak,ahead:w,skip:k}}function p(e){function t(){return u}function n(){var t=e.charAt(u++);return"\n"==t?(h++,p=0):p++,t}function i(){return e.charAt(u)}function o(){return""===i()}function r(t){throw new I(t+" (input: "+e+")",u)}function a(t){if("string"==typeof t)e.substr(u,t.length)!=t&&r("Expected "+t),s(t.length);else if(t instanceof RegExp){var n=t.exec(e.substr(u));if(n)return s(n[0].length),n}else s(t[0].length)}function s(e){for(;e-- >0;)n()}function l(e){for(var t,i=!1,r="";!o();)if(t=n(),i)r+=t,i=!1;else if("\\"==t)i=!0;else{if(t==e)break;r+=t}return r}function c(e){for(var t="";!o()&&e(i(),t);)t+=n();return t}function d(t){return t.exec(e.substr(u))}var u=0,h=1,p=0;return{next:n,peek:i,eof:o,croak:r,readWhile:c,readEscaped:l,lookingAt:d,skip:a,forward:s,pos:t}}function f(e,t,n){function i(){var i=e.next();return"sym"==i.type?"TRUE"==i.upper?(i.type="bool",i.value=!0):"FALSE"==i.upper&&(i.type="bool",i.value=!1):"ref"==i.type&&(i={type:"ref",ref:null!=t&&null!=n?i.absolute(t,n):i,begin:i.begin,end:i.end}),i}var o,r=[];for(e=d(e,{forEditor:!0,row:t,col:n});!e.eof();)r.push(i());return o=r[0],"op"==o.type&&"="==o.value&&(o.type="startexp"),r}function g(e,t,n){var i,o;for(t=t||0,n=n||0,e=d(e,{row:t,col:n}),i=[];!e.eof();){if(o=e.next(),"ref"!=o.type)throw new I("Expecting a reference but got: "+JSON.stringify(o));i.push(o.absolute(t,n))}return i}function m(e,t){var n=e+t,i=H[n];return i||(i="^(\\d+(COM\\d{3})*(DOT\\d+)?)",i=i.replace(/DOT/g,"\\"+t).replace(/COM/g,"\\"+e),i=RegExp(i),H[n]=i),i}function v(e,t){for(var n="";t-- >0;)n+=e;return n}var _,b,w,k,y,x,C,S,T,D,A,E,I,M,F,R,P,z,B,L,H;kendo.support.browser.msie&&kendo.support.browser.version<9||(_=kendo.util,b=kendo.spreadsheet,w=b.Ref,k=b.RangeRef,y=b.CellRef,x=b.NameRef,C=b.calc,S=C.runtime,T=Object.create(null),D=Object.create(null),function(e){e.forEach(function(t,n){t.forEach(function(t){T[t]=e.length-n,D[","==t?";":t]=e.length-n})})}([[":"],[" "],[","],["%"],["^"],["*","/"],["+","-"],["&"],["=","<",">","<=",">=","<>"]]),A=T,E={DEC:".",ARG:",",COL:","},C.withDecimalSeparator=function(t,n){if(E.DEC==t)return n();var i=E.DEC;e(t);try{return n()}finally{e(i)}},C._separators=E,I=kendo.Class.extend({init:function(e,t){this.message=e,this.pos=t},toString:function(){return this.message}}),M={type:"bool",value:!0},F={type:"bool",value:!1},R=function(e){return function(t){var n=e[t];return n||(n=e[t]=Function("'use strict';return("+t+")")()),n}}(Object.create(null)),P=Object.create(null),z={type:"eof"},B=[],L=C.registerFormatParser=function(e){B.push(e)},C.parse=function(e,t,n,i,r){var a,s,l,c,d;if(i instanceof Date)return{type:"date",value:S.dateToSerial(i)};if("number"==typeof i)return{type:"number",value:i};if("boolean"==typeof i)return{type:"boolean",value:i};if(i+="",/^'/.test(i))return{type:"string",value:i.substr(1)};if(/^-?[0-9]+%$/.test(i)&&(a=i.substr(0,i.length-1),s=parseFloat(a),!isNaN(s)&&s==a))return{type:"percent",value:s/100};if(/^=/.test(i))return i=i.substr(1),/\S/.test(i)?o(e,t,n,i):{type:"string",value:"="+i};for(l=0;l<B.length;++l)if(c=B[l](i))return c;return"true"==i.toLowerCase()?{type:"boolean",value:!0}:"false"==i.toLowerCase()?{type:"boolean",value:!1}:(d=S.parseDate(i,r))?{type:"date",value:S.dateToSerial(d)}:(s=parseFloat(i),!isNaN(s)&&i.length>0&&s==i?(r=null,s!=Math.floor(s)&&(r="0."+(s+"").split(".")[1].replace(/\d/g,"0")),{type:"number",value:s,format:r}):{type:"string",value:i})},C.parseNameDefinition=r,C.parseFormula=o,C.parseReference=i,C.compile=l,C.parseSqref=g,C.InputStream=p,C.ParseError=I,C.tokenize=f,L(function(e){var t,n,i,o,r,a,s,l,c,d,u,h=0,p="";if(t=/^(\d+)([-\/.])(\d+)\2(\d{2}(?:\d{2})?)(\s*)/.exec(e)){if(n=parseInt(t[1],10),i=t[2],o=parseInt(t[3],10),r=parseInt(t[4],10),r<30?r+=2e3:r<100&&(r+=1900),a=!0,n>12&&(s=n,n=o,o=s,a=!1),!S.validDate(r,n,o))return null;h=S.packDate(r,n-1,o),h<0&&h--,p=a?["mm","dd","yyyy"].join(i):["dd","mm","yyyy"].join(i),p+=t[5],e=e.substr(t[0].length)}return(t=/^(\d+):(\d+)$/.exec(e))?(l=parseInt(t[1],10),c=parseInt(t[2],10),{type:"date",format:p+"hh:mm",value:h+S.packTime(l,c,0,0)}):(t=/^(\d+):(\d+)(\.\d+)$/.exec(e))?(c=parseInt(t[1],10),d=parseInt(t[2],10),u=1e3*parseFloat(t[3]),{type:"date",format:p+"mm:ss.00",value:h+S.packTime(0,c,d,u)}):(t=/^(\d+):(\d+):(\d+)$/.exec(e))?(l=parseInt(t[1],10),c=parseInt(t[2],10),d=parseInt(t[3],10),{type:"date",format:p+"hh:mm:ss",value:h+S.packTime(l,c,d,0)}):(t=/^(\d+):(\d+):(\d+)(\.\d+)$/.exec(e))?(l=parseInt(t[1],10),c=parseInt(t[2],10),d=parseInt(t[3],10),u=1e3*parseFloat(t[4]),{type:"date",format:p+"hh:mm:ss.00",value:h+S.packTime(l,c,d,u)}):void 0}),L(function(e){var t,n,i,o=kendo.culture(),r=o.numberFormat[","],a=o.numberFormat["."],s=o.numberFormat.currency.symbol,l=m(r,a),c=RegExp("^\\s*\\"+s+"\\s*"),d=1,u="",h="",f=!1,g=!1;if(e=p(e.replace(/^\s+|\s+$/g,"")),e.skip(/^-\s*/)&&(d=-1),(t=e.skip(c))&&(f=!0,u+='"'+t[0]+'"'),e.skip(/^-\s*/)){if(d<0)return null;d=-1}if(!(n=e.skip(l)))return null;if(u+="0",t=e.skip(c)){if(f)return null;f=!0,h='"'+t[0]+'"'}return!f&&(t=e.skip(/^\s*%\s*/))&&(g=!0,h=t[0]),e.eof()?((n[2]||f)&&(u=u.replace("0","#"),u+=",0"),n[3]&&(u+="."+v("0",n[3].length-1)),i=n[0].replace(RegExp("\\"+r,"g"),"").replace(RegExp("\\"+a,"g"),"."),i=parseFloat(i),g&&(i/=100),u+=h,f&&(u+=";-"+u),{type:"number",currency:f,format:u,value:d*i}):null}),L(function(e){var t;if(t=/^([0-9]*)\.([0-9]+)(\s*%)$/.exec(e))return{type:"number",value:parseFloat(e)/100,format:"0."+v("0",t[2].length)+t[3]}}),H={})},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/excel-reader.min",["kendo.core.min","kendo.color.min","util/parse-xml.min","spreadsheet/calc.min"],e)}(function(){"use strict";function e(e,t,i){var o=new FileReader;o.onload=function(e){var o=new JSZip(e.target.result);n(o,t,i)},o.readAsArrayBuffer(e)}function t(e){return/^\//.test(e)?e=e.substr(1):/^xl\//.test(e)||(e="xl/"+e),e}function n(e,t,n){var o,s,l,c,d,u,h;R=t.excelImportErrors=[],o=w(e),s=k(e,"_rels/workbook.xml"),l=x(e,s.byType.theme[0]),c=y(e,l),d=[],u=0,b(e,"xl/workbook.xml",{enter:function(n,i){var r,l,h,p;this.is(W)?(r=i["r:id"],l=s.byId[r],h=i.name,p=a(e,l),t.options.columnWidth=p.columnWidth||t.options.columnWidth,t.options.rowHeight=p.rowHeight||t.options.rowHeight,d.push({workbook:t,zip:e,strings:o,styles:c,file:l,options:{name:h,rows:Math.max(t.options.rows||0,p.rows),columns:Math.max(t.options.columns||0,p.cols),columnWidth:p.columnWidth,rowHeight:p.rowHeight}})):this.is($)&&i.activeTab&&(u=C(i.activeTab))},text:function(e){var n,i,o,r=this.is(B);!r||S(r["function"])||S(r.vbProcedure)||(n=r.localSheetId,i=null,null!=n&&(i=d[n].options.name),o=r.name,"_xlnm._FilterDatabase"!=o&&(i&&(o="'"+i.replace(/\'/g,"\\'")+"'!"+o),v(i,null,function(){t.defineName(o,e,S(r.hidden))},"reading user-defined name: "+o)))}}),h=new E.Deferred,h.progress(function(e){n&&n.notify(e)}).then(function(){var e=t.sheets();r(e),t.activeSheet(e[u]),n&&n.resolve()}),i(d,t,h)}function i(e,t,n){var i,r=(new E.Deferred).resolve();for(i=0;i<e.length;i++)!function(i,a){r=r.then(function(){var r,s,l=t.insertSheet(i.options);return l.suspendChanges(!0),r=o(l,i),s={sheet:l,progress:a/(e.length-1)},r.then(function(){n.notify(s)}),r})}(e[i],i);r.then(function(){n.resolve()})}function o(e,t){var n=new E.Deferred;return setTimeout(function(){c(t.zip,t.file,e,t.strings,t.styles),n.resolve()},0),n}function r(e){for(var t=0;t<e.length;t++)e[t].suspendChanges(!1).triggerChange({recalc:!0})}function a(e,n){var i={rows:0,cols:0};return b(e,t(n),{enter:function(e,t){if("dimension"==e){var n=M(t.ref);n.bottomRight&&(i.cols=n.bottomRight.col+1,i.rows=n.bottomRight.row+1)}else"sheetFormatPr"===e?(t.defaultColWidth&&(i.columnWidth=s(parseFloat(t.defaultColWidth))),t.defaultRowHeight&&(i.rowHeight=l(parseFloat(t.defaultRowHeight)))):this.is(O)&&this.exit()}}),i}function s(e){var t=7,n=(256*e+Math.floor(128/t))/256;return n*t}function l(e){return e*(4/3)}function c(e,n,i,o,r){function a(){i.range(E).filter(ce),E=null}var c,d,u,w,y,x,T,A,E,I,B,W,q,j,$,ie,oe={},re=i._columns._count,ae=null,se=n.replace(/worksheets\//,"worksheets/_rels/"),le=k(e,se),ce=[];R=i._workbook.excelImportErrors,n=t(n),b(e,n,{enter:function(e,t,n){var o,h,p,v,b,k,x,T,D,A,F;if(this.is(L))n&&"shared"==t.t&&null!=t.si&&(w=i.range(oe[t.si])._get("formula"));else if(this.is(P))u=null,w=null,c=t.r,y=null,null==c&&(c=M(ae),c.col++,c=""+c),ae=c,d=t.t,h=t.s,null!=h&&_(i,c,r,h);else if(this.is(H))i.range(t.ref).merge();else if(this.is(z)){if(p=C(t.min)-1,v=Math.min(re,C(t.max))-1,t.width&&(b=s(parseFloat(t.width)),0!==b&&i._columns.values.value(p,v,b)),"1"===t.hidden||0===b)for(k=p;k<=v;k++)i.hideColumn(k);null!=t.style&&_(i,new kendo.spreadsheet.RangeRef(new kendo.spreadsheet.CellRef((-(1/0)),p),new kendo.spreadsheet.CellRef((+(1/0)),v)),r,t.style)}else this.is(O)?(x=C(t.r)-1,t.ht&&(T=l(parseFloat(t.ht)),0!==T&&i._rows.values.value(x,x,T)),"1"!==t.hidden&&0!==T||i.hideRow(x)):this.is(V)?t.activeCell&&(D=M(t.activeCell),i.select(D,!0)):this.is(N)?"frozen"==t.state&&(t.xSplit&&i.frozenColumns(C(t.xSplit)),t.ySplit&&i.frozenRows(C(t.ySplit))):this.is(Y)?i.showGridLines(S(t.showGridLines,!0)):this.is(K)?(A=t["r:id"],F=le.byId[A],F&&i.range(t.ref).link(F)):this.is(["autoFilter"])?(E=t.ref,n&&a()):E&&(this.is(["filterColumn"])?I=parseInt(t.colId,10):this.is(["customFilters"])?(B=S(t.and)?"and":"or",W=[]):this.is(["customFilter"])?(o=f(t.operator,t.val),o&&W.push({operator:o.operator,value:o.value})):this.is(["dynamicFilter"])?ce.push({column:I,filter:new kendo.spreadsheet.DynamicFilter({type:g(t.type)})}):this.is(["top10"])?ce.push({column:I,filter:new kendo.spreadsheet.TopFilter({value:m(t.val),type:function(e,t){return e&&t?"topPercent":t?"topNumber":e?"bottomPercent":"bottomNumber"}(S(t.percent),S(t.top))})}):this.is(["filters"])?(q=S(t.blank),j=[]):this.is(["filter"])&&j.push(m(t.val)))},leave:function(e,t){var n,r;this.is(L)?w||"shared"!=t.t||null==t.si||(w=i.range(oe[t.si])._get("formula")):this.is(P)?null!=w?(n=v(i,y||c,function(){i.range(y||c).formula(w,x)},"parsing formula"),n&&i.range(y||c).value(w).background("#ffaaaa")):null!=u&&(r=i.range(c),r._get("formula")||(d&&"n"!=d?"s"==d?u=o[C(u)]:"b"==d?u="1"===u:"d"==d&&(u=kendo.parseDate(u)):u=parseFloat(u),null!=u&&r.value(u))):this.is(Q)||this.is(Z)?!function(){var e=kendo.spreadsheet.calc.parseSqref(t.sqref),n=t.type.toLowerCase(),o=t.operator;/^(?:whole|decimal)$/.test(n)?n="number":"list"==n&&(o="list"),!o&&/^(?:number|date)$/.test(n)&&(o="between"),e.forEach(function(e){v(i,e,function(){i.range(e).validation({type:S(t.showErrorMessage,!0)?"reject":"warning",from:T,to:A,dataType:n,comparerType:F[o]||o,allowNulls:S(t.allowBlank),showButton:S(t.showDropDown)||"date"==n||"list"==n,messageTemplate:t.error,titleTemplate:t.errorTitle})},"parsing validation")})}():"cols"==e?i._columns._refresh():"sheetData"==e?i._rows._refresh():"autoFilter"==e?a():E&&("customFilters"==e?ce.push({column:I,filter:new kendo.spreadsheet.CustomFilter({logic:B,criteria:W})}):"filters"==e&&ce.push({column:I,filter:new kendo.spreadsheet.ValueFilter({values:j,blanks:q})}))},text:function(e){var t;this.is(G)||this.is(U)?u=e:(t=this.is(L))?(w=e,x="array"==t.t,x?y=t.ref:"shared"==t.t&&(oe[t.si]=c)):this.is(X)||this.is(te)?T=e:this.is(J)||this.is(ne)?A=e:this.is(ee)&&(this.stack[this.stack.length-2].sqref=e)}}),le.byType.comments&&($=D(n,le.byType.comments[0]),p(e,$,i)),le.byType.drawing&&(ie=D(n,le.byType.drawing[0]),h(e,ie,i))}function d(e){var t=/\.([^.]+)$/.exec(e);if(t&&t[1])return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif"}[t[1].toLowerCase()]}function u(e){var t=/[^\/]+$/.exec(e);return t&&t[0]}function h(e,t,n){var i,o,r,a,s=["xdr:twoCellAnchor"],l=["xdr:ext"],c=["xdr:oneCellAnchor"],h=["xdr:from"],p=["xdr:to"],f=["xdr:row"],g=["xdr:col"],m=["xdr:rowOff"],v=["xdr:colOff"],_=["xdr:blipFill","a:blip"],w=t.replace(/drawings\//,"drawings/_rels/"),y=k(e,w);y.byType.image&&Object.keys(y.byId).forEach(function(i){var o,r,a,s=D(t,y.byId[i]),l=d(s);l&&(o=e.files[s].asArrayBuffer(),r=u(s),a=!r||kendo.support.browser.msie||kendo.support.browser.edge?new window.Blob([o],{type:l}):new window.File([o],r,{type:l}),y.byId[i]=n._workbook.addImage(a))}),b(e,t,{enter:function(e,t){if(this.is(s)||this.is(c))i={};else if(this.is(h)||this.is(p))o={};else if(this.is(_)){var n=t["r:embed"];i.image=y.byId[n]}else this.is(l)&&(r=A(parseFloat(t.cx)),a=A(parseFloat(t.cy)))},leave:function(){var e,t,l,d;this.is(h)?(i.topLeftCell=new kendo.spreadsheet.CellRef(o.row,o.col),i.offsetX=A(o.colOffset),i.offsetY=A(o.rowOffset)):this.is(p)?(i.brCell=new kendo.spreadsheet.CellRef(o.row,o.col),i.brX=A(o.colOffset),i.brY=A(o.rowOffset)):this.is(s)?(e=n._columns.sum(0,i.topLeftCell.col-1)+i.offsetX,t=n._rows.sum(0,i.topLeftCell.row-1)+i.offsetY,l=n._columns.sum(0,i.brCell.col-1)+i.brX,d=n._rows.sum(0,i.brCell.row-1)+i.brY,n.addDrawing({topLeftCell:i.topLeftCell,offsetX:i.offsetX,offsetY:i.offsetY,width:null!=r?r:l-e,height:null!=a?a:d-t,image:i.image,opacity:1})):this.is(c)&&n.addDrawing({topLeftCell:i.topLeftCell,offsetX:i.offsetX,offsetY:i.offsetY,width:r,height:a,image:i.image,opacity:1})},text:function(e){this.is(f)?o.row=parseFloat(e):this.is(g)?o.col=parseFloat(e):this.is(m)?o.rowOffset=parseFloat(e):this.is(v)&&(o.colOffset=parseFloat(e))}})}function p(e,t,n){var i,o,r=[];b(e,t,{enter:function(e,t){this.is(ie)?o={author:r[t.authorId],ref:t.ref,text:""}:this.is(oe)&&(i="")},leave:function(){this.is(ie)?n.range(o.ref).comment(o.text):this.is(oe)&&r.push(i)},text:function(e){this.is(re)?o.text+=e:this.is(oe)&&(i+=e)}})}function f(e,t){var n={equal:"eq",notEqual:"ne",greaterThan:"gt",greaterThanOrEqual:"gte",lessThan:"lt",lessThanOrEqual:"lte"}[e];return t=m(t),n&&"number"==typeof t?{operator:n,value:t}:"notEqual"!=e&&e||"string"!=typeof t?void 0:{operator:e?"doesnotmatch":"matches",value:t}}function g(e){return{Q1:"quarter1",Q2:"quarter2",Q3:"quarter3",Q4:"quarter4",M1:"january",M2:"february",M3:"march",M4:"april",M5:"may",M6:"june",M7:"july",M8:"august",M9:"september",M10:"october",M11:"november",M12:"december"}[e.toUpperCase()]||e}function m(e){var t=parseFloat(e);return isNaN(t)||t!=e?e:t}function v(e,t,n,i){try{return n(),!1}catch(o){var r={context:i,error:o+""};return e&&(r.sheet=e.name()),t&&(r.location=t+""),R.push(r),!0}}function _(e,t,n,i){function o(e){var t="string"==typeof e?e:e.formatCode;null==t||/^general$/i.test(t)||(t=t.replace(/^\[\$-[0-9]+\]/,""),u.format(t))}function r(e){"solid"==e.type&&u.background(e.color)}function a(e){u.fontFamily(e.name),e.size&&u._property("fontSize",4*e.size/3),e.bold&&u.bold(!0),e.italic&&u.italic(!0),e.underline&&u.underline(!0),e.color&&u.color(e.color)}function s(e){function t(t,n){var i,o,r=e[t];r&&(i=ae[r.style],0!==i&&(o=r.color,null==o&&(o="#000"),u._property(n,{size:i,color:o})))}t("left","borderLeft"),t("top","borderTop"),t("right","borderRight"),t("bottom","borderBottom")}function l(e,t){var n=h[e];if(null!=n&&!n)return!1;if(d=h[t],c&&null==d){if(n=c[e],null!=n&&!n)return!1;d=c[t]}return null!=d}var c,d,u=e.range(t),h=n.inlineStyles[i];h.xfId&&(c=n.namedStyles[h.xfId]),l("applyBorder","borderId")&&s(n.borders[d]),l("applyFont","fontId")&&a(n.fonts[d]),l("applyAlignment","textAlign")&&u.textAlign(d),l("applyAlignment","verticalAlign")&&u.verticalAlign(d),l("applyAlignment","indent")&&u.indent(d),l("applyAlignment","wrapText")&&u._property("wrap",d),l("applyFill","fillId")&&r(n.fills[d]),l("applyNumberFormat","numFmtId")&&o(n.numFmts[d]||se[d])}function b(e,t,n){var i=e.files[t]; +i&&I(i.asUint8Array(),n)}function w(e){var t=[],n=null;return b(e,"xl/sharedStrings.xml",{leave:function(){this.is(j)&&(t.push(n),n=null)},text:function(e){this.is(q)&&(null==n&&(n=""),n+=e)}}),t}function k(e,n){var i={byId:{},byType:{theme:[]}};return b(e,t(n)+".rels",{enter:function(e,t){var n,o;"Relationship"==e&&(i.byId[t.Id]=t.Target,n=t.Type.match(/\w+$/)[0],o=i.byType[n]||[],o.push(t.Target),i.byType[n]=o)}}),i}function y(e,t){function n(e){function t(t){null!=e[t]&&(n[t]=S(e[t]))}var n={borderId:C(e.borderId),fillId:C(e.fillId),fontId:C(e.fontId),numFmtId:C(e.numFmtId),pivotButton:S(e.pivotButton),quotePrefix:S(e.quotePrefix),xfId:C(e.xfId)};return t("applyAlignment"),t("applyBorder"),t("applyFill"),t("applyFont"),t("applyNumberFormat"),t("applyProtection"),n}function i(e){var n,i,o;return e.rgb?T(e.rgb):e.indexed?fe[C(e.indexed)]:e.theme?(n=t.colorScheme[C(e.theme)])?(i=kendo.parseColor(n),e.tint&&(i=i.toHSL(),o=parseFloat(e.tint),i.l=o<0?i.l*(1+o):i.l*(1-o)+(100-100*(1-o))),i.toCssRgba()):fe[0]:void 0}var o={fonts:[],numFmts:{},fills:[],borders:[],namedStyles:[],inlineStyles:[]},r=null,a=null,s=null,l=null;return b(e,"xl/styles.xml",{enter:function(e,t,c){if(this.is(pe))o.numFmts[t.numFmtId]=t;else if(this.is(de))o.fonts.push(r={});else if(r)"sz"==e?r.size=parseFloat(t.val):"name"==e?r.name=t.val:"b"==e?r.bold=S(t.val,!0):"i"==e?r.italic=S(t.val,!0):"u"==e?r.underline=null==t.val||"single"==t.val:"color"==e&&(r.color=i(t));else if(this.is(ce))o.fills.push(a={});else if(a)"patternFill"==e?a.type=t.patternType:"fgColor"==e&&"solid"===a.type?a.color=i(t):"bgColor"==e&&"solid"!==a.type&&(a.color=i(t));else if(this.is(le))o.borders.push(s={});else if(s){if(/^(?:left|top|right|bottom)$/.test(e)&&(s[e]={style:t.style||"none"}),"color"==e){var d=this.stack[this.stack.length-2].$tag;s[d].color=i(t)}}else this.is(he)?(l=n(t),o.namedStyles.push(l),c&&(l=null)):this.is(ue)?(l=n(t),o.inlineStyles.push(l),c&&(l=null)):l&&"alignment"==e&&(/^(?:left|center|right|justify)$/.test(t.horizontal)&&(l.textAlign=t.horizontal),/^(?:top|center|bottom)$/.test(t.vertical)&&(l.verticalAlign=t.vertical),null!=t.wrapText&&(l.wrapText=S(t.wrapText)),null!=t.indent&&(l.indent=C(t.indent)))},leave:function(e){this.is(de)?r=null:this.is(ce)?a=null:this.is(le)?s=null:"xf"==e&&(l=null)}}),o}function x(e,n){function i(e,t,n){var i=e[t];e[t]=e[n],e[n]=i}var o=[],r={colorScheme:o},a=t(n);return e.files[a]&&(b(e,a,{enter:function(e,t){this.is(me)?o.push(T("window"==t.val?"FFFFFFFF":"FF000000")):this.is(ge)&&o.push(T("FF"+t.val))}}),o.length>3&&(i(o,0,1),i(o,2,3))),r}function C(e){return null==e?null:parseInt(e,10)}function S(e,t){return null==e?t:"true"==e||e===!0||1==e}function T(e){var t=/^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);return"rgba("+parseInt(t[2],16)+", "+parseInt(t[3],16)+", "+parseInt(t[4],16)+", "+parseInt(t[1],16)/255+")"}function D(e,t){for(e=e.split(/\/+/),t=t.split(/\/+/),e.pop();t.length;){var n=t.shift();if(""===n)e=[];else{if("."===n)continue;".."===n?e.pop():e.push(n)}}return e.join("/")}function A(e){return e/9525}var E,I,M,F,R,P,z,B,L,H,N,O,V,W,U,q,j,G,$,Y,K,Q,X,J,Z,ee,te,ne,ie,oe,re,ae,se,le,ce,de,ue,he,pe,fe,ge,me;kendo.support.browser.msie&&kendo.support.browser.version<9||(E=kendo.jQuery,I=kendo.util.parseXML,M=kendo.spreadsheet.calc.parseReference,F={greaterThanOrEqual:"greaterThanOrEqualTo",lessThanOrEqual:"lessThanOrEqualTo"},R=null,P=["sheetData","row","c"],z=["cols","col"],B=["definedNames","definedName"],L=["sheetData","row","c","f"],H=["mergeCells","mergeCell"],N=["sheetViews","sheetView","pane"],O=["sheetData","row"],V=["sheetViews","sheetView","selection"],W=["sheets","sheet"],U=["sheetData","row","c","is"],q=["t"],j=["si"],G=["sheetData","row","c","v"],$=["bookViews","workbookView"],Y=["sheetViews","sheetView"],K=["hyperlinks","hyperlink"],Q=["dataValidations","dataValidation"],X=["dataValidations","dataValidation","formula1"],J=["dataValidations","dataValidation","formula2"],Z=["x14:dataValidations","x14:dataValidation"],ee=["x14:dataValidations","x14:dataValidation","xm:sqref"],te=["x14:dataValidations","x14:dataValidation","x14:formula1","xm:f"],ne=["x14:dataValidations","x14:dataValidation","x14:formula2","xm:f"],ie=["commentList","comment"],oe=["authors","author"],re=["t"],ae={none:0,thin:1,medium:2,dashed:1,dotted:1,thick:3,"double":3,hair:1,mediumDashed:2,dashDot:1,mediumDashDot:2,dashDotDot:1,mediumDashDotDot:2,slantDashDot:1},se={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"mm-dd-yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@"},le=["borders","border"],ce=["fills","fill"],de=["fonts","font"],ue=["cellXfs","xf"],he=["cellStyleXfs","xf"],pe=["numFmts","numFmt"],fe=[T("FF000000"),T("FFFFFFFF"),T("FFFF0000"),T("FF00FF00"),T("FF0000FF"),T("FFFFFF00"),T("FFFF00FF"),T("FF00FFFF"),T("FF000000"),T("FFFFFFFF"),T("FFFF0000"),T("FF00FF00"),T("FF0000FF"),T("FFFFFF00"),T("FFFF00FF"),T("FF00FFFF"),T("FF800000"),T("FF008000"),T("FF000080"),T("FF808000"),T("FF800080"),T("FF008080"),T("FFC0C0C0"),T("FF808080"),T("FF9999FF"),T("FF993366"),T("FFFFFFCC"),T("FFCCFFFF"),T("FF660066"),T("FFFF8080"),T("FF0066CC"),T("FFCCCCFF"),T("FF000080"),T("FFFF00FF"),T("FFFFFF00"),T("FF00FFFF"),T("FF800080"),T("FF800000"),T("FF008080"),T("FF0000FF"),T("FF00CCFF"),T("FFCCFFFF"),T("FFCCFFCC"),T("FFFFFF99"),T("FF99CCFF"),T("FFFF99CC"),T("FFCC99FF"),T("FFFFCC99"),T("FF3366FF"),T("FF33CCCC"),T("FF99CC00"),T("FFFFCC00"),T("FFFF9900"),T("FFFF6600"),T("FF666699"),T("FF969696"),T("FF003366"),T("FF339966"),T("FF003300"),T("FF333300"),T("FF993300"),T("FF993366"),T("FF333399"),T("FF333333"),T("FF000000"),T("FFFFFFFF")],ge=["a:clrScheme","*","a:srgbClr"],me=["a:clrScheme","*","a:sysClr"],kendo.spreadsheet.readExcel=e,kendo.spreadsheet._readSheet=c,kendo.spreadsheet._readStrings=w,kendo.spreadsheet._readStyles=y,kendo.spreadsheet._readTheme=x,kendo.spreadsheet._readWorkbook=n)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/workbook.min",["kendo.core.min","spreadsheet/runtime.min","spreadsheet/references.min","spreadsheet/excel-reader.min"],e)}(function(){!function(e){function t(e,t){var n=new XMLHttpRequest;n.onload=function(){t(n.response,n.getResponseHeader("Content-Type"))},n.onerror=function(){t(null)},n.open("GET",e),n.responseType="arraybuffer",n.send()}function n(e,t){function n(e,t,n){return void 0!==e?e:void 0!==t?t:n}var i,o,r,a,s,l,c=n(e.rowCount,t.rows,200),d=n(e.columnCount,t.columns,50),u=n(e.rowHeight,t.rowHeight,20),h=n(e.columnWidth,t.columnWidth,64),p=n(e.headerHeight,t.headerHeight,20),f=n(e.headerWidth,t.headerWidth,32);if(void 0!==e.rows)for(i=0;i<e.rows.length;++i)if(o=e.rows[i],r=n(o.index,i),r>=c&&(c=r+1),o.cells)for(a=0;a<o.cells.length;++a)s=o.cells[a],l=n(s.index,a),l>=d&&(d=l+1);return{rowCount:c,columnCount:d,rowHeight:u,columnWidth:h,headerHeight:p,headerWidth:f}}var i,o,r,a,s;e.support.browser.msie&&e.support.browser.version<9||(i=e.jQuery,o=e.spreadsheet.calc.runtime.Formula,r=e.spreadsheet.Ref,a=e.spreadsheet.CalcError,e.spreadsheet.messages.workbook={defaultSheetName:"Sheet"},s=e.Observable.extend({options:{},init:function(t,n){e.Observable.fn.init.call(this),this.options=t,this._view=n,this._sheets=[],this._images={},this._imgID=0,this._sheetsSearchCache={},this._sheet=this.insertSheet({rows:this.options.rows,columns:this.options.columns,rowHeight:this.options.rowHeight,columnWidth:this.options.columnWidth,headerHeight:this.options.headerHeight,headerWidth:this.options.headerWidth,dataSource:this.options.dataSource}),this.undoRedoStack=new e.util.UndoRedoStack,this.undoRedoStack.bind(["undo","redo"],this._onUndoRedo.bind(this)),this._context=new e.spreadsheet.FormulaContext(this),this._validationContext=new e.spreadsheet.ValidationFormulaContext(this),this._names=Object.create(null),this.fromJSON(this.options)},clipboard:function(){return this._clipboard||(this._clipboard=new e.spreadsheet.Clipboard(this)),this._clipboard},destroy:function(){this.unbind(),this._clipboard&&this._clipboard.destroy()},events:["cut","copy","paste","changing","change","excelImport","excelExport","insertSheet","removeSheet","selectSheet","renameSheet","insertRow","insertColumn","deleteRow","deleteColumn","hideRow","hideColumn","unhideRow","unhideColumn","select","changeFormat","dataBinding","dataBound"],_sheetChanging:function(e){this.trigger("changing",e)&&e.preventDefault()},_sheetChange:function(e){this.trigger("change",e)},_sheetInsertRow:function(e){this.trigger("insertRow",{sheet:e.sender,index:e.index})&&e.preventDefault()},_sheetInsertColumn:function(e){this.trigger("insertColumn",{sheet:e.sender,index:e.index})&&e.preventDefault()},_sheetDeleteRow:function(e){this.trigger("deleteRow",{sheet:e.sender,index:e.index})&&e.preventDefault()},_sheetDeleteColumn:function(e){this.trigger("deleteColumn",{sheet:e.sender,index:e.index})&&e.preventDefault()},_sheetHideRow:function(e){this.trigger("hideRow",{sheet:e.sender,index:e.index})&&e.preventDefault()},_sheetHideColumn:function(e){this.trigger("hideColumn",{sheet:e.sender,index:e.index})&&e.preventDefault()},_sheetUnhideRow:function(e){this.trigger("unhideRow",{sheet:e.sender,index:e.index})&&e.preventDefault()},_sheetUnhideColumn:function(e){this.trigger("unhideColumn",{sheet:e.sender,index:e.index})&&e.preventDefault()},_sheetSelect:function(e){this.trigger("select",e)},_sheetDataBinding:function(e){this.trigger("dataBinding",{sheet:e.sender})&&e.preventDefault()},_sheetDataBound:function(e){this.trigger("dataBound",{sheet:e.sender})},_sheetCommandRequest:function(e){this.trigger("commandRequest",e)},_inputForRef:function(t){var n=this;return n._sheet.withCultureDecimals(function(){return new e.spreadsheet.Range(t,n._sheet).input()})},_onUndoRedo:function(e){e.command.range().select()},execute:function(t){var n,o=i.extend({workbook:this},t.options),r=new e.spreadsheet[t.command](o),a=this.activeSheet();return o.origin&&r.origin(o.origin),r.range(o.operatingRange?o.operatingRange:a.selection()),n=r.exec(),n&&"error"===n.reason||r.cannotUndo||this.undoRedoStack.push(r),this.cleanupImages(),n},resetFormulas:function(){this._sheets.forEach(function(e){e.resetFormulas()})},resetValidations:function(){this._sheets.forEach(function(e){e.resetValidations()})},refresh:function(e){e.recalc&&(this.resetFormulas(),this.resetValidations(),this._sheet.recalc(this._context),this._sheet.revalidate(this._validationContext))},activeSheet:function(t){return void 0===t?this._sheet:void(this.sheetByName(t.name())&&(this._sheet=t,t.triggerChange(e.spreadsheet.ALL_REASONS)))},moveSheetToIndex:function(e,t){var n=this.sheetIndex(e),i=this._sheets;n!==-1&&(this._sheetsSearchCache={},i.splice(t,0,i.splice(n,1)[0]),this.trigger("change",{sheetSelection:!0}))},insertSheet:function(t){var n,i,o,r,a,s;if(t=t||{},n=this,i="number"==typeof t.index?t.index:n._sheets.length,r=n._sheets,a=function(t){t=t?t:1;var i=e.spreadsheet.messages.workbook.defaultSheetName+t;return n.sheetByName(i)?a(t+1):i},!t.name||!n.sheetByName(t.name))return this._sheetsSearchCache={},o=t.name||a(),s=new e.spreadsheet.Sheet(t.rows||this.options.rows,t.columns||this.options.columns,t.rowHeight||this.options.rowHeight,t.columnWidth||this.options.columnWidth,t.headerHeight||this.options.headerHeight,t.headerWidth||this.options.headerWidth,t.defaultCellStyle||this.options.defaultCellStyle),s._workbook=this,s._name(o),this._bindSheetEvents(s),r.splice(i,0,s),t.data&&s.fromJSON(t.data),t.dataSource&&s.setDataSource(t.dataSource),this.trigger("change",{sheetSelection:!0}),s},_bindSheetEvents:function(e){e.bind("changing",this._sheetChanging.bind(this)),e.bind("change",this._sheetChange.bind(this)),e.bind("insertRow",this._sheetInsertRow.bind(this)),e.bind("insertColumn",this._sheetInsertColumn.bind(this)),e.bind("deleteRow",this._sheetDeleteRow.bind(this)),e.bind("deleteColumn",this._sheetDeleteColumn.bind(this)),e.bind("hideRow",this._sheetHideRow.bind(this)),e.bind("hideColumn",this._sheetHideColumn.bind(this)),e.bind("unhideRow",this._sheetUnhideRow.bind(this)),e.bind("unhideColumn",this._sheetUnhideColumn.bind(this)),e.bind("select",this._sheetSelect.bind(this)),e.bind("commandRequest",this._sheetCommandRequest.bind(this)),e.bind("dataBinding",this._sheetDataBinding.bind(this)),e.bind("dataBound",this._sheetDataBound.bind(this))},sheets:function(){return this._sheets.slice()},sheetByName:function(e){return this._sheets[this.sheetIndex(e)]},sheetByIndex:function(e){return this._sheets[e]},sheetIndex:function(e){var t,n=this._sheets,i=("string"==typeof e?e:e.name()).toLowerCase(),o=this._sheetsSearchCache[i];if(o>=0)return o;for(o=0;o<n.length;o++)if(t=n[o].name().toLowerCase(),this._sheetsSearchCache[t]=o,t===i)return o;return-1},renameSheet:function(e,t){var n=e.name().toLowerCase();if(t&&n!==t.toLowerCase()&&!this.sheetByName(t)&&(e=this.sheetByName(n),e&&(this._sheetsSearchCache={},!this.trigger("renameSheet",{sheet:e,newSheetName:t}))))return this._sheets.forEach(function(e){e._forFormulas(function(e){e.renameSheet(n,t)})}),this.forEachName(function(e,i){e.nameref.renameSheet(n,t)&&(this.undefineName(i),e.name=e.nameref.print(),this.nameDefinition(e.name,e)),(e.value instanceof r||e.value instanceof o)&&e.value.renameSheet(n,t)}.bind(this)),e._name(t),this.trigger("change",{sheetSelection:!0}),e},removeSheet:function(e){var t,n=this,i=n._sheets,o=e.name(),r=n.sheetIndex(e);1!==i.length&&(this.trigger("removeSheet",{sheet:e})||(this._sheetsSearchCache={},r>-1&&(e.unbind(),i.splice(r,1),n.activeSheet().name()===o?(t=i[r===i.length?r-1:r],n.activeSheet(t)):this.trigger("change",{recalc:!0,sheetSelection:!0}))))},_clearSheets:function(){for(var e=0;e<this._sheets.length;e++)this._sheets[e]._activeDrawing=[],this._sheets[e]._drawings=[],this._sheets[e].unbind();this._sheets=[],this._sheetsSearchCache={},this._names={},this._images={},this._imgID=0},fromJSON:function(e){var t,i,o,r;if(e.sheets)for(this._clearSheets(),e.images&&(this._imgID=0,this._images={},Object.keys(e.images).forEach(function(t){if(!isNaN(t)){var n=parseFloat(t);isFinite(n)&&(this._imgID=Math.max(this._imgID,n))}this._images[t]={url:e.images[t]}},this)),t=0;t<e.sheets.length;t++)i=e.sheets[t],o=n(i,this.options),r=this.insertSheet({rows:o.rowCount,columns:o.columnCount,rowHeight:o.rowHeight,columnWidth:o.columnWidth,headerHeight:o.headerHeight,headerWidth:o.headerWidth,data:i}),i.dataSource&&r.setDataSource(i.dataSource);this.activeSheet(e.activeSheet?this.sheetByName(e.activeSheet):this._sheets[0]),e.names&&e.names.forEach(function(e){this.defineName(e.name,e.value,e.hidden)},this)},toJSON:function(){this.resetFormulas(),this.resetValidations();var e=Object.keys(this._names).map(function(e){var t=this._names[e],n=t.value;return n instanceof r||n instanceof o?n=n.print(0,0,!0):n instanceof a?n+="":n=JSON.stringify(n),{value:n,hidden:t.hidden,name:t.name,sheet:t.nameref.sheet,localName:t.nameref.name}},this);return{activeSheet:this.activeSheet().name(),sheets:this._sheets.map(function(e){return e.recalc(this._context),e.revalidate(this._validationContext),e.toJSON()},this),names:e,columnWidth:this.options.columnWidth,rowHeight:this.options.rowHeight}},saveJSON:function(){function e(){--a<=0&&n.resolve(o)}var t=this,n=new i.Deferred,o=t.toJSON(),r=Object.keys(t._images).filter(function(e){return 1===t.usesImage(e)}),a=r.length;return o.images={},a?r.forEach(function(n){var i,r=t._images[n];r.blob?(i=new FileReader,i.onload=function(){o.images[n]=i.result,e()},i.readAsDataURL(r.blob)):(o.images[n]=r.url,e())}):e(),n.promise()},fromFile:function(t){var n=new i.Deferred,o=n.promise(),r={file:t,promise:o};return t&&!this.trigger("excelImport",r)?(this._clearSheets(),e.spreadsheet.readExcel(t,this,n)):n.reject(),o},saveAsExcel:function(n){function o(){if(--s<=0){r.images=l;var t=new e.ooxml.Workbook(r);e.saveAs({dataURI:n.forceProxy?t.toDataURL():t.toBlob(),fileName:r.fileName||n.fileName,proxyURL:n.proxyURL,forceProxy:n.forceProxy})}}var r,a,s,l,c=this;n=i.extend({},c.options.excel,n),r=c.toJSON(),c.trigger("excelExport",{workbook:r})||(a=Object.keys(c._images).filter(function(e){return 1===c.usesImage(e)}),s=a.length,l=s?{}:null,s?a.forEach(function(e){var n,i=c._images[e];i.blob?(n=new FileReader,n.onload=function(){l[e]={type:i.blob.type,name:i.blob.name,data:n.result},o()},n.readAsArrayBuffer(i.blob)):t(i.url,function(t,n){l[e]={type:n,data:t},o()})}):o())},draw:function(t,n){"function"!=typeof t||n||(n=t,t={});var i=[],o=this._sheets;!function r(a){if(a<o.length)o[a].draw(e.spreadsheet.SHEETREF,t,function(e){i.push(e),r(a+1)});else{var s=i[0];for(a=1;a<i.length;++a)s.children=s.children.concat(i[a].children);n(s)}}(0)},nameForRef:function(e,t){var n,i,o,a;void 0===t&&(t=e.sheet),t=t.toLowerCase(),n=e+"";for(i in this._names)if(o=this._names[i],a=o.value,a instanceof r&&(!a.sheet||a.sheet&&t==a.sheet.toLowerCase())&&a+""==n)return o;return{name:n}},defineName:function(t,n,i){var o=e.spreadsheet.calc.parseNameDefinition(t,n);t=o.name.print(),this._names[t.toLowerCase()]={value:o.value,hidden:i,name:t,nameref:o.name}},undefineName:function(e){delete this._names[e.toLowerCase()]},nameValue:function(e){return e=e.toLowerCase(),e in this._names?this._names[e].value:null},nameDefinition:function(e,t){return e=e.toLowerCase(),arguments.length>1&&(void 0===t?delete this._names[e]:this._names[e]=t),this._names[e]},forEachName:function(e){Object.keys(this._names).forEach(function(t){e(this._names[t],t)},this)},adjustNames:function(e,t,n,i){e=e.toLowerCase(),Object.keys(this._names).forEach(function(a){var s=this._names[a],l=s.value;l instanceof r&&l.sheet.toLowerCase()==e?s.value=l.adjust(null,null,null,null,t,n,i):l instanceof o&&l.adjust(e,t?"row":"col",n,i)},this)},addImage:function(e){var t=++this._imgID+"";return this._images[t]="string"==typeof e?{url:e}:{blob:e},t},imageUrl:function(e){var t=this._images[e],n=t.url;return n||(n=t.url=window.URL.createObjectURL(t.blob)),n},cleanupImages:function(){Object.keys(this._images).forEach(function(e){if(!this.usesImage(e)){var t=this._images[e].url;t&&window.URL.revokeObjectURL(t),delete this._images[e]}},this)},usesImage:function(e){var t,n,i=this._sheets;for(t=i.length;--t>=0;)if(i[t].usesImage(e))return 1;for(n=this.undoRedoStack.stack,t=n.length;--t>=0;)if(n[t].usesImage(e))return 2;return!1}}),e.spreadsheet.Workbook=s,e.PDFMixin&&(e.PDFMixin.extend(s.prototype),s.prototype.saveAsPDF=function(t){var n=new i.Deferred,o=n.promise(),r={promise:o};if(!this.trigger("pdfExport",r))return this._drawPDF(t,n).then(function(n){return t.forceProxy?e.pdf.exportPDF(n):e.pdf.exportPDFToBlob(n)}).done(function(i){e.saveAs({dataURI:i,fileName:t.fileName,proxyURL:t.proxyURL,forceProxy:t.forceProxy,proxyTarget:t.proxyTarget}),n.resolve()}).fail(function(e){n.reject(e)}),o},s.prototype._drawPDF=function(e){var t=new i.Deferred,n=function(e){t.resolve(e)};switch(e.area){case"workbook":e.workbook.draw(e,n);break;case"sheet":e.workbook.activeSheet().draw(e,n);break;case"selection":e.workbook.activeSheet().selection().draw(e,n)}return t.promise()}))}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/formulacontext.min",["kendo.core.min"],e)}(function(){var e,t,n,i,o,r,a,s;kendo.support.browser.msie&&kendo.support.browser.version<9||(e=kendo.spreadsheet,t=e.CellRef,n=e.RangeRef,i=e.UnionRef,o=e.NameRef,r=e.Ref,a=kendo.Class.extend({init:function(e){this.workbook=e},getRefCells:function(e,a,s,l,c,d){var u,h,p,f,g,m,v,_,b,w,k,y,x,C,S,T,D;if(e instanceof t)return u=this.workbook.sheetByName(e.sheet),u&&e.valid()?(h=u.formula(e),p=u.range(e.row,e.col).value(),d||null!=h||null!=p?[{formula:h,value:p,row:e.row,col:e.col,sheet:e.sheet,hidden:!!a&&(0===u.columnWidth(e.col)||0===u.rowHeight(e.row))}]:[]):[{value:new kendo.spreadsheet.calc.runtime.CalcError("REF")}];if(e instanceof n){if(f=this.workbook.sheetIndex(e.sheet),g=[],m=f,e.endSheet&&(m=this.workbook.sheetIndex(e.endSheet),f>m&&(v=f,f=m,m=v)),f<0||m<0||!e.valid())return[{value:new kendo.spreadsheet.calc.runtime.CalcError("REF")}];for(;f<=m;)for(u=this.workbook.sheetByIndex(f++),_=u._grid.normalize(e.topLeft),b=u._grid.normalize(e.bottomRight),w=u._grid.cellRefIndex(_),k=u._grid.cellRefIndex(b),y=u._properties.iterator("value",w,k),x=_.col;x<=b.col;++x)for(C=_.row;C<=b.row;++C)S=u._grid.index(C,x),h=u._properties.get("formula",S),p=y.at(S),(d||null!=h||null!=p)&&g.push({formula:h,value:p,row:C,col:x,sheet:u.name(),hidden:!!a&&(0===u.columnWidth(x)||0===u.rowHeight(C))});return g}if(e instanceof i){for(T=[],f=0;f<e.refs.length;++f)T=T.concat(this.getRefCells(e.refs[f],a,s,l,c));return T}return e instanceof o?(D=this.nameValue(e,s,l,c),D instanceof r?this.getRefCells(D,a,s,l,c):[{value:null==D?new kendo.spreadsheet.calc.runtime.CalcError("NAME"):D}]):[]},nameValue:function(e,t,n,i){var o;return e.hasSheet()?o=this.workbook.nameValue(e.print()):(e=e.clone().setSheet(t,!0),o=this.workbook.nameValue(e.print()),null==o&&(o=this.workbook.nameValue(e.name))),o instanceof r&&(o=o.absolute(n,i)),o},getData:function(e,n,i,r,a){var s,l=e instanceof t;return e instanceof o&&(l=this.workbook.nameValue(e.name)instanceof t),s=this.getRefCells(e,!1,n,i,r,a).map(function(e){var t=e.value;return t instanceof kendo.spreadsheet.calc.runtime.Formula&&(t=t.value),t}),l?s[0]:s},onFormula:function(e){var t,n,i,o,a,s=this.workbook.sheetByName(e.sheet),l=e.row,c=e.col,d=e.value,u=s.formula({row:l,col:c});return u===e&&(t=e.arrayFormulaRange,t?(o=d.width,a=d.height,s.forEach(t,function(e,t){var r,l,c;void 0===n&&(n=e,i=t),r=e-n,l=t-i,c=r<a&&l<o?d.get(r,l):new kendo.spreadsheet.calc.runtime.CalcError("N/A"),s._value(e,t,c)})):(d instanceof r&&(d=this.getData(d,e.sheet,l,c),Array.isArray(d)&&(d=d[0]),void 0===d&&(d=null)),d instanceof kendo.spreadsheet.calc.runtime.Matrix&&(d=d.get(0,0)),s._value(l,c,d)),clearTimeout(s._formulaContextRefresh),s._formulaContextRefresh=setTimeout(function(){s.batch(function(){},{layout:!0})},50),!0)}}),s=a.extend({onFormula:function(){return!0}}),e.FormulaContext=a,e.ValidationFormulaContext=s)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/controller.min",["kendo.core.min"],e)}(function(){!function(e){"use strict";function t(e){return e.map(function(e){return'[data-action="'+e+'"]'}).join(",")}var n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_;if(!(e.support.browser.msie&&e.support.browser.version<9)){n=e.jQuery,i=/:alphanum$/,o={up:"up",down:"down",left:"left",right:"right",home:"first-col","ctrl+left":"first-col",end:"last-col","ctrl+right":"last-col","ctrl+up":"first-row","ctrl+down":"last-row","ctrl+home":"first","ctrl+end":"last",pageup:"prev-page",pagedown:"next-page"},r={tab:"next","shift+tab":"previous",enter:"lower","shift+enter":"upper","delete":"clearContents",backspace:"clearContents","shift+:alphanum":"edit","alt+:alphanum":"edit",":alphanum":"edit","ctrl+:alphanum":"ctrl","alt+ctrl+:alphanum":"edit",":edit":"edit"},a={wheel:"onWheel","*+mousedown":"onMouseDown",contextmenu:"onContextMenu","*+mousedrag":"onMouseDrag","*+mouseup":"onMouseUp","*+dblclick":"onDblClick",mousemove:"onMouseMove",touchmove:"onTouchMove",touchend:"onTouchEnd"},s={pageup:"onPageUp",pagedown:"onPageDown",mouseup:"onMouseUp","*+cut":"onCut","*+paste":"onPaste","*+copy":"onCopy"},l={esc:"onEditorEsc",enter:"onEditorBlur","alt+enter":"insertNewline","shift+enter":"onEditorBlur",tab:"onEditorBlur","shift+tab":"onEditorBlur","shift+ctrl+enter":"onEditorArrayFormula"},c=n.extend({focus:"onEditorBarFocus"},l),d=n.extend({focus:"onEditorCellFocus"},l),u={cell:"range",rowheader:"row",columnheader:"column",topcorner:"sheet",autofill:"autofill"},h=t(["cut","copy","paste","insert-left","insert-right","insert-above","insert-below"]),p=t(["unhide-row","unhide-column"]),f=[],g=[],m=[];for(v in o)f.push(v),g.push("shift+"+v);for(v in r)m.push(v);s[f]="onAction",s[g]="onShiftAction",s[m]="onEntryAction",d[f]="onEditorAction",d[g]="onEditorShiftAction",_=e.Class.extend({init:function(t,i){this.view=t,this.workbook(i),this.container=n(t.container),this.clipboardElement=n(t.clipboard),this.cellContextMenu=t.cellContextMenu,this.rowHeaderContextMenu=t.rowHeaderContextMenu,this.colHeaderContextMenu=t.colHeaderContextMenu,this.drawingContextMenu=t.drawingContextMenu,this.scroller=t.scroller,this.tabstrip=t.tabstrip,this.sheetsbar=t.sheetsbar,t.nameEditor.bind("enter",this.onNameEditorEnter.bind(this)),t.nameEditor.bind("cancel",this.onNameEditorCancel.bind(this)),t.nameEditor.bind("select",this.onNameEditorSelect.bind(this)),t.nameEditor.bind("delete",this.onNameEditorDelete.bind(this)),this.editor=t.editor,this.editor.bind("change",this.onEditorChange.bind(this)),this.editor.bind("activate",this.onEditorActivate.bind(this)),this.editor.bind("deactivate",this.onEditorDeactivate.bind(this)),this.editor.bind("update",this.onEditorUpdate.bind(this)),n(t.scroller).on("scroll",this.onScroll.bind(this)),this.listener=new e.spreadsheet.EventListener(this.container,this,a),this._enableEditorEvents(),this.sheetsbar&&(this.sheetsbar.bind("select",this.onSheetBarSelect.bind(this)),this.sheetsbar.bind("reorder",this.onSheetBarReorder.bind(this)),this.sheetsbar.bind("rename",this.onSheetBarRename.bind(this)),this.sheetsbar.bind("remove",this.onSheetBarRemove.bind(this))),this.cellContextMenu.bind("select",this.onContextMenuSelect.bind(this)),this.rowHeaderContextMenu.bind("select",this.onContextMenuSelect.bind(this)),this.colHeaderContextMenu.bind("select",this.onContextMenuSelect.bind(this)),this.drawingContextMenu.bind("select",this.onContextMenuSelect.bind(this)),this.cellContextMenu.element.add(this.rowHeaderContextMenu.element).add(this.colHeaderContextMenu.element).add(this.drawingContextMenu.element).on("contextmenu",!1),this.tabstrip&&(this.tabstrip.bind("action",this.onCommandRequest.bind(this)),this.tabstrip.bind("dialog",this.onDialogRequest.bind(this)))},_enableEditorEvents:function(t){void 0===t||t?(this.keyListener=new e.spreadsheet.EventListener(this.clipboardElement,this,s),this.barKeyListener=new e.spreadsheet.EventListener(this.editor.barElement(),this,c),this.inputKeyListener=new e.spreadsheet.EventListener(this.editor.cellElement(),this,d)):(this.keyListener.destroy(),this.barKeyListener.destroy(),this.inputKeyListener.destroy())},_execute:function(e){var t=this._workbook.execute(e);return"EditCommand"!==e.command||t||this._workbook.trigger("change",{editorClose:!0}),t&&(this._preventNavigation=!0,"error"===t.reason?(this.editor.deactivate(!0),this.view.showError(t,function(){this.activateEditor(!1),this.editor.value(this._lastEditorValue),this.editor._value=this._workbook._inputForRef(this._workbook.activeSheet()._viewActiveCell()),this.editor.select()}.bind(this))):this.view.openDialog(t.reason)),t},_activeTooltip:function(){return""+this._workbook.activeSheet().activeCell().simplify()},onContextMenuSelect:function(e){var t,i=n(e.item).data("action");switch(i){case"cut":t={command:"ToolbarCutCommand",options:{workbook:this._workbook}};break;case"copy":t={command:"ToolbarCopyCommand",options:{workbook:this._workbook}};break;case"paste":t={command:"ToolbarPasteCommand",options:{workbook:this._workbook}};break;case"delete-drawing":t={command:"DeleteDrawingCommand",options:{drawing:this.navigator._sheet._activeDrawing}};break;case"bring-to-front":t={command:"BringToFrontCommand",options:{drawing:this.navigator._sheet._activeDrawing}};break;case"send-to-back":t={command:"SendToBackCommand",options:{drawing:this.navigator._sheet._activeDrawing}};break;case"unmerge":t={command:"MergeCellCommand",options:{value:"unmerge"}};break;case"merge":this.view.openDialog("merge");break;case"hide-row":t={command:"HideLineCommand",options:{axis:"row"}};break;case"hide-column":t={command:"HideLineCommand",options:{axis:"column"}};break;case"unhide-row":t={command:"UnHideLineCommand",options:{axis:"row"}};break;case"unhide-column":t={command:"UnHideLineCommand",options:{axis:"column"}};break;case"delete-row":t={command:"DeleteRowCommand"};break;case"delete-column":t={command:"DeleteColumnCommand"}}t&&this._execute(t)},onSheetBarRemove:function(e){var t=this._workbook.sheetByName(e.name);t&&this._workbook.removeSheet(t)},destroy:function(){this.listener.destroy(),this._enableEditorEvents(!1),this.keyListener.destroy(),this.inputKeyListener.destroy()},onSheetBarSelect:function(e){var t,n=this._workbook;if(e.isAddButton){if(this._workbook.trigger("insertSheet"))return;t=n.insertSheet()}else t=n.sheetByName(e.name);if(n.activeSheet().name()!==t.name()){if(this._workbook.trigger("selectSheet",{sheet:t}))return;this.editor.canInsertRef(!1)||this.editor.deactivate(),n.activeSheet(t)}},onSheetBarReorder:function(e){var t=this._workbook.sheetByIndex(e.oldIndex);this._workbook.moveSheetToIndex(t,e.newIndex),this._workbook.activeSheet(t)},onSheetBarRename:function(e){var t=this._workbook.sheetByIndex(e.sheetIndex);return this._workbook.sheetByName(e.name)?void this.view.showError({reason:"error",type:"duplicateSheetName"}):(this._workbook.renameSheet(t,e.name),void this.clipboardElement.focus())},sheet:function(e){this.navigator=e.navigator(),this.axisManager=e.axisManager()},workbook:function(e){this._workbook=e,this.clipboard=e.clipboard(),e.bind("commandRequest",this.onCommandRequest.bind(this))},refresh:function(){var e,t,n=this.editor,i=this._workbook,o=i.activeSheet();this._viewPortHeight=this.view.scroller.clientHeight,this.navigator.height(this._viewPortHeight),n.isActive()||this.isEditorDisabled||(n.enable(o.selection().enable()!==!1),this.resetEditorValue()),e=o.selection()._ref.simplify(),t=this._workbook.nameForRef(e,o.name()),this.view.nameEditor.value(t.name)},onScroll:function(){this.view.render({scroll:!0})},onWheel:function(e){var t=e.originalEvent.deltaX,n=e.originalEvent.deltaY;1===e.originalEvent.deltaMode&&(t*=10,n*=10),this.scrollWith(t,n),e.preventDefault()},onTouchMove:function(){this.view.forceScrollerStackingOrder(2)},onTouchEnd:function(){this.view.forceScrollerStackingOrder(1)},onAction:function(e,t){var n=this._workbook.activeSheet();n._activeDrawing=null,this.navigator.moveActiveCell(o[t]),e.preventDefault()},onPageUp:function(){this.scrollDown(-this._viewPortHeight)},onPageDown:function(){this.scrollDown(this._viewPortHeight)},onEntryAction:function(e,t){var n,o,a,s,l=this._workbook.activeSheet();if(e.mod){switch(n=!0,o=String.fromCharCode(e.keyCode)){case"A":l._activeDrawing=null,this.navigator.selectAll();break;case"Y":this._workbook.undoRedoStack.redo();break;case"Z":this._workbook.undoRedoStack.undo();break;default:n=!1}n&&e.preventDefault()}else if(a=l.selection().enable()===!1,s=":edit"!==t,"delete"==t||"backspace"==t)l._activeDrawing?this._execute({command:"DeleteDrawingCommand",options:{drawing:l._activeDrawing}}):a||this._execute({command:"ClearContentCommand"}),e.preventDefault();else if(i.test(t)||!s){if(l._activeDrawing=null,a)return void e.preventDefault();s&&this.editor.value(""),this.activateEditor(s)}else this.navigator.navigateInSelection(r[t]),e.preventDefault()},onShiftAction:function(e,t){this.navigator.modifySelection(o[t.replace("shift+","")],this.appendSelection),e.preventDefault()},onMouseMove:function(e){var t,n=this._workbook.activeSheet();n.resizingInProgress()||n.selectionInProgress()||(t=this.objectAt(e),"columnresizehandle"===t.type||"rowresizehandle"===t.type?n.positionResizeHandle(t.ref):n.removeResizeHandle(),n._renderComment("cell"==t.type?t.ref:null))},onMouseDown:function(t){var n,i,o=this.objectAt(t);if(o.pane&&(this.originFrame=o.pane),this._startResizingDrawing(t,o))return void t.stopPropagation();if(n=this._workbook.activeSheet(),i=this.container.closest('[data-role="window"]'),i.length&&(i=e.widgetInstance(i), +i&&i.options.modal&&t.stopPropagation()),n._activeDrawing=null,"drawing"===o.type)return n._activeDrawing=o.drawing,o.copy=o.drawing.clone(),o.startBox=n.drawingBoundingBox(o.copy),n.startDragging(o),n.triggerChange({dragging:!0}),void t.preventDefault();if("editor"===o.type)return this.onEditorEsc(),this.openCustomEditor(),void t.preventDefault();if(this.editor.canInsertRef(!1)&&o.ref)return this._workbook.activeSheet()._setFormulaSelections(this.editor.highlightedRefs()),this.navigator.startSelection(o.ref,this._selectionMode,this.appendSelection,t.shiftKey,this.view),void t.preventDefault();if(this._preventNavigation=!1,this.editor.deactivate(),!this._preventNavigation){if("columnresizehandle"===o.type||"rowresizehandle"===o.type)return n.startResizing({x:o.x,y:o.y}),void t.preventDefault();if("filtericon"===o.type)return this.openFilterMenu(t),void t.preventDefault();this._selectionMode=u[o.type],this.appendSelection=t.mod,this.navigator.startSelection(o.ref,this._selectionMode,this.appendSelection,t.shiftKey,this.view)}},_startResizingDrawing:function(e){var t,i,o,r,a=n(e.target).closest(".k-spreadsheet-drawing-handle");if(a.length)return t=this.translateCoords(e),i=a.data("direction"),o=this._workbook.activeSheet(),r=o._activeDrawing,o.startDragging({pane:this.originFrame,drawing:r,copy:r.clone(),startBox:o.drawingBoundingBox(r),resize:i,startX:t.x,startY:t.y}),!0},onContextMenu:function(t){var n,i,o,r,a,s=this._workbook.activeSheet();t.preventDefault(),s.resizingInProgress()||s.draggingInProgress()||(this.cellContextMenu.close(),this.colHeaderContextMenu.close(),this.rowHeaderContextMenu.close(),this.drawingContextMenu.close(),i=this.objectAt(t),"columnresizehandle"!==i.type&&"rowresizehandle"!==i.type&&(i.ref?this.navigator.selectForContextMenu(i.ref,u[i.type]):"drawing"==i.type&&this.navigator.selectDrawingForContextMenu(i.drawing),o=this.navigator._sheet.select()instanceof e.spreadsheet.UnionRef,r=!1,a=!1,"columnheader"==i.type?(n=this.colHeaderContextMenu,r=!o&&this.axisManager.selectionIncludesHiddenColumns()):"rowheader"==i.type?(n=this.rowHeaderContextMenu,r=!o&&this.axisManager.selectionIncludesHiddenRows()):"drawing"==i.type?n=this.drawingContextMenu:(n=this.cellContextMenu,a=this.navigator.selectionIncludesMergedCells()),n.element.find(h).toggle(!o),n.element.find(p).toggle(r),n.element.find("[data-action=unmerge]").toggle(a),setTimeout(function(){n.open(t.pageX,t.pageY)})))},prevent:function(e){e.preventDefault()},constrainResize:function(e,t){var n=this._workbook.activeSheet(),i=n.resizeHandlePosition();return!i||"outside"===e||"topcorner"===e||t.col<i.col||t.row<i.row},_dragDrawing:function(e){var t,n,i,o,r=this._workbook.activeSheet(),a=r.draggingInProgress();return!!a&&(t=this.translateCoords(e),n=a.drawing,i=t.x-a.startX,o=t.y-a.startY,"SE"==a.resize?a.aspect?Math.abs(i)>Math.abs(o)?(n.width=Math.max(a.copy.width+i,20),n.height=n.width/a.aspect):(n.height=Math.max(a.copy.height+o,20),n.width=n.height*a.aspect):(n.width=Math.max(a.copy.width+i,20),n.height=Math.max(a.copy.height+o,20)):"E"==a.resize?n.width=Math.max(a.copy.width+i,20):"S"==a.resize?n.height=Math.max(a.copy.height+o,20):"N"==a.resize?a.copy.height-o>20&&(n.height=a.copy.height-o,n.offsetY=a.copy.offsetY+o):"W"==a.resize?a.copy.width-i>20&&(n.width=a.copy.width-i,n.offsetX=a.copy.offsetX+i):"NE"==a.resize?(n.width=Math.max(a.copy.width+i,20),a.copy.height-o>20&&(n.height=a.copy.height-o,n.offsetY=a.copy.offsetY+o)):"SW"==a.resize?(n.height=Math.max(a.copy.height+o,20),a.copy.width-i>20&&(n.width=a.copy.width-i,n.offsetX=a.copy.offsetX+i)):"NW"==a.resize?(a.copy.height-o>20&&(n.height=a.copy.height-o,n.offsetY=a.copy.offsetY+o),a.copy.width-i>20&&(n.width=a.copy.width-i,n.offsetX=a.copy.offsetX+i)):(n.offsetX=a.copy.offsetX+i,n.offsetY=a.copy.offsetY+o),r.triggerChange({dragging:!0}),!0)},onMouseDrag:function(e){var t,n,i,o;if("sheet"!==this._selectionMode&&(t={clientX:e.clientX,clientY:e.clientY},n=this._workbook.activeSheet(),!this._dragDrawing(e))){if(i=this.objectAt(t),n.resizingInProgress())return void(this.constrainResize(i.type,i.ref)||n.resizeHintPosition({x:i.x,y:i.y}));if("outside"===i.type)return void this.startAutoScroll(i);this.originFrame===i.pane?this.selectToLocation(t):(o=this.originFrame._grid,i.x>o.right&&this.scrollLeft(),i.y>o.bottom&&this.scrollTop(),i.y<o.top||i.x<o.left?this.startAutoScroll(i,t):this.selectToLocation(t)),e.preventDefault()}},onMouseUp:function(e){var t,n,i,o=this._workbook.activeSheet();if(o.completeResizing(),o.completeDragging(),this.navigator.completeSelection(),this.stopAutoScroll(),t=this.editor.activeEditor()){for(n=e.target;n;){if(n===t.element[0])return;n=n.parentNode}i=this.objectAt(e),i&&i.ref&&t.canInsertRef(!1)&&(t.refAtPoint(o),o._setFormulaSelections(t.highlightedRefs()))}},onDblClick:function(e){var t,n=this.objectAt(e),i=this._workbook.activeSheet().selection().enable()===!1;"cell"!==n.type||i||(t=this._workbook.activeSheet().selection(),this.activateEditor(!t.value()&&!t.formula()),this.onEditorUpdate())},onCut:function(e){if(e){var t=this.clipboardElement.find("table.kendo-clipboard-"+this.clipboard._uid).detach();this.clipboardElement.append(t.clone(!1)),setTimeout(function(){this.clipboardElement.empty().append(t)}.bind(this))}this._execute({command:"CutCommand",options:{workbook:this.view._workbook,event:e.originalEvent||e}})},clipBoardValue:function(){return this.clipboardElement.html()},_pasteImage:function(e){var t=this,n=e.getAsFile(),i=new window.Image;i.src=window.URL.createObjectURL(n),i.onload=function(){t._execute({command:"InsertImageCommand",options:{blob:n,width:i.width,height:i.height}})},setTimeout(function(){window.URL.revokeObjectURL(i.src)},10)},onPaste:function(t){var n,i,o,r,a,s,l=this,c="",d="";if(l.clipboard.menuInvoked=void 0===t,t){if(n=t.originalEvent.clipboardData,!n||!n.getData)return s=l.clipboardElement.find("table.kendo-clipboard-"+l.clipboard._uid).detach(),l.clipboardElement.empty(),void setTimeout(function(){var e=l.clipboardElement.html(),n=window.clipboardData.getData("Text").trim();(e||n)&&(l.clipboard.external({html:e,plain:n}),l.clipboardElement.empty().append(s),l._execute({command:"PasteCommand",options:{workbook:l.view._workbook,event:t.originalEvent||t}}),l.clipboard.menuInvoked=!0)});if(t.preventDefault(),i=!1,o=!1,window.DOMStringList&&n.types instanceof window.DOMStringList?(i=n.types.contains("text/html"),o=n.types.contains("text/plain")):(i=/text\/html/.test(n.types),o=/text\/plain/.test(n.types)),i&&(c=n.getData("text/html")),o&&(d=n.getData("text/plain").trim()),!i&&!o&&n.items&&n.items.length)for(r=0;r<n.items.length;++r)if(a=n.items[r],"file"==a.kind&&/^image\/(?:png|jpe?g|gif)$/i.test(a.type))return l._pasteImage(a)}else{if(e.support.browser.msie)return l.clipboardElement.focus().select(),void document.execCommand("paste");l.clipboard.menuInvoked=!0}(c||d)&&(l.clipboard.external({html:c,plain:d}),l._execute({command:"PasteCommand",options:{workbook:l.view._workbook,event:t.originalEvent||t}}))},onCopy:function(e){this.clipboard.menuInvoked=void 0===e,this._execute({command:"CopyCommand",options:{workbook:this.view._workbook,event:e.originalEvent||e}})},scrollTop:function(){this.scroller.scrollTop=0},scrollLeft:function(){this.scroller.scrollLeft=0},scrollDown:function(e){this.scroller.scrollTop+=e},scrollRight:function(e){this.scroller.scrollLeft+=e},scrollWith:function(e,t){this.scroller.scrollTop+=t,this.scroller.scrollLeft+=e},translateCoords:function(e){var t=this.container[0].getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}},objectAt:function(e,t){if(e)return e=this.translateCoords(e),this.view.objectAt(e.x,e.y,t)},selectToLocation:function(e){var t=this.objectAt(e,!0);t.pane&&t.ref&&(this.extendSelection(t),this.lastKnownCellLocation=e,this.originFrame=t.pane),this.stopAutoScroll()},extendSelection:function(e){this.navigator.extendSelection(e.ref,this._selectionMode,this.appendSelection)},autoScroll:function(){var e=this._autoScrollTarget.x,t=this._autoScrollTarget.y,n=this.originFrame._grid,i=this.view.scroller,o=8,r=i.scrollLeft,a=i.scrollTop;e<n.left&&this.scrollRight(-o),e>n.right&&this.scrollRight(o),t<n.top&&this.scrollDown(-o),t>n.bottom&&this.scrollDown(o),a===i.scrollTop&&r===i.scrollLeft?this.selectToLocation(this.finalLocation):this.extendSelection(this.objectAt(this.lastKnownCellLocation))},startAutoScroll:function(e,t){this._scrollInterval||(this._scrollInterval=setInterval(this.autoScroll.bind(this),50)),this.finalLocation=t||this.lastKnownCellLocation,this._autoScrollTarget=e},stopAutoScroll:function(){clearInterval(this._scrollInterval),this._scrollInterval=null},openCustomEditor:function(){this.view.openCustomEditor()},openFilterMenu:function(e){var t=this.objectAt(e),n=this._workbook.activeSheet(),i=n.filterColumn(t.ref),o=this.view.createFilterMenu(i);o.bind("action",this.onCommandRequest.bind(this)),o.bind("action",o.close.bind(o)),o.openFor(e.target)},_saveEditorValue:function(e){var t=this.editor._range.sheet(),n=this.editor.value();this._workbook.activeSheet()!==t&&(this._workbook.activeSheet()._setFormulaSelections(),this._workbook.activeSheet(t)),t.isInEditMode(!1),this._lastEditorValue=n,this._execute({command:"EditCommand",options:{value:n,arrayFormula:e}})},onEditorChange:function(){this._saveEditorValue(!1)},onEditorArrayFormula:function(){this._saveEditorValue(!0),this.editor.deactivate(!0)},onEditorActivate:function(){var e=this._workbook,t=e.activeSheet();t._setFormulaSelections(this.editor.highlightedRefs()),t.isInEditMode(!0)},onEditorDeactivate:function(){var e=this._workbook.activeSheet();e.isInEditMode(!1),e._setFormulaSelections([])},onEditorUpdate:function(){this._workbook.activeSheet()._setFormulaSelections(this.editor.highlightedRefs())},onEditorBarFocus:function(){var e=this._workbook.activeSheet().selection().enable()===!1;e||this.editor.activate({range:this._workbook.activeSheet().selection(),rect:this.view.activeCellRectangle(),tooltip:this._activeTooltip()})},onEditorCellFocus:function(){this.editor.scale()},onEditorEsc:function(){this.resetEditorValue(),this.editor.deactivate(),this.clipboardElement.focus()},insertNewline:function(e){e.preventDefault(),this.editor.insertNewline()},onEditorBlur:function(e,t){this.editor.isFiltered()||(this._preventNavigation=!1,this.editor.deactivate(),this._preventNavigation||(this.clipboardElement.focus(),this.navigator.navigateInSelection(r[t])))},onEditorAction:function(e,t){var n=this.editor,i=this._workbook.activeSheet();this._casualEditing&&/^(?:up|right|down|left)$/.test(t)?(this.deactivateEditor(),this.navigator.moveActiveCell(o[t]),e.preventDefault()):n.canInsertRef(!0)&&(this.navigator.moveActiveCell(o[t]),n.activeEditor().refAtPoint(i),i._setFormulaSelections(n.highlightedRefs()),e.preventDefault())},onEditorShiftAction:function(e,t){var n=this.editor,i=this._workbook.activeSheet();n.canInsertRef(!0)&&(this.navigator.modifySelection(o[t.replace("shift+","")],this.appendSelection),n.activeEditor().refAtPoint(i),i._setFormulaSelections(n.highlightedRefs()),e.preventDefault())},resetEditorValue:function(){var e=this._workbook.activeSheet(),t=e.activeCell(),n=this._workbook._inputForRef(t),i=e.range(t).intersectingArrayFormula();i&&(n="="+i.formula),this.editor.value(n,!!i)},activateEditor:function(e){this._casualEditing=e,this.editor.activate({range:this._workbook.activeSheet().selection(),rect:this.view.activeCellRectangle(),tooltip:this._activeTooltip()}).focus()},deactivateEditor:function(){this.view.editor.deactivate()},onCommandRequest:function(e){e.command?this._execute(e):this._workbook.undoRedoStack[e.action]()},onDialogRequest:function(e){var t={pdfExport:this._workbook.options.pdf,excelExport:this._workbook.options.excel};e.options?n.extend(!0,e.options,t):e.options=t,this.view.openDialog(e.name,e.options)},onNameEditorEnter:function(){var t,n=this._workbook,i=n.activeSheet(),o=this.view.nameEditor.value(),r=e.spreadsheet.calc.parseReference(o,!0)||n.nameValue(o);return r instanceof e.spreadsheet.Ref?(r.sheet&&r.sheet.toLowerCase()!=i.name().toLowerCase()&&(t=n.sheetByName(r.sheet),t&&(n.activeSheet(t),i=t)),void i.range(r).select()):(r=i.selection()._ref.clone().simplify().setSheet(i.name(),!0),this._execute({command:"DefineNameCommand",options:{name:o,value:r}}),void this.clipboardElement.focus())},onNameEditorCancel:function(){this.clipboardElement.focus()},onNameEditorSelect:function(t){var n,i=t.name,o=this._workbook,r=o.activeSheet(),a=o.nameValue(i);return a instanceof e.spreadsheet.Ref?(a.sheet&&a.sheet.toLowerCase()!=r.name().toLowerCase()&&(n=o.sheetByName(a.sheet),n&&(o.activeSheet(n),r=n)),void r.range(a).select()):void this.clipboardElement.focus()},onNameEditorDelete:function(e){this._execute({command:"DeleteNameCommand",options:{name:e.name}}),this.clipboardElement.focus()}}),e.spreadsheet.Controller=_}}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/view.min",["kendo.core.min","kendo.menu.min","spreadsheet/sheetsbar.min","util/main.min"],e)}(function(){!function(e){function t(e){var t,n=window.getSelection();n.removeAllRanges(),t=document.createRange(),t.selectNodeContents(e),n.addRange(t)}function n(e,t){var n=e.trs[t].children;return n[n.length-2]}function i(e,t){var n=e.trs[t-1],i=e.trs[t].children.length-1;if(n&&i>=0)return n.children[i]}function o(e){return(e.size||1)+"px solid "+(e.color||"#000")}function r(e){return/:\/\//.test(e)||(e="http://"+e),e}function a(t,n,i,a){function s(t){var i,o=n.link;return o||"object"==typeof n.value&&(o=n.value.link),o?(i={textDecoration:"none"},n.color&&(i.color=n.color),n.underline&&(i.textDecoration="underline"),e.dom.element("a",{href:r(o),style:i,target:"_blank"},t?[t]:[])):t}var l,c,d,u,h,p,f,g,m,v,_,b,w=null!=n.value||null!=n.validation&&!n.validation.value||n.background||n.merged||n.comment;if(i||w){if(l={},c=n.background,c&&(d=c,a&&(d=e.parseColor(d).toHSV(),d.v*=.9,d=d.toCssRgba()),d=o({color:d}),l.outline=d),c&&(l.backgroundColor=c),n.color&&(l.color=n.color),n.fontFamily&&(l.fontFamily=n.fontFamily),n.underline&&(l.textDecoration="underline"),n.italic&&(l.fontStyle="italic"),n.textAlign&&(l.textAlign=n.textAlign),n.bold&&(l.fontWeight="bold"),n.fontSize&&(l.fontSize=n.fontSize+"px"),n.wrap===!0?(l.whiteSpace="pre-wrap",l.overflowWrap="break-word",l.wordWrap="break-word"):(l.whiteSpace="pre",l.overflowWrap="normal",l.wordWrap="normal"),l.left=n.left+1+"px",l.top=n.top+1+"px",l.width=n.width-1+"px",l.height=n.height-1+"px",u=n.value,h=typeof u,p=n.format,p||"number"!=h||u==Math.floor(u)||(p="0.##############"),p&&null!=u?(u=e.spreadsheet.formatting.format(u,p),u.__dataType&&(h=u.__dataType)):null!==u&&void 0!==u&&(u=e.dom.text(u)),!l.textAlign)switch(h){case"number":case"date":case"percent":case"currency":l.textAlign="right";break;case"boolean":l.textAlign="center"}return e.spreadsheet.draw.applyIndent(n,l),f=[x.cell],i&&f.push(i),n.enable===!1&&f.push("k-state-disabled"),n.merged&&f.push("k-spreadsheet-merged-cell"),n.comment&&f.push("k-spreadsheet-has-comment"),g=n.verticalAlign||"bottom",u=g&&u?e.dom.element("div",{className:"k-vertical-align-"+g},[s(u)]):s(u),m=u?[u]:[],v={style:l},_=n.validation,_&&!_.value&&(m.push(e.dom.element("span",{className:"k-dirty"})),f.push("k-dirty-cell"),v.title=_.message),v.className=f.join(" "),b=e.dom.element("div",v,m),t.push(b),b}}function s(t,r,a){var s,l,c,d,u,h,p,f={};if(a.background&&(f.backgroundColor=a.background),a.color&&(f.color=a.color),a.fontFamily&&(f.fontFamily=a.fontFamily),a.underline&&(f.textDecoration="underline"),a.italic&&(f.fontStyle="italic"),a.textAlign&&(f.textAlign=a.textAlign),a.verticalAlign&&(f.verticalAlign="center"===a.verticalAlign?"middle":a.verticalAlign),a.bold&&(f.fontWeight="bold"),a.fontSize&&(f.fontSize=a.fontSize+"px"),a.wrap===!0&&(f.whiteSpace="pre-wrap"),a.borderRight?f.borderRight=o(a.borderRight):a.background&&(f.borderRightColor=a.background),a.borderBottom?f.borderBottom=o(a.borderBottom):a.background&&(f.borderBottomColor=a.background),s=a.value,l=typeof s,c=a.format,c||"number"!=l||s==Math.floor(s)||(c="0.##############"),c&&null!=s&&(s=e.spreadsheet.formatting.format(s,c),s.__dataType&&(l=s.__dataType)),!f.textAlign)switch(l){case"number":case"date":case"percent":case"currency":f.textAlign="right";break;case"boolean":f.textAlign="center"}return d=null,a.enable===!1&&(d="k-state-disabled"),u=t.addCell(r,s,f,d,a.validation),a.borderLeft?(p=n(t,r),h=o(a.borderLeft),p&&h&&(p.attr.style.borderRight=h)):a.background&&(f.borderLeftColor=a.background),a.borderTop?(p=i(t,r),h=o(a.borderTop),p&&h&&(p.attr.style.borderBottom=h)):a.background&&(f.borderTopColor=a.background),u}function l(e,t,n){return e>=t&&e<=n}function c(t){["N","NE","E","SE","S","SW","W","NW"].forEach(function(n){t.push(e.dom.element("div",{className:"k-spreadsheet-drawing-handle "+n,"data-direction":n}))})}var d,u,h,p,f,g,m,v,_,b,w,k,y,x,C;e.support.browser.msie&&e.support.browser.version<9||(d=e.jQuery,u=e.spreadsheet.CellRef,h=".",p=7,f=20,g={view:"k-spreadsheet-view",fixedContainer:"k-spreadsheet-fixed-container",editContainer:"k-spreadsheet-edit-container",scroller:"k-spreadsheet-scroller",viewSize:"k-spreadsheet-view-size",clipboard:"k-spreadsheet-clipboard",cellEditor:"k-spreadsheet-cell-editor",barEditor:"k-spreadsheet-editor",topCorner:"k-spreadsheet-top-corner",filterHeadersWrapper:"k-filter-wrapper",filterRange:"k-filter-range",filterButton:"k-spreadsheet-filter",filterButtonActive:"k-state-active",horizontalResize:"k-horizontal-resize",verticalResize:"k-vertical-resize",icon:"k-icon",iconFilterDefault:"k-i-arrow-60-down",sheetsBar:"k-spreadsheet-sheets-bar",sheetsBarActive:"k-spreadsheet-sheets-bar-active",sheetsBarInactive:"k-spreadsheet-sheets-bar-inactive",cellContextMenu:"k-spreadsheet-cell-context-menu",rowHeaderContextMenu:"k-spreadsheet-row-header-context-menu",colHeaderContextMenu:"k-spreadsheet-col-header-context-menu",drawingContextMenu:"k-spreadsheet-drawing-context-menu"},e.spreadsheet.messages.view={nameBox:"Name Box",errors:{openUnsupported:"Unsupported format. Please select an .xlsx file.",shiftingNonblankCells:"Cannot insert cells due to data loss possibility. Select another insert location or delete the data from the end of your worksheet.",insertColumnWhenRowIsSelected:"Cannot insert column when all columns are selected.",insertRowWhenColumnIsSelected:"Cannot insert row when all rows are selected.",filterRangeContainingMerges:"Cannot create a filter within a range containing merges",sortRangeContainingMerges:"Cannot sort a range containing merges",cantSortMultipleSelection:"Cannot sort multiple selection",cantSortNullRef:"Cannot sort empty selection",cantSortMixedCells:"Cannot sort range containing cells of mixed shapes",validationError:"The value that you entered violates the validation rules set on the cell.",cannotModifyDisabled:"Cannot modify disabled cells."},tabs:{home:"Home",insert:"Insert",data:"Data"}},e.spreadsheet.messages.menus={cut:"Cut",copy:"Copy",paste:"Paste",merge:"Merge",unmerge:"Unmerge","delete":"Delete",hide:"Hide",unhide:"Unhide",bringToFront:"Bring to front",sendToBack:"Send to back"},m=e.Class.extend({init:function(){this.cols=[],this.trs=[],this._height=0,this._width=0},addColumn:function(t){this._width+=t;var n=e.dom.element("col",{style:{width:t+"px"}});n.visible=t>0,this.cols.push(n)},addRow:function(t){var n,i=null;i={style:{height:t+"px"}},this._height+=t,n=e.dom.element("tr",i),n.visible=t>0,this.trs.push(n)},addCell:function(t,n,i,o,r){var a,s,l;return null!==n&&void 0!==n||(n=""),n instanceof e.dom.Node||(n=e.dom.text(n)),a=[n],s={style:i},r&&!r.value&&(a.push(e.dom.element("span",{className:"k-dirty"})),o=(o||"")+(o?" ":"")+"k-dirty-cell",s.title=r.message),o&&(s.className=o),l=e.dom.element("td",s,a),this.trs[t].children.push(l),l},toDomTree:function(t,n,i){this.trs=this.trs.filter(function(e){return e.visible});var o=0;return this.cols=this.cols.filter(function(e,t){return e.visible||(this.trs.forEach(function(e){e.children.splice(t-o,1)}),o++),e.visible},this),e.dom.element("table",{style:{left:t+"px",top:n+"px",height:this._height+"px",width:this._width+"px"},className:i},[e.dom.element("colgroup",null,this.cols),e.dom.element("tbody",null,this.trs)])}}),v='<ul class="#=classNames.cellContextMenu#"><li data-action=cut>#: messages.cut #</li><li data-action=copy>#: messages.copy #</li><li data-action=paste>#: messages.paste #</li><li class="k-separator"></li><li data-action=merge>#: messages.merge #</li><li data-action=unmerge>#: messages.unmerge #</li></ul>',_='<ul class="#=classNames.rowHeaderContextMenu#"><li data-action=cut>#: messages.cut #</li><li data-action=copy>#: messages.copy #</li><li data-action=paste>#: messages.paste #</li><li class="k-separator"></li><li data-action="delete-row">#: messages.delete #</li><li data-action="hide-row">#: messages.hide #</li><li data-action="unhide-row">#: messages.unhide #</li></ul>',b='<ul class="#=classNames.colHeaderContextMenu#"><li data-action=cut>#: messages.cut #</li><li data-action=copy>#: messages.copy #</li><li data-action=paste>#: messages.paste #</li><li class="k-separator"></li><li data-action="delete-column">#: messages.delete #</li><li data-action="hide-column">#: messages.hide #</li><li data-action="unhide-column">#: messages.unhide #</li></ul>',w='<ul class="#=classNames.drawingContextMenu#"><li data-action="bring-to-front">#: messages.bringToFront #</li><li data-action="send-to-back">#: messages.sendToBack #</li><li class="k-separator"></li><li data-action="delete-drawing">#: messages.delete #</li></ul>',e.spreadsheet.ContextMenu=e.ui.ContextMenu,k=e.template('<div class="#=classNames.view#"><div class="#=classNames.fixedContainer#"></div><div class="#=classNames.scroller#"><div class="#=classNames.viewSize#"></div></div><div tabindex="0" class="#=classNames.clipboard#" contenteditable=true></div><div class="#=classNames.cellEditor#"></div></div><div class="#=classNames.sheetsBar#"></div>'+v+_+b+w),y=e.Class.extend({init:function(t,n){var i,o=y.classNames;this.element=t,this.options=d.extend(!0,{messages:e.spreadsheet.messages.view},this.options,n),this._chrome(),this._dialogs=[],t.append(k({classNames:o,messages:e.spreadsheet.messages.menus})),this._formulaInput(),this.wrapper=t.find(h+o.view),this.container=t.find(h+o.fixedContainer)[0],this.scroller=t.find(h+o.scroller)[0],this.clipboard=t.find(h+o.clipboard),this.viewSize=d(this.scroller.firstChild),this.tree=new e.dom.Tree(this.container),this.clipboardContents=new e.dom.Tree(this.clipboard[0]),this.editor=new e.spreadsheet.SheetEditor(this),this._sheetsbar(),i={target:t,animation:!1,showOn:"never"},this.cellContextMenu=new e.spreadsheet.ContextMenu(t.find(h+o.cellContextMenu),i),this.colHeaderContextMenu=new e.spreadsheet.ContextMenu(t.find(h+o.colHeaderContextMenu),i),this.rowHeaderContextMenu=new e.spreadsheet.ContextMenu(t.find(h+o.rowHeaderContextMenu),i),this.drawingContextMenu=new e.spreadsheet.ContextMenu(t.find(h+o.drawingContextMenu),i)},enableClipboard:function(e){this.isClipboardDeactivated=!e,e?this.clipboard.attr("contenteditable",e):this.clipboard.removeAttr("contenteditable")},_resize:function(){var t=d(this.formulaBar.element).parents(".k-spreadsheet-action-bar"),n=e._outerHeight,i=this.tabstrip?n(this.tabstrip.element):0,o=t?n(t):0,r=this.sheetsbar?n(this.sheetsbar.element):0;this.wrapper.height(this.element.height()-(i+o+r)),this.tabstrip&&this.tabstrip.quickAccessAdjust()},_chrome:function(){var t,n=d("<div class='k-spreadsheet-action-bar' />").prependTo(this.element),i=d("<div class='k-spreadsheet-name-editor' />").appendTo(n);this.nameEditor=new e.spreadsheet.NameEditor(i,this.options),t=d("<div />").appendTo(n),this.formulaBar=new e.spreadsheet.FormulaBar(t),this.options.toolbar&&this._tabstrip()},_formulaInput:function(){var t=this.element.find(h+y.classNames.cellEditor);this.formulaInput=new e.spreadsheet.FormulaInput(t,{autoScale:!0})},_sheetsbar:function(){if(this.options.sheetsbar){var t=d.extend(!0,{openDialog:this.openDialog.bind(this)},this.options.sheetsbar);this.sheetsbar=new e.spreadsheet.SheetsBar(this.element.find(h+y.classNames.sheetsBar),t)}},_tabstrip:function(){var t,n=this.options.messages.tabs,i=d.extend(!0,{home:!0,insert:!0,data:!0},this.options.toolbar),o=[];this.tabstrip&&(this.tabstrip.destroy(),this.element.children(".k-tabstrip").remove());for(t in i)(i[t]===!0||i[t]instanceof Array)&&o.push({id:t,text:n[t],content:""});this.tabstrip=new e.spreadsheet.TabStrip(d("<div />").prependTo(this.element),{animation:!1,dataTextField:"text",dataContentField:"content",dataSource:o,toolbarOptions:i,view:this}),this.tabstrip.select(0)},_executeCommand:function(e){this._sheet.trigger("commandRequest",e)},workbook:function(e){this._workbook=e,e._view=this,this.nameEditor._workbook=e},sheet:function(e){this._sheet=e},activeCellRectangle:function(){return this.cellRectangle(this._sheet._viewActiveCell())},_rectangle:function(e,t){return e._grid.boundingRectangle(t.toRangeRef())},isColumnResizer:function(e,t,n){return e-=this._sheet._grid._headerWidth,t._grid.columns.frozen||(e+=this.scroller.scrollLeft),n=this._sheet._grid._columns.locate(0,n,function(t){return Math.abs(e-t)<=p/2}),null===n||this._sheet.isHiddenColumn(n)?null:n},isRowResizer:function(e,t,n){return e-=this._sheet._grid._headerHeight,t._grid.rows.frozen||(e+=this.scroller.scrollTop),n=this._sheet._grid._rows.locate(0,n,function(t){return Math.abs(e-t)<=p/2}),null===n||this._sheet.isHiddenRow(n)?null:n},isFilterIcon:function(t,n,i,o){var r=this,a=i._grid,s=a.rows.frozen?0:r.scroller.scrollTop,l=a.columns.frozen?0:r.scroller.scrollLeft;return t-=r._sheet._grid._headerWidth-l,n-=r._sheet._grid._headerHeight-s,e.util.withExit(function(e){r._sheet.forEachFilterHeader(o,function(o){var a=r._rectangle(i,o);i.filterIconRect(a).intersects(t,n)&&e(!0)})})},isAutoFill:function(e,t,n){var i,o=this._sheet.select();return!(o.size>1)&&(e-=this._sheet._grid._headerWidth,t-=this._sheet._grid._headerHeight,n._grid.columns.frozen||(e+=this.scroller.scrollLeft),n._grid.rows.frozen||(t+=this.scroller.scrollTop),i=this._rectangle(n,o),Math.abs(i.right-e)<8&&Math.abs(i.bottom-t)<8)},isEditButton:function(e,t,n){var i,o=this._sheet.activeCellCustomEditor();if(o&&(i=this.activeCellRectangle(),t>=i.top&&t<=i.bottom))return n._editorInLastColumn?e<i.left&&e>=i.left-f:e>i.right&&e<=i.right+f},drawingAt:function(e,t,n){var i,o,r,a,s;for(e-=this._sheet._grid._headerWidth,t-=this._sheet._grid._headerHeight,n._grid.columns.frozen||(e+=this.scroller.scrollLeft),n._grid.rows.frozen||(t+=this.scroller.scrollTop),i=this._sheet,o=this._sheet._drawings,r=o.length;--r>=0;)if(a=o[r],s=i.drawingBoundingBox(a),s.intersects(e,t))return{drawing:a,drx:s.left-e,dry:s.top-t}},objectAt:function(e,t,n){var i,o,r,a,s,l,c,d,h=this._sheet._grid;if(e<0||t<0||e>this.scroller.clientWidth||t>this.scroller.clientHeight)i={type:"outside"};else if(e<h._headerWidth&&t<h._headerHeight)i={type:"topcorner"};else if(o=this.paneAt(e,t)){if(!n&&(r=this.drawingAt(e,t,o)))return{type:"drawing",drawing:r.drawing,drx:r.drx,dry:r.dry,pane:o,startX:e,startY:t};a=o._grid.rows.indexVisible(t,this.scroller.scrollTop),s=o._grid.columns.indexVisible(e,this.scroller.scrollLeft),l="cell",c=new u(a,s),d=this._sheet.selectionInProgress(),this.isAutoFill(e,t,o)?l="autofill":this.isFilterIcon(e,t,o,c)?l="filtericon":!d&&e<h._headerWidth?(l="rowheader",null!==(a=this.isRowResizer(t,o,a))&&(c=new u(a,(-(1/0))),l="rowresizehandle")):!d&&t<h._headerHeight?(l="columnheader",null!==(s=this.isColumnResizer(e,o,s))&&(c=new u((-(1/0)),s),l="columnresizehandle")):this.isEditButton(e,t,o)&&(l="editor"),"cell"==l&&this._sheet.forEachMergedCell(c,function(e){c=e.topLeft}),i={type:l,ref:c}}else i={type:"outside"};return i.pane=o,i.x=e,i.y=t,i},paneAt:function(e,t){return this.panes.filter(function(n){var i=n._grid;return l(t,i.top,i.bottom)&&l(e,i.left,i.right)})[0]},containingPane:function(e){return this.panes.filter(function(t){return!!t._grid.contains(e)})[0]},cellRectangle:function(e){var t=this.containingPane(e)._grid,n=this._sheet._grid.rectangle(e);return n.offset(t.headerWidth-(t.columns.frozen?0:this.scroller.scrollLeft),t.headerHeight-(t.rows.frozen?0:this.scroller.scrollTop))},refresh:function(e){var t,n,i=this._sheet;this.tabstrip&&this.tabstrip.refreshTools(i.range(i.activeCell())),e.sheetSelection&&this.sheetsbar&&this.sheetsbar.renderSheets(this._workbook.sheets(),this._workbook.sheetIndex(this._sheet)),this._resize(),this.viewSize[0].style.height=i._grid.totalHeight()+"px",this.viewSize[0].style.width=i._grid.totalWidth()+"px",e.layout&&(t=i.frozenColumns(),n=i.frozenRows(),this.panes=[this._pane(n,t)],t>0&&this.panes.push(this._pane(n,0,null,t)),n>0&&this.panes.push(this._pane(0,t,n,null)),n>0&&t>0&&this.panes.push(this._pane(0,0,n,t))),e.filter&&this._destroyFilterMenu(),e.activeCell&&(this._focus=i.activeCell().toRangeRef())},createFilterMenu:function(t){var n,i,o,r,a,s;return this._filterMenu&&this._filterMenu.options.column==t?this._filterMenu:(this._destroyFilterMenu(),n=this._sheet,i=n.filter().ref,o=new e.spreadsheet.Range(i,n),r=d("<div />").appendTo(this.element),a={column:t,range:o},s=new e.spreadsheet.FilterMenu(r,a),this._filterMenu=s,s)},selectClipboardContents:function(){this.isClipboardDeactivated||(this.clipboard.focus(),t(this.clipboard[0]))},scrollIntoView:function(e){var t=!1,n=this.containingPane(e)._grid,i=n.scrollBoundaries(e),o=this.scroller,r=n.rows.frozen?0:o.scrollTop,a=n.columns.frozen?0:o.scrollLeft;return i.top<r&&(t=!0,o.scrollTop=i.scrollTop),i.bottom>r&&(t=!0,o.scrollTop=i.scrollBottom),i.left<a&&(t=!0,o.scrollLeft=i.scrollLeft),i.right>a&&(t=!0,o.scrollLeft=i.scrollRight),t},_destroyDialog:function(){this._dialogs.pop()},openCustomEditor:function(){var e=this,t=e._sheet.activeCell().first(),n=e._sheet.activeCellCustomEditor(),i=e._sheet.range(t);n.edit({range:i,rect:e.activeCellRectangle(),view:this,validation:this._sheet.validation(t),callback:function(t,n){e._executeCommand({command:"EditCommand",options:{operatingRange:i,property:n?"input":"value",value:t}})}})},openDialog:function(t,n){var i=this._sheet;return i.withCultureDecimals(function(){var o,r,a=e.spreadsheet.dialogs.create(t,n);if(a)return a.bind("action",this._executeCommand.bind(this)),a.bind("deactivate",this._destroyDialog.bind(this)),this._dialogs.push(a),o=i.activeCell(),r=new e.spreadsheet.Range(o,i),a.open(r),a}.bind(this))},showError:function(t,n){var i,o=this.options.messages.errors,r=function(t){var n=t.sender.dialog().element;n.find(".k-button:first").focus(),n.find(".k-button, input").on("keydown",function(n){n.keyCode==e.keys.ESC&&t.sender.close()})},a=function(e){var t=e.sender;this.selectClipboardContents(),t._retry&&n&&n()}.bind(this);e.spreadsheet.dialogs.registered(t.type)?(i={close:a},"validationError"===t.type&&(i=d.extend(i,{title:t.title||"Error",text:t.body?t.body:o[t.type],activate:r})),this.openDialog(t.type,i)):this.openDialog("message",{title:t.title||"Error",text:t.body?t.body:o[t.type],activate:r,close:a})},destroy:function(){this._dialogs.forEach(function(e){e.destroy()}),this.cellContextMenu.destroy(),this.rowHeaderContextMenu.destroy(),this.colHeaderContextMenu.destroy(),this.drawingContextMenu.destroy(),this.cellContextMenu=this.rowHeaderContextMenu=this.colHeaderContextMenu=this.drawingContextMenu=null,this.tabstrip&&(this.tabstrip.destroy(),this.tabstrip=null),this._destroyFilterMenu()},_destroyFilterMenu:function(){this._filterMenu&&(this._filterMenu.destroy(),this._filterMenu=void 0,this._filterMenuColumn=void 0)},render:function(t){var n,i,o,r,a,s,l,c;this.element.is(":visible")&&(n=this._sheet,i=n.focus(),i&&this.scrollIntoView(i)||(o=n.resizingInProgress()?n.resizeHandlePosition().col===-(1/0)?"column":"row":"none",this.wrapper.toggleClass(g.editContainer,this.editor.isActive()).toggleClass(g.horizontalResize,"row"==o).toggleClass(g.verticalResize,"column"==o), +r=n._grid,a=this.scroller,s=this.panes.map(function(e){return e.render(a)}),l=e.dom.element("div",{style:{width:r._headerWidth+"px",height:r._headerHeight+"px"},className:y.classNames.topCorner}),s.push(l),n.resizeHandlePosition()&&n.resizeHintPosition()&&s.push(this.renderResizeHint()),this.tree.render(s),c=e.support.scrollbar(),d(this.container).css({width:this.wrapper[0].clientWidth-c,height:this.wrapper[0].clientHeight-c}),this.editor.isActive()?this.editor.toggleTooltip(this.activeCellRectangle()):t.resize||t.scroll||t.comment||n.selectionInProgress()||n.resizingInProgress()||n.draggingInProgress()||n.isInEditMode()||this.renderClipboardContents()))},renderResizeHint:function(){var t,n,i=this._sheet,o=i.resizeHandlePosition(),r=o.col!==-(1/0);return t=r?{height:this.scroller.clientHeight+"px",width:p+"px",left:i.resizeHintPosition().x+"px",top:"0px"}:{height:p+"px",width:this.scroller.clientWidth+"px",top:i.resizeHintPosition().y+"px",left:"0px"},n=C.classNames,e.dom.element("div",{className:n.resizeHint+(r?"":" "+n.resizeHintVertical),style:t},[e.dom.element("div",{className:n.resizeHintHandle}),e.dom.element("div",{className:n.resizeHintMarker})])},renderClipboardContents:function(){var e,t,n,i,o,r=this._sheet,a=r._grid,l=a.normalize(r.select().toRangeRef()),c=this._workbook.clipboard().canCopy();return c.canCopy===!1&&c.multiSelection?(this.clipboardContents.render([]),void this.selectClipboardContents()):(l=r.trim(l),e=new m,t=a.rangeDimensions(l),t.rows.forEach(function(t){e.addRow(t)}),t.columns.forEach(function(t){e.addColumn(t)}),n=r._getMergedCells(l),i=n.primary,o=n.secondary,r.forEach(l,function(t,n,r){var a,c,d=new u(t,n).print();o[d]||(a=s(e,t-l.topLeft.row,r),c=i[d],c&&(a.attr.colspan=c.width(),a.attr.rowspan=c.height()))}),this.clipboardContents.render([e.toDomTree(0,0,"kendo-clipboard-"+this._workbook.clipboard()._uid)]),void this.selectClipboardContents())},_pane:function(e,t,n,i){var o=new C(this._sheet,this._sheet._grid.pane({row:e,column:t,rowCount:n,columnCount:i}));return o.refresh(this.scroller.clientWidth,this.scroller.clientHeight),o},forceScrollerStackingOrder:function(e){d(this.scroller).css("z-index",e)}}),x={cell:"k-spreadsheet-cell",vaxis:"k-spreadsheet-vaxis",haxis:"k-spreadsheet-haxis",vborder:"k-spreadsheet-vborder",hborder:"k-spreadsheet-hborder",rowHeader:"k-spreadsheet-row-header",columnHeader:"k-spreadsheet-column-header",pane:"k-spreadsheet-pane",data:"k-spreadsheet-data",mergedCell:"k-spreadsheet-merged-cell",mergedCellsWrapper:"k-merged-cells-wrapper",activeCell:"k-spreadsheet-active-cell",selection:"k-spreadsheet-selection",selectionWrapper:"k-selection-wrapper",autoFillWrapper:"k-auto-fill-wrapper",single:"k-single",top:"k-top",right:"k-right",bottom:"k-bottom",left:"k-left",resizeHandle:"k-resize-handle",columnResizeHandle:"k-column-resize-handle",rowResizeHandle:"k-row-resize-handle",resizeHint:"k-resize-hint",resizeHintHandle:"k-resize-hint-handle",resizeHintMarker:"k-resize-hint-marker",resizeHintVertical:"k-resize-hint-vertical",selectionHighlight:"k-spreadsheet-selection-highlight",series:["k-series-a","k-series-b","k-series-c","k-series-d","k-series-e","k-series-f"]},C=e.Class.extend({init:function(e,t){this._sheet=e,this._grid=t},refresh:function(e,t){this._grid.refresh(e,t)},isVisible:function(e,t,n){return this._grid.view(e,t).ref.intersects(n)},render:function(t){var n,i,o,r,a,s,l,c,d,u=t.scrollLeft,h=t.scrollTop;return h<0&&(h=0),u<0&&(u=0),n=C.classNames,i=this._sheet,o=this._grid,r=o.view(u,h),this._currentView=r,this._currentRect=this._rectangle(r.ref),this._selectedHeaders=i.selectedHeaders(),a=[],a.push(this.renderData()),i._activeDrawing||a.push(this.renderSelection(t)),a.push(this.renderAutoFill()),a.push(this.renderEditorSelection()),a.push(this.renderFilterHeaders()),o.hasRowHeader&&(s=e.dom.element("div",{className:n.rowHeader,style:{width:o.headerWidth+"px",top:r.rowOffset+"px"}}),a.push(s),i.forEach(r.ref.leftColumn(),function(t){if(!i.isHiddenRow(t)){var n=t+1,r=i.rowHeight(t);s.children.push(e.dom.element("div",{className:this.headerClassName(t,"row"),style:{width:o.headerWidth+"px",height:r+"px"}},[e.dom.element("div",{className:"k-vertical-align-center"},[e.dom.text(n+"")])]))}}.bind(this))),o.hasColumnHeader&&(l=e.dom.element("div",{className:n.columnHeader,style:{top:"0px",left:r.columnOffset+"px",width:this._currentRect.width+"px",height:o.headerHeight+"px"}}),a.push(l),c=0,i.forEach(r.ref.topRow(),function(t,n){if(!i.isHiddenColumn(n)){var r=e.spreadsheet.Ref.display(null,1/0,n),a=i.columnWidth(n);l.children.push(e.dom.element("div",{className:this.headerClassName(n,"col"),style:{position:"absolute",left:c+"px",width:a+"px",height:o.headerHeight+"px"}},[e.dom.element("div",{className:"k-vertical-align-center"},[e.dom.text(r+"")])])),c+=a}}.bind(this))),i.resizeHandlePosition()&&(o.hasColumnHeader||o.hasRowHeader)&&(i.resizeHintPosition()||this.renderResizeHandle(a)),d=[n.pane],o.hasColumnHeader&&d.push(n.top),o.hasRowHeader&&d.push(n.left),e.dom.element("div",{style:o.style,className:d.join(" ")},a)},headerClassName:function(e,t){var n,i,o,r=this._selectedHeaders;return"row"===t?(n=r.rows[e],i=r.allRows):(n=r.cols[e],i=r.allCols),o=n||(r.all?"full":i?"partial":"none"),o&&(o="k-selection-"+o),o},renderData:function(){var t,n,i,o,r=this._sheet,s=this._currentView,l=e.dom.element("div",{className:C.classNames.data,style:{position:"relative",left:s.columnOffset+"px",top:s.rowOffset+"px"}}),c=this._currentRect,d=e.spreadsheet.draw.doLayout(r,s.ref,{forScreen:!0}),u=r._showGridLines;return u&&(t=null,d.xCoords.forEach(function(n){n!==t&&(t=n,l.children.push(e.dom.element("div",{className:x.vaxis,style:{left:n+"px",height:c.height+"px",borderColor:r.gridLinesColor()}})))}),t=null,d.yCoords.forEach(function(n){n!==t&&(t=n,l.children.push(e.dom.element("div",{className:x.haxis,style:{top:n+"px",width:c.width+"px",borderColor:r.gridLinesColor()}})))})),n=e.spreadsheet.draw.Borders(),i=r.activeCell().toRangeRef(),o=i.topLeft,d.cells.forEach(function(t){var c,d,h,p=null,f=t.row+s.ref.topLeft.row,g=t.col+s.ref.topLeft.col;r._activeDrawing?(c=r._activeDrawing.topLeftCell,c&&c.row==f&&c.col==g&&(p="k-spreadsheet-drawing-anchor-cell")):f==o.row&&g==o.col&&(p=[C.classNames.activeCell].concat(this._activeFormulaColor(),this._directionClasses(i)),r.singleCellSelection()&&p.push(C.classNames.single),p=p.join(" ")),n.add(t),a(l.children,t,p,u),t.comment&&r._commentRef&&f==r._commentRef.row&&g==r._commentRef.col&&(d=4,h=e.dom.element("div",{className:"k-tooltip k-spreadsheet-cell-comment",style:{left:t.right+d+"px",top:t.top+"px"}},[e.dom.text(t.comment)]),l.children.push(h))},this),n.vert.forEach(function(t){t.forEach(function(t){if(!t.rendered){t.rendered=!0;var n={left:t.x+"px",top:t.top+"px",height:t.bottom-t.top+1+"px",borderWidth:t.size+"px",borderColor:t.color};1!=t.size&&(n.transform="translateX(-"+(t.size-1)/2+"px)"),l.children.push(e.dom.element("div",{className:x.vborder,style:n}))}})}),n.horiz.forEach(function(t){t.forEach(function(t){if(!t.rendered){t.rendered=!0;var n={top:t.y+"px",left:t.left+"px",width:t.right-t.left+"px",borderWidth:t.size+"px",borderColor:t.color};1!=t.size&&(n.transform="translateY(-"+(t.size-1)/2+"px)"),l.children.push(e.dom.element("div",{className:x.hborder,style:n}))}})}),this.renderDrawings(d,l.children),l},renderDrawings:function(t,n){var i=this._sheet,o=i._workbook;t.drawings.forEach(function(t){var r=t.drawing,a=t.box,s=a.toDiv("k-spreadsheet-drawing");r.image&&s.children.push(e.dom.element("div",{className:"k-spreadsheet-drawing-image",style:{backgroundImage:"url('"+o.imageUrl(r.image)+"')",opacity:r.opacity}})),r===i._activeDrawing&&(s.attr.className+=" k-spreadsheet-active-drawing",c(s.children)),n.push(s)})},renderResizeHandle:function(t){var n,i=this._sheet,o=i.resizeHandlePosition(),r=this._rectangle(o),a=[C.classNames.resizeHandle];if(o.col!==-(1/0)){if(this._grid.rows._start>0)return;n={height:this._grid.headerHeight+"px",width:p+"px",left:r.right-p/2+"px",top:"0px"},a.push(g.horizontalResize)}else{if(this._grid.columns._start>0)return;n={height:p+"px",width:this._grid.headerWidth+"px",top:r.bottom-p/2+"px",left:"0px"},a.push(g.verticalResize)}t.push(e.dom.element("div",{className:a.join(" "),style:n}))},filterIconRect:function(t){var n=16,i=3;return new e.spreadsheet.Rectangle(t.right-n-i,t.top+i,n,n)},renderFilterHeaders:function(){function t(t){return e.dom.element("span",{className:r.icon+" "+t})}function n(n,i,o){var r,s={left:i.left+"px",top:i.top+"px"},l=a&&a.columns.some(function(e){return e.index===o}),c=n.filterButton;return l&&(c+=" "+n.filterButtonActive),r=e.dom.element("span",{className:c,style:s},[t(n.iconFilterDefault)])}var i=this._sheet,o=[],r=y.classNames,a=i.filter();return a&&this._addDiv(o,a.ref,r.filterRange),i.forEachFilterHeader(this._currentView.ref,function(e){var t=this._rectangle(e),i=this.filterIconRect(t),a=this._sheet.filterColumn(e),s=n(r,i,a);o.push(s)}.bind(this)),e.dom.element("div",{className:r.filterHeadersWrapper},o)},renderEditorSelection:function(){var t=C.classNames,n=this._sheet,i=[];return n._formulaSelections.forEach(function(n){var o=n.ref;o!==e.spreadsheet.NULLREF&&this._addDiv(i,o,t.selectionHighlight+" "+n.colorClass)}.bind(this)),e.dom.element("div",{className:t.selectionWrapper},i)},renderSelection:function(t){var n=C.classNames,i=[],o=[n.selection],r=this._sheet,a=r.activeCell().toRangeRef(),s=r.select();return o=o.concat(this._activeFormulaColor()),1===s.size()&&o.push("k-single-selection"),this._sheet.autoFillPunch()&&o.push("k-dim-auto-fill-handle"),s.forEach(function(t){t!==e.spreadsheet.NULLREF&&this._addDiv(i,t,o.join(" "))}.bind(this)),this._renderCustomEditorButton(i,a,t),e.dom.element("div",{className:n.selectionWrapper},i)},renderAutoFill:function(){var t,n,i,o,r,a,s,l=[];if(this._sheet.autoFillInProgress())if(t=this._sheet.autoFillRef(),n=this._sheet.autoFillPunch(),i=this._sheet._autoFillDirection,this._addDiv(l,t,"k-auto-fill"),n)this._addDiv(l,n,"k-auto-fill-punch");else if(void 0!==i){switch(i){case 0:o=t.bottomRight,r="k-auto-fill-br-hint";break;case 1:o=t.bottomRight,r="k-auto-fill-br-hint";break;case 2:o=new u(t.topLeft.row,t.bottomRight.col),r="k-auto-fill-tr-hint";break;case 3:o=new u(t.bottomRight.row,t.topLeft.col),r="k-auto-fill-bl-hint"}a=this._addDiv(l,o,r),a&&(s=e.dom.element("span",{className:"k-tooltip"},[e.dom.text(this._sheet._autoFillHint)]),a.children.push(s))}return e.dom.element("div",{className:C.classNames.autoFillWrapper},l)},_addDiv:function(e,t,n){var i,o=this._currentView;return o.ref.intersects(t)&&(i=this._rectangle(t).resize(1,1).toDiv(n),e.push(i)),i},_renderCustomEditorButton:function(t,n,i){var o,r=this,a=r._sheet,s=r._currentView,l=r._grid.columns._axis._count,c=a.activeCellCustomEditor();c&&s.ref.intersects(n)&&(o=r._rectangle(n),a.forEach(n.collapse(),function(n,a,s){var d,u,h;s.left=o.left,s.top=o.top,s.width=o.width,s.height=o.height,d="k-button k-spreadsheet-editor-button",u=a==l-1||r._buttonOutOfVisiblePane(n,a,i),u&&(d+=" k-spreadsheet-last-column"),r._editorInLastColumn=u,h=e.dom.element("div",{className:d,style:{left:s.left+(u?0:s.width)+"px",top:s.top+"px",height:s.height+"px"}}),c.icon&&h.children.push(e.dom.element("span",{className:"k-icon "+c.icon})),t.push(h)}))},_activeFormulaColor:function(){var e,t=[];return this._sheet.isInEditMode()&&(e=this._sheet._formulaSelections.filter(function(e){return e.active&&"ref"==e.type})[0],e&&t.push(e.colorClass)),t},_directionClasses:function(e){var t=[],n=C.classNames,i=this._currentView.ref;return e.move(0,-1).intersects(i)||t.push(n.left),e.move(-1,0).intersects(i)||t.push(n.top),e.move(0,1).intersects(i)||t.push(n.right),e.move(1,0).intersects(i)||t.push(n.bottom),t},_rectangle:function(e){return this._grid.boundingRectangle(e.toRangeRef()).offset(-this._currentView.mergedCellLeft,-this._currentView.mergedCellTop)},_buttonOutOfVisiblePane:function(e,t,n){var i=this,o=i._grid,r=i._sheet,a=r.range(e,t)._ref,s=o.scrollBoundaries(a),l=o.columns.frozen?0:n.scrollLeft;if(s.right+f>l||t+1===r.frozenColumns())return!0}}),e.spreadsheet.View=y,e.spreadsheet.Pane=C,e.spreadsheet.drawCell=a,d.extend(!0,y,{classNames:g}),d.extend(!0,C,{classNames:x}))}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/customeditors.min",["kendo.core.min","kendo.popup.min","kendo.calendar.min","kendo.listview.min","spreadsheet/sheet.min"],e)}(function(){!function(e){"use strict";var t,n,i;e.support.browser.msie&&e.support.browser.version<9||(t=e.jQuery,n={},i=e.spreadsheet.registerEditor=function(e,t){n[e]=t},e.spreadsheet.Sheet.prototype.activeCellCustomEditor=function(){var e,t,i,o=this.activeCell().first();if(this.range(o).enable())return e=this.validation(o),t=this._properties.get("editor",this._grid.cellRefIndex(o)),null!=t?i=n[t]:e&&e.showButton&&(t="_validation_"+e.dataType,i=n[t]),"function"==typeof i&&(i=n[t]=i()),i},i("_validation_date",function(){function n(){r||(r=t("<div>").kendoCalendar(),a=t("<div>").kendoPopup(),r.appendTo(a),r=r.getKendoCalendar(),a=a.getKendoPopup(),r.bind("change",function(){a.close();var t=r.value();o.range.format()||o.range.format("yyyy-mm-dd"),o.callback(e.spreadsheet.dateToNumber(t))})),a.setOptions({anchor:o.view.element.find(".k-spreadsheet-editor-button")})}function i(){var t,i,s,l;n(),t=o.range.value(),r.value(null!=t?e.spreadsheet.numberToDate(t):null),i=o.validation,i?(s=e.ui.Calendar.fn.options.min,l=e.ui.Calendar.fn.options.max,/^(?:greaterThan|between)/.test(i.comparerType)&&(s=e.spreadsheet.numberToDate(i.from.value)),"between"==i.comparerType&&(l=e.spreadsheet.numberToDate(i.to.value)),"lessThan"==i.comparerType&&(l=e.spreadsheet.numberToDate(i.from.value)),r.setOptions({disableDates:function(t){var n=i.from?0|i.from.value:0,o=i.to?0|i.to.value:0;return t=0|e.spreadsheet.dateToNumber(t),!e.spreadsheet.validation.validationComparers[i.comparerType](t,n,o)},min:s,max:l})):r.setOptions({disableDates:null,min:null,max:null}),a.open()}var o,r,a;return{edit:function(e){o=e,i()},icon:"k-i-calendar"}}),i("_validation_list",function(){function n(){r||(r=t("<ul class='k-list k-reset'/>").kendoStaticList({template:"#:value#",selectable:!0,autoBind:!1}),a=t("<div>").kendoPopup(),r.appendTo(a),a=a.getKendoPopup(),r=r.getKendoStaticList(),r.bind("change",function(){a.close();var e=r.value()[0];e&&o.callback(e.value)})),a.setOptions({anchor:o.view.element.find(".k-spreadsheet-editor-button")})}function i(){var t,i,s,l;n(),t=o.validation.from.value,i=[],s=function(e){i.push({value:e})},t instanceof e.spreadsheet.calc.runtime.Matrix?t.each(s):(t+"").split(/\s*,\s*/).forEach(s),l=new e.data.DataSource({data:i}),r.setDataSource(l),l.read(),a.open()}var o,r,a;return{edit:function(e){o=e,i()},icon:"k-i-arrow-60-down"}}))}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/grid.min",["kendo.core.min","spreadsheet/references.min"],e)}(function(){!function(e){var t,n,i,o,r,a;e.support.browser.msie&&e.support.browser.version<9||(t=e.spreadsheet.CellRef,n=e.spreadsheet.RangeRef,i=e.spreadsheet.UnionRef,o=e.Class.extend({init:function(e,t,n,i){this.left=e,this.top=t,this.width=n,this.height=i,this.right=this.left+this.width,this.bottom=this.top+this.height},offset:function(e,t){return new o(this.left+e,this.top+t,this.width,this.height)},resize:function(e,t){return new o(this.left,this.top,this.width+e,this.height+t)},intersects:function(e,t){return e instanceof o?this.intersectsRect(e):this.left<e&&e<this.left+this.width&&this.top<t&&t<this.top+this.height},intersectsRect:function(e){var t=this;return t.left<=e.right&&e.left<=t.right&&t.top<=e.bottom&&e.top<=t.bottom},toDiv:function(t){return e.dom.element("div",{className:t,style:{width:this.width+"px",height:this.height+"px",top:this.top+"px",left:this.left+"px"}})}}),r=e.Class.extend({init:function(e,t,n,i,o,r){this.rowCount=n,this.columnCount=i,this._columns=t,this._rows=e,this._headerHeight=o,this._headerWidth=r},isAxis:function(e){var t,n;return e=e.toRangeRef(),t=e.topLeft,n=e.bottomRight,0===t.row&&n.row===this.rowCount-1||0===t.col&&n.col===this.columnCount-1},width:function(e,t){return this._columns.sum(e,t)},height:function(e,t){return this._rows.sum(e,t)},totalHeight:function(){return this._rows.total+this._headerHeight},totalWidth:function(){return this._columns.total+this._headerWidth},index:function(e,t){return t*this.rowCount+e},cellRef:function(e){return new t(e%this.rowCount,e/this.rowCount>>0)},rowRef:function(e){return new n(new t(e,0),new t(e,this.columnCount-1))},colRef:function(e){return new n(new t(0,e),new t(this.rowCount-1,e))},cellRefIndex:function(e){return this.index(e.row,e.col)},normalize:function(e){return e instanceof n?new n(this.normalize(e.topLeft),this.normalize(e.bottomRight)).setSheet(e.sheet,e.hasSheet()):e instanceof i?e.map(function(e){return this.normalize(e)},this):(e instanceof t&&(e=e.clone(),e.col=Math.max(0,Math.min(this.columnCount-1,e.col)),e.row=Math.max(0,Math.min(this.rowCount-1,e.row))),e)},rectangle:function(e){var t=this.normalize(e.topLeft),n=this.normalize(e.bottomRight);return new o(this.width(0,t.col-1),this.height(0,t.row-1),this.width(t.col,n.col),this.height(t.row,n.row))},pane:function(t){return new a(new e.spreadsheet.PaneAxis(this._rows,t.row,t.rowCount,this._headerHeight),new e.spreadsheet.PaneAxis(this._columns,t.column,t.columnCount,this._headerWidth),this)},rangeDimensions:function(e){return{rows:this._rows.values.iterator(e.topLeft.row,e.bottomRight.row),columns:this._columns.values.iterator(e.topLeft.col,e.bottomRight.col)}},forEach:function(e,n){var i,o,r=this.normalize(e.topLeft),a=this.normalize(e.bottomRight);for(i=r.col;i<=a.col;i++)for(o=r.row;o<=a.row;o++)n(new t(o,i))},trim:function(e,i){var o,r,a,s,l,c=this.normalize(e.topLeft),d=this.normalize(e.bottomRight),u=c.row,h=c.col;for(o=c.col;o<=d.col;o++)r=this.index(c.row,o),a=this.index(d.row,o),s=i.tree.intersecting(r,a),s.length&&(l=this.cellRef(s[s.length-1].end),u=Math.max(u,l.row),h=o);return new n(e.topLeft,new t(Math.min(u,e.bottomRight.row),h))}}),a=e.Class.extend({init:function(e,t,n){this.rows=e,this.columns=t,this._grid=n,this.headerHeight=e.headerSize,this.headerWidth=t.headerSize,this.hasRowHeader=t.hasHeader,this.hasColumnHeader=e.hasHeader},refresh:function(e,t){var n,i;this.columns.viewSize(e),this.rows.viewSize(t),n=this.columns.paneSegment(),i=this.rows.paneSegment(),this.left=n.offset,this.top=i.offset,this.right=n.offset+n.length,this.bottom=i.offset+i.length,this.style={top:i.offset+"px",left:n.offset+"px",height:i.length+"px",width:n.length+"px"}},view:function(e,i){var o=this.rows.visible(i),r=this.columns.visible(e);return{rows:o,columns:r,rowOffset:o.offset,columnOffset:r.offset,mergedCellLeft:r.start,mergedCellTop:o.start,ref:new n(new t(o.values.start,r.values.start),new t(o.values.end,r.values.end))}},contains:function(e){return this.rows.contains(e.topLeft.row,e.bottomRight.row)&&this.columns.contains(e.topLeft.col,e.bottomRight.col)},index:function(e,t){return this._grid.index(e,t)},boundingRectangle:function(e){return this._grid.rectangle(e)},cellRefIndex:function(e){return this._grid.cellRefIndex(e)},scrollBoundaries:function(e){var t=this.boundingRectangle(e),n={top:Math.max(0,t.top-this.top+(this.hasColumnHeader?0:this.headerHeight)),left:Math.max(0,t.left-this.left+(this.hasRowHeader?0:this.headerWidth)),right:t.right-this.columns._viewSize+this.headerWidth,bottom:t.bottom-this.rows._viewSize+this.headerHeight},i=this.columns.defaultValue/2,o=this.rows.defaultValue/2;return n.scrollTop=n.top-o,n.scrollBottom=n.bottom+o,n.scrollLeft=n.left-i,n.scrollRight=n.right+i,n}}),e.spreadsheet.Grid=r,e.spreadsheet.PaneGrid=a,e.spreadsheet.Rectangle=o)}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/axis.min",["kendo.core.min"],e)}(function(){!function(e){var t,n;e.support.browser.msie&&e.support.browser.version<9||(t=e.Class.extend({init:function(t,n){this._value=n,this._count=t,this.values=new e.spreadsheet.RangeList(0,t-1,n),this._hidden=new e.spreadsheet.RangeList(0,t-1,0),this.scrollBarSize=e.support.scrollbar(),this._refresh()},adjust:function(e,t){t<0?(this.values.copy(e-t,this._count-1,e),this._hidden.copy(e-t,this._count-1,e)):(this.values.copy(e,this._count,e+t),this._hidden.copy(e,this._count,e+t),this.values.value(e,e+t-1,this._value),this._hidden.value(e,e+t-1,0)),this._refresh()},toJSON:function(e,t){var n,i,o,r,a,s=[],l=this.values.iterator(0,this._count-1);for(n=0;n<this._count;n++)i=l.at(n),o=this._hidden.value(n,n),(i!==this._value||o)&&(r=t[n],void 0===r&&(r=s.length,a={index:n},a[e]=i,o&&(a.hidden=o),s.push(a),t[n]=r));return s},fromJSON:function(e,t){var n,i,o,r;for(n=0;n<t.length;n++)i=t[n],o=i.index,void 0===o&&(o=n),r=i[e],0===r?(this._hidden.value(o,o,i.hidden||this._value),this.value(o,o,0)):this.value(o,o,r)},hide:function(e){if(!this.hidden(e)){var t=this.value(e,e);this._hidden.value(e,e,t),this.value(e,e,0)}},hidden:function(e){return 0!==this._hidden.value(e,e)},includesHidden:function(e,t){return this._hidden.intersecting(e,t).length>1},nextVisible:function(e){for(var t=this._count-1,n=e;++n<=t;)if(!this.hidden(n))return n;return e},nextPage:function(e,t){return this.index(this.sum(0,e-1)+t)},prevPage:function(e,t){return this.index(this.sum(0,e)-t)},firstVisible:function(){var e=this._hidden.first();return 0===e.value?0:e.end+1},lastVisible:function(){var e=this._hidden.last();return 0===e.value?this._count-1:e.start-1},prevVisible:function(e){for(var t=e;--t>=0;)if(!this.hidden(t))return t;return e},unhide:function(e){if(this.hidden(e)){var t=this._hidden.value(e,e);this._hidden.value(e,e,0),this.value(e,e,t)}},value:function(e,t,n){return void 0===n?this.values.iterator(e,t).at(0):(this.values.value(e,t,n),void this._refresh())},sum:function(e,t){var n,i=this.values.iterator(e,t),o=0;for(n=e;n<=t;n++)o+=i.at(n);return o},locate:function(e,t,n){var i,o,r=this.values.iterator(e,t),a=0;for(i=e;i<=t;i++)if(a+=r.at(i),o=n(a))return i;return null},visible:function(e,t){var n,i,o,r,a,s,l=null,c=null,d=!1;return t>=this.total+this.scrollBarSize&&(d=!0),n=this._pixelValues.intersecting(e,t),l=n[0],c=n[n.length-1],l?(i=e-l.start,o=(i/l.value.value>>0)+l.value.start,r=i-(o-l.value.start)*l.value.value,a=t-c.start,s=(a/c.value.value>>0)+c.value.start,s>c.value.end&&(s=c.value.end),d&&(r+=c.value.value-(a-(s-c.value.start)*c.value.value)),r=Math.min(-r,0),{values:this.values.iterator(o,s),offset:r}):{values:this.values.iterator(0,0),offset:0}},index:function(e){for(var t=0,n=this.values.iterator(0,this._count-1),i=n.at(0);i<e&&t<this._count-1;)i+=n.at(++t);return t},indexVisible:function(e){var t=this.index(e);return this.hidden(t)&&(t=this.prevVisible(t)),t},_refresh:function(){var t=0;this._pixelValues=this.values.map(function(n){var i,o=t;return t+=(n.end-n.start+1)*n.value,i=t-1,new e.spreadsheet.ValueRange(o,i,n)}),this.total=t},getState:function(){return{values:this.values.getState(),hidden:this._hidden.getState()}},setState:function(e){this.values.setState(e.values),this._hidden.setState(e.hidden),this._refresh()}}),n=e.Class.extend({init:function(e,t,n,i){this._axis=e,this._start=t,this._count=n,this.hasHeader=0===t,this.headerSize=i,this.defaultValue=e._value,this.frozen=n>0},viewSize:function(e){this._viewSize=e},sum:function(e,t){return this._axis.sum(e,t-1)},start:function(){return this.sum(0,this._start)},size:function(){return this.sum(this._start,this._start+this._count)},index:function(e,t){return this._axis.index(e+(this.frozen?0:t)-this.headerSize)},indexVisible:function(e,t){return this._axis.indexVisible(e+(this.frozen?0:t)-this.headerSize)},paneSegment:function(){var e,t=this.start();return this.hasHeader||(t+=this.headerSize),this.frozen?(e=this.size(),this.hasHeader?e+=this.headerSize:e-=this.headerSize):e=this._viewSize-t,{offset:t,length:e}},visible:function(e){var t,n,i=this.start();return this.frozen?(t=this.size(),this.hasHeader||(t-=this.headerSize)):(t=this._viewSize-i-this.headerSize,i+=e),n=this._axis.visible(i,i+t-1),this.frozen&&(n.offset=0),n.start=i,this.hasHeader&&(n.offset+=this.headerSize,n.start-=this.headerSize),n},contains:function(e,t){return this.frozen?!(e>this._start+this._count)&&!(t<this._start):t>=this._start}}),e.spreadsheet.Axis=t,e.spreadsheet.PaneAxis=n)}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/filter.min",["kendo.core.min","kendo.data.min"],e)}(function(){!function(e){function t(e){var t=e.getMonth()+1;return t>=1&&t<=3?1:t>=4&&t<=6?2:t>=7&&t<=9?3:4}function n(t,n){if(t instanceof Date){var i=e.date.today();return i.setFullYear(i.getFullYear()+n),i.getFullYear()===t.getFullYear()}return!1}function i(t,n){if(t instanceof Date){var i=e.date.firstDayOfMonth(e.date.today());return i.setMonth(i.getMonth()+n,1),i.getTime()===e.date.firstDayOfMonth(t).getTime()}return!1}function o(t,n){var i,o;return n instanceof Date&&(i=e.date.dayOfWeek(e.date.getDate(t),1),o=e.date.dayOfWeek(e.date.getDate(n),1),i.getTime()===o.getTime())}if(!(e.support.browser.msie&&e.support.browser.version<9)){var r=e.spreadsheet.Filter=e.Class.extend({prepare:function(){},value:function(e){return e.value},matches:function(){throw Error("The 'matches' method is not implemented.")},toJSON:function(){throw Error("The 'toJSON' method is not implemented.")}});r.create=function(t){var n,i=t.filter;if(!i)throw Error("Filter type not specified.");if(n=e.spreadsheet[i.charAt(0).toUpperCase()+i.substring(1)+"Filter"],!n)throw Error("Filter type not recognized.");return new n(t)},e.spreadsheet.ValueFilter=r.extend({_values:[],_dates:[],_blanks:!1,init:function(e){void 0!==e.values&&(this._values=e.values),void 0!==e.blanks&&(this._blanks=e.blanks),void 0!==e.dates&&(this._dates=e.dates)},value:function(t){var n,i=t.value;return this._dates.length>0&&t.format&&"number"==typeof i&&(n=e.spreadsheet.formatting.type(i,t.format),"date"===n&&(i=e.spreadsheet.numberToDate(i))),i},matches:function(e){return null===e||void 0===e?this._blanks:e instanceof Date?this._dates.some(function(t){return!(t.year!==e.getFullYear()||void 0!==t.month&&t.month!==e.getMonth()||void 0!==t.day&&t.day!==e.getDate()||void 0!==t.hours&&t.hours!==e.getHours()||void 0!==t.minutes&&t.minutes!==e.getMinutes()||void 0!==t.seconds&&t.seconds!==e.getSeconds())}):this._values.indexOf(e)>=0},toJSON:function(){return{filter:"value",blanks:this._blanks,values:this._values.slice(0)}}}),e.spreadsheet.CustomFilter=r.extend({_logic:"and",init:function(t){if(void 0!==t.logic&&(this._logic=t.logic),void 0===t.criteria)throw Error("Must specify criteria.");this._criteria=t.criteria;var n=e.data.Query.filterExpr({logic:this._logic,filters:this._criteria}).expression;this._matches=Function("d","return "+n)},matches:function(e){return null!==e&&this._matches(e)},value:function(t){var n=t.value,i=this._criteria[0].value,o=i instanceof Date?"date":typeof i,r=typeof n;return t.format&&(r=e.spreadsheet.formatting.type(n,t.format)),r!=o?"string"==o&&(t.format&&(n=e.spreadsheet.formatting.text(n,t.format)),n+=""):"date"==r&&(n=e.spreadsheet.numberToDate(n)),n},toJSON:function(){return{filter:"custom",logic:this._logic,criteria:this._criteria}}}),e.spreadsheet.TopFilter=r.extend({init:function(e){this._type=e.type,this._value=e.value,this._values=[]},prepare:function(e){var t,n=e.map(this.value).sort().filter(function(e,t,n){return 0===t||e!==n[t-1]});n.sort("topNumber"===this._type||"topPercent"==this._type?function(e,t){return t-e}:function(e,t){return e-t}),t=this._value,"topPercent"!==this._type&&"bottomPercent"!==this._type||(t=n.length*t/100>>0),this._values=n.slice(0,t)},matches:function(e){return this._values.indexOf(e)>=0},toJSON:function(){return{filter:"top",type:this._type,value:this._value}}}),e.spreadsheet.DynamicFilter=r.extend({init:function(e){if(this._type=e.type,this._predicate=this[e.type],"function"!=typeof this._predicate)throw Error("DynamicFilter type '"+e.type+"' not recognized.")},value:function(t){var n,i=t.value;return t.format&&(n=e.spreadsheet.formatting.type(i,t.format),"date"===n&&(i=e.spreadsheet.numberToDate(i))),i},prepare:function(e){var t,n,i=0,o=0;for(t=0;t<e.length;t++)n=this.value(e[t]),"number"==typeof n&&(i+=n,o++);this._average=o>0?i/o:0},matches:function(e){return this._predicate(e)},aboveAverage:function(t){return t instanceof Date&&(t=e.spreadsheet.dateToNumber(t)),"number"==typeof t&&t>this._average},belowAverage:function(t){return t instanceof Date&&(t=e.spreadsheet.dateToNumber(t)),"number"==typeof t&&t<this._average},tomorrow:function(t){if(t instanceof Date){var n=e.date.addDays(e.date.today(),1);return e.date.getDate(t).getTime()===n.getTime()}return!1},today:function(t){return t instanceof Date&&e.date.isToday(t)},yesterday:function(t){if(t instanceof Date){var n=e.date.addDays(e.date.today(),-1);return e.date.getDate(t).getTime()===n.getTime()}return!1},nextWeek:function(t){return o(e.date.addDays(e.date.today(),7),t)},thisWeek:function(t){return o(e.date.today(),t)},lastWeek:function(t){return o(e.date.addDays(e.date.today(),-7),t)},nextMonth:function(e){return i(e,1)},thisMonth:function(e){return i(e,0)},lastMonth:function(e){return i(e,-1)},nextQuarter:function(n){var i,o;return n instanceof Date&&(i=e.date.today(),o=t(n)-t(i),1===o&&i.getFullYear()===n.getFullYear()||o==-3&&i.getFullYear()+1===n.getFullYear())},thisQuarter:function(n){var i,o;return n instanceof Date&&(i=e.date.today(),o=t(n)-t(i),0===o&&i.getFullYear()===n.getFullYear())},lastQuarter:function(n){var i,o;return n instanceof Date&&(i=e.date.today(),o=t(i)-t(n),1===o&&i.getFullYear()===n.getFullYear()||o==-3&&i.getFullYear()-1===n.getFullYear())},nextYear:function(e){return n(e,1)},thisYear:function(e){return n(e,0)},lastYear:function(e){return n(e,-1)},yearToDate:function(t){if(t instanceof Date){var n=e.date.today();return t.getFullYear()===n.getFullYear()&&t<=n}return!1},toJSON:function(){return{filter:"dynamic",type:this._type}}}),[1,2,3,4].forEach(function(n){e.spreadsheet.DynamicFilter.prototype["quarter"+n]=function(e){return e instanceof Date&&t(e)===n}}),e.cultures["en-US"].calendar.months.names.forEach(function(t,n){e.spreadsheet.DynamicFilter.prototype[t.toLowerCase()]=function(e){return e instanceof Date&&e.getMonth()===n}})}}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/sorter.min",["kendo.core.min"],e)}(function(){!function(e){if(!(e.support.browser.msie&&e.support.browser.version<9)){var t=e.Class.extend({init:function(e,t){this._grid=e,this._lists=t},indices:function(e,n,i,o){var r=t.ascendingComparer;return i===!1&&(r=t.descendingComparer),n.sortedIndices(this._grid.cellRefIndex(e.topLeft),this._grid.cellRefIndex(e.bottomRight),r,o)},sortBy:function(e,t,n,i,o){var r,a,s,l,c=this.indices(e.toColumn(t),n,i,o);for(r=e.topLeft.col;r<=e.bottomRight.col;r++)for(a=this._grid.index(e.topLeft.row,r),s=this._grid.index(e.bottomRight.row,r),l=0;l<this._lists.length;l++)a<this._lists[l].lastRangeStart()&&this._lists[l].sort(a,s,c);return c}});t.ascendingComparer=function(t,n){var i,o;if(null===t&&null===n)return 0;if(null===t)return 1;if(null===n)return-1;if(i=typeof t,o=typeof n,"number"===i)return"number"===o?t-n:-1;if("string"===i)switch(o){case"number":return 1;case"string":return t.localeCompare(n);default:return-1}if("boolean"===i)switch(o){case"number":return 1;case"string":return 1;case"boolean":return t-n;default:return-1}if(t instanceof e.spreadsheet.calc.runtime.CalcError)return n instanceof e.spreadsheet.calc.runtime.CalcError?0:1;throw Error("Cannot compare "+t+" and "+n)},t.descendingComparer=function(e,n){return null===e&&null===n?0:null===e?1:null===n?-1:t.ascendingComparer(n,e)},e.spreadsheet.Sorter=t}}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/numformat.min",["spreadsheet/calc.min","kendo.dom.min","util/main.min"],e); +}(function(){"use strict";function e(e){function t(){var t=e.skip(h);if(t)return t[1].toLowerCase()}function n(){var t,n=e.skip(p);if(n&&(t=parseFloat(n[2]),!isNaN(t)))return{op:n[1],value:t,custom:!0}}function i(){for(var t,n=[],i=null;!e.eof()&&(t=r());)"date"==t.type?i&&/^(el)?time$/.test(i.type)&&"h"==i.part&&"m"==t.part&&t.format<3&&(t.type="time"):/^(el)?time$/.test(t.type)&&"s"==t.part&&i&&"date"==i.type&&"m"==i.part&&i.format<3&&(i.type="time"),/^(?:str|space|fill)$/.test(t.type)||(i=t),n.push(t);return n}function o(t){if("date"!=t.type||"m"==t.part&&t.format<3){var n=e.skip(/^\.(0+)/);n&&(t.fraction=n[1].length,"date"==t.type&&(t.type="time"))}return t}function r(){var t,n;if(n=e.skip(/^([#0?]+)(?:,([#0?]+))+/))return{type:"digit",sep:!0,format:n[1]+n[2],decimal:c};if(n=e.skip(/^[#0?]+/))return{type:"digit",sep:!1,format:n[0],decimal:c};if(n=e.skip(/^(e)([+-])/i))return{type:"exp",ch:n[1],sign:n[2]};if(n=e.skip(/^(d{1,4}|m{1,5}|yyyy|yy)/i))return n=n[1].toLowerCase(),o({type:"date",part:n.charAt(0),format:n.length});if(n=e.skip(/^(hh?|ss?)/i))return n=n[1].toLowerCase(),o({type:"time",part:n.charAt(0),format:n.length});if(n=e.skip(/^\[(hh?|mm?|ss?)\]/i))return n=n[1].toLowerCase(),o({type:"eltime",part:n.charAt(0),format:n.length});if(n=e.skip(/^(a[.]?m[.]?\/p[.]?m[.]?|a\/p)/i))return n=n[1].split("/"),{type:"ampm",am:n[0],pm:n[1]};switch(t=e.next()){case";":return null;case"\\":return{type:"str",value:e.next()};case'"':return{type:"str",value:e.readEscaped(t)};case"@":return{type:"text"};case"_":return{type:"space",value:e.next()};case"*":return{type:"fill",value:e.next()};case".":return e.lookingAt(/^\s*[#0?]/)?(c=!0,{type:"dec"}):{type:"str",value:"."};case"%":return{type:"percent"};case",":return{type:"comma"}}return{type:"str",value:t}}function a(){c=!1;var e=t(),o=n();return!e&&o&&(e=t()),{color:e,cond:o,body:i()}}var s,l,c,u;for(e=d.InputStream(e),s=[],l=!1;!e.eof();)u=a(),s.push(u),u.cond&&(l=!0);return l||(1==s.length?s[0].cond="num":2==s.length?(s[0].cond={op:">=",value:0},s[1].cond={op:"<",value:0}):s.length>=3&&(s[0].cond={op:">",value:0},s[1].cond={op:"<",value:0},s[2].cond={op:"=",value:0},s.length>3&&(s[3].cond="text",s=s.slice(0,4)))),s}function t(e){function t(e){var t="";return e.color&&(t+="["+e.color+"]"),e.cond&&"text"!=e.cond&&"num"!=e.cond&&(t+="["+e.cond.op+e.cond.value+"]"),t+=e.body.map(i).join("")}function n(e,t){return t.fraction&&(e+="."+r("",t.fraction,"0")),e}function i(e){return"digit"==e.type?e.sep?e.format.charAt(0)+","+e.format.substr(1):e.format:"exp"==e.type?e.ch+e.sign:"date"==e.type||"time"==e.type?n(r("",e.format,e.part),e):"eltime"==e.type?n("["+r("",e.format,e.part)+"]",e):"ampm"==e.type?e.am+"/"+e.pm:"str"==e.type?JSON.stringify(e.value):"text"==e.type?"@":"space"==e.type?"_"+e.value:"fill"==e.type?"*"+e.value:"dec"==e.type?".":"percent"==e.type?"%":"comma"==e.type?",":void 0}return e.map(t).join(";")}function n(e,t){e.forEach(function(e){var n,i,o,a,s,l=t;if("text"!=e.cond){for(n=e.body,i=!1,o=n.length;0!==l&&--o>=0;)if(a=n[o],"digit"==a.type){if(a.decimal&&(i=!0,l>0?a.format+=r("",l,"0"):l<0&&(s=a.format.length,a.format=a.format.substr(0,s+l),l+=s-a.format.length),0===a.format.length))for(n.splice(o,1);--o>=0;){if(a=n[o],"digit"==a.type&&a.decimal){++o;break}if("dec"==a.type){n.splice(o,1);break}}if(l>0)break}!i&&l>0&&n.splice(o+1,0,{type:"dec"},{type:"digit",sep:!1,decimal:!0,format:r("",l,"0")})}})}function i(e){var t=0;return{next:function(){return e[t++]},eof:function(){return t>=e.length},ahead:function(n,i){if(t+n<=e.length){var o=i.apply(null,e.slice(t,t+n));return o&&(t+=n),o}},restart:function(){t=0}}}function o(e){function t(e,t){("digit"==e.type&&"comma"==t.type||"comma"==e.type&&e.hidden&&"comma"==t.type)&&(t.hidden=!0,u++)}var n,o,r=i(e.body),a=!1,s=!1,l=!1,c=0,d=/[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]/,u=0,h="var intPart, decPart, isNegative, date, time; ",p=!1,f=0,g=[],m=[],v=e.cond,_="";for("text"==v?_="if (typeof value == 'string' || value instanceof kendo.spreadsheet.CalcError) { ":"num"==v?_="if (typeof value == 'number') { ":v&&(n="="==v.op?"==":v.op,_="if (typeof value == 'number' && value "+n+" "+v.value+") { ",v.custom||(h+="value = Math.abs(value); ")),e.color&&(h+="result.color = "+JSON.stringify(e.color)+"; ");!r.eof();)r.ahead(2,t),o=r.next(),"percent"==o.type?c++:"digit"==o.type?o.decimal?(f+=o.format.length,m.push(o.format)):(g.push(o.format),o.sep&&(p=!0)):"time"==o.type?s=!0:"date"==o.type?a=!0:"ampm"==o.type&&(l=s=!0);for(c>0&&(h+="value *= "+Math.pow(100,c)+"; "),u>0&&(h+="value /= "+Math.pow(1e3,u)+"; "),g.length&&(h+="intPart = runtime.formatInt(culture, value, "+JSON.stringify(g)+", "+f+", "+p+"); ",h+="isNegative = parseInt(intPart[0]) < 0;"),m.length&&(h+="decPart = runtime.formatDec(value, "+JSON.stringify(m)+", "+f+"); "),(g.length||m.length)&&(h+="type = 'number'; "),a&&(h+="date = runtime.unpackDate(value); "),s&&(h+="time = runtime.unpackTime(value); "),(a||s)&&(h+="type = 'date'; "),(c>0||u>0||g.length||m.length||a||s)&&(_||(_="if (typeof value == 'number') { ")),r.restart(),h+="var matchedCurrency = false;";!r.eof();)o=r.next(),"dec"==o.type?h+="output += culture.numberFormat['.']; ":"comma"!=o.type||o.hidden?"percent"==o.type?(h+="type = 'percent'; ",h+="output += culture.numberFormat.percent.symbol; "):"str"==o.type?(d.test(o.value)&&(h+="type = 'currency'; ",h+="if (isNegative) { output += '-'; matchedCurrency = true; }"),h+="output += "+JSON.stringify(o.value)+"; "):"text"==o.type?(h+="type = 'text'; ",h+="output += value; "):"space"==o.type?(h+="if (output) result.body.push(output); ",h+="output = ''; ",h+="result.body.push({ type: 'space', value: "+JSON.stringify(o.value)+" }); "):"fill"==o.type?h+="output += runtime.fill("+JSON.stringify(o.value)+"); ":"digit"==o.type?(h+="if (isNegative && intPart[0] && matchedCurrency) {intPart[0] = intPart[0].replace('-', '');}",h+="output += "+(o.decimal?"decPart":"intPart")+".shift(); "):"date"==o.type?h+="output += runtime.date(culture, date, "+JSON.stringify(o.part)+", "+o.format+"); ":"time"==o.type?h+="output += runtime.time(time, "+JSON.stringify(o.part)+", "+o.format+", "+l+", "+o.fraction+"); ":"eltime"==o.type?h+="output += runtime.eltime(value, "+JSON.stringify(o.part)+", "+o.format+", "+o.fraction+"); ":"ampm"==o.type&&(h+="output += time.hours < 12 ? "+JSON.stringify(o.am)+" : "+JSON.stringify(o.pm)+"; "):h+="output += ','; ";return h+="if (output) result.body.push(output); ",h+="result.type = type; ",h+="return result; ",_&&(h=_+h+"}"),h}function r(e,t,n){for(e+="";e.length<t;)e=n+e;return e}function a(e,t,n){for(e+="";e.length<t;)e+=n;return e}function s(e){var t,n,i,o,s=(e+"").toLowerCase(),l=s.indexOf(".");return l<0?(l=s.indexOf("e"),l<0?(t=s,n=""):(t=s.substr(0,l),n=s.substr(l))):(t=s.substr(0,l),n=s.substr(l+1)),(i=/(\d*)e([-+]?\d+)/.exec(n))&&(o=parseInt(i[2],10),o>=0?(n=a(i[1],o,"0"),t+=n.substr(0,o),n=n.substr(o)):(t=r(t,-o,"0"),n=t.substr(o)+i[1],t=t.substr(0,t.length+o))),{intpart:t||"0",decpart:n}}function l(e){var t,n,i=e.body,o="";for(t=0;t<i.length;++t)n=i[t],"string"==typeof n?o+=n:"space"==n.type&&(o+=" ");return o}var c,d,u,h,p,f,g,m,v;kendo.support.browser.msie&&kendo.support.browser.version<9||(c=kendo.util,d=kendo.spreadsheet.calc,u=kendo.dom,h=/^\[(black|green|white|blue|magenta|yellow|cyan|red)\]/i,p=/^\[(<=|>=|<>|<|>|=)(-?[0-9.]+)\]/,f=o({cond:"text",body:[{type:"text"}]}),g=c.memoize(function(t){var n=e(t),i=n.map(o);return i.push(f),i=i.join("\n"),i="'use strict'; return function(value, culture){ if (!culture) culture = kendo.culture(); var output = '', type = null, result = { body: [] }; "+i+"; return result; };",Function("runtime",i)(v)}),m=c.memoize(function(t){function n(e,t){return t.fraction&&(e+=r("",Math.max(t.fraction,3),"f")),e}function i(e){if("digit"==e.type)return e.sep?e.format.charAt(0)+","+e.format.substr(1):e.format;if("exp"==e.type)return e.ch+e.sign;if("date"==e.type||"time"==e.type){var t=e.part;return"date"==e.type&&/^m/.test(t)?t="M":"time"==e.type&&/^h/.test(t)&&(d||(t=t.toUpperCase())),n(r("",e.format,t),e)}return"ampm"==e.type?"tt":"str"==e.type?e.value:"space"==e.type?" ":"dec"==e.type?".":"percent"==e.type?"%":"comma"==e.type?",":""}var o,a,s,l=e(t),c=!1,d=!1;for(a=0;a<l.length;++a){for(o=l[a],s=0;s<o.body.length;++s)/^(?:date|time|ampm)$/.test(o.body[s].type)&&(c=!0,"ampm"==o.body[s].type&&(d=!0));if(c)break}return c?o.body.map(i).join(""):null}),v={unpackDate:d.runtime.unpackDate,unpackTime:d.runtime.unpackTime,date:function(e,t,n,i){switch(n){case"d":switch(i){case 1:return t.date;case 2:return r(t.date,2,"0");case 3:return e.calendars.standard.days.namesAbbr[t.day];case 4:return e.calendars.standard.days.names[t.day]}break;case"m":switch(i){case 1:return t.month+1;case 2:return r(t.month+1,2,"0");case 3:return e.calendars.standard.months.namesAbbr[t.month];case 4:return e.calendars.standard.months.names[t.month];case 5:return e.calendars.standard.months.names[t.month].charAt(0)}break;case"y":switch(i){case 2:return t.year%100;case 4:return t.year}}return"##"},time:function(e,t,n,i,o){var a,s;switch(t){case"h":a=r(i?e.hours%12||12:e.hours,n,"0"),o&&(s=(e.minutes+(e.seconds+e.milliseconds/1e3)/60)/60);break;case"m":a=r(e.minutes,n,"0"),o&&(s=(e.seconds+e.milliseconds/1e3)/60);break;case"s":a=r(e.seconds,n,"0"),o&&(s=e.milliseconds/1e3)}return s&&(a+=v.toFixed(s,o).replace(/^0+/,"")),a},eltime:function(e,t,n,i){var o,a;switch(t){case"h":o=24*e;break;case"m":o=24*e*60;break;case"s":o=24*e*60*60}return i&&(a=o-(0|o)),o=r(0|o,n,"0"),a&&(o+=v.toFixed(a,i).replace(/^0+/,"")),o},fill:function(e){return e},formatInt:function(e,t,n,i,o){function r(t,n){o&&d&&d%3===0&&/^[0-9]$/.test(t)&&(u=e.numberFormat[","]+u),n&&"-"===t&&(s=!0,t="0"),u=t+u,d++}var a,s,l,c,d,u,h,p,f,g;for(t=v.toFixed(t,i).replace(/\..*$/,""),a=n[n.length-1],i>0&&"0"!=a[n.length-1]&&("0"===t?t="":"-0"===t&&(t="-")),s=!1,l=t.length-1,c=[],d=0,h=n.length;--h>=0;){for(p=n[h],u="",f=p.length;--f>=0;)g=p.charAt(f),l<0?"0"==g?r("0"):"?"==g&&r(" "):("0"==t&&"?"==g?r(" "):"0"==g?r(t.charAt(l),!0):r(t.charAt(l)),l--);if(0===h)for(;l>=0;)r(t.charAt(l--));c.unshift(u)}return s&&(c[0]="-"+c[0]),c},formatDec:function(e,t,n){var i,o,r,a,s,l,c,d;for(e=v.toFixed(e,n),i=e.indexOf("."),e=i>=0?e.substr(i+1).replace(/0+$/,""):"",o=0,r=[],a=0;a<t.length;++a){for(s=t[a],l="",c=0;c<s.length;++c)d=s.charAt(c),o<e.length?l+=e.charAt(o++):"0"==d?l+="0":"?"==d&&(l+=" ");r.push(l)}return r},toFixed:function(e,t){return function n(e,i){var o,r,a,l;if(!isFinite(e))return"#NUM!";if(e<0)return"-"+n(-e);if(0===t)return Math.round(e)+"";if(e===Math.round(e)&&!/e/i.test(e+""))return e.toFixed(t);if(o=s(e),r=o.intpart,a=o.decpart,a.length<=t){for(;a.length<t;)a+="0";return r+"."+a}return i?r+"."+a.substr(0,t):(l=Math.pow(10,t),n(Math.round(e*l)/l,!0))}(+e.toFixed(14))}},kendo.spreadsheet.formatting={compile:g,parse:e,format:function(e,t,n){var i,o,r,a=g(t)(e,n),s=u.element("span");for(s.__dataType=a.type,i=a.body,a.color&&(s.attr.style={color:a.color}),o=0;o<i.length;++o)r=i[o],"string"==typeof r?s.children.push(u.text(r)):"space"==r.type&&s.children.push(u.element("span",{style:{visibility:"hidden"}},[u.text(r.value)]));return s},text:function(e,t,n){var i=g(t)(e,n);return l(i)},textAndColor:function(e,t,n){var i=g(t)(e,n);return{text:l(i),color:i.color,type:i.type}},type:function(e,t){return g(t)(e).type},adjustDecimals:function(i,o){var r=e(i);return n(r,o),t(r)},makeDateFormat:m})},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/runtime.functions.min",["spreadsheet/runtime.min","util/main.min"],e)}(function(){"use strict";function e(e){return(Math.exp(e)+Math.exp(-e))/2}function t(e){return(Math.exp(e)-Math.exp(-e))/2}function n(n){return t(n)/e(n)}function i(e,t){for(;t;){var n=e%t;e=t,t=n}return e}function o(e,t){return Math.abs(e*t)/i(e,t)}function r(e,t){for(var n,i,o,r=[],a=0,s=e[0];a<e.length;)r.push({matrix:e[a++],pred:G(e[a++])});for(n=0;n<s.height;++n)e:for(i=0;i<s.width;++i){for(a=0;a<r.length;++a)if(o=r[a].matrix.get(n,i),!r[a].pred(null==o||""===o?0:o))continue e;t(n,i)}}function a(e){return e.reduce(function(e,t){return e+t},0)/e.length}function s(e,t,n){return null==n&&(n=a(e)),e.reduce(function(e,t){return e+Math.pow(t-n,2)},0)/t}function l(e,t){return Math.sqrt(s(e,t))}function c(e,t,n){var i=0,o=0,r=null,a=null,s=!1;return e.forEach(function(e){e<t?(i++,r=null==r?e:Math.max(r,e)):e>t?(o++,a=null==a?e:Math.min(a,e)):s=!0}),i||o?s?n?(i+1)/(e.length+1):i/(i+o):((a-t)*c(e,r,n)+(t-r)*c(e,a,n))/(a-r):new A("N/A")}function d(e,t,n){var i,o=0,r=a(e),s=a(t),l=e.length;for(i=0;i<l;++i)o+=(e[i]-r)*(t[i]-s);return o/n}function u(e,t){var n,i,o;return e.sort(w),n=e.length,i=0|t,o=t-i,0===i?e[0]:i>=n?e[n-1]:(--i,e[i]+o*(e[i+1]-e[i]))}function h(e,t){var n=t*(e.length-1)+1;return u(e,n)}function p(e,t){var n=t*(e.length+1);return u(e,n)}function f(e,t,n){var i=[],o=1,r=2,a=4;return function s(t){if(t instanceof R)e.getRefCells(t,!0).forEach(function(e){var t,s=e.value;n&o&&e.hidden||(!e.formula||(t=e.formula.print(e.row,e.col),!/^\s*(?:aggregate|subtotal)\s*\(/i.test(t)||n&a))&&(n&r&&s instanceof A||("number"==typeof s||s instanceof A)&&i.push(s))});else if(Array.isArray(t))for(var l=0;l<t.length;++l)s(t[l]);else t instanceof F?t.each(s):"number"==typeof t?i.push(t):t instanceof A&&!(n&r)&&i.push(t)}(t),i}function g(e,t,n,i){var o,r;if(i){for(o=0,r=0;r<=e;++r)o+=U(t,r)*Math.pow(n,r)*Math.pow(1-n,t-r);return o}return U(t,e)*Math.pow(n,e)*Math.pow(1-n,t-e)}function m(e){var t=B(z(e,0,1));return 4==t.day||3==t.day&&S.isLeapYear(e)?53:52}function v(e,t,n){var i=B(e),o=B(t);return n?(31==i.date&&(i.date=30),31==o.date&&(o.date=30)):(1==i.month&&1==o.month&&i.date==P(i.year,1)&&o.date==P(o.year,1)&&(o.date=30),i.date==P(i.year,i.month)?(i.date=30,31==o.date&&(o.date=30)):30==i.date&&31==o.date&&(o.date=30)),360*(o.year-i.year)+30*(o.month-i.month)+(o.date-i.date)}function _(e,t){this.link=e,this.text=t}function b(e){return"number"==typeof e||"boolean"==typeof e||null==e||""===e}function w(e,t){return e===t?0:e<t?-1:1}function k(e,t){return e===t?0:e<t?1:-1}var y,x,C,S,T,D,A,E,I,M,F,R,P,z,B,L,H,N,O,V,W,U,q,j,G;kendo.support.browser.msie&&kendo.support.browser.version<9||(y=kendo.util,x=kendo.spreadsheet,C=x.calc,S=C.runtime,T=S.defineFunction,D=S.defineAlias,A=S.CalcError,E=x.RangeRef,I=x.CellRef,M=x.UnionRef,F=S.Matrix,R=x.Ref,P=S.daysInMonth,z=S.packDate,B=S.unpackDate,L=S.daysInYear,["abs","cos","sin","acos","asin","tan","atan","exp","sqrt"].forEach(function(e){T(e,Math[e]).args([["*n","number"]])}),T("ln",Math.log).args([["*n","number"]]),T("log",function(e,t){return Math.log(e)/Math.log(t)}).args([["*num","number++"],["*base",["or","number++",["null",10]]],["?",["assert","$base != 1","DIV/0"]]]),T("log10",function(e){return Math.log(e)/Math.log(10)}).args([["*num","number++"]]),T("pi",function(){return Math.PI}).args([]),T("sqrtpi",function(e){return Math.sqrt(e*Math.PI)}).args([["*num","number+"]]),T("degrees",function(e){return 180*e/Math.PI%360}).args([["*radians","number"]]),T("radians",function(e){return Math.PI*e/180}).args([["*degrees","number"]]),T("cosh",e).args([["*num","number"]]),T("acosh",function(e){return Math.log(e+Math.sqrt(e-1)*Math.sqrt(e+1))}).args([["*num","number"],["?",["assert","$num >= 1"]]]),T("sinh",t).args([["*num","number"]]),T("asinh",function(e){return Math.log(e+Math.sqrt(e*e+1))}).args([["*num","number"]]),T("sec",function(e){return 1/Math.cos(e)}).args([["*num","number"]]),T("sech",function(t){return 1/e(t)}).args([["*num","number"]]),T("csc",function(e){return 1/Math.sin(e)}).args([["*num","number"]]),T("csch",function(e){return 1/t(e)}).args([["*num","number"]]),T("atan2",function(e,t){return Math.atan(t/e)}).args([["*x","divisor"],["*y","number"]]),T("tanh",n).args([["*num","number"]]),T("atanh",function(e){return Math.log(Math.sqrt(1-e*e)/(1-e))}).args([["*num",["and","number",["(between)",-1,1]]]]),T("cot",function(e){return 1/Math.tan(e)}).args([["*num","divisor"]]),T("coth",function(e){return 1/n(e)}).args([["*num","divisor"]]),T("acot",function(e){return Math.PI/2-Math.atan(e)}).args([["*num","number"]]),T("acoth",function(e){return Math.log((e+1)/(e-1))/2}).args([["*num","number"],["?",["or",["assert","$num < -1"],["assert","$num > 1"]]]]),T("power",function(e,t){return Math.pow(e,t)}).args([["*a","number"],["*b","number"]]),T("mod",function(e,t){return e%t}).args([["*a","number"],["*b","divisor"]]),T("quotient",function(e,t){return Math.floor(e/t)}).args([["*a","number"],["*b","divisor"]]),T("ceiling",function(e,t){return t?t*Math.ceil(e/t):0}).args([["*number","number"],["*significance","number"],["?",["assert","$significance >= 0 || $number < 0"]]]),T("ceiling.precise",function(e,t){return t=Math.abs(t),t?t*Math.ceil(e/t):0}).args([["*number","number"],["*significance",["or","number",["null",1]]]]),D("iso.ceiling","ceiling.precise"),T("ceiling.math",function(e,t,n){return t&&e?(e<0&&(!n&&t<0||n&&t>0)&&(t=-t),t?t*Math.ceil(e/t):0):0}).args([["*number","number"],["*significance",["or","number",["null","$number < 0 ? -1 : 1"]]],["*mode",["or","logical",["null",0]]]]),T("floor",function(e,t){return t?t*Math.floor(e/t):0}).args([["*number","number"],["*significance","number"],["?",["assert","$significance >= 0 || $number < 0"]]]),T("floor.precise",function(e,t){return t=Math.abs(t),t?t*Math.floor(e/t):0}).args([["*number","number"],["*significance",["or","number",["null",1]]]]),T("floor.math",function(e,t,n){return t&&e?(e<0&&(!n&&t<0||n&&t>0)&&(t=-t),t?t*Math.floor(e/t):0):0}).args([["*number","number"],["*significance",["or","number",["null","$number < 0 ? -1 : 1"]]],["*mode",["or","logical",["null",0]]]]),T("int",Math.floor).args([["*number","number"]]),T("mround",function(e,t){return t?t*Math.round(e/t):0}).args([["*number","number"],["*multiple","number"]]),T("round",function(e,t){var n=e<0?-1:1;return n<0&&(e=-e),t=Math.pow(10,t),e*=t,e=Math.round(e),n*e/t}).args([["*number","number"],["*digits","number"]]),T("roundup",function(e,t){return t=Math.pow(10,t),e*=t,e=e<0?Math.floor(e):Math.ceil(e),e/t}).args([["*number","number"],["*digits","number"]]),T("rounddown",function(e,t){return t=Math.pow(10,t),e*=t,e=e<0?Math.ceil(e):Math.floor(e),e/t}).args([["*number","number"],["*digits","number"]]),T("even",function(e){var t=e<0?Math.floor(e):Math.ceil(e);return t%2?t+(t<0?-1:1):t}).args([["*number","number"]]),T("odd",function(e){var t=e<0?Math.floor(e):Math.ceil(e);return t%2?t:t+(t<0?-1:1)}).args([["*number","number"]]),T("sign",function(e){return e<0?-1:e>0?1:0}).args([["*number","number"]]),T("gcd",function(e){var t,n=e[0];for(t=1;t<e.length;++t)n=i(n,e[t]);return n}).args([["numbers",["collect","number"]]]),T("lcm",function(e){var t,n=e[0];for(t=1;t<e.length;++t)n=o(n,e[t]);return n}).args([["numbers",["collect","number"]]]),T("sum",function(e){return e.reduce(function(e,t){return e+t},0)}).args([["numbers",["collect","number"]]]),T("product",function(e){return e.reduce(function(e,t){return e*t},1)}).args([["numbers",["collect","number"]]]),T("sumproduct",function(e,t){var n=0;return e.each(function(e,i,o){var r,a;if("number"==typeof e){for(r=0;r<t.length;++r){if(a=t[r].get(i,o),"number"!=typeof a)return;e*=a}n+=e}}),n}).args([["a1","matrix"],["+",["a2",["and","matrix",["assert","$a2.width == $a1.width"],["assert","$a2.height == $a1.height"]]]]]),T("sumsq",function(e){return e.reduce(function(e,t){return e+t*t},0)}).args([["numbers",["collect","number"]]]),T("sumx2my2",function(e,t){var n=0;return e.each(function(e,i,o){var r=t.get(i,o);"number"==typeof e&&"number"==typeof r&&(n+=e*e-r*r)}),n}).args([["a","matrix"],["b",["and","matrix",["assert","$b.width == $a.width"],["assert","$b.height == $a.height"]]]]),T("sumx2py2",function(e,t){var n=0;return e.each(function(e,i,o){var r=t.get(i,o);"number"==typeof e&&"number"==typeof r&&(n+=e*e+r*r)}),n}).args([["a","matrix"],["b",["and","matrix",["assert","$b.width == $a.width"],["assert","$b.height == $a.height"]]]]),T("sumxmy2",function(e,t){var n=0;return e.each(function(e,i,o){var r=t.get(i,o);"number"==typeof e&&"number"==typeof r&&(n+=(e-r)*(e-r))}),n}).args([["a","matrix"],["b",["and","matrix",["assert","$b.width == $a.width"],["assert","$b.height == $a.height"]]]]),T("seriessum",function(e,t,n,i){var o=0;return i.each(function(i){if("number"!=typeof i)throw new A("VALUE");o+=i*Math.pow(e,t),t+=n}),o}).args([["x","number"],["y","number"],["m","number"],["a","matrix"]]),T("min",function(e){return e.length?Math.min.apply(Math,e):0}).args([["numbers",["collect","number"]]]),T("max",function(e){return e.length?Math.max.apply(Math,e):0}).args([["numbers",["collect","number"]]]),T("counta",function(e){return e.length}).args([["values",["#collect","anyvalue"]]]),T("count",function(e){return e.length}).args([["numbers",["#collect","number"]]]),T("countunique",function(e){var t=0,n=[];return e.forEach(function(e){n.indexOf(e)<0&&(t++,n.push(e))}),t}).args([["values",["#collect","anyvalue"]]]),T("countblank",function(e){function t(e){null!=e&&""!==e||i++}function n(e){var n,i;for(n=0;n<e.length;++n)i=e[n],i instanceof F?i.each(t,!0):t(i)}var i=0;return n(e),i}).args([["+",["args",["or","matrix","anyvalue"]]]]),T("iseven",function(e){return e%2===0}).args([["*number","number"]]),T("isodd",function(e){return e%2!==0}).args([["*number","number"]]),T("n",function(e){return"boolean"==typeof e?e?1:0:"number"==typeof e?e:0}).args([["*value","anyvalue"]]),T("na",function(){return new A("N/A")}).args([]),H=[["m1","matrix"],["c1","anyvalue"],[["m2","matrix"],["c2","anyvalue"]]],T("countifs",function(e,t,n){var i=0;return n.unshift(e,t),r(n,function(){i++}),i}).args(H),N=[["range","matrix"]].concat(H),T("sumifs",function(e,t,n,i){i.unshift(e,b,t,n);var o=0;return r(i,function(t,n){var i=e.get(t,n);i&&(o+=i)}),o}).args(N),T("averageifs",function(e,t,n,i){i.unshift(e,b,t,n);var o=0,a=0;return r(i,function(t,n){var i=e.get(t,n);null!=i&&""!==i||(i=0),o+=i,a++}),a?o/a:new A("DIV/0")}).args(N),T("countif",function(e,t){t=G(t);var n=0;return e.each(function(e){t(e)&&n++}),n}).args([["range","matrix"],["*criteria","anyvalue"]]),O=[["range","matrix"],["*criteria","anyvalue"],["sumRange",["or",["and","matrix",["assert","$sumRange.width == $range.width"],["assert","$sumRange.height == $range.height"]],["null","$range"]]]],T("sumif",function(e,t,n){var i=0;return t=G(t),e.each(function(e,o,r){if(t(e)){var a=n.get(o,r);b(a)&&(i+=a||0)}}),i}).args(O),T("averageif",function(e,t,n){var i=0,o=0;return t=G(t),e.each(function(e,r,a){if(t(e)){var s=n.get(r,a);b(s)&&(i+=s||0,o++)}}),o?i/o:new A("DIV/0")}).args(O),function(e){e("large",function(e,t){return e.sort(k)[t]}),e("small",function(e,t){return e.sort(w)[t]})}(function(e,t){T(e,function(e,n){var i=[],o=e.each(function(e){return e instanceof A?e:void("number"==typeof e&&i.push(e))});return o?o:n>i.length?new A("NUM"):t(i,n-1)}).args([["array","matrix"],["*nth","number++"]])}),T("stdev.s",function(e){return l(e,e.length-1)}).args([["numbers",["collect","number"]],["?",["assert","$numbers.length >= 2","NUM"]]]),T("stdev.p",function(e){return l(e,e.length)}).args([["numbers",["collect","number"]],["?",["assert","$numbers.length >= 2","NUM"]]]),T("var.s",function(e){return s(e,e.length-1)}).args([["numbers",["collect","number"]],["?",["assert","$numbers.length >= 2","NUM"]]]),T("var.p",function(e){return s(e,e.length)}).args([["numbers",["collect","number"]],["?",["assert","$numbers.length >= 2","NUM"]]]),T("median",function(e){var t=e.length;return e.sort(w),t%2?e[t>>1]:(e[t>>=1]+e[t-1])/2}).args([["numbers",["collect","number"]],["?",["assert","$numbers.length > 0","N/A"]]]),T("mode.sngl",function(e){var t,n,i,o,r,a;for(e.sort(w),t=null,n=0,i=1,o=null,r=0;r<e.length;++r)a=e[r],a!=t?(n=1,t=a):n++,n>i&&(i=n,o=a);return null==o?new A("N/A"):o}).args([["numbers",["collect","number"]]]),T("mode.mult",function(e){var t,n=Object.create(null),i=2,o=[];return e.forEach(function(e){var t=n[e]||0;n[e]=++t,t==i?o.push(e):t>i&&(i=t,o=[e])}),t=new F(this),o.forEach(function(e,n){t.set(n,0,e)}),t}).args([["numbers",["collect","number"]]]),T("geomean",function(e){var t=e.length,n=e.reduce(function(e,t){if(t<0)throw new A("NUM");return e*t},1);return Math.pow(n,1/t)}).args([["numbers",["collect","number"]],["?",["assert","$numbers.length > 0","NUM"]]]),T("harmean",function(e){var t=e.length,n=e.reduce(function(e,t){if(!t)throw new A("DIV/0");return e+1/t},0);return t/n}).args([["numbers",["collect","number"]],["?",["assert","$numbers.length > 0","NUM"]]]),T("trimmean",function(e,t){var n,i,o,r=e.length;for(e.sort(w),n=Math.floor(r*t),n%2&&--n,n/=2,i=0,o=n;o<r-n;++o)i+=e[o];return i/(r-2*n)}).args([["numbers",["collect","number",1]],["percent",["and","number",["[between)",0,1]]],["?",["assert","$numbers.length > 0","NUM"]]]),T("frequency",function(e,t){function n(t){for(var n=0;o<e.length&&e[o]>i&&e[o]<=t;)++n,++o;return n}var i,o,r;return e.sort(w),t.sort(w),i=-(1/0),o=0,r=new F(this),t.forEach(function(e,t){var o=n(e);i=e,r.set(t,0,o)}),r.set(r.height,0,e.length-o),r}).args([["data",["collect","number",1]],["bins",["collect","number",1]]]),T("rank.eq",function(e,t,n){t.sort(n?w:k);var i=t.indexOf(e);return i<0?new A("N/A"):i+1}).args([["value","number"],["numbers",["collect","number"]],["order",["or","logical",["null",!1]]]]),D("rank","rank.eq"),T("rank.avg",function(e,t,n){var i,o;if(t.sort(n?w:k),i=t.indexOf(e),i<0)return new A("N/A");for(o=i;t[o]==e;++o);return(i+o+1)/2}).args([["value","number"],["numbers",["collect","number"]],["order",["or","logical",["null",!1]]]]),T("kurt",function(e){var t=e.length,n=a(e),i=s(e,t-1,n),o=Math.sqrt(i),r=e.reduce(function(e,t){return e+Math.pow((t-n)/o,4)},0);return t*(t+1)/((t-1)*(t-2)*(t-3))*r-3*Math.pow(t-1,2)/((t-2)*(t-3))}).args([["numbers",["collect","number"]],["?",["assert","$numbers.length >= 4","NUM"]]]),V=[["array",["collect","number",1]],["x","number"],["significance",["or",["null",3],"integer++"]],["?",["assert","$array.length > 0","NUM"]]],T("percentrank.inc",function(e,t,n){var i=c(e,t,0);return i=i.toFixed(n+1),parseFloat(i.substr(0,i.length-1))}).args(V),T("percentrank.exc",function(e,t,n){var i=c(e,t,1);return i=i.toFixed(n+1),parseFloat(i.substr(0,i.length-1))}).args(V),D("percentrank","percentrank.inc"),T("covariance.p",function(e,t){return d(e,t,e.length)}).args([["array1",["collect","number",1]],["array2",["collect","number",1]],["?",["assert","$array1.length == $array2.length","N/A"]],["?",["assert","$array1.length > 0","DIV/0"]]]),T("covariance.s",function(e,t){return d(e,t,e.length-1)}).args([["array1",["collect","number",1]],["array2",["collect","number",1]],["?",["assert","$array1.length == $array2.length","N/A"]],["?",["assert","$array1.length > 1","DIV/0"]]]),D("covar","covariance.p"),W=y.memoize(function(e){for(var t=2,n=1;t<=e;++t)n*=t;return n}),T("fact",W).args([["*n","integer+"]]),T("factdouble",function(e){for(var t=2+(1&e),n=1;t<=e;t+=2)n*=t;return n}).args([["*n","integer+"]]),T("multinomial",function(e){var t=1,n=0;return e.forEach(function(e){if(e<0)throw new A("NUM");n+=e,t*=W(e)}),W(n)/t}).args([["numbers",["collect","number"]]]),U=y.memoize(function(e,t){for(var n=t+1,i=1,o=1,r=1;i<=e-t;++n,++i)o*=n,r*=i;return o/r}),T("combin",U).args([["*n","integer++"],["*k",["and","integer",["[between]",0,"$n"]]]]),T("combina",function(e,t){return U(e+t-1,e-1)}).args([["*n","integer++"],["*k",["and","integer",["[between]",1,"$n"]]]]),T("average",function(e){var t=e.reduce(function(e,t){return e+t},0);return t/e.length}).args([["numbers",["collect","number!"]],["?",["assert","$numbers.length > 0","DIV/0"]]]),T("averagea",function(e){var t=0,n=0;return e.forEach(function(e){"string"!=typeof e&&(t+=e),++n}),n?t/n:new A("DIV/0")}).args([["values",["collect","anyvalue"]]]),T("percentile.inc",h).args([["numbers",["collect","number",1]],["p",["and","number",["[between]",0,1]]]]),T("percentile.exc",p).args([["numbers",["collect","number",1]],["p",["and","number",["(between)",0,1]]]]),T("quartile.inc",function(e,t){return h(e,t/4)}).args([["numbers",["collect","number",1]],["quarter",["values",0,1,2,3,4]]]),T("quartile.exc",function(e,t){return p(e,t/4)}).args([["numbers",["collect","number",1]],["quarter",["values",0,1,2,3,4]]]),D("quartile","quartile.inc"),D("percentile","percentile.inc"),q=["AVERAGE","COUNT","COUNTA","MAX","MIN","PRODUCT","STDEV.S","STDEV.P","SUM","VAR.S","VAR.P","MEDIAN","MODE.SNGL","LARGE","SMALL","PERCENTILE.INC","QUARTILE.INC","PERCENTILE.EXC","QUARTILE.EXC"],T("aggregate",function(e,t,n,i){var o=this;o.resolveCells(i,function(){var r,a;if(t>12){if(r=f(o,i[0],n),a=i[1],a instanceof I&&(a=o.getRefData(a)),"number"!=typeof a)return e(new A("VALUE"))}else r=f(o,i,n);o.func(q[t-1],e,r)})}).argsAsync([["funcId",["values",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]],["options",["or",["null",0],["values",0,1,2,3,4,5,6,7]]],["args","rest"]]),T("subtotal",function(e,t){var n,i,o=this,r=t>100;for(r&&(t-=100),n=[],i=2;i<arguments.length;++i)n.push(arguments[i]);o.resolveCells(n,function(){var i=f(o,n,r?1:0);o.func(q[t-1],e,i)})}).argsAsync([["funcId",["values",1,2,3,4,5,6,7,8,9,10,11,101,102,103,104,105,106,107,108,109,110,111]],["+",["ref",["or","ref","#matrix"]]]]),T("avedev",function(e){var t=e.reduce(function(e,t){return e+t},0)/e.length;return e.reduce(function(e,n){return e+Math.abs(n-t)},0)/e.length}).args([["numbers",["collect","number"]],["?",["assert","$numbers.length >= 2","NUM"]]]),T("binom.dist",g).args([["successes","integer+"],["trials",["and","integer",["assert","$trials >= $successes"]]],["probability",["and","number",["[between]",0,1]]],["cumulative","logical"]]),D("binomdist","binom.dist"),T("binom.inv",function(e,t,n){for(var i=0;i<=e;++i)if(g(i,e,t,!0)>=n)return i;return new A("N/A")}).args([["trials","integer+"],["probability",["and","number",["[between]",0,1]]],["alpha",["and","number",["[between]",0,1]]]]),D("critbinom","binom.inv"),T("binom.dist.range",function(e,t,n,i){var o,r=0;for(o=n;o<=i;++o)r+=U(e,o)*Math.pow(t,o)*Math.pow(1-t,e-o);return r}).args([["trials","integer+"],["probability",["and","number",["[between]",0,1]]],["successes_min",["and","integer",["[between]",0,"$trials"]]],["successes_max",["or",["and","integer",["[between]","$successes_min","$trials"]],["null","$successes_min"]]]]),T("negbinom.dist",function(e,t,n,i){if(i){for(var o=0;e>=0;)o+=U(e+t-1,e)*Math.pow(n,t)*Math.pow(1-n,e),e--;return o}return U(e+t-1,e)*Math.pow(n,t)*Math.pow(1-n,e)}).args([["number_f","integer+"],["number_s","integer+"],["probability_s",["and","number",["[between]",0,1]]],["cumulative","logical"]]),D("negbinomdist","negbinom.dist"),T("address",function(e,t,n,i,o){var r=new I(e-1,t-1,n-1);return o&&r.setSheet(o,!0),i?r.print(0,0):r.print()}).args([["row","integer++"],["col","integer++"],["abs",["or",["null",1],["values",1,2,3,4]]],["a1",["or",["null",!0],"logical"]],["sheet",["or","null","string"]]]),T("areas",function(e){var t=0;return function n(e){e instanceof I||e instanceof E?t++:e instanceof M&&e.refs.forEach(n)}(e),t}).args([["ref","ref"]]),T("choose",function(e,t){return e>t.length?new A("N/A"):t[e-1]}).args([["*index","integer"],["+",["value","anything"]]]),T("column",function(e){return e?e instanceof I?e.col+1:this.asMatrix(e).mapCol(function(t){return t+e.topLeft.col+1}):this.formula.col+1}).args([["ref",["or","area","null"]]]),T("columns",function(e){return e instanceof R?e.width():e.width}).args([["ref",["or","area","#matrix"]]]),T("formulatext",function(e){var t=this.getRefCells(e)[0];return t.formula?t.formula.print(t.row,t.col):new A("N/A")}).args([["ref","ref"]]),T("hlookup",function(e,t,n,i){var o=null;return t.eachCol(function(n){var r=t.get(0,n);if(i){if(r>e)return!0;o=n}else if(r===e)return o=n,!0}),null==o?new A("N/A"):t.get(n-1,o)}).args([["value","anyvalue"],["range","matrix"],["row","integer++"],["approx",["or","logical",["null",!0]]]]),T("index",function(e,t,n,i,o){var r,a,s,l=this;if(t instanceof M&&(t=t.refs[o-1]), +!n&&!i||!t)return e(new A("N/A"));if(t instanceof I&&(t=t.toRangeRef()),t instanceof E){if(n&&i)return i>t.width()||n>t.height()?e(new A("REF")):(r=t.toCell(n-1,i-1),void l.resolveCells([r],function(){e(l.getRefData(r))}));if(!n)return a=t.toColumn(i-1),void l.resolveCells([a],function(){e(l.asMatrix(a))});if(!i)return s=t.toRow(n-1),void l.resolveCells([s],function(){e(l.asMatrix(s))})}else if(t instanceof F){if(t.width>1&&t.height>1){if(n&&i)return e(t.get(n-1,i-1));if(!n)return e(t.mapRow(function(e){return t.get(e,i-1)}));if(!i)return e(t.mapCol(function(e){return t.get(n-1,e)}))}if(1==t.width)return e(t.get(n-1,0));if(1==t.height)return e(t.get(0,i-1))}else e(new A("REF"))}).argsAsync([["range",["or","ref","matrix"]],["row",["or","integer+","null"]],["col",["or","integer+","null"]],["areanum",["or","integer++",["null",1]]]]),T("indirect",function(e){var t,n;try{if(t=this.formula,n=C.parseFormula(t.sheet,t.row,t.col,e),!(n.ast instanceof R))throw 1;return n.ast.absolute(t.row,t.col)}catch(i){return new A("REF")}}).args([["thing","string"]]),T("match",function(e,t,n){var i,o=1;return 0===n?i=G(e):n===-1?i=G("<="+e):1===n&&(i=G(">="+e)),t.each(function(t){return null!=t&&i(t)?(0!==n&&e!=t&&--o,!0):void o++},!0)&&o>0?o:new A("N/A")}).args([["value","anyvalue"],["range","matrix"],["type",["or",["values",-1,0,1],["null",1]]]]),T("offset",function(e,t,n,i,o){var r=(e instanceof I?e:e.topLeft).clone();return r.row+=t,r.col+=n,r.row<0||r.col<0?new A("VALUE"):i>1||o>1?new E(r,new I(r.row+i-1,r.col+o-1)).setSheet(e.sheet,e.hasSheet()):r}).args([["ref","area"],["*rows","integer"],["*cols","integer"],["*height",["or","integer++",["null","$ref.height()"]]],["*width",["or","integer++",["null","$ref.width()"]]]]),T("row",function(e){return e?e instanceof I?e.row+1:this.asMatrix(e).mapRow(function(t){return t+e.topLeft.row+1}):this.formula.row+1}).args([["ref",["or","area","null"]]]),T("rows",function(e){return e instanceof R?e.height():e.height}).args([["ref",["or","area","#matrix"]]]),T("vlookup",function(e,t,n,i){var o=null;return"number"!=typeof e&&(i=!1),"string"==typeof e&&(e=e.toLowerCase()),t.eachRow(function(n){var r=t.get(n,0);if(i){if(r>e)return!0;o=n}else if("string"==typeof r&&(r=r.toLowerCase()),r===e)return o=n,!0}),null==o?new A("N/A"):t.get(o,n-1)}).args([["value","anyvalue"],["range","matrix"],["col","integer++"],["approx",["or","logical",["null",!0]]]]),T("date",function(e,t,n){return z(e,t-1,n)}).args([["*year","integer"],["*month","integer"],["*date","integer"]]),T("day",function(e){return B(e).date}).args([["*date","date"]]),T("month",function(e){return B(e).month+1}).args([["*date","date"]]),T("year",function(e){return B(e).year}).args([["*date","date"]]),T("weekday",function(e){return B(e).day+1}).args([["*date","date"]]),T("weeknum",function(e,t){var n,i=z(B(e).year,0,1),o=B(i);return 21==t?(n=3-(o.day+6)%7,n<0&&(n+=7),i+=n,o.date+=n,o.day=4,t=1):t=1==t?0:2==t?1:(t-10)%7,n=o.day-t,n<0&&(n+=7),i-=n,Math.ceil((e+1-i)/7)}).args([["*date","date"],["*type",["or",["null",1],["values",1,2,11,12,13,14,15,16,17,21]]]]),T("isoweeknum",function(e){var t=B(e),n=t.day||7,i=Math.floor((t.ord-n+10)/7);return i<1?m(t.year-1):53==i&&i>m(t.year)?1:i}).args([["*date","date"]]),T("now",function(){return S.dateToSerial(new Date)}).args([]),T("today",function(){return 0|S.dateToSerial(new Date)}).args([]),T("time",function(e,t,n){return S.packTime(e,t,n,0)}).args([["*hours","integer"],["*minutes","integer"],["*seconds","integer"]]),T("hour",function(e){return S.unpackTime(e).hours}).args([["*time","datetime"]]),T("minute",function(e){return S.unpackTime(e).minutes}).args([["*time","datetime"]]),T("second",function(e){return S.unpackTime(e).seconds}).args([["*time","datetime"]]),T("edate",function(e,t){var n=B(e),i=n.month+t,o=n.year+Math.floor(i/12);return i%=12,i<0&&(i+=12),n=Math.min(n.date,P(o,i)),z(o,i,n)}).args([["*start_date","date"],["*months","integer"]]),T("eomonth",function(e,t){var n=B(e),i=n.month+t,o=n.year+Math.floor(i/12);return i%=12,i<0&&(i+=12),n=P(o,i),z(o,i,n)}).args([["*start_date","date"],["*months","integer"]]),T("workday",function(e,t,n){var i,o=t>0?1:-1;for(t=Math.abs(t),i=B(e).day;t>0;)e+=o,i=(i+o)%7,i>0&&i<6&&n.indexOf(e)<0&&--t;return e}).args([["start_date","date"],["days","integer"],["holidays",["collect","date"]]]),T("networkdays",function(e,t,n){var i,o,r;for(e>t&&(i=e,e=t,t=i),o=0,r=B(e).day;e<=t;)r>0&&r<6&&n.indexOf(e)<0&&o++,e++,r=(r+1)%7;return o}).args([["start_date","date"],["end_date","date"],["holidays",["collect","date"]]]),T("days",function(e,t){return t-e}).args([["*start_date","date"],["*end_date","date"]]),S._days_360=v,T("days360",v).args([["*start_date","date"],["*end_date","date"],["*method",["or","logical",["null",!1]]]]),T("yearfrac",function(e,t,n){switch(n){case 0:return v(e,t,!1)/360;case 1:return(t-e)/L(B(e).year);case 2:return(t-e)/360;case 3:return(t-e)/365;case 4:return v(e,t,!0)/360}}).args([["*start_date","date"],["*end_date","date"],["*method",["or",["null",0],["values",0,1,2,3,4]]]]),T("datevalue",function(e){var t=S.parseDate(e);return t?S.dateToSerial(t):new A("VALUE")}).args([["*text","string"]]),T("timevalue",function(e){var t,n,i,o,r=e.toLowerCase().match(/(\d+):(\d+)(:(\d+)(\.(\d+))?)?\s*(am?|pm?)?/);return r?(t=parseFloat(r[1]),n=parseFloat(r[2]),i=r[3]?parseFloat(r[4]):0,o=r[7],o&&(t>12||t<1)?new A("VALUE"):(/^p/.test(o)&&(t+=12),S.packTime(t,n,i,0))):new A("VALUE")}).args([["*text","string"]]),T("mdeterm",function(e){var t=e.each(function(e){if("number"!=typeof e)return new A("VALUE")},!0);return t||e.determinant()}).args([["m",["and","matrix",["assert","$m.width == $m.height"]]]]),T("transpose",function(e){return e.transpose()}).args([["range","matrix"]]),T("mmult",function(e,t){return e.multiply(t)}).args([["a","matrix"],["b",["and","matrix",["assert","$b.height == $a.width"]]]]),T("munit",function(e){return new F(this).unit(e)}).args([["n","integer+"]]),T("minverse",function(e){var t=e.each(function(e){if("number"!=typeof e)return new A("VALUE")},!0);return t||e.inverse()||new A("VALUE")}).args([["m",["and","matrix",["assert","$m.width == $m.height"]]]]),T("rand",function(){return Math.random()}).args([]),T("randbetween",function(e,t){return e+Math.floor((t-e+1)*Math.random())}).args([["min","integer"],["max",["and","integer",["assert","$max >= $min"]]]]),T("true",function(){return!0}).args([]),T("false",function(){return!0}).args([]),T("roman",function(e){return y.arabicToRoman(e).toUpperCase()}).args([["*number","integer"]]),T("arabic",function(e){var t=y.romanToArabic(e);return null==t?new A("VALUE"):t}).args([["*roman","string"]]),T("base",function(e,t,n){for(var i=e.toString(t).toUpperCase();i.length<n;)i="0"+i;return i}).args([["*number","integer"],["*radix",["and","integer",["[between]",2,36]]],["*minLen",["or","integer+",["null",0]]]]),T("decimal",function(e,t){var n,i,o;for(e=e.toUpperCase(),n=0,i=0;i<e.length;++i){if(o=e.charCodeAt(i),o>=48&&o<=57)o-=48;else{if(!(o>=65&&o<55+t))return new A("VALUE");o-=55}n=n*t+o}return n}).args([["*text","string"],["*radix",["and","integer",["[between]",2,36]]]]),T("char",function(e){return String.fromCharCode(e)}).args([["*code","integer+"]]),j=/[\0-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E3C-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FCD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA698-\uA69E\uA6F8-\uA6FF\uA78F\uA794-\uA79F\uA7AB-\uA7F7\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C5-\uA8CD\uA8DA-\uA8DF\uA8FC-\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9E0-\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAA7C-\uAA7F\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F-\uABBF\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE27-\uFE2F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]/g,T("clean",function(e){return e.replace(j,"")}).args([["*text","string"]]),T("code",function(e){return e.charAt(0)}).args([["*text","string"]]),D("unichar","char"),D("unicode","code"),T("concatenate",function(e){var t,n="";for(t=0;t<e.length;++t)n+=e[t];return n}).args([["+",["*text","string"]]]),T("dollar",function(e,t){for(var n="$#,##0DECIMALS;($#,##0DECIMALS)",i="",o=1;t-- >0;)i+="0";for(;++t<0;)o*=10;return""!==i?i="."+i:1!==o&&(e=Math.round(e/o)*o),n=n.replace(/DECIMALS/g,i),x.formatting.text(e,n)}).args([["*number","number"],["*decimals",["or","integer",["null",2]]]]),T("exact",function(e,t){return e===t}).args([["*text1","string"],["*text2","string"]]),T("find",function(e,t,n){var i=t.indexOf(e,n-1);return i<0?new A("VALUE"):i+1}).args([["*substring","string"],["*string","string"],["*start",["or","integer++",["null",1]]]]),T("fixed",function(e,t,n){var i,o=Math.pow(10,t);if(e=Math.round(e*o)/o,i=n?"0":"#,##0",t>0)for(i+=".";t-- >0;)i+="0";return x.formatting.text(e,i)}).args([["*number","number"],["*decimals",["or","integer",["null",2]]],["*noCommas",["or","boolean",["null",!1]]]]),T("left",function(e,t){return e.substr(0,t)}).args([["*text","string"],["*length",["or","integer+",["null",1]]]]),T("right",function(e,t){return e.substr(-t)}).args([["*text","string"],["*length",["or","integer+",["null",1]]]]),T("len",function(e){return e.length}).args([["*text","string"]]),T("lower",function(e){return e.toLowerCase()}).args([["*text","string"]]),T("upper",function(e){return e.toUpperCase()}).args([["*text","string"]]),T("ltrim",function(e){return e.replace(/^\s+/,"")}).args([["*text","string"]]),T("rtrim",function(e){return e.replace(/\s+$/,"")}).args([["*text","string"]]),T("trim",function(e){return e.replace(/^\s+|\s+$/,"")}).args([["*text","string"]]),T("mid",function(e,t,n){return e.substr(t-1,n)}).args([["*text","string"],["*start","integer++"],["*length","integer+"]]),T("proper",function(e){return e.toLowerCase().replace(/\b./g,function(e){return e.toUpperCase()})}).args([["*text","string"]]),T("replace",function(e,t,n,i){return e.substr(0,--t)+i+e.substr(t+n)}).args([["*text","string"],["*start","integer++"],["*length","integer+"],["*newText","string"]]),T("rept",function(e,t){for(var n="";t-- >0;)n+=e;return n}).args([["*text","string"],["*number","integer+"]]),T("search",function(e,t,n){var i=t.toLowerCase().indexOf(e.toLowerCase(),n-1);return i<0?new A("VALUE"):i+1}).args([["*substring","string"],["*string","string"],["*start",["or","integer++",["null",1]]]]),T("substitute",function(e,t,n,i){function o(){e=e.substring(0,r)+n+e.substring(r+t.length)}if(t===n)return e;for(var r=-1;(r=e.indexOf(t,r+1))>=0;)if(null==i)o();else if(0===--i){o();break}return e}).args([["*text","string"],["*oldText","string"],["*newText","string"],["*nth",["or","integer++","null"]]]),T("t",function(e){return"string"==typeof e?e:""}).args([["*value","anyvalue"]]),T("text",function(e,t){return x.formatting.text(e,t)}).args([["*value","anyvalue"],["*format","string"]]),T("value",function(e){return"number"==typeof e?e:"boolean"==typeof e?+e:(e=(e+"").replace(/[$€,]/g,""),e=parseFloat(e),isNaN(e)?new A("VALUE"):e)}).args([["*value","anyvalue"]]),_.prototype.toString=function(){return this.text},T("hyperlink",function(e,t){return new _(e,t)}).args([["*link","string"],["*text",["or","string",["null","$link"]]]]),T("iferror",function(e,t){return e instanceof A?t:e}).args([["*value","forced!"],["*value_if_error","anyvalue!"]]),G=function(){function e(e,t){if("string"==typeof t){var n=parseFloat(t);isNaN(n)||n!=t||(t=n)}return function(n){var i=t;return"string"==typeof n&&"string"==typeof i&&(n=n.toLowerCase(),i=i.toLowerCase()),e(n,i)}}function t(e){var t,n;return"string"==typeof e&&(e=e.toLowerCase()),/^[0-9.]+%$/.test(e)?(n=e.substr(0,e.length-1),t=parseFloat(n),isNaN(t)||t!=n||(e=t/100)):/^[0-9.]+$/.test(e)&&(t=parseFloat(e),isNaN(t)||t!=e||(e=t)),e}function n(e,n){return t(e)<t(n)}function i(e,n){return t(e)<=t(n)}function o(e,n){return t(e)>t(n)}function r(e,n){return t(e)>=t(n)}function a(e,t){return!s(e,t)}function s(e,n){return n instanceof RegExp?n.test(e):("string"!=typeof e&&"string"!=typeof n||(e+="",n+=""),t(e)==t(n))}var l=Object.create(null);return function(t){var c,d;return"function"==typeof t?t:(c=/^=(.*)$/.exec(t))?e(s,c[1]):(c=/^<>(.*)$/.exec(t))?e(a,c[1]):(c=/^<=(.*)$/.exec(t))?e(i,c[1]):(c=/^<(.*)$/.exec(t))?e(n,c[1]):(c=/^>=(.*)$/.exec(t))?e(r,c[1]):(c=/^>(.*)$/.exec(t))?e(o,c[1]):/[?*]/.exec(t)?(d=l[t],d||(d=t.replace(/(~\?|~\*|[\]({\+\.\|\^\$\\})\[]|[?*])/g,function(e){switch(e){case"~?":return"\\?";case"~*":return"\\*";case"?":return".";case"*":return".*";default:return"\\"+e}}),d=l[t]=RegExp("^"+d+"$","i")),e(s,d)):e(s,t)}}())},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/runtime.functions.2.min",["spreadsheet/runtime.min"],e)}(function(){"use strict";function e(e){var n,i,o,r;if(dt(e)>=3.3)return 1-t(e);for(n=e>0?1:-1,n==-1&&(e=-e),i=0,o=1,r=1;r<100;r++)i+=o,o*=2*e*e/(2*r+1);return 2*n/Math.sqrt(Math.PI)*e*Math.exp(-e*e)*i}function t(t){var n,i,o;if(dt(t)<3.3)return 1-e(t);for(n=1,t<0&&(n=-1,t=-t),i=t,o=8;o>=1;o-=.5)i=t+o/i;return i=1/(t+i),1==n?Math.exp(-t*t)/Math.sqrt(Math.PI)*i:2-Math.exp(-t*t)/Math.sqrt(Math.PI)*i}function n(e){var t,n=[1.000000000190015,76.18009172947146,-86.50532032941678,24.01409824083091,-1.231739572450155,.001208650973866179,-5395239384953e-18],i=e,o=e+5.5,r=n[0];for(o-=(e+.5)*Math.log(o),t=1;t<=6;t++)i+=1,r+=n[t]/i;return-o+Math.log(Math.sqrt(2*Math.PI)*r/e)}function i(e){if(e>0)return Math.exp(n(e));var t=Math.PI,o=-e;return-t/(o*i(o)*Math.sin(t*o))}function o(e,t){return n(e)+n(t)-n(e+t)}function r(e,t){return Math.exp(o(e,t))}function a(e,t){return t<e+1?s(e,t):1-l(e,t)}function s(e,t){var i,o=1/e,r=o,a=e,s=n(e);for(i=1;i<=st&&(a++,r*=t/a,o+=r,!(dt(r)<dt(o)*lt));i++);return o*Math.exp(-t+e*Math.log(t)-s)}function l(e,t){var i,o,r=ct,a=r,s=0,l=1,c=t+1-e,d=n(e);for(i=1;i<=st&&(s=c+l*s,dt(s)<ct&&(s=ct),a=c+l/a,dt(a)<ct&&(a=ct),s=1/s,o=a*s,r*=o,!(dt(o-1)<lt));i++)c+=2,l=-i*(i-e);return r*Math.exp(-t-d+e*Math.log(t))}function c(e,t,n,o){return o?a(t,e/n):Math.pow(e/n,t-1)*Math.exp(-e/n)/(n*i(t))}function d(e,t,n){var i,o,r,a,s,l;if(0===e)return 0;if(1==e)return 1/0;for(i=0,o=10,r=0,a=t*n,a>1&&(o*=a),s=0;s<st&&(r=.5*(i+o),l=c(r,t,n,!0),!(dt(e-l)<1e-16));s++)l>e?o=r:i=r;return r}function u(t,n){return n?.5+.5*e(t/Math.sqrt(2)):Math.exp(-t*t/2)/Math.sqrt(2*Math.PI)}function h(e){var t,n,i=[-39.69683028665376,220.9460984245205,-275.9285104469687,138.357751867269,-30.66479806614716,2.506628277459239],o=[-54.47609879822406,161.5858368580409,-155.6989798598866,66.80131188771972,-13.28068155288572],r=[-.007784894002430293,-.3223964580411365,-2.400758277161838,-2.549732539343734,4.374664141464968,2.938163982698783],a=[.007784695709041462,.3224671290700398,2.445134137142996,3.754408661907416],s=.02425,l=1-s;return e<s?(t=Math.sqrt(-2*Math.log(e)),(((((r[0]*t+r[1])*t+r[2])*t+r[3])*t+r[4])*t+r[5])/((((a[0]*t+a[1])*t+a[2])*t+a[3])*t+1)):l<e?(t=Math.sqrt(-2*Math.log(1-e)),-(((((r[0]*t+r[1])*t+r[2])*t+r[3])*t+r[4])*t+r[5])/((((a[0]*t+a[1])*t+a[2])*t+a[3])*t+1)):(t=e-.5,n=t*t,(((((i[0]*n+i[1])*n+i[2])*n+i[3])*n+i[4])*n+i[5])*t/(((((o[0]*n+o[1])*n+o[2])*n+o[3])*n+o[4])*n+1))}function p(e,t,n,i){return i?u((e-t)/n,!0):Math.exp(-(e-t)*(e-t)/(2*n*n))/(n*Math.sqrt(2*Math.PI))}function f(e,t,n){return t+n*h(e)}function g(e,t,n){return Math.exp((t-1)*Math.log(e)+(n-1)*Math.log(1-e)-o(t,n))}function m(e,t,n){var i=Math.exp(t*Math.log(e)+n*Math.log(1-e)-o(t,n));return e<(t+1)/(t+n+2)?i*v(t,n,e)/t:1-i*v(n,t,1-e)/n}function v(e,t,n){var i,o,r,a,s,l=e+t,c=e+1,d=e-1,u=1,h=1-l*n/c;for(dt(h)<ct&&(h=ct),h=1/h,s=h,i=1;i<=st&&(o=2*i,r=i*(t-i)*n/((d+o)*(e+o)),h=1+r*h,dt(h)<ct&&(h=ct),u=1+r/u,dt(u)<ct&&(u=ct),h=1/h,s*=h*u,r=-(e+i)*(l+i)*n/((e+o)*(c+o)),h=1+r*h,dt(h)<ct&&(h=ct),u=1+r/u,dt(u)<ct&&(u=ct),h=1/h,a=h*u,s*=a,!(dt(a-1)<lt));i++);return s}function _(e,t,n){var i,o,r=0,a=1,s=0;for(i=0;i<st&&(s=.5*(r+a),o=m(s,t,n),!(dt(e-o)<lt));i++)o>e?a=s:r=s;return s}function b(e,t,n,i,o){return m((e-i)/(o-i),t,n)}function w(e,t,n,i,o,r){return i?m((e-o)/(r-o),t,n):g((e-o)/(r-o),t,n)/(r-o)}function k(e,t,n,i,o){return i+(o-i)*_(e,t,n)}function y(e,t,n){return c(e,t/2,2,n)}function x(e,t){return 1-y(e,t,!0)}function C(e,t){return d(e,t/2,2)}function S(e,t){return C(1-e,t)}function T(e,t){var n,i,o,r,a,s=e.length,l=e[0].length,c=0;for(n=0;n<s;n++)for(i=0;i<l;i++)o=t[n][i],r=e[n][i]-o,r*=r,c+=r/o;return a=(s-1)*(l-1),x(c,a)}function D(e,t,n){return n?1-Math.exp(-t*e):t*Math.exp(-t*e)}function A(e,t,n){var i,o;if(n)return 1-y(2*t,2*(e+1),!0);for(i=0,o=2;o<=e;o++)i+=Math.log(o);return Math.exp(e*Math.log(t)-t-i)}function E(e,t,n,i){if(i)return m(t*e/(n+t*e),t/2,n/2);var o=t/n;return t/=2,n/=2,o/r(t,n)*Math.pow(o*e,t-1)/Math.pow(1+o*e,t+n)}function I(e,t,n){return 1-E(e,t,n,!0)}function M(e,t,n){return n/t*(1/k(e,n/2,t/2,0,1)-1)}function F(e,t,n){return n/t*(1/k(1-e,n/2,t/2,0,1)-1)}function R(e){var t,n=0,i=e.length;for(t=0;t<i;t++)n+=e[t];return n/i}function P(e,t){var n,i,o=0,r=e.length;for(n=0;n<r;n++)i=e[n]-t,o+=i*i;return o/(r-1)}function z(e,t){var n=e.length-1,i=t.length-1,o=P(e,R(e)),r=P(t,R(t));if(!o||!r)throw new et("DIV/0");return 2*E(o/r,n,i,!0)}function B(e){return.5*Math.log((1+e)/(1-e))}function L(e){var t=Math.exp(2*e);return(t-1)/(t+1)}function H(e,t,n){return n?1-.5*m(t/(e*e+t),t/2,.5):1/(Math.sqrt(t)*r(.5,t/2))*Math.pow(1+e*e/t,-(t+1)/2)}function N(e,t){return 1-H(e,t,!0)}function O(e,t){return e<0&&(e=-e),2*N(e,t)}function V(e,t){var n=_(2*Math.min(e,1-e),t/2,.5);return n=Math.sqrt(t*(1-n)/n),e>.5?n:-n}function W(e,t){return V(1-e/2,t)}function U(e,t,n,i){var o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b,w=e.length,k=t.length;if(1==i){for(a=0,s=0,l=0;l<w;l++)c=e[l]-t[l],a+=c,s+=c*c;return d=a/w,o=d/Math.sqrt((s-a*d)/(w*(w-1))),1==n?N(o,w-1):O(o,w-1)}return u=R(e),h=R(t),p=P(e,u),f=P(t,h),3==i?(g=p/w,m=f/k,v=g+m,_=g/v,b=m/v,r=1/(_*_/(w-1)+b*b/(k-1)),o=dt(u-h)/Math.sqrt(v),1==n?N(o,r):O(o,r)):(r=w+k-2,o=dt(u-h)*Math.sqrt(r*w*k/((w+k)*((w-1)*p+(k-1)*f))),1==n?N(o,r):O(o,r))}function q(e,t,n){return-V(e/2,n-1)*t/Math.sqrt(n)}function j(e,t,n){return-h(e/2)*t/Math.sqrt(n)}function G(e){return u(e,!0)-.5}function $(e){return u(e)}function Y(t,n,i,o){if(o)return.5+.5*e((Math.log(t)-n)/(i*Math.sqrt(2)));var r=Math.log(t)-n;return Math.exp(-r*r/(2*i*i))/(t*i*Math.sqrt(2*Math.PI))}function K(e,t,n){return Math.exp(f(e,t,n))}function Q(e,t,n,i){var o,r,a,s=e.length,l=0;for(o=0;o<s;o++){if(t[o]<=0||t[o]>1)throw new et("NUM");l+=t[o]}if(1!=l)throw new et("NUM");for(r=0,o=0;o<s;o++)a=e[o],a>=n&&a<=i&&(r+=t[o]);return r}function X(e,t){var n,i,o,r=R(t),a=R(e),s=0,l=0;for(n=0,i=e.length;n<i;n++)o=t[n]-r,s+=o*(e[n]-a),l+=o*o;return s/l}function J(e,t){var n,i,o,r=R(t),a=R(e),s=0,l=0;for(n=0,i=e.length;n<i;n++)o=t[n]-r,s+=o*(e[n]-a),l+=o*o;return a-s*r/l}function Z(e,t){var n,i,o,r,a,s,l,c,d;for(Ke(e,t),n=R(e),i=R(t),o=0,r=0,a=0,s=0,l=e.length;s<l;s++)c=e[s]-n,d=t[s]-i,o+=c*d,r+=c*c,a+=d*d;return o/Math.sqrt(r*a)}function ee(e,t){var n=Z(e,t);return n*n}function te(e,t){var n,i,o,r=t.length,a=R(t),s=R(e),l=0,c=0,d=0;for(n=0;n<r;n++)i=t[n]-a,o=e[n]-s,l+=o*o,c+=i*o,d+=i*i;return Math.sqrt((l-c*c/d)/(r-2))}function ne(e,t,n){var i,o,r,a,s,l,c=R(n),d=R(t),u=0,h=0;for(i=0,o=n.length;i<o;i++)r=n[i]-c,a=t[i]-d,u+=r*a,h+=r*r;if(0===h)throw new et("N/A");return s=u/h,l=d-s*c,l+s*e}function ie(e){var t,n=e.height,i=0;for(t=0;t<n;t++)i+=e.data[t][0];return i/n}function oe(e,t){var n,i,o=e.height,r=0;for(n=0;n<o;n++)i=e.data[n][0]-t,r+=i*i;return r}function re(e,t,n,i){var o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y=0;for(t||(t=e.map(function(){return++y})),n&&(t=t.clone(),t.eachRow(function(e){t.data[e].unshift(1)}),++t.width),o=t.transpose(),r=o.multiply(t).inverse().multiply(o).multiply(e),a=[],y=r.height-1;y>=0;y--)a.push(r.data[y][0]);if(n||a.push(0),!i)return this.asMatrix([a]);for(s=t.multiply(r),l=e.adds(s,!0),c=n?ie(s):0,d=oe(s,c),u=n?ie(l):0,h=oe(l,u),p=[],p.push(d,h),f=d/(d+h),g=e.height-t.width,m=Math.sqrt(h/g),v=[],v.push(f,m),_=n?d/(t.width-1)/(h/g):f/t.width/((1-f)/g),b=[],b.push(_,g),w=o.multiply(t).inverse(),k=[],y=w.height-1;y>=0;y--)k.push(Math.sqrt(w.data[y][y]*h/g));return this.asMatrix([a,k,v,b,p])}function ae(e,t,n,i){return re.call(this,e.map(Math.log),t,n,i).map(Math.exp)}function se(e,t,n,i){var o,r,a=0;return t||(t=e.map(function(){return++a})),i&&(t=t.clone(),t.eachRow(function(e){t.data[e].unshift(1)}),++t.width),o=t.transpose(),r=o.multiply(t).inverse().multiply(o).multiply(e),n?i&&(n=n.clone(),n.eachRow(function(e){n.data[e].unshift(1)}),++n.width):n=t,n.multiply(r)}function le(e,t,n,i){return se.call(this,e.map(Math.log),t,n,i).map(Math.exp)}function ce(e,t,n,i){var o,r,a,s,l,c=n||20,d=i||1e-7,u=t;for(o=1;o<=c;o++)if(r=e(u),a=r[0],s=r[1],l=a/s,u-=l,Math.abs(l)<d)return u;return new et("NUM")}function de(e,t,n,i,o){var r=Math.pow(1+e,t),a=e?(r-1)/e:t;return-(i*r+n*a*(1+e*o))}function ue(e,t,n,i,o){if(!e)return-i-n*t;var r=Math.pow(1+e,t);return-(i+n*(r-1)/e*(1+e*o))/r}function he(e,t,n,i,o){if(!e)return-(i+n)/t;var r=Math.pow(1+e,t);return-e*(i+n*r)/((1+e*o)*(r-1))}function pe(e,t,n,i,o){if(!e)return-(i+n)/t;var r=t*(1+e*o);return Math.log((r-i*e)/(r+n*e))/Math.log(1+e)}function fe(e,t,n,i,o,r){function a(r){var a=Math.pow(1+r,e-1),s=a*(1+r);return[n*s+t*(1/r+o)*(s-1)+i,e*n*a+t*(-(s-1)/(r*r)+(1/r+o)*e*a)]}return ce(a,r)}function ge(e,t,n,i,o,r){var a,s;return 1==r&&1==t?0:(a=he(e,n,i,o,r),s=de(e,t-1,a,i,r)*e,r?s/(1+e):s)}function me(e,t,n,i,o,r){var a=he(e,n,i,o,r);return a-ge(e,t,n,i,o,r)}function ve(e,t,n,i,o,r){var a,s,l,c,d,u;return 1==r&&(i--,o--),a=Math.pow(1+e,t),s=Math.pow(1+e,i-1),l=Math.pow(1+e,o),c=e*n*a/(a-1),d=s*n-(s-1)/e*c,u=l*n-(l-1)/e*c,u-d}function _e(e,t,n,i,o,r){var a,s=0;for(a=i;a<=o;a++)s+=ge(e,a,t,n,0,r);return s}function be(e,t){var n,i,o=0;for(n=0,i=t.length;n<i;n++)o+=t[n]*Math.pow(1+e,-n-1);return o}function we(e,t){function n(t){var n,i,o=0,r=0;for(n=0,i=e.length;n<i;n++)o+=e[n]*Math.pow(1+t,-n-1),r+=-n*e[n]*Math.pow(1+t,-n-2);return[o,r]}return ce(n,t)}function ke(e,t){return Math.pow(1+e/t,t)-1}function ye(e,t){return t*(Math.pow(e+1,1/t)-1)}function xe(e,t,n){var i,o,r=0;for(i=0,o=t.length;i<o;i++)r+=t[i]*Math.pow(1+e,(n[0]-n[i])/365);return r}function Ce(e,t,n){function i(n){var i,o,r,a=e[0],s=0;for(i=1,o=e.length;i<o;i++)r=(t[0]-t[i])/365,a+=e[i]*Math.pow(1+n,r),s+=r*e[i]*Math.pow(1+n,r-1);return[a,s]}return ce(i,n)}function Se(e,t,n,i){var o=-i*e;return o*(1-t/n)}function Te(e,t,n,i,o){var r,a,s=1-Math.pow(t/e,1/n);if(s=Math.floor(1e3*s+.5)/1e3,r=e*s*o/12,1==i)return r;for(a=1;a<n;a++){if(a==i-1)return(e-r)*s;r+=(e-r)*s}return(e-r)*s*(12-o)/12}function De(e,t,n,i,o){var r=o/n,a=-e*(Math.pow(1-r,i-1)-1),s=(e-a)*r;return s=Math.min(s,Math.max(0,e-a-t))}function Ae(e,t,n){return(e-t)/n}function Ee(e,t,n,i){return(e-t)*(n-i+1)*2/(n*(n+1))}function Ie(e,t,n,i,o,r,a){function s(e,n){var i,o,r;return o=1==p?1==n?e:0:e*Math.pow(1-p,n-1),r=e*Math.pow(1-p,n),i=r<t?o-t:o-r,i<0?0:i}function l(e,n,i){var o,r,a,l=e-t,c=Math.ceil(i),d=0,u=0,h=!1;for(r=1;r<=c;r++)h?o=d:(a=s(e,r),d=l/(n-r+1),d>a?(o=d,h=!0):(o=a,l-=a)),r==c&&(o*=i+1-c),u+=o;return u}var c,d,u,h,p=r>=n?1:r/n,f=Math.floor(i),g=Math.ceil(o),m=0;if(a)for(c=f+1;c<=g;c++)d=s(e,c),c==f+1?d*=Math.min(o,f+1)-i:c==g&&(d*=o+1-g),m+=d;else u=n,i!=Math.floor(i)&&r>1&&i>=n/2&&(h=i-n/2,i=n/2,o-=h,u+=1),e-=l(e,u,i),m=l(e,n-i,o-i);return m}function Me(e,t){var n=nt(e),i=n.month+t,o=n.year+Math.floor(i/12);return i%=12,i<0&&(i+=12),n=Math.min(n.date,ot(o,i)),tt(o,i,n)}function Fe(e,t,n){return 1==n||2==n||3==n?t-e:rt(e,t,n)}function Re(e,t,n){var i,o,r,a=nt(e),s=nt(t),l=s.year-a.year;l>0&&(l=(l-1)*n),r=12/n;do l++,i=Me(t,-l*r);while(e<i);return l--,o=Me(t,-l*r),[i,o]}function Pe(e,t,n){var i,o,r,a=nt(t),s=nt(e),l=a.year-s.year;for(l>0&&(l=(l-1)*n),i=e,r=12/n;t>i;)o=i,l++,i=Me(e,l*r);return[o,i]}function ze(e,t,n,i){var o=Re(e,t,n)[0];return Fe(o,e,i)}function Be(e,t,n,i){if(1==i){var o=Re(e,t,n);return Fe(o[0],o[1],1)}return 3==i?365/n:360/n}function Le(e,t,n,i){var o=Re(e,t,n)[1];return Fe(e,o,i)}function He(e,t,n){return Re(e,t,n)[0]}function Ne(e,t,n){return Re(e,t,n)[1]}function Oe(e,t,n){var i=nt(e),o=nt(t),r=12*(o.year-i.year)+o.month-i.month;return 1+(r*n/12|0)}function Ve(e,t){return 3==t?365:1==t?it(e)?366:365:360}function We(e,t,n,i,o){var r=Ve(nt(t).year,o);return n*i*Fe(e,t,o)/r}function Ue(e,t,n,i,o,r,a,s){function l(e,t){return(t-e)*r/v|0}var c,d,u,h,p,f,g=0,m=o*i/r,v=a%2===0?360:365;return n<=t?(c=Re(n,t,r),d=c[0],u=c[1],d<=e?m*Fe(e,n,a)/Fe(d,u,a):(c=Re(e,d,r),h=c[0],p=c[1],f=l(p,n),m*(f+Fe(e,p,a)/Fe(h,p,a)+(n<u?Fe(d,n,a)/Fe(d,u,a):0)))):(c=Pe(t,n,r),d=c[0],u=c[1],f=l(t,n),g=u==n?m*f:m*(f+Fe(d,n,a)/Fe(d,u,a)),s?(c=Re(e,t,r),d=c[0],u=c[1],f=l(e,t),g+=m*(f+Fe(e,u,a)/Fe(d,u,a))):g)}function qe(e,t,n,i,o){var r=o%2===0?360:it(nt(e).year)?366:365;return(i-n)/i*r/Fe(e,t,o)}function je(e,t,n,i,o){var r=o%2===0?360:it(nt(e).year)?366:365;return(i-n)/n*r/Fe(e,t,o)}function Ge(e,t,n,i,o){var r=o%2===0?360:it(nt(e).year)?366:365;return n/(1-i*Fe(e,t,o)/r)}function $e(e,t,n,i,o,r,a){var s=1+((t-e)*r/(a%2===0?360:365)|0),l=Re(e,t,r),c=l[0],d=l[1],u=Fe(c,e,a),h=Fe(e,d,a),p=Fe(c,d,a),f=100*n/r,g=i/r,m=h/p;return 1==s?(o+f)/(1+m*g)-u/p*f:o/Math.pow(1+g,s-1+m)+f*Math.pow(1+g,1-s-m)*(Math.pow(1+g,s)-1)/g-u/p*f}function Ye(e,t,n,i,o){var r=Fe(e,t,o),a=Ve(nt(t).year,o);return i-n*i*r/a}function Ke(e,t){for(var n=e.length;--n>=0;)"number"==typeof e[n]&&"number"==typeof t[n]||(e.splice(n,1),t.splice(n,1))}var Qe,Xe,Je,Ze,et,tt,nt,it,ot,rt,at,st,lt,ct,dt;kendo.support.browser.msie&&kendo.support.browser.version<9||(Qe=kendo.spreadsheet,Xe=Qe.calc,Je=Xe.runtime,Ze=Je.defineFunction,et=Je.CalcError,tt=Je.packDate,nt=Je.unpackDate,it=Je.isLeapYear,ot=Je.daysInMonth,rt=Je._days_360,Ze("ERF",function(t,n){return null==n?e(t):e(n)-e(t)}).args([["lower_limit","number"],["upper_limit",["or","number","null"]]]),Ze("ERFC",t).args([["x","number"]]),Ze("GAMMALN",n).args([["x","number++"]]),Ze("GAMMA",i).args([["x","number"]]),Ze("GAMMA.DIST",c).args([["x","number+"],["alpha","number++"],["beta","number++"],["cumulative","logical"]]),Ze("GAMMA.INV",d).args([["p",["and","number",["[between]",0,1]]],["alpha","number++"],["beta","number++"]]),Ze("NORM.S.DIST",u).args([["z","number"],["cumulative","logical"]]),Ze("NORM.S.INV",h).args([["p",["and","number",["[between]",0,1]]]]),Ze("NORM.DIST",p).args([["x","number"],["mean","number"],["stddev","number++"],["cumulative","logical"]]),Ze("NORM.INV",f).args([["p",["and","number",["[between]",0,1]]],["mean","number"],["stddev","number++"]]),Ze("BETADIST",b).args([["x","number"],["alpha","number++"],["beta","number++"],["A",["or","number",["null",0]]],["B",["or","number",["null",1]]],["?",["assert","$x >= $A","NUM"]],["?",["assert","$x <= $B","NUM"]],["?",["assert","$A < $B","NUM"]]]),Ze("BETA.DIST",w).args([["x","number"],["alpha","number++"],["beta","number++"],["cumulative","logical"],["A",["or","number",["null",0]]],["B",["or","number",["null",1]]],["?",["assert","$x >= $A","NUM"]],["?",["assert","$x <= $B","NUM"]],["?",["assert","$A < $B","NUM"]]]),Ze("BETA.INV",k).args([["p",["and","number",["[between]",0,1]]],["alpha","number++"],["beta","number++"],["A",["or","number",["null",0]]],["B",["or","number",["null",1]]]]),Ze("CHISQ.DIST",y).args([["x","number+"],["deg_freedom","integer++"],["cumulative","logical"]]),Ze("CHISQ.DIST.RT",x).args([["x","number+"],["deg_freedom","integer++"]]),Ze("CHISQ.INV",C).args([["p",["and","number",["[between]",0,1]]],["deg_freedom","integer++"]]),Ze("CHISQ.INV.RT",S).args([["p",["and","number",["[between]",0,1]]],["deg_freedom","integer++"]]),Ze("CHISQ.TEST",function(e,t){return T(e.data,t.data)}).args([["actual_range","matrix"],["expected_range","matrix"],["?",["assert","$actual_range.width == $expected_range.width"]],["?",["assert","$actual_range.height == $expected_range.height"]]]),Ze("EXPON.DIST",D).args([["x","number+"],["lambda","number++"],["cumulative","logical"]]),Ze("POISSON.DIST",A).args([["x","integer+"],["mean","number+"],["cumulative","logical"]]),Ze("F.DIST",E).args([["x","number+"],["deg_freedom1","integer++"],["deg_freedom2","integer++"],["cumulative","logical"]]),Ze("F.DIST.RT",I).args([["x","number+"],["deg_freedom1","integer++"],["deg_freedom2","integer++"]]),Ze("F.INV",F).args([["p",["and","number",["[between]",0,1]]],["deg_freedom1","integer++"],["deg_freedom2","integer++"]]),Ze("F.INV.RT",M).args([["p",["and","number",["[between]",0,1]]],["deg_freedom1","integer++"],["deg_freedom2","integer++"]]),Ze("F.TEST",z).args([["array1",["collect","number",1]],["array2",["collect","number",1]],["?",["assert","$array1.length >= 2","DIV/0"]],["?",["assert","$array2.length >= 2","DIV/0"]]]),Ze("FISHER",B).args([["x",["and","number",["(between)",-1,1]]]]),Ze("FISHERINV",L).args([["y","number"]]),Ze("T.DIST",H).args([["x","number"],["deg_freedom","integer++"],["cumulative","logical"]]),Ze("T.DIST.RT",N).args([["x","number"],["deg_freedom","integer++"]]), +Ze("T.DIST.2T",O).args([["x","number+"],["deg_freedom","integer++"]]),Ze("T.INV",V).args([["p",["and","number",["(between]",0,1]]],["deg_freedom","integer++"]]),Ze("T.INV.2T",W).args([["p",["and","number",["(between]",0,1]]],["deg_freedom","integer++"]]),Ze("T.TEST",U).args([["array1",["collect","number",1]],["array2",["collect","number",1]],["tails",["and","integer",["values",1,2]]],["type",["and","integer",["values",1,2,3]]],["?",["assert","$type != 1 || $array1.length == $array2.length","N/A"]],["?",["assert","$array1.length >= 2","DIV/0"]],["?",["assert","$array2.length >= 2","DIV/0"]]]),Ze("CONFIDENCE.T",q).args([["alpha",["and","number",["(between)",0,1]]],["standard_dev","number++"],["size",["and","integer++",["assert","$size != 1","DIV/0"]]]]),Ze("CONFIDENCE.NORM",j).args([["alpha",["and","number",["(between)",0,1]]],["standard_dev","number++"],["size",["and","integer++"]]]),Ze("GAUSS",G).args([["z","number"]]),Ze("PHI",$).args([["x","number"]]),Ze("LOGNORM.DIST",Y).args([["x","number++"],["mean","number"],["standard_dev","number++"],["cumulative","logical"]]),Ze("LOGNORM.INV",K).args([["probability",["and","number",["(between)",0,1]]],["mean","number"],["standard_dev","number++"]]),Ze("PROB",Q).args([["x_range",["collect","number",1]],["prob_range",["collect","number",1]],["lower_limit","number"],["upper_limit",["or","number",["null","$lower_limit"]]],["?",["assert","$prob_range.length == $x_range.length","N/A"]]]),Ze("SLOPE",X).args([["known_y",["collect","number",1]],["known_x",["collect","number",1]],["?",["assert","$known_x.length == $known_y.length","N/A"]],["?",["assert","$known_x.length > 0 && $known_y.length > 0","N/A"]]]),Ze("INTERCEPT",J).args([["known_y",["collect","number",1]],["known_x",["collect","number",1]],["?",["assert","$known_x.length == $known_y.length","N/A"]],["?",["assert","$known_x.length > 0 && $known_y.length > 0","N/A"]]]),Ze("PEARSON",Z).args([["array1",["collect!","anything",1]],["array2",["collect!","anything",1]],["?",["assert","$array2.length == $array1.length","N/A"]],["?",["assert","$array2.length > 0 && $array1.length > 0","N/A"]]]),Ze("RSQ",ee).args([["known_y",["collect","number",1]],["known_x",["collect","number",1]],["?",["assert","$known_x.length == $known_y.length","N/A"]],["?",["assert","$known_x.length > 0 && $known_y.length > 0","N/A"]],["?",["assert","$known_x.length != 1 && $known_y.length != 1","N/A"]]]),Ze("STEYX",te).args([["known_y",["collect","number",1]],["known_x",["collect","number",1]],["?",["assert","$known_x.length == $known_y.length","N/A"]],["?",["assert","$known_x.length >= 3 && $known_y.length >= 3","DIV/0"]]]),Ze("FORECAST",ne).args([["x","number"],["known_y",["collect","number",1]],["known_x",["collect","number",1]],["?",["assert","$known_x.length == $known_y.length","N/A"]],["?",["assert","$known_x.length > 0 && $known_y.length > 0","N/A"]]]),Ze("LINEST",re).args([["known_y","matrix"],["known_x",["or","matrix","null"]],["const",["or","logical",["null",!0]]],["stats",["or","logical",["null",!1]]]]),Ze("LOGEST",ae).args([["known_y","matrix"],["known_x",["or","matrix","null"]],["const",["or","logical",["null",!0]]],["stats",["or","logical",["null",!1]]]]),Ze("TREND",se).args([["known_y","matrix"],["known_x",["or","matrix","null"]],["new_x",["or","matrix","null"]],["const",["or","logical",["null",!0]]]]),Ze("GROWTH",le).args([["known_y","matrix"],["known_x",["or","matrix","null"]],["new_x",["or","matrix","null"]],["const",["or","logical",["null",!0]]]]),Ze("FV",de).args([["rate","number"],["nper","number"],["pmt",["or","number",["null",0]]],["pv",["or","number",["null",0]]],["type",["or",["values",0,1],["null",0]]],["?",["assert","$pmt || $pv"]]]),Ze("PV",ue).args([["rate","number"],["nper","number"],["pmt",["or","number",["null",0]]],["fv",["or","number",["null",0]]],["type",["or",["values",0,1],["null",0]]]]),Ze("PMT",he).args([["rate","number"],["nper","number"],["pmt","number"],["fv",["or","number",["null",0]]],["type",["or",["values",0,1],["null",0]]]]),Ze("NPER",pe).args([["rate","number"],["pmt","number"],["pv","number"],["fv",["or","number",["null",0]]],["type",["or",["values",0,1],["null",0]]]]),Ze("RATE",fe).args([["nper","number"],["pmt",["or","number",["null",0]]],["pv","number"],["fv",["or","number",["null",0]]],["type",["or",["values",0,1],["null",0]]],["guess",["or","number++",["null",.01]]],["?",["assert","$pmt || $fv"]]]),Ze("IPMT",ge).args([["rate","number"],["per","number++"],["nper","number++"],["pv","number"],["fv",["or","number",["null",0]]],["type",["or",["values",0,1],["null",0]]],["?",["assert","$per >= 1 && $per <= $nper"]]]),Ze("PPMT",me).args([["rate","number"],["per","number++"],["nper","number++"],["pv","number"],["fv",["or","number",["null",0]]],["type",["or",["values",0,1],["null",0]]],["?",["assert","$per >= 1 && $per <= $nper"]]]),Ze("CUMPRINC",ve).args([["rate","number++"],["nper","number++"],["pv","number++"],["start_period","number++"],["end_period","number++"],["type",["or",["values",0,1],["null",0]]],["?",["assert","$end_period >= $start_period","NUM"]]]),Ze("CUMIPMT",_e).args([["rate","number++"],["nper","number++"],["pv","number++"],["start_period","number++"],["end_period","number++"],["type",["or",["values",0,1],["null",0]]],["?",["assert","$end_period >= $start_period","NUM"]]]),Ze("NPV",be).args([["rate","number"],["values",["collect","number"]],["?",["assert","$values.length > 0","N/A"]]]),Ze("IRR",we).args([["values",["collect","number",1]],["guess",["or","number",["null",.1]]]]),Ze("EFFECT",ke).args([["nominal_rate","number++"],["npery","integer++"]]),Ze("NOMINAL",ye).args([["effect_rate","number++"],["npery","integer++"]]),Ze("XNPV",xe).args([["rate","number"],["values",["collect","number",1]],["dates",["collect","date",1]],["?",["assert","$values.length == $dates.length","NUM"]]]),Ze("XIRR",Ce).args([["values",["collect","number",1]],["dates",["collect","date",1]],["guess",["or","number",["null",.1]]],["?",["assert","$values.length == $dates.length","NUM"]]]),Ze("ISPMT",Se).args([["rate","number"],["per","number++"],["nper","number++"],["pv","number"],["?",["assert","$per >= 1 && $per <= $nper"]]]),Ze("DB",Te).args([["cost","number"],["salvage","number"],["life","number++"],["period","number++"],["month",["or","number",["null",12]]]]),Ze("DDB",De).args([["cost","number"],["salvage","number"],["life","number++"],["period","number++"],["factor",["or","number",["null",2]]]]),Ze("SLN",Ae).args([["cost","number"],["salvage","number"],["life","number++"]]),Ze("SYD",Ee).args([["cost","number"],["salvage","number"],["life","number++"],["per","number++"]]),Ze("VDB",Ie).args([["cost","number+"],["salvage","number+"],["life","number++"],["start_period","number+"],["end_period","number+"],["factor",["or","number+",["null",2]]],["no_switch",["or","logical",["null",!1]]],["?",["assert","$end_period >= $start_period","NUM"]]]),at=[["settlement","date"],["maturity","date"],["frequency",["and","integer",["values",1,2,4]]],["basis",["or",["null",0],["and","integer",["values",0,1,2,3,4]]]],["?",["assert","$settlement < $maturity","NUM"]]],Ze("COUPDAYBS",ze).args(at),Ze("COUPDAYS",Be).args(at),Ze("COUPDAYSNC",Le).args(at),Ze("COUPPCD",He).args(at),Ze("COUPNCD",Ne).args(at),Ze("COUPNUM",Oe).args(at),Ze("ACCRINTM",We).args([["issue","date"],["settlement","date"],["rate","number++"],["par",["or",["null",1e3],"number++"]],["basis",["or",["null",0],["and","integer",["values",0,1,2,3,4]]]],["?",["assert","$issue < $settlement","NUM"]]]),Ze("ACCRINT",Ue).args([["issue","date"],["first_interest","date"],["settlement","date"],["rate","number++"],["par",["or",["null",1e3],"number++"]],["frequency",["and","integer",["values",1,2,4]]],["basis",["or",["null",0],["and","integer",["values",0,1,2,3,4]]]],["calc_method",["or","logical",["null",!0]]],["?",["assert","$issue < $settlement","NUM"]]]),Ze("DISC",qe).args([["settlement","date"],["maturity","date"],["pr","number++"],["redemption","number++"],["basis",["or",["null",0],["and","integer",["values",0,1,2,3,4]]]],["?",["assert","$settlement < $maturity","NUM"]]]),Ze("INTRATE",je).args([["settlement","date"],["maturity","date"],["investment","number++"],["redemption","number++"],["basis",["or",["null",0],["and","integer",["values",0,1,2,3,4]]]],["?",["assert","$settlement < $maturity","NUM"]]]),Ze("RECEIVED",Ge).args([["settlement","date"],["maturity","date"],["investment","number++"],["discount","number++"],["basis",["or",["null",0],["and","integer",["values",0,1,2,3,4]]]],["?",["assert","$settlement < $maturity","NUM"]]]),Ze("PRICE",$e).args([["settlement","date"],["maturity","date"],["rate","number++"],["yld","number++"],["redemption","number++"],["frequency",["and","integer",["values",1,2,4]]],["basis",["or",["null",0],["and","integer",["values",0,1,2,3,4]]]],["?",["assert","$settlement < $maturity","NUM"]]]),Ze("PRICEDISC",Ye).args([["settlement","date"],["maturity","date"],["discount","number++"],["redemption","number++"],["basis",["or",["null",0],["and","integer",["values",0,1,2,3,4]]]],["?",["assert","$settlement < $maturity","NUM"]]]),st=300,lt=2.2204e-16,ct=1e-30,dt=Math.abs)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/borderpalette.min",["kendo.core.min","kendo.colorpicker.min","kendo.popup.min"],e)}(function(){!function(e){function t(e){return function(t){return t.preventDefault(),e.apply(this,arguments)}}var n,i,o,r,a,s;e.support.browser.msie&&e.support.browser.version<9||(n=e.jQuery,i=["allBorders","insideBorders","insideHorizontalBorders","insideVerticalBorders","outsideBorders","leftBorder","topBorder","rightBorder","bottomBorder","noBorders"],o=e.spreadsheet.messages.borderPalette={allBorders:"All borders",insideBorders:"Inside borders",insideHorizontalBorders:"Inside horizontal borders",insideVerticalBorders:"Inside vertical borders",outsideBorders:"Outside borders",leftBorder:"Left border",topBorder:"Top border",rightBorder:"Right border",bottomBorder:"Bottom border",noBorders:"No border"},r=e.spreadsheet.messages.colorPicker={reset:"Reset color",customColor:"Custom color...",apply:"Apply",cancel:"Cancel"},a=e.ui.Widget.extend({init:function(n,i){e.ui.Widget.call(this,n,i),this.element=n,this.color=i.color,this._resetButton(),this._colorPalette(),this._customColorPalette(),this._customColorButton(),this.resetButton.on("click",t(this.resetColor.bind(this))),this.customColorButton.on("click",t(this.customColor.bind(this)))},options:{name:"ColorChooser"},events:["change"],destroy:function(){e.unbind(this.dialog.element.find(".k-action-buttons")),this.dialog.destroy(),this.colorPalette.destroy(),this.resetButton.off("click"),this.customColorButton.off("click")},value:function(e){return void 0===e?this.color:(this.color=e,this.customColorButton.find(".k-icon").css("background-color",this.color),this.colorPalette.value(null),this.flatColorPicker.value(this.color),void 0)},_change:function(e){this.color=e,this.trigger("change",{value:e})},_colorPalette:function(){var e=n("<div />",{"class":"k-spreadsheet-color-palette"}),t=this.colorPalette=n("<div />").kendoColorPalette({palette:["#ffffff","#000000","#d6ecff","#4e5b6f","#7fd13b","#ea157a","#feb80a","#00addc","#738ac8","#1ab39f","#f2f2f2","#7f7f7f","#a7d6ff","#d9dde4","#e5f5d7","#fad0e4","#fef0cd","#c5f2ff","#e2e7f4","#c9f7f1","#d8d8d8","#595959","#60b5ff","#b3bcca","#cbecb0","#f6a1c9","#fee29c","#8be6ff","#c7d0e9","#94efe3","#bfbfbf","#3f3f3f","#007dea","#8d9baf","#b2e389","#f272af","#fed46b","#51d9ff","#aab8de","#5fe7d5","#a5a5a5","#262626","#003e75","#3a4453","#5ea226","#af0f5b","#c58c00","#0081a5","#425ea9","#138677","#7f7f7f","#0c0c0c","#00192e","#272d37","#3f6c19","#750a3d","#835d00","#00566e","#2c3f71","#0c594f"],value:this.color,change:function(e){this.customColorButton.find(".k-icon").css("background-color","transparent"),this.flatColorPicker.value(null),this._change(e.value)}.bind(this)}).data("kendoColorPalette");e.append(t.wrapper).appendTo(this.element)},_customColorPalette:function(){var t,i,o=n("<div />",{"class":"k-spreadsheet-window",html:"<div></div><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: apply'>"+r.apply+"</button><button class='k-button' data-bind='click: close'>"+r.cancel+"</button></div>"}),a=this.dialog=o.appendTo(document.body).kendoWindow({animation:!1,scrollable:!1,resizable:!1,maximizable:!1,modal:!0,visible:!1,width:268,open:function(){this.center()}}).data("kendoWindow");a.one("activate",function(){this.element.find("[data-role=flatcolorpicker]").data("kendoFlatColorPicker")._hueSlider.resize()}),t=this.flatColorPicker=a.element.children().first().kendoFlatColorPicker().data("kendoFlatColorPicker"),i=e.observable({apply:function(){this.customColorButton.find(".k-icon").css("background-color",t.value()),this.colorPalette.value(null),this._change(t.value()),a.close()}.bind(this),close:function(){t.value(null),a.close()}}),e.bind(a.element.find(".k-action-buttons"),i)},_resetButton:function(){this.resetButton=n("<a class='k-button k-reset-color' href='#'><span class='k-icon k-i-reset-color'></span>"+r.reset+"</a>").appendTo(this.element)},_customColorButton:function(){this.customColorButton=n("<a class='k-button k-custom-color' href='#'><span class='k-icon'></span>"+r.customColor+"</a>").appendTo(this.element)},resetColor:function(){this.colorPalette.value(null),this.flatColorPicker.value(null),this._change(null)},customColor:function(){this.dialog.open()}}),s=e.ui.Widget.extend({init:function(n,i){e.ui.Widget.call(this,n,i),this.element=n,this.color="#000",this.element.addClass("k-spreadsheet-border-palette"),this._borderTypePalette(),this._borderColorPalette(),this.element.on("click",".k-spreadsheet-border-type-palette .k-button",t(this._click.bind(this)))},options:{name:"BorderPalette"},events:["change"],destroy:function(){this.colorChooser.destroy(),this.element.off("click")},_borderTypePalette:function(){var t=o,r=i.map(function(n){return'<a title="'+t[n]+'" aria-label="'+t[n]+'" href="#" data-border-type="'+n+'" class="k-button k-button-icon"><span class="k-icon k-i-'+e.toHyphens(n)+'"></span></a>'}).join(""),a=n("<div />",{"class":"k-spreadsheet-border-type-palette",html:r});a.appendTo(this.element)},_borderColorPalette:function(){var e=n("<div />",{"class":"k-spreadsheet-border-color-palette"});e.appendTo(this.element),this.colorChooser=new a(e,{color:this.color,change:this._colorChange.bind(this)})},_click:function(e){this.type=n(e.currentTarget).data("borderType"),this.trigger("change",{type:this.type,color:this.color})},_colorChange:function(e){this.color=e.value,this.type&&this.trigger("change",{type:this.type,color:this.color})}}),e.spreadsheet.ColorChooser=a,e.spreadsheet.BorderPalette=s)}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/toolbar.min",["kendo.toolbar.min","kendo.colorpicker.min","kendo.combobox.min","kendo.dropdownlist.min","kendo.popup.min","spreadsheet/borderpalette.min"],e)}(function(){!function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C,S,T,D,A,E,I,M,F,R,P,z;e.support.browser.msie&&e.support.browser.version<9||(t=e.jQuery,n=e.ui.ToolBar,i=e.spreadsheet.messages.toolbar={addColumnLeft:"Add column left",addColumnRight:"Add column right",addRowAbove:"Add row above",addRowBelow:"Add row below",alignment:"Alignment",alignmentButtons:{justtifyLeft:"Align left",justifyCenter:"Center",justifyRight:"Align right",justifyFull:"Justify",alignTop:"Align top",alignMiddle:"Align middle",alignBottom:"Align bottom"},backgroundColor:"Background",bold:"Bold",borders:"Borders",copy:"Copy",cut:"Cut",deleteColumn:"Delete column",deleteRow:"Delete row",filter:"Filter",fontFamily:"Font",fontSize:"Font size",format:"Custom format...",formatTypes:{automatic:"Automatic",text:"Text",number:"Number",percent:"Percent",financial:"Financial",currency:"Currency",date:"Date",time:"Time",dateTime:"Date time",duration:"Duration",moreFormats:"More formats..."},formatDecreaseDecimal:"Decrease decimal",formatIncreaseDecimal:"Increase decimal",freeze:"Freeze panes",freezeButtons:{freezePanes:"Freeze panes",freezeRows:"Freeze rows",freezeColumns:"Freeze columns",unfreeze:"Unfreeze panes"},insertComment:"Insert comment",insertImage:"Insert image",italic:"Italic",merge:"Merge cells",mergeButtons:{mergeCells:"Merge all",mergeHorizontally:"Merge horizontally",mergeVertically:"Merge vertically",unmerge:"Unmerge"},open:"Open...",paste:"Paste",quickAccess:{redo:"Redo",undo:"Undo"},exportAs:"Export...",toggleGridlines:"Toggle gridlines",sort:"Sort",sortButtons:{sortRangeAsc:"Sort range A to Z",sortRangeDesc:"Sort range Z to A"},textColor:"Text Color",textWrap:"Wrap text",underline:"Underline",validation:"Data validation...",hyperlink:"Link"},o={home:["open","exportAs",["cut","copy","paste"],["bold","italic","underline"],"hyperlink","insertComment","insertImage","backgroundColor","textColor","borders","fontSize","fontFamily","alignment","textWrap",["formatDecreaseDecimal","formatIncreaseDecimal"],"format","merge","freeze","filter","toggleGridlines"],insert:[["addColumnLeft","addColumnRight","addRowBelow","addRowAbove"],["deleteColumn","deleteRow"]],data:["sort","filter","validation"]},r={open:{type:"open",overflow:"never",iconClass:"file-excel"},exportAs:{type:"exportAsDialog",dialogName:"exportAs",overflow:"never",text:"",iconClass:"file-excel"},bold:{type:"button",command:"PropertyChangeCommand",property:"bold",value:!0,iconClass:"bold",togglable:!0},italic:{type:"button",command:"PropertyChangeCommand",property:"italic",value:!0,iconClass:"italic",togglable:!0},underline:{type:"button",command:"PropertyChangeCommand",property:"underline",value:!0,iconClass:"underline",togglable:!0},formatDecreaseDecimal:{type:"button",command:"AdjustDecimalsCommand",value:-1,iconClass:"decimal-decrease"},formatIncreaseDecimal:{type:"button",command:"AdjustDecimalsCommand",value:1,iconClass:"decimal-increase"},textWrap:{type:"button",command:"TextWrapCommand",property:"wrap",value:!0,iconClass:"text-wrap",togglable:!0},cut:{type:"button",command:"ToolbarCutCommand",iconClass:"cut"},copy:{type:"button",command:"ToolbarCopyCommand",iconClass:"copy"},paste:{type:"button",command:"ToolbarPasteCommand",iconClass:"paste"},separator:{type:"separator"},alignment:{type:"alignment",iconClass:"align-left"},backgroundColor:{type:"colorPicker",property:"background",iconClass:"paint"},textColor:{type:"colorPicker",property:"color",iconClass:"foreground-color"},fontFamily:{type:"fontFamily",property:"fontFamily",iconClass:"font-family"},fontSize:{type:"fontSize",property:"fontSize",iconClass:"font-size"},format:{type:"format",property:"format",iconClass:"custom-format"},filter:{type:"filter",property:"hasFilter",iconClass:"filter"},merge:{type:"merge",iconClass:"cells-merge"},freeze:{type:"freeze",iconClass:"pane-freeze"},borders:{type:"borders",iconClass:"borders-all"},formatCells:{type:"dialog",dialogName:"formatCells",overflow:"never"},hyperlink:{type:"dialog",dialogName:"hyperlink",iconClass:"link-horizontal",overflow:"never",text:""},toggleGridlines:{type:"button",command:"GridLinesChangeCommand",property:"gridLines",value:!0,iconClass:"border-no",togglable:!0},insertComment:{type:"dialog",dialogName:"insertComment",property:"comment",togglable:!0,overflow:"never",iconClass:"comment",text:""},insertImage:{type:"dialog",dialogName:"insertImage",overflow:"never",iconClass:"image",text:""},addColumnLeft:{type:"button",command:"AddColumnCommand",value:"left",iconClass:"table-column-insert-left"},addColumnRight:{type:"button",command:"AddColumnCommand",value:"right",iconClass:"table-column-insert-right"},addRowBelow:{type:"button",command:"AddRowCommand",value:"below",iconClass:"table-row-insert-below"},addRowAbove:{type:"button",command:"AddRowCommand",value:"above",iconClass:"table-row-insert-above"},deleteColumn:{type:"button",command:"DeleteColumnCommand",iconClass:"table-column-delete"},deleteRow:{type:"button",command:"DeleteRowCommand",iconClass:"table-row-delete"},sort:{type:"sort",iconClass:"sort-desc"},validation:{type:"dialog",dialogName:"validation",iconClass:"exception",overflow:"never"}},a=n.extend({init:function(e,i){var o,r;i.items=this._expandTools(i.tools||a.prototype.options.tools[i.toolbarName]),n.fn.init.call(this,e,i),o=this._click.bind(this),this.element.addClass("k-spreadsheet-toolbar"),this._addSeparators(this.element),r=this,this.element.on("keydown",function(e){var n;9===e.keyCode&&(n=r._nextTool(e.shiftKey?-1:1),n&&(document.activeElement.blur(),t(n).is(".k-upload-button")&&t(n).addClass("k-state-focused"),t(n).find("input").length?t(n).find("input").focus():n.focus(),e.preventDefault()))}),this.element.on("focusout",function(){t(this).find(".k-toolbar-first-visible").removeClass("k-state-focused")}),this.bind({click:o,toggle:o})},_nextTool:function(e){var n=this,i=n.element.find(".k-widget, .k-button, .k-button-group > a"),o=i.index(t(document.activeElement).closest(".k-widget, .k-button, .k-button-group > a"));if(o>0)return i[o+e]},_addSeparators:function(e){var t=e.children(".k-widget, a.k-button, .k-button-group");t.before("<span class='k-separator' />")},_expandTools:function(e){function n(e){var o=t.isPlainObject(e)?e:r[e]||{},a="k-icon k-i-"+o.iconClass,s=o.type,l={button:{showText:"overflow"},colorPicker:{toolIcon:a,spriteCssClass:a},borders:{spriteCssClass:a},alignment:{spriteCssClass:a},merge:{spriteCssClass:a},freeze:{spriteCssClass:a}},c=t.extend({name:o.name||e,text:i[o.name||e],icon:o.iconClass,attributes:{title:i[o.name||e],"aria-label":i[o.name||e]}},l[s],o);return"splitButton"==s&&(c.menuButtons=c.menuButtons.map(n)),c.attributes["data-tool"]=e,o.property&&(c.attributes["data-property"]=o.property),c}return e.reduce(function(e,i){return e.push(t.isArray(i)?{type:"buttonGroup",buttons:i.map(n)}:n.call(this,i)),e},[])},_click:function(e){var t,n=e.target.attr("data-tool"),i=r[n]||{},o=i.command;o&&(t={command:o,options:{property:i.property||null,value:i.value||null}},"boolean"==typeof t.options.value&&(t.options.value=!!e.checked||null),this.action(t))},events:["click","toggle","open","close","overflowOpen","overflowClose","action","dialog"],options:{name:"SpreadsheetToolBar",resizable:!0,tools:o},action:function(e){this.trigger("action",e)},dialog:function(e){this.trigger("dialog",e)},refresh:function(t){function n(e,t){var n,i=e.toolbar,o=e.overflow,r=i&&i.options.togglable||o&&o.options.togglable;r&&(n=!1,"boolean"==typeof t?n=t:"string"==typeof t&&(n=i.options.hasOwnProperty("value")?i.options.value===t:null!=t),i.toggle(n),o&&o.toggle(n))}function i(e,t){var n=e.toolbar,i=e.overflow;n&&n.update&&n.update(t),i&&i.update&&i.update(t)}var o,r,a,s,l=t,c=this._tools();for(o=0;o<c.length;o++)r=c[o].property,a=c[o].tool,s=e.isFunction(l[r])?l[r]():l,"gridLines"==r&&(s=l.sheet().showGridLines()),"button"===a.type?n(a,s):i(a,s);this.resize()},_tools:function(){return this.element.find("[data-property]").toArray().map(function(e){return e=t(e),{property:e.attr("data-property"),tool:this._getItem(e)}}.bind(this))},destroy:function(){this.element.find("[data-command],.k-button").each(function(){var e=t(this),n=e.data("instance");n&&n.destroy&&n.destroy()}),n.fn.destroy.call(this)}}),e.spreadsheet.ToolBar=a,s=e.toolbar.Item.extend({init:function(e,n){var i=t("<select />").attr("title",e.attributes.title).attr("aria-label",e.attributes.title).kendoDropDownList({height:"auto"}).data("kendoDropDownList");this.dropDownList=i,this.element=i.wrapper,this.options=e,this.toolbar=n,this.attributes(),this.addUidAttr(),this.addOverflowAttr(),i.bind("open",this._open.bind(this)),i.bind("change",this._change.bind(this)),this.element.width(e.width).attr({"data-command":"PropertyChangeCommand","data-property":e.property})},_open:function(){var t,n=this.dropDownList,i=n.list;i.css({whiteSpace:"nowrap",width:"auto"}),t=i.width(),t>0?t+=20:t=n._listWidth,i.css("width",t+e.support.scrollbar()),n._listWidth=t},_change:function(e){var t=this,n=e.sender,i=n.value(),o=n.dataItem(),r=o?o.popup:void 0;r?setTimeout(function(){t.toolbar.dialog({name:r})}):t.toolbar.action({command:"PropertyChangeCommand",options:{property:this.options.property,value:"null"==i?null:i}})},value:function(e){return void 0===e?this.dropDownList.value():void this.dropDownList.value(e)}}),l=e.toolbar.Item.extend({init:function(e,n){this.element=t("<a href='#' class='k-button k-button-icon'><span class='"+e.spriteCssClass+"'></span><span class='k-icon k-i-arrow-60-down'></span></a>"),this.element.on("click touchend",this.open.bind(this)).attr("data-command",e.command),this.options=e,this.toolbar=n,this.attributes(),this.addUidAttr(),this.addOverflowAttr(),this._popup()},destroy:function(){this.popup.destroy()},open:function(e){e.preventDefault(),this.popup.toggle()},_popup:function(){var e=this.element;this.popup=t("<div class='k-spreadsheet-popup' />").appendTo(e).kendoPopup({anchor:e}).data("kendoPopup")}}),e.toolbar.registerComponent("dialog",e.toolbar.ToolBarButton.extend({init:function(t,n){e.toolbar.ToolBarButton.fn.init.call(this,t,n),this._dialogName=t.dialogName,this.element.bind("click touchend",this.open.bind(this)).data("instance",this)},open:function(){this.toolbar.dialog({name:this._dialogName})}})),e.toolbar.registerComponent("exportAsDialog",e.toolbar.Item.extend({init:function(e,n){this._dialogName=e.dialogName,this.toolbar=n,this._title=e.attributes.title,this.element=t("<button type='button' class='k-button k-button-icon'><span class='k-icon k-i-download' /></button>").attr("title",this._title).attr("aria-label",this._title).data("instance",this),this.element.bind("click",this.open.bind(this)).data("instance",this)},open:function(){this.toolbar.dialog({name:this._dialogName})}})),c=e.toolbar.OverflowButton.extend({init:function(t,n){e.toolbar.OverflowButton.fn.init.call(this,t,n),this.element.on("click touchend",this._click.bind(this)),this.message=this.options.text;var i=this.element.data("button");this.element.data(this.options.type,i)},_click:t.noop}),d=l.extend({init:function(t,n){l.fn.init.call(this,t,n),this.popup.element.addClass("k-spreadsheet-colorpicker"),this.colorChooser=new e.spreadsheet.ColorChooser(this.popup.element,{change:this._colorChange.bind(this)}),this.element.attr({"data-property":t.property}),this.element.data({type:"colorPicker",colorPicker:this,instance:this})},destroy:function(){this.colorChooser.destroy(),l.fn.destroy.call(this)},update:function(e){this.value(e)},value:function(e){this.colorChooser.value(e)},_colorChange:function(e){this.toolbar.action({command:"PropertyChangeCommand",options:{property:this.options.property,value:e.sender.value()}}),this.popup.close()}}),u=c.extend({init:function(e,t){e.iconName="text",c.fn.init.call(this,e,t)},_click:function(){this.toolbar.dialog({name:"colorPicker",options:{title:this.options.property,property:this.options.property}})}}),e.toolbar.registerComponent("colorPicker",d,u),h=[8,9,10,11,12,13,14,16,18,20,22,24,26,28,36,48,72],p=12,f=e.toolbar.Item.extend({init:function(e,n){var i=t("<input />").attr("aria-label",e.attributes.title).kendoComboBox({change:this._valueChange.bind(this),clearButton:!1,dataSource:e.fontSizes||h,value:p}).data("kendoComboBox");this.comboBox=i,this.element=i.wrapper,this.options=e,this.toolbar=n,this.attributes(),this.addUidAttr(),this.addOverflowAttr(),this.element.width(e.width).attr({"data-command":"PropertyChangeCommand","data-property":e.property}),this.element.data({type:"fontSize",fontSize:this})},_valueChange:function(t){this.toolbar.action({command:"PropertyChangeCommand",options:{property:this.options.property,value:e.parseInt(t.sender.value())}})},update:function(t){this.value(e.parseInt(t)||p)},value:function(e){return void 0===e?this.comboBox.value():void this.comboBox.value(e)}}),g=c.extend({_click:function(){this.toolbar.dialog({name:"fontSize",options:{sizes:h,defaultSize:p}})},update:function(e){this._value=e||p,this.element.find(".k-text").text(this.message+" ("+this._value+") ...")}}),e.toolbar.registerComponent("fontSize",f,g),m=["Arial","Courier New","Georgia","Times New Roman","Trebuchet MS","Verdana"],v="Arial",_=s.extend({init:function(e,t){s.fn.init.call(this,e,t);var n=this.dropDownList;n.setDataSource(e.fontFamilies||m),n.value(v),this.element.data({type:"fontFamily",fontFamily:this})},update:function(e){this.value(e||v)}}),b=c.extend({_click:function(){this.toolbar.dialog({name:"fontFamily",options:{fonts:m,defaultFont:v}})},update:function(e){this._value=e||v,this.element.find(".k-text").text(this.message+" ("+this._value+") ...")}}),e.toolbar.registerComponent("fontFamily",_,b),w=e.spreadsheet.formats={automatic:null,text:"@",number:"#,0.00",percent:"0.00%",financial:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',currency:"$#,##0.00;[Red]$#,##0.00",date:"m/d/yyyy",time:"h:mm:ss AM/PM",dateTime:"m/d/yyyy h:mm",duration:"[h]:mm:ss"},k=s.extend({_revertTitle:function(e){e.sender.value(""),e.sender.wrapper.width("auto")},init:function(e,t){var n,o;s.fn.init.call(this,e,t),n=this.dropDownList,o="<span class='k-icon k-i-"+e.iconClass+"' style='line-height: 1em; width: 1.35em;'></span>",n.bind("change",this._revertTitle.bind(this)),n.bind("dataBound",this._revertTitle.bind(this)),n.setOptions({dataValueField:"format",dataTextField:"name",dataValuePrimitive:!0,valueTemplate:o,template:"# if (data.sample) { #<span class='k-spreadsheet-sample'>#: data.sample #</span># } ##: data.name #"}),n.text(o),n.setDataSource([{format:w.automatic,name:i.formatTypes.automatic},{format:w.text,name:i.formatTypes.text},{format:w.number,name:i.formatTypes.number,sample:"1,499.99"},{format:w.percent,name:i.formatTypes.percent,sample:"14.50%"},{format:w.financial,name:i.formatTypes.financial,sample:"(1,000.12)"},{format:w.currency,name:i.formatTypes.currency,sample:"$1,499.99"},{format:w.date,name:i.formatTypes.date,sample:"4/21/2012"},{format:w.time,name:i.formatTypes.time,sample:"5:49:00 PM"},{format:w.dateTime,name:i.formatTypes.dateTime,sample:"4/21/2012 5:49:00"},{format:w.duration,name:i.formatTypes.duration,sample:"168:05:00"},{popup:"formatCells",name:i.formatTypes.moreFormats}]),this.element.data({type:"format",format:this})}}),y=c.extend({_click:function(){this.toolbar.dialog({name:"formatCells"})}}),e.toolbar.registerComponent("format",k,y),x=l.extend({init:function(e,t){l.fn.init.call(this,e,t),this._borderPalette(),this.element.data({type:"borders",instance:this})},destroy:function(){this.borderPalette.destroy(),l.fn.destroy.call(this)},_borderPalette:function(){var n=t("<div />").appendTo(this.popup.element);this.borderPalette=new e.spreadsheet.BorderPalette(n,{change:this._action.bind(this)})},_action:function(e){this.toolbar.action({command:"BorderChangeCommand",options:{border:e.type,style:{size:1,color:e.color}}})}}),C=c.extend({_click:function(){this.toolbar.dialog({name:"borders"})}}),e.toolbar.registerComponent("borders",x,C),S=l.extend({init:function(e,n){l.fn.init.call(this,e,n),this.element.attr({"data-property":"alignment"}),this._defineButtons(),this._commandPalette(),this.popup.element.on("click",".k-button",function(e){this._action(t(e.currentTarget))}.bind(this)),this.element.data({type:"alignment",alignment:this,instance:this})},_defineButtons:function(){this.buttons=[{property:"textAlign",value:"left",iconClass:"align-left",text:i.alignmentButtons.justtifyLeft},{property:"textAlign",value:"center",iconClass:"align-center",text:i.alignmentButtons.justifyCenter},{property:"textAlign",value:"right",iconClass:"align-right",text:i.alignmentButtons.justifyRight},{property:"textAlign",value:"justify",iconClass:"align-justify",text:i.alignmentButtons.justifyFull},{property:"verticalAlign",value:"top",iconClass:"align-top",text:i.alignmentButtons.alignTop},{property:"verticalAlign",value:"center",iconClass:"align-middle",text:i.alignmentButtons.alignMiddle},{property:"verticalAlign",value:"bottom",iconClass:"align-bottom",text:i.alignmentButtons.alignBottom}]},destroy:function(){this.popup.element.off(),l.fn.destroy.call(this); +},update:function(e){var t=e.textAlign(),n=e.verticalAlign(),i=this.popup.element;i.find(".k-button").removeClass("k-state-active"),t&&i.find("[data-property=textAlign][data-value="+t+"]").addClass("k-state-active"),n&&i.find("[data-property=verticalAlign][data-value="+n+"]").addClass("k-state-active")},_commandPalette:function(){var e=this.buttons,n=t("<div />").appendTo(this.popup.element);e.forEach(function(i,o){var r="<a title='"+i.text+"' data-property='"+i.property+"' data-value='"+i.value+"' class='k-button k-button-icon'><span class='k-icon k-i-"+i.iconClass+"'></span></a>";0!==o&&e[o-1].property!==i.property&&n.append(t("<span class='k-separator' />")),n.append(r)})},_action:function(e){var t=e.attr("data-property"),n=e.attr("data-value");this.toolbar.action({command:"PropertyChangeCommand",options:{property:t,value:n}})}}),T=c.extend({_click:function(){this.toolbar.dialog({name:"alignment"})}}),e.toolbar.registerComponent("alignment",S,T),D=l.extend({init:function(e,n){l.fn.init.call(this,e,n),this._defineButtons(),this._commandPalette(),this.popup.element.on("click",".k-button",function(e){this._action(t(e.currentTarget))}.bind(this)),this.element.data({type:"merge",merge:this,instance:this})},_defineButtons:function(){this.buttons=[{value:"cells",iconClass:"cells-merge",text:i.mergeButtons.mergeCells},{value:"horizontally",iconClass:"cells-merge-horizontally",text:i.mergeButtons.mergeHorizontally},{value:"vertically",iconClass:"cells-merge-vertically",text:i.mergeButtons.mergeVertically},{value:"unmerge",iconClass:"table-unmerge",text:i.mergeButtons.unmerge}]},destroy:function(){this.popup.element.off(),l.fn.destroy.call(this)},_commandPalette:function(){var e=t("<div />").appendTo(this.popup.element);this.buttons.forEach(function(t){var n="<a title='"+t.text+"' data-value='"+t.value+"' class='k-button k-button-icontext'><span class='k-icon k-i-"+t.iconClass+"'></span>"+t.text+"</a>";e.append(n)})},_action:function(e){var t=e.attr("data-value");this.toolbar.action({command:"MergeCellCommand",options:{value:t}})}}),A=c.extend({_click:function(){this.toolbar.dialog({name:"merge"})}}),e.toolbar.registerComponent("merge",D,A),E=l.extend({init:function(e,n){l.fn.init.call(this,e,n),this._defineButtons(),this._commandPalette(),this.popup.element.on("click",".k-button",function(e){this._action(t(e.currentTarget))}.bind(this)),this.element.data({type:"freeze",freeze:this,instance:this})},_defineButtons:function(){this.buttons=[{value:"panes",iconClass:"pane-freeze",text:i.freezeButtons.freezePanes},{value:"rows",iconClass:"row-freeze",text:i.freezeButtons.freezeRows},{value:"columns",iconClass:"column-freeze",text:i.freezeButtons.freezeColumns},{value:"unfreeze",iconClass:"table-unmerge",text:i.freezeButtons.unfreeze}]},destroy:function(){this.popup.element.off(),l.fn.destroy.call(this)},_commandPalette:function(){var e=t("<div />").appendTo(this.popup.element);this.buttons.forEach(function(t){var n="<a title='"+t.text+"' data-value='"+t.value+"' class='k-button k-button-icontext'><span class='k-icon k-i-"+t.iconClass+"'></span>"+t.text+"</a>";e.append(n)})},_action:function(e){var t=e.attr("data-value");this.toolbar.action({command:"FreezePanesCommand",options:{value:t}})}}),I=c.extend({_click:function(){this.toolbar.dialog({name:"freeze"})}}),e.toolbar.registerComponent("freeze",E,I),M=s.extend({_revertTitle:function(e){e.sender.value(""),e.sender.wrapper.width("auto")},init:function(e,t){s.fn.init.call(this,e,t);var n=this.dropDownList;n.bind("change",this._revertTitle.bind(this)),n.bind("dataBound",this._revertTitle.bind(this)),n.setOptions({valueTemplate:"<span class='k-icon k-i-"+e.iconClass+"' style='line-height: 1em; width: 1.35em;'></span>",template:"<span class='k-icon k-i-#= iconClass #' style='line-height: 1em; width: 1.35em;'></span>#=text#",dataTextField:"text",dataValueField:"value"}),n.setDataSource([{value:"asc",sheet:!1,text:i.sortButtons.sortRangeAsc,iconClass:"sort-asc"},{value:"desc",sheet:!1,text:i.sortButtons.sortRangeDesc,iconClass:"sort-desc"}]),n.select(0),this.element.data({type:"sort",sort:this})},_change:function(e){var t=e.sender,n=t.dataItem();n&&this.toolbar.action({command:"SortCommand",options:{value:n.value,sheet:n.sheet}})},value:t.noop}),F=c.extend({_click:function(){this.toolbar.dialog({name:"sort"})}}),e.toolbar.registerComponent("sort",M,F),R=e.toolbar.ToolBarButton.extend({init:function(t,n){t.showText="overflow",e.toolbar.ToolBarButton.fn.init.call(this,t,n),this.element.on("click",this._click.bind(this)),this.element.data({type:"filter",filter:this})},_click:function(){this.toolbar.action({command:"FilterCommand"})},update:function(e){this.toggle(e)}}),P=c.extend({init:function(e,t){c.fn.init.call(this,e,t),this.element.data({type:"filter",filter:this})},_click:function(){this.toolbar.action({command:"FilterCommand"})},update:function(e){this.toggle(e)}}),e.toolbar.registerComponent("filter",R,P),z=e.toolbar.Item.extend({init:function(e,n){this.toolbar=n,this.element=t("<div class='k-button k-upload-button k-button-icon'><span class='k-icon k-i-folder-open' /></div>").data("instance",this),this._title=e.attributes.title,this._reset()},_reset:function(){this.element.find("input").remove(),t("<input type='file' autocomplete='off' accept='.xlsx'/>").attr("title",this._title).attr("aria-label",this._title).one("change",this._change.bind(this)).appendTo(this.element)},_change:function(e){this.toolbar.action({command:"OpenCommand",options:{file:e.target.files[0]}}),this._reset()}}),e.toolbar.registerComponent("open",z),e.spreadsheet.TabStrip=e.ui.TabStrip.extend({init:function(n,i){e.ui.TabStrip.fn.init.call(this,n,i),n.addClass("k-spreadsheet-tabstrip"),this._quickAccessButtons(),this.toolbars={};var o=i.dataSource;this.contentElements.each(function(e,n){this._toolbar(t(n),o[e].id,i.toolbarOptions[o[e].id])}.bind(this)),this.one("activate",function(){this.toolbars[this.options.dataSource[0].id].resize()})},events:e.ui.TabStrip.fn.events.concat(["action","dialog"]),destroy:function(){this.quickAccessToolBar.off("click"),e.ui.TabStrip.fn.destroy.call(this);for(var t in this.toolbars)this.toolbars[t].destroy()},action:function(e){this.trigger("action",e)},dialog:function(e){this.trigger("dialog",e)},refreshTools:function(e){var t,n=this.toolbars;for(t in n)n.hasOwnProperty(t)&&n[t].refresh(e)},_quickAccessButtons:function(){var n=[{title:i.quickAccess.undo,iconClass:"undo",action:"undo"},{title:i.quickAccess.redo,iconClass:"redo",action:"redo"}],o=e.template("<a href='\\#' title='#= title #' data-action='#= action #' class='k-button k-button-icon' aria-label='#= title #'><span class='k-icon k-i-#=iconClass#'></span></a>");this.quickAccessToolBar=t("<div />",{"class":"k-spreadsheet-quick-access-toolbar",html:e.render(o,n)}).insertBefore(this.wrapper),this.quickAccessToolBar.on("click",".k-button",function(e){e.preventDefault();var n=t(e.currentTarget).attr("data-action");this.action({action:n})}.bind(this)),this.quickAccessAdjust()},quickAccessAdjust:function(){this.tabGroup.css("padding-left",e._outerWidth(this.quickAccessToolBar))},_toolbar:function(t,n,i){var o,r;this.toolbars[n]&&(this.toolbars[n].destroy(),t.children(".k-toolbar").remove()),i&&(o=t.html("<div />").children("div"),r={tools:"boolean"==typeof i?void 0:i,toolbarName:n,action:this.action.bind(this),dialog:this.dialog.bind(this)},this.toolbars[n]=new e.spreadsheet.ToolBar(o,r))}}))}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/dialogs.min",["kendo.core.min","kendo.binder.min","kendo.validator.min"],e)}(function(){!function(e){function t(t,n){return e.spreadsheet.formatting.text(t,n)}function n(e,t){var n,i=[],o=[];for(n=0;n<t.length;n++)l.inArray(t[n][e],o)==-1&&(i.push(t[n]),o.push(t[n][e]));return i}function i(e){return{value:e,text:a("exportAsDialog.pdf.paper."+e)}}function o(t,n){e.spreadsheet.dialogs.register(t,g.extend({options:{messageId:n}}))}function r(e,t){this.path=e.split("."),this.def=t}function a(e,t){return new r(e,t)}function s(e){return e instanceof r?e.trans():Array.isArray(e)?e.map(s):null!=e&&"object"==typeof e?Object.keys(e).reduce(function(t,n){return t[n]=s(e[n]),t},{}):e}var l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C,S,T,D,A,E,I,M,F,R,P;e.support.browser.msie&&e.support.browser.version<9||(l=e.jQuery,c=e.data.ObservableObject,d=e.spreadsheet.messages.dialogs={apply:"Apply",save:"Save",cancel:"Cancel",remove:"Remove",retry:"Retry",revert:"Revert",okText:"OK",formatCellsDialog:{title:"Format",categories:{number:"Number",currency:"Currency",date:"Date"}},fontFamilyDialog:{title:"Font"},fontSizeDialog:{title:"Font size"},bordersDialog:{title:"Borders"},alignmentDialog:{title:"Alignment",buttons:{justtifyLeft:"Align left",justifyCenter:"Center",justifyRight:"Align right",justifyFull:"Justify",alignTop:"Align top",alignMiddle:"Align middle",alignBottom:"Align bottom"}},mergeDialog:{title:"Merge cells",buttons:{mergeCells:"Merge all",mergeHorizontally:"Merge horizontally",mergeVertically:"Merge vertically",unmerge:"Unmerge"}},freezeDialog:{title:"Freeze panes",buttons:{freezePanes:"Freeze panes",freezeRows:"Freeze rows",freezeColumns:"Freeze columns",unfreeze:"Unfreeze panes"}},confirmationDialog:{text:"Are you sure you want to remove this sheet?",title:"Sheet remove"},validationDialog:{title:"Data Validation",hintMessage:"Please enter a valid {0} value {1}.",hintTitle:"Validation {0}",criteria:{any:"Any value",number:"Number",text:"Text",date:"Date",custom:"Custom Formula",list:"List"},comparers:{greaterThan:"greater than",lessThan:"less than",between:"between",notBetween:"not between",equalTo:"equal to",notEqualTo:"not equal to",greaterThanOrEqualTo:"greater than or equal to",lessThanOrEqualTo:"less than or equal to"},comparerMessages:{greaterThan:"greater than {0}",lessThan:"less than {0}",between:"between {0} and {1}",notBetween:"not between {0} and {1}",equalTo:"equal to {0}",notEqualTo:"not equal to {0}",greaterThanOrEqualTo:"greater than or equal to {0}",lessThanOrEqualTo:"less than or equal to {0}",custom:"that satisfies the formula: {0}"},labels:{criteria:"Criteria",comparer:"Comparer",min:"Min",max:"Max",value:"Value",start:"Start",end:"End",onInvalidData:"On invalid data",rejectInput:"Reject input",showWarning:"Show warning",showHint:"Show hint",hintTitle:"Hint title",hintMessage:"Hint message",ignoreBlank:"Ignore blank",showListButton:"Display button to show list",showCalendarButton:"Display button to show calendar"},placeholders:{typeTitle:"Type title",typeMessage:"Type message"}},exportAsDialog:{title:"Export...",defaultFileName:"Workbook",xlsx:{description:"Excel Workbook (.xlsx)"},pdf:{description:"Portable Document Format (.pdf)",area:{workbook:"Entire Workbook",sheet:"Active Sheet",selection:"Selection"},paper:{a2:"A2 (420 mm × 594 mm)",a3:"A3 (297 mm x 420 mm)",a4:"A4 (210 mm x 297 mm)",a5:"A5 (148 mm x 210 mm)",b3:"B3 (353 mm × 500 mm)",b4:"B4 (250 mm x 353 mm)",b5:"B5 (176 mm x 250 mm)",folio:'Folio (8.5" x 13")',legal:'Legal (8.5" x 14")',letter:'Letter (8.5" x 11")',tabloid:'Tabloid (11" x 17")',executive:'Executive (7.25" x 10.5")'},margin:{normal:"Normal",narrow:"Narrow",wide:"Wide"}},labels:{scale:"Scale",fit:"Fit to page",fileName:"File name",saveAsType:"Save as type",exportArea:"Export",paperSize:"Paper size",margins:"Margins",orientation:"Orientation",print:"Print",guidelines:"Guidelines",center:"Center",horizontally:"Horizontally",vertically:"Vertically"}},modifyMergedDialog:{errorMessage:"Cannot change part of a merged cell."},rangeDisabledDialog:{errorMessage:"Destination range contains disabled cells."},intersectsArrayDialog:{errorMessage:"You cannot alter part of an array"},incompatibleRangesDialog:{errorMessage:"Incompatible ranges"},noFillDirectionDialog:{errorMessage:"Cannot determine fill direction"},duplicateSheetNameDialog:{errorMessage:"Duplicate sheet name"},overflowDialog:{errorMessage:"Cannot paste, because the copy area and the paste area are not the same size and shape."},useKeyboardDialog:{title:"Copying and pasting",errorMessage:"These actions cannot be invoked through the menu. Please use the keyboard shortcuts instead:",labels:{forCopy:"for copy",forCut:"for cut",forPaste:"for paste"}},unsupportedSelectionDialog:{errorMessage:"That action cannot be performed on multiple selection."},linkDialog:{title:"Hyperlink",labels:{text:"Text",url:"Address",removeLink:"Remove link"}},insertCommentDialog:{title:"Insert comment",labels:{comment:"Comment",removeComment:"Remove comment"}},insertImageDialog:{title:"Insert image",info:"Drag an image here, or click to select",typeError:"Please select a JPEG, PNG or GIF image"}},u={},e.spreadsheet.dialogs={register:function(e,t){u[e]=t},registered:function(e){return!!u[e]},create:function(e,t){var n=u[e];if(n)return new n(t)}},h=e.spreadsheet.SpreadsheetDialog=e.Observable.extend({init:function(t){e.Observable.fn.init.call(this,t),this.options=s(l.extend(!0,{},this.options,t)),this.bind(this.events,t)},events:["close","activate"],options:{autoFocus:!0},dialog:function(){if(!this._dialog){var t={autoFocus:!1,scrollable:!1,resizable:!1,modal:!0,visible:!1,width:this.options.width||320,title:this.options.title,open:function(){this.center()},close:this._onDialogClose.bind(this),activate:this._onDialogActivate.bind(this),deactivate:this._onDialogDeactivate.bind(this)};this._dialog=l("<div class='k-spreadsheet-window k-action-window k-popup-edit-form' />").addClass(this.options.className||"").append(e.template(this.options.template)({messages:e.spreadsheet.messages.dialogs||d,errors:this.options.errors})).kendoWindow(t).data("kendoWindow")}return this._dialog},_onDialogClose:function(){this.trigger("close",{action:this._action})},_onDialogActivate:function(){this.trigger("activate")},_onDialogDeactivate:function(){this.trigger("deactivate"),this.destroy()},destroy:function(){this._dialog&&(this._dialog.destroy(),this._dialog=null)},open:function(){this.dialog().open(),this.dialog().element.find(".k-primary").focus()},apply:function(){this.close()},close:function(){this._action="close",this.dialog().close()}}),p=e.spreadsheet.FormatCellsViewModel=c.extend({init:function(e){c.fn.init.call(this,e),this.useCategory(this.category)},useCategory:function(e){var t=e&&e.type||"number",n="currency"==t;this.category=e,this.set("showCurrencyFilter",n&&this.currencies.length>1),n?this.currency(this.currencies[0]):this.set("formats",this.allFormats[t+"Formats"]),this.useFirstFormat()},useFirstFormat:function(){this.formats.length&&this.set("format",this.formats[0].value)},currency:function(e){var n,i;return void 0!==e&&(this._currency=e,n=e.value,i=[{currency:n,decimals:!0},{currency:n,decimals:!0,iso:!0},{currency:n,decimals:!1}],i=i.map(function(e){return e=p.convert.currency(e),{value:e,name:t(1e3,e)}}),this.set("formats",i),this.useFirstFormat()),this._currency||this.currencies[0]},categoryFilter:function(e){return void 0!==e&&this.useCategory(e),this.category},preview:function(){var e=this.get("format"),n=this.value||0;return e&&e.length?t(n,e):n}}),p.convert={currency:function(e){function t(e,t){return Array(t+1).join(e)}var n=e.currency,i=n.pattern[1];return e.decimals&&(i=i.replace(/n/g,"n"+n["."]+t("0",n.decimals))),i=e.iso?'"'+n.abbr+'" '+i.replace(/\s*\$\s*/g,""):i.replace(/\$/g,JSON.stringify(n.symbol)),i=i.replace(/n/g,"?")},date:function(e){return/T|Z/.test(e)?"":e.toLowerCase().replace(/tt/g,"AM/PM").replace(/'/g,'"')}},f=h.extend({init:function(t){var n=e.spreadsheet.messages.dialogs.formatCellsDialog||d,i={title:n.title,categories:[{type:"number",name:n.categories.number},{type:"currency",name:n.categories.currency},{type:"date",name:n.categories.date}]};h.fn.init.call(this,l.extend(i,t)),this._generateFormats()},options:{className:"k-spreadsheet-format-cells",template:"<div class='k-edit-form-container'><div class='k-root-tabs' data-role='tabstrip' data-text-field='name' data-bind='source: categories, value: categoryFilter' data-animation='false' /><div class='k-spreadsheet-preview' data-bind='text: preview' /><script type='text/x-kendo-template' id='format-item-template'>\\#: data.name \\#</script><select data-role='dropdownlist' class='k-format-filter' data-text-field='description' data-value-field='value.name' data-bind='visible: showCurrencyFilter, value: currency, source: currencies' /><ul data-role='staticlist' tabindex='0' class='k-list k-reset' data-template='format-item-template' data-value-primitive='true' data-value-field='value' data-bind='source: formats, value: format' /><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: apply'>#: messages.apply #</button><button class='k-button' data-bind='click: close'>#: messages.cancel #</button></div></div>"},_generateFormats:function(){var i,o=this.options;o.currencies||(o.currencies=f.currenciesFrom(e.cultures)),o.numberFormats||(o.numberFormats=[{value:"#.00%",name:"100.00%"},{value:"#%",name:"100%"},{value:"#.00",name:"1024.00"},{value:"#,###.00",name:"1,024.00"}]),o.dateFormats||(i=e.cultures.current.calendars.standard.patterns,o.dateFormats=n("value",l.map(i,function(e){if(e=p.convert.date(e))return{value:e,name:t(34567.7678,e)}})))},open:function(t){var n,i,o=this.options,r=t.value(),a=o.categories.slice(0);this.viewModel=new p({currencies:o.currencies.slice(0),allFormats:{numberFormats:o.numberFormats.slice(0),dateFormats:o.dateFormats.slice(0)},categories:a,format:t.format(),category:r instanceof Date?a[2]:a[0],apply:this.apply.bind(this),close:this.close.bind(this),value:r}),h.fn.open.call(this),n=this.dialog().element,e.bind(n,this.viewModel),i=n.find("select.k-format-filter").data("kendoDropDownList"),o.currencies.length>10&&i.setOptions({filter:"contains"}),n.find(e.roleSelector("staticlist")).parent().addClass("k-list-wrapper")},apply:function(){var e=this.viewModel.format;h.fn.apply.call(this),this.trigger("action",{command:"PropertyChangeCommand",options:{property:"format",value:e}})}}),f.currenciesFrom=function(t){return n("description",l.map(t,function(t,n){var i,o;if(/-/.test(n))return i=t.numberFormat.currency,o=e.format("{0} ({1}, {2})",i.name,i.abbr,i.symbol),{description:o,value:i}}))},e.spreadsheet.dialogs.register("formatCells",f),e.spreadsheet.dialogs.FormatCellsDialog=f,g=h.extend({options:{className:"k-spreadsheet-message",title:"",messageId:"",text:"",template:"<div class='k-spreadsheet-message-content' data-bind='text: text' /><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: close'>#= messages.okText #</button></div>"},open:function(){var t,n;h.fn.open.call(this),t=this.options,n=t.text,t.messageId&&(n=e.getter(t.messageId,!0)(e.spreadsheet.messages.dialogs)),e.bind(this.dialog().element,{text:n,close:this.close.bind(this)})}}),e.spreadsheet.dialogs.register("message",g),m=h.extend({init:function(t){var n=e.spreadsheet.messages.dialogs.confirmationDialog||d,i={title:n.title,text:n.text};h.fn.init.call(this,l.extend(i,t))},options:{className:"k-spreadsheet-message",messageId:"",template:"<div class='k-spreadsheet-message-content' data-bind='text: text' /><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: confirm'>#= messages.okText #</button><button class='k-button' data-bind='click: cancel'>#= messages.cancel #</button></div>"},open:function(){var t,n;h.fn.open.call(this),t=this.options,n=t.text,t.messageId&&(n=e.getter(t.messageId,!0)(e.spreadsheet.messages.dialogs)),e.bind(this.dialog().element,{text:n,confirm:this.confirm.bind(this),cancel:this.close.bind(this)})},isConfirmed:function(){return this._confirmed},confirm:function(){this._confirmed=!0,this.close()}}),e.spreadsheet.dialogs.register("confirmation",m),v=h.extend({options:{className:"k-spreadsheet-message",title:"",messageId:"",text:"",template:"<div class='k-spreadsheet-message-content' data-bind='text: text' /><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: retry'>#= messages.retry #</button><button class='k-button' data-bind='click: cancel'>#= messages.cancel #</button></div>"},open:function(){var t,n;h.fn.open.call(this),t=this.options,n=t.text,t.messageId&&(n=e.getter(t.messageId,!0)(e.spreadsheet.messages.dialogs)),e.bind(this.dialog().element,{text:n,retry:this.retry.bind(this),cancel:this.close.bind(this)})},retry:function(){this._retry=!0,this.close()}}),e.spreadsheet.dialogs.register("validationError",v),_=h.extend({init:function(t){var n=e.spreadsheet.messages.dialogs.fontFamilyDialog||d;h.fn.init.call(this,l.extend({title:n.title},t)),this._list()},options:{template:"<ul class='k-list k-reset'></ul>"},_list:function(){var t=this.dialog().element.find("ul"),n=this.options.fonts,i=this.options.defaultFont;this.list=new e.ui.StaticList(t,{dataSource:new e.data.DataSource({data:n}),template:"#: data #",value:i,change:this.apply.bind(this)}),this.list.dataSource.fetch()},apply:function(e){h.fn.apply.call(this),this.trigger("action",{command:"PropertyChangeCommand",options:{property:"fontFamily",value:e.sender.value()[0]}})}}),e.spreadsheet.dialogs.register("fontFamily",_),b=h.extend({init:function(t){var n=e.spreadsheet.messages.dialogs.fontSizeDialog||d;h.fn.init.call(this,l.extend({title:n.title},t)),this._list()},options:{template:"<ul class='k-list k-reset'></ul>"},_list:function(){var t=this.dialog().element.find("ul"),n=this.options.sizes,i=this.options.defaultSize;this.list=new e.ui.StaticList(t,{dataSource:new e.data.DataSource({data:n}),template:"#: data #",value:i,change:this.apply.bind(this)}),this.list.dataSource.fetch()},apply:function(t){h.fn.apply.call(this),this.trigger("action",{command:"PropertyChangeCommand",options:{property:"fontSize",value:e.parseInt(t.sender.value()[0])}})}}),e.spreadsheet.dialogs.register("fontSize",b),w=h.extend({init:function(t){var n=e.spreadsheet.messages.dialogs.bordersDialog||d;h.fn.init.call(this,l.extend({title:n.title},t)),this.element=this.dialog().element,this._borderPalette(),this.viewModel=e.observable({apply:this.apply.bind(this),close:this.close.bind(this)}),e.bind(this.element.find(".k-action-buttons"),this.viewModel)},options:{width:177,template:"<div></div><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: apply'>#: messages.apply #</button><button class='k-button' data-bind='click: close'>#: messages.cancel #</button></div>"},apply:function(){h.fn.apply.call(this);var e=this.value();this.trigger("action",{command:"BorderChangeCommand",options:{border:e.type,style:{size:1,color:e.color}}})},_borderPalette:function(){var t=this.dialog().element.find("div:first");this.borderPalette=new e.spreadsheet.BorderPalette(t,{change:this.value.bind(this)})},value:function(e){return void 0===e?this._state:void(this._state=e)}}),e.spreadsheet.dialogs.register("borders",w),k=h.extend({init:function(t){h.fn.init.call(this,t),this.element=this.dialog().element,this.property=t.property,this.options.title=t.title,this.viewModel=e.observable({apply:this.apply.bind(this),close:this.close.bind(this)}),e.bind(this.element.find(".k-action-buttons"),this.viewModel)},options:{template:"<div></div><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: apply'>#: messages.apply #</button><button class='k-button' data-bind='click: close'>#: messages.cancel #</button></div>"},apply:function(){h.fn.apply.call(this),this.trigger("action",{command:"PropertyChangeCommand",options:{property:this.property,value:this.value()}})},value:function(e){return void 0===e?this._value:void(this._value=e.value)}}),y=k.extend({init:function(e){e.width=177,k.fn.init.call(this,e),this._colorPalette()},_colorPalette:function(){var e=this.dialog().element.find("div:first");this.colorPalette=e.kendoColorPalette({palette:["#ffffff","#000000","#d6ecff","#4e5b6f","#7fd13b","#ea157a","#feb80a","#00addc","#738ac8","#1ab39f","#f2f2f2","#7f7f7f","#a7d6ff","#d9dde4","#e5f5d7","#fad0e4","#fef0cd","#c5f2ff","#e2e7f4","#c9f7f1","#d8d8d8","#595959","#60b5ff","#b3bcca","#cbecb0","#f6a1c9","#fee29c","#8be6ff","#c7d0e9","#94efe3","#bfbfbf","#3f3f3f","#007dea","#8d9baf","#b2e389","#f272af","#fed46b","#51d9ff","#aab8de","#5fe7d5","#a5a5a5","#262626","#003e75","#3a4453","#5ea226","#af0f5b","#c58c00","#0081a5","#425ea9","#138677","#7f7f7f","#0c0c0c","#00192e","#272d37","#3f6c19","#750a3d","#835d00","#00566e","#2c3f71","#0c594f"],change:this.value.bind(this)}).data("kendoColorPalette")}}),e.spreadsheet.dialogs.register("colorPicker",y),x=k.extend({init:function(e){e.width=268,k.fn.init.call(this,e),this.dialog().setOptions({animation:!1}),this.dialog().one("activate",this._colorPicker.bind(this))},_colorPicker:function(){var e=this.dialog().element.find("div:first");this.colorPicker=e.kendoFlatColorPicker({change:this.value.bind(this)}).data("kendoFlatColorPicker")}}),e.spreadsheet.dialogs.register("customColor",x),C=h.extend({init:function(t){var n=e.spreadsheet.messages.dialogs.alignmentDialog||d,i={title:n.title,buttons:[{property:"textAlign",value:"left",iconClass:"align-left",text:n.buttons.justtifyLeft},{property:"textAlign",value:"center",iconClass:"align-center",text:n.buttons.justifyCenter},{property:"textAlign",value:"right",iconClass:"align-right",text:n.buttons.justifyRight},{property:"textAlign",value:"justify",iconClass:"align-justify",text:n.buttons.justifyFull},{property:"verticalAlign",value:"top",iconClass:"align-top",text:n.buttons.alignTop},{property:"verticalAlign",value:"center",iconClass:"align-middle",text:n.buttons.alignMiddle},{property:"verticalAlign",value:"bottom",iconClass:"align-bottom",text:n.buttons.alignBottom}]};h.fn.init.call(this,l.extend(i,t)),this._list()},options:{template:"<ul class='k-list k-reset'></ul>"},_list:function(){var t=this.dialog().element.find("ul");this.list=new e.ui.StaticList(t,{dataSource:new e.data.DataSource({data:this.options.buttons}),template:"<a title='#=text#' data-property='#=property#' data-value='#=value#'><span class='k-icon k-i-#=iconClass#'></span>#=text#</a>",change:this.apply.bind(this)}),this.list.dataSource.fetch()},apply:function(e){var t=e.sender.value()[0];h.fn.apply.call(this),this.trigger("action",{command:"PropertyChangeCommand",options:{property:t.property,value:t.value}})}}),e.spreadsheet.dialogs.register("alignment",C),S=h.extend({init:function(t){var n=e.spreadsheet.messages.dialogs.mergeDialog||d,i={title:n.title,buttons:[{value:"cells",iconClass:"cells-merge",text:n.buttons.mergeCells},{value:"horizontally",iconClass:"cells-merge-horizontally",text:n.buttons.mergeHorizontally},{value:"vertically",iconClass:"cells-merge-vertically",text:n.buttons.mergeVertically},{value:"unmerge",iconClass:"table-unmerge",text:n.buttons.unmerge}]};h.fn.init.call(this,l.extend(i,t)),this._list()},options:{template:"<ul class='k-list k-reset'></ul>"},_list:function(){var t=this.dialog().element.find("ul");this.list=new e.ui.StaticList(t,{dataSource:new e.data.DataSource({data:this.options.buttons}),template:"<a title='#=text#' data-value='#=value#'><span class='k-icon k-icon k-i-#=iconClass#'></span>#=text#</a>",change:this.apply.bind(this)}),this.list.dataSource.fetch()},apply:function(e){var t=e.sender.value()[0];h.fn.apply.call(this),this.trigger("action",{command:"MergeCellCommand",options:{value:t.value}})}}),e.spreadsheet.dialogs.register("merge",S),T=h.extend({init:function(t){var n=e.spreadsheet.messages.dialogs.freezeDialog||d,i={title:n.title,buttons:[{value:"panes",iconClass:"pane-freeze",text:n.buttons.freezePanes},{value:"rows",iconClass:"row-freeze",text:n.buttons.freezeRows},{value:"columns",iconClass:"column-freeze",text:n.buttons.freezeColumns},{value:"unfreeze",iconClass:"table-unmerge",text:n.buttons.unfreeze}]};h.fn.init.call(this,l.extend(i,t)),this._list()},options:{template:"<ul class='k-list k-reset'></ul>"},_list:function(){var t=this.dialog().element.find("ul");this.list=new e.ui.StaticList(t,{dataSource:new e.data.DataSource({data:this.options.buttons}),template:"<a title='#=text#' data-value='#=value#'><span class='k-icon k-icon k-i-#=iconClass#'></span>#=text#</a>",change:this.apply.bind(this)}),this.list.dataSource.fetch()},apply:function(e){var t=e.sender.value()[0];h.fn.apply.call(this),this.trigger("action",{command:"FreezePanesCommand",options:{value:t.value}})}}),e.spreadsheet.dialogs.register("freeze",T),D=e.spreadsheet.ValidationCellsViewModel=c.extend({init:function(e){c.fn.init.call(this,e),this.bind("change",function(e){"criterion"===e.field&&(this.reset(),"custom"!==this.criterion&&"list"!==this.criterion||this.setHintMessageTemplate()),"comparer"===e.field&&this.setHintMessageTemplate(),"hintMessage"!=e.field&&"hintTitle"!=e.field||this._mute||(this.shouldBuild=!1),"from"!=e.field&&"to"!=e.field&&"hintMessageTemplate"!=e.field&&"type"!=e.field||!this.shouldBuild||this.buildMessages()}.bind(this)),this.reset()},buildMessages:function(){this._mute=!0,this.set("hintTitle",this.hintTitleTemplate?e.format(this.hintTitleTemplate,this.type):""),this.set("hintMessage",this.hintMessageTemplate?e.format(this.hintMessageTemplate,this.from,this.to):""),this._mute=!1},reset:function(){this.setComparers(),this.set("comparer",this.comparers[0].type),this.set("from",null),this.set("to",null),this.set("useCustomMessages",!1),this.shouldBuild=!0,this.hintTitleTemplate=this.defaultHintTitle,this.buildMessages()},setComparers:function(){var e,t,n=this.defaultComparers,i=[];if("text"===this.criterion)for(e=["equalTo","notEqualTo"],t=0;t<n.length;t++)e[0]==n[t].type&&(i.push(n[t]),e.shift());else i=n.slice();this.set("comparers",i)},setHintMessageTemplate:function(){"custom"!==this.criterion&&"list"!==this.criterion?this.set("hintMessageTemplate",e.format(this.defaultHintMessage,this.criterion,this.comparerMessages[this.comparer])):(this.set("hintMessageTemplate",""),this.set("hintMessage",""))},isAny:function(){return"any"===this.get("criterion")},isNumber:function(){return"number"===this.get("criterion")},showToForNumber:function(){return this.showTo()&&this.isNumber()},showToForDate:function(){return this.showTo()&&this.isDate()},isText:function(){return"text"===this.get("criterion")},isDate:function(){return"date"===this.get("criterion")},isList:function(){return"list"===this.get("criterion")},isCustom:function(){return"custom"===this.get("criterion")},showRemove:function(){return this.get("hasValidation")},showTo:function(){return"between"==this.get("comparer")||"notBetween"==this.get("comparer")},update:function(e){this.set("hasValidation",!!e),e&&this.fromValidationObject(e)},fromValidationObject:function(e){this.set("criterion",e.dataType),this.set("comparer",e.comparerType),this.set("from",e.from),this.set("to",e.to),this.set("type",e.type),this.set("ignoreBlank",e.allowNulls),this.set("showButton",e.showButton),e.messageTemplate||e.titleTemplate?(this.hintMessageTemplate=e.messageTemplate,this.hintMessage=e.messageTemplate,this.hintTitleTemplate=e.titleTemplate,this.hintTitle=e.titleTemplate,this.useCustomMessages=!0,this.buildMessages()):this.useCustomMessages=!1},toValidationObject:function(){if("any"===this.criterion)return null;var e={type:this.type,dataType:this.criterion,comparerType:this.comparer,from:this.from,to:this.to,allowNulls:this.ignoreBlank,showButton:this.showButton};return this.useCustomMessages&&(e.messageTemplate=this.shouldBuild?this.hintMessageTemplate:this.hintMessage,e.titleTemplate=this.hintTitle),e}}),A=h.extend({init:function(t){var n=e.spreadsheet.messages.dialogs.validationDialog||d,i={title:n.title,hintMessage:n.hintMessage,hintTitle:n.hintTitle,criteria:[{type:"any",name:n.criteria.any},{type:"number",name:n.criteria.number},{type:"text",name:n.criteria.text},{type:"date",name:n.criteria.date},{type:"custom",name:n.criteria.custom},{type:"list",name:n.criteria.list}],comparers:[{type:"greaterThan",name:n.comparers.greaterThan},{type:"lessThan",name:n.comparers.lessThan},{type:"between",name:n.comparers.between},{type:"notBetween",name:n.comparers.notBetween},{type:"equalTo",name:n.comparers.equalTo +},{type:"notEqualTo",name:n.comparers.notEqualTo},{type:"greaterThanOrEqualTo",name:n.comparers.greaterThanOrEqualTo},{type:"lessThanOrEqualTo",name:n.comparers.lessThanOrEqualTo}],comparerMessages:n.comparerMessages};h.fn.init.call(this,l.extend(i,t))},options:{width:450,criterion:"any",type:"reject",ignoreBlank:!0,showButton:!0,useCustomMessages:!1,errorTemplate:'<div class="k-widget k-tooltip k-tooltip-validation" style="margin:0.5em"><span class="k-icon k-i-warning"> </span>#= message #<div class="k-callout k-callout-n"></div></div>',template:'<div class="k-edit-form-container"><div class="k-edit-label"><label>#: messages.validationDialog.labels.criteria #:</label></div><div class="k-edit-field"><select data-role="dropdownlist" title="#: messages.validationDialog.labels.criteria #"data-text-field="name" data-value-field="type" data-bind="value: criterion, source: criteria" /></div><div data-bind="visible: isNumber"><div class="k-edit-label"><label>#: messages.validationDialog.labels.comparer #:</label></div><div class="k-edit-field"><select data-role="dropdownlist" title="#: messages.validationDialog.labels.comparer #"data-text-field="name" data-value-field="type" data-bind="value: comparer, source: comparers" /></div><div class="k-edit-label"><label>#: messages.validationDialog.labels.min #:</label></div><div class="k-edit-field"><input name="#: messages.validationDialog.labels.min #" title="#: messages.validationDialog.labels.min #" placeholder="e.g. 10" class="k-textbox" data-bind="value: from, enabled: isNumber" required="required" /></div><div data-bind="visible: showTo"><div class="k-edit-label"><label>#: messages.validationDialog.labels.max #:</label></div><div class="k-edit-field"><input name="#: messages.validationDialog.labels.max #" title="#: messages.validationDialog.labels.max #" placeholder="e.g. 100" class="k-textbox" data-bind="value: to, enabled: showToForNumber" required="required" /></div></div></div><div data-bind="visible: isText"><div class="k-edit-label"><label>#: messages.validationDialog.labels.comparer #:</label></div><div class="k-edit-field"><select data-role="dropdownlist" title="#: messages.validationDialog.labels.comparer #"data-text-field="name" data-value-field="type" data-bind="value: comparer, source: comparers" /></div><div class="k-edit-label"><label>#: messages.validationDialog.labels.value #:</label></div><div class="k-edit-field"><input name="#: messages.validationDialog.labels.value #" title="#: messages.validationDialog.labels.value #" class="k-textbox" data-bind="value: from, enabled: isText" required="required" /></div></div><div data-bind="visible: isDate"><div class="k-edit-label"><label>#: messages.validationDialog.labels.comparer #:</label></div><div class="k-edit-field"><select data-role="dropdownlist" title="#: messages.validationDialog.labels.comparer #"data-text-field="name" data-value-field="type" data-bind="value: comparer, source: comparers" /></div><div class="k-edit-label"><label>#: messages.validationDialog.labels.start #:</label></div><div class="k-edit-field"><input name="#: messages.validationDialog.labels.start #" title="#: messages.validationDialog.labels.start #" class="k-textbox" data-bind="value: from, enabled: isDate" required="required" /></div><div data-bind="visible: showTo"><div class="k-edit-label"><label>#: messages.validationDialog.labels.end #:</label></div><div class="k-edit-field"><input name="#: messages.validationDialog.labels.end #" title="#: messages.validationDialog.labels.end #" class="k-textbox" data-bind="value: to, enabled: showToForDate" required="required" /></div></div></div><div data-bind="visible: isCustom"><div class="k-edit-label"><label>#: messages.validationDialog.labels.value #:</label></div><div class="k-edit-field"><input name="#: messages.validationDialog.labels.value #" title="#: messages.validationDialog.labels.value #" class="k-textbox" data-bind="value: from, enabled: isCustom" required="required" /></div></div><div data-bind="visible: isList"><div class="k-edit-label"><label>#: messages.validationDialog.labels.value #:</label></div><div class="k-edit-field"><input name="#: messages.validationDialog.labels.value #" title="#: messages.validationDialog.labels.value #" class="k-textbox" data-bind="value: from, enabled: isList" required="required" /></div></div><div data-bind="visible: isList"><div class="k-edit-field"><input type="checkbox" name="showButton" id="listShowButton" class="k-checkbox" data-bind="checked: showButton"/><label for="listShowButton" class="k-checkbox-label"> #: messages.validationDialog.labels.showListButton #</label></div></div><div data-bind="visible: isDate"><div class="k-edit-field"><input type="checkbox" name="showButton" id="dateShowButton" class="k-checkbox" data-bind="checked: showButton"/><label for="dateShowButton" class="k-checkbox-label"> #: messages.validationDialog.labels.showCalendarButton #</label></div></div><div data-bind="invisible: isAny"><div class="k-edit-field"><input type="checkbox" title="#: messages.validationDialog.labels.ignoreBlank #" name="ignoreBlank" id="ignoreBlank" class="k-checkbox" data-bind="checked: ignoreBlank"/><label for="ignoreBlank" class="k-checkbox-label"> #: messages.validationDialog.labels.ignoreBlank #</label></div></div><div data-bind="invisible: isAny"><div class="k-hr"></div><div class="k-edit-label"><label>#: messages.validationDialog.labels.onInvalidData #:</label></div><div class="k-edit-field"><input type="radio" title="#: messages.validationDialog.labels.rejectInput #" id="validationTypeReject" name="validationType" value="reject" data-bind="checked: type" class="k-radio" /><label for="validationTypeReject" class="k-radio-label">#: messages.validationDialog.labels.rejectInput #</label> <input type="radio" title="#: messages.validationDialog.labels.showWarning #" id="validationTypeWarning" name="validationType" value="warning" data-bind="checked: type" class="k-radio" /><label for="validationTypeWarning" class="k-radio-label">#: messages.validationDialog.labels.showWarning #</label></div></div><div data-bind="invisible: isAny" class="hint-wrapper"><div class="k-edit-field"><input type="checkbox" title="#: messages.validationDialog.labels.showHint #" name="useCustomMessages" id="useCustomMessages" class="k-checkbox" data-bind="checked: useCustomMessages" /><label class="k-checkbox-label" for="useCustomMessages"> #: messages.validationDialog.labels.showHint #</label></div><div data-bind="visible: useCustomMessages"><div class="k-edit-label"><label>#: messages.validationDialog.labels.hintTitle #:</label></div><div class="k-edit-field"><input class="k-textbox" title="#: messages.validationDialog.labels.hintTitle #" placeholder="#: messages.validationDialog.placeholders.typeTitle #" data-bind="value: hintTitle" /></div><div class="k-edit-label"><label>#: messages.validationDialog.labels.hintMessage #:</label></div><div class="k-edit-field"><input class="k-textbox" title="#: messages.validationDialog.labels.hintMessage #" placeholder="#: messages.validationDialog.placeholders.typeMessage #" data-bind="value: hintMessage" /></div></div></div><div class="k-action-buttons"><button class="k-button" data-bind="visible: showRemove, click: remove">#: messages.remove #</button><button class="k-button k-primary" data-bind="click: apply">#: messages.apply #</button><button class="k-button" data-bind="click: close">#: messages.cancel #</button></div></div>'},open:function(t){var n,i=this.options;this.viewModel=new D({type:i.type,defaultHintMessage:i.hintMessage,defaultHintTitle:i.hintTitle,defaultComparers:i.comparers.slice(0),comparerMessages:i.comparerMessages,criteria:i.criteria.slice(0),criterion:i.criterion,ignoreBlank:i.ignoreBlank,showButton:i.showButton,apply:this.apply.bind(this),close:this.close.bind(this),remove:this.remove.bind(this)}),this.viewModel.update(t.validation()),h.fn.open.call(this),n=this.dialog().element,this.validatable&&this.validatable.destroy(),e.bind(n,this.viewModel),this.validatable=new e.ui.Validator(n.find(".k-edit-form-container"),{validateOnBlur:!1,errorTemplate:this.options.errorTemplate||void 0})},apply:function(){this.validatable.validate()&&(h.fn.apply.call(this),this.trigger("action",{command:"EditValidationCommand",options:{value:this.viewModel.toValidationObject()}}))},remove:function(){this.viewModel.set("criterion","any"),this.apply()}}),e.spreadsheet.dialogs.register("validation",A),e.spreadsheet.dialogs.ValidationDialog=A,E=h.extend({init:function(t){h.fn.init.call(this,t),t=this.options,this.viewModel=e.observable({title:t.title,name:t.name,extension:t.extension,fileFormats:t.fileFormats,excel:t.excelExport,pdf:{proxyURL:t.pdfExport.proxyURL,forceProxy:t.pdfExport.forceProxy,title:t.pdfExport.title,author:t.pdfExport.author,subject:t.pdfExport.subject,keywords:t.pdfExport.keywords,creator:t.pdfExport.creator,date:t.pdfExport.date,fitWidth:t.pdf.fitWidth,area:t.pdf.area,areas:t.pdf.areas,paperSize:t.pdf.paperSize,paperSizes:t.pdf.paperSizes,margin:t.pdf.margin,margins:t.pdf.margins,landscape:t.pdf.landscape,guidelines:t.pdf.guidelines,hCenter:t.pdf.hCenter,vCenter:t.pdf.vCenter},apply:this.apply.bind(this),close:this.close.bind(this)});var n=this.dialog();this.viewModel.bind("change",function(e){"extension"===e.field&&(this.set("showPdfOptions",".pdf"===this.extension),n.center())}),e.bind(n.element,this.viewModel)},options:{title:a("exportAsDialog.title","Export..."),name:a("exportAsDialog.defaultFileName","Workbook"),extension:".xlsx",fileFormats:[{description:a("exportAsDialog.xlsx.description","Excel Workbook (.xlsx)"),extension:".xlsx"},{description:a("exportAsDialog.pdf.description","Portable Document Format (.pdf)"),extension:".pdf"}],pdf:{fitWidth:!0,area:"workbook",areas:[{area:"workbook",text:a("exportAsDialog.pdf.area.workbook","Entire Workbook")},{area:"sheet",text:a("exportAsDialog.pdf.area.sheet","Active Sheet")},{area:"selection",text:a("exportAsDialog.pdf.area.selection","Selection")}],paperSize:"a4",paperSizes:["a2","a3","a4","a5","b3","b4","b5","folio","legal","letter","tabloid","executive"].map(i),margin:{bottom:"0.75in",left:"0.7in",right:"0.7in",top:"0.75in"},margins:[{value:{bottom:"0.75in",left:"0.7in",right:"0.7in",top:"0.75in"},text:a("exportAsDialog.pdf.margin.normal","Normal")},{value:{bottom:"0.75in",left:"0.25in",right:"0.25in",top:"0.75in"},text:a("exportAsDialog.pdf.margin.narrow","Narrow")},{value:{bottom:"1in",left:"1in",right:"1in",top:"1in"},text:a("exportAsDialog.pdf.margin.wide","Wide")}],landscape:!0,guidelines:!0,hCenter:!0,vCenter:!0},width:520,template:"<div class='k-edit-label'><label>#: messages.exportAsDialog.labels.fileName #:</label></div><div class='k-edit-field'><input class='k-textbox' data-bind='value: name' /></div><div ><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.saveAsType #:</label></div><div class='k-edit-field'><select data-role='dropdownlist' class='k-file-format' data-text-field='description' data-value-field='extension' data-bind='value: extension, source: fileFormats' /></div></div><div class='k-export-config' data-bind='visible: showPdfOptions'><hr class='k-hr' /><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.exportArea #:</label></div><div class='k-edit-field'><select data-role='dropdownlist' class='k-file-format' data-text-field='text' data-value-field='area' data-bind='value: pdf.area, source: pdf.areas' /></div><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.paperSize#:</label></div><div class='k-edit-field'><select data-role='dropdownlist' class='k-file-format' data-text-field='text' data-value-field='value' data-bind='value: pdf.paperSize, source: pdf.paperSizes' /></div><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.margins #:</label></div><div class='k-edit-field'><select data-role='dropdownlist' class='k-file-format' data-value-primitive='true'data-text-field='text' data-value-field='value' data-bind='value: pdf.margin, source: pdf.margins' /></div><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.orientation #:</label></div><div class='k-edit-field'><div class='k-button-group'><input type='radio' id='k-orientation-portrait' name='orientation' data-type='boolean' data-bind='checked: pdf.landscape' value='false' /><label class='k-button k-button-icon k-group-start k-orientation-button' for='k-orientation-portrait'><span class='k-icon k-i-page-portrait'></span></label><input type='radio' id='k-orientation-landscape' name='orientation' data-type='boolean' data-bind='checked: pdf.landscape' value='true' /><label class='k-button k-button-icon k-group-end k-orientation-button' for='k-orientation-landscape'><span class='k-icon k-i-page-landscape'></span></label></div></div><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.print #:</label></div><div class='k-edit-field'><input class='k-checkbox' id='guidelines' type='checkbox' data-bind='checked: pdf.guidelines'/><label class='k-checkbox-label' for='guidelines'>#: messages.exportAsDialog.labels.guidelines#</label></div><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.scale #:</label></div><div class='k-edit-field'><input class='k-checkbox' id='fitWidth' type='checkbox' data-bind='checked: pdf.fitWidth'/><label class='k-checkbox-label' for='fitWidth'>#: messages.exportAsDialog.labels.fit #</label></div><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.center #:</label></div><div class='k-edit-field'><input class='k-checkbox' id='hCenter' type='checkbox' data-bind='checked: pdf.hCenter'/><label class='k-checkbox-label' for='hCenter'>#: messages.exportAsDialog.labels.horizontally #</label><input class='k-checkbox' id='vCenter' type='checkbox' data-bind='checked: pdf.vCenter'/><label class='k-checkbox-label' for='vCenter'>#: messages.exportAsDialog.labels.vertically #</label></div><div class='k-page-orientation'><span class='k-icon k-i-page-portrait' data-bind='invisible: pdf.landscape'></span><span class='k-icon k-i-page-landscape' data-bind='visible: pdf.landscape'></span></div></div><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: apply'>#: messages.save #</button><button class='k-button' data-bind='click: close'>#: messages.cancel #</button></div>"},apply:function(){h.fn.apply.call(this),this.trigger("action",{command:"SaveAsCommand",options:this.viewModel})}}),e.spreadsheet.dialogs.register("exportAs",E),o("modifyMerged","modifyMergedDialog.errorMessage"),o("rangeDisabled","rangeDisabledDialog.errorMessage"),o("intersectsArray","intersectsArrayDialog.errorMessage"),o("overflow","overflowDialog.errorMessage"),o("unsupportedSelection","unsupportedSelectionDialog.errorMessage"),o("incompatibleRanges","incompatibleRangesDialog.errorMessage"),o("noFillDirection","noFillDirectionDialog.errorMessage"),o("duplicateSheetName","duplicateSheetNameDialog.errorMessage"),I=g.extend({options:{width:640,title:"Errors in import",template:"<div class='k-spreadsheet-message-content k-spreadsheet-import-errors'><div class='k--header-message'>We encountered #= errors.length # errors while reading this file. Please be aware that some formulas might be missing, or contain invalid results.</div><div class='k--errors'><table><thead><tr><th>Context</th><th>Error message</th></tr></thead># for (var i = 0; i < errors.length; ++i) { ## var err = errors[i]; #<tr><td>#: err.context #</td><td>#: err.error #</td></tr># } #</table></div></div><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: close'>#: messages.okText #</button></div>"}}),e.spreadsheet.dialogs.register("importError",I),M=g.extend({options:{title:a("useKeyboardDialog.title","Copying and pasting"),template:"#: messages.useKeyboardDialog.errorMessage #<div>Ctrl+C #: messages.useKeyboardDialog.labels.forCopy #</div><div>Ctrl+X #: messages.useKeyboardDialog.labels.forCut #</div><div>Ctrl+V #: messages.useKeyboardDialog.labels.forPaste #</div><div class=\"k-action-buttons\"><button class='k-button k-primary' data-bind='click: close'>#= messages.okText #</button></div>"}}),e.spreadsheet.dialogs.register("useKeyboard",M),F=h.extend({options:{title:a("linkDialog.title","Hyperlink"),template:"<div class='k-edit-label'><label>#: messages.linkDialog.labels.url #:</label></div><div class='k-edit-field'><input class='k-textbox' data-bind='value: url' title='#: messages.linkDialog.labels.url #' /></div><div class='k-action-buttons'><button class='k-button k-left' data-bind='click: remove'>#= messages.linkDialog.labels.removeLink #</button><button class='k-button k-primary' data-bind='click: apply'>#= messages.okText #</button><button class='k-button' data-bind='click: cancel'>#= messages.cancel #</button></div>",autoFocus:!1},open:function(t){var n,i,o=this;h.fn.open.apply(o,arguments),n=o.dialog().element,i=e.observable({url:t.link(),apply:function(){/\S/.test(i.url)||(i.url=null),o.trigger("action",{command:"HyperlinkCommand",options:{link:i.url}}),o.close()},remove:function(){i.url=null,i.apply()},cancel:o.close.bind(o)}),e.bind(n,i),n.find("input").focus().on("keydown",function(e){13==e.keyCode?(i.url=l(this).val(),e.stopPropagation(),e.preventDefault(),i.apply()):27==e.keyCode&&(e.stopPropagation(),e.preventDefault(),i.cancel())})}}),e.spreadsheet.dialogs.register("hyperlink",F),R=h.extend({options:{className:"k-spreadsheet-insert-comment",template:"<div class='k-edit-label'><label>#: messages.insertCommentDialog.labels.comment #:</label></div><div class='k-edit-field'><textarea rows='5' class='k-textbox' data-bind='value: comment'></textarea></div><div class='k-action-buttons'> <button class='k-button k-left' data-bind='click: remove'>#: messages.insertCommentDialog.labels.removeComment #</button> <button class='k-button k-primary' data-bind='click: apply'>#: messages.okText #</button> <button class='k-button' data-bind='click: cancel'>#= messages.cancel #</button></div>",title:a("insertCommentDialog.title","Insert comment"),autoFocus:!1,width:450},open:function(t){var n,i,o=this;h.fn.open.apply(o,arguments),n=o.dialog().element,i=e.observable({comment:t.comment(),apply:function(){/\S/.test(i.comment)||(i.comment=null),o.trigger("action",{command:"InsertCommentCommand",options:{value:i.comment}}),o.close()},remove:function(){i.comment=null,i.apply()},cancel:o.close.bind(o)}),e.bind(n,i),n.find("textarea").focus()}}),e.spreadsheet.dialogs.register("insertComment",R),P=h.extend({options:{template:"<div class='k-spreadsheet-insert-image-dialog'> <label data-bind='style: { background-image: imageUrl }, css: { k-spreadsheet-has-image: hasImage, k-state-hovered: isHovered }, events: { dragenter: dragEnter, dragover: stopEvent, dragleave: dragLeave, drop: drop }'> <div data-bind='text: info'></div> <input type='file' data-bind='events: { change: change }' accept='image/png, image/jpeg, image/gif' /> </label></div><div class='k-action-buttons'> <button class='k-button k-primary' data-bind='enabled: okEnabled, click: apply'>#: messages.okText #</button> <button class='k-button' data-bind='click: cancel'>#= messages.cancel #</button></div>",title:a("insertImageDialog.title","Insert image"),width:"auto"},open:function(){var t,n,i=this;h.fn.open.apply(i,arguments),t=i.dialog().element,n=e.observable({okEnabled:!1,info:e.spreadsheet.messages.dialogs.insertImageDialog.info,imageUrl:"",hasImage:!1,isHovered:!1,_url:null,_image:null,apply:function(){window.URL.revokeObjectURL(n._url),i.trigger("action",{command:"InsertImageCommand",options:{blob:n._image,width:n._width,height:n._height}}),i.close()},cancel:i.close.bind(i),stopEvent:function(e){e.stopPropagation(),e.preventDefault()},drop:function(e){n.stopEvent(e),n.selectFile(e.originalEvent.dataTransfer.files),n.set("isHovered",!1)},dragEnter:function(e){n.stopEvent(e),n.set("isHovered",!0)},dragLeave:function(e){n.stopEvent(e),n.set("isHovered",!1)},change:function(e){n.selectFile(e.target.files)},selectFile:function(t){var i,o,r;for(o=0;o<t.length;++o)if(/^image\//i.test(t[o].type)){i=t[o];break}n._url&&window.URL.revokeObjectURL(n._url),i?(n._image=i,n._url=window.URL.createObjectURL(i),r=new Image,r.src=n._url,r.onload=function(){n._width=r.width,n._height=r.height,n.set("info",e.spreadsheet.messages.dialogs.insertImageDialog.info),n.set("okEnabled",!0),n.set("imageUrl","url('"+n._url+"')"),n.set("hasImage",!0)}):(n._image=null,n.set("info",e.spreadsheet.messages.dialogs.insertImageDialog.typeError),n.set("okEnabled",!1),n.set("imageUrl",""),n.set("hasImage",!1))}}),e.bind(t,n)}}),e.spreadsheet.dialogs.register("insertImage",P),r.prototype.trans=function(){var t,n=e.spreadsheet.messages.dialogs;for(t=0;t<this.path.length;++t)if(n=n[this.path[t]],!n)return this.def;return n})}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/sheetbinder.min",["kendo.core.min","kendo.data.min","spreadsheet/sheet.min"],e)}(function(){!function(e){var t,n;e.support.browser.msie&&e.support.browser.version<9||(t=function(e){return e},n=e.Class.extend({init:function(t){this.options=e.jQuery.extend({},this.options,t),this.columns=this._normalizeColumns(this.options.columns),this._sheet(),this._dataSource(),this._header(),this._boundRowsCount=0,this.dataSource.fetch()},_sheet:function(){this.sheet=this.options.sheet,this._sheetChangeHandler=this._sheetChange.bind(this),this._sheetDeleteRowHandler=this._sheetDeleteRow.bind(this),this._sheetInsertRowHandler=this._sheetInsertRow.bind(this),this.sheet.bind("change",this._sheetChangeHandler).bind("afterDeleteRow",this._sheetDeleteRowHandler).bind("afterInsertRow",this._sheetInsertRowHandler)},_sheetInsertRow:function(e){void 0!==e.index&&this.dataSource.insert(Math.max(e.index-1,0),{})},_sheetDeleteRow:function(e){var t,n;void 0!==e.index&&(t=this.dataSource,n=t.view()[e.index-1],n&&t.remove(n))},_header:function(){this.sheet.batch(function(){this.columns.forEach(function(e,t){this.sheet.range(0,t).value(e.title)}.bind(this))}.bind(this))},_sheetChange:function(n){var i,o,r,a,s,l,c;n.insertRow||n.deleteRow||n.recalc&&n.ref&&(i=this.dataSource,o=i.view(),r=this.columns,i.reader.model&&(a=i.reader.model.fields),!r.length&&o.length&&(r=Object.keys(o[0].toJSON())),s=r.map(function(n){var i=n.field;return i&&a&&a[i]&&"date"==a[i].type?e.spreadsheet.numberToDate:t}),this._skipRebind=!0,l=this.sheet._grid.normalize(n.ref),c=this.sheet.range(l).values(),l.forEach(function(e){var t,n,a,l,d;for(e=e.toRangeRef(),n=0,a=e.topLeft.row;a<=e.bottomRight.row;a++){for(t=o[a-1],t||(t=i.insert(a-1,{}),o=i.view()),l=0,d=e.topLeft.col;d<=e.bottomRight.col&&d<r.length;d++)t.set(r[d].field,s[d](c[n][l++]));n++}}),this._boundRowsCount=i.view().length,this._skipRebind=!1)},_normalizeColumns:function(e){return e.map(function(e){var t=e.field||e;return{field:t,title:e.title||t}})},_dataSource:function(){var t=this.options,n=t.dataSource;n=Array.isArray(n)?{data:n}:n,this.dataSource&&this._changeHandler?this.dataSource.unbind("change",this._changeHandler):this._changeHandler=this._change.bind(this),this.dataSource=e.data.DataSource.create(n).bind("change",this._changeHandler)},_change:function(){var t,n,i;this._skipRebind||this.sheet.trigger("dataBinding")||(t=this.dataSource.view(),n=this.columns,!n.length&&t.length&&(this.columns=n=this._normalizeColumns(Object.keys(t[0].toJSON())),this._header()),i=n.map(function(t){return e.getter(t.field)}),this.sheet.batch(function(){var e,n,o,r=Math.max(t.length,this._boundRowsCount);for(e=0;e<r;e++)for(n=0;n<i.length;n++)o=t[e]?i[n](t[e]):null,this.sheet.range(e+1,n).value(o)}.bind(this)),this._boundRowsCount=t.length,this.sheet.trigger("dataBound"))},destroy:function(){this.dataSource.unbind("change",this._changeHandler),this.sheet.unbind("change",this._sheetChangeHandler).unbind("deleteRow",this._sheetDeleteRowHandler).unbind("insertRow",this._sheetInsertRowHandler)},options:{columns:[]}}),e.spreadsheet.SheetDataSourceBinder=n)}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/filtermenu.min",["kendo.core.min","kendo.popup.min","kendo.treeview.min","kendo.numerictextbox.min","kendo.datepicker.min","kendo.datetimepicker.min"],e)}(function(){!function(e){function t(e){var t,n={},i=[];for(t=0;t<e.length;t++)n[e[t].value]?!n[e[t].value].checked&&e[t].checked&&(n[e[t].value].checked=!0):(n[e[t].value]=e[t],i.push(e[t]));return i}function n(t,i){var o,r,a,s,l,c,d=!1,u=t instanceof e.data.HierarchicalDataSource&&t.data(),h=this,p=this.values;for(o=0;o<u.length;o++)r=u[o],a=(""+r.text).toLowerCase(),s=i===!0||""===i||a.indexOf(i)>=0,l=n.bind(h),c=l(r.children,i),d=d||c||s,r.hidden=!s&&!c,i.length||p&&!p.length?r.checked=!r.hidden:p&&p.indexOf(r.text)!=-1&&(r.checked=!0);return u&&t.filter({field:"hidden",operator:"neq",value:!0}),d}function i(t){var n,o,r=t instanceof e.data.HierarchicalDataSource&&t.data();for(n=0;n<r.length;n++)o=r[n],o.checked=!1,o.hasChildren&&i(o.children)}function o(t){var n,i,o=e.spreadsheet.messages.filterMenu.operators,r=[];for(n in t)if(t.hasOwnProperty(n))for(i in t[n])t[n].hasOwnProperty(i)&&r.push({text:o[n][i],value:i,unique:n+"_"+i,type:n});return r}var r,a,s,l,c,d,u,h;e.support.browser.msie&&e.support.browser.version<9||(r=e.jQuery,a=e.ui.Widget,s={details:"k-details",button:"k-button",detailsSummary:"k-details-summary",detailsContent:"k-details-content",icon:"k-icon",iconCollapse:"k-i-arrow-45-down-right",iconExpand:"k-i-arrow-60-right",iconSearch:"k-i-zoom",textbox:"k-textbox",wrapper:"k-spreadsheet-filter-menu",filterByCondition:"k-spreadsheet-condition-filter",filterByValue:"k-spreadsheet-value-filter",valuesTreeViewWrapper:"k-spreadsheet-value-treeview-wrapper",actionButtons:"k-action-buttons"},e.spreadsheet.messages.filterMenu={all:"All",sortAscending:"Sort range A to Z",sortDescending:"Sort range Z to A",filterByValue:"Filter by value",filterByCondition:"Filter by condition",apply:"Apply",search:"Search",addToCurrent:"Add to current selection",clear:"Clear",blanks:"(Blanks)",operatorNone:"None",and:"AND",or:"OR",operators:{string:{contains:"Text contains",doesnotcontain:"Text does not contain",startswith:"Text starts with",endswith:"Text ends with",matches:"Text matches",doesnotmatch:"Text does not match"},date:{eq:"Date is",neq:"Date is not",lt:"Date is before",gt:"Date is after"},number:{eq:"Is equal to",neq:"Is not equal to",gte:"Is greater than or equal to",gt:"Is greater than",lte:"Is less than or equal to",lt:"Is less than"}}},l=a.extend({init:function(t,n){a.fn.init.call(this,t,n),this.element.addClass(h.classNames.details),this._summary=this.element.find("."+h.classNames.detailsSummary).on("click",this._toggle.bind(this));var i=n.expanded?h.classNames.iconCollapse:h.classNames.iconExpand;this._icon=r("<span />",{"class":h.classNames.icon+" "+i}).prependTo(this._summary),this._container=e.wrap(this._summary.next(),!0),n.expanded||this._container.hide()},options:{name:"Details"},events:["toggle"],visible:function(){return this.options.expanded},toggle:function(t){var n=e.fx(this._container).expand("vertical");n.stop()[t?"reverse":"play"](),this._icon.toggleClass(h.classNames.iconExpand,t).toggleClass(h.classNames.iconCollapse,!t),this.options.expanded=!t},_toggle:function(){var e=this.visible();this.toggle(e),this.trigger("toggle",{show:e})}}),e.data.binders.spreadsheetFilterValue=e.data.Binder.extend({init:function(t,n,i){e.data.Binder.fn.init.call(this,t,n,i),this._change=r.proxy(this.change,this),r(this.element).on("change",this._change)},refresh:function(){var e=this,t=e.bindings.spreadsheetFilterValue.get();r(e.element).val(t instanceof Date?"":t)},change:function(){var e=this.element.value;this.bindings.spreadsheetFilterValue.set(e)}}),e.data.binders.widget.spreadsheetFilterValue=e.data.Binder.extend({init:function(t,n,i){e.data.Binder.fn.init.call(this,t.element[0],n,i),this.widget=t,this._change=r.proxy(this.change,this),this.widget.first("change",this._change)},refresh:function(){var e=this.bindings.spreadsheetFilterValue,t=e.get(),n=r(this.widget.element).data("filterType");this.widget.value("date"===n&&t instanceof Date||"number"===n&&!isNaN(t)?t:null)},change:function(){var e=this.widget.value(),t=this.bindings.spreadsheetFilterValue;t.set(e)}}),c={filterByValue:"<div class='"+s.detailsSummary+"'>#= messages.filterByValue #</div><div class='"+s.detailsContent+"'><div class='k-textbox k-space-right'><input placeholder='#= messages.search #' data-#=ns#bind='events: { input: filterValues }' /><span class='k-icon k-i-zoom' /></div><div data-#=ns#bind='visible: hasActiveSearch'><input class='k-checkbox' type='checkbox' data-#=ns#bind='checked: appendToSearch' id='_#=guid#' /><label class='k-checkbox-label' for='_#=guid#'>#= messages.addToCurrent #</label></div><div class='"+s.valuesTreeViewWrapper+"'><div data-#=ns#role='treeview' data-#=ns#checkboxes='{ checkChildren: true }' data-#=ns#bind='source: valuesDataSource, events: { check: valuesChange, select: valueSelect }' /></div></div>",filterByCondition:"<div class='"+s.detailsSummary+"'>#= messages.filterByCondition #</div><div class='"+s.detailsContent+'\'><div><select data-#=ns#role="dropdownlist"data-#=ns#bind="value: operator, source: operators, events: { change: operatorChange } "data-value-primitive="false"data-option-label="#=messages.operatorNone#"data-height="auto"data-text-field="text"data-value-field="unique"></select></div><div data-#=ns#bind="visible: isString"><input data-filter-type="string" data-#=ns#bind="spreadsheetFilterValue: customFilter.criteria[0].value" class="k-textbox" /></div><div data-#=ns#bind="visible: isNumber"><input data-filter-type="number" data-#=ns#role="numerictextbox" data-#=ns#bind="spreadsheetFilterValue: customFilter.criteria[0].value" /></div><div data-#=ns#bind="visible: isDate"><input data-filter-type="date" data-#=ns#role="datepicker" data-#=ns#bind="spreadsheetFilterValue: customFilter.criteria[0].value" /></div></div>',menuItem:"<li data-command='#=command#' data-dir='#=dir#'><span class='k-icon k-i-#=iconClass#'></span>#=text#</li>",actionButtons:"<button data-#=ns#bind='click: apply' class='k-button k-primary'>#=messages.apply#</button><button data-#=ns#bind='click: clear' class='k-button'>#=messages.clear#</button>"},d=e.spreadsheet.FilterMenuViewModel=e.data.ObservableObject.extend({valuesChange:function(t){var n=t?t.sender.dataSource:this.valuesDataSource,i=function(e){return e.checked},o=function(t){return"date"===t.dataType?e.spreadsheet.dateToNumber(t.value):t.value},r=function(e,t,n){return n.lastIndexOf(e)===t},a=n.data(),s=a[0].children.data().toJSON(),l=s.filter(function(e){return"blank"===e.dataType});l=!!l.length&&l[0].checked,s=s.filter(i).map(o),this.appendToSearch&&this.valueFilter&&this.valueFilter.values.length&&(s=s.concat(this.valueFilter.values.toJSON()).sort().filter(r)),this.set("valueFilter",{values:s,blanks:l})},valueSelect:function(e){e.preventDefault();var t=e.sender.dataItem(e.node);t.set("checked",!t.checked)},hasActiveSearch:!1,appendToSearch:!1,filterValues:function(e){var t,o="string"==typeof e?e:r(e.target).val().toLowerCase(),a=this.valuesDataSource;this.set("hasActiveSearch",!!o),t=n.bind(this.valueFilter),i(a),t(a,o)},reset:function(){this.set("customFilter",{logic:"and",criteria:[{operator:null,value:null}]}),this.set("valueFilter",{values:[]})},operatorChange:function(e){var t=e.sender.dataItem();this.set("operatorType",t.type),this.get("customFilter")||this.reset(),this.set("customFilter.criteria[0].operator",t.value)},isNone:function(){return void 0===this.get("operatorType")},isString:function(){return"string"===this.get("operatorType")},isNumber:function(){return"number"===this.get("operatorType")},isDate:function(){return"date"===this.get("operatorType")}}),u=e.spreadsheet.FilterMenuController={valuesTree:function(t,n){return[{text:e.spreadsheet.messages.filterMenu.all,expanded:!0,checked:!1,items:this.values(t.resize({ +top:1}),n)}]},values:function(n,i){var o=[],r=e.spreadsheet.messages.filterMenu,a=n.column(i),s=n.sheet();return a.forEachCell(function(t,n,i){var a,l,c,d=!0;s.isHiddenRow(t)&&(d=!1),a=i.value,l=i.dataType,c=i.text,l=void 0===a?"blank":i.format?e.spreadsheet.formatting.type(a,i.format):typeof a,c=null!==a&&i.format?e.spreadsheet.formatting.text(a,i.format):"blank"==l?r.blanks:a,"percent"!==l&&"currency"!==l||(l="number"),"date"===l&&(a=e.spreadsheet.numberToDate(a)),o.push({dataType:l,value:a,text:c,checked:d})}),o=t(o),o.sort(function(e,t){return e.dataType===t.dataType?0:"blank"===e.dataType||"blank"===t.dataType?"blank"===e.dataType?-1:1:"number"===e.dataType||"number"===t.dataType?"number"===e.dataType?-1:1:"date"===e.dataType||"date"===t.dataType?"date"===e.dataType?-1:1:0}),o},filterType:function(e,t){var n,i,o,r=e.sheet(),a=this.filterForColumn(t,r);return a=a&&a.filter.toJSON(),a&&"custom"==a.filter&&(i=a.criteria[0].value,i instanceof Date?n="date":"string"==typeof i?n="string":"number"==typeof i&&(n="number")),n||(o=this.values(e.row(1),t)[0],n=o&&o.dataType,"blank"==n&&(n=null)),n},filterForColumn:function(e,t){var n,i=t.filter();return i&&(n=i.columns.filter(function(t){return t.index===e})[0]),n},filter:function(e,t){var n,i,o,r,a=this.filterForColumn(e,t);if(a)return n=a.filter.toJSON(),i=n.filter,delete n.filter,o={type:i,options:n},r=n.criteria,r&&r.length&&(o.operator=r[0].operator),o}},h=a.extend({init:function(e,t){a.call(this,e,t),this.element.addClass(h.classNames.wrapper),this.viewModel=new d({active:"value",operator:null,operators:o(this.options.operators),clear:this.clear.bind(this),apply:this.apply.bind(this)}),this._filterInit(),this._popup(),this._sort(),this._filterByCondition(),this._filterByValue(),this._actionButtons()},options:{name:"FilterMenu",column:0,range:null,operators:{string:{contains:"Text contains",doesnotcontain:"Text does not contain",startswith:"Text starts with",endswith:"Text ends with",matches:"Text matches",doesnotmatch:"Text does not match"},date:{eq:"Date is",neq:"Date is not",lt:"Date is before",gt:"Date is after"},number:{eq:"Is equal to",neq:"Is not equal to",gte:"Is greater than or equal to",gt:"Is greater than",lte:"Is less than or equal to",lt:"Is less than"}}},events:["action"],destroy:function(){a.fn.destroy.call(this),this.menu.destroy(),this.valuesTreeView.destroy(),this.popup.destroy()},openFor:function(e){this.popup.setOptions({anchor:e}),this.popup.open()},close:function(){this.popup.close()},clear:function(){this.action({command:"ClearFilterCommand",options:{column:this.options.column}}),this.viewModel.reset(),this.close()},apply:function(){var e,t,n;this._active(),e={operatingRange:this.options.range,column:this.options.column},"value"===this.viewModel.active?(this.viewModel.valuesChange({sender:this.valuesTreeView}),t=this.viewModel.valueFilter.toJSON(),(t.blanks||t.values&&t.values.length)&&(e.valueFilter=t)):"custom"===this.viewModel.active&&(n=this.viewModel.customFilter.toJSON(),n.criteria.length&&null!==n.criteria[0].value&&(e.customFilter=n)),(e.valueFilter||e.customFilter)&&this.action({command:"ApplyFilterCommand",options:e})},action:function(e){this.trigger("action",r.extend({},e))},_filterInit:function(){var e,t=this.options.column,n=this.options.range,i=n.sheet(),o=u.filter(t,i);o?(e=u.filterType(n,t),this.viewModel.set("active",o.type),this.viewModel.set(o.type+"Filter",o.options),"custom"==o.type&&(this.viewModel.set("operator",e+"_"+o.operator),this.viewModel.set("operatorType",e))):this.viewModel.reset()},_popup:function(){this.popup=this.element.kendoPopup({copyAnchorStyles:!1}).data("kendoPopup")},_sort:function(){var t=e.template(h.templates.menuItem),n=e.spreadsheet.messages.filterMenu,i=[{command:"sort",dir:"asc",text:n.sortAscending,iconClass:"sort-asc"},{command:"sort",dir:"desc",text:n.sortDescending,iconClass:"sort-desc"}],o=r("<ul />",{html:e.render(t,i)}).appendTo(this.element);this.menu=o.kendoMenu({orientation:"vertical",select:function(e){var t=r(e.item).data("dir"),n=this.options.range.resize({top:1}),i={value:t,sheet:!1,operatingRange:n,column:this.options.column};n.isSortable()?this.action({command:"SortCommand",options:i}):this.close()}.bind(this)}).data("kendoMenu")},_appendTemplate:function(t,n,i,o){var a=e.template(t),s=r("<div class='"+n+"'/>").html(a({messages:e.spreadsheet.messages.filterMenu,guid:e.guid(),ns:e.ns}));return this.element.append(s),i&&(i=new l(s,{expanded:o,toggle:this._detailToggle.bind(this)})),e.bind(s,this.viewModel),s},_detailToggle:function(e){this.element.find("[data-role=details]").not(e.sender.element).data("kendoDetails").toggle(!e.show)},_filterByCondition:function(){var e="custom"===this.viewModel.active;this._appendTemplate(h.templates.filterByCondition,h.classNames.filterByCondition,!0,e)},_filterByValue:function(){var t,n="value"===this.viewModel.active,i=this._appendTemplate(h.templates.filterByValue,h.classNames.filterByValue,!0,n);this.valuesTreeView=i.find("[data-role=treeview]").data("kendoTreeView"),t=u.valuesTree(this.options.range,this.options.column),this.viewModel.set("valuesDataSource",new e.data.HierarchicalDataSource({data:t}))},_actionButtons:function(){this._appendTemplate(h.templates.actionButtons,h.classNames.actionButtons,!1)},_active:function(){var e=this.element.find("[data-role=details]").filter(function(e,t){return r(t).data("kendoDetails").visible()});e.hasClass(h.classNames.filterByValue)?this.viewModel.set("active","value"):e.hasClass(h.classNames.filterByCondition)&&this.viewModel.set("active","custom")}}),e.spreadsheet.FilterMenu=h,r.extend(!0,h,{classNames:s,templates:c}))}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/editor.min",["kendo.core.min"],e)}(function(){!function(e){function t(e,t){return e&&(e.top!==t.top||e.left!==t.left)}if(!(e.support.browser.msie&&e.support.browser.version<9)){var n=e.Observable.extend({init:function(t){e.Observable.fn.init.call(this),this.view=t,this.formulaBar=t.formulaBar,this._active=!1,this.barInput=t.formulaBar.formulaInput,this.cellInput=t.formulaInput,this.barInput.syncWith(this.cellInput),this.cellInput.syncWith(this.barInput),this.barInput.bind("keyup",this._triggerUpdate.bind(this)),this.cellInput.bind("keyup",this._triggerUpdate.bind(this)),this.barInput.bind("blur",this._blur.bind(this)),this.cellInput.bind("blur",this._blur.bind(this))},events:["activate","deactivate","change","update"],_blur:function(){this.deactivate()},_triggerUpdate:function(){this.trigger("update",{value:this.value()})},activeEditor:function(){var t=null,n=e._activeElement();return this.barElement()[0]===n?t=this.barInput:this.cellElement()[0]===n&&(t=this.cellInput),t},activate:function(e){return this._active=!0,this._rect=e.rect,this._range=e.range,this.cellInput.position(e.rect),this.cellInput.resize(e.rect),this.cellInput.tooltip(e.tooltip),this.cellInput.activeCell=this.barInput.activeCell=this._range.topLeft(),this.cellInput.activeSheet=this.barInput.activeSheet=this._range._sheet,this.trigger("activate"),this},deactivate:function(e){var t=this.cellInput;this._active&&(this._active=!1,e||t.value()==this._value||this.trigger("change",{value:t.value(),range:this._range}),this._rect=null,t.hide(),this.trigger("deactivate"))},enable:function(e){this.barInput.enable(e),this.cellInput.enable(e)},barElement:function(){return this.barInput.element},cellElement:function(){return this.cellInput.element},focus:function(e){e=e||"cell","cell"===e?(this.cellInput.element.focus(),this.cellInput.end()):this.barInput.element.focus()},isActive:function(){return this._active},isFiltered:function(){return this.barInput.popup.visible()||this.cellInput.popup.visible()},canInsertRef:function(e){var t=this.activeEditor();return t&&t.canInsertRef(e)},highlightedRefs:function(){var e=this.activeEditor(),t=[];return e&&(t=e.highlightedRefs()),t},scale:function(){this.cellInput.scale()},toggleTooltip:function(e){this.cellInput.toggleTooltip(t(this._rect,e))},value:function(e,t){return void 0===e?this.barInput.value():(null===e&&(e=""),this._value=e,this.barInput.value(e),this.cellInput.value(e),void this.barInput.element.toggleClass("k-spreadsheet-array-formula",!!t))},insertNewline:function(){this.activeEditor().insertNewline(),this.scale()},select:function(){this.activeEditor().select()}});e.spreadsheet.SheetEditor=n}}(kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/autofill.min",["spreadsheet/runtime.min","spreadsheet/range.min"],e)}(function(){"use strict";function e(e){var t,n,i,o,r,a=e.length,s=(a+1)/2,l=e.reduce(function(e,t){return e+t},0)/a,c=0,d=0;for(t=0;t<a;t++)n=t+1-s,i=e[t]-l,c+=n*i,d+=n*n;return d?(o=c/d,r=l-o*s,function(e){return r+o*(e+1)}):function(t){return e[t%e.length]}}function t(t){function o(e){var t,n=e[1]-e[0];for(t=2;t<e.length;++t)if(e[t]-e[t-1]!=n)return null;return n}function r(e){return e.map(function(e){return e.number})}var a=[],s=t.map(function(e){return e.formula||e.value});return i(s,function(t,n,i,l){var c,d,u,h,p;for("number"==i?(d=r(l),c=e(d)):"string"==i||"formula"==i||"boolean"==i?c=function(e,t){return s[t]}:Array.isArray(i)?1==l.length?c=function(e){return i[(l[0].number+e)%i.length]}:(u=o(r(l)),c=null==u?function(e){return l[e%l.length].value}:function(e){var t=l[0].number+u*e;return i[t%i.length]}):"null"!=i?(d=r(l),1==d.length&&d.push(d[0]+1),d=e(d),c=function(e,t){return s[t].replace(/^(.*\D)\d+/,"$1"+d(e,t))}):c=function(){return null},h={f:c,begin:t,end:n,len:n-t},p=t;p<n;++p)a[p]=h}),function(e,i){var o=a[i],r=e/s.length|0,l=e%s.length,c=r*o.len+l-o.begin,d=o.f(c,i),h=n(t[i]);return delete h.enable,d instanceof u?h.formula=d:h.value=d,h}}function n(e){var t={};return Object.keys(e||{}).forEach(function(n){t[n]=e[n]}),t}function i(e,t){var n,i,r=null,a=0,s=[];for(i=0;i<e.length;++i)n=o(e[i]),s.push(n),null!=r&&n.type!==r.type&&(t(a,i,r.type,s.slice(a,i)),a=i),r=n;t(a,i,r.type,s.slice(a,i))}function o(e){var t,n;if("number"==typeof e)return{type:"number",number:e};if("string"==typeof e)return(t=a(e))?t:(n=/^(.*\D)(\d+)/.exec(e),n?(e=e.replace(/^(.*\D)\d+/,"$1-######"),{type:e,match:n,number:parseFloat(n[2])}):{type:"string"});if("boolean"==typeof e)return{type:"boolean"};if(null==e)return{type:"null"};if(e instanceof u)return{type:"formula"};throw window.console.error(e),Error("Cannot fill data")}function r(){var e=kendo.culture();return[e.calendars.standard.days.namesAbbr,e.calendars.standard.days.names,e.calendars.standard.months.namesAbbr,e.calendars.standard.months.names]}function a(e){var t,n,i,o,a=e.toLowerCase(),s=r();for(t=0;t<s.length;++t)for(n=s[t],i=n.length;--i>=0;)if(o=n[i].toLowerCase(),o==a)return{type:n,number:i,value:e}}function s(e){var t,n,i=e.length,o=e[0].length,r=[];for(t=0;t<o;++t)for(r[t]=[],n=0;n<i;++n)r[t][n]=e[n][t];return r}var l,c,d,u,h,p,f;kendo.support.browser.msie&&kendo.support.browser.version<9||(l=kendo.spreadsheet,c=l.Range,d=l.calc.runtime,u=d.Formula,h="incompatibleRanges",p="noFillDirection",f=c.FillError=function(e){this.code=e},c.prototype._previewFillFrom=function(e,n){var i,o,r,a,l,c,d,u,g,m,v,_,b,w,k,y,x=this,C=x._sheet;if("string"==typeof e&&(e=C.range(e)),i=e._ref.toRangeRef().clone().setSheet(C.name()),o=x._ref.toRangeRef().clone().setSheet(C.name()),i.intersects(o)){if(i.eq(o))return null;if(o=o.clone(),i.topLeft.eq(o.topLeft))if(i.width()==o.width())o.topLeft.row+=i.height(),n=0;else{if(i.height()!=o.height())throw new f(h);o.topLeft.col+=i.width(),n=1}else{if(!i.bottomRight.eq(o.bottomRight))throw new f(h);if(i.width()==o.width())o.bottomRight.row-=i.height(),n=2;else{if(i.height()!=o.height())throw new f(h);o.bottomRight.col-=i.width(),n=3}}return C.range(o)._previewFillFrom(e,n)}if(null==n)if(i.topLeft.col==o.topLeft.col)n=i.topLeft.row<o.topLeft.row?0:2;else{if(i.topLeft.row!=o.topLeft.row)throw new f(p);n=i.topLeft.col<o.topLeft.col?1:3}if(r=1&n,a=2&n,r&&i.height()!=o.height()||!r&&i.width()!=o.width())throw new f(h);for(l=e._properties(),r?c=o.width():(l=s(l),c=o.height()),d=Array(l.length),u=null,g=0;g<l.length;++g)for(m=l[g],v=t(m),_=d[g]=Array(c),b=0;b<c;++b)w=a?-b-1:m.length+b,k=a?m.length-b%m.length-1:b%m.length,y=_[a?c-b-1:b]=v(w,k),null!=y.value&&(u=y.value);return r||(d=s(d)),{props:d,direction:n,dest:x,hint:u}},c.prototype.fillFrom=function(e,t){var n=this._previewFillFrom(e,t);return n.dest._properties(n.props,!0),n.dest})},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/nameeditor.min",["kendo.core.min"],e)}(function(){!function(e){var t,n,i;e.support.browser.msie&&e.support.browser.version<9||(t=e.jQuery,n={input:"k-spreadsheet-name-editor",list:"k-spreadsheet-name-list"},i=e.ui.Widget.extend({init:function(i,o){var r,a,s;e.ui.Widget.call(this,i,o),i.addClass(n.input),r=o.messages.nameBox||"Name Box",a=new e.data.DataSource({transport:{read:function(t){var n=[];this._workbook.forEachName(function(t){!t.hidden&&t.value instanceof e.spreadsheet.Ref&&n.push({name:t.name})}),t.success(n)}.bind(this),cache:!1}}),s=t("<input />").attr("title",r).attr("aria-label",r),this.combo=s.appendTo(i).kendoComboBox({clearButton:!1,dataTextField:"name",dataValueField:"name",template:"#:data.name#<a class='k-button-delete' href='\\#'><span class='k-icon k-i-close'></span></a>",dataSource:a,autoBind:!1,ignoreCase:!0,change:this._on_listChange.bind(this),noDataTemplate:"<div></div>",open:function(){a.read()}}).getKendoComboBox(),this.combo.input.on("keydown",this._on_keyDown.bind(this)).on("focus",this._on_focus.bind(this)),this.combo.popup.element.addClass("k-spreadsheet-names-popup").on("mousemove",function(e){e.stopPropagation()}).on("click",".k-button-delete",function(e){e.preventDefault(),e.stopPropagation();var n=t(e.target).closest(".k-item");n=this.combo.dataItem(n),this._deleteItem(n.name)}.bind(this))},value:function(e){return void 0===e?this.combo.value():void this.combo.value(e)},_deleteItem:function(e){this.trigger("delete",{name:e})},_on_keyDown:function(e){switch(e.keyCode){case 27:this.combo.value(this._prevValue),this.trigger("cancel");break;case 13:this.trigger("enter")}},_on_focus:function(){this._prevValue=this.combo.value()},_on_listChange:function(){var e=this.combo.value();e&&this.trigger("select",{name:e})}}),e.spreadsheet.NameEditor=i)}(window.kendo)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("spreadsheet/print.min",["kendo.pdf.min","spreadsheet/sheet.min","spreadsheet/range.min","spreadsheet/references.min","spreadsheet/numformat.min","util/text-metrics.min"],e)}(function(){"use strict";function e(e,t,n,i,o){var r=0,a=[],s=t,l=0;return t&&n&&(n*=t),e.forEach(function(e,c){null!=i&&c<i&&(l+=e),t&&r+e>s&&(s-r<n&&(r=t*Math.ceil(r/t)+l,l>0&&o.push(r-l)),s+=t*Math.ceil(e/t)),a.push(r),r+=e}),a.push(r),a}function t(t,i,c){var d,u,h,p,f,g,m,v,_,w,k,y,x,C,S,T,D,A,E=t._grid;return i=E.normalize(i),d=E.rectangle(i),u=[],t._drawings.forEach(function(e){var n=t.drawingBoundingBox(e);n.intersects(d)&&u.push({drawing:e,box:n.offset(-d.left,-d.top)})}),h=[],p=[],f=[],g=t._getMergedCells(i),m=-1,v=-1,t.forEach(i,function(e,n,o){var r,s,l,d=e-i.topLeft.row,_=n-i.topLeft.col,w=t.rowHeight(e),k=t.columnWidth(n);c.forScreen||(o.drawings=u.filter(function(i){var o=i.drawing.topLeftCell;if(o&&o.row==e&&o.col==n)return m=Math.max(m,t._rows.index(i.box.bottom)),v=Math.max(v,t._columns.index(i.box.right)),!0})),_||p.push(w),d||f.push(k),!t.isHiddenColumn(n)&&!t.isHiddenRow(e)&&w&&k&&(r=c.forScreen||a(o),(c.emptyCells||r)&&(s=new b(e,n).print(),g.secondary[s]||(r?(m=Math.max(m,d),v=Math.max(v,_)):o.empty=!0,o.row=d,o.col=_,l=g.primary[s],l?(delete g.primary[s],o.merged=!0,o.rowspan=l.height(),o.colspan=l.width(),c.forScreen&&(o.width=t._columns.sum(l.topLeft.col,l.bottomRight.col),o.height=t._rows.sum(l.topLeft.row,l.bottomRight.row))):(o.rowspan=1,o.colspan=1),h.push(o))))}),p=p.slice(0,m+1),f=f.slice(0,v+1),_=c.pageWidth,w=c.pageHeight,k=c.scale||1,c.fitWidth&&(y=f.reduce(o,0),y>_&&(k=_/y)),_=Math.ceil(_/k),w=Math.ceil(w/k),x=[],C=e(p,w||0,c.maxEmpty,c.headerRows,x),S=e(f,_||0,c.maxEmpty),T=0,D=0,A=[],h=h.filter(function(e){return(!e.empty||!(e.row>m||e.col>v))&&(c.headerRows&&e.row<c.headerRows&&A.push(e),e.left=S[e.col],e.top=C[e.row],e.merged?c.forScreen?(e.right=e.left+e.width,e.bottom=e.top+e.height):(e.right=r(S,e.col+e.colspan),e.bottom=r(C,e.row+e.rowspan),e.width=e.right-e.left,e.height=e.bottom-e.top):(e.width=f[e.col],e.height=p[e.row],e.bottom=e.top+e.height,e.right=e.left+e.width),c.forScreen||e.drawings.forEach(function(t){var n=t.box;n.left=e.left+t.drawing.offsetX,n.top=e.top+t.drawing.offsetY,n.right=n.left+n.width,n.bottom=n.top+n.height}),T=Math.max(T,e.right),D=Math.max(D,e.bottom),!0)}),Object.keys(g.primary).forEach(function(e){var n=g.primary[e];t.forEach(n.topLeft.toRangeRef(),function(e,o,r){var a=e-i.topLeft.row,s=o-i.topLeft.col;r.merged=!0,r.colspan=n.width(),r.rowspan=n.height(),r.top=a<0?-t._rows.sum(e,e-a-1):C[a],r.left=s<0?-t._columns.sum(o,o-s-1):S[s],r.height=t._rows.sum(n.topLeft.row,n.bottomRight.row),r.width=t._columns.sum(n.topLeft.col,n.bottomRight.col),r.height>0&&r.width>0&&(r.right=r.left+r.width,r.bottom=r.top+r.height,r.row=a,r.col=s,h.push(r))})}),c.headerRows&&(x.forEach(function(e){A.forEach(function(t){t=n(t),t.top+=e,t.bottom=t.top+t.height,h.push(t)}),C.push(e)}),C.sort(l)),{width:T,height:D,cells:h.sort(s),scale:k,xCoords:S,yCoords:C,drawings:u}}function n(e,t){return t||(t={}),Object.assign?Object.assign(t,e):Object.keys(e).reduce(function(t,n){return t[n]=e[n],t},t)}function i(e,t){return e.size===t.size&&e.color===t.color}function o(e,t){return e+t}function r(e,t){return t<e.length?e[t]:e[e.length-1]}function a(e){return null!=e.value||e.merged||null!=e.background||null!=e.borderRight||null!=e.borderBottom||null!=e.validation&&!e.validation.value||e.drawings&&e.drawings.length}function s(e,t){return e.top<t.top?-1:e.top==t.top?e.left<t.left?-1:e.left==t.left?0:1:1}function l(e,t){return e<t?-1:e>t?1:0}function c(e,t,n,i){function o(o,r){function a(e){return!(e.right<=v||e.left>=_||e.bottom<=b||e.top>=k)&&(C=Math.max(e.bottom,C),S=Math.max(e.right,S),!0)}var s,l,h,p,f,g,v=r*c,_=v+c,b=o*u,k=b+u,C=0,S=0,T=t.cells.filter(a),D=t.drawings.filter(function(e){return a(e.box)});C=Math.min(C,k),S=Math.min(S,_),(T.length||D.length)&&(s=new w.Group,n.append(s),l=new w.Group,s.append(l),l.clip(w.Path.fromRect(new y.Rect([v-1,b-1],[S+1,C+1]))),h=y.Matrix.scale(t.scale,t.scale).multiplyCopy(y.Matrix.translate(-v,-b)),(i.hCenter||i.vCenter)&&(h=h.multiplyCopy(y.Matrix.translate(i.hCenter?(_-S)/2:0,i.vCenter?(k-C)/2:0))),l.transform(h),i.guidelines&&(p=null,t.xCoords.forEach(function(e){e=Math.min(e,S),e!==p&&e>=v&&e<=_&&(p=e,l.append((new w.Path).moveTo(e,b).lineTo(e,C).close().stroke(i.guideColor,x)))}),p=null,t.yCoords.forEach(function(e){e=Math.min(e,C),e!==p&&e>=b&&e<=k&&(p=e,l.append((new w.Path).moveTo(v,e).lineTo(S,e).close().stroke(i.guideColor,x)))})),f=m(),T.forEach(function(t){d(t,l,i),f.add(t,e)}),g=new w.Group,f.vert.forEach(function(e){e.forEach(function(e){e.rendered||(e.rendered=!0,g.append((new w.Path).moveTo(e.x,e.top).lineTo(e.x,e.bottom).close().stroke(e.color,e.size)))})}),f.horiz.forEach(function(e){e.forEach(function(e){e.rendered||(e.rendered=!0,g.append((new w.Path).moveTo(e.left,e.y).lineTo(e.right,e.y).close().stroke(e.color,e.size)))})}),l.append(g),D.forEach(function(t){var n,i,o=t.drawing,r=o.image;null!=r&&(n=t.box,i=e._workbook.imageUrl(r),l.append(new w.Image(i,new y.Rect([n.left,n.top],[n.width,n.height])).opacity(o.opacity)))}))}var r,a,s=Math.ceil(t.width/i.pageWidth),l=Math.ceil(t.height/i.pageHeight),c=Math.ceil(i.pageWidth/t.scale),u=Math.ceil(i.pageHeight/t.scale);for(r=0;r<l;++r)for(a=0;a<s;++a)o(r,a)}function d(e,t,n){var i,o,r,a,s,l,c,d=new w.Group;if(t.append(d),i=new y.Rect([e.left,e.top],[e.width,e.height]),(e.background||e.merged)&&(o=i,n.guidelines&&(o=i.clone(),o.origin.x+=x/2+.1,o.origin.y+=x/2+.1,o.size.width-=x+.2,o.size.height-=x+.2),d.append(new w.Rect(o).fill(e.background||"#fff").stroke(null))),r=e.value,null!=r){if(a="number"==typeof r?"number":null,s=new w.Group,s.clip(w.Path.fromRect(i)),d.append(s),c=e.format,c||"number"!=a||r==Math.floor(r)||(c="0.##############"),c?(l=k.textAndColor(r,c),r=l.text,l.type&&(a=l.type)):r+="",!e.textAlign)switch(a){case"number":case"date":case"percent":case"currency":e.textAlign="right";break;case"boolean":e.textAlign="center"}h(r,l&&l.color||e.color||"#000",e,s)}}function u(e,t){if(e.indent){var n=1.4*e.indent;switch(t.textAlign){case null:case"left":t.paddingLeft=n+"ch";break;case"right":t.paddingRight=n+"ch";break;case"center":t.paddingLeft=n/2+"ch",t.paddingRight=n/2+"ch"}}}function h(e,t,n,i){var o,r;switch(C||(C=document.createElement("div"),C.style.position="fixed",C.style.left="0px",C.style.top="0px",C.style.visibility="hidden",C.style.overflow="hidden",C.style.boxSizing="border-box",C.style.lineHeight="normal",document.body.appendChild(C)),C.firstChild&&C.removeChild(C.firstChild),C.style.padding="2px 4px",C.style.color=t,C.style.font=p(n),C.style.width=n.width+"px",C.style.textAlign=n.textAlign||"left",C.style.textDecoration=n.underline?"underline":"none",u(n,C.style),n.wrap?(C.style.whiteSpace="pre-wrap",C.style.overflowWrap=C.style.wordWrap="break-word"):(C.style.whiteSpace="pre",C.style.overflowWrap=C.style.wordWrap="normal"),C.appendChild(document.createTextNode(e)),o=0,n.verticalAlign){case"center":o=n.height-C.offsetHeight>>1;break;case void 0:case null:case"bottom":o=n.height-C.offsetHeight}o<0&&(o=0),r=kendo.drawing.drawDOM.drawText(C),r.transform(y.Matrix.translate(n.left,n.top+o)),i.append(r)}function p(e){var t=[];return e.italic&&t.push("italic"),e.bold&&t.push("bold"),t.push((e.fontSize||12)+"px"),t.push(e.fontFamily||"Arial"),t.join(" ")}function f(e,n,i,o){var r,a,s,l,d;null==i&&null==o&&(o=n,i={},n=_.SHEETREF),null==o&&(o=i,n instanceof _.Range||n instanceof _.Ref||"string"==typeof n?i={}:(i=n,n=_.SHEETREF)),i=kendo.jQuery.extend({paperSize:"A4",landscape:!0,margin:"1cm",guidelines:!0,guideColor:"#aaa",emptyCells:!0,fitWidth:!1,center:!1,headerRows:null,maxEmpty:.2,scale:1},i),r=new w.Group,a=kendo.pdf.getPaperOptions(i),r.options.set("pdf",{author:i.author,creator:i.creator,date:i.date,keywords:i.keywords,margin:a.margin,multiPage:!0,paperSize:a.paperSize,subject:i.subject,title:i.title}),s=a.paperSize[0],l=a.paperSize[1],a.margin&&(s-=a.margin.left+a.margin.right+1,l-=a.margin.top+a.margin.bottom+1),i.pageWidth=s,i.pageHeight=l,d=t(e,e._ref(n),i),c(e,d,r,i),o(r)}function g(){}function m(){function e(e,i){var o,r;i&&(o=i._properties,r=i._grid,e.borderLeft=o.get("vBorders",r.index(e.row,e.col)),e.borderRight=o.get("vBorders",r.index(e.row,e.col+e.colspan)),e.borderTop=o.get("hBorders",r.index(e.row,e.col)),e.borderBottom=o.get("hBorders",r.index(e.row+e.rowspan,e.col))),e.borderLeft&&t(e.row,e.col,e.borderLeft,e.left,e.top,e.bottom),e.borderRight&&t(e.row,e.col+e.colspan,e.borderRight,e.right,e.top,e.bottom),e.borderTop&&n(e.row,e.col,e.borderTop,e.top,e.left,e.right),e.borderBottom&&n(e.row+e.rowspan,e.col,e.borderBottom,e.bottom,e.left,e.right)}function t(e,t,n,o,a,s){var l=r[t]||(r[t]=new g),c=e>0&&l[e-1];c&&i(c,n)?(l[e]=c,c.bottom=s):l[e]={size:n.size,color:n.color,x:o,top:a,bottom:s}}function n(e,t,n,r,a,s){var l=o[e]||(o[e]=new g),c=t>0&&l[t-1];c&&i(c,n)?(l[t]=c,c.right=s):l[t]={size:n.size,color:n.color,y:r,left:a,right:s}}var o=new g,r=new g;return{add:e,horiz:o,vert:r}}function v(e){function t(e){var t,n;if(null!=e){for(t=12,n=e.length;--n>=0;)t+=o(e.charAt(n));return t}return 0}function i(e){return r?n(e,{borderLeft:r,borderTop:r,borderRight:r,borderBottom:r}):e}var o,r,a=new $.Deferred,s=a.promise();return e=n(e,{dataSource:null,guidelines:!0,guideColor:"#000",columns:null,headerBackground:"#999",headerColor:"#000",oddBackground:null,evenBackground:null,fontFamily:"Arial",fontSize:12,paperSize:"A4",margin:"1cm",landscape:!0,fitWidth:!1,scale:1,rowHeight:20,maxEmpty:1,useGridFormat:!0}),kendo.drawing.pdf.defineFont(kendo.drawing.drawDOM.getFontFaces(document)),o=T(e.fontFamily,e.fontSize),r=e.guidelines?{size:1,color:e.guideColor}:null,e.dataSource.fetch(function(){var n,o,r,s,l,c=e.dataSource.data();return c.length?(n=e.columns.map(function(e){return"string"==typeof e?{title:e,field:e}:e}),o=n.map(function(e){return e.title||e.field}),r=o.map(t),s=c.map(function(o,a){return{cells:n.map(function(n,s){var l=o[n.field];return e.useGridFormat&&(null!=l&&(n.format?l=kendo.format(n.format,l):l+=""),r[s]=Math.max(t(l),r[s])),i({value:l,format:e.useGridFormat?null:n.format,background:a%2?e.evenBackground:e.oddBackground})})}}),s.unshift({cells:o.map(function(t){return i({value:t,background:e.headerBackground,color:e.headerColor})})}),l=new kendo.spreadsheet.Sheet(s.length+1,n.length+1,e.rowHeight,50,20,20,{fontFamily:e.fontFamily,fontSize:e.fontSize,verticalAlign:"center"}),l.fromJSON({name:"Sheet1",rows:s,columns:r.map(function(e,t){return{index:t,width:e}})}),void l.draw({paperSize:e.paperSize,landscape:e.landscape,margin:e.margin,guidelines:!1,scale:e.scale,fitWidth:e.fitWidth,maxEmpty:e.maxEmpty,headerRows:1},a.resolve.bind(a))):a.reject("Empty dataset")}),s}var _,b,w,k,y,x,C,S,T;kendo.support.browser.msie&&kendo.support.browser.version<9||(_=kendo.spreadsheet,b=_.CellRef,w=kendo.drawing,k=_.formatting,y=kendo.geometry,x=.8,_.Sheet.prototype.draw=function(e,t,n){var i=this;i._workbook?i.recalc(i._workbook._context,function(){f(i,e,t,n)}):f(i,e,t,n)},g.prototype={forEach:function(e){Object.keys(this).forEach(function(t){e(this[t],t,this)},this)}},S={},T=function(e,t){var n,i,o,r,a=t+":"+e,s=S[a];if(!s){for(i=document.createElement("div"),i.style.position="fixed",i.style.left="-10000px",i.style.top="-10000px",i.style.fontFamily=e,i.style.fontSize=t+"px",i.style.whiteSpace="pre",o=32;o<128;++o)n=document.createElement("span"),n.appendChild(document.createTextNode(String.fromCharCode(o))),i.appendChild(n);for(document.body.appendChild(i),r={},o=32,n=i.firstChild;o<128&&n;++o,n=n.nextSibling)r[o]=n.offsetWidth;for(;n=i.firstChild;)i.removeChild(n);s=S[a]=function(e){var t=e.charCodeAt(0),o=r[t];return null==o&&(n=document.createElement("span"),n.appendChild(document.createTextNode(String.fromCharCode(t))),i.appendChild(n),o=r[t]=n.offsetWidth,i.removeChild(n)),o}}return s},_.draw={Borders:m,doLayout:t,applyIndent:u},_.drawTabularData=v)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.spreadsheet.min",["util/undoredostack.min","util/text-metrics.min","util/parse-xml.min","kendo.excel.min","kendo.progressbar.min","kendo.pdf.min","spreadsheet/commands.min","spreadsheet/formulabar.min","spreadsheet/formulainput.min","spreadsheet/eventlistener.min","spreadsheet/rangelist.min","spreadsheet/propertybag.min","spreadsheet/references.min","spreadsheet/navigator.min","spreadsheet/axismanager.min","spreadsheet/clipboard.min","spreadsheet/range.min","spreadsheet/sheet.min","spreadsheet/sheetsbar.min","spreadsheet/excel-reader.min","spreadsheet/workbook.min","spreadsheet/formulacontext.min","spreadsheet/controller.min","spreadsheet/view.min","spreadsheet/customeditors.min","spreadsheet/grid.min","spreadsheet/axis.min","spreadsheet/filter.min","spreadsheet/sorter.min","spreadsheet/runtime.min","spreadsheet/calc.min","spreadsheet/numformat.min","spreadsheet/runtime.functions.min","spreadsheet/runtime.functions.2.min","spreadsheet/toolbar.min","spreadsheet/dialogs.min","spreadsheet/sheetbinder.min","spreadsheet/filtermenu.min","spreadsheet/editor.min","spreadsheet/autofill.min","spreadsheet/nameeditor.min","spreadsheet/print.min"],e)}(function(){return function(e,t){var n,i,o,r,a,s,l,c,d,u;e.support.browser.msie&&e.support.browser.version<9||(n=e.jQuery,i=n.extend({F10:121,F11:122,B:66,I:73,U:85,N:78,H:72,A:65,PAGEDOWN:34,PAGEUP:33,DELETE:46,R:82},e.keys),o=e.ui.Widget,r=e.spreadsheet.Workbook,a=e.spreadsheet.Controller,s=e.spreadsheet.View,l=".kendoSpreadsheet",c={recalc:!0,selection:!0,activeCell:!0,layout:!0,sheetSelection:!0,resize:!0,editorChange:!1,editorClose:!1},d={wrapper:"k-widget k-spreadsheet"},u=e.ui.Widget.extend({init:function(e,t){o.fn.init.call(this,e,t),this.element.addClass(u.classNames.wrapper),this._view=new s(this.element,{messages:this.options.messages.view,toolbar:this.options.toolbar,sheetsbar:this.options.sheetsbar}),this._workbook=new r(this.options,this._view),this._controller=new a(this._view,this._workbook),this._autoRefresh=!0,this._bindWorkbookEvents(),this._view.workbook(this._workbook),this._view.enableClipboard(!1),this.refresh(),this._view.enableClipboard(!0),this._resizeHandler=function(){this.resize()}.bind(this),n(window).on("resize"+l,this._resizeHandler),this.element.on("keydown"+l,this._keyDown.bind(this))},_keyDown:function(e){var o,r=e.keyCode,a=n(".k-spreadsheet-quick-access-toolbar [title=Redo]");if(r===i.F11&&e.shiftKey)return this._view.sheetsbar._onAddSelect(),e.preventDefault(),t;if(e.altKey&&r===i.PAGEDOWN)this._view.sheetsbar.trigger("select",{name:this._view.sheetsbar._sheets[this._view.sheetsbar._selectedIndex+1].name(),isAddButton:!1});else if(e.altKey&&r===i.PAGEUP)this._view.sheetsbar.trigger("select",{name:this._view.sheetsbar._sheets[this._view.sheetsbar._selectedIndex-1].name(),isAddButton:!1});else{if(e.altKey&&r===i.DELETE)return o=function(e){var t=e.sender;t.isConfirmed()&&this._view.sheetsbar.trigger("remove",{name:this.activeSheet()._name(),confirmation:!0})}.bind(this),this._view.sheetsbar._openDialog("confirmation",{close:o}),e.preventDefault(),t;if(e.altKey&&r===i.R)return this._view.sheetsbar._createEditor(),e.preventDefault(),t;if(r===i.F10&&this._view.tabstrip||r===i.TAB&&!e.shiftKey&&n(document.activeElement).is(a))return this._view.tabstrip.toolbars[this._view.tabstrip.element.find("li.k-state-active").text().toLowerCase()].element.find(":not(.k-overflow-anchor):kendoFocusable:first").focus(),this._view.tabstrip.toolbars[this._view.tabstrip.element.find("li.k-state-active").text().toLowerCase()].element.find(".k-toolbar-first-visible").addClass("k-state-focused"),e.preventDefault(),t;if(e.ctrlKey&&r===i.B)n("[data-tool=bold]")[0].click();else if(e.ctrlKey&&r===i.I)n("[data-tool=italic]")[0].click();else if(e.ctrlKey&&r===i.U)n("[data-tool=underline]")[0].click();else{if(e.altKey&&r===i.H)return this._view.tabstrip.select(0),e.preventDefault(),t;if(e.altKey&&r===i.N)return this._view.tabstrip.select(1),e.preventDefault(),t;if(e.altKey&&r===i.A)return this._view.tabstrip.select(2),e.preventDefault(),t}}},_resize:function(){this.refresh({layout:!0})},_workbookChanging:function(e){this.trigger("changing",e)&&e.preventDefault()},_workbookChange:function(t){if(this._autoRefresh&&this.refresh(t),t.recalc&&t.ref){var n=t.range||new e.spreadsheet.Range(t.ref,this.activeSheet());this.trigger("change",{range:n})}},_workbookCut:function(e){this.trigger("cut",e)},_workbookCopy:function(e){this.trigger("copy",e)},_workbookPaste:function(e){this.trigger("paste",e)},activeSheet:function(e){return this._workbook.activeSheet(e)},moveSheetToIndex:function(e,t){return this._workbook.moveSheetToIndex(e,t)},insertSheet:function(e){return this._workbook.insertSheet(e)},sheets:function(){return this._workbook.sheets()},removeSheet:function(e){return this._workbook.removeSheet(e)},sheetByName:function(e){return this._workbook.sheetByName(e)},sheetIndex:function(e){return this._workbook.sheetIndex(e)},sheetByIndex:function(e){return this._workbook.sheetByIndex(e)},renameSheet:function(e,t){return this._workbook.renameSheet(e,t)},refresh:function(e){return e||(e=c),e.editorClose||(this._view.sheet(this._workbook.activeSheet()),this._controller.sheet(this._workbook.activeSheet()),this._workbook.refresh(e)),e.editorChange||(this._view.refresh(e),this._controller.refresh(),this._view.render(e),this.trigger("render")),this},openDialog:function(e,t){return this._view.openDialog(e,t)},autoRefresh:function(e){return e!==t?(this._autoRefresh=e,e===!0&&this.refresh(),this):this._autoRefresh},toJSON:function(){return this._workbook.toJSON()},fromJSON:function(e){ +e.sheets?(this._workbook.destroy(),this._workbook=new r(n.extend({},this.options,e)),this._bindWorkbookEvents(),this._view.workbook(this._workbook),this._controller.workbook(this._workbook),this.activeSheet(this.activeSheet())):this.refresh()},saveJSON:function(){return this._workbook.saveJSON()},fromFile:function(e,t){return this._workbook.fromFile(e,t)},saveAsPDF:function(e){this._workbook.saveAsPDF(n.extend({},this.options.pdf,e,{workbook:this._workbook}))},saveAsExcel:function(e){this._workbook.saveAsExcel(e)},draw:function(e,t){this._workbook.draw(e,t)},_workbookExcelExport:function(e){this.trigger("excelExport",e)&&e.preventDefault()},_workbookExcelImport:function(e){this.trigger("excelImport",e)?e.preventDefault():this._initProgress(e.promise)},_initProgress:function(t){var i=n("<div class='k-loading-mask' style='width: 100%; height: 100%; top: 0;'><div class='k-loading-color'/></div>").appendTo(this.element),o=n("<div class='k-loading-progress'>").appendTo(i).kendoProgressBar({type:"chunk",chunkCount:10,min:0,max:1,value:0}).data("kendoProgressBar");t.progress(function(e){o.value(e.progress)}).always(function(){e.destroy(i),i.remove()})},_workbookPdfExport:function(e){this.trigger("pdfExport",e)&&e.preventDefault()},_workbookInsertSheet:function(e){this.trigger("insertSheet",e)&&e.preventDefault()},_workbookRemoveSheet:function(e){this.trigger("removeSheet",e)&&e.preventDefault()},_workbookSelectSheet:function(e){this.trigger("selectSheet",e)&&e.preventDefault()},_workbookRenameSheet:function(e){this.trigger("renameSheet",e)&&e.preventDefault()},_workbookInsertRow:function(e){this.trigger("insertRow",e)&&e.preventDefault()},_workbookInsertColumn:function(e){this.trigger("insertColumn",e)&&e.preventDefault()},_workbookDeleteRow:function(e){this.trigger("deleteRow",e)&&e.preventDefault()},_workbookDeleteColumn:function(e){this.trigger("deleteColumn",e)&&e.preventDefault()},_workbookHideRow:function(e){this.trigger("hideRow",e)&&e.preventDefault()},_workbookHideColumn:function(e){this.trigger("hideColumn",e)&&e.preventDefault()},_workbookUnhideRow:function(e){this.trigger("unhideRow",e)&&e.preventDefault()},_workbookUnhideColumn:function(e){this.trigger("unhideColumn",e)&&e.preventDefault()},_workbookSelect:function(e){this.trigger("select",e)},_workbookChangeFormat:function(e){this.trigger("changeFormat",e)},_workbookDataBinding:function(e){this.trigger("dataBinding",e)&&e.preventDefault()},_workbookDataBound:function(e){this.trigger("dataBound",e)},_bindWorkbookEvents:function(){this._workbook.bind("cut",this._workbookCut.bind(this)),this._workbook.bind("copy",this._workbookCopy.bind(this)),this._workbook.bind("paste",this._workbookPaste.bind(this)),this._workbook.bind("changing",this._workbookChanging.bind(this)),this._workbook.bind("change",this._workbookChange.bind(this)),this._workbook.bind("excelExport",this._workbookExcelExport.bind(this)),this._workbook.bind("excelImport",this._workbookExcelImport.bind(this)),this._workbook.bind("pdfExport",this._workbookPdfExport.bind(this)),this._workbook.bind("insertSheet",this._workbookInsertSheet.bind(this)),this._workbook.bind("removeSheet",this._workbookRemoveSheet.bind(this)),this._workbook.bind("selectSheet",this._workbookSelectSheet.bind(this)),this._workbook.bind("renameSheet",this._workbookRenameSheet.bind(this)),this._workbook.bind("insertRow",this._workbookInsertRow.bind(this)),this._workbook.bind("insertColumn",this._workbookInsertColumn.bind(this)),this._workbook.bind("deleteRow",this._workbookDeleteRow.bind(this)),this._workbook.bind("deleteColumn",this._workbookDeleteColumn.bind(this)),this._workbook.bind("hideRow",this._workbookHideRow.bind(this)),this._workbook.bind("hideColumn",this._workbookHideColumn.bind(this)),this._workbook.bind("unhideRow",this._workbookUnhideRow.bind(this)),this._workbook.bind("unhideColumn",this._workbookUnhideColumn.bind(this)),this._workbook.bind("select",this._workbookSelect.bind(this)),this._workbook.bind("changeFormat",this._workbookChangeFormat.bind(this)),this._workbook.bind("dataBinding",this._workbookDataBinding.bind(this)),this._workbook.bind("dataBound",this._workbookDataBound.bind(this))},destroy:function(){e.ui.Widget.fn.destroy.call(this),this._workbook.destroy(),this._controller.destroy(),this._view.destroy(),this._resizeHandler&&n(window).off("resize"+l,this._resizeHandler)},options:{name:"Spreadsheet",toolbar:!0,sheetsbar:!0,rows:200,columns:50,rowHeight:20,columnWidth:64,headerHeight:20,headerWidth:32,excel:{proxyURL:"",fileName:"Workbook.xlsx"},messages:{},pdf:{area:"workbook",fileName:"Workbook.pdf",proxyURL:"",paperSize:"a4",landscape:!0,margin:null,title:null,author:null,subject:null,keywords:null,creator:"Kendo UI PDF Generator v."+e.version,date:null},defaultCellStyle:{fontFamily:"Arial",fontSize:"12"},useCultureDecimals:!1},defineName:function(e,t,n){return this._workbook.defineName(e,t,n)},undefineName:function(e){return this._workbook.undefineName(e)},nameValue:function(e){return this._workbook.nameValue(e)},forEachName:function(e){return this._workbook.forEachName(e)},cellContextMenu:function(){return this._view.cellContextMenu},rowHeaderContextMenu:function(){return this._view.rowHeaderContextMenu},colHeaderContextMenu:function(){return this._view.colHeaderContextMenu},addImage:function(e){return this._workbook.addImage(e)},cleanupImages:function(){return this._workbook.cleanupImages()},events:["cut","copy","paste","pdfExport","excelExport","excelImport","changing","change","render","removeSheet","selectSheet","renameSheet","insertRow","insertColumn","deleteRow","insertSheet","deleteColumn","hideRow","hideColumn","unhideRow","unhideColumn","select","changeFormat","dataBinding","dataBound"]}),e.spreadsheet.ALL_REASONS=c,e.ui.plugin(u),n.extend(!0,u,{classNames:d}))}(window.kendo),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.pivot.configurator.min",["kendo.dom.min"],e)}(function(){return function(e,t){function n(e){for(var t,n=0,i=e.length;n<i;n++)if(2==e[n].type){t=!0;break}t&&e.splice(n+1,0,{caption:"KPIs",defaultHierarchy:"[KPIs]",name:"KPIs",uniqueName:"[KPIs]"})}function i(e){return{name:e.uniqueName,type:e.type}}function o(e){for(var t=0,n=e.length;t<n;t++)e[t].uniqueName=e[t].name,e[t].type="kpi";return e}function r(t){var n=e(t).closest(".k-pivot-setting");return n.length?n.data("kendoPivotSettingTarget"):null}function a(e,t,n){return{hierarchyUniqueName:e,uniqueName:t,caption:t,measure:t,name:t,type:n,kpi:!0}}function s(e){var t=e.name;return[a(t,e.value,"value"),a(t,e.goal,"goal"),a(t,e.status,"status"),a(t,e.trend,"trend")]}var l=window.kendo,c=l.ui,d=c.Widget,u=".kendoPivotConfigurator",h="mouseenter"+u+" mouseleave"+u,p=l.template('<p class="k-reset"><span class="k-icon #=icon#"></span>${name}</p><div class="k-list-container k-reset"/>'),f=d.extend({init:function(e,t){d.fn.init.call(this,e,t),this.element.addClass("k-widget k-fieldselector k-alt k-edit-form-container"),this._dataSource(),this._layout(),this.refresh(),l.notify(this)},events:[],options:{name:"PivotConfigurator",filterable:!1,sortable:!1,messages:{measures:"Drop Data Fields Here",columns:"Drop Column Fields Here",rows:"Drop Rows Fields Here",measuresLabel:"Measures",columnsLabel:"Columns",rowsLabel:"Rows",fieldsLabel:"Fields"}},_dataSource:function(){var t=this;t.dataSource&&t._refreshHandler?t.dataSource.unbind("change",t._refreshHandler).unbind("error",t._errorHandler).unbind("progress",t._progressHandler):(t._errorHandler=e.proxy(t._error,t),t._refreshHandler=e.proxy(t.refresh,t),t._progressHandler=e.proxy(t._requestStart,t)),t.dataSource=l.data.PivotDataSource.create(t.options.dataSource),t.dataSource.bind("change",t._refreshHandler).bind("error",t._errorHandler).bind("progress",t._progressHandler)},setDataSource:function(e){this.options.dataSource=e,this._dataSource(),this.measures&&this.measures.setDataSource(e),this.rows&&this.rows.setDataSource(e),this.columns&&this.columns.setDataSource(e),this.refresh()},_treeViewDataSource:function(){var t=this;return l.data.HierarchicalDataSource.create({schema:{model:{id:"uniqueName",hasChildren:function(e){return!("hierarchyUniqueName"in e||"aggregator"in e)}}},transport:{read:function(i){var r,a,l;e.isEmptyObject(i.data)?(r=t.dataSource.schemaDimensions(),r.done(function(e){t.dataSource.cubeBuilder||n(e),i.success(e)}).fail(i.error)):(a=t.treeView.dataSource.get(i.data.uniqueName),"[KPIs]"===a.uniqueName?(l=!0,r=t.dataSource.schemaKPIs(),r.done(function(e){i.success(o(e))}).fail(i.error)):"kpi"==a.type&&(l=!0,i.success(s(a))),l||(r=2==a.type?t.dataSource.schemaMeasures():a.dimensionUniqueName?t.dataSource.schemaLevels(i.data.uniqueName):t.dataSource.schemaHierarchies(i.data.uniqueName),r.done(i.success).fail(i.error)))}}})},_progress:function(e){l.ui.progress(this.element,e)},_error:function(){this._progress(!1)},_requestStart:function(){this._progress(!0)},_layout:function(){this.form=e('<div class="k-columns k-state-default k-floatwrap"/>').appendTo(this.element),this._fields(),this._targets()},_fields:function(){var t=e('<div class="k-state-default"><p class="k-reset"><span class="k-icon k-i-group"></span>'+this.options.messages.fieldsLabel+"</p></div>").appendTo(this.form),n='# if (item.type == 2 || item.uniqueName == "[KPIs]") { #<span class="k-icon k-i-#= (item.type == 2 ? "sum" : "kpi") #"></span># } else if (item.type && item.type !== "kpi") { #<span class="k-icon k-i-arrows-dimensions"></span># } ##: item.caption || item.name #';this.treeView=e("<div/>").appendTo(t).kendoTreeView({template:n,dataTextField:"caption",dragAndDrop:!0,autoBind:!1,dataSource:this._treeViewDataSource(),dragstart:function(e){var t=this.dataItem(e.sourceNode);(t.hasChildren||t.aggregator||t.measure)&&2!=t.type&&"[KPIs]"!==t.uniqueName||e.preventDefault()},drag:function(e){var t="k-i-cancel",n=r(e.dropTarget);n&&n.validate(this.dataItem(e.sourceNode))&&(t="k-i-plus"),e.setStatusClass(t)},drop:function(e){var t,n,o,a,l,c;if(e.preventDefault(),t=r(e.dropTarget),n=this.dataItem(e.sourceNode),t&&t.validate(n)){if(c=n.defaultHierarchy||n.uniqueName,"kpi"===n.type)for(l=s(n),a=l.length,c=[],o=0;o<a;o++)c.push(i(l[o]));else n.kpi&&(c=[i(n)]);t.add(c)}}}).data("kendoTreeView")},_createTarget:function(t,n){var i='<li class="k-item k-header" data-'+l.ns+'name="${data.name}">${data.name}',o=n.sortable,r="";return o&&(r+="#if (data.sortIcon) {#",r+='<span class="k-icon ${data.sortIcon}-sm"></span>',r+="#}#"),(n.filterable||o)&&(r+='<span class="k-icon k-i-more-vertical k-setting-fieldmenu"></span>'),r+='<span class="k-icon k-i-close k-setting-delete"></span>',i+='<span class="k-field-actions">'+r+"</span></li>",new l.ui.PivotSettingTarget(t,e.extend({dataSource:this.dataSource,hint:function(t){var n=e('<div class="k-fieldselector"><ul class="k-list k-reset"></ul></div>');return n.find(".k-list").append(t.clone()),n},template:i,emptyTemplate:'<li class="k-item k-empty">${data}</li>'},n))},_targets:function(){var t=e('<div class="k-state-default"/>').appendTo(this.form),n=e(p({name:this.options.messages.columnsLabel,icon:"k-i-columns"})).appendTo(t),i=e('<ul class="k-pivot-configurator-settings k-list k-reset" />').appendTo(n.last()),o=e(p({name:this.options.messages.rowsLabel,icon:"k-i-rows"})).appendTo(t),r=e('<ul class="k-pivot-configurator-settings k-list k-reset" />').appendTo(o.last()),a=e(p({name:this.options.messages.measuresLabel,icon:"k-i-sum"})).appendTo(t),s=e('<ul class="k-pivot-configurator-settings k-list k-reset" />').appendTo(a.last()),l=this.options;this.columns=this._createTarget(i,{filterable:l.filterable,sortable:l.sortable,connectWith:r,messages:{empty:l.messages.columns,fieldMenu:l.messages.fieldMenu}}),this.rows=this._createTarget(r,{filterable:l.filterable,sortable:l.sortable,setting:"rows",connectWith:i,messages:{empty:this.options.messages.rows,fieldMenu:this.options.messages.fieldMenu}}),this.measures=this._createTarget(s,{setting:"measures",messages:{empty:l.messages.measures}}),i.add(r).add(s).on(h,".k-item:not(.k-empty)",this._toggleHover)},_toggleHover:function(t){e(t.currentTarget).toggleClass("k-state-hover","mouseenter"===t.type)},_resize:function(){var e,t,n=this.element,i=this.options.height,o=l._outerHeight;i&&(n.height(i),n.is(":visible")&&(t=n.children(".k-columns").children("div.k-state-default"),i=n.innerHeight(),e=(o(n)-i)/2,i=i-(o(t,!0)-t.height())-e,t.height(i)))},refresh:function(){var e=this.dataSource;(e.cubeBuilder||this._cube!==e.cube()||this._catalog!==e.catalog())&&this.treeView.dataSource.fetch(),this._catalog=this.dataSource.catalog(),this._cube=this.dataSource.cube(),this._resize(),this._progress(!1)},destroy:function(){d.fn.destroy.call(this),this.dataSource.unbind("change",this._refreshHandler),this.form.find(".k-list").off(u),this.rows.destroy(),this.columns.destroy(),this.measures.destroy(),this.treeView.destroy(),this.element=null,this._refreshHandler=null}});c.plugin(f)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("util/ripple.min",["kendo.core.min"],e)}(function(){!function(){var e,t,n,i,o,r,a,s;window.kendo.util=window.kendo.util||{},window.kendo.util.ripple=window.kendo.util.ripple||{},e=function(e,t){var n,i;if(e.closest)return e.closest(t);for(n=Element.prototype.matches?function(e,t){return e.matches(t)}:function(e,t){return e.msMatchesSelector(t)},i=e;i;){if(n(i,t))return i;i=i.parentElement}},t=function(e){var t,n=e.createElement("div");return n.className="k-ripple",t=e.createElement("div"),t.className="k-ripple-blob",n.appendChild(t),[n,t]},n=function(e,t,n){var i=function(){n(),e.removeEventListener(t,i,!1)},o=function(){return e.addEventListener(t,i,!1)};return o(),{remove:o}},i=function(i,a){return function(s){var l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C=s.target,S=C.document||C.ownerDocument;if(l=a.container?a.container(C):e(C,i),l&&(c=/focus/i.test(s.type)&&l.classList.contains("k-ripple-target"),!c)){if(l.classList.add("k-ripple-target"),d=t(S),u=d[0],h=d[1],p={animated:!1,released:!1,blob:h,container:l,ripple:u},f={focusin:"focusout",keydown:"keyup",mousedown:"mouseup",pointerdown:"pointerup",touchdown:"touchup"}[s.type],n(s.currentTarget,f,function(){return r(p)}),l.appendChild(u),window.getComputedStyle(u).getPropertyValue("opacity"),g=l.getBoundingClientRect(),m=0,v=0,/mouse|pointer|touch/.test(s.type)?(m=s.clientX-g.left,v=s.clientY-g.top):(m=g.width/2,v=g.height/2),_=m<g.width/2?g.width:0,b=v<g.height/2?g.height:0,w=m-_,k=v-b,y=2*Math.sqrt(w*w+k*k),x=500,h.style.width=h.style.height=y+"px",h.offsetWidth<0)throw Error("Inconceivable!");h.style.cssText="\n width: "+y+"px;\n height: "+y+"px;\n transform: translate(-50%, -50%) scale(1);\n left: "+m+"px;\n top: "+v+"px;\n ",setTimeout(function(){return o(p)},x)}}},o=function(e){e.animated=!0,a(e)},r=function(e){e.released=!0,a(e)},a=function(e){if(e.released&&e.animated){var t=e.blob,i=e.ripple,o=e.container;o&&n(o,"blur",function(){return o.classList.remove("k-ripple-target")}),t&&(n(t,"transitionend",function(){i&&i.parentNode&&i.parentNode.removeChild(i)}),t.style.transition="opacity 200ms linear",t.style.opacity="0")}},s=function(e,t){var n=function(e){return[].concat.apply([],e)},o=n(t.map(function(t){var n={events:["mousedown","touchdown"],global:!1},o=t.selector,r=t.options,a=void 0===r?n:r,s=i(o,a),l=a.events||n.events,c=a.global?document.body:e;return l.forEach(function(e){return c.addEventListener(e,s,!1)}),{events:l,options:a,activator:s}}));return function(){if(e){var t=function(t){var n=t.events,i=t.options,o=t.activator,r=i.global?document.body:e;n.forEach(function(e){return r.removeEventListener(e,o,!1)})};o.forEach(t),e=null}}},kendo.deepExtend(kendo.util.ripple,{register:s})}()},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.ripple.min",["util/ripple.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,o=i.Widget,r=e.extend,a=n.util.ripple,s=o.extend({init:function(e,t){var n=this;o.fn.init.call(n,e),e=n.wrapper=n.element,n.options=r({},n.options,t),n.registerListeners()},options:{name:"RippleContainer",elements:[{selector:".k-button:not(li)"},{selector:".k-list > .k-item",options:{global:!0}},{selector:".k-checkbox-label, .k-radio-label"},{selector:".k-checkbox, .k-radio",options:{events:["focusin"],container:function(e){if(/\b(k-checkbox|k-radio)\b/.test(e.className))return e.nextElementSibling}}}]},removeListeners:function(){},registerListeners:function(){var e,t=this,n=t.element[0],i=t.options.elements;t.removeListeners(),e=a.register(n,i),t.removeListeners=e},destroy:function(){var e=this;o.fn.destroy.call(e),e.removeListeners()}});i.plugin(s)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdfviewer/pdfjs.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=e.extend,i=function(){if(!window.pdfjsLib){var e=window.console;return e&&e.error&&e.error("PDF.JS required."),!1}return kendo.pdfviewer.pdfjs.lib=window.pdfjsLib,!0};n(kendo,{pdfviewer:{pdfjs:{lib:window.pdfjsLib,isLoaded:i}}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdfviewer/processors/pdfjs-processor.min",["pdfviewer/pdfjs.min"],e)}(function(){return function(e,t){var n,i=window.kendo,o=i.Class,r=e.extend,a=window.atob,s=o.extend({init:function(e,t){var o=this;i.pdfviewer.pdfjs.isLoaded()&&(n=i.pdfviewer.pdfjs.lib),o.file=e.file,o.viewer=t},fetchDocument:function(){var t=this,i=e.Deferred(),o=t.viewer.options.messages.errorMessages;return t.file?(t._isBase64Data()&&a&&(t.file.data=a(t.file.data)),n.getDocument(this.file).promise.then(function(n){var r,a=[];for(t.pdf=n,t.pagePromises=[],t._downloadData=e.Deferred(),n.getData().then(function(e){var n=new Blob([e],{type:"application/pdf"});t._downloadData.resolve({file:n})}),r=1;r<=n.numPages;r++)t.pagePromises.push(n.getPage(r));Promise.all(t.pagePromises).then(function(e){a=e.map(function(e){var t=e.getViewport({scale:4/3});return{width:t.width,height:t.height}}),i.resolve({total:n.numPages,pages:a})})["catch"](function(e){t.viewer._triggerError({error:e.message,message:o.parseError})})})["catch"](function(e){var n=e.name.includes("Missing"),i=n?o.notFound:o.parseError;t.viewer._triggerError({error:e.message,message:i}),n&&t.viewer._renderBlankPage()}),i):i.resolve()},fetchPageData:function(e){return this.pagePromises[e-1]},downloadFile:function(e){var t=this;i.ui.progress(t.viewer.pageContainer,!0),t._downloadData.done(function(n){i.ui.progress(t.viewer.pageContainer,!1),i.saveAs({dataURI:n.file,fileName:e+".pdf"})})},_updateDocument:function(e){this.file=e},_isBase64Data:function(){var e,t=this.file.data,n=/[^A-Z0-9+\/=]/i,i=t&&t.length;return!(!i||i%4!==0||n.test(t))&&(e=t.indexOf("="),e===-1||e===i-1||e===i-2&&"="===t[i-1])},renderTextLayer:function(e){n.renderTextLayer(e)}});r(i.pdfviewer.pdfjs,{processor:s})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdfviewer/processors/dpl-processor.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=e.extend,o=n.Class,r=o.extend({init:function(e,t){var n=this;n.options=e,n.read=e.read,n.upload=e.upload,n.download=e.download,n.viewer=t},fetchDocument:function(){var t=this,i=e.Deferred(),o=t.viewer.options.messages.errorMessages;return t.read?(e.ajax({type:t.read.type,url:t.read.url,dataType:t.read.dataType,success:function(e){"string"!=typeof e&&(e=n.stringify(e)),i.resolve(JSON.parse(e))},error:function(e){t.viewer._triggerError({error:e.responseText,message:o.parseError})}}),i):i.resolve()},fetchPageData:function(t){var n=this,i=e.Deferred(),o=n.viewer.document.pages[t-1],r={};return r[n.read.pageField]=t,o.geometries.length?i.resolve(o):e.ajax({type:n.read.type,url:n.read.url,data:r,success:function(e){i.resolve(JSON.parse(e))},error:function(e){n.viewer._triggerError({error:e.responseText,message:n.viewer.options.messages.errorMessages.parseError})}}),i},downloadFile:function(e){window.location=this.download.url+"?file="+e},fromJSON:function(e){var t=this.viewer;t._clearPages(),t.document=e,t.document.total=t.document.pages.length,t._renderPages(),t.resize(!0),t.activatePage(1)}});i(n.pdfviewer,{dpl:{processor:r}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdfviewer/pager.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=".kendoPDFViewer",i=kendo.ui.Widget,o="change",r="keydown",a=kendo.support.click,s=480,l=kendo.attr,c=e.proxy,d=e.extend,u=".",h={wrapperClass:"k-pager-wrap",iconFirst:"k-i-arrow-end-left",iconLast:"k-i-arrow-end-right",iconPrev:"k-i-arrow-60-left",iconNext:"k-i-arrow-60-right",first:"k-pager-first",last:"k-pager-last",nav:"k-pager-nav",disabled:"k-state-disabled"},p=i.extend({init:function(e,t){var n=this;i.fn.init.call(n,e,t),n.linkTemplate=kendo.template(n.options.linkTemplate),n.element.addClass(h.wrapperClass),n._renderLinks(),n._toggleDisabledClass(),n._attachEvents()},options:{linkTemplate:'<a href="\\#" aria-label="#=text#" title="#=text#" class="k-button k-button-icon k-flat k-pager-nav #= wrapClass #" data-page="#=pageIdx#"><span class="k-icon #= iconClass #"></span></a>',previousNext:!0,input:!0,page:1,total:1,messages:{}},events:[o],_pagerLink:function(e,t,n,i){return this.linkTemplate({iconClass:e,text:t,wrapClass:i||"",pageIdx:n})},_renderLinks:function(){var t=this,n=t.options;n.previousNext&&(t.firstLink=e(t._pagerLink(h.iconFirst,n.messages.first,1,h.first)),t.prevLink=e(t._pagerLink(h.iconPrev,n.messages.previous,n.page-1)),t.nextLink=e(t._pagerLink(h.iconNext,n.messages.next,n.page+1)),t.lastLink=e(t._pagerLink(h.iconLast,n.messages.last,n.total,h.last))),t.element.append(t.firstLink),t.element.append(t.prevLink),n.input&&t._renderInput(),t.element.append(t.nextLink),t.element.append(t.lastLink)},_toggleDisabledClass:function(){var e=this,t=e.options,n=!t.total;e.nextLink&&e.prevLink&&(e.prevLink.toggleClass(h.disabled,n||1===t.page),e.nextLink.toggleClass(h.disabled,n||t.page===t.total),e.lastLink.toggleClass(h.disabled,n||t.page===t.total),e.firstLink.toggleClass(h.disabled,n||1===t.page)),e.input&&e.input.toggleClass(h.disabled,t.total<=1)},_attachEvents:function(){var e=this;e.element.on(a+n,u+h.nav,c(e._click,e)),e.element.on(r+n,u+h.nav,function(t){t.keyCode===kendo.keys.ENTER&&(e._click(t),t.preventDefault())}),e.input&&e.input.on(r+n,c(e._keydown,e))},_click:function(t){var n=e(t.currentTarget),i=parseInt(n.attr(l("page")),10);t.isDefaultPrevented()||this._change(i)},_keydown:function(n){var i=n.keyCode,o=kendo.keys,r=e(n.target),a=parseInt(r.val(),10),s=i===o.UP||i===o.DOWN,l=i===o.RIGHT||i===o.LEFT||i===o.BACKSPACE||i===o.DELETE,c=s&&i===o.UP?1:-1;if(s&&(a+=c),i===o.ENTER||s){if(isNaN(a)||a<1||a>this.options.total)return a=this.options.page,r.val(a),t;this._change(a),n.preventDefault()}else n.key.match(/^\d+$/)||l||n.preventDefault()},_change:function(e){var t=this;e>=1&&e<=t.options.total&&(t.options.page=e,t.input&&t.input.val(e),t.prevLink.attr(l("page"),e-1),t.nextLink.attr(l("page"),e+1),t._toggleDisabledClass()),t.trigger(o,{page:e})},setOptions:function(t){var o=this,a=o.options.total;t=e.extend(o.options,t),i.fn.setOptions.call(o,t),t.input&&(a!=t.total?(o._renderInput(),o.input.on(r+n,c(o._keydown,o))):o.input.val(t.total>0?t.page:1)),t.total>1&&(o.prevLink.attr(l("page"),t.page-1),o.nextLink.attr(l("page"),t.page+1),o.lastLink.attr(l("page"),t.total)),o._toggleDisabledClass()},_renderInput:function(){var e,t,i=this,o=i.options,r=i.element.parent().width()<=s,a=i.element.find(".k-pager-input");i.input&&i.input.off(n),e=o.total>0?kendo.format(o.messages.of,o.total):"",r||(e+=o.total>1?o.messages.pages:o.messages.page),t='<input class="k-textbox" aria-label="'+o.page+e+'">'+e,a.length?a.html(t):i.element.append('<span class="k-pager-input k-label">'+t+"</span>"),i.input=i.element.find("input").val(o.total>0?o.page:1)},destroy:function(){this.element.off(n),this.input&&this.input.off(n),i.fn.destroy.call(this)}});d(kendo.pdfviewer,{Pager:p})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdfviewer/toolbar.min",["kendo.toolbar.min","kendo.combobox.min","pdfviewer/pager.min"],e)}(function(){return function(e,t){function n(e,t,n){var i=n?b.zoomOverflowButtons:b.zoomButtons;e.append(w({text:t.zoomOut,command:g,iconClass:b.zoomOutIcon,showText:n,className:i})),e.append(w({text:t.zoomIn,command:f,iconClass:b.zoomInIcon,showText:n,className:i}))}var i,o,r,a=window.kendo,s=e.extend,l=e.proxy,c="action",d="k-flat",u="keydown",h=a.support.click,p="change",f="zoomin",g="zoomout",m=a.toolbar.Item,v=a.ui.ToolBar,_={auto:"auto",actual:"actual",fitToWidth:"fitToWidth",fitToPage:"fitToPage"},b={zoomOutIcon:"k-i-zoom-out",zoomInIcon:"k-i-zoom-in",zoomButtons:"k-button-icon k-flat",zoomOverflowButtons:"k-button-icontext k-overflow-button",overflowHidden:"k-overflow-hidden"},w=a.template('<a href="\\#" aria-label="#=text#" title="#=text#" data-command="#=command#" class="k-button #=className#"><span class="k-icon #= iconClass #"></span> ${showText ? text : ""}</a>'),k=a.template('<select>#for(var zoomIndex in zoomLevels){## var zoomLevel = zoomLevels[zoomIndex]; #<option value="#= zoomLevel.percent || (zoomLevel + "%") #">${zoomLevel.text ? zoomLevel.text : zoomLevel + "%"}</option>#}#</select>'),y={pager:{type:"pager",overflow:"never",command:"PageChangeCommand"},spacer:{type:"spacer"},zoom:{type:"zoom",command:"ZoomCommand",zoomInOut:!0,combobox:{zoomLevels:[50,100,150,200,300,400]}},toggleSelection:{type:"buttonGroup",attributes:{"class":"k-toggle-selection-group"},buttons:[{togglable:!0,text:"Enable Selection",command:"EnableSelectionCommand",icon:"cursor",showText:"overflow",name:"toggleSelection",group:"toggle-pan"},{togglable:!0,text:"Enable Panning",command:"EnablePanCommand",icon:"hand",showText:"overflow",name:"togglePan",group:"toggle-pan",selected:!0}]},spacer2:{type:"spacer"},search:{type:"button",text:"Search",command:"OpenSearchCommand",icon:"search",name:"search",showText:"overflow"},open:{type:"button",text:"Open",showText:"overflow",name:"open",icon:"folder-open",command:"OpenCommand"},download:{type:"button",text:"Download",showText:"overflow",name:"download",icon:"download",command:"DownloadCommand"},print:{type:"button",text:"Print",showText:"overflow",name:"print",icon:"print",command:"PrintCommand"}},x=s({},y,{exportAs:{type:"button",text:"Export",showText:"overflow",name:"exportAs",icon:"image-export",command:"ExportCommand"}}),C=m.extend({init:function(t,n){var i=e("<div />");this.options=s(!0,t,n.options.pager),this.toolbar=n,this.toolbar.pager=new a.pdfviewer.Pager(i,s({},t,{change:l(this._change,this)})),this.element=i,this.element.on(u,l(this._keydown,this)),this.attributes(),this.addUidAttr(),this.addOverflowAttr()},_change:function(e){this.options.change&&this.options.change(e.page)||this.toolbar.action({command:"PageChangeCommand",options:{value:e.page}})},_keydown:function(t){var n=this,i=e(t.target),o=t.keyCode,r=n.element.find(":kendoFocusable"),s=r.index(i),l=t.shiftKey?-1:1;o===a.keys.TAB&&r[s+l]&&(r[s+l].focus(),t.preventDefault(),t.stopPropagation())}});a.toolbar.registerComponent("pager",C),i=m.extend({init:function(e,t){this._init(e,t),this.toolbar.zoom=this,t.options.scale&&(this._initValue=100*t.options.scale+"%"),this._appendElements(),this._click=a.throttle(this._click.bind(this),200),this._keydown=a.throttle(this._keydown.bind(this),200),this.element.on(h,".k-button",this._click),this.element.on(u,".k-button",this._keydown),this.attributes(),this.addUidAttr(),this.addOverflowAttr()},_init:function(t,n){var i=e("<div />");this.options=s(!0,t,{messages:n.options.messages.zoom}),this.toolbar=n,this.element=i},_appendElements:function(){var e=this.options;e.zoomInOut&&n(this.element,e.messages,!1),e.combobox&&this._buildComboBox()},_buildComboBox:function(){var t,n=this,i=n.options.messages,o=n.options.combobox,r=[{percent:_.auto,text:i.autoWidth},{percent:_.actual,text:i.actualWidth},{percent:_.fitToWidth,text:i.fitToWidth},{percent:_.fitToPage,text:i.fitToPage}];r=r.concat(o.zoomLevels),t=e(k({zoomLevels:r})),a.support.mobileOS?n.element.append(t):(t=t.kendoComboBox(s({autoWidth:!0,clearButton:!1,value:n._initValue},o)).getKendoComboBox(),n.element.append(t.wrapper),n.combobox=t,n._currentValue=t.value()),t.bind(p,a.throttle(n.change.bind(n),300))},change:function(e){var n,i=e.sender?e.sender.value():e.target.value;if((""+i).match(/^[0-9]+%?$/))n=parseInt(i.replace("%",""),10)/100;else if(!_[i])return this.combobox&&this.combobox.value(this._currentValue),e.preventDefault(),t;this._currentValue=i,this.toolbar.action({command:"ZoomCommand",options:{scale:n||i}})},_buttonCommand:function(t){var n=e(t).closest(".k-button"),i=n.data("command");this.toolbar.action({command:"ZoomCommand",options:{zoomIn:i===f,zoomOut:i===g,updateComboBox:!0}})},_click:function(e){this._buttonCommand(e.target)},_keydown:function(e){var t=e.keyCode,n=a.keys;t===n.ENTER&&(this._buttonCommand(e.target),e.preventDefault())},enable:function(e){var t=this.element;t.find(".k-button, select").toggleClass("k-state-disabled",!e),this.combobox&&this.combobox.enable(e)},destroy:function(){this.combobox&&this.combobox.destroy()}}),o=i.extend({_init:function(t,n){var i=e("<li></li>");this.options=s(!0,t,{messages:n.options.messages.zoom}),this.toolbar=n,this.element=i},_appendElements:function(){var e=this.options;e.zoomInOut&&n(this.element,e.messages,!0)},overflowHidden:function(){this.element.addClass(b.overflowHidden)}}),a.toolbar.registerComponent("zoom",i,o),r=v.extend({init:function(e,t){var n=this,i=t.items&&t.items.length?t.items:Object.keys(y);n.options=t,t.items=n._updateItems(i),v.fn.init.call(n,e,t),n.bind({click:n._click,toggle:n._click}),t.viewer.bind({update:n._update.bind(n)})},events:[c],_updateItems:function(t){var n=this,i=this.options.messages;return t.map(function(t){var o,r,s,l=e.isPlainObject(t)&&1===Object.keys(t).length&&t.name;return t=l?t.name:t,o=e.isPlainObject(t)?t:x[t],s=o.name,"buttonGroup"===o.type?o.buttons=n._updateItems(o.buttons):r="pager"!==o.type?{name:s,attributes:{"aria-label":i[s],title:i[s],"data-command":o.command,"class":d},overflow:o.overflow}:{overflow:"never"},a.deepExtend(o,r),o})},_click:function(t){var n=e(t.target).data("command");n&&this.action({command:n,options:t.options})},_update:function(e){var t={page:e.page||1,total:e.total||1};this.zoom&&(this.zoom.enable(!e.isBlank),"zoom"===e.action&&this._updateZoomComboBox(e.zoom)),("pagechange"===e.action||e.isBlank)&&this.pager&&this.pager.setOptions(t),this.enable(this.wrapper.find(".k-toggle-selection-group"),!e.isBlank),this.enable(this.wrapper.find("[data-command='OpenSearchCommand']"),!e.isBlank),this.enable(this.wrapper.find("[data-command='DownloadCommand']"),!e.isBlank),this.enable(this.wrapper.find("[data-command='PrintCommand']"),!e.isBlank)},_updateZoomComboBox:function(e){var t=e===_.auto||e===_.actual;t||(e=Math.round(100*e)+"%"),this.zoom&&this.zoom.combobox&&(this.zoom._currentValue=e,this.zoom.combobox.value(e))},action:function(e){this.trigger(c,e)},destroy:function(){this.pager&&this.pager.destroy(),this.zoom&&this.zoom.destroy(),v.fn.destroy.call(this)}}),s(a.pdfviewer,{Toolbar:r,DefaultTools:y})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdfviewer/page.min",["kendo.drawing.min"],e)}(function(){return function(e,t){var n=e.extend,i=e.noop,o=kendo.drawing,r=o.Group,a=o.Surface,s="render",l=kendo.Class,c={Path:"path",MultiPath:"multipath",Rect:"rect",Image:"image",Text:"text"},d=l.extend({init:function(t,n){this.viewer=n,this.processor=t.processor,this.options=t, +this.pageNumber=t.number,this.element=e("<div class='k-page' />"),this.element.attr(kendo.attr("number"),this.pageNumber),this._updatePageSize(t),this.width=t.width,this.height=t.height},resize:function(e){var t=this.element;this._updatePageSize({width:Math.min(t.width()*e,this.width),height:Math.min(t.height()*e,this.height)})},_updatePageSize:function(e){this.element.width(e.width).height(e.height)},destroy:function(){kendo.destroy(this.element)},render:i}),u=d.extend({draw:function(){var e=this,t=e.options.geometries;e.group=new r,e.surface.draw(e.group),e._drawGeometries(t),e.viewer.trigger(s,{page:this}),kendo.ui.progress(e.element,!1)},load:function(){var e=this;!e.loaded&&e.processor&&(e.processor.fetchPageData(e.pageNumber).then(function(t){e.options=t,e._initSurface(),e.draw()}),e.loaded=!0)},_initSurface:function(){var e={width:this.element.width(),height:this.element.height()},t=n({width:this.width,height:this.height},this.viewer.options.view);this.surface=new a(this.element,t),this._updatePageSize(e)},_drawGeometries:function(e){var t,n,i,o=this;if(e)for(n=0;n<=e.length;n++)if(i=e[n]){switch(i.type){case c.Path:case c.MultiPath:t=o._drawPath(i);break;case c.Rect:t=o._drawRect(i);break;case c.Image:t=o._drawImage(i);break;case c.Text:t=o._drawText(i);break;default:t=null}t&&o.group.append(t)}},_drawRect:function(e){var t=new kendo.geometry.Rect(e.point,e.size);return new o.Rect(t,{transform:this._getMatrix(e.transform),fill:e.fillOptions,stroke:e.strokeOptions})},_drawImage:function(e){var t=new kendo.geometry.Rect(e.point,e.size);return new o.Image(e.src,t,{transform:this._getMatrix(e.transform)})},_drawText:function(e){var t={transform:this._getMatrix(e.transform),stroke:e.strokeOptions,fill:e.fillOptions,font:e.font};return new kendo.drawing.Text(e.content,e.point,t)},_drawPath:function(e){var t,n,i,r,a,s={transform:this._getMatrix(e.transform),stroke:e.strokeOptions,fill:e.fillOptions},l=new o.MultiPath(s);for(t=0;t<e.paths.length;t++){if(n=e.paths[t],!n.segments)return;for(l.moveTo.apply(l,n.point),i=0;i<n.segments.length;i++)r=n.segments[i],a=1===r.points.length?l.lineTo:l.curveTo,a.apply(l,r.points);n.closed&&l.close()}return l},_getMatrix:function(e){var t=Object.create(kendo.geometry.Matrix.prototype);return kendo.geometry.Matrix.apply(t,e),t}}),h=d.extend({init:function(t,n){var i,o=this;i=e("<canvas style='width: 100%; height: 100%;' />"),o.canvas=i.get(0),d.fn.init.call(o,t,n),o.canvas.width=o.width,o.canvas.height=o.height,o.element.append(i)},load:function(e,n){var i=this;if(i._scale!==e||n){if(i._scale&&i._scale!==e&&!n)return i._scale=e,i.render(e),t;i.processor&&i.processor.fetchPageData(i.pageNumber).then(function(t){return i._page=t,i.render(e).then(function(){i.viewer.trigger(s,{page:i})})}),i._scale=e,i.loaded=!0}},render:function(e){var t=this,n=this.canvas.getContext("2d"),i=this._page.getViewport({scale:e});return this._scale=e,this.canvas.width=i.width,this.canvas.height=i.height,this._renderTask&&(this._renderTask.cancel(),this._renderTask=null),this._updatePageSize({width:i.width,height:i.height}),this._renderTask=this._page.render({canvasContext:n,viewport:i}),this._renderTextLayer(i),this._renderTask.promise.then(function(){t._renderTask=null})["catch"](function(){})},_renderTextLayer:function(t){var n=this,i=n._page;n.textLayer&&n.textLayer.remove(),n.textLayer=e("<div class='k-text-layer'></div>").get(0),n.element.append(n.textLayer),i.getTextContent({normalizeWhitespace:!0}).then(function(i){e(n.textLayer).css({height:t.height,width:t.width}).html("");var o={textContent:i,container:n.textLayer,viewport:t,textDivs:[],enhanceTextSelection:!0};n.processor.renderTextLayer(o)})}});n(kendo.pdfviewer.dpl,{geometryTypes:c,Page:u}),n(kendo.pdfviewer.pdfjs,{Page:h})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdfviewer/search.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=kendo.Class,i=e.extend,o=e.isArray,r=n.extend({init:function(e){var t=this;t.options=i({},t.options,e),t.processDom()},options:{highlightClass:"k-search-highlight",charClass:"k-text-char"},processDom:function(){var e,t=this;for(t.targets=o(t.options.target)?t.options.target:[t.options.target],t.textNodes=[],t.charIndex=0,t.text="",t.targets.forEach(function(e){t.traverseToTextNode(e)}),e=0;e<t.textNodes.length;e++)t.processTextNode(t.textNodes[e])},traverseToTextNode:function(e){var t,n=this;if(3===e.nodeType)n.textNodes.push(e);else for(t=0;t<e.childNodes.length;t++)n.traverseToTextNode(e.childNodes[t])},processTextNode:function(t){var n,i=this,o=t.textContent;i.text=i.text+o,o.length>0&&(n=e(t).wrap("<span>").parent(),n.empty(),i.splitChars(n.get(0),o),n.children().unwrap("<span>"))},splitChars:function(e,t){var n,i=this,o="";for(n=0;n<t.length;n++)o=o+"<span class='"+i.options.charClass+"' "+kendo.attr("char-index")+"="+i.charIndex+">"+t[n]+"</span>",i.charIndex++;e.innerHTML=o},search:function(e,t){var n,i=this,o=RegExp(e,t?"g":"gi");if(i.matches=[],i.resetMark(),i.resetHighlight(),i.resetMatchIndex(),""!==e){for(n=o.exec(i.text);n;)i.matches.push({startOffset:n.index,endOffset:n.index+n[0].length}),n=o.exec(i.text);i.highlightAll(),i.mark()}},highlightAll:function(){var e=this;e.matches.forEach(function(t,n){var i=t.startOffset,o=t.endOffset;e.highlight(i,o,n+1)})},highlight:function(t,n,i){var o,r=this;for(o=t;o<n;o++)e(r.targets).find("."+r.options.charClass+"["+kendo.attr("char-index")+"="+o+"]").addClass(r.options.highlightClass).attr(kendo.attr("match-index"),i)},resetHighlight:function(){var t=this;e(t.targets).find("."+t.options.highlightClass).removeClass(t.options.highlightClass)},resetMatchIndex:function(){var t=this;e(t.targets).find("."+t.options.charClass+"["+kendo.attr("match-index")+"]").removeAttr(kendo.attr("match-index"))},mark:function(){var t=this;t.currentIndex||0===t.currentIndex?t.currentIndex>t.matches.length?t.currentIndex=t.matches.length:t.resetMark():t.currentIndex=0,e(t.targets).find("."+t.options.charClass+"["+kendo.attr("match-index")+"="+t.currentIndex+"]").wrapInner("<mark>")},resetMark:function(){var t=this;e(t.targets).find("mark").contents().unwrap()},nextMatch:function(){var e=this;e.currentIndex++,e.currentIndex>e.matches.length&&(e.currentIndex=1),e.mark()},previousMatch:function(){var e=this;e.currentIndex--,e.currentIndex<1&&(e.currentIndex=e.matches.length),e.mark()},getMarkedIndex:function(){return this.matches.length?this.currentIndex:0},getFirstMarked:function(){return e(this.targets).find("mark").eq(0)},destroy:function(){var t=this;t.resetMark(),e(t.targets).children("span:not(."+t.options.charClass+")").each(function(t,n){e(n).text(e(n).text())})}});i(kendo.pdfviewer,{SearchDOM:r})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdfviewer/dialogs.min",["kendo.dialog.min","kendo.window.min","kendo.binder.min","kendo.numerictextbox.min","kendo.dropdownlist.min"],e)}(function(){return function(e,t){var n=window.kendo,i=e.extend,o=n.Class,r={svg:".svg",png:".png"},a=n.keys,s=o.extend({init:function(t){this.options=i(t,{actions:[{text:t.messages.dialogs.okText}]}),this._dialog=e("<div />").kendoDialog(this.options).getKendoDialog()},open:function(){this._dialog.center().open()}}),l=o.extend({init:function(e){return this.options=i(e,this.options,{fileFormats:[{description:e.messages.dialogs.exportAsDialog.png,extension:r.png},{description:e.messages.dialogs.exportAsDialog.svg,extension:r.svg}],title:e.messages.dialogs.exportAsDialog.title,open:function(){this.center()}}),this._initializeDialog(),this},options:{extension:r.png,autoFocus:!0,resizable:!1,modal:{preventScroll:!0},width:"90%",maxWidth:520,template:"<div class='k-edit-label'><label>#: messages.exportAsDialog.labels.fileName #:</label></div><div class='k-edit-field'><input class='k-textbox' data-bind='value: name' /></div><div><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.saveAsType #:</label></div><div class='k-edit-field'><select data-role='dropdownlist' class='k-file-format' data-text-field='description' data-value-field='extension' data-bind='value: extension, source: fileFormats' /></div></div><div class='k-edit-label'><label>#: messages.exportAsDialog.labels.page #:</label></div><div class='k-edit-field'><input data-role='numerictextbox' data-format='n0' data-min='1' data-max='#: total #' data-bind='value: page' /></div><div class='k-action-buttons'><button class='k-button k-primary' data-bind='click: apply'>#: messages.save #</button><button class='k-button' data-bind='click: close'>#: messages.cancel #</button></div>"},_updateModel:function(e){e.pagesCount&&this.viewModel.set("pagesCount",e.pagesCount),e.page&&this.viewModel.set("page",e.page)},_initializeDialog:function(){var t=this,i=t.options,o=i.messages.dialogs,r=e("<div class='k-pdf-viewer-window k-action-window k-popup-edit-form' />").append(n.template(i.template)({total:i.pagesCount,messages:o})).kendoWindow(i).getKendoWindow();return t.viewModel=n.observable({title:o.exportAsDialog.title,name:o.exportAsDialog.defaultFileName,extension:i.extension,fileFormats:i.fileFormats,pagesCount:i.pagesCount,page:1,apply:t.apply.bind(this),close:function(){r.close()}}),t._dialog=r,n.bind(r.element,t.viewModel),r},open:function(){this._dialog.center().open()},apply:function(){this._dialog.close(),this.options.apply({fileName:this.viewModel.name+this.viewModel.extension,extension:this.viewModel.extension,page:this.viewModel.page})}}),c=o.extend({init:function(e){var t=this;t.options=i({},e,t.options)},options:{resizable:!1,template:"<div class='k-search-container'><button class='k-button k-button-icon k-flat k-search-dialog-draghandle'><span class='k-icon k-i-handler-drag'></span></button><span class='k-textbox'><input class='k-search-dialog-input' data-bind='value: boundValue, events: { keyup: onKeyup, input: onInput }' aria-label='#: messages.inputLabel #' title='#: messages.inputLabel #' /><button class='k-button k-button-icon k-flat k-match-case-button' data-bind='css: {k-state-selected: matchCase}, click: matchCaseClick' aria-label='#: messages.matchCase #' title='#: messages.matchCase #'><span class='k-icon k-i-convert-lowercase'></span></button></span><span class='k-search-matches'><span data-bind='text: matchIndex'></span> #: messages.of # <span data-bind='text: matches'></span></span><button class='k-button k-button-icon k-flat' data-bind='click: prev' aria-label='#: messages.previous #' title='#: messages.previous #'><span class='k-icon k-i-arrow-up'></span></button><button class='k-button k-button-icon k-flat' data-bind='click: next' aria-label='#: messages.next #' title='#: messages.next #'><span class='k-icon k-i-arrow-down'></span></button><button class='k-button k-button-icon k-flat' data-bind='click: close' aria-label='#: messages.close #' title='#: messages.close #'><span class='k-icon k-i-close'></<span></button></div>"},open:function(){var e=this;e.dialog||e._initializeDialog(),e.dialog.open()},_initializeDialog:function(){var t=this,o=n.template(t.options.template),r=e("<div class='k-pdf-viewer-search-dialog'></div>").append(o({messages:t.options.messages})),s={top:t.options.position.top+16,left:t.options.position.left+16};t.dialog=new n.ui.Window(r,i({},t.options,{autoFocus:!1,title:!1,position:{top:s.top,left:s.left},minHeight:30,draggable:{dragHandle:".k-search-dialog-draghandle"},activate:function(e){e.sender.element.find(".k-search-dialog-input").focus()}})),t.searchModel=n.observable({boundValue:"",searchText:"",matchCase:!1,matchIndex:0,matches:0,matchCaseClick:function(){this.set("matchCase",!this.matchCase)},next:t.options.next,prev:t.options.prev,close:function(){this.set("boundValue",""),t.dialog.close()},onKeyup:function(e){var t=e.keyCode,n=e.shiftKey?this.prev:this.next;t===a.ENTER&&(n(),e.preventDefault())},onInput:function(e){this.set("searchText",e.target.value)}}),n.bind(t.dialog.element,t.searchModel)}});i(n.pdfviewer,{dialogs:{ErrorDialog:s,ExportAsDialog:l,SearchDialog:c}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("pdfviewer/commands.min",["kendo.upload.min"],e)}(function(){return function(e,t){var n=window.kendo,i=e.proxy,o=e.extend,r=e.parseJSON,a=n.ui.progress,s=n.Class,l="open",c="zoomStart",d="zoomEnd",u=s.extend({init:function(e){this.options=e,this.viewer=e.viewer,this.errorMessages=this.viewer.options.messages.errorMessages}}),h=u.extend({init:function(e){u.fn.init.call(this,e),this.upload=this.viewer.processor.upload},exec:function(){(this.viewer._upload||this._initUpload()).element.click()},_initUpload:function(){var t,n={select:i(this._onSelect,this),success:i(this._onSuccess,this),error:i(this._onError,this),complete:i(this._onComplete,this),showFileList:!1,multiple:!1,validation:{allowedExtensions:[".pdf"]}};return this.upload&&o(n,{async:{saveUrl:this.upload.url,autoUpload:!0,saveField:this.upload.saveField}}),t=e('<input name="files" accept=".pdf" type="file" />').kendoUpload(n).getKendoUpload(),this.viewer._upload=t,t},_onComplete:function(){a(this.viewer.pageContainer,!1)},_onSuccess:function(t){var n=r(t.response);e.isPlainObject(n)?this.viewer.processor.fromJSON(n):this.viewer._triggerError({error:n,message:this.errorMessages.parseError})},_onError:function(e){this.viewer._triggerError({error:e.XMLHttpRequest.responseText,message:this.errorMessages.notSupported})},_onSelect:function(e){var n,i=this,o=e.files[0];if(a(i.viewer.pageContainer,!0),!i.viewer.trigger(l,{file:o})&&!i.upload){if(".pdf"!==o.extension.toLowerCase())return i.viewer._triggerError({error:o,message:i.errorMessages.notSupported}),t;n=new FileReader,n.onload=function(e){var t=e.target.result;i.viewer.fromFile(t)},n.onerror=function(){i.viewer._triggerError({error:o,message:i.errorMessages.parseError})},n.readAsArrayBuffer(o.rawFile)}}}),p=u.extend({exec:function(){var e=this.options.value;this.viewer.activatePage(e)}}),f=u.extend({exec:function(){if(!this.viewer.document)return this.viewer._triggerError({message:this.errorMessages.notFound}),t;var e=this.viewer.document.info&&this.viewer.document.info.title||this.viewer.options.messages.defaultFileName;this.viewer.processor.downloadFile(e)}}),g=u.extend({init:function(t){t=e.extend(t,this.options),u.fn.init.call(this,t)},exec:function(){var e=this.viewer._saveDialog||this._initDialog();e._updateModel({pagesCount:this.viewer.document&&this.viewer.document.total||1,page:this.viewer.options.page}),e.open()},apply:function(e){var t=e.extension;".png"===t?this.viewer.exportImage(e):".svg"===t&&this.viewer.exportSVG(e)},_initDialog:function(){return this.viewer._saveDialog=new n.pdfviewer.dialogs.ExportAsDialog({apply:this.apply.bind(this),pagesCount:this.viewer.document&&this.viewer.document.total||1,messages:this.viewer.options.messages})}}),m=u.extend({exec:function(){var e=this,t=e.viewer;t._toggleSelection(!0)}}),v=u.extend({exec:function(){var e=this,t=e.viewer;t._toggleSelection(!1)}}),_=u.extend({init:function(e){var t=this;t.viewer=e.viewer,t.viewer.searchDialog||(t.viewer.searchDialog=new n.pdfviewer.dialogs.SearchDialog({position:{top:t.viewer.pageContainer.offset().top,left:t.viewer.pageContainer.offset().left},messages:t.viewer.options.messages.dialogs.search,open:i(t._open,t),next:i(t._next,t),prev:i(t._prev,t),close:i(t._close,t)})),u.fn.init.call(t,e)},exec:function(){var e=this;e.viewer.searchDialog.open()},_open:function(){var e=this;e.changeHandler=i(e._change,e),e.zoomStartHandler=i(e._closeDialog,e),e.openFileHandler=i(e._closeDialog,e),e.viewer._searchDOM||(e.viewer._initSearchDOM(),e.viewer.searchDialog.searchModel.bind("change",e.changeHandler),e.viewer.bind("zoomStart",e.zoomStartHandler),e.viewer.bind("open",e.openFileHandler))},_close:function(){var e=this,t=e.viewer._searchDOM;e.viewer.searchDialog.searchModel.unbind("change",e.changeHandler),e.viewer.unbind("zoomStart",e.zoomStartHandler),e.viewer.unbind("open",e.openFileHandler),t.destroy(),delete e.viewer._searchDOM,e._updateSearchModel()},_change:function(e){var t=this,n=t.viewer._searchDOM,i=e.field,o=t.viewer.searchDialog.searchModel,r=o[i];if(n)switch(i){case"searchText":n.search(r,o.matchCase),t._updateSearchModel();break;case"matchCase":n.search(o.searchText,r),t._updateSearchModel()}},_next:function(){var e=this,t=e.viewer._searchDOM;t.matches&&t.matches.length&&(t.nextMatch(),e._updateSearchModel())},_prev:function(){var e=this,t=e.viewer._searchDOM;t.matches&&t.matches.length&&(t.previousMatch(),e._updateSearchModel())},_updateSearchModel:function(){var e=this,t=e.viewer._searchDOM,n=e.viewer.searchDialog.searchModel;t?(n.set("matches",t.matches.length),n.set("matchIndex",t.getMarkedIndex()),e._scrollToMark()):(n.set("searchText",""),n.set("matches",0),n.set("matchIndex",0),n.set("matchCase",!1))},_scrollToMark:function(){var e,t=this,n=t.viewer._searchDOM,i=n.getFirstMarked(),o=t.viewer._scroller;i.length&&(e=i.offset().top-o.scrollElement.offset().top-100,o.scrollTo(o.scrollLeft,e*-1))},_closeDialog:function(){var e=this;e.viewer.searchDialog.dialog.close()}}),b=u.extend({exec:function(){var e,t=this,n=t.options,i=t.viewer,o=n.scale,r=0,a=t.viewer._pageNum,s=i.pageContainer[0].clientHeight,l=1,c=[];"dpl"!==i.processingLib&&(o=t._calculateZoom(),e=function(){var e=t.viewer._scroller,n=i._scrollingStarted;e.scrollTop>e.scrollHeight()&&e._resize(),n||(i.activatePage(a),i._scrollingStarted=!1)},o&&(i.zoomScale=o,i._scrollingStarted=!1,i.pages.forEach(function(e){var t;i._visiblePages.indexOf(e)!==-1&&e.loaded?(c.push(e.render(o)),t=e._page.getViewport({scale:o}).height):(e.resize(o),t=e.element.height()),r+=t,r<=s&&l++}),i._visiblePagesCount!=l&&(i._visiblePagesCount=l,i._loadVisiblePages()),Promise.all(c).then(function(){e(),t._triggerZoomEnd(o)})["catch"](function(){e(),t._triggerZoomEnd(o)})))},_calculateZoom:function(){var e,t=this.options,n=this.viewer,i=n.options,o=n.pageContainer,r=n._visiblePages&&n._visiblePages[0].canvas,a=t.scale,s=a;if(n._allowResize=!1,n._autoFit=!1,t.zoomIn?s=a=n.zoomScale+i.zoomRate:t.zoomOut?s=a=n.zoomScale-i.zoomRate:"auto"===a?(n._allowResize=!0,s=n._autoZoomScale):"actual"===a?s=1:"fitToWidth"===a?(n._allowResize=!0,n._autoFit="fitToWidth",s=o.width()/(r.width/n.zoomScale)):"fitToPage"===a&&(n._allowResize=!0,n._autoFit="fitToPage",s=o.height()/(r.height/n.zoomScale)),e=a<i.zoomMin||a>i.zoomMax,!e&&!n.trigger(c,{scale:a}))return t.updateComboBox&&n.toolbar._updateZoomComboBox(a),s},_triggerZoomEnd:function(e){var t=this,n=t.viewer;n.trigger(d,{scale:e})}}),w=u.extend({init:function(e){u.fn.init.call(this,e)},exec:function(){var e=this;return e.viewer.document?(e._renderPrintContainer(),e._loadAllPages(),t):(e.viewer._triggerError({message:this.errorMessages.notFound}),t)},_renderPrintContainer:function(){this.printContainer=e("<div></div>")},_loadAllPages:function(){var e,t,n,i=this,o=i.viewer.pages,r=i.viewer.zoom(),a=20,s=!0;for(t=0;t<o.length;t++)o[t].loaded||(s=!1,o[t].load(4/3,!0),a+=20);n=function(){clearTimeout(e),e=setTimeout(function(){i.viewer.unbind("render",n),i._renderPrintPages(),setTimeout(function(){i._printDocument(),i.viewer.zoom(r)},0)},a)},s?n():i.viewer.bind("render",n)},_renderPrintPages:function(){var e,t=this.viewer.pages;for(e=0;e<t.length;e++)this._renderPrintImage(t[e])},_renderPrintImage:function(t){var n=t.canvas,i=e("<div></div>"),o="<img src='"+n.toDataURL()+"' width='"+t.width+"px' height='"+t.height+"px' />";i.append(o),this.printContainer.append(i)},_printDocument:function(){var e=this,t=e.viewer.pages,n=t[0].width,i=t[0].height,o=window.open("","","innerWidth="+n+",innerHeight="+i+"location=no,titlebar=no,toolbar=no");o.document.write(e.printContainer.html()),o.document.close(),o.focus(),o.print(),o.close()}});o(n.pdfviewer,{OpenCommand:h,PageChangeCommand:p,DownloadCommand:f,EnableSelectionCommand:m,EnablePanCommand:v,ExportCommand:g,PrintCommand:w,OpenSearchCommand:_,ZoomCommand:b})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.pdfviewer.min",["kendo.mobile.scroller.min","pdfviewer/processors/pdfjs-processor.min","pdfviewer/processors/dpl-processor.min","pdfviewer/toolbar.min","pdfviewer/page.min","pdfviewer/search.min","pdfviewer/dialogs.min","pdfviewer/commands.min","pdfviewer/search.min"],e)}(function(){return function(e,t){var n,i=".kendoPDFViewer",o=window.kendo,r=o.ui,a=e.proxy,s=e.extend,l=o.drawing,c=e.extend({PLUS:187,MINUS:189,ZERO:48,NUMPAD_ZERO:96},o.keys),d=r.Widget,u=o.ui.progress,h="scroll",p="render",f="open",g="error",m="focus"+i,v="keydown"+i,_="DOMMouseScroll"+i+" mousewheel"+i,b="update",w=1.25,k="pagechange",y="zoomStart",x="zoomEnd",C="ZoomCommand",S="#ffffff",T="tabindex",D={pdfjs:"pdfjs",dpl:"dpl"},A={viewer:"k-pdf-viewer k-widget",scroller:"k-canvas k-list-scroller",enableTextSelection:"k-enable-text-select",enablePanning:"k-enable-panning",highlightClass:"k-search-highlight",charClass:"k-text-char"},E=d.extend({init:function(e,t){var n=this;d.fn.init.call(n,e,o.deepExtend({},this.options,t)),n._wrapper(),n.options.toolbar&&n._renderToolbar(),n._initProcessor(t||{}),n._renderPageContainer(),n._loadDocument(),n._tabindex(),o.notify(n,o.ui)},events:[p,f,g,y,x],options:{name:"PDFViewer",view:{type:"canvas"},pdfjsProcessing:{file:null},dplProcessing:{read:{url:null,type:"GET",dataType:"json",pageField:"pageNumber"},upload:{url:null,saveField:"file"},download:{url:null},loadOnDemand:!1},toolbar:{items:[]},width:1e3,height:1200,page:1,defaultPageSize:{width:794,height:1123},scale:null,zoomMin:.5,zoomMax:4,zoomRate:.25,messages:{defaultFileName:"Document",toolbar:{zoom:{zoomOut:"Zoom Out",zoomIn:"Zoom In",actualWidth:"Actual Width",autoWidth:"Automatic Width",fitToWidth:"Fit to Width",fitToPage:"Fit to Page"},open:"Open",exportAs:"Export",download:"Download",pager:{first:"Go to the first page",previous:"Go to the previous page",next:"Go to the next page",last:"Go to the last page",of:" of {0} ",page:"page",pages:"pages"},print:"Print",toggleSelection:"Enable Selection",togglePan:"Enable Panning",search:"Search"},errorMessages:{notSupported:"Only pdf files allowed.",parseError:"PDF file fails to process.",notFound:"File is not found."},dialogs:{exportAsDialog:{title:"Export...",defaultFileName:"Document",pdf:"Portable Document Format (.pdf)",png:"Portable Network Graphics (.png)",svg:"Scalable Vector Graphics (.svg)",labels:{fileName:"File name",saveAsType:"Save as",page:"Page"}},okText:"OK",save:"Save",cancel:"Cancel",search:{inputLabel:"Search Text",matchCase:"Match Case",next:"Next Match",previous:"Previous Match",close:"Close",of:"of"}}}},_wrapper:function(){var e=this,t=e.options;e.wrapper=e.element,e.wrapper.width(t.width).height(t.height).addClass(A.viewer).on(m,a(e._focus,e)).on(v,a(e._keydown,e)),e._allowResize=null===e.options.scale,e._autoZoomScale=w,e.zoomScale=e.options.scale||e._autoZoomScale,e._resizeHandler=o.onResize(function(){e.resize()}),e._pageNum=e.options.page},_focus:function(e){this.toolbar?this.toolbar.wrapper.focus():this.pageContainer.focus(),e.preventDefault()},_keydown:function(e){var t=[c.PLUS,c.NUMPAD_PLUS],n=[c.MINUS,c.NUMPAD_MINUS],i=[c.ZERO,c.NUMPAD_ZERO],o=!1,r={command:C,options:{updateComboBox:!0}};e.ctrlKey&&!this._blankPage&&this.processingLib!==D.dpl&&(t.includes(e.keyCode)?(r.options.zoomIn=!0,o=!0):n.includes(e.keyCode)?(r.options.zoomOut=!0,o=!0):i.includes(e.keyCode)&&(r.options.scale=w,o=!0),o&&(this.execute(r),e.preventDefault()))},_initProcessor:function(e){var t,i=this;t=e.dplProcessing?i.options.dplProcessing:i.options.pdfjsProcessing,i.processingLib=e.dplProcessing?D.dpl:D.pdfjs,i.processor=new o.pdfviewer[i.processingLib].processor(t,i),n=o.pdfviewer[i.processingLib].Page},_renderToolbar:function(){var t=this,n=t.options,i={pager:{messages:n.messages.toolbar.pager},scale:n.scale,resizable:!0,items:n.toolbar.items,width:n.width,action:t.execute.bind(t),messages:n.messages.toolbar,viewer:this},r=e("<div />");r.appendTo(t.element),t.toolbar=new o.pdfviewer.Toolbar(r,i)},_initErrorDialog:function(e){var t,n=this;return n._errorDialog||(e=s(e,{messages:n.options.messages}),t=new o.pdfviewer.dialogs.ErrorDialog(e),n._errorDialog=t._dialog),n._errorDialog},_renderPageContainer:function(){var t=this;t.pageContainer||(t.pageContainer=e("<div />"),t.pageContainer.addClass(A.scroller),t.pageContainer.attr(T,0),t.wrapper.append(t.pageContainer))},_triggerError:function(e){var t=this._initErrorDialog();s(e,{dialog:t}),this.pageContainer&&u(this.pageContainer,!1),this.trigger(g,e)||t.open().content(e.message)},_renderPages:function(){var e,i,o,r,a=this,l=a.document;if(a.pages=[],!l||!l.total)return a._renderBlankPage(),t;for(e=l.pages,i=1;i<=l.total;i++)r={processor:a.processor,number:i},e&&e.length&&(r=s(r,e[i-1])),o=new n(r,a),a.pages.push(o),a.pageContainer.append(o.element);a._attachContainerEvents(),a._getVisiblePagesCount()},_renderBlankPage:function(){this._blankPage=new n(this.options.defaultPageSize,this),this.pageContainer.append(this._blankPage.element),this.trigger(b,{isBlank:!0})},_resize:function(){var e,n,i=this;if(i._allowResize){if(!i.pages||!i.pages.length)return i._blankPage&&(n=e/i._blankPage.element.width(),i._blankPage.resize(n)),t;i.toolbar&&i.toolbar.resize(!0),i._resizeHandler&&clearTimeout(i._resizeHandler),i._resizeHandler=setTimeout(i._resizePages.bind(i),100)}},_resizePages:function(){var e=this,n=e.pageContainer[0].clientWidth,i=0;return e.pages.forEach(function(e){var t=n/e.element.width();t>i&&(i=t)}),e._autoFit?(e.zoom(e._autoFit,!0),t):(i=Math.min(Math.max(i,e.options.zoomMin),w),i!=e.zoomScale&&(e.zoom(i,!0),e.zoomScale=i,e._allowResize=!0),t)},_attachContainerEvents:function(){var e=this;e._wheel=o.throttle(e._wheel.bind(e),300),e.processingLib!==D.dpl&&e.pageContainer.on(_,function(t){t.ctrlKey&&(e._wheel(t),t.preventDefault())}),e._scroller=new o.mobile.ui.Scroller(e.pageContainer,{zoom:!1,elastic:!0}),e._scroller.scrollElement.addClass(A.enablePanning),e._scroller.bind(h,a(e._scroll,this))},_scroll:function(e){var n,i,o,r,a,s,l,c=this,d=c.pageContainer[0].scrollHeight,u=c.pageContainer.height(),h=e.scrollTop,p=c.pageContainer.offset().top,f=c.pages.length,g=c._pageNum,m=g-1,v=g,_=h-c._prevScrollTop>0?1:-1;if(c._preventScroll||!f)return c._preventScroll=!1,t;if(c._scrollingStarted=!0,i=c.pages[m],o=i.element.offset().top-p,r=i.element.height(),_==-1&&c.pages[m+_]&&(a=c.pages[m-c._visiblePagesCount]||c.pages[m+_],s=a.element.offset().top-p,l=a.element.height()),Math.abs(h-(c._prevScrollTop||0))>u*c.zoomScale?v=Math.floor(h*(1/(d/f)))+1:o<0&&Math.abs(o)>=r/2&&1===_?v++:a&&Math.abs(s)<=l/2&&v--,g!==v&&v>=1&&v<=f){if(n=c.pages[v-1].element,n.offset().top>u)return;c._pageNum=v,c._loadVisiblePages(),c.trigger(b,{action:k,page:v,total:f})}c._prevScrollTop=h},_wheel:function(e){var t=e.originalEvent,n=t.wheelDelta?-t.wheelDelta:t.detail,i=n<0;this.execute({command:C,options:{zoomIn:i,zoomOut:!i,updateComboBox:!0}}),e.preventDefault()},zoom:function(e,t){var n=this;return e?n.execute({command:C,options:{scale:e,updateComboBox:!t}}):n.zoomScale},execute:function(e){var t=s({viewer:this},e.options),n=new o.pdfviewer[e.command](t);return n.exec()},_loadDocument:function(){var e=this,t=e.options.page;u(e.pageContainer,!0),e.processor.fetchDocument().done(function(n){e._clearPages(),e.document=n,e._renderPages(),e.resize(!0),n&&(t=t>=1&&t<=n.total?t:1,e.activatePage(t)),u(e.pageContainer,!1)})},loadPage:function(e){var t=this.pages&&this.pages[e-1];if(t)return t.load(this.zoomScale)},activatePage:function(e){var t,n=this.pages&&this.pages[e-1];n&&(t=this._autoFit?parseInt(n.element.css("marginTop"),0):0,this._pageNum=e,this._loadVisiblePages(),this._preventScroll=!0,this._scroller.scrollTo(0,-this._scroller.scrollTop-n.element.position().top-t),this.trigger(b,{action:k,page:e,total:this.pages.length}))},_getVisiblePagesCount:function(){for(var e=this,t=0,n=0,i=e.pageContainer[0].clientHeight,o=0;t<=i&&o<e.pages.length;)t+=e.pages[o].element.height(),n++,o++;e._visiblePagesCount=n},_loadVisiblePages:function(){var e,t=this.pages&&this.pages.length,n=Math.max(this._pageNum-this._visiblePagesCount,1),i=Math.min(this._pageNum+this._visiblePagesCount,t);for(this._visiblePages=this.pages.slice(n-1,i),e=n;e<=i;e++)this.loadPage(e)},_loadAllPages:function(){var e,t=this.pages&&this.pages.length,n=[];for(e=0;e<=t;e++)n.push(this.loadPage(e));return n},fromFile:function(e){this.zoomScale=this.options.scale||w,this.trigger(b,{action:"zoom",zoom:this.options.scale||"auto"}),this.processor._updateDocument(e),this._loadDocument()},exportImage:function(e){var t,n=this,i=e.page,r=n.pages[i-1]||n._blankPage,a=new l.Group;r.load(),t=o.drawing.Path.fromRect(new o.geometry.Rect([0,0],[r.width,r.height]),{fill:{color:S},stroke:null}),u(n.pageContainer,!0),a.append(t,r.group),l.exportImage(a).done(function(t){u(n.pageContainer,!1),o.saveAs({dataURI:t,fileName:e.fileName,proxyURL:e.proxyURL||"",forceProxy:e.forceProxy,proxyTarget:e.proxyTarget})})},exportSVG:function(e){var t=this,n=e.page,i=t.pages[n-1]||t._blankPage;u(t.pageContainer,!0),i.load(),l.exportSVG(i.group).done(function(n){u(t.pageContainer,!1),o.saveAs({dataURI:n,fileName:e.fileName,proxyURL:e.proxyURL||"",forceProxy:e.forceProxy,proxyTarget:e.proxyTarget})})},setOptions:function(t){var n=this;(t.pdfjsProcessing||t.dplProcessing)&&n._initProcessor(),t=e.extend(n.options,t),d.fn.setOptions.call(n,t),t.page&&(n._pageNum=t.page,n.activatePage(t.page)),t.width&&n.element.width(t.width),t.height&&n.element.height(t.height)},destroy:function(){this._resizeHandler&&o.unbindResize(this._resizeHandler),this._errorDialog&&this._errorDialog.destroy(),this._saveDialog&&this._saveDialog.destroy(),this._upload&&this._upload.destroy(),this.toolbar&&(this.toolbar.unbind(),this.toolbar.destroy(),this.toolbar=null),this.pages&&this.pages.length&&(this.pages.forEach(function(e){e.destroy()}),this.pages=[]),this._scroller&&(this._scroller.unbind(),this._scroller.destroy()),this.pageContainer.off(i),d.fn.destroy.call(this)},_clearPages:function(){this.pages=[],this.document=null,this._pageNum=1,this.pageContainer.off(i),this.pageContainer.empty(),this._scroller&&(this._scroller.reset(),this._scroller.unbind(),this._scroller.destroy())},_toggleSelection:function(e){var n=this;e===t&&(e=!0),n._scroller.userEvents._shouldNotMove=e,n._scroller.scrollElement.toggleClass(A.enableTextSelection,e),n._scroller.scrollElement.toggleClass(A.enablePanning,!e)},_initSearchDOM:function(){var e=this,t=new Promise(function(t){Promise.all(e._loadAllPages()).then(function(){e._searchDOM=new o.pdfviewer.SearchDOM({target:e._getTextLayers(),highlightClass:A.highlightClass,charClass:A.charClass}),t()})});return t},_getTextLayers:function(){return this.pages.map(function(e){return e.textLayer})}});r.plugin(E)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.rating.min",["kendo.core.min","kendo.dom.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.ui,o=".kendoRating",r=i.Widget,a=e.extend,s=e.proxy,l=n.keys,c=n.parseFloat,d="change",u="select",h="selected",p="hovered",f="disabled",g="readonly",m="keydown"+o,v="click"+o,_="mouseenter"+o,b="mouseleave"+o,w="mousemove"+o,k="mousedown"+o,y="focus"+o,x="blur"+o,C="aria-label",S="aria-labelledby",T="aria-valuemin",D="aria-valuemax",A="aria-valuenow",E="aria-disabled",I="aria-readonly",M="k-rating-precision-part",F="k-rating-precision-complement",R=.5,P="_label",z="k-rating-item",B="k-state-focused",L="tabindex",H=".",N="role",O="min",V="max",W={single:"single",continuous:"continuous"},U={item:"item",half:"half"},q={item:"itemTemplate",hovered:"hoveredTemplate",selected:"selectedTemplate"},j={selected:"k-state-selected",hovered:"k-state-hover",hoveredPrecise:"k-state-hover-precise"},G={partValue:"part-value",dataValue:"data-value",value:"value",title:"title"},$={ +widget:"k-rating k-widget",container:"k-rating-container",item:"k-rating-item",icon:"k-icon k-i-star-outline",iconSelected:"k-icon k-i-star",label:"k-rating-label",disabled:"k-state-disabled",readonly:"k-state-readonly",active:"k-state-active",hidden:"k-hidden"},Y=n.template('<span class="#=styles.widget#"></span>'),K=n.template('<span class="#=styles.container#"></span>'),Q=n.template('<span class="#=styles.label#"></span>'),X=n.template("<span>#=value# / #=maxValue#</span>"),J=n.template('<span class="#=styles.item#" data-value="#=value#"></span>'),Z=n.template('<span class="#=icon#"></span>'),ee=r.extend({init:function(e,t){var i=this;r.fn.init.call(i,e,t),i.options=a({},i.options,t),i._element(),i._wrapper(),i._aria(),i._initSettings(),i._renderItems(),i._renderTooltip(),i._renderLabel(),i._selectInitial(),i._attachEvents(),n.notify(this)},events:[u,d],options:{name:"Rating",messages:{},min:1,max:5,selection:W.continuous,precision:U.item,tooltip:!0,label:!0,readonly:!1,enabled:!0,selectValueOnFocus:null,itemTemplate:null,selectedTemplate:null,hoveredTemplate:null},_element:function(){var e=this;e.element.attr("type","number"),e.element.addClass($.hidden)},_wrapper:function(){var t=this;t.wrapper=e(Y({styles:$})),t.wrapper=t.element.wrap(t.wrapper).parent(),t.wrapper.addClass(t.element[0].className.replace($.hidden,"")).append(e(K({styles:$}))),t.wrapper[0].style.cssText=t.element[0].style.cssText,t.container=t.wrapper.find(H+$.container)},_aria:function(){var t,i=this,o=i.wrapper,r=i.element,a=r.attr("id"),s=e('label[for="'+a+'"]'),l=r.attr(C),d=r.attr(S);i.wrapper.attr(L,0).attr(N,"slider").attr(T,c(i.element.attr(O))||i.options.min).attr(D,c(i.element.attr(V))||i.options.max).attr(A,i.options.value),l?o.attr(C,l):d?o.attr(S,d):s.length&&(t=s.attr("id"),t||(t=(a||n.guid())+P,s.attr("id",t)),o.attr(S,t))},_initSettings:function(){var e=this,t=e.options.precision!=U.item,n=e.options;n.value=c(n.value),null===n.value&&(n.value=c(e.element.val())),n.min=c(e.element.attr(O))||e.options.min,n.max=c(e.element.attr(V))||e.options.max,e._valueMin=t?e.options.min-R:e.options.min,n.enabled=n.enabled&&!e.element.attr(f),n.readonly=n.readonly||!!e.element.attr(g),e._setState()},_renderItems:function(){var t,i,o=this,r=o.container,a=o.options.min,s=o.options.max,l=o.options.itemTemplate?n.template(o.options.itemTemplate):Z;for(t=a;t<=s;t+=1)i=e(J({styles:$,value:t})),i.append(l({icon:$.icon,index:t})),r.append(i)},_renderTooltip:function(){var n,i=this,o=i.container.find(H+z),r=i.options.tooltip===!0;if(!r)return o.removeAttr(G.title),t;for(n=0;n<o.length;n+=1)e(o[n]).attr(G.title,e(o[n]).data(G.value))},_renderLabel:function(){var i=this,o=i.wrapper.find(H+$.label),r=i.options.label===!0||i.options.label.template!==t,a=i.options.label&&i.options.label.template?n.template(i.options.label.template):X;return r&&null!==i.value()?(o.length||(i.label=o=e(Q({styles:$})),i.wrapper.append(o)),o.html(a({styles:$,value:i.value(),maxValue:i.options.max})),t):(o.remove(),i.label=null,t)},_selectInitial:function(){var e=this;isNaN(e.options.value)||e.value(e.options.value)},_attachEvents:function(){var e=this,t=e.options.precision==U.half;e.wrapper.on(y,s(e._focus,e)).on(x,s(e._blur,e)).on(m,s(e._keydown,e)),e.container.on(v,H+z,s(e._click,e)).on(_,H+z,s(e._mouseenter,e)).on(b,H+z,s(e._mouseleave,e)).on(k,s(e._mousedown,e)),t&&e.container.on(w,H+z,s(e._mousemove,e))},_focus:function(){var e,n,i,o=this,r=o.container,a=o.wrapper,s=o.container.find(H+B),l=o.options.selectValueOnFocus,c=r.children().first();return!o.options.enabled||o.options.readonly||o.preventFocus?(o.options.readonly&&o.wrapper.addClass(B),t):(a.addClass(B),s.removeClass(B),null===o.value()&&null!==l&&o.value(l),e=r.find(H+j.selected).last(),n=r.find(H+j.hovered).last(),i=e.length?e:n,i=i.length?i:c,i.addClass(B),t)},_blur:function(){var e=this;e.preventFocus=!1,e.wrapper.removeClass(B),e.container.find(H+B).removeClass(B),e.element.blur()},_mousedown:function(){var e=this;e.preventFocus=!0},_keydown:function(t){var i,o,r,a,s=this,c=s.container,d=s.parsedValue,u=s.options.precision!=U.item,h=u?R:1,p=c.find(H+z),f=c.find(H+B),g=p.index(f),m=n.support.isRtl(s.wrapper),v=isNaN(d),_=t.keyCode;s.options.enabled&&!s.options.readonly&&(i=_===l.RIGHT&&m||_===l.LEFT&&!m,o=_===l.LEFT&&m||_===l.RIGHT&&!m,i||_===l.DOWN?(r=v?p.eq(0):e(p[g-1]),a=v?s._valueMin:d-h,s._select(r,a),t.preventDefault()):o||_===l.UP?(r=v?p.eq(0):e(p[g+1]),a=v?s._valueMin:d+h,s._select(r,a),t.preventDefault()):_===l.HOME?(r=p.eq(0),s._select(r,s._valueMin),t.preventDefault()):_===l.END&&(r=p.eq(p.length-1),s._select(r),t.preventDefault()))},_getTemplateType:function(e){var t,i=this;return t=i.options[e]?n.template(i.options[e]):Z},_renderTemplate:function(t,n){var i,o=this,r=o._getTemplateType(n),a=$.icon;for(n!=q.selected&&n!=q.hovered||(a=$.iconSelected),i=0;i<t.length;i+=1)e(t[i]).html(r({icon:a,index:e(t[i]).index()}))},_updateItemTemplates:function(e,t){var n=this,i=W.single==n.options.selection,o=n.options.precision==U.half,r=n.container.find(H+j.selected),a=i?t:t.prevAll().addBack(),s=i?r:t.nextAll(),l=q[e],c=j[e];s.removeClass(c),a.addClass(c),n._renderTemplate(a,l),(!i||i&&e==h&&a.get(0)!=r.get(0))&&n._renderTemplate(s,q.item),o&&n._renderTemplate(t,q.item)},_change:function(e,t){var n=this,i=n.value();n.value(t),n.trigger(d,{target:e,oldValue:i,newValue:n.value()})},_click:function(t){var n=this,i=e(t.target).closest(H+z),o=i.attr(G.dataValue);n.options.enabled&&!n.options.readonly&&(i.data(G.partValue)&&(o=i.data(G.partValue)),n._select(i,o))},_select:function(e,t){var n=this,i=isNaN(t)?e.attr(G.dataValue):t;i==n.value()||i<n._valueMin||i>n.options.max||(n.trigger(u,{target:e}),n._change(e,i),n._focus())},_mouseenter:function(t){var n=this,i=e(t.target),o=i.closest(H+z);n.options.enabled&&!n.options.readonly&&(n.enableMove=!0,i.is(H+z)&&n._updateItemTemplates(p,o))},_mouseleave:function(t){var n,i,o,r,a,s=this,l=s.options.selection,c=s.options.precision==U.half,d=l==W.single,u=e(t.target).closest(H+z),p=s.container.find(H+z);if(s.enableMove=!1,o=function(e){n=s.parsedValue%1!==0&&e.is(s.container.find("[data-value="+Math.ceil(s.value())+"]")),i=!e.hasClass(j.selected)&&!e.hasClass(j.hovered)||n?q.item:q.selected,s._renderTemplate(e,i),c&&n&&e.hasClass(j.selected)&&s._togglePrecisionElements(e,h)},p.removeClass(j.hovered),d)o(u);else for(r=0;r<p.length;r+=1)a=e(p[r]),o(a)},_mousemove:function(t){var n,i,o,r=this,a=e(t.target).closest(H+z);r.enableMove&&(a.length&&(n=t.clientX,i=a.offset().left,o=Math.abs(n-i),r._togglePrecisionElements(a,p),r._updatePrecisionElements(a,o)),t.preventDefault())},_togglePrecisionElements:function(t,n){var i,o=this,r=t.find(H+M),a=o._getTemplateType(q[n]);r.length?r.html(a({icon:$.iconSelected})):(i=o.parsedValue%1!==0,r=e("<span></span>").addClass(M),r.append(a({icon:$.iconSelected})),r.width(i?t.width()/2:t.width()),t.append(r),t.append(e("<span></span>").css({width:t.width(),height:t.height(),display:"block"})),o._createUpdatePrecisionComplement(t,i))},_createUpdatePrecisionComplement:function(t,i){var o=this,r=t.find(H+F),a=t.children().first(),s=n.support.isRtl(o.wrapper),l=s?"right":"left";r.length||(r=a.wrap(e("<span></span>").addClass(F)).parent()),r.width(i?t.width()/2:0),r.css(l,i||s?"50%":0)},_updatePrecisionElements:function(e,t){var i=this,o=e.find(H+M),r=n.parseFloat(e.data(G.value)),a=n.support.isRtl(this.wrapper),s=e.width(),l=s/2,d=c(e.outerWidth()/2),u=a?t>d:t<d;e.length&&o.length&&(o.width(u?l:s),this.options.tooltip&&e.attr(G.title,u?r-R:r),e.data(G.partValue,u?r-R:r),i._createUpdatePrecisionComplement(e,u))},_updateElement:function(e){var t=this,n=null===e?"":e;t.element.val(n),null===t.value?t.wrapper.removeAttr(A):t.wrapper.attr(A,e)},_updateItemsRendering:function(e){var t=this,n=t.options.precision==U.half,i=null===e?"item":h,o=null===e?t.container.find(H+j.selected).last():t.container.find(H+z+"[data-value='"+Math.ceil(e)+"']");null===e&&t.container.find(H+z).removeClass(j.selected),t._updateItemTemplates(i,o),n&&null!==e&&t._togglePrecisionElements(o,h),t._renderLabel()},_setState:function(){var e=this,t=e.element,n=e.wrapper,i=e.options.readonly,o=e.options.enabled;i&&o?(t.attr(g,g),n.attr(I,!0)):(t.removeAttr(g),n.removeAttr(I)),o?(t.removeAttr(f),n.removeAttr(E),n.attr(L,0)):(t.attr(f,f),n.attr(E,!0),n.removeAttr(L)),n.toggleClass($.disabled,!o),n.toggleClass($.readonly,i&&o)},value:function(e){var n=this,i=n.options.precision==U.half;return null===e?(n._updateElement(e),n._updateItemsRendering(e),t):(e=c(e),null===e?e=c(n.element.val()):(e=Math.max(n._valueMin,Math.min(e,n.options.max)),n.parsedValue=i?c((Math.ceil(2*e)/2).toFixed(1)):Math.round(e),n._updateElement(e),n._updateItemsRendering(e),t))},reset:function(){var e=this;e.value(null)},enable:function(e){var n=this;t===e&&(e=!0),n.options.enabled=e,n.options.readonly=!1,n._setState()},readonly:function(e){var n=this;t===e&&(e=!0),n.options.readonly=e,n.options.enabled=!0,n._setState()},setOptions:function(n){var i=this;i.options=e.extend(i.options,n),n.enabled!==t&&i.enable(n.enabled),n.readonly!==t&&i.readonly(n.readonly),n.label!==t&&i._renderLabel(),n.tooltip!==t&&i._renderTooltip(),n.value!==t&&i.value(n.value),(n.min||n.max!==t||n.itemTemplate!==t||n.selectedTemplate!==t||n.hoveredTemplate!==t)&&(i.container.empty(),i._renderItems(),i._renderLabel(),i._renderTooltip(),i._selectInitial())},destroy:function(){var e=this;e.wrapper.off(o),e.container.off(o),r.fn.destroy.call(e)}});i.plugin(ee)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.angular.min",["kendo.core.min"],e)}(function(){return function(e,t,n){"use strict";function i(e){var t=T;try{return T=function(e){return e()},e()}finally{T=t}}function o(t,i,o,c,d,m){function v(){var n,m,v,_,b,x,S;return o.kRebind&&(n=e(e(i)[0].cloneNode(!0))),C=r(t,i,o,c,y).options,i.is("select")&&!function(t){var n,i;if(t.length>0)for(n=e(t[0]),!/\S/.test(n.text())&&/^\?/.test(n.val())&&n.remove(),i=0;i<t.length;i++)e(t[i]).off("$destroy")}(i[0].options),m=y.call(i,E=C).data(c),l(m,t,o,c,d),t.$emit("kendoWidgetCreated",m),v=p(t,m),o.kRebind&&g(m,t,i,n,o.kRebind,v,o),o.kNgDisabled&&(_=o.kNgDisabled,b=t.$eval(_),b&&m.enable(!b),a(m,t,i,_)),o.kNgReadonly&&(x=o.kNgReadonly,S=t.$eval(x),S&&m.readonly(S),s(m,t,i,x)),o.kNgModel&&h(m,t,o.kNgModel),w&&u(m,t,i,w,k),m&&f(m,i),m}var _,b,w,k,y,x,C,S,D,A,I,M,F,R;if(!(i instanceof jQuery))throw Error("The Kendo UI directives require jQuery to be available before AngularJS. Please include jquery before angular in the document.");if(_=o.kNgDelay,b=t.$eval(_),m=m||[],w=m[0],k=m[1],y=e(i)[c],!y)return window.console.error("Could not find: "+c),null;if(x=r(t,i,o,c,y),C=x.options,x.unresolved.length){for(S=[],D=0,A=x.unresolved.length;D<A;D++)I=x.unresolved[D],M=e.Deferred(function(e){var i=t.$watch(I.path,function(t){t!==n&&(i(),e.resolve())})}).promise(),S.push(M);return e.when.apply(null,S).then(v),n}return _&&!b?(F=t.$root||t,R=function(){var e=t.$watch(_,function(t){t!==n&&(e(),i.removeAttr(o.$attr.kNgDelay),_=null,T(v))})},/^\$(digest|apply)$/.test(F.$$phase)?R():t.$apply(R),n):v()}function r(i,o,r,a,s){function l(e,o){var r=t.copy(i.$eval(o));r===n?f.push({option:e,path:o}):c[e]=r}var c,d,u,h,p=a.replace(/^kendo/,""),f=[],g=r.kOptions||r.options,m=i.$eval(g);return g&&m===n&&f.push({option:"options",path:g}),c=t.extend({},r.defaultOptions,m),d=s.widget.prototype.options,u=s.widget.prototype.events,e.each(r,function(e,t){var n,i,o,r;"source"!==e&&"kDataSource"!==e&&"kScopeField"!==e&&"scopeField"!==e&&(n="data"+e.charAt(0).toUpperCase()+e.slice(1),0===e.indexOf("on")&&(i=e.replace(/^on./,function(e){return e.charAt(2).toLowerCase()}),u.indexOf(i)>-1&&(c[i]=t)),d.hasOwnProperty(n)?l(n,t):d.hasOwnProperty(e)&&!F[e]?l(e,t):M[e]||(o=e.match(/^k(On)?([A-Z].*)/),o&&(r=o[2].charAt(0).toLowerCase()+o[2].slice(1),o[1]&&"kOnLabel"!=e?c[r]=t:("kOnLabel"==e&&(r="onLabel"),l(r,t)))))}),h=r.kDataSource||r.source,h&&(c.dataSource=I(i,o,p,h)),c.$angular=[i],{options:c,unresolved:f}}function a(e,t,i,o){return kendo.ui.PanelBar&&e instanceof kendo.ui.PanelBar||kendo.ui.Menu&&e instanceof kendo.ui.Menu?(A.warn("k-ng-disabled specified on a widget that does not have the enable() method: "+e.options.name),n):(t.$watch(o,function(t,n){t!=n&&e.enable(!t)}),n)}function s(e,t,i,o){return"function"!=typeof e.readonly?(A.warn("k-ng-readonly specified on a widget that does not have the readonly() method: "+e.options.name),n):(t.$watch(o,function(t,n){t!=n&&e.readonly(t)}),n)}function l(e,t,n,i,o){if(n[o]){var r=S(n[o]).assign;if(!r)throw Error(o+" attribute used but expression in it is not assignable: "+n[i]);r(t,e)}}function c(e){return/checkbox|radio/i.test(e.attr("type"))?e.prop("checked"):e.val()}function d(e){return R.test(e[0].tagName)}function u(e,t,i,o,r){var a,s,l,u,h;e.value&&(s=!1,a=d(i)?function(){return c(i)}:function(){return e.value()},l=function(){var i=o.$viewValue;i===n&&(i=o.$modelValue),i===n&&(i=null),s=!0,setTimeout(function(){if(s=!1,e){var n=t[e.element.attr("k-ng-model")];n&&(i=n),e.options.autoBind!==!1||e.listView.bound()?e.value(i):i&&e.value(i)}},0)},o.$render=l,setTimeout(function(){o.$render!==l&&(o.$render=l)()}),d(i)&&i.on("change",function(){s=!0}),u=function(e){return function(){var n;s&&!i.is("select")||(e&&r&&(n=r.$pristine),o.$setViewValue(a()),e&&(o.$setPristine(),n&&r.$setPristine()),w(t))}},e.first("change",u(!1)),e.first("spin",u(!1)),kendo.ui.AutoComplete&&e instanceof kendo.ui.AutoComplete||e.first("dataBound",u(!0)),h=a(),isNaN(o.$viewValue)||h==o.$viewValue||(o.$isEmpty(o.$viewValue)?null!=h&&""!==h&&h!=o.$viewValue&&o.$setViewValue(h):e.value(o.$viewValue)),o.$setPristine())}function h(t,i,o){var r,a,s,l,c,d,u,p,f,g,m,v,_;return kendo.ui.DateRangePicker&&t instanceof kendo.ui.DateRangePicker?(r=o.split(","),a=r[0].trim(),h(t._startDateInput,i,a),r[1]?(s=r[1].trim(),h(t._endDateInput,i,s),t.range({start:i[a],end:i[s]})):t.range({start:i[a],end:null}),n):"function"!=typeof t.value?(A.warn("k-ng-model specified on a widget that does not have the value() method: "+t.options.name),n):(l=e(t.element).parents("ng-form, form").first(),c=kendo.getter(l.attr("name"),!0)(i),d=S(o),u=d.assign,p=!1,f=kendo.ui.MultiSelect&&t instanceof kendo.ui.MultiSelect||kendo.ui.RangeSlider&&t instanceof kendo.ui.RangeSlider,g=function(e){return e&&f?e.length:0},m=g(d(i)),t.$angular_setLogicValue(d(i)),v=function(e,i){e===n&&(e=null),p||e==i&&g(e)==m||(m=g(e),t.$angular_setLogicValue(e))},f?i.$watchCollection(o,v):i.$watch(o,v),_=function(){p=!0,c&&c.$pristine&&c.$setDirty(),w(i,function(){u(i,t.$angular_getLogicValue()),m=g(d(i))}),p=!1},t.first("change",_),t.first("spin",_),n)}function p(e,t){var n=e.$on("$destroy",function(){n(),t&&(kendo.destroy(t.element),t=null)});return n}function f(t,n){function i(){a.disconnect()}function o(){a.observe(e(n)[0],{attributes:!0})}var r,a;window.MutationObserver&&t.wrapper&&(r=[].slice.call(e(n)[0].classList),a=new MutationObserver(function(n){i(),t&&(n.forEach(function(n){var i,o=e(t.wrapper)[0];switch(n.attributeName){case"class":i=[].slice.call(n.target.classList),i.forEach(function(e){r.indexOf(e)<0&&(o.classList.add(e),kendo.ui.ComboBox&&t instanceof kendo.ui.ComboBox&&t.input[0].classList.add(e))}),r.forEach(function(e){i.indexOf(e)<0&&(o.classList.remove(e),kendo.ui.ComboBox&&t instanceof kendo.ui.ComboBox&&t.input[0].classList.remove(e))}),r=i;break;case"disabled":"function"!=typeof t.enable||t.element.attr("readonly")||t.enable(!e(n.target).attr("disabled"));break;case"readonly":"function"!=typeof t.readonly||t.element.attr("disabled")||t.readonly(!!e(n.target).attr("readonly"))}}),o())}),o(),t.first("destroy",i))}function g(t,n,i,o,r,a,s){var l=n.$watch(r,function(r,c){var d,u,h,p,f;t._muteRebind||r===c||(l(),s._cleanUp&&s._cleanUp(),d=U[t.options.name],d&&d.forEach(function(t){var i=n.$eval(s["k"+t]);i&&o.append(e(i).attr(kendo.toHyphens("k"+t),""))}),u=e(t.wrapper)[0],h=e(t.element)[0],p="Upload"===t.options.name,p&&(i=e(h)),f=i.injector().get("$compile"),t._destroy(),a&&a(),t=null,h&&(u&&u.parentNode.replaceChild(h,u),e(i).replaceWith(o)),f(o)(n))},!0);w(n)}function m(e,t){return function(n,i){return e.call(t,n,i)}}function v(e,t){this[e]=kendo.stringify(t)}function _(e,n){function i(e,t){x.directive(e,["directiveFactory",function(n){return n.create(t,e)}])}var o,r,a,s,l=n?"Mobile":"";l+=e.fn.options.name,o=l,r="kendo"+l.charAt(0)+l.substr(1).toLowerCase(),l="kendo"+l,a=l.replace(/([A-Z])/g,"-$1"),z.indexOf(l.replace("kendo",""))==-1&&(s=l===r?[l]:[l,r],t.forEach(s,function(e){x.directive(e,function(){return{restrict:"E",replace:!0,template:function(e,t){var n=P[o]||"div",i=t.kScopeField||t.scopeField;return"<"+n+" "+a+(i?'="'+i+'"':"")+">"+e.html()+"</"+n+">"}}})})),B.indexOf(l.replace("kendo",""))>-1||(i(l,l),r!=l&&i(r,l))}function b(t){return t=e(t),kendo.widgetInstance(t,kendo.ui)||kendo.widgetInstance(t,kendo.mobile.ui)||kendo.widgetInstance(t,kendo.dataviz.ui)}function w(e,t){var n=e.$root||e,i=/^\$(digest|apply)$/.test(n.$$phase);t?i?t():n.$apply(t):i||n.$digest()}function k(t,n){t.$destroy(),n&&e(n).removeData("$scope").removeData("$$kendoScope").removeData("$isolateScope").removeData("$isolateScopeNoTemplate").removeClass("ng-scope")}function y(n,i,o){var r,a,s;if(e.isArray(n))return t.forEach(n,function(e){y(e,i,o)});if("string"==typeof n){for(r=n.split("."),a=kendo;a&&r.length>0;)a=a[r.shift()];if(!a)return W.push([n,i,o]),!1;n=a.prototype}return s=n[i],n[i]=function(){var e=this,t=arguments;return o.apply({self:e,next:function(){return s.apply(e,arguments.length>0?arguments:t)}},t)},!0}var x,C,S,T,D,A,E,I,M,F,R,P,z,B,L,H,N,O,V,W,U;t&&t.injector&&(x=t.module("kendo.directives",[]),C=t.injector(["ng"]),S=C.get("$parse"),T=C.get("$timeout"),A=C.get("$log"),I=function(){var e={TreeList:"TreeListDataSource",TreeView:"HierarchicalDataSource",Scheduler:"SchedulerDataSource",PivotGrid:"PivotDataSource",PivotConfigurator:"PivotDataSource",PanelBar:"HierarchicalDataSource",Menu:"$PLAIN",ContextMenu:"$PLAIN"},t=function(e,t){return"$PLAIN"==t?e:kendo.data[t].create(e)};return function(n,i,o,r){var a=e[o]||"DataSource",s=n.$eval(r),l=t(s,a);return n.$watch(r,function(e){var n,o=b(i);o&&"function"==typeof o.setDataSource&&e!==s&&e!==o.dataSource&&(n=t(e,a),o.setDataSource(n),s=e)}),l}}(),M={kDataSource:!0,kOptions:!0,kRebind:!0,kNgModel:!0,kNgDelay:!0},F={name:!0,title:!0,style:!0},R=/^(input|select|textarea)$/i,x.factory("directiveFactory",["$compile",function(t){var n,i,r=!1;return D=t,i=function(t,i){return{restrict:"AC",require:["?ngModel","^?form"],scope:!1,controller:["$scope","$attrs","$element",function(e,t){this.template=m(v,t),t._cleanUp=m(function(){this.template=null,t._cleanUp=null},this)}],link:function(a,s,l,c){var d,u=e(s),h=t.replace(/([A-Z])/g,"-$1");u.attr(h,u.attr("data-"+h)),u[0].removeAttribute("data-"+h),d=o(a,s,l,t,i,c),d&&(n&&clearTimeout(n),n=setTimeout(function(){a.$emit("kendoRendered"),r||(r=!0,e("form").each(function(){var t=e(this).controller("form");t&&t.$setPristine()}))}))}}},{create:i}}]),P={Editor:"textarea",NumericTextBox:"input",DatePicker:"input",DateTimePicker:"input",TimePicker:"input",AutoComplete:"input",ColorPicker:"input",MaskedTextBox:"input",MultiSelect:"input",Upload:"input",Validator:"form",Button:"button",MobileButton:"a",MobileBackButton:"a",MobileDetailButton:"a",ListView:"ul",MobileListView:"ul",ScrollView:"div",PanelBar:"ul",TreeView:"ul",Menu:"ul",ContextMenu:"ul",ActionSheet:"ul",Switch:"input"},z=["MobileView","MobileDrawer","MobileLayout","MobileSplitView","MobilePane","MobileModalView"],B=["MobileApplication","MobileView","MobileModalView","MobileLayout","MobileActionSheet","MobileDrawer","MobileSplitView","MobilePane","MobileScrollView","MobilePopOver"],t.forEach(["MobileNavBar","MobileButton","MobileBackButton","MobileDetailButton","MobileTabStrip","MobileScrollView","MobileScroller"],function(e){B.push(e),e="kendo"+e,x.directive(e,function(){return{restrict:"A",link:function(t,n,i){o(t,n,i,e,e)}}})}),L=kendo.htmlEncode,H=/{{/g,N=/}}/g,O="{​{",V="}​}",kendo.htmlEncode=function(e){return L(e).replace(H,O).replace(N,V)},W=[],kendo.onWidgetRegistered(function(t){W=e.grep(W,function(e){return!y.apply(null,e)}),_(t.widget,"Mobile"==t.prefix)}),y(["ui.Widget","mobile.ui.Widget"],"angular",function(o,r){var a,s=this.self;return"init"==o?(!r&&E&&(r=E),E=null,r&&r.$angular&&(s.$angular_scope=r.$angular[0],s.$angular_init(s.element,r)),n):(a=s.$angular_scope,a&&i(function(){var i,l,c=r(),d=c.elements,u=c.data;if(d.length>0)switch(o){case"cleanup":t.forEach(d,function(t){var n=e(t).data("$$kendoScope");n&&n!==a&&n.$$kendoScope&&k(n,t)});break;case"compile":i=s.element.injector(),l=i?i.get("$compile"):D,t.forEach(d,function(t,i){var o,r;c.scopeFrom?o=c.scopeFrom:(r=u&&u[i],r!==n?(o=e.extend(a.$new(),r),o.$$kendoScope=!0):o=a),e(t).data("$$kendoScope",o),l(t)(o)}),w(a)}}),n)}),y("ui.Widget","$angular_getLogicValue",function(){return this.self.value()}),y("ui.Widget","$angular_setLogicValue",function(e){this.self.value(e)}),y("ui.Select","$angular_getLogicValue",function(){var e=this.self.dataItem(),t=this.self.options.dataValueField;return e?this.self.options.valuePrimitive?t?e[t]:e:e.toJSON():null}),y("ui.Select","$angular_setLogicValue",function(e){var t=this.self,i=t.options,o=i.dataValueField,r=i.text||"";e===n&&(e=""),o&&!i.valuePrimitive&&e&&(r=e[i.dataTextField]||"",e=e[o||i.dataTextField]),t.options.autoBind!==!1||t.listView.bound()?t.value(e):!r&&e&&i.valuePrimitive?t.value(e):t._preselect(e,r)}),y("ui.MultiSelect","$angular_getLogicValue",function(){var t=this.self.dataItems().slice(0),n=this.self.options.dataValueField;return n&&this.self.options.valuePrimitive&&(t=e.map(t,function(e){return e[n]})),t}),y("ui.MultiSelect","$angular_setLogicValue",function(t){var n,i,o,r;null==t&&(t=[]),n=this.self,i=n.options,o=i.dataValueField,r=t,o&&!i.valuePrimitive&&(t=e.map(t,function(e){return e[o]})),i.autoBind!==!1||i.valuePrimitive||n.listView.bound()?n.value(t):n._preselect(r,t)}),y("ui.Widget","$angular_init",function(t,n){var i,o,r,a,s=this.self;if(n&&!e.isArray(n))for(i=s.$angular_scope,o=s.events.length;--o>=0;)r=s.events[o],a=n[r],a&&"string"==typeof a&&(n[r]=s.$angular_makeEventHandler(r,i,a))}),y("ui.Widget","$angular_makeEventHandler",function(e,t,n){return n=S(n),function(e){w(t,function(){n(t,{kendoEvent:e})})}}),y(["ui.Grid","ui.ListView","ui.TreeView","ui.PanelBar"],"$angular_makeEventHandler",function(e,n,i){return"change"!=e?this.next():(i=S(i),function(e){var o,r,a,s,l,c,d,u,h,p=e.sender,f=p.options,g={kendoEvent:e};for(t.isString(f.selectable)&&(o=f.selectable.indexOf("cell")!==-1,r=f.selectable.indexOf("multiple")!==-1),p._checkBoxSelection&&(r=!0),a=g.selected=this.select(),s=g.data=[],l=g.columns=[],d=0;d<a.length;d++)u=o?a[d].parentNode:a[d],h=p.dataItem(u),o?(t.element.inArray(h,s)<0&&s.push(h),c=t.element(a[d]).index(),t.element.inArray(c,l)<0&&l.push(c)):s.push(h);r||(g.dataItem=g.data=s[0],g.angularDataItem=kendo.proxyModelSetters(g.dataItem),g.selected=a[0]),w(n,function(){i(n,g)})})}),y("ui.Grid","$angular_init",function(i,o){if(this.next(),o.columns){var r=e.extend({},kendo.Template,o.templateSettings);t.forEach(o.columns,function(e){!e.field||e.template||e.format||e.values||e.encoded!==n&&!e.encoded||(e.template="<span ng-bind='"+kendo.expr(e.field,"dataItem")+"'>#: "+kendo.expr(e.field,r.paramName)+"#</span>")})}}),y("mobile.ui.ButtonGroup","value",function(e){var t=this.self;return null!=e&&(t.select(t.element.children("li.km-button").eq(e)),t.trigger("change"),t.trigger("select",{index:t.selectedIndex})),t.selectedIndex}),y("mobile.ui.ButtonGroup","_select",function(){this.next(),this.self.trigger("change")}),x.directive("kendoMobileApplication",function(){return{terminal:!0,link:function(e,t,n){o(e,t,n,"kendoMobileApplication","kendoMobileApplication")}}}).directive("kendoMobileView",function(){return{scope:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,n._instance=o(e,t,n,"kendoMobileView","kendoMobileView")},post:function(e,t,n){n._instance._layout(),n._instance._scroller()}}}}).directive("kendoMobileDrawer",function(){return{scope:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,n._instance=o(e,t,n,"kendoMobileDrawer","kendoMobileDrawer")},post:function(e,t,n){n._instance._layout(),n._instance._scroller()}}}}).directive("kendoMobileModalView",function(){return{scope:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,n._instance=o(e,t,n,"kendoMobileModalView","kendoMobileModalView")},post:function(e,t,n){n._instance._layout(),n._instance._scroller()}}}}).directive("kendoMobileSplitView",function(){return{terminal:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,n._instance=o(e,t,n,"kendoMobileSplitView","kendoMobileSplitView")},post:function(e,t,n){n._instance._layout()}}}}).directive("kendoMobilePane",function(){return{terminal:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,o(e,t,n,"kendoMobilePane","kendoMobilePane")}}}}).directive("kendoMobileLayout",function(){return{link:{pre:function(e,t,n){o(e,t,n,"kendoMobileLayout","kendoMobileLayout")}}}}).directive("kendoMobileActionSheet",function(){return{restrict:"A",link:function(t,n,i){n.find("a[k-action]").each(function(){e(this).attr("data-"+kendo.ns+"action",e(this).attr("k-action"))}),o(t,n,i,"kendoMobileActionSheet","kendoMobileActionSheet")}}}).directive("kendoMobilePopOver",function(){return{terminal:!0,link:{pre:function(e,t,n){n.defaultOptions=e.viewOptions,o(e,t,n,"kendoMobilePopOver","kendoMobilePopOver")}}}}).directive("kendoViewTitle",function(){return{restrict:"E",replace:!0,template:function(e){return"<span data-"+kendo.ns+"role='view-title'>"+e.html()+"</span>"}}}).directive("kendoMobileHeader",function(){return{restrict:"E",link:function(e,t){t.addClass("km-header").attr("data-role","header")}}}).directive("kendoMobileFooter",function(){return{restrict:"E",link:function(e,t){t.addClass("km-footer").attr("data-role","footer")}}}).directive("kendoMobileScrollViewPage",function(){return{restrict:"E",replace:!0,template:function(e){return"<div data-"+kendo.ns+"role='page'>"+e.html()+"</div>"}}}),t.forEach(["align","icon","rel","transition","actionsheetContext"],function(e){var t="k"+e.slice(0,1).toUpperCase()+e.slice(1);x.directive(t,function(){return{restrict:"A",priority:2,link:function(n,i,o){i.attr(kendo.attr(kendo.toHyphens(e)),n.$eval(o[t]))}}})}),U={TreeMap:["Template"],MobileListView:["HeaderTemplate","Template"],MobileScrollView:["EmptyTemplate","Template"],Grid:["AltRowTemplate","DetailTemplate","RowTemplate"],ListView:["EditTemplate","Template","AltTemplate"],Pager:["SelectTemplate","LinkTemplate"],PivotGrid:["ColumnHeaderTemplate","DataCellTemplate","RowHeaderTemplate"],Scheduler:["AllDayEventTemplate","DateHeaderTemplate","EventTemplate","MajorTimeHeaderTemplate","MinorTimeHeaderTemplate"],ScrollView:["Template"],PanelBar:["Template"],TreeView:["Template"],Validator:["ErrorTemplate"]},function(){var e={};t.forEach(U,function(n,i){t.forEach(n,function(t){e[t]||(e[t]=[]),e[t].push("?^^kendo"+i)})}),t.forEach(e,function(e,t){var n="k"+t,i=kendo.toHyphens(n);x.directive(n,function(){return{restrict:"A",require:e,terminal:!0,compile:function(t,o){if(""===o[n]){t.removeAttr(i);var r=t[0].outerHTML;return function(t,o,a,s){for(var l;!l&&s.length;)l=s.shift();l?(l.template(n,r),o.remove()):A.warn(i+" without a matching parent widget found. It can be one of the following: "+e.join(", "))}}}}})})}())}(window.kendo.jQuery,window.angular),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.web.min",["kendo.core.min","kendo.router.min","kendo.view.min","kendo.fx.min","kendo.dom.min","kendo.data.odata.min","kendo.data.xml.min","kendo.data.min","kendo.ooxml.min","kendo.excel.min","kendo.data.signalr.min","kendo.binder.min","kendo.drawing.min","kendo.validator.min","kendo.userevents.min","kendo.draganddrop.min","kendo.mobile.scroller.min","kendo.groupable.min","kendo.reorderable.min","kendo.resizable.min","kendo.sortable.min","kendo.selectable.min","kendo.chat.min","kendo.button.min","kendo.buttongroup.min","kendo.switch.min","kendo.pager.min","kendo.popup.min","kendo.notification.min","kendo.tooltip.min","kendo.list.min","kendo.calendar.min","kendo.datepicker.min","kendo.dateinput.min","kendo.drawer.min","kendo.multiviewcalendar.min","kendo.autocomplete.min","kendo.dropdownlist.min","kendo.dropdowntree.min","kendo.combobox.min","kendo.multiselect.min","kendo.multicolumncombobox.min","kendo.colorpicker.min","kendo.columnmenu.min","kendo.columnsorter.min","kendo.grid.min","kendo.listview.min","kendo.listbox.min","kendo.filebrowser.min","kendo.imagebrowser.min","kendo.editor.min","kendo.numerictextbox.min","kendo.maskedtextbox.min","kendo.mediaplayer.min","kendo.menu.min","kendo.editable.min","kendo.pivot.fieldmenu.min","kendo.filter.min","kendo.filtercell.min","kendo.panelbar.min","kendo.progressbar.min","kendo.responsivepanel.min","kendo.tabstrip.min","kendo.timepicker.min","kendo.toolbar.min","kendo.datetimepicker.min","kendo.daterangepicker.min","kendo.treeview.draganddrop.min","kendo.treeview.min","kendo.scrollview.min","kendo.slider.min","kendo.splitter.min","kendo.upload.min","kendo.dialog.min","kendo.window.min","kendo.virtuallist.min","kendo.scheduler.view.min","kendo.scheduler.dayview.min","kendo.scheduler.agendaview.min","kendo.scheduler.monthview.min","kendo.scheduler.recurrence.min","kendo.scheduler.min","kendo.gantt.list.min","kendo.gantt.timeline.min","kendo.gantt.min","kendo.timeline.min","kendo.treelist.min","kendo.pivotgrid.min","kendo.spreadsheet.min","kendo.pivot.configurator.min","kendo.ripple.min","kendo.pdfviewer.min","kendo.rating.min","kendo.angular.min"],e)}(function(){"bundle all";return window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/core/kendo-core.min",["kendo.core.min","kendo.drawing.min"],e)}(function(){!function(e){function t(e){return Array.isArray(e)}function n(e,n){var i,o,r=t(n)?n:[n];for(i=0;i<r.length;i++)o=r[i],e.className.indexOf(o)===-1&&(e.className+=" "+o)}function i(e,t){e&&e.className&&(e.className=e.className.replace(t,"").replace(_t," "))}function o(e){var t,n=.5;for(e.options.stroke&&kendo.drawing.util.defined(e.options.stroke.width)&&e.options.stroke.width%2===0&&(n=0),t=0;t<e.segments.length;t++)e.segments[t].anchor().round(0).translate(n,n);return e}function r(e,t){return-e.x*t.y+e.y*t.x<0}function a(e){return"number"==typeof e&&!isNaN(e)}function s(e){return typeof e===ct}function l(e){return a(e)||s(e)&&isFinite(e)}function c(e){return"object"==typeof e}function d(e){return a(e)?e+"px":e}function u(e){return bt.test(e)}function h(e,n){var i,o,r,a,l,h=s(n)?[n]:n;if(t(h)){for(i={},o=window.getComputedStyle(e),r=0;r<h.length;r++)a=h[r],i[a]=u(a)?parseFloat(o[a]):o[a];return i}if(c(n))for(l in n)e.style[l]=d(n[l])}function p(e,t){void 0===t&&(t=0);var n={top:0,right:0,bottom:0,left:0};return"number"==typeof e?n[dt]=n[st]=n[Le]=n[Je]=e:(n[dt]=e[dt]||t,n[st]=e[st]||t,n[Le]=e[Le]||t,n[Je]=e[Je]||t),n}function f(e){void 0===e&&(e={});var t;return e.template?e.template=t=Et.compile(e.template):Fe(e.content)&&(t=e.content),t}function g(e,t){var n,i=e.length,o=[];for(n=0;n<i;n++)t(e[n])&&o.push(e[n]);return o}function m(e,t){var n,i;if(e.className)for(n=t.split(" "),i=0;i<n.length;i++)if(e.className.indexOf(n[i])!==-1)return!0}function v(e,t){if(t)return t.indexOf(e)!==-1}function _(e,t,n){return kendo.drawing.util.round(e+(t-e)*n,Oe)}function b(e,t){var n,i,o=e.length,r=[];for(n=0;n<o;n++)i=t(e[n]),kendo.drawing.util.defined(i)&&r.push(i);return r}function w(e){var t=0;return e.wheelDelta&&(t=-e.wheelDelta/120,t=t>0?Math.ceil(t):Math.floor(t)),e.detail&&(t=kendo.drawing.util.round(e.detail/3)),t}function k(e,t){var n=e.prototype;n.options=n.options?Me({},n.options,t):t}function y(e){var t,n,i,o=Ze,r=et;for(t=0,n=e.length;t<n;t++)i=e[t],null!==i&&isFinite(i)&&(o=Math.min(o,i),r=Math.max(r,i));return{min:o===Ze?void 0:o,max:r===et?void 0:r}}function x(e,t){var n,i,o,r=$t(t-e,je-1);if(0===r){if(0===t)return.1;r=Math.abs(t)}return n=Math.pow(10,Math.floor(Math.log(r)/Math.log(10))),i=$t(r/n,je),o=1,o=i<1.904762?.2:i<4.761904?.5:i<9.523809?1:2,$t(n*o,je); +}function C(e,t,n,i,o){var r=Gt(o);return new Xt(n+(e-n)*Math.cos(r)+(t-i)*Math.sin(r),i-(e-n)*Math.sin(r)+(t-i)*Math.cos(r))}function S(e,t){return e-t}function T(e,t){var n,i,o,r,a,s,l,c,d;return e.x1===t.x1&&e.y1===t.y1&&e.x2===t.x2&&e.y2===t.y2?t:(n=Math.min(e.x1,t.x1),i=Math.max(e.x1,t.x1),o=Math.min(e.x2,t.x2),r=Math.max(e.x2,t.x2),a=Math.min(e.y1,t.y1),s=Math.max(e.y1,t.y1),l=Math.min(e.y2,t.y2),c=Math.max(e.y2,t.y2),d=[],d[0]=new Jt(i,a,o,s),d[1]=new Jt(n,s,i,l),d[2]=new Jt(o,s,r,l),d[3]=new Jt(i,l,o,c),e.x1===n&&e.y1===a||t.x1===n&&t.y1===a?(d[4]=new Jt(n,a,i,s),d[5]=new Jt(o,l,r,c)):(d[4]=new Jt(o,a,r,s),d[5]=new Jt(n,l,i,c)),g(d,function(e){return e.height()>0&&e.width()>0})[0])}function D(t){var n,i,o=t.stops,r=t.innerRadius/t.radius*100,a=o.length,s=[];for(n=0;n<a;n++)i=e.extend({},o[n]),i.offset=(i.offset*(100-r)+r)/100,s.push(i);return s}function A(e){var t=e.origin,n=e.bottomRight();return new Jt(t.x,t.y,n.x,n.y)}function E(e,t){var n=e.tickX,i=e.tickY,r=e.position,a=new ye({stroke:{width:t.width,color:t.color}});return e.vertical?a.moveTo(n,r).lineTo(n+t.size,r):a.moveTo(r,i).lineTo(r,i+t.size),o(a),a}function I(e,t){var n=e.lineStart,i=e.lineEnd,r=e.position,a=new ye({stroke:{width:t.width,color:t.color,dashType:t.dashType}});return e.vertical?a.moveTo(n,r).lineTo(i,r):a.moveTo(r,n).lineTo(r,i),o(a),a}function M(e,t){var n=e.getTime()-t,i=e.getTimezoneOffset()-t.getTimezoneOffset();return n-i*Fn}function F(e,t){return new Date(e.getTime()+t)}function R(e){var t;return e instanceof Date?t=e:e&&(t=new Date(e)),t}function P(e,t){var n,i;if(void 0===t&&(t=0),n=0,i=e.getDay(),!isNaN(i))for(;i!==t;)0===i?i=6:i--,n++;return F(e,-n*Pn)}function z(e,t){return 0===t&&23===e.getHours()&&(e.setHours(e.getHours()+2),!0)}function B(e,t){var n,i=new Date(e);return i.setMinutes(0,0,0),n=(e.getTimezoneOffset()-i.getTimezoneOffset())*Fn,F(i,n+t*Rn)}function L(e,t,n,i){var o,r,a=e;return e&&(o=R(e),r=o.getHours(),n===En?(a=new Date(o.getFullYear()+t,0,1),z(a,0)):n===An?(a=new Date(o.getFullYear(),o.getMonth()+t,1),z(a,r)):n===Dn?(a=L(P(o,i),7*t,Tn),z(a,r)):n===Tn?(a=new Date(o.getFullYear(),o.getMonth(),o.getDate()+t),z(a,r)):n===Sn?a=B(o,t):n===Cn?(a=F(o,t*Fn),a.getSeconds()>0&&a.setSeconds(0)):n===xn?a=F(o,t*Mn):n===yn&&(a=F(o,t)),n!==yn&&a.getMilliseconds()>0&&a.setMilliseconds(0)),a}function H(e,t,n){return L(R(e),0,t,n)}function N(e,t,n){var i=R(e);return i&&H(i,t,n).getTime()===i.getTime()?i:L(i,1,t,n)}function O(e,t){return e&&t?e.getTime()-t.getTime():-1}function V(e,t){return e.getTime()-t}function W(e){var n,i;if(t(e)){for(n=[],i=0;i<e.length;i++)n.push(W(e[i]));return n}if(e)return R(e).getTime()}function U(e,t){return e&&t?W(e)===W(t):e===t}function q(e,t,n){return M(e,t)/Hn[n]}function j(e,t,n,i){var o,r=R(e),a=R(t);return o=n===An?r.getMonth()-a.getMonth()+12*(r.getFullYear()-a.getFullYear())+q(r,new Date(r.getFullYear(),r.getMonth()),Tn)/new Date(r.getFullYear(),r.getMonth()+1,0).getDate():n===En?r.getFullYear()-a.getFullYear()+j(r,new Date(r.getFullYear(),0),An,1)/12:n===Tn||n===Dn?q(r,a,n):V(r,t)/Hn[n],o/i}function G(e,t,n){var i;return i=n===En?t.getFullYear()-e.getFullYear():n===An?12*G(e,t,En)+t.getMonth()-e.getMonth():n===Tn?Math.floor(V(t,e)/Pn):Math.floor(V(t,e)/Hn[n])}function $(e,t){for(var n,i,o=0,r=t.length-1;o<=r;)if(n=Math.floor((o+r)/2),i=t[n],i<e)o=n+1;else{if(!(i>e)){for(;U(t[n-1],e);)n--;return n}r=n-1}return t[n]<=e?n:n-1}function Y(e,t){var n;return n=s(t)?e.parseDate(t)||R(t):R(t)}function K(e,n){var i,o;if(t(n)){for(i=[],o=0;o<n.length;o++)i.push(Y(e,n[o]));return i}return Y(e,n)}function Q(e,t){var n,i;if(e instanceof Date){for(n=t.length,i=0;i<n;i++)if(U(t[i],e))return i;return-1}return t.indexOf(e)}function X(e){var t=e._range;return t||(t=e._range=y(e),t.min=R(t.min),t.max=R(t.max)),t}function J(e,t,n){for(var i,o,r,a=X(e.categories),s=(e.max||a.max)-(e.min||a.min),l=e.autoBaseUnitSteps,c=e.maxDateGroups,d=e.baseUnit===Gn,u=t?jn.indexOf(t):0,h=d?jn[u++]:e.baseUnit,p=s/Hn[h],f=p;!o||p>=c;){i=i||l[h].slice(0);do r=i.shift();while(r&&t===h&&r<n);if(r)o=r,p=f/o;else{if(h===Ut(jn)){o=Math.ceil(f/c);break}if(!d){p>c&&(o=Math.ceil(f/c));break}h=jn[u++]||Ut(jn),f=s/Hn[h],i=null}}e.baseUnitStep=o,e.baseUnit=h}function Z(e){var t,n,i,o,r,a=e.categories,s=Lt(a)?a.length:0,l=Ze;for(i=0;i<s;i++)o=a[i],o&&t&&(r=M(o,t),r>0&&(l=Math.min(l,r),n=l>=Ln?En:l>=Bn-3*Pn?An:l>=zn?Dn:l>=Pn?Tn:l>=Rn?Sn:l>=Fn?Cn:xn)),t=o;e.baseUnit=n||Tn}function ee(e){var t=(e.baseUnit||"").toLowerCase(),n=t!==Gn&&!v(t,jn);return n&&Z(e),t!==Gn&&e.baseUnitStep!==qn||J(e),e}function te(e,t,n){var i,o,r;if(!e&&!t)return 0;if(e>=0&&t>=0){if(o=e===t?0:e,r=(t-o)/t,n===!1||!n&&r>Un)return 0;i=Math.max(0,o-(t-o)/2)}else i=e;return i}function ne(e,t,n){var i,o,r;if(!e&&!t)return 1;if(e<=0&&t<=0){if(o=e===t?0:t,r=Math.abs((o-e)/o),n===!1||!n&&r>Un)return 0;i=Math.min(0,o-(e-o)/2)}else i=t;return i}function ie(e,t){return $t(Math.floor(e/t)*t,je)}function oe(e,t){return $t(Math.ceil(e/t)*t,je)}function re(e){return Math.max(Math.min(e,Vn),-Vn)}function ae(e,t,n){var i=n.narrowRange,o=te(e,t,i),r=ne(e,t,i),a=x(o,r),s={majorUnit:a};return n.roundToMajorUnit!==!1&&(o<0&&de(o,a,1/3)&&(o-=a),r>0&&de(r,a,1/3)&&(r+=a)),s.min=ie(o,a),s.max=oe(r,a),s}function se(e,t){return{min:Lt(t.min)?Math.min(e.min,t.min):e.min,max:Lt(t.max)?Math.max(e.max,t.max):e.max,majorUnit:e.majorUnit}}function le(e,t){var n,i;for(n=0;n<t.length;n++)i=t[n],null===e[i]&&(e[i]=void 0)}function ce(e,t){var n,i,o,r,a=t;return t&&(le(t,["min","max"]),n=Lt(t.min),i=Lt(t.max),o=n||i,o&&t.min===t.max&&(t.min>0?t.min=0:t.max=1),t.majorUnit?(e.min=ie(e.min,t.majorUnit),e.max=oe(e.max,t.majorUnit)):o&&(a=Me(e,t),e.majorUnit=x(a.min,a.max))),e.minorUnit=(a.majorUnit||e.majorUnit)/5,r=Me(e,a),r.min>=r.max&&(n&&!i?r.max=r.min+r.majorUnit:!n&&i&&(r.min=r.max-r.majorUnit)),r}function de(e,t,n){var i=$t(Math.abs(e%t),je),o=t*(1-n);return 0===i||i>o}function ue(e){var t=Sn;return e>=Ln?t=En:e>=Bn?t=An:e>=zn?t=Dn:e>=Pn&&(t=Tn),t}function he(e,t,n){var i=n.min||e,o=n.max||t,r=n.baseUnit||(o&&i?ue(M(o,i)):Sn),a=Hn[r],s=H(W(i)-1,r)||R(o),l=N(W(o)+1,r),c=n.majorUnit?n.majorUnit:void 0,d=c||oe(x(s.getTime(),l.getTime()),a)/a,u=G(s,l,r),h=oe(u,d),p=h-u,f=Math.floor(p/2),g=p-f;return n.baseUnit||delete n.baseUnit,n.baseUnit=n.baseUnit||r,n.min=n.min||L(s,-f,r),n.max=n.max||L(l,g,r),n.minorUnit=n.minorUnit||d/5,n.majorUnit=d,n}function pe(e,t,n,i){var o=n.min,r=n.max;return Lt(n.axisCrossingValue)&&n.axisCrossingValue<=0&&me(),Lt(i.max)?i.max<=0&&me():r=t,Lt(i.min)?i.min<=0&&me():o=e,{min:o,max:r}}function fe(e,t,n){var i=n.majorUnit,o=e;return e<=0?o=t<=1?Math.pow(i,-2):1:n.narrowRange||(o=Math.pow(i,Math.floor(ve(e,i)))),o}function ge(e,t){var n,i=$t(ve(e,t),je)%1;return n=e<=0?t:0!==i&&(i<.3||i>.9)?Math.pow(t,ve(e,t)+.2):Math.pow(t,Math.ceil(ve(e,t)))}function me(){throw Error("Non positive values cannot be used for a logarithmic axis")}function ve(e,t){return Math.log(e)/Math.log(t)}function _e(e,t){return 180-Math.abs(Math.abs(e-t)-180)}function be(e){return e<=0?-1:1}var we,ke,ye,xe,Ce,Se,Te,De,Ae,Ee,Ie,Me,Fe,Re,Pe,ze,Be,Le,He,Ne,Oe,Ve,We,Ue,qe,je,Ge,$e,Ye,Ke,Qe,Xe,Je,Ze,et,tt,nt,it,ot,rt,at,st,lt,ct,dt,ut,ht,pt,ft,gt,mt,vt,_t,bt,wt,kt,yt,xt,Ct,St,Tt,Dt,At,Et,It,Mt,Ft,Rt,Pt,zt,Bt,Lt,Ht,Nt,Ot,Vt,Wt,Ut,qt,jt,Gt,$t,Yt,Kt,Qt,Xt,Jt,Zt,en,tn,nn,on,rn,an,sn,ln,cn,dn,un,hn,pn,fn,gn,mn,vn,_n,bn,wn,kn,yn,xn,Cn,Sn,Tn,Dn,An,En,In,Mn,Fn,Rn,Pn,zn,Bn,Ln,Hn,Nn,On,Vn,Wn,Un,qn,jn,Gn,$n,Yn,Kn,Qn,Xn,Jn,Zn,ei,ti,ni,ii,oi,ri,ai,si,li,ci;window.kendo.dataviz=window.kendo.dataviz||{},we=kendo.drawing,ke=we.util,ye=we.Path,xe=we.Group,Ce=kendo.Class,Se=kendo.geometry,Te=Se.Rect,De=Se.Circle,Ae=Se.transform,Ee=Se.Segment,Ie=kendo.dataviz,Me=kendo.deepExtend,Fe=kendo.isFunction,Re=kendo.getter,Pe="arc",ze="axisLabelClick",Be="#000",Le="bottom",He="center",Ne="circle",Oe=3,Ve="cross",We="date",Ue="12px sans-serif",qe=400,je=10,Ge=600,$e="end",Ye=/\{\d+:?/,Ke="height",Qe=100,Xe="inside",Je="left",Ze=Number.MAX_VALUE,et=-Number.MAX_VALUE,tt="none",nt="noteClick",it="noteHover",ot="noteLeave",rt="object",at="outside",st="right",lt="start",ct="string",dt="top",ut="triangle",ht="value",pt="#fff",ft="width",gt="x",mt="y",vt={ARC:Pe,AXIS_LABEL_CLICK:ze,BLACK:Be,BOTTOM:Le,CENTER:He,CIRCLE:Ne,COORD_PRECISION:Oe,CROSS:Ve,DATE:We,DEFAULT_FONT:Ue,DEFAULT_HEIGHT:qe,DEFAULT_PRECISION:je,DEFAULT_WIDTH:Ge,END:$e,FORMAT_REGEX:Ye,HEIGHT:Ke,HIGHLIGHT_ZINDEX:Qe,INSIDE:Xe,LEFT:Je,MAX_VALUE:Ze,MIN_VALUE:et,NONE:tt,NOTE_CLICK:nt,NOTE_HOVER:it,NOTE_LEAVE:ot,OBJECT:rt,OUTSIDE:at,RIGHT:st,START:lt,STRING:ct,TOP:dt,TRIANGLE:ut,VALUE:ht,WHITE:pt,WIDTH:ft,X:gt,Y:mt},_t=/\s+/g,bt=/width|height|top|left|bottom|right/i,wt={format:function(e,t){return t},toString:function(e){return e},parseDate:function(e){return new Date(e)}},kt=wt,yt=Ce.extend({}),yt.register=function(e){kt=e},Object.defineProperties&&Object.defineProperties(yt,{implementation:{get:function(){return kt}}}),xt=/\{(\d+)(:[^\}]+)?\}/g,Ct=Ce.extend({init:function(e){this._intlService=e},auto:function(e){for(var t,n=[],i=arguments.length-1;i-- >0;)n[i]=arguments[i+1];return t=this.intl,s(e)&&e.match(Ye)?t.format.apply(t,[e].concat(n)):t.toString(n[0],e)},localeAuto:function(e,t,n){var i,o=this.intl;return i=s(e)&&e.match(Ye)?e.replace(xt,function(e,i,r){var a=t[parseInt(i,10)];return o.toString(a,r?r.substring(1):"",n)}):o.toString(t[0],e,n)}}),Object.defineProperties&&Object.defineProperties(Ct.fn,{intl:{get:function(){return this._intlService||yt.implementation},set:function(e){this._intlService=e}}}),St=Ce.extend({init:function(e,t){void 0===t&&(t={}),this._intlService=t.intlService,this.sender=t.sender||e,this.format=new Ct(t.intlService),this.chart=e,this.rtl=!!t.rtl},notify:function(e,t){this.chart&&this.chart.trigger(e,t)},isPannable:function(e){var t=((this.chart||{}).options||{}).pannable;return t&&t.lock!==e}}),Object.defineProperties&&Object.defineProperties(St.fn,{intl:{get:function(){return this._intlService||yt.implementation},set:function(e){this._intlService=e,this.format.intl=e}}}),Dt=Ce.extend({}),Dt.register=function(e){Tt=e},Dt.create=function(e,t){if(Tt)return Tt.create(e,t)},At={compile:function(e){return e}},Et=Ce.extend({}),Et.register=function(e){At=e},Et.compile=function(e){return At.compile(e)},It={ChartService:St,DomEventsBuilder:Dt,FormatService:Ct,IntlService:yt,TemplateService:Et},Mt=function(){this._map={}},Mt.prototype.get=function(e){return this._map[this._key(e)]},Mt.prototype.set=function(e,t){this._map[this._key(e)]=t},Mt.prototype._key=function(e){return e instanceof Date?e.getTime():e},Ft="trigger",Rt=Ce.extend({init:function(e,t){this.observer=e,this.handlerMap=Me({},this.handlerMap,t)},trigger:function(e,t){var n,i=this,o=i.observer,r=i.handlerMap;return r[e]?n=this.callObserver(r[e],t):o[Ft]&&(n=this.callObserver(Ft,e,t)),n},callObserver:function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];return this.observer[e].apply(this.observer,t)},requiresHandlers:function(e){var t,n=this;if(this.observer.requiresHandlers)return this.observer.requiresHandlers(e);for(t=0;t<e.length;t++)if(n.handlerMap[e[t]])return!0}}),Pt=kendo.drawing.util,zt=Pt.append,Bt=Pt.bindEvents,Lt=Pt.defined,Ht=Pt.deg,Nt=Pt.elementOffset,Ot=Pt.elementSize,Vt=Pt.eventElement,Wt=Pt.eventCoordinates,Ut=Pt.last,qt=Pt.limitValue,jt=Pt.objectKey,Gt=Pt.rad,$t=Pt.round,Yt=Pt.unbindEvents,Kt=Pt.valueOrDefault,Qt=Ce.extend({}),Qt.fetchFonts=function(e,t,n){void 0===n&&(n={depth:0});var i=5;!e||n.depth>i||!document.fonts||Object.keys(e).forEach(function(i){var o=e[i];"dataSource"!==i&&"$"!==i[0]&&o&&("font"===i?t.push(o):"object"==typeof o&&(n.depth++,Qt.fetchFonts(o,t,n),n.depth--))})},Qt.loadFonts=function(e,t){var n=[];if(e.length>0&&document.fonts){try{n=e.map(function(e){return document.fonts.load(e)})}catch(i){kendo.logToConsole(i)}Promise.all(n).then(t,t)}else t()},Qt.preloadFonts=function(e,t){var n=[];Qt.fetchFonts(e,n),Qt.loadFonts(n,t)},Xt=Ce.extend({init:function(e,t){this.x=e||0,this.y=t||0},clone:function(){return new Xt(this.x,this.y)},equals:function(e){return e&&this.x===e.x&&this.y===e.y},rotate:function(e,t){var n=Gt(t),i=Math.cos(n),o=Math.sin(n),r=e.x,a=e.y,s=this,l=s.x,c=s.y;return this.x=$t(r+(l-r)*i+(c-a)*o,Oe),this.y=$t(a+(c-a)*i-(l-r)*o,Oe),this},multiply:function(e){return this.x*=e,this.y*=e,this},distanceTo:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)}}),Xt.onCircle=function(e,t,n){var i=Gt(t);return new Xt(e.x-n*Math.cos(i),e.y-n*Math.sin(i))},Jt=Ce.extend({init:function(e,t,n,i){this.x1=e||0,this.y1=t||0,this.x2=n||0,this.y2=i||0},equals:function(e){return this.x1===e.x1&&this.x2===e.x2&&this.y1===e.y1&&this.y2===e.y2},width:function(){return this.x2-this.x1},height:function(){return this.y2-this.y1},translate:function(e,t){return this.x1+=e,this.x2+=e,this.y1+=t,this.y2+=t,this},move:function(e,t){var n=this.height(),i=this.width();return Lt(e)&&(this.x1=e,this.x2=this.x1+i),Lt(t)&&(this.y1=t,this.y2=this.y1+n),this},wrap:function(e){return this.x1=Math.min(this.x1,e.x1),this.y1=Math.min(this.y1,e.y1),this.x2=Math.max(this.x2,e.x2),this.y2=Math.max(this.y2,e.y2),this},wrapPoint:function(e){var n=t(e),i=n?e[0]:e.x,o=n?e[1]:e.y;return this.wrap(new Jt(i,o,i,o)),this},snapTo:function(e,t){return t!==gt&&t||(this.x1=e.x1,this.x2=e.x2),t!==mt&&t||(this.y1=e.y1,this.y2=e.y2),this},alignTo:function(e,t){var n,i,o=this.height(),r=this.width(),a=t===dt||t===Le?mt:gt,s=a===mt?o:r;return t===He?(n=e.center(),i=this.center(),this.x1+=n.x-i.x,this.y1+=n.y-i.y):this[a+1]=t===dt||t===Je?e[a+1]-s:e[a+2],this.x2=this.x1+r,this.y2=this.y1+o,this},shrink:function(e,t){return this.x2-=e,this.y2-=t,this},expand:function(e,t){return this.shrink(-e,-t),this},pad:function(e){var t=p(e);return this.x1-=t.left,this.x2+=t.right,this.y1-=t.top,this.y2+=t.bottom,this},unpad:function(e){var t=p(e);return t.left=-t.left,t.top=-t.top,t.right=-t.right,t.bottom=-t.bottom,this.pad(t)},clone:function(){return new Jt(this.x1,this.y1,this.x2,this.y2)},center:function(){return new Xt(this.x1+this.width()/2,this.y1+this.height()/2)},containsPoint:function(e){return e.x>=this.x1&&e.x<=this.x2&&e.y>=this.y1&&e.y<=this.y2},points:function(){return[new Xt(this.x1,this.y1),new Xt(this.x2,this.y1),new Xt(this.x2,this.y2),new Xt(this.x1,this.y2)]},getHash:function(){return[this.x1,this.y1,this.x2,this.y2].join(",")},overlaps:function(e){return!(e.y2<this.y1||this.y2<e.y1||e.x2<this.x1||this.x2<e.x1)},rotate:function(e){var t=this.width(),n=this.height(),i=this.center(),o=i.x,r=i.y,a=C(0,0,o,r,e),s=C(t,0,o,r,e),l=C(t,n,o,r,e),c=C(0,n,o,r,e);return t=Math.max(a.x,s.x,l.x,c.x)-Math.min(a.x,s.x,l.x,c.x),n=Math.max(a.y,s.y,l.y,c.y)-Math.min(a.y,s.y,l.y,c.y),this.x2=this.x1+t,this.y2=this.y1+n,this},toRect:function(){return new Te([this.x1,this.y1],[this.width(),this.height()])},hasSize:function(){return 0!==this.width()&&0!==this.height()},align:function(e,t,n){var i=t+1,o=t+2,r=t===gt?ft:Ke,a=this[r]();v(n,[Je,dt])?(this[i]=e[i],this[o]=this[i]+a):v(n,[st,Le])?(this[o]=e[o],this[i]=this[o]-a):n===He&&(this[i]=e[i]+(e[r]()-a)/2,this[o]=this[i]+a)}}),Zt=Ce.extend({init:function(e,t,n,i,o){this.center=e,this.innerRadius=t,this.radius=n,this.startAngle=i,this.angle=o},clone:function(){return new Zt(this.center,this.innerRadius,this.radius,this.startAngle,this.angle)},middle:function(){return this.startAngle+this.angle/2},setRadius:function(e,t){return t?this.innerRadius=e:this.radius=e,this},point:function(e,t){var n=Gt(e),i=Math.cos(n),o=Math.sin(n),r=t?this.innerRadius:this.radius,a=$t(this.center.x-i*r,Oe),s=$t(this.center.y-o*r,Oe);return new Xt(a,s)},adjacentBox:function(e,t,n){var i=this.clone().expand(e),o=i.middle(),r=i.point(o),a=t/2,s=n/2,l=Math.sin(Gt(o)),c=Math.cos(Gt(o)),d=r.x-a,u=r.y-s;return Math.abs(l)<.9&&(d+=a*-c/Math.abs(c)),Math.abs(c)<.9&&(u+=s*-l/Math.abs(l)),new Jt(d,u,d+t,u+n)},containsPoint:function(e){var t=this.center,n=this.innerRadius,i=this.radius,o=this.startAngle,a=this.startAngle+this.angle,s=e.x-t.x,l=e.y-t.y,c=new Xt(s,l),d=this.point(o),u=new Xt(d.x-t.x,d.y-t.y),h=this.point(a),p=new Xt(h.x-t.x,h.y-t.y),f=$t(s*s+l*l,Oe);return(u.equals(c)||r(u,c))&&!r(p,c)&&f>=n*n&&f<=i*i},getBBox:function(){var e,t,n,i=this,o=new Jt(Ze,Ze,et,et),r=$t(this.startAngle%360),a=$t((r+this.angle)%360),s=this.innerRadius,l=[0,90,180,270,r,a].sort(S),c=l.indexOf(r),d=l.indexOf(a);for(e=r===a?l:c<d?l.slice(c,d+1):[].concat(l.slice(0,d+1),l.slice(c,l.length)),t=0;t<e.length;t++)n=i.point(e[t]),o.wrapPoint(n),o.wrapPoint(n,s);return s||o.wrapPoint(this.center),o},expand:function(e){return this.radius+=e,this}}),en=Zt.extend({init:function(e,t,n,i){Zt.fn.init.call(this,e,0,t,n,i)},expand:function(e){return Zt.fn.expand.call(this,e)},clone:function(){return new en(this.center,this.radius,this.startAngle,this.angle)},setRadius:function(e){return this.radius=e,this}}),tn=.001,nn=Ce.extend({createRing:function(e,t){var n,i,o,r,a,s,l=e.startAngle+180,c=e.angle+l;return e.angle>0&&l===c&&(c+=tn),n=new Se.Point(e.center.x,e.center.y),i=Math.max(e.radius,0),o=Math.max(e.innerRadius,0),r=new Se.Arc(n,{startAngle:l,endAngle:c,radiusX:i,radiusY:i}),a=ye.fromArc(r,t).close(),o?(r.radiusX=r.radiusY=o,s=r.pointAt(c),a.lineTo(s.x,s.y),a.arc(c,l,o,o,!0)):a.lineTo(n.x,n.y),a}}),nn.current=new nn,on=Ce.extend({init:function(e){this.children=[],this.options=Me({},this.options,this.initUserOptions(e))},initUserOptions:function(e){return e},reflow:function(e){var t,n,i,o=this.children;for(n=0;n<o.length;n++)i=o[n],i.reflow(e),t=t?t.wrap(i.box):i.box.clone();this.box=t||e},destroy:function(){var e,t=this.children;for(this.animation&&this.animation.destroy(),e=0;e<t.length;e++)t[e].destroy()},getRoot:function(){var e=this.parent;return e?e.getRoot():null},getSender:function(){var e=this.getService();if(e)return e.sender},getService:function(){for(var e=this;e;){if(e.chartService)return e.chartService;e=e.parent}},translateChildren:function(e,t){var n,i=this.children,o=i.length;for(n=0;n<o;n++)i[n].box.translate(e,t)},append:function(){var e,t,n=arguments,i=this;for(e=0;e<arguments.length;e++)t=n[e],i.children.push(t),t.parent=i},renderVisual:function(){this.options.visible!==!1&&(this.createVisual(),this.addVisual(),this.renderChildren(),this.createAnimation(),this.renderComplete())},addVisual:function(){this.visual&&(this.visual.chartElement=this,this.parent&&this.parent.appendVisual(this.visual))},renderChildren:function(){var e,t=this.children,n=t.length;for(e=0;e<n;e++)t[e].renderVisual()},createVisual:function(){this.visual=new xe({zIndex:this.options.zIndex,visible:Kt(this.options.visible,!0)})},createAnimation:function(){this.visual&&this.options.animation&&(this.animation=we.Animation.create(this.visual,this.options.animation))},appendVisual:function(e){e.chartElement||(e.chartElement=this),e.options.noclip?this.clipRoot().visual.append(e):Lt(e.options.zIndex)?this.stackRoot().stackVisual(e):this.isStackRoot?this.stackVisual(e):this.visual?this.visual.append(e):this.parent.appendVisual(e)},clipRoot:function(){return this.parent?this.parent.clipRoot():this},stackRoot:function(){return this.parent?this.parent.stackRoot():this},stackVisual:function(e){var t,n,i,o=e.options.zIndex||0,r=this.visual.children,a=r.length;for(t=0;t<a&&(n=r[t],i=Kt(n.options.zIndex,0),!(i>o));t++);this.visual.insert(t,e)},traverse:function(e){var t,n,i=this.children,o=i.length;for(t=0;t<o;t++)n=i[t],e(n),n.traverse&&n.traverse(e)},closest:function(e){for(var t=this,n=!1;t&&!n;)n=e(t),n||(t=t.parent);if(n)return t},renderComplete:function(){},hasHighlight:function(){var e=(this.options||{}).highlight;return!(!this.createHighlight||e&&e.visible===!1)},toggleHighlight:function(t){var n,i=this,o=(this.options||{}).highlight||{},r=o.visual,a=this._highlight;if(!a){if(n={fill:{color:pt,opacity:.2},stroke:{color:pt,width:1,opacity:.2}},r){if(a=this._highlight=r(e.extend(this.highlightVisualArgs(),{createVisual:function(){return i.createHighlight(n)},sender:this.getSender(),series:this.series,dataItem:this.dataItem,category:this.category,value:this.value,percentage:this.percentage,runningTotal:this.runningTotal,total:this.total})),!a)return}else a=this._highlight=this.createHighlight(n);Lt(a.options.zIndex)||(a.options.zIndex=Kt(o.zIndex,this.options.zIndex)),this.appendVisual(a)}a.visible(t)},createGradientOverlay:function(t,n,i){var o=new ye(e.extend({stroke:{color:"none"},fill:this.createGradient(i),closed:t.options.closed},n));return o.segments.elements(t.segments.elements()),o},createGradient:function(e){if(this.parent)return this.parent.createGradient(e)}}),on.prototype.options={},rn=on.extend({init:function(e){on.fn.init.call(this,e),this.options.margin=p(this.options.margin),this.options.padding=p(this.options.padding)},reflow:function(e){var t,n,i,o,r=this,a=this.options,s=a.width,l=a.height,c=a.shrinkToFit,d=s&&l,u=a.margin,h=a.padding,p=a.border.width,f=function(){r.align(e,gt,a.align),r.align(e,mt,a.vAlign),r.paddingBox=t.clone().unpad(u).unpad(p)},g=e.clone();for(d&&(g.x2=g.x1+s,g.y2=g.y1+l),c&&g.unpad(u).unpad(p).unpad(h),on.fn.reflow.call(this,g),t=d?this.box=new Jt(0,0,s,l):this.box,c&&d?(f(),g=this.contentBox=this.paddingBox.clone().unpad(h)):(g=this.contentBox=t.clone(),t.pad(h).pad(p).pad(u),f()),this.translateChildren(t.x1-g.x1+u.left+p+h.left,t.y1-g.y1+u.top+p+h.top),n=this.children,i=0;i<n.length;i++)o=n[i],o.reflow(o.box)},align:function(e,t,n){this.box.align(e,t,n)},hasBox:function(){var e=this.options;return e.border.width||e.background},createVisual:function(){on.fn.createVisual.call(this);var e=this.options;e.visible&&this.hasBox()&&this.visual.append(ye.fromRect(this.paddingBox.toRect(),this.visualStyle()))},visualStyle:function(){var e=this.options,t=e.border||{};return{stroke:{width:t.width,color:t.color,opacity:Kt(t.opacity,e.opacity),dashType:t.dashType},fill:{color:e.background,opacity:e.opacity},cursor:e.cursor}}}),k(rn,{align:Je,vAlign:dt,margin:{},padding:{},border:{color:Be,width:0},background:"",shrinkToFit:!1,width:0,height:0,visible:!0}),an=rn.extend({init:function(e,t){rn.fn.init.call(this,e),this.pointData=t},getElement:function(){var e,t,n=this,i=n.options,o=n.paddingBox,r=i.type,a=i.rotation,s=o.center(),l=o.width()/2;return i.visible&&this.hasBox()?(e=this.visualStyle(),r===Ne?t=new we.Circle(new De([$t(o.x1+l,Oe),$t(o.y1+o.height()/2,Oe)],l),e):r===ut?t=ye.fromPoints([[o.x1+l,o.y1],[o.x1,o.y2],[o.x2,o.y2]],e).close():r===Ve?(t=new we.MultiPath(e),t.moveTo(o.x1,o.y1).lineTo(o.x2,o.y2),t.moveTo(o.x1,o.y2).lineTo(o.x2,o.y1)):t=ye.fromRect(o.toRect(),e),a&&t.transform(Ae().rotate(-a,[s.x,s.y])),t.options.zIndex=i.zIndex,t):null},createElement:function(){var e,t=this,n=this.options.visual,i=this.pointData||{};return e=n?n({value:i.value,dataItem:i.dataItem,sender:this.getSender(),series:i.series,category:i.category,rect:this.paddingBox.toRect(),options:this.visualOptions(),createVisual:function(){return t.getElement()}}):this.getElement()},visualOptions:function(){var e=this.options;return{background:e.background,border:e.border,margin:e.margin,padding:e.padding,type:e.type,size:e.width,visible:e.visible}},createVisual:function(){this.visual=this.createElement()}}),k(an,{type:Ne,align:He,vAlign:He}),sn="linear",ln="radial",cn={glass:{type:sn,rotation:0,stops:[{offset:0,color:pt,opacity:0},{offset:.25,color:pt,opacity:.3},{offset:1,color:pt,opacity:0}]},sharpBevel:{type:ln,stops:[{offset:0,color:pt,opacity:.55},{offset:.65,color:pt,opacity:0},{offset:.95,color:pt,opacity:.25}]},roundedBevel:{type:ln,stops:[{offset:.33,color:pt,opacity:.06},{offset:.83,color:pt,opacity:.2},{offset:.95,color:pt,opacity:0}]},roundedGlass:{type:ln,supportVML:!1,stops:[{offset:0,color:pt,opacity:0},{offset:.5,color:pt,opacity:.3},{offset:.99,color:pt,opacity:0}]},sharpGlass:{type:ln,supportVML:!1,stops:[{offset:0,color:pt,opacity:.2},{offset:.15,color:pt,opacity:.15},{offset:.17,color:pt,opacity:.35},{offset:.85,color:pt,opacity:.05},{offset:.87,color:pt,opacity:.15},{offset:.99,color:pt,opacity:0}]},bubbleShadow:{type:ln,center:[.5,.5],radius:.5}},dn=on.extend({init:function(e){on.fn.init.call(this,e);var t=this.options;t.width=parseInt(t.width,10),t.height=parseInt(t.height,10),this.gradients={}},reflow:function(){var e,t=this,n=t.options,i=t.children,o=new Jt(0,0,n.width,n.height);for(this.box=o.unpad(n.margin),e=0;e<i.length;e++)i[e].reflow(o),o=T(o,i[e].box)||new Jt},createVisual:function(){this.visual=new xe,this.createBackground()},createBackground:function(){var e=this.options,t=e.border||{},n=this.box.clone().pad(e.margin).unpad(t.width),i=ye.fromRect(n.toRect(),{stroke:{color:t.width?t.color:"",width:t.width,dashType:t.dashType},fill:{color:e.background,opacity:e.opacity},zIndex:-10});this.visual.append(i)},getRoot:function(){return this},createGradient:function(t){var n,i,o=this.gradients,r=jt(t),a=cn[t.gradient];return o[r]?n=o[r]:(i=e.extend({},a,t),"linear"===a.type?n=new we.LinearGradient(i):(t.innerRadius&&(i.stops=D(i)),n=new we.RadialGradient(i),n.supportVML=a.supportVML!==!1),o[r]=n),n},cleanGradients:function(){var e,t=this.gradients;for(e in t)t[e]._observers=[]},size:function(){var e=this.options;return new Jt(0,0,e.width,e.height)}}),k(dn,{width:Ge,height:qe,background:pt,border:{color:Be,width:0},margin:p(5),zIndex:-2}),un=on.extend({init:function(e){on.fn.init.call(this,e),this._initDirection()},_initDirection:function(){var e=this.options;e.vertical?(this.groupAxis=gt,this.elementAxis=mt,this.groupSizeField=ft,this.elementSizeField=Ke,this.groupSpacing=e.spacing,this.elementSpacing=e.vSpacing):(this.groupAxis=mt,this.elementAxis=gt,this.groupSizeField=Ke,this.elementSizeField=ft,this.groupSpacing=e.vSpacing,this.elementSpacing=e.spacing)},reflow:function(e){this.box=e.clone(),this.reflowChildren()},reflowChildren:function(){var e,t,n,i,o,r,a,s,l,c,d,u=this,h=this,p=h.box,f=h.elementAxis,g=h.groupAxis,m=h.elementSizeField,v=h.groupSizeField,_=this.groupOptions(),b=_.groups,w=_.groupsSize,k=_.maxGroupElementsSize,y=b.length,x=p[g+1]+this.alignStart(w,p[v]());if(y){for(e=x,t=0;t<y;t++){for(n=b[t],i=n.groupElements,o=p[f+1],r=i.length,a=0;a<r;a++)s=i[a],l=u.elementSize(s),c=e+u.alignStart(l[v],n.groupSize),d=new Jt,d[g+1]=c,d[g+2]=c+l[v],d[f+1]=o,d[f+2]=o+l[m],s.reflow(d),o+=l[m]+u.elementSpacing;e+=n.groupSize+u.groupSpacing}p[g+1]=x,p[g+2]=x+w,p[f+2]=p[f+1]+k}},alignStart:function(e,t){var n=0,i=this.options.align;return i===st||i===Le?n=t-e:i===He&&(n=(t-e)/2),n},groupOptions:function(){var e,t,n,i=this,o=this,r=o.box,a=o.children,s=o.elementSizeField,l=o.groupSizeField,c=o.elementSpacing,d=o.groupSpacing,u=$t(r[s]()),h=a.length,p=[],f=0,g=0,m=0,v=0,_=[];for(e=0;e<h;e++)t=a[e],t.box||t.reflow(r),n=i.elementSize(t),i.options.wrap&&$t(g+c+n[s])>u&&(p.push({groupElements:_,groupSize:f,groupElementsSize:g}),v=Math.max(v,g),m+=d+f,f=0,g=0,_=[]),f=Math.max(f,n[l]),g>0&&(g+=c),g+=n[s],_.push(t);return p.push({groupElements:_,groupSize:f,groupElementsSize:g}),v=Math.max(v,g),m+=f,{groups:p,groupsSize:m,maxGroupElementsSize:v}},elementSize:function(e){return{width:e.box.width(),height:e.box.height()}},createVisual:function(){}}),k(un,{vertical:!0,wrap:!0,vSpacing:0,spacing:0}),hn=we.Text,pn=on.extend({init:function(e,t){on.fn.init.call(this,t),this.content=e,this.reflow(new Jt)},reflow:function(e){var t=this.options,n=t.size=ke.measureText(this.content,{font:t.font});this.baseline=n.baseline,this.box=new Jt(e.x1,e.y1,e.x1+n.width,e.y1+n.height)},createVisual:function(){var e=this.options,t=e.font,n=e.color,i=e.opacity,o=e.cursor;this.visual=new hn(this.content,this.box.toRect().topLeft(),{font:t,fill:{color:n,opacity:i},cursor:o})}}),k(pn,{font:Ue,color:Be}),fn=/\n/m,gn=rn.extend({init:function(e,t,n){rn.fn.init.call(this,t),this.content=e,this.data=n,this._initContainer(),this.options._autoReflow!==!1&&this.reflow(new Jt)},_initContainer:function(){var e,t,n=this.options,i=(this.content+"").split(fn),o=new un({vertical:!0,align:n.align,wrap:!1}),r=Me({},n,{opacity:1,animation:null});for(this.container=o,this.append(o),e=0;e<i.length;e++)t=new pn(i[e].trim(),r),o.append(t)},reflow:function(e){var t,n,i,o,r=this.options,a=r.visual;this.container.options.align=r.align,a&&!this._boxReflow?(t=e,t.hasSize()||(this._boxReflow=!0,this.reflow(t),this._boxReflow=!1,t=this.box),n=this.visual=a(this.visualContext(t)),n&&(t=A(n.clippedBBox()||new Te),n.options.zIndex=r.zIndex),this.box=this.contentBox=this.paddingBox=t):(rn.fn.reflow.call(this,e),r.rotation&&(i=p(r.margin),o=this.box.unpad(i),this.targetBox=e,this.normalBox=o.clone(),o=this.rotate(),o.translate(i.left-i.right,i.top-i.bottom),this.rotatedBox=o.clone(),o.pad(i)))},createVisual:function(){var e,t=this.options;this.visual=new xe({transform:this.rotationTransform(),zIndex:t.zIndex,noclip:t.noclip}),this.hasBox()&&(e=ye.fromRect(this.paddingBox.toRect(),this.visualStyle()),this.visual.append(e))},renderVisual:function(){if(this.options.visible)if(this.options.visual){var e=this.visual;e&&!Lt(e.options.noclip)&&(e.options.noclip=this.options.noclip),this.addVisual(),this.createAnimation()}else rn.fn.renderVisual.call(this)},visualContext:function(t){var n=this,i={text:this.content,rect:t.toRect(),sender:this.getSender(),options:this.options,createVisual:function(){return n._boxReflow=!0,n.reflow(t),n._boxReflow=!1,n.getDefaultVisual()}};return this.data&&e.extend(i,this.data),i},getDefaultVisual:function(){this.createVisual(),this.renderChildren();var e=this.visual;return delete this.visual,e},rotate:function(){var e=this.options;return this.box.rotate(e.rotation),this.align(this.targetBox,gt,e.align),this.align(this.targetBox,mt,e.vAlign),this.box},rotationTransform:function(){var e,t,n,i,o=this.options.rotation;return o?(e=this.normalBox.center(),t=e.x,n=e.y,i=this.rotatedBox.center(),Ae().translate(i.x-t,i.y-n).rotate(o,[t,n])):null}}),mn=on.extend({init:function(t){on.fn.init.call(this,t),this.append(new gn(this.options.text,e.extend({},this.options,{vAlign:this.options.position})))},reflow:function(e){on.fn.reflow.call(this,e),this.box.snapTo(e,gt)}}),mn.buildTitle=function(t,n,i){var o,r=t;return"string"==typeof t&&(r={text:t}),r=e.extend({visible:!0},i,r),r&&r.visible&&r.text&&(o=new mn(r),n.append(o)),o},k(mn,{color:Be,position:dt,align:He,margin:p(5),padding:p(5)}),vn=gn.extend({init:function(e,t,n,i,o){gn.fn.init.call(this,t,o),this.text=t,this.value=e,this.index=n,this.dataItem=i,this.reflow(new Jt)},visualContext:function(e){var t=gn.fn.visualContext.call(this,e);return t.value=this.value,t.dataItem=this.dataItem,t.format=this.options.format,t.culture=this.options.culture,t},click:function(e,t){e.trigger(ze,{element:Vt(t),value:this.value,text:this.text,index:this.index,dataItem:this.dataItem,axis:this.parent.options})},rotate:function(){var e,t;return this.options.alignRotation!==He?(e=this.normalBox.toRect(),t=this.rotationTransform(),this.box=A(e.bbox(t.matrix()))):gn.fn.rotate.call(this),this.box},rotationTransform:function(){var e,t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_=this.options,b=_.rotation;return b?_.alignRotation===He?gn.fn.rotationTransform.call(this):(e=Ae().rotate(b).matrix(),t=this.normalBox.toRect(),n=this.targetBox.toRect(),i=_.rotationOrigin||dt,o=i===dt||i===Le?gt:mt,r=i===dt||i===Le?mt:gt,a=i===dt||i===Je?n.origin:n.bottomRight(),s=t.topLeft().transformCopy(e),l=t.topRight().transformCopy(e),c=t.bottomRight().transformCopy(e),d=t.bottomLeft().transformCopy(e),u=Te.fromPoints(s,l,c,d),h={},h[r]=n.origin[r]-u.origin[r],p=Math.abs(s[r]+h[r]-a[r]),f=Math.abs(l[r]+h[r]-a[r]),$t(p,je)===$t(f,je)?(g=s,m=l):f<p?(g=l,m=c):(g=s,m=d),v=g[o]+(m[o]-g[o])/2,h[o]=n.center()[o]-v,Ae().translate(h.x,h.y).rotate(b)):null}}),k(vn,{_autoReflow:!1}),_n=7,bn="#fff",wn=rn.extend({init:function(e,t,n){rn.fn.init.call(this,t),this.fields=e,this.chartService=n,this.render()},hide:function(){this.options.visible=!1},show:function(){this.options.visible=!0},render:function(){var e,t,n,i,o,r,a,s,l,c,d=this,u=this.options;u.visible&&(e=u.label,t=u.icon,n=new Jt,i=function(){return d},o=t.size, +r=this.fields.text,Lt(e)&&e.visible&&(l=f(e),l?r=l(this.fields):e.format&&(r=this.chartService.format.auto(e.format,r)),e.color||(e.color=e.position===Xe?bn:t.background),this.label=new gn(r,Me({},e)),this.label.aliasFor=i,e.position!==Xe||Lt(o)||(t.type===Ne?o=Math.max(this.label.box.width(),this.label.box.height()):(a=this.label.box.width(),s=this.label.box.height()),n.wrap(this.label.box))),t.width=a||o||_n,t.height=s||o||_n,c=new an(Me({},t)),c.aliasFor=i,this.marker=c,this.append(c),this.label&&this.append(this.label),c.reflow(new Jt),this.wrapperBox=n.wrap(c.box))},reflow:function(e){var t,n,i,o=this,r=o.options,a=o.label,s=o.marker,l=o.wrapperBox,c=e.center(),d=r.line.length,u=r.position;r.visible&&(v(u,[Je,st])?u===Je?(i=l.alignTo(e,u).translate(-d,e.center().y-l.center().y),r.line.visible&&(t=[e.x1,c.y],this.linePoints=[t,[i.x2,c.y]],n=i.clone().wrapPoint(t))):(i=l.alignTo(e,u).translate(d,e.center().y-l.center().y),r.line.visible&&(t=[e.x2,c.y],this.linePoints=[t,[i.x1,c.y]],n=i.clone().wrapPoint(t))):u===Le?(i=l.alignTo(e,u).translate(e.center().x-l.center().x,d),r.line.visible&&(t=[c.x,e.y2],this.linePoints=[t,[c.x,i.y1]],n=i.clone().wrapPoint(t))):(i=l.alignTo(e,u).translate(e.center().x-l.center().x,-d),r.line.visible&&(t=[c.x,e.y1],this.linePoints=[t,[c.x,i.y2]],n=i.clone().wrapPoint(t))),s&&s.reflow(i),a&&(a.reflow(i),s&&(r.label.position===at&&a.box.alignTo(s.box,u),a.reflow(a.box))),this.contentBox=i,this.targetBox=e,this.box=n||i)},createVisual:function(){rn.fn.createVisual.call(this),this.visual.options.noclip=this.options.noclip,this.options.visible&&this.createLine()},renderVisual:function(){var t=this,n=this.options,i=n.visual;n.visible&&i?(this.visual=i(e.extend(this.fields,{sender:this.getSender(),rect:this.targetBox.toRect(),options:{background:n.background,border:n.background,icon:n.icon,label:n.label,line:n.line,position:n.position,visible:n.visible},createVisual:function(){t.createVisual(),t.renderChildren();var e=t.visual;return delete t.visual,e}})),this.addVisual()):rn.fn.renderVisual.call(this)},createLine:function(){var e,t=this.options.line;this.linePoints&&(e=ye.fromPoints(this.linePoints,{stroke:{color:t.color,width:t.width,dashType:t.dashType}}),o(e),this.visual.append(e))},click:function(e,t){var n=this.eventArgs(t);e.trigger(nt,n)||t.preventDefault()},over:function(e,t){var n=this.eventArgs(t);e.trigger(it,n)||t.preventDefault()},out:function(e,t){var n=this.eventArgs(t);e.trigger(ot,n)},eventArgs:function(t){var n=this.options;return e.extend(this.fields,{element:Vt(t),text:Lt(n.label)?n.label.text:"",visual:this.visual})}}),k(wn,{icon:{visible:!0,type:Ne},label:{position:Xe,visible:!0,align:He,vAlign:He},line:{visible:!0},visible:!0,position:dt,zIndex:2}),kn=on.extend({init:function(e,t){void 0===t&&(t=new St),on.fn.init.call(this,e),this.chartService=t,this.options.visible||(this.options=Me({},this.options,{labels:{visible:!1},line:{visible:!1},margin:0,majorTickSize:0,minorTickSize:0})),this.options.minorTicks=Me({},{color:this.options.line.color,width:this.options.line.width,visible:this.options.minorTickType!==tt},this.options.minorTicks,{size:this.options.minorTickSize,align:this.options.minorTickType}),this.options.majorTicks=Me({},{color:this.options.line.color,width:this.options.line.width,visible:this.options.majorTickType!==tt},this.options.majorTicks,{size:this.options.majorTickSize,align:this.options.majorTickType}),this.initFields(),this.options._deferLabels||this.createLabels(),this.createTitle(),this.createNotes()},initFields:function(){},labelsRange:function(){return{min:this.options.labels.skip,max:this.labelsCount()}},createLabels:function(){var e,t,n,i,o=this,r=this.options,a=r.vertical?st:He,s=Me({},r.labels,{align:a,zIndex:r.zIndex}),l=Math.max(1,s.step);if(this.clearLabels(),s.visible)for(e=this.labelsRange(),t=s.rotation,c(t)&&(s.alignRotation=t.align,s.rotation=t.angle),"auto"===s.rotation&&(s.rotation=0,r.autoRotateLabels=!0),n=e.min;n<e.max;n+=l)i=o.createAxisLabel(n,s),i&&(o.append(i),o.labels.push(i))},clearLabels:function(){this.children=g(this.children,function(e){return!(e instanceof vn)}),this.labels=[]},clearTitle:function(){var e=this;this.title&&(this.children=g(this.children,function(t){return t!==e.title}),this.title=void 0)},clear:function(){this.clearLabels(),this.clearTitle()},lineBox:function(){var e=this,t=e.options,n=e.box,i=t.vertical,o=t.labels.mirror,r=o?n.x1:n.x2,a=o?n.y2:n.y1,s=t.line.width||0;return i?new Jt(r,n.y1,r,n.y2-s):new Jt(n.x1,a,n.x2-s,a)},createTitle:function(){var e,t=this.options,n=Me({rotation:t.vertical?-90:0,text:"",zIndex:1,visualSize:!0},t.title);n.visible&&n.text&&(e=new gn(n.text,n),this.append(e),this.title=e)},createNotes:function(){var e,t,n,i=this,o=this.options,r=o.notes,a=r.data||[];for(this.notes=[],e=0;e<a.length;e++)t=Me({},r,a[e]),t.value=i.parseNoteValue(t.value),n=new wn({value:t.value,text:t.label.text,dataItem:t},t,i.chartService),n.options.visible&&(Lt(n.options.position)?o.vertical&&!v(n.options.position,[Je,st])?n.options.position=o.reverse?Je:st:o.vertical||v(n.options.position,[dt,Le])||(n.options.position=o.reverse?Le:dt):n.options.position=o.vertical?o.reverse?Je:st:o.reverse?Le:dt,i.append(n),i.notes.push(n))},parseNoteValue:function(e){return e},renderVisual:function(){on.fn.renderVisual.call(this),this.createPlotBands()},createVisual:function(){on.fn.createVisual.call(this),this.createBackground(),this.createLine()},gridLinesVisual:function(){var e=this._gridLines;return e||(e=this._gridLines=new xe({zIndex:-2}),this.appendVisual(this._gridLines)),e},createTicks:function(e){function t(t,n,r){var s,l=t.length,c=Math.max(1,n.step);if(n.visible)for(s=n.skip;s<l;s+=c)Lt(r)&&s%r===0||(a.tickX=o?i.x2:i.x2-n.size,a.tickY=o?i.y1-n.size:i.y1,a.position=t[s],e.append(E(a,n)))}var n=this.options,i=this.lineBox(),o=n.labels.mirror,r=n.majorTicks.visible?n.majorUnit:0,a={vertical:n.vertical};t(this.getMajorTickPositions(),n.majorTicks),t(this.getMinorTickPositions(),n.minorTicks,r/n.minorUnit)},createLine:function(){var e,t,n=this.options,i=n.line,r=this.lineBox();i.width>0&&i.visible&&(e=new ye({stroke:{width:i.width,color:i.color,dashType:i.dashType}}),e.moveTo(r.x1,r.y1).lineTo(r.x2,r.y2),n._alignLines&&o(e),t=this._lineGroup=new xe,t.append(e),this.visual.append(t),this.createTicks(t))},getActualTickSize:function(){var e=this.options,t=0;return e.majorTicks.visible&&e.minorTicks.visible?t=Math.max(e.majorTicks.size,e.minorTicks.size):e.majorTicks.visible?t=e.majorTicks.size:e.minorTicks.visible&&(t=e.minorTicks.size),t},createBackground:function(){var e=this,t=e.options,n=e.box,i=t.background;i&&(this._backgroundPath=ye.fromRect(n.toRect(),{fill:{color:i},stroke:null}),this.visual.append(this._backgroundPath))},createPlotBands:function(){var e,t,n,i,o,r,a,s,l=this,c=this.options,d=c.plotBands||[],u=c.vertical,h=this.plotArea;if(0!==d.length){for(e=this._plotbandGroup=new xe({zIndex:-1}),t=g(this.pane.axes,function(e){return e.options.vertical!==l.options.vertical})[0],n=0;n<d.length;n++)i=d[n],o=void 0,r=void 0,u?(o=(t||h.axisX).lineBox(),r=l.getSlot(i.from,i.to,!0)):(o=l.getSlot(i.from,i.to,!0),r=(t||h.axisY).lineBox()),0!==o.width()&&0!==r.height()&&(a=new Te([o.x1,r.y1],[o.width(),r.height()]),s=ye.fromRect(a,{fill:{color:i.color,opacity:i.opacity},stroke:null}),e.append(s));this.appendVisual(e)}},createGridLines:function(e){function t(e,t,n){var i,o,r=e.length,a=Math.max(1,t.step);if(t.visible)for(i=t.skip;i<r;i+=a)o=$t(e[i]),v(o,h)||i%n===0||s&&d===o||(u.position=o,p.append(I(u,t)),h.push(o))}var n=this.options,i=n.minorGridLines,o=n.majorGridLines,r=n.minorUnit,a=n.vertical,s=e.options.line.visible,l=o.visible?n.majorUnit:0,c=e.lineBox(),d=c[a?"y1":"x1"],u={lineStart:c[a?"x1":"y1"],lineEnd:c[a?"x2":"y2"],vertical:a},h=[],p=this.gridLinesVisual();return t(this.getMajorTickPositions(),o),t(this.getMinorTickPositions(),i,l/r),p.children},reflow:function(e){var t,n,i=this,o=i.options,r=i.labels,a=i.title,s=o.vertical,l=r.length,c=s?ft:Ke,d=a?a.box[c]():0,u=this.getActualTickSize()+o.margin+d,h=(this.getRoot()||{}).box||e,p=h[c](),f=0;for(t=0;t<l;t++)n=r[t].box[c](),n+u<=p&&(f=Math.max(f,n));this.box=s?new Jt(e.x1,e.y1,e.x1+f+u,e.y2):new Jt(e.x1,e.y1,e.x2,e.y1+f+u),this.arrangeTitle(),this.arrangeLabels(),this.arrangeNotes()},getLabelsTickPositions:function(){return this.getMajorTickPositions()},labelTickIndex:function(e){return e.index},arrangeLabels:function(){var e,t,n,i,o,r,a,s,l,c,d,u=this,h=this,p=h.options,f=h.labels,g=this.labelsBetweenTicks(),m=p.vertical,v=this.lineBox(),_=p.labels.mirror,b=this.getLabelsTickPositions(),w=this.getActualTickSize()+p.margin;for(e=0;e<f.length;e++)t=f[e],n=u.labelTickIndex(t),i=m?t.box.height():t.box.width(),o=b[n]-i/2,r=void 0,a=void 0,s=void 0,m?(g&&(a=b[n],s=b[n+1],l=a+(s-a)/2,o=l-i/2),c=v.x2,_?(c+=w,t.options.rotationOrigin=Je):(c-=w+t.box.width(),t.options.rotationOrigin=st),r=t.box.move(c,o)):(g?(a=b[n],s=b[n+1]):(a=o,s=o+i),d=v.y1,_?(d-=w+t.box.height(),t.options.rotationOrigin=Le):(d+=w,t.options.rotationOrigin=dt),r=new Jt(a,d,s,d+t.box.height())),t.reflow(r)},autoRotateLabels:function(){var e,t,n,i,o,r,a;if(this.options.autoRotateLabels&&!this.options.vertical){for(e=this.getMajorTickPositions(),t=this.labels,i=0;i<t.length;i++)if(o=Math.abs(e[i+1]-e[i]),r=t[i].box,r.width()>o){if(r.height()>o){n=-90;break}n=-45}if(n){for(a=0;a<t.length;a++)t[a].options.rotation=n,t[a].reflow(new Jt);return!0}}},arrangeTitle:function(){var e=this,t=e.options,n=e.title,i=t.labels.mirror,o=t.vertical;n&&(o?(n.options.align=i?st:Je,n.options.vAlign=n.options.position):(n.options.align=n.options.position,n.options.vAlign=i?dt:Le),n.reflow(this.box))},arrangeNotes:function(){var e,t,n,i,o=this;for(e=0;e<this.notes.length;e++)t=o.notes[e],n=t.options.value,i=void 0,Lt(n)?(o.shouldRenderNote(n)?t.show():t.hide(),i=o.noteSlot(n)):t.hide(),t.reflow(i||o.lineBox())},noteSlot:function(e){return this.getSlot(e)},alignTo:function(e){var t=e.lineBox(),n=this.options.vertical,i=n?mt:gt;this.box.snapTo(t,i),n?this.box.shrink(0,this.lineBox().height()-t.height()):this.box.shrink(this.lineBox().width()-t.width(),0),this.box[i+1]-=this.lineBox()[i+1]-t[i+1],this.box[i+2]-=this.lineBox()[i+2]-t[i+2]},axisLabelText:function(e,t,n){var i=f(n),o=e;return i?o=i({value:e,dataItem:t,format:n.format,culture:n.culture}):n.format&&(o=this.chartService.format.localeAuto(n.format,[e],n.culture)),o},slot:function(e,t,n){var i=this.getSlot(e,t,n);if(i)return i.toRect()},contentBox:function(){var e,t,n,i=this.box.clone(),o=this.labels;return o.length&&(e=this.options.vertical?mt:gt,this.chartService.isPannable(e)?(t=this.maxLabelOffset(),i[e+1]-=t.start,i[e+2]+=t.end):(o[0].options.visible&&i.wrap(o[0].box),n=o[o.length-1],n.options.visible&&i.wrap(n.box))),i},maxLabelOffset:function(){var e,t,n,i,o,r=this,a=this.options,s=a.vertical,l=a.reverse,c=this.labelsBetweenTicks(),d=this.getLabelsTickPositions(),u=s?mt:gt,h=this.labels,p=l?1:0,f=l?0:1,g=0,m=0;for(e=0;e<h.length;e++)t=h[e],n=r.labelTickIndex(t),i=void 0,o=void 0,c?(i=d[n+p],o=d[n+f]):i=o=d[n],g=Math.max(g,i-t.box[u+1]),m=Math.max(m,t.box[u+2]-o);return{start:g,end:m}},limitRange:function(e,t,n,i,o){var r,a,s,l=this.options;return e<n&&o<0&&(!Lt(l.min)||l.min<=n)||i<t&&o>0&&(!Lt(l.max)||i<=l.max)?null:t<n&&o>0||i<e&&o<0?{min:e,max:t}:(r=t-e,a=e,s=t,e<n&&o<0?(a=qt(e,n,i),s=qt(e+r,n+r,i)):t>i&&o>0&&(s=qt(t,n,i),a=qt(t-r,n,i-r)),{min:a,max:s})},valueRange:function(){return{min:this.seriesMin,max:this.seriesMax}},labelsBetweenTicks:function(){return!this.options.justified},prepareUserOptions:function(){}}),k(kn,{labels:{visible:!0,rotation:0,mirror:!1,step:1,skip:0},line:{width:1,color:Be,visible:!0},title:{visible:!0,position:He},majorTicks:{align:at,size:4,skip:0,step:1},minorTicks:{align:at,size:3,skip:0,step:1},axisCrossingValue:0,majorTickType:at,minorTickType:tt,majorGridLines:{skip:0,step:1},minorGridLines:{visible:!1,width:1,color:Be,skip:0,step:1},margin:5,visible:!0,reverse:!1,justified:!0,notes:{label:{text:""}},_alignLines:!0,_deferLabels:!1}),yn="milliseconds",xn="seconds",Cn="minutes",Sn="hours",Tn="days",Dn="weeks",An="months",En="years",In=1,Mn=1e3,Fn=60*Mn,Rn=60*Fn,Pn=24*Rn,zn=7*Pn,Bn=31*Pn,Ln=365*Pn,Hn={years:Ln,months:Bn,weeks:zn,days:Pn,hours:Rn,minutes:Fn,seconds:Mn,milliseconds:In},Nn=.01,On=kn.extend({initFields:function(){this._ticks={}},categoriesHash:function(){return""},clone:function(){var t=new On(e.extend({},this.options),this.chartService);return t.createLabels(),t},initUserOptions:function(e){var t,n,i=e.categories||[],o=Lt(e.min),r=Lt(e.max);return e.srcCategories=e.categories=i,(o||r)&&i.length&&(t=o?Math.floor(e.min):0,n=r?e.justified?Math.floor(e.max)+1:Math.ceil(e.max):i.length,e.categories=e.categories.slice(t,n)),e},rangeIndices:function(){var e,t=this.options,n=t.categories.length||1,i=a(t.min)?t.min%1:0;return e=a(t.max)&&t.max%1!==0&&t.max<this.totalRange().max?n-(1-t.max%1):n-(t.justified?1:0),{min:i,max:e}},totalRangeIndices:function(e){var t,n,i=this.options,o=a(i.min)?i.min:0;return t=a(i.max)?i.max:a(i.min)?o+i.categories.length:this.totalRange().max||1,e&&(n=this.totalRange(),o=qt(o,0,n.max),t=qt(t,0,n.max)),{min:o,max:t}},range:function(){var e=this.options,t=a(e.min)?e.min:0,n=a(e.max)?e.max:this.totalRange().max;return{min:t,max:n}},roundedRange:function(){return this.range()},totalRange:function(){var e=this.options;return{min:0,max:Math.max(this._seriesMax||0,e.srcCategories.length)-(e.justified?1:0)}},scaleOptions:function(){var e=this.rangeIndices(),t=e.min,n=e.max,i=this.lineBox(),o=this.options.vertical?i.height():i.width(),r=o/(n-t||1);return{scale:r*(this.options.reverse?-1:1),box:i,min:t,max:n}},arrangeLabels:function(){kn.fn.arrangeLabels.call(this),this.hideOutOfRangeLabels()},hideOutOfRangeLabels:function(){var e,t,n,i,o,r=this,a=r.box,s=r.labels;s.length&&(e=this.options.vertical?mt:gt,t=a[e+1],n=a[e+2],i=s[0],o=Ut(s),(i.box[e+1]>n||i.box[e+2]<t)&&(i.options.visible=!1),(o.box[e+1]>n||o.box[e+2]<t)&&(o.options.visible=!1))},getMajorTickPositions:function(){return this.getTicks().majorTicks},getMinorTickPositions:function(){return this.getTicks().minorTicks},getLabelsTickPositions:function(){return this.getTicks().labelTicks},tickIndices:function(e){for(var t=this.rangeIndices(),n=t.min,i=t.max,o=Math.ceil(i),r=Math.floor(n),a=[];r<=o;)a.push(r),r+=e;return a},getTickPositions:function(e){var t,n=this.options,i=n.vertical,o=n.reverse,r=this.scaleOptions(),a=r.scale,s=r.box,l=r.min,c=s[(i?mt:gt)+(o?2:1)],d=this.tickIndices(e),u=[];for(t=0;t<d.length;t++)u.push(c+$t(a*(d[t]-l),Oe));return u},getTicks:function(){var e,t=this.options,n=this._ticks,i=this.rangeIndices(),o=this.lineBox(),r=o.getHash()+i.min+","+i.max+t.reverse+t.justified;return n._hash!==r&&(e=t.minorTicks.visible||t.minorGridLines.visible,n._hash=r,n.labelTicks=this.getTickPositions(1),n.majorTicks=this.filterOutOfRangePositions(n.labelTicks,o),n.minorTicks=e?this.filterOutOfRangePositions(this.getTickPositions(.5),o):[]),n},filterOutOfRangePositions:function(e,t){var n,i,o,r,a;if(!e.length)return e;for(n=this.options.vertical?mt:gt,i=function(e){return t[n+1]<=e&&e<=t[n+2]},o=e.length-1,r=0;!i(e[r])&&r<=o;)r++;for(a=o;!i(e[a])&&a>=0;)a--;return e.slice(r,a+1)},getSlot:function(e,t,n){var i,o,r=this.options,a=r.reverse,s=r.justified,l=r.vertical,c=this.scaleOptions(),d=c.scale,u=c.box,h=c.min,p=l?mt:gt,f=u[p+(a?2:1)],g=u.clone(),m=!Lt(t),v=Kt(e,0),_=Kt(t,v);return _=Math.max(_-1,v),_=Math.max(v,_),i=f+(v-h)*d,o=f+(_+1-h)*d,m&&s&&(o=i),n&&(i=qt(i,u[p+1],u[p+2]),o=qt(o,u[p+1],u[p+2])),g[p+1]=a?o:i,g[p+2]=a?i:o,g},limitSlot:function(e){var t=this.options.vertical,n=t?mt:gt,i=this.lineBox(),o=e.clone();return o[n+1]=qt(e[n+1],i[n+1],i[n+2]),o[n+2]=qt(e[n+2],i[n+1],i[n+2]),o},slot:function(e,t,n){var i=Math.floor(this.options.min||0),o=e,r=t;return"string"==typeof o?o=this.categoryIndex(o):a(o)&&(o-=i),"string"==typeof r?r=this.categoryIndex(r):a(r)&&(r-=i),kn.fn.slot.call(this,o,r,n)},pointCategoryIndex:function(e){var t,n,i=this.options,o=i.reverse,r=i.justified,a=i.vertical,s=a?mt:gt,l=this.scaleOptions(),c=l.scale,d=l.box,u=l.min,h=l.max,p=o?h:u,f=d[s+1],g=d[s+2],m=e[s];return m<f||m>g?null:(t=p+(m-f)/c,n=t%1,r?t=Math.round(t):0===n&&t>0&&t--,Math.floor(t))},getCategory:function(e){var t=this.pointCategoryIndex(e);return null===t?null:this.options.categories[t]},categoryIndex:function(e){return this.totalIndex(e)-Math.floor(this.options.min||0)},categoryAt:function(e,t){var n=this.options;return(t?n.srcCategories:n.categories)[e]},categoriesCount:function(){return(this.options.categories||[]).length},translateRange:function(e){var t=this.options,n=this.lineBox(),i=t.vertical?n.height():n.width(),o=t.categories.length,r=i/o,a=$t(e/r,je);return{min:a,max:o+a}},zoomRange:function(e){var t=this.totalRangeIndices(),n=this.totalRange(),i=n.min,o=n.max,r=qt(t.min+e,i,o),a=qt(t.max-e,i,o);if(a-r>0)return{min:r,max:a}},scaleRange:function(e){var t=this.options.categories.length,n=e*t;return{min:-n,max:t+n}},labelsCount:function(){var e=this.labelsRange();return e.max-e.min},labelsRange:function(){var e,t=this.options,n=t.justified,i=t.labels,o=this.totalRangeIndices(!0),r=o.min,a=o.max,s=Math.floor(r);return n?(r=Math.ceil(r),a=Math.floor(a)):(r=Math.floor(r),a=Math.ceil(a)),e=r>i.skip?i.skip+i.step*Math.ceil((r-i.skip)/i.step):i.skip,{min:e-s,max:(t.categories.length?a+(n?1:0):0)-s}},createAxisLabel:function(e,t){var n=this.options,i=n.dataItems?n.dataItems[e]:null,o=Kt(n.categories[e],""),r=this.axisLabelText(o,i,t);return new vn(o,r,e,i,t)},shouldRenderNote:function(e){var t=this.totalRangeIndices();return Math.floor(t.min)<=e&&e<=Math.ceil(t.max)},noteSlot:function(e){var t=this.options,n=e-Math.floor(t.min||0);return this.getSlot(n)},arrangeNotes:function(){kn.fn.arrangeNotes.call(this),this.hideOutOfRangeNotes()},hideOutOfRangeNotes:function(){var e,t,n,i,o,r=this,a=r.notes,s=r.box;if(a&&a.length)for(e=this.options.vertical?mt:gt,t=s[e+1],n=s[e+2],i=0;i<a.length;i++)o=a[i],o.box&&(n<o.box[e+1]||o.box[e+2]<t)&&o.hide()},pan:function(e){var t=this.totalRangeIndices(!0),n=this.scaleOptions(),i=n.scale,o=$t(e/i,je),r=this.totalRange(),a=t.min+o,s=t.max+o;return this.limitRange(a,s,0,r.max,o)},pointsRange:function(e,t){var n=this.options,i=n.reverse,o=n.vertical,r=o?mt:gt,a=this.totalRangeIndices(!0),s=this.scaleOptions(),l=s.scale,c=s.box,d=c[r+(i?2:1)],u=e[r]-d,h=t[r]-d,p=a.min+u/l,f=a.min+h/l,g=Math.min(p,f),m=Math.max(p,f);if(m-g>=Nn)return{min:g,max:m}},valueRange:function(){return this.range()},totalIndex:function(e){var t=this.options,n=this._categoriesMap?this._categoriesMap.get(e):Q(e,t.srcCategories);return n},currentRangeIndices:function(){var e,t=this.options,n=0;return a(t.min)&&(n=Math.floor(t.min)),e=a(t.max)?t.justified?Math.floor(t.max):Math.ceil(t.max)-1:this.totalCount()-1,{min:n,max:e}},mapCategories:function(){var e,t,n;if(!this._categoriesMap)for(e=this._categoriesMap=new Mt,t=this.options.srcCategories,n=0;n<t.length;n++)e.set(t[n],n)},totalCount:function(){return Math.max(this.options.srcCategories.length,this._seriesMax||0)}}),k(On,{type:"category",vertical:!1,majorGridLines:{visible:!1,width:1,color:Be},labels:{zIndex:1},justified:!1,_deferLabels:!0}),Vn=3e5,Wn={milliseconds:"HH:mm:ss.fff",seconds:"HH:mm:ss",minutes:"HH:mm",hours:"HH:mm",days:"M/d",weeks:"M/d",months:"MMM 'yy",years:"yyyy"},Un=.2,qn="auto",jn=[yn,xn,Cn,Sn,Tn,Dn,An,En],Gn="fit",$n=Ce.extend({init:function(e){this.options=e},displayIndices:function(){return{min:0,max:1}},displayRange:function(){return{}},total:function(){return{}},valueRange:function(){return{}},valueIndex:function(){return-1},values:function(){return[]},totalIndex:function(){return-1},valuesCount:function(){return 0},totalCount:function(){return 0},dateAt:function(){return null}}),Yn=Ce.extend({init:function(e,t,n){var i,o,r,a,s,l;this.options=n,n.baseUnitStep=n.baseUnitStep||1,i=n.roundToBaseUnit,o=n.justified,this.start=L(e,0,n.baseUnit,n.weekStartDay),r=this.roundToTotalStep(t),a=!o&&U(t,r)&&!n.justifyEnd,this.end=this.roundToTotalStep(t,!o,a?1:0),s=n.min||e,this.valueStart=this.roundToTotalStep(s),this.displayStart=i?this.valueStart:s,l=n.max,l?(this.valueEnd=this.roundToTotalStep(l,!1,!o&&U(l,this.roundToTotalStep(l))?-1:0),this.displayEnd=i?this.roundToTotalStep(l,!o):n.max):(this.valueEnd=r,this.displayEnd=i||a?this.end:t),this.valueEnd<this.valueStart&&(this.valueEnd=this.valueStart),this.displayEnd<=this.displayStart&&(this.displayEnd=this.roundToTotalStep(this.displayStart,!1,1))},displayRange:function(){return{min:this.displayStart,max:this.displayEnd}},displayIndices:function(){var e,t,n,i,o;return this._indices||(e=this.options,t=e.baseUnit,n=e.baseUnitStep,i=j(this.displayStart,this.valueStart,t,n),o=j(this.displayEnd,this.valueStart,t,n),this._indices={min:i,max:o}),this._indices},total:function(){return{min:this.start,max:this.end}},totalCount:function(){var e=this.totalIndex(this.end);return e+(this.options.justified?1:0)},valueRange:function(){return{min:this.valueStart,max:this.valueEnd}},valueIndex:function(e){var t=this.options;return Math.floor(j(e,this.valueStart,t.baseUnit,t.baseUnitStep))},totalIndex:function(e){var t=this.options;return Math.floor(j(e,this.start,t.baseUnit,t.baseUnitStep))},dateIndex:function(e){var t=this.options;return j(e,this.valueStart,t.baseUnit,t.baseUnitStep)},valuesCount:function(){var e=this.valueIndex(this.valueEnd);return e+1},values:function(){var e,t,n,i=this._values;if(!i)for(e=this.options,t=this.valueRange(),this._values=i=[],n=t.min;n<=t.max;)i.push(n),n=L(n,e.baseUnitStep,e.baseUnit,e.weekStartDay);return i},dateAt:function(e,t){var n=this.options;return L(t?this.start:this.valueStart,n.baseUnitStep*e,n.baseUnit,n.weekStartDay)},roundToTotalStep:function(e,t,n){var i=this.options,o=i.baseUnit,r=i.baseUnitStep,a=i.weekStartDay,s=this.start,l=j(e,s,o,r),c=t?Math.ceil(l):Math.floor(l);return n&&(c+=n),L(s,c*r,o,a)}}),Kn=On.extend({clone:function(){var t=new Kn(e.extend({},this.options),this.chartService);return t.createLabels(),t},categoriesHash:function(){var e=this.dataRange.total().min;return this.options.baseUnit+this.options.baseUnitStep+e},initUserOptions:function(e){return e},initFields:function(){var t,n,i,o,r,a,s,l,c;On.fn.initFields.call(this),t=this.chartService,n=t.intl,i=this.options,o=i.categories||[],o._parsed||(o=K(n,o),o._parsed=!0),i=Me({roundToBaseUnit:!0},i,{categories:o,min:Y(n,i.min),max:Y(n,i.max)}),t.panning&&t.isPannable(i.vertical?mt:gt)&&(i.roundToBaseUnit=!1),i.userSetBaseUnit=i.userSetBaseUnit||i.baseUnit,i.userSetBaseUnitStep=i.userSetBaseUnitStep||i.baseUnitStep,this.options=i,i.srcCategories=o,o.length>0?(r=X(o),a=i.maxDivisions,this.dataRange=new Yn(r.min,r.max,ee(i)),a?(s=this.dataRange.displayRange(),l=e.extend({},i,{justified:!0,roundToBaseUnit:!1,baseUnit:"fit",min:s.min,max:s.max,maxDateGroups:a}),c=this.dataRange.options,J(l,c.baseUnit,c.baseUnitStep),this.divisionRange=new Yn(r.min,r.max,l)):this.divisionRange=this.dataRange):(i.baseUnit=i.baseUnit||Tn,this.dataRange=this.divisionRange=new $n(i))},tickIndices:function(e){var t,n,i,o,r,a=this,s=a.dataRange,l=a.divisionRange,c=l.valuesCount();if(!this.options.maxDivisions||!c)return On.fn.tickIndices.call(this,e);for(t=[],n=l.values(),i=0,this.options.justified||(n=n.concat(l.dateAt(c)),i=.5),o=0;o<n.length;o++)t.push(s.dateIndex(n[o])+i),1!==e&&o>=1&&(r=t.length-1,t.splice(o,0,t[r-1]+(t[r]-t[r-1])*e));return t},shouldRenderNote:function(e){var t=this.range(),n=this.options.categories||[];return O(e,t.min)>=0&&O(e,t.max)<=0&&n.length},parseNoteValue:function(e){return Y(this.chartService.intl,e)},noteSlot:function(e){return this.getSlot(e)},translateRange:function(e){var t,n,i=this.options,o=i.baseUnit,r=i.weekStartDay,a=i.vertical,s=this.lineBox(),l=a?s.height():s.width(),c=this.range(),d=l/(c.max-c.min),u=$t(e/d,je);return c.min&&c.max&&(t=F(i.min||c.min,u),n=F(i.max||c.max,u),c={min:L(t,0,o,r),max:L(n,0,o,r)}),c},scaleRange:function(e){var t,n,i=Math.abs(e),o=this.range(),r=o.min,a=o.max;if(r&&a){for(;i--;)t=V(r,a),n=Math.round(.1*t),e<0?(r=F(r,n),a=F(a,-n)):(r=F(r,-n),a=F(a,n));o={min:r,max:a}}return o},labelsRange:function(){return{min:this.options.labels.skip,max:this.divisionRange.valuesCount()}},pan:function(e){var t,n,i,o,r,a,s,l,c,d,u,h;return this.isEmpty()?null:(t=this.options,n=this.lineBox(),i=t.vertical?n.height():n.width(),o=this.dataRange.displayRange(),r=o.min,a=o.max,s=this.dataRange.total(),l=i/(a-r),c=$t(e/l,je)*(t.reverse?-1:1),d=F(r,c),u=F(a,c),h=this.limitRange(W(d),W(u),W(s.min),W(s.max),c),h?(h.min=R(h.min),h.max=R(h.max),h.baseUnit=t.baseUnit,h.baseUnitStep=t.baseUnitStep||1,h.userSetBaseUnit=t.userSetBaseUnit,h.userSetBaseUnitStep=t.userSetBaseUnitStep,h):void 0)},pointsRange:function(e,t){var n,i,o,r,a,s,l;return this.isEmpty()?null:(n=On.fn.pointsRange.call(this,e,t),i=this.dataRange.displayRange(),o=this.dataRange.displayIndices(),r=V(i.max,i.min)/(o.max-o.min),a=this.options,s=F(i.min,n.min*r),l=F(i.min,n.max*r),{min:s,max:l,baseUnit:a.userSetBaseUnit||a.baseUnit,baseUnitStep:a.userSetBaseUnitStep||a.baseUnitStep})},zoomRange:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k;if(this.isEmpty())return null;if(t=this.options,n=t.userSetBaseUnit===Gn,i=this.dataRange.total(),o=this.dataRange.displayRange(),r=o.min,a=o.max,s=this.dataRange.options,l=s.weekStartDay,c=s.baseUnit,d=s.baseUnitStep,u=L(r,e*d,c,l),h=L(a,-e*d,c,l),n)if(p=t.autoBaseUnitSteps,f=t.maxDateGroups,g=Ut(p[c])*f*Hn[c],m=V(a,r),v=V(h,u),_=jn.indexOf(c),v<Hn[c]&&c!==yn)c=jn[_-1],b=Ut(p[c]),w=(m-(f-1)*b*Hn[c])/2,u=F(r,w),h=F(a,-w);else if(v>g&&c!==En){k=0;do{_++,c=jn[_],k=0,w=2*Hn[c];do b=p[c][k],k++;while(k<p[c].length&&w*b<m)}while(c!==En&&w*b<m);w=(w*b-m)/2,w>0&&(u=F(r,-w),h=F(a,w),u=F(u,qt(h,i.min,i.max)-h),h=F(h,qt(u,i.min,i.max)-u))}return u<i.min&&(u=i.min),h>i.max&&(h=i.max),u&&h&&V(h,u)>0?{min:u,max:h,baseUnit:t.userSetBaseUnit||t.baseUnit,baseUnitStep:t.userSetBaseUnitStep||t.baseUnitStep}:void 0},range:function(){return this.dataRange.displayRange()},createAxisLabel:function(e,t){var n,i=this.options,o=i.dataItems&&!i.maxDivisions?i.dataItems[e]:null,r=this.divisionRange.dateAt(e),a=t.dateFormats[this.divisionRange.options.baseUnit];if(t.format=t.format||a,n=this.axisLabelText(r,o,t))return new vn(r,n,e,o,t)},categoryIndex:function(e){return this.dataRange.valueIndex(e)},slot:function(e,t,n){var i,o=this.dataRange,r=e,a=t;if(r instanceof Date&&(r=o.dateIndex(r)),a instanceof Date&&(a=o.dateIndex(a)),i=this.getSlot(r,a,n))return i.toRect()},getSlot:function(e,t,n){var i=e,o=t;return typeof i===rt&&(i=this.categoryIndex(i)),typeof o===rt&&(o=this.categoryIndex(o)),On.fn.getSlot.call(this,i,o,n)},valueRange:function(){var e=this.options,t=X(e.srcCategories);return{min:R(t.min),max:R(t.max)}},categoryAt:function(e,t){return this.dataRange.dateAt(e,t)},categoriesCount:function(){return this.dataRange.valuesCount()},rangeIndices:function(){return this.dataRange.displayIndices()},labelsBetweenTicks:function(){return!this.divisionRange.options.justified},prepareUserOptions:function(){this.isEmpty()||(this.options.categories=this.dataRange.values())},getCategory:function(e){var t=this.pointCategoryIndex(e);return null===t?null:this.dataRange.dateAt(t)},totalIndex:function(e){return this.dataRange.totalIndex(e)},currentRangeIndices:function(){var e=this.dataRange.valueRange();return{min:this.dataRange.totalIndex(e.min),max:this.dataRange.totalIndex(e.max)}},totalRange:function(){return this.dataRange.total()},totalCount:function(){return this.dataRange.totalCount()},isEmpty:function(){return!this.options.srcCategories.length},roundedRange:function(){var t,n,i;return this.options.roundToBaseUnit!==!1||this.isEmpty()?this.range():(t=this.options,n=X(t.srcCategories),i=new Yn(n.min,n.max,e.extend({},t,{justified:!1,roundToBaseUnit:!0,justifyEnd:t.justified})),i.displayRange())}}),k(Kn,{type:We,labels:{dateFormats:Wn},autoBaseUnitSteps:{milliseconds:[1,10,100],seconds:[1,2,5,15,30],minutes:[1,2,5,15,30],hours:[1,2,3],days:[1,2,3],weeks:[1,2],months:[1,2,3,6],years:[1,2,3,5,10,25,50]},maxDateGroups:10}),Qn=Math.pow(10,-je+1),Xn=kn.extend({init:function(t,n,i,o){kn.fn.init.call(this,e.extend({},i,{seriesMin:t,seriesMax:n}),o)},initUserOptions:function(e){var t=ae(e.seriesMin,e.seriesMax,e);return this.totalOptions=se(t,e),ce(t,e)},initFields:function(){this.totalMin=this.totalOptions.min,this.totalMax=this.totalOptions.max,this.totalMajorUnit=this.totalOptions.majorUnit,this.seriesMin=this.options.seriesMin,this.seriesMax=this.options.seriesMax},clone:function(){return new Xn(this.seriesMin,this.seriesMax,e.extend({},this.options),this.chartService)},startValue:function(){return 0},range:function(){var e=this.options;return{min:e.min,max:e.max}},getDivisions:function(e){var t,n;return 0===e?1:(t=this.options,n=t.max-t.min,Math.floor($t(n/e,Oe))+1)},getTickPositions:function(e,t){var n,i=this.options,o=i.vertical,r=i.reverse,a=this.lineBox(),s=o?a.height():a.width(),l=i.max-i.min,c=s/l,d=e*c,u=this.getDivisions(e),h=(o?-1:1)*(r?-1:1),p=1===h?1:2,f=[],g=a[(o?mt:gt)+p],m=0;for(t&&(m=t/e),n=0;n<u;n++)n%m!==0&&f.push($t(g,Oe)),g+=d*h;return f},getMajorTickPositions:function(){return this.getTickPositions(this.options.majorUnit)},getMinorTickPositions:function(){return this.getTickPositions(this.options.minorUnit)},getSlot:function(e,t,n){var i,o,r,a,s,l,c,d,u,h,p,f,g,m;return void 0===n&&(n=!1),i=this.options,o=i.vertical,r=i.reverse,a=o?mt:gt,s=this.lineBox(),l=s[a+(r?2:1)],c=o?s.height():s.width(),d=r?-1:1,u=d*(c/(i.max-i.min)),h=new Jt(s.x1,s.y1,s.x1,s.y1),p=e,f=t,Lt(p)||(p=f||0),Lt(f)||(f=p||0),n&&(p=Math.max(Math.min(p,i.max),i.min),f=Math.max(Math.min(f,i.max),i.min)),o?(g=i.max-Math.max(p,f),m=i.max-Math.min(p,f)):(g=Math.min(p,f)-i.min,m=Math.max(p,f)-i.min),h[a+1]=re(l+u*(r?m:g)),h[a+2]=re(l+u*(r?g:m)),h},getValue:function(e){var t,n=this.options,i=n.vertical,o=n.reverse,r=+n.max,a=+n.min,s=i?mt:gt,l=this.lineBox(),c=l[s+(o?2:1)],d=i?l.height():l.width(),u=o?-1:1,h=u*(e[s]-c),p=(r-a)/d,f=h*p;return h<0||h>d?null:(t=i?r-f:a+f,$t(t,je))},translateRange:function(e){var t=this.options,n=t.vertical,i=t.reverse,o=t.max,r=t.min,a=this.lineBox(),s=n?a.height():a.width(),l=o-r,c=s/l,d=$t(e/c,je);return!n&&!i||n&&i||(d=-d),{min:r+d,max:o+d,offset:d}},scaleRange:function(e){var t=this.options,n=-e*t.majorUnit;return{min:t.min-n,max:t.max+n}},labelsCount:function(){return this.getDivisions(this.options.majorUnit)},createAxisLabel:function(e,t){var n=this.options,i=$t(n.min+e*n.majorUnit,je),o=this.axisLabelText(i,null,t);return new vn(i,o,e,null,t)},shouldRenderNote:function(e){var t=this.range();return t.min<=e&&e<=t.max},pan:function(e){var t=this.translateRange(e);return this.limitRange(t.min,t.max,this.totalMin,this.totalMax,t.offset)},pointsRange:function(e,t){var n=this.getValue(e),i=this.getValue(t),o=Math.min(n,i),r=Math.max(n,i);if(this.isValidRange(o,r))return{min:o,max:r}},zoomRange:function(e){var t=this,n=t.totalMin,i=t.totalMax,o=this.scaleRange(e),r=qt(o.min,n,i),a=qt(o.max,n,i);if(this.isValidRange(r,a))return{min:r,max:a}},isValidRange:function(e,t){return t-e>Qn}}),k(Xn,{type:"numeric",min:0,max:1,vertical:!0,majorGridLines:{visible:!0,width:1,color:Be},labels:{format:"#.####################"},zIndex:1}),Jn=kn.extend({init:function(e,t,n,i){var o=R(e),r=R(t),a=i.intl,s=n||{};s=Me(s||{},{min:Y(a,s.min),max:Y(a,s.max),axisCrossingValue:K(a,s.axisCrossingValues||s.axisCrossingValue)}),s=he(o,r,s),kn.fn.init.call(this,s,i),this.intlService=a,this.seriesMin=o,this.seriesMax=r,this.totalMin=W(H(W(o)-1,s.baseUnit)),this.totalMax=W(N(W(r)+1,s.baseUnit))},clone:function(){return new Jn(this.seriesMin,this.seriesMax,e.extend({},this.options),this.chartService)},range:function(){var e=this.options;return{min:e.min,max:e.max}},getDivisions:function(e){var t=this.options;return Math.floor(G(t.min,t.max,t.baseUnit)/e+1)},getTickPositions:function(e){var t,n,i,o=this.options,r=o.vertical,a=this.lineBox(),s=(r?-1:1)*(o.reverse?-1:1),l=1===s?1:2,c=a[(r?mt:gt)+l],d=this.getDivisions(e),u=V(o.max,o.min),h=r?a.height():a.width(),p=h/u,f=[c]; +for(t=1;t<d;t++)n=L(o.min,t*e,o.baseUnit),i=c+V(n,o.min)*p*s,f.push($t(i,Oe));return f},getMajorTickPositions:function(){return this.getTickPositions(this.options.majorUnit)},getMinorTickPositions:function(){return this.getTickPositions(this.options.minorUnit)},getSlot:function(e,t,n){return Xn.prototype.getSlot.call(this,Y(this.intlService,e),Y(this.intlService,t),n)},getValue:function(e){var t=Xn.prototype.getValue.call(this,e);return null!==t?R(t):null},labelsCount:function(){return this.getDivisions(this.options.majorUnit)},createAxisLabel:function(e,t){var n,i,o=this.options,r=e*o.majorUnit,a=o.min;return r>0&&(a=L(a,r,o.baseUnit)),n=t.dateFormats[o.baseUnit],t.format=t.format||n,i=this.axisLabelText(a,null,t),new vn(a,i,e,null,t)},translateRange:function(e,t){var n=this.options,i=n.baseUnit,o=n.weekStartDay,r=this.lineBox(),a=n.vertical?r.height():r.width(),s=this.range(),l=a/V(s.max,s.min),c=$t(e/l,je)*(n.reverse?-1:1),d=F(n.min,c),u=F(n.max,c);return t||(d=L(d,0,i,o),u=L(u,0,i,o)),{min:d,max:u,offset:c}},scaleRange:function(e){for(var t,n,i=this.options,o=i.min,r=i.max,a=Math.abs(e);a--;)t=V(o,r),n=Math.round(.1*t),e<0?(o=F(o,n),r=F(r,-n)):(o=F(o,-n),r=F(r,n));return{min:o,max:r}},shouldRenderNote:function(e){var t=this.range();return O(e,t.min)>=0&&O(e,t.max)<=0},pan:function(e){var t=this.translateRange(e,!0),n=this.limitRange(W(t.min),W(t.max),this.totalMin,this.totalMax,t.offset);if(n)return{min:R(n.min),max:R(n.max)}},pointsRange:function(e,t){var n=this.getValue(e),i=this.getValue(t),o=Math.min(n,i),r=Math.max(n,i);return{min:R(o),max:R(r)}},zoomRange:function(e){var t=this.scaleRange(e),n=R(qt(W(t.min),this.totalMin,this.totalMax)),i=R(qt(W(t.max),this.totalMin,this.totalMax));return{min:n,max:i}}}),k(Jn,{type:We,majorGridLines:{visible:!0,width:1,color:Be},labels:{dateFormats:Wn}}),Zn=10,ei=kn.extend({init:function(e,t,n,i){var o=Me({majorUnit:Zn,min:e,max:t},n),r=o.majorUnit,a=ge(t,r),s=fe(e,t,o),l=pe(s,a,o,n);o.max=l.max,o.min=l.min,o.minorUnit=n.minorUnit||$t(r-1,je),kn.fn.init.call(this,o,i),this.totalMin=Lt(n.min)?Math.min(s,n.min):s,this.totalMax=Lt(n.max)?Math.max(a,n.max):a,this.logMin=$t(ve(l.min,r),je),this.logMax=$t(ve(l.max,r),je),this.seriesMin=e,this.seriesMax=t,this.createLabels()},clone:function(){return new ei(this.seriesMin,this.seriesMax,e.extend({},this.options),this.chartService)},startValue:function(){return this.options.min},getSlot:function(e,t,n){var i,o,r=this,a=r.options,s=r.logMin,l=r.logMax,c=a.reverse,d=a.vertical,u=a.majorUnit,h=d?mt:gt,p=this.lineBox(),f=p[h+(c?2:1)],g=d?p.height():p.width(),m=c?-1:1,v=m*(g/(l-s)),_=new Jt(p.x1,p.y1,p.x1,p.y1),b=e,w=t;return Lt(b)||(b=w||1),Lt(w)||(w=b||1),b<=0||w<=0?null:(n&&(b=Math.max(Math.min(b,a.max),a.min),w=Math.max(Math.min(w,a.max),a.min)),b=ve(b,u),w=ve(w,u),d?(i=l-Math.max(b,w),o=l-Math.min(b,w)):(i=Math.min(b,w)-s,o=Math.max(b,w)-s),_[h+1]=re(f+v*(c?o:i)),_[h+2]=re(f+v*(c?i:o)),_)},getValue:function(e){var t,n=this,i=n.options,o=n.logMin,r=n.logMax,a=i.reverse,s=i.vertical,l=i.majorUnit,c=this.lineBox(),d=s===a?1:-1,u=1===d?1:2,h=s?c.height():c.width(),p=(r-o)/h,f=s?mt:gt,g=c[f+u],m=d*(e[f]-g),v=m*p;return m<0||m>h?null:(t=o+v,$t(Math.pow(l,t),je))},range:function(){var e=this.options;return{min:e.min,max:e.max}},scaleRange:function(e){var t=this.options.majorUnit,n=-e;return{min:Math.pow(t,this.logMin-n),max:Math.pow(t,this.logMax+n)}},translateRange:function(e){var t=this,n=t.options,i=t.logMin,o=t.logMax,r=n.reverse,a=n.vertical,s=n.majorUnit,l=this.lineBox(),c=a?l.height():l.width(),d=c/(o-i),u=$t(e/d,je);return!a&&!r||a&&r||(u=-u),{min:Math.pow(s,i+u),max:Math.pow(s,o+u),offset:u}},labelsCount:function(){var e=Math.floor(this.logMax),t=Math.floor(e-this.logMin)+1;return t},getMajorTickPositions:function(){var e=[];return this.traverseMajorTicksPositions(function(t){e.push(t)},{step:1,skip:0}),e},createTicks:function(e){function t(t,n){c.tickX=a?s.x2:s.x2-n.size,c.tickY=a?s.y1-n.size:s.y1,c.position=t,e.append(E(c,n))}var n=this.options,i=n.majorTicks,o=n.minorTicks,r=n.vertical,a=n.labels.mirror,s=this.lineBox(),l=[],c={vertical:r};return i.visible&&this.traverseMajorTicksPositions(t,i),o.visible&&this.traverseMinorTicksPositions(t,o),l},createGridLines:function(e){function t(e,t){v(e,l)||(s.position=e,c.append(I(s,t)),l.push(e))}var n=this.options,i=n.minorGridLines,o=n.majorGridLines,r=n.vertical,a=e.lineBox(),s={lineStart:a[r?"x1":"y1"],lineEnd:a[r?"x2":"y2"],vertical:r},l=[],c=this.gridLinesVisual();return o.visible&&this.traverseMajorTicksPositions(t,o),i.visible&&this.traverseMinorTicksPositions(t,i),c.children},traverseMajorTicksPositions:function(e,t){var n,i,o=this._lineOptions(),r=o.lineStart,a=o.step,s=this,l=s.logMin,c=s.logMax;for(n=Math.ceil(l)+t.skip;n<=c;n+=t.step)i=$t(r+a*(n-l),je),e(i,t)},traverseMinorTicksPositions:function(e,t){var n,i,o,r,a,s=this,l=this.options,c=l.min,d=l.max,u=l.minorUnit,h=l.majorUnit,p=this._lineOptions(),f=p.lineStart,g=p.step,m=this,v=m.logMin,_=m.logMax,b=Math.floor(v);for(n=b;n<_;n++)for(i=s._minorIntervalOptions(n),o=t.skip;o<u&&(r=i.value+o*i.minorStep,!(r>d));o+=t.step)r>=c&&(a=$t(f+g*(ve(r,h)-v),je),e(a,t))},createAxisLabel:function(e,t){var n=Math.ceil(this.logMin+e),i=Math.pow(this.options.majorUnit,n),o=this.axisLabelText(i,null,t);return new vn(i,o,e,null,t)},shouldRenderNote:function(e){var t=this.range();return t.min<=e&&e<=t.max},pan:function(e){var t=this.translateRange(e);return this.limitRange(t.min,t.max,this.totalMin,this.totalMax,t.offset)},pointsRange:function(e,t){var n=this.getValue(e),i=this.getValue(t),o=Math.min(n,i),r=Math.max(n,i);return{min:o,max:r}},zoomRange:function(e){var t=this,n=t.options,i=t.totalMin,o=t.totalMax,r=this.scaleRange(e),a=qt(r.min,i,o),s=qt(r.max,i,o),l=n.majorUnit,c=s>a&&n.min&&n.max&&$t(ve(n.max,l)-ve(n.min,l),je)<1,d=!(n.min===i&&n.max===o)&&$t(ve(s,l)-ve(a,l),je)>=1;if(c||d)return{min:a,max:s}},_minorIntervalOptions:function(e){var t=this.options,n=t.minorUnit,i=t.majorUnit,o=Math.pow(i,e),r=Math.pow(i,e+1),a=r-o,s=a/n;return{value:o,minorStep:s}},_lineOptions:function(){var e=this.options,t=e.reverse,n=e.vertical,i=n?mt:gt,o=this.lineBox(),r=n===t?1:-1,a=1===r?1:2,s=n?o.height():o.width(),l=r*(s/(this.logMax-this.logMin)),c=o[i+a];return{step:l,lineStart:c,lineBox:o}}}),k(ei,{type:"log",majorUnit:Zn,minorUnit:1,axisCrossingValue:1,vertical:!0,majorGridLines:{visible:!0,width:1,color:Be},zIndex:1,_deferLabels:!0}),ti={createGridLines:function(e){var t,n,i=this.options,o=Math.abs(this.box.center().y-e.lineBox().y1),r=[],a=!1;return i.majorGridLines.visible&&(t=this.majorGridLineAngles(e),a=!0,r=this.renderMajorGridLines(t,o,i.majorGridLines)),i.minorGridLines.visible&&(n=this.minorGridLineAngles(e,a),zt(r,this.renderMinorGridLines(n,o,i.minorGridLines,e,a))),r},renderMajorGridLines:function(e,t,n){return this.renderGridLines(e,t,n)},renderMinorGridLines:function(e,t,n,i,o){var r=this.radiusCallback&&this.radiusCallback(t,i,o);return this.renderGridLines(e,t,n,r)},renderGridLines:function(e,t,n,i){var o,r,a={stroke:{width:n.width,color:n.color,dashType:n.dashType}},s=this.box.center(),l=new De([s.x,s.y],t),c=this.gridLinesVisual();for(o=0;o<e.length;o++)r=new ye(a),i&&(l.radius=i(e[o])),r.moveTo(l.center).lineTo(l.pointAt(e[o]+180)),c.append(r);return c.children},gridLineAngles:function(e,t,n,i,o){var r=this,a=this.intervals(t,n,i,o),s=e.options,l=s.visible&&(s.line||{}).visible!==!1;return b(a,function(e){var t=r.intervalAngle(e);if(!l||90!==t)return t})}},ni=On.extend({range:function(){return{min:0,max:this.options.categories.length}},reflow:function(e){this.box=e,this.reflowLabels()},lineBox:function(){return this.box},reflowLabels:function(){var e,t,n=this,i=this,o=i.labels,r=i.options.labels,a=r.skip||0,s=r.step||1,l=new Jt;for(e=0;e<o.length;e++)o[e].reflow(l),t=o[e].box,o[e].reflow(n.getSlot(a+e*s).adjacentBox(0,t.width(),t.height()))},intervals:function(e,t,n,i){var o,r,a,s,l,c,d,u,h;for(void 0===i&&(i=!1),o=this.options,r=o.categories.length,a=r/e||1,s=360/a,l=t||0,c=n||1,d=[],u=0,h=l;h<a;h+=c)u=o.reverse?360-h*s:h*s,u=$t(u,Oe)%360,i&&v(u,i)||d.push(u);return d},majorIntervals:function(){return this.intervals(1)},minorIntervals:function(){return this.intervals(.5)},intervalAngle:function(e){return(360+e+this.options.startAngle)%360},majorAngles:function(){var e=this;return b(this.majorIntervals(),function(t){return e.intervalAngle(t)})},createLine:function(){return[]},majorGridLineAngles:function(e){var t=this.options.majorGridLines;return this.gridLineAngles(e,1,t.skip,t.step)},minorGridLineAngles:function(e,t){var n=this.options,i=n.minorGridLines,o=n.majorGridLines,r=t?this.intervals(1,o.skip,o.step):null;return this.gridLineAngles(e,.5,i.skip,i.step,r)},radiusCallback:function(e,t,n){var i,o,r,a;if(t.options.type!==Pe)return i=Gt(360/(2*this.options.categories.length)),o=Math.cos(i)*e,r=this.majorAngles(),a=function(t){return!n&&v(t,r)?e:o}},createPlotBands:function(){var e,t,n,i,o,r,a,s=this,l=this.options.plotBands||[],c=this._plotbandGroup=new xe({zIndex:-1});for(e=0;e<l.length;e++)t=l[e],n=s.plotBandSlot(t),i=s.getSlot(t.from),o=t.from-Math.floor(t.from),n.startAngle+=o*i.angle,r=Math.ceil(t.to)-t.to,n.angle-=(r+o)*i.angle,a=nn.current.createRing(n,{fill:{color:t.color,opacity:t.opacity},stroke:{opacity:t.opacity}}),c.append(a);this.appendVisual(c)},plotBandSlot:function(e){return this.getSlot(e.from,e.to-1)},getSlot:function(e,t){var n,i,o,r,a=this.options,s=a.justified,l=this.box,c=this.majorAngles(),d=c.length,u=360/d,h=e;return a.reverse&&!s&&(h=(h+1)%d),h=qt(Math.floor(h),0,d-1),n=c[h],s&&(n-=u/2,n<0&&(n+=360)),i=qt(Math.ceil(t||h),h,d-1),o=i-h+1,r=u*o,new Zt(l.center(),0,l.height()/2,n,r)},slot:function(e,t){var n=this.getSlot(e,t),i=n.startAngle+180,o=i+n.angle;return new Se.Arc([n.center.x,n.center.y],{startAngle:i,endAngle:o,radiusX:n.radius,radiusY:n.radius})},pointCategoryIndex:function(e){var t,n,i=this,o=this.options.categories.length,r=null;for(t=0;t<o;t++)if(n=i.getSlot(t),n.containsPoint(e)){r=t;break}return r}}),k(ni,{startAngle:90,labels:{margin:p(10)},majorGridLines:{visible:!0},justified:!0}),Me(ni.prototype,ti),ii=kn.extend({init:function(e,t){kn.fn.init.call(this,e,t);var n=this.options;n.minorUnit=n.minorUnit||n.majorUnit/2},getDivisions:function(e){return Xn.prototype.getDivisions.call(this,e)-1},reflow:function(e){this.box=e,this.reflowLabels()},reflowLabels:function(){var e,t,n=this,i=this,o=i.options,r=i.labels,a=i.options.labels,s=a.skip||0,l=a.step||1,c=new Jt,d=this.intervals(o.majorUnit,s,l);for(e=0;e<r.length;e++)r[e].reflow(c),t=r[e].box,r[e].reflow(n.getSlot(d[e]).adjacentBox(0,t.width(),t.height()))},lineBox:function(){return this.box},intervals:function(e,t,n,i){var o,r,a,s,l,c,d;for(void 0===i&&(i=!1),o=this.options.min,r=this.getDivisions(e),a=[],s=t||0,l=n||1,c=s;c<r;c+=l)d=(360+o+c*e)%360,i&&v(d,i)||a.push(d);return a},majorIntervals:function(){return this.intervals(this.options.majorUnit)},minorIntervals:function(){return this.intervals(this.options.minorUnit)},intervalAngle:function(e){return(540-e-this.options.startAngle)%360},createLine:function(){return[]},majorGridLineAngles:function(e){var t=this.options.majorGridLines;return this.gridLineAngles(e,this.options.majorUnit,t.skip,t.step)},minorGridLineAngles:function(e,t){var n=this.options,i=n.minorGridLines,o=n.majorGridLines,r=t?this.intervals(n.majorUnit,o.skip,o.step):null;return this.gridLineAngles(e,n.minorUnit,i.skip,i.step,r)},plotBandSlot:function(e){return this.getSlot(e.from,e.to)},getSlot:function(e,t){var n,i=this,o=i.options,r=i.box,a=o.startAngle,s=qt(e,o.min,o.max),l=qt(t||s,s,o.max);return o.reverse&&(s*=-1,l*=-1),s=(540-s-a)%360,l=(540-l-a)%360,l<s&&(n=s,s=l,l=n),new Zt(r.center(),0,r.height()/2,s,l-s)},slot:function(e,t){var n,i,o,r,a,s,l;return void 0===t&&(t=e),n=this.options,i=360-n.startAngle,o=this.getSlot(e,t),r=Math.min(e,t),a=Math.max(e,t),n.reverse?(s=r,l=a):(s=360-a,l=360-r),s=(s+i)%360,l=(l+i)%360,new Se.Arc([o.center.x,o.center.y],{startAngle:s,endAngle:l,radiusX:o.radius,radiusY:o.radius})},getValue:function(e){var t=this.options,n=this.box.center(),i=e.x-n.x,o=e.y-n.y,r=Math.round(Ht(Math.atan2(o,i))),a=t.startAngle;return t.reverse||(r*=-1,a*=-1),(r+a+360)%360},valueRange:function(){return{min:0,max:2*Math.PI}}}),k(ii,{type:"polar",startAngle:0,reverse:!1,majorUnit:60,min:0,max:360,labels:{margin:p(10)},majorGridLines:{color:Be,visible:!0,width:1},minorGridLines:{color:"#aaa"}}),Me(ii.prototype,ti,{createPlotBands:ni.prototype.createPlotBands,majorAngles:ni.prototype.majorAngles,range:Xn.prototype.range,labelsCount:Xn.prototype.labelsCount,createAxisLabel:Xn.prototype.createAxisLabel}),oi={options:{majorGridLines:{visible:!0}},createPlotBands:function(){var e,t,n,i,o,r,a,s,l,c,d=this,u=this.options,h=u.majorGridLines.type,p=u.plotBands;for(void 0===p&&(p=[]),e=this.plotArea.polarAxis,t=e.majorAngles(),n=e.box.center(),i=this._plotbandGroup=new xe({zIndex:-1}),o=0;o<p.length;o++)r=p[o],a={fill:{color:r.color,opacity:r.opacity},stroke:{opacity:r.opacity}},s=d.getSlot(r.from,r.to,!0),l=new Zt(n,n.y-s.y2,n.y-s.y1,0,360),c=void 0,c=h===Pe?nn.current.createRing(l,a):ye.fromPoints(d.plotBandPoints(l,t),a).close(),i.append(c);this.appendVisual(i)},plotBandPoints:function(e,t){var n,i=[],o=[],r=[e.center.x,e.center.y],a=new De(r,e.innerRadius),s=new De(r,e.radius);for(n=0;n<t.length;n++)i.push(a.pointAt(t[n]+180)),o.push(s.pointAt(t[n]+180));return i.reverse(),i.push(i[0]),o.push(o[0]),o.concat(i)},createGridLines:function(e){var t,n=this.options,i=this.radarMajorGridLinePositions(),o=e.majorAngles(),r=e.box.center(),a=[];return n.majorGridLines.visible&&(a=this.renderGridLines(r,i,o,n.majorGridLines)),n.minorGridLines.visible&&(t=this.radarMinorGridLinePositions(),zt(a,this.renderGridLines(r,t,o,n.minorGridLines))),a},renderGridLines:function(e,t,n,i){var o,r,a,s,l,c,d,u={stroke:{width:i.width,color:i.color,dashType:i.dashType}},h=i.skip;for(void 0===h&&(h=0),o=i.step,void 0===o&&(o=0),r=this.gridLinesVisual(),a=h;a<t.length;a+=o)if(s=e.y-t[a],s>0)if(l=new De([e.x,e.y],s),i.type===Pe)r.append(new we.Circle(l,u));else{for(c=new ye(u),d=0;d<n.length;d++)c.lineTo(l.pointAt(n[d]+180));c.close(),r.append(c)}return r.children},getValue:function(e){var t,n,i,o,r,a,s,l=this.lineBox(),c=this.plotArea.polarAxis,d=c.majorAngles(),u=c.box.center(),h=e.distanceTo(u),p=h;return this.options.majorGridLines.type!==Pe&&d.length>1&&(t=e.x-u.x,n=e.y-u.y,i=(Ht(Math.atan2(n,t))+540)%360,d.sort(function(e,t){return _e(e,i)-_e(t,i)}),o=_e(d[0],d[1])/2,r=_e(i,d[0]),a=90-o,s=180-r-a,p=h*(Math.sin(Gt(s))/Math.sin(Gt(a)))),this.axisType().prototype.getValue.call(this,new Xt(l.x1,l.y2-p))}},ri=Xn.extend({radarMajorGridLinePositions:function(){return this.getTickPositions(this.options.majorUnit)},radarMinorGridLinePositions:function(){var e=this.options,t=0;return e.majorGridLines.visible&&(t=e.majorUnit),this.getTickPositions(e.minorUnit,t)},axisType:function(){return Xn}}),Me(ri.prototype,oi),ai=ei.extend({radarMajorGridLinePositions:function(){var e=[];return this.traverseMajorTicksPositions(function(t){e.push(t)},this.options.majorGridLines),e},radarMinorGridLinePositions:function(){var e=[];return this.traverseMinorTicksPositions(function(t){e.push(t)},this.options.minorGridLines),e},axisType:function(){return ei}}),Me(ai.prototype,oi),si=.333,li=.01,ci=Ce.extend({init:function(e){this.closed=e},process:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g=this,m=e.slice(0),v=[],_=this.closed,b=m.length;if(b>2&&(this.removeDuplicates(0,m),b=m.length),b<2||2===b&&m[0].equals(m[1]))return v;for(t=m[0],n=m[1],i=m[2],v.push(new Ee(t));t.equals(m[b-1]);)_=!0,m.pop(),b--;if(2===b)return o=this.tangent(t,n,gt,mt),Ut(v).controlOut(this.firstControlPoint(o,t,n,gt,mt)),v.push(new Ee(n,this.secondControlPoint(o,t,n,gt,mt))),v;for(_?(t=m[b-1],n=m[0],i=m[1],s=this.controlPoints(t,n,i),r=s[1],a=s[0]):(l=this.tangent(t,n,gt,mt),r=this.firstControlPoint(l,t,n,gt,mt)),c=r,d=0;d<=b-3;d++)g.removeDuplicates(d,m),b=m.length,d+3<=b&&(t=m[d],n=m[d+1],i=m[d+2],u=g.controlPoints(t,n,i),Ut(v).controlOut(c),c=u[1],h=u[0],v.push(new Ee(n,h)));return _?(t=m[b-2],n=m[b-1],i=m[0],p=this.controlPoints(t,n,i),Ut(v).controlOut(c),v.push(new Ee(n,p[0])),Ut(v).controlOut(p[1]),v.push(new Ee(i,a))):(f=this.tangent(n,i,gt,mt),Ut(v).controlOut(c),v.push(new Ee(i,this.secondControlPoint(f,n,i,gt,mt)))),v},removeDuplicates:function(e,t){for(;t[e+1]&&(t[e].equals(t[e+1])||t[e+1].equals(t[e+2]));)t.splice(e+1,1)},invertAxis:function(e,t,n){var i,o,r=!1;return e.x===t.x?r=!0:t.x===n.x?(t.y<n.y&&e.y<=t.y||n.y<t.y&&t.y<=e.y)&&(r=!0):(i=this.lineFunction(e,t),o=this.calculateFunction(i,n.x),e.y<=t.y&&n.y<=o||t.y<=e.y&&n.y>=o||(r=!0)),r},isLine:function(e,t,n){var i=this.lineFunction(e,t),o=this.calculateFunction(i,n.x);return e.x===t.x&&t.x===n.x||$t(o,1)===$t(n.y,1)},lineFunction:function(e,t){var n=(t.y-e.y)/(t.x-e.x),i=e.y-n*e.x;return[i,n]},controlPoints:function(e,t,n){var i,o,r,a,s,l,c=gt,d=mt,u=!1,h=!1;return this.isLine(e,t,n)?i=this.tangent(e,t,gt,mt):(o={x:this.isMonotonicByField(e,t,n,gt),y:this.isMonotonicByField(e,t,n,mt)},o.x&&o.y?(i=this.tangent(e,n,gt,mt),u=!0):(this.invertAxis(e,t,n)&&(c=mt,d=gt),o[c]?i=0:(r=n[d]<e[d]&&e[d]<=t[d]||e[d]<n[d]&&t[d]<=e[d]?be((n[d]-e[d])*(t[c]-e[c])):-be((n[c]-e[c])*(t[d]-e[d])),i=li*r,h=!0))),a=this.secondControlPoint(i,e,t,c,d),h&&(s=c,c=d,d=s),l=this.firstControlPoint(i,t,n,c,d),u&&(this.restrictControlPoint(e,t,a,i),this.restrictControlPoint(t,n,l,i)),[a,l]},restrictControlPoint:function(e,t,n,i){e.y<t.y?t.y<n.y?(n.x=e.x+(t.y-e.y)/i,n.y=t.y):n.y<e.y&&(n.x=t.x-(t.y-e.y)/i,n.y=e.y):n.y<t.y?(n.x=e.x-(e.y-t.y)/i,n.y=t.y):e.y<n.y&&(n.x=t.x+(e.y-t.y)/i,n.y=e.y)},tangent:function(e,t,n,i){var o,r=t[n]-e[n],a=t[i]-e[i];return o=0===r?0:a/r},isMonotonicByField:function(e,t,n,i){return n[i]>t[i]&&t[i]>e[i]||n[i]<t[i]&&t[i]<e[i]},firstControlPoint:function(e,t,n,i,o){var r=t[i],a=n[i],s=(a-r)*si;return this.point(r+s,t[o]+s*e,i,o)},secondControlPoint:function(e,t,n,i,o){var r=t[i],a=n[i],s=(a-r)*si;return this.point(a-s,n[o]-s*e,i,o)},point:function(e,t,n,i){var o=new Se.Point;return o[n]=e,o[i]=t,o},calculateFunction:function(e,t){var n,i=e.length,o=0;for(n=0;n<i;n++)o+=Math.pow(t,n)*e[n];return o}}),Ie.Gradients=cn,kendo.deepExtend(kendo.dataviz,{constants:vt,services:It,autoMajorUnit:x,Point:Xt,Box:Jt,Ring:Zt,Sector:en,ShapeBuilder:nn,ShapeElement:an,ChartElement:on,BoxElement:rn,RootElement:dn,FloatElement:un,Text:pn,TextBox:gn,Title:mn,AxisLabel:vn,Axis:kn,Note:wn,CategoryAxis:On,DateCategoryAxis:Kn,DateValueAxis:Jn,NumericAxis:Xn,LogarithmicAxis:ei,PolarAxis:ii,RadarCategoryAxis:ni,RadarNumericAxis:ri,RadarLogarithmicAxis:ai,CurveProcessor:ci,rectToBox:A,addClass:n,removeClass:i,alignPathToPixel:o,clockwise:r,convertableToNumber:l,deepExtend:Me,elementStyles:h,getSpacing:p,getTemplate:f,getter:Re,grep:g,hasClasses:m,HashMap:Mt,inArray:v,interpolateValue:_,InstanceObserver:Rt,isArray:t,isFunction:Fe,isNumber:a,isObject:c,isString:s,map:b,mousewheelDelta:w,FontLoader:Qt,setDefaultOptions:k,sparseArrayLimits:y,styleValue:d,append:zt,bindEvents:Bt,Class:Ce,defined:Lt,deg:Ht,elementOffset:Nt,elementSize:Ot,eventElement:Vt,eventCoordinates:Wt,last:Ut,limitValue:qt,logToConsole:kendo.logToConsole,objectKey:jt,rad:Gt,round:$t,unbindEvents:Yt,valueOrDefault:Kt,absoluteDateDiff:M,addDuration:L,addTicks:F,ceilDate:N,dateComparer:O,dateDiff:V,dateEquals:U,dateIndex:j,duration:G,floorDate:H,lteDateIndex:$,startOfWeek:P,toDate:R,parseDate:Y,parseDates:K,toTime:W})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/core/core.min",["dataviz/core/kendo-core.min"],e)}(function(){!function(e){var t=kendo.dataviz,n=t.services,i=kendo.drawing;t.SASS_THEMES=["sass","default-v2","bootstrap-v4","material-v2"],t.ExportMixin={extend:function(e,t){if(!e.exportVisual)throw Error("Mixin target has no exportVisual method defined.");e.exportSVG=this.exportSVG,e.exportImage=this.exportImage,e.exportPDF=this.exportPDF,t||(e.svg=this.svg,e.imageDataURL=this.imageDataURL)},exportSVG:function(e){return i.exportSVG(this.exportVisual(),e)},exportImage:function(e){return i.exportImage(this.exportVisual(e),e)},exportPDF:function(e){return i.exportPDF(this.exportVisual(),e)},svg:function(){if(i.svg.Surface)return i.svg.exportGroup(this.exportVisual());throw Error("SVG Export failed. Unable to export instantiate kendo.drawing.svg.Surface")},imageDataURL:function(){var t,n,o;if(!kendo.support.canvas)return null;if(i.canvas.Surface)return t=e("<div />").css({display:"none",width:this.element.width(),height:this.element.height()}).appendTo(document.body),n=new i.canvas.Surface(t[0]),n.draw(this.exportVisual()),o=n._rootElement.toDataURL(),n.destroy(),t.remove(),o;throw Error("Image Export failed. Unable to export instantiate kendo.drawing.canvas.Surface")}},n.IntlService.register({format:function(e){return kendo.format.apply(null,[e].concat(Array.prototype.slice.call(arguments,1)))},toString:kendo.toString,parseDate:kendo.parseDate}),n.TemplateService.register({compile:kendo.template}),t.Point2D=t.Point,t.Box2D=t.Box,t.mwDelta=function(e){return t.mousewheelDelta(e.originalEvent)}}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.core.min",["dataviz/core/kendo-core.min","dataviz/core/core.min"],e)}(function(){},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/themes/chart-base-theme.min",["kendo.dataviz.core.min"],e)}(function(){!function(){var e,t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C,S,T,D,A,E,I,M,F,R;window.kendo.dataviz=window.kendo.dataviz||{},e=1.5,t=.4,n="#000",i="Arial, Helvetica, sans-serif",o="11px "+i,r="12px "+i,a="16px "+i,s="transparent",l="#fff",c=function(){return{icon:{border:{width:1}},label:{font:r,padding:3},line:{length:10,width:2},visible:!0}},d=function(){return{labels:{font:r},notes:c(),title:{font:a,margin:5}}},u=function(){return{highlight:{markers:{border:{}}},line:{opacity:1,width:0},markers:{size:6,visible:!1},opacity:.4}},h=function(){return{highlight:{markers:{border:{}}},line:{opacity:1,width:0},markers:{size:6,visible:!1},opacity:.4}},p=function(){return{gap:e,spacing:t}},f=function(){return{outliersField:"",meanField:"",border:{_brightness:.8,width:1},downColor:l,gap:1,highlight:{border:{opacity:1,width:2},whiskers:{width:3},mean:{width:2},median:{width:2}},mean:{width:2},median:{width:2},spacing:.3,whiskers:{width:2}}},g=function(){return{border:{width:0},labels:{background:s},opacity:.6}},m=function(){return{gap:e,spacing:t,target:{color:"#ff0000"}}},v=function(){return{border:{_brightness:.8,width:1},downColor:l,gap:1,highlight:{border:{opacity:1,width:2},line:{width:2}},line:{color:n,width:1},spacing:.3}},_=function(){return{gap:e,spacing:t}},b=function(){return{margin:1}},w=function(){return{width:2}},k=function(){return{gap:1,highlight:{line:{opacity:1,width:3}},line:{width:1},spacing:.3}},y=function(){return{line:{opacity:1,width:0},markers:{size:6,visible:!1},opacity:.5}},x=function(){return{markers:{visible:!1},width:2}},C=function(){return{gap:e,spacing:t}},S=function(){return{gap:e,spacing:t}},T=function(){return{width:1}},D=function(){return{gap:.5,line:{color:n,width:1},spacing:t}},A=function(){return{labels:{background:"",color:"",padding:{top:5,bottom:5,left:7,right:7}}}},E=function(){return{labels:{background:"",color:"",padding:{top:5,bottom:5,left:7,right:7}}}},I=function(e){return{visible:!0,labels:{font:o},overlay:e.gradients?{}:{gradient:"none"},area:u(),rangeArea:h(),verticalRangeArea:h(),bar:p(),boxPlot:f(),bubble:g(),bullet:m(),candlestick:v(),column:_(),pie:A(),donut:b(),funnel:E(),horizontalWaterfall:D(),line:w(),notes:c(),ohlc:k(),radarArea:y(),radarLine:x(),polarArea:y(),polarLine:x(),rangeBar:C(),rangeColumn:S(),scatterLine:T(),verticalArea:u(),verticalBoxPlot:f(),verticalBullet:m(),verticalLine:w(),waterfall:D()}},M=function(){return{font:a}},F=function(){return{labels:{font:r}}},R=function(e){return void 0===e&&(e={}),{axisDefaults:d(),categoryAxis:{majorGridLines:{visible:!0}},navigator:{pane:{height:90,margin:{top:10}}},seriesDefaults:I(e),title:M(),legend:F()}},kendo.deepExtend(kendo.dataviz,{chartBaseTheme:R})}()},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/themes/auto-theme.min",["kendo.dataviz.core.min"],e)}(function(){!function(e){function t(t){function i(e,t){r(e,o(t,"backgroundColor"))}function o(e,t){return s.find(".k-var--"+e).css(t)}function r(e,t){for(var n=a,i=e.split("."),o=i.shift();i.length>0;)n=n[o]=n[o]||{},o=i.shift();n[o]=t}var a,s;return!t&&n?n:(a={chart:kendo.dataviz.chartBaseTheme()},s=e('<div style="display: none"> <div class="k-var--accent"></div> <div class="k-var--accent-contrast"></div> <div class="k-var--base"></div> <div class="k-var--background"></div> <div class="k-var--normal-background"></div> <div class="k-var--normal-text-color"></div> <div class="k-var--hover-background"></div> <div class="k-var--hover-text-color"></div> <div class="k-var--selected-background"></div> <div class="k-var--selected-text-color"></div> <div class="k-var--chart-error-bars-background"></div> <div class="k-var--chart-notes-background"></div> <div class="k-var--chart-notes-border"></div> <div class="k-var--chart-notes-lines"></div> <div class="k-var--chart-crosshair-background"></div> <div class="k-var--chart-inactive"></div> <div class="k-var--chart-major-lines"></div> <div class="k-var--chart-minor-lines"></div> <div class="k-var--chart-area-opacity"></div> <div class="k-widget"> <div class="k-var--chart-font"></div> <div class="k-var--chart-title-font"></div> <div class="k-var--chart-label-font"></div> </div> <div class="k-var--series"> <div class="k-var--series-a"></div> <div class="k-var--series-b"></div> <div class="k-var--series-c"></div> <div class="k-var--series-d"></div> <div class="k-var--series-e"></div> <div class="k-var--series-f"></div> </div> <div class="k-var--gauge-pointer"></div> <div class="k-var--gauge-track"></div></div>').appendTo(document.body),function(){i("chart.axisDefaults.crosshair.color","chart-crosshair-background"),i("chart.axisDefaults.labels.color","normal-text-color"),i("chart.axisDefaults.line.color","chart-major-lines"),i("chart.axisDefaults.majorGridLines.color","chart-major-lines"),i("chart.axisDefaults.minorGridLines.color","chart-minor-lines"),i("chart.axisDefaults.notes.icon.background","chart-notes-background"),i("chart.axisDefaults.notes.icon.border.color","chart-notes-border"),i("chart.axisDefaults.notes.line.color","chart-notes-lines"),i("chart.axisDefaults.title.color","normal-text-color"),i("chart.chartArea.background","background"),i("chart.legend.inactiveItems.labels.color","chart-inactive"),i("chart.legend.inactiveItems.markers.color","chart-inactive"),i("chart.legend.labels.color","normal-text-color"),i("chart.seriesDefaults.boxPlot.downColor","chart-major-lines"),i("chart.seriesDefaults.boxPlot.mean.color","base"),i("chart.seriesDefaults.boxPlot.median.color","base"),i("chart.seriesDefaults.boxPlot.whiskers.color","accent"),i("chart.seriesDefaults.bullet.target.color","accent"),i("chart.seriesDefaults.candlestick.downColor","normal-text-color"),i("chart.seriesDefaults.candlestick.line.color","normal-text-color"),i("chart.seriesDefaults.errorBars.color","chart-error-bars-background"),i("chart.seriesDefaults.horizontalWaterfall.line.color","chart-major-lines"),i("chart.seriesDefaults.icon.border.color","chart-major-lines"),i("chart.seriesDefaults.labels.background","background"),i("chart.seriesDefaults.labels.color","normal-text-color"),i("chart.seriesDefaults.notes.icon.background","chart-notes-background"),i("chart.seriesDefaults.notes.icon.border.color","chart-notes-border"),i("chart.seriesDefaults.notes.line.color","chart-notes-lines"),i("chart.seriesDefaults.verticalBoxPlot.downColor","chart-major-lines"),i("chart.seriesDefaults.verticalBoxPlot.mean.color","base"),i("chart.seriesDefaults.verticalBoxPlot.median.color","base"),i("chart.seriesDefaults.verticalBoxPlot.whiskers.color","accent"),i("chart.seriesDefaults.verticalBullet.target.color","accent"),i("chart.seriesDefaults.waterfall.line.color","chart-major-lines"),i("chart.title.color","normal-text-color"),r("chart.seriesDefaults.labels.opacity",o("chart-area-opacity","opacity")),i("diagram.shapeDefaults.fill.color","accent"),i("diagram.shapeDefaults.content.color","accent-contrast"),i("diagram.shapeDefaults.connectorDefaults.fill.color","normal-text-color"),i("diagram.shapeDefaults.connectorDefaults.stroke.color","accent-contrast"),i("diagram.shapeDefaults.connectorDefaults.hover.fill.color","accent-contrast"),i("diagram.shapeDefaults.connectorDefaults.hover.stroke.color","normal-text-color"),i("diagram.editable.resize.handles.stroke.color","normal-text-color"),i("diagram.editable.resize.handles.fill.color","normal-background"),i("diagram.editable.resize.handles.hover.stroke.color","normal-text-color"),i("diagram.editable.resize.handles.hover.fill.color","normal-text-color"),i("diagram.selectable.stroke.color","normal-text-color"),i("diagram.connectionDefaults.stroke.color","normal-text-color"),i("diagram.connectionDefaults.content.color","normal-text-color"),i("diagram.connectionDefaults.selection.handles.fill.color","accent-contrast"),i("diagram.connectionDefaults.selection.handles.stroke.color","normal-text-color"),i("diagram.connectionDefaults.selection.stroke.color","normal-text-color"),i("gauge.pointer.color","gauge-pointer"),i("gauge.scale.labels.color","normal-text-color"),i("gauge.scale.minorTicks.color","normal-text-color"),i("gauge.scale.majorTicks.color","normal-text-color"),i("gauge.scale.line.color","normal-text-color"),i("gauge.scale.rangePlaceholderColor","gauge-track")}(),function(){function e(e){return o(e,"fontSize")+" "+o(e,"fontFamily")}var t=e("chart-font"),n=e("chart-title-font"),i=e("chart-label-font");r("chart.axisDefaults.labels.font",i),r("chart.axisDefaults.notes.label.font",t),r("chart.axisDefaults.title.font",t),r("chart.legend.labels.font",t),r("chart.seriesDefaults.labels.font",i),r("chart.seriesDefaults.notes.label.font",t),r("chart.title.font",n)}(),function(){function t(e){return e.toLowerCase().charCodeAt(0)-"a".charCodeAt(0)}function n(e){return t(e.match(/series-([a-z])$/)[1])}var i=e(".k-var--series div").toArray(),o=i.reduce(function(t,i){var o=n(i.className);return t[o]=e(i).css("backgroundColor"),t},[]);r("chart.seriesColors",o)}(),s.remove(),n=a,a)}var n;kendo.dataviz.autoTheme=t}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/themes/themes.min",["dataviz/themes/chart-base-theme.min"],e)}(function(){return function(e){function t(t,n){return e.map(t,function(e,t){return[[e,n[t]]]})}var n=window.kendo,i=n.dataviz.ui,o=n.deepExtend,r="#000",a="Arial,Helvetica,sans-serif",s="12px "+a,l="#fff",c=n.dataviz.chartBaseTheme({gradients:!0}),d={scale:{labels:{font:s}}},u={shapeDefaults:{hover:{opacity:.2},stroke:{width:0}},editable:{resize:{handles:{width:7,height:7}}},selectable:{stroke:{width:1,dashType:"dot"}},connectionDefaults:{stroke:{width:2},selection:{handles:{width:8,height:8}},editable:{tools:["edit","delete"]}}},h=i.themes,p=i.registerTheme=function(e,t){var n,i={};i.chart=o({},c,t.chart),i.gauge=o({},d,t.gauge),i.diagram=o({},u,t.diagram),i.treeMap=o({},t.treeMap),n=i.chart.seriesDefaults,n.verticalLine=o({},n.line),n.verticalArea=o({},n.area),n.rangeArea=o({},n.area),n.verticalRangeArea=o({},n.rangeArea),n.verticalBoxPlot=o({},n.boxPlot),n.polarArea=o({},n.radarArea),n.polarLine=o({},n.radarLine),h[e]=i};p("black",{chart:{title:{color:l},legend:{labels:{color:l},inactiveItems:{labels:{color:"#919191"},markers:{color:"#919191"}}},seriesDefaults:{labels:{color:l},errorBars:{color:l},notes:{icon:{background:"#3b3b3b",border:{ +color:"#8e8e8e"}},label:{color:l},line:{color:"#8e8e8e"}},pie:{overlay:{gradient:"sharpBevel"}},donut:{overlay:{gradient:"sharpGlass"}},line:{markers:{background:"#3d3d3d"}},scatter:{markers:{background:"#3d3d3d"}},scatterLine:{markers:{background:"#3d3d3d"}},waterfall:{line:{color:"#8e8e8e"}},horizontalWaterfall:{line:{color:"#8e8e8e"}},candlestick:{downColor:"#555",line:{color:l},border:{_brightness:1.5,opacity:1},highlight:{border:{color:l,opacity:.2}}},ohlc:{line:{color:l}}},chartArea:{background:"#3d3d3d"},seriesColors:["#0081da","#3aafff","#99c900","#ffeb3d","#b20753","#ff4195"],axisDefaults:{line:{color:"#8e8e8e"},labels:{color:l},majorGridLines:{color:"#545454"},minorGridLines:{color:"#454545"},title:{color:l},crosshair:{color:"#8e8e8e"},notes:{icon:{background:"#3b3b3b",border:{color:"#8e8e8e"}},label:{color:l},line:{color:"#8e8e8e"}}}},gauge:{pointer:{color:"#0070e4"},scale:{rangePlaceholderColor:"#1d1d1d",labels:{color:l},minorTicks:{color:l},majorTicks:{color:l},line:{color:l}}},diagram:{shapeDefaults:{fill:{color:"#0066cc"},connectorDefaults:{fill:{color:l},stroke:{color:"#384049"},hover:{fill:{color:"#3d3d3d"},stroke:{color:"#efefef"}}},content:{color:l}},editable:{resize:{handles:{fill:{color:"#3d3d3d"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:l}}}},rotate:{thumb:{stroke:{color:l},fill:{color:l}}}},selectable:{stroke:{color:l}},connectionDefaults:{stroke:{color:l},content:{color:l},selection:{handles:{fill:{color:"#3d3d3d"},stroke:{color:"#efefef"}}}}},treeMap:{colors:[["#0081da","#314b5c"],["#3aafff","#3c5464"],["#99c900","#4f5931"],["#ffeb3d","#64603d"],["#b20753","#543241"],["#ff4195","#643e4f"]]}}),p("blueopal",{chart:{title:{color:"#293135"},legend:{labels:{color:"#293135"},inactiveItems:{labels:{color:"#27A5BA"},markers:{color:"#27A5BA"}}},seriesDefaults:{labels:{color:r,background:l,opacity:.5},errorBars:{color:"#293135"},candlestick:{downColor:"#c4d0d5",line:{color:"#9aabb2"}},waterfall:{line:{color:"#9aabb2"}},horizontalWaterfall:{line:{color:"#9aabb2"}},notes:{icon:{background:"transparent",border:{color:"#9aabb2"}},label:{color:"#293135"},line:{color:"#9aabb2"}}},seriesColors:["#0069a5","#0098ee","#7bd2f6","#ffb800","#ff8517","#e34a00"],axisDefaults:{line:{color:"#9aabb2"},labels:{color:"#293135"},majorGridLines:{color:"#c4d0d5"},minorGridLines:{color:"#edf1f2"},title:{color:"#293135"},crosshair:{color:"#9aabb2"},notes:{icon:{background:"transparent",border:{color:"#9aabb2"}},label:{color:"#293135"},line:{color:"#9aabb2"}}}},gauge:{pointer:{color:"#005c83"},scale:{rangePlaceholderColor:"#daecf4",labels:{color:"#293135"},minorTicks:{color:"#293135"},majorTicks:{color:"#293135"},line:{color:"#293135"}}},diagram:{shapeDefaults:{fill:{color:"#7ec6e3"},connectorDefaults:{fill:{color:"#003f59"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:"#003f59"}}},content:{color:"#293135"}},editable:{resize:{handles:{fill:{color:l},stroke:{color:"#003f59"},hover:{fill:{color:"#003f59"},stroke:{color:"#003f59"}}}},rotate:{thumb:{stroke:{color:"#003f59"},fill:{color:"#003f59"}}}},selectable:{stroke:{color:"#003f59"}},connectionDefaults:{stroke:{color:"#003f59"},content:{color:"#293135"},selection:{handles:{fill:{color:"#3d3d3d"},stroke:{color:"#efefef"}}}}},treeMap:{colors:[["#0069a5","#bad7e7"],["#0098ee","#b9e0f5"],["#7bd2f6","#ceeaf6"],["#ffb800","#e6e3c4"],["#ff8517","#e4d8c8"],["#e34a00","#ddccc2"]]}}),p("highcontrast",{chart:{title:{color:"#ffffff"},legend:{labels:{color:"#ffffff"},inactiveItems:{labels:{color:"#66465B"},markers:{color:"#66465B"}}},seriesDefaults:{labels:{color:"#ffffff"},errorBars:{color:"#ffffff"},notes:{icon:{background:"transparent",border:{color:"#ffffff"}},label:{color:"#ffffff"},line:{color:"#ffffff"}},pie:{overlay:{gradient:"sharpGlass"}},donut:{overlay:{gradient:"sharpGlass"}},line:{markers:{background:"#2c232b"}},scatter:{markers:{background:"#2c232b"}},scatterLine:{markers:{background:"#2c232b"}},area:{opacity:.5},waterfall:{line:{color:"#ffffff"}},horizontalWaterfall:{line:{color:"#ffffff"}},candlestick:{downColor:"#664e62",line:{color:"#ffffff"},border:{_brightness:1.5,opacity:1},highlight:{border:{color:"#ffffff",opacity:1}}},ohlc:{line:{color:"#ffffff"}}},chartArea:{background:"#2c232b"},seriesColors:["#a7008f","#ffb800","#3aafff","#99c900","#b20753","#ff4195"],axisDefaults:{line:{color:"#ffffff"},labels:{color:"#ffffff"},majorGridLines:{color:"#664e62"},minorGridLines:{color:"#4f394b"},title:{color:"#ffffff"},crosshair:{color:"#ffffff"},notes:{icon:{background:"transparent",border:{color:"#ffffff"}},label:{color:"#ffffff"},line:{color:"#ffffff"}}}},gauge:{pointer:{color:"#a7008f"},scale:{rangePlaceholderColor:"#2c232b",labels:{color:"#ffffff"},minorTicks:{color:"#2c232b"},majorTicks:{color:"#664e62"},line:{color:"#ffffff"}}},diagram:{shapeDefaults:{fill:{color:"#a7018f"},connectorDefaults:{fill:{color:l},stroke:{color:"#2c232b"},hover:{fill:{color:"#2c232b"},stroke:{color:l}}},content:{color:l}},editable:{resize:{handles:{fill:{color:"#2c232b"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:l}}}},rotate:{thumb:{stroke:{color:l},fill:{color:l}}}},selectable:{stroke:{color:l}},connectionDefaults:{stroke:{color:l},content:{color:l},selection:{handles:{fill:{color:"#2c232b"},stroke:{color:l}}}}},treeMap:{colors:[["#a7008f","#451c3f"],["#ffb800","#564122"],["#3aafff","#2f3f55"],["#99c900","#424422"],["#b20753","#471d33"],["#ff4195","#562940"]]}}),p("default",{chart:{title:{color:"#8e8e8e"},legend:{labels:{color:"#232323"},inactiveItems:{labels:{color:"#919191"},markers:{color:"#919191"}}},seriesDefaults:{labels:{color:r,background:l,opacity:.5},errorBars:{color:"#232323"},candlestick:{downColor:"#dedede",line:{color:"#8d8d8d"}},waterfall:{line:{color:"#8e8e8e"}},horizontalWaterfall:{line:{color:"#8e8e8e"}},notes:{icon:{background:"transparent",border:{color:"#8e8e8e"}},label:{color:"#232323"},line:{color:"#8e8e8e"}}},seriesColors:["#ff6800","#a0a700","#ff8d00","#678900","#ffb53c","#396000"],axisDefaults:{line:{color:"#8e8e8e"},labels:{color:"#232323"},minorGridLines:{color:"#f0f0f0"},majorGridLines:{color:"#dfdfdf"},title:{color:"#232323"},crosshair:{color:"#8e8e8e"},notes:{icon:{background:"transparent",border:{color:"#8e8e8e"}},label:{color:"#232323"},line:{color:"#8e8e8e"}}}},gauge:{pointer:{color:"#ea7001"},scale:{rangePlaceholderColor:"#dedede",labels:{color:"#2e2e2e"},minorTicks:{color:"#2e2e2e"},majorTicks:{color:"#2e2e2e"},line:{color:"#2e2e2e"}}},diagram:{shapeDefaults:{fill:{color:"#e15613"},connectorDefaults:{fill:{color:"#282828"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:"#282828"}}},content:{color:"#2e2e2e"}},editable:{resize:{handles:{fill:{color:l},stroke:{color:"#282828"},hover:{fill:{color:"#282828"},stroke:{color:"#282828"}}}},rotate:{thumb:{stroke:{color:"#282828"},fill:{color:"#282828"}}}},selectable:{stroke:{color:"#a7018f"}},connectionDefaults:{stroke:{color:"#282828"},content:{color:"#2e2e2e"},selection:{handles:{fill:{color:l},stroke:{color:"#282828"}}}}},treeMap:{colors:[["#ff6800","#edcfba"],["#a0a700","#dadcba"],["#ff8d00","#edd7ba"],["#678900","#cfd6ba"],["#ffb53c","#eddfc6"],["#396000","#c6ceba"]]}}),p("silver",{chart:{title:{color:"#4e5968"},legend:{labels:{color:"#4e5968"},inactiveItems:{labels:{color:"#B1BCC8"},markers:{color:"#B1BCC8"}}},seriesDefaults:{labels:{color:"#293135",background:"#eaeaec",opacity:.5},errorBars:{color:"#4e5968"},notes:{icon:{background:"transparent",border:{color:"#4e5968"}},label:{color:"#4e5968"},line:{color:"#4e5968"}},line:{markers:{background:"#eaeaec"}},scatter:{markers:{background:"#eaeaec"}},scatterLine:{markers:{background:"#eaeaec"}},pie:{connectors:{color:"#A6B1C0"}},donut:{connectors:{color:"#A6B1C0"}},waterfall:{line:{color:"#a6b1c0"}},horizontalWaterfall:{line:{color:"#a6b1c0"}},candlestick:{downColor:"#a6afbe"}},chartArea:{background:"#eaeaec"},seriesColors:["#007bc3","#76b800","#ffae00","#ef4c00","#a419b7","#430B62"],axisDefaults:{line:{color:"#a6b1c0"},labels:{color:"#4e5968"},majorGridLines:{color:"#dcdcdf"},minorGridLines:{color:"#eeeeef"},title:{color:"#4e5968"},crosshair:{color:"#a6b1c0"},notes:{icon:{background:"transparent",border:{color:"#4e5968"}},label:{color:"#4e5968"},line:{color:"#4e5968"}}}},gauge:{pointer:{color:"#0879c0"},scale:{rangePlaceholderColor:"#f3f3f4",labels:{color:"#515967"},minorTicks:{color:"#515967"},majorTicks:{color:"#515967"},line:{color:"#515967"}}},diagram:{shapeDefaults:{fill:{color:"#1c82c2"},connectorDefaults:{fill:{color:"#515967"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:"#282828"}}},content:{color:"#515967"}},editable:{resize:{handles:{fill:{color:l},stroke:{color:"#515967"},hover:{fill:{color:"#515967"},stroke:{color:"#515967"}}}},rotate:{thumb:{stroke:{color:"#515967"},fill:{color:"#515967"}}}},selectable:{stroke:{color:"#515967"}},connectionDefaults:{stroke:{color:"#515967"},content:{color:"#515967"},selection:{handles:{fill:{color:l},stroke:{color:"#515967"}}}}},treeMap:{colors:[["#007bc3","#c2dbea"],["#76b800","#dae7c3"],["#ffae00","#f5e5c3"],["#ef4c00","#f2d2c3"],["#a419b7","#e3c7e8"],["#430b62","#d0c5d7"]]}}),p("metro",{chart:{title:{color:"#777777"},legend:{labels:{color:"#777777"},inactiveItems:{labels:{color:"#CBCBCB"},markers:{color:"#CBCBCB"}}},seriesDefaults:{labels:{color:r},errorBars:{color:"#777777"},notes:{icon:{background:"transparent",border:{color:"#777777"}},label:{color:"#777777"},line:{color:"#777777"}},candlestick:{downColor:"#c7c7c7",line:{color:"#787878"}},waterfall:{line:{color:"#c7c7c7"}},horizontalWaterfall:{line:{color:"#c7c7c7"}},overlay:{gradient:"none"},border:{_brightness:1}},seriesColors:["#8ebc00","#309b46","#25a0da","#ff6900","#e61e26","#d8e404","#16aba9","#7e51a1","#313131","#ed1691"],axisDefaults:{line:{color:"#c7c7c7"},labels:{color:"#777777"},minorGridLines:{color:"#c7c7c7"},majorGridLines:{color:"#c7c7c7"},title:{color:"#777777"},crosshair:{color:"#c7c7c7"},notes:{icon:{background:"transparent",border:{color:"#777777"}},label:{color:"#777777"},line:{color:"#777777"}}}},gauge:{pointer:{color:"#8ebc00"},scale:{rangePlaceholderColor:"#e6e6e6",labels:{color:"#777"},minorTicks:{color:"#777"},majorTicks:{color:"#777"},line:{color:"#777"}}},diagram:{shapeDefaults:{fill:{color:"#8ebc00"},connectorDefaults:{fill:{color:r},stroke:{color:l},hover:{fill:{color:l},stroke:{color:r}}},content:{color:"#777"}},editable:{resize:{handles:{fill:{color:l},stroke:{color:"#787878"},hover:{fill:{color:"#787878"},stroke:{color:"#787878"}}}},rotate:{thumb:{stroke:{color:"#787878"},fill:{color:"#787878"}}}},selectable:{stroke:{color:"#515967"}},connectionDefaults:{stroke:{color:"#787878"},content:{color:"#777"},selection:{handles:{fill:{color:l},stroke:{color:"#787878"}}}}},treeMap:{colors:[["#8ebc00","#e8f2cc"],["#309b46","#d6ebda"],["#25a0da","#d3ecf8"],["#ff6900","#ffe1cc"],["#e61e26","#fad2d4"],["#d8e404","#f7facd"],["#16aba9","#d0eeee"],["#7e51a1","#e5dcec"],["#313131","#d6d6d6"],["#ed1691","#fbd0e9"]]}}),p("metroblack",{chart:{title:{color:"#ffffff"},legend:{labels:{color:"#ffffff"},inactiveItems:{labels:{color:"#797979"},markers:{color:"#797979"}}},seriesDefaults:{border:{_brightness:1},labels:{color:"#ffffff"},errorBars:{color:"#ffffff"},notes:{icon:{background:"transparent",border:{color:"#cecece"}},label:{color:"#ffffff"},line:{color:"#cecece"}},line:{markers:{background:"#0e0e0e"}},bubble:{opacity:.6},scatter:{markers:{background:"#0e0e0e"}},scatterLine:{markers:{background:"#0e0e0e"}},candlestick:{downColor:"#828282",line:{color:"#ffffff"}},waterfall:{line:{color:"#cecece"}},horizontalWaterfall:{line:{color:"#cecece"}},overlay:{gradient:"none"}},chartArea:{background:"#0e0e0e"},seriesColors:["#00aba9","#309b46","#8ebc00","#ff6900","#e61e26","#d8e404","#25a0da","#7e51a1","#313131","#ed1691"],axisDefaults:{line:{color:"#cecece"},labels:{color:"#ffffff"},minorGridLines:{color:"#2d2d2d"},majorGridLines:{color:"#333333"},title:{color:"#ffffff"},crosshair:{color:"#cecece"},notes:{icon:{background:"transparent",border:{color:"#cecece"}},label:{color:"#ffffff"},line:{color:"#cecece"}}}},gauge:{pointer:{color:"#00aba9"},scale:{rangePlaceholderColor:"#2d2d2d",labels:{color:"#ffffff"},minorTicks:{color:"#333333"},majorTicks:{color:"#cecece"},line:{color:"#cecece"}}},diagram:{shapeDefaults:{fill:{color:"#00aba9"},connectorDefaults:{fill:{color:l},stroke:{color:"#0e0e0e"},hover:{fill:{color:"#0e0e0e"},stroke:{color:l}}},content:{color:l}},editable:{resize:{handles:{fill:{color:"#0e0e0e"},stroke:{color:"#787878"},hover:{fill:{color:"#787878"},stroke:{color:"#787878"}}}},rotate:{thumb:{stroke:{color:l},fill:{color:l}}}},selectable:{stroke:{color:"#787878"}},connectionDefaults:{stroke:{color:l},content:{color:l},selection:{handles:{fill:{color:"#0e0e0e"},stroke:{color:l}}}}},treeMap:{colors:[["#00aba9","#0b2d2d"],["#309b46","#152a19"],["#8ebc00","#28310b"],["#ff6900","#3e200b"],["#e61e26","#391113"],["#d8e404","#36390c"],["#25a0da","#132b37"],["#7e51a1","#241b2b"],["#313131","#151515"],["#ed1691","#3b1028"]]}}),p("moonlight",{chart:{title:{color:"#ffffff"},legend:{labels:{color:"#ffffff"},inactiveItems:{labels:{color:"#A1A7AB"},markers:{color:"#A1A7AB"}}},seriesDefaults:{labels:{color:"#ffffff"},errorBars:{color:"#ffffff"},notes:{icon:{background:"transparent",border:{color:"#8c909e"}},label:{color:"#ffffff"},line:{color:"#8c909e"}},pie:{overlay:{gradient:"sharpBevel"}},donut:{overlay:{gradient:"sharpGlass"}},line:{markers:{background:"#212a33"}},bubble:{opacity:.6},scatter:{markers:{background:"#212a33"}},scatterLine:{markers:{background:"#212a33"}},area:{opacity:.3},candlestick:{downColor:"#757d87",line:{color:"#ea9d06"},border:{_brightness:1.5,opacity:1},highlight:{border:{color:l,opacity:.2}}},waterfall:{line:{color:"#8c909e"}},horizontalWaterfall:{line:{color:"#8c909e"}},ohlc:{line:{color:"#ea9d06"}}},chartArea:{background:"#212a33"},seriesColors:["#ffca08","#ff710f","#ed2e24","#ff9f03","#e13c02","#a00201"],axisDefaults:{line:{color:"#8c909e"},minorTicks:{color:"#8c909e"},majorTicks:{color:"#8c909e"},labels:{color:"#ffffff"},majorGridLines:{color:"#3e424d"},minorGridLines:{color:"#2f3640"},title:{color:"#ffffff"},crosshair:{color:"#8c909e"},notes:{icon:{background:"transparent",border:{color:"#8c909e"}},label:{color:"#ffffff"},line:{color:"#8c909e"}}}},gauge:{pointer:{color:"#f4af03"},scale:{rangePlaceholderColor:"#2f3640",labels:{color:l},minorTicks:{color:"#8c909e"},majorTicks:{color:"#8c909e"},line:{color:"#8c909e"}}},diagram:{shapeDefaults:{fill:{color:"#f3ae03"},connectorDefaults:{fill:{color:l},stroke:{color:"#414550"},hover:{fill:{color:"#414550"},stroke:{color:l}}},content:{color:l}},editable:{resize:{handles:{fill:{color:"#414550"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:l}}}},rotate:{thumb:{stroke:{color:l},fill:{color:l}}}},selectable:{stroke:{color:l}},connectionDefaults:{stroke:{color:l},content:{color:l},selection:{handles:{fill:{color:"#414550"},stroke:{color:l}}}}},treeMap:{colors:[["#ffca08","#4e4b2b"],["#ff710f","#4e392d"],["#ed2e24","#4b2c31"],["#ff9f03","#4e422a"],["#e13c02","#482e2a"],["#a00201","#3b232a"]]}}),p("uniform",{chart:{title:{color:"#686868"},legend:{labels:{color:"#686868"},inactiveItems:{labels:{color:"#B6B6B6"},markers:{color:"#B6B6B6"}}},seriesDefaults:{labels:{color:"#686868"},errorBars:{color:"#686868"},notes:{icon:{background:"transparent",border:{color:"#9e9e9e"}},label:{color:"#686868"},line:{color:"#9e9e9e"}},pie:{overlay:{gradient:"sharpBevel"}},donut:{overlay:{gradient:"sharpGlass"}},line:{markers:{background:"#ffffff"}},bubble:{opacity:.6},scatter:{markers:{background:"#ffffff"}},scatterLine:{markers:{background:"#ffffff"}},area:{opacity:.3},candlestick:{downColor:"#cccccc",line:{color:"#cccccc"},border:{_brightness:1.5,opacity:1},highlight:{border:{color:"#cccccc",opacity:.2}}},waterfall:{line:{color:"#9e9e9e"}},horizontalWaterfall:{line:{color:"#9e9e9e"}},ohlc:{line:{color:"#cccccc"}}},chartArea:{background:"#ffffff"},seriesColors:["#527aa3","#6f91b3","#8ca7c2","#a8bdd1","#c5d3e0","#e2e9f0"],axisDefaults:{line:{color:"#9e9e9e"},minorTicks:{color:"#aaaaaa"},majorTicks:{color:"#888888"},labels:{color:"#686868"},majorGridLines:{color:"#dadada"},minorGridLines:{color:"#e7e7e7"},title:{color:"#686868"},crosshair:{color:"#9e9e9e"},notes:{icon:{background:"transparent",border:{color:"#9e9e9e"}},label:{color:"#686868"},line:{color:"#9e9e9e"}}}},gauge:{pointer:{color:"#527aa3"},scale:{rangePlaceholderColor:"#e7e7e7",labels:{color:"#686868"},minorTicks:{color:"#aaaaaa"},majorTicks:{color:"#888888"},line:{color:"#9e9e9e"}}},diagram:{shapeDefaults:{fill:{color:"#d1d1d1"},connectorDefaults:{fill:{color:"#686868"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:"#686868"}}},content:{color:"#686868"}},editable:{resize:{handles:{fill:{color:l},stroke:{color:"#686868"},hover:{fill:{color:"#686868"},stroke:{color:"#686868"}}}},rotate:{thumb:{stroke:{color:"#686868"},fill:{color:"#686868"}}}},selectable:{stroke:{color:"#686868"}},connectionDefaults:{stroke:{color:"#686868"},content:{color:"#686868"},selection:{handles:{fill:{color:l},stroke:{color:"#686868"}}}}},treeMap:{colors:[["#527aa3","#d0d8e1"],["#6f91b3","#d6dde4"],["#8ca7c2","#dce1e7"],["#a8bdd1","#e2e6ea"],["#c5d3e0","#e7eaed"],["#e2e9f0","#edeff0"]]}}),p("bootstrap",{chart:{title:{color:"#333333"},legend:{labels:{color:"#333333"},inactiveItems:{labels:{color:"#999999"},markers:{color:"#9A9A9A"}}},seriesDefaults:{labels:{color:"#333333"},overlay:{gradient:"none"},errorBars:{color:"#343434"},notes:{icon:{background:"#000000",border:{color:"#000000"}},label:{color:"#333333"},line:{color:"#000000"}},pie:{overlay:{gradient:"none"}},donut:{overlay:{gradient:"none"}},line:{markers:{background:"#ffffff"}},bubble:{opacity:.6},scatter:{markers:{background:"#ffffff"}},scatterLine:{markers:{background:"#ffffff"}},area:{opacity:.8},candlestick:{downColor:"#d0d0d0",line:{color:"#333333"},border:{_brightness:1.5,opacity:1},highlight:{border:{color:"#b8b8b8",opacity:.2}}},waterfall:{line:{color:"#cccccc"}},horizontalWaterfall:{line:{color:"#cccccc"}},ohlc:{line:{color:"#333333"}}},chartArea:{background:"#ffffff"},seriesColors:["#428bca","#5bc0de","#5cb85c","#f2b661","#e67d4a","#da3b36"],axisDefaults:{line:{color:"#cccccc"},minorTicks:{color:"#ebebeb"},majorTicks:{color:"#cccccc"},labels:{color:"#333333"},majorGridLines:{color:"#cccccc"},minorGridLines:{color:"#ebebeb"},title:{color:"#333333"},crosshair:{color:"#000000"},notes:{icon:{background:"#000000",border:{color:"#000000"}},label:{color:"#ffffff"},line:{color:"#000000"}}}},gauge:{pointer:{color:"#428bca"},scale:{rangePlaceholderColor:"#cccccc",labels:{color:"#333333"},minorTicks:{color:"#ebebeb"},majorTicks:{color:"#cccccc"},line:{color:"#cccccc"}}},diagram:{shapeDefaults:{fill:{color:"#428bca"},connectorDefaults:{fill:{color:"#333333"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:"#333333"}}},content:{color:"#333333"}},editable:{resize:{handles:{fill:{color:l},stroke:{color:"#333333"},hover:{fill:{color:"#333333"},stroke:{color:"#333333"}}}},rotate:{thumb:{stroke:{color:"#333333"},fill:{color:"#333333"}}}},selectable:{stroke:{color:"#333333"}},connectionDefaults:{stroke:{color:"#c4c4c4"},content:{color:"#333333"},selection:{handles:{fill:{color:l},stroke:{color:"#333333"}},stroke:{color:"#333333"}}}},treeMap:{colors:[["#428bca","#d1e0ec"],["#5bc0de","#d6eaf0"],["#5cb85c","#d6e9d6"],["#5cb85c","#f4e8d7"],["#e67d4a","#f2ddd3"],["#da3b36","#f0d0cf"]]}}),p("flat",{chart:{title:{color:"#4c5356"},legend:{labels:{color:"#4c5356"},inactiveItems:{labels:{color:"#CBCBCB"},markers:{color:"#CBCBCB"}}},seriesDefaults:{labels:{color:"#4c5356"},errorBars:{color:"#4c5356"},notes:{icon:{background:"transparent",border:{color:"#cdcdcd"}},label:{color:"#4c5356"},line:{color:"#cdcdcd"}},candlestick:{downColor:"#c7c7c7",line:{color:"#787878"}},area:{opacity:.9},waterfall:{line:{color:"#cdcdcd"}},horizontalWaterfall:{line:{color:"#cdcdcd"}},overlay:{gradient:"none"},border:{_brightness:1}},seriesColors:["#10c4b2","#ff7663","#ffb74f","#a2df53","#1c9ec4","#ff63a5","#1cc47b"],axisDefaults:{line:{color:"#cdcdcd"},labels:{color:"#4c5356"},minorGridLines:{color:"#cdcdcd"},majorGridLines:{color:"#cdcdcd"},title:{color:"#4c5356"},crosshair:{color:"#cdcdcd"},notes:{icon:{background:"transparent",border:{color:"#cdcdcd"}},label:{color:"#4c5356"},line:{color:"#cdcdcd"}}}},gauge:{pointer:{color:"#10c4b2"},scale:{rangePlaceholderColor:"#cdcdcd",labels:{color:"#4c5356"},minorTicks:{color:"#4c5356"},majorTicks:{color:"#4c5356"},line:{color:"#4c5356"}}},diagram:{shapeDefaults:{fill:{color:"#10c4b2"},connectorDefaults:{fill:{color:"#363940"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:"#363940"}}},content:{color:"#4c5356"}},editable:{resize:{handles:{fill:{color:l},stroke:{color:"#363940"},hover:{fill:{color:"#363940"},stroke:{color:"#363940"}}}},rotate:{thumb:{stroke:{color:"#363940"},fill:{color:"#363940"}}}},selectable:{stroke:{color:"#363940"}},connectionDefaults:{stroke:{color:"#cdcdcd"},content:{color:"#4c5356"},selection:{handles:{fill:{color:l},stroke:{color:"#363940"}},stroke:{color:"#363940"}}}},treeMap:{colors:[["#10c4b2","#cff3f0"],["#ff7663","#ffe4e0"],["#ffb74f","#fff1dc"],["#a2df53","#ecf9dd"],["#1c9ec4","#d2ecf3"],["#ff63a5","#ffe0ed"],["#1cc47b","#d2f3e5"]]}}),p("material",{chart:{title:{color:"#444444"},legend:{labels:{color:"#444444"},inactiveItems:{labels:{color:"#CBCBCB"},markers:{color:"#CBCBCB"}}},seriesDefaults:{labels:{color:"#444444"},errorBars:{color:"#444444"},notes:{icon:{background:"transparent",border:{color:"#e5e5e5"}},label:{color:"#444444"},line:{color:"#e5e5e5"}},candlestick:{downColor:"#c7c7c7",line:{color:"#787878"}},area:{opacity:.9},waterfall:{line:{color:"#e5e5e5"}},horizontalWaterfall:{line:{color:"#e5e5e5"}},overlay:{gradient:"none"},border:{_brightness:1}},seriesColors:["#3f51b5","#03a9f4","#4caf50","#f9ce1d","#ff9800","#ff5722"],axisDefaults:{line:{color:"#e5e5e5"},labels:{color:"#444444"},minorGridLines:{color:"#e5e5e5"},majorGridLines:{color:"#e5e5e5"},title:{color:"#444444"},crosshair:{color:"#7f7f7f"},notes:{icon:{background:"transparent",border:{color:"#e5e5e5"}},label:{color:"#444444"},line:{color:"#e5e5e5"}}}},gauge:{pointer:{color:"#3f51b5"},scale:{rangePlaceholderColor:"#e5e5e5",labels:{color:"#444444"},minorTicks:{color:"#444444"},majorTicks:{color:"#444444"},line:{color:"#444444"}}},diagram:{shapeDefaults:{fill:{color:"#3f51b5"},connectorDefaults:{fill:{color:"#7f7f7f"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:"#7f7f7f"}}},content:{color:"#444444"}},editable:{resize:{handles:{fill:{color:l},stroke:{color:"#444444"},hover:{fill:{color:"#444444"},stroke:{color:"#444444"}}}},rotate:{thumb:{stroke:{color:"#444444"},fill:{color:"#444444"}}}},selectable:{stroke:{color:"#444444"}},connectionDefaults:{stroke:{color:"#7f7f7f"},content:{color:"#444444"},selection:{handles:{fill:{color:l},stroke:{color:"#444444"}},stroke:{color:"#444444"}}}},treeMap:{colors:[["#3f51b5","#cff3f0"],["#03a9f4","#e5f6fe"],["#4caf50","#edf7ed"],["#f9ce1d","#fefae8"],["#ff9800","#fff4e5"],["#ff5722","#ffeee8"]]}}),p("materialblack",{chart:{title:{color:"#fff"},legend:{labels:{color:"#fff"},inactiveItems:{labels:{color:"#CBCBCB"},markers:{color:"#CBCBCB"}}},seriesDefaults:{labels:{color:"#fff"},errorBars:{color:"#fff"},notes:{icon:{background:"transparent",border:{color:"#e5e5e5"}},label:{color:"#fff"},line:{color:"#e5e5e5"}},candlestick:{downColor:"#c7c7c7",line:{color:"#787878"}},area:{opacity:.9},waterfall:{line:{color:"#4d4d4d"}},horizontalWaterfall:{line:{color:"#4d4d4d"}},overlay:{gradient:"none"},border:{_brightness:1}},chartArea:{background:"#1c1c1c"},seriesColors:["#3f51b5","#03a9f4","#4caf50","#f9ce1d","#ff9800","#ff5722"],axisDefaults:{line:{color:"#4d4d4d"},labels:{color:"#fff"},minorGridLines:{color:"#4d4d4d"},majorGridLines:{color:"#4d4d4d"},title:{color:"#fff"},crosshair:{color:"#7f7f7f"},notes:{icon:{background:"transparent",border:{color:"#4d4d4d"}},label:{color:"#fff"},line:{color:"#4d4d4d"}}}},gauge:{pointer:{color:"#3f51b5"},scale:{rangePlaceholderColor:"#4d4d4d",labels:{color:"#fff"},minorTicks:{color:"#fff"},majorTicks:{color:"#fff"},line:{color:"#fff"}}},diagram:{shapeDefaults:{fill:{color:"#3f51b5"},connectorDefaults:{fill:{color:"#7f7f7f"},stroke:{color:l},hover:{fill:{color:l},stroke:{color:"#7f7f7f"}}},content:{color:"#fff"}},editable:{resize:{handles:{fill:{color:l},stroke:{color:"#fff"},hover:{fill:{color:"#fff"},stroke:{color:"#fff"}}}},rotate:{thumb:{stroke:{color:"#fff"},fill:{color:"#fff"}}}},selectable:{stroke:{color:"#fff"}},connectionDefaults:{stroke:{color:"#7f7f7f"},content:{color:"#fff"},selection:{handles:{fill:{color:l},stroke:{color:"#fff"}},stroke:{color:"#fff"}}}},treeMap:{colors:[["#3f51b5","#cff3f0"],["#03a9f4","#e5f6fe"],["#4caf50","#edf7ed"],["#f9ce1d","#fefae8"],["#ff9800","#fff4e5"],["#ff5722","#ffeee8"]]}}),function(){function e(){return{icon:{background:"#007cc0",border:{color:"#007cc0"}},label:{color:"#ffffff"},line:{color:r}}}var n="#333333",i="#7f7f7f",o="#bdbdbd",r="#c8c8c8",a="#dddddd",s=["#008fd3","#99d101","#f39b02","#f05662","#c03c53","#acacac"],c=["#cbe8f5","#eaf5cb","#fceacc","#fbdcdf","#f2d7dc","#eeeeee"],d=s[0],u=l;p("fiori",{chart:{title:{color:n},legend:{labels:{color:n},inactiveItems:{labels:{color:i},markers:{color:i}}},seriesDefaults:{labels:{color:n},errorBars:{color:n},notes:e(),candlestick:{downColor:r,line:{color:o}},area:{opacity:.8},waterfall:{line:{color:r}},horizontalWaterfall:{line:{color:r}},overlay:{gradient:"none"},border:{_brightness:1}},seriesColors:s,axisDefaults:{line:{color:r},labels:{color:n},minorGridLines:{color:a},majorGridLines:{color:r},title:{color:n},crosshair:{color:i},notes:e()}},gauge:{pointer:{color:d},scale:{rangePlaceholderColor:r,labels:{color:n},minorTicks:{color:n},majorTicks:{color:n},line:{color:n}}},diagram:{shapeDefaults:{fill:{color:d},connectorDefaults:{fill:{color:n},stroke:{color:u},hover:{fill:{color:u},stroke:{color:n}}},content:{color:n}},editable:{resize:{handles:{fill:{color:u},stroke:{color:o},hover:{fill:{color:o},stroke:{color:o}}}},rotate:{thumb:{stroke:{color:o},fill:{color:o}}}},selectable:{stroke:{color:o}},connectionDefaults:{stroke:{color:o},content:{color:o},selection:{handles:{fill:{color:u},stroke:{color:o}},stroke:{color:o}}}},treeMap:{colors:t(s,c)}})}(),function(){function e(){return{icon:{background:"#00b0ff",border:{color:"#00b0ff"}},label:{color:"#ffffff"},line:{color:r}}}var n="#4e4e4e",i="#7f7f7f",o="#bdbdbd",r="#c8c8c8",a="#e5e5e5",s=["#0072c6","#5db2ff","#008a17","#82ba00","#ff8f32","#ac193d"],c=["#cbe2f3","#deeffe","#cbe7d0","#e5f0cb","#fee8d5","#eed0d7"],d=s[0],u=l;p("office365",{chart:{title:{color:n},legend:{labels:{color:n},inactiveItems:{labels:{color:i},markers:{color:i}}},seriesDefaults:{labels:{color:n},errorBars:{color:n},notes:e(),candlestick:{downColor:r,line:{color:o}},area:{opacity:.8},waterfall:{line:{color:r}},horizontalWaterfall:{line:{color:r}},overlay:{gradient:"none"},border:{_brightness:1}},seriesColors:s,axisDefaults:{line:{color:r},labels:{color:n},minorGridLines:{color:a},majorGridLines:{color:r},title:{color:n},crosshair:{color:i},notes:e()}},gauge:{pointer:{color:d},scale:{rangePlaceholderColor:r,labels:{color:n},minorTicks:{color:n},majorTicks:{color:n},line:{color:n}}},diagram:{shapeDefaults:{fill:{color:d},connectorDefaults:{fill:{color:n},stroke:{color:u},hover:{fill:{color:u},stroke:{color:n}}},content:{color:n}},editable:{resize:{handles:{fill:{color:u},stroke:{color:o},hover:{fill:{color:o},stroke:{color:o}}}},rotate:{thumb:{stroke:{color:o},fill:{color:o}}}},selectable:{stroke:{color:o}},connectionDefaults:{stroke:{color:o},content:{color:o},selection:{handles:{fill:{color:u},stroke:{color:o}},stroke:{color:o}}}},treeMap:{colors:t(s,c)}})}(),function(){function e(){return{icon:{background:"#007cc0",border:{color:"#007cc0"}},label:{color:"#ffffff"},line:{color:r}}}var n="#32364c",i="#7f7f7f",o="#bdbdbd",r="#dfe0e1",a="#dfe0e1",s=["#ff4350","#ff9ea5","#00acc1","#80deea","#ffbf46","#ffd78c"],c=["#ffd9dc","#ffeced","#cceef3","#e6f8fb","#fff2da","#fff7e8"],d=s[0],u=l;p("nova",{chart:{title:{color:n},legend:{labels:{color:n},inactiveItems:{labels:{color:i},markers:{color:i}}},seriesDefaults:{labels:{color:n},errorBars:{color:n},notes:e(),candlestick:{downColor:r,line:{color:o}},area:{opacity:.8},waterfall:{line:{color:r}},horizontalWaterfall:{line:{color:r}},overlay:{gradient:"none"},border:{_brightness:1}},seriesColors:s,axisDefaults:{line:{color:r},labels:{color:n},minorGridLines:{color:a},majorGridLines:{color:r},title:{color:n},crosshair:{color:n},notes:e()}},gauge:{pointer:{color:d},scale:{rangePlaceholderColor:r,labels:{color:n},minorTicks:{color:n},majorTicks:{color:n},line:{color:n}}},diagram:{shapeDefaults:{fill:{color:d},connectorDefaults:{fill:{color:n},stroke:{color:u},hover:{fill:{color:u},stroke:{color:n}}},content:{color:n}},editable:{resize:{handles:{fill:{color:u},stroke:{color:o},hover:{fill:{color:o},stroke:{color:o}}}},rotate:{thumb:{stroke:{color:o},fill:{color:o}}}},selectable:{stroke:{color:o}},connectionDefaults:{stroke:{color:o},content:{color:o},selection:{handles:{fill:{color:u},stroke:{color:o}},stroke:{color:o}}}},treeMap:{colors:t(s,c)}})}(),function(){var e=["#ff6358","#ffd246","#78d237","#28b4c8","#2d73f5","#aa46be"],n=["#ffd9dc","#ffeced","#cceef3","#e6f8fb","#fff2da","#fff7e8"];p("default-v2",{chart:{},gauge:{},diagram:{},treeMap:{colors:t(e,n)}}),h.sass=h["default-v2"]}(),function(){var e="#292b2c",n="rgba(0, 0, 0, .04)",i=["#0275d8","#5bc0de","#5cb85c","#f0ad4e","#e67d4a","#d9534f"],o=["#ffd9dc","#ffeced","#cceef3","#e6f8fb","#fff2da","#fff7e8"],r=i[0];p("bootstrap-v4",{chart:{},gauge:{pointer:{color:r},scale:{rangePlaceholderColor:n,labels:{color:e},minorTicks:{color:e},majorTicks:{color:e},line:{color:e}}},diagram:{},treeMap:{colors:t(i,o)}})}()}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.themes.min",["kendo.dataviz.core.min","dataviz/themes/chart-base-theme.min","dataviz/themes/auto-theme.min","dataviz/themes/themes.min"],e)}(function(){},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/chart/kendo-chart.min",["kendo.core.min","kendo.color.min","kendo.drawing.min","kendo.dataviz.core.min"],e)}(function(){!function(e){function t(e,t){for(var n=0;n<t.length;n++)if(t[n].options.name===e)return t[n].prepareUserOptions(),new ct(t[n])}function n(e){var t,n,i=e.length,o=0;for(t=0;t<i;t++)n=e[t],te(n)&&o++;return o}function i(e,t){if(null===t)return t;var n=we(e,!0);return n(t)}function o(e,t,n,i){var r,a,s,l,c;if(void 0===n&&(n={}),void 0===i&&(i=!1),r=n.defaults=n.defaults||{},a=n.depth=n.depth||0,s=!1,n.excluded=n.excluded||[],a>Jn)return null;for(l in e)!De(l,n.excluded)&&e.hasOwnProperty(l)&&(c=e[l],Ae(c)?(s=!0,i||(e[l]=Ee(c(t),r[l]))):Ie(c)&&(i||(n.defaults=r[l]),n.depth++,s=o(c,t,n,i)||s,n.depth--));return s}function r(e){var t,n=e.length,i=0;for(t=0;t<n;t++)i=Math.max(i,e[t].data.length);return i}function a(e,t,n,i,o){var r=e.box,a=new st;return a[t]=r[t+n],a[i]=r[i+o],a}function s(e){for(var t=0;t<e.length;t++)if(be(e[t].zIndex))return!0}function l(e){var t=e.overlay;return t&&t.gradient&&"none"!==t.gradient}function c(e,t){e.forEach(t)}function d(e,t){var n,i=e.length;for(n=i-1;n>=0;n--)t(e[n],n-i-1)}function u(e){return n(e)===e.length}function h(e){return be(e)&&null!==e}function p(e){var t,n,i,o=e.series;for(t=0;t<o.length;t++)n=o[t],i=n.data,!i||ke(i[0])||Ie(i[0])||(n.data=[i])}function f(){return"pane"+Ni++}function g(e,t){null!==t&&e.push(t)}function m(e,t,n){var i,o=t.visible;return be(o)?o:(i=e.pointVisibility,i?i[n]:void 0)}function v(e){var t,n,i,o=e.data,r=[],a=0,s=0;for(t=0;t<o.length;t++)n=pt.current.bindPoint(e,t),i=n.valueFields.value,Oe(i)&&(i=parseFloat(i)),te(i)?(n.visible=m(e,n.fields,t)!==!1,n.value=Math.abs(i),r.push(n),n.visible&&(a+=n.value),0!==i&&s++):r.push(null);return{total:a,points:r,count:s}}function _(e,t){return e&&t?e.toLowerCase()===t.toLowerCase():e===t; +}function b(e,t){var n,i,o=[],r=[].concat(t);for(n=0;n<e.length;n++)i=e[n],De(i.type,r)&&o.push(i);return o}function w(e,t,n){var i,o;return null===t?t:(i="_date_"+e,o=t[i],o||(o=Ve(n,we(e,!0)(t)),t[i]=o),o)}function k(e,t){var n=e.type,i=t instanceof Date;return!n&&i||_(n,me)}function y(e){return 1===e.length?e[0]:e}function x(e){return e.missingValues?e.missingValues:Oi.test(e.type)||e.stack?Rt:Pt}function C(e,t){var n,i=pt.current.bindPoint(e,null,t),o=i.valueFields;for(n in o)if(Z.convertableToNumber(o[n]))return!0}function S(e){var t,n,i=e.start,o=e.dir,r=e.min,a=e.max,s=e.getter,l=e.hasItem,c=e.series,d=i;do d+=o,l(d)&&(n=s(d),t=C(c,n.item));while(r<=d&&d<=a&&!t);if(t)return n}function T(e,t,n,i,o){var r,a,s,l,c,d=t.min,u=t.max,h=d>0&&d<n,p=u+1<n;(h||p)&&(r=x(e),r!==Pt?(h&&(a=i(d-1)),p&&(s=i(u+1))):(h&&(l=i(d-1),c=C(e,l.item),a=c?l:S({start:d,dir:-1,min:0,max:n-1,getter:i,hasItem:o,series:e})),p&&(l=i(u+1),c=C(e,l.item),s=c?l:S({start:u,dir:1,min:0,max:n-1,getter:i,hasItem:o,series:e}))),a&&(e._outOfRangeMinPoint=a),s&&(e._outOfRangeMaxPoint=s))}function D(e){var t,n,i,o=e.length;if(o>0)for(n=0;n<o;n++)i=e[n].contentBox(),t?t.wrap(i):t=i.clone();return t||new Ce}function A(e,t){var n,i;for(n=0;n<e.length;n++)if(i=e[n],i&&i.pane===t)return i}function E(e){return""===e||null===e||"none"===e||"transparent"===e||!be(e)}function I(e,t,n){var i,o=t,r=e;if(e.indexOf(".")>-1){for(i=e.split(".");i.length>1;)r=i.shift(),be(o[r])||(o[r]={}),o=o[r];r=i.shift()}o[r]=n}function M(e,t,n){var i=[].concat(t instanceof Ue?e.categoryAxis:e.valueAxis);Me(i[t.axisIndex],n)}function F(e,t,n){return $e(e,function(e){return 0===n&&!e.categoryAxis||e.categoryAxis===t})}function R(){this._defaultPrevented=!0}function P(e,t){var n=(t||"").toLowerCase(),i=e.event,o="none"===n&&!(i.ctrlKey||i.shiftKey||i.altKey)||i[n+"Key"];return o}function z(e){var t,n,i={};for(t=0;t<e.length;t++)n=e[t],n.axis.options.name&&(i[n.axis.options.name]={min:n.range.min,max:n.range.max});return i}function B(e){var t=document.createElement("div");return e&&(t.className=e),t}function L(e){for(var t=e;t&&!Ke(t,"k-handle");)t=t.parentNode;return t}function H(e,t,n,i){var o=[].concat(n?e.yAxis:e.xAxis)[t];Me(o,i)}function N(e){var t,n,i=Z.rad(e),o=je(Math.sin(i),ve),r=je(Math.cos(i),ve);return t=Math.abs(o)>zo?ae:r<0?fe:ce,n=Math.abs(o)<Po?ae:o<0?le:se,{horizontal:t,vertical:n}}function O(e,t,n,i){var o,r,a=(i.x-n.x)*(e.y-n.y)-(i.y-n.y)*(e.x-n.x),s=(i.y-n.y)*(t.x-e.x)-(i.x-n.x)*(t.y-e.y);return 0!==s&&(r=a/s,o=new xe(e.x+r*(t.x-e.x),e.y+r*(t.y-e.y))),o}function V(e,t){return e.value.x-t.value.x}function W(e){var t,n,i=_r;for(t=0;t<i.length;t++)n=i[t]+"Axes",e[n]&&(e[i[t]+"Axis"]=e[n],delete e[n])}function U(e,t){if(e)for(var n=0;n<e.length;n++)if(e[n].category===t)return[e[n]]}function q(e,t){function n(e){var t=(e||{}).color||o.color,n=Me({},s,s[i],o,o[i],{line:{color:t},labels:{color:t},title:{color:t}},e);return delete n[i],n}var i,o,r,a,s=(t||{}).axisDefaults||{};for(a=0;a<_r.length;a++)i=_r[a]+"Axis",o=e.axisDefaults||{},r=[].concat(e[i]),r=r.map(n),e[i]=r.length>1?r:r[0]}function j(e,t){var n,i,o,r=e.series,a=r.length,s=e.seriesDefaults,l=Me({},e.seriesDefaults),c=t?Me({},t.seriesDefaults):{},d=Me({},c);for(G(l),G(d),n=0;n<a;n++)i=r[n].type||e.seriesDefaults.type,o=Me({data:[]},d,c[i],{tooltip:e.tooltip},l,s[i]),r[n]._defaults=o,r[n]=Me({},o,r[n]),r[n].data=r[n].data||[]}function G(e){delete e.bar,delete e.column,delete e.rangeColumn,delete e.line,delete e.verticalLine,delete e.pie,delete e.donut,delete e.area,delete e.verticalArea,delete e.scatter,delete e.scatterLine,delete e.bubble,delete e.candlestick,delete e.ohlc,delete e.boxPlot,delete e.bullet,delete e.verticalBullet,delete e.polarArea,delete e.polarLine,delete e.radarArea,delete e.radarLine,delete e.waterfall}function $(e){var t,n,i,o={};for(t=0;t<e.length;t++)n=e[t],i=n.options.name,i&&(o[i]=n.range());return o}function Y(e,t){void 0===t&&(t=Z.dateComparer);for(var n=1,i=e.length;n<i;n++)if(t(e[n],e[n-1])<0){e.sort(t);break}return e}function K(e,t){var n,i,o,r;for(void 0===t&&(t=Z.dateComparer),n=Y(e,t),i=n.length,o=i>0?[n[0]]:[],r=1;r<i;r++)0!==t(n[r],Fe(o))&&o.push(n[r]);return o}function Q(e){var t,n,i,o,r=e.length,a=[];for(t=0;t<r;t++)for(n=e[t],i=n.length,o=0;o<i;o++)a[o]=a[o]||[],a[o].push(n[o]);return a}function X(e,t){var n,i,o,r;for(n in t)!De(n,Cr)&&t.hasOwnProperty(n)&&(i=t[n],o=e[n],be(o)&&(r=null===i,r||!be(i)?(delete e[n],r&&delete t[n]):o&&Ie(i)&&Ie(o)&&X(o,i)))}function J(e){for(var t=0;t<e.length;t++)e[t].notifyRender()}var Z,ee,te,ne,ie,oe,re,ae,se,le,ce,de,ue,he,pe,fe,ge,me,ve,_e,be,we,ke,ye,xe,Ce,Se,Te,De,Ae,Ee,Ie,Me,Fe,Re,Pe,ze,Be,Le,He,Ne,Oe,Ve,We,Ue,qe,je,Ge,$e,Ye,Ke,Qe,Xe,Je,Ze,et,tt,nt,it,ot,rt,at,st,lt,ct,dt,ut,ht,pt,ft,gt,mt,vt,_t,bt,wt,kt,yt,xt,Ct,St,Tt,Dt,At,Et,It,Mt,Ft,Rt,Pt,zt,Bt,Lt,Ht,Nt,Ot,Vt,Wt,Ut,qt,jt,Gt,$t,Yt,Kt,Qt,Xt,Jt,Zt,en,tn,nn,on,rn,an,sn,ln,cn,dn,un,hn,pn,fn,gn,mn,vn,_n,bn,wn,kn,yn,xn,Cn,Sn,Tn,Dn,An,En,In,Mn,Fn,Rn,Pn,zn,Bn,Ln,Hn,Nn,On,Vn,Wn,Un,qn,jn,Gn,$n,Yn,Kn,Qn,Xn,Jn,Zn,ei,ti,ni,ii,oi,ri,ai,si,li,ci,di,ui,hi,pi,fi,gi,mi,vi,_i,bi,wi,ki,yi,xi,Ci,Si,Ti,Di,Ai,Ei,Ii,Mi,Fi,Ri,Pi,zi,Bi,Li,Hi,Ni,Oi,Vi,Wi,Ui,qi,ji,Gi,$i,Yi,Ki,Qi,Xi,Ji,Zi,eo,to,no,io,oo,ro,ao,so,lo,co,uo,ho,po,fo,go,mo,vo,_o,bo,wo,ko,yo,xo,Co,So,To,Do,Ao,Eo,Io,Mo,Fo,Ro,Po,zo,Bo,Lo,Ho,No,Oo,Vo,Wo,Uo,qo,jo,Go,$o,Yo,Ko,Qo,Xo,Jo,Zo,er,tr,nr,ir,or,rr,ar,sr,lr,cr,dr,ur,hr,pr,fr,gr,mr,vr,_r,br,wr,kr,yr,xr,Cr;window.kendo.dataviz=window.kendo.dataviz||{},Z=kendo.dataviz,ee=Z.Class,te=Z.isNumber,ne=Z.constants,ie=ne.MAX_VALUE,oe=ne.MIN_VALUE,re=ne.VALUE,ae=ne.CENTER,se=ne.TOP,le=ne.BOTTOM,ce=ne.LEFT,de=ne.WHITE,ue=ne.CIRCLE,he=ne.X,pe=ne.Y,fe=ne.RIGHT,ge=ne.BLACK,me=ne.DATE,ve=ne.DEFAULT_PRECISION,_e=ne.ARC,be=Z.defined,we=Z.getter,ke=Z.isArray,ye=Z.ChartElement,xe=Z.Point,Ce=Z.Box,Se=Z.alignPathToPixel,Te=Z.setDefaultOptions,De=Z.inArray,Ae=Z.isFunction,Ee=Z.valueOrDefault,Ie=Z.isObject,Me=Z.deepExtend,Fe=Z.last,Re=Z.eventElement,Pe=Z.getTemplate,ze=Z.TextBox,Be=Z.ShapeElement,Le=Z.getSpacing,He=Z.CurveProcessor,Ne=Z.append,Oe=Z.isString,Ve=Z.parseDate,We=Z.styleValue,Ue=Z.CategoryAxis,qe=Z.BoxElement,je=Z.round,Ge=Z.limitValue,$e=Z.grep,Ye=Z.elementStyles,Ke=Z.hasClasses,Qe=Z.bindEvents,Xe=Z.services,Je=Z.unbindEvents,Ze=kendo.support,et=kendo.drawing,tt=et.Path,nt=et.Animation,it=et.AnimationFactory,ot=et.Group,rt=kendo.Color,at=kendo.geometry,st=at.Point,lt=at.transform,ct=ee.extend({init:function(e){this._axis=e,this.options=e.options},value:function(e){var t=this._axis,n=t.getCategory?t.getCategory(e):t.getValue(e);return n},slot:function(e,t,n){return void 0===n&&(n=!0),this._axis.slot(e,t,n)},range:function(){return this._axis.range()},valueRange:function(){return this._axis.valueRange()}}),dt=kendo.Class.extend({init:function(e){this.visual=e.visual,this.chartsVisual=e.chartContainer.visual,this._pane=e},findAxisByName:function(e){return t(e,this._pane.axes)}}),ut=ee.extend({init:function(e){this._plotArea=e,this.visual=e.visual,this.backgroundVisual=e._bgVisual}}),ht={min:function(e){var t,n,i=e.length,o=ie;for(t=0;t<i;t++)n=e[t],te(n)&&(o=Math.min(o,n));return o===ie?e[0]:o},max:function(e){var t,n,i=e.length,o=oe;for(t=0;t<i;t++)n=e[t],te(n)&&(o=Math.max(o,n));return o===oe?e[0]:o},sum:function(e){var t,n,i=e.length,o=0;for(t=0;t<i;t++)n=e[t],te(n)&&(o+=n);return o},sumOrNull:function(e){var t=null;return n(e)&&(t=ht.sum(e)),t},count:function(e){var t,n,i=e.length,o=0;for(t=0;t<i;t++)n=e[t],null!==n&&be(n)&&o++;return o},avg:function(e){var t=n(e),i=e[0];return t>0&&(i=ht.sum(e)/t),i},first:function(e){var t,n,i=e.length;for(t=0;t<i;t++)if(n=e[t],null!==n&&be(n))return n;return e[0]}},pt=ee.extend({init:function(){this._valueFields={},this._otherFields={},this._nullValue={},this._undefinedValue={}},register:function(e,t,n){var i,o,r=this;for(void 0===t&&(t=[re]),void 0===n&&(n={}),i=0;i<e.length;i++)o=e[i],r._valueFields[o]=t,r._otherFields[o]=n,r._nullValue[o]=r._makeValue(t,null),r._undefinedValue[o]=r._makeValue(t,void 0)},canonicalFields:function(e){return this.valueFields(e).concat(this.otherFields(e))},valueFields:function(e){return this._valueFields[e.type]||[re]},otherFields:function(e){return this._otherFields[e.type]||[re]},bindPoint:function(e,t,n){var i,o,r,a,s,l=e.data,c=be(n)?n:l[t],d={valueFields:{value:c}},u=this.valueFields(e),h=this._otherFields[e.type];return null===c?o=this._nullValue[e.type]:be(c)?Array.isArray(c)?(r=c.slice(u.length),o=this._bindFromArray(c,u),i=this._bindFromArray(r,h)):"object"==typeof c&&(a=this.sourceFields(e,u),s=this.sourceFields(e,h),o=this._bindFromObject(c,u,a),i=this._bindFromObject(c,h,s)):o=this._undefinedValue[e.type],be(o)&&(1===u.length?d.valueFields.value=o[u[0]]:d.valueFields=o),d.fields=i||{},d},_makeValue:function(e,t){var n,i,o={},r=e.length;for(n=0;n<r;n++)i=e[n],o[i]=t;return o},_bindFromArray:function(e,t){var n,i,o={};if(t)for(n=Math.min(t.length,e.length),i=0;i<n;i++)o[t[i]]=e[i];return o},_bindFromObject:function(e,t,n){var o,r,a,s,l;if(void 0===n&&(n=t),o={},t)for(r=t.length,a=0;a<r;a++)s=t[a],l=n[a],null!==l&&(o[s]=i(l,e));return o},sourceFields:function(e,t){var n,i,o,r,a=[];if(t)for(n=t.length,i=0;i<n;i++)o=t[i],r=o===re?"field":o+"Field",a.push(null!==e[r]?e[r]||o:null);return a}}),pt.current=new pt,ft="stderr",gt="stddev",mt=/percent(?:\w*)\((\d+)\)/,vt=RegExp("^"+gt+"(?:\\((\\d+(?:\\.\\d+)?)\\))?$"),_t=ee.extend({init:function(e,t,n){this.initGlobalRanges(e,t,n)},initGlobalRanges:function(e,t,n){var i,o,r,a,s,l=t.data,c=vt.exec(e);c?(this.valueGetter=this.createValueGetter(t,n),i=this.getAverage(l),o=this.getStandardDeviation(l,i,!1),r=c[1]?parseFloat(c[1]):1,a={low:i.value-o*r,high:i.value+o*r},this.globalRange=function(){return a}):e.indexOf&&e.indexOf(ft)>=0&&(this.valueGetter=this.createValueGetter(t,n),s=this.getStandardError(l,this.getAverage(l)),this.globalRange=function(e){return{low:e-s,high:e+s}})},createValueGetter:function(e,t){var n,i,o,r=e.data,a=pt.current,s=a.valueFields(e),l=be(r[0])?r[0]:{};return ke(l)?(i=t?s.indexOf(t):0,n=we("["+i+"]")):te(l)?n=we():typeof l===ne.OBJECT&&(o=a.sourceFields(e,s),n=we(o[s.indexOf(t)])),n},getErrorRange:function(e,t){var n,i,o,r;if(!be(t))return null;if(this.globalRange)return this.globalRange(e);if(ke(t))n=e-t[0],i=e+t[1];else if(te(o=parseFloat(t)))n=e-o,i=e+o;else{if(!(o=mt.exec(t)))throw Error("Invalid ErrorBar value: "+t);r=e*(parseFloat(o[1])/100),n=e-Math.abs(r),i=e+Math.abs(r)}return{low:n,high:i}},getStandardError:function(e,t){return this.getStandardDeviation(e,t,!0)/Math.sqrt(t.count)},getStandardDeviation:function(e,t,n){var i,o,r=this,a=e.length,s=n?t.count-1:t.count,l=0;for(i=0;i<a;i++)o=r.valueGetter(e[i]),te(o)&&(l+=Math.pow(o-t.value,2));return Math.sqrt(l/s)},getAverage:function(e){var t,n,i=this,o=e.length,r=0,a=0;for(t=0;t<o;t++)n=i.valueGetter(e[t]),te(n)&&(r+=n,a++);return{value:r/a,count:a}}}),bt=Ze.browser||{},wt=600,kt="fadeIn",yt="glass",xt=.8,Ct=5,St=bt.msie?.001:0,Tt="errorLow",Dt="errorHigh",At="xErrorLow",Et="xErrorHigh",It="yErrorLow",Mt="yErrorHigh",Ft=8,Rt="zero",Pt="interpolate",zt="gap",Bt="above",Lt="below",Ht="smooth",Nt="step",Ot="area",Vt="bar",Wt="boxPlot",Ut="bubble",qt="bullet",jt="candlestick",Gt="column",$t="donut",Yt="funnel",Kt="horizontalWaterfall",Qt="line",Xt="ohlc",Jt="pie",Zt="polarArea",en="polarLine",tn="polarScatter",nn="radarArea",on="radarColumn",rn="radarLine",an="rangeArea",sn="rangeBar",ln="rangeColumn",cn="scatter",dn="scatterLine",un="verticalArea",hn="verticalBoxPlot",pn="verticalBullet",fn="verticalLine",gn="verticalRangeArea",mn="waterfall",vn=[Vt,Gt,Xt,jt,Wt,hn,qt,ln,sn,mn,Kt],_n="legendItemClick",bn="legendItemHover",wn="legendItemLeave",kn="seriesClick",yn="seriesHover",xn="seriesOver",Cn="seriesLeave",Sn="plotAreaClick",Tn="plotAreaHover",Dn="plotAreaLeave",An="drag",En="dragEnd",In="dragStart",Mn="zoomStart",Fn="zoom",Rn="zoomEnd",Pn="selectStart",zn="select",Bn="selectEnd",Ln="render",Hn="showTooltip",Nn="hideTooltip",On="paneRender",Vn="log",Wn="category",Un="insideEnd",qn="insideBase",jn="outsideEnd",Gn="DOMMouseScroll mousewheel",$n=150,Yn={INITIAL_ANIMATION_DURATION:wt,FADEIN:kt,LEGEND_ITEM_CLICK:_n,LEGEND_ITEM_HOVER:bn,LEGEND_ITEM_LEAVE:wn,SERIES_CLICK:kn,SERIES_HOVER:yn,SERIES_OVER:xn,SERIES_LEAVE:Cn,GLASS:yt,BORDER_BRIGHTNESS:xt,TOOLTIP_OFFSET:Ct,START_SCALE:St,ERROR_LOW_FIELD:Tt,ERROR_HIGH_FIELD:Dt,X_ERROR_LOW_FIELD:At,X_ERROR_HIGH_FIELD:Et,Y_ERROR_LOW_FIELD:It,Y_ERROR_HIGH_FIELD:Mt,LINE_MARKER_SIZE:Ft,INTERPOLATE:Pt,ZERO:Rt,SMOOTH:Ht,STEP:Nt,CATEGORY:Wn,FUNNEL:Yt,BAR:Vt,CANDLESTICK:jt,PIE:Jt,COLUMN:Gt,AREA:Ot,VERTICAL_BULLET:pn,BOX_PLOT:Wt,OHLC:Xt,WATERFALL:mn,LINE:Qt,BULLET:qt,VERTICAL_LINE:fn,VERTICAL_AREA:un,RANGE_AREA:an,VERTICAL_RANGE_AREA:gn,RANGE_COLUMN:ln,VERTICAL_BOX_PLOT:hn,RANGE_BAR:sn,HORIZONTAL_WATERFALL:Kt,SCATTER:cn,SCATTER_LINE:dn,BUBBLE:Ut,RADAR_AREA:nn,RADAR_LINE:rn,RADAR_COLUMN:on,POLAR_LINE:en,POLAR_AREA:Zt,POLAR_SCATTER:tn,RENDER:Ln,PLOT_AREA_CLICK:Sn,PLOT_AREA_HOVER:Tn,PLOT_AREA_LEAVE:Dn,LOGARITHMIC:Vn,DRAG:An,DRAG_START:In,DRAG_END:En,ZOOM_START:Mn,ZOOM:Fn,ZOOM_END:Rn,SELECT_START:Pn,SELECT:zn,SELECT_END:Bn,PANE_RENDER:On,GAP:zt,DONUT:$t,INSIDE_END:Un,INSIDE_BASE:qn,OUTSIDE_END:jn,MOUSEWHEEL:Gn,MOUSEWHEEL_DELAY:$n,SHOW_TOOLTIP:Hn,HIDE_TOOLTIP:Nn,EQUALLY_SPACED_SERIES:vn,ABOVE:Bt,BELOW:Lt},Kn=4,Qn=ye.extend({init:function(e,t,n,i,o,r){ye.fn.init.call(this,r),this.low=e,this.high=t,this.isVertical=n,this.chart=i,this.series=o},reflow:function(e){var t,n=this.options.endCaps,i=this.isVertical,o=this.getAxis(),r=o.getSlot(this.low,this.high),a=e.center(),s=this.getCapsWidth(e,i),l=i?a.x:a.y,c=l-s,d=l+s;i?(t=[new xe(a.x,r.y1),new xe(a.x,r.y2)],n&&t.push(new xe(c,r.y1),new xe(d,r.y1),new xe(c,r.y2),new xe(d,r.y2)),this.box=new Ce(c,r.y1,d,r.y2)):(t=[new xe(r.x1,a.y),new xe(r.x2,a.y)],n&&t.push(new xe(r.x1,c),new xe(r.x1,d),new xe(r.x2,c),new xe(r.x2,d)),this.box=new Ce(r.x1,c,r.x2,d)),this.linePoints=t},getCapsWidth:function(e,t){var n=t?e.width():e.height(),i=Math.min(Math.floor(n/2),Kn)||Kn;return i},createVisual:function(){var e=this,t=this.options,n=t.visual;n?this.visual=n({low:this.low,high:this.high,rect:this.box.toRect(),sender:this.getSender(),options:{endCaps:t.endCaps,color:t.color,line:t.line},createVisual:function(){e.createDefaultVisual();var t=e.visual;return delete e.visual,t}}):this.createDefaultVisual()},createDefaultVisual:function(){var e,t,n=this,i=this,o=i.options,r=i.linePoints,a={stroke:{color:o.color,width:o.line.width,dashType:o.line.dashType}};for(ye.fn.createVisual.call(this),e=0;e<r.length;e+=2)t=new tt(a).moveTo(r[e].x,r[e].y).lineTo(r[e+1].x,r[e+1].y),Se(t),n.visual.append(t)}}),Te(Qn,{animation:{type:kt,delay:wt},endCaps:!0,line:{width:2},zIndex:1}),Xn=Qn.extend({getAxis:function(){var e=this.chart.seriesValueAxis(this.series);return e}}),Jn=5,Zn=ye.extend({init:function(e,t){ye.fn.init.call(this,t),this.plotArea=e,this.chartService=e.chartService,this.categoryAxis=e.seriesCategoryAxis(t.series[0]),this.valueAxisRanges={},this.points=[],this.categoryPoints=[],this.seriesPoints=[],this.seriesOptions=[],this._evalSeries=[],this.render()},render:function(){this.traverseDataPoints(this.addValue.bind(this))},pointOptions:function(e,t){var n,i=this.seriesOptions[t];return i||(n=this.pointType().prototype.defaults,this.seriesOptions[t]=i=Me({},n,{vertical:!this.options.invertAxes},e)),i},plotValue:function(e){var t,n,i,o,r,a,s,l;if(!e)return 0;if(this.options.isStacked100&&te(e.value)){for(t=e.categoryIx,n=this.categoryPoints[t],i=[],o=0,r=0;r<n.length;r++)if(a=n[r]){if(s=e.series.stack,l=a.series.stack,s&&l&&s.group!==l.group)continue;te(a.value)&&(o+=Math.abs(a.value),i.push(Math.abs(a.value)))}if(o>0)return e.value/o}return e.value},plotRange:function(e,t){var n,i,o,r,a,s,l,c,d,u,h,p,f,g=this;if(void 0===t&&(t=0),n=this.categoryPoints[e.categoryIx],this.options.isStacked){for(i=this.plotValue(e),o=i>=0,r=t,a=!1,s=0;s<n.length&&(l=n[s],e!==l);s++){if(c=e.series.stack,d=l.series.stack,c&&d){if(typeof c===ne.STRING&&c!==d)continue;if(c.group&&c.group!==d.group)continue}u=g.plotValue(l),(u>=0&&o||u<0&&!o)&&(r+=u,i+=u,a=!0,g.options.isStacked100&&(i=Math.min(i,1)))}return a&&(r-=t),[r,i]}return h=e.series,p=this.seriesValueAxis(h),f=this.categoryAxisCrossingValue(p),[f,Z.convertableToNumber(e.value)?e.value:f]},stackLimits:function(e,t){var n,i,o,r,a,s=this,l=ie,c=oe;for(n=0;n<this.categoryPoints.length;n++)if(i=s.categoryPoints[n])for(o=0;o<i.length;o++)r=i[o],r&&(r.series.stack!==t&&r.series.axis!==e||(a=s.plotRange(r,0)[1],be(a)&&isFinite(a)&&(c=Math.max(c,a),l=Math.min(l,a))));return{min:l,max:c}},updateStackRange:function(){var e,t,n,i,o,r,a=this,s=this.options,l=s.isStacked,c=s.series,d={};if(l)for(e=0;e<c.length;e++)t=c[e],n=t.axis,i=n+t.stack,o=d[i],o||(o=a.stackLimits(n,t.stack),r=a.errorTotals,r&&(r.negative.length&&(o.min=Math.min(o.min,Z.sparseArrayLimits(r.negative).min)),r.positive.length&&(o.max=Math.max(o.max,Z.sparseArrayLimits(r.positive).max))),o.min!==ie||o.max!==oe?d[i]=o:o=null),o&&(a.valueAxisRanges[n]=o)},addErrorBar:function(e,t,n){var i,o=e.value,r=e.series,a=e.seriesIx,s=e.options.errorBars,l=t.fields[Tt],c=t.fields[Dt];te(l)&&te(c)?i={low:l,high:c}:s&&be(s.value)&&(this.seriesErrorRanges=this.seriesErrorRanges||[],this.seriesErrorRanges[a]=this.seriesErrorRanges[a]||new _t(s.value,r,re),i=this.seriesErrorRanges[a].getErrorRange(o,s.value)),i&&(e.low=i.low,e.high=i.high,this.addPointErrorBar(e,n))},addPointErrorBar:function(e,t){var n,i,o,r=!this.options.invertAxes,a=e.options.errorBars,s=e.series,l=e.low,c=e.high;this.options.isStacked?(n=this.stackedErrorRange(e,t),l=n.low,c=n.high):(i={categoryIx:t,series:s},this.updateRange({value:l},i),this.updateRange({value:c},i)),o=new Xn(l,c,r,this,s,a),e.errorBars=[o],e.append(o)},stackedErrorRange:function(e,t){var n=this.plotRange(e,0)[1]-e.value,i=e.low+n,o=e.high+n;return this.errorTotals=this.errorTotals||{positive:[],negative:[]},i<0&&(this.errorTotals.negative[t]=Math.min(this.errorTotals.negative[t]||0,i)),o>0&&(this.errorTotals.positive[t]=Math.max(this.errorTotals.positive[t]||0,o)),{low:i,high:o}},addValue:function(t,n){var i,o,r=n.categoryIx,a=n.series,s=n.seriesIx,l=this.categoryPoints[r];l||(this.categoryPoints[r]=l=[]),i=this.seriesPoints[s],i||(this.seriesPoints[s]=i=[]),o=this.createPoint(t,n),o&&(e.extend(o,n),o.owner=this,o.noteText=t.fields.noteText,be(o.dataItem)||(o.dataItem=a.data[r]),this.addErrorBar(o,t,r)),this.points.push(o),i.push(o),l.push(o),this.updateRange(t.valueFields,n)},evalPointOptions:function(e,t,n,i,r,a){var s,l={defaults:r._defaults,excluded:["data","aggregate","_events","tooltip","content","template","visual","toggle","_outOfRangeMinPoint","_outOfRangeMaxPoint"]},c=this._evalSeries[a];return be(c)||(this._evalSeries[a]=c=o(e,{},l,!0)),s=e,c&&(s=Me({},s),o(s,{value:t,category:n,index:i,series:r,dataItem:r.data[i]},l)),s},updateRange:function(e,t){var n=t.series.axis,i=e.value,o=this.valueAxisRanges[n];isFinite(i)&&null!==i&&(o=this.valueAxisRanges[n]=o||{min:ie,max:oe},o.min=Math.min(o.min,i),o.max=Math.max(o.max,i))},seriesValueAxis:function(e){var t=this.plotArea,n=e.axis,i=n?t.namedValueAxes[n]:t.valueAxis;if(!i)throw Error("Unable to locate value axis with name "+n);return i},reflow:function(e){var t=this,n=this.categorySlots=[],i=this.points,o=this.categoryAxis,r=0;this.traverseDataPoints(function(e,a){var s,l,c,d=a.categoryIx,u=a.series,h=t.seriesValueAxis(u),p=i[r++],f=n[d];f||(n[d]=f=t.categorySlot(o,d,h)),p&&(s=t.plotRange(p,h.startValue()),l=t.valueSlot(h,s),l?(c=t.pointSlot(f,l),p.aboveAxis=t.aboveAxis(p,h),p.stackValue=s[1],t.options.isStacked100&&(p.percentage=t.plotValue(p)),t.reflowPoint(p,c)):p.visible=!1)}),this.reflowCategories(n),!this.options.clip&&this.options.limitPoints&&this.points.length&&this.limitPoints(),this.box=e},valueSlot:function(e,t){return e.getSlot(t[0],t[1],!this.options.clip)},limitPoints:function(){var e,t=this,n=this.categoryPoints,i=n[0].concat(Fe(n));for(e=0;e<i.length;e++)i[e]&&t.limitPoint(i[e])},limitPoint:function(e){var t=this.categoryAxis.limitSlot(e.box);t.equals(e.box)||e.reflow(t)},aboveAxis:function(e,t){var n=this.categoryAxisCrossingValue(t),i=e.value;return t.options.reverse?i<n:i>=n},categoryAxisCrossingValue:function(e){var t=this.categoryAxis,n=e.options,i=[].concat(n.axisCrossingValues||n.axisCrossingValue);return i[t.axisIndex||0]||0},reflowPoint:function(e,t){e.reflow(t)},reflowCategories:function(){},pointSlot:function(e,t){var n=this.options,i=n.invertAxes,o=i?t:e,r=i?e:t;return new Ce(o.x1,r.y1,o.x2,r.y2)},categorySlot:function(e,t){return e.getSlot(t)},traverseDataPoints:function(e){var t,n,i,o,a,s,l,c=this,d=this.options.series,u=r(d),h=d.length;for(t=0;t<h;t++)c._outOfRangeCallback(d[t],"_outOfRangeMinPoint",t,e);for(n=0;n<u;n++)for(i=0;i<h;i++)o=d[i],a=c.categoryAxis.categoryAt(n),s=c._bindPoint(o,i,n),e(s,{category:a,categoryIx:n,series:o,seriesIx:i});for(l=0;l<h;l++)c._outOfRangeCallback(d[l],"_outOfRangeMaxPoint",l,e)},_outOfRangeCallback:function(e,t,n,i){var o,r,a=e[t];a&&(o=a.categoryIx,r=this._bindPoint(e,n,o,a.item),i(r,{category:a.category,categoryIx:o,series:e,seriesIx:n,dataItem:a.item}))},_bindPoint:function(e,t,n,i){var o,r;return this._bindCache||(this._bindCache=[]),o=this._bindCache[t],o||(o=this._bindCache[t]=[]),r=o[n],r||(r=o[n]=pt.current.bindPoint(e,n,i)),r},formatPointValue:function(e,t){return null===e.value?"":this.chartService.format.auto(t,e.value)},pointValue:function(e){return e.valueFields.value}}),Te(Zn,{series:[],invertAxes:!1,isStacked:!1,clip:!0,limitPoints:!0}),ei={click:function(e,t){return e.trigger(kn,this.eventArgs(t))},hover:function(e,t){return e.trigger(yn,this.eventArgs(t))},over:function(e,t){return e.trigger(xn,this.eventArgs(t))},out:function(e,t){return e.trigger(Cn,this.eventArgs(t))},eventArgs:function(e){return{value:this.value,percentage:this.percentage,stackValue:this.stackValue,category:this.category,series:this.series,dataItem:this.dataItem,runningTotal:this.runningTotal,total:this.total,element:Re(e),originalEvent:e,point:this}}},ti={createNote:function(){var e=this.options.notes,t=this.noteText||e.label.text;e.visible!==!1&&be(t)&&null!==t&&(this.note=new Z.Note({value:this.value,text:t,dataItem:this.dataItem,category:this.category,series:this.series},this.options.notes,this.owner.chartService),this.append(this.note))}},ni=ye.extend({init:function(e,t){ye.fn.init.call(this),this.value=e,this.options=t,this.aboveAxis=Ee(this.options.aboveAxis,!0),this.tooltipTracking=!0},render:function(){var e,t,n,i=this.options,o=i.markers,r=i.labels;this._rendered||(this._rendered=!0,o.visible&&o.size&&(this.marker=this.createMarker(),this.append(this.marker)),r.visible&&(e=Pe(r),t=this.pointData(),n=this.value,e?n=e(t):r.format&&(n=this.formatValue(r.format)),this.label=new ze(n,Me({align:ae,vAlign:ae,margin:{left:5,right:5},zIndex:Ee(r.zIndex,this.series.zIndex)},r),t),this.append(this.label)),this.createNote(),this.errorBar&&this.append(this.errorBar))},markerBorder:function(){var e=this.options.markers,t=e.background,n=Me({color:this.color},e.border);return be(n.color)||(n.color=new rt(t).brightness(xt).toHex()),n},createVisual:function(){},createMarker:function(){var e=this.options.markers,t=new Be({type:e.type,width:e.size,height:e.size,rotation:e.rotation,background:e.background,border:this.markerBorder(),opacity:e.opacity,zIndex:Ee(e.zIndex,this.series.zIndex),animation:e.animation,visual:e.visual},{dataItem:this.dataItem,value:this.value,series:this.series,category:this.category});return t},markerBox:function(){return this.marker||(this.marker=this.createMarker(),this.marker.reflow(this._childBox)),this.marker.box},reflow:function(e){var t,n,i,o,r=this,a=this,s=a.options,l=a.aboveAxis,c=s.vertical;if(this.render(),this.box=e,t=e.clone(),c?l?t.y1-=t.height():t.y2+=t.height():l?t.x1+=t.width():t.x2-=t.width(),this._childBox=t,this.marker&&this.marker.reflow(t),this.reflowLabel(t),this.errorBars)for(n=0;n<this.errorBars.length;n++)r.errorBars[n].reflow(t);this.note&&(i=this.markerBox(),s.markers.visible&&s.markers.size||(o=i.center(),i=new Ce(o.x,o.y,o.x,o.y)),this.note.reflow(i))},reflowLabel:function(e){var t=this,n=t.options,i=t.label,o=n.labels.position;i&&(o=o===Bt?se:o,o=o===Lt?le:o,i.reflow(e),i.box.alignTo(this.markerBox(),o),i.reflow(i.box))},createHighlight:function(){var e=this.options.highlight.markers,t=this.markerBorder().color,n=this.options.markers,i=n.size+(n.border.width||0)+(e.border.width||0),o=new Be({type:n.type,width:i,height:i,rotation:n.rotation,background:e.color||t,border:{color:e.border.color,width:e.border.width,opacity:Ee(e.border.opacity,1)},opacity:Ee(e.opacity,1)});return o.reflow(this._childBox),o.getElement()},highlightVisual:function(){return(this.marker||{}).visual},highlightVisualArgs:function(){var e,t,n,i,o,r=this.marker;return r?(t=r.paddingBox.toRect(),e=r.visual):(n=this.options.markers.size,i=n/2,o=this.box.center(),t=new at.Rect([o.x-i,o.y-i],[n,n])),{options:this.options,rect:t,visual:e}},tooltipAnchor:function(){var e,t,n,i,o=this.markerBox(),r=this.owner.pane.clipBox(),a=!r||r.overlaps(o);if(a)return e=o.x2+Ct,t=ce,this.aboveAxis?(n=o.y1,i=le):(n=o.y2,i=se),{point:new xe(e,n),align:{horizontal:t,vertical:i}}},formatValue:function(e){return this.owner.formatPointValue(this,e)},overlapsBox:function(e){var t=this.markerBox();return t.overlaps(e)},unclipElements:function(){this.label&&(this.label.options.noclip=!0),this.note&&(this.note.options.noclip=!0)},pointData:function(){return{dataItem:this.dataItem,category:this.category,value:this.value,percentage:this.percentage,stackValue:this.stackValue,series:this.series}}}),ni.prototype.defaults={vertical:!0,markers:{visible:!0,background:de,size:Ft,type:ue,border:{width:2},opacity:1},labels:{visible:!1,position:Bt,margin:Le(3),padding:Le(4),animation:{type:kt,delay:wt}},notes:{label:{}},highlight:{markers:{border:{color:"#fff",width:2}},zIndex:ne.HIGHLIGHT_ZINDEX},errorBars:{line:{width:1}}},Me(ni.prototype,ei),Me(ni.prototype,ti),ii=ye.extend({init:function(e,t,n){ye.fn.init.call(this),this.linePoints=e,this.series=t,this.seriesIx=n},points:function(){return this.toGeometryPoints(this.linePoints)},toGeometryPoints:function(e){var t,n,i=[];for(t=0,n=e.length;t<n;t++)e[t]&&e[t].visible!==!1&&i.push(e[t]._childBox.toRect().center());return i},createVisual:function(){var e=this,t=this.series.visual;t?(this.visual=t({points:this.toGeometryPoints(this.linePoints),series:this.series,sender:this.getSender(),createVisual:function(){return e.segmentVisual(),e.visual}}),this.visual&&!be(this.visual.options.zIndex)&&(this.visual.options.zIndex=this.series.zIndex)):this.segmentVisual()},segmentVisual:function(){var e,t=this,n=t.options,i=t.series,o=i.color,r=i._defaults;Ae(o)&&r&&(o=r.color),e=tt.fromPoints(this.points(),{stroke:{color:o,width:i.width,opacity:i.opacity,dashType:i.dashType},zIndex:i.zIndex}),n.closed&&e.close(),this.visual=e},aliasFor:function(e,t){return this.parent.getNearestPoint(t.x,t.y,this.seriesIx)}}),Te(ii,{closed:!1}),oi={calculateStepPoints:function(e){var t,n,i,o=this.parent.plotArea.seriesCategoryAxis(this.series),r=o.options,s=r.justified,l=r.vertical,c=r.reverse,d=l?he:pe,u=l?pe:he,h=c?2:1,p=h,f=a(e[0],d,h,u,p),g=[f];for(t=1;t<e.length;t++)n=a(e[t],d,h,u,p),f[d]!==n[d]&&(i=new st,i[d]=f[d],i[u]=n[u],g.push(i,n)),f=n;return s?f!==Fe(g)&&g.push(f):g.push(a(Fe(e),d,h,u,c?1:2)),g}},ri=ii.extend({points:function(){return this.calculateStepPoints(this.linePoints)}}),Me(ri.prototype,oi),ai=ii.extend({segmentVisual:function(){var e,t,n,i=this.series,o=i._defaults,r=i.color;Ae(r)&&o&&(r=o.color),e=new He(this.options.closed),t=e.process(this.points()),n=new tt({stroke:{color:r,width:i.width,opacity:i.opacity,dashType:i.dashType},zIndex:i.zIndex}),n.segments.push.apply(n.segments,t),this.visual=n}}),si={renderSegments:function(){var e,t,n,i,o,r,a,s,l=this,c=this,d=c.options,u=c.seriesPoints,h=d.series,p=u.length;for(this._segments=[],t=0;t<p;t++){for(n=h[t],i=l.sortPoints(u[t]),o=i.length,r=[],a=0;a<o;a++)s=i[a],s?r.push(s):l.seriesMissingValues(n)!==Pt&&(r.length>1&&(e=l.createSegment(r,n,t,e),l._addSegment(e)),r=[]);r.length>1&&(e=l.createSegment(r,n,t,e),l._addSegment(e))}this.children.unshift.apply(this.children,this._segments)},_addSegment:function(e){this._segments.push(e),e.parent=this},sortPoints:function(e){return e},seriesMissingValues:function(e){var t=e.missingValues,n=!t&&this.options.isStacked;return n?Rt:t||Pt},getNearestPoint:function(e,t,n){var i,o,r,a,s,l=new xe(e,t),c=this.seriesPoints[n],d=ie;for(o=0;o<c.length;o++)r=c[o],r&&be(r.value)&&null!==r.value&&r.visible!==!1&&(a=r.box,s=a.center().distanceTo(l),s<d&&(i=r,d=s));return i}},li=nt.extend({setup:function(){this._setEnd(this.options.box.x1)},step:function(e){var t=this.options.box;this._setEnd(Z.interpolateValue(t.x1,t.x2,e))},_setEnd:function(e){var t=this.element,n=t.segments,i=n[1].anchor(),o=n[2].anchor();t.suspend(),i.setX(e),t.resume(),o.setX(e)}}),Te(li,{duration:wt}),it.current.register("clip",li),ci={createAnimation:function(){var e,t,n=this.getRoot();n&&(n.options||{}).transitions!==!1&&(e=n.size(),t=tt.fromRect(e.toRect()),this.visual.clip(t),this.animation=new li(t,{box:e}),s(this.options.series)&&this._setChildrenAnimation(t))},_setChildrenAnimation:function(e){var t,n,i=this.animationPoints();for(t=0;t<i.length;t++)n=i[t],n&&n.visual&&be(n.visual.options.zIndex)&&n.visual.clip(e)}},di=Zn.extend({render:function(){Zn.fn.render.call(this),this.updateStackRange(),this.renderSegments()},pointType:function(){return ni},createPoint:function(e,t){var n,i,o,r=t.categoryIx,a=t.category,s=t.series,l=t.seriesIx,c=this.seriesMissingValues(s),d=e.valueFields.value;if(!be(d)||null===d){if(c!==Rt)return null;d=0}return n=this.pointOptions(s,l),n=this.evalPointOptions(n,d,a,r,s,l),i=e.fields.color||s.color,Ae(s.color)&&(i=n.color),o=new ni(d,n),o.color=i,this.append(o),o},plotRange:function(e){var t,n,i,o,r=this,a=this.plotValue(e);if(this.options.isStacked)for(t=e.categoryIx,n=this.categoryPoints[t],i=0;i<n.length&&(o=n[i],e!==o);i++)a+=r.plotValue(o),r.options.isStacked100&&(a=Math.min(a,1));return[a,a]},createSegment:function(e,t,n){var i,o=t.style;return new(i=o===Nt?ri:o===Ht?ai:ii)(e,t,n)},animationPoints:function(){var e,t=this.points,n=[];for(e=0;e<t.length;e++)n.push((t[e]||{}).marker);return n.concat(this._segments)}}),Me(di.prototype,si,ci),ui=ii.extend({init:function(e,t,n,i,o){ii.fn.init.call(this,e,t,n),this.prevSegment=i,this.stackPoints=o},createVisual:function(){var e=this.series,t=e._defaults,n=e.line||{},i=e.color;Ae(i)&&t&&(i=t.color),this.visual=new ot({zIndex:e.zIndex}),this.createFill({fill:{color:i,opacity:e.opacity},stroke:null}),n.width>0&&n.visible!==!1&&this.createStroke({stroke:Me({color:i,opacity:e.opacity,lineCap:"butt"},n)})},strokeSegments:function(){var e=this._strokeSegments;return e||(e=this._strokeSegments=this.createStrokeSegments()),e},createStrokeSegments:function(){return this.segmentsFromPoints(this.points())},stackSegments:function(){return this.prevSegment?this.prevSegment.createStackSegments(this.stackPoints):this.createStackSegments(this.stackPoints)},createStackSegments:function(e){return this.segmentsFromPoints(this.toGeometryPoints(e)).reverse()},segmentsFromPoints:function(e){return e.map(function(e){return new at.Segment(e)})},createStroke:function(e){var t=new tt(e);t.segments.push.apply(t.segments,this.strokeSegments()),this.visual.append(t)},hasStackSegment:function(){return this.prevSegment||this.stackPoints&&this.stackPoints.length},createFill:function(e){var t,n,i=this.strokeSegments(),o=i.slice(0),r=this.hasStackSegment();r&&(t=this.stackSegments(),Ne(o,t)),n=new tt(e),n.segments.push.apply(n.segments,o),!r&&i.length>1&&this.fillToAxes(n),this.visual.append(n)},fillToAxes:function(e){var t=this.parent,n=t.options.invertAxes,i=t.seriesValueAxis(this.series),o=t.categoryAxisCrossingValue(i),r=i.getSlot(o,o,!0),a=this.strokeSegments(),s=a[0].anchor(),l=Fe(a).anchor(),c=n?r.x1:r.y1; +n?e.lineTo(c,l.y).lineTo(c,s.y):e.lineTo(l.x,c).lineTo(s.x,c)}}),hi=ui.extend({createStrokeSegments:function(){return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints))},createStackSegments:function(e){return this.segmentsFromPoints(this.calculateStepPoints(e)).reverse()}}),Me(hi.prototype,oi),pi=ui.extend({createStrokeSegments:function(){var e=new He(this.options.closed),t=this.points();return e.process(t)},createStackSegments:function(){var e,t,n=this.strokeSegments(),i=[];for(e=n.length-1;e>=0;e--)t=n[e],i.push(new at.Segment(t.anchor(),t.controlOut(),t.controlIn()));return i}}),fi=di.extend({createSegment:function(e,t,n,i){var o,r,a,s,l=this.options.isStacked,c=(t.line||{}).style;return l&&n>0&&i&&(a=this.seriesMissingValues(t),"gap"!==a?(r=i.linePoints,o=i):r=this._gapStackPoints(e,n,c)),new(s=c===Nt?hi:c===Ht?pi:ui)(e,t,n,o,r)},reflow:function(e){var t,n,i,o,r=this;if(di.fn.reflow.call(this,e),t=this._stackPoints)for(n=0;n<t.length;n++)i=t[n],o=r.categoryAxis.getSlot(i.categoryIx),i.reflow(o)},_gapStackPoints:function(e,t,n){var i,o,r,a,s,l,c,d,u=this,h=this.seriesPoints,p=e[0].categoryIx,f=e.length;for(p<0&&(p=0,f--),i=p+f,o=this.seriesOptions[0]._outOfRangeMinPoint?1:0,r=[],this._stackPoints=this._stackPoints||[],a=p;a<i;a++){s=a+o,l=t,c=void 0;do l--,c=h[l][s];while(l>0&&!c);c?(n!==Nt&&a>p&&!h[l][s-1]&&r.push(u._previousSegmentPoint(a,s,s-1,l)),r.push(c),n!==Nt&&a+1<i&&!h[l][s+1]&&r.push(u._previousSegmentPoint(a,s,s+1,l))):(d=u._createGapStackPoint(a),u._stackPoints.push(d),r.push(d))}return r},_previousSegmentPoint:function(e,t,n,i){for(var o,r=this.seriesPoints,a=i;a>0&&!o;)a--,o=r[a][n];return o?o=r[a][t]:(o=this._createGapStackPoint(e),this._stackPoints.push(o)),o},_createGapStackPoint:function(e){var t=this.pointOptions({},0),n=new ni(0,t);return n.categoryIx=e,n.series={},n},seriesMissingValues:function(e){return e.missingValues||Rt}}),gi=ee.extend({init:function(){this.axisRanges={}},update:function(e){var t,n,i,o=this.axisRanges;for(t in e)n=e[t],i=o[t],o[t]=i=i||{min:ie,max:oe},i.min=Math.min(i.min,n.min),i.max=Math.max(i.max,n.max)},reset:function(e){this.axisRanges[e]=void 0},query:function(e){return this.axisRanges[e]}}),mi=ye.extend({init:function(e,t,n){ye.fn.init.call(this,t),this.textBox=new ze(e,this.options,n),this.append(this.textBox)},createVisual:function(){this.textBox.options.noclip=this.options.noclip},reflow:function(e){var t=this.options,n=t.vertical,i=t.aboveAxis,o=this.children[0],r=o.options,a=o.box,s=o.options.padding,l=e;r.align=n?ae:ce,r.vAlign=n?se:ae,t.position===Un?n?(r.vAlign=se,!i&&a.height()<e.height()&&(r.vAlign=le)):r.align=i?fe:ce:t.position===ae?(r.vAlign=ae,r.align=ae):t.position===qn?n?r.vAlign=i?le:se:r.align=i?ce:fe:t.position===jn&&(n?l=i?new Ce(e.x1,e.y1-a.height(),e.x2,e.y1):new Ce(e.x1,e.y2,e.x2,e.y2+a.height()):(r.align=ae,l=i?new Ce(e.x2,e.y1,e.x2+a.width(),e.y2):new Ce(e.x1-a.width(),e.y1,e.x1,e.y2))),t.rotation||(n?s.left=s.right=(l.width()-o.contentBox.width())/2:s.top=s.bottom=(l.height()-o.contentBox.height())/2),o.reflow(l)},alignToClipBox:function(e){var t,n=this.options.vertical,i=n?pe:he,o=i+"1",r=i+"2",a=this.children[0],s=this.parent.box;(s[o]<e[o]||e[r]<s[r])&&(t=a.paddingBox.clone(),t[o]=Math.max(s[o],e[o]),t[r]=Math.min(s[r],e[r]),this.reflow(t))}}),Te(mi,{position:jn,margin:Le(3),padding:Le(4),color:ge,background:"",border:{width:1,color:""},aboveAxis:!0,vertical:!1,animation:{type:kt,delay:wt},zIndex:2}),vi=6,_i=ye.extend({init:function(e,t){ye.fn.init.call(this),this.options=t,this.color=t.color||de,this.aboveAxis=Ee(this.options.aboveAxis,!0),this.value=e},render:function(){this._rendered||(this._rendered=!0,this.createLabel(),this.createNote(),this.errorBar&&this.append(this.errorBar))},createLabel:function(){var e,t,n,i=this.options,o=i.labels;o.visible&&(e=this.pointData(),t=Pe(o),n=t?t(e):this.formatValue(o.format),this.label=new mi(n,Me({vertical:i.vertical},o),e),this.append(this.label))},formatValue:function(e){return this.owner.formatPointValue(this,e)},reflow:function(e){var t,n,i=this;if(this.render(),t=this.label,this.box=e,t&&(t.options.aboveAxis=this.aboveAxis,t.reflow(e)),this.note&&this.note.reflow(e),this.errorBars)for(n=0;n<this.errorBars.length;n++)i.errorBars[n].reflow(e)},createVisual:function(){var e,t=this,n=this,i=n.box,o=n.options,r=o.visual;this.visible!==!1&&(ye.fn.createVisual.call(this),r?(e=this.rectVisual=r({category:this.category,dataItem:this.dataItem,value:this.value,sender:this.getSender(),series:this.series,percentage:this.percentage,stackValue:this.stackValue,runningTotal:this.runningTotal,total:this.total,rect:i.toRect(),createVisual:function(){var e=new ot;return t.createRect(e),e},options:o}),e&&this.visual.append(e)):i.width()>0&&i.height()>0&&this.createRect(this.visual))},createRect:function(e){var t,n,i,o,r,a=this.options,s=a.border,c=be(s.opacity)?s.opacity:a.opacity,d=this.box.toRect();d.size.width=Math.round(d.size.width),t=this.rectVisual=tt.fromRect(d,{fill:{color:this.color,opacity:a.opacity},stroke:{color:this.getBorderColor(),width:s.width,opacity:c,dashType:s.dashType}}),n=this.box.width(),i=this.box.height(),o=a.vertical?n:i,o>vi&&(Se(t),(n<1||i<1)&&(t.options.stroke.lineJoin="round")),e.append(t),l(a)&&(r=this.createGradientOverlay(t,{baseColor:this.color},Me({end:a.vertical?void 0:[0,1]},a.overlay)),e.append(r))},createHighlight:function(e){var t=tt.fromRect(this.box.toRect(),e);return Se(t)},highlightVisual:function(){return this.rectVisual},highlightVisualArgs:function(){return{options:this.options,rect:this.box.toRect(),visual:this.rectVisual}},getBorderColor:function(){var e=this.color,t=this.options.border,n=t._brightness||xt,i=t.color;return be(i)||(i=new rt(e).brightness(n).toHex()),i},tooltipAnchor:function(){var e,t,n,i,o=this,r=o.options,a=o.box,s=o.aboveAxis,l=this.owner.pane.clipBox()||a,c=ce,d=se;return r.vertical?(e=Math.min(a.x2,l.x2)+Ct,s?t=Math.max(a.y1,l.y1):(t=Math.min(a.y2,l.y2),d=le)):(n=Math.max(a.x1,l.x1),i=Math.min(a.x2,l.x2),r.isStacked?(d=le,s?(c=fe,e=i):e=n,t=Math.max(a.y1,l.y1)-Ct):(s?e=i+Ct:(e=n-Ct,c=fe),t=Math.max(a.y1,l.y1))),{point:new xe(e,t),align:{horizontal:c,vertical:d}}},overlapsBox:function(e){return this.box.overlaps(e)},pointData:function(){return{dataItem:this.dataItem,category:this.category,value:this.value,percentage:this.percentage,stackValue:this.stackValue,runningTotal:this.runningTotal,total:this.total,series:this.series}}}),Me(_i.prototype,ei),Me(_i.prototype,ti),_i.prototype.defaults={border:{width:1},vertical:!0,overlay:{gradient:"glass"},labels:{visible:!1,format:"{0}"},opacity:1,notes:{label:{}}},bi=ye.extend({init:function(e){ye.fn.init.call(this,e),this.forEach=e.rtl?d:c},reflow:function(e){var t=this.options,n=t.vertical,i=t.gap,o=t.spacing,r=this.children,a=r.length,s=n?pe:he,l=a+i+o*(a-1),c=(n?e.height():e.width())/l,d=e[s+1]+c*(i/2);this.forEach(r,function(t,n){var i=(t.box||e).clone();i[s+1]=d,i[s+2]=d+c,t.reflow(i),n<a-1&&(d+=c*o),d+=c})}}),Te(bi,{vertical:!1,gap:0,spacing:0}),wi=ye.extend({reflow:function(e){var t,n,i,o=this,r=this.options.vertical?he:pe,a=this.children,s=a.length,l=this.box=new Ce;for(t=0;t<s;t++)n=a[t],n.visible!==!1&&(i=n.box.clone(),i.snapTo(e,r),0===t&&(l=o.box=i.clone()),n.reflow(i),l.wrap(i))}}),Te(wi,{vertical:!0}),ki=Zn.extend({render:function(){Zn.fn.render.call(this),this.updateStackRange()},pointType:function(){return _i},clusterType:function(){return bi},stackType:function(){return wi},stackLimits:function(e,t){var n=Zn.fn.stackLimits.call(this,e,t);return n},createPoint:function(e,t){var n,i,o,r,a,s,l=t.categoryIx,c=t.category,d=t.series,u=t.seriesIx,h=this,p=h.options,f=h.children,g=p.isStacked,m=this.pointValue(e),v=this.pointOptions(d,u),_=v.labels;return g&&_.position===jn&&(_.position=Un),v.isStacked=g,n=e.fields.color||d.color,m<0&&v.negativeColor&&(n=v.negativeColor),v=this.evalPointOptions(v,m,c,l,d,u),Ae(d.color)&&(n=v.color),i=this.pointType(),o=new i(m,v),o.color=n,r=f[l],r||(a=this.clusterType(),r=new a({vertical:p.invertAxes,gap:p.gap,spacing:p.spacing,rtl:!p.invertAxes&&(this.chartService||{}).rtl}),this.append(r)),g?(s=this.getStackWrap(d,r),s.append(o)):r.append(o),o},getStackWrap:function(e,t){var n,i,o,r=e.stack,a=r?r.group||r:r,s=t.children;if(typeof a===ne.STRING){for(i=0;i<s.length;i++)if(s[i]._stackGroup===a){n=s[i];break}}else n=s[0];return n||(o=this.stackType(),n=new o({vertical:!this.options.invertAxes}),n._stackGroup=a,t.append(n)),n},categorySlot:function(e,t,n){var i,o,r=this.options,a=e.getSlot(t),s=n.startValue();return r.isStacked&&(i=n.getSlot(s,s,!0),o=r.invertAxes?he:pe,a[o+1]=a[o+2]=i[o+1]),a},reflowCategories:function(e){var t,n=this.children,i=n.length;for(t=0;t<i;t++)n[t].reflow(e[t])},createAnimation:function(){this._setAnimationOptions(),Zn.fn.createAnimation.call(this),s(this.options.series)&&this._setChildrenAnimation()},_setChildrenAnimation:function(){var e,t,n,i=this,o=this.points;for(e=0;e<o.length;e++)t=o[e],n=t.visual,n&&be(n.options.zIndex)&&(t.options.animation=i.options.animation,t.createAnimation())},_setAnimationOptions:function(){var e,t,n=this.options,i=n.animation||{};n.isStacked?(t=this.seriesValueAxis(n.series[0]),e=t.getSlot(t.startValue())):e=this.categoryAxis.getSlot(0),i.origin=new st(e.x1,e.y1),i.vertical=!n.invertAxes}}),Te(ki,{animation:{type:Vt}}),yi=ye.extend({init:function(e,t){ye.fn.init.call(this,t),this.value=e},reflow:function(e){var t,n,i=this,o=i.options,r=i.value,a=i.owner,s=a.seriesValueAxis(o),l=s.getSlot(r.open,r.close),c=s.getSlot(r.low,r.high);l.x1=c.x1=e.x1,l.x2=c.x2=e.x2,this.realBody=l,t=c.center().x,n=[],n.push([[t,c.y1],[t,l.y1]]),n.push([[t,l.y2],[t,c.y2]]),this.lines=n,this.box=c.clone().wrap(l),this._rendered||(this._rendered=!0,this.createNote()),this.reflowNote()},reflowNote:function(){this.note&&this.note.reflow(this.box)},createVisual:function(){ye.fn.createVisual.call(this),this._mainVisual=this.mainVisual(this.options),this.visual.append(this._mainVisual),this.createOverlay()},mainVisual:function(e){var t=new ot;return this.createBody(t,e),this.createLines(t,e),t},createBody:function(e,t){var n=tt.fromRect(this.realBody.toRect(),{fill:{color:this.color,opacity:t.opacity},stroke:null});t.border.width>0&&n.options.set("stroke",{color:this.getBorderColor(),width:t.border.width,dashType:t.border.dashType,opacity:Ee(t.border.opacity,t.opacity)}),Se(n),e.append(n),l(t)&&e.append(this.createGradientOverlay(n,{baseColor:this.color},Me({end:t.vertical?void 0:[0,1]},t.overlay)))},createLines:function(e,t){this.drawLines(e,t,this.lines,t.line)},drawLines:function(e,t,n,i){var o,r,a;if(n)for(o={stroke:{color:i.color||this.color,opacity:Ee(i.opacity,t.opacity),width:i.width,dashType:i.dashType,lineCap:"butt"}},r=0;r<n.length;r++)a=tt.fromPoints(n[r],o),Se(a),e.append(a)},getBorderColor:function(){var e=this.options.border,t=e.color;return be(t)||(t=new rt(this.color).brightness(e._brightness).toHex()),t},createOverlay:function(){var e=tt.fromRect(this.box.toRect(),{fill:{color:de,opacity:0},stroke:null});this.visual.append(e)},createHighlight:function(){var e,t=this.options.highlight,n=this.color;return this.color=t.color||this.color,e=this.mainVisual(Me({},this.options,{line:{color:this.getBorderColor()}},t)),this.color=n,e},highlightVisual:function(){return this._mainVisual},highlightVisualArgs:function(){return{options:this.options,rect:this.box.toRect(),visual:this._mainVisual}},tooltipAnchor:function(){var e=this.box,t=this.owner.pane.clipBox()||e;return{point:new xe(e.x2+Ct,Math.max(e.y1,t.y1)+Ct),align:{horizontal:ce,vertical:se}}},formatValue:function(e){return this.owner.formatPointValue(this,e)},overlapsBox:function(e){return this.box.overlaps(e)}}),Te(yi,{vertical:!0,border:{_brightness:.8},line:{width:2},overlay:{gradient:"glass"},tooltip:{format:"<table><tr><th colspan='2'>{4:d}</th></tr><tr><td>Open:</td><td>{0:C}</td></tr><tr><td>High:</td><td>{1:C}</td></tr><tr><td>Low:</td><td>{2:C}</td></tr><tr><td>Close:</td><td>{3:C}</td></tr></table>"},highlight:{opacity:1,border:{width:1,opacity:1},line:{width:1,opacity:1}},notes:{visible:!0,label:{}}}),Me(yi.prototype,ei),Me(yi.prototype,ti),xi=Zn.extend({reflowCategories:function(e){var t,n=this.children,i=n.length;for(t=0;t<i;t++)n[t].reflow(e[t])},addValue:function(e,t){var n,i,o=t.categoryIx,r=t.category,a=t.series,s=t.seriesIx,l=this,c=l.children,d=l.options,h=e.valueFields,p=this.splitValue(h),f=u(p),g=a.data[o],m=this.categoryPoints[o];m||(this.categoryPoints[o]=m=[]),f&&(n=this.createPoint(e,t)),i=c[o],i||(i=new bi({vertical:d.invertAxes,gap:d.gap,spacing:d.spacing,rtl:!d.invertAxes&&(this.chartService||{}).rtl}),this.append(i)),n&&(this.updateRange(h,t),i.append(n),n.categoryIx=o,n.category=r,n.series=a,n.seriesIx=s,n.owner=this,n.dataItem=g,n.noteText=e.fields.noteText),this.points.push(n),m.push(n)},pointType:function(){return yi},createPoint:function(e,t){var n,i=t.categoryIx,o=t.category,r=t.series,a=t.seriesIx,s=this.pointType(),l=e.valueFields,c=Me({},r),d=e.fields.color||r.color;return c=this.evalPointOptions(c,l,o,i,r,a),r.type===jt&&l.open>l.close&&(d=e.fields.downColor||r.downColor||r.color),Ae(r.color)&&(d=c.color),c.vertical=!this.options.invertAxes,n=new s(l,c),n.color=d,n},splitValue:function(e){return[e.low,e.open,e.close,e.high]},updateRange:function(e,t){var n=t.series.axis,i=this.splitValue(e),o=this.valueAxisRanges[n];o=this.valueAxisRanges[n]=o||{min:ie,max:oe},o=this.valueAxisRanges[n]={min:Math.min.apply(Math,i.concat([o.min])),max:Math.max.apply(Math,i.concat([o.max]))}},formatPointValue:function(e,t){var n=e.value;return this.chartService.format.auto(t,n.open,n.high,n.low,n.close,e.category)},animationPoints:function(){return this.points}}),Me(xi.prototype,ci),Ci=yi.extend({init:function(e,t){yi.fn.init.call(this,e,t),this.createNote()},reflow:function(e){var t,n,i,o,r=this,a=r.options,s=r.value,l=r.owner,c=l.seriesValueAxis(a);this.boxSlot=n=c.getSlot(s.q1,s.q3),this.realBody=n,this.reflowBoxSlot(e),this.whiskerSlot=t=c.getSlot(s.lower,s.upper),this.reflowWhiskerSlot(e),i=c.getSlot(s.median),s.mean&&(o=c.getSlot(s.mean),this.meanPoints=this.calcMeanPoints(e,o)),this.whiskerPoints=this.calcWhiskerPoints(n,t),this.medianPoints=this.calcMedianPoints(e,i),this.box=t.clone().wrap(n),this.reflowNote()},reflowBoxSlot:function(e){this.boxSlot.x1=e.x1,this.boxSlot.x2=e.x2},reflowWhiskerSlot:function(e){this.whiskerSlot.x1=e.x1,this.whiskerSlot.x2=e.x2},calcMeanPoints:function(e,t){return[[[e.x1,t.y1],[e.x2,t.y1]]]},calcWhiskerPoints:function(e,t){var n=t.center().x;return[[[n-5,t.y1],[n+5,t.y1],[n,t.y1],[n,e.y1]],[[n-5,t.y2],[n+5,t.y2],[n,t.y2],[n,e.y2]]]},calcMedianPoints:function(e,t){return[[[e.x1,t.y1],[e.x2,t.y1]]]},renderOutliers:function(e){var t,n,i,o,r=this,a=this.value,s=a.outliers||[],l=3*Math.abs(a.q3-a.q1),c=[],d=e.markers||{};for(t=0;t<s.length;t++)n=s[t],d=n<a.q3+l&&n>a.q1-l?e.outliers:e.extremes,i=Me({},d.border),be(i.color)||(i.color=be(r.color)?r.color:new rt(d.background).brightness(xt).toHex()),o=new Be({type:d.type,width:d.size,height:d.size,rotation:d.rotation,background:d.background,border:i,opacity:d.opacity}),o.value=n,c.push(o);return this.reflowOutliers(c),c},reflowOutliers:function(e){var t,n,i,o=this,r=this.owner.seriesValueAxis(this.options),a=this.box.center();for(t=0;t<e.length;t++)n=e[t].value,i=r.getSlot(n),o.options.vertical?i.move(a.x):i.move(void 0,a.y),o.box=o.box.wrap(i),e[t].reflow(i)},mainVisual:function(e){var t,n,i=yi.fn.mainVisual.call(this,e),o=this.renderOutliers(e);for(t=0;t<o.length;t++)n=o[t].getElement(),n&&i.append(n);return i},createLines:function(e,t){this.drawLines(e,t,this.whiskerPoints,t.whiskers),this.drawLines(e,t,this.medianPoints,t.median),this.drawLines(e,t,this.meanPoints,t.mean)},getBorderColor:function(){return(this.options.border||{}).color?this.options.border.color:this.color?this.color:yi.fn.getBorderColor.call(this)}}),Te(Ci,{border:{_brightness:.8},line:{width:2},median:{color:"#f6f6f6"},mean:{width:2,dashType:"dash",color:"#f6f6f6"},overlay:{gradient:"glass"},tooltip:{format:"<table><tr><th colspan='2'>{6:d}</th></tr><tr><td>Lower:</td><td>{0:C}</td></tr><tr><td>Q1:</td><td>{1:C}</td></tr><tr><td>Median:</td><td>{2:C}</td></tr><tr><td>Mean:</td><td>{5:C}</td></tr><tr><td>Q3:</td><td>{3:C}</td></tr><tr><td>Upper:</td><td>{4:C}</td></tr></table>"},highlight:{opacity:1,border:{width:1,opacity:1},line:{width:1,opacity:1}},notes:{visible:!0,label:{}},outliers:{visible:!0,size:Ft,type:ne.CROSS,background:de,border:{width:2,opacity:1},opacity:0},extremes:{visible:!0,size:Ft,type:ue,background:de,border:{width:2,opacity:1},opacity:0}}),Me(Ci.prototype,ei),Si=Ci.extend({reflowBoxSlot:function(e){this.boxSlot.y1=e.y1,this.boxSlot.y2=e.y2},reflowWhiskerSlot:function(e){this.whiskerSlot.y1=e.y1,this.whiskerSlot.y2=e.y2},calcMeanPoints:function(e,t){return[[[t.x1,e.y1],[t.x1,e.y2]]]},calcWhiskerPoints:function(e,t){var n=t.center().y;return[[[t.x1,n-5],[t.x1,n+5],[t.x1,n],[e.x1,n]],[[t.x2,n-5],[t.x2,n+5],[t.x2,n],[e.x2,n]]]},calcMedianPoints:function(e,t){return[[[t.x1,e.y1],[t.x1,e.y2]]]}}),Ti=xi.extend({addValue:function(e,t){var n,i,o=t.categoryIx,r=t.category,a=t.series,s=t.seriesIx,l=this,c=l.children,d=l.options,h=e.valueFields,p=this.splitValue(h),f=u(p),g=a.data[o],m=this.categoryPoints[o];m||(this.categoryPoints[o]=m=[]),f&&(n=this.createPoint(e,t)),i=c[o],i||(i=new bi({vertical:d.invertAxes,gap:d.gap,spacing:d.spacing,rtl:!d.invertAxes&&(this.chartService||{}).rtl}),this.append(i)),n&&(this.updateRange(h,t),i.append(n),n.categoryIx=o,n.category=r,n.series=a,n.seriesIx=s,n.owner=this,n.dataItem=g),this.points.push(n),m.push(n)},pointType:function(){return this.options.invertAxes?Si:Ci},splitValue:function(e){return[e.lower,e.q1,e.median,e.q3,e.upper]},updateRange:function(e,t){var n=t.series.axis,i=this.valueAxisRanges[n],o=this.splitValue(e).concat(this.filterOutliers(e.outliers));be(e.mean)&&(o=o.concat(e.mean)),i=this.valueAxisRanges[n]=i||{min:ie,max:oe},i=this.valueAxisRanges[n]={min:Math.min.apply(Math,o.concat([i.min])),max:Math.max.apply(Math,o.concat([i.max]))}},formatPointValue:function(e,t){var n=e.value;return this.chartService.format.auto(t,n.lower,n.q1,n.median,n.q3,n.upper,n.mean,e.category)},filterOutliers:function(e){var t,n,i=(e||[]).length,o=[];for(t=0;t<i;t++)n=e[t],be(n)&&null!==n&&o.push(n);return o}}),Di=Qn.extend({getAxis:function(){var e=this.chart.seriesAxes(this.series),t=this.isVertical?e.y:e.x;return t}}),Ai=ye.extend({init:function(e,t){ye.fn.init.call(this,t),this.plotArea=e,this.chartService=e.chartService,this._initFields(),this.render()},_initFields:function(){this.xAxisRanges={},this.yAxisRanges={},this.points=[],this.seriesPoints=[],this.seriesOptions=[],this._evalSeries=[]},render:function(){this.traverseDataPoints(this.addValue.bind(this))},addErrorBar:function(e,t,n){var i,o=e.value[t],r=t+"Value",a=t+"ErrorLow",s=t+"ErrorHigh",l=n.seriesIx,c=n.series,d=e.options.errorBars,u=n[a],h=n[s];te(o)&&(te(u)&&te(h)&&(i={low:u,high:h}),d&&be(d[r])&&(this.seriesErrorRanges=this.seriesErrorRanges||{x:[],y:[]},this.seriesErrorRanges[t][l]=this.seriesErrorRanges[t][l]||new _t(d[r],c,t),i=this.seriesErrorRanges[t][l].getErrorRange(o,d[r])),i&&this.addPointErrorBar(i,e,t))},addPointErrorBar:function(e,t,n){var i,o=e.low,r=e.high,a=t.series,s=t.options.errorBars,l=n===pe,c={};t[n+"Low"]=o,t[n+"High"]=r,t.errorBars=t.errorBars||[],i=new Di(o,r,l,this,a,s),t.errorBars.push(i),t.append(i),c[n]=o,this.updateRange(c,a),c[n]=r,this.updateRange(c,a)},addValue:function(t,n){var i,o=t.x,r=t.y,a=n.seriesIx,s=this.options.series[a],l=this.seriesMissingValues(s),c=this.seriesPoints[a],d=t;h(o)&&h(r)||(d=this.createMissingValue(d,l)),d&&(i=this.createPoint(d,n),i&&(e.extend(i,n),this.addErrorBar(i,he,n),this.addErrorBar(i,pe,n)),this.updateRange(d,n.series)),this.points.push(i),c.push(i)},seriesMissingValues:function(e){return e.missingValues},createMissingValue:function(){},updateRange:function(e,t){var n=this.chartService.intl,i=t.xAxis,o=t.yAxis,r=e.x,a=e.y,s=this.xAxisRanges[i],l=this.yAxisRanges[o];h(r)&&(s=this.xAxisRanges[i]=s||{min:ie,max:oe},Oe(r)&&(r=Ve(n,r)),s.min=Math.min(s.min,r),s.max=Math.max(s.max,r)),h(a)&&(l=this.yAxisRanges[o]=l||{min:ie,max:oe},Oe(a)&&(a=Ve(n,a)),l.min=Math.min(l.min,a),l.max=Math.max(l.max,a))},evalPointOptions:function(e,t,n){var i,r=n.series,a=n.seriesIx,s={defaults:r._defaults,excluded:["data","tooltip","content","template","visual","toggle","_outOfRangeMinPoint","_outOfRangeMaxPoint"]},l=this._evalSeries[a];return be(l)||(this._evalSeries[a]=l=o(e,{},s,!0)),i=e,l&&(i=Me({},e),o(i,{value:t,series:r,dataItem:n.dataItem},s)),i},pointType:function(){return ni},pointOptions:function(e,t){var n,i=this.seriesOptions[t];return i||(n=this.pointType().prototype.defaults,this.seriesOptions[t]=i=Me({},n,{markers:{opacity:e.opacity},tooltip:{format:this.options.tooltip.format},labels:{format:this.options.labels.format}},e)),i},createPoint:function(e,t){var n,i=t.series,o=this.pointOptions(i,t.seriesIx),r=t.color||i.color;return o=this.evalPointOptions(o,e,t),Ae(i.color)&&(r=o.color),n=new ni(e,o),n.color=r,this.append(n),n},seriesAxes:function(e){var t=e.xAxis,n=e.yAxis,i=this.plotArea,o=t?i.namedXAxes[t]:i.axisX,r=n?i.namedYAxes[n]:i.axisY;if(!o)throw Error("Unable to locate X axis with name "+t);if(!r)throw Error("Unable to locate Y axis with name "+n);return{x:o,y:r}},reflow:function(e){var t=this,n=this.points,i=!this.options.clip,o=0;this.traverseDataPoints(function(e,r){var a,s=n[o++],l=t.seriesAxes(r.series),c=l.x.getSlot(e.x,e.x,i),d=l.y.getSlot(e.y,e.y,i);s&&(c&&d?(a=t.pointSlot(c,d),s.reflow(a)):s.visible=!1)}),this.box=e},pointSlot:function(e,t){return new Ce(e.x1,t.y1,e.x2,t.y2)},traverseDataPoints:function(e){var t,n,i,o,r,a,s,l=this,c=this,d=c.options.series,u=c.seriesPoints;for(t=0;t<d.length;t++)for(n=d[t],i=u[t],i||(u[t]=[]),o=0;o<n.data.length;o++)r=l._bindPoint(n,t,o),a=r.valueFields,s=r.fields,e(a,Me({pointIx:o,series:n,seriesIx:t,dataItem:n.data[o],owner:l},s))},formatPointValue:function(e,t){var n=e.value;return this.chartService.format.auto(t,n.x,n.y)},animationPoints:function(){var e,t=this.points,n=[];for(e=0;e<t.length;e++)n.push((t[e]||{}).marker);return n}}),Te(Ai,{series:[],tooltip:{format:"{0}, {1}"},labels:{format:"{0}, {1}"},clip:!0}),Me(Ai.prototype,ci,{_bindPoint:Zn.prototype._bindPoint}),Ei=ni.extend({init:function(e,t){ni.fn.init.call(this,e,t),this.category=e.category},createHighlight:function(){var e=this.options.highlight,t=e.border,n=this.options.markers,i=this.box.center(),o=(n.size+n.border.width+t.width)/2,r=new ot,a=new et.Circle(new at.Circle([i.x,i.y+o/5+t.width/2],o+t.width/2),{stroke:{color:"none"},fill:this.createGradient({gradient:"bubbleShadow",color:n.background,stops:[{offset:0,color:n.background,opacity:.3},{offset:1,color:n.background,opacity:0}]})}),s=new et.Circle(new at.Circle([i.x,i.y],o),{stroke:{color:t.color||new rt(n.background).brightness(xt).toHex(),width:t.width,opacity:t.opacity},fill:{color:n.background,opacity:e.opacity}});return r.append(a,s),r}}),Ei.prototype.defaults=Me({},Ei.prototype.defaults,{labels:{position:ae},highlight:{opacity:1,border:{color:"#fff",width:2,opacity:1}}}),Ei.prototype.defaults.highlight.zIndex=void 0,Ii=Ai.extend({_initFields:function(){this._maxSize=oe,Ai.fn._initFields.call(this)},addValue:function(e,t){null!==e.size&&(e.size>0||e.size<0&&t.series.negativeValues.visible)?(this._maxSize=Math.max(this._maxSize,Math.abs(e.size)),Ai.fn.addValue.call(this,e,t)):(this.points.push(null),this.seriesPoints[t.seriesIx].push(null))},reflow:function(e){this.updateBubblesSize(e),Ai.fn.reflow.call(this,e)},pointType:function(){return Ei},createPoint:function(e,t){var n,i,o=t.series,r=o.data.length,a=t.pointIx*(wt/r),s={delay:a,duration:wt-a,type:Ut},l=t.color||o.color;return e.size<0&&o.negativeValues.visible&&(l=Ee(o.negativeValues.color,l)),n=Me({labels:{animation:{delay:a,duration:wt-a}}},this.pointOptions(o,t.seriesIx),{markers:{type:ue,border:o.border,opacity:o.opacity,animation:s}}),n=this.evalPointOptions(n,e,t),Ae(o.color)&&(l=n.color),n.markers.background=l,i=new Ei(e,n),i.color=l,this.append(i),i},updateBubblesSize:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_=this,b=this,w=b.options.series,k=Math.min(e.width(),e.height());for(t=0;t<w.length;t++)for(n=w[t],i=_.seriesPoints[t],o=n.minSize||Math.max(.02*k,10),r=n.maxSize||.2*k,a=o/2,s=r/2,l=Math.PI*a*a,c=Math.PI*s*s,d=c-l,u=d/_._maxSize,h=0;h<i.length;h++)p=i[h],p&&(f=Math.abs(p.value.size)*u,g=Math.sqrt((l+f)/Math.PI),m=Ee(p.options.zIndex,0),v=m+(1-g/s),Me(p.options,{zIndex:v,markers:{size:2*g,zIndex:v},labels:{zIndex:v+1}}))},formatPointValue:function(e,t){var n=e.value;return this.chartService.format.auto(t,n.x,n.y,n.size,e.category)},createAnimation:function(){},createVisual:function(){}}),Te(Ii,{tooltip:{format:"{3}"},labels:{format:"{3}"}}),Mi=Be.extend({}),Me(Mi.prototype,ei),Fi=ye.extend({init:function(e,t){ye.fn.init.call(this,t),this.aboveAxis=this.options.aboveAxis,this.color=t.color||de,this.value=e},render:function(){var e=this.options;this._rendered||(this._rendered=!0,be(this.value.target)&&(this.target=new Mi({type:e.target.shape,background:e.target.color||this.color,opacity:e.opacity,zIndex:e.zIndex,border:e.target.border,vAlign:se,align:fe}),this.target.value=this.value,this.target.dataItem=this.dataItem,this.target.series=this.series,this.append(this.target)),this.createNote())},reflow:function(e){var t,n,i,o,r,a,s,l,c,d,u;this.render(),t=this,n=t.options,i=t.target,o=t.owner,r=n.invertAxes,a=o.seriesValueAxis(this.options),s=o.categorySlot(o.categoryAxis,n.categoryIx,a),l=a.getSlot(this.value.target),c=r?l:s,d=r?s:l,i&&(u=new Ce(c.x1,d.y1,c.x2,d.y2),i.options.height=r?u.height():n.target.line.width,i.options.width=r?n.target.line.width:u.width(),i.reflow(u)),this.note&&this.note.reflow(e),this.box=e},createVisual:function(){var e,t;ye.fn.createVisual.call(this),e=this.options,t=tt.fromRect(this.box.toRect(),{fill:{color:this.color,opacity:e.opacity},stroke:null}),e.border.width>0&&t.options.set("stroke",{color:e.border.color||this.color,width:e.border.width,dashType:e.border.dashType,opacity:Ee(e.border.opacity,e.opacity)}),this.bodyVisual=t,Se(t),this.visual.append(t)},createAnimation:function(){this.bodyVisual&&(this.animation=nt.create(this.bodyVisual,this.options.animation))},createHighlight:function(e){return tt.fromRect(this.box.toRect(),e)},highlightVisual:function(){return this.bodyVisual},highlightVisualArgs:function(){return{rect:this.box.toRect(),visual:this.bodyVisual,options:this.options}},formatValue:function(e){return this.owner.formatPointValue(this,e)}}),Fi.prototype.tooltipAnchor=_i.prototype.tooltipAnchor,Te(Fi,{border:{width:1},vertical:!1,opacity:1,target:{shape:"",border:{width:0,color:"green"},line:{width:2}},tooltip:{format:"Current: {0}<br />Target: {1}"}}),Me(Fi.prototype,ei),Me(Fi.prototype,ti),Ri=Zn.extend({init:function(e,t){p(t),Zn.fn.init.call(this,e,t)},reflowCategories:function(e){var t,n=this.children,i=n.length;for(t=0;t<i;t++)n[t].reflow(e[t])},plotRange:function(e){var t=e.series,n=this.seriesValueAxis(t),i=this.categoryAxisCrossingValue(n);return[i,e.value.current||i]},createPoint:function(e,t){var n,i,o=t.categoryIx,r=t.category,a=t.series,s=t.seriesIx,l=this,c=l.options,d=l.children,u=e.valueFields,h=Me({vertical:!c.invertAxes,overlay:a.overlay,categoryIx:o,invertAxes:c.invertAxes},a),p=e.fields.color||a.color;return h=this.evalPointOptions(h,u,r,o,a,s),Ae(a.color)&&(p=h.color),n=new Fi(u,h),n.color=p,i=d[o],i||(i=new bi({vertical:c.invertAxes,gap:c.gap,spacing:c.spacing,rtl:!c.invertAxes&&(this.chartService||{}).rtl}),this.append(i)),i.append(n),n},updateRange:function(e,t){var n=e.current,i=e.target,o=t.series.axis,r=this.valueAxisRanges[o];be(n)&&!isNaN(n)&&be(i&&!isNaN(i))&&(r=this.valueAxisRanges[o]=r||{min:ie,max:oe},r.min=Math.min(r.min,n,i),r.max=Math.max(r.max,n,i))},formatPointValue:function(e,t){return this.chartService.format.auto(t,e.value.current,e.value.target)},pointValue:function(e){return e.valueFields.current},aboveAxis:function(e){var t=e.value.current;return t>0},createAnimation:function(){var e,t,n=this,i=this.points;for(this._setAnimationOptions(),e=0;e<i.length;e++)t=i[e],t.options.animation=n.options.animation,t.createAnimation()}}),Ri.prototype._setAnimationOptions=ki.prototype._setAnimationOptions,Te(Ri,{animation:{type:Vt}}),Pi=ee.extend({init:function(e,t){this.chartService=e,this.options=Me({},this.options,t)},getStyle:function(e,t){var n,i,o=e.background,r=e.border.color;return t&&(n=t.color||t.options.color,o=Ee(o,n),r=Ee(r,n)),i=Le(e.padding||{},"auto"),{backgroundColor:o,borderColor:r,font:e.font,color:e.color,opacity:e.opacity,borderWidth:We(e.border.width),paddingTop:We(i.top),paddingBottom:We(i.bottom),paddingLeft:We(i.left),paddingRight:We(i.right)}},show:function(e,t,n){e.format=t.format;var i=this.getStyle(t,n);e.style=i,!be(t.color)&&new rt(i.backgroundColor).percBrightness()>180&&(e.className="k-chart-tooltip-inverse"),this.chartService.notify(Hn,e),this.visible=!0},hide:function(){this.chartService&&this.chartService.notify(Nn),this.visible=!1},destroy:function(){delete this.chartService}}),Te(Pi,{border:{width:1},opacity:1}),zi=Pi.extend({init:function(e,t,n){Pi.fn.init.call(this,e,n),this.crosshair=t,this.formatService=e.format,this.initAxisName()},initAxisName:function(){var e,t=this.crosshair.axis,n=t.plotArea;e=n.categoryAxis?t.getCategory?"categoryAxis":"valueAxis":t.options.vertical?"yAxis":"xAxis",this.axisName=e},showAt:function(e){var t=this,n=t.crosshair.axis,i=t.options,o=n[i.stickyMode?"getCategory":"getValue"](e),r=o;i.format?r=this.formatService.auto(i.format,o):n.options.type===me&&(r=this.formatService.auto(n.options.labels.dateFormats[n.options.baseUnit],o)),this.show({point:e,anchor:this.getAnchor(),crosshair:this.crosshair,value:r,axisName:this.axisName,axisIndex:this.crosshair.axis.axisIndex},this.options)},hide:function(){this.chartService.notify(Nn,{crosshair:this.crosshair,axisName:this.axisName,axisIndex:this.crosshair.axis.axisIndex})},getAnchor:function(){var e,t,n,i=this,o=i.crosshair,r=i.options,a=r.position,s=r.padding,l=!o.axis.options.vertical,c=o.line.bbox();return l?(e=ae,a===le?(t=se,n=c.bottomLeft().translate(0,s)):(t=le,n=c.topLeft().translate(0,-s))):(t=ae,a===ce?(e=fe,n=c.topLeft().translate(-s,0)):(e=ce,n=c.topRight().translate(s,0))),{point:n,align:{horizontal:e,vertical:t}}}}),Te(zi,{padding:10}),Bi=ye.extend({init:function(e,t,n){ye.fn.init.call(this,n),this.axis=t,this.stickyMode=t instanceof Ue;var i=this.options.tooltip;i.visible&&(this.tooltip=new zi(e,this,Me({},i,{stickyMode:this.stickyMode})))},showAt:function(e){this.point=e,this.moveLine(),this.line.visible(!0),this.tooltip&&this.tooltip.showAt(e)},hide:function(){this.line.visible(!1),this.tooltip&&this.tooltip.hide()},moveLine:function(){var e,t,n=this,i=n.axis,o=n.point,r=i.options.vertical,a=this.getBox(),s=r?pe:he,l=new st(a.x1,a.y1);e=r?new st(a.x2,a.y1):new st(a.x1,a.y2),o&&(this.stickyMode?(t=i.getSlot(i.pointCategoryIndex(o)),l[s]=e[s]=t.center()[s]):l[s]=e[s]=o[s]),this.box=a,this.line.moveTo(l).lineTo(e)},getBox:function(){var e,t,n,i=this.axis,o=i.pane.axes,r=o.length,a=i.options.vertical,s=i.lineBox().clone(),l=a?he:pe;for(t=0;t<r;t++)n=o[t],n.options.vertical!==a&&(e?e.wrap(n.lineBox()):e=n.lineBox().clone());return s[l+1]=e[l+1],s[l+2]=e[l+2],s},createVisual:function(){ye.fn.createVisual.call(this);var e=this.options;this.line=new tt({stroke:{color:e.color,width:e.width,opacity:e.opacity,dashType:e.dashType},visible:!1}),this.moveLine(),this.visual.append(this.line)},destroy:function(){this.tooltip&&this.tooltip.destroy(),ye.fn.destroy.call(this)}}),Te(Bi,{color:ge,width:2,zIndex:-1,tooltip:{visible:!1}}),Li=ye.extend({init:function(e,t){ye.fn.init.call(this,e),this.pane=t},shouldClip:function(){var e,t=this.children,n=t.length;for(e=0;e<n;e++)if(t[e].options.clip===!0)return!0;return!1},_clipBox:function(){return this.pane.chartsBox(); +},createVisual:function(){var e,t,n;this.visual=new ot({zIndex:0}),this.shouldClip()&&(e=this.clipBox=this._clipBox(),t=e.toRect(),n=tt.fromRect(t),Se(n),this.visual.clip(n),this.unclipLabels())},stackRoot:function(){return this},unclipLabels:function(){var e,t,n,i,o,r,a,s=this,l=s.children,c=s.clipBox;for(e=0;e<l.length;e++)for(t=l[e].points||{},n=t.length,i=0;i<n;i++)o=t[i],o&&o.visible!==!1&&o.overlapsBox&&o.overlapsBox(c)&&(o.unclipElements?o.unclipElements():(r=o.label,a=o.note,r&&r.options.visible&&(r.alignToClipBox&&r.alignToClipBox(c),r.options.noclip=!0),a&&a.options.visible&&(a.options.noclip=!0)))},destroy:function(){ye.fn.destroy.call(this),delete this.parent}}),Li.prototype.isStackRoot=!0,Hi=qe.extend({init:function(e){qe.fn.init.call(this,e),this.id=f(),this.createTitle(),this.content=new ye,this.chartContainer=new Li({},this),this.append(this.content),this.axes=[],this.charts=[]},createTitle:function(){var e=this.options.title;Ie(e)&&(e=Me({},e,{align:e.position,position:se})),this.title=Z.Title.buildTitle(e,this,Hi.prototype.options.title)},appendAxis:function(e){this.content.append(e),this.axes.push(e),e.pane=this},appendAxisAt:function(e,t){this.content.append(e),this.axes.splice(t,0,e),e.pane=this},appendChart:function(e){this.chartContainer.parent!==this.content&&this.content.append(this.chartContainer),this.charts.push(e),this.chartContainer.append(e),e.pane=this},empty:function(){var e,t,n=this,i=this.parent;if(i){for(e=0;e<this.axes.length;e++)i.removeAxis(n.axes[e]);for(t=0;t<this.charts.length;t++)i.removeChart(n.charts[t])}this.axes=[],this.charts=[],this.content.destroy(),this.content.children=[],this.chartContainer.children=[]},reflow:function(e){var t;Fe(this.children)===this.content&&(t=this.children.pop()),qe.fn.reflow.call(this,e),t&&this.children.push(t),this.title&&(this.contentBox.y1+=this.title.box.height())},visualStyle:function(){var e=qe.fn.visualStyle.call(this);return e.zIndex=-10,e},renderComplete:function(){this.options.visible&&this.createGridLines()},stackRoot:function(){return this},clipRoot:function(){return this},createGridLines:function(){var e,t,n,i,o,r,a=this.axes,s=a.concat(this.parent.axes),l=[],c=[];for(e=0;e<a.length;e++)for(t=a[e],n=t.options.vertical,i=n?l:c,o=0;o<s.length;o++)0===i.length&&(r=s[o],n!==r.options.vertical&&Ne(i,t.createGridLines(r)))},refresh:function(){this.visual.clear(),this.content.parent=null,this.content.createGradient=this.createGradient.bind(this),this.content.renderVisual(),this.content.parent=this,this.title&&this.visual.append(this.title.visual),this.visual.append(this.content.visual),this.renderComplete(),this.notifyRender()},chartsBox:function(){var e,t,n,i,o,r,a,s,l,c=this.axes,d=c.length,u=new Ce;for(e=0;e<d;e++)t=c[e],n=t.options.vertical?pe:he,i=t.lineBox(),u[n+1]=i[n+1],u[n+2]=i[n+2];if(0===u.x2)for(o=this.parent.axes,r=o.length,a=0;a<r;a++)s=o[a],s.options.vertical||(l=s.lineBox(),u.x1=l.x1,u.x2=l.x2);return u},clipBox:function(){return this.chartContainer.clipBox},notifyRender:function(){var e=this.getService();e&&e.notify(On,{pane:new dt(this),index:this.paneIndex,name:this.options.name})}}),Ni=1,Hi.prototype.isStackRoot=!0,Te(Hi,{zIndex:-1,shrinkToFit:!0,title:{align:ce},visible:!0}),Oi=/area/i,Vi=ye.extend({init:function(e,t,n){ye.fn.init.call(this,t),this.initFields(e,t),this.series=e,this.initSeries(),this.charts=[],this.options.legend.items=[],this.axes=[],this.crosshairs=[],this.chartService=n,this.originalOptions=t,this.createPanes(),this.render(),this.createCrosshairs()},initFields:function(){},initSeries:function(){var e,t=this.series;for(e=0;e<t.length;e++)t[e].index=e},createPanes:function(){function e(e,t){Oe(e.title)&&(e.title={text:e.title}),e.title=Me({},t.title,e.title)}var t,n,i,o=this,r={title:{color:(this.options.title||{}).color}},a=[],s=this.options.panes||[],l=Math.max(s.length,1);for(t=0;t<l;t++)n=s[t]||{},e(n,r),i=new Hi(n),i.paneIndex=t,a.push(i),o.append(i);this.panes=a},createCrosshairs:function(e){var t,n,i,o,r,a=this;for(void 0===e&&(e=this.panes),t=0;t<e.length;t++)for(n=e[t],i=0;i<n.axes.length;i++)o=n.axes[i],o.options.crosshair&&o.options.crosshair.visible&&(r=new Bi(a.chartService,o,o.options.crosshair),a.crosshairs.push(r),n.content.append(r))},removeCrosshairs:function(e){var t,n,i=this.crosshairs,o=e.axes;for(t=i.length-1;t>=0;t--)for(n=0;n<o.length;n++)if(i[t].axis===o[n]){i.splice(t,1);break}},hideCrosshairs:function(){var e,t=this.crosshairs;for(e=0;e<t.length;e++)t[e].hide()},findPane:function(e){var t,n,i=this.panes;for(n=0;n<i.length;n++)if(i[n].options.name===e){t=i[n];break}return t||i[0]},findPointPane:function(e){var t,n,i=this.panes;for(n=0;n<i.length;n++)if(i[n].box.containsPoint(e)){t=i[n];break}return t},appendAxis:function(e){var t=this.findPane(e.options.pane);t.appendAxis(e),this.axes.push(e),e.plotArea=this},removeAxis:function(e){var t,n,i=this,o=[];for(t=0;t<this.axes.length;t++)n=i.axes[t],e!==n?o.push(n):n.destroy();this.axes=o},appendChart:function(e,t){this.charts.push(e),t?t.appendChart(e):this.append(e)},removeChart:function(e){var t,n,i=this,o=[];for(t=0;t<this.charts.length;t++)n=i.charts[t],n!==e?o.push(n):n.destroy();this.charts=o},addToLegend:function(e){var t,n,i,o,r,a,s,l,c,d=e.length,u=this.options.legend,p=u.labels||{},f=u.inactiveItems||{},g=f.labels||{},m=[];for(t=0;t<d;t++)n=e[t],i=n.visible!==!1,n.visibleInLegend!==!1&&(o=n.name,r=i?Pe(p):Pe(g)||Pe(p),r&&(o=r({text:h(o)?o:"",series:n})),a=n._defaults,s=n.color,Ae(s)&&a&&(s=a.color),l=void 0,c=void 0,i?(l={},c=s):(l={color:g.color,font:g.font},c=f.markers.color),h(o)&&""!==o&&m.push({text:o,labels:l,markerColor:c,series:n,active:i}));Ne(u.items,m)},groupAxes:function(e){var t,n,i,o,r=[],a=[];for(t=0;t<e.length;t++)for(n=e[t].axes,i=0;i<n.length;i++)o=n[i],o.options.vertical?a.push(o):r.push(o);return{x:r,y:a,any:r.concat(a)}},groupSeriesByPane:function(){var e,t,n,i=this,o=this.series,r={};for(e=0;e<o.length;e++)t=o[e],n=i.seriesPaneName(t),r[n]?r[n].push(t):r[n]=[t];return r},filterVisibleSeries:function(e){var t,n,i=[];for(t=0;t<e.length;t++)n=e[t],n.visible!==!1&&i.push(n);return i},reflow:function(e){var t=this.options.plotArea,n=this.panes,i=Le(t.margin);this.box=e.clone().unpad(i),this.reflowPanes(),this.detachLabels(),this.reflowAxes(n),this.reflowCharts(n)},redraw:function(e){var t,n,i,o=this,r=[].concat(e);for(this.initSeries(),t=this.getRoot(),t&&t.cleanGradients(),n=0;n<r.length;n++)o.removeCrosshairs(r[n]),r[n].empty();for(this.render(r),this.detachLabels(),this.reflowAxes(this.panes),this.reflowCharts(r),this.createCrosshairs(r),i=0;i<r.length;i++)r[i].refresh()},axisCrossingValues:function(e,t){var n,i=e.options,o=[].concat(i.axisCrossingValues||i.axisCrossingValue),r=t.length-o.length,a=o[0]||0;for(n=0;n<r;n++)o.push(a);return o},alignAxisTo:function(e,t,n,i){var o=e.getSlot(n,n,!0),r=e.options.reverse?2:1,a=t.getSlot(i,i,!0),s=t.options.reverse?2:1,l=e.box.translate(a[he+s]-o[he+r],a[pe+s]-o[pe+r]);e.pane!==t.pane&&l.translate(0,e.pane.box.y1-t.pane.box.y1),e.reflow(l)},alignAxes:function(e,t){var n,i,o,r,a,s,l,c,d,u,h,p,f,g,m=this,v=e[0],_=t[0],b=this.axisCrossingValues(v,t),w=this.axisCrossingValues(_,e),k={},y={},x={},C={};for(n=0;n<t.length;n++)i=t[n],o=i.pane,r=o.id,a=i.options.visible!==!1,s=A(e,o)||v,l=b,s!==v&&(l=m.axisCrossingValues(s,t)),m.alignAxisTo(i,s,w[n],l[n]),i.options._overlap||(je(i.lineBox().x1)===je(s.lineBox().x1)&&(k[r]&&i.reflow(i.box.alignTo(k[r].box,ce).translate(-i.options.margin,0)),a&&(k[r]=i)),je(i.lineBox().x2)===je(s.lineBox().x2)&&(i._mirrored||(i.options.labels.mirror=!i.options.labels.mirror,i._mirrored=!0),m.alignAxisTo(i,s,w[n],l[n]),y[r]&&i.reflow(i.box.alignTo(y[r].box,fe).translate(i.options.margin,0)),a&&(y[r]=i)),0!==n&&_.pane===i.pane&&(i.alignTo(_),i.reflow(i.box)));for(c=0;c<e.length;c++)d=e[c],u=d.pane,h=u.id,p=d.options.visible!==!1,f=A(t,u)||_,g=w,f!==_&&(g=m.axisCrossingValues(f,e)),m.alignAxisTo(d,f,b[c],g[c]),d.options._overlap||(je(d.lineBox().y1)===je(f.lineBox().y1)&&(d._mirrored||(d.options.labels.mirror=!d.options.labels.mirror,d._mirrored=!0),m.alignAxisTo(d,f,b[c],g[c]),x[h]&&d.reflow(d.box.alignTo(x[h].box,se).translate(0,-d.options.margin)),p&&(x[h]=d)),je(d.lineBox().y2,ne.COORD_PRECISION)===je(f.lineBox().y2,ne.COORD_PRECISION)&&(C[h]&&d.reflow(d.box.alignTo(C[h].box,le).translate(0,d.options.margin)),p&&(C[h]=d)),0!==c&&(d.alignTo(v),d.reflow(d.box)))},shrinkAxisWidth:function(e){var t,n,i,o,r=this.groupAxes(e).any,a=D(r),s=0;for(t=0;t<e.length;t++)n=e[t],n.axes.length>0&&(s=Math.max(s,a.width()-n.contentBox.width()));if(0!==s)for(i=0;i<r.length;i++)o=r[i],o.options.vertical||o.reflow(o.box.shrink(s,0))},shrinkAxisHeight:function(e){var t,n,i,o,r,a,s;for(n=0;n<e.length;n++)if(i=e[n],o=i.axes,r=Math.max(0,D(o).height()-i.contentBox.height()),0!==r){for(a=0;a<o.length;a++)s=o[a],s.options.vertical&&s.reflow(s.box.shrink(0,r));t=!0}return t},fitAxes:function(e){var t,n,i,o,r,a,s,l,c,d,u=this.groupAxes(e).any,h=0;for(t=0;t<e.length;t++)if(n=e[t],i=n.axes,o=n.contentBox,i.length>0)for(r=D(i),a=Math.max(o.y1-r.y1,o.y2-r.y2),h=Math.max(h,o.x1-r.x1),s=0;s<i.length;s++)l=i[s],l.reflow(l.box.translate(0,a));for(c=0;c<u.length;c++)d=u[c],d.reflow(d.box.translate(h,0))},reflowAxes:function(e){var t,n=this,i=this.groupAxes(e);for(t=0;t<e.length;t++)n.reflowPaneAxes(e[t]);i.x.length>0&&i.y.length>0&&(this.alignAxes(i.x,i.y),this.shrinkAxisWidth(e),this.autoRotateAxisLabels(i),this.alignAxes(i.x,i.y),this.shrinkAxisWidth(e)&&this.alignAxes(i.x,i.y),this.shrinkAxisHeight(e),this.alignAxes(i.x,i.y),this.shrinkAxisHeight(e)&&this.alignAxes(i.x,i.y),this.fitAxes(e))},autoRotateAxisLabels:function(e){var t,n,i,o,r=this,a=this,s=a.panes,l=Wi(s);for(n=0;n<l.length;n++)i=l[n],i.autoRotateLabels()&&(t=!0);if(t){for(o=0;o<s.length;o++)r.reflowPaneAxes(s[o]);e.x.length>0&&e.y.length>0&&(this.alignAxes(e.x,e.y),this.shrinkAxisWidth(s))}},reflowPaneAxes:function(e){var t,n=e.axes,i=n.length;if(i>0)for(t=0;t<i;t++)n[t].reflow(e.contentBox)},reflowCharts:function(e){var t,n,i=this.charts,o=i.length,r=this.box;for(t=0;t<o;t++)n=i[t].pane,n&&!De(n,e)||i[t].reflow(r)},reflowPanes:function(){var e,t,n,i,o,r,a,s,l,c=this,d=c.box,u=c.panes,h=u.length,p=d.height(),f=h,g=0,m=d.y1;for(e=0;e<h;e++)t=u[e],n=t.options.height,t.options.width=d.width(),t.options.height?(n.indexOf&&n.indexOf("%")&&(i=parseInt(n,10)/100,t.options.height=i*d.height()),t.reflow(d.clone()),p-=t.options.height):g++;for(o=0;o<h;o++)r=u[o],r.options.height||(r.options.height=p/g);for(a=0;a<h;a++)s=u[a],l=d.clone().move(d.x1,m),s.reflow(l),f--,m+=s.options.height},backgroundBox:function(){var e,t,n,i,o,r,a=this.axes,s=a.length;for(t=0;t<s;t++)for(n=a[t],i=0;i<s;i++)o=a[i],n.options.vertical!==o.options.vertical&&(r=n.lineBox().clone().wrap(o.lineBox()),e=e?e.wrap(r):r);return e||this.box},chartsBoxes:function(){var e,t=this.panes,n=[];for(e=0;e<t.length;e++)n.push(t[e].chartsBox());return n},addBackgroundPaths:function(e){var t,n=this.chartsBoxes();for(t=0;t<n.length;t++)e.paths.push(tt.fromRect(n[t].toRect()))},backgroundContainsPoint:function(e){var t,n=this.chartsBoxes();for(t=0;t<n.length;t++)if(n[t].containsPoint(e))return!0},createVisual:function(){var e,t,n,i,o;ye.fn.createVisual.call(this),e=this.options.plotArea,t=e.opacity,n=e.background,i=e.border,void 0===i&&(i={}),E(n)&&(n=de,t=0),o=this._bgVisual=new et.MultiPath({fill:{color:n,opacity:t},stroke:{color:i.width?i.color:"",width:i.width,dashType:i.dashType},zIndex:-1}),this.addBackgroundPaths(o),this.appendVisual(o)},pointsByCategoryIndex:function(e){var t,n,i,o,r,a=this.charts,s=[];if(null!==e)for(t=0;t<a.length;t++)if(n=a[t],"_navigator"!==n.pane.options.name&&(i=a[t].categoryPoints[e],i&&i.length))for(o=0;o<i.length;o++)r=i[o],r&&be(r.value)&&null!==r.value&&s.push(r);return s},pointsBySeriesIndex:function(e){return this.filterPoints(function(t){return t.series.index===e})},pointsBySeriesName:function(e){return this.filterPoints(function(t){return t.series.name===e})},filterPoints:function(e){var t,n,i,o,r,a=this.charts,s=[];for(t=0;t<a.length;t++)for(n=a[t],i=n.points,o=0;o<i.length;o++)r=i[o],r&&r.visible!==!1&&e(r)&&s.push(r);return s},findPoint:function(e){var t,n,i,o,r,a=this.charts;for(t=0;t<a.length;t++)for(n=a[t],i=n.points,o=0;o<i.length;o++)if(r=i[o],r&&r.visible!==!1&&e(r))return r},paneByPoint:function(e){var t,n,i=this.panes;for(t=0;t<i.length;t++)if(n=i[t],n.box.containsPoint(e))return n},detachLabels:function(){var e=this.groupAxes(this.panes),t=e.x,n=e.y;this.detachAxisGroupLabels(n,t),this.detachAxisGroupLabels(t,n)},detachAxisGroupLabels:function(e,t){var n,i,o,r,a,s,l,c=this,d=0;for(n=0;n<e.length;n++)i=e[n],o=i.pane,r=A(t,o)||t[0],a=n+d,s=c.createLabelAxis(i,a,r),s&&(d++,l=o.axes.indexOf(i)+d,o.appendAxisAt(s,l))},createLabelAxis:function(e,t,n){var i,o,r,a,s,l,c,d,u=e.options.labels,h=u.position,p=h!==ne.END&&h!==ne.START,f=u.visible;return p||f===!1?null:(i=this.groupAxes(this.panes),o=n.options.vertical?i.x:i.y,r=this.axisCrossingValues(n,o),a=h===ne.END,s=n.range(),l=a?s.max:s.min,c=Ge(r[t],s.min,s.max),c-l===0?null:(r.splice(t+1,0,l),n.options.axisCrossingValues=r,d=e.clone(),e.clear(),d.options.name=void 0,d.options.line.visible=!1,d.options.crosshair=void 0,d.options.notes=void 0,d.options.plotBands=void 0,d))}}),Wi=function(e){return e.reduce(function(e,t){return e.concat(t.axes)},[])},Te(Vi,{series:[],plotArea:{margin:{}},background:"",border:{color:ge,width:0},legend:{inactiveItems:{labels:{color:"#919191"},markers:{color:"#919191"}}}}),Ui={hover:function(e,t){this._dispatchEvent(e,t,Tn)},click:function(e,t){this._dispatchEvent(e,t,Sn)}},qi=ee.extend({init:function(e,t,n){var i,o,r,a=t.canonicalFields(e),s=t.valueFields(e),l=t.sourceFields(e,a),c=this._seriesFields=[],d=n.query(e.type),u=e.aggregate||d;for(this._series=e,this._binder=t,i=0;i<a.length;i++){if(o=a[i],r=void 0,Ie(u))r=u[o];else{if(0!==i&&!De(o,s))break;r=u}r&&c.push({canonicalName:o,name:l[i],transform:Ae(r)?r:ht[r]})}},aggregatePoints:function(e,t){var n,i,o,r,a,s=this,l=this,c=l._series,d=l._seriesFields,u=this._bindPoints(e||[]),h=u.dataItems[0],p={};for(!h||te(h)||ke(h)||(n=function(){},n.prototype=h,p=new n),i=0;i<d.length;i++){if(o=d[i],r=s._bindField(u.values,o.canonicalName),a=o.transform(r,c,u.dataItems,t),!(null===a||!Ie(a)||be(a.length)||a instanceof Date)){p=a;break}be(a)&&I(o.name,p,a)}return p},_bindPoints:function(e){var t,n,i=this,o=i._binder,r=i._series,a=[],s=[];for(t=0;t<e.length;t++)n=e[t],a.push(o.bindPoint(r,n)),s.push(r.data[n]);return{values:a,dataItems:s}},_bindField:function(e,t){var n,i,o,r,a=[],s=e.length;for(n=0;n<s;n++)i=e[n],o=i.valueFields,r=void 0,r=be(o[t])?o[t]:i.fields[t],a.push(r);return a}}),ji=ee.extend({init:function(){this._defaults={}},register:function(e,t){var n,i=this;for(n=0;n<e.length;n++)i._defaults[e[n]]=t},query:function(e){return this._defaults[e]}}),ji.current=new ji,Gi=_i.extend({createLabel:function(){var e=this.options.labels,t=Me({},e,e.from),n=Me({},e,e.to);t.visible&&(this.labelFrom=this._createLabel(t),this.append(this.labelFrom)),n.visible&&(this.labelTo=this._createLabel(n),this.append(this.labelTo))},_createLabel:function(e){var t,n=Pe(e),i=this.pointData();return t=n?n(i):this.formatValue(e.format),new mi(t,Me({vertical:this.options.vertical},e),i)},reflow:function(e){var t,n,i,o;this.render(),t=this,n=t.labelFrom,i=t.labelTo,o=t.value,this.box=e,n&&(n.options.aboveAxis=o.from>o.to,n.reflow(e)),i&&(i.options.aboveAxis=o.to>o.from,i.reflow(e)),this.note&&this.note.reflow(e)}}),Gi.prototype.defaults=Me({},Gi.prototype.defaults,{labels:{format:"{0} - {1}"},tooltip:{format:"{1}"}}),$i=ki.extend({pointType:function(){return Gi},pointValue:function(e){return e.valueFields},formatPointValue:function(e,t){return null===e.value.from&&null===e.value.to?"":this.chartService.format.auto(t,e.value.from,e.value.to)},plotRange:function(e){return e?[e.value.from,e.value.to]:0},updateRange:function(e,t){var n=t.series.axis,i=e.from,o=e.to,r=this.valueAxisRanges[n];null!==e&&te(i)&&te(o)&&(r=this.valueAxisRanges[n]=r||{min:ie,max:oe},r.min=Math.min(r.min,i),r.max=Math.max(r.max,i),r.min=Math.min(r.min,o),r.max=Math.max(r.max,o))},aboveAxis:function(e){var t=e.value;return t.from<t.to}}),$i.prototype.plotLimits=Zn.prototype.plotLimits,Yi=ni.extend({aliasFor:function(){return this.parent}}),Ki="auto",Qi="{0}",Xi="{1}",Ji=ye.extend({init:function(e,t){ye.fn.init.call(this),this.value=e,this.options=t,this.aboveAxis=Ee(this.options.aboveAxis,!0),this.tooltipTracking=!0,this.initLabelsFormat()},render:function(){var e,t,n,i,o,r;this._rendered||(this._rendered=!0,e=this.options,t=e.markers,n=e.labels,i=this.value,o=this.fromPoint=new Yi(i,Me({},this.options,{labels:n.from,markers:t.from})),r=this.toPoint=new Yi(i,Me({},this.options,{labels:n.to,markers:t.to})),this.copyFields(o),this.copyFields(r),this.append(o),this.append(r))},reflow:function(e){var t,n;this.render(),t=e.from,n=e.to,this.positionLabels(t,n),this.fromPoint.reflow(t),this.toPoint.reflow(n),this.box=this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox())},createHighlight:function(){var e=new ot;return e.append(this.fromPoint.createHighlight()),e.append(this.toPoint.createHighlight()),e},highlightVisual:function(){return this.visual},highlightVisualArgs:function(){return{options:this.options,from:this.fromPoint.highlightVisualArgs(),to:this.toPoint.highlightVisualArgs()}},tooltipAnchor:function(){var e,t,n,i,o,r,a=this.owner.pane.clipBox(),s=!a||a.overlaps(this.box);if(s)return e=this.box,t=e.center(),n=ce,this.options.vertical?(i=t.x,o=e.y1-Ct,r=le):(i=e.x2+Ct,o=t.y,r=ae),{point:new xe(i,o),align:{horizontal:n,vertical:r}}},formatValue:function(e){return this.owner.formatPointValue(this,e)},overlapsBox:function(e){return this.box.overlaps(e)},unclipElements:function(){this.fromPoint.unclipElements(),this.toPoint.unclipElements()},initLabelsFormat:function(){var t=this.options.labels;t.format||(t.from&&t.from.format||(t.from=e.extend({},t.from,{format:Qi})),t.to&&t.to.format||(t.to=e.extend({},t.to,{format:Xi})))},positionLabels:function(e,t){var n,i,o=this.options,r=o.labels,a=o.vertical;r.position===Ki&&(a?t.y1<=e.y1?(i=Bt,n=Lt):(i=Lt,n=Bt):t.x1<=e.x1?(i=ce,n=fe):(i=fe,n=ce),r.from&&r.from.position||(this.fromPoint.options.labels.position=n),r.to&&r.to.position||(this.toPoint.options.labels.position=i))},copyFields:function(e){e.dataItem=this.dataItem,e.category=this.category,e.series=this.series,e.color=this.color,e.owner=this.owner}}),Me(Ji.prototype,ei),Me(Ji.prototype,ti),Ji.prototype.defaults={markers:{visible:!1,background:de,size:Ft,type:ue,border:{width:2},opacity:1},labels:{visible:!1,margin:Le(3),padding:Le(4),animation:{type:kt,delay:wt},position:Ki},notes:{label:{}},highlight:{markers:{border:{color:de,width:2}},zIndex:ne.HIGHLIGHT_ZINDEX},tooltip:{format:"{0} - {1}"}},Zi=ui.extend({createStrokeSegments:function(){return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()))},stackSegments:function(){var e=this.fromSegments;return this.fromSegments||(e=this.fromSegments=this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()))),e},createStroke:function(e){var t=new tt(e),n=new tt(e);t.segments.push.apply(t.segments,this.strokeSegments()),n.segments.push.apply(n.segments,this.stackSegments()),this.visual.append(t),this.visual.append(n)},hasStackSegment:function(){return!0},fromPoints:function(){return this.linePoints.map(function(e){return e.fromPoint})},toPoints:function(){return this.linePoints.map(function(e){return e.toPoint})}}),eo=Zi.extend({createStrokeSegments:function(){return this.createCurveSegments(this.toPoints())},stackSegments:function(){var e=this.fromSegments;return this.fromSegments||(e=this.fromSegments=this.createCurveSegments(this.fromPoints().reverse())),e},createCurveSegments:function(e){var t=new He;return t.process(this.toGeometryPoints(e))}}),to=Zi.extend({createStrokeSegments:function(){return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()))},stackSegments:function(){var e=this.fromSegments;return this.fromSegments||(e=this.fromSegments=this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints())),e.reverse()),e}}),Me(to.prototype,oi),no=Zn.extend({render:function(){Zn.fn.render.call(this),this.renderSegments()},pointType:function(){return Ji},createPoint:function(e,t){var n,i,o,r=t.categoryIx,a=t.category,s=t.series,l=t.seriesIx,c=e.valueFields;if(!h(c.from)&&!h(c.to)){if(this.seriesMissingValues(s)!==Rt)return null;c={from:0,to:0}}return n=this.pointOptions(s,l),n=this.evalPointOptions(n,c,a,r,s,l),i=e.fields.color||s.color,Ae(s.color)&&(i=n.color),o=new Ji(c,n),o.color=i,this.append(o),o},createSegment:function(e,t,n){var i,o=(t.line||{}).style;return new(i="smooth"===o?eo:"step"===o?to:Zi)(e,t,n)},plotRange:function(e,t){return e?[e.value.from,e.value.to]:[t,t]},valueSlot:function(e,t){var n=e.getSlot(t[0],t[0],!this.options.clip),i=e.getSlot(t[1],t[1],!this.options.clip);if(n&&i)return{from:n,to:i}},pointSlot:function(e,t){var n,i,o=t.from,r=t.to;return this.options.invertAxes?(n=new Ce(o.x1,e.y1,o.x2,e.y2),i=new Ce(r.x1,e.y1,r.x2,e.y2)):(n=new Ce(e.x1,o.y1,e.x2,o.y2),i=new Ce(e.x1,r.y1,e.x2,r.y2)),{from:n,to:i}},addValue:function(e,t){var n=e.valueFields;te(n.from)||(n.from=n.to),te(n.to)||(n.to=n.from),Zn.fn.addValue.call(this,e,t)},updateRange:function(e,t){var n,i,o,r;null!==e&&te(e.from)&&te(e.to)&&(n=t.series.axis,i=this.valueAxisRanges[n]=this.valueAxisRanges[n]||{min:ie,max:oe},o=e.from,r=e.to,i.min=Math.min(i.min,o,r),i.max=Math.max(i.max,o,r))},formatPointValue:function(e,t){var n=e.value;return this.chartService.format.auto(t,n.from,n.to)},animationPoints:function(){var e,t,n=this.points,i=[];for(e=0;e<n.length;e++)t=n[e],t&&(i.push((t.fromPoint||{}).marker),i.push((t.toPoint||{}).marker));return i.concat(this._segments)}}),Me(no.prototype,si,ci),io=yi.extend({reflow:function(e){var t,n=this,i=n.options,o=n.value,r=n.owner,a=r.seriesValueAxis(i),s=[],l=[],c=[],d=a.getSlot(o.low,o.high),u=a.getSlot(o.open,o.open),h=a.getSlot(o.close,o.close);u.x1=h.x1=d.x1=e.x1,u.x2=h.x2=d.x2=e.x2,t=d.center().x,s.push([u.x1,u.y1]),s.push([t,u.y1]),l.push([t,h.y1]),l.push([h.x2,h.y1]),c.push([t,d.y1]),c.push([t,d.y2]),this.lines=[s,l,c],this.box=d.clone().wrap(u.clone().wrap(h)),this.reflowNote()},createBody:function(){}}),oo=xi.extend({pointType:function(){return io}}),ro=ye.extend({init:function(e,t,n){ye.fn.init.call(this),this.from=e,this.to=t,this.series=n},linePoints:function(){var e,t,n=this.from,i=this,o=i.from.box,r=i.to.box,a=[];return n.isVertical?(e=n.aboveAxis?o.y1:o.y2,a.push([o.x1,e],[r.x2,e])):(t=n.aboveAxis?o.x2:o.x1,a.push([t,o.y1],[t,r.y2])),a},createVisual:function(){var e,t;ye.fn.createVisual.call(this),e=this.series.line||{},t=tt.fromPoints(this.linePoints(),{stroke:{color:e.color,width:e.width,opacity:e.opacity,dashType:e.dashType}}),Se(t),this.visual.append(t)}}),Te(ro,{animation:{type:kt,delay:wt}}),ao=ki.extend({render:function(){ki.fn.render.call(this),this.createSegments()},traverseDataPoints:function(e){var t,n,i,o,a,s,l,c,d,u,h=this,p=this.options.series,f=r(p),g=!this.options.invertAxes;for(t=0;t<p.length;t++)for(n=p[t],i=0,o=0,a=0;a<f;a++)s=pt.current.bindPoint(n,a),l=s.valueFields.value,c=s.fields.summary,d=i,u=void 0,c?"total"===c.toLowerCase()?(s.valueFields.value=i,d=0,u=i):(s.valueFields.value=o,u=d-o,o=0):te(l)&&(o+=l,i+=l,u=i),e(s,{category:h.categoryAxis.categoryAt(a),categoryIx:a,series:n,seriesIx:t,total:i,runningTotal:o,from:d,to:u,isVertical:g})},updateRange:function(e,t){ki.fn.updateRange.call(this,{value:t.to},t)},aboveAxis:function(e){return e.value>=0},plotRange:function(e){return[e.from,e.to]},createSegments:function(){var e,t,n,i,o,r,a,s=this,l=this.options.series,c=this.seriesPoints,d=this.segments=[];for(e=0;e<l.length;e++)if(t=l[e],n=c[e])for(i=void 0,o=0;o<n.length;o++)r=n[o],r&&i&&(a=new ro(i,r,t),d.push(a),s.append(a)),i=r}}),so=[Ot,un,an,gn],lo=[Qt,fn].concat(so),co=Vi.extend({initFields:function(e){var t,n,i=this;if(this.namedCategoryAxes={},this.namedValueAxes={},this.valueAxisRangeTracker=new gi,e.length>0)for(this.invertAxes=De(e[0].type,[Vt,qt,fn,un,gn,sn,Kt,hn]),t=0;t<e.length;t++)if(n=e[t].stack,n&&"100%"===n.type){i.stack100=!0;break}},render:function(e){void 0===e&&(e=this.panes),this.createCategoryAxes(e),this.aggregateCategories(e),this.createCategoryAxesLabels(e),this.createCharts(e),this.createValueAxes(e)},removeAxis:function(e){var t=e.options.name;Vi.fn.removeAxis.call(this,e),e instanceof Ue?delete this.namedCategoryAxes[t]:(this.valueAxisRangeTracker.reset(t),delete this.namedValueAxes[t]),e===this.categoryAxis&&delete this.categoryAxis,e===this.valueAxis&&delete this.valueAxis},createCharts:function(e){var t,n,i,o,r,a,s=this,l=this.groupSeriesByPane();for(t=0;t<e.length;t++)if(n=e[t],i=l[n.options.name||"default"]||[],s.addToLegend(i),o=s.filterVisibleSeries(i))for(r=s.groupSeriesByCategoryAxis(o),a=0;a<r.length;a++)s.createChartGroup(r[a],n)},createChartGroup:function(e,t){this.createAreaChart(b(e,[Ot,un]),t),this.createRangeAreaChart(b(e,[an,gn]),t),this.createBarChart(b(e,[Gt,Vt]),t),this.createRangeBarChart(b(e,[ln,sn]),t),this.createBulletChart(b(e,[qt,pn]),t),this.createCandlestickChart(b(e,jt),t),this.createBoxPlotChart(b(e,[Wt,hn]),t),this.createOHLCChart(b(e,Xt),t),this.createWaterfallChart(b(e,[mn,Kt]),t),this.createLineChart(b(e,[Qt,fn]),t)},aggregateCategories:function(e){var t,n,i,o,r,a=this,s=this.srcSeries||this.series,l=[];for(this._currentPointsCache={},this._seriesPointsCache=this._seriesPointsCache||{},t=0;t<s.length;t++)n=s[t],i=a.seriesCategoryAxis(n),o=a.findPane(i.options.pane),r=_(i.options.type,me),n=(r||n.categoryField)&&De(o,e)?a.aggregateSeries(n,i):a.filterSeries(n,i),l.push(n);this._seriesPointsCache=this._currentPointsCache,this._currentPointsCache=null,this.srcSeries=s,this.series=l},filterSeries:function(e,t){var n,i,o,r=(e.data||{}).length;return t._seriesMax=Math.max(t._seriesMax||0,r),te(t.options.min)||te(t.options.max)?(n=t.currentRangeIndices(),i=De(e.type,lo),o=Me({},e),o.data=(o.data||[]).slice(n.min,n.max+1),i&&T(o,n,r,function(i){return{item:e.data[i],category:t.categoryAt(i,!0),categoryIx:i-n.min}},function(t){return be(e.data[t])}),o):e},clearSeriesPointsCache:function(){this._seriesPointsCache={}},seriesSourcePoints:function(e,t){var n,o,r,a,s,l,c,d,u,h=this,p=e.index+";"+t.categoriesHash();if(this._seriesPointsCache[p])return this._currentPointsCache[p]=this._seriesPointsCache[p],this._seriesPointsCache[p];for(n=t.options,o=n.srcCategories,r=_(n.type,me),a=e.data,s=r?w:i,l=[],r||t.mapCategories(),c=0;c<a.length;c++)d=void 0,d=e.categoryField?s(e.categoryField,a[c],h.chartService.intl):o[c],be(d)&&null!==d&&(u=t.totalIndex(d),l[u]=l[u]||{items:[],category:d},l[u].items.push(c));return this._currentPointsCache[p]=l,l},aggregateSeries:function(e,t){var n,i,o,r,a,s,l,c,d,u=e.data;if(!u.length)return e;for(n=this.seriesSourcePoints(e,t),i=Me({},e),o=new qi(Me({},e),pt.current,ji.current),r=i.data=[],a=t.options.dataItems||[],s=t.currentRangeIndices(),l=function(e){var i,r=e-s.min,a=n[e];return a||(a=n[e]={}),a.categoryIx=r,a.item||(i=t.categoryAt(e,!0),a.category=i,a.item=o.aggregatePoints(a.items,i)),a},c=s.min;c<=s.max;c++)d=l(c),r[d.categoryIx]=d.item,d.items&&d.items.length&&(a[d.categoryIx]=d.item);return De(i.type,lo)&&T(i,s,t.totalCount(),l,function(e){return n[e]}),t.options.dataItems=a,i},appendChart:function(e,t){var n=e.options.series,i=this.seriesCategoryAxis(n[0]),o=i.options.categories,a=Math.max(0,r(n)-o.length);if(a>0)for(o=i.options.categories=i.options.categories.slice(0);a--;)o.push("");this.valueAxisRangeTracker.update(e.valueAxisRanges),Vi.fn.appendChart.call(this,e,t)},seriesPaneName:function(e){var t=this.options,n=e.axis,i=[].concat(t.valueAxis),o=$e(i,function(e){return e.name===n})[0],r=t.panes||[{}],a=(r[0]||{}).name||"default",s=(o||{}).pane||a;return s},seriesCategoryAxis:function(e){var t=e.categoryAxis,n=t?this.namedCategoryAxes[t]:this.categoryAxis;if(!n)throw Error("Unable to locate category axis with name "+t);return n},stackableChartOptions:function(e,t){var n=e.stack,i=n&&"100%"===n.type,o=t.options.clip;return{isStacked:n,isStacked100:i,clip:o}},groupSeriesByCategoryAxis:function(e){var t,n,i,o,r,a,s=[],l={};for(t=0;t<e.length;t++)n=e[t].categoryAxis||"$$default$$",l.hasOwnProperty(n)||(l[n]=!0,s.push(n));for(i=[],o=0;o<s.length;o++)r=s[o],a=F(e,r,o),0!==a.length&&i.push(a);return i},createBarChart:function(t,n){var i,o;0!==t.length&&(i=t[0],o=new ki(this,e.extend({series:t,invertAxes:this.invertAxes,gap:i.gap,spacing:i.spacing},this.stackableChartOptions(i,n))),this.appendChart(o,n))},createRangeBarChart:function(e,t){var n,i;0!==e.length&&(n=e[0],i=new $i(this,{series:e,invertAxes:this.invertAxes,gap:n.gap,spacing:n.spacing}),this.appendChart(i,t))},createBulletChart:function(e,t){var n,i;0!==e.length&&(n=e[0],i=new Ri(this,{series:e,invertAxes:this.invertAxes,gap:n.gap,spacing:n.spacing,clip:t.options.clip}),this.appendChart(i,t))},createLineChart:function(t,n){var i,o;0!==t.length&&(i=t[0],o=new di(this,e.extend({invertAxes:this.invertAxes,series:t},this.stackableChartOptions(i,n))),this.appendChart(o,n))},createAreaChart:function(t,n){var i,o;0!==t.length&&(i=t[0],o=new fi(this,e.extend({invertAxes:this.invertAxes,series:t},this.stackableChartOptions(i,n))),this.appendChart(o,n))},createRangeAreaChart:function(e,t){if(0!==e.length){var n=new no(this,{invertAxes:this.invertAxes,series:e,clip:t.options.clip});this.appendChart(n,t)}},createOHLCChart:function(e,t){var n,i;0!==e.length&&(n=e[0],i=new oo(this,{invertAxes:this.invertAxes,gap:n.gap,series:e,spacing:n.spacing,clip:t.options.clip}),this.appendChart(i,t))},createCandlestickChart:function(e,t){var n,i;0!==e.length&&(n=e[0],i=new xi(this,{invertAxes:this.invertAxes,gap:n.gap,series:e,spacing:n.spacing,clip:t.options.clip}),this.appendChart(i,t))},createBoxPlotChart:function(e,t){var n,i;0!==e.length&&(n=e[0],i=new Ti(this,{invertAxes:this.invertAxes,gap:n.gap,series:e,spacing:n.spacing,clip:t.options.clip}),this.appendChart(i,t))},createWaterfallChart:function(e,t){var n,i;0!==e.length&&(n=e[0],i=new ao(this,{series:e,invertAxes:this.invertAxes,gap:n.gap,spacing:n.spacing}),this.appendChart(i,t))},axisRequiresRounding:function(e,t){var n,i,o,r,a,s=this,l=b(this.series,vn);for(n=0;n<this.series.length;n++)i=s.series[n],De(i.type,so)&&(o=i.line,o&&o.style===Nt&&l.push(i));for(r=0;r<l.length;r++)if(a=l[r].categoryAxis||"",a===e||!a&&0===t)return!0},aggregatedAxis:function(e,t){var n,i,o=this.series;for(n=0;n<o.length;n++)if(i=o[n].categoryAxis||"",(i===e||!i&&0===t)&&o[n].categoryField)return!0},createCategoryAxesLabels:function(){var e,t=this.axes;for(e=0;e<t.length;e++)t[e]instanceof Ue&&t[e].createLabels()},createCategoryAxes:function(e){var t,n,i,o,r,a,s,l=this,c=this.invertAxes,d=[].concat(this.options.categoryAxis),u=[];for(t=0;t<d.length;t++)if(n=d[t],i=l.findPane(n.pane),De(i,e)){if(o=n.name,r=n.categories,void 0===r&&(r=[]),n=Me({vertical:c,reverse:!c&&l.chartService.rtl,axisCrossingValue:c?ie:0},n),be(n.justified)||(n.justified=l.isJustified()),l.axisRequiresRounding(o,t)&&(n.justified=!1),a=void 0,a=k(n,r[0])?new Z.DateCategoryAxis(n,l.chartService):new Ue(n,l.chartService),d[t].categories=a.options.srcCategories,o){if(l.namedCategoryAxes[o])throw Error("Category axis with name "+o+" is already defined");l.namedCategoryAxes[o]=a}a.axisIndex=t,u.push(a),l.appendAxis(a)}s=this.categoryAxis||u[0],this.categoryAxis=s,c?this.axisY=s:this.axisX=s},isJustified:function(){var e,t,n=this.series;for(e=0;e<n.length;e++)if(t=n[e],!De(t.type,so))return!1;return!0},createValueAxes:function(e){var t,n,i,o,r,a,s,l,c,d=this,u=this.valueAxisRangeTracker,h=u.query(),p=[].concat(this.options.valueAxis),f=this.invertAxes,g={vertical:!f,reverse:f&&this.chartService.rtl},m=[];for(this.stack100&&(g.roundToMajorUnit=!1,g.labels={format:"P0"}),t=0;t<p.length;t++)if(n=p[t],i=d.findPane(n.pane),De(i,e)){ +if(o=n.name,r=_(n.type,Vn)?{min:.1,max:1}:{min:0,max:1},a=u.query(o)||h||r,0===t&&a&&h&&(a.min=Math.min(a.min,h.min),a.max=Math.max(a.max,h.max)),s=void 0,s=_(n.type,Vn)?Z.LogarithmicAxis:Z.NumericAxis,l=new s(a.min,a.max,Me({},g,n),d.chartService),o){if(d.namedValueAxes[o])throw Error("Value axis with name "+o+" is already defined");d.namedValueAxes[o]=l}l.axisIndex=t,m.push(l),d.appendAxis(l)}c=this.valueAxis||m[0],this.valueAxis=c,f?this.axisX=c:this.axisY=c},_dispatchEvent:function(e,t,n){var i,o,r,a=e._eventCoordinates(t),s=new xe(a.x,a.y),l=this.pointPane(s),c=[],d=[];if(l){for(i=l.axes,o=0;o<i.length;o++)r=i[o],r.getValue?g(d,r.getValue(s)):g(c,r.getCategory(s));0===c.length&&g(c,this.categoryAxis.getCategory(s)),c.length>0&&d.length>0&&e.trigger(n,{element:Re(t),originalEvent:t,category:y(c),value:y(d)})}},pointPane:function(e){var t,n,i=this.panes;for(t=0;t<i.length;t++)if(n=i[t],n.contentBox.containsPoint(e))return n},updateAxisOptions:function(e,t){M(this.options,e,t),M(this.originalOptions,e,t)}}),Te(co,{categoryAxis:{},valueAxis:{}}),Me(co.prototype,Ui),uo=ee.extend({init:function(){this._points=[]},destroy:function(){this._points=[]},show:function(e){var t,n,i=this,o=[].concat(e);for(this.hide(),t=0;t<o.length;t++)n=o[t],n&&n.toggleHighlight&&n.hasHighlight()&&(i.togglePointHighlight(n,!0),i._points.push(n))},togglePointHighlight:function(e,t){var n,i=(e.options.highlight||{}).toggle;i?(n={category:e.category,series:e.series,dataItem:e.dataItem,value:e.value,stackValue:e.stackValue,preventDefault:R,visual:e.highlightVisual(),show:t},i(n),n._defaultPrevented||e.toggleHighlight(t)):e.toggleHighlight(t)},hide:function(){for(var e=this,t=this._points;t.length;)e.togglePointHighlight(t.pop(),!1)},isHighlighted:function(e){var t,n,i=this._points;for(t=0;t<i.length;t++)if(n=i[t],e===n)return!0;return!1}}),ho=ee.extend({init:function(e,t){this.plotArea=e,this.options=Me({},this.options,t)},start:function(e){return this._active=P(e,this.options.key)},move:function(e){if(this._active){var t=this.axisRanges=this._panAxes(e,he).concat(this._panAxes(e,pe));if(t.length)return this.axisRanges=t,z(t)}},end:function(){var e=this._active;return this._active=!1,e},pan:function(){var e,t,n=this,i=n.plotArea,o=n.axisRanges;if(o.length){for(e=0;e<o.length;e++)t=o[e],i.updateAxisOptions(t.axis,t.range);i.redraw(i.panes)}},destroy:function(){delete this.plotArea},_panAxes:function(e,t){var n,i,o,r,a=this.plotArea,s=-e[t].delta,l=(this.options.lock||"").toLowerCase(),c=[];if(0!==s&&(l||"").toLowerCase()!==t)for(n=a.axes,i=0;i<n.length;i++)o=n[i],(t===he&&!o.options.vertical||t===pe&&o.options.vertical)&&(r=o.pan(s),r&&(r.limitRange=!0,c.push({axis:o,range:r})));return c}}),ho.prototype.options={key:"none",lock:"none"},po=ee.extend({init:function(e,t){this.chart=e,this.options=Me({},this.options,t),this.createElement()},createElement:function(){var e,t=this._marquee=document.createElement("div");t.className="k-marquee",e=document.createElement("div"),e.className="k-marquee-color",t.appendChild(e)},removeElement:function(){this._marquee.parentNode&&this._marquee.parentNode.removeChild(this._marquee)},setStyles:function(e){Ye(this._marquee,e)},start:function(e){var t,n,i,o,r;return!!(P(e,this.options.key)&&(t=this.chart,n=t._eventCoordinates(e),i=this._zoomPane=t._plotArea.paneByPoint(n),o=i?i.chartsBox().clone():null,i&&o))&&(r=this._elementOffset(),o.translate(r.left,r.top),this._zoomPaneClipBox=o,document.body.appendChild(this._marquee),this.setStyles({left:e.pageX+1,top:e.pageY+1,width:0,height:0}),!0)},_elementOffset:function(){var e=this.chart.element,t=Ye(e,["paddingLeft","paddingTop"]),n=t.paddingLeft,i=t.paddingTop,o=Z.elementOffset(e);return{left:n+o.left,top:i+o.top}},move:function(e){var t=this._zoomPane;t&&this.setStyles(this._selectionPosition(e))},end:function(e){var t,n,i,o,r=this._zoomPane;if(r)return t=this._elementOffset(),n=this._selectionPosition(e),n.left-=t.left,n.top-=t.top,i={x:n.left,y:n.top},o={x:n.left+n.width,y:n.top+n.height},this._updateAxisRanges(i,o),this.removeElement(),delete this._zoomPane,z(this.axisRanges)},zoom:function(){var e,t,n,i=this.axisRanges;if(i&&i.length){for(e=this.chart._plotArea,t=0;t<i.length;t++)n=i[t],e.updateAxisOptions(n.axis,n.range);e.redraw(e.panes)}},destroy:function(){this.removeElement(),delete this._marquee,delete this.chart},_updateAxisRanges:function(e,t){var n,i,o,r,a=(this.options.lock||"").toLowerCase(),s=[],l=this._zoomPane.axes;for(n=0;n<l.length;n++)i=l[n],o=i.options.vertical,a===he&&!o||a===pe&&o||(r=i.pointsRange(e,t),r&&s.push({axis:i,range:r}));this.axisRanges=s},_selectionPosition:function(e){var t=this._zoomPaneClipBox,n={x:e.x.startLocation,y:e.y.startLocation},i=e.x.location,o=e.y.location,r=(this.options.lock||"").toLowerCase(),a=Math.min(n.x,i),s=Math.min(n.y,o),l=Math.abs(n.x-i),c=Math.abs(n.y-o);return r===he&&(a=t.x1,l=t.width()),r===pe&&(s=t.y1,c=t.height()),i>t.x2&&(l=t.x2-n.x),i<t.x1&&(l=n.x-t.x1),o>t.y2&&(c=t.y2-n.y),o<t.y1&&(c=n.y-t.y1),{left:Math.max(a,t.x1),top:Math.max(s,t.y1),width:l,height:c}}}),po.prototype.options={key:"shift",lock:"none"},fo=ee.extend({init:function(e,t){this.chart=e,this.options=Me({},this.options,t)},updateRanges:function(e){var t,n,i,o,r=(this.options.lock||"").toLowerCase(),a=[],s=this.chart._plotArea.axes;for(t=0;t<s.length;t++)n=s[t],i=n.options.vertical,r===he&&!i||r===pe&&i||(o=n.zoomRange(-e),o&&a.push({axis:n,range:o}));return this.axisRanges=a,z(a)},zoom:function(){var e,t,n,i=this.axisRanges;if(i&&i.length){for(e=this.chart._plotArea,t=0;t<i.length;t++)n=i[t],e.updateAxisOptions(n.axis,n.range);e.redraw(e.panes)}},destroy:function(){delete this.chart}}),go=ye.extend({init:function(e,t){ye.fn.init.call(this,e),this.chartService=t},render:function(){var e,t,n=this,i=n.children,o=n.options,r=o.vertical;for(this.visual=new et.Layout(null,{spacing:r?0:o.spacing,lineSpacing:r?o.spacing:0,orientation:r?"vertical":"horizontal",reverse:o.rtl,alignItems:r?"start":"center"}),e=0;e<i.length;e++)t=i[e],t.reflow(new Ce),t.renderVisual()},reflow:function(e){this.visual.rect(e.toRect()),this.visual.reflow();var t=this.visual.clippedBBox();this.box=t?Z.rectToBox(t):new Ce},renderVisual:function(){this.addVisual()},createVisual:function(){}}),mo=qe.extend({init:function(e){qe.fn.init.call(this,e),this.createContainer(),e.rtl?(this.createLabel(),this.createMarker()):(this.createMarker(),this.createLabel())},createContainer:function(){this.container=new Z.FloatElement({vertical:!1,wrap:!1,align:ae,spacing:this.options.spacing}),this.append(this.container)},createMarker:function(){this.container.append(new Be(this.markerOptions()))},markerOptions:function(){var e=this.options,t=e.markerColor;return Me({},e.markers,{background:t,border:{color:t}})},createLabel:function(){var e=this.options,t=Me({},e.labels);this.container.append(new ze(e.text,t))},renderComplete:function(){var e,t;qe.fn.renderComplete.call(this),e=this.options.cursor||{},t=this._itemOverlay=tt.fromRect(this.container.box.toRect(),{fill:{color:de,opacity:0},stroke:null,cursor:e.style||e}),this.appendVisual(t)},click:function(e,t){var n=this.eventArgs(t);!e.trigger(_n,n)&&t&&"contextmenu"===t.type&&t.preventDefault()},over:function(e,t){var n=this.eventArgs(t);return e.trigger(bn,n)||e._legendItemHover(n.seriesIndex,n.pointIndex),!0},out:function(e,t){e._unsetActivePoint(),e.trigger(wn,this.eventArgs(t))},eventArgs:function(e){var t=this.options;return{element:Re(e),text:t.text,series:t.series,seriesIndex:t.series.index,pointIndex:t.pointIndex}},renderVisual:function(){var e=this,t=this.options,n=t.visual;n?(this.visual=n({active:t.active,series:t.series,sender:this.getSender(),pointIndex:t.pointIndex,options:{markers:this.markerOptions(),labels:t.labels},createVisual:function(){e.createVisual(),e.renderChildren(),e.renderComplete();var t=e.visual;return delete e.visual,t}}),this.addVisual()):qe.fn.renderVisual.call(this)}}),vo="horizontal",_o="pointer",bo="custom",wo=ye.extend({init:function(e,t){void 0===t&&(t={}),ye.fn.init.call(this,e),this.chartService=t,De(this.options.position,[se,fe,le,ce,bo])||(this.options.position=fe),this.createContainer(),this.createItems()},createContainer:function(){var e=this.options,t=e.position,n=e.align,i=t,o=ae;t===bo?i=ce:De(t,[se,le])?(i="start"===n?ce:"end"===n?fe:ae,o=t):n&&("start"===n?o=se:"end"===n&&(o=le)),this.container=new qe({margin:e.margin,padding:e.padding,background:e.background,border:e.border,vAlign:o,align:i,zIndex:e.zIndex,shrinkToFit:!0}),this.append(this.container)},createItems:function(){var e,t,n,i=this.getService(),o=this.options,r=this.isVertical(),a=new go({vertical:r,spacing:o.spacing,rtl:i.rtl},i),s=o.items;for(o.reverse&&(s=s.slice(0).reverse()),e=s.length,t=0;t<e;t++)n=s[t],a.append(new mo(Me({},{markers:o.markers,labels:o.labels,rtl:i.rtl},o.item,n)));a.render(),this.container.append(a)},isVertical:function(){var e=this.options,t=e.orientation,n=e.position,i=n===bo&&t!==vo||(be(t)?t!==vo:De(n,[ce,fe]));return i},hasItems:function(){return this.container.children[0].children.length>0},reflow:function(e){var t=this.options,n=e.clone();return this.hasItems()?void(t.position===bo?(this.containerCustomReflow(n),this.box=n):this.containerReflow(n)):void(this.box=n)},containerReflow:function(e){var t,n=this,i=n.options,o=n.container,r=i.position,a=i.width,s=i.height,l=r===se||r===le?he:pe,c=this.isVertical(),d=e.clone(),u=e.clone();r!==ce&&r!==fe||(u.y1=d.y1=0),c&&s?(u.y2=u.y1+s,u.align(d,pe,o.options.vAlign)):!c&&a&&(u.x2=u.x1+a,u.align(d,he,o.options.align)),o.reflow(u),u=o.box,t=u.clone(),(i.offsetX||i.offsetY)&&(u.translate(i.offsetX,i.offsetY),this.container.reflow(u)),t[l+1]=e[l+1],t[l+2]=e[l+2],this.box=t},containerCustomReflow:function(e){var t=this,n=t.options,i=t.container,o=n.offsetX,r=n.offsetY,a=n.width,s=n.height,l=this.isVertical(),c=e.clone();l&&s?c.y2=c.y1+s:!l&&a&&(c.x2=c.x1+a),i.reflow(c),c=i.box,i.reflow(new Ce(o,r,o+c.width(),r+c.height()))},renderVisual:function(){this.hasItems()&&ye.fn.renderVisual.call(this)}}),Te(wo,{position:fe,items:[],offsetX:0,offsetY:0,margin:Le(5),padding:Le(5),border:{color:ge,width:0},item:{cursor:_o,spacing:6},spacing:6,background:"",zIndex:1,markers:{border:{width:0},width:15,height:3,type:"rect",align:ce,vAlign:ae}}),ko=ee.extend({init:function(){this._registry=[]},register:function(e,t){this._registry.push({type:e,seriesTypes:t})},create:function(e,t,n){var i,o,r,a=this._registry,s=a[0];for(o=0;o<a.length;o++)if(r=a[o],i=b(e,r.seriesTypes),i.length>0){s=r;break}return new s.type(i,t,n)}}),ko.current=new ko,yo=3,xo=.1,Co=ee.extend({init:function(e,t,n,i){var o=e.element;this.options=Me({},this.options,n),this.chart=e,this.observer=i,this.chartElement=o,this.categoryAxis=t,this._dateAxis=this.categoryAxis instanceof Z.DateCategoryAxis,this.initOptions(),this.options.visible&&(this.createElements(),this.set(this._index(this.options.from),this._index(this.options.to)),this.bindEvents())},onPane:function(e){return this.categoryAxis.pane===e},createElements:function(){var e,t,n,i,o,r,a=this.options,s=this.wrapper=B("k-selector");Ye(s,{top:a.offset.top,left:a.offset.left,width:a.width,height:a.height,direction:"ltr"}),e=this.selection=B("k-selection"),this.leftMask=B("k-mask"),this.rightMask=B("k-mask"),s.appendChild(this.leftMask),s.appendChild(this.rightMask),s.appendChild(e),e.appendChild(B("k-selection-bg")),t=this.leftHandle=B("k-handle k-left-handle"),n=this.rightHandle=B("k-handle k-right-handle"),t.appendChild(B()),n.appendChild(B()),e.appendChild(t),e.appendChild(n),this.chartElement.appendChild(s),i=Ye(e,["borderLeftWidth","borderRightWidth","height"]),o=Ye(t,"height").height,r=Ye(n,"height").height,a.selection={border:{left:i.borderLeftWidth,right:i.borderRightWidth}},Ye(t,{top:(i.height-o)/2}),Ye(n,{top:(i.height-r)/2}),s.style.cssText=s.style.cssText},bindEvents:function(){if(this.options.mousewheel!==!1){this._mousewheelHandler=this._mousewheel.bind(this);var e;Qe(this.wrapper,(e={},e[Gn]=this._mousewheelHandler,e))}this._domEvents=Xe.DomEventsBuilder.create(this.wrapper,{stopPropagation:!0,start:this._start.bind(this),move:this._move.bind(this),end:this._end.bind(this),tap:this._tap.bind(this),press:this._press.bind(this),gesturestart:this._gesturestart.bind(this),gesturechange:this._gesturechange.bind(this),gestureend:this._gestureend.bind(this)})},initOptions:function(){var e,t,n,i=this,o=i.options,r=i.categoryAxis,a=r.pane.chartsBox(),s=this.chart.chartService.intl;this._dateAxis&&Me(o,{min:Ve(s,o.min),max:Ve(s,o.max),from:Ve(s,o.from),to:Ve(s,o.to)}),e=Ye(this.chartElement,["paddingLeft","paddingTop"]),t=e.paddingLeft,n=e.paddingTop,this.options=Me({},{width:a.width(),height:a.height()+xo,padding:{left:t,top:n},offset:{left:a.x1+t,top:a.y1+n},from:o.min,to:o.max},o)},destroy:function(){if(this._domEvents&&(this._domEvents.destroy(),delete this._domEvents),clearTimeout(this._mwTimeout),this._state=null,this.wrapper){if(this._mousewheelHandler){var e;Je(this.wrapper,(e={},e[Gn]=this._mousewheelHandler,e)),this._mousewheelHandler=null}this.chartElement.removeChild(this.wrapper),this.wrapper=null}},_rangeEventArgs:function(e){return{axis:this.categoryAxis.options,from:this._value(e.from),to:this._value(e.to)}},_start:function(e){var t,n=this.options,i=Re(e);!this._state&&i&&(this.chart._unsetActivePoint(),this._state={moveTarget:L(i)||i,startLocation:e.x?e.x.location:0,range:{from:this._index(n.from),to:this._index(n.to)}},t=this._rangeEventArgs({from:this._index(n.from),to:this._index(n.to)}),this.trigger(Pn,t)&&(this._state=null))},_press:function(e){var t;t=this._state?this._state.moveTarget:L(Re(e)),t&&Z.addClass(t,"k-handle-active")},_move:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_;this._state&&(t=this,n=t._state,i=t.options,o=t.categoryAxis,r=n.range,a=n.moveTarget,s=o.options.reverse,l=this._index(i.from),c=this._index(i.to),d=this._index(i.min),u=this._index(i.max),h=n.startLocation-e.x.location,p={from:r.from,to:r.to},f=r.to-r.from,g=Ye(this.wrapper,"width").width/(o.categoriesCount()-1),m=Math.round(h/g)*(s?-1:1),a&&(v=Ke(a,"k-left-handle"),_=Ke(a,"k-right-handle"),Ke(a,"k-selection k-selection-bg")?(r.from=Math.min(Math.max(d,l-m),u-f),r.to=Math.min(r.from+f,u)):v&&!s||_&&s?(r.from=Math.min(Math.max(d,l-m),u-1),r.to=Math.max(r.from+1,r.to)):(v&&s||_&&!s)&&(r.to=Math.min(Math.max(d+1,c-m),u),r.from=Math.min(r.to-1,r.from)),r.from===p.from&&r.to===p.to||(this.move(r.from,r.to),this.trigger(zn,this._rangeEventArgs(r)))))},_end:function(){var e,t;this._state&&(e=this._state.moveTarget,e&&Z.removeClass(e,"k-handle-active"),t=this._state.range,this.set(t.from,t.to),this.trigger(Bn,this._rangeEventArgs(t)),delete this._state)},_tap:function(e){var t=this,n=t.options,i=t.categoryAxis,o=this.chart._eventCoordinates(e),r=i.pointCategoryIndex(new xe(o.x,i.box.y1)),a=this._index(n.from),s=this._index(n.to),l=this._index(n.min),c=this._index(n.max),d=s-a,u=a+d/2,h={},p=3===e.event.which,f=Math.round(u-r);this._state||p||(this.chart._unsetActivePoint(),i.options.justified||f--,h.from=Math.min(Math.max(l,a-f),c-d),h.to=Math.min(h.from+d,c),this._start(e),this._state&&(this._state.range=h,this.trigger(zn,this._rangeEventArgs(h)),this._end()))},_mousewheel:function(e){var t,n=this,i=Z.mousewheelDelta(e);this._start({target:this.selection}),this._state&&(t=this._state.range,e.preventDefault(),e.stopPropagation(),Math.abs(i)>1&&(i*=yo),this.options.mousewheel.reverse&&(i*=-1),this.expand(i)&&this.trigger(zn,{axis:this.categoryAxis.options,delta:i,originalEvent:e,from:this._value(t.from),to:this._value(t.to)}),this._mwTimeout&&clearTimeout(this._mwTimeout),this._mwTimeout=setTimeout(function(){n._end()},$n))},_gesturestart:function(e){var t,n=this.options;this._state={range:{from:this._index(n.from),to:this._index(n.to)}},t=this._rangeEventArgs(this._state.range),this.trigger(Pn,t)?this._state=null:e.preventDefault()},_gestureend:function(){this._state&&(this.trigger(Bn,this._rangeEventArgs(this._state.range)),delete this._state)},_gesturechange:function(e){var t=this,n=t.chart,i=t._state,o=t.options,r=t.categoryAxis,a=i.range,s=n._toModelCoordinates(e.touches[0].x.location).x,l=n._toModelCoordinates(e.touches[1].x.location).x,c=Math.min(s,l),d=Math.max(s,l);e.preventDefault(),a.from=r.pointCategoryIndex(new xe(c))||o.min,a.to=r.pointCategoryIndex(new xe(d))||o.max,this.move(a.from,a.to),this.trigger(zn,this._rangeEventArgs(a))},_index:function(e){var t=e;return e instanceof Date&&(t=this.categoryAxis.categoryIndex(e)),t},_value:function(e){var t=e;return this._dateAxis&&(t=this.categoryAxis.categoryAt(e),t>this.options.max&&(t=this.options.max)),t},_slot:function(e){var t=this.categoryAxis,n=this._index(e);return t.getSlot(n,n,!0)},move:function(e,t){var n,i,o=this.options,r=this.categoryAxis.options.reverse,a=o.offset,s=o.padding,l=o.selection.border,c=r?t:e,d=r?e:t,u="x"+(r?2:1),h=this._slot(c),p=je(h[u]-a.left+s.left);Ye(this.leftMask,{width:p}),Ye(this.selection,{left:p}),h=this._slot(d),n=je(o.width-(h[u]-a.left+s.left)),Ye(this.rightMask,{width:n}),i=o.width-n,i!==o.width&&(i+=l.right),Ye(this.rightMask,{left:i}),Ye(this.selection,{width:Math.max(o.width-(p+n)-l.right,0)})},set:function(e,t){var n=this.options,i=this._index(n.min),o=this._index(n.max),r=Ge(this._index(e),i,o),a=Ge(this._index(t),r+1,o);n.visible&&this.move(r,a),n.from=this._value(r),n.to=this._value(a)},expand:function(e){var t=this.options,n=this._index(t.min),i=this._index(t.max),o=t.mousewheel.zoom,r=this._index(t.from),a=this._index(t.to),s={from:r,to:a},l=Me({},s);if(this._state&&(s=this._state.range),o!==fe&&(s.from=Ge(Ge(r-e,0,a-1),n,i)),o!==ce&&(s.to=Ge(Ge(a+e,s.from+1,i),n,i)),s.from!==l.from||s.to!==l.to)return this.set(s.from,s.to),!0},trigger:function(e,t){return(this.observer||this.chart).trigger(e,t)}}),Te(Co,{visible:!0,mousewheel:{zoom:"both"},min:oe,max:ie}),So=Pi.extend({show:function(e){var t,n;!e||!e.tooltipAnchor||this._current&&this._current===e||(t=Me({},this.options,e.options.tooltip),n=e.tooltipAnchor(),n?(this._current=e,Pi.fn.show.call(this,{point:e,anchor:n},t,e)):this.hide())},hide:function(){delete this._current,Pi.fn.hide.call(this)}}),To=Pi.extend({init:function(e,t){Pi.fn.init.call(this,e.chartService,t),this.plotArea=e,this.formatService=e.chartService.format},showAt:function(e,t){var n,i,o,r=$e(e,function(e){var t=e.series.tooltip,n=t&&t.visible===!1;return!n});r.length>0&&(n=r[0],i=this.plotArea.categoryAxis.getSlot(n.categoryIx),o=t?this._slotAnchor(t,i):this._defaultAnchor(n,i),this.show({anchor:o,shared:!0,points:e,category:n.category,categoryText:this.formatService.auto(this.options.categoryFormat,n.category),series:this.plotArea.series},this.options))},_slotAnchor:function(e,t){var n=this.plotArea.categoryAxis,i={horizontal:"left",vertical:"center"};return n.options.vertical||(e.x=t.center().x),{point:e,align:i}},_defaultAnchor:function(e,t){var n,i=e.owner.pane.chartsBox(),o=this.plotArea.categoryAxis.options.vertical,r=i.center(),a=t.center(),s={horizontal:"center",vertical:"center"};return n=o?new xe(r.x,a.y):new xe(a.x,r.y),{point:n,align:s}}}),Te(To,{categoryFormat:"{0:d}"}),Do=nt.extend({setup:function(){var e,t,n=this,i=n.element,o=n.options,r=i.bbox();r?(this.origin=o.origin,e=o.vertical?pe:he,t=this.fromScale=new st(1,1),t[e]=St,i.transform(lt().scale(t.x,t.y))):this.abort()},step:function(e){var t=Z.interpolateValue(this.fromScale.x,1,e),n=Z.interpolateValue(this.fromScale.y,1,e);this.element.transform(lt().scale(t,n,this.origin))},abort:function(){nt.fn.abort.call(this),this.element.transform(null)}}),Te(Do,{duration:wt}),it.current.register(Vt,Do),Ao=nt.extend({setup:function(){var e=this.center=this.element.bbox().center();this.element.transform(lt().scale(St,St,e))},step:function(e){this.element.transform(lt().scale(e,e,this.center))}}),Te(Ao,{easing:"easeOutElastic"}),it.current.register(Ut,Ao),Eo=nt.extend({setup:function(){this.fadeTo=this.element.opacity(),this.element.opacity(0)},step:function(e){this.element.opacity(e*this.fadeTo)}}),Te(Eo,{duration:200,easing:"linear"}),it.current.register(kt,Eo),Io=nt.extend({setup:function(){this.element.transform(lt().scale(St,St,this.options.center))},step:function(e){this.element.transform(lt().scale(e,e,this.options.center))}}),Te(Io,{easing:"easeOutElastic",duration:wt}),it.current.register(Jt,Io),Mo=Ai.extend({render:function(){Ai.fn.render.call(this),this.renderSegments()},createSegment:function(e,t,n){var i,o=t.style;return new(i=o===Ht?ai:ii)(e,t,n)},animationPoints:function(){var e=Ai.fn.animationPoints.call(this);return e.concat(this._segments)},createMissingValue:function(e,t){if(t===Rt){var n={x:e.x,y:e.y};return h(n.x)||(n.x=0),h(n.y)||(n.y=0),n}}}),Me(Mo.prototype,si),Fo=Vi.extend({initFields:function(){this.namedXAxes={},this.namedYAxes={},this.xAxisRangeTracker=new gi,this.yAxisRangeTracker=new gi},render:function(e){var t,n,i,o,r,a=this;for(void 0===e&&(e=this.panes),t=this.groupSeriesByPane(),n=0;n<e.length;n++)i=e[n],o=t[i.options.name||"default"]||[],a.addToLegend(o),r=a.filterVisibleSeries(o),r&&(a.createScatterChart(b(r,cn),i),a.createScatterLineChart(b(r,dn),i),a.createBubbleChart(b(r,Ut),i));this.createAxes(e)},appendChart:function(e,t){this.xAxisRangeTracker.update(e.xAxisRanges),this.yAxisRangeTracker.update(e.yAxisRanges),Vi.fn.appendChart.call(this,e,t)},removeAxis:function(e){var t=e.options.name;Vi.fn.removeAxis.call(this,e),e.options.vertical?(this.yAxisRangeTracker.reset(t),delete this.namedYAxes[t]):(this.xAxisRangeTracker.reset(t),delete this.namedXAxes[t]),e===this.axisX&&delete this.axisX,e===this.axisY&&delete this.axisY},seriesPaneName:function(e){var t=this.options,n=e.xAxis,i=[].concat(t.xAxis),o=$e(i,function(e){return e.name===n})[0],r=e.yAxis,a=[].concat(t.yAxis),s=$e(a,function(e){return e.name===r})[0],l=t.panes||[{}],c=l[0].name||"default",d=(o||{}).pane||(s||{}).pane||c;return d},createScatterChart:function(e,t){e.length>0&&this.appendChart(new Ai(this,{series:e,clip:t.options.clip}),t)},createScatterLineChart:function(e,t){e.length>0&&this.appendChart(new Mo(this,{series:e,clip:t.options.clip}),t)},createBubbleChart:function(e,t){e.length>0&&this.appendChart(new Ii(this,{series:e,clip:t.options.clip}),t)},createXYAxis:function(e,t,n){var i,o,r,a,s,l,c,d,u=e.name,h=t?this.namedYAxes:this.namedXAxes,p=t?this.yAxisRangeTracker:this.xAxisRangeTracker,f=Me({reverse:!t&&this.chartService.rtl},e,{vertical:t}),g=_(f.type,Vn),m=p.query(),v=g?{min:.1,max:1}:{min:0,max:1},b=p.query(u)||m||v,w=[f.min,f.max],k=this.series;for(i=0;i<k.length;i++)if(o=k[i],r=o[t?"yAxis":"xAxis"],r===f.name||0===n&&!r){a=pt.current.bindPoint(o,0).valueFields,w.push(a[t?"y":"x"]);break}for(0===n&&m&&(b.min=Math.min(b.min,m.min),b.max=Math.max(b.max,m.max)),l=0;l<w.length;l++)if(w[l]instanceof Date){s=!0;break}if(c=_(f.type,me)||!f.type&&s?Z.DateValueAxis:g?Z.LogarithmicAxis:Z.NumericAxis,d=new c(b.min,b.max,f,this.chartService),d.axisIndex=n,u){if(h[u])throw Error((t?"Y":"X")+" axis with name "+u+" is already defined");h[u]=d}return this.appendAxis(d),d},createAxes:function(e){var t,n,i,o,r=this,a=this.options,s=[].concat(a.xAxis),l=[],c=[].concat(a.yAxis),d=[];for(t=0;t<s.length;t++)n=r.findPane(s[t].pane),De(n,e)&&l.push(r.createXYAxis(s[t],!1,t));for(i=0;i<c.length;i++)o=r.findPane(c[i].pane),De(o,e)&&d.push(r.createXYAxis(c[i],!0,i));this.axisX=this.axisX||l[0],this.axisY=this.axisY||d[0]},_dispatchEvent:function(e,t,n){var i,o,r,a,s=e._eventCoordinates(t),l=new xe(s.x,s.y),c=this.axes,d=c.length,u=[],h=[];for(i=0;i<d;i++)o=c[i],r=o.options.vertical?h:u,a=o.getValue(l),null!==a&&r.push(a);u.length>0&&h.length>0&&e.trigger(n,{element:Re(t),originalEvent:t,x:y(u),y:y(h)})},updateAxisOptions:function(e,t){var n=e.options.vertical,i=this.groupAxes(this.panes),o=(n?i.y:i.x).indexOf(e);H(this.options,o,n,t),H(this.originalOptions,o,n,t)}}),Te(Fo,{xAxis:{},yAxis:{}}),Me(Fo.prototype,Ui),Ro=ye.extend({init:function(e,t,n){ye.fn.init.call(this,n),this.value=e,this.sector=t},render:function(){var e,t,n,i,o=this.options.labels,r=this.owner.chartService,a=this.value;this._rendered||this.visible===!1||(this._rendered=!0,e=Pe(o),t=this.pointData(),e?a=e(t):o.format&&(a=r.format.auto(o.format,a)),o.visible&&(a||0===a)&&(o.position===ae||o.position===Un?(o.color||(n=new rt(this.options.color).percBrightness(),o.color=n>180?ge:de),o.background||(o.background=this.options.color)):(i=r.theme.seriesDefaults.labels,o.color=o.color||i.color,o.background=o.background||i.background),this.label=new ze(a,Me({},o,{align:ae,vAlign:"",animation:{type:kt,delay:this.animationDelay}}),t),this.append(this.label)))},reflow:function(e){this.render(),this.box=e,this.reflowLabel()},reflowLabel:function(){var e,t,n,i,o=this,r=o.options.labels,a=o.label,s=this.sector.clone(),l=r.distance,c=s.middle();a&&(e=a.box.height(),t=a.box.width(),r.position===ae?(s.radius=Math.abs((s.radius-e)/2)+e,n=s.point(c),a.reflow(new Ce(n.x,n.y-e/2,n.x,n.y))):r.position===Un?(s.radius=s.radius-e/2,n=s.point(c),a.reflow(new Ce(n.x,n.y-e/2,n.x,n.y))):(n=s.clone().expand(l).point(c),n.x>=s.center.x?(i=n.x+t,a.orientation=fe):(i=n.x-t,a.orientation=ce),a.reflow(new Ce(i,n.y-e,n.x,n.y))))},createVisual:function(){var e,t,n=this,i=this,o=i.sector,r=i.options;ye.fn.createVisual.call(this),this.value&&(r.visual?(e=(o.startAngle+180)%360,t=r.visual({category:this.category,dataItem:this.dataItem,value:this.value,series:this.series,percentage:this.percentage,center:new st(o.center.x,o.center.y),radius:o.radius,innerRadius:o.innerRadius,startAngle:e,endAngle:e+o.angle,options:r,sender:this.getSender(),createVisual:function(){var e=new ot;return n.createSegmentVisual(e),e}}),t&&this.visual.append(t)):this.createSegmentVisual(this.visual))},createSegmentVisual:function(e){var t=this,n=t.sector,i=t.options,o=i.border||{},r=o.width>0?{stroke:{color:o.color,width:o.width,opacity:o.opacity,dashType:o.dashType}}:{},a=i.color,s={color:a,opacity:i.opacity},c=this.createSegment(n,Me({fill:s,stroke:{opacity:i.opacity},zIndex:i.zIndex},r));e.append(c),l(i)&&e.append(this.createGradientOverlay(c,{baseColor:a,fallbackFill:s},Me({center:[n.center.x,n.center.y],innerRadius:n.innerRadius,radius:n.radius,userSpace:!0},i.overlay)))},createSegment:function(e,t){return t.singleSegment?new et.Circle(new at.Circle(new st(e.center.x,e.center.y),e.radius),t):Z.ShapeBuilder.current.createRing(e,t)},createAnimation:function(){var e=this,t=e.options,n=e.sector.center;Me(t,{animation:{center:[n.x,n.y],delay:this.animationDelay}}),ye.fn.createAnimation.call(this)},createHighlight:function(e){var t=this.options.highlight||{},n=t.border||{};return this.createSegment(this.sector,Me({},e,{fill:{color:t.color,opacity:t.opacity},stroke:{opacity:n.opacity,width:n.width,color:n.color}}))},highlightVisual:function(){return this.visual.children[0]},highlightVisualArgs:function(){var e=this.sector;return{options:this.options,radius:e.radius,innerRadius:e.innerRadius,center:new st(e.center.x,e.center.y),startAngle:e.startAngle,endAngle:e.angle+e.startAngle,visual:this.visual}},tooltipAnchor:function(){var e=this.sector.clone().expand(Ct),t=e.middle(),n=e.point(t);return{point:n,align:N(t+180)}},formatValue:function(e){return this.owner.formatPointValue(this,e)},pointData:function(){return{dataItem:this.dataItem,category:this.category,value:this.value,series:this.series,percentage:this.percentage}}}),Po=je(Z.rad(30),ve),zo=je(Z.rad(60),ve),Te(Ro,{color:de,overlay:{gradient:"roundedBevel"},border:{width:.5},labels:{visible:!1,distance:35,font:ne.DEFAULT_FONT,margin:Le(.5),align:ue,zIndex:1,position:jn},animation:{type:Jt},highlight:{visible:!0,border:{width:1}},visible:!0}),Me(Ro.prototype,ei),Bo={createLegendItem:function(e,t,n){var i,o,r,a,s,l=this.options.legend||{},c=l.labels||{},d=l.inactiveItems||{},u=d.labels||{};n&&n.visibleInLegend!==!1&&(i=n.visible!==!1,o=i?Pe(c):Pe(u)||Pe(c),r=n.category,o&&(r=o({text:r,series:n.series,dataItem:n.dataItem,percentage:n.percentage,value:e})),i?(a={},s=t.color):(a={color:u.color,font:u.font},s=(d.markers||{}).color),h(r)&&""!==r&&this.legendItems.push({active:i,pointIndex:n.index,text:r,series:n.series,markerColor:s,labels:a}))}},Lo=70,Ho=ye.extend({init:function(e,t){ye.fn.init.call(this,t),this.plotArea=e,this.chartService=e.chartService,this.points=[],this.legendItems=[],this.render()},render:function(){this.traverseDataPoints(this.addValue.bind(this))},traverseDataPoints:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,_,b,w,k,y=this,x=this,C=x.options,S=x.plotArea.options.seriesColors;for(void 0===S&&(S=[]),t=S.length,n=C.series,i=n.length,o=0;o<i;o++)for(r=n[o],a=r.data,s=v(r),l=s.total,c=s.points,d=s.count,u=360/l,h=void 0,isFinite(u)||(h=360/d),p=void 0,p=be(r.startAngle)?r.startAngle:C.startAngle,o!==i-1&&r.labels.position===jn&&(r.labels.position=ae),f=0;f<c.length;f++)g=c[f],g&&(m=g.fields,_=g.value,b=g.visible,w=0!==_?h||_*u:0,k=1!==a.length&&!!m.explode,Ae(r.color)||(r.color=m.color||S[f%t]),e(g.valueFields.value,new Z.Ring(null,0,0,p,w),{owner:y,category:be(m.category)?m.category:"",index:f,series:r,seriesIx:o,dataItem:a[f],percentage:0!==l?_/l:0,explode:k,visibleInLegend:m.visibleInLegend,visible:b,zIndex:i-o,animationDelay:y.animationDelay(f,o,i)}),b!==!1&&(p+=w))},evalSegmentOptions:function(e,t,n){var i=n.series;o(e,{value:t,series:i,dataItem:n.dataItem,category:n.category,percentage:n.percentage},{defaults:i._defaults,excluded:["data","content","template","visual","toggle"]})},addValue:function(t,n,i){var o,r=Me({},i.series,{index:i.index});this.evalSegmentOptions(r,t,i),this.createLegendItem(t,r,i),i.visible!==!1&&(o=new Ro(t,n,r),e.extend(o,i),this.append(o),this.points.push(o))},reflow:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y=this,x=y.options,C=y.points,S=y.seriesConfigs;for(void 0===S&&(S=[]),t=C.length,n=e.clone(),i=5,o=Math.min(n.width(),n.height()),r=o/2,a=o-.85*o,s=new Ce(n.x1,n.y1,n.x1+o,n.y1+o),l=s.center(),c=n.center(),d=x.series.length,u=[],h=[],p=Ee(x.padding,a),p=p>r-i?r-i:p,s.translate(c.x-l.x,c.y-l.y),f=r-p,g=new xe(f+s.x1+p,f+s.y1+p),m=0;m<t;m++)v=C[m],_=v.sector,b=v.seriesIx,_.radius=f,_.center=g,S.length&&(w=S[b],_.innerRadius=w.innerRadius,_.radius=w.radius),b===d-1&&v.explode&&(_.center=_.clone().setRadius(.15*_.radius).point(_.middle())),v.reflow(s),k=v.label,k&&k.options.position===jn&&b===d-1&&(k.orientation===fe?h.push(k):u.push(k));u.length>0&&(u.sort(this.labelComparator(!0)),this.leftLabelsReflow(u)),h.length>0&&(h.sort(this.labelComparator(!1)),this.rightLabelsReflow(h)),this.box=s},leftLabelsReflow:function(e){var t=this.distanceBetweenLabels(e);this.distributeLabels(t,e)},rightLabelsReflow:function(e){var t=this.distanceBetweenLabels(e);this.distributeLabels(t,e)},distanceBetweenLabels:function(e){var t,n,i=Fe(this.points),o=i.sector,r=e.length-1,a=o.radius+i.options.labels.distance,s=[],l=e[0].box,c=je(l.y1-(o.center.y-a-l.height()-l.height()/2));for(s.push(c),t=0;t<r;t++)n=e[t+1].box,l=e[t].box,c=je(n.y1-l.y2),s.push(c);return c=je(o.center.y+a-e[r].box.y2-e[r].box.height()/2),s.push(c),s},distributeLabels:function(e,t){var n,i,o,r,a=this,s=e.length;for(r=0;r<s;r++)for(o=-e[r],n=i=r;o>0&&(n>=0||i<s);)o=a._takeDistance(e,r,--n,o),o=a._takeDistance(e,r,++i,o);this.reflowLabels(e,t)},_takeDistance:function(e,t,n,i){var o,r=i;return e[n]>0&&(o=Math.min(e[n],r),r-=o,e[n]-=o,e[t]+=o),r},reflowLabels:function(e,t){var n,i,o,r,a=this,s=Fe(this.points),l=s.sector,c=s.options.labels,d=t.length,u=c.distance,h=l.center.y-(l.radius+u)-t[0].box.height();for(e[0]+=2,i=0;i<d;i++)o=t[i],r=o.box,h+=e[i],n=a.hAlignLabel(r.x2,l.clone().expand(u),h,h+r.height(),o.orientation===fe),o.orientation===fe?(c.align!==ue&&(n=l.radius+l.center.x+u),o.reflow(new Ce(n+r.width(),h,n,h))):(c.align!==ue&&(n=l.center.x-l.radius-u),o.reflow(new Ce(n-r.width(),h,n,h))),h+=r.height()},createVisual:function(){var e,t,n,i,o,r,a,s,l,c,d,u,h,p,f=this,g=this,m=g.options.connectors,v=g.points,_=v.length,b=4;for(ye.fn.createVisual.call(this),this._connectorLines=[], +e=0;e<_;e++)t=v[e],n=t.sector,i=t.label,o=n.middle(),r=(t.options.connectors||{}).color||m.color,i&&(a=new tt({stroke:{color:r,width:m.width},animation:{type:kt,delay:t.animationDelay}}),i.options.position===jn&&(s=i.box,l=n.center,c=n.point(o),d=new xe(s.x1,s.center().y),u=void 0,h=void 0,p=void 0,c=n.clone().expand(m.padding).point(o),a.moveTo(c.x,c.y),i.orientation===fe?(h=new xe(s.x1-m.padding,s.center().y),p=O(l,c,d,h),d=new xe(h.x-b,h.y),p=p||d,p.x=Math.min(p.x,d.x),f.pointInCircle(p,n.center,n.radius+b)||p.x<n.center.x?(u=n.center.x+n.radius+b,t.options.labels.align!==Gt?u<d.x?a.lineTo(u,c.y):a.lineTo(c.x+2*b,c.y):a.lineTo(u,c.y),a.lineTo(d.x,h.y)):(p.y=h.y,a.lineTo(p.x,p.y))):(h=new xe(s.x2+m.padding,s.center().y),p=O(l,c,d,h),d=new xe(h.x+b,h.y),p=p||d,p.x=Math.max(p.x,d.x),f.pointInCircle(p,n.center,n.radius+b)||p.x>n.center.x?(u=n.center.x-n.radius-b,t.options.labels.align!==Gt?u>d.x?a.lineTo(u,c.y):a.lineTo(c.x-2*b,c.y):a.lineTo(u,c.y),a.lineTo(d.x,h.y)):(p.y=h.y,a.lineTo(p.x,p.y))),a.lineTo(h.x,h.y),f._connectorLines.push(a),f.visual.append(a)))},labelComparator:function(e){var t=e?-1:1;return function(e,n){var i=(e.parent.sector.middle()+270)%360,o=(n.parent.sector.middle()+270)%360;return(i-o)*t}},hAlignLabel:function(e,t,n,i,o){var r=t.radius,a=t.center,s=a.x,l=a.y,c=Math.min(Math.abs(l-n),Math.abs(l-i));return c>r?e:s+Math.sqrt(r*r-c*c)*(o?1:-1)},pointInCircle:function(e,t,n){return Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)<Math.pow(n,2)},formatPointValue:function(e,t){return this.chartService.format.auto(t,e.value)},animationDelay:function(e){return e*Lo}}),Te(Ho,{startAngle:90,connectors:{width:2,color:"#939393",padding:8},inactiveItems:{markers:{},labels:{}}}),Me(Ho.prototype,Bo),No=Vi.extend({render:function(){this.createPieChart(this.series)},createPieChart:function(e){var t=e[0],n=new Ho(this,{series:e,padding:t.padding,startAngle:t.startAngle,connectors:t.connectors,legend:this.options.legend});this.appendChart(n)},appendChart:function(e,t){Vi.fn.appendChart.call(this,e,t),Ne(this.options.legend.items,e.legendItems)}}),Oo=Ro.extend({reflowLabel:function(){var e,t,n=this,i=n.options.labels,o=n.label,r=this.sector.clone(),a=r.middle();o&&(e=o.box.height(),i.position===ae?(r.radius-=(r.radius-r.innerRadius)/2,t=r.point(a),o.reflow(new Ce(t.x,t.y-e/2,t.x,t.y))):Ro.fn.reflowLabel.call(this))},createSegment:function(e,t){return Z.ShapeBuilder.current.createRing(e,t)}}),Te(Oo,{overlay:{gradient:"roundedGlass"},labels:{position:ae},animation:{type:Jt}}),Me(Oo.prototype,ei),Vo=50,Wo=Ho.extend({addValue:function(t,n,i){var o,r=Me({},i.series,{index:i.index});this.evalSegmentOptions(r,t,i),this.createLegendItem(t,r,i),t&&i.visible!==!1&&(o=new Oo(t,n,r),e.extend(o,i),this.append(o),this.points.push(o))},reflow:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p=this,f=this.options,g=e.clone(),m=5,v=Math.min(g.width(),g.height()),_=v/2,b=v-.85*v,w=f.series,k=w.length,y=Ee(f.padding,b);for(y=y>_-m?_-m:y,t=_-y,n=0,o=0;o<k;o++)r=w[o],0===o&&be(r.holeSize)&&(i=r.holeSize,t-=r.holeSize),be(r.size)?t-=r.size:n++,be(r.margin)&&o!==k-1&&(t-=r.margin);for(be(i)||(a=(_-y)/(k+.75),i=.75*a,t-=i),s=i,l=0,this.seriesConfigs=[],u=0;u<k;u++)h=w[u],c=Ee(h.size,t/n),s+=l,d=s+c,p.seriesConfigs.push({innerRadius:s,radius:d}),l=h.margin||0,s=d;Ho.fn.reflow.call(this,e)},animationDelay:function(e,t,n){return e*Vo+wt*(t+1)/(n+1)}}),Te(Wo,{startAngle:90,connectors:{width:2,color:"#939393",padding:8}}),Uo=No.extend({render:function(){this.createDonutChart(this.series)},createDonutChart:function(e){var t=e[0],n=new Wo(this,{series:e,padding:t.padding,connectors:t.connectors,legend:this.options.legend});this.appendChart(n)}}),qo=.15,jo=Vi.extend({initFields:function(){this.valueAxisRangeTracker=new gi},render:function(){this.addToLegend(this.series),this.createPolarAxis(),this.createCharts(),this.createValueAxis()},alignAxes:function(){var e=this.valueAxis,t=e.range(),n=e.options.reverse?t.max:t.min,i=e.getSlot(n),o=this.polarAxis.getSlot(0).center,r=e.box.translate(o.x-i.x1,o.y-i.y1);e.reflow(r)},createValueAxis:function(){var e,t,n,i,o=this.valueAxisRangeTracker,r=o.query(),a=this.valueAxisOptions({roundToMajorUnit:!1,zIndex:-1});a.type===Vn?(e=Z.RadarLogarithmicAxis,t={min:.1,max:1}):(e=Z.RadarNumericAxis,t={min:0,max:1}),n=o.query(name)||r||t,n&&r&&(n.min=Math.min(n.min,r.min),n.max=Math.max(n.max,r.max)),i=new e(n.min,n.max,a,this.chartService),this.valueAxis=i,this.appendAxis(i)},reflowAxes:function(){var e,t,n=this,i=n.options.plotArea,o=n.valueAxis,r=n.polarAxis,a=n.box,s=Math.min(a.width(),a.height())*qo,l=Le(i.padding||{},s),c=a.clone().unpad(l),d=c.clone();d.y2=d.y1+Math.min(d.width(),d.height()),d.align(c,pe,ae),e=d.clone().shrink(0,d.height()/2),r.reflow(d),o.reflow(e),t=o.lineBox().height()-o.box.height(),o.reflow(o.box.unpad({top:t})),this.axisBox=d,this.alignAxes(d)},backgroundBox:function(){return this.box},detachLabels:function(){}}),Go=Ai.extend({pointSlot:function(e,t){var n=e.center.y-t.y1,i=xe.onCircle(e.center,e.startAngle,n);return new Ce(i.x,i.y,i.x,i.y)}}),Te(Go,{clip:!1}),$o=Mo.extend({}),$o.prototype.pointSlot=Go.prototype.pointSlot,Te($o,{clip:!1}),Yo=pi.extend({fillToAxes:function(e){var t=this._polarAxisCenter();e.lineTo(t.x,t.y)},_polarAxisCenter:function(){var e=this.parent.plotArea.polarAxis,t=e.box.center();return t},strokeSegments:function(){var e,t,n,i=this._strokeSegments;return i||(e=this._polarAxisCenter(),t=new He((!1)),n=this.points(),n.push(e),i=this._strokeSegments=t.process(n),i.pop()),i}}),Ko=ui.extend({fillToAxes:function(e){var t=this.parent.plotArea.polarAxis,n=t.box.center(),i=new at.Segment([n.x,n.y]);e.segments.unshift(i),e.segments.push(i)}}),Qo=$o.extend({createSegment:function(e,t,n){var i,o=(t.line||{}).style;return i=o===Ht?new Yo(e,t,n):new Ko(e,t,n)},createMissingValue:function(e,t){var n;return h(e.x)&&t!==Pt&&(n={x:e.x,y:e.y},t===Rt&&(n.y=0)),n},seriesMissingValues:function(e){return e.missingValues||Rt},_hasMissingValuesGap:function(){var e,t=this,n=this.options.series;for(e=0;e<n.length;e++)if(t.seriesMissingValues(n[e])===zt)return!0},sortPoints:function(e){var t,n,i,o=this;if(e.sort(V),this._hasMissingValuesGap())for(t=0;t<e.length;t++)n=e[t],n&&(i=n.value,h(i.y)||o.seriesMissingValues(n.series)!==zt||delete e[t]);return e}}),Xo=jo.extend({createPolarAxis:function(){var e=new Z.PolarAxis(this.options.xAxis,this.chartService);this.polarAxis=e,this.axisX=e,this.appendAxis(e)},valueAxisOptions:function(e){return Me(e,{majorGridLines:{type:_e},minorGridLines:{type:_e}},this.options.yAxis)},createValueAxis:function(){jo.fn.createValueAxis.call(this),this.axisY=this.valueAxis},appendChart:function(e,t){this.valueAxisRangeTracker.update(e.yAxisRanges),Vi.prototype.appendChart.call(this,e,t)},createCharts:function(){var e=this.filterVisibleSeries(this.series),t=this.panes[0];this.createLineChart(b(e,[en]),t),this.createScatterChart(b(e,[tn]),t),this.createAreaChart(b(e,[Zt]),t)},createLineChart:function(e,t){if(0!==e.length){var n=new $o(this,{series:e});this.appendChart(n,t)}},createScatterChart:function(e,t){if(0!==e.length){var n=new Go(this,{series:e});this.appendChart(n,t)}},createAreaChart:function(e,t){if(0!==e.length){var n=new Qo(this,{series:e});this.appendChart(n,t)}},_dispatchEvent:function(e,t,n){var i=e._eventCoordinates(t),o=new xe(i.x,i.y),r=this.axisX.getValue(o),a=this.axisY.getValue(o);null!==r&&null!==a&&e.trigger(n,{element:Re(t),x:r,y:a})},createCrosshairs:function(){}}),Te(Xo,{xAxis:{},yAxis:{}}),Me(Xo.prototype,Ui),Jo=di.extend({pointSlot:function(e,t){var n=e.center.y-t.y1,i=xe.onCircle(e.center,e.middle(),n);return new Ce(i.x,i.y,i.x,i.y)},createSegment:function(e,t,n){var i,o,r=t.style;return i=r===Ht?ai:ii,o=new i(e,t,n),e.length===t.data.length&&(o.options.closed=!0),o}}),Te(Jo,{clip:!1,limitPoints:!1}),Zo=pi.extend({fillToAxes:function(){}}),er=ui.extend({fillToAxes:function(){}}),tr=Jo.extend({createSegment:function(e,t,n,i){var o,r,a,s=this.options.isStacked,l=(t.line||{}).style;return s&&n>0&&i&&(r=i.linePoints.slice(0),o=i),l===Ht?(a=new Zo(e,t,n,o,r),a.options.closed=!0):(e.push(e[0]),a=new er(e,t,n,o,r)),a},seriesMissingValues:function(e){return e.missingValues||Rt}}),nr=Oo.extend({init:function(e,t){Oo.fn.init.call(this,e,null,t)}}),Te(nr,{overlay:{gradient:"none"},labels:{distance:10}}),ir=ye.extend({init:function(e){ye.fn.init.call(this,e),this.forEach=e.rtl?d:c},reflow:function(e){var t=this,n=t.options,i=t.children,o=n.gap,r=n.spacing,a=i.length,s=a+o+r*(a-1),l=e.angle/s,c=e.startAngle+l*(o/2);this.forEach(i,function(t){var n=e.clone();n.startAngle=c,n.angle=l,t.sector&&(n.radius=t.sector.radius),t.reflow(n),t.sector=n,c+=l+l*r})}}),Te(ir,{gap:1,spacing:0}),or=ye.extend({reflow:function(e){var t,n,i=this,o=i.options.reverse,r=i.children,a=r.length,s=o?a-1:0,l=o?-1:1;for(this.box=new Ce,t=s;t>=0&&t<a;t+=l)n=r[t].sector,n.startAngle=e.startAngle,n.angle=e.angle}}),rr=ki.extend({pointType:function(){return nr},clusterType:function(){return ir},stackType:function(){return or},categorySlot:function(e,t){return e.getSlot(t)},pointSlot:function(e,t){var n=e.clone(),i=e.center.y;return n.radius=i-t.y1,n.innerRadius=i-t.y2,n},reflowPoint:function(e,t){e.sector=t,e.reflow()},createAnimation:function(){this.options.animation.center=this.box.toRect().center(),ki.fn.createAnimation.call(this)}}),rr.prototype.reflow=Zn.prototype.reflow,Te(rr,{clip:!1,limitPoints:!1,animation:{type:"pie"}}),ar=jo.extend({createPolarAxis:function(){var e=new Z.RadarCategoryAxis(this.options.categoryAxis,this.chartService);this.polarAxis=e,this.categoryAxis=e,this.appendAxis(e),this.aggregateCategories(),this.createCategoryAxesLabels()},valueAxisOptions:function(e){return this._hasBarCharts&&Me(e,{majorGridLines:{type:_e},minorGridLines:{type:_e}}),this._isStacked100&&Me(e,{roundToMajorUnit:!1,labels:{format:"P0"}}),Me(e,this.options.valueAxis)},aggregateCategories:function(){co.prototype.aggregateCategories.call(this,this.panes)},createCategoryAxesLabels:function(){co.prototype.createCategoryAxesLabels.call(this,this.panes)},filterSeries:function(e){return e},createCharts:function(){var e=this.filterVisibleSeries(this.series),t=this.panes[0];this.createAreaChart(b(e,[nn]),t),this.createLineChart(b(e,[rn]),t),this.createBarChart(b(e,[on]),t)},chartOptions:function(e){var t,n,i={series:e},o=e[0];return o&&(t=this.filterVisibleSeries(e),n=o.stack,i.isStacked=n&&t.length>1,i.isStacked100=n&&"100%"===n.type&&t.length>1,i.isStacked100&&(this._isStacked100=!0)),i},createAreaChart:function(e,t){if(0!==e.length){var n=new tr(this,this.chartOptions(e));this.appendChart(n,t)}},createLineChart:function(e,t){if(0!==e.length){var n=new Jo(this,this.chartOptions(e));this.appendChart(n,t)}},createBarChart:function(e,t){var n,i,o;0!==e.length&&(n=e[0],i=this.chartOptions(e),i.gap=n.gap,i.spacing=n.spacing,o=new rr(this,i),this.appendChart(o,t),this._hasBarCharts=!0)},seriesCategoryAxis:function(){return this.categoryAxis},_dispatchEvent:function(e,t,n){var i=e._eventCoordinates(t),o=new xe(i.x,i.y),r=this.categoryAxis.getCategory(o),a=this.valueAxis.getValue(o);null!==r&&null!==a&&e.trigger(n,{element:Re(t),category:r,value:a})},createCrosshairs:function(){}}),Me(ar.prototype,Ui,{appendChart:co.prototype.appendChart,aggregateSeries:co.prototype.aggregateSeries,seriesSourcePoints:co.prototype.seriesSourcePoints}),Te(ar,{categoryAxis:{categories:[]},valueAxis:{}}),sr=ye.extend({init:function(e,t,n){ye.fn.init.call(this,t),this.value=e,this.options.index=n.index},reflow:function(e){var t=this.points,n=this.children[0];this.box=new Ce(t[0].x,t[0].y,t[1].x,t[2].y),n&&n.reflow(new Ce(e.x1,t[0].y,e.x2,t[2].y))},createVisual:function(){var e,t=this,n=this.options;ye.fn.createVisual.call(this),e=n.visual?n.visual({category:this.category,dataItem:this.dataItem,value:this.value,series:this.series,percentage:this.percentage,points:this.points,options:n,sender:this.getSender(),createVisual:function(){return t.createPath()}}):this.createPath(),e&&this.visual.append(e)},createPath:function(){var e=this.options,t=e.border,n=tt.fromPoints(this.points,{fill:{color:e.color,opacity:e.opacity},stroke:{color:t.color,opacity:t.opacity,width:t.width}}).close();return n},createHighlight:function(e){return tt.fromPoints(this.points,e)},highlightVisual:function(){return this.visual.children[0]},highlightVisualArgs:function(){var e=tt.fromPoints(this.points).close();return{options:this.options,path:e}},tooltipAnchor:function(){var e=this.box;return{point:new xe(e.center().x,e.y1),align:{horizontal:"center",vertical:"top"}}},formatValue:function(e){var t=this;return t.owner.formatPointValue(t,e)}}),Te(sr,{color:de,border:{width:1}}),Me(sr.prototype,ei),lr=ye.extend({init:function(e,t){ye.fn.init.call(this,t),this.plotArea=e,this.points=[],this.labels=[],this.legendItems=[],this.render()},formatPointValue:function(e,t){return this.chartService.format.auto(t,e.value)},render:function(){var e,t,n,i,o,r,a,s,l,c,d,u=this,h=this,p=h.options,f=h.plotArea.options.seriesColors;if(void 0===f&&(f=[]),e=p.series[0],t=e.data)for(n=v(e),i=n.total,o=n.points,r=0;r<o.length;r++)a=o[r],a&&(s=a.fields,Ae(e.color)||(e.color=s.color||f[r%f.length]),s=Me({index:r,owner:u,series:e,dataItem:t[r],percentage:a.value/i},s,{visible:a.visible}),l=a.valueFields.value,c=u.createSegment(l,s),d=u.createLabel(l,s),c&&d&&c.append(d))},evalSegmentOptions:function(e,t,n){var i=n.series;o(e,{value:t,series:i,dataItem:n.dataItem,index:n.index},{defaults:i._defaults,excluded:["data","content","template","toggle","visual"]})},createSegment:function(t,n){var i,o=Me({},n.series);if(this.evalSegmentOptions(o,t,n),this.createLegendItem(t,o,n),n.visible!==!1)return i=new sr(t,o,n),e.extend(i,n),this.append(i),this.points.push(i),i},createLabel:function(e,t){var n,i,o,r,a=t.series,s=t.dataItem,l=Me({},this.options.labels,a.labels),c=e;if(l.visible)return n=Pe(l),i={dataItem:s,value:e,percentage:t.percentage,category:t.category,series:a},n?c=n(i):l.format&&(c=this.plotArea.chartService.format.auto(l.format,c)),l.color||(o=new rt(a.color).percBrightness(),l.color=o>180?ge:de,l.background||(l.background=a.color)),this.evalSegmentOptions(l,e,t),r=new ze(c,Me({vAlign:l.position},l),i),this.labels.push(r),r},labelPadding:function(){var e,t,n,i,o=this.labels,r={left:0,right:0};for(e=0;e<o.length;e++)t=o[e],n=t.options.align,n!==ae&&(i=o[e].box.width(),n===ce?r.left=Math.max(r.left,i):r.right=Math.max(r.right,i));return r},dynamicSlopeReflow:function(e,t,n){var i,o,r,a,s,l,c,d,u,h,p,f=this,g=f.options,m=f.points,v=m.length,_=m[0],b=_;for(i=0;i<m.length;i++)m[i].percentage>b.percentage&&(b=m[i]);for(o=_.percentage/b.percentage*t,r=(t-o)/2,a=0,s=0;s<v;s++)l=m[s].percentage,c=m[s+1],d=c?c.percentage:l,u=m[s].points=[],h=g.dynamicHeight?n*l:n/v,p=void 0,p=l?(t-o*(d/l))/2:d?0:t/2,p=Ge(p,0,t),u.push(new st(e.x1+r,e.y1+a)),u.push(new st(e.x1+t-r,e.y1+a)),u.push(new st(e.x1+t-p,e.y1+h+a)),u.push(new st(e.x1+p,e.y1+h+a)),r=p,a+=h+g.segmentSpacing,o=Ge(t-2*p,0,t)},constantSlopeReflow:function(e,t,n){var i,o,r,a,s,l=this,c=l.options,d=l.points,u=d.length,h=c.neckRatio<=1,p=h?c.neckRatio*t:t,f=h?0:(t-t/c.neckRatio)/2,g=h?t:t-2*f,m=(g-p)/2,v=0;for(i=0;i<u;i++)o=d[i].points=[],r=d[i].percentage,a=c.dynamicHeight?m*r:m/u,s=c.dynamicHeight?n*r:n/u,o.push(new st(e.x1+f,e.y1+v)),o.push(new st(e.x1+t-f,e.y1+v)),o.push(new st(e.x1+t-f-a,e.y1+s+v)),o.push(new st(e.x1+f+a,e.y1+s+v)),f+=a,v+=s+c.segmentSpacing},reflow:function(e){var t,n,i,o,r,a=this.points,s=a.length;if(s)for(t=this.options,n=e.clone().unpad(this.labelPadding()),i=n.height()-t.segmentSpacing*(s-1),o=n.width(),t.dynamicSlope?this.dynamicSlopeReflow(n,o,i):this.constantSlopeReflow(n,o,i),r=0;r<s;r++)a[r].reflow(e)}}),Te(lr,{neckRatio:.3,width:300,dynamicSlope:!1,dynamicHeight:!0,segmentSpacing:0,labels:{visible:!1,align:ae,position:ae,zIndex:1}}),Me(lr.prototype,Bo),cr=Vi.extend({render:function(){this.createFunnelChart(this.series)},createFunnelChart:function(e){var t=e[0],n=new lr(this,{series:e,legend:this.options.legend,neckRatio:t.neckRatio,dynamicHeight:t.dynamicHeight,dynamicSlope:t.dynamicSlope,segmentSpacing:t.segmentSpacing,highlight:t.highlight});this.appendChart(n)},appendChart:function(e,t){Vi.fn.appendChart.call(this,e,t),Ne(this.options.legend.items,e.legendItems)}}),dr="color",ur="first",hr="from",pr="max",fr="min",gr="noteText",mr="summary",vr="to",ko.current.register(co,[Vt,Gt,Qt,fn,Ot,un,jt,Xt,qt,pn,Wt,hn,ln,sn,mn,Kt,an,gn]),ko.current.register(Fo,[cn,dn,Ut]),ko.current.register(No,[Jt]),ko.current.register(Uo,[$t]),ko.current.register(cr,[Yt]),ko.current.register(Xo,[Zt,en,tn]),ko.current.register(ar,[nn,on,rn]),pt.current.register([Vt,Gt,Qt,fn,Ot,un],[re],[Wn,dr,gr,Tt,Dt]),pt.current.register([ln,sn,an,gn],[hr,vr],[Wn,dr,gr]),pt.current.register([mn,Kt],[re],[Wn,dr,gr,mr]),pt.current.register([Zt,en,tn],[he,pe],[dr]),pt.current.register([nn,on,rn],[re],[dr]),pt.current.register([Yt],[re],[Wn,dr,"visibleInLegend","visible"]),ji.current.register([Vt,Gt,Qt,fn,Ot,un,mn,Kt],{value:pr,color:ur,noteText:ur,errorLow:fr,errorHigh:pr}),ji.current.register([ln,sn,an,gn],{from:fr,to:pr,color:ur,noteText:ur}),ji.current.register([nn,on,rn],{value:pr,color:ur}),pt.current.register([cn,dn,Ut],[he,pe],[dr,gr,At,Et,It,Mt]),pt.current.register([Ut],[he,pe,"size"],[dr,Wn,gr]),pt.current.register([jt,Xt],["open","high","low","close"],[Wn,dr,"downColor",gr]),ji.current.register([jt,Xt],{open:pr,high:pr,low:fr,close:pr,color:ur,downColor:ur,noteText:ur}),pt.current.register([Wt,hn],["lower","q1","median","q3","upper","mean","outliers"],[Wn,dr,gr]),ji.current.register([Wt,hn],{lower:pr,q1:pr,median:pr,q3:pr,upper:pr,mean:pr,outliers:ur,color:ur,noteText:ur}),pt.current.register([qt,pn],["current","target"],[Wn,dr,"visibleInLegend",gr]),ji.current.register([qt,pn],{current:pr,target:pr,color:ur,noteText:ur}),pt.current.register([Jt,$t],[re],[Wn,dr,"explode","visibleInLegend","visible"]),_r=[Wn,re,he,pe],br="mousemove",wr="contextmenu",kr="mouseleave",yr=20,xr=ee.extend({init:function(e,t,n,i){var o,r=this;void 0===i&&(i={}),this.observers=[],this.addObserver(i.observer),this.chartService=new Xe.ChartService(this,i),this.chartService.theme=n,this._initElement(e),o=Me({},this.options,t),this._originalOptions=Me({},o),this._theme=n,this._initTheme(o,n),this._initHandlers(),this._initSurface(),this.bindCategories(),Z.FontLoader.preloadFonts(t,function(){r.fontLoaded=!0,r._destroyed||(r.trigger("init"),r._redraw(),r._attachEvents())})},_initElement:function(e){for(this._setElementClass(e),e.style.position="relative";e.firstChild;)e.removeChild(e.firstChild);this.element=e},_setElementClass:function(e){Z.addClass(e,"k-chart")},_initTheme:function(t,n){var i,o=[],r=t.series||[];for(i=0;i<r.length;i++)o.push(e.extend({},r[i]));t.series=o,W(t),this.applyDefaults(t,n),null===t.seriesColors&&delete t.seriesColors,this.options=Me({},n,t),this.applySeriesColors()},getSize:function(){var e=this.options.chartArea||{},t=e.width?parseInt(e.width,10):Math.floor(this.element.offsetWidth),n=e.height?parseInt(e.height,10):Math.floor(this.element.offsetHeight);return{width:t,height:n}},resize:function(e){var t=this.getSize(),n=this._size;(e||(t.width>0||t.height>0)&&(!n||t.width!==n.width||t.height!==n.height))&&(this._size=t,this._resize(t,e),this.trigger("resize",t))},_resize:function(){this._noTransitionsRedraw()},redraw:function(e){var t,n;this.applyDefaults(this.options),this.applySeriesColors(),e?(t=this._model._plotArea,n=t.findPane(e),t.redraw(n)):this._redraw()},getAxis:function(e){return t(e,this._plotArea.axes)},findAxisByName:function(e){return this.getAxis(e)},findPaneByName:function(e){var t,n=this._plotArea.panes;for(t=0;t<n.length;t++)if(n[t].options.name===e)return new dt(n[t])},findPaneByIndex:function(e){var t=this._plotArea.panes;if(t[e])return new dt(t[e])},plotArea:function(){return new ut(this._plotArea)},toggleHighlight:function(e,t){var n,i,o,r=this._plotArea,a=(r.srcSeries||r.series||[])[0];Ae(t)?n=r.filterPoints(t):(Ie(t)?(i=t.series,o=t.category):i=o=t,n=a.type===$t?U(r.pointsBySeriesName(i),o):a.type===Jt||a.type===Yt?U((r.charts[0]||{}).points,o):r.pointsBySeriesName(i)),n&&this.togglePointsHighlight(e,n)},togglePointsHighlight:function(e,t){var n,i=this._highlight;for(n=0;n<t.length;n++)i.togglePointHighlight(t[n],e)},showTooltip:function(e){var t,n,i,o=this._sharedTooltip(),r=this,a=r._tooltip,s=r._plotArea;Ae(e)?(t=s.findPoint(e),t&&o&&(n=t.categoryIx)):o&&be(e)&&(n=s.categoryAxis.categoryIndex(e)),o?n>=0&&(i=this._plotArea.pointsByCategoryIndex(n),a.showAt(i)):t&&a.show(t)},hideTooltip:function(){this._tooltip.hide()},_initSurface:function(){var e=this.surface,t=this._surfaceWrap(),n=this.options.chartArea;n.width&&Z.elementSize(t,{width:n.width}),n.height&&Z.elementSize(t,{height:n.height}),e&&e.options.type===this.options.renderAs?(this.surface.clear(),this.surface.resize()):(this._destroySurface(),this.surface=et.Surface.create(t,{type:this.options.renderAs}),this.surface.bind("mouseenter",this._surfaceMouseenterHandler),this.surface.bind("mouseleave",this._surfaceMouseleaveHandler))},_surfaceWrap:function(){return this.element},_redraw:function(){var e=this._getModel();this._size={width:e.options.width,height:e.options.height},this._destroyView(),this._model=e,this._plotArea=e._plotArea,e.renderVisual(),this.options.transitions!==!1&&e.traverse(function(e){e.animation&&e.animation.setup()}),this._initSurface(),this.surface.draw(e.visual),this.options.transitions!==!1&&e.traverse(function(e){e.animation&&e.animation.play()}),this._tooltip=this._createTooltip(),this._highlight=new uo,this._setupSelection(),this._createPannable(),this._createZoomSelection(),this._createMousewheelZoom(),this.trigger(Ln),J(this._plotArea.panes),this._navState||this._cancelDomEvents()},exportVisual:function(e){var t,n,i,o;return e&&(e.width||e.height||e.options)?(n=this.options,i=Me({},e.options,{chartArea:{width:e.width,height:e.height}}),X(this._originalOptions,i),this.options=Me({},this._originalOptions,i),this._initTheme(this.options,this._theme),this.bindCategories(),o=this._getModel(),o.renderVisual(),J(o._plotArea.panes),t=o.visual,this.options=n):t=this.surface.exportVisual(),t},_sharedTooltip:function(){return this._plotArea instanceof co&&this.options.tooltip.shared},_createPannable:function(){var e=this.options;e.pannable!==!1&&(this._pannable=new ho(this._plotArea,e.pannable))},_createZoomSelection:function(){var e=this.options.zoomable,t=(e||{}).selection;e!==!1&&t!==!1&&(this._zoomSelection=new po(this,t))},_createMousewheelZoom:function(){var e=this.options.zoomable,t=(e||{}).mousewheel;e!==!1&&t!==!1&&(this._mousewheelZoom=new fo(this,t))},_toggleDragZoomEvents:function(){var e=this.options.pannable,t=this.options.zoomable,n=(t||{}).selection,i=(t||{}).mousewheel,o=!(e||t!==!1&&n!==!1||this.requiresHandlers([In,An,En])),r=(t===!1||i===!1)&&!this.requiresHandlers([Mn,Fn,Rn]),a=this.element;this._dragZoomEnabled&&o&&r?(a.style.touchAction=this._touchAction||"",this._dragZoomEnabled=!1):this._dragZoomEnabled||o&&r||(a.style.touchAction="none",this._dragZoomEnabled=!0),this._toggleDomEvents(!o,!r)},_toggleDomEvents:function(e,t){var n=this.domEvents;n&&(n.toggleDrag&&n.toggleDrag(e),n.toggleZoom&&n.toggleZoom(t))},_createTooltip:function(){var e,t=this,n=t.options.tooltip;return e=this._sharedTooltip()?this._createSharedTooltip(n):new So(this.chartService,n)},_createSharedTooltip:function(e){return new To(this._plotArea,e)},applyDefaults:function(e,t){q(e,t),j(e,t)},applySeriesColors:function(){var e,t,n,i,o=this.options,r=o.series,a=o.seriesColors||[];for(e=0;e<r.length;e++)t=r[e],n=a[e%a.length],i=t._defaults,t.color=t.color||n,i&&(i.color=i.color||n)},_getModel:function(){var e=this.options,t=this._createPlotArea(),n=new Z.RootElement(this._modelOptions());return n.chart=this,n._plotArea=t,Z.Title.buildTitle(e.title,n),e.legend.visible&&n.append(new wo(t.options.legend,this.chartService)),n.append(t),n.reflow(),n},_modelOptions:function(){var e=this.options,t=this.getSize();return Me({transitions:e.transitions,width:t.width||ne.DEFAULT_WIDTH,height:t.height||ne.DEFAULT_HEIGHT},e.chartArea)},_createPlotArea:function(e){var t=this.options,n=ko.current.create(e?[]:t.series,t,this.chartService);return n},_setupSelection:function(){var e,t,n,i,o,r=this,a=this,s=a._plotArea.axes,l=this._selections=[];for(e=0;e<s.length;e++)t=s[e],n=t.options,t instanceof Ue&&n.select&&!n.vertical&&(i=t.range(),o=new Co(r,t,Me({min:i.min,max:i.max},n.select)),l.push(o))},_selectStart:function(e){return this.trigger(Pn,e)},_select:function(e){return this.trigger(zn,e)},_selectEnd:function(e){return this.trigger(Bn,e)},_initHandlers:function(){this._clickHandler=this._click.bind(this),this._mousewheelHandler=this._mousewheel.bind(this),this._mouseleaveHandler=this._mouseleave.bind(this),this._surfaceMouseenterHandler=this._mouseover.bind(this),this._surfaceMouseleaveHandler=this._mouseout.bind(this),this._mousemove=kendo.throttle(this._mousemove.bind(this),yr)},addObserver:function(e){e&&this.observers.push(e)},removeObserver:function(e){var t=this.observers.indexOf(e);t>=0&&this.observers.splice(t,1)},requiresHandlers:function(e){var t,n=this.observers;for(t=0;t<n.length;t++)if(n[t].requiresHandlers(e))return!0},trigger:function(e,t){var n,i,o;for(void 0===t&&(t={}),e===Hn&&(t.anchor.point=this._toDocumentCoordinates(t.anchor.point)),t.sender=this,n=this.observers,i=!1,o=0;o<n.length;o++)n[o].trigger(e,t)&&(i=!0);return i},_attachEvents:function(){var e,t,n=this.element;this._touchAction=n.style.touchAction,Qe(n,(e={},e[wr]=this._clickHandler,e[Gn]=this._mousewheelHandler,e[kr]=this._mouseleaveHandler,e)),this._shouldAttachMouseMove()&&Qe(n,(t={},t[br]=this._mousemove,t)),this.domEvents=Xe.DomEventsBuilder.create(this.element,{start:this._start.bind(this),move:this._move.bind(this),end:this._end.bind(this),tap:this._tap.bind(this),gesturestart:this._gesturestart.bind(this),gesturechange:this._gesturechange.bind(this),gestureend:this._gestureend.bind(this)}),this._toggleDragZoomEvents()},_mouseleave:function(e){this._hoveredPoint&&(this._hoveredPoint.out(this,e),this._hoveredPoint=null),this._plotArea.hovered&&(this.trigger(Dn),this._plotArea.hovered=!1)},_cancelDomEvents:function(){this.domEvents&&this.domEvents.cancel&&this.domEvents.cancel()},_gesturestart:function(e){this._mousewheelZoom&&!this._stopChartHandlers(e)&&(this._gestureDistance=e.distance,this._unsetActivePoint(),this.surface.suspendTracking())},_gestureend:function(e){this._zooming&&!this._stopChartHandlers(e)&&(this.surface&&this.surface.resumeTracking(),this._zooming=!1,this.trigger(Rn,{}))},_gesturechange:function(e){var t,n,i,o,r=this._mousewheelZoom;r&&!this._stopChartHandlers(e)&&(e.preventDefault(),t=this._gestureDistance,n=-e.distance/t+1,Math.abs(n)>=.1&&(n=Math.round(10*n),this._gestureDistance=e.distance,i={delta:n,axisRanges:$(this._plotArea.axes),originalEvent:e},!this._zooming&&this.trigger(Mn,i)||(this._zooming||(this._zooming=!0),o=i.axisRanges=r.updateRanges(n),o&&!this.trigger(Fn,i)&&r.zoom())))},_mouseout:function(e){if(e.element){var t=this._drawingChartElement(e.element,e);t&&t.leave&&t.leave(this,e.originalEvent)}},_start:function(e){var t=this._eventCoordinates(e);!this._stopChartHandlers(e)&&this._plotArea.backgroundContainsPoint(t)&&(this.requiresHandlers([In,An,En])&&this._startNavigation(e,t,In),this._pannable&&this._pannable.start(e)&&(this.surface.suspendTracking(),this._unsetActivePoint(),this._suppressHover=!0,this.chartService.panning=!0),this._zoomSelection&&this._zoomSelection.start(e)&&this.trigger(Mn,{axisRanges:$(this._plotArea.axes),originalEvent:e}))},_move:function(e){var t,n,i,o,r,a,s,l,c=this,d=c._navState,u=c._pannable;if(!this._stopChartHandlers(e)){if(u)t=u.move(e),t&&!this.trigger(An,{axisRanges:t,originalEvent:e})&&u.pan();else if(d){for(n={},i=d.axes,o=0;o<i.length;o++)r=i[o],a=r.options.name,a&&(s=r.options.vertical?e.y:e.x,l=s.startLocation-s.location,0!==l&&(n[r.options.name]=r.translateRange(l)));d.axisRanges=n,this.trigger(An,{axisRanges:n,originalEvent:e})}this._zoomSelection&&this._zoomSelection.move(e)}},_end:function(e){var t,n;this._stopChartHandlers(e)||(t=this._pannable,t&&t.end(e)?(this.surface.resumeTracking(),this.trigger(En,{axisRanges:$(this._plotArea.axes),originalEvent:e}),this._suppressHover=!1,this.chartService.panning=!1):this._endNavigation(e,En),this._zoomSelection&&(n=this._zoomSelection.end(e),n&&!this.trigger(Fn,{axisRanges:n,originalEvent:e})&&(this._zoomSelection.zoom(),this.trigger(Rn,{axisRanges:n,originalEvent:e}))))},_stopChartHandlers:function(e){var t,n,i,o=this._selections||[];if(!o.length)return!1;if(t=this._eventCoordinates(e),n=this._plotArea.paneByPoint(t))for(i=0;i<o.length;i++)if(o[i].onPane(n))return!0},_mousewheel:function(e){var t,n,i,o,r,a,s,l,c,d=this,u=Z.mousewheelDelta(e),h=this._mousewheelZoom,p=this._eventCoordinates(e);if(!this._stopChartHandlers(e)&&this._plotArea.backgroundContainsPoint(p))if(h)t={delta:u,axisRanges:$(this._plotArea.axes),originalEvent:e},!this._zooming&&this.trigger(Mn,t)||(e.preventDefault(),this._zooming||(this._unsetActivePoint(),this.surface.suspendTracking(),this._zooming=!0),this._mwTimeout&&clearTimeout(this._mwTimeout),t.axisRanges=h.updateRanges(u),t.axisRanges&&!this.trigger(Fn,t)&&h.zoom(),this._mwTimeout=setTimeout(function(){d.trigger(Rn,t),d._zooming=!1,d.surface&&d.surface.resumeTracking()},$n));else if(n=this._navState,n||(i=this._startNavigation(e,p,Mn),i||(n=this._navState)),n){for(o=n.totalDelta||u,n.totalDelta=o+u,r=this._navState.axes,a={},s=0;s<r.length;s++)l=r[s],c=l.options.name,c&&(a[c]=l.scaleRange(-o));this.trigger(Fn,{delta:u,axisRanges:a,originalEvent:e}),this._mwTimeout&&clearTimeout(this._mwTimeout),this._mwTimeout=setTimeout(function(){d._endNavigation(e,Rn)},$n)}},_startNavigation:function(e,t,n){var i,o,r=this._model._plotArea,a=r.findPointPane(t),s=r.axes.slice(0);a&&(i=$(s),o=this.trigger(n,{axisRanges:i,originalEvent:e}),o?this._cancelDomEvents():(this._suppressHover=!0,this._unsetActivePoint(),this._navState={axisRanges:i,pane:a,axes:s}))},_endNavigation:function(e,t){this._navState&&(this.trigger(t,{axisRanges:this._navState.axisRanges,originalEvent:e}),this._suppressHover=!1,this._navState=null)},_getChartElement:function(e,t){var n=this.surface.eventTarget(e);if(n)return this._drawingChartElement(n,e,t)},_drawingChartElement:function(e,t,n){for(var i,o=e;o&&!i;)i=o.chartElement,o=o.parent;if(i)return i.aliasFor&&(i=i.aliasFor(t,this._eventCoordinates(t))),n&&(i=i.closest(n),i&&i.aliasFor&&(i=i.aliasFor())),i},_eventCoordinates:function(e){var t=Z.eventCoordinates(e);return this._toModelCoordinates(t.x,t.y)},_elementPadding:function(){var e,t,n;return this._padding||(e=Ye(this.element,["paddingLeft","paddingTop"]),t=e.paddingLeft,n=e.paddingTop,this._padding={top:n,left:t}),this._padding},_toDocumentCoordinates:function(e){var t=this._elementPadding(),n=Z.elementOffset(this.element);return{left:je(e.x+t.left+n.left),top:je(e.y+t.top+n.top)}},_toModelCoordinates:function(e,t){var n=this.element,i=Z.elementOffset(n),o=this._elementPadding();return new xe(e-i.left-o.left,t-i.top-o.top)},_tap:function(e){var t=this,n=this.surface.eventTarget(e),i=this._drawingChartElement(n,e),o=this._sharedTooltip();this._startHover(n,e)||o||this._unsetActivePoint(),o&&this._trackSharedTooltip(this._eventCoordinates(e),e,!0),this._propagateClick(i,e),this.handlingTap=!0,setTimeout(function(){t.handlingTap=!1},0)},_click:function(e){var t=this._getChartElement(e);this._propagateClick(t,e)},_propagateClick:function(e,t){for(var n=this,i=e;i;)i.click&&i.click(n,t),i=i.parent},_startHover:function(e,t){var n,i,o,r;return!this._suppressHover&&(n=this._drawingChartElement(e,t,function(e){return(e.hover||e.over)&&!(e instanceof Vi)}),i=this._activePoint,o=this._hoveredPoint,o&&o!==n&&(o.out(this,t),this._hoveredPoint=null),n&&o!==n&&n.over&&(this._hoveredPoint=n,n.over(this,t)),n&&i!==n&&n.hover&&(this._activePoint=n,this._sharedTooltip()||n.hover(this,t)||(r=Me({},this.options.tooltip,n.options.tooltip), +r.visible&&this._tooltip.show(n),this._highlight.show(n))),n)},_mouseover:function(e){var t,n=this._startHover(e.element,e.originalEvent);n&&n.tooltipTracking&&!this._mouseMoveTrackHandler&&!this._sharedTooltip()&&(this._mouseMoveTrackHandler=this._mouseMoveTracking.bind(this),Qe(document,(t={},t[br]=this._mouseMoveTrackHandler,t)))},_mouseMoveTracking:function(e){var t,n,i,o=this,r=o.options,a=o._tooltip,s=o._highlight,l=o._activePoint,c=this._eventCoordinates(e);this._plotArea.box.containsPoint(c)?l&&l.tooltipTracking&&l.series&&l.parent.getNearestPoint&&(t=l.parent.getNearestPoint(c.x,c.y,l.seriesIx),t&&t!==l&&(this._activePoint=t,t.hover(this,e)||(n=Me({},r.tooltip,t.options.tooltip),n.visible&&a.show(t),s.show(t)))):(Je(document,(i={},i[br]=this._mouseMoveTrackHandler,i)),this._unsetActivePoint(),this._mouseMoveTrackHandler=null)},_mousemove:function(e){var t,n=this._eventCoordinates(e),i=this._plotArea;this._trackCrosshairs(n),i.hover&&(t=i.backgroundContainsPoint(n),t?(i.hovered=!0,this._plotArea.hover(this,e)):i.hovered&&!t&&(this.trigger(Dn),i.hovered=!1)),this._sharedTooltip()&&this._trackSharedTooltip(n,e)},_trackCrosshairs:function(e){var t,n,i=this._plotArea.crosshairs;for(t=0;t<i.length;t++)n=i[t],n.box.containsPoint(e)?n.showAt(e):n.hide()},_trackSharedTooltip:function(e,t,n){var i,o,r,a,s,l,c,d,u,h;this._suppressHover||(i=this,o=i.options.tooltip,r=i._plotArea,a=i._plotArea.categoryAxis,s=i._tooltip,l=i._highlight,r.backgroundContainsPoint(e)?(c=a.pointCategoryIndex(e),c!==this._tooltipCategoryIx||!this._sharedHighlight&&n?(d=r.pointsByCategoryIndex(c),u=d.map(function(e){return e.eventArgs(t)}),h=u[0]||{},h.categoryPoints=u,d.length>0&&!this.trigger(yn,h)?(o.visible&&s.showAt(d,e),l.show(d),this._sharedHighlight=!0):s.hide(),this._tooltipCategoryIx=c):n&&this._sharedHighlight&&(l.hide(),s.hide(),this._sharedHighlight=!1)):this._sharedHighlight&&(l.hide(),s.hide(),this._tooltipCategoryIx=null,this._sharedHighlight=!1))},hideElements:function(){var e=this._plotArea;this._mousemove.cancel(),e.hideCrosshairs(),this._unsetActivePoint()},_unsetActivePoint:function(){var e=this,t=e._tooltip,n=e._highlight;this._activePoint=null,this._hoveredPoint=null,t&&t.hide(),this._tooltipCategoryIx=null,this._sharedHighlight=!1,n&&n.hide()},_deferRedraw:function(){this._redraw()},_clearRedrawTimeout:function(){this._redrawTimeout&&(clearInterval(this._redrawTimeout),this._redrawTimeout=null)},bindCategories:function(){var e,t,n=this,i=this.options,o=[].concat(i.categoryAxis);for(e=0;e<o.length;e++)t=o[e],t.autoBind!==!1&&n.bindCategoryAxisFromSeries(t,e)},bindCategoryAxisFromSeries:function(e,t){var n,o,r,a,s,l,c,d,u,h,p,f,g=this,m=this.options.series,v=m.length,_=new Z.HashMap,b=[],y=!1;for(o=0;o<v;o++)if(r=m[o],a=r.categoryAxis===e.name||!r.categoryAxis&&0===t,s=r.data,l=s.length,c=r.categoryField&&a,y=c||y,c&&l>0)for(n=k(e,i(r.categoryField,s[0])),d=n?w:i,u=0;u<l;u++)h=s[u],p=d(r.categoryField,h,g.chartService.intl),!n&&_.get(p)||(b.push([p,h]),n||_.set(p,!0));b.length>0?(n&&(b=K(b,function(e,t){return Z.dateComparer(e[0],t[0])})),f=Q(b),e.categories=f[0]):y&&(e.categories=[])},_isBindable:function(e){var t,n,i=pt.current.valueFields(e),o=!0;for(t=0;t<i.length;t++)if(n=i[t],n===re?n="field":n+="Field",!be(e[n])){o=!1;break}return o},_noTransitionsRedraw:function(){var e,t=this.options;t.transitions&&(t.transitions=!1,e=!0),this._redraw(),e&&(t.transitions=!0)},_legendItemHover:function(e,t){var n,i=this,o=i._plotArea,r=i._highlight,a=(o.srcSeries||o.series)[e];n=De(a.type,[Jt,$t,Yt])?o.findPoint(function(n){return n.series.index===e&&n.index===t}):o.pointsBySeriesIndex(e),r.show(n)},_shouldAttachMouseMove:function(){return this._plotArea.crosshairs.length||this._tooltip&&this._sharedTooltip()||this.requiresHandlers([Tn,Dn])},updateMouseMoveHandler:function(){var e,t;Je(this.element,(e={},e[br]=this._mousemove,e)),this._shouldAttachMouseMove()&&Qe(this.element,(t={},t[br]=this._mousemove,t))},applyOptions:function(e,t){X(this._originalOptions,e),this._originalOptions=Me(this._originalOptions,e),this.options=Me({},this._originalOptions),t&&(this._theme=t,this.chartService.theme=t),this._initTheme(this.options,this._theme),this._toggleDragZoomEvents()},setOptions:function(e,t){this.applyOptions(e,t),this.bindCategories(),this.redraw(),this.updateMouseMoveHandler()},setDirection:function(e){this.chartService.rtl=!!e,this.surface&&"svg"===this.surface.type&&this._destroySurface()},setIntlService:function(e){this.chartService.intl=e},noTransitionsRedraw:function(){this._noTransitionsRedraw()},destroy:function(){var e,t;this._destroyed=!0,Je(this.element,(e={},e[wr]=this._clickHandler,e[Gn]=this._mousewheelHandler,e[br]=this._mousemove,e[kr]=this._mouseleaveHandler,e)),this.domEvents&&(this.domEvents.destroy(),delete this.domEvents),this._mouseMoveTrackHandler&&Je(document,(t={},t[br]=this._mouseMoveTrackHandler,t)),this._destroyView(),this._destroySurface(),this._clearRedrawTimeout()},_destroySurface:function(){var e=this.surface;e&&(e.unbind("mouseenter",this._surfaceMouseenterHandler),e.unbind("mouseleave",this._surfaceMouseleaveHandler),e.destroy(),this.surface=null)},_destroyView:function(){var e=this,t=e._model,n=e._selections;if(t&&(t.destroy(),this._model=null),n)for(;n.length>0;)n.shift().destroy();this._unsetActivePoint(),this._tooltip&&this._tooltip.destroy(),this._highlight&&this._highlight.destroy(),this._zoomSelection&&(this._zoomSelection.destroy(),delete this._zoomSelection),this._pannable&&(this._pannable.destroy(),delete this._pannable),this._mousewheelZoom&&(this._mousewheelZoom.destroy(),delete this._mousewheelZoom)}}),Cr=["data","categories"],Te(xr,{renderAs:"",chartArea:{},legend:{visible:!0,labels:{}},categoryAxis:{},seriesDefaults:{type:Gt,data:[],highlight:{visible:!0},labels:{},negativeValues:{visible:!1}},series:[],seriesColors:null,tooltip:{visible:!1},transitions:!0,valueAxis:{},plotArea:{},title:{},xAxis:{},yAxis:{},panes:[{}],pannable:!1,zoomable:!1}),kendo.deepExtend(kendo.dataviz,{constants:Yn,Aggregates:ht,AreaChart:fi,AreaSegment:ui,AxisGroupRangeTracker:gi,Bar:_i,BarChart:ki,BarLabel:mi,BoxPlotChart:Ti,BoxPlot:Ci,BubbleChart:Ii,Bullet:Fi,BulletChart:Ri,CandlestickChart:xi,Candlestick:yi,CategoricalChart:Zn,CategoricalErrorBar:Xn,CategoricalPlotArea:co,Chart:xr,ChartContainer:Li,ClipAnimation:li,ClusterLayout:bi,Crosshair:Bi,CrosshairTooltip:zi,DefaultAggregates:ji,DonutChart:Wo,DonutPlotArea:Uo,DonutSegment:Oo,ErrorBarBase:Qn,ErrorRangeCalculator:_t,Highlight:uo,SharedTooltip:To,Legend:wo,LegendItem:mo,LegendLayout:go,LineChart:di,LinePoint:ni,LineSegment:ii,Pane:Hi,PieAnimation:Io,PieChart:Ho,PieChartMixin:Bo,PiePlotArea:No,PieSegment:Ro,PlotAreaBase:Vi,PlotAreaEventsMixin:Ui,PlotAreaFactory:ko,PointEventsMixin:ei,RangeBar:Gi,RangeBarChart:$i,RangeAreaPoint:Ji,RangeAreaChart:no,ScatterChart:Ai,ScatterErrorBar:Di,ScatterLineChart:Mo,Selection:Co,SeriesAggregator:qi,SeriesBinder:pt,SplineSegment:ai,SplineAreaSegment:pi,StackWrap:wi,Tooltip:So,OHLCChart:oo,OHLCPoint:io,WaterfallChart:ao,WaterfallSegment:ro,XYPlotArea:Fo,MousewheelZoom:fo,ZoomSelection:po,Pannable:ho,ChartAxis:ct,ChartPane:dt,ChartPlotArea:ut,findAxisByName:t,anyHasZIndex:s,appendIfNotNull:g,areNumbers:u,bindSegments:v,categoriesCount:r,countNumbers:n,equalsIgnoreCase:_,evalOptions:o,filterSeriesByType:b,getDateField:w,getField:i,hasGradientOverlay:l,hasValue:h,isDateAxis:k,segmentVisible:m,singleItemOrArray:y,createOutOfRangePoints:T})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/chart/chart.min",["dataviz/chart/kendo-chart.min","kendo.data.min","kendo.dataviz.core.min","kendo.dataviz.themes.min","kendo.drawing.min","kendo.userevents.min"],e)}(function(){return function(e,t){function n(e){s.fn[e]=function(){var t=this._instance;if(t)return t[e].apply(t,arguments)}}function i(e,n){var i,o,r,a=[],s=e.groupNameTemplate,l=n.length;if(0===l)return r=D({},e),r.visibleInLegend=!1,[r];for(A(s)?(v.logToConsole("'groupNameTemplate' is obsolete and will be removed in future versions. Specify the group name template as 'series.name'"),s&&(i=B(s))):(i=B(e.name||""),0===i._slotCount&&(i=B(A(e.name)?"#= group.value #: #= series.name #":"#= group.value #"))),o=0;o<l;o++)r=D({},e),v.isFunction(r.color)||(r.color=t),r._groupIx=o,r._groupValue=n[o].value,a.push(r),i&&(r.name=i({series:r,group:n[o]}));return a}function o(e){for(var n in e)e[n]===t&&(e[n]="");return e}function r(e){for(var t=0;t<e.length;t++)e[t].notifyRender()}var a,s,l,c,d,u,h,p,f,g,m=".kendoChart",v=window.kendo,_=v.Class,b=v._outerWidth,w=v._outerHeight,k=v.dataviz,y=k.constants,x=k.Chart,C=k.SeriesBinder,S=v.ui.Widget,T=v.data.DataSource,D=v.deepExtend,A=k.defined,E=k.getField,I=k.InstanceObserver,M=k.inArray,F=k.services,R=e.proxy,P=e.isArray,z=e.extend,B=v.template,L="mouseleave"+m,H=y.AXIS_LABEL_CLICK,N=y.LEGEND_ITEM_CLICK,O=y.LEGEND_ITEM_HOVER,V=y.LEGEND_ITEM_LEAVE,W=y.SERIES_CLICK,U=y.SERIES_HOVER,q=y.SERIES_OVER,j=y.SERIES_LEAVE,G=y.PANE_RENDER,$=y.PLOT_AREA_CLICK,Y=y.PLOT_AREA_HOVER,K=y.PLOT_AREA_LEAVE,Q=y.DRAG,X=y.DRAG_END,J=y.DRAG_START,Z=y.ZOOM_START,ee=y.ZOOM,te=y.ZOOM_END,ne=y.SELECT_START,ie=y.SELECT,oe=y.SELECT_END,re=y.RENDER,ae=y.NOTE_CLICK,se=y.NOTE_HOVER,le=y.NOTE_LEAVE,ce="change",de="dataBound",ue="leave",he=y.VALUE,pe=y.PIE,fe=y.DONUT,ge=y.FUNNEL,me=v.Observable,ve=150,_e=100,be="k-chart-tooltip-inverse",we="k-chart-shared-tooltip",ke="rtl";for(F.DomEventsBuilder.register({create:function(e,t){return new v.UserEvents(e,D({global:!0,multiTouch:!0,fastTap:!0},t))}}),a=I.extend({handlerMap:{showTooltip:"_showTooltip",hideTooltip:"_hideTooltip",legendItemClick:"_onLegendItemClick",render:"_onRender",init:"_onInit"}}),s=S.extend({init:function(e,t){var n;v.destroy(e),S.fn.init.call(this,e),t&&(n=t.dataSource,delete t.dataSource),this.options=D({},this.options,t),this.wrapper=this.element,this._attachEvents(),t&&(t.dataSource=n),this._seriesVisibility=new d,this.bind(this.events,this.options),this._initDataSource(t),v.notify(this,k.ui)},events:[de,W,U,q,j,H,N,O,V,G,$,Y,K,J,Q,X,Z,ee,te,ne,ie,oe,ae,se,le,re],options:{name:"Chart",renderAs:"",theme:"default",axisDefaults:{},chartArea:{},legend:{},categoryAxis:{},autoBind:!0,seriesDefaults:{},series:[],seriesColors:null,tooltip:{},transitions:!0,valueAxis:{},plotArea:{},title:{},xAxis:{},yAxis:{},panes:[{}],pannable:!1,zoomable:!1},items:function(){return e()},refresh:function(){var e=this,t=e._instance;t.applyDefaults(e.options),t.applySeriesColors(),e._bindSeries(),e._bindCategories(),e.trigger(de),e._redraw()},getSize:function(){return v.dimensions(this.element)},redraw:function(e){this._size=null,this._instance.redraw(e)},setOptions:function(e){var t=this,n=e.dataSource;delete e.dataSource,S.fn._setEvents.call(t,e),this._instance.applyOptions(e,this._getThemeOptions(e)),this.options=this._instance.options,this._tooltip.setOptions(this.options.tooltip),this._seriesVisibility.setOptions(this.options),this._sourceSeries=null,n&&t.setDataSource(n),t._hasDataSource?t._onDataChanged():(t._bindCategories(),t.redraw()),t._instance.updateMouseMoveHandler()},setDataSource:function(e){var t=this;t.dataSource.unbind(ce,t._dataChangeHandler),t.dataSource=e=T.create(e),t._hasDataSource=!0,t._hasData=!1,e.bind(ce,t._dataChangeHandler),t.options.autoBind&&e.fetch()},destroy:function(){var e=this,t=e.dataSource;e.element.off(m),t&&t.unbind(ce,e._dataChangeHandler),e._instance&&(e._instance.destroy(),delete this._instance),this._tooltip&&(this._tooltip.destroy(),delete this._tooltip),this._destroyCrosshairTooltips(),S.fn.destroy.call(e)},findPaneByName:function(e){var t,n=this._plotArea.panes;for(t=0;t<n.length;t++)if(n[t].options.name===e)return new f(this,n[t])},findPaneByIndex:function(e){var t=this._plotArea.panes;if(t[e])return new f(this,t[e])},findSeries:function(e){var t,n=this._plotArea,i=n.srcSeries||n.series;for(t=0;t<i.length;t++)if(e(i[t]))return new g(this,i[t])},findSeriesByName:function(e){return this._createSeries({name:e})},findSeriesByIndex:function(e){return this._createSeries({index:e})},exportVisual:function(e){var t,n,i,o,a=this._instance;if(a)return e&&(e.width||e.height)?(n=a.options.chartArea,i=a._originalOptions.chartArea,D(n,e),o=a._getModel(),n.width=i.width,n.height=i.height,o.renderVisual(),r(o._plotArea.panes),t=o.visual):t=a.exportVisual(),t},_createSeries:function(e){var t=this._seriesOptions(e);if(t)return new g(this,t)},_seriesOptions:function(e){var t,n,i=this._plotArea,o=i.srcSeries||i.series;if(A(e.index))t=o[e.index];else if(A(e.name))for(n=0;n<o.length;n++)if(o[n].name===e.name){t=o[n];break}return t},_attachEvents:function(){this.element.on(L,R(this._mouseleave,this))},_mouseleave:function(t){var n=this._instance,i=this._tooltip,o=t.relatedTarget;o&&e(o).closest(i.element).length||!n||n.handlingTap||n.hideElements()},_getThemeOptions:function(e){var n,i,o=(e||{}).theme;return o&&k.SASS_THEMES.indexOf(o.toLowerCase())!==-1?k.autoTheme().chart:A(o)?(n=k.ui.themes||{},i=n[o]||n[o.toLowerCase()]||{},i.chart||{}):t},_initChart:function(){this._createChart(this.options,this._getThemeOptions(this.options)),this.options=this._instance.options,this._seriesVisibility.setOptions(this.options)},_createChart:function(e,t){this._instance=new x(this.element[0],e,t,{observer:new a(this),sender:this,rtl:this._isRtl()})},_onInit:function(e){this._instance=e.sender},_initDataSource:function(e){var t=this,n=(e||{}).dataSource;t._dataChangeHandler=R(t._onDataChanged,t),t.dataSource=T.create(n).bind("change",t._dataChangeHandler),t._bindCategories(),n&&(t._hasDataSource=!0),this._initChart(),this._initTooltip(),n&&t.options.autoBind&&t.dataSource.fetch()},_destroyCrosshairTooltips:function(){var e,t=this._crosshairTooltips;if(t)for(e in t)t[e].destroy();this._crosshairTooltips={}},_getCrosshairTooltip:function(e,t){var n=this._crosshairTooltips=this._crosshairTooltips||{},i=e+t,o=n[i];return o||(o=n[i]=new p(this.element)),o},_showTooltip:function(e){if(e.crosshair){var t=this._getCrosshairTooltip(e.axisName,e.axisIndex);t.show(e)}else this._tooltip&&this._tooltip.show(e)},_hideTooltip:function(e){if(e.crosshair){var t=this._getCrosshairTooltip(e.axisName,e.axisIndex);t.hide()}else this._tooltip&&this._tooltip.hide(e)},_onRender:function(e){this._destroyCrosshairTooltips(),this._copyMembers(e.sender),this._hasDataSource&&!this._hasData&&this.options.autoBind||this.trigger(re)},_copyMembers:function(e){this.options=e.options,this._originalOptions=e._originalOptions,this.surface=e.surface,this._plotArea=e._plotArea,this._model=e._model,this._highlight=e._highlight,this._selections=e._selections,this._pannable=e._pannable,this._zoomSelection=e._zoomSelection,this._mousewheelZoom=e._mousewheelZoom},requiresHandlers:function(e){var t,n=this._events;for(t=0;t<e.length;t++)if(A(n[e[t]]))return!0},_initTooltip:function(){this._tooltip=this._createTooltip(),this._tooltip.bind(ue,R(this._tooltipleave,this))},_onLegendItemClick:function(e){this.trigger(N,e)||this._legendItemClick(e.seriesIndex,e.pointIndex)},_legendItemClick:function(t,n){var i,o,r,a=this._instance,s=a._plotArea,l=(s.srcSeries||s.series)[t];e.inArray(l.type,[pe,fe,ge])>=0?(i=l.data[n],i&&A(i.visible)?i.visible=!i.visible:(o=l.pointVisibility=l.pointVisibility||{},r=o[n],o[n]=!!A(r)&&!r)):(l.visible=!l.visible,this._seriesVisibility.save(l)),a._noTransitionsRedraw()},_createTooltip:function(){return new h(this.element,z({},this.options.tooltip,{rtl:this._isRtl()}))},_tooltipleave:function(){this._instance&&this._instance.hideElements()},_bindData:function(e){var t,n,o,r=this,a=r.options,s=r._sourceSeries||a.series,l=s.length,c=r.dataSource.view(),d=(r.dataSource.group()||[]).length>0,u=[],h=this._seriesVisibility;for(h.read(),t=0;t<l;t++)n=s[t],r._isBindable(n)&&d?(o=i(n,c),u=u.concat(o),h.applyByGroup(o,e)):(n=z({},n),u.push(n),h.applyByIndex(n,e));r._sourceSeries=s,a.series=u,this._instance.applySeriesColors(),r._bindSeries(),r._bindCategories(),this._hasData=!0},_onDataChanged:function(e){this._bindData(e),this.trigger(de),this._instance&&this._instance.fontLoaded&&this._redraw()},_bindSeries:function(){var e,t,n,i,o=this,r=o.dataSource.view(),a=o.options.series,s=a.length;for(e=0;e<s;e++)t=a[e],o._isBindable(t)&&(n=t._groupIx,i=A(n)?(r[n]||{}).items:r,t.autoBind!==!1&&(t.data=i))},_bindCategories:function(){var e,t,n=this,i=n.dataSource.view()||[],o=(n.dataSource.group()||[]).length>0,r=i,a=n.options,s=[].concat(a.categoryAxis);for(o&&i.length&&(r=i[0].items),e=0;e<s.length;e++)t=s[e],t.autoBind!==!1&&n._bindCategoryAxis(t,r,e)},_bindCategoryAxis:function(e,t,n){var i,o,r,a=(t||[]).length;if(e.field)for(e.categories=[],i=0;i<a;i++)r=t[i],o=E(e.field,r),0===i?(e.categories=[o],e.dataItems=[r]):(e.categories.push(o),e.dataItems.push(r));else this._instance&&this._instance.bindCategoryAxisFromSeries(e,n)},_isBindable:function(e){var t,n,i=C.current.valueFields(e),o=!0;for(n=0;n<i.length;n++)if(t=i[n],t===he?t="field":t+="Field",!A(e[t])){o=!1;break}return o},_isRtl:function(){return v.support.isRtl(this.element)&&this.element.css("direction")===ke}}),l=["getAxis","findAxisByName","plotArea","toggleHighlight","showTooltip","hideTooltip","_resize","_redraw","_noTransitionsRedraw","_legendItemHover","_eventCoordinates"],c=0;c<l.length;c++)n(l[c]);k.ExportMixin.extend(s.fn),v.PDFMixin&&v.PDFMixin.extend(s.fn),k.ui.plugin(s),d=_.extend({init:function(){this.groups={},this.index={},this.options={}},applyByGroup:function(e,t){if(t&&t.action||this.options.persistSeriesVisibility)for(var n=0;n<e.length;n++)this.groups[e[n]._groupValue]===!1&&(e[n].visible=!1);else this.groups={}},applyByIndex:function(e,t){t&&t.action||this.options.persistSeriesVisibility?this.index[e.index]===!1&&(e.visible=!1):this.index={}},save:function(e){e&&(this.options.persistSeriesVisibility?this.options.series[e.index].visible=e.visible:this.saveState(e))},setOptions:function(e){this.options=e,this.groups={},this.index={}},read:function(){var e,t,n=this.options;if(n.persistSeriesVisibility)for(e=n.series,t=0;t<e.length;t++)this.saveState(e[t])},saveState:function(e){A(e._groupValue)?this.groups[e._groupValue]=e.visible:this.index[e.index]=e.visible}}),u=v.geometry,h=me.extend({init:function(t,n){var i,o=this;me.fn.init.call(o),this.setOptions(n),o.chartElement=t,o.template=h.template,o.template||(o.template=h.template=v.template("<div class='k-tooltip k-chart-tooltip#= d.rtl ? \" k-rtl\" : \"\"#' style='display:none; position: absolute; font: #= d.font #;#if (d.border) {# border: #= d.border.width #px solid; #}#opacity: #= d.opacity #; filter: alpha(opacity=#= d.opacity * 100 #);'></div>",{useWithBlock:!1,paramName:"d"})),o.element=e(o.template(o.options)),o.move=R(o.move,o),o._mouseleave=R(o._mouseleave,o),i=v.format("[{0}='content'],[{0}='scroller']",v.attr("role")),o._mobileScroller=t.closest(i).data("kendoMobileScroller")},destroy:function(){this._clearShowTimeout(),this.element&&(this.element.off(L).remove(),this.element=null)},setOptions:function(e){this.options=D({},this.options,e)},options:{opacity:1,animation:{duration:ve},sharedTemplate:"<table><th colspan='#= colspan #'>#= categoryText #</th># for(var i = 0; i < points.length; i++) { ## var point = points[i]; #<tr># if(colorMarker) { # <td><span class='k-chart-shared-tooltip-marker' style='background-color:#:point.series.color#'></span></td># } ## if(nameColumn) { # <td> #if (point.series.name) {# #: point.series.name #: #} else {# #}#</td># } #<td>#= content(point) #</td></tr># } #</table>",categoryFormat:"{0:d}"},move:function(){var e,t=this,n=t.options,i=t.element;t.anchor&&t.element&&(e=t._offset(),t.visible||i.css({top:e.top,left:e.left}),t.visible=!0,t._ensureElement(document.body),i.stop(!0,!0).show().animate({left:e.left,top:e.top},n.animation.duration))},_clearShowTimeout:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=null)},getAnchor:function(e){var t=this.anchor,n=t.point,i=t.align,o=n.left,r=n.top;return"center"===i.horizontal?o-=e.width/2:"right"===i.horizontal&&(o-=e.width),"center"===i.vertical?r-=e.height/2:"bottom"===i.vertical&&(r-=e.height),{x:o,y:r}},_offset:function(){var t,n,i=this,o=i._measure(),r=i.getAnchor(o),a=r.y,s=r.x,l=v.support.zoomLevel(),c=e(window),d=window.pageYOffset||document.documentElement.scrollTop||0,h=window.pageXOffset||document.documentElement.scrollLeft||0,p=(this._mobileScroller||{}).movable;return p&&1!==p.scale?(t=u.transform().scale(p.scale,p.scale,[p.x,p.y]),n=new u.Point(s,a).transform(t),s=n.x,a=n.y):(a+=i._fit(a-d,o.height,w(c)/l),s+=i._fit(s-h,o.width,b(c)/l)),{top:a,left:s}},show:function(e){this.anchor=e.anchor,this.element.css(o(e.style)),this.element.toggleClass(be,!!e.className),this.element.toggleClass(we,!!e.shared);var t=e.shared?this._sharedContent(e):this._pointContent(e.point);this.element.html(t),this._clearShowTimeout(),this.showTimeout=setTimeout(this.move,_e)},hide:function(){var e=this;clearTimeout(e.showTimeout),e._hideElement(),e.visible&&(e.point=null,e.visible=!1,e.index=null)},_sharedContent:function(e){var t,n,i=e.points,o=k.grep(i,function(e){return A(e.series.name)}).length,r=e.series.length>1,a=1;return o&&a++,r&&a++,t=v.template(this.options.sharedTemplate),n=t({points:i,category:e.category,categoryText:e.categoryText,content:this._pointContent,colorMarker:r,nameColumn:o,colspan:a})},_measure:function(){this._ensureElement();var e={width:b(this.element),height:w(this.element)};return e},_ensureElement:function(){this.element&&this.element.appendTo(document.body).on(L,this._mouseleave)},_mouseleave:function(t){var n=t.relatedTarget,i=this.chartElement[0];n&&n!==i&&!e.contains(i,n)&&this.trigger(ue)},_hideElement:function(){var e=this,t=this.element;t&&t.fadeOut({always:function(){e.visible||t.off(L).remove()}})},_pointContent:function(e){var t,n,i=this,o=D({},i.options,e.options.tooltip);return A(e.value)&&(t=""+e.value),o.template?(n=B(o.template),t=n({value:e.value,category:e.category,series:e.series,dataItem:e.dataItem,percentage:e.percentage,runningTotal:e.runningTotal,total:e.total,low:e.low,high:e.high,xLow:e.xLow,xHigh:e.xHigh,yLow:e.yLow,yHigh:e.yHigh})):o.format&&(t=e.formatValue(o.format)),t},_fit:function(e,t,n){var i=0;return e+t>n&&(i=n-(e+t)),e<0&&(i=-e),i}}),p=h.extend({init:function(e,t){h.fn.init.call(this,e,t),this.element.addClass("k-chart-crosshair-tooltip")},show:function(e){var t=this.element;t&&(this.anchor=e.anchor,this.element.css(e.style),this.element.html(this.content(e)),this.move())},move:function(){var e=this,t=e.element,n=e._offset();e._ensureElement(),t.css({top:n.top,left:n.left}).show()},content:function(e){var t=e.value,n=e.crosshair.options.tooltip;return n.template&&(t=B(n.template)({value:t})),t},hide:function(){this.element.hide()}}),f=_.extend({init:function(e,t){this._chart=e,this._pane=t,this.visual=t.visual,this.chartsVisual=t.chartContainer.visual,this.name=t.options.name},series:function(){var e,t=this._chart,n=t._plotArea.groupSeriesByPane(),i=n[this.name||"default"],o=[];if(i)for(e=0;e<i.length;e++)o.push(new g(t,i[e]));return o}}),g=_.extend({init:function(e,t){this._chart=e,this._options=t},points:function(e){var t,n,i=this._points;return i||(t=this._seriesOptions(),n=this._chart._plotArea,this._points=i=n.pointsBySeriesIndex(t.index)),v.isFunction(e)&&(i=this._filterPoints(i,e)),i},data:function(e){var t,n,i,o,r=this._seriesOptions();return e&&(t=this._chart,n=t._plotArea,r.data=e,r.categoryField&&(i=n.seriesCategoryAxis(r),o=[].concat(t.options.categoryAxis),t._instance.bindCategoryAxisFromSeries(o[i.axisIndex],i.axisIndex)),t._noTransitionsRedraw(),this._clearFields()),r.data},findPoint:function(e){var t,n=this.points();for(t=0;t<n.length;t++)if(e(n[t]))return n[t]},toggleHighlight:function(e,t){t=t?v.isFunction(t)?this.points(t):P(t)?t:[t]:this.points(),this._chart._instance.togglePointsHighlight(e,t)},toggleVisibility:function(e,t){var n,i,o=this._chart,r=this._seriesOptions(),a=v.isFunction(t);if(a)if(M(r.type,[pe,fe,ge]))for(n=this._filterData(t),i=0;i<n.length;i++)n[i].visible=e;else r.visible=function(n){return!t(n.dataItem)||e};else r.visible=e,o._seriesVisibility.save(r);o._noTransitionsRedraw(),this._clearFields()},_filterData:function(e){var t,n=this._seriesOptions().data,i=n.length,o=[];for(t=0;t<i;t++)e(n[t])&&o.push(n[t]);return o},_filterPoints:function(e,t){var n,i=[],o=e.length;for(n=0;n<o;n++)t(e[n])&&i.push(e[n]);return i},_seriesOptions:function(){var e=this._series;return e||(e=this._series=this._chart._seriesOptions(this._options)),e},_clearFields:function(){delete this._points,delete this._series}}),k.Tooltip=h,k.CrosshairTooltip=p,k.ChartInstanceObserver=a,k.ChartPane=f,k.ChartSeries=g}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.chart.min",["dataviz/chart/kendo-chart.min","dataviz/chart/chart.min"],e)}(function(){return window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/gauge/kendo-gauges.min",["kendo.core.min","kendo.color.min","kendo.drawing.min","kendo.dataviz.core.min"],e)}(function(){!function(e){function t(e,t){var n=e.getOrigin(),i=e.getSize(),o=d(t);return e.setOrigin([n.x-o.left,n.y-o.top]),e.setSize([i.width+(o.left+o.right),i.height+(o.top+o.bottom)]),e}function n(e,n){var i=e.box,o=e.children[0].box,r=n.border||{},a=n.background||"",s=Y.fromRect(new I([i.x1,i.y1],[i.width(),i.height()]),{stroke:{}}),l=new K(e.text,new M(o.x1,o.y1),{font:n.font,fill:{color:n.color}}),c=t(l.bbox().clone(),n.padding),d=Y.fromRect(c,{stroke:{color:r.width?r.color:"",width:r.width,dashType:r.dashType,lineJoin:"round",lineCap:"round"},fill:{color:a}}),u=new $;return u.append(s),u.append(d),u.append(l),u}function i(e,t,n){var i=u(e.from)?e.from:h.MIN_VALUE,o=u(e.to)?e.to:h.MAX_VALUE;return e.from=Math.max(Math.min(o,i),t),e.to=Math.min(Math.max(o,i),n),e}function o(e,n){var i=d(n);return i.left=-i.left,i.top=-i.top,i.right=-i.right,i.bottom=-i.bottom,t(e,i)}function r(e,t){var n,i,o,r=e.position,a=e.tickX,s=e.tickY;return e.vertical?(n=new ne(a,r),i=new ne(a+t.size,r)):(n=new ne(r,s),i=new ne(r,s+t.size)),o=new ee({stroke:{color:t.color,width:t.width}}).moveTo(n).lineTo(i)}function a(e,t,n,i){var o,a,s,l=t.length;if(i.visible)for(o=n.mirror,a=n.lineBox,s=i.skip;s<l;s+=i.step)s%i.skipUnit!==0&&(n.tickX=o?a.x2:a.x2-i.size,n.tickY=o?a.y1-i.size:a.y1,n.position=t[s],e.append(r(n,i)))}function s(e,t,n,i){var o,r,a,s=new ke,l=e.center,c=e.getRadiusX();if(i.visible)for(o=0;o<t.length;o++)r=e.pointAt(t[o]),a=new M(l.x+c-i.size,l.y).rotate(t[o],l),s.append(new we({stroke:{color:i.color,width:i.width}}).moveTo(r).lineTo(a));return s}function l(e,t,n,i){return{from:e,to:t,color:n,opacity:i}}var c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C,S,T,D,A,E,I,M,F,R,P,z,B,L,H,N,O,V,W,U,q,j,G,$,Y,K,Q,X,J,Z,ee,te,ne,ie,oe,re,ae,se,le,ce,de,ue,he,pe,fe,ge,me,ve,_e,be,we,ke,ye,xe,Ce,Se,Te,De,Ae,Ee,Ie,Me,Fe,Re,Pe,ze;window.kendo.dataviz=window.kendo.dataviz||{},c=kendo.dataviz,d=c.getSpacing,u=c.defined,h=c.constants,p=h.BLACK,f=h.COORD_PRECISION,g=c.services,m=c.deepExtend,v=c.isArray,_=c.setDefaultOptions,b=c.NumericAxis,w=c.limitValue,k=c.Box,y=c.interpolateValue,x=c.round,C=kendo.drawing,S=C.Group,T=C.Path,D=C.Animation,A=C.AnimationFactory,E=kendo.geometry,I=E.Rect,M=E.Point,F=E.transform,R=150,P=250,z="arrow",B="arrowPointer",L="barPointer",H=200,N=.5,O=200,V=Math.PI/180,W="inside",U="linear",q="outside",j="radialPointer",G="radialRangePointer",$=S,Y=T,K=C.Text,Q=5,X=T,J=C.Surface,Z=c.Class.extend({init:function(e,t,n,i){void 0===i&&(i={}),this.element=e,this.theme=n,this.contextService=new g.ChartService(this,i),this._originalOptions=m({},this.options,t),this.options=m({},this._originalOptions),this._initTheme(n),this.redraw()},destroy:function(){this.surface&&(this.surface.destroy(),this.surface=null),delete this.element,delete this.surfaceElement},value:function(e){var t=this.pointers[0];return 0===arguments.length?t.value():(t.value(e),void this._setValueOptions(e))},_draw:function(){var e=this.surface;e.clear(),e.draw(this._visuals)},exportVisual:function(){return this._visuals},allValues:function(e){var t,n,i=this.pointers,o=[];if(0===arguments.length){for(t=0;t<i.length;t++)o.push(i[t].value());return o}if(v(e))for(n=0;n<e.length;n++)c.isNumber(e[n])&&i[n].value(e[n]);this._setValueOptions(e)},_setValueOptions:function(e){var t,n=[].concat(this.options.pointer),i=[].concat(e);for(t=0;t<i.length;t++)n[t].value=i[t]},resize:function(){this.noTransitionsRedraw()},noTransitionsRedraw:function(){var e=this.options.transitions;this._toggleTransitions(!1),this.redraw(),this._toggleTransitions(e)},redraw:function(){var e,t=this._surfaceSize(),n=new I([0,0],[t.width,t.height]);this._initSurface(),this.gaugeArea=this._createGaugeArea(),this._createModel(),e=o(n.bbox(),this._gaugeAreaMargin),this.reflow(e)},setOptions:function(e,t){this._originalOptions=m(this._originalOptions,e),this.options=m({},this._originalOptions),this._initTheme(t),this.redraw()},setDirection:function(e){this.contextService.rtl=!!e,this.surface&&"svg"===this.surface.type&&(this.surface.destroy(),this.surface=null)},setIntlService:function(e){this.contextService.intl=e},_initTheme:function(e){var t,n,i,o,r=e||this.theme||{};if(this.theme=r,this.options=m({},r,this.options),t=this.options,n=t.pointer,v(n)){for(i=[],o=0;o<n.length;o++)i.push(m({},r.pointer,n[o]));t.pointer=i}},_createGaugeArea:function(){var e,t=this.options.gaugeArea,n=this.surface.size(),i=t.border||{},r=new I([0,0],[n.width,n.height]);return this._gaugeAreaMargin=t.margin||Q,i.width>0&&(r=o(r,i.width)),e=X.fromRect(r,{stroke:{color:i.width?i.color:"",width:i.width,dashType:i.dashType,lineJoin:"round",lineCap:"round"},fill:{color:t.background}})},_initSurface:function(){var e=this,t=e.options,n=e.surface,i=this._surfaceElement(),o=this._surfaceSize();c.elementSize(i,o),n&&n.options.type===t.renderAs?(this.surface.clear(),this.surface.resize()):(n&&n.destroy(),this.surface=J.create(i,{type:t.renderAs}))},_surfaceSize:function(){var e=this.options,t=this._getSize();return e.gaugeArea&&m(t,e.gaugeArea),t},_surfaceElement:function(){return this.surfaceElement||(this.surfaceElement=document.createElement("div"),this.element.appendChild(this.surfaceElement)),this.surfaceElement},getSize:function(){return this._getSize()},_getSize:function(){var e=this.element,t=this._defaultSize(),n=e.offsetWidth,i=e.offsetHeight;return n||(n=t.width),i||(i=t.height),{width:n,height:i}},_defaultSize:function(){return{width:O,height:H}},_toggleTransitions:function(e){var t,n=this;for(this.options.transitions=e,t=0;t<this.pointers.length;t++)n.pointers[t].options.animation.transitions=e}}),_(Z,{plotArea:{},theme:"default",renderAs:"",pointer:{},scale:{},gaugeArea:{}}),ee=T,te=S,ne=M,ie=b.extend({init:function(t,n){var i=t||{};!u(i.reverse)&&i.vertical===!1&&(n||{}).rtl&&(i=e.extend({},i,{reverse:!0})),b.fn.init.call(this,0,1,i,n),this.options.minorUnit=this.options.minorUnit||this.options.majorUnit/10},initUserOptions:function(e){var t=m({},this.options,e);return t=m({},t,{labels:{mirror:t.mirror}}),t.majorUnit=t.majorUnit||c.autoMajorUnit(t.min,t.max),t},initFields:function(){},render:function(){var e=this.elements=new te,t=this.renderLabels(),n=this.renderLine(),i=this.renderTicks(),o=this.renderRanges();return e.append(n,t,i,o),e},renderRanges:function(){var e,t,n,o,r,a=this,s=this.options,l=s.min,c=s.max,d=s.vertical,u=s.labels.mirror,h=s.ranges||[],p=new te,f=h.length,g=s.rangeSize||s.minorTicks.size/2;for(e=0;e<f;e++)t=i(h[e],l,c),n=a.getSlot(t.from,t.to),o=d?a.lineBox():n,r=d?n:a.lineBox(),d?o.x1-=g*(u?-1:1):r.y2+=g*(u?-1:1),p.append(ee.fromRect(new I([o.x1,r.y1],[o.x2-o.x1,r.y2-r.y1]),{fill:{color:t.color,opacity:t.opacity},stroke:{}}));return p},renderLabels:function(){var e,t=this,i=t.labels,o=t.options,r=new te;for(e=0;e<i.length;e++)r.append(n(i[e],o.labels));return r},renderLine:function(){var e,t=this.options.line,n=this.lineBox(),i=new te; +return t.width>0&&t.visible&&(e=new ee({stroke:{color:t.color,dashType:t.dashType,width:t.width}}),e.moveTo(n.x1,n.y1).lineTo(n.x2,n.y2),i.append(e)),i},renderTicks:function(){var e=new te,t=this.options,n=t.majorTicks.visible?t.majorUnit:0,i={vertical:t.vertical,mirror:t.labels.mirror,lineBox:this.lineBox()};return a(e,this.getMajorTickPositions(),i,t.majorTicks),a(e,this.getMinorTickPositions(),i,m({},{skipUnit:n/t.minorUnit},t.minorTicks)),e}}),_(ie,{min:0,max:50,majorTicks:{size:15,align:W,color:p,width:N,visible:!0},minorTicks:{size:10,align:W,color:p,width:N,visible:!0},line:{width:N},labels:{position:W,padding:2},mirror:!1,_alignLines:!1}),oe=c.Class.extend({init:function(e,t){var n=e.options,i=n.min,o=n.max,r=this.options=m({},this.options,t);r.fill=r.color,this.scale=e,r.value=u(r.value)?w(r.value,i,o):i},value:function(e){var t,n,i,o=this.options,r=o.value;return 0===arguments.length?r:(t=this.scale.options,n=t.min,i=t.max,o._oldValue=u(o._oldValue)?o.value:n,o.value=w(e,n,i),void(this.elements&&this.repaint()))}}),_(oe,{color:p}),re=oe.extend({init:function(e,t){oe.fn.init.call(this,e,t),this.options=m({track:{visible:u(t.track)}},this.options)},reflow:function(){var e,t,n,i=this,o=i.options,r=i.scale,a=r.options,s=a.mirror,l=a.vertical,c=r.lineBox(),u=o.track.size||o.size,h=o.size/2,p=d(o.margin),f=l?p[s?"left":"right"]:p[s?"bottom":"top"];f=s?-f:f,l?(n=new k(c.x1+f,c.y1,c.x1+f,c.y2),s?n.x1-=u:n.x2+=u,o.shape!==L&&(t=new k(c.x2+f,c.y1-h,c.x2+f,c.y2+h),e=t)):(n=new k(c.x1,c.y1-f,c.x2,c.y1-f),s?n.y2+=u:n.y1-=u,o.shape!==L&&(t=new k(c.x1-h,c.y1-f,c.x2+h,c.y1-f),e=t)),this.trackBox=n,this.pointerRangeBox=t,this.box=e||n.clone().pad(o.border.width)},getElementOptions:function(){var e=this.options;return{fill:{color:e.color,opacity:e.opacity},stroke:u(e.border)?{color:e.border.width?e.border.color||e.color:"",width:e.border.width,dashType:e.border.dashType,opacity:e.opacity}:null}},_margin:function(){var e=this,t=e.scale,n=e.options,i=t.options,o=i.mirror,r=i.vertical,a=d(n.margin),s=r?a[o?"left":"right"]:a[o?"bottom":"top"];return s}}),_(re,{shape:L,track:{border:{width:1}},color:p,border:{width:1},opacity:1,margin:d(3),animation:{type:L},visible:!0}),ae=D.extend({setup:function(){var e,t,n=this.options,i=n.margin,o=n.from,r=n.to,a=n.vertical,s=a?"x1":"y1";n.mirror===a?(o[s]-=i,r[s]-=i):(o[s]+=i,r[s]+=i),e=this.fromScale=new M(o.x1,o.y1),t=this.toScale=new M(r.x1,r.y1),0!==n.duration&&(n.duration=Math.max(e.distanceTo(t)/n.duration*1e3,1))},step:function(e){var t=y(this.fromScale.x,this.toScale.x,e),n=y(this.fromScale.y,this.toScale.y,e);this.element.transform(F().translate(t,n))}}),_(ae,{easing:U,duration:P}),A.current.register(B,ae),se=M,le=T,ce=re.extend({init:function(e,t){re.fn.init.call(this,e,t),u(this.options.size)||(this.options.size=.6*this.scale.options.majorTicks.size)},pointerShape:function(){var e,t=this,n=t.scale,i=t.options.size,o=i/2,r=n.options.mirror?-1:1;return e=n.options.vertical?[new se(0,0-o),new se(0-r*i,0),new se(0,0+o)]:[new se(0-o,0),new se(0,0+r*i),new se(0+o,0)]},repaint:function(){var e=this,t=e.scale,n=e.options,i=new ae(this.elements,m(n.animation,{vertical:t.options.vertical,mirror:t.options.mirror,margin:this._margin(n.margin),from:t.getSlot(n._oldValue),to:t.getSlot(n.value)}));n.animation.transitions===!1&&(i.options.duration=0),i.setup(),i.play()},render:function(){var e,t,n=this,i=n.scale,o=n.options,r=this.getElementOptions(),a=this.pointerShape(o.value);return o.animation.type=B,e=new le({stroke:r.stroke,fill:r.fill}).moveTo(a[0]).lineTo(a[1]).lineTo(a[2]).close(),t=i.getSlot(o.value),e.transform(F().translate(t.x1,t.y1)),this.elements=e,e}}),de=D.extend({setup:function(){var e=this.options,t=this.axis=e.vertical?h.Y:h.X,n=this.to=e.newPoints[0][t],i=this.from=e.oldPoints[0][t];0!==e.duration&&(e.duration=Math.max(Math.abs(n-i)/e.speed*1e3,1)),this._set(i)},step:function(e){var t=y(this.from,this.to,e);this._set(t)},_set:function(e){var t="set"+this.axis.toUpperCase(),n=this.options.newPoints;n[0][t](e),n[1][t](e)}}),_(de,{easing:U,speed:P}),A.current.register(L,de),ue=S,he=T,pe=re.extend({init:function(e,t){re.fn.init.call(this,e,t),u(this.options.size)||(this.options.size=.3*this.scale.options.majorTicks.size)},pointerShape:function(e){var t,n,i,o=this,r=o.scale,a=o.options,s=r.options,l=s.mirror,c=s.vertical,d=l===c?-1:1,u=a.size*d,p=r.getSlot(r.options.min),f=r.getSlot(e),g=c?h.Y:h.X,m=c?h.X:h.Y,v=this._margin()*d,_=new M;return _[g]=p[g+"1"],_[m]=p[m+"1"],t=new M,t[g]=f[g+"1"],t[m]=f[m+"1"],c?(_.translate(v,0),t.translate(v,0)):(_.translate(0,v),t.translate(0,v)),n=t.clone(),i=_.clone(),c?(n.translate(u,0),i.translate(u,0)):(n.translate(0,u),i.translate(0,u)),[_,t,n,i]},repaint:function(){var e,t=this,n=t.scale,i=t.options,o=this.pointerShape(i.value),r=this.pointerPath,a=this.pointerShape(i._oldValue);r.moveTo(o[0]).lineTo(o[1]).lineTo(o[2]).lineTo(o[3]).close(),e=new de(r,m(i.animation,{reverse:n.options.reverse,vertical:n.options.vertical,oldPoints:[a[1],a[2]],newPoints:[o[1],o[2]]})),i.animation.transitions===!1&&(e.options.duration=0),e.setup(),e.play()},render:function(){var e,t=new ue,n=this.getElementOptions();return this.options.track.visible&&t.append(this.renderTrack()),e=this.pointerPath=new he({stroke:n.stroke,fill:n.fill}),t.append(e),this.elements=t,t},renderTrack:function(){var e=this.options.track,t=e.border||{},n=this.trackBox.clone().pad(t.width||0);return new he.fromRect(n.toRect(),{fill:{color:e.color,opacity:e.opacity},stroke:{color:t.width?t.color||e.color:"",width:t.width,dashType:t.dashType}})}}),fe=60,ge=60,me=S,ve=Z.extend({reflow:function(e){var t,n=this.pointers,i=e.origin.x,o=e.origin.y,r=new k(i,o,i+e.width(),o+e.height());for(this.scale.reflow(r),this._shrinkScaleWidth(r),t=0;t<n.length;t++)n[t].reflow();this.bbox=this._getBox(r),this._alignElements(),this._shrinkElements(),this._buildVisual(),this._draw()},_buildVisual:function(){var e,t,n=new me,i=this.scale.render(),o=this.pointers;for(n.append(this.gaugeArea),n.append(i),e=0;e<o.length;e++)t=o[e],n.append(t.render()),t.value(t.options.value);this._visuals=n},_createModel:function(){var e,t,n,i,o=this,r=this.options,a=this.scale=new ie(r.scale,this.contextService);for(this.pointers=[],e=r.pointer,e=v(e)?e:[e],t=0;t<e.length;t++)n=m({},e[t],{animation:{transitions:r.transitions}}),i=n.shape===z?ce:pe,o.pointers.push(new i(a,n))},_defaultSize:function(){var e=this.options.scale.vertical;return{width:e?fe:O,height:e?H:ge}},_getBox:function(e){var t,n,i=this,o=i.scale,r=i.pointers,a=e.center(),s=r[0].box.clone().wrap(o.box);for(t=0;t<r.length;t++)s.wrap(r[t].box.clone());return o.options.vertical?(n=s.width()/2,s=new k(a.x-n,e.y1,a.x+n,e.y2)):(n=s.height()/2,s=new k(e.x1,a.y-n,e.x2,a.y+n)),s},_alignElements:function(){var e,t,n,i=this,o=this,r=o.scale,a=o.pointers,s=r.box,l=a[0].box.clone().wrap(r.box),c=this.bbox;for(e=0;e<a.length;e++)l.wrap(a[e].box.clone());for(r.options.vertical?(t=c.center().x-l.center().x,r.reflow(new k(s.x1+t,c.y1,s.x2+t,c.y2))):(t=c.center().y-l.center().y,r.reflow(new k(s.x1,s.y1+t,s.x2,s.y2+t))),n=0;n<a.length;n++)a[n].reflow(i.bbox)},_shrinkScaleWidth:function(e){var t,n=this,i=n.scale;i.options.vertical||(t=i.contentBox().width()-e.width(),t>0&&(i.box.shrink(t,0),i.box.alignTo(e,"center"),i.reflow(i.box)))},_shrinkElements:function(){var e,t,n=this,i=this,o=i.scale,r=i.pointers,a=o.box.clone(),s=o.options.vertical?"y":"x",l=r[0].box;for(e=0;e<r.length;e++)l.wrap(r[e].box.clone());for(a[s+1]+=Math.max(a[s+1]-l[s+1],0),a[s+2]-=Math.max(l[s+2]-a[s+2],0),o.reflow(a),t=0;t<r.length;t++)r[t].reflow(n.bbox)}}),_(ve,{transitions:!0,gaugeArea:{background:""},scale:{vertical:!0}}),_e=180,be=C.Arc,we=T,ke=S,ye=b.extend({init:function(e,t){b.fn.init.call(this,0,1,e,t)},initUserOptions:function(e){var t=m({},this.options,e);return t.majorUnit=t.majorUnit||c.autoMajorUnit(t.min,t.max),t.minorUnit=t.minorUnit||t.majorUnit/10,t},initFields:function(){},render:function(e,t){var n=this.renderArc(e,t);this.bbox=n.bbox(),this.labelElements=this.renderLabels(),this.ticks=this.renderTicks(),this.ranges=this.renderRanges()},reflow:function(e){var t=e.center(),n=Math.min(e.height(),e.width())/2;return u(this.bbox)?(this.bbox=this.arc.bbox(),this.radius(this.arc.getRadiusX()),this.repositionRanges(),this.renderLabels(),void 0):this.render(t,n)},slotAngle:function(e){var t,n=this.options,i=n.min,o=n.max,r=n.reverse,a=n.startAngle,s=n.endAngle,l=s-a;return t=r?s-(e-i)/(o-i)*l:(e-i)/(o-i)*l+a,t+_e},hasRanges:function(){var e=this.options.ranges;return e&&e.length},ticksSize:function(){var e=this.options,t=e.majorTicks,n=e.minorTicks,i=0;return t.visible&&(i=t.size),n.visible&&(i=Math.max(n.size,i)),i},renderLabels:function(){var e,t,i,o,r,a,s,l,c,d,h,p,f,g,m,v,_,b,w,y=this,x=this.options,C=this.arc.clone(),S=C.getRadiusX(),T=this.tickAngles(C,x.majorUnit),D=x.rangeSize=x.rangeSize||.1*S,A=new ke,E=.05*S;for(u(x.rangeDistance)?E=x.rangeDistance:x.rangeDistance=E,e=x.labels,t=e.position===W,i=u(this.labelElements),t&&(S-=this.ticksSize(),this.hasRanges()&&!i&&(S-=D+E),C.setRadiusX(S).setRadiusY(S)),o=this.labels,r=o.length,a=e.padding,s=0;s<r;s++)l=o[s],c=l.box.width()/2,d=l.box.height()/2,h=T[s],p=(h-_e)*V,f=C.pointAt(h),g=f.x+Math.cos(p)*(c+a)*(t?1:-1),m=f.y+Math.sin(p)*(d+a)*(t?1:-1),l.reflow(new k(g-c,m-d,g+c,m+d)),v=new M(l.box.x1,l.box.y1),_=void 0,i?(_=y.labelElements.children[s],b=_.bbox().origin,w=_.transform()||F(),w.translate(v.x-b.x,v.y-b.y),_.transform(w)):(_=n(l,x.labels),A.append(_)),y.bbox=I.union(y.bbox,_.bbox());return A},repositionRanges:function(){var e,t,n,i,o,r,a=this.ranges.children;if(a.length>0){for(e=this.options,t=e.rangeDistance,n=e.rangeSize,i=this.getRangeRadius(),this.options.labels.position===W&&(i+=n+t),o=i+n/2,r=0;r<a.length;r++)a[r]._geometry.setRadiusX(o).setRadiusY(o);this.bbox=I.union(this.bbox,this.ranges.bbox())}},renderRanges:function(){var e,t,n,i,o,r,a,s,l,c=this,d=this.rangeSegments(),u=d.length,h=new ke;if(u)for(e=this.options,t=e.rangeSize,n=e.reverse,i=e.rangeDistance,o=this.getRangeRadius(),this.radius(this.radius()-t-i),r=0;r<u;r++)a=d[r],s=c.slotAngle(a[n?"to":"from"]),l=c.slotAngle(a[n?"from":"to"]),l-s!==0&&h.append(c.createRange(s,l,o,a));return h},createRange:function(e,t,n,i){var o=this.options.rangeSize,r=new E.Arc(this.arc.center,{radiusX:n+o/2,radiusY:n+o/2,startAngle:e,endAngle:t});return new be(r,{stroke:{width:o,color:i.color,opacity:i.opacity,lineCap:i.lineCap}})},rangeSegments:function(){var e,t,n,o,r,a,s,c,d=this.options,u=d.ranges||[],h=u.length,p=[];if(h)for(e=d.min,t=d.max,n=d.rangePlaceholderColor,p.push(l(e,t,n)),o=0;o<h;o++)for(r=i(u[o],e,t),a=p.length,s=0;s<a;s++)if(c=p[s],c.from<=r.from&&r.from<=c.to){p.push(l(r.from,r.to,r.color,r.opacity)),c.from<=r.to&&r.to<=c.to&&p.push(l(r.to,c.to,n,r.opacity)),c.to=r.from;break}return p},getRangeRadius:function(){var e,t=this,n=t.arc,i=t.options,o=i.rangeSize,r=i.rangeDistance,a=i.majorTicks.size;return e=i.labels.position===q?n.getRadiusX()-a-r-o:n.getRadiusX()-o},renderArc:function(e,t){var n=this.options,i=this.arc=new E.Arc(e,{radiusX:t,radiusY:t,startAngle:n.startAngle+_e,endAngle:n.endAngle+_e});return i},renderTicks:function(){var e,t,n,i,o=this,r=o.arc,a=o.options,l=r.clone();return this.majorTickAngles=this.tickAngles(r,a.majorUnit),this.majorTicks=s(l,this.majorTickAngles,a.majorUnit,a.majorTicks),e=new ke,e.append(this.majorTicks),t=a.majorTicks.size,n=a.minorTicks.size,this._tickDifference=t-n,a.labels.position===q&&(i=l.getRadiusX(),l.setRadiusX(i-t+n).setRadiusY(i-t+n)),this.minorTickAngles=this.normalizeTickAngles(this.tickAngles(r,a.minorUnit)),this.minorTicks=s(l,this.minorTickAngles,a.minorUnit,a.minorTicks),e.append(this.minorTicks),e},normalizeTickAngles:function(e){var t,n=this.options,i=n.majorUnit/n.minorUnit;for(t=e.length-1;t>=0;t--)t%i===0&&e.splice(t,1);return e},tickAngles:function(e,t){var n,i,o=this.options,r=o.reverse,a=o.max-o.min,s=e.endAngle-e.startAngle,l=a/t,c=e.startAngle,d=s/l;for(r&&(c+=s,d=-d),n=[],i=0;i<l;i++)n.push(x(c,f)),c+=d;return x(c)<=e.endAngle&&n.push(c),n},radius:function(e){return e?(this.arc.setRadiusX(e).setRadiusY(e),this.repositionTicks(this.majorTicks.children,this.majorTickAngles),this.repositionTicks(this.minorTicks.children,this.minorTickAngles,!0),void 0):this.arc.getRadiusX()},repositionTicks:function(e,t,n){var i,o,r,a,s,l=n?this._tickDifference||0:0,c=this.arc,d=c.getRadiusX();for(n&&this.options.labels.position===q&&0!==l&&(c=this.arc.clone(),c.setRadiusX(d-l).setRadiusY(d-l)),i=0;i<e.length;i++)o=c.pointAt(t[i]),r=e[i].segments,a=o.x-r[0].anchor().x,s=o.y-r[0].anchor().y,e[i].transform((new F).translate(a,s))}}),_(ye,{min:0,max:100,majorTicks:{size:15,align:W,color:p,width:N,visible:!0},minorTicks:{size:10,align:W,color:p,width:N,visible:!0},startAngle:-30,endAngle:210,labels:{position:W,padding:2}}),xe=D.extend({init:function(e,t){D.fn.init.call(this,e,t);var n=this.options;n.duration=Math.max(Math.abs(n.newAngle-n.oldAngle)/n.duration*1e3,1)},step:function(e){var t=this.options,n=y(t.oldAngle,t.newAngle,e);this.element.transform(F().rotate(n,t.center))}}),_(xe,{easing:U,duration:R}),A.current.register(j,xe),Ce=.05,Se=C.Circle,Te=S,De=T,Ae=oe.extend({setAngle:function(e){this.elements.transform(F().rotate(e,this.center))},repaint:function(){var e=this,t=e.scale,n=e.options,i=t.slotAngle(n._oldValue),o=t.slotAngle(n.value);n.animation.transitions===!1?this.setAngle(o):new xe(this.elements,m(n.animation,{oldAngle:i,newAngle:o})).play()},render:function(){var e=this,t=e.scale,n=e.options,i=new Te;return n.animation!==!1&&m(n.animation,{startAngle:0,center:t.arc.center,reverse:t.options.reverse}),i.append(this._renderNeedle(),this._renderCap()),this.elements=i,this.setAngle(V),i},reflow:function(e){var t=this.center=e.center,n=w(this.options.length||1,.1,1.5),i=this.radius=e.getRadiusX()*n,o=this.capSize=Math.round(i*this.options.cap.size);this.bbox=I.fromPoints(new M(t.x-o,t.y-o),new M(t.x+o,t.y+o))},_renderNeedle:function(){var e=this.scale.options.minorTicks.size,t=this.center,n=this.options.color,i=new De({fill:{color:n},stroke:{color:n,width:N}});return i.moveTo(t.x+this.radius-e,t.y).lineTo(t.x,t.y-this.capSize/2).lineTo(t.x,t.y+this.capSize/2).close(),i},_renderCap:function(){var e=this.options,t=e.cap.color||e.color,n=new E.Circle(this.center,this.capSize),i=new Se(n,{fill:{color:t},stroke:{color:t}});return i}}),_(Ae,{cap:{size:Ce},arrow:{width:16,height:14},animation:{type:j,duration:R}}),Ee=S,Ie=Z.extend({reflow:function(e){var t,n=this,i=this.pointers;for(this.scale.reflow(e),this._initialPlotArea=this.scale.bbox,t=0;t<i.length;t++)i[t].reflow(n.scale.arc),n._initialPlotArea=I.union(n._initialPlotArea,i[t].bbox);this.fitScale(e),this.alignScale(e),this._buildVisual(this.gaugeArea,i,this.scale),this._draw()},_buildVisual:function(e,t,n){var i=this._visuals=new Ee;i.append(e),i.append(n.ticks),i.append(n.ranges),this._buildPointers(t),i.append(n.labelElements)},_buildPointers:function(e){var t,n,i=this;for(t=0;t<e.length;t++)n=e[t],n.render(),i._visuals.append(n.elements),n.value(n.options.value)},fitScale:function(e){for(var t,n,i,o,r,a=this,s=this.scale.arc,l=this._initialPlotArea,c=Math.abs(this.getDiff(l,e)),d=x(c,f),u=x(-c,f),h=0,p=0;!(!(p++<100)||(h=r===i?h+1:0,h>5)||d!==o&&(t=a.getPlotBox(d,e,s),0<=t&&t<=2)||u!==o&&(i=a.getPlotBox(u,e,s),0<=i&&i<=2)||(o=t>0&&i>0?2*d:t<0&&i<0?2*u:x((d+u)/2||1,f),n=a.getPlotBox(o,e,s),0<=n&&n<=2));)r=i,n>0?(u=o,i=n):(d=o,t=n)},getPlotBox:function(e,t,n){var i,o=this,r=this.scale,a=this.pointers,s=n.getRadiusX(),l=n.clone();for(l.setRadiusX(s+e).setRadiusY(s+e),r.arc=l,r.reflow(t),this.plotBbox=r.bbox,i=0;i<a.length;i++)a[i].reflow(l),o.plotBbox=I.union(o.plotBbox,a[i].bbox);return this.getDiff(this.plotBbox,t)},getDiff:function(e,t){return Math.min(t.width()-e.width(),t.height()-e.height())},alignScale:function(e){var t,n=this,i=this.plotBbox.center(),o=e.center(),r=i.x-o.x,a=i.y-o.y,s=this,l=s.scale,c=s.pointers;for(l.arc.center.x-=r,l.arc.center.y-=a,l.reflow(e),t=0;t<c.length;t++)c[t].reflow(l.arc),n.plotBbox=I.union(l.bbox,c[t].bbox)},_createModel:function(){var e,t,n,i=this,o=this.options,r=o.pointer,a=this.scale=new ye(o.scale,this.contextService);for(this.pointers=[],e=v(r)?r:[r],t=0;t<e.length;t++)n=new Ae(a,m({},e[t],{animation:{transitions:o.transitions}})),i.pointers.push(n)}}),_(Ie,{transitions:!0,gaugeArea:{background:""}}),Me=ye.extend({rangeSegments:function(){var e=this.options,t=e.min,n=e.max,i=e.rangePlaceholderColor,o=e.rangeLineCap;return[{from:t,to:n,color:i,lineCap:o}]},hasRanges:function(){return!0},placeholderRangeAngle:function(e){var t=this.ranges.children[0].geometry();this.options.reverse?t.setEndAngle(e):t.setStartAngle(e)},addRange:function(e,t,n){var i=this.options.reverse,o=this.slotAngle(i?t:e),r=this.slotAngle(i?e:t),a=this.createRange(o,r,this.getRangeRadius(),n);return this.ranges.append(a),a}}),_(Me,{min:0,max:100,majorTicks:{visible:!1},minorTicks:{visible:!1},labels:{visible:!1},startAngle:0,endAngle:180,rangeLineCap:"round"}),Fe=800,Re=D.extend({init:function(e,t){var n,i,o,r;D.fn.init.call(this,e,t),n=this.options,i=Math.abs(n.newAngle-n.oldAngle)/n.duration*1e3,n.duration=w(i,R,Fe),o=e.elements.options.get("stroke.color"),r=e.currentColor(),o!==r&&(this.startColor=new kendo.Color(o),this.color=new kendo.Color(r))},step:function(e){var t,n,i,o=this,r=o.options,a=o.startColor,s=o.color,l=y(r.oldAngle,r.newAngle,e);this.element.angle(l),s&&(t=x(y(a.r,s.r,e)),n=x(y(a.g,s.g,e)),i=x(y(a.b,s.b,e)),this.element.stroke(new kendo.Color(t,n,i).toHex()))}}),_(Re,{easing:U,duration:R}),A.current.register(G,Re),Pe=oe.extend({repaint:function(){var e=this,t=e.scale,n=e.options,i=t.slotAngle(n._oldValue),o=t.slotAngle(n.value);this.animation&&this.animation.abort(),n.animation.transitions===!1?(this.angle(o),this.stroke(this.currentColor())):(this.animation=new Re(this,m(n.animation,{oldAngle:i,newAngle:o})),this.animation.play())},angle:function(e){var t=this.elements.geometry();this.scale.options.reverse?t.setStartAngle(e):t.setEndAngle(e),this.scale.placeholderRangeAngle(e)},stroke:function(e){this.elements.stroke(e)},render:function(){var e,t,n;this.elements||(e=this,t=e.scale,n=e.options,n.animation!==!1&&m(n.animation,{startAngle:0,center:t.arc.center,reverse:t.options.reverse}),this.elements=t.addRange(t.options.min,this.options.value,{color:this.currentColor(),opacity:n.opacity,lineCap:t.options.rangeLineCap}))},currentColor:function(){var e,t,n,i,o,r=this.scale.options,a=r.min,s=r.max,l=this.options,d=l.colors,u=l.color,h=l.value,p=c.isNumber(h)?h:a;if(d)for(e=0;e<d.length;e++)if(t=d[e],n=t.color,i=t.from,void 0===i&&(i=a),o=t.to,void 0===o&&(o=s),i<=p&&p<=o)return n;return u},reflow:function(){this.render(),this.bbox=this.elements.bbox()}}),_(Pe,{animation:{type:G,duration:R}}),ze=Ie.extend({_initTheme:function(e){Ie.fn._initTheme.call(this,e),this.options.color=this.options.color||(this.theme.pointer||{}).color},_createModel:function(){var e=this.options,t=this.scale=new Me(e.scale,this.contextService),n=new Pe(t,m({},{colors:e.colors,color:e.color,value:e.value,opacity:e.opacity,animation:{transitions:e.transitions}}));this.pointers=[n]},_buildPointers:function(e){var t,n;for(t=0;t<e.length;t++)n=e[t],n.render(),n.value(n.options.value)},_setValueOptions:function(e){this.options.value=e},currentColor:function(){var e=this.pointers[0];if(e)return e.currentColor()},centerLabelPosition:function(e,t){var n,i,o,r,a=this.getSize(),s=this.scale.arc.center,l=s.x-e/2,c=s.y-t/2;return e<a.width&&(n=l+e,l=Math.max(l,0),n>a.width&&(l-=n-a.width)),t<a.height&&(i=this.scale.bbox,o=i.bottomRight().y,r=c+t,c=Math.max(c,i.origin.y),r>o&&(c-=r-o)),{left:l,top:c}}}),kendo.deepExtend(kendo.dataviz,{Gauge:Z,LinearGauge:ve,LinearPointer:re,ArrowLinearPointer:ce,BarLinearPointer:pe,LinearScale:ie,RadialGauge:Ie,RadialPointer:Ae,RadialScale:ye,ArcGauge:ze,RangePointer:Pe,ArcScale:Me})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/gauge/main.min",["dataviz/gauge/kendo-gauges.min"],e)}(function(){return function(e){function t(e){var t=u.ui.themes||{},n=e.theme||"",i=n.toLowerCase();return u.SASS_THEMES.indexOf(i)!=-1?u.autoTheme().gauge:(t[n]||t[i]||{}).gauge}function n(e){m.fn[e]=function(){return this._instance[e].apply(this._instance,arguments)}}function i(e){s.fn[e]=function(t){var n=this,i=g[e];return n._centerElement?g.drawDOM(n.element).then(function(e){return i(e,t)}):i(n.exportVisual(),t)}}var o,r,a,s,l,c=window.kendo,d=c.ui.Widget,u=c.dataviz,h=u.LinearGauge,p=u.RadialGauge,f=u.ArcGauge,g=c.drawing,m=d.extend({init:function(t,n){c.destroy(t),e(t).empty(),d.fn.init.call(this,t),this.options=c.deepExtend(this.options,n),this.wrapper=this.element,this._createInstance(),this.element.addClass("k-gauge"),c.notify(this,u.ui)},options:{theme:"default",renderAs:"",pointer:{},scale:{},gaugeArea:{background:""},transitions:!0},setOptions:function(e){this._instance.setOptions(e,t(e)),this._copyFields()},redraw:function(){this._instance.redraw(),this._copyFields()},destroy:function(){d.fn.destroy.call(this),this._instance.destroy()},_createInstance:function(){var e=this._gaugeType();this._instance=new e(this.element[0],this.options,t(this.options)),this._copyFields()},_copyFields:function(){this._originalOptions=this._instance._originalOptions,this.options=this._instance.options,this.surface=this._instance.surface,this.bbox=this._instance.bbox,this.gaugeArea=this._instance.gaugeArea,this.pointers=this._instance.pointers,this.scale=this._instance.scale},_resize:function(){this._instance.resize()}}),v=["getSize","value","allValues","exportVisual"];for(o=0;o<v.length;o++)n(v[o]);for(u.ExportMixin.extend(m.fn),r=m.extend({options:{name:"RadialGauge"},_gaugeType:function(){return p}}),a=m.extend({options:{name:"LinearGauge",scale:{vertical:!0}},_gaugeType:function(){return h}}),s=m.extend({init:function(e,t){m.fn.init.call(this,e,t),this.element.css("position","relative"),this.element.addClass("k-arcgauge"),this._centerTemplate()},options:{name:"ArcGauge"},setOptions:function(e){m.fn.setOptions.call(this,e),this._centerTemplate()},redraw:function(){m.fn.redraw.call(this),this._centerTemplate()},value:function(e){var t=this._instance;return 0===arguments.length?t.value():(t.value(e),void this._centerTemplate())},destroy:function(){m.fn.destroy.call(this),delete this._centerElement},exportVisual:function(){return!this._centerElement&&m.fn.exportVisual.call(this)},_resize:function(){this._instance.resize(),this._centerTemplate()},_centerTemplate:function(){var e,t,n,i;this.options.centerTemplate?(e=c.template(this.options.centerTemplate),t=this._instance,n=this._getCenterElement(),n.html(e({color:t.currentColor(),value:t.value()})),i=t.centerLabelPosition(n.width(),n.height()),n.css(i)):this._centerElement&&(this._centerElement.remove(),this._centerElement=null)},_getCenterElement:function(){var t=this._centerElement;return t||(t=this._centerElement=e("<div></div>").addClass("k-arcgauge-label"),this.element.append(t)),t},_gaugeType:function(){return f}}),l=["exportSVG","exportImage","exportPDF"],o=0;o<l.length;o++)i(l[o]);u.ui.plugin(a),u.ui.plugin(r),u.ui.plugin(s),c.deepExtend(u,{Gauge:m,LinearGauge:a,RadialGauge:r,ArcGauge:s})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.gauge.min",["dataviz/gauge/main.min","kendo.dataviz.themes.min"],e)}(function(){return window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.barcode.min",["kendo.dataviz.core.min","kendo.drawing.min"],e)}(function(){return function(e,t){function n(e,t,n){return e.substring(t,t+n)}var i,o,r,a,s,l,c=window.kendo,d=c.ui.Widget,u=e.extend,h=c.deepExtend,p=e.inArray,f=e.isPlainObject,g=c.drawing,m=c.geometry,v=c.drawing.util,_=v.defined,b=c.dataviz,w=b.Box2D,k=b.TextBox,y=300,x=100,C=10,S=/^\d+$/,T=/^[a-z0-9]+$/i,D="Character '{0}' is not valid for symbology {1}",A=c.Class.extend({init:function(e){this.setOptions(e)},setOptions:function(e){var t=this;t.options=u({},t.options,e),t.quietZoneLength=t.options.addQuietZone?2*t.options.quietZoneLength:0},encode:function(e,t,n){var i=this;return _(e)&&(e+=""),i.initValue(e,t,n),i.options.addQuietZone&&i.addQuietZone(),i.addData(),i.options.addQuietZone&&i.addQuietZone(),{baseUnit:i.baseUnit,pattern:i.pattern}},options:{quietZoneLength:C,addQuietZone:!0,addCheckSum:!0},initValue:function(){},addQuietZone:function(){this.pattern.push(this.options.quietZoneLength||C)},addData:function(){},invalidCharacterError:function(e){throw Error(c.format(D,e,this.name))}}),E={},I=A.extend({minBaseUnitLength:.7,addData:function(){var e,t=this,n=t.value;for(t.addStart(),e=0;e<n.length;e++)t.addCharacter(n.charAt(e));t.options.addCheckSum&&t.pushCheckSum(),t.addStop(),t.prepareValues()},addCharacter:function(e){var t=this,n=t.characterMap[e];n||t.invalidCharacterError(e),t.addBase(n)},addBase:function(){}}),M={addCharacter:function(e){var t=this;t.characterMap[e]?t.addBase(t.characterMap[e]):e.charCodeAt(0)>127?t.invalidCharacterError(e):t.addExtended(e.charCodeAt(0))},addExtended:function(e){var n,i,o,r=this;for(i=0;i<r.extendedMappings.length;i++)if(n=r.extendedMappings[i].call(r,e)){for(o=0;o<n.length;o++)r.addBase(n[o]);return r.dataLength+=n.length-1,t}},extendedMappings:[function(e){if(97<=e&&e<=122){var t=this;return[t.characterMap[t.shiftCharacters[0]],t.characterMap[String.fromCharCode(e-32)]]}},function(e){if(33<=e&&e<=58){var t=this;return[t.characterMap[t.shiftCharacters[1]],t.characterMap[String.fromCharCode(e+32)]]}},function(e){if(1<=e&&e<=26){var t=this;return[t.characterMap[t.shiftCharacters[2]],t.characterMap[String.fromCharCode(e+64)]]}},function(e){var t,n,i,o=this;if(o.specialAsciiCodes[e])for(t=[],i=0;i<o.specialAsciiCodes[e].length;i++)t.push(o.characterMap[o.shiftCharacters[3]]),t.push(o.characterMap[o.specialAsciiCodes[e][i]]);else n=6*Math.floor(e/32)+(e-27)%32+64,t=[o.characterMap[o.shiftCharacters[3]],o.characterMap[String.fromCharCode(n)]];return t}],specialAsciiCodes:{0:["U"],64:["V"],96:["W"],127:["T","X","Y","Z"]},shiftValuesAsciiCodes:{39:36,40:47,41:43,42:37},characterMap:{"+":!1,"/":!1,$:!1,"%":!1},shiftCharacters:["SHIFT0","SHIFT1","SHIFT2","SHIFT3"]};E.code39=I.extend({name:"Code 39",checkSumMod:43,minRatio:2.5,maxRatio:3,gapWidth:1,splitCharacter:"|",initValue:function(e,t,n){var i=this;i.width=t,i.height=n,i.value=e,i.dataLength=e.length,i.pattern=[],i.patternString=""},prepareValues:function(){var e,t,n=this,i=n.minBaseUnitLength,o=n.maxRatio,r=n.minRatio,a=Math.max(.15*n.width,24);if(n.height<a)throw Error("Insufficient Height. The minimum height for value: "+n.value+" is: "+a);for(;(e=n.getBaseUnit(o))<i&&o>r;)o=parseFloat((o-.1).toFixed(1));if(e<i)throw t=Math.ceil(n.getBaseWidth(r)*i),Error("Insufficient width. The minimum width for value: "+n.value+" is: "+t);n.ratio=o,n.baseUnit=e,n.patternString=n.patternString.substring(0,n.patternString.length-1),n.pattern=n.pattern.concat(n.patternString.replace(/ratio/g,o).split(n.splitCharacter))},getBaseUnit:function(e){return this.width/this.getBaseWidth(e)},getBaseWidth:function(e){var t=this,n=3*(e+2);return t.quietZoneLength+n*(t.dataLength+2)+t.gapWidth*(t.dataLength+1)},addStart:function(){var e=this;e.addPattern(e.characterMap.START.pattern),e.addCharacterGap()},addBase:function(e){this.addPattern(e.pattern),this.addCharacterGap()},addStop:function(){this.addPattern(this.characterMap.START.pattern)},addPattern:function(e){for(var t=0;t<e.length;t++)this.patternString+=this.patternMappings[e.charAt(t)]},addCharacterGap:function(){var e=this;e.patternString+=e.gapWidth+e.splitCharacter},patternMappings:{b:"1|",w:"1|",B:"ratio|",W:"ratio|"},characterMap:{0:{pattern:"bwbWBwBwb",value:0},1:{pattern:"BwbWbwbwB",value:1},2:{pattern:"bwBWbwbwB",value:2},3:{pattern:"BwBWbwbwb",value:3},4:{pattern:"bwbWBwbwB",value:4},5:{pattern:"BwbWBwbwb",value:5},6:{pattern:"bwBWBwbwb",value:6},7:{pattern:"bwbWbwBwB",value:7},8:{pattern:"BwbWbwBwb",value:8},9:{pattern:"bwBWbwBwb",value:9},A:{pattern:"BwbwbWbwB",value:10},B:{pattern:"bwBwbWbwB",value:11},C:{pattern:"BwBwbWbwb",value:12},D:{pattern:"bwbwBWbwB",value:13},E:{pattern:"BwbwBWbwb",value:14},F:{pattern:"bwBwBWbwb",value:15},G:{pattern:"bwbwbWBwB",value:16},H:{pattern:"BwbwbWBwb",value:17},I:{pattern:"bwBwbWBwb",value:18},J:{pattern:"bwbwBWBwb",value:19},K:{pattern:"BwbwbwbWB",value:20},L:{pattern:"bwBwbwbWB",value:21},M:{pattern:"BwBwbwbWb",value:22},N:{pattern:"bwbwBwbWB",value:23},O:{pattern:"BwbwBwbWb",value:24},P:{pattern:"bwBwBwbWb",value:25},Q:{pattern:"bwbwbwBWB",value:26},R:{pattern:"BwbwbwBWb",value:27},S:{pattern:"bwBwbwBWb",value:28},T:{pattern:"bwbwBwBWb",value:29},U:{pattern:"BWbwbwbwB",value:30},V:{pattern:"bWBwbwbwB",value:31},W:{pattern:"BWBwbwbwb",value:32},X:{pattern:"bWbwBwbwB",value:33},Y:{pattern:"BWbwBwbwb",value:34},Z:{pattern:"bWBwBwbwb",value:35},"-":{pattern:"bWbwbwBwB",value:36},".":{pattern:"BWbwbwBwb",value:37}," ":{pattern:"bWBwbwBwb",value:38},$:{pattern:"bWbWbWbwb",value:39},"/":{pattern:"bWbWbwbWb",value:40},"+":{pattern:"bWbwbWbWb",value:41},"%":{pattern:"bwbWbWbWb",value:42},START:{pattern:"bWbwBwBwb"}},options:{addCheckSum:!1}}),E.code39extended=E.code39.extend(h({},M,{name:"Code 39 extended",characterMap:{SHIFT0:{pattern:"bWbwbWbWb",value:41},SHIFT1:{pattern:"bWbWbwbWb",value:40},SHIFT2:{pattern:"bWbWbWbwb",value:39},SHIFT3:{pattern:"bwbWbWbWb",value:42}}})),E.code93=I.extend({name:"Code 93",cCheckSumTotal:20,kCheckSumTotal:15,checkSumMod:47,initValue:function(e,t,n){var i=this;i.value=e,i.width=t,i.height=n,i.pattern=[],i.values=[],i.dataLength=e.length},prepareValues:function(){var e=this,t=Math.max(.15*e.width,24);if(e.height<t)throw Error("Insufficient Height");if(e.setBaseUnit(),e.baseUnit<e.minBaseUnitLength)throw Error("Insufficient Width")},setBaseUnit:function(){var e=this,t=2;e.baseUnit=e.width/(9*(e.dataLength+2+t)+e.quietZoneLength+1)},addStart:function(){var e=this.characterMap.START.pattern;this.addPattern(e)},addStop:function(){var e=this;e.addStart(),e.pattern.push(e.characterMap.TERMINATION_BAR)},addBase:function(e){this.addPattern(e.pattern),this.values.push(e.value)},pushCheckSum:function(){var e,t,n=this,i=n._getCheckValues();for(n.checksum=i.join(""),t=0;t<i.length;t++)e=n.characterMap[n._findCharacterByValue(i[t])],n.addPattern(e.pattern)},_getCheckValues:function(){var e,t,n,i=this,o=i.values,r=o.length,a=0;for(n=r-1;n>=0;n--)a+=i.weightedValue(o[n],r-n,i.cCheckSumTotal);for(e=a%i.checkSumMod,a=i.weightedValue(e,1,i.kCheckSumTotal),n=r-1;n>=0;n--)a+=i.weightedValue(o[n],r-n+1,i.kCheckSumTotal);return t=a%i.checkSumMod,[e,t]},_findCharacterByValue:function(e){for(var t in this.characterMap)if(this.characterMap[t].value===e)return t},weightedValue:function(e,t,n){return(t%n||n)*e},addPattern:function(e){var t,n;for(n=0;n<e.length;n++)t=parseInt(e.charAt(n),10),this.pattern.push(t)},characterMap:{0:{pattern:"131112",value:0},1:{pattern:"111213",value:1},2:{pattern:"111312",value:2},3:{pattern:"111411",value:3},4:{pattern:"121113",value:4},5:{pattern:"121212",value:5},6:{pattern:"121311",value:6},7:{pattern:"111114",value:7},8:{pattern:"131211",value:8},9:{pattern:"141111",value:9},A:{pattern:"211113",value:10},B:{pattern:"211212",value:11},C:{pattern:"211311",value:12},D:{pattern:"221112",value:13},E:{pattern:"221211",value:14},F:{pattern:"231111",value:15},G:{pattern:"112113",value:16},H:{pattern:"112212",value:17},I:{pattern:"112311",value:18},J:{pattern:"122112",value:19},K:{pattern:"132111",value:20},L:{pattern:"111123",value:21},M:{pattern:"111222",value:22},N:{pattern:"111321",value:23},O:{pattern:"121122",value:24},P:{pattern:"131121",value:25},Q:{pattern:"212112",value:26},R:{pattern:"212211",value:27},S:{pattern:"211122",value:28},T:{pattern:"211221",value:29},U:{pattern:"221121",value:30},V:{pattern:"222111",value:31}, +W:{pattern:"112122",value:32},X:{pattern:"112221",value:33},Y:{pattern:"122121",value:34},Z:{pattern:"123111",value:35},"-":{pattern:"121131",value:36},".":{pattern:"311112",value:37}," ":{pattern:"311211",value:38},$:{pattern:"321111",value:39},"/":{pattern:"112131",value:40},"+":{pattern:"113121",value:41},"%":{pattern:"211131",value:42},SHIFT0:{pattern:"122211",value:46},SHIFT1:{pattern:"311121",value:45},SHIFT2:{pattern:"121221",value:43},SHIFT3:{pattern:"312111",value:44},START:{pattern:"111141"},TERMINATION_BAR:"1"}}),E.code93extended=E.code93.extend(h({},M,{name:"Code 93 extended",pushCheckSum:function(){var e,t,n=this,i=n._getCheckValues();for(n.checksum=i.join(""),t=0;t<i.length;t++)e=i[t],n.shiftValuesAsciiCodes[e]?n.addExtended(n.shiftValuesAsciiCodes[e]):n.addPattern(n.characterMap[n._findCharacterByValue(e)].pattern)}})),i=c.Class.extend({init:function(e){this.encoding=e},addStart:function(){},is:function(){},move:function(){},pushState:function(){}}),o=i.extend({FNC4:"FNC4",init:function(e,t){var n=this;n.encoding=e,n.states=t,n._initMoves(t)},addStart:function(){this.encoding.addPattern(this.START)},is:function(e,t){var n=e.charCodeAt(t);return this.isCode(n)},move:function(e){for(var t=this,n=0;!t._moves[n].call(t,e)&&n<t._moves.length;)n++},pushState:function(e){var t,n,i=this,o=i.states,r=e.value,a=r.length;for(p("C",o)>=0&&(n=r.substr(e.index).match(/\d{4,}/g),n&&(a=r.indexOf(n[0],e.index)));(t=e.value.charCodeAt(e.index))>=0&&i.isCode(t)&&e.index<a;)i.encoding.addPattern(i.getValue(t)),e.index++},_initMoves:function(e){var t=this;t._moves=[],p(t.FNC4,e)>=0&&t._moves.push(t._moveFNC),p(t.shiftKey,e)>=0&&t._moves.push(t._shiftState),t._moves.push(t._moveState)},_moveFNC:function(e){if(e.fnc)return e.fnc=!1,e.previousState==this.key},_shiftState:function(e){var t=this;if(e.previousState==t.shiftKey&&(e.index+1>=e.value.length||t.encoding[t.shiftKey].is(e.value,e.index+1)))return t.encoding.addPattern(t.SHIFT),e.shifted=!0,!0},_moveState:function(){return this.encoding.addPattern(this.MOVE),!0},SHIFT:98}),r={},r.A=o.extend({key:"A",shiftKey:"B",isCode:function(e){return 0<=e&&e<96},getValue:function(e){return e<32?e+64:e-32},MOVE:101,START:103}),r.B=o.extend({key:"B",shiftKey:"A",isCode:function(e){return 32<=e&&e<128},getValue:function(e){return e-32},MOVE:100,START:104}),r.C=i.extend({key:"C",addStart:function(){this.encoding.addPattern(this.START)},is:function(e,t){var i=n(e,t,4);return(t+4<=e.length||2==e.length)&&S.test(i)},move:function(){this.encoding.addPattern(this.MOVE)},pushState:function(e){for(var t;(t=n(e.value,e.index,2))&&S.test(t)&&2==t.length;)this.encoding.addPattern(parseInt(t,10)),e.index+=2},getValue:function(e){return e},MOVE:99,START:105}),r.FNC4=i.extend({key:"FNC4",dependentStates:["A","B"],init:function(e,t){this.encoding=e,this._initSubStates(t)},addStart:function(e){var t=e.value.charCodeAt(0)-128,n=this._getSubState(t);this.encoding[n].addStart()},is:function(e,t){var n=e.charCodeAt(t);return this.isCode(n)},isCode:function(e){return 128<=e&&e<256},pushState:function(e){var t,n=this,i=n._initSubState(e),o=n.encoding,r=i.value.length;if(e.index+=r,r<3)for(;i.index<r;i.index++)t=i.value.charCodeAt(i.index),i.state=n._getSubState(t),i.previousState!=i.state&&(i.previousState=i.state,o[i.state].move(i)),o.addPattern(o[i.state].MOVE),o.addPattern(o[i.state].getValue(t));else i.state!=i.previousState&&o[i.state].move(i),n._pushStart(i),o.pushData(i,n.subStates),e.index<e.value.length&&n._pushStart(i);e.fnc=!0,e.state=i.state},_pushStart:function(e){var t=this;t.encoding.addPattern(t.encoding[e.state].MOVE),t.encoding.addPattern(t.encoding[e.state].MOVE)},_initSubState:function(e){var t=this,n={value:t._getAll(e.value,e.index),index:0};return n.state=t._getSubState(n.value.charCodeAt(0)),n.previousState=e.previousState==t.key?n.state:e.previousState,n},_initSubStates:function(e){var t,n=this;for(n.subStates=[],t=0;t<e.length;t++)p(e[t],n.dependentStates)>=0&&n.subStates.push(e[t])},_getSubState:function(e){var t,n=this;for(t=0;t<n.subStates.length;t++)if(n.encoding[n.subStates[t]].isCode(e))return n.subStates[t]},_getAll:function(e,t){for(var n,i="";(n=e.charCodeAt(t++))&&this.isCode(n);)i+=String.fromCharCode(n-128);return i}}),r.FNC1=i.extend({key:"FNC1",startState:"C",dependentStates:["C","B"],startAI:"(",endAI:")",init:function(e,t){this.encoding=e,this.states=t},addStart:function(){this.encoding[this.startState].addStart()},is:function(){return p(this.key,this.states)>=0},pushState:function(e){var t,n,i,o=this,r=o.encoding,a=e.value.replace(/\s/g,""),s=RegExp("["+o.startAI+o.endAI+"]","g"),l=e.index,c={state:o.startState};for(r.addPattern(o.START);;){if(c.index=0,i=a.charAt(l)===o.startAI?2:0,t=i>0?o.getBySeparator(a,l):o.getByLength(a,l),t.ai.length)n=l+i+t.id.length+t.ai.length;else if(n=a.indexOf(o.startAI,l+1),n<0){if(l+t.ai.max+t.id.length+i<a.length)throw Error("Separators are required after variable length identifiers");n=a.length}if(c.value=a.substring(l,n).replace(s,""),o.validate(t,c.value),r.pushData(c,o.dependentStates),n>=a.length)break;l=n,c.state!=o.startState&&(r[o.startState].move(c),c.state=o.startState),t.ai.length||r.addPattern(o.START)}e.index=e.value.length},validate:function(e,t){var n=t.substr(e.id.length),i=e.ai;if(!i.type&&!S.test(n))throw Error("Application identifier "+e.id+" is numeric only but contains non numeric character(s).");if("alphanumeric"==i.type&&!T.test(n))throw Error("Application identifier "+e.id+" is alphanumeric only but contains non alphanumeric character(s).");if(i.length&&i.length!==n.length)throw Error("Application identifier "+e.id+" must be "+i.length+" characters long.");if(i.min&&i.min>n.length)throw Error("Application identifier "+e.id+" must be at least "+i.min+" characters long.");if(i.max&&i.max<n.length)throw Error("Application identifier "+e.id+" must be at most "+i.max+" characters long.")},getByLength:function(e,t){var i,o,r,a=this;for(r=2;r<=4;r++)if(i=n(e,t,r),o=a.getAI(i)||a.getAI(i.substring(0,i.length-1)))return{id:i,ai:o};a.unsupportedAIError(i)},unsupportedAIError:function(e){throw Error(c.format("'{0}' is not a supported Application Identifier"),e)},getBySeparator:function(e,t){var n=this,i=e.indexOf(n.startAI,t),o=e.indexOf(n.endAI,i),r=e.substring(i+1,o),a=n.getAI(r)||n.getAI(r.substr(r.length-1));return a||n.unsupportedAIError(r),{ai:a,id:r}},getAI:function(e){var t,n,i,o=this.applicationIdentifiers,r=o.multiKey;if(o[e])return o[e];for(t=0;t<r.length;t++){if(r[t].ids&&p(e,r[t].ids)>=0)return r[t].type;if(r[t].ranges)for(n=r[t].ranges,i=0;i<n.length;i++)if(n[i][0]<=e&&e<=n[i][1])return r[t].type}},applicationIdentifiers:{22:{max:29,type:"alphanumeric"},402:{length:17},7004:{max:4,type:"alphanumeric"},242:{max:6,type:"alphanumeric"},8020:{max:25,type:"alphanumeric"},703:{min:3,max:30,type:"alphanumeric"},8008:{min:8,max:12,type:"alphanumeric"},253:{min:13,max:17,type:"alphanumeric"},8003:{min:14,max:30,type:"alphanumeric"},multiKey:[{ids:["15","17","8005","8100"],ranges:[[11,13],[310,316],[320,336],[340,369]],type:{length:6}},{ids:["240","241","250","251","400","401","403","7002","8004","8007","8110"],ranges:[[-9]],type:{max:30,type:"alphanumeric"}},{ids:["7001"],ranges:[[410,414]],type:{length:13}},{ids:["10","21","254","420","8002"],type:{max:20,type:"alphanumeric"}},{ids:["00","8006","8017","8018"],type:{length:18}},{ids:["01","02","8001"],type:{length:14}},{ids:["422"],ranges:[[424,426]],type:{length:3}},{ids:["20","8102"],type:{length:2}},{ids:["30","37"],type:{max:8,type:"alphanumeric"}},{ids:["390","392"],type:{max:15,type:"alphanumeric"}},{ids:["421","423"],type:{min:3,max:15,type:"alphanumeric"}},{ids:["391","393"],type:{min:3,max:18,type:"alphanumeric"}},{ids:["7003","8101"],type:{length:10}}]},START:102}),a=A.extend({init:function(e){A.fn.init.call(this,e),this._initStates()},_initStates:function(){var e,t=this;for(e=0;e<t.states.length;e++)t[t.states[e]]=new r[t.states[e]](t,t.states)},initValue:function(e,t,n){var i=this;i.pattern=[],i.value=e,i.width=t,i.height=n,i.checkSum=0,i.totalUnits=0,i.index=0,i.position=1},addData:function(){var e=this,t={value:e.value,index:0,state:""};0!==e.value.length&&(t.state=t.previousState=e.getNextState(t,e.states),e.addStart(t),e.pushData(t,e.states),e.addCheckSum(),e.addStop(),e.setBaseUnit())},pushData:function(e,t){for(var n,i=this;;){if(i[e.state].pushState(e),e.index>=e.value.length)break;e.shifted?(n=e.state,e.state=e.previousState,e.previousState=n,e.shifted=!1):(e.previousState=e.state,e.state=i.getNextState(e,t),i[e.state].move(e))}},addStart:function(e){this[e.state].addStart(e),this.position=1},addCheckSum:function(){var e=this;e.checksum=e.checkSum%103,e.addPattern(e.checksum)},addStop:function(){this.addPattern(this.STOP)},setBaseUnit:function(){var e=this;e.baseUnit=e.width/(e.totalUnits+e.quietZoneLength)},addPattern:function(e){var t,n,i=this,o=""+i.characterMap[e];for(n=0;n<o.length;n++)t=parseInt(o.charAt(n),10),i.pattern.push(t),i.totalUnits+=t;i.checkSum+=e*i.position++},getNextState:function(e,t){for(var n=0;n<t.length;n++)if(this[t[n]].is(e.value,e.index))return t[n];this.invalidCharacterError(e.value.charAt(e.index))},characterMap:[212222,222122,222221,121223,121322,131222,122213,122312,132212,221213,221312,231212,112232,122132,122231,113222,123122,123221,223211,221132,221231,213212,223112,312131,311222,321122,321221,312212,322112,322211,212123,212321,232121,111323,131123,131321,112313,132113,132311,211313,231113,231311,112133,112331,132131,113123,113321,133121,313121,211331,231131,213113,213311,213131,311123,311321,331121,312113,312311,332111,314111,221411,431111,111224,111422,121124,121421,141122,141221,112214,112412,122114,122411,142112,142211,241211,221114,413111,241112,134111,111242,121142,121241,114212,124112,124211,411212,421112,421211,212141,214121,412121,111143,111341,131141,114113,114311,411113,411311,113141,114131,311141,411131,211412,211214,211232,2331112],STOP:106}),E.code128a=a.extend({name:"Code 128 A",states:["A"]}),E.code128b=a.extend({name:"Code 128 B",states:["B"]}),E.code128c=a.extend({name:"Code 128 C",states:["C"]}),E.code128=a.extend({name:"Code 128",states:["C","B","A","FNC4"]}),E["gs1-128"]=a.extend({name:"Code GS1-128",states:["FNC1","C","B"]}),s=A.extend({initValue:function(e,t){var n=this;n.pattern=[],n.value=e,n.checkSumLength=0,n.width=t},setBaseUnit:function(){var e=this,t=7;e.baseUnit=e.width/(12*(e.value.length+e.checkSumLength)+e.quietZoneLength+t)},addData:function(){var e,t=this,n=t.value;for(t.addPattern(t.START),e=0;e<n.length;e++)t.addCharacter(n.charAt(e));t.options.addCheckSum&&t.addCheckSum(),t.addPattern(t.STOP),t.setBaseUnit()},addCharacter:function(e){var t=this,n=t.characterMap[e];n||t.invalidCharacterError(e),t.addPattern(n)},addPattern:function(e){for(var t=0;t<e.length;t++)this.pattern.push(parseInt(e.charAt(t),10))},addCheckSum:function(){var e,t=this,n=t.checkSums[t.checkSumType],i=n.call(t.checkSums,t.value);for(t.checksum=i.join(""),e=0;e<i.length;e++)t.checkSumLength++,t.addPattern(t.characterMap[i[e]])},checkSums:{Modulo10:function(e){var t,n,i,o=[0,""],r=e.length%2;for(t=0;t<e.length;t++)o[(t+r)%2]+=parseInt(e.charAt(t),10);for(i=o[0],n=""+2*o[1],t=0;t<n.length;t++)i+=parseInt(n.charAt(t),10);return[(10-i%10)%10]},Modulo11:function(e){var t,n,i,o=0,r=11,a=e.length;for(i=0;i<a;i++)t=((a-i)%6||6)+1,o+=t*e.charAt(i);return n=(r-o%r)%r,10!=n?[n]:[1,0]},Modulo11Modulo10:function(e){var t,n=this.Modulo11(e);return t=e+n[0],n.concat(this.Modulo10(t))},Modulo10Modulo10:function(e){var t,n=this.Modulo10(e);return t=e+n[0],n.concat(this.Modulo10(t))}},characterMap:["12121212","12121221","12122112","12122121","12211212","12211221","12212112","12212121","21121212","21121221"],START:"21",STOP:"121",checkSumType:""}),E.msimod10=s.extend({name:"MSI Modulo10",checkSumType:"Modulo10"}),E.msimod11=s.extend({name:"MSI Modulo11",checkSumType:"Modulo11"}),E.msimod1110=s.extend({name:"MSI Modulo11 Modulo10",checkSumType:"Modulo11Modulo10"}),E.msimod1010=s.extend({name:"MSI Modulo10 Modulo10",checkSumType:"Modulo10Modulo10"}),E.code11=A.extend({name:"Code 11",cCheckSumTotal:10,kCheckSumTotal:9,kCheckSumMinLength:10,checkSumMod:11,DASH_VALUE:10,DASH:"-",START:"112211",STOP:"11221",initValue:function(e,t){var n=this;n.pattern=[],n.value=e,n.width=t,n.totalUnits=0},addData:function(){var e,t=this,n=t.value;for(t.addPattern(t.START),e=0;e<n.length;e++)t.addCharacter(n.charAt(e));t.options.addCheckSum&&t.addCheckSum(),t.addPattern(t.STOP),t.setBaseUnit()},setBaseUnit:function(){var e=this;e.baseUnit=e.width/(e.totalUnits+e.quietZoneLength)},addCheckSum:function(){var e,t=this,n=t.value,i=n.length,o=t.getWeightedSum(n,i,t.cCheckSumTotal)%t.checkSumMod;t.checksum=o+"",t.addPattern(t.characterMap[o]),i++,i>=t.kCheckSumMinLength&&(e=(o+t.getWeightedSum(n,i,t.kCheckSumTotal))%t.checkSumMod,t.checksum+=e,t.addPattern(t.characterMap[e]))},getWeightedSum:function(e,t,n){var i,o=0;for(i=0;i<e.length;i++)o+=this.weightedValue(this.getValue(e.charAt(i)),t,i,n);return o},weightedValue:function(e,t,n,i){var o=(t-n)%i||i;return o*e},getValue:function(e){var t=this;return isNaN(e)?(e!==t.DASH&&t.invalidCharacterError(e),t.DASH_VALUE):parseInt(e,10)},addCharacter:function(e){var t=this,n=t.getValue(e),i=t.characterMap[n];t.addPattern(i)},addPattern:function(e){var t,n;for(n=0;n<e.length;n++)t=parseInt(e.charAt(n),10),this.pattern.push(t),this.totalUnits+=t},characterMap:["111121","211121","121121","221111","112121","212111","122111","111221","211211","211111","112111"],options:{addCheckSum:!0}}),E.postnet=A.extend({name:"Postnet",START:"2",VALID_CODE_LENGTHS:[5,9,11],DIGIT_SEPARATOR:"-",initValue:function(e,t,n){var i=this;i.height=n,i.width=t,i.baseHeight=n/2,i.value=e.replace(RegExp(i.DIGIT_SEPARATOR,"g"),""),i.pattern=[],i.validate(i.value),i.checkSum=0,i.setBaseUnit()},addData:function(){var e,t=this,n=t.value;for(t.addPattern(t.START),e=0;e<n.length;e++)t.addCharacter(n.charAt(e));t.options.addCheckSum&&t.addCheckSum(),t.addPattern(t.START),t.pattern.pop()},addCharacter:function(e){var t=this,n=t.characterMap[e];t.checkSum+=parseInt(e,10),t.addPattern(n)},addCheckSum:function(){var e=this;e.checksum=(10-e.checkSum%10)%10,e.addCharacter(e.checksum)},setBaseUnit:function(){var e=this,t=3;e.baseUnit=e.width/(10*(e.value.length+1)+t+e.quietZoneLength)},validate:function(e){var t=this;if(S.test(e)||t.invalidCharacterError(e.match(/[^0-9]/)[0]),p(e.length,t.VALID_CODE_LENGTHS)<0)throw Error("Invalid value length. Valid lengths for the Postnet symbology are "+t.VALID_CODE_LENGTHS.join(","))},addPattern:function(e){var t,n,i=this;for(n=0;n<e.length;n++)t=i.height-i.baseHeight*e.charAt(n),i.pattern.push({width:1,y1:t,y2:i.height}),i.pattern.push(1)},characterMap:["22111","11122","11212","11221","12112","12121","12211","21112","21121","21211"]}),E.ean13=A.extend({initValue:function(e,t,n){if(e+="",12!=e.length||/\D/.test(e))throw Error('The value of the "EAN13" encoding should be 12 symbols');var i=this;i.pattern=[],i.options.height=n,i.baseUnit=t/(95+i.quietZoneLength),i.value=e,i.checksum=i.calculateChecksum(),i.leftKey=e[0],i.leftPart=e.substr(1,6),i.rightPart=e.substr(7)+i.checksum},addData:function(){var e=this;e.addPieces(e.characterMap.start),e.addSide(e.leftPart,e.leftKey),e.addPieces(e.characterMap.middle),e.addSide(e.rightPart),e.addPieces(e.characterMap.start)},addSide:function(e,t){var n,i=this;for(n=0;n<e.length;n++)t&&parseInt(i.keyTable[t].charAt(n),10)?i.addPieces(Array.prototype.slice.call(i.characterMap.digits[e.charAt(n)]).reverse(),!0):i.addPieces(i.characterMap.digits[e.charAt(n)],!0)},addPieces:function(e,t){var n,i=this;for(n=0;n<e.length;n++)i.pattern.push(t?{y1:0,y2:.95*i.options.height,width:e[n]}:e[n])},calculateChecksum:function(){var e,t,n=0,i=0,o=this.value.split("").reverse().join("");for(e=0;e<o.length;e++)e%2?i+=parseInt(o.charAt(e),10):n+=parseInt(o.charAt(e),10);return t=(10-(3*n+i)%10)%10},keyTable:["000000","001011","001101","001110","010011","011001","011100","010101","010110","011010"],characterMap:{digits:[[3,2,1,1],[2,2,2,1],[2,1,2,2],[1,4,1,1],[1,1,3,2],[1,2,3,1],[1,1,1,4],[1,3,1,2],[1,2,1,3],[3,1,1,2]],start:[1,1,1],middle:[1,1,1,1,1]}}),E.ean8=E.ean13.extend({initValue:function(e,t,n){var i=this;if(7!=e.length||/\D/.test(e))throw Error("Invalid value provided");i.value=e,i.options.height=n,i.checksum=i.calculateChecksum(i.value),i.leftPart=i.value.substr(0,4),i.rightPart=i.value.substr(4)+i.checksum,i.pattern=[],i.baseUnit=t/(67+i.quietZoneLength)}}),l=d.extend({init:function(t,n){var i=this;d.fn.init.call(i,t,n),i.element=e(t),i.wrapper=i.element,i.element.addClass("k-barcode").css("display","block"),i.surfaceWrap=e("<div />").css("position","relative").appendTo(this.element),i.surface=g.Surface.create(i.surfaceWrap,{type:i.options.renderAs}),i._setOptions(n),n&&_(n.value)&&i.redraw()},setOptions:function(e){this._setOptions(e),this.redraw()},redraw:function(){var e=this._getSize();this.surface.clear(),this.surface.setSize({width:e.width,height:e.height}),this.createVisual(),this.surface.draw(this.visual)},getSize:function(){return c.dimensions(this.element)},_resize:function(){this.redraw()},createVisual:function(){this.visual=this._render()},_render:function(){var e,t,n,i=this,o=i.options,r=o.value,a=o.text,s=b.getSpacing(a.margin),l=i._getSize(),c=o.border||{},d=i.encoding,u=new w(0,0,l.width,l.height).unpad(c.width).unpad(o.padding),h=u.height(),p=new g.Group;return i.contentBox=u,p.append(i._getBackground(l)),a.visible&&(n=g.util.measureText(r,{font:a.font}).height,h-=n+s.top+s.bottom),e=d.encode(r,u.width(),h),a.visible&&(t=r,o.checksum&&_(d.checksum)&&(t+=" "+d.checksum),p.append(i._getText(t))),i.barHeight=h,this._bandsGroup=this._getBands(e.pattern,e.baseUnit),p.append(this._bandsGroup),p},exportVisual:function(){return this._render()},_getSize:function(){var e=this,t=e.element,n=new m.Size(y,x);return t.width()>0&&(n.width=t.width()),t.height()>0&&(n.height=t.height()),e.options.width&&(n.width=e.options.width),e.options.height&&(n.height=e.options.height),n},value:function(e){var n=this;return _(e)?(n.options.value=e+"",n.redraw(),t):n.options.value},_getBands:function(e,t){var n,i,o,r,a,s=this,l=s.contentBox,c=l.x1,d=new g.Group;for(o=0;o<e.length;o++)i=f(e[o])?e[o]:{width:e[o],y1:0,y2:s.barHeight},n=i.width*t,o%2&&(r=m.Rect.fromPoints(new m.Point(c,i.y1+l.y1),new m.Point(c+n,i.y2+l.y1)),a=g.Path.fromRect(r,{fill:{color:s.options.color},stroke:null}),d.append(a)),c+=n;return d},_getBackground:function(e){var t=this,n=t.options,i=n.border||{},o=new w(0,0,e.width,e.height).unpad(i.width/2),r=g.Path.fromRect(o.toRect(),{fill:{color:n.background},stroke:{color:i.width?i.color:"",width:i.width,dashType:i.dashType}});return r},_getText:function(e){var t=this,n=t.options.text,i=t._textbox=new k(e,{font:n.font,color:n.color,align:"center",vAlign:"bottom",margin:n.margin});return i.reflow(t.contentBox),i.renderVisual(),i.visual},_setOptions:function(e){var t=this;if(t.type=(e.type||t.options.type).toLowerCase(),"upca"==t.type&&(t.type="ean13",e.value="0"+e.value),"upce"==t.type&&(t.type="ean8",e.value="0"+e.value),!E[t.type])throw Error("Encoding "+t.type+"is not supported.");t.encoding=new E[t.type],t.options=u(!0,t.options,e)},options:{name:"Barcode",renderAs:"svg",value:"",type:"code39",checksum:!1,width:0,height:0,color:"black",background:"white",text:{visible:!0,font:"16px Consolas, Monaco, Sans Mono, monospace, sans-serif",color:"black",margin:{top:0,bottom:0,left:0,right:0}},border:{width:0,dashType:"solid",color:"black"},padding:{top:0,bottom:0,left:0,right:0}}}),b.ExportMixin.extend(l.fn),b.ui.plugin(l),c.deepExtend(b,{encodings:E,Encoding:A})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.qrcode.min",["kendo.dataviz.core.min","kendo.drawing.min"],e)}(function(){return function(e,t){function n(e){return parseInt(e,2)}function i(e,t){var n=(+e).toString(2);return n.length<t&&(n=Array(t-n.length+1).join(0)+n),n}function o(e,t){for(var n=[],i=0;i<e.length;)n.push(e.substring(i,i+t)),i+=t;return n}function r(e,t,n,i){for(var o=0;o<e.length;o++)e[o][n][i]=t}function a(e,t,n,i){for(var o=0;o<ve.length;o++)e[o][n][i]=ve[o](n,i)?1^t:parseInt(t,10)}function s(){var e,t;for(t=1;t<255;t++)e=2*re[t-1],e>255&&(e=285^e),re[t]=e,oe[e]=t;e=2*re[t-1]^285,re[t]=e,re[-1]=0}function l(){var e,t,n,i=68;for(e=2;e<=i;e++)t=ae[e-1],n=[e,0],ae[e]=w(t,n)}function c(e,n){var i=[],o=e.length-1;do i[o]=re[(e[o]+n)%255],o--;while(e[o]!==t);return i}function d(e,t){return parseInt(e.charAt(t),10)}function u(e,t,n,i,o){t[e][i]=(t[e][i]<<1^o)%128,t[e][i]==me&&(n[e]+=40)}function h(e,t,n,i,o,r){n[e][r]==i?o[e][r]++:(n[e][r]=i,o[e][r]>=5&&(t[e]+=3+o[e][r]-5),o[e][r]=1)}function p(e,t){var n=Math.floor(e/t*100),i=n%5,o=Math.abs(n-i-50),r=Math.abs(n+5-i-50),a=10*Math.min(o/5,r/5);return a}var f,g,m,v,_,b,w,k,y,x,C,S,T,D,A,E,I,M,F,R,P,z,B,L,H,N,O,V,W,U,q,j,G,$,Y=window.kendo,K=e.extend,Q=Y.drawing,X=Y.dataviz,J=Y.ui.Widget,Z=X.Box2D,ee="0000",te="numeric",ne="alphanumeric",ie="byte",oe={1:0},re={0:1},ae=[[1,0],[1,25,0]],se={15:20,16:20,18:24,19:24,22:20,24:22,26:24,28:20,30:20,31:24,32:28,33:24,36:18,37:22,39:20,40:24},le=[{L:{groups:[[1,19]],totalDataCodewords:19,errorCodewordsPerBlock:7},M:{groups:[[1,16]],totalDataCodewords:16,errorCodewordsPerBlock:10},Q:{groups:[[1,13]],totalDataCodewords:13,errorCodewordsPerBlock:13},H:{groups:[[1,9]],totalDataCodewords:9,errorCodewordsPerBlock:17}},{L:{groups:[[1,34]],totalDataCodewords:34,errorCodewordsPerBlock:10},M:{groups:[[1,28]],totalDataCodewords:28,errorCodewordsPerBlock:16},Q:{groups:[[1,22]],totalDataCodewords:22,errorCodewordsPerBlock:22},H:{groups:[[1,16]],totalDataCodewords:16,errorCodewordsPerBlock:28}},{L:{groups:[[1,55]],totalDataCodewords:55,errorCodewordsPerBlock:15},M:{groups:[[1,44]],totalDataCodewords:44,errorCodewordsPerBlock:26},Q:{groups:[[2,17]],totalDataCodewords:34,errorCodewordsPerBlock:18},H:{groups:[[2,13]],totalDataCodewords:26,errorCodewordsPerBlock:22}},{L:{groups:[[1,80]],totalDataCodewords:80,errorCodewordsPerBlock:20},M:{groups:[[2,32]],totalDataCodewords:64,errorCodewordsPerBlock:18},Q:{groups:[[2,24]],totalDataCodewords:48,errorCodewordsPerBlock:26},H:{groups:[[4,9]],totalDataCodewords:36,errorCodewordsPerBlock:16}},{L:{groups:[[1,108]],totalDataCodewords:108,errorCodewordsPerBlock:26},M:{groups:[[2,43]],totalDataCodewords:86,errorCodewordsPerBlock:24},Q:{groups:[[2,15],[2,16]],totalDataCodewords:62,errorCodewordsPerBlock:18},H:{groups:[[2,11],[2,12]],totalDataCodewords:46,errorCodewordsPerBlock:22}},{L:{groups:[[2,68]],totalDataCodewords:136,errorCodewordsPerBlock:18},M:{groups:[[4,27]],totalDataCodewords:108,errorCodewordsPerBlock:16},Q:{groups:[[4,19]],totalDataCodewords:76,errorCodewordsPerBlock:24},H:{groups:[[4,15]],totalDataCodewords:60,errorCodewordsPerBlock:28}},{L:{groups:[[2,78]],totalDataCodewords:156,errorCodewordsPerBlock:20},M:{groups:[[4,31]],totalDataCodewords:124,errorCodewordsPerBlock:18},Q:{groups:[[2,14],[4,15]],totalDataCodewords:88,errorCodewordsPerBlock:18},H:{groups:[[4,13],[1,14]],totalDataCodewords:66,errorCodewordsPerBlock:26}},{L:{groups:[[2,97]],totalDataCodewords:194,errorCodewordsPerBlock:24},M:{groups:[[2,38],[2,39]],totalDataCodewords:154,errorCodewordsPerBlock:22},Q:{groups:[[4,18],[2,19]],totalDataCodewords:110,errorCodewordsPerBlock:22},H:{groups:[[4,14],[2,15]],totalDataCodewords:86,errorCodewordsPerBlock:26}},{L:{groups:[[2,116]],totalDataCodewords:232,errorCodewordsPerBlock:30},M:{groups:[[3,36],[2,37]],totalDataCodewords:182,errorCodewordsPerBlock:22},Q:{groups:[[4,16],[4,17]],totalDataCodewords:132,errorCodewordsPerBlock:20},H:{groups:[[4,12],[4,13]],totalDataCodewords:100,errorCodewordsPerBlock:24}},{L:{groups:[[2,68],[2,69]],totalDataCodewords:274,errorCodewordsPerBlock:18},M:{groups:[[4,43],[1,44]],totalDataCodewords:216,errorCodewordsPerBlock:26},Q:{groups:[[6,19],[2,20]],totalDataCodewords:154,errorCodewordsPerBlock:24},H:{groups:[[6,15],[2,16]],totalDataCodewords:122,errorCodewordsPerBlock:28}},{L:{groups:[[4,81]],totalDataCodewords:324,errorCodewordsPerBlock:20},M:{groups:[[1,50],[4,51]],totalDataCodewords:254,errorCodewordsPerBlock:30},Q:{groups:[[4,22],[4,23]],totalDataCodewords:180,errorCodewordsPerBlock:28},H:{groups:[[3,12],[8,13]],totalDataCodewords:140,errorCodewordsPerBlock:24}},{L:{groups:[[2,92],[2,93]],totalDataCodewords:370,errorCodewordsPerBlock:24},M:{groups:[[6,36],[2,37]],totalDataCodewords:290,errorCodewordsPerBlock:22},Q:{groups:[[4,20],[6,21]],totalDataCodewords:206,errorCodewordsPerBlock:26},H:{groups:[[7,14],[4,15]],totalDataCodewords:158,errorCodewordsPerBlock:28}},{L:{groups:[[4,107]],totalDataCodewords:428,errorCodewordsPerBlock:26},M:{groups:[[8,37],[1,38]],totalDataCodewords:334,errorCodewordsPerBlock:22},Q:{groups:[[8,20],[4,21]],totalDataCodewords:244,errorCodewordsPerBlock:24},H:{groups:[[12,11],[4,12]],totalDataCodewords:180,errorCodewordsPerBlock:22}},{L:{groups:[[3,115],[1,116]],totalDataCodewords:461,errorCodewordsPerBlock:30},M:{groups:[[4,40],[5,41]],totalDataCodewords:365,errorCodewordsPerBlock:24},Q:{groups:[[11,16],[5,17]],totalDataCodewords:261,errorCodewordsPerBlock:20},H:{groups:[[11,12],[5,13]],totalDataCodewords:197,errorCodewordsPerBlock:24}},{L:{groups:[[5,87],[1,88]],totalDataCodewords:523,errorCodewordsPerBlock:22},M:{groups:[[5,41],[5,42]],totalDataCodewords:415,errorCodewordsPerBlock:24},Q:{groups:[[5,24],[7,25]],totalDataCodewords:295,errorCodewordsPerBlock:30},H:{groups:[[11,12],[7,13]],totalDataCodewords:223,errorCodewordsPerBlock:24}},{L:{groups:[[5,98],[1,99]],totalDataCodewords:589,errorCodewordsPerBlock:24},M:{groups:[[7,45],[3,46]],totalDataCodewords:453,errorCodewordsPerBlock:28},Q:{groups:[[15,19],[2,20]],totalDataCodewords:325,errorCodewordsPerBlock:24},H:{groups:[[3,15],[13,16]],totalDataCodewords:253,errorCodewordsPerBlock:30}},{L:{groups:[[1,107],[5,108]],totalDataCodewords:647,errorCodewordsPerBlock:28},M:{groups:[[10,46],[1,47]],totalDataCodewords:507,errorCodewordsPerBlock:28},Q:{groups:[[1,22],[15,23]],totalDataCodewords:367,errorCodewordsPerBlock:28},H:{groups:[[2,14],[17,15]],totalDataCodewords:283,errorCodewordsPerBlock:28}},{L:{groups:[[5,120],[1,121]],totalDataCodewords:721,errorCodewordsPerBlock:30},M:{groups:[[9,43],[4,44]],totalDataCodewords:563,errorCodewordsPerBlock:26},Q:{groups:[[17,22],[1,23]],totalDataCodewords:397,errorCodewordsPerBlock:28},H:{groups:[[2,14],[19,15]],totalDataCodewords:313,errorCodewordsPerBlock:28}},{L:{groups:[[3,113],[4,114]],totalDataCodewords:795,errorCodewordsPerBlock:28},M:{groups:[[3,44],[11,45]],totalDataCodewords:627,errorCodewordsPerBlock:26},Q:{groups:[[17,21],[4,22]],totalDataCodewords:445,errorCodewordsPerBlock:26},H:{groups:[[9,13],[16,14]],totalDataCodewords:341,errorCodewordsPerBlock:26}},{L:{groups:[[3,107],[5,108]],totalDataCodewords:861,errorCodewordsPerBlock:28},M:{groups:[[3,41],[13,42]],totalDataCodewords:669,errorCodewordsPerBlock:26},Q:{groups:[[15,24],[5,25]],totalDataCodewords:485,errorCodewordsPerBlock:30},H:{groups:[[15,15],[10,16]],totalDataCodewords:385,errorCodewordsPerBlock:28}},{L:{groups:[[4,116],[4,117]],totalDataCodewords:932,errorCodewordsPerBlock:28},M:{groups:[[17,42]],totalDataCodewords:714,errorCodewordsPerBlock:26},Q:{groups:[[17,22],[6,23]],totalDataCodewords:512,errorCodewordsPerBlock:28},H:{groups:[[19,16],[6,17]],totalDataCodewords:406,errorCodewordsPerBlock:30}},{L:{groups:[[2,111],[7,112]],totalDataCodewords:1006,errorCodewordsPerBlock:28},M:{groups:[[17,46]],totalDataCodewords:782,errorCodewordsPerBlock:28},Q:{groups:[[7,24],[16,25]],totalDataCodewords:568,errorCodewordsPerBlock:30},H:{groups:[[34,13]],totalDataCodewords:442,errorCodewordsPerBlock:24}},{L:{groups:[[4,121],[5,122]],totalDataCodewords:1094,errorCodewordsPerBlock:30},M:{groups:[[4,47],[14,48]],totalDataCodewords:860,errorCodewordsPerBlock:28},Q:{groups:[[11,24],[14,25]],totalDataCodewords:614,errorCodewordsPerBlock:30},H:{groups:[[16,15],[14,16]],totalDataCodewords:464,errorCodewordsPerBlock:30}},{L:{groups:[[6,117],[4,118]],totalDataCodewords:1174,errorCodewordsPerBlock:30},M:{groups:[[6,45],[14,46]],totalDataCodewords:914,errorCodewordsPerBlock:28},Q:{groups:[[11,24],[16,25]],totalDataCodewords:664,errorCodewordsPerBlock:30},H:{groups:[[30,16],[2,17]],totalDataCodewords:514,errorCodewordsPerBlock:30}},{L:{groups:[[8,106],[4,107]],totalDataCodewords:1276,errorCodewordsPerBlock:26},M:{groups:[[8,47],[13,48]],totalDataCodewords:1e3,errorCodewordsPerBlock:28},Q:{groups:[[7,24],[22,25]],totalDataCodewords:718,errorCodewordsPerBlock:30},H:{groups:[[22,15],[13,16]],totalDataCodewords:538,errorCodewordsPerBlock:30}},{L:{groups:[[10,114],[2,115]],totalDataCodewords:1370,errorCodewordsPerBlock:28},M:{groups:[[19,46],[4,47]],totalDataCodewords:1062,errorCodewordsPerBlock:28},Q:{groups:[[28,22],[6,23]],totalDataCodewords:754,errorCodewordsPerBlock:28},H:{groups:[[33,16],[4,17]],totalDataCodewords:596,errorCodewordsPerBlock:30}},{L:{groups:[[8,122],[4,123]],totalDataCodewords:1468,errorCodewordsPerBlock:30},M:{groups:[[22,45],[3,46]],totalDataCodewords:1128,errorCodewordsPerBlock:28},Q:{groups:[[8,23],[26,24]],totalDataCodewords:808,errorCodewordsPerBlock:30},H:{groups:[[12,15],[28,16]],totalDataCodewords:628,errorCodewordsPerBlock:30}},{L:{groups:[[3,117],[10,118]],totalDataCodewords:1531,errorCodewordsPerBlock:30},M:{groups:[[3,45],[23,46]],totalDataCodewords:1193,errorCodewordsPerBlock:28},Q:{groups:[[4,24],[31,25]],totalDataCodewords:871,errorCodewordsPerBlock:30},H:{groups:[[11,15],[31,16]],totalDataCodewords:661,errorCodewordsPerBlock:30}},{L:{groups:[[7,116],[7,117]],totalDataCodewords:1631,errorCodewordsPerBlock:30},M:{groups:[[21,45],[7,46]],totalDataCodewords:1267,errorCodewordsPerBlock:28},Q:{groups:[[1,23],[37,24]],totalDataCodewords:911,errorCodewordsPerBlock:30},H:{groups:[[19,15],[26,16]],totalDataCodewords:701,errorCodewordsPerBlock:30}},{L:{groups:[[5,115],[10,116]],totalDataCodewords:1735,errorCodewordsPerBlock:30},M:{groups:[[19,47],[10,48]],totalDataCodewords:1373,errorCodewordsPerBlock:28},Q:{groups:[[15,24],[25,25]],totalDataCodewords:985,errorCodewordsPerBlock:30},H:{groups:[[23,15],[25,16]],totalDataCodewords:745,errorCodewordsPerBlock:30}},{L:{groups:[[13,115],[3,116]],totalDataCodewords:1843,errorCodewordsPerBlock:30},M:{groups:[[2,46],[29,47]],totalDataCodewords:1455,errorCodewordsPerBlock:28},Q:{groups:[[42,24],[1,25]],totalDataCodewords:1033,errorCodewordsPerBlock:30},H:{groups:[[23,15],[28,16]],totalDataCodewords:793,errorCodewordsPerBlock:30}},{L:{groups:[[17,115]],totalDataCodewords:1955,errorCodewordsPerBlock:30},M:{groups:[[10,46],[23,47]],totalDataCodewords:1541,errorCodewordsPerBlock:28},Q:{groups:[[10,24],[35,25]],totalDataCodewords:1115,errorCodewordsPerBlock:30},H:{groups:[[19,15],[35,16]],totalDataCodewords:845,errorCodewordsPerBlock:30}},{L:{groups:[[17,115],[1,116]],totalDataCodewords:2071,errorCodewordsPerBlock:30},M:{groups:[[14,46],[21,47]],totalDataCodewords:1631,errorCodewordsPerBlock:28},Q:{groups:[[29,24],[19,25]],totalDataCodewords:1171,errorCodewordsPerBlock:30},H:{groups:[[11,15],[46,16]],totalDataCodewords:901,errorCodewordsPerBlock:30}},{L:{groups:[[13,115],[6,116]],totalDataCodewords:2191,errorCodewordsPerBlock:30},M:{groups:[[14,46],[23,47]],totalDataCodewords:1725,errorCodewordsPerBlock:28},Q:{groups:[[44,24],[7,25]],totalDataCodewords:1231,errorCodewordsPerBlock:30},H:{groups:[[59,16],[1,17]],totalDataCodewords:961,errorCodewordsPerBlock:30}},{L:{groups:[[12,121],[7,122]],totalDataCodewords:2306,errorCodewordsPerBlock:30},M:{groups:[[12,47],[26,48]],totalDataCodewords:1812,errorCodewordsPerBlock:28},Q:{groups:[[39,24],[14,25]],totalDataCodewords:1286,errorCodewordsPerBlock:30},H:{groups:[[22,15],[41,16]],totalDataCodewords:986,errorCodewordsPerBlock:30}},{L:{groups:[[6,121],[14,122]],totalDataCodewords:2434,errorCodewordsPerBlock:30},M:{groups:[[6,47],[34,48]],totalDataCodewords:1914,errorCodewordsPerBlock:28 +},Q:{groups:[[46,24],[10,25]],totalDataCodewords:1354,errorCodewordsPerBlock:30},H:{groups:[[2,15],[64,16]],totalDataCodewords:1054,errorCodewordsPerBlock:30}},{L:{groups:[[17,122],[4,123]],totalDataCodewords:2566,errorCodewordsPerBlock:30},M:{groups:[[29,46],[14,47]],totalDataCodewords:1992,errorCodewordsPerBlock:28},Q:{groups:[[49,24],[10,25]],totalDataCodewords:1426,errorCodewordsPerBlock:30},H:{groups:[[24,15],[46,16]],totalDataCodewords:1096,errorCodewordsPerBlock:30}},{L:{groups:[[4,122],[18,123]],totalDataCodewords:2702,errorCodewordsPerBlock:30},M:{groups:[[13,46],[32,47]],totalDataCodewords:2102,errorCodewordsPerBlock:28},Q:{groups:[[48,24],[14,25]],totalDataCodewords:1502,errorCodewordsPerBlock:30},H:{groups:[[42,15],[32,16]],totalDataCodewords:1142,errorCodewordsPerBlock:30}},{L:{groups:[[20,117],[4,118]],totalDataCodewords:2812,errorCodewordsPerBlock:30},M:{groups:[[40,47],[7,48]],totalDataCodewords:2216,errorCodewordsPerBlock:28},Q:{groups:[[43,24],[22,25]],totalDataCodewords:1582,errorCodewordsPerBlock:30},H:{groups:[[10,15],[67,16]],totalDataCodewords:1222,errorCodewordsPerBlock:30}},{L:{groups:[[19,118],[6,119]],totalDataCodewords:2956,errorCodewordsPerBlock:30},M:{groups:[[18,47],[31,48]],totalDataCodewords:2334,errorCodewordsPerBlock:28},Q:{groups:[[34,24],[34,25]],totalDataCodewords:1666,errorCodewordsPerBlock:30},H:{groups:[[20,15],[61,16]],totalDataCodewords:1276,errorCodewordsPerBlock:30}}],ce=[1,0,1,1,1],de=[1,0,1],ue={L:"01",M:"00",Q:"11",H:"10"},he="101010000010010",pe="10100110111",fe="1111100100101",ge=["11101100","00010001"],me=93,ve=[function(e,t){return(e+t)%2===0},function(e){return e%2===0},function(e,t){return t%3===0},function(e,t){return(e+t)%3===0},function(e,t){return(Math.floor(e/2)+Math.floor(t/3))%2===0},function(e,t){return e*t%2+e*t%3===0},function(e,t){return(e*t%2+e*t%3)%2===0},function(e,t){return((e+t)%2+e*t%3)%2===0}],_e=/^\d+/,be="A-Z0-9 $%*+./:-",we="A-Z $%*+./:-",ke=RegExp("^["+we+"]+"),ye=RegExp("^["+be+"]+"),xe=RegExp("^[^"+be+"]+"),Ce=8,Se=5,Te=8,De=17,Ae=9,Ee=16,Ie=Math.round,Me=Y.Class.extend({getVersionIndex:function(e){return e<10?0:e>26?2:1},getBitsCharacterCount:function(e){var t=this;return t.bitsInCharacterCount[t.getVersionIndex(e||40)]},getModeCountString:function(e,t){var n=this;return n.modeIndicator+i(e,n.getBitsCharacterCount(t))},encode:function(){},getStringBitsLength:function(){},getValue:function(){},modeIndicator:"",bitsInCharacterCount:[]}),Fe={};Fe[te]=Me.extend({bitsInCharacterCount:[10,12,14],modeIndicator:"0001",getValue:function(e){return parseInt(e,10)},encode:function(e,t){var n,r=this,a=o(e,3),s=r.getModeCountString(e.length,t);for(n=0;n<a.length-1;n++)s+=i(a[n],10);return s+i(a[n],1+3*a[n].length)},getStringBitsLength:function(e,t){var n=e%3;return 4+this.getBitsCharacterCount(t)+10*Math.floor(e/3)+3*n+(0===n?0:1)}}),Fe[ne]=Me.extend({characters:{0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,G:16,H:17,I:18,J:19,K:20,L:21,M:22,N:23,O:24,P:25,Q:26,R:27,S:28,T:29,U:30,V:31,W:32,X:33,Y:34,Z:35," ":36,$:37,"%":38,"*":39,"+":40,"-":41,".":42,"/":43,":":44},bitsInCharacterCount:[9,11,13],modeIndicator:"0010",getValue:function(e){return this.characters[e]},encode:function(e,t){var n,r,a=this,s=o(e,2),l=a.getModeCountString(e.length,t);for(r=0;r<s.length-1;r++)n=45*a.getValue(s[r].charAt(0))+a.getValue(s[r].charAt(1)),l+=i(n,11);return n=2==s[r].length?45*a.getValue(s[r].charAt(0))+a.getValue(s[r].charAt(1)):a.getValue(s[r].charAt(0)),l+i(n,1+5*s[r].length)},getStringBitsLength:function(e,t){return 4+this.getBitsCharacterCount(t)+11*Math.floor(e/2)+6*(e%2)}}),Fe[ie]=Me.extend({bitsInCharacterCount:[8,16,16],modeIndicator:"0100",getValue:function(e){var t=e.charCodeAt(0);if(t<=127||160<=t&&t<=255)return t;throw Error("Unsupported character: "+e)},encode:function(e,t){var n,o=this,r=o.getModeCountString(e.length,t);for(n=0;n<e.length;n++)r+=i(o.getValue(e.charAt(n)),8);return r},getStringBitsLength:function(e,t){return 4+this.getBitsCharacterCount(t)+8*e}}),f={};for(g in Fe)f[g]=new Fe[g];m=function(e){var n=this,i=e.length-1,o=e.length-1,r=o,a=-1,s=0;n.move=function(){i+=a*s,s^=1,o=r-s},n.getNextCell=function(){for(;e[i][o]!==t;)n.move(),(i<0||i>=e.length)&&(a=-a,r-=8!=r?2:3,o=r,i=a<0?e.length-1:0);return{row:i,column:o}},n.getNextRemainderCell=function(){if(n.move(),e[i][o]===t)return{row:i,column:o}}},v=function(e,t){var n,i,o,r,s,l,c=new m(e[0]);for(r=0;r<t.length;r++)for(n=t[r],i=0;n.length>0;){for(s=0;s<n.length;s++)for(l=0;l<8;l++)o=c.getNextCell(),a(e,n[s][i].charAt(l),o.row,o.column);for(i++;n[0]&&i==n[0].length;)n.splice(0,1)}for(;o=c.getNextRemainderCell();)a(e,0,o.row,o.column)},_=function(e,t){for(var n=8*t,i=0,o=0;e.length<n&&i<ee.length;)e+=ee.charAt(i++);for(e.length%8!==0&&(e+=Array(9-e.length%8).join("0"));e.length<n;)e+=ge[o],o^=1;return e},b=function(e,t){var n,i=[],o=e.length-2;for(n=o;n>=0;n--)i[n]=e[n]^t[n];return i},w=function(e,n){var i,o,r=[];for(i=0;i<e.length;i++)for(o=0;o<n.length;o++)r[i+o]=r[i+o]===t?(e[i]+(n[o]>=0?n[o]:0))%255:oe[re[r[i+o]]^re[(e[i]+n[o])%255]];return r},s(),l(),k=function(e,t){var n,o,r=ae[t-1],a=Array(t).concat(e),s=Array(a.length-r.length).concat(r),l=e.length,d=[];for(o=0;o<l;o++)n=c(s,oe[a[a.length-1]]),s.splice(0,1),a=b(n,a);for(o=a.length-1;o>=0;o--)d[t-1-o]=i(a[o],8);return d},y=function(e,t){var i,o,r,a,s,l,c,d,u=0,h=[],p=[],f=t.groups;for(l=0;l<f.length;l++)for(r=f[l][0],c=0;c<r;c++){for(o=f[l][1],i=[],a=[],d=1;d<=o;d++)s=e.substring(u,u+8),i.push(s),a[o-d]=n(s),u+=8;h.push(i),p.push(k(a,t.errorCodewordsPerBlock))}return[h,p]},x=function(e,t,n,i,o){var r,a,s=_e.exec(e),l=s?s[0]:"",c=ke.exec(e),d=c?c[0]:"",u=ye.exec(e),h=u?u[0]:"";return l&&(l.length>=t||e.length==l.length||l.length>=n&&!ye.test(e.charAt(l.length)))?(r=te,a=l):h&&(e.length==h.length||h.length>=i||o==ne)?(r=ne,a=l||d):(r=ie,a=h?h+xe.exec(e.substring(h.length))[0]:xe.exec(e)[0]),{mode:r,modeString:a}},C=function(e){var t,n,i=[],o=0;for(i.push(x(e,Ce,Se,Te,t)),t=i[0].mode,e=e.substr(i[0].modeString.length);e.length>0;)n=x(e,De,Ae,Ee,t),n.mode!=t?(t=n.mode,i.push(n),o++):i[o].modeString+=n.modeString,e=e.substr(n.modeString.length);return i},S=function(e){var t,n,i=0;for(n=0;n<e.length;n++)t=f[e[n].mode],i+=t.getStringBitsLength(e[n].modeString.length);return Math.ceil(i/8)},T=function(e,t){var n=0,i=le.length-1,o=Math.floor(le.length/2);do e<le[o][t].totalDataCodewords?i=o:n=o,o=n+Math.floor((i-n)/2);while(i-n>1);return e<=le[n][t].totalDataCodewords?o+1:i+1},D=function(e,t){var n,i,o="";for(i=0;i<e.length;i++)n=f[e[i].mode],o+=n.encode(e[i].modeString,t);return o},A=function(e){var t,i,o=n(e),r="";if(0===o)return"101010000010010";for(t=E(n(e),pe,15),i=0;i<t.length;i++)r+=t.charAt(i)^he.charAt(i);return r},E=function(e,t,o){var r=n(t),a=t.length-1,s=e<<a,l=o-a,c=i(e,l),d=I(s,r);return d=c+i(d,a)},I=function(e,t){var n=t.toString(2).length,i=e.toString(2).length;do e^=t<<i-n,i=e.toString(2).length;while(i>=n);return e},M=function(e){var t,n,i=[],o=17+4*e;for(t=0;t<ve.length;t++)for(i[t]=Array(o),n=0;n<o;n++)i[t][n]=Array(o);return i},F=function(e,t){var n,i,o=e[0],a=0,s=t.length;for(n=0,i=8;n<=8;n++)6!==n&&r(e,d(t,s-1-a++),n,i);for(n=8,i=7;i>=0;i--)6!==i&&r(e,d(t,s-1-a++),n,i);for(a=0,i=o.length-1,n=8;i>=o.length-8;i--)r(e,d(t,s-1-a++),n,i);for(r(e,1,o.length-8,8),n=o.length-7,i=8;n<o.length;n++)r(e,d(t,s-1-a++),n,i)},R=function(e){return E(e,fe,18)},P=function(e,t){var n,i,o,a,s=e[0],l=s.length,c=0,u=l-11,h=l-11,p=0;for(a=0;a<t.length;a++)n=Math.floor(a/3),i=a%3,o=d(t,t.length-a-1),r(e,o,c+n,u+i),r(e,o,h+i,p+n)},z=function(e,t,n,i){var o,a,s,l=t.length+2,c=t.length+1;for(a=0;a<t.length;a++)for(s=a;s<l-a;s++)o=t[a],r(e,o,n+s,i+a),r(e,o,n+a,i+s),r(e,o,n+c-s,i+c-a),r(e,o,n+c-a,i+c-s)},B=function(e,t,n,i){var o=n,a=i,s=e[0];do r(e,0,o,i),r(e,0,n,a),o+=t[0],a+=t[1];while(o>=0&&o<s.length)},L=function(e){var t=e[0].length;z(e,ce,0,0),B(e,[-1,-1],7,7),z(e,ce,t-7,0),B(e,[1,-1],t-8,7),z(e,ce,0,t-7),B(e,[-1,1],7,t-8)},H=function(e,n){var i,o,r,a,s,l,c,d,u;if(!(n<2)){for(i=e[0],o=i.length,r=Math.floor(n/7),a=[6],c=0,(s=se[n])?l=(o-13-s)/r:s=l=(o-13)/(r+1),a.push(a[c++]+s);a[c]+l<o;)a.push(a[c++]+l);for(d=0;d<a.length;d++)for(u=0;u<a.length;u++)i[a[d]][a[u]]===t&&z(e,de,a[d]-2,a[u]-2)}},N=function(e){var t,n=6,i=6,o=1,a=e[0].length;for(t=8;t<a-8;t++)r(e,o,n,t),r(e,o,t,i),o^=1},O=function(e){var t,n,i,o,r,a,s,l=[],c=[],d=[],f=[],g=[],m=0,v=1,_=e[0].length;for(n=0;n<e.length;n++)l[n]=0,d[n]=0,g[n]=[0,0],f[n]=[0,0],c[n]=[];for(n=0;n<_;n++)for(i=0;i<_;i++)for(o=0;o<e.length;o++)t=e[o],d[o]+=parseInt(t[n][i],10),c[o][m]===t[n][i]&&n+1<_&&i-1>=0&&t[n+1][i]==c[o][m]&&t[n+1][i-1]==c[o][m]&&(l[o]+=3),u(o,f,l,m,t[n][i]),u(o,f,l,v,t[i][n]),h(o,l,c,t[n][i],g,m),h(o,l,c,t[i][n],g,v);for(r=_*_,s=Number.MAX_VALUE,n=0;n<l.length;n++)l[n]+=p(d[n],r),l[n]<s&&(s=l[n],a=n);return a},V=function(e,t){this.dataString=e,this.version=t},W=function(){this.getEncodingResult=function(e,t){var n=C(e),i=S(n),o=T(i,t),r=D(n,o);return new V(r,o)}},U=function(){this.mode=f[this.encodingMode]},U.fn=U.prototype={encodingMode:ie,utfBOM:"111011111011101110111111",initialModeCountStringLength:20,getEncodingResult:function(e,t){var n=this,i=n.encode(e),o=n.getDataCodewordsCount(i),r=T(o,t),a=n.mode.getModeCountString(i.length/8,r)+i;return new V(a,r)},getDataCodewordsCount:function(e){var t=this,n=e.length,i=Math.ceil((t.initialModeCountStringLength+n)/8);return i},encode:function(e){var t,n=this,i=n.utfBOM;for(t=0;t<e.length;t++)i+=n.encodeCharacter(e.charCodeAt(t));return i},encodeCharacter:function(e){var t,n,o=this.getBytesCount(e),r=o-1,a="";if(1==o)a=i(e,8);else{for(t=8-o,n=0;n<r;n++)a=i(e>>6*n&63|128,8)+a;a=(e>>6*r|255>>t<<t).toString(2)+a}return a},getBytesCount:function(e){var t,n=this.ranges;for(t=0;t<n.length;t++)if(e<n[t])return t+1},ranges:[128,2048,65536,2097152,67108864]},q=function(e){return e&&e.toLowerCase().indexOf("utf_8")>=0?new U:new W},j=function(e,t,n){var o,r,a,s=new q(n),l=s.getEncodingResult(e,t),c=l.version,d=le[c-1][t],u=_(l.dataString,d.totalDataCodewords),h=y(u,d),p=M(c);return L(p),H(p,c),N(p),c>=7&&P(p,i(0,18)),F(p,i(0,15)),v(p,h),o=O(p),r=p[o],c>=7&&P([r],R(c)),a=ue[t]+i(o,3),F([r],A(a)),r},G={DEFAULT_SIZE:200,QUIET_ZONE_LENGTH:4,DEFAULT_ERROR_CORRECTION_LEVEL:"L",DEFAULT_BACKGROUND:"#fff",DEFAULT_DARK_MODULE_COLOR:"#000",MIN_BASE_UNIT_SIZE:1},$=J.extend({init:function(t,n){var i=this;J.fn.init.call(i,t,n),i.element=e(t),i.wrapper=i.element,i.element.addClass("k-qrcode"),i.surfaceWrap=e("<div />").css("position","relative").appendTo(this.element),i.surface=Q.Surface.create(i.surfaceWrap,{type:i.options.renderAs}),i.setOptions(n)},redraw:function(){var e=this._getSize();this.surfaceWrap.css({width:e,height:e}),this.surface.clear(),this.createVisual(),this.surface.draw(this.visual)},getSize:function(){return Y.dimensions(this.element)},_resize:function(){this.redraw()},createVisual:function(){this.visual=this._render()},exportVisual:function(){return this._render()},_render:function(){var e,t,n,i,o,r,a,s=this,l=s._value,c=s.options.border||{},d=s.options.padding||0,u=c.width||0;return c.width=u,a=new Q.Group,l&&(n=j(l,s.options.errorCorrection,s.options.encoding),i=s._getSize(),r=i-2*(u+d),e=s._calculateBaseUnit(r,n.length),o=n.length*e,t=u+d+(r-o)/2,a.append(s._renderBackground(i,c)),a.append(s._renderMatrix(n,e,t))),a},_getSize:function(){var e,t,n,i=this;return i.options.size?e=parseInt(i.options.size,10):(t=i.element,n=Math.min(t.width(),t.height()),e=n>0?n:G.DEFAULT_SIZE),e},_calculateBaseUnit:function(e,t){var n=Math.floor(e/t);if(n<G.MIN_BASE_UNIT_SIZE)throw Error("Insufficient size.");return n*t>=e&&n-1>=G.MIN_BASE_UNIT_SIZE&&n--,n},_renderMatrix:function(e,t,n){var i,o,r,a,s,l,c,d,u=new Q.MultiPath({fill:{color:this.options.color},stroke:null});for(i=0;i<e.length;i++)for(o=n+i*t,r=0;r<e.length;){for(;0===e[i][r]&&r<e.length;)r++;if(r<e.length){for(a=r;1==e[i][r];)r++;s=Ie(n+a*t),l=Ie(o),c=Ie(n+r*t),d=Ie(o+t),u.moveTo(s,l).lineTo(s,d).lineTo(c,d).lineTo(c,l).close()}}return u},_renderBackground:function(e,t){var n=new Z(0,0,e,e).unpad(t.width/2);return Q.Path.fromRect(n.toRect(),{fill:{color:this.options.background},stroke:{color:t.color,width:t.width}})},setOptions:function(e){var n=this;e=e||{},n.options=K(n.options,e),e.value!==t&&(n._value=n.options.value+""),n.redraw()},value:function(e){var n=this;return e===t?n._value:(n._value=e+"",n.redraw(),t)},options:{name:"QRCode",renderAs:"svg",encoding:"ISO_8859_1",value:"",errorCorrection:G.DEFAULT_ERROR_CORRECTION_LEVEL,background:G.DEFAULT_BACKGROUND,color:G.DEFAULT_DARK_MODULE_COLOR,size:"",padding:0,border:{color:"",width:0}}}),X.ExportMixin.extend($.fn),X.ui.plugin($),Y.deepExtend(X,{QRCode:$,QRCodeDefaults:G,QRCodeFunctions:{FreeCellVisitor:m,fillData:v,padDataString:_,generateErrorCodewords:k,xorPolynomials:b,getBlocks:y,multiplyPolynomials:w,chooseMode:x,getModes:C,getDataCodewordsCount:S,getVersion:T,getDataString:D,encodeFormatInformation:A,encodeBCH:E,dividePolynomials:I,initMatrices:M,addFormatInformation:F,encodeVersionInformation:R,addVersionInformation:P,addCentricPattern:z,addFinderSeparator:B,addFinderPatterns:L,addAlignmentPatterns:H,addTimingFunctions:N,scoreMaskMatrixes:O,encodeData:j,UTF8Encoder:U},QRCodeFields:{modes:f,powersOfTwo:oe,powersOfTwoResult:re,generatorPolynomials:ae}})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/stock/kendo-stock-chart.min",["kendo.dataviz.chart.min"],e)}(function(){!function(){function e(e,t){var n=document.createElement("div");return n.className=e,t&&(n.style.cssText=t),n}function t(){}function n(e){return t.prototype=e,new t}var i,o,r,a,s,l,c,d,u,h,p,f,g,m,v,_;window.kendo.dataviz=window.kendo.dataviz||{},i=kendo.dataviz,o=i.elementStyles,r=i.deepExtend,a=i.toTime,s=i.constants,l=i.Chart,c=kendo.drawing,d=c.Animation.extend({setup:function(){this._initialOpacity=parseFloat(o(this.element,"opacity").opacity)},step:function(e){o(this.element,{opacity:i.interpolateValue(this._initialOpacity,0,e)+""})},abort:function(){c.Animation.fn.abort.call(this),o(this.element,{display:"none",opacity:this._initialOpacity+""})},cancel:function(){c.Animation.fn.abort.call(this),o(this.element,{opacity:this._initialOpacity+""})}}),u=i.Class.extend({init:function(e,t,n){this.options=r({},this.options,n),this.container=e,this.chartService=t;var i=o(e,["paddingLeft","paddingTop"]);this.chartPadding={top:i.paddingTop,left:i.paddingLeft},this.createElements(),e.appendChild(this.element)},createElements:function(){var t=this.element=e("k-navigator-hint","display: none; position: absolute; top: 1px; left: 1px;"),n=this.tooltip=e("k-tooltip k-chart-tooltip"),i=this.scroll=e("k-scroll");n.innerHTML=" ",t.appendChild(n),t.appendChild(i)},show:function(e,t,n){var r,s=this,l=s.element,c=s.options,d=s.scroll,u=s.tooltip,h=i.toDate(a(e)+a(t-e)/2),p=.4*n.width(),f=n.center().x-p,g=n.center().x,m=g-f,v=c.max-c.min,_=m/v,b=h-c.min,w=this.chartService.intl.format(c.format,e,t),k=i.getTemplate(c);this.clearHideTimeout(),this._visible||(o(l,{visibility:"hidden",display:"block"}),this._visible=!0),k&&(w=k({from:e,to:t})),u.innerHTML=w,o(u,{left:n.center().x-u.offsetWidth/2,top:n.y1}),r=o(u,["marginTop","borderTopWidth","height"]),o(d,{width:p,left:f+b*_,top:n.y1+r.marginTop+r.borderTopWidth+r.height/2}),o(l,{visibility:"visible"})},clearHideTimeout:function(){this._hideTimeout&&clearTimeout(this._hideTimeout),this._hideAnimation&&this._hideAnimation.cancel()},hide:function(){var e=this;this.clearHideTimeout(),this._hideTimeout=setTimeout(function(){e._visible=!1,e._hideAnimation=new d(e.element),e._hideAnimation.setup(),e._hideAnimation.play()},this.options.hideDelay)},destroy:function(){this.clearHideTimeout(),this.container&&this.container.removeChild(this.element),delete this.container,delete this.chartService,delete this.element,delete this.tooltip,delete this.scroll}}),i.setDefaultOptions(u,{format:"{0:d} - {1:d}",hideDelay:500}),h="_navigator",p=h,f={NAVIGATOR_AXIS:p,NAVIGATOR_PANE:h},g=3,m=i.Class.extend({init:function(e){var t,n,o;this.chart=e,t=this.options=r({},this.options,e.options.navigator),n=t.select,n&&(n.from=this.parseDate(n.from),n.to=this.parseDate(n.to)),i.defined(t.hint.visible)||(t.hint.visible=t.visible),this.chartObserver=new i.InstanceObserver(this,(o={},o[s.DRAG]="_drag",o[s.DRAG_END]="_dragEnd",o[s.ZOOM]="_zoom",o[s.ZOOM_END]="_zoomEnd",o)),e.addObserver(this.chartObserver)},parseDate:function(e){return i.parseDate(this.chart.chartService.intl,e)},clean:function(){this.selection&&(this.selection.destroy(),this.selection=null),this.hint&&(this.hint.destroy(),this.hint=null)},destroy:function(){this.chart&&(this.chart.removeObserver(this.chartObserver),delete this.chart),this.clean()},redraw:function(){this._redrawSelf(),this.initSelection()},initSelection:function(){var e=this,t=e.chart,o=e.options,r=this.mainAxis(),a=r.roundedRange(),s=a.min,l=a.max,c=o.select,d=c.from,h=c.to,p=c.mousewheel,f=n(r);0!==r.categoriesCount()&&(this.clean(),f.box=r.box,this.selection=new i.Selection(t,f,{min:s,max:l,from:d||s,to:h||l,mousewheel:i.valueOrDefault(p,{zoom:"left"}),visible:o.visible},new i.InstanceObserver(this,{selectStart:"_selectStart",select:"_select",selectEnd:"_selectEnd"})),o.hint.visible&&(this.hint=new u(t.element,t.chartService,{min:s,max:l,template:i.getTemplate(o.hint),format:o.hint.format})))},setRange:function(){var e,t=this.chart._createPlotArea(!0),n=t.namedCategoryAxes[p],i=n.roundedRange(),o=i.min,a=i.max,s=this.options.select||{},l=s.from||o;l<o&&(l=o),e=s.to||a,e>a&&(e=a),this.options.select=r({},s,{from:l,to:e}),this.filterAxes()},_redrawSelf:function(e){var t=this.chart._plotArea;t&&t.redraw(i.last(t.panes),e)},redrawSlaves:function(){var e=this.chart,t=e._plotArea,n=t.panes.slice(0,-1);t.srcSeries=e.options.series,t.options.categoryAxis=e.options.categoryAxis,t.clearSeriesPointsCache(),t.redraw(n)},_drag:function(e){var t,n,o,r=this,s=r.chart,l=r.selection,c=s._eventCoordinates(e.originalEvent),d=this.mainAxis(),u=d.roundedRange(),h=d.pane.box.containsPoint(c),p=s._plotArea.categoryAxis,f=e.axisRanges[p.options.name],g=this.options.select;f&&!h&&l&&(t=g.from&&g.to?a(g.to)-a(g.from):a(l.options.to)-a(l.options.from),n=i.toDate(i.limitValue(a(f.min),u.min,a(u.max)-t)),o=i.toDate(i.limitValue(a(n)+t,a(u.min)+t,u.max)),this.options.select={from:n,to:o},this.options.liveDrag&&(this.filterAxes(),this.redrawSlaves()),l.set(n,o),this.showHint(n,o))},_dragEnd:function(){this.filterAxes(),this.filter(),this.redrawSlaves(),this.hint&&this.hint.hide()},readSelection:function(){var e=this,t=e.selection.options,n=t.from,i=t.to,o=e.options.select;o.from=n,o.to=i},filterAxes:function(){var e,t,n,i,o,r,a=this,s=a.options.select;for(void 0===s&&(s={}),e=a.chart,t=e.options.categoryAxis,n=s.from,i=s.to,o=0;o<t.length;o++)r=t[o],r.pane!==h&&(r.min=n,r.max=i)},filter:function(){var e,t,n,o=this,a=o.chart,s=o.options.select;a.requiresHandlers(["navigatorFilter"])&&(e=this.mainAxis(),t={from:s.from,to:s.to},"category"!==e.options.type&&(n=new i.DateCategoryAxis(r({baseUnit:"fit"},a.options.categoryAxis[0],{categories:[s.from,s.to]}),a.chartService).options,t.from=i.addDuration(n.min,-n.baseUnitStep,n.baseUnit),t.to=i.addDuration(n.max,n.baseUnitStep,n.baseUnit)),this.chart.trigger("navigatorFilter",t))},_zoom:function(e){var t,n,i=this,o=i.chart._plotArea.categoryAxis,r=i.selection,a=i.options,s=a.select,l=a.liveDrag,c=this.mainAxis(),d=e.delta;r&&(t=c.categoryIndex(r.options.from),n=c.categoryIndex(r.options.to),e.originalEvent.preventDefault(),Math.abs(d)>1&&(d*=g),n-t>1?(r.expand(d),this.readSelection()):(o.options.min=s.from,s.from=o.scaleRange(-e.delta).min),l&&(this.filterAxes(),this.redrawSlaves()),r.set(s.from,s.to),this.showHint(this.options.select.from,this.options.select.to))},_zoomEnd:function(e){this._dragEnd(e)},showHint:function(e,t){var n=this.chart._plotArea;this.hint&&this.hint.show(e,t,n.backgroundBox())},_selectStart:function(e){return this.chart._selectStart(e)},_select:function(e){return this.showHint(e.from,e.to),this.chart._select(e)},_selectEnd:function(e){return this.hint&&this.hint.hide(),this.readSelection(),this.filterAxes(),this.filter(),this.redrawSlaves(),this.chart._selectEnd(e)},mainAxis:function(){var e=this.chart._plotArea;if(e)return e.namedCategoryAxes[p]},select:function(e,t){var n=this.options.select;return e&&t&&(n.from=this.parseDate(e),n.to=this.parseDate(t),this.filterAxes(),this.filter(),this.redrawSlaves(),this.selection.set(e,t)),{from:n.from,to:n.to}}}),m.setup=function(e,t){var n,i,o;void 0===e&&(e={}),void 0===t&&(t={}),e.__navi||(e.__navi=!0,n=r({},t.navigator,e.navigator),i=e.panes=[].concat(e.panes),o=r({},n.pane,{name:h}),n.visible||(o.visible=!1,o.height=.1),i.push(o),m.attachAxes(e,n),m.attachSeries(e,n,t))},m.attachAxes=function(e,t){var n=t.series||[],o=e.categoryAxis=[].concat(e.categoryAxis),a=e.valueAxis=[].concat(e.valueAxis),l=i.filterSeriesByType(n,s.EQUALLY_SPACED_SERIES),c=0===l.length,d=r({type:"date",pane:h,roundToBaseUnit:!c,justified:c,_collapse:!1,majorTicks:{visible:!0},tooltip:{visible:!1},labels:{step:1},autoBind:t.autoBindElements,autoBaseUnitSteps:{minutes:[1],hours:[1,2],days:[1,2],weeks:[],months:[1],years:[1]}}),u=t.categoryAxis;o.push(r({},d,{maxDateGroups:200},u,{name:p,title:null,baseUnit:"fit",baseUnitStep:"auto",labels:{visible:!1},majorTicks:{visible:!1}}),r({},d,u,{name:p+"_labels",maxDateGroups:20,baseUnitStep:"auto",labels:{position:""},plotBands:[],autoBaseUnitSteps:{minutes:[]},_overlap:!0}),r({},d,u,{name:p+"_ticks",maxDateGroups:200,majorTicks:{width:.5},plotBands:[],title:null,labels:{visible:!1,mirror:!0},_overlap:!0})),a.push(r({name:p,pane:h,majorGridLines:{visible:!1},visible:!1},t.valueAxis))},m.attachSeries=function(e,t,n){var i,o=e.series=e.series||[],a=[].concat(t.series||[]),s=n.seriesColors,l=t.seriesDefaults;for(i=0;i<a.length;i++)o.push(r({color:s[i%s.length],categoryField:t.dateField,visibleInLegend:!1,tooltip:{visible:!1}},l,a[i],{axis:p,categoryAxis:p,autoBind:t.autoBindElements}))},v=28,_=l.extend({applyDefaults:function(e,t){var n=i.elementSize(this.element).width||s.DEFAULT_WIDTH,o=t,a={seriesDefaults:{categoryField:e.dateField},axisDefaults:{categoryAxis:{name:"default",majorGridLines:{visible:!1},labels:{step:2},majorTicks:{visible:!1},maxDateGroups:Math.floor(n/v)}}};o&&(o=r({},o,a)),m.setup(e,o),l.fn.applyDefaults.call(this,e,o)},_setElementClass:function(e){i.addClass(e,"k-chart k-stockchart")},setOptions:function(e){this.destroyNavigator(),l.fn.setOptions.call(this,e)},noTransitionsRedraw:function(){var e=this.options.transitions;this.options.transitions=!1,this._fullRedraw(),this.options.transitions=e},_resize:function(){this.noTransitionsRedraw()},_redraw:function(){var e=this.navigator;!this._dirty()&&e&&e.options.partialRedraw?e.redrawSlaves():this._fullRedraw()},_dirty:function(){var e=this.options,t=[].concat(e.series,e.navigator.series),n=i.grep(t,function(e){return e&&e.visible}).length,o=this._seriesCount!==n;return this._seriesCount=n,o},_fullRedraw:function(){var e=this.navigator;e||(e=this.navigator=new m(this),this.trigger("navigatorCreated",{navigator:e})),e.clean(),e.setRange(),l.fn._redraw.call(this),e.initSelection()},_trackSharedTooltip:function(e){var t=this._plotArea,n=t.paneByPoint(e);n&&n.options.name===h?this._unsetActivePoint():l.fn._trackSharedTooltip.call(this,e)},bindCategories:function(){l.fn.bindCategories.call(this),this.copyNavigatorCategories()},copyNavigatorCategories:function(){var e,t,n,i=[].concat(this.options.categoryAxis);for(t=0;t<i.length;t++)n=i[t],n.name===p?e=n.categories:e&&n.pane===h&&(n.categories=e)},destroyNavigator:function(){this.navigator&&(this.navigator.destroy(),this.navigator=null)},destroy:function(){this.destroyNavigator(),l.fn.destroy.call(this)},_stopChartHandlers:function(e){var t=this._eventCoordinates(e),n=this._plotArea.paneByPoint(t);return l.fn._stopChartHandlers.call(this,e)||n&&n.options.name===h}}),i.setDefaultOptions(_,{dateField:"date",axisDefaults:{categoryAxis:{type:"date",baseUnit:"fit",justified:!0},valueAxis:{narrowRange:!0,labels:{format:"C"}}},navigator:{select:{},seriesDefaults:{markers:{visible:!1},tooltip:{visible:!0},line:{width:2}},hint:{},visible:!0},tooltip:{visible:!0},legend:{visible:!1}}),kendo.deepExtend(kendo.dataviz,{constants:f,Navigator:m,NavigatorHint:u,StockChart:_})}()},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/stock/stock-chart.min",["dataviz/stock/kendo-stock-chart.min"],e)}(function(){!function(e){function t(e,t){return[{field:"Date",operator:"gte",value:e},{field:"Date",operator:"lt",value:t}]}var n=window.kendo,i=n.dataviz,o=i.ChartInstanceObserver,r=i.ui.Chart,a=i.StockChart,s=i.constants,l=s.NAVIGATOR_AXIS,c=s.NAVIGATOR_PANE,d=n.deepExtend,u=i.defined,h=e.proxy,p="change",f=o.extend({handlerMap:{navigatorFilter:"_onNavigatorFilter",navigatorCreated:"_onNavigatorCreated"}}),g=r.extend({options:{name:"StockChart",dateField:"date",axisDefaults:{categoryAxis:{type:"date",baseUnit:"fit",justified:!0},valueAxis:{narrowRange:!0,labels:{format:"C"}}},navigator:{select:{},seriesDefaults:{markers:{visible:!1},tooltip:{visible:!0,template:"#= kendo.toString(category, 'd') #"},line:{width:2}},hint:{},visible:!0},tooltip:{visible:!0},legend:{visible:!1},persistSeriesVisibility:!0},_createChart:function(e,t){this._initNavigatorOptions(e),this._instance=new a(this.element[0],e,t,{observer:new f(this),sender:this,rtl:this._isRtl()})},_initNavigatorOptions:function(e){var t=e.navigator||{},i=n.support,o=i.touch,r=i.browser.mozilla;d(t,{autoBindElements:!t.dataSource,partialRedraw:t.dataSource,liveDrag:!o&&!r})},_initDataSource:function(e){var o,a,s,l,c=e||{},u=c.dataSource,h=u&&u.serverFiltering,p=[].concat(c.categoryAxis)[0],f=c.navigator||{},g=f.select,m=g&&g.from&&g.to;h&&m&&(o=[].concat(u.filter||[]),a=n.parseDate(g.from),s=n.parseDate(g.to),l=new i.DateCategoryAxis(d({baseUnit:"fit"},p,{categories:[a,s]}),n),u.filter=t(l.range().min,s).concat(o)),r.fn._initDataSource.call(this,e)},_onNavigatorCreated:function(e){this._instance=e.sender,this.options=e.sender.options,this._navigator=this.navigator=e.navigator,this._initNavigatorDataSource()},_initNavigatorDataSource:function(){var e=this.options.navigator,t=e.autoBind,i=e.dataSource;i&&(this._navigatorDataChangedHandler=this._navigatorDataChangedHandler||h(this._onNavigatorDataChanged,this),this._navigatorDataSource=n.data.DataSource.create(i).bind(p,this._navigatorDataChangedHandler),u(t)||(t=this.options.autoBind),t&&this._navigatorDataSource.fetch())},_bindNavigatorSeries:function(e,t){var n,i,o=e.length;for(n=0;n<o;n++)i=e[n],i.axis==l&&this._isBindable(i)&&(i.data=t)},_onNavigatorDataChanged:function(){var e,t,n,i,o=this,r=o._instance,a=o.options.categoryAxis,s=a.length,d=o._navigatorDataSource.view();for(this._bindNavigatorSeries(o.options.series,d),o._sourceSeries&&this._bindNavigatorSeries(o._sourceSeries,d),e=0;e<s;e++)t=a[e],t.pane==c&&(t.name==l?(o._bindCategoryAxis(t,d,e),n=t.categories):t.categories=n);r._model&&(i=this.navigator,i.redraw(),i.setRange(),(!o.options.dataSource||o.options.dataSource&&o._dataBound)&&i.redrawSlaves())},_bindCategories:function(){r.fn._bindCategories.call(this),this._instance&&this._instance.copyNavigatorCategories()},_onDataChanged:function(){r.fn._onDataChanged.call(this),this._dataBound=!0},setOptions:function(e){this._removeNavigatorDataSource(),this._initNavigatorOptions(e),this._instance.destroyNavigator(),r.fn.setOptions.call(this,e)},_onNavigatorFilter:function(e){this.dataSource.filter(t(e.from,e.to))},requiresHandlers:function(e){var t,n;return i.inArray("navigatorFilter",e)?(t=this.dataSource,n=t&&t.options.serverFiltering,n&&this.options.navigator.dataSource):r.fn.requiresHandlers.call(this,e)},_removeNavigatorDataSource:function(){var e=this._navigatorDataSource;e&&(e.unbind(p,this._navigatorDataChangedHandler),delete this._navigatorDataSource)},destroy:function(){r.fn.destroy.call(this),this._removeNavigatorDataSource()}});i.ui.plugin(g)}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.stock.min",["dataviz/stock/kendo-stock-chart.min","dataviz/stock/stock-chart.min"],e)}(function(){},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/sparkline/kendo-sparkline.min",["kendo.dataviz.chart.min"],e)}(function(){!function(){function e(e){var t,n,i=[];for(t=0;t<e.length;t++)n=e[t],i[t]=n.style.display,n.style.display="none";return i}function t(e,t){for(var n=0;n<e.length;n++)e[n].style.display=t[n]}function n(e){return i.isNumber(e)?[e]:e}var i,o,r,a,s,l,c,d,u,h,p;window.kendo.dataviz=window.kendo.dataviz||{},i=kendo.dataviz,o=i.constants,r=i.Chart,a=i.elementSize,s=i.deepExtend,l=-2,c=i.SharedTooltip.extend({_slotAnchor:function(e,t){var n,o=this.plotArea.categoryAxis,r=o.options.vertical,a=r?{horizontal:"left",vertical:"center"}:{horizontal:"center",vertical:"bottom"};return n=r?new i.Point(this.plotArea.box.x2,t.center().y):new i.Point(t.center().x,l),{point:n,align:a}},_defaultAnchor:function(e,t){return this._slotAnchor({},t)}}),d=150,u=150,h=[o.BAR,o.BULLET],p=r.extend({_setElementClass:function(e){i.addClass(e,"k-sparkline")},_initElement:function(e){r.fn._initElement.call(this,e),this._initialWidth=Math.floor(a(e).width)},_resize:function(){var n=this.element,i=e(n.childNodes);this._initialWidth=Math.floor(a(n).width),t(n.childNodes,i),r.fn._resize.call(this)},_modelOptions:function(){var n,i=this.options,o=this._surfaceWrap(),r=e(o.childNodes),l=document.createElement("span");return l.innerHTML=" ",o.appendChild(l),n=s({width:this._autoWidth,height:a(o).height,transitions:i.transitions},i.chartArea,{inline:!0,align:!1}),a(o,{width:n.width,height:n.height}),o.removeChild(l),t(o.childNodes,r),this.surface&&this.surface.resize(),n},_surfaceWrap:function(){if(!this.stage){var e=this.stage=document.createElement("span");this.element.appendChild(e)}return this.stage},_createPlotArea:function(e){var t=r.fn._createPlotArea.call(this,e);return this._autoWidth=this._initialWidth||this._calculateWidth(t),t},_calculateWidth:function(e){var t,n,r,s,l,c,h=this.options,p=i.getSpacing(h.chartArea.margin),f=e.charts,g=this._surfaceWrap(),m=0;for(t=0;t<f.length;t++)if(n=f[t],r=(n.options.series||[])[0]){if(r.type===o.BAR)return d;if(r.type===o.BULLET)return u;if(r.type===o.PIE)return a(g).height;s=n.categoryAxis,s&&(l=s.categoriesCount()*(!n.options.isStacked&&i.inArray(r.type,[o.COLUMN,o.VERTICAL_BULLET])?n.seriesOptions.length:1),m=Math.max(m,l))}return c=m*h.pointWidth,c>0&&(c+=p.left+p.right),c},_createSharedTooltip:function(e){return new c(this._plotArea,e)}}),p.normalizeOptions=function(e){var t=n(e);return t=i.isArray(t)?{seriesDefaults:{data:t}}:s({},t),t.series||(t.series=[{data:n(t.data)}]),s(t,{seriesDefaults:{type:t.type}}),(i.inArray(t.series[0].type,h)||i.inArray(t.seriesDefaults.type,h))&&(t=s({},{categoryAxis:{crosshair:{visible:!1}}},t)),t},i.setDefaultOptions(p,{chartArea:{margin:2},axisDefaults:{visible:!1,majorGridLines:{visible:!1},valueAxis:{narrowRange:!0}},seriesDefaults:{type:"line",area:{line:{width:.5}},bar:{stack:!0},padding:2,width:.5,overlay:{gradient:null},highlight:{visible:!1},border:{width:0},markers:{size:2,visible:!1}},tooltip:{visible:!0,shared:!0},categoryAxis:{crosshair:{visible:!0,tooltip:{visible:!1}}},legend:{visible:!1},transitions:!1,pointWidth:5,panes:[{clip:!1}]}),kendo.deepExtend(kendo.dataviz,{Sparkline:p})}()},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/sparkline/sparkline.min",["dataviz/sparkline/kendo-sparkline.min"],e)}(function(){!function(e){var t,n=kendo.dataviz,i=n.ui.Chart,o=n.Sparkline,r=n.ChartInstanceObserver,a=e.extend,s=i.extend({init:function(e,t){var n=t;n instanceof kendo.data.ObservableArray&&(n={seriesDefaults:{ +data:n}}),i.fn.init.call(this,e,o.normalizeOptions(n))},_createChart:function(e,t){this._instance=new o(this.element[0],e,t,{observer:new r(this),sender:this,rtl:this._isRtl()})},_createTooltip:function(){return new t(this.element,a({},this.options.tooltip,{rtl:this._isRtl()}))},options:{name:"Sparkline",chartArea:{margin:2},axisDefaults:{visible:!1,majorGridLines:{visible:!1},valueAxis:{narrowRange:!0}},seriesDefaults:{type:"line",area:{line:{width:.5}},bar:{stack:!0},padding:2,width:.5,overlay:{gradient:null},highlight:{visible:!1},border:{width:0},markers:{size:2,visible:!1}},tooltip:{visible:!0,shared:!0},categoryAxis:{crosshair:{visible:!0,tooltip:{visible:!1}}},legend:{visible:!1},transitions:!1,pointWidth:5,panes:[{clip:!1}]}});n.ui.plugin(s),t=n.Tooltip.extend({options:{animation:{duration:0}},_hideElement:function(){this.element&&this.element.hide().remove()}}),n.SparklineTooltip=t}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.sparkline.min",["dataviz/sparkline/kendo-sparkline.min","dataviz/sparkline/sparkline.min"],e)}(function(){},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/location.min",["kendo.drawing.min","util/main.min"],e)}(function(){!function(e,t){var n,i=Math,o=i.abs,r=i.atan,a=i.atan2,s=i.cos,l=i.max,c=i.min,d=i.sin,u=i.tan,h=window.kendo,p=h.Class,f=h.dataviz,g=h.deepExtend,m=h.drawing.util,v=m.defined,_=m.deg,b=m.rad,w=m.round,k=m.valueOrDefault,y=h.util.sqr,x=p.extend({init:function(e,t){1===arguments.length?(this.lat=e[0],this.lng=e[1]):(this.lat=e,this.lng=t)},DISTANCE_ITERATIONS:100,DISTANCE_CONVERGENCE:1e-12,DISTANCE_PRECISION:2,FORMAT:"{0:N6},{1:N6}",toArray:function(){return[this.lat,this.lng]},equals:function(e){return e&&e.lat===this.lat&&e.lng===this.lng},clone:function(){return new x(this.lat,this.lng)},round:function(e){return this.lng=w(this.lng,e),this.lat=w(this.lat,e),this},wrap:function(){return this.lng=this.lng%180,this.lat=this.lat%90,this},distanceTo:function(e,t){return this.greatCircleTo(e,t).distance},destination:function(e,t,n){var o,r,l,c,u;return t=b(t),n=n||f.map.datums.WGS84,o=b(this.lat),r=b(this.lng),l=e/h.dataviz.map.datums.WGS84.a,c=i.asin(d(o)*s(l)+s(o)*d(l)*s(t)),u=r+a(d(t)*d(l)*s(o),s(l)-d(o)*d(c)),new x(_(c),_(u))},greatCircleTo:function(e,t){var n,l,c,h,p,g,m,v,k,C,S,T,D,A,E,I,M,F,R,P,z,B,L,H,N,O,V,W,U;if(e=x.create(e),t=t||f.map.datums.WGS84,!e||this.clone().round(8).equals(e.clone().round(8)))return{distance:0,azimuthFrom:0,azimuthTo:0};for(n=t.a,l=t.b,c=t.f,h=b(e.lng-this.lng),p=r((1-c)*u(b(this.lat))),g=d(p),m=s(p),v=r((1-c)*u(b(e.lat))),k=d(v),C=s(v),S=h,D=this.DISTANCE_ITERATIONS,A=!1;!A&&D-- >0;)E=d(S),I=s(S),M=i.sqrt(y(C*E)+y(m*k-g*C*I)),R=g*k+m*C*I,z=a(M,R),B=m*C*E/M,F=1-y(B),P=0,0!==F&&(P=R-2*g*k/F),T=S,L=c/16*F*(4+c*(4-3*F)),S=h+(1-L)*c*B*(z+L*M*(P+L*R*(-1+2*y(P)))),A=o(S-T)<=this.DISTANCE_CONVERGENCE;return H=F*(y(n)-y(l))/y(l),N=1+H/16384*(4096+H*(-768+H*(320-175*H))),O=H/1024*(256+H*(-128+H*(74-47*H))),V=O*M*(P+O/4*(R*(-1+2*y(P))-O/6*P*(-3+4*y(M))*(-3+4*y(P)))),W=a(C*E,m*k-g*C*I),U=a(m*E,-g*C+m*k*I),{distance:w(l*N*(z-V),this.DISTANCE_PRECISION),azimuthFrom:_(W),azimuthTo:_(U)}}});x.fn.toString=function(){return h.format(this.FORMAT,this.lat,this.lng)},x.fromLngLat=function(e){return new x(e[1],e[0])},x.fromLatLng=function(e){return new x(e[0],e[1])},x.create=function(e,t){if(v(e))return e instanceof x?e.clone():1===arguments.length&&2===e.length?x.fromLatLng(e):new x(e,t)},n=p.extend({init:function(e,t){e=x.create(e),t=x.create(t),e.lng+180>t.lng+180&&e.lat+90<t.lat+90?(this.se=e,this.nw=t):(this.se=t,this.nw=e)},contains:function(e){var t=this.nw,n=this.se,i=k(e.lng,e[1]),o=k(e.lat,e[0]);return e&&i+180>=t.lng+180&&i+180<=n.lng+180&&o+90>=n.lat+90&&o+90<=t.lat+90},center:function(){var e=this.nw,t=this.se,n=e.lng+(t.lng-e.lng)/2,i=e.lat+(t.lat-e.lat)/2;return new x(i,n)},containsAny:function(e){var t,n=!1;for(t=0;t<e.length;t++)n=n||this.contains(e[t]);return n},include:function(e){var t=this.nw,n=this.se,i=k(e.lng,e[1]),o=k(e.lat,e[0]);t.lng=c(t.lng,i),t.lat=l(t.lat,o),n.lng=l(n.lng,i),n.lat=c(n.lat,o)},includeAll:function(e){for(var t=0;t<e.length;t++)this.include(e[t])},edges:function(){var e=this.nw,t=this.se;return{nw:this.nw,ne:new x(e.lat,t.lng),se:this.se,sw:new x(t.lat,e.lng)}},toArray:function(){var e=this.nw,t=this.se;return[e,new x(e.lat,t.lng),t,new x(t.lat,e.lng)]},overlaps:function(e){return this.containsAny(e.toArray())||e.containsAny(this.toArray())}}),n.World=new n([90,-180],[-90,180]),n.create=function(e,i){return e instanceof n?e:e&&i?new n(e,i):e&&4===e.length&&!i?new n([e[0],e[1]],[e[2],e[3]]):t},g(f,{map:{Extent:n,Location:x}})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/attribution.min",["kendo.drawing.min"],e)}(function(){!function(){var e=window.kendo,t=e.ui.Widget,n=e.template,i=e.drawing.util,o=i.valueOrDefault,r=i.defined,a=t.extend({init:function(e,n){t.fn.init.call(this,e,n),this._initOptions(n),this.items=[],this.element.addClass("k-widget k-attribution")},options:{name:"Attribution",separator:" | ",itemTemplate:"#= text #"},filter:function(e,t){this._extent=e,this._zoom=t,this._render()},add:function(e){r(e)&&("string"==typeof e&&(e={text:e}),this.items.push(e),this._render())},remove:function(e){var t,n,i=[];for(t=0;t<this.items.length;t++)n=this.items[t],n.text!==e&&i.push(n);this.items=i,this._render()},clear:function(){this.items=[],this.element.empty()},_render:function(){var e,t,i,o=[],r=n(this.options.itemTemplate);for(e=0;e<this.items.length;e++)t=this.items[e],i=this._itemText(t),""!==i&&o.push(r({text:i}));o.length>0?this.element.empty().append(o.join(this.options.separator)).show():this.element.hide()},_itemText:function(e){var t="",n=this._inZoomLevel(e.minZoom,e.maxZoom),i=this._inArea(e.extent);return n&&i&&(t+=e.text),t},_inZoomLevel:function(e,t){var n=!0;return e=o(e,-Number.MAX_VALUE),t=o(t,Number.MAX_VALUE),n=this._zoom>e&&this._zoom<t},_inArea:function(e){var t=!0;return e&&(t=e.contains(this._extent)),t}});e.dataviz.ui.plugin(a)}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/navigator.min",["kendo.core.min"],e)}(function(){!function(e){function t(e){return n.format('<button class="k-button k-navigator-{0}" aria-label="move {0}"><span class="k-icon k-i-arrow-60-{0}"/></button>',e)}var n=window.kendo,i=n.ui.Widget,o=n.keys,r=e.proxy,a=".kendoNavigator",s=t("up")+t("right")+t("down")+t("left"),l=i.extend({init:function(e,t){i.fn.init.call(this,e,t),this._initOptions(t),this.element.addClass("k-widget k-header k-shadow k-navigator").append(s).on("click"+a,".k-button",r(this,"_click"));var o=this.element.parent().closest("["+n.attr("role")+"]");this._keyroot=o.length>0?o:this.element,this._tabindex(this._keyroot),this._keydown=r(this._keydown,this),this._keyroot.on("keydown",this._keydown)},options:{name:"Navigator",panStep:1},events:["pan"],dispose:function(){this._keyroot.off("keydown",this._keydown)},_pan:function(e,t){var n=this.options.panStep;this.trigger("pan",{x:e*n,y:t*n})},_click:function(t){var n=0,i=0,o=e(t.currentTarget);o.is(".k-navigator-up")?i=1:o.is(".k-navigator-down")?i=-1:o.is(".k-navigator-right")?n=1:o.is(".k-navigator-left")&&(n=-1),this._pan(n,i),t.preventDefault()},_keydown:function(e){switch(e.which){case o.UP:this._pan(0,1),e.preventDefault();break;case o.DOWN:this._pan(0,-1),e.preventDefault();break;case o.RIGHT:this._pan(1,0),e.preventDefault();break;case o.LEFT:this._pan(-1,0),e.preventDefault()}}});n.dataviz.ui.plugin(l)}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/zoom.min",["kendo.core.min"],e)}(function(){!function(e){function t(e,t){return n.format('<button class="k-button k-zoom-{0}" title="zoom-{0}" aria-label="zoom-{0}"><span class="k-icon {1}"></span></button>',e,t)}var n=window.kendo,i=n.ui.Widget,o=n.keys,r=e.proxy,a=".kendoZoomControl",s=t("in","k-i-plus")+t("out","k-i-minus"),l=187,c=189,d=61,u=173,h=i.extend({init:function(e,t){i.fn.init.call(this,e,t),this._initOptions(t),this.element.addClass("k-widget k-zoom-control k-button-wrap k-buttons-horizontal k-button-group k-group-horizontal").append(s).on("click"+a,".k-button",r(this,"_click"));var o=this.element.parent().closest("["+n.attr("role")+"]");this._keyroot=o.length>0?o:this.element,this._tabindex(this._keyroot),this._keydown=r(this._keydown,this),this._keyroot.on("keydown",this._keydown)},options:{name:"ZoomControl",zoomStep:1},events:["change"],_change:function(e){var t=this.options.zoomStep;this.trigger("change",{delta:e*t})},_click:function(t){var n=e(t.currentTarget),i=1;n.is(".k-zoom-out")&&(i=-1),this._change(i),t.preventDefault()},_keydown:function(e){switch(e.which){case o.NUMPAD_PLUS:case l:case d:this._change(1);break;case o.NUMPAD_MINUS:case c:case u:this._change(-1)}}});n.dataviz.ui.plugin(h)}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/crs.min",["dataviz/map/location.min","kendo.drawing.min"],e)}(function(){!function(e,t){var n=Math,i=n.atan,o=n.exp,r=n.pow,a=n.sin,s=n.log,l=n.tan,c=window.kendo,d=c.Class,u=c.dataviz,h=c.deepExtend,p=c.geometry,f=p.Point,g=u.map,m=g.Location,v=c.drawing.util,_=v.rad,b=v.deg,w=v.limitValue,k=n.PI,y=k/2,x=k/4,C=k/180,S={a:6378137,b:6356752.314245179,f:.0033528106647474805,e:.08181919084262149},T=d.extend({init:function(e){this._initOptions(e)},MAX_LNG:180,MAX_LAT:85.0840590501,INVERSE_ITERATIONS:15,INVERSE_CONVERGENCE:1e-12,options:{centralMeridian:0,datum:S},forward:function(e,t){var n=this,i=n.options,o=i.datum,r=o.a,a=i.centralMeridian,s=w(e.lat,-n.MAX_LAT,n.MAX_LAT),l=t?w(e.lng,-n.MAX_LNG,n.MAX_LNG):e.lng,c=_(l-a)*r,d=n._projectLat(s);return new f(c,d)},_projectLat:function(e){var t=this.options.datum,n=t.e,i=t.a,o=_(e),c=l(x+o/2),d=n*a(o),u=r((1-d)/(1+d),n/2);return i*s(c*u)},inverse:function(e,t){var n=this,i=n.options,o=i.datum,r=o.a,a=i.centralMeridian,s=e.x/(C*r)+a,l=w(n._inverseY(e.y),-n.MAX_LAT,n.MAX_LAT);return t&&(s=w(s,-n.MAX_LNG,n.MAX_LNG)),new m(l,s)},_inverseY:function(e){var t,s,l,c,d=this,u=d.options.datum,h=u.a,p=u.e,f=p/2,g=o(-e/h),m=y-2*i(g);for(t=0;t<=d.INVERSE_ITERATIONS&&(s=p*a(m),l=r((1-s)/(1+s),f),c=y-2*i(g*l)-m,m+=c,!(n.abs(c)<=d.INVERSE_CONVERGENCE));t++);return b(m)}}),D=T.extend({MAX_LAT:85.0511287798,_projectLat:function(e){var t=this.options.datum.a,n=_(e),i=l(x+n/2);return t*s(i)},_inverseY:function(e){var t=this.options.datum.a,n=o(-e/t);return b(y-2*i(n))}}),A=d.extend({forward:function(e){return new f(e.lng,e.lat)},inverse:function(e){return new m(e.y,e.x)}}),E=d.extend({init:function(){var e=this,t=e._proj=new D,n=this.c=2*k*t.options.datum.a;this._tm=p.transform().translate(.5,.5).scale(1/n,-1/n),this._itm=p.transform().scale(n,-n).translate(-.5,-.5)},toPoint:function(e,t,n){var i=this._proj.forward(e,n);return i.transform(this._tm).scale(t||1)},toLocation:function(e,t,n){return e=e.clone().scale(1/(t||1)).transform(this._itm),this._proj.inverse(e,n)}}),I=d.extend({init:function(){this._proj=new T},toPoint:function(e){return this._proj.forward(e)},toLocation:function(e){return this._proj.inverse(e)}}),M=d.extend({init:function(){this._proj=new A},toPoint:function(e){return this._proj.forward(e)},toLocation:function(e){return this._proj.inverse(e)}});h(u,{map:{crs:{EPSG3395:I,EPSG3857:E,EPSG4326:M},datums:{WGS84:S},projections:{Equirectangular:A,Mercator:T,SphericalMercator:D}}})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/layers/base.min",["kendo.core.min","dataviz/map/location.min"],e)}(function(){!function(e,t){var n=e.proxy,i=window.kendo,o=i.Class,r=i.dataviz,a=i.deepExtend,s=r.map.Extent,l=i.drawing.util,c=l.defined,d=o.extend({init:function(t,i){this._initOptions(i),this.map=t,this.element=e("<div class='k-layer'></div>").css({zIndex:this.options.zIndex,opacity:this.options.opacity}).appendTo(t.scrollElement),this._beforeReset=n(this._beforeReset,this),this._reset=n(this._reset,this),this._resize=n(this._resize,this),this._panEnd=n(this._panEnd,this),this._activate(),this._updateAttribution()},destroy:function(){this._deactivate()},show:function(){this.reset(),this._activate(),this._applyExtent(!0)},hide:function(){this._deactivate(),this._setVisibility(!1)},reset:function(){this._beforeReset(),this._reset()},_reset:function(){this._applyExtent()},_beforeReset:e.noop,_resize:e.noop,_panEnd:function(){this._applyExtent()},_applyExtent:function(){var e=this.options,t=this.map.zoom(),n=!c(e.minZoom)||t>=e.minZoom,i=!c(e.maxZoom)||t<=e.maxZoom,o=s.create(e.extent),r=!o||o.overlaps(this.map.extent());this._setVisibility(n&&i&&r)},_setVisibility:function(e){this.element.css("display",e?"":"none")},_activate:function(){var e=this.map;e.bind("beforeReset",this._beforeReset),e.bind("reset",this._reset),e.bind("resize",this._resize),e.bind("panEnd",this._panEnd)},_deactivate:function(){var e=this.map;e.unbind("beforeReset",this._beforeReset),e.unbind("reset",this._reset),e.unbind("resize",this._resize),e.unbind("panEnd",this._panEnd)},_updateAttribution:function(){var e=this.map.attribution;e&&e.add(this.options.attribution)}});a(r,{map:{layers:{Layer:d}}})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/layers/shape.min",["dataviz/map/layers/base.min","dataviz/map/location.min"],e)}(function(){!function(e,t){var n=e.proxy,i=window.kendo,o=i.Class,r=i.data.DataSource,a=i.dataviz,s=i.deepExtend,l=i.geometry,c=i.drawing,d=c.Group,u=c.util.last,h=c.util.defined,p=a.map,f=p.Location,g=p.layers.Layer,m=g.extend({init:function(e,t){this._pan=n(this._pan,this),g.fn.init.call(this,e,t),this.surface=c.Surface.create(this.element,{width:e.scrollElement.width(),height:e.scrollElement.height()}),this._initRoot(),this.movable=new i.ui.Movable(this.surface.element),this._markers=[],this._click=this._handler("shapeClick"),this.surface.bind("click",this._click),this._mouseenter=this._handler("shapeMouseEnter"),this.surface.bind("mouseenter",this._mouseenter),this._mouseleave=this._handler("shapeMouseLeave"),this.surface.bind("mouseleave",this._mouseleave),this._initDataSource()},options:{autoBind:!0},destroy:function(){g.fn.destroy.call(this),this.surface.destroy(),this.dataSource.unbind("change",this._dataChange)},setDataSource:function(e){this.dataSource&&this.dataSource.unbind("change",this._dataChange),this.dataSource=i.data.DataSource.create(e),this.dataSource.bind("change",this._dataChange),this.options.autoBind&&this.dataSource.fetch()},_reset:function(){g.fn._reset.call(this),this._translateSurface(),this._data&&this._load(this._data)},_initRoot:function(){this._root=new d,this.surface.draw(this._root)},_beforeReset:function(){this.surface.clear(),this._initRoot()},_resize:function(){this.surface.size(this.map.size())},_initDataSource:function(){var e=this.options.dataSource;this._dataChange=n(this._dataChange,this),this.dataSource=r.create(e).bind("change",this._dataChange),e&&this.options.autoBind&&this.dataSource.fetch()},_dataChange:function(e){this._data=e.sender.view(),this._load(this._data)},_load:function(e){var t,n,i;for(this._clearMarkers(),this._loader||(this._loader=new v(this.map,this.options.style,this)),t=new d,n=0;n<e.length;n++)i=this._loader.parse(e[n]),i&&t.append(i);this._root.clear(),this._root.append(t)},shapeCreated:function(e){var t,n=!1;return e instanceof c.Circle&&(n=h(this._createMarker(e))),n||(t={layer:this,shape:e},n=this.map.trigger("shapeCreated",t)),n},featureCreated:function(e){e.layer=this,this.map.trigger("shapeFeatureCreated",e)},_createMarker:function(e){var t=this.map.markers.bind({location:e.location},e.dataItem);return t&&this._markers.push(t),t},_clearMarkers:function(){for(var e=0;e<this._markers.length;e++)this.map.markers.remove(this._markers[e]);this._markers=[]},_pan:function(){this._panning||(this._panning=!0,this.surface.suspendTracking())},_panEnd:function(e){g.fn._panEnd.call(this,e),this._translateSurface(),this.surface.resumeTracking(),this._panning=!1},_translateSurface:function(){var e=this.map,t=e.locationToView(e.extent().nw);this.surface.translate&&(this.surface.translate(t),this.movable.moveTo({x:t.x,y:t.y}))},_handler:function(e){var t=this;return function(n){if(n.element){var i={layer:t,shape:n.element,originalEvent:n.originalEvent};t.map.trigger(e,i)}}},_activate:function(){g.fn._activate.call(this),this.map.bind("pan",this._pan)},_deactivate:function(){g.fn._deactivate.call(this),this.map.unbind("pan",this._pan)}}),v=o.extend({init:function(e,t,n){this.observer=n,this.locator=e,this.style=t},parse:function(e){var t=new d,n=!0;return"Feature"===e.type?(n=!1,this._loadGeometryTo(t,e.geometry,e),this._featureCreated(t,e)):this._loadGeometryTo(t,e,e),n&&t.children.length<2&&(t=t.children[0]),t},_shapeCreated:function(e){var t=!1;return this.observer&&this.observer.shapeCreated&&(t=this.observer.shapeCreated(e)),t},_featureCreated:function(e,t){this.observer&&this.observer.featureCreated&&this.observer.featureCreated({group:e,dataItem:t,properties:t.properties})},_loadGeometryTo:function(e,t,n){var i,o,r=t.coordinates;switch(t.type){case"LineString":o=this._loadPolygon(e,[r],n),this._setLineFill(o);break;case"MultiLineString":for(i=0;i<r.length;i++)o=this._loadPolygon(e,[r[i]],n),this._setLineFill(o);break;case"Polygon":this._loadPolygon(e,r,n);break;case"MultiPolygon":for(i=0;i<r.length;i++)this._loadPolygon(e,r[i],n);break;case"Point":this._loadPoint(e,r,n);break;case"MultiPoint":for(i=0;i<r.length;i++)this._loadPoint(e,r[i],n)}},_setLineFill:function(e){var t=e.segments;(t.length<4||!t[0].anchor().equals(u(t).anchor()))&&(e.options.fill=null)},_loadShape:function(e,t){return this._shapeCreated(t)||e.append(t),t},_loadPolygon:function(e,t,n){var i=this._buildPolygon(t);return i.dataItem=n,this._loadShape(e,i)},_buildPolygon:function(e){var t,n,i,o=e.length>1?c.MultiPath:c.Path,r=new o(this.style);for(t=0;t<e.length;t++)for(n=0;n<e[t].length;n++)i=this.locator.locationToView(f.fromLngLat(e[t][n])),0===n?r.moveTo(i.x,i.y):r.lineTo(i.x,i.y);return r},_loadPoint:function(e,t,n){var i=f.fromLngLat(t),o=this.locator.locationToView(i),r=new l.Circle(o,10),a=new c.Circle(r,this.style);return a.dataItem=n,a.location=i,this._loadShape(e,a)}});s(i.data,{schemas:{geojson:{type:"json",data:function(e){return"FeatureCollection"===e.type?e.features:"GeometryCollection"===e.type?e.geometries:e}}},transports:{geojson:{read:{dataType:"json"}}}}),s(a,{map:{layers:{shape:m,ShapeLayer:m},GeoJSONLoader:v}})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/layers/bubble.min",["dataviz/map/layers/shape.min"],e)}(function(){!function(e,t){var n=window.kendo,i=n.getter,o=n.dataviz,r=n.deepExtend,a=n.geometry,s=n.drawing,l=s.util,c=l.defined,d=o.map,u=d.Location,h=d.layers.ShapeLayer,p=h.extend({options:{autoBind:!0,locationField:"location",valueField:"value",minSize:0,maxSize:100,scale:"sqrt",symbol:"circle"},_load:function(e){var t,n,o,r,a,s,l,d,h,p,f;if(this.surface.clear(),0!==e.length)for(t=this.options,n=i(t.valueField),e=e.slice(0),e.sort(function(e,t){return n(t)-n(e)}),o=this._scaleType(),a=0;a<e.length;a++)s=e[a],l=i(t.locationField)(s),d=i(t.valueField)(s),c(l)&&c(d)&&(r||(r=new o([0,d],[t.minSize,t.maxSize])),l=u.create(l),h=this.map.locationToView(l),p=r.map(d),f=this._createSymbol({center:h,size:p,style:t.style,dataItem:s,location:l}),f.dataItem=s,f.location=l,f.value=d,this._drawSymbol(f))},_scaleType:function(){var e=this.options.scale;return n.isFunction(e)?e:o.map.scales[e]},_createSymbol:function(e){var t=this.options.symbol;return n.isFunction(t)||(t=o.map.symbols[t]),t(e)},_drawSymbol:function(e){var t={layer:this,shape:e},n=this.map.trigger("shapeCreated",t);n||this.surface.draw(e)}}),f=n.Class.extend({init:function(e,t){var n,i;this._domain=e,this._range=t,n=Math.sqrt(e[1])-Math.sqrt(e[0]),i=t[1]-t[0],this._ratio=i/n},map:function(e){var t=(Math.sqrt(e)-Math.sqrt(this._domain[0]))*this._ratio;return this._range[0]+t}}),g={circle:function(e){var t=new a.Circle(e.center,e.size/2);return new s.Circle(t,e.style)},square:function(e){var t=new s.Path(e.style),n=e.size/2,i=e.center;return t.moveTo(i.x-n,i.y-n).lineTo(i.x+n,i.y-n).lineTo(i.x+n,i.y+n).lineTo(i.x-n,i.y+n).close(),t}};r(o,{map:{layers:{bubble:p,BubbleLayer:p},scales:{sqrt:f},symbols:g}})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/layers/tile.min",["dataviz/map/layers/base.min","dataviz/map/location.min"],e)}(function(){!function(e,t){function n(e){return new u(m(e.x),m(e.y))}var i=Math,o=e.proxy,r=window.kendo,a=r.Class,s=r.template,l=r.dataviz,c=r.deepExtend,d=r.geometry,u=d.Point,h=l.map.layers.Layer,p=r.util,f=p.renderSize,g=r.drawing.util,m=g.round,v=g.limitValue,_=h.extend({init:function(e,t){h.fn.init.call(this,e,t),"string"==typeof this.options.subdomains&&(this.options.subdomains=this.options.subdomains.split(""));var n=this._viewType();this._view=new n(this.element,this.options)},destroy:function(){h.fn.destroy.call(this),this._view.destroy(),this._view=null},_beforeReset:function(){var e=this.map,t=e.locationToLayer(e.extent().nw).round();this._view.viewOrigin(t)},_reset:function(){h.fn._reset.call(this),this._updateView(),this._view.reset()},_viewType:function(){return b},_activate:function(){h.fn._activate.call(this),r.support.mobileOS||(this._pan||(this._pan=r.throttle(o(this._render,this),100)),this.map.bind("pan",this._pan))},_deactivate:function(){h.fn._deactivate.call(this),this._pan&&this.map.unbind("pan",this._pan)},_updateView:function(){var e=this._view,t=this.map,n=t.extent(),i={nw:t.locationToLayer(n.nw).round(),se:t.locationToLayer(n.se).round()};e.center(t.locationToLayer(t.center())),e.extent(i),e.zoom(t.zoom())},_resize:function(){this._render()},_panEnd:function(e){h.fn._panEnd.call(this,e),this._render()},_render:function(){this._updateView(),this._view.render()}}),b=a.extend({init:function(e,t){this.element=e,this._initOptions(t),this.pool=new k},options:{tileSize:256,subdomains:["a","b","c"],urlTemplate:""},center:function(e){this._center=e},extent:function(e){this._extent=e},viewOrigin:function(e){this._viewOrigin=e},zoom:function(e){this._zoom=e},pointToTileIndex:function(e){return new u(i.floor(e.x/this.options.tileSize),i.floor(e.y/this.options.tileSize))},tileCount:function(){var e=this.size(),t=this.pointToTileIndex(this._extent.nw),n=this._extent.nw,o=this.indexToPoint(t).translate(-n.x,-n.y);return{x:i.ceil((i.abs(o.x)+e.width)/this.options.tileSize),y:i.ceil((i.abs(o.y)+e.height)/this.options.tileSize)}},size:function(){var e=this._extent.nw,t=this._extent.se,n=t.clone().translate(-e.x,-e.y);return{width:n.x,height:n.y}},indexToPoint:function(e){var t=e.x,n=e.y;return new u(t*this.options.tileSize,n*this.options.tileSize)},subdomainText:function(){var e=this.options.subdomains;return e[this.subdomainIndex++%e.length]},destroy:function(){this.element.empty(),this.pool.empty()},reset:function(){this.pool.reset(),this.subdomainIndex=0,this.render()},render:function(){var e,t,n,i=this.tileCount(),o=this.pointToTileIndex(this._extent.nw);for(t=0;t<i.x;t++)for(n=0;n<i.y;n++)e=this.createTile({x:o.x+t,y:o.y+n}),e.visible||e.show()},createTile:function(e){var t=this.tileOptions(e),n=this.pool.get(this._center,t);return 0===n.element.parent().length&&this.element.append(n.element),n},tileOptions:function(e){var t=this.wrapIndex(e),i=this.indexToPoint(e),o=this._viewOrigin,r=i.clone().translate(-o.x,-o.y);return{index:t,currentIndex:e,point:i,offset:n(r),zoom:this._zoom,size:this.options.tileSize,subdomain:this.subdomainText(),urlTemplate:this.options.urlTemplate,errorUrlTemplate:this.options.errorUrlTemplate}},wrapIndex:function(e){var t=i.pow(2,this._zoom);return{x:this.wrapValue(e.x,t),y:v(e.y,0,t-1)}},wrapValue:function(e,t){var n=i.abs(e)%t;return e=e>=0?n:t-(0===n?t:n)}}),w=a.extend({init:function(e,t){this.id=e,this.visible=!0,this._initOptions(t),this.createElement(),this.show()},options:{urlTemplate:"",errorUrlTemplate:""},createElement:function(){this.element=e("<img style='position: absolute; display: block;' alt='' />").css({width:this.options.size,height:this.options.size}).on("error",o(function(e){this.errorUrl()?e.target.setAttribute("src",this.errorUrl()):e.target.removeAttribute("src")},this))},show:function(){var e,t=this.element[0];t.style.top=f(this.options.offset.y),t.style.left=f(this.options.offset.x),e=this.url(),e&&t.setAttribute("src",e),t.style.visibility="visible",this.visible=!0},hide:function(){this.element[0].style.visibility="hidden",this.visible=!1},url:function(){var e=s(this.options.urlTemplate);return e(this.urlOptions())},errorUrl:function(){var e=s(this.options.errorUrlTemplate);return e(this.urlOptions())},urlOptions:function(){var e=this.options;return{zoom:e.zoom,subdomain:e.subdomain,z:e.zoom,x:e.index.x,y:e.index.y,s:e.subdomain,quadkey:e.quadkey,q:e.quadkey,culture:e.culture,c:e.culture}},destroy:function(){this.element&&(this.element.remove(),this.element=null)}}),k=a.extend({init:function(){this._items=[]},options:{maxSize:100},get:function(e,t){return this._items.length>=this.options.maxSize&&this._remove(e),this._create(t)},empty:function(){var e,t=this._items;for(e=0;e<t.length;e++)t[e].destroy();this._items=[]},reset:function(){var e,t=this._items;for(e=0;e<t.length;e++)t[e].hide()},_create:function(e){var t,n,i=this._items,o=p.hashKey(""+e.point+(""+e.offset)+e.zoom+e.urlTemplate);for(n=0;n<i.length;n++)if(i[n].id===o){t=i[n];break}return t?t.show():(t=new w(o,e),this._items.push(t)),t},_remove:function(e){var t,n,i=this._items,o=-1,r=-1;for(t=0;t<i.length;t++)n=i[t].options.point.distanceTo(e),n>o&&!i[t].visible&&(r=t,o=n);r!==-1&&(i[r].destroy(),i.splice(r,1))}});c(l,{map:{layers:{tile:_,TileLayer:_,ImageTile:w,TilePool:k,TileView:b}}})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/layers/bing.min",["dataviz/map/layers/tile.min"],e)}(function(){!function(e,t){var n=window.kendo,i=n.dataviz,o=n.deepExtend,r=n.drawing.util.defined,a=i.map.Extent,s=i.map.Location,l=i.map.layers.TileLayer,c=i.map.layers.TileView,d=l.extend({init:function(t,n){this.options.baseUrl=this._scheme()+"://dev.virtualearth.net/REST/v1/Imagery/Metadata/",l.fn.init.call(this,t,n),this._onMetadata=e.proxy(this._onMetadata,this),this._fetchMetadata()},options:{imagerySet:"road"},_fetchMetadata:function(){var t=this.options;if(!t.key)throw Error("Bing tile layer: API key is required");e.ajax({url:t.baseUrl+t.imagerySet,data:{output:"json",include:"ImageryProviders",key:t.key,uriScheme:this._scheme()},type:"get",dataType:"jsonp",jsonp:"jsonp",success:this._onMetadata})},_scheme:function(e){return e=e||window.location.protocol,"https"===e.replace(":","")?"https":"http"},_onMetadata:function(e){var t,n;e&&e.resourceSets.length&&(t=this.resource=e.resourceSets[0].resources[0],o(this._view.options,{urlTemplate:t.imageUrl.replace("{subdomain}","#= subdomain #").replace("{quadkey}","#= quadkey #").replace("{culture}","#= culture #"),subdomains:t.imageUrlSubdomains}),n=this.options,r(n.minZoom)||(n.minZoom=t.zoomMin),r(n.maxZoom)||(n.maxZoom=t.zoomMax),this._addAttribution(),"none"!==this.element.css("display")&&this._reset())},_viewType:function(){return u},_addAttribution:function(){var e,t,n,i,o,r=this.map.attribution;if(r&&(e=this.resource.imageryProviders))for(t=0;t<e.length;t++)for(n=e[t],i=0;i<n.coverageAreas.length;i++)o=n.coverageAreas[i],r.add({text:n.attribution,minZoom:o.zoomMin,maxZoom:o.zoomMax,extent:new a(new s(o.bbox[2],o.bbox[1]),new s(o.bbox[0],o.bbox[3]))})},imagerySet:function(e){return e?(this.options.imagerySet=e,this.map.attribution.clear(),this._fetchMetadata(),t):this.options.imagerySet}}),u=c.extend({options:{culture:"en-US"},tileOptions:function(e){var t=c.fn.tileOptions.call(this,e);return t.culture=this.options.culture,t.quadkey=this.tileQuadKey(this.wrapIndex(e)),t},tileQuadKey:function(e){var t,n,i,o="";for(i=this._zoom;i>0;i--)t=0,n=1<<i-1,0!==(e.x&n)&&t++,0!==(e.y&n)&&(t+=2),o+=t;return o}});o(i,{map:{layers:{bing:d,BingLayer:d,BingView:u}}})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/layers/marker.min",["dataviz/map/layers/base.min","dataviz/map/location.min","kendo.data.min","kendo.tooltip.min"],e)}(function(){!function(e,t){var n=document,i=Math,o=e.inArray,r=e.proxy,a=window.kendo,s=a.Class,l=a.data.DataSource,c=a.ui.Tooltip,d=a.dataviz,u=a.deepExtend,h=d.map,p=h.Location,f=h.layers.Layer,g=f.extend({init:function(e,t){f.fn.init.call(this,e,t),this._markerClick=r(this._markerClick,this),this.element.on("click",".k-marker",this._markerClick),this.items=[],this._initDataSource()},destroy:function(){f.fn.destroy.call(this),this.element.off("click",".k-marker",this._markerClick),this.dataSource.unbind("change",this._dataChange),this.clear()},options:{zIndex:1e3,autoBind:!0,dataSource:{},locationField:"location",titleField:"title"},add:function(t){if(!e.isArray(t))return this._addOne(t);for(var n=0;n<t.length;n++)this._addOne(t[n])},remove:function(e){e.destroy();var t=o(e,this.items);t>-1&&this.items.splice(t,1)},clear:function(){for(var e=0;e<this.items.length;e++)this.items[e].destroy();this.items=[]},update:function(e){var t,n=e.location();n&&(e.showAt(this.map.locationToView(n)),t={marker:e,layer:this},this.map.trigger("markerActivate",t))},_reset:function(){var e,t;for(f.fn._reset.call(this),e=this.items,t=0;t<e.length;t++)this.update(e[t])},bind:function(e,t){var n,i,o=h.Marker.create(e,this.options);if(o.dataItem=t,n={marker:o,layer:this},i=this.map.trigger("markerCreated",n),!i)return this.add(o),o},setDataSource:function(e){this.dataSource&&this.dataSource.unbind("change",this._dataChange),this.dataSource=a.data.DataSource.create(e),this.dataSource.bind("change",this._dataChange),this.options.autoBind&&this.dataSource.fetch()},_addOne:function(e){var t=m.create(e,this.options);return t.addTo(this),t},_initDataSource:function(){var e=this.options.dataSource;this._dataChange=r(this._dataChange,this),this.dataSource=l.create(e).bind("change",this._dataChange),e&&this.options.autoBind&&this.dataSource.fetch()},_dataChange:function(e){this._load(e.sender.view())},_load:function(e){var t,n,i,o;for(this._data=e,this.clear(),t=a.getter(this.options.locationField),n=a.getter(this.options.titleField),i=0;i<e.length;i++)o=e[i],this.bind({location:t(o),title:n(o)},o)},_markerClick:function(t){var n={marker:e(t.target).data("kendoMarker"),layer:this};this.map.trigger("markerClick",n)}}),m=s.extend({init:function(e){this.options=e||{}},addTo:function(e){this.layer=e.markers||e,this.layer.items.push(this),this.layer.update(this)},location:function(e){return e?(this.options.location=p.create(e).toArray(),this.layer&&this.layer.update(this),this):p.create(this.options.location)},showAt:function(e){this.render(),this.element.css({left:i.round(e.x),top:i.round(e.y)}),this.tooltip&&this.tooltip.popup&&this.tooltip.popup._position()},hide:function(){this.element&&(this.element.remove(),this.element=null),this.tooltip&&(this.tooltip.destroy(),this.tooltip=null)},destroy:function(){this.layer=null,this.hide()},render:function(){var t,i;this.element||(t=this.options,i=this.layer,this.element=e(n.createElement("span")).addClass("k-marker k-icon k-i-marker-"+a.toHyphens(t.shape||"pin")).attr("title",t.title).attr(t.attributes||{}).data("kendoMarker",this).css("zIndex",t.zIndex),i&&i.element.append(this.element),this.renderTooltip())},renderTooltip:function(){var e,t,n=this,i=n.options.title,o=n.options.tooltip||{}; +o&&c&&(e=o.template,e&&(t=a.template(e),o.content=function(e){return e.location=n.location(),e.marker=n,t(e)}),(i||o.content||o.contentUrl)&&(this.tooltip=new c(this.element,o),this.tooltip.marker=this))}});m.create=function(e,t){return e instanceof m?e:new m(u({},t,e))},u(d,{map:{layers:{marker:g,MarkerLayer:g},Marker:m}})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/map/main.min",["dataviz/map/crs.min","dataviz/map/location.min"],e)}(function(){!function(e,t){var n=document,i=Math,o=i.min,r=i.pow,a=e.proxy,s=window.kendo,l=s.ui.Widget,c=s.deepExtend,d=s.dataviz,u=d.ui,h=s.geometry,p=h.Point,f=d.map,g=f.Extent,m=f.Location,v=f.crs.EPSG3857,_=s.util,b=_.renderPos,w=s.drawing.util,k=w.defined,y=w.limitValue,x=w.valueOrDefault,C="k-",S=.9,T=.93,D="DOMMouseScroll mousewheel",A=5,E=1,I=l.extend({init:function(e,t){s.destroy(e),l.fn.init.call(this,e),this._initOptions(t),this.bind(this.events,t),this.crs=new v,this.element.addClass(C+this.options.name.toLowerCase()).css("position","relative").empty().append(n.createElement("div")),this._viewOrigin=this._getOrigin(),this._initScroller(),this._initMarkers(),this._initControls(),this._initLayers(),this._reset(),this._mousewheel=a(this._mousewheel,this),this.element.bind(D,this._mousewheel)},options:{name:"Map",controls:{attribution:!0,navigator:{panStep:100},zoom:!0},layers:[],layerDefaults:{shape:{style:{fill:{color:"#fff"},stroke:{color:"#aaa",width:.5}}},bubble:{style:{fill:{color:"#fff",opacity:.5},stroke:{color:"#aaa",width:.5}}},marker:{shape:"pinTarget",tooltip:{position:"top"}}},center:[0,0],zoom:3,minSize:256,minZoom:1,maxZoom:19,markers:[],markerDefaults:{shape:"pinTarget",tooltip:{position:"top"}},wraparound:!0},events:["beforeReset","click","markerActivate","markerClick","markerCreated","pan","panEnd","reset","shapeClick","shapeCreated","shapeFeatureCreated","shapeMouseEnter","shapeMouseLeave","zoomEnd","zoomStart"],destroy:function(){this.scroller.destroy(),this.navigator&&this.navigator.destroy(),this.attribution&&this.attribution.destroy(),this.zoomControl&&this.zoomControl.destroy(),this.markers.destroy();for(var e=0;e<this.layers.length;e++)this.layers[e].destroy();l.fn.destroy.call(this)},zoom:function(e){var t=this.options;return k(e)?(e=i.round(y(e,t.minZoom,t.maxZoom)),t.zoom!==e&&(t.zoom=e,this._reset()),this):t.zoom},center:function(e){return e?(this.options.center=m.create(e).toArray(),this._reset(),this):m.create(this.options.center)},extent:function(e){return e?(this._setExtent(e),this):this._getExtent()},setOptions:function(e){l.fn.setOptions.call(this,e),this._reset()},locationToLayer:function(e,t){var n=!this.options.wraparound;return e=m.create(e),this.crs.toPoint(e,this._layerSize(t),n)},layerToLocation:function(e,t){var n=!this.options.wraparound;return e=p.create(e),this.crs.toLocation(e,this._layerSize(t),n)},locationToView:function(e){var t,n;return e=m.create(e),t=this.locationToLayer(this._viewOrigin),n=this.locationToLayer(e),n.translateWith(t.scale(-1))},viewToLocation:function(e,t){var n=this.locationToLayer(this._getOrigin(),t);return e=p.create(e),e=e.clone().translateWith(n),this.layerToLocation(e,t)},eventOffset:function(e){var t,n,i,o,r,a=this.element.offset();return e.x||e.y?(o="location",n=e.x[o]-a.left,i=e.y[o]-a.top,t=new h.Point(n,i)):(r=e.originalEvent||e,n=x(r.pageX,r.clientX)-a.left,i=x(r.pageY,r.clientY)-a.top,t=new h.Point(n,i)),t},eventToView:function(e){var t=this.eventOffset(e);return this.locationToView(this.viewToLocation(t))},eventToLayer:function(e){return this.locationToLayer(this.eventToLocation(e))},eventToLocation:function(e){var t=this.eventOffset(e);return this.viewToLocation(t)},viewSize:function(){var e=this.element,t=this._layerSize(),n=e.width();return this.options.wraparound||(n=o(t,n)),{width:n,height:o(t,e.height())}},exportVisual:function(){return this._reset(),!1},_setOrigin:function(e,t){var n,i=this.viewSize();return e=this._origin=m.create(e),n=this.locationToLayer(e,t),n.x+=i.width/2,n.y+=i.height/2,this.options.center=this.layerToLocation(n,t).toArray(),this},_getOrigin:function(e){var t,n=this.viewSize();return!e&&this._origin||(t=this.locationToLayer(this.center()),t.x-=n.width/2,t.y-=n.height/2,this._origin=this.layerToLocation(t)),this._origin},_setExtent:function(e){var t,n,o,r,a,s,l,c=g.create(e),d=c.se.clone();for(this.options.wraparound&&d.lng<0&&e.nw.lng>0&&(d.lng=180+(180+d.lng)),e=new g(c.nw,d),this.center(e.center()),t=this.element.width(),n=this.element.height(),o=this.options.maxZoom;o>=this.options.minZoom&&(r=this.locationToLayer(e.nw,o),a=this.locationToLayer(e.se,o),s=i.abs(a.x-r.x),l=i.abs(a.y-r.y),!(s<=t&&l<=n));o--);this.zoom(o)},_getExtent:function(){var e,t=this._getOrigin(),n=this.locationToLayer(t),i=this.viewSize();return n.x+=i.width,n.y+=i.height,e=this.layerToLocation(n),new g(t,e)},_zoomAround:function(e,t){this._setOrigin(this.layerToLocation(e,t),t),this.zoom(t)},_initControls:function(){var e=this.options.controls;u.Attribution&&e.attribution&&this._createAttribution(e.attribution),s.support.mobileOS||(u.Navigator&&e.navigator&&this._createNavigator(e.navigator),u.ZoomControl&&e.zoom&&this._createZoomControl(e.zoom))},_createControlElement:function(t,n){var i=t.position||n,o="."+b(i).replace(" ","."),r=e(".k-map-controls"+o,this.element);return 0===r.length&&(r=e("<div>").addClass("k-map-controls "+b(i)).appendTo(this.element)),e("<div>").appendTo(r)},_createAttribution:function(e){var t=this._createControlElement(e,"bottomRight");this.attribution=new u.Attribution(t,e)},_createNavigator:function(e){var t=this._createControlElement(e,"topLeft"),n=this.navigator=new u.Navigator(t,e);this._navigatorPan=a(this._navigatorPan,this),n.bind("pan",this._navigatorPan),this._navigatorCenter=a(this._navigatorCenter,this),n.bind("center",this._navigatorCenter)},_navigatorPan:function(e){var t=this,n=t.scroller,i=n.scrollLeft+e.x,o=n.scrollTop-e.y,r=this._virtualSize,a=this.element.height(),s=this.element.width();i=y(i,r.x.min,r.x.max-s),o=y(o,r.y.min,r.y.max-a),t.scroller.one("scroll",function(e){t._scrollEnd(e)}),t.scroller.scrollTo(-i,-o)},_navigatorCenter:function(){this.center(this.options.center)},_createZoomControl:function(e){var t=this._createControlElement(e,"topLeft"),n=this.zoomControl=new u.ZoomControl(t,e);this._zoomControlChange=a(this._zoomControlChange,this),n.bind("change",this._zoomControlChange)},_zoomControlChange:function(e){this.trigger("zoomStart",{originalEvent:e})||(this.zoom(this.zoom()+e.delta),this.trigger("zoomEnd",{originalEvent:e}))},_initScroller:function(){var e=s.support.mobileOS?T:S,t=this.options.zoomable!==!1,n=this.scroller=new s.mobile.ui.Scroller(this.element.children(0),{friction:e,velocityMultiplier:A,zoom:t,mousewheelScrolling:!1,supportDoubleTap:!0});n.bind("scroll",a(this._scroll,this)),n.bind("scrollEnd",a(this._scrollEnd,this)),n.userEvents.bind("gesturestart",a(this._scaleStart,this)),n.userEvents.bind("gestureend",a(this._scale,this)),n.userEvents.bind("doubleTap",a(this._doubleTap,this)),n.userEvents.bind("tap",a(this._tap,this)),this.scrollElement=n.scrollElement},_initLayers:function(){var e,t,n,i,o,r=this.options.layers,a=this.layers=[];for(e=0;e<r.length;e++)t=r[e],n=t.type||"shape",i=this.options.layerDefaults[n],o=d.map.layers[n],a.push(new o(this,c({},i,t)))},_initMarkers:function(){this.markers=new f.layers.MarkerLayer(this,this.options.markerDefaults),this.markers.add(this.options.markers)},_scroll:function(e){var t=this.locationToLayer(this._viewOrigin).round(),n=e.sender.movable,i=new h.Point(n.x,n.y).scale(-1).scale(1/n.scale);t.x+=i.x,t.y+=i.y,this._scrollOffset=i,this._setOrigin(this.layerToLocation(t)),this.trigger("pan",{originalEvent:e,origin:this._getOrigin(),center:this.center()})},_scrollEnd:function(e){this._scrollOffset&&this._panComplete()&&(this._scrollOffset=null,this._panEndTS=new Date,this.trigger("panEnd",{originalEvent:e,origin:this._getOrigin(),center:this.center()}))},_panComplete:function(){return new Date-(this._panEndTS||0)>50},_scaleStart:function(e){if(this.trigger("zoomStart",{originalEvent:e})){var t=e.touches[1];t&&t.cancel()}},_scale:function(e){var t=this.scroller.movable.scale,n=this._scaleToZoom(t),i=new h.Point(e.center.x,e.center.y),o=this.viewToLocation(i,n),r=this.locationToLayer(o,n),a=r.translate(-i.x,-i.y);this._zoomAround(a,n),this.trigger("zoomEnd",{originalEvent:e})},_scaleToZoom:function(e){var t=this._layerSize()*e,n=t/this.options.minSize,o=i.log(n)/i.log(2);return i.round(o)},_reset:function(){this.attribution&&this.attribution.filter(this.center(),this.zoom()),this._viewOrigin=this._getOrigin(!0),this._resetScroller(),this.trigger("beforeReset"),this.trigger("reset")},_resetScroller:function(){var e,t,n,i,o=this.scroller,a=o.dimensions.x,s=o.dimensions.y,l=this._layerSize(),c=this.extent().nw,d=this.locationToLayer(c).round();o.movable.round=!0,o.reset(),o.userEvents.cancel(),e=this.zoom(),o.dimensions.forcedMinScale=r(2,this.options.minZoom-e),o.dimensions.maxScale=r(2,this.options.maxZoom-e),t={min:-d.x,max:l-d.x},n={min:-d.y,max:l-d.y},this.options.wraparound&&(t.max=20*l,t.min=-t.max),this.options.pannable===!1&&(i=this.viewSize(),t.min=n.min=0,t.max=i.width,n.max=i.height),a.makeVirtual(),s.makeVirtual(),a.virtualSize(t.min,t.max),s.virtualSize(n.min,n.max),this._virtualSize={x:t,y:n}},_renderLayers:function(){var e,t,n,i,o,r=this.options.layers,a=this.layers=[],s=this.scrollWrap;for(s.empty(),e=0;e<r.length;e++)t=r[e],n=t.type||"shape",i=this.options.layerDefaults[n],o=d.map.layers[n],a.push(new o(this,c({},i,t)))},_layerSize:function(e){return e=x(e,this.options.zoom),this.options.minSize*r(2,e)},_tap:function(e){if(this._panComplete()){var t=this.eventOffset(e);this.trigger("click",{originalEvent:e,location:this.viewToLocation(t)})}},_doubleTap:function(e){var t,n,i,o,r,a=this.options;a.zoomable!==!1&&(this.trigger("zoomStart",{originalEvent:e})||(t=this.zoom()+E,n=this.eventOffset(e),i=this.viewToLocation(n),o=this.locationToLayer(i,t),r=o.translate(-n.x,-n.y),this._zoomAround(r,t),this.trigger("zoomEnd",{originalEvent:e})))},_mousewheel:function(e){var t,n,i,o,r,a,s,l;e.preventDefault(),t=d.mwDelta(e)>0?-1:1,n=this.options,i=this.zoom(),o=y(i+t,n.minZoom,n.maxZoom),n.zoomable!==!1&&o!==i&&(this.trigger("zoomStart",{originalEvent:e})||(r=this.eventOffset(e),a=this.viewToLocation(r),s=this.locationToLayer(a,o),l=s.translate(-r.x,-r.y),this._zoomAround(l,o),this.trigger("zoomEnd",{originalEvent:e})))}});d.ui.plugin(I)}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.map.min",["kendo.data.min","kendo.userevents.min","kendo.tooltip.min","kendo.mobile.scroller.min","kendo.draganddrop.min","kendo.dataviz.core.min","dataviz/map/location.min","dataviz/map/attribution.min","dataviz/map/navigator.min","dataviz/map/zoom.min","dataviz/map/crs.min","dataviz/map/layers/base.min","dataviz/map/layers/shape.min","dataviz/map/layers/bubble.min","dataviz/map/layers/tile.min","dataviz/map/layers/bing.min","dataviz/map/layers/marker.min","dataviz/map/main.min"],e)}(function(){return window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/diagram/utils.min",["kendo.core.min"],e)}(function(){!function(e,t){function n(e,n,i){function o(e){for(var t=1;e*t%1;)t*=10;return t}var r,a,s,l;if(t===e||t===n)return[];if(i&&u.sign(n-e)!=u.sign(i))throw"The sign of the increment should allow to reach the stop-value.";if(i=i||1,e=e||0,n=n||e,(n-e)/i===1/0)throw"Infinite range defined.";if(r=[],a=-1,l=o(Math.abs(i)),e*=l,n*=l,i*=l,e>n&&i>0&&(i=-i),i<0)for(;(s=e+i*++a)>=n;)r.push(s/l);else for(;(s=e+i*++a)<=n;)r.push(s/l);return r}function i(e,t){if(e==t)return 0;var n=t.x-e.x,i=e.y-t.y,o=Math.atan(n/i);return i>=0?n<0?o+2*Math.PI:o:o+Math.PI}var o,r,a=window.kendo,s=a.dataviz.diagram={},l=a.deepExtend,c=e.isArray,d=1e-6,u={};l(u,{isNearZero:function(e){return Math.abs(e)<d},isDefined:function(e){return t!==e},isUndefined:function(e){return t===e||null===e},isObject:function(e){return e===Object(e)},has:function(e,t){return Object.hasOwnProperty.call(e,t)},isString:function(e){return"[object String]"==Object.prototype.toString.call(e)},isBoolean:function(e){return"[object Boolean]"==Object.prototype.toString.call(e)},isType:function(e,t){return Object.prototype.toString.call(e)=="[object "+t+"]"},isNumber:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},isEmpty:function(e){if(null===e)return!0;if(c(e)||u.isString(e))return 0===e.length;for(var t in e)if(u.has(e,t))return!1;return!0},simpleExtend:function(e,t){if(u.isObject(t))for(var n in t)e[n]=t[n]},initArray:function(e,t){var n,i=[];for(n=0;n<e;++n)i[n]=t;return i},serializePoints:function(e){var t,n,i=[];for(t=0;t<e.length;t++)n=e[t],i.push(n.x+";"+n.y);return i.join(";")},deserializePoints:function(e){var t,n=e.split(";"),i=[];if(n.length%2!==0)throw"Not an array of points.";for(t=0;t<n.length;t+=2)i.push(new s.Point(parseInt(n[t],10),parseInt(n[t+1],10)));return i},randomInteger:function(e,t){return parseInt(Math.floor(Math.random()*t)+e,10)},DFT:function(e,t){var n,i;if(t(e),e.childNodes)for(n=0;n<e.childNodes.length;n++)i=e.childNodes[n],this.DFT(i,t)},getMatrixAngle:function(e){return null===e||0===e.d?0:180*Math.atan2(e.b,e.d)/Math.PI},getMatrixScaling:function(e){var t=Math.sqrt(e.a*e.a+e.c*e.c),n=Math.sqrt(e.b*e.b+e.d*e.d);return[t,n]}}),u.sign=function(e){return e?e<0?-1:1:0},u.findAngle=function(e,t){return 180*i(e,t)/Math.PI},u.forEach=function(e,t,n){for(var i=0;i<e.length;i++)t.call(n,e[i],i,e)},u.any=function(e,t){for(var n=0;n<e.length;++n)if(t(e[n]))return e[n];return null},u.remove=function(e,t){for(var n;(n=u.indexOf(e,t))!==-1;)e.splice(n,1);return e},u.contains=function(e,t){return u.indexOf(e,t)!==-1},u.indexOf=function(t,n){return e.inArray(n,t)},u.fold=function(e,t,n,i){var o,r,a=arguments.length>2;for(o=0;o<e.length;o++)r=e[o],a?n=t.call(i,n,r,o,e):(n=r,a=!0);if(!a)throw"Reduce of empty array with no initial value";return n},u.find=function(e,t,n){var i;return u.any(e,function(e,o,r){return!!t.call(n,e,o,r)&&(i=e,!0)}),i},u.first=function(e,t,n){return 0===e.length?null:u.isUndefined(t)?e[0]:u.find(e,t,n)},u.insert=function(e,t,n){return e.splice(n,0,t),e},u.all=function(e,t,n){var i,o,r=!0;for(o=0;o<e.length&&(i=e[o],r=r&&t.call(n,i,o,e),r);o++);return r},u.clear=function(e){e.splice(0,e.length)},u.bisort=function(e,t,n){if(u.isUndefined(e))throw"First array is not specified.";if(u.isUndefined(t))throw"Second array is not specified.";if(e.length!=t.length)throw"The two arrays should have equal length";var i,o=[];for(i=0;i<e.length;i++)o.push({x:e[i],y:t[i]});for(o.sort(u.isUndefined(n)?function(e,t){return e.x-t.x}:function(e,t){return n(e.x,t.x)}),u.clear(e),u.clear(t),i=0;i<o.length;i++)e.push(o[i].x),t.push(o[i].y)},u.addRange=function(e,t){e.push.apply(e,t)},o={easeInOut:function(e){return-Math.cos(e*Math.PI)/2+.5}},r=a.Class.extend({init:function(){this.adapters=[],this.target=0,this.tick=0,this.interval=20,this.duration=800,this.lastTime=null,this.handlers=[];var e=this;this.transition=o.easeInOut,this.timerDelegate=function(){e.onTimerEvent()}},addAdapter:function(e){this.adapters.push(e)},onComplete:function(e){this.handlers.push(e)},removeHandler:function(t){this.handlers=e.grep(this.handlers,function(e){return e!==t})},trigger:function(){var e=this;this.handlers&&u.forEach(this.handlers,function(t){return t.call(null!==e.caller?e.caller:e)})},onStep:function(){},seekTo:function(e){this.seekFromTo(this.tick,e)},seekFromTo:function(e,t){this.target=Math.max(0,Math.min(1,t)),this.tick=Math.max(0,Math.min(1,e)),this.lastTime=(new Date).getTime(),this.intervalId||(this.intervalId=window.setInterval(this.timerDelegate,this.interval))},stop:function(){this.intervalId&&(window.clearInterval(this.intervalId),this.intervalId=null,this.trigger())},play:function(e){0!==this.adapters.length&&(null!==e&&(this.caller=e),this.initState(),this.seekFromTo(0,1))},reverse:function(){this.seekFromTo(1,0)},initState:function(){if(0!==this.adapters.length)for(var e=0;e<this.adapters.length;e++)this.adapters[e].initState()},propagate:function(){var e,t=this.transition(this.tick);for(e=0;e<this.adapters.length;e++)this.adapters[e].update(t)},onTimerEvent:function(){var e,t=(new Date).getTime(),n=t-this.lastTime;this.lastTime=t,e=n/this.duration*(this.tick<this.target?1:-1),Math.abs(e)>=Math.abs(this.tick-this.target)?this.tick=this.target:this.tick+=e;try{this.propagate()}finally{this.onStep.call(this),this.target==this.tick&&this.stop()}}}),a.deepExtend(s,{init:function(e){a.init(e,s.ui)},Utils:u,Range:n,Ticker:r})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/diagram/math.min",["dataviz/diagram/utils.min","kendo.dataviz.core.min"],e)}(function(){!function(e,t){function n(e){return Math.abs(e)<R}function i(e,t,i,o,r){var a,s,l,c,d=(t.x-e.x)*(o.y-i.y)-(t.y-e.y)*(o.x-i.x);if(!n(d)&&(a=(e.y-i.y)*(o.x-i.x)-(e.x-i.x)*(o.y-i.y),s=(e.y-i.y)*(t.x-e.x)-(e.x-i.x)*(t.y-e.y),l=a/d,c=s/d,!r||!(l<0||l>1||c<0||c>1)))return new A(e.x+l*(t.x-e.x),e.y+l*(t.y-e.y))}function o(e,t){var n,i,o;do n=2*Math.random()-1,i=2*Math.random()-1,o=n*n+i*i;while(!o||o>1);return e+t*n*Math.sqrt(-2*Math.log(o)/o)}function r(e){var t,n,i;for(D.isUndefined(e)&&(e=10),t="",n="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",i=e;i>0;--i)t+=n.charAt(Math.round(Math.random()*(n.length-1)));return t}var a,s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y=window.kendo,x=y.dataviz.diagram,C=y.Class,S=y.deepExtend,T=y.dataviz,D=x.Utils,A=T.Point2D,E=y.isFunction,I=D.contains,M=e.map,F=3,R=1e-6;S(A.fn,{plus:function(e){return new A(this.x+e.x,this.y+e.y)},minus:function(e){return new A(this.x-e.x,this.y-e.y)},offset:function(e){return new A(this.x-e,this.y-e)},times:function(e){return new A(this.x*e,this.y*e)},normalize:function(){return 0===this.length()?new A:this.times(1/this.length())},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},toString:function(){return"("+this.x+","+this.y+")"},lengthSquared:function(){return this.x*this.x+this.y*this.y},middleOf:function(e,t){return new A(t.x-e.x,t.y-e.y).times(.5).plus(e)},toPolar:function(e){var t,n,i,o=1;if(e&&(o=180/Math.PI),t=Math.atan2(Math.abs(this.y),Math.abs(this.x)),n=Math.PI/2,i=this.length(),0===this.x){if(0===this.y)return new u(0,0);if(this.y>0)return new u(i,o*n);if(this.y<0)return new u(i,3*o*n)}else if(this.x>0){if(0===this.y)return new u(i,0);if(this.y>0)return new u(i,o*t);if(this.y<0)return new u(i,o*(4*n-t))}else{if(0===this.y)return new u(i,2*n);if(this.y>0)return new u(i,o*(2*n-t));if(this.y<0)return new u(i,o*(2*n+t))}},isOnLine:function(e,t){var n,i,o,r,a;return e.x>t.x&&(n=t,t=e,e=n),i=new s(e.x,e.y).inflate(F,F),o=new s(t.x,t.y).inflate(F,F),!!i.union(o).contains(this)&&(e.x===t.x||e.y===t.y||(e.y<t.y?(r=i.x+(o.x-i.x)*(this.y-(i.y+i.height))/(o.y+o.height-(i.y+i.height)),a=i.x+i.width+(o.x+o.width-(i.x+i.width))*(this.y-i.y)/(o.y-i.y)):(r=i.x+(o.x-i.x)*(this.y-i.y)/(o.y-i.y),a=i.x+i.width+(o.x+o.width-(i.x+i.width))*(this.y-(i.y+i.height))/(o.y+o.height-(i.y+i.height))),this.x>r&&this.x<a))}}),S(A,{parse:function(e){var t=e.slice(1,e.length-1),n=t.split(","),i=parseInt(n[0],10),o=parseInt(n[1],10);if(!isNaN(i)&&!isNaN(o))return new A(i,o)}}),a=C.extend({init:function(e,t,n){this.point=e,this.left=t,this.right=n}}),s=C.extend({init:function(e,t,n,i){this.x=e||0,this.y=t||0,this.width=n||0,this.height=i||0},contains:function(e){return e.x>=this.x&&e.x<=this.x+this.width&&e.y>=this.y&&e.y<=this.y+this.height},inflate:function(e,n){return n===t&&(n=e),this.x-=e,this.y-=n,this.width+=2*e+1,this.height+=2*n+1,this},offset:function(e,t){var n=e,i=t;return e instanceof A&&(n=e.x,i=e.y),this.x+=n,this.y+=i,this},union:function(e){var t=Math.min(this.x,e.x),n=Math.min(this.y,e.y),i=Math.max(this.x+this.width,e.x+e.width),o=Math.max(this.y+this.height,e.y+e.height);return new s(t,n,i-t,o-n)},center:function(){return new A(this.x+this.width/2,this.y+this.height/2)},top:function(){return new A(this.x+this.width/2,this.y)},right:function(){return new A(this.x+this.width,this.y+this.height/2)},bottom:function(){return new A(this.x+this.width/2,this.y+this.height)},left:function(){return new A(this.x,this.y+this.height/2)},topLeft:function(){return new A(this.x,this.y)},topRight:function(){return new A(this.x+this.width,this.y)},bottomLeft:function(){return new A(this.x,this.y+this.height)},bottomRight:function(){return new A(this.x+this.width,this.y+this.height)},clone:function(){return new s(this.x,this.y,this.width,this.height)},isEmpty:function(){return!this.width&&!this.height},equals:function(e){return this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height},rotatedBounds:function(e){var t=this.clone(),n=this.rotatedPoints(e),i=n[0],o=n[1],r=n[2],a=n[3];return t.x=Math.min(r.x,i.x,o.x,a.x),t.y=Math.min(r.y,i.y,o.y,a.y),t.width=Math.max(r.x,i.x,o.x,a.x)-t.x,t.height=Math.max(r.y,i.y,o.y,a.y)-t.y,t},rotatedPoints:function(e){var t=this,n=t.center(),i=t.bottomRight().rotate(n,360-e),o=t.topLeft().rotate(n,360-e),r=t.topRight().rotate(n,360-e),a=t.bottomLeft().rotate(n,360-e);return[o,r,i,a]},toString:function(e){return e=e||" ",this.x+e+this.y+e+this.width+e+this.height},scale:function(e,t,n,i,o){var r,a,s,l=this.topLeft(),c=this.center();l.rotate(c,360-o).rotate(i,o),r=n.minus(l),a=new A(r.x*e,r.y*t),s=r.minus(a),l=l.plus(s),l.rotate(i,360-o).rotate(c,o),this.x=l.x,this.y=l.y,this.width*=e,this.height*=t},zoom:function(e){return this.x*=e,this.y*=e,this.width*=e,this.height*=e,this},overlaps:function(e){var t=this.bottomRight(),n=e.bottomRight(),i=!(t.x<e.x||t.y<e.y||n.x<this.x||n.y<this.y);return i}}),l=C.extend({init:function(e,t){this.width=e,this.height=t}}),l.prototype.Empty=new l(0,0),s.toRect=function(e){return e instanceof s||(e=new s(e.x,e.y,e.width,e.height)),e},s.empty=function(){return new s(0,0,0,0)},s.fromPoints=function(e,t){if(isNaN(e.x)||isNaN(e.y)||isNaN(t.x)||isNaN(t.y))throw"Some values are NaN.";return new s(Math.min(e.x,t.x),Math.min(e.y,t.y),Math.abs(e.x-t.x),Math.abs(e.y-t.y))},c={lines:function(e,t,n,o){return i(e,t,n,o)},segments:function(e,t,n,o){return i(e,t,n,o,!0)},rectWithLine:function(e,t,n){return c.segments(t,n,e.topLeft(),e.topRight())||c.segments(t,n,e.topRight(),e.bottomRight())||c.segments(t,n,e.bottomLeft(),e.bottomRight())||c.segments(t,n,e.topLeft(),e.bottomLeft())},rects:function(e,t,n){var i,o,r=t.topLeft(),a=t.topRight(),s=t.bottomLeft(),l=t.bottomRight(),d=t.center();return n&&(r=r.rotate(d,n),a=a.rotate(d,n),s=s.rotate(d,n),l=l.rotate(d,n)),i=e.contains(r)||e.contains(a)||e.contains(s)||e.contains(l)||c.rectWithLine(e,r,a)||c.rectWithLine(e,r,s)||c.rectWithLine(e,a,l)||c.rectWithLine(e,s,l),i||(r=e.topLeft(),a=e.topRight(),s=e.bottomLeft(),l=e.bottomRight(),n&&(o=360-n,r=r.rotate(d,o),a=a.rotate(d,o),s=s.rotate(d,o),l=l.rotate(d,o)),i=t.contains(r)||t.contains(a)||t.contains(s)||t.contains(l)),i}},d=C.extend({init:function(e){this.container=s.toRect(e)},align:function(e,t){var n,i=t.toLowerCase().split(" ");for(n=0;n<i.length;n++)e=this._singleAlign(e,i[n]);return e},_singleAlign:function(e,t){return E(this[t])?this[t](e):e},left:function(e){return this._align(e,this._left)},center:function(e){return this._align(e,this._center)},right:function(e){return this._align(e,this._right)},stretch:function(e){return this._align(e,this._stretch)},top:function(e){return this._align(e,this._top)},middle:function(e){return this._align(e,this._middle)},bottom:function(e){return this._align(e,this._bottom)},_left:function(e,t){t.x=e.x},_center:function(e,t){t.x=(e.width-t.width)/2||0},_right:function(e,t){t.x=e.width-t.width},_top:function(e,t){t.y=e.y},_middle:function(e,t){t.y=(e.height-t.height)/2||0},_bottom:function(e,t){t.y=e.height-t.height},_stretch:function(e,t){t.x=0,t.y=0,t.height=e.height,t.width=e.width},_align:function(e,t){return e=s.toRect(e),t(this.container,e),e}}),u=C.extend({init:function(e,t){this.r=e,this.angle=t}}),h=C.extend({init:function(e,t,n,i,o,r){this.a=e||0,this.b=t||0,this.c=n||0,this.d=i||0,this.e=o||0,this.f=r||0},plus:function(e){this.a+=e.a,this.b+=e.b,this.c+=e.c,this.d+=e.d,this.e+=e.e,this.f+=e.f},minus:function(e){this.a-=e.a,this.b-=e.b,this.c-=e.c,this.d-=e.d,this.e-=e.e,this.f-=e.f},times:function(e){return new h(this.a*e.a+this.c*e.b,this.b*e.a+this.d*e.b,this.a*e.c+this.c*e.d,this.b*e.c+this.d*e.d,this.a*e.e+this.c*e.f+this.e,this.b*e.e+this.d*e.f+this.f)},apply:function(e){return new A(this.a*e.x+this.c*e.y+this.e,this.b*e.x+this.d*e.y+this.f)},applyRect:function(e){return s.fromPoints(this.apply(e.topLeft()),this.apply(e.bottomRight()))},toString:function(){return"matrix("+this.a+" "+this.b+" "+this.c+" "+this.d+" "+this.e+" "+this.f+")"}}),S(h,{fromSVGMatrix:function(e){var t=new h;return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t.e=e.e,t.f=e.f,t},fromMatrixVector:function(e){var t=new h;return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t.e=e.e,t.f=e.f,t},fromList:function(e){if(6!==e.length)throw"The given list should consist of six elements.";var t=new h;return t.a=e[0],t.b=e[1],t.c=e[2],t.d=e[3],t.e=e[4],t.f=e[5],t},translation:function(e,t){var n=new h;return n.a=1,n.b=0,n.c=0,n.d=1,n.e=e,n.f=t,n},unit:function(){return new h(1,0,0,1,0,0)},rotation:function(e,t,n){var i=new h;return i.a=Math.cos(e*Math.PI/180),i.b=Math.sin(e*Math.PI/180),i.c=-i.b,i.d=i.a,i.e=t-t*i.a+n*i.b||0,i.f=n-n*i.a-t*i.b||0,i},scaling:function(e,t){var n=new h;return n.a=e,n.b=0,n.c=0,n.d=t,n.e=0,n.f=0,n},parse:function(e){var t,n;if(e){if(e=e.trim(),"matrix"===e.slice(0,6).toLowerCase()){if(n=e.slice(7,e.length-1).trim(),t=n.split(","),6===t.length)return h.fromList(M(t,function(e){return parseFloat(e)}));if(t=n.split(" "),6===t.length)return h.fromList(M(t,function(e){return parseFloat(e)}))}if("("===e.slice(0,1)&&")"===e.slice(e.length-1)&&(e=e.substr(1,e.length-1)),e.indexOf(",")>0&&(t=e.split(","),6===t.length))return h.fromList(M(t,function(e){return parseFloat(e)}));if(e.indexOf(" ")>0&&(t=e.split(" "),6===t.length))return h.fromList(M(t,function(e){return parseFloat(e)}))}return t}}),p=C.extend({init:function(e,t,n,i,o,r){this.a=e||0,this.b=t||0,this.c=n||0,this.d=i||0,this.e=o||0,this.f=r||0},fromMatrix:function(e){var t=new p;return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t.e=e.e,t.f=e.f,t}}),f={_distanceToLineSquared:function(e,t,n){function i(e,t){return(e.x-t.x)*(e.x-t.x)+(e.y-t.y)*(e.y-t.y)}if(t===n)return i(e,t);var o=n.x-t.x,r=n.y-t.y,a=(e.x-t.x)*o+(e.y-t.y)*r;return a<0?i(t,e):(a=(n.x-e.x)*o+(n.y-e.y)*r,a<0?i(n,e):(a=(n.x-e.x)*r-(n.y-e.y)*o,a*a/(o*o+r*r)))},distanceToLine:function(e,t,n){return Math.sqrt(this._distanceToLineSquared(e,t,n))},distanceToPolyline:function(e,t){var n,i,o,r,a=Number.MAX_VALUE;if(D.isUndefined(t)||0===t.length)return Number.MAX_VALUE;for(n=0;n<t.length-1;n++)i=t[n],o=t[n+1],r=this._distanceToLineSquared(e,i,o),r<a&&(a=r);return Math.sqrt(a)}},g=y.Class.extend({init:function(){this._buckets=[],this.length=0},add:function(e,t){var n=this._createGetBucket(e);return D.isDefined(t)&&(n.value=t),n},get:function(e){return this._bucketExists(e)?this._createGetBucket(e):null},set:function(e,t){this.add(e,t)},containsKey:function(e){return this._bucketExists(e)},remove:function(e){if(this._bucketExists(e)){var t=this._hash(e);return delete this._buckets[t],this.length--,e}},forEach:function(e){var t,n,i,o,r=this._hashes();for(t=0,n=r.length;t<n;t++)i=r[t],o=this._buckets[i],D.isUndefined(o)||e(o)},clone:function(){var e,t,n,i,o=new g,r=this._hashes();for(e=0,t=r.length;e<t;e++)n=r[e],i=this._buckets[n],D.isUndefined(i)||o.add(i.key,i.value);return o},_hashes:function(){var e,t=[];for(e in this._buckets)this._buckets.hasOwnProperty(e)&&t.push(e);return t},_bucketExists:function(e){var t=this._hash(e);return D.isDefined(this._buckets[t])},_createGetBucket:function(e){var t=this._hash(e),n=this._buckets[t];return D.isUndefined(n)&&(n={key:e},this._buckets[t]=n,this.length++),n},_hash:function(e){if(D.isNumber(e))return e;if(D.isString(e))return this._hashString(e);if(D.isObject(e))return this._objectHashId(e);throw"Unsupported key type."},_hashString:function(e){var t,n,i=0;if(0===e.length)return i;for(t=0;t<e.length;t++)n=e.charCodeAt(t),i=32*i-i+n;return i},_objectHashId:function(e){var t=e._hashId;return D.isUndefined(t)&&(t=r(),e._hashId=t),t}}),m=y.Observable.extend({init:function(t){var n,i=this;if(y.Observable.fn.init.call(i),this._hashTable=new g,this.length=0,D.isDefined(t))if(e.isArray(t))for(n=0;n<t.length;n++)this.add(t[n]);else t.forEach(function(e,t){this.add(e,t)},this)},add:function(e,t){var n=this._hashTable.get(e);n||(n=this._hashTable.add(e),this.length++,this.trigger("changed")),n.value=t},set:function(e,t){this.add(e,t)},get:function(e){var t=this._hashTable.get(e);if(t)return t.value;throw Error("Cannot find key "+e)},containsKey:function(e){return this._hashTable.containsKey(e)},remove:function(e){if(this.containsKey(e))return this.trigger("changed"),this.length--,this._hashTable.remove(e)},forEach:function(e,t){this._hashTable.forEach(function(n){e.call(t,n.key,n.value)})},forEachValue:function(e,t){this._hashTable.forEach(function(n){e.call(t,n.value)})},forEachKey:function(e,t){this._hashTable.forEach(function(n){e.call(t,n.key)})},keys:function(){var e=[];return this.forEachKey(function(t){e.push(t)}),e}}),v=y.Class.extend({init:function(){this._tail=null,this._head=null,this.length=0},enqueue:function(e){var t={value:e,next:null};this._head?(this._tail.next=t,this._tail=this._tail.next):(this._head=t,this._tail=this._head),this.length++},dequeue:function(){if(this.length<1)throw Error("The queue is empty.");var e=this._head.value;return this._head=this._head.next,this.length--,e},contains:function(e){for(var t=this._head;t;){if(t.value===e)return!0;t=t.next}return!1}}),_=y.Observable.extend({init:function(e){var t=this;y.Observable.fn.init.call(t),this._hashTable=new g,this.length=0,D.isDefined(e)&&(e instanceof g?e.forEach(function(e){this.add(e)}):e instanceof m&&e.forEach(function(e,t){this.add({key:e,value:t})},this))},contains:function(e){return this._hashTable.containsKey(e)},add:function(e){var t=this._hashTable.get(e);t||(this._hashTable.add(e,e),this.length++,this.trigger("changed"))},get:function(e){return this.contains(e)?this._hashTable.get(e).value:null},hash:function(e){return this._hashTable._hash(e)},remove:function(e){this.contains(e)&&(this._hashTable.remove(e),this.length--,this.trigger("changed"))},forEach:function(e,t){this._hashTable.forEach(function(t){e(t.value)},t)},toArray:function(){var e=[];return this.forEach(function(t){e.push(t)}),e}}),b=y.Class.extend({init:function(e,t){if(this.links=[],this.outgoing=[],this.incoming=[],this.weight=1,this.id=D.isDefined(e)?e:r(),D.isDefined(t)){this.associatedShape=t;var n=t.bounds();this.width=n.width,this.height=n.height,this.x=n.x,this.y=n.y}else this.associatedShape=null;this.data=null,this.type="Node",this.shortForm="Node '"+this.id+"'",this.isVirtual=!1},isIsolated:function(){return D.isEmpty(this.links)},bounds:function(e){return D.isDefined(e)?(this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,t):new x.Rect(this.x,this.y,this.width,this.height)},isLinkedTo:function(e){var t=this;return D.any(t.links,function(n){return n.getComplement(t)===e})},getChildren:function(){var e,t,n,i;if(0===this.outgoing.length)return[];for(e=[],t=0,n=this.outgoing.length;t<n;t++)i=this.outgoing[t],e.push(i.getComplement(this));return e},getParents:function(){var e,t,n,i;if(0===this.incoming.length)return[];for(e=[],t=0,n=this.incoming.length;t<n;t++)i=this.incoming[t],e.push(i.getComplement(this));return e},clone:function(){var e=new b;return D.isDefined(this.weight)&&(e.weight=this.weight),D.isDefined(this.balance)&&(e.balance=this.balance),D.isDefined(this.owner)&&(e.owner=this.owner),e.associatedShape=this.associatedShape,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e; +},adjacentTo:function(e){return null!==this.isLinkedTo(e)},removeLink:function(e){e.source===this&&(D.remove(this.links,e),D.remove(this.outgoing,e),e.source=null),e.target===this&&(D.remove(this.links,e),D.remove(this.incoming,e),e.target=null)},hasLinkTo:function(e){return D.any(this.outgoing,function(t){return t.target===e})},degree:function(){return this.links.length},incidentWith:function(e){return I(this.links,e)},getLinksWith:function(e){return D.all(this.links,function(t){return t.getComplement(this)===e},this)},getNeighbors:function(){var e=[];return D.forEach(this.incoming,function(t){e.push(t.getComplement(this))},this),D.forEach(this.outgoing,function(t){e.push(t.getComplement(this))},this),e}}),w=y.Class.extend({init:function(e,t,n,i){if(D.isUndefined(e))throw"The source of the new link is not set.";if(D.isUndefined(t))throw"The target of the new link is not set.";var o,a;o=D.isString(e)?new b(e):e,a=D.isString(t)?new b(t):t,this.source=o,this.target=a,this.source.links.push(this),this.target.links.push(this),this.source.outgoing.push(this),this.target.incoming.push(this),this.id=D.isDefined(n)?n:r(),this.associatedConnection=D.isDefined(i)?i:null,this.type="Link",this.shortForm="Link '"+this.source.id+"->"+this.target.id+"'"},getComplement:function(e){if(this.source!==e&&this.target!==e)throw"The given node is not incident with this link.";return this.source===e?this.target:this.source},getCommonNode:function(e){return this.source===e.source||this.source===e.target?this.source:this.target===e.source||this.target===e.target?this.target:null},isBridging:function(e,t){return this.source===e&&this.target===t||this.source===t&&this.target===e},getNodes:function(){return[this.source,this.target]},incidentWith:function(e){return this.source===e||this.target===e},adjacentTo:function(e){return I(this.source.links,e)||I(this.target.links,e)},changeSource:function(e){D.remove(this.source.links,this),D.remove(this.source.outgoing,this),e.links.push(this),e.outgoing.push(this),this.source=e},changeTarget:function(e){D.remove(this.target.links,this),D.remove(this.target.incoming,this),e.links.push(this),e.incoming.push(this),this.target=e},changesNodes:function(e,t){this.source===e?this.changeSource(t):this.target===e&&this.changeTarget(t)},reverse:function(){var e=this.source,t=this.target;return this.source=t,D.remove(e.outgoing,this),this.source.outgoing.push(this),this.target=e,D.remove(t.incoming,this),this.target.incoming.push(this),this},directTo:function(e){if(this.source!==e&&this.target!==e)throw"The given node is not incident with this link.";this.target!==e&&this.reverse()},createReverseEdge:function(){var e=this.clone();return e.reverse(),e.reversed=!0,e},clone:function(){var e=new w(this.source,this.target);return e}}),k=y.Class.extend({init:function(e){this.links=[],this.nodes=[],this._nodeMap=new m,this.diagram=null,this._root=null,D.isDefined(e)?D.isString(e)?this.id=e:(this.diagram=e,this.id=e.id):this.id=r(),this.bounds=new s,this._hasCachedRelationships=!1,this.type="Graph"},cacheRelationships:function(e){var t,n,i;if(D.isUndefined(e)&&(e=!1),!this._hasCachedRelationships||e){for(t=0,n=this.nodes.length;t<n;t++)i=this.nodes[t],i.children=this.getChildren(i),i.parents=this.getParents(i);this._hasCachedRelationships=!0}},assignLevels:function(e,t,n){var i,o,r,a;if(!e)throw"Start node not specified.";for(D.isUndefined(t)&&(t=0),this.cacheRelationships(),D.isUndefined(n)&&(n=new m,D.forEach(this.nodes,function(e){n.add(e,!1)})),n.set(e,!0),e.level=t,i=e.children,o=0,r=i.length;o<r;o++)a=i[o],a&&!n.get(a)&&this.assignLevels(a,t+1,n)},root:function(e){if(D.isUndefined(e)){if(this._root)return this._root;var t=D.first(this.nodes,function(e){return 0===e.incoming.length});return t?t:D.first(this.nodes)}this._root=e},getConnectedComponents:function(){var e,t,n,i,o;for(this.componentIndex=0,this.setItemIndices(),e=D.initArray(this.nodes.length,-1),t=0;t<this.nodes.length;t++)e[t]===-1&&(this._collectConnectedNodes(e,t),this.componentIndex++);for(n=[],i=0;i<this.componentIndex;++i)n[i]=new k;for(i=0;i<e.length;++i)o=n[e[i]],o.addNodeAndOutgoings(this.nodes[i]);return n.sort(function(e,t){return t.nodes.length-e.nodes.length}),n},_collectConnectedNodes:function(e,t){e[t]=this.componentIndex;var n=this.nodes[t];D.forEach(n.links,function(t){var i=t.getComplement(n),o=i.index;e[o]===-1&&this._collectConnectedNodes(e,o)},this)},calcBounds:function(){var e,t,n,i;if(this.isEmpty())return this.bounds=new s;for(e=null,t=0,n=this.nodes.length;t<n;t++)i=this.nodes[t],e=e?e.union(i.bounds()):i.bounds();return this.bounds=e},getSpanningTree:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,p=new k,f=new m;for(p.root=e.clone(),p.root.level=0,p.root.id=e.id,f.add(e,p.root),e.level=0,i=[],o=[],p._addNode(p.root),i.push(e),o.push(e),r=1;o.length>0;)for(a=o.pop(),s=0;s<a.links.length;s++)l=a.links[s],c=l.getComplement(a),I(i,c)||(c.level=a.level+1,r<c.level+1&&(r=c.level+1),I(o,c)||o.push(c),I(i,c)||i.push(c),f.containsKey(a)?t=f.get(a):(t=a.clone(),t.level=a.level,t.id=a.id,f.add(a,t)),f.containsKey(c)?n=f.get(c):(n=c.clone(),n.level=c.level,n.id=c.id,f.add(c,n)),d=new w(t,n),p.addLink(d));for(u=[],h=0;h<r;h++)u.push([]);return D.forEach(p.nodes,function(e){u[e.level].push(e)}),p.treeLevels=u,p.cacheRelationships(),p},takeRandomNode:function(t,n){if(D.isUndefined(t)&&(t=[]),D.isUndefined(n)&&(n=4),0===this.nodes.length)return null;if(1===this.nodes.length)return I(t,this.nodes[0])?null:this.nodes[0];var i=e.grep(this.nodes,function(e){return!I(t,e)&&e.degree()<=n});return D.isEmpty(i)?null:i[D.randomInteger(0,i.length)]},isEmpty:function(){return D.isEmpty(this.nodes)},isHealthy:function(){return D.all(this.links,function(e){return I(this.nodes,e.source)&&I(this.nodes,e.target)},this)},getParents:function(e){if(!this.hasNode(e))throw"The given node is not part of this graph.";return e.getParents()},getChildren:function(e){if(!this.hasNode(e))throw"The given node is not part of this graph.";return e.getChildren()},addLink:function(e,n,i){var o,r,a;if(D.isUndefined(e))throw"The source of the link is not defined.";if(D.isUndefined(n)){if(D.isDefined(e.type)&&"Link"===e.type)return this.addExistingLink(e),t;throw"The target of the link is not defined."}return o=this.getNode(e),D.isUndefined(o)&&(o=this.addNode(e)),r=this.getNode(n),D.isUndefined(r)&&(r=this.addNode(n)),a=new w(o,r),D.isDefined(i)&&(a.owner=i),this.links.push(a),a},removeAllLinks:function(){for(;this.links.length>0;){var e=this.links[0];this.removeLink(e)}},addExistingLink:function(e){var t,n;this.hasLink(e)||(this.links.push(e),this.hasNode(e.source.id)?(t=this.getNode(e.source.id),e.changeSource(t)):this.addNode(e.source),this.hasNode(e.target.id)?(n=this.getNode(e.target.id),e.changeTarget(n)):this.addNode(e.target))},hasLink:function(e){if(D.isString(e))return D.any(this.links,function(t){return t.id===e});if("Link"===e.type)return I(this.links,e);throw"The given object is neither an identifier nor a Link."},getNode:function(e){var t=e.id||e;if(this._nodeMap.containsKey(t))return this._nodeMap.get(t)},hasNode:function(e){var t=e.id||e;return this._nodeMap.containsKey(t)},_addNode:function(e){this.nodes.push(e),this._nodeMap.add(e.id,e)},_removeNode:function(e){D.remove(this.nodes,e),this._nodeMap.remove(e.id)},removeNode:function(e){var t,n,i,o,r=e;if(D.isString(e)&&(r=this.getNode(e)),!D.isDefined(r))throw"The identifier should be a Node or the Id (string) of a node.";for(t=r.links,r.links=[],n=0,i=t.length;n<i;n++)o=t[n],this.removeLink(o);this._removeNode(r)},areConnected:function(e,t){return D.any(this.links,function(n){return n.source==e&&n.target==t||n.source==t&&n.target==e})},removeLink:function(e){D.remove(this.links,e),D.remove(e.source.outgoing,e),D.remove(e.source.links,e),D.remove(e.target.incoming,e),D.remove(e.target.links,e)},addNode:function(e,t,n){var i=null;if(!D.isDefined(e))throw"No Node or identifier for a new Node is given.";if(D.isString(e)){if(this.hasNode(e))return this.getNode(e);i=new b(e)}else{if(this.hasNode(e))return this.getNode(e);i=e}return D.isDefined(t)&&i.bounds(t),D.isDefined(n)&&(i.owner=n),this._addNode(i),i},addNodeAndOutgoings:function(e){this.hasNode(e)||this._addNode(e);var t=e.outgoing;e.outgoing=[],D.forEach(t,function(e){this.addExistingLink(e)},this)},setItemIndices:function(){var e;for(e=0;e<this.nodes.length;++e)this.nodes[e].index=e;for(e=0;e<this.links.length;++e)this.links[e].index=e},clone:function(e){var t,n=new k,i=D.isDefined(e)&&e===!0;return i&&(n.nodeMap=new m,n.linkMap=new m),t=new m,D.forEach(this.nodes,function(e){var o=e.clone();t.set(e,o),n._addNode(o),i&&n.nodeMap.set(o,e)}),D.forEach(this.links,function(e){if(t.containsKey(e.source)&&t.containsKey(e.target)){var o=n.addLink(t.get(e.source),t.get(e.target));i&&n.linkMap.set(o,e)}}),n},linearize:function(e){return k.Utils.linearize(this,e)},depthFirstTraversal:function(e,t){var n,i;if(D.isUndefined(e))throw"You need to supply a starting node.";if(D.isUndefined(t))throw"You need to supply an action.";if(!this.hasNode(e))throw"The given start-node is not part of this graph";n=this.getNode(e),i=[],this._dftIterator(n,t,i)},_dftIterator:function(e,t,n){var i,o,r,a;for(t(e),n.push(e),i=e.getChildren(),o=0,r=i.length;o<r;o++)a=i[o],I(n,a)||this._dftIterator(a,t,n)},breadthFirstTraversal:function(e,t){var n,i,o,r,a,s,l,c;if(D.isUndefined(e))throw"You need to supply a starting node.";if(D.isUndefined(t))throw"You need to supply an action.";if(!this.hasNode(e))throw"The given start-node is not part of this graph";for(n=this.getNode(e),i=new v,o=[],i.enqueue(n);i.length>0;)for(r=i.dequeue(),t(r),o.push(r),a=r.getChildren(),s=0,l=a.length;s<l;s++)c=a[s],I(o,c)||I(i,c)||i.enqueue(c)},_stronglyConnectedComponents:function(e,t,n,i,o,r,a){var s,l,c,d,u;for(n.add(t,a),i.add(t,a),a++,r.push(t),s=t.getChildren(),c=0,d=s.length;c<d;c++)l=s[c],n.containsKey(l)?I(r,l)&&i.add(t,Math.min(i.get(t),n.get(l))):(this._stronglyConnectedComponents(e,l,n,i,o,r,a),i.add(t,Math.min(i.get(t),i.get(l))));if(i.get(t)===n.get(t)){u=[];do l=r.pop(),u.push(l);while(l!==t);(!e||u.length>1)&&o.push(u)}},findCycles:function(e){var t,n,i,o,r,a,s;for(D.isUndefined(e)&&(e=!0),t=new m,n=new m,i=[],o=[],r=0,a=this.nodes.length;r<a;r++)s=this.nodes[r],t.containsKey(s)||this._stronglyConnectedComponents(e,s,t,n,i,o,0);return i},isAcyclic:function(){return D.isEmpty(this.findCycles())},isSubGraph:function(e){var t=e.linearize(),n=this.linearize();return D.all(t,function(e){return I(n,e)})},makeAcyclic:function(){var e,t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,v,_,b,w,k,y,x,C,S,T,A,E,I,M,F,R;if(this.isEmpty()||this.nodes.length<=1||this.links.length<=1)return[];if(2==this.nodes.length){if(e=[],this.links.length>1)for(t=this.links[0],n=t.source,i=0,o=this.links.length;i<o;i++)r=this.links[i],r.source!=n&&(a=r.reverse(),e.push(a));return e}for(s=this.clone(!0),l=this.nodes.length,c=new m,d=function(e){return 0===e.outgoing.length?2-l:0===e.incoming.length?l-2:e.outgoing.length-e.incoming.length},u=function(e,t){var n=d(e,l);t.containsKey(n)||t.set(n,[]),t.get(n).push(e)},D.forEach(s.nodes,function(e){u(e,c)}),h=[],p=[];s.nodes.length>0;){if(c.containsKey(2-l))for(_=c.get(2-l);_.length>0;){for(g=_.pop(),b=0;b<g.links.length;b++)w=g.links[b],f=w.getComplement(g),v=d(f,l),D.remove(c.get(v),f),f.removeLink(w),u(f,c);s._removeNode(g),p.unshift(g)}if(c.containsKey(l-2))for(k=c.get(l-2);k.length>0;){for(f=k.pop(),y=0;y<f.links.length;y++)x=f.links[y],g=x.getComplement(f),v=d(g,l),D.remove(c.get(v),g),g.removeLink(x),u(g,c);h.push(f),s._removeNode(f)}if(s.nodes.length>0)for(C=l-3;C>2-l;C--)if(c.containsKey(C)&&c.get(C).length>0){for(S=c.get(C),T=S.pop(),A=0;A<T.links.length;A++)E=T.links[A],I=E.getComplement(T),v=d(I,l),D.remove(c.get(v),I),I.removeLink(E),u(I,c);h.push(T),s._removeNode(T);break}}for(h=h.concat(p),M=new m,F=0;F<this.nodes.length;F++)M.set(s.nodeMap.get(h[F]),F);return R=[],D.forEach(this.links,function(e){M.get(e.source)>M.get(e.target)&&(e.reverse(),R.push(e))}),R}}),k.Predefined={EightGraph:function(){return k.Utils.parse(["1->2","2->3","3->4","4->1","3->5","5->6","6->7","7->3"])},Mindmap:function(){return k.Utils.parse(["0->1","0->2","0->3","0->4","0->5","1->6","1->7","7->8","2->9","9->10","9->11","3->12","12->13","13->14","4->15","4->16","15->17","15->18","18->19","18->20","14->21","14->22","5->23","23->24","23->25","6->26"])},ThreeGraph:function(){return k.Utils.parse(["1->2","2->3","3->1"])},BinaryTree:function(e){return D.isUndefined(e)&&(e=5),k.Utils.createBalancedTree(e,2)},Linear:function(e){return D.isUndefined(e)&&(e=10),k.Utils.createBalancedTree(e,1)},Tree:function(e,t){return k.Utils.createBalancedTree(e,t)},Forest:function(e,t,n){return k.Utils.createBalancedForest(e,t,n)},Workflow:function(){return k.Utils.parse(["0->1","1->2","2->3","1->4","4->3","3->5","5->6","6->3","6->7","5->4"])},Grid:function(e,t){var n,i,o,r,a,s=new x.Graph;if(e<=0&&t<=0)return s;for(n=0;n<e+1;n++)for(i=null,o=0;o<t+1;o++)r=new b(""+n+"."+o),s.addNode(r),i&&s.addLink(i,r),n>0&&(a=s.getNode(""+(n-1)+"."+o),s.addLink(a,r)),i=r;return s}},k.Utils={parse:function(e){var t,n,i,o,r,a=new x.Graph,s=e.slice();for(n=0,i=s.length;n<i;n++){if(o=s[n],D.isString(o)){if(o.indexOf("->")<0)throw"The link should be specified as 'a->b'.";if(r=o.split("->"),2!=r.length)throw"The link should be specified as 'a->b'.";t=new w(r[0],r[1]),a.addLink(t)}if(D.isObject(o)){if(!t)throw"Specification found before Link definition.";y.deepExtend(t,o)}}return a},linearize:function(e,t){var n,i,o,r;if(D.isUndefined(e))throw"Expected an instance of a Graph object in slot one.";for(D.isUndefined(t)&&(t=!1),n=[],i=0,o=e.links.length;i<o;i++)r=e.links[i],n.push(r.source.id+"->"+r.target.id),t&&n.push({id:r.id});return n},_addShape:function(e,t,n,i){return D.isUndefined(t)&&(t=new x.Point(0,0)),D.isUndefined(n)&&(n=r()),i=y.deepExtend({width:20,height:20,id:n,radius:10,fill:"#778899",data:"circle",undoable:!1,x:t.x,y:t.y},i),e.addShape(i)},_addConnection:function(e,t,n,i){return e.connect(t,n,i)},createDiagramFromGraph:function(e,t,n,i){var o,r,a,l,c,d,u,h,p,f,g,m,v,_,b,w;if(D.isUndefined(e))throw"The diagram surface is undefined.";if(D.isUndefined(t))throw"No graph specification defined.";for(D.isUndefined(n)&&(n=!0),D.isUndefined(i)&&(i=!1),o=e.element.clientWidth||200,r=e.element.clientHeight||200,a=[],d=0,u=t.nodes.length;d<u;d++)l=t.nodes[d],h=l.position,D.isUndefined(h)&&(h=D.isDefined(l.x)&&D.isDefined(l.y)?new A(l.x,l.y):new A(D.randomInteger(10,o-20),D.randomInteger(10,r-20))),p={},"0"===l.id||i&&y.deepExtend(p,{width:150*Math.random()+20,height:80*Math.random()+50,data:"rectangle",fill:{color:"#778899"}}),c=this._addShape(e,h,l.id,p),f=c.bounds(),D.isDefined(f)&&(l.x=f.x,l.y=f.y,l.width=f.width,l.height=f.height),a[l.id]=c;for(g=0;g<t.links.length;g++)m=t.links[g],v=a[m.source.id],D.isUndefined(v)||(_=a[m.target.id],D.isUndefined(_)||this._addConnection(e,v,_,{id:m.id}));if(n)for(b=new e.SpringLayout(e),b.layoutGraph(t,{limitToView:!1}),w=0;w<t.nodes.length;w++)l=t.nodes[w],c=a[l.id],c.bounds(new s(l.x,l.y,l.width,l.height))},createBalancedTree:function(e,t){var n,i,o,r,a,s,l,c,d,u;if(D.isUndefined(e)&&(e=3),D.isUndefined(t)&&(t=3),n=new x.Graph,i=-1,o=[],e<=0||t<=0)return n;for(a=new b(""+ ++i),n.addNode(a),n.root=a,o.push(a),s=0;s<e;s++){for(r=[],l=0;l<o.length;l++)for(c=o[l],d=0;d<t;d++)u=new b(""+ ++i),n.addLink(c,u),r.push(u);o=r}return n},createBalancedForest:function(e,t,n){var i,o,r,a,s,l,c,d,u,h,p;if(D.isUndefined(e)&&(e=3),D.isUndefined(t)&&(t=3),D.isUndefined(n)&&(n=5),i=new x.Graph,o=-1,r=[],e<=0||t<=0||n<=0)return i;for(s=0;s<n;s++)for(l=new b(""+ ++o),i.addNode(l),r=[l],c=0;c<e;c++){for(a=[],d=0;d<r.length;d++)for(u=r[d],h=0;h<t;h++)p=new b(""+ ++o),i.addLink(u,p),a.push(p);r=a}return i},createRandomConnectedGraph:function(e,t,n){var i,o,r,a,s,l,c,d,u,h;if(D.isUndefined(e)&&(e=40),D.isUndefined(t)&&(t=4),D.isUndefined(n)&&(n=!1),i=new x.Graph,o=-1,e<=0)return i;if(r=new b(""+ ++o),i.addNode(r),1===e)return i;if(e>1){for(a=1;a<e&&(s=i.takeRandomNode([],t),s);a++)l=i.addNode(""+a),i.addLink(s,l);if(!n&&e>1)for(c=D.randomInteger(1,e),d=0;d<c;d++)u=i.takeRandomNode([],t),h=i.takeRandomNode([],t),u&&h&&!i.areConnected(u,h)&&i.addLink(u,h);return i}},randomDiagram:function(e,t,n,i,o){var r=y.dataviz.diagram.Graph.Utils.createRandomConnectedGraph(t,n,i);k.Utils.createDiagramFromGraph(e,r,!1,o)}},y.deepExtend(x,{init:function(e){y.init(e,x.ui)},Point:A,Intersect:c,Geometry:f,Rect:s,Size:l,RectAlign:d,Matrix:h,MatrixVector:p,normalVariable:o,randomId:r,Dictionary:m,HashTable:g,Queue:v,Set:_,Node:b,Link:w,Graph:k,PathDefiner:a})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/diagram/svg.min",["kendo.drawing.min","dataviz/diagram/math.min"],e)}(function(){!function(e,t){function n(e,t){var n,i,o,r=this.options,a=!1;for(o=0;o<t.length;o++)i=t[o],n=e[i],H(n)&&r[i]!==n&&(r[i]=n,a=!0);return a}function i(e){return{x:e.x||0,y:e.y||0,width:e.width||0,height:e.height||0}}function o(e){if(e){var t=e;return N(t)&&(t={color:t}),t.color&&(t.color=r(t.color)),t}}function r(e){var t;return t=e!=j?new W.Color(e).toHex():e}function a(e,t){var n=t.x-e.x,i=t.y-e.y,o=W.util.deg(Math.atan2(i,n));return o}function s(e,t){return new W.Segment(new V.Point(e,t))}function l(e){if(e)return new V.Rect([e.x,e.y],[e.width,e.height])}var c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C,S,T,D,A,E,I=window.kendo,M=I.dataviz.diagram,F=I.Class,R=I.deepExtend,P=M.Point,z=M.Rect,B=M.Matrix,L=M.Utils,H=L.isNumber,N=L.isString,O=M.MatrixVector,V=I.geometry,W=I.drawing,U=W.util.defined,q=e.inArray,j="transparent",G={none:"none",arrowStart:"ArrowStart",filledCircle:"FilledCircle",arrowEnd:"ArrowEnd"},$=360,Y="start",K="end",Q="width",X="height",J="x",Z="y";M.Markers=G,c=F.extend({init:function(e,t){this.x=e,this.y=t},toMatrix:function(){return B.scaling(this.x,this.y)},toString:function(){return I.format("scale({0},{1})",this.x,this.y)},invert:function(){return new c(1/this.x,1/this.y)}}),d=F.extend({init:function(e,t){this.x=e,this.y=t},toMatrixVector:function(){return new O(0,0,0,0,this.x,this.y)},toMatrix:function(){return B.translation(this.x,this.y)},toString:function(){return I.format("translate({0},{1})",this.x,this.y)},plus:function(e){this.x+=e.x,this.y+=e.y},times:function(e){this.x*=e,this.y*=e},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){0!==this.Length&&this.times(1/this.length())},invert:function(){return new d((-this.x),(-this.y))}}),u=F.extend({init:function(e,t,n){this.x=t||0,this.y=n||0,this.angle=e},toString:function(){return this.x&&this.y?I.format("rotate({0},{1},{2})",this.angle,this.x,this.y):I.format("rotate({0})",this.angle)},toMatrix:function(){return B.rotation(this.angle,this.x,this.y)},center:function(){return new P(this.x,this.y)},invert:function(){return new u($-this.angle,this.x,this.y)}}),u.ZERO=new u(0),u.create=function(e){return new u(e.angle,e.x,e.y)},u.parse=function(e){var t=e.slice(1,e.length-1).split(","),n=t[0],i=t[1],o=t[2],r=new u(n,i,o);return r},h=F.extend({init:function(e,n,i,o,r,a){this.translate=new d(e,n),i!==t&&o!==t&&(this.scale=new c(i,o)),r!==t&&(this.rotate=a?new u(r,a.x,a.y):new u(r))},toString:function(){var e=function(e){return e?""+e:""};return e(this.translate)+e(this.rotate)+e(this.scale)},render:function(e){e._transform=this,e._renderTransform()},toMatrix:function(){var e=B.unit();return this.translate&&(e=e.times(this.translate.toMatrix())),this.rotate&&(e=e.times(this.rotate.toMatrix())),this.scale&&(e=e.times(this.scale.toMatrix())),e},invert:function(){var e,n,i=this.rotate?this.rotate.invert():t,o=i?i.toMatrix():B.unit(),r=this.scale?this.scale.invert():t,a=r?r.toMatrix():B.unit(),s=new P((-this.translate.x),(-this.translate.y));return s=o.times(a).apply(s),e=new d(s.x,s.y),n=new h,n.translate=e,n.rotate=i,n.scale=r,n}}),p={_setScale:function(){var e=this.options,t=this._originWidth,n=this._originHeight,i=e.width/t,o=e.height/n;H(i)||(i=1),H(o)||(o=1),this._transform.scale=new c(i,o)},_setTranslate:function(){var e=this.options,t=e.x||0,n=e.y||0;this._transform.translate=new d(t,n)},_initSize:function(){var e=this.options,t=!1;e.autoSize!==!1&&(U(e.width)||U(e.height))&&(this._measure(!0),this._setScale(),t=!0),(U(e.x)||U(e.y))&&(this._setTranslate(),t=!0),t&&this._renderTransform()},_updateSize:function(e){var t=!1;return this.options.autoSize!==!1&&this._diffNumericOptions(e,[Q,X])&&(t=!0,this._measure(!0),this._setScale()),this._diffNumericOptions(e,[J,Z])&&(t=!0,this._setTranslate()),t&&this._renderTransform(),t}},f=F.extend({init:function(e){var t=this;t.options=R({},t.options,e),t.id=t.options.id,t._originSize=z.empty(),t._transform=new h},visible:function(e){return this.drawingContainer().visible(e)},redraw:function(e){e&&e.id&&(this.id=e.id)},position:function(e,n){var i=this.options;return U(e)?(U(n)?(i.x=e,i.y=n):e instanceof P&&(i.x=e.x,i.y=e.y),this._transform.translate=new d(i.x,i.y),this._renderTransform(),t):new P(i.x,i.y)},rotate:function(e,t){return U(e)&&(this._transform.rotate=new u(e,t.x,t.y),this._renderTransform()),this._transform.rotate||u.ZERO},drawingContainer:function(){return this.drawingElement},_renderTransform:function(){var e=this._transform.toMatrix();this.drawingContainer().transform(new V.Matrix(e.a,e.b,e.c,e.d,e.e,e.f))},_hover:function(){},_diffNumericOptions:n,_measure:function(e){var t,n,i;return!this._measured||e?(n=this._boundingBox()||new V.Rect,i=n.topLeft(),t=new z(i.x,i.y,n.width(),n.height()),this._originSize=t,this._originWidth=t.width,this._originHeight=t.height,this._measured=!0):t=this._originSize,t},_boundingBox:function(){return this.drawingElement.rawBBox()}}),g=f.extend({init:function(e){f.fn.init.call(this,e),e=this.options,e.fill=o(e.fill),e.stroke=o(e.stroke)},options:{stroke:{color:"gray",width:1},fill:{color:j}},fill:function(e,t){this._fill({color:r(e),opacity:t})},stroke:function(e,t,n){this._stroke({color:r(e),width:t,opacity:n})},redraw:function(e){var t,n;e&&(t=e.stroke,n=e.fill,t&&this._stroke(o(t)),n&&this._fill(o(n)),f.fn.redraw.call(this,e))},_hover:function(e){var t,n=this.drawingElement,i=this.options,r=i.hover;r&&r.fill&&(t=e?o(r.fill):i.fill,n.fill(t.color,t.opacity))},_stroke:function(e){var t,n=this.options;R(n,{stroke:e}),e=n.stroke,t=null,e.width>0&&(t={color:e.color,width:e.width,opacity:e.opacity,dashType:e.dashType}),this.drawingElement.options.set("stroke",t)},_fill:function(e){var t,n,i,o=this.options;R(o,{fill:e||{}}),t=o.fill,t.gradient?(n=t.gradient,i="radial"===n.type?W.RadialGradient:W.LinearGradient,this.drawingElement.fill(new i(n))):this.drawingElement.fill(t.color,t.opacity)}}),m=g.extend({init:function(e){e=this._textColor(e),g.fn.init.call(this,e),this._font(),this._initText(),this._initSize()},options:{fontSize:15,fontFamily:"sans-serif",stroke:{width:0},fill:{color:"black"},autoSize:!0},_initText:function(){var e=this.options;this.drawingElement=new W.Text(U(e.text)?e.text:"",new V.Point,{font:e.font}),this._fill(),this._stroke()},_textColor:function(e){return e&&e.color&&(e=R({},e,{fill:{color:e.color}})),e},_font:function(){var e,t=this.options;t.fontFamily&&U(t.fontSize)?(e=[],t.fontStyle&&e.push(t.fontStyle),t.fontWeight&&e.push(t.fontWeight),e.push(t.fontSize+(H(t.fontSize)?"px":"")),e.push(t.fontFamily),t.font=e.join(" ")):delete t.font},content:function(e){return this.drawingElement.content(e)},redraw:function(e){var t,n;e&&(t=!1,n=this.options,e=this._textColor(e),g.fn.redraw.call(this,e),(e.fontFamily||U(e.fontSize)||e.fontStyle||e.fontWeight)&&(R(n,{fontFamily:e.fontFamily,fontSize:e.fontSize,fontStyle:e.fontStyle,fontWeight:e.fontWeight}),this._font(),this.drawingElement.options.set("font",n.font),t=!0),e.text&&(this.content(e.text),t=!0),!this._updateSize(e)&&t&&this._initSize())}}),R(m.fn,p),v=g.extend({init:function(e){g.fn.init.call(this,e),this._initPath(),this._setPosition()},_setPosition:function(){var e=this.options,t=e.x,n=e.y;(U(t)||U(n))&&this.position(t||0,n||0)},redraw:function(e){e&&(g.fn.redraw.call(this,e),this._diffNumericOptions(e,[Q,X])&&this._drawPath(),this._diffNumericOptions(e,[J,Z])&&this._setPosition())},_initPath:function(){var e=this.options;this.drawingElement=new W.Path({stroke:e.stroke,closed:!0}),this._fill(),this._drawPath()},_drawPath:function(){var e=this.drawingElement,t=i(this.options),n=t.width,o=t.height;e.segments.elements([s(0,0),s(n,0),s(n,o),s(0,o)])}}),_=g.extend({init:function(e){g.fn.init.call(this,e);var t=this.options.anchor;this.anchor=new V.Point(t.x,t.y),this.createElement()},options:{stroke:{color:j,width:0},fill:{color:"black"}},_transformToPath:function(e,t){var n=t.transform();return e&&n&&(e=e.transformCopy(n)),e},redraw:function(e){e&&(e.position&&(this.options.position=e.position),g.fn.redraw.call(this,e))}}),b=_.extend({options:{radius:4,anchor:{x:0,y:0}},createElement:function(){var e=this.options;this.drawingElement=new W.Circle(new V.Circle(this.anchor,e.radius),{fill:e.fill,stroke:e.stroke})},positionMarker:function(e){var t,n,i=this.options,o=i.position,r=e.segments;t=o==Y?r[0]:r[r.length-1],t&&(n=this._transformToPath(t.anchor(),e),this.drawingElement.transform(V.transform().translate(n.x,n.y)))}}),w=_.extend({options:{path:"M 0 0 L 10 5 L 0 10 L 3 5 z",anchor:{x:10,y:5}},createElement:function(){var e=this.options;this.drawingElement=W.Path.parse(e.path,{fill:e.fill,stroke:e.stroke})},positionMarker:function(e){var t,n,i=this._linePoints(e),o=i.start,r=i.end,s=V.transform();o&&s.rotate(a(o,r),r),r&&(t=this.anchor,n=r.clone().translate(-t.x,-t.y),s.translate(n.x,n.y)),this.drawingElement.transform(s)},_linePoints:function(e){var t,n,i,o,r,a=this.options,s=e.segments;if(a.position==Y?(i=s[0],i&&(n=i.anchor(),t=i.controlOut(),o=s[1],!t&&o&&(t=o.anchor()))):(i=s[s.length-1],i&&(n=i.anchor(),t=i.controlIn(),r=s[s.length-2],!t&&r&&(t=r.anchor()))),n)return{start:this._transformToPath(t,e),end:this._transformToPath(n,e)}}}),k={_getPath:function(e){var t=this.drawingElement;if(t instanceof W.MultiPath&&(t=e==Y?t.paths[0]:t.paths[t.paths.length-1]),t&&t.segments.length)return t},_normalizeMarkerOptions:function(e){var t=e.startCap,n=e.endCap;N(t)&&(e.startCap={type:t}),N(n)&&(e.endCap={type:n})},_removeMarker:function(e){var t=this._markers[e];t&&(this.drawingContainer().remove(t.drawingElement),delete this._markers[e])},_createMarkers:function(){var e=this.options;this._normalizeMarkerOptions(e),this._markers={},this._markers[Y]=this._createMarker(e.startCap,Y),this._markers[K]=this._createMarker(e.endCap,K)},_createMarker:function(e,n){var i,o,r=(e||{}).type,a=this._getPath(n);return a?(r==G.filledCircle?i=b:r==G.arrowStart||r==G.arrowEnd?i=w:this._removeMarker(n),i?(o=new i(R({},e,{position:n})),o.positionMarker(a),this.drawingContainer().append(o.drawingElement),o):t):(this._removeMarker(n),t)},_positionMarker:function(e){var t,n=this._markers[e];n&&(t=this._getPath(e),t?n.positionMarker(t):this._removeMarker(e))},_capMap:{start:"startCap",end:"endCap"},_redrawMarker:function(e,t,n){var i,o,r,a,s;return this._normalizeMarkerOptions(n),i=this.options,o=this._capMap[t],r=(i[o]||{}).type,a=n[o],s=!1,a?(i[o]=R({},i[o],a),a.type&&r!=a.type?(this._removeMarker(t),this._markers[t]=this._createMarker(i[o],t),s=!0):this._markers[t]&&this._markers[t].redraw(a)):e&&!this._markers[t]&&i[o]&&(this._markers[t]=this._createMarker(i[o],t),s=!0),s},_redrawMarkers:function(e,t){!this._redrawMarker(e,Y,t)&&e&&this._positionMarker(Y),!this._redrawMarker(e,K,t)&&e&&this._positionMarker(K)}},y=g.extend({init:function(e){g.fn.init.call(this,e),this.container=new W.Group,this._createElements(),this._initSize()},options:{autoSize:!0},drawingContainer:function(){return this.container},data:function(e){var n=this.options;return e?(n.data!=e&&(n.data=e,this._setData(e),this._initSize(),this._redrawMarkers(!0,{})),t):n.data},redraw:function(e){var t,n;e&&(g.fn.redraw.call(this,e),t=this.options,n=e.data,U(n)&&t.data!=n?(t.data=n,this._setData(n),this._updateSize(e)||this._initSize(),this._redrawMarkers(!0,e)):(this._updateSize(e),this._redrawMarkers(!1,e)))},_createElements:function(){var e=this.options;this.drawingElement=W.Path.parse(e.data||"",{stroke:e.stroke}),this._fill(),this.container.append(this.drawingElement),this._createMarkers()},_setData:function(e){var t=this.drawingElement,n=W.Path.parse(e||""),i=n.paths.slice(0);n.paths.elements([]),t.paths.elements(i)}}),R(y.fn,p),R(y.fn,k),x=g.extend({init:function(e){g.fn.init.call(this,e),this.container=new W.Group,this._initPath(),this._createMarkers()},drawingContainer:function(){return this.container},redraw:function(e){var t,n;e&&(e=e||{},t=e.from,n=e.to,t&&(this.options.from=t),n&&(this.options.to=n),t||n?(this._drawPath(),this._redrawMarkers(!0,e)):this._redrawMarkers(!1,e),g.fn.redraw.call(this,e))},_initPath:function(){var e=this.options,t=this.drawingElement=new W.Path({stroke:e.stroke});this._fill(),this._drawPath(),this.container.append(t)},_drawPath:function(){var e=this.options,t=this.drawingElement,n=e.from||new P,i=e.to||new P;t.segments.elements([s(n.x,n.y),s(i.x,i.y)])}}),R(x.fn,k),C=g.extend({init:function(e){g.fn.init.call(this,e),this.container=new W.Group,this._initPath(),this._createMarkers()},drawingContainer:function(){return this.container},points:function(e){var n=this.options;return e?(n.points=e,this._updatePath(),t):n.points},redraw:function(e){if(e){var t=e.points;g.fn.redraw.call(this,e),t&&this._pointsDiffer(t)?(this.points(t),this._redrawMarkers(!0,e)):this._redrawMarkers(!1,e)}},_initPath:function(){var e=this.options;this.drawingElement=new W.Path({stroke:e.stroke}),this._fill(),this.container.append(this.drawingElement),e.points&&this._updatePath()},_pointsDiffer:function(e){var t,n=this.options.points,i=n.length!==e.length;if(!i)for(t=0;t<e.length;t++)if(n[t].x!==e[t].x||n[t].y!==e[t].y){i=!0;break}return i},_updatePath:function(){var e,t,n=this.drawingElement,i=this.options,o=i.points,r=[];for(t=0;t<o.length;t++)e=o[t],r.push(s(e.x,e.y));n.segments.elements(r)},options:{points:[]}}),R(C.fn,k),S=f.extend({init:function(e){f.fn.init.call(this,e),this._initImage()},redraw:function(e){e&&(e.source&&this.drawingElement.src(e.source),this._diffNumericOptions(e,[Q,X,J,Z])&&this.drawingElement.rect(this._rect()),f.fn.redraw.call(this,e))},_initImage:function(){var e=this.options,t=this._rect();this.drawingElement=new W.Image(e.source,t,{})},_rect:function(){var e=i(this.options),t=new V.Point(e.x,e.y),n=new V.Size(e.width,e.height);return new V.Rect(t,n)}}),T=f.extend({init:function(e){this.children=[],f.fn.init.call(this,e),this.drawingElement=new W.Group,this._initSize()},options:{autoSize:!1},append:function(e){this.drawingElement.append(e.drawingContainer()),this.children.push(e),this._childrenChange=!0},remove:function(e){this._remove(e)&&(this._childrenChange=!0)},_remove:function(e){var t=q(e,this.children);if(t>=0)return this.drawingElement.removeAt(t),this.children.splice(t,1),!0},clear:function(){this.drawingElement.clear(),this.children=[],this._childrenChange=!0},toFront:function(e){var t,n;for(n=0;n<e.length;n++)t=e[n],this._remove(t)&&this.append(t)},toBack:function(e){this._reorderChildren(e,0)},toIndex:function(e,t){this._reorderChildren(e,t)},_reorderChildren:function(e,t){var n,i,o,r,a,s=this.drawingElement,l=s.children.slice(0),c=this.children,d=H(t);for(n=0;n<e.length;n++)a=e[n],r=a.drawingContainer(),i=q(a,c),i>=0&&(l.splice(i,1),c.splice(i,1),o=d?t:t[n],l.splice(o,0,r),c.splice(o,0,a));s.clear(),s.append.apply(s,l)},redraw:function(e){e&&(this._childrenChange?(this._childrenChange=!1,this._updateSize(e)||this._initSize()):this._updateSize(e),f.fn.redraw.call(this,e))},_boundingBox:function(){var e,t,n,i,o=this.children;for(i=0;i<o.length;i++)t=o[i],t.visible()&&t._includeInBBox!==!1&&(n=t.drawingContainer().clippedBBox(null),n&&(e=e?V.Rect.union(e,n):n));return e}}),R(T.fn,p),D=T.extend({init:function(e,t){this.children=[],f.fn.init.call(this,t), +this.drawingElement=new W.Layout(l(e),t),this._initSize()},rect:function(e){if(e)this.drawingElement.rect(l(e));else{var t=this.drawingElement.rect();if(t)return new z(t.origin.x,t.origin.y,t.size.width,t.size.height)}},reflow:function(){this.drawingElement.reflow()},redraw:function(e){I.deepExtend(this.drawingElement.options,e),T.fn.redraw.call(this,e)}}),A=g.extend({init:function(e){g.fn.init.call(this,e),this._initCircle(),this._initSize()},redraw:function(e){if(e){var t=this.options;e.center&&(R(t,{center:e.center}),this._center.move(t.center.x,t.center.y)),this._diffNumericOptions(e,["radius"])&&this._circle.setRadius(t.radius),this._updateSize(e),g.fn.redraw.call(this,e)}},_initCircle:function(){var e,t=this.options,n=t.width,i=t.height,o=t.radius;U(o)||(U(n)||(n=i),U(i)||(i=n),t.radius=o=Math.min(n,i)/2),e=t.center||{x:o,y:o},this._center=new V.Point(e.x,e.y),this._circle=new V.Circle(this._center,o),this.drawingElement=new W.Circle(this._circle,{stroke:t.stroke}),this._fill()}}),R(A.fn,p),E=F.extend({init:function(e,t){t=t||{},this.element=e,this.surface=W.Surface.create(e,t),I.isFunction(this.surface.translate)&&(this.translate=this._translate),this.drawingElement=new W.Group,this._viewBox=new z(0,0,t.width,t.height),this.size(this._viewBox)},bounds:function(){var e=this.drawingElement.clippedBBox();return new z(0,0,e.width(),e.height())},size:function(e){var t=this._viewBox;return U(e)&&(t.width=e.width,t.height=e.height,this.surface.setSize(e)),{width:t.width,height:t.height}},_translate:function(e,t){var n=this._viewBox;return U(e)&&U(t)&&(n.x=e,n.y=t,this.surface.translate({x:e,y:t})),{x:n.x,y:n.y}},draw:function(){this.surface.draw(this.drawingElement)},append:function(e){return this.drawingElement.append(e.drawingContainer()),this},remove:function(e){this.drawingElement.remove(e.drawingContainer())},insertBefore:function(){},clear:function(){this.drawingElement.clear()},destroy:function(t){this.surface.destroy(),t&&e(this.element).remove()}}),I.deepExtend(M,{init:function(e){I.init(e,M.ui)},diffNumericOptions:n,Element:f,Scale:c,Translation:d,Rotation:u,Circle:A,Group:T,Rectangle:v,Canvas:E,Path:y,Layout:D,Line:x,MarkerBase:_,ArrowMarker:w,CircleMarker:b,Polyline:C,CompositeTransform:h,TextBlock:m,Image:S,VisualBase:g})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/diagram/services.min",["kendo.drawing.min","dataviz/diagram/svg.min"],e)}(function(){!function(e,t){function n(e,t){return t.charCodeAt(0)==e||t.toUpperCase().charCodeAt(0)==e}function i(e,t){var n;return e.x==-1&&e.y==-1?n=t.bottomRight():1==e.x&&1==e.y?n=t.topLeft():e.x==-1&&1==e.y?n=t.topRight():1==e.x&&e.y==-1?n=t.bottomLeft():0===e.x&&e.y==-1?n=t.bottom():0===e.x&&1==e.y?n=t.top():1==e.x&&0===e.y?n=t.left():e.x==-1&&0===e.y&&(n=t.right()),n}function o(e){var t=e.options.editable;return t&&t.drag!==!1}function r(e,t){var n,i,o,r;for(r=0;r<e.connectors.length;r++)if(n=e.connectors[r],i=n.position(),o=new q(i.x,i.y),o.inflate(re,re),o.contains(t))return n}function a(e){return e.ctrlKey===!1&&e.altKey===!1&&e.shiftKey===!1}var s,l,c,d,u,h,p,f,g,m,v,_,b,w,k,y,x,C,S,T,D,A,E,I,M,F,R,P,z,B,L,H,N=window.kendo,O=N.dataviz,V=O.diagram,W=N.Class,U=V.Group,q=V.Rect,j=V.Rectangle,G=V.Utils,$=G.isUndefined,Y=V.Point,K=V.Circle,Q=V.Ticker,X=N.deepExtend,J=N.ui.Movable,Z=N.support.browser,ee=N.drawing.util,te=ee.defined,ne=e.inArray,ie=e.proxy,oe={arrow:"default",grip:"pointer",cross:"pointer",add:"pointer",move:"move",select:"pointer",south:"s-resize",east:"e-resize",west:"w-resize",north:"n-resize",rowresize:"row-resize",colresize:"col-resize"},re=10,ae="Auto",se="Top",le="Right",ce="Left",de="Bottom",ue=10,he=10,pe="dragStart",fe="drag",ge="dragEnd",me="itemRotate",ve="itemBoundsChange",_e=5,be=5,we="mouseEnter",ke="mouseLeave",ye="zoomStart",xe="zoomEnd",Ce=-2e4,Se=2e4,Te=.9,De=.93,Ae=5,Ee="transparent",Ie="pan",Me="rotated",Fe="source",Re="target",Pe={"-1":Fe,1:Re};V.Cursors=oe,s=N.Class.extend({init:function(e){this.layoutState=e,this.diagram=e.diagram},initState:function(){function e(e,t){var n=this.diagram.getShapeById(e);n&&(this.subjects.push(n),this.froms.push(n.bounds().topLeft()),this.tos.push(t.topLeft()))}this.froms=[],this.tos=[],this.subjects=[],this.layoutState.nodeMap.forEach(e,this)},update:function(e){if(!(this.subjects.length<=0))for(var t=0;t<this.subjects.length;t++)this.subjects[t].position(new Y(this.froms[t].x+(this.tos[t].x-this.froms[t].x)*e,this.froms[t].y+(this.tos[t].y-this.froms[t].y)*e))}}),l=W.extend({init:function(e,t,n){this.animate=!$(n)&&n,this._initialState=e,this._finalState=t,this.title="Diagram layout"},undo:function(){this.setState(this._initialState)},redo:function(){this.setState(this._finalState)},setState:function(e){var t,n=e.diagram;this.animate?(e.linkMap.forEach(function(e,t){var i=n.getShapeById(e);i.visible(!1),i&&i.points(t)}),t=new Q,t.addAdapter(new s(e)),t.onComplete(function(){e.linkMap.forEach(function(e){var t=n.getShapeById(e);t.visible(!0)})}),t.play()):(e.nodeMap.forEach(function(e,t){var i=n.getShapeById(e);i&&i.position(t.topLeft())}),e.linkMap.forEach(function(e,t){var i=n.getShapeById(e);i&&i.points(t)}))}}),c=W.extend({init:function(e){this.units=[],this.title="Composite unit",e!==t&&this.units.push(e)},add:function(e){this.units.push(e)},undo:function(){for(var e=0;e<this.units.length;e++)this.units[e].undo()},redo:function(){for(var e=0;e<this.units.length;e++)this.units[e].redo()}}),d=W.extend({init:function(e,t,n){this.item=e,this._redoSource=t,this._redoTarget=n,te(t)&&(this._undoSource=e.source()),te(n)&&(this._undoTarget=e.target()),this.title="Connection Editing"},undo:function(){this._undoSource!==t&&this.item._updateConnector(this._undoSource,"source"),this._undoTarget!==t&&this.item._updateConnector(this._undoTarget,"target"),this.item.updateModel()},redo:function(){this._redoSource!==t&&this.item._updateConnector(this._redoSource,"source"),this._redoTarget!==t&&this.item._updateConnector(this._redoTarget,"target"),this.item.updateModel()}}),u=W.extend({init:function(e,t,n){this.item=e,this._undoSource=t,this._undoTarget=n,this._redoSource=e.source(),this._redoTarget=e.target(),this.title="Connection Editing"},undo:function(){this.item._updateConnector(this._undoSource,"source"),this.item._updateConnector(this._undoTarget,"target"),this.item.updateModel()},redo:function(){this.item._updateConnector(this._redoSource,"source"),this.item._updateConnector(this._redoTarget,"target"),this.item.updateModel()}}),h=W.extend({init:function(e){this.connection=e,this.diagram=e.diagram,this.targetConnector=e.targetConnector,this.title="Delete connection"},undo:function(){this.diagram._addConnection(this.connection,!1)},redo:function(){this.diagram.remove(this.connection,!1)}}),p=W.extend({init:function(e){this.shape=e,this.diagram=e.diagram,this.title="Deletion"},undo:function(){this.diagram._addShape(this.shape,!1),this.shape.select(!1)},redo:function(){this.shape.select(!1),this.diagram.remove(this.shape,!1)}}),f=W.extend({init:function(e,t,n){var i,o;for(this.shapes=e,this.undoStates=t,this.title="Transformation",this.redoStates=[],this.adorner=n,i=0;i<this.shapes.length;i++)o=this.shapes[i],this.redoStates.push(o.bounds())},undo:function(){var e,t;for(e=0;e<this.shapes.length;e++)t=this.shapes[e],t.bounds(this.undoStates[e]),t.hasOwnProperty("layout")&&t.layout(t,this.redoStates[e],this.undoStates[e]),t.updateModel();this.adorner&&(this.adorner.refreshBounds(),this.adorner.refresh())},redo:function(){var e,t;for(e=0;e<this.shapes.length;e++)t=this.shapes[e],t.bounds(this.redoStates[e]),t.hasOwnProperty("layout")&&t.layout(t,this.undoStates[e],this.redoStates[e]),t.updateModel();this.adorner&&(this.adorner.refreshBounds(),this.adorner.refresh())}}),g=W.extend({init:function(e,t){this.connection=e,this.diagram=t,this.title="New connection"},undo:function(){this.diagram.remove(this.connection,!1)},redo:function(){this.diagram._addConnection(this.connection,!1)}}),m=W.extend({init:function(e,t){this.shape=e,this.diagram=t,this.title="New shape"},undo:function(){this.diagram.deselect(),this.diagram.remove(this.shape,!1)},redo:function(){this.diagram._addShape(this.shape,!1)}}),v=W.extend({init:function(e,t,n){this.initial=e,this.finalPos=t,this.diagram=n,this.title="Pan Unit"},undo:function(){this.diagram.pan(this.initial)},redo:function(){this.diagram.pan(this.finalPos)}}),_=W.extend({init:function(e,t,n){var i,o;for(this.shapes=t,this.undoRotates=n,this.title="Rotation",this.redoRotates=[],this.redoAngle=e._angle,this.adorner=e,this.center=e._innerBounds.center(),i=0;i<this.shapes.length;i++)o=this.shapes[i],this.redoRotates.push(o.rotate().angle)},undo:function(){var e,t;for(e=0;e<this.shapes.length;e++)t=this.shapes[e],t.rotate(this.undoRotates[e],this.center,!1),t.hasOwnProperty("layout")&&t.layout(t),t.updateModel();this.adorner&&(this.adorner._initialize(),this.adorner.refresh())},redo:function(){var e,t;for(e=0;e<this.shapes.length;e++)t=this.shapes[e],t.rotate(this.redoRotates[e],this.center,!1),t.hasOwnProperty("layout")&&t.layout(t),t.updateModel();this.adorner&&(this.adorner._initialize(),this.adorner.refresh())}}),b=W.extend({init:function(e,t,n){this.diagram=e,this.indices=n,this.items=t,this.title="Rotate Unit"},undo:function(){this.diagram._toIndex(this.items,this.indices)},redo:function(){this.diagram.toFront(this.items,!1)}}),w=W.extend({init:function(e,t,n){this.diagram=e,this.indices=n,this.items=t,this.title="Rotate Unit"},undo:function(){this.diagram._toIndex(this.items,this.indices)},redo:function(){this.diagram.toBack(this.items,!1)}}),k=N.Observable.extend({init:function(e){N.Observable.fn.init.call(this,e),this.bind(this.events,e),this.stack=[],this.index=0,this.capacity=100},events:["undone","redone"],begin:function(){this.composite=new c},cancel:function(){this.composite=t},commit:function(e){this.composite.units.length>0&&this._restart(this.composite,e),this.composite=t},addCompositeItem:function(e){this.composite?this.composite.add(e):this.add(e)},add:function(e,t){this._restart(e,t)},pop:function(){this.index>0&&(this.stack.pop(),this.index--)},count:function(){return this.stack.length},undo:function(){this.index>0&&(this.index--,this.stack[this.index].undo(),this.trigger("undone"))},redo:function(){this.stack.length>0&&this.index<this.stack.length&&(this.stack[this.index].redo(),this.index++,this.trigger("redone"))},_restart:function(e,t){this.stack.splice(this.index,this.stack.length-this.index),this.stack.push(e),t!==!1?this.redo():this.index++,this.stack.length>this.capacity&&(this.stack.splice(0,this.stack.length-this.capacity),this.index=this.capacity)},clear:function(){this.stack=[],this.index=0}}),y=W.extend({init:function(e){this.toolService=e},start:function(){},move:function(){},end:function(){},tryActivate:function(){return!1},getCursor:function(){return oe.arrow}}),x=y.extend({init:function(t){var n,i,o,r,a=this,s=N.support.mobileOS?De:Te;y.fn.init.call(a,t),n=a.toolService.diagram,i=n.canvas,o=n.scroller=a.scroller=e(n.scrollable).kendoMobileScroller({friction:s,velocityMultiplier:Ae,mousewheelScrolling:!1,zoom:!1,scroll:ie(a._move,a)}).data("kendoMobileScroller"),i.translate&&(a.movableCanvas=new J(i.element)),r=function(e,t,n){e.makeVirtual(),e.virtualSize(t||Ce,n||Se)},r(o.dimensions.x),r(o.dimensions.y),o.disable()},tryActivate:function(e,t){var n=this.toolService,i=n.diagram.options.pannable,o=t.ctrlKey;return te(i.key)&&(o=i.key&&"none"!=i.key?t[i.key+"Key"]:a(t)&&!te(n.hoveredItem)),i!==!1&&o&&!te(n.hoveredAdorner)&&!te(n._hoveredConnector)},start:function(){this.scroller.enable()},move:function(){},_move:function(e){var t=this,n=t.toolService.diagram,i=n.canvas,o=new Y(e.scrollLeft,e.scrollTop);i.translate?(n._storePan(o.times(-1)),t.movableCanvas.moveTo(o),i.translate(o.x,o.y)):o=o.plus(n._pan.times(-1)),n.trigger(Ie,{pan:o})},end:function(){this.scroller.disable()},getCursor:function(){return oe.move}}),C=W.extend({init:function(e){this.toolService=e},tryActivate:function(){return!0},start:function(e,t){var n=this.toolService,i=n.diagram,o=n.hoveredItem;o&&(n.selectSingle(o,t),o.adorner&&(this.adorner=o.adorner,this.handle=this.adorner._hitTest(e))),this.handle||(this.handle=i._resizingAdorner._hitTest(e),this.handle&&(this.adorner=i._resizingAdorner)),this.adorner&&(this.adorner.isDragHandle(this.handle)&&i.trigger(pe,{shapes:this.adorner.shapes,connections:[]})?(n.startPoint=e,n.end(e)):this.adorner.start(e))},move:function(e){this.adorner&&(this.adorner.move(this.handle,e),this.adorner.isDragHandle(this.handle)&&this.toolService.diagram.trigger(fe,{shapes:this.adorner.shapes,connections:[]}))},end:function(){var e,n=this.toolService.diagram,i=this.adorner;i&&(i.isDragHandle(this.handle)&&n.trigger(ge,{shapes:i.shapes,connections:[]})?i.cancel():(e=i.stop(),e&&n.undoRedoService.add(e,!1))),this.adorner=t,this.handle=t},getCursor:function(e){return this.toolService.hoveredItem?this.toolService.hoveredItem._getCursor(e):oe.arrow}}),S=W.extend({init:function(e){this.toolService=e},tryActivate:function(e,t){var n=this.toolService,i=n.diagram.options.selectable,o=i&&i.multiple!==!1;return o&&(o=i.key&&"none"!=i.key?t[i.key+"Key"]:a(t)),o&&!te(n.hoveredItem)&&!te(n.hoveredAdorner)},start:function(e){var t=this.toolService.diagram;t.deselect(),t.selector.start(e)},move:function(e){var t=this.toolService.diagram;t.selector.move(e)},end:function(e,t){var n=this.toolService.diagram,i=this.toolService.hoveredItem,o=n.selector.bounds();i&&i.isSelected||t.ctrlKey||n.deselect(),o.isEmpty()||n.selectArea(o),n.selector.end()},getCursor:function(){return oe.arrow}}),T=W.extend({init:function(e){this.toolService=e,this.type="ConnectionTool"},tryActivate:function(){return this.toolService._hoveredConnector},start:function(e,t){var n=this.toolService,i=n.diagram,r=n._hoveredConnector,a=i._createConnection({},r._c,e);o(a)&&!i.trigger(pe,{shapes:[],connections:[a],connectionHandle:Re})&&i._addConnection(a)?(n._connectionManipulation(a,r._c.shape,!0),n._removeHover(),n.selectSingle(n.activeConnection,t),"touchmove"==t.type&&(i._cachedTouchTarget=r.visual)):(a.source(null),n.end(e))},move:function(e){var t=this.toolService,n=t.activeConnection;return n.target(e),t.diagram.trigger(fe,{shapes:[],connections:[n],connectionHandle:Re}),!0},end:function(e){var t,n=this.toolService,i=n.diagram,o=n.activeConnection,r=n.hoveredItem,a=n._hoveredConnector,s=i._cachedTouchTarget;o&&(t=a&&a._c!=o.sourceConnector?a._c:r&&r instanceof V.Shape?r.getConnector(ae)||r.getConnector(e):e,o.target(t),i.trigger(ge,{shapes:[],connections:[o],connectionHandle:Re})?(i.remove(o,!1),i.undoRedoService.pop()):(o.updateModel(),i._syncConnectionChanges()),n._connectionManipulation(),s&&(i._connectorsAdorner.visual.remove(s),i._cachedTouchTarget=null))},getCursor:function(){return oe.arrow}}),D=W.extend({init:function(e){this.toolService=e,this.type="ConnectionTool"},tryActivate:function(e,t){var n=this.toolService,i=n.diagram,o=i.options.selectable,r=n.hoveredItem,a=o!==!1&&r&&r.path&&!(r.isSelected&&t.ctrlKey);return a&&(this._c=r),a},start:function(e,t){var n,i,r,a=this.toolService,s=this._c;a.selectSingle(s,t),n=s.adorner,n&&(i=n._hitTest(e),r=Pe[i]),o(s)&&n&&!a.diagram.trigger(pe,{shapes:[],connections:[s],connectionHandle:r})?(this.handle=i,this.handleName=r,n.start(e)):(a.startPoint=e,a.end(e))},move:function(e){var t=this._c.adorner;if(o(this._c)&&t)return t.move(this.handle,e),this.toolService.diagram.trigger(fe,{shapes:[],connections:[this._c],connectionHandle:this.handleName}),!0},end:function(e){var t,n=this._c,i=n.adorner,r=this.toolService,a=r.diagram;i&&o(n)&&(t=i.stop(e),a.trigger(ge,{shapes:[],connections:[n],connectionHandle:this.handleName})?t.undo():(a.undoRedoService.add(t,!1),n.updateModel(),a._syncConnectionChanges()))},getCursor:function(){return oe.move}}),A=W.extend({init:function(e){this.diagram=e,this.tools=[new x(this),new D(this),new T(this),new S(this),new C(this)],this.activeTool=t},start:function(e,t){return t=X({},t),this.activeTool&&this.activeTool.end(e,t),this._updateHoveredItem(e),this._activateTool(e,t),this.activeTool.start(e,t),this._updateCursor(e),this.diagram.focus(),this.diagram.canvas.surface.suspendTracking(),this.startPoint=e,!0},move:function(e,t){t=X({},t);var n=!0;return this.activeTool&&(n=this.activeTool.move(e,t)),n&&this._updateHoveredItem(e),this._updateCursor(e),!0},end:function(e,n){return n=X({},n),this.activeTool&&this.activeTool.end(e,n),this.diagram.canvas.surface.resumeTracking(),this.activeTool=t,this._updateCursor(e),!0},keyDown:function(e,t){var i,o=this.diagram;if(t=X({ctrlKey:!1,metaKey:!1,altKey:!1},t),!t.ctrlKey&&!t.metaKey||t.altKey){if(46===e||8===e)return i=this.diagram._triggerRemove(o.select()),i.length&&(this.diagram.remove(i,!0),this.diagram._syncChanges(),this.diagram._destroyToolBar()),!0;if(27===e)return this._discardNewConnection(),o.deselect(),o._destroyToolBar(),!0}else{if(n(e,"a"))return o.selectAll(),o._destroyToolBar(),!0;if(n(e,"z"))return o.undo(),o._destroyToolBar(),!0;if(n(e,"y"))return o.redo(),o._destroyToolBar(),!0;n(e,"c")?(o.copy(),o._destroyToolBar()):n(e,"x")?(o.cut(),o._destroyToolBar()):n(e,"v")?(o.paste(),o._destroyToolBar()):n(e,"l")?(o.layout(),o._destroyToolBar()):n(e,"d")&&(o._destroyToolBar(),o.copy(),o.paste())}},wheel:function(e,t){var n=this.diagram,i=t.delta,o=n.zoom(),r=n.options,a=r.zoomRate,s={point:e,meta:t,zoom:o};if(!n.trigger(ye,s))return i<0?o+=a:o-=a,o=N.dataviz.round(Math.max(r.zoomMin,Math.min(r.zoomMax,o)),2),s.zoom=o,n.zoom(o,s),n.trigger(xe,s),!0},setTool:function(e,t){e.toolService=this,this.tools[t]=e},selectSingle:function(e,t){var n,i=this.diagram,o=i.options.selectable;o&&!e.isSelected&&e.options.selectable!==!1&&(n=t.ctrlKey&&o.multiple!==!1,i.select(e,{addToSelection:n}))},_discardNewConnection:function(){this.newConnection&&(this.diagram.remove(this.newConnection),this.newConnection=t)},_activateTool:function(e,t){var n,i;for(n=0;n<this.tools.length;n++)if(i=this.tools[n],i.tryActivate(e,t)){this.activeTool=i;break}},_updateCursor:function(e){var t=this.diagram.element,n=this.activeTool?this.activeTool.getCursor(e):this.hoveredAdorner?this.hoveredAdorner._getCursor(e):this.hoveredItem?this.hoveredItem._getCursor(e):oe.arrow;t.css({cursor:n}),Z.msie&&7==Z.version&&(t[0].style.cssText=t[0].style.cssText)},_connectionManipulation:function(e,n,i){this.activeConnection=e,this.disabledShape=n,this.newConnection=i?this.activeConnection:t},_updateHoveredItem:function(e){var n=this._hitTest(e),i=this.diagram;n==this.hoveredItem||this.disabledShape&&n==this.disabledShape||(this.hoveredItem&&(i.trigger(ke,{item:this.hoveredItem}),this.hoveredItem._hover(!1)),n&&n.options.enable?(i.trigger(we,{item:n}),this.hoveredItem=n,this.hoveredItem._hover(!0)):this.hoveredItem=t)},_removeHover:function(){this.hoveredItem&&(this.hoveredItem._hover(!1),this.hoveredItem=t)},_hitTest:function(e){var n,i,o,r,a=this.diagram;if(this._hoveredConnector&&(this._hoveredConnector._hover(!1),this._hoveredConnector=t),a._connectorsAdorner._visible&&(n=a._connectorsAdorner._hitTest(e)))return n;if(n=this.diagram._resizingAdorner._hitTest(e)){if(this.hoveredAdorner=a._resizingAdorner,0!==n.x||0!==n.y)return;n=t}else this.hoveredAdorner=t;if(!this.activeTool||"ConnectionTool"!==this.activeTool.type){for(r=[],o=0;o<a._selectedItems.length;o++)i=a._selectedItems[o],i instanceof V.Connection&&r.push(i);n=this._hitTestItems(r,e)}return n||this._hitTestElements(e)},_hitTestElements:function(e){var t,n,i,o,a=this.diagram,s=this._hitTestItems(a.shapes,e),l=this._hitTestItems(a.connections,e);return this.activeTool&&"ConnectionTool"==this.activeTool.type||!s||!l||r(s,e)||(n=a.mainLayer,i=ne(s.visual,n.children),o=ne(l.visual,n.children),t=i>o?s:l),t||s||l},_hitTestItems:function(e,t){var n,i,o;for(n=e.length-1;n>=0;n--)if(i=e[n],o=i._hitTest(t))return o}}),E=N.Class.extend({init:function(){}}),I=E.extend({init:function(e){var t=this;E.fn.init.call(t),this.connection=e},hitTest:function(e){var t=this.getBounds().inflate(re);return!!t.contains(e)&&V.Geometry.distanceToPolyline(e,this.connection.allPoints())<re},getBounds:function(){var e,t=this.connection.allPoints(),n=t[0],i=t[t.length-1],o=Math.max(n.x,i.x),r=Math.min(n.x,i.x),a=Math.min(n.y,i.y),s=Math.max(n.y,i.y);for(e=1;e<t.length-1;++e)o=Math.max(o,t[e].x),r=Math.min(r,t[e].x),a=Math.min(a,t[e].y),s=Math.max(s,t[e].y);return new q(r,a,o-r,s-a)}}),M=I.extend({init:function(e){var t=this;I.fn.init.call(t),this.connection=e},route:function(){}}),F=I.extend({SAME_SIDE_DISTANCE_RATIO:5,init:function(e){var t=this;I.fn.init.call(t),this.connection=e},routePoints:function(e,t,n,i){var o;return o=n&&i?this._connectorPoints(e,t,n,i):this._floatingPoints(e,t,n)},route:function(){var e=this.connection._resolvedSourceConnector,t=this.connection._resolvedTargetConnector,n=this.connection.sourcePoint(),i=this.connection.targetPoint(),o=this.routePoints(n,i,e,t);this.connection.points(o)},_connectorSides:[{name:"Top",axis:"y",boundsPoint:"topLeft",secondarySign:1},{name:"Left",axis:"x",boundsPoint:"topLeft",secondarySign:1},{name:"Bottom",axis:"y",boundsPoint:"bottomRight",secondarySign:-1},{name:"Right",axis:"x",boundsPoint:"bottomRight",secondarySign:-1}],_connectorSide:function(e,t){var n,i,o,r,a,s=e.position(),l=e.shape.bounds(Me),c={topLeft:l.topLeft(),bottomRight:l.bottomRight()},d=this._connectorSides,u=ee.MAX_NUM;for(a=0;a<d.length;a++)r=d[a],o=r.axis,n=Math.round(Math.abs(s[o]-c[r.boundsPoint][o])),n<u?(u=n,i=r):n===u&&(s[o]-t[o])*r.secondarySign>(s[i.axis]-t[i.axis])*i.secondarySign&&(i=r);return i.name},_sameSideDistance:function(e){var t=e.shape.bounds(Me);return Math.min(t.width,t.height)/this.SAME_SIDE_DISTANCE_RATIO},_connectorPoints:function(e,t,n,i){var o,r,a=this._connectorSide(n,t),s=this._connectorSide(i,e),l=t.x-e.x,c=t.y-e.y,d=this._sameSideDistance(n),u=[];return a===se||a==de?s==se||s==de?a==s?(r=a==se?Math.min(e.y,t.y)-d:Math.max(e.y,t.y)+d,u=[new Y(e.x,r),new Y(t.x,r)]):u=[new Y(e.x,e.y+c/2),new Y(t.x,e.y+c/2)]:u=[new Y(e.x,t.y)]:s==ce||s==le?a==s?(o=a==ce?Math.min(e.x,t.x)-d:Math.max(e.x,t.x)+d,u=[new Y(o,e.y),new Y(o,t.y)]):u=[new Y(e.x+l/2,e.y),new Y(e.x+l/2,e.y+c)]:u=[new Y(t.x,e.y)],u},_floatingPoints:function(e,t,n){var i,o,r,a=n?this._connectorSide(n,t):null,s=this._startHorizontal(e,t,a),l=[e,e,t,t],c=t.x-e.x,d=t.y-e.y,u=l.length;for(r=1;r<u-1;++r)s?r%2!==0?(i=c/(u/2),o=0):(i=0,o=d/((u-1)/2)):r%2!==0?(i=0,o=d/(u/2)):(i=c/((u-1)/2),o=0),l[r]=new Y(l[r-1].x+i,l[r-1].y+o);return r--,l[u-2]=s&&r%2!==0||!s&&r%2===0?new Y(l[u-1].x,l[u-2].y):new Y(l[u-2].x,l[u-1].y),[l[1],l[2]]},_startHorizontal:function(e,t,n){var i;return i=null!==n&&(n===le||n===ce)||Math.abs(e.x-t.x)>Math.abs(e.y-t.y)}}),R=W.extend({init:function(e,t){var n=this;n.diagram=e,n.options=X({},n.options,t),n.visual=new U,n.diagram._adorners.push(n)},refresh:function(){}}),P=R.extend({init:function(e,t){var n,i,o,r=this;r.connection=e,n=r.connection.diagram,r._ts=n.toolService,R.fn.init.call(r,n,t),i=r.connection.sourcePoint(),o=r.connection.targetPoint(),r.spVisual=new K(X(r.options.handles,{center:i})),r.epVisual=new K(X(r.options.handles,{center:o})),r.visual.append(r.spVisual),r.visual.append(r.epVisual)},options:{handles:{}},_getCursor:function(){return oe.move},start:function(e){switch(this.handle=this._hitTest(e),this.startPoint=e,this._initialSource=this.connection.source(),this._initialTarget=this.connection.target(),this.handle){case-1:this.connection.targetConnector&&this._ts._connectionManipulation(this.connection,this.connection.targetConnector.shape);break;case 1:this.connection.sourceConnector&&this._ts._connectionManipulation(this.connection,this.connection.sourceConnector.shape)}},move:function(e,t){switch(e){case-1:this.connection.source(t);break;case 1:this.connection.target(t);break;default:var n=t.minus(this.startPoint);this.startPoint=t,this.connection.sourceConnector||this.connection.source(this.connection.sourcePoint().plus(n)),this.connection.targetConnector||this.connection.target(this.connection.targetPoint().plus(n))}return this.refresh(),!0},stop:function(e){var n,i=this.diagram.toolService,o=i.hoveredItem;return n=i._hoveredConnector?i._hoveredConnector._c:o&&o instanceof V.Shape?o.getConnector(ae)||o.getConnector(e):e,this.handle===-1?this.connection.source(n):1===this.handle&&this.connection.target(n),this.handle=t,this._ts._connectionManipulation(),new u(this.connection,this._initialSource,this._initialTarget)},_hitTest:function(e){var t=this.connection.sourcePoint(),n=this.connection.targetPoint(),i=this.options.handles.width/2+re,o=this.options.handles.height/2+re,r=t.distanceTo(e),a=n.distanceTo(e),s=new q(t.x,t.y).inflate(i,o).contains(e),l=new q(n.x,n.y).inflate(i,o).contains(e),c=0;return s&&(!l||r<a)?c=-1:l&&(!s||a<r)&&(c=1),c},refresh:function(){this.spVisual.redraw({center:this.diagram.modelToLayer(this.connection.sourcePoint())}),this.epVisual.redraw({center:this.diagram.modelToLayer(this.connection.targetPoint())})}}),z=R.extend({init:function(e,t){var n=this;R.fn.init.call(n,e,t),n._refreshHandler=function(e){e.item==n.shape&&n.refresh()}},show:function(e){var t,n,i,o=this;for(o._visible=!0,o.shape=e,o.diagram.bind(ve,o._refreshHandler),t=e.connectors.length,o.connectors=[],o._clearVisual(),n=0;n<t;n++)i=new H(e.connectors[n]),o.connectors.push(i),o.visual.append(i.visual);o.visual.visible(!0),o.refresh()},_clearVisual:function(){var e=this;e.diagram._cachedTouchTarget?e._keepCachedTouchTarget():e.visual.clear()},_keepCachedTouchTarget:function(){var e,t=this,n=t.visual.children,i=n.length,o=ne(t.diagram._cachedTouchTarget,n);for(e=i-1;e>=0;e--)e!=o&&t.visual.remove(n[e])},destroy:function(){var e=this;e.diagram.unbind(ve,e._refreshHandler),e.shape=t,e._visible=t,e.visual.visible(!1)},_hitTest:function(e){var t,n;for(n=0;n<this.connectors.length;n++)if(t=this.connectors[n],t._hitTest(e)){t._hover(!0),this.diagram.toolService._hoveredConnector=t;break}},refresh:function(){if(this.shape){var t=this.shape.bounds();t=this.diagram.modelToLayer(t),this.visual.position(t.topLeft()),e.each(this.connectors,function(){this.refresh()})}}}),B=R.extend({init:function(e,t){var n=this;R.fn.init.call(n,e,t),n._manipulating=!1,n.map=[],n.shapes=[],n._initSelection(),n._createHandles(),n.redraw(),n.diagram.bind("select",function(e){n._initialize(e.selected)}),n._refreshHandler=function(){n._internalChange||(n.refreshBounds(),n.refresh())},n._rotatedHandler=function(){1==n.shapes.length&&(n._angle=n.shapes[0].rotate().angle),n._refreshHandler()},n.diagram.bind(ve,n._refreshHandler).bind(me,n._rotatedHandler),n.refreshBounds(),n.refresh()},options:{handles:{fill:{color:"#fff"},stroke:{color:"#282828"},height:7,width:7,hover:{fill:{color:"#282828"},stroke:{color:"#282828"}}},selectable:{stroke:{color:"#778899",width:1,dashType:"dash"},fill:{color:Ee}},offset:10},_initSelection:function(){var e=this,t=e.diagram,n=t.options.selectable,i=X({},e.options.selectable,n);e.rect=new j(i),e.visual.append(e.rect)},_resizable:function(){return this.options.editable&&this.options.editable.resize!==!1},_handleOptions:function(){return(this.options.editable.resize||{}).handles||this.options.handles},_createHandles:function(){var e,t,n,i;if(this._resizable())for(e=this._handleOptions(),i=-1;i<=1;i++)for(n=-1;n<=1;n++)0===i&&0===n||(t=new j(e),t.drawingElement._hover=ie(this._hover,this),this.map.push({x:i,y:n,visual:t}),this.visual.append(t))},bounds:function(e){return e?(this._innerBounds=e.clone(),this._bounds=this.diagram.modelToLayer(e).inflate(this.options.offset,this.options.offset),t):this._bounds},_hitTest:function(e){var t,n,i,o,r=this.diagram.modelToLayer(e),a=this.map.length;if(this._angle&&(r=r.clone().rotate(this._bounds.center(),this._angle)),this._resizable())for(t=0;t<a;t++)if(o=this.map[t],n=new Y(o.x,o.y),i=this._getHandleBounds(n),i.offset(this._bounds.x,this._bounds.y),i.contains(r))return n;if(this._bounds.contains(r))return new Y(0,0)},_getHandleBounds:function(e){if(this._resizable()){var t=this._handleOptions(),n=t.width,i=t.height,o=new q(0,0,n,i);return e.x<0?o.x=-n/2:0===e.x?o.x=Math.floor(this._bounds.width/2)-n/2:e.x>0&&(o.x=this._bounds.width+1-n/2),e.y<0?o.y=-i/2:0===e.y?o.y=Math.floor(this._bounds.height/2)-i/2:e.y>0&&(o.y=this._bounds.height+1-i/2),o}},_getCursor:function(e){var t,n=this._hitTest(e);if(n&&n.x>=-1&&n.x<=1&&n.y>=-1&&n.y<=1&&this._resizable()){if(t=this._angle,t&&(t=360-t,n.rotate(new Y(0,0),t),n=new Y(Math.round(n.x),Math.round(n.y))),n.x==-1&&n.y==-1)return"nw-resize";if(1==n.x&&1==n.y)return"se-resize";if(n.x==-1&&1==n.y)return"sw-resize";if(1==n.x&&n.y==-1)return"ne-resize";if(0===n.x&&n.y==-1)return"n-resize";if(0===n.x&&1==n.y)return"s-resize";if(1==n.x&&0===n.y)return"e-resize";if(n.x==-1&&0===n.y)return"w-resize"}return this._manipulating?oe.move:oe.select},_initialize:function(){var e,t,n=this,i=n.diagram.select();for(n.shapes=[],e=0;e<i.length;e++)t=i[e],t instanceof V.Shape&&(n.shapes.push(t),t._rotationOffset=new Y);n._angle=1==n.shapes.length?n.shapes[0].rotate().angle:0,n._startAngle=n._angle,n._rotates(),n._positions(),n.refreshBounds(),n.refresh(),n.redraw()},_rotates:function(){var e,t,n=this;for(n.initialRotates=[],e=0;e<n.shapes.length;e++)t=n.shapes[e],n.initialRotates.push(t.rotate().angle)},_positions:function(){var e,t,n=this;for(n.initialStates=[],e=0;e<n.shapes.length;e++)t=n.shapes[e],n.initialStates.push(t.bounds())},_hover:function(e,t){if(this._resizable()){var n=this._handleOptions(),i=n.hover,o=n.stroke,r=n.fill;e&&G.isDefined(i.stroke)&&(o=X({},o,i.stroke)),e&&G.isDefined(i.fill)&&(r=i.fill),t.stroke(o.color,o.width,o.opacity),t.fill(r.color,r.opacity)}},start:function(e){var t,n;for(this._sp=e,this._cp=e,this._lp=e,this._manipulating=!0,this._internalChange=!0,this.shapeStates=[],t=0;t<this.shapes.length;t++)n=this.shapes[t],this.shapeStates.push(n.bounds())},redraw:function(){var e,t,n=this._resizable();for(e=0;e<this.map.length;e++)t=this.map[e],t.visual.visible(n)},angle:function(e){return te(e)&&(this._angle=e),this._angle},rotate:function(){var e,t,n=this._innerBounds.center(),i=this.angle();for(this._internalChange=!0,e=0;e<this.shapes.length;e++)t=this.shapes[e],i=(i+this.initialRotates[e]-this._startAngle)%360,t.rotate(i,n);this.refresh()},move:function(e,n){var r,a,s,l,c,d,u,h,p,f,g,m,v,_,b=new Y,w=new Y,k=0;if(e.y===-2&&e.x===-1){for(l=this._innerBounds.center(),this._angle=this._truncateAngle(G.findAngle(l,n)),d=0;d<this.shapes.length;d++)c=this.shapes[d],u=(this._angle+this.initialRotates[d]-this._startAngle)%360,c.rotate(u,l),c.hasOwnProperty("layout")&&c.layout(c),this._rotating=!0;this.refresh()}else{if(this.shouldSnap()){if(m=this._truncateDistance(n.minus(this._lp)),0===m.x&&0===m.y)return this._cp=n,t;r=m,this._lp=new Y(this._lp.x+m.x,this._lp.y+m.y)}else r=n.minus(this._cp);for(this.isDragHandle(e)?(w=b=r,a=!0):(this._angle&&r.rotate(new Y(0,0),this._angle),e.x==-1?b.x=r.x:1==e.x&&(w.x=r.x),e.y==-1?b.y=r.y:1==e.y&&(w.y=r.y)),a||(p=i(e,this._innerBounds),f=(this._innerBounds.width+r.x*e.x)/this._innerBounds.width,g=(this._innerBounds.height+r.y*e.y)/this._innerBounds.height),d=0;d<this.shapes.length;d++){if(c=this.shapes[d],s=c.bounds(),a){if(!o(c))continue;h=this._displaceBounds(s,b,w,a)}else h=s.clone(),h.scale(f,g,p,this._innerBounds.center(),c.rotate().angle),v=h.center(),v.rotate(s.center(),-this._angle),h=new q(v.x-h.width/2,v.y-h.height/2,h.width,h.height);h.width>=c.options.minWidth&&h.height>=c.options.minHeight&&(_=s,c.bounds(h),c.hasOwnProperty("layout")&&c.layout(c,_,h),_.width===h.width&&_.height===h.height||c.rotate(c.rotate().angle),k+=1)}k&&(k==d?(h=this._displaceBounds(this._innerBounds,b,w,a),this.bounds(h)):this.refreshBounds(),this.refresh()),this._positions()}this._cp=n},isDragHandle:function(e){return 0===e.x&&0===e.y},cancel:function(){var e,n=this.shapes,i=this.shapeStates;for(e=0;e<n.length;e++)n[e].bounds(i[e]);this.refreshBounds(),this.refresh(), +this._manipulating=t,this._internalChange=t,this._rotating=t},_truncatePositionToGuides:function(e){return this.diagram.ruler?this.diagram.ruler.truncatePositionToGuides(e):e},_truncateSizeToGuides:function(e){return this.diagram.ruler?this.diagram.ruler.truncateSizeToGuides(e):e},_truncateAngle:function(e){var t=this.snapOptions(),n=Math.max(t.angle||he,be);return t?Math.floor(e%360/n)*n:e%360},_truncateDistance:function(e){var t,n;return e instanceof V.Point?new V.Point(this._truncateDistance(e.x),this._truncateDistance(e.y)):(t=this.snapOptions()||{},n=Math.max(t.size||ue,_e),t?Math.floor(e/n)*n:e)},snapOptions:function(){var e=this.diagram.options.editable,t=((e||{}).drag||{}).snap||{};return t},shouldSnap:function(){var e=this.diagram.options.editable,t=(e||{}).drag,n=(t||{}).snap;return e!==!1&&t!==!1&&n!==!1},_displaceBounds:function(e,t,n,i){var o,r=e.topLeft().plus(t),a=e.bottomRight().plus(n),s=q.fromPoints(r,a);return i||(o=s.center(),o.rotate(e.center(),-this._angle),s=new q(o.x-s.width/2,o.y-s.height/2,s.width,s.height)),s},stop:function(){var e,n,i,o;if(this._cp!=this._sp)if(this._rotating)e=new _(this,this.shapes,this.initialRotates),this._rotating=!1;else if(this._diffStates()){if(this.diagram.ruler)for(n=0;n<this.shapes.length;n++)i=this.shapes[n],o=i.bounds(),o=this._truncateSizeToGuides(this._truncatePositionToGuides(o)),i.bounds(o),this.refreshBounds(),this.refresh();for(n=0;n<this.shapes.length;n++)i=this.shapes[n],i.updateModel();e=new f(this.shapes,this.shapeStates,this),this.diagram._syncShapeChanges()}return this._manipulating=t,this._internalChange=t,this._rotating=t,e},_diffStates:function(){var e,t=this.shapes,n=this.shapeStates;for(e=0;e<t.length;e++)if(!t[e].bounds().equals(n[e]))return!0;return!1},refreshBounds:function(){var e=1==this.shapes.length?this.shapes[0].bounds().clone():this.diagram.boundingBox(this.shapes,!0);this.bounds(e)},refresh:function(){var t,n,i,o,r=this;this.shapes.length>0?(n=this.bounds(),this.visual.visible(!0),this.visual.position(n.topLeft()),e.each(this.map,function(){t=r._getHandleBounds(new Y(this.x,this.y)),this.visual.position(t.topLeft())}),this.visual.position(n.topLeft()),i=new Y(n.width/2,n.height/2),this.visual.rotate(this._angle,i),this.rect.redraw({width:n.width,height:n.height}),this.rotationThumb&&(o=this.options.editable.rotate.thumb,this._rotationThumbBounds=new q(n.center().x,n.y+o.y,0,0).inflate(o.width),this.rotationThumb.redraw({x:n.width/2-o.width/2}))):this.visual.visible(!1)}}),L=W.extend({init:function(e){var t=e.options.selectable;this.options=X({},this.options,t),this.visual=new j(this.options),this.diagram=e},options:{stroke:{color:"#778899",width:1,dashType:"dash"},fill:{color:Ee}},start:function(e){this._sp=this._ep=e,this.refresh(),this.diagram._adorn(this,!0)},end:function(){this._sp=this._ep=t,this.diagram._adorn(this,!1)},bounds:function(e){return e&&(this._bounds=e),this._bounds},move:function(e){this._ep=e,this.refresh()},refresh:function(){if(this._sp){var e=q.fromPoints(this.diagram.modelToLayer(this._sp),this.diagram.modelToLayer(this._ep));this.bounds(q.fromPoints(this._sp,this._ep)),this.visual.position(e.topLeft()),this.visual.redraw({height:e.height+1,width:e.width+1})}}}),H=W.extend({init:function(e){this.options=X({},e.options),this._c=e,this.visual=new K(this.options),this.refresh()},_hover:function(e){var t=this.options,n=t.hover,i=t.stroke,o=t.fill;e&&G.isDefined(n.stroke)&&(i=X({},i,n.stroke)),e&&G.isDefined(n.fill)&&(o=n.fill),this.visual.redraw({stroke:i,fill:o})},refresh:function(){var e=this._c.shape.diagram.modelToView(this._c.position()),t=e.minus(this._c.shape.bounds("transformed").topLeft()),n=new q(e.x,e.y,0,0);n.inflate(this.options.width/2,this.options.height/2),this._visualBounds=n,this.visual.redraw({center:new Y(t.x,t.y)})},_hitTest:function(e){var t=this._c.shape.diagram.modelToView(e);return this._visualBounds.contains(t)}}),X(V,{CompositeUnit:c,TransformUnit:f,PanUndoUnit:v,AddShapeUnit:m,AddConnectionUnit:g,DeleteShapeUnit:p,DeleteConnectionUnit:h,ConnectionEditAdorner:P,ConnectionTool:T,ConnectorVisual:H,UndoRedoService:k,ResizingAdorner:B,Selector:L,ToolService:A,ConnectorsAdorner:z,LayoutUndoUnit:l,ConnectionEditUnit:d,ToFrontUnit:b,ToBackUnit:w,ConnectionRouterBase:E,PolylineRouter:M,CascadingRouter:F,SelectionTool:S,ScrollerTool:x,PointerTool:C,ConnectionEditTool:D,RotateUnit:_})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/diagram/layout.min",["dataviz/diagram/math.min"],e)}(function(){!function(e,t){var n=window.kendo,i=n.dataviz.diagram,o=i.Graph,r=i.Node,a=i.Link,s=n.deepExtend,l=i.Size,c=i.Rect,d=i.Dictionary,u=i.Set,h=i.Graph,p=i.Utils,f=i.Point,g=1e-6,m=Math.PI/180,v=p.contains,_=e.grep,b=n.Class.extend({defaultOptions:{type:"Tree",subtype:"Down",roots:null,animate:!1,limitToView:!1,friction:.9,nodeDistance:50,iterations:300,horizontalSeparation:90,verticalSeparation:50,underneathVerticalTopOffset:15,underneathHorizontalOffset:15,underneathVerticalSeparation:15,grid:{width:1500,offsetX:50,offsetY:50,componentSpacingX:20,componentSpacingY:20},layerSeparation:50,layeredIterations:2,startRadialAngle:0,endRadialAngle:360,radialSeparation:150,radialFirstLevelSeparation:200,keepComponentsInOneRadialLayout:!1,ignoreContainers:!0,layoutContainerChildren:!1,ignoreInvisible:!0,animateTransitions:!1},init:function(){},gridLayoutComponents:function(e){var t,n,i,o,r,a,s,l,c,d,u,h,g,m,v;if(!e)throw"No components supplied.";for(p.forEach(e,function(e){e.calcBounds()}),e.sort(function(e,t){return t.bounds.width-e.bounds.width}),t=this.options.grid.width,n=this.options.grid.componentSpacingX,i=this.options.grid.componentSpacingY,o=0,r=this.options.grid.offsetX,a=this.options.grid.offsetY,s=r,l=a,d=[],u=[];e.length>0;){for(s>=t&&(s=r,l+=o+i,o=0),h=e.pop(),this.moveToOffset(h,new f(s,l)),c=0;c<h.nodes.length;c++)u.push(h.nodes[c]);for(c=0;c<h.links.length;c++)d.push(h.links[c]);g=h.bounds,m=g.height,(m<=0||isNaN(m))&&(m=0),v=g.width,(v<=0||isNaN(v))&&(v=0),m>=o&&(o=m),s+=v+n}return{nodes:u,links:d}},moveToOffset:function(e,t){var n,i,o,r,a,s,l,d,u=e.bounds,h=t.x-u.x,p=t.y-u.y;for(n=0;n<e.nodes.length;n++)o=e.nodes[n],r=o.bounds(),0===r.width&&0===r.height&&0===r.x&&0===r.y&&(r=new c(0,0,0,0)),r.x+=h,r.y+=p,o.bounds(r);for(n=0;n<e.links.length;n++)if(a=e.links[n],a.points){for(s=[],l=a.points,i=0;i<l.length;i++)d=l[i],d.x+=h,d.y+=p,s.push(d);a.points=s}return this.currentHorizontalOffset+=u.width+this.options.grid.offsetX,new f(h,p)},transferOptions:function(e){this.options=n.deepExtend({},this.defaultOptions),p.isUndefined(e)||(this.options=n.deepExtend(this.options,e||{}))}}),w=n.Class.extend({init:function(e){this.nodeMap=new d,this.shapeMap=new d,this.nodes=[],this.edges=[],this.edgeMap=new d,this.finalNodes=[],this.finalLinks=[],this.ignoredConnections=[],this.ignoredShapes=[],this.hyperMap=new d,this.hyperTree=new o,this.finalGraph=null,this.diagram=e},convert:function(e){if(p.isUndefined(this.diagram))throw"No diagram to convert.";return this.options=n.deepExtend({ignoreInvisible:!0,ignoreContainers:!0,layoutContainerChildren:!1},e||{}),this.clear(),this._renormalizeShapes(),this._renormalizeConnections(),this.finalNodes=new d(this.nodes),this.finalLinks=new d(this.edges),this.finalGraph=new o,this.finalNodes.forEach(function(e){this.finalGraph.addNode(e)},this),this.finalLinks.forEach(function(e){this.finalGraph.addExistingLink(e)},this),this.finalGraph},mapConnection:function(e){return this.edgeMap.get(e.id)},mapShape:function(e){return this.nodeMap.get(e.id)},getEdge:function(e,t){return p.first(e.links,function(n){return n.getComplement(e)===t})},clear:function(){this.finalGraph=null,this.hyperTree=!this.options.ignoreContainers&&this.options.layoutContainerChildren?new h:null,this.hyperMap=!this.options.ignoreContainers&&this.options.layoutContainerChildren?new d:null,this.nodeMap=new d,this.shapeMap=new d,this.nodes=[],this.edges=[],this.edgeMap=new d,this.ignoredConnections=[],this.ignoredShapes=[],this.finalNodes=[],this.finalLinks=[]},listToRoot:function(e){var t=[],n=e.container;if(!n)return t;for(t.push(n);n.parentContainer;)n=n.parentContainer,t.push(n);return t.reverse(),t},firstNonIgnorableContainer:function(e){return e.isContainer&&!this._isIgnorableItem(e)?e:e.parentContainer?this.firstNonIgnorableContainer(e.parentContainer):null},isContainerConnection:function(e,t){return!(!e.isContainer||!this.isDescendantOf(e,t))||t.isContainer&&this.isDescendantOf(t,e)},isDescendantOf:function(e,t){var n,i,o,r;if(!e.isContainer)throw"Expecting a container.";if(e===t)return!1;if(v(e.children,t))return!0;for(n=[],i=0,o=e.children.length;i<o;i++)r=e.children[i],r.isContainer&&this.isDescendantOf(r,t)&&n.push(r);return n.length>0},isIgnorableItem:function(e){return this.options.ignoreInvisible?(!e.isCollapsed||!this._isVisible(e))&&!(!e.isCollapsed&&this._isVisible(e)):e.isCollapsed&&!this._isTop(e)},isShapeMapped:function(e){return e.isCollapsed&&!this._isVisible(e)&&!this._isTop(e)},leastCommonAncestor:function(e,t){var n,i,o,r,a,s;if(!e)throw"Parameter should not be null.";if(!t)throw"Parameter should not be null.";if(!this.hyperTree)throw"No hypertree available.";if(n=this.listToRoot(e),i=this.listToRoot(t),o=null,p.isEmpty(n)||p.isEmpty(i))return this.hyperTree.root.data;for(r=n[0],a=i[0],s=0;r===a&&(o=n[s],s++,!(s>=n.length||s>=i.length));)r=n[s],a=i[s];return o?_(this.hyperTree.nodes,function(e){return e.data.container===o}):this.hyperTree.root.data},_isTop:function(e){return!e.parentContainer},_isVisible:function(e){return!!e.visible()&&(e.parentContainer?this._isVisible(e.parentContainer):e.visible())},_isCollapsed:function(e){return!(!e.isContainer||!e.isCollapsed)||e.parentContainer&&this._isCollapsed(e.parentContainer)},_renormalizeShapes:function(){var e,t,n,i;if(!this.options.ignoreContainers)throw"Containers are not supported yet, but stay tuned.";for(e=0,t=this.diagram.shapes.length;e<t;e++)n=this.diagram.shapes[e],this.options.ignoreInvisible&&!this._isVisible(n)||n.isContainer?this.ignoredShapes.push(n):(i=new r(n.id,n),i.isVirtual=!1,this.nodeMap.add(n.id,i),this.nodes.push(i))},_renormalizeConnections:function(){var e,t,n,i,o,r,s,l;if(0!==this.diagram.connections.length)for(e=0,t=this.diagram.connections.length;e<t;e++)if(n=this.diagram.connections[e],this.isIgnorableItem(n))this.ignoredConnections.push(n);else if(i=n.sourceConnector?n.sourceConnector.shape:null,o=n.targetConnector?n.targetConnector.shape:null,i&&o)if(!v(this.ignoredShapes,i)||this.shapeMap.containsKey(i))if(!v(this.ignoredShapes,o)||this.shapeMap.containsKey(o))if(this.shapeMap.containsKey(i)&&(i=this.shapeMap[i]),this.shapeMap.containsKey(o)&&(o=this.shapeMap[o]),r=this.mapShape(i),s=this.mapShape(o),r===s||this.areConnectedAlready(r,s))this.ignoredConnections.push(n);else{if(null===r||null===s)throw"A shape was not mapped to a node.";if(!this.options.ignoreContainers)throw"Containers are not supported yet, but stay tuned.";r.isVirtual||s.isVirtual?this.ignoredConnections.push(n):(l=new a(r,s,n.id,n),this.edgeMap.add(n.id,l),this.edges.push(l))}else this.ignoredConnections.push(n);else this.ignoredConnections.push(n);else this.ignoredConnections.push(n)},areConnectedAlready:function(e,t){return p.any(this.edges,function(n){return n.source===e&&n.target===t||n.source===t&&n.target===e})}}),k=b.extend({init:function(e){var t=this;if(b.fn.init.call(t),p.isUndefined(e))throw"Diagram is not specified.";this.diagram=e},layout:function(e){var t,n,o,r,a,s;if(this.transferOptions(e),t=new w(this.diagram),n=t.convert(e),!n.isEmpty()&&(o=n.getConnectedComponents(),!p.isEmpty(o))){for(r=0;r<o.length;r++)a=o[r],this.layoutGraph(a,e);return s=this.gridLayoutComponents(o),new i.LayoutState(this.diagram,s)}},layoutGraph:function(e,t){var n,i,o;for(p.isDefined(t)&&this.transferOptions(t),this.graph=e,n=9*this.options.nodeDistance,this.temperature=n,i=this._expectedBounds(),this.width=i.width,this.height=i.height,o=0;o<this.options.iterations;o++)this.refineStage=o>=5*this.options.iterations/6,this.tick(),this.temperature=this.refineStage?n/30:n*(1-o/(2*this.options.iterations))},tick:function(){var e,t,n;for(e=0;e<this.graph.nodes.length;e++)this._repulsion(this.graph.nodes[e]);for(e=0;e<this.graph.links.length;e++)this._attraction(this.graph.links[e]);for(e=0;e<this.graph.nodes.length;e++){if(t=this.graph.nodes[e],n=Math.sqrt(t.dx*t.dx+t.dy*t.dy),0===n)return;t.x+=Math.min(n,this.temperature)*t.dx/n,t.y+=Math.min(n,this.temperature)*t.dy/n,this.options.limitToView&&(t.x=Math.min(this.width,Math.max(t.width/2,t.x)),t.y=Math.min(this.height,Math.max(t.height/2,t.y)))}},_shake:function(e){var t=Math.random()*this.options.nodeDistance/4,n=2*Math.random()*Math.PI;e.x+=t*Math.cos(n),e.y-=t*Math.sin(n)},_InverseSquareForce:function(e,t,n){var i,o,r,a,s,l,c;return this.refineStage?(o=t.x-n.x,r=t.y-n.y,a=t.width/2,s=t.height/2,l=n.width/2,c=n.height/2,i=Math.pow(o,2)/Math.pow(a+l+this.options.nodeDistance,2)+Math.pow(r,2)/Math.pow(s+c+this.options.nodeDistance,2)):i=Math.pow(e,2)/Math.pow(this.options.nodeDistance,2),4*i/3},_SquareForce:function(e,t,n){return 1/this._InverseSquareForce(e,t,n)},_repulsion:function(e){e.dx=0,e.dy=0,p.forEach(this.graph.nodes,function(t){var n,i,o,r;if(t!==e){for(;e.x===t.x&&e.y===t.y;)this._shake(t);n=e.x-t.x,i=e.y-t.y,o=Math.sqrt(n*n+i*i),r=2*this._SquareForce(o,e,t),e.dx+=n/o*r,e.dy+=i/o*r}},this)},_attraction:function(e){var t,n,i,o,r,a,s=e.target,l=e.source;if(l!==s){for(;l.x===s.x&&l.y===s.y;)this._shake(s);t=l.x-s.x,n=l.y-s.y,i=Math.sqrt(t*t+n*n),o=5*this._InverseSquareForce(i,l,s),r=t/i*o,a=n/i*o,s.dx+=r,s.dy+=a,l.dx-=r,l.dy-=a}},_expectedBounds:function(){var e,t,n,i,o,r=this.graph.nodes.length,a=1.5,s=4;return 0===r?e:(e=p.fold(this.graph.nodes,function(e,t){var n=t.width*t.height;return n>0?e+=Math.sqrt(n):0},0,this),t=e/r,n=t*Math.ceil(Math.sqrt(r)),i=n*Math.sqrt(a),o=n/Math.sqrt(a),{width:i*s,height:o*s})}}),y=n.Class.extend({init:function(e){this.center=null,this.options=e},layout:function(e,t){if(this.graph=e,this.graph.nodes&&0!==this.graph.nodes.length){if(!v(this.graph.nodes,t))throw"The given root is not in the graph.";this.center=t,this.graph.cacheRelationships(),this.layoutSwitch()}},layoutLeft:function(e){var t,n,i,o,r,a,s,c;for(this.setChildrenDirection(this.center,"Left",!1),this.setChildrenLayout(this.center,"Default",!1),t=0,n=0,o=0;o<e.length;o++)r=e[o],r.TreeDirection="Left",a=this.measure(r,l.Empty),n=Math.max(n,a.Width),t+=a.height+this.options.verticalSeparation;for(t-=this.options.verticalSeparation,s=this.center.x-this.options.horizontalSeparation,i=this.center.y+(this.center.height-t)/2,o=0;o<e.length;o++)r=e[o],c=new f(s-r.Size.width,i),this.arrange(r,c),i+=r.Size.height+this.options.verticalSeparation},layoutRight:function(e){var t,n,i,o,r,a,s,c;for(this.setChildrenDirection(this.center,"Right",!1),this.setChildrenLayout(this.center,"Default",!1),t=0,n=0,o=0;o<e.length;o++)r=e[o],r.TreeDirection="Right",a=this.measure(r,l.Empty),n=Math.max(n,a.Width),t+=a.height+this.options.verticalSeparation;for(t-=this.options.verticalSeparation,s=this.center.x+this.options.horizontalSeparation+this.center.width,i=this.center.y+(this.center.height-t)/2,o=0;o<e.length;o++)r=e[o],c=new f(s,i),this.arrange(r,c),i+=r.Size.height+this.options.verticalSeparation},layoutUp:function(e){var t,n,i,o,r,a,s;for(this.setChildrenDirection(this.center,"Up",!1),this.setChildrenLayout(this.center,"Default",!1),t=0,o=0;o<e.length;o++)i=e[o],i.TreeDirection="Up",r=this.measure(i,l.Empty),t+=r.width+this.options.horizontalSeparation;for(t-=this.options.horizontalSeparation,a=this.center.x+this.center.width/2-t/2,o=0;o<e.length;o++)i=e[o],n=this.center.y-this.options.verticalSeparation-i.Size.height,s=new f(a,n),this.arrange(i,s),a+=i.Size.width+this.options.horizontalSeparation},layoutDown:function(e){var t,n,i,o,r,a,s;for(this.setChildrenDirection(this.center,"Down",!1),this.setChildrenLayout(this.center,"Default",!1),i=0,n=0;n<e.length;n++)t=e[n],t.treeDirection="Down",r=this.measure(t,l.Empty),i+=r.width+this.options.horizontalSeparation;for(i-=this.options.horizontalSeparation,a=this.center.x+this.center.width/2-i/2,o=this.center.y+this.options.verticalSeparation+this.center.height,n=0;n<e.length;n++)t=e[n],s=new f(a,o),this.arrange(t,s),a+=t.Size.width+this.options.horizontalSeparation},layoutRadialTree:function(){var e,t;if(this.setChildrenDirection(this.center,"Radial",!1),this.setChildrenLayout(this.center,"Default",!1),this.previousRoot=null,e=this.options.startRadialAngle*m,t=this.options.endRadialAngle*m,t<=e)throw"Final angle should not be less than the start angle.";this.maxDepth=0,this.origin=new f(this.center.x,this.center.y),this.calculateAngularWidth(this.center,0),this.maxDepth>0&&this.radialLayout(this.center,this.options.radialFirstLevelSeparation,e,t),this.center.Angle=t-e},tipOverTree:function(e,t){var n,i,o,r,a,s,c;for(p.isUndefined(t)&&(t=0),this.setChildrenDirection(this.center,"Down",!1),this.setChildrenLayout(this.center,"Default",!1),this.setChildrenLayout(this.center,"Underneath",!1,t),n=0,r=0;r<e.length;r++)o=e[r],o.TreeDirection="Down",a=this.measure(o,l.Empty),n+=a.width+this.options.horizontalSeparation;for(n-=this.options.horizontalSeparation,n-=e[e.length-1].width,n+=e[e.length-1].associatedShape.bounds().width,s=this.center.x+this.center.width/2-n/2,i=this.center.y+this.options.verticalSeparation+this.center.height,r=0;r<e.length;r++)o=e[r],c=new f(s,i),this.arrange(o,c),s+=o.Size.width+this.options.horizontalSeparation},calculateAngularWidth:function(e,t){var n,i,o,r,a,s,l;if(t>this.maxDepth&&(this.maxDepth=t),n=0,i=1e3,o=1e3,r=0===t?0:Math.sqrt(i*i+o*o)/t,e.children.length>0){for(a=0,s=e.children.length;a<s;a++)l=e.children[a],n+=this.calculateAngularWidth(l,t+1);n=Math.max(r,n)}else n=r;return e.sectorAngle=n,n},sortChildren:function(e){var t,n,i,o,r,a,s,l,c,d,u,h=0;if(e.parents.length>1)throw"Node is not part of a tree.";if(n=e.parents[0],n&&(i=new f(n.x,n.y),o=new f(e.x,e.y),h=this.normalizeAngle(Math.atan2(i.y-o.y,i.x-o.x))),r=e.children.length,0===r)return null;for(a=[],s=[],t=0;t<r;++t)l=e.children[t],c=new f(l.x,l.y),s[t]=t,a[t]=this.normalizeAngle(-h+Math.atan2(c.y-c.y,c.x-c.x));for(p.bisort(a,s),d=[],u=e.children,t=0;t<r;++t)d.push(u[s[t]]);return d},normalizeAngle:function(e){for(;e>2*Math.PI;)e-=2*Math.PI;for(;e<0;)e+=2*Math.PI;return e},radialLayout:function(e,t,n,i){var o,r,a,s,l,c=i-n,d=c/2,u=e.sectorAngle,h=0,p=this.sortChildren(e);for(o=0,r=p.length;o<r;o++)a=p[o],s=a,l=s.sectorAngle/u,a.children.length>0&&this.radialLayout(a,t+this.options.radialSeparation,n+h*c,n+(h+l)*c),this.setPolarLocation(a,t,n+h*c+l*d),s.angle=l*c,h+=l},setPolarLocation:function(e,t,n){e.x=this.origin.x+t*Math.cos(n),e.y=this.origin.y+t*Math.sin(n),e.BoundingRectangle=new c(e.x,e.y,e.width,e.height)},setChildrenDirection:function(e,t,n){var i=e.treeDirection;this.graph.depthFirstTraversal(e,function(e){e.treeDirection=t}),n||(e.treeDirection=i)},setChildrenLayout:function(e,t,n,i){p.isUndefined(i)&&(i=0);var o=e.childrenLayout;i>0?(this.graph.assignLevels(e),this.graph.depthFirstTraversal(e,function(e){e.level>=i+1&&(e.childrenLayout=t)})):(this.graph.depthFirstTraversal(e,function(e){e.childrenLayout=t}),n||(e.childrenLayout=o))},measure:function(e,t){var n,i,o,r,a,s,c,d=0,u=0,h=new l(0,0);if(!e)throw"";if(i=e.associatedShape.bounds(),o=i.width,r=i.height,1!==e.parents.length)throw"Node not in a spanning tree.";if(a=e.parents[0],"Undefined"===e.treeDirection&&(e.treeDirection=a.treeDirection),p.isEmpty(e.children))h=new l(Math.abs(o)<g?50:o,Math.abs(r)<g?25:r);else if(1===e.children.length){switch(e.treeDirection){case"Radial":n=this.measure(e.children[0],t),d=o+this.options.radialSeparation*Math.cos(e.AngleToParent)+n.width,u=r+Math.abs(this.options.radialSeparation*Math.sin(e.AngleToParent))+n.height;break;case"Left":case"Right":switch(e.childrenLayout){case"TopAlignedWithParent":break;case"BottomAlignedWithParent":break;case"Underneath":n=this.measure(e.children[0],t),d=o+n.width+this.options.underneathHorizontalOffset,u=r+this.options.underneathVerticalTopOffset+n.height;break;case"Default":n=this.measure(e.children[0],t),d=o+this.options.horizontalSeparation+n.width,u=Math.max(r,n.height);break;default:throw"Unhandled TreeDirection in the Radial layout measuring."}break;case"Up":case"Down":switch(e.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":n=this.measure(e.children[0],t),d=Math.max(o,n.width+this.options.underneathHorizontalOffset),u=r+this.options.underneathVerticalTopOffset+n.height;break;case"Default":n=this.measure(e.children[0],t),u=r+this.options.verticalSeparation+n.height,d=Math.max(o,n.width);break;default:throw"Unhandled TreeDirection in the Down layout measuring."}break;default:throw"Unhandled TreeDirection in the layout measuring."}h=new l(d,u)}else{switch(e.treeDirection){case"Left":case"Right":switch(e.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":for(d=o,u=r+this.options.underneathVerticalTopOffset,s=0;s<e.children.length;s++)c=e.children[s],n=this.measure(c,t),d=Math.max(d,n.width+this.options.underneathHorizontalOffset),u+=n.height+this.options.underneathVerticalSeparation;u-=this.options.underneathVerticalSeparation;break;case"Default":for(d=o,u=0,s=0;s<e.children.length;s++)c=e.children[s],n=this.measure(c,t),d=Math.max(d,o+this.options.horizontalSeparation+n.width),u+=n.height+this.options.verticalSeparation;u-=this.options.verticalSeparation;break;default:throw"Unhandled TreeDirection in the Right layout measuring."}break;case"Up":case"Down":switch(e.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":for(d=o,u=r+this.options.underneathVerticalTopOffset,s=0;s<e.children.length;s++)c=e.children[s],n=this.measure(c,t),d=Math.max(d,n.width+this.options.underneathHorizontalOffset),u+=n.height+this.options.underneathVerticalSeparation;u-=this.options.underneathVerticalSeparation;break;case"Default":for(d=0,u=0,s=0;s<e.children.length;s++)c=e.children[s],n=this.measure(c,t),d+=n.width+this.options.horizontalSeparation,u=Math.max(u,n.height+this.options.verticalSeparation+r);d-=this.options.horizontalSeparation;break;default:throw"Unhandled TreeDirection in the Down layout measuring."}break;default:throw"Unhandled TreeDirection in the layout measuring."}h=new l(d,u)}return e.SectorAngle=Math.sqrt(d*d/4+u*u/4),e.Size=h,h},arrange:function(e,t){var n,i,o,r,a,s,l,d,u=e.associatedShape.bounds(),h=u.width,m=u.height;if(p.isEmpty(e.children))e.x=t.x,e.y=t.y,e.BoundingRectangle=new c(t.x,t.y,h,m);else switch(e.treeDirection){case"Left":switch(e.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":for(d=t,e.x=d.x,e.y=d.y,e.BoundingRectangle=new c(e.x,e.y,e.width,e.height),l=t.y+m+this.options.underneathVerticalTopOffset,n=0;n<r.children.length;n++)r=r.children[n],s=d.x-r.associatedShape.width-this.options.underneathHorizontalOffset,i=new f(s,l),this.arrange(r,i),l+=r.Size.height+this.options.underneathVerticalSeparation;break;case"Default":for(d=new f(t.x+e.Size.width-h,t.y+(e.Size.height-m)/2),e.x=d.x,e.y=d.y,e.BoundingRectangle=new c(e.x,e.y,e.width,e.height),s=d.x-this.options.horizontalSeparation,l=t.y,n=0;n<e.children.length;n++)r=e.children[n],i=new f(s-r.Size.width,l),this.arrange(r,i),l+=r.Size.height+this.options.verticalSeparation;break;default:throw"Unsupported TreeDirection"}break;case"Right":switch(e.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":for(d=t,e.x=d.x,e.y=d.y,e.BoundingRectangle=new c(e.x,e.y,e.width,e.height),s=t.x+h+this.options.underneathHorizontalOffset,l=t.y+m+this.options.underneathVerticalTopOffset,n=0;n<e.children.length;n++)r=e.children[n],i=new f(s,l),this.arrange(r,i),l+=r.Size.height+this.options.underneathVerticalSeparation;break;case"Default":for(d=new f(t.x,t.y+(e.Size.height-m)/2),e.x=d.x,e.y=d.y,e.BoundingRectangle=new c(e.x,e.y,e.width,e.height),s=t.x+h+this.options.horizontalSeparation,l=t.y,n=0;n<e.children.length;n++)r=e.children[n],i=new f(s,l),this.arrange(r,i),l+=r.Size.height+this.options.verticalSeparation;break;default:throw"Unsupported TreeDirection"}break;case"Up":if(d=new f(t.x+(e.Size.width-h)/2,t.y+e.Size.height-m),e.x=d.x,e.y=d.y,e.BoundingRectangle=new c(e.x,e.y,e.width,e.height),Math.abs(d.x-t.x)<g){for(a=0,n=0;n<e.children.length;n++)o=e.children[n],a+=o.Size.width+this.options.horizontalSeparation;a-=this.options.horizontalSeparation,s=t.x+(h-a)/2}else s=t.x;for(n=0;n<e.children.length;n++)r=e.children[n],l=d.y-this.options.verticalSeparation-r.Size.height,i=new f(s,l),this.arrange(r,i),s+=r.Size.width+this.options.horizontalSeparation;break;case"Down":switch(e.childrenLayout){case"TopAlignedWithParent":case"BottomAlignedWithParent":break;case"Underneath":for(d=t,e.x=d.x,e.y=d.y,e.BoundingRectangle=new c(e.x,e.y,e.width,e.height),s=t.x+this.options.underneathHorizontalOffset,l=t.y+m+this.options.underneathVerticalTopOffset,n=0;n<e.children.length;n++)r=e.children[n],i=new f(s,l),this.arrange(r,i),l+=r.Size.height+this.options.underneathVerticalSeparation;break;case"Default":if(d=new f(t.x+(e.Size.width-h)/2,t.y),e.x=d.x,e.y=d.y,e.BoundingRectangle=new c(e.x,e.y,e.width,e.height),Math.abs(d.x-t.x)<g){for(a=0,n=0;n<e.children.length;n++)o=e.children[n],a+=o.Size.width+this.options.horizontalSeparation;a-=this.options.horizontalSeparation,s=t.x+(h-a)/2}else s=t.x;for(n=0;n<e.children.length;n++)r=e.children[n],l=d.y+this.options.verticalSeparation+m,i=new f(s,l),this.arrange(r,i),s+=r.Size.width+this.options.horizontalSeparation;break;default:throw"Unsupported TreeDirection"}break;case"None":break;default:throw"Unsupported TreeDirection"}},layoutSwitch:function(){var e,t,n,i,o,r;if(this.center&&!p.isEmpty(this.center.children))switch(e=this.options.subtype,p.isUndefined(e)&&(e="Down"),r=this.center.children,e.toLowerCase()){case"radial":case"radialtree":this.layoutRadialTree();break;case"mindmaphorizontal":case"mindmap":t=this.center.children,1===this.center.children.length?this.layoutRight(t):(o=r.length/2,n=_(this.center.children,function(e){return p.indexOf(r,e)<o}),i=_(this.center.children,function(e){return p.indexOf(r,e)>=o}),this.layoutLeft(n),this.layoutRight(i));break;case"mindmapvertical":t=this.center.children,1===this.center.children.length?this.layoutDown(t):(o=r.length/2,n=_(this.center.children,function(e){return p.indexOf(r,e)<o}),i=_(this.center.children,function(e){return p.indexOf(r,e)>=o}),this.layoutUp(n),this.layoutDown(i));break;case"right":this.layoutRight(this.center.children);break;case"left":this.layoutLeft(this.center.children);break;case"up":case"bottom":this.layoutUp(this.center.children);break;case"down":case"top":this.layoutDown(this.center.children);break;case"tipover":case"tipovertree":if(this.options.tipOverTreeStartLevel<0)throw"The tip-over level should be a positive integer.";this.tipOverTree(this.center.children,this.options.tipOverTreeStartLevel);break;case"undefined":case"none":}}}),x=b.extend({init:function(e){var t=this;if(b.fn.init.call(t),p.isUndefined(e))throw"No diagram specified.";this.diagram=e},layout:function(e){var t,n;return this.transferOptions(e),t=new w(this.diagram),this.graph=t.convert(),n=this.layoutComponents(),new i.LayoutState(this.diagram,n)},layoutComponents:function(){var e,t,n,i,o,r,a,s;if(!this.graph.isEmpty()&&(e=this.graph.getConnectedComponents(),!p.isEmpty(e))){for(t=new y(this.options),n=[],i=0;i<e.length;i++){if(o=e[i],r=this.getTree(o),!r)throw"Failed to find a spanning tree for the component.";a=r.root,s=r.tree,t.layout(s,a),n.push(s)}return this.gridLayoutComponents(n)}},getTree:function(e){var t,n,i,o,r,a=null;if(this.options.roots&&this.options.roots.length>0)for(t=0,n=e.nodes.length;t<n;t++)for(i=e.nodes[t],o=0;o<this.options.roots.length;o++)if(r=this.options.roots[o],r===i.associatedShape){a=i;break}if(!a&&(a=e.root(),!a))throw"Unable to find a root for the tree.";return this.getTreeForRoot(e,a)},getTreeForRoot:function(e,t){var n=e.getSpanningTree(t);return p.isUndefined(n)||n.isEmpty()?null:{tree:n,root:n.root}}}),C=b.extend({init:function(e){var t=this;if(b.fn.init.call(t),p.isUndefined(e))throw"Diagram is not specified.";this.diagram=e},layout:function(e){var t,n,o,r,a,s;if(this.transferOptions(e),t=new w(this.diagram),n=t.convert(e),!n.isEmpty()&&(o=n.getConnectedComponents(),!p.isEmpty(o))){for(r=0;r<o.length;r++)a=o[r],this.layoutGraph(a,e);return s=this.gridLayoutComponents(o),new i.LayoutState(this.diagram,s)}},_initRuntimeProperties:function(){var e,t;for(e=0;e<this.graph.nodes.length;e++)t=this.graph.nodes[e],t.layer=-1,t.downstreamLinkCount=0,t.upstreamLinkCount=0,t.isVirtual=!1,t.uBaryCenter=0,t.dBaryCenter=0,t.upstreamPriority=0,t.downstreamPriority=0,t.gridPosition=0},_prepare:function(e){var t,n,i,o,r,a,s,l,c,u,h,f=[],g=new d,m=0;for(p.forEach(e.nodes,function(e){0===e.incoming.length&&(g.set(e,0),f.push(e))});f.length>0;)for(r=f.shift(),t=0;t<r.outgoing.length;t++)i=r.outgoing[t],a=i.target,o=g.containsKey(a)?Math.max(g.get(r)+1,g.get(a)):g.get(r)+1,g.set(a,o),o>m&&(m=o),v(f,a)||f.push(a);for(s=g.keys(),s.sort(function(e,t){var n=g.get(e),i=g.get(t);return p.sign(i-n)}),l=0;l<s.length;++l)if(c=s[l],u=Number.MAX_VALUE,0!==c.outgoing.length){for(n=0;n<c.outgoing.length;++n)i=c.outgoing[n],u=Math.min(u,g.get(i.target));u>1&&g.set(c,u-1)}for(this.layers=[],t=0;t<m+1;t++)h=[],h.linksTo={},this.layers.push(h);for(g.forEach(function(e,t){e.layer=t,this.layers[t].push(e)},this),n=0;n<this.layers.length;n++)for(h=this.layers[n],t=0;t<h.length;t++)h[t].gridPosition=t},layoutGraph:function(e,t){if(p.isUndefined(e))throw"No graph given or graph analysis of the diagram failed.";p.isDefined(t)&&this.transferOptions(t),this.graph=e,e.setItemIndices();var n=e.makeAcyclic();this._initRuntimeProperties(),this._prepare(e,t),this._dummify(),this._optimizeCrossings(),this._swapPairs(),this.arrangeNodes(),this._moveThingsAround(),this._dedummify(),p.forEach(n,function(e){e.points&&e.points.reverse()})},setMinDist:function(e,t,n){var i=e.layer,o=e.layerIndex;this.minDistances[i][o]=n},getMinDist:function(e,t){var n,i=0,o=e.layerIndex,r=t.layerIndex,a=e.layer,s=Math.min(o,r),l=Math.max(o,r);for(n=s;n<l;++n)i+=this.minDistances[a][n];return i},placeLeftToRight:function(e){var t,n,i,o,r,a,s,l,c,u,h=new d;for(i=0;i<this.layers.length;++i)if(o=e[i]){for(t=0;t<o.length;t++)n=o[t],h.containsKey(n)||this.placeLeft(n,h,i);for(r=Number.POSITIVE_INFINITY,t=0;t<o.length;t++)n=o[t],a=this.rightSibling(n),a&&this.nodeLeftClass.get(a)!==i&&(r=Math.min(r,h.get(a)-h.get(n)-this.getMinDist(n,a)));if(r===Number.POSITIVE_INFINITY){for(s=[],t=0;t<o.length;t++)for(n=o[t],l=[],p.addRange(l,this.upNodes.get(n)),p.addRange(l,this.downNodes.get(n)),c=0;c<l.length;c++)u=l[c],this.nodeLeftClass.get(u)<i&&s.push(h.get(u)-h.get(n));s.sort(),r=0===s.length?0:s.length%2===1?s[this.intDiv(s.length,2)]:(s[this.intDiv(s.length,2)-1]+s[this.intDiv(s.length,2)])/2}for(t=0;t<o.length;t++)n=o[t],h.set(n,h.get(n)+r)}return h},placeRightToLeft:function(e){var t,n,i,o,r,a,s,l,c,u,h=new d;for(i=0;i<this.layers.length;++i)if(o=e[i]){for(t=0;t<o.length;t++)n=o[t],h.containsKey(n)||this.placeRight(n,h,i);for(r=Number.NEGATIVE_INFINITY,t=0;t<o.length;t++)n=o[t],a=this.leftSibling(n),a&&this.nodeRightClass.get(a)!==i&&(r=Math.max(r,h.get(a)-h.get(n)+this.getMinDist(a,n)));if(r===Number.NEGATIVE_INFINITY){for(s=[],t=0;t<o.length;t++)for(n=o[t],l=[],p.addRange(l,this.upNodes.get(n)),p.addRange(l,this.downNodes.get(n)),c=0;c<l.length;c++)u=l[c],this.nodeRightClass.get(u)<i&&s.push(h.get(n)-h.get(u));s.sort(),r=0===s.length?0:s.length%2===1?s[this.intDiv(s.length,2)]:(s[this.intDiv(s.length,2)-1]+s[this.intDiv(s.length,2)])/2}for(t=0;t<o.length;t++)n=o[t],h.set(n,h.get(n)+r)}return h},_getLeftWing:function(){var e={value:null},t=this.computeClasses(e,1); +return this.nodeLeftClass=e.value,t},_getRightWing:function(){var e={value:null},t=this.computeClasses(e,-1);return this.nodeRightClass=e.value,t},computeClasses:function(e,t){var n,i,o,r,a,s,l,c,u,h=0,p=e.value=new d;for(n=0;n<this.layers.length;++n)for(h=n,i=this.layers[n],o=1===t?0:i.length-1;0<=o&&o<i.length;o+=t)if(r=i[o],p.containsKey(r))h=p.get(r);else if(p.set(r,h),r.isVirtual)for(a=this._nodesInLink(r),s=0;s<a.length;s++)l=a[s],p.set(l,h);for(c=[],u=0;u<this.layers.length;u++)c.push(null);return p.forEach(function(e,t){null===c[t]&&(c[t]=[]),c[t].push(e)}),c},_isVerticalLayout:function(){return"up"===this.options.subtype.toLowerCase()||"down"===this.options.subtype.toLowerCase()||"vertical"===this.options.subtype.toLowerCase()},_isHorizontalLayout:function(){return"right"===this.options.subtype.toLowerCase()||"left"===this.options.subtype.toLowerCase()||"horizontal"===this.options.subtype.toLowerCase()},_isIncreasingLayout:function(){return"right"===this.options.subtype.toLowerCase()||"down"===this.options.subtype.toLowerCase()},_moveThingsAround:function(){function e(e,t){var n,i,o=Number.MIN_VALUE;for(n=0;n<e.length;++n)i=e[n],o=t._isVerticalLayout()?Math.max(o,i.height):Math.max(o,i.width);return o}var t,n,i,o,r,a,s,l,c,u,h,f,g,m,v,_,b,w,k,y,x,C,S,T,D,A,E;for(n=0;n<this.layers.length;++n)o=this.layers[n],o.sort(this._gridPositionComparer);for(this.minDistances=[],n=0;n<this.layers.length;++n)for(o=this.layers[n],this.minDistances[n]=[],r=0;r<o.length;++r)i=o[r],i.layerIndex=r,this.minDistances[n][r]=this.options.nodeDistance,r<o.length-1&&(this.minDistances[n][r]+=this._isVerticalLayout()?(i.width+o[r+1].width)/2:(i.height+o[r+1].height)/2);for(this.downNodes=new d,this.upNodes=new d,p.forEach(this.graph.nodes,function(e){this.downNodes.set(e,[]),this.upNodes.set(e,[])},this),p.forEach(this.graph.links,function(e){var t=e.source,n=e.target,i=null,o=null;t.layer>n.layer?(i=e.source,o=e.target):(o=e.source,i=e.target),this.downNodes.get(o).push(i),this.upNodes.get(i).push(o)},this),this.downNodes.forEachValue(function(e){e.sort(this._gridPositionComparer)},this),this.upNodes.forEachValue(function(e){e.sort(this._gridPositionComparer)},this),n=0;n<this.layers.length-1;++n)for(o=this.layers[n],a=0;a<o.length-1;a++)if(s=o[a],s.isVirtual&&(l=this.downNodes.get(s)[0],l.isVirtual))for(r=a+1;r<o.length;++r)i=o[r],i.isVirtual&&(c=this.downNodes.get(i)[0],c.isVirtual&&l.gridPosition>c.gridPosition&&(u=l.gridPosition,l.gridPosition=c.gridPosition,c.gridPosition=u,h=l.layerIndex,f=c.layerIndex,this.layers[n+1][h]=c,this.layers[n+1][f]=l,l.layerIndex=f,c.layerIndex=h));for(g=this._getLeftWing(),m=this._getRightWing(),v=this.placeLeftToRight(g),_=this.placeRightToLeft(m),b=new d,p.forEach(this.graph.nodes,function(e){b.set(e,(v.get(e)+_.get(e))/2)}),w=new d,k=new d,n=0;n<this.layers.length;++n)for(o=this.layers[n],y=-1,x=-1,r=0;r<o.length;++r)i=o[r],w.set(i,0),k.set(i,!1),i.isVirtual&&(y===-1?y=r:y===r-1?y=r:(x=r,w.set(o[y],0),b.get(i)-b.get(o[y])===this.getMinDist(o[y],i)?k.set(o[y],!0):k.set(o[y],!1),y=r));for(C=[1,-1],p.forEach(C,function(e){var n,i,o,r,a,s,l,c=1===e?0:this.layers.length-1;for(n=c;0<=n&&n<this.layers.length;n+=e){if(i=this.layers[n],o=this._firstVirtualNode(i),r=null,a=null,o!==-1)for(r=i[o],a=[],t=0;t<o;t++)a.push(i[t]);else r=null,a=i;if(a.length>0){for(this._sequencer(b,null,r,e,a),t=0;t<a.length-1;++t)this.setMinDist(a[t],a[t+1],b.get(a[t+1])-b.get(a[t]));r&&this.setMinDist(a[a.length-1],r,b.get(r)-b.get(a[a.length-1]))}for(;r;){if(s=this.nextVirtualNode(i,r)){if(w.get(r)===e){for(o=r.layerIndex,l=s.layerIndex,a=[],t=o+1;t<l;t++)a.push(i[t]);a.length>0&&this._sequencer(b,r,s,e,a),k.set(r,!0)}}else{for(o=r.layerIndex,a=[],t=o+1;t<i.length;t++)a.push(i[t]);if(a.length>0){for(this._sequencer(b,r,null,e,a),t=0;t<a.length-1;++t)this.setMinDist(a[t],a[t+1],b.get(a[t+1])-b.get(a[t]));this.setMinDist(r,a[0],b.get(a[0])-b.get(r))}}r=s}this.adjustDirections(n,e,w,k)}},this),S=this._isIncreasingLayout()?0:this.layers.length-1,T=function(e,t){return t._isIncreasingLayout()?e<t.layers.length:e>=0},D=this._isIncreasingLayout()?1:-1,A=0,t=S;T(t,this);t+=D){for(o=this.layers[t],E=e(o,this),r=0;r<o.length;++r)i=o[r],this._isVerticalLayout()?(i.x=b.get(i),i.y=A+E/2):(i.x=A+E/2,i.y=b.get(i));A+=this.options.layerSeparation+E}},adjustDirections:function(e,t,n,i){var o,r,a,s,l,c,d,u,h,p,f,g,m,v;if(!(e+t<0||e+t>=this.layers.length))for(o=null,r=null,a=this.layers[e+t],s=0;s<a.length;++s)if(l=a[s],l.isVirtual&&(c=this.getNeighborOnLayer(l,e),c.isVirtual)){if(o){for(d=i.get(r),u=this.layers[e],h=r.layerIndex,p=c.layerIndex,f=h+1;f<p;++f)u[f].isVirtual&&(d=d&&i.get(u[f]));if(d)for(n.set(o,t),g=o.layerIndex,m=l.layerIndex,v=g+1;v<m;++v)a[v].isVirtual&&n.set(a[v],t)}o=l,r=c}},getNeighborOnLayer:function(e,t){var n=this.upNodes.get(e)[0];return n.layer===t?n:(n=this.downNodes.get(e)[0],n.layer===t?n:null)},_sequencer:function(e,t,n,i,o){if(1===o.length&&this._sequenceSingle(e,t,n,i,o[0]),o.length>1){var r=o.length,a=this.intDiv(r,2);this._sequencer(e,t,n,i,o.slice(0,a)),this._sequencer(e,t,n,i,o.slice(a)),this.combineSequences(e,t,n,i,o)}},_sequenceSingle:function(e,t,n,i,o){var r=i===-1?this.downNodes.get(o):this.upNodes.get(o),a=r.length;0!==a&&(a%2===1?e.set(o,e.get(r[this.intDiv(a,2)])):e.set(o,(e.get(r[this.intDiv(a,2)-1])+e.get(r[this.intDiv(a,2)]))/2),t&&e.set(o,Math.max(e.get(o),e.get(t)+this.getMinDist(t,o))),n&&e.set(o,Math.min(e.get(o),e.get(n)-this.getMinDist(o,n))))},combineSequences:function(e,t,n,i,o){var r,a,s,l,c,d,u,h,p,f,g=o.length,m=this.intDiv(g,2),v=[];for(r=0;r<m;++r){for(a=0,l=i===-1?this.downNodes.get(o[r]):this.upNodes.get(o[r]),s=0;s<l.length;++s)c=l[s],e.get(c)>=e.get(o[r])?a++:(a--,v.push({k:e.get(c)+this.getMinDist(o[r],o[m-1]),v:2}));v.push({k:e.get(o[r])+this.getMinDist(o[r],o[m-1]),v:a})}for(t&&v.push({k:e.get(t)+this.getMinDist(t,o[m-1]),v:Number.MAX_VALUE}),v.sort(this._positionDescendingComparer),u=[],r=m;r<g;++r){for(a=0,l=i===-1?this.downNodes.get(o[r]):this.upNodes.get(o[r]),s=0;s<l.length;++s)c=l[s],e.get(c)<=e.get(o[r])?a++:(a--,u.push({k:e.get(c)-this.getMinDist(o[r],o[m]),v:2}));u.push({k:e.get(o[r])-this.getMinDist(o[r],o[m]),v:a})}for(n&&u.push({k:e.get(n)-this.getMinDist(n,o[m]),v:Number.MAX_VALUE}),u.sort(this._positionAscendingComparer),h=0,p=0,f=this.getMinDist(o[m-1],o[m]);e.get(o[m])-e.get(o[m-1])<f;)if(h<p){if(0===v.length){e.set(o[m-1],e.get(o[m])-f);break}d=v.shift(),h+=d.v,e.set(o[m-1],d.k),e.set(o[m-1],Math.max(e.get(o[m-1]),e.get(o[m])-f))}else{if(0===u.length){e.set(o[m],e.get(o[m-1])+f);break}d=u.shift(),p+=d.v,e.set(o[m],d.k),e.set(o[m],Math.min(e.get(o[m]),e.get(o[m-1])+f))}for(r=m-2;r>=0;r--)e.set(o[r],Math.min(e.get(o[r]),e.get(o[m-1])-this.getMinDist(o[r],o[m-1])));for(r=m+1;r<g;r++)e.set(o[r],Math.max(e.get(o[r]),e.get(o[m])+this.getMinDist(o[r],o[m])))},placeLeft:function(e,t,n){var i=Number.NEGATIVE_INFINITY;p.forEach(this._getComposite(e),function(e){var o=this.leftSibling(e);o&&this.nodeLeftClass.get(o)===this.nodeLeftClass.get(e)&&(t.containsKey(o)||this.placeLeft(o,t,n),i=Math.max(i,t.get(o)+this.getMinDist(o,e)))},this),i===Number.NEGATIVE_INFINITY&&(i=0),p.forEach(this._getComposite(e),function(e){t.set(e,i)})},placeRight:function(e,t,n){var i=Number.POSITIVE_INFINITY;p.forEach(this._getComposite(e),function(e){var o=this.rightSibling(e);o&&this.nodeRightClass.get(o)===this.nodeRightClass.get(e)&&(t.containsKey(o)||this.placeRight(o,t,n),i=Math.min(i,t.get(o)-this.getMinDist(e,o)))},this),i===Number.POSITIVE_INFINITY&&(i=0),p.forEach(this._getComposite(e),function(e){t.set(e,i)})},leftSibling:function(e){var t=this.layers[e.layer],n=e.layerIndex;return 0===n?null:t[n-1]},rightSibling:function(e){var t=this.layers[e.layer],n=e.layerIndex;return n===t.length-1?null:t[n+1]},_getComposite:function(e){return e.isVirtual?this._nodesInLink(e):[e]},arrangeNodes:function(){var e,t,n,i,o,r,a,s;for(t=0;t<this.layers.length;t++)for(i=this.layers[t],n=0;n<i.length;n++)o=i[n],o.upstreamPriority=o.upstreamLinkCount,o.downstreamPriority=o.downstreamLinkCount;for(r=2,a=0;a<r;a++){for(e=this.layers.length-1;e>=1;e--)this.layoutLayer(!1,e);for(e=0;e<this.layers.length-1;e++)this.layoutLayer(!0,e)}for(s=Number.MAX_VALUE,t=0;t<this.layers.length;t++)for(i=this.layers[t],n=0;n<i.length;n++)o=i[n],s=Math.min(s,o.gridPosition);if(s<0)for(t=0;t<this.layers.length;t++)for(i=this.layers[t],n=0;n<i.length;n++)o=i[n],o.gridPosition=o.gridPosition-s},layoutLayer:function(e,t){var n,i,o,r;for(i=e?this.layers[n=t+1]:this.layers[n=t-1],o=[],r=0;r<i.length;r++)o.push(i[r]);o.sort(function(e,t){var n=(e.upstreamPriority+e.downstreamPriority)/2,i=(t.upstreamPriority+t.downstreamPriority)/2;return Math.abs(n-i)<1e-4?0:n<i?1:-1}),p.forEach(o,function(e){var t=e.gridPosition,n=this.calcBaryCenter(e),o=(e.upstreamPriority+e.downstreamPriority)/2;if(!(Math.abs(t-n)<1e-4||Math.abs(t-n)<.2501))if(t<n)for(;t<n&&this.moveRight(e,i,o);)t=e.gridPosition;else for(;t>n&&this.moveLeft(e,i,o);)t=e.gridPosition},this),n>0&&this.calcDownData(n-1),n<this.layers.length-1&&this.calcUpData(n+1)},moveRight:function(e,t,n){var i,o,r=p.indexOf(t,e);return r===t.length-1?(e.gridPosition=e.gridPosition+.5,!0):(i=t[r+1],o=(i.upstreamPriority+i.downstreamPriority)/2,i.gridPosition>e.gridPosition+1?(e.gridPosition=e.gridPosition+.5,!0):!(o>n||Math.abs(o-n)<1e-4)&&(!!this.moveRight(i,t,n)&&(e.gridPosition=e.gridPosition+.5,!0)))},moveLeft:function(e,t,n){var i,o,r=p.indexOf(t,e);return 0===r?(e.gridPosition=e.gridPosition-.5,!0):(i=t[r-1],o=(i.upstreamPriority+i.downstreamPriority)/2,i.gridPosition<e.gridPosition-1?(e.gridPosition=e.gridPosition-.5,!0):!(o>n||Math.abs(o-n)<1e-4)&&(!!this.moveLeft(i,t,n)&&(e.gridPosition=e.gridPosition-.5,!0)))},mapVirtualNode:function(e,t){this.nodeToLinkMap.set(e,t),this.linkToNodeMap.containsKey(t)||this.linkToNodeMap.set(t,[]),this.linkToNodeMap.get(t).push(e)},_nodesInLink:function(e){return this.linkToNodeMap.get(this.nodeToLinkMap.get(e))},_dummify:function(){var e,t,n,i,o,s,l,c,u,h,f,g,m,v,_,b,w,k,y,x;for(this.linkToNodeMap=new d,this.nodeToLinkMap=new d,u=this.graph.links.slice(0),h=this.layers,f=function(e,t,n){h[e].linksTo[t]=h[e].linksTo[t]||[],h[e].linksTo[t].push(n)},c=0;c<u.length;c++)if(g=u[c],m=g.source,v=g.target,_=m.layer,b=v.layer,w=m.gridPosition,k=v.gridPosition,y=(k-w)/Math.abs(b-_),x=m,_-b>1){for(l=_-1;l>b;l--){for(n=new r,n.x=m.x,n.y=m.y,n.width=m.width/100,n.height=m.height/100,e=h[l],t=(l-b)*y+w,t>e.length&&(t=e.length),w>=h[_].length-1&&k>=h[b].length-1?t=e.length:0===w&&0===k&&(t=0),n.layer=l,n.uBaryCenter=0,n.dBaryCenter=0,n.upstreamLinkCount=0,n.downstreamLinkCount=0,n.gridPosition=t,n.isVirtual=!0,p.insert(e,n,t),o=t+1;o<e.length;o++)i=e[o],i.gridPosition=i.gridPosition+1;s=new a(x,n),s.depthOfDumminess=0,f(l-1,l,s),x=n,this.graph._addNode(n),this.graph.addLink(s),n.index=this.graph.nodes.length-1,this.mapVirtualNode(n,g)}f(b-1,b,s),g.changeSource(x),g.depthOfDumminess=_-b-1}else if(_-b<-1){for(l=_+1;l<b;l++){for(n=new r,n.x=m.x,n.y=m.y,n.width=m.width/100,n.height=m.height/100,e=h[l],t=(l-_)*y+w,t>e.length&&(t=e.length),w>=h[_].length-1&&k>=h[b].length-1?t=e.length:0===w&&0===k&&(t=0),n.layer=l,n.uBaryCenter=0,n.dBaryCenter=0,n.upstreamLinkCount=0,n.downstreamLinkCount=0,n.gridPosition=t,n.isVirtual=!0,t&=t,p.insert(e,n,t),o=t+1;o<e.length;o++)i=e[o],i.gridPosition=i.gridPosition+1;s=new a(x,n),s.depthOfDumminess=0,f(l-1,l,s),x=n,this.graph._addNode(n),this.graph.addLink(s),n.index=this.graph.nodes.length-1,this.mapVirtualNode(n,g)}f(b-1,b,g),g.changeSource(x),g.depthOfDumminess=b-_-1}else f(_,b,g)},_dedummify:function(){for(var e,t,n,i,o,r,a,s,l=!0;l;)for(l=!1,e=0;e<this.graph.links.length;e++)if(t=this.graph.links[e],t.depthOfDumminess){for(n=[],n.unshift({x:t.target.x,y:t.target.y}),n.unshift({x:t.source.x,y:t.source.y}),i=t,o=t.depthOfDumminess,r=0;r<o;r++)a=i.source,s=a.incoming[0],n.unshift({x:s.source.x,y:s.source.y}),i=s;t.changeSource(i.source),t.depthOfDumminess=0,n.length>2?(n.splice(0,1),n.splice(n.length-1),t.points=n):t.points=[],l=!0;break}},_optimizeCrossings:function(){for(var e,t=-1,n=3,i=0;0!==t&&!(i++>n);){for(t=0,e=this.layers.length-1;e>=1;e--)t+=this.optimizeLayerCrossings(!1,e);for(e=0;e<this.layers.length-1;e++)t+=this.optimizeLayerCrossings(!0,e)}},calcUpData:function(e){var t,n,i,o,r,a,s,l,c;if(0!==e){for(t=this.layers[e],r=new u,a=this.layers[e-1],n=0;n<a.length;n++)r.add(a[n]);for(n=0;n<t.length;n++){for(s=t[n],l=0,c=0,i=0;i<s.incoming.length;i++)o=s.incoming[i],r.contains(o.source)&&(c++,l+=o.source.gridPosition);for(i=0;i<s.outgoing.length;i++)o=s.outgoing[i],r.contains(o.target)&&(c++,l+=o.target.gridPosition);c>0?(s.uBaryCenter=l/c,s.upstreamLinkCount=c):(s.uBaryCenter=n,s.upstreamLinkCount=0)}}},calcDownData:function(e){var t,n,i,o,r,a,s,l,c;if(e!==this.layers.length-1){for(t=this.layers[e],r=new u,a=this.layers[e+1],n=0;n<a.length;n++)r.add(a[n]);for(n=0;n<t.length;n++){for(s=t[n],l=0,c=0,i=0;i<s.incoming.length;i++)o=s.incoming[i],r.contains(o.source)&&(c++,l+=o.source.gridPosition);for(i=0;i<s.outgoing.length;i++)o=s.outgoing[i],r.contains(o.target)&&(c++,l+=o.target.gridPosition);c>0?(s.dBaryCenter=l/c,s.downstreamLinkCount=c):(s.dBaryCenter=n,s.downstreamLinkCount=0)}}},optimizeLayerCrossings:function(e,t){var n,i,o,r,a,s,l,c;for(i=e?this.layers[n=t+1]:this.layers[n=t-1],o=i.slice(0),e?this.calcUpData(n):this.calcDownData(n),r=this,i.sort(function(e,t){var n,i=r.calcBaryCenter(e),o=r.calcBaryCenter(t);return Math.abs(i-o)<1e-4?e.degree()===t.degree()?r.compareByIndex(e,t):e.degree()<t.degree()?1:-1:(n=1e3*(o-i),n>0?-1:n<0?1:r.compareByIndex(e,t))}),s=0,a=0;a<i.length;a++)i[a]!==o[a]&&s++;if(s>0)for(l=0,a=0;a<i.length;a++)c=i[a],c.gridPosition=l++;return s},_swapPairs:function(){for(var e,t,n,i,o,r,a,s,l,c,d,u,h,p,f,g,m,v=this.options.layeredIterations,_=0;;){if(_++>v)break;for(e=_%4<=1,t=_%4===1,n=e?0:this.layers.length-1;e?n<=this.layers.length-1:n>=0;n+=e?1:-1){for(i=this.layers[n],o=!1,r=!0,a=0,s=0;s<i.length-1;s++)l=0,c=0,d=0,r?(0!==n&&(l=this.countLinksCrossingBetweenTwoLayers(n-1,n)),n!==this.layers.length-1&&(c=this.countLinksCrossingBetweenTwoLayers(n,n+1)),e?l*=2:c*=2,d=l+c):d=a,0!==d&&(u=i[s],h=i[s+1],p=u.gridPosition,f=h.gridPosition,i[s]=h,i[s+1]=u,u.gridPosition=f,h.gridPosition=p,l=0,0!==n&&(l=this.countLinksCrossingBetweenTwoLayers(n-1,n)),c=0,n!==this.layers.length-1&&(c=this.countLinksCrossingBetweenTwoLayers(n,n+1)),e?l*=2:c*=2,g=l+c,m=!1,m=t?g>=d:g>d,m?(u=i[s],h=i[s+1],p=u.gridPosition,f=h.gridPosition,i[s]=h,i[s+1]=u,u.gridPosition=f,h.gridPosition=p,a=d,r=!1):(o=!0,r=!0));o&&(n!==this.layers.length-1&&this.calcUpData(n+1),0!==n&&this.calcDownData(n-1))}}},countLinksCrossingBetweenTwoLayers:function(e,t){var n,i,o,r,a,s,l,c,d,u,h,p,f=this.layers[e].linksTo[t],g=0,m=f.length;for(l=0;l<m;l++)for(n=f[l],c=l+1;c<m;c++)i=f[c],n.target.layer===t?(o=n.source,r=n.target):(o=n.target,r=n.source),i.target.layer===t?(a=i.source,s=i.target):(a=i.target,s=i.source),d=o.gridPosition,u=r.gridPosition,h=a.gridPosition,p=s.gridPosition,(d-h)*(u-p)<0&&g++;return g},calcBaryCenter:function(e){var t=e.upstreamLinkCount,n=e.downstreamLinkCount,i=e.uBaryCenter,o=e.dBaryCenter;return t>0&&n>0?(i+o)/2:t>0?i:n>0?o:0},_gridPositionComparer:function(e,t){return e.gridPosition<t.gridPosition?-1:e.gridPosition>t.gridPosition?1:0},_positionAscendingComparer:function(e,t){return e.k<t.k?-1:e.k>t.k?1:0},_positionDescendingComparer:function(e,t){return e.k<t.k?1:e.k>t.k?-1:0},_firstVirtualNode:function(e){for(var t=0;t<e.length;t++)if(e[t].isVirtual)return t;return-1},compareByIndex:function(e,t){var n=e.index,i=t.index;return n<i?1:n>i?-1:0},intDiv:function(e,t){return(e-e%t)/t},nextVirtualNode:function(e,t){var n,i=t.layerIndex;for(n=i+1;n<e.length;++n)if(e[n].isVirtual)return e[n];return null}}),S=n.Class.extend({init:function(e,t){if(p.isUndefined(e))throw"No diagram given";this.diagram=e,this.nodeMap=new d,this.linkMap=new d,this.capture(t?t:e)},capture:function(e){var t,n,o,r,a,s,l,d,u;if(e instanceof i.Graph){for(r=0;r<e.nodes.length;r++)t=e.nodes[r],o=t.associatedShape,this.nodeMap.set(o.visual.id,new c(t.x,t.y,t.width,t.height));for(r=0;r<e.links.length;r++)s=e.links[r],a=s.associatedConnection,this.linkMap.set(a.visual.id,s.points())}else if(e instanceof Array)for(n=e,r=0;r<n.length;r++)t=n[r],o=t.associatedShape,o&&this.nodeMap.set(o.visual.id,new c(t.x,t.y,t.width,t.height));else if(e.hasOwnProperty("links")&&e.hasOwnProperty("nodes")){for(n=e.nodes,l=e.links,r=0;r<n.length;r++)t=n[r],o=t.associatedShape,o&&this.nodeMap.set(o.visual.id,new c(t.x,t.y,t.width,t.height));for(r=0;r<l.length;r++)s=l[r],a=s.associatedConnection,a&&this.linkMap.set(a.visual.id,s.points)}else{for(d=this.diagram.shapes,u=this.diagram.connections,r=0;r<d.length;r++)o=d[r],this.nodeMap.set(o.visual.id,o.bounds());for(r=0;r<u.length;r++)a=u[r],this.linkMap.set(a.visual.id,a.points())}}});s(i,{init:function(e){n.init(e,i.ui)},SpringLayout:k,TreeLayout:x,GraphAdapter:w,LayeredLayout:C,LayoutBase:b,LayoutState:S})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("dataviz/diagram/dom.min",["kendo.data.min","kendo.draganddrop.min","kendo.toolbar.min","kendo.editable.min","kendo.window.min","kendo.dropdownlist.min","kendo.dataviz.core.min","kendo.dataviz.themes.min","dataviz/diagram/svg.min","dataviz/diagram/services.min","dataviz/diagram/layout.min"],e)}(function(){!function(e,t){function n(e){var t=e.originalEvent,n=0;return t.wheelDelta?(n=-t.wheelDelta/40,n=n>0?ke.ceil(n):ke.floor(n)):t.detail&&(n=t.detail),n}function i(e){return e.options.name.toLowerCase()===Re.toLowerCase()}function o(e,t){var n,o,r,a,s=He;for(r=0;r<t.length;r++)o=t[r],i(o)||(a=e.distanceTo(o.position()),a<s&&(s=a,n=o));return n}function r(e,t){var n,i,o,r=[],a=e.drawingContainer().children,s=a.length;for(n=0;n<t.length;n++)for(i=t[n],o=0;o<s;o++)if(a[o]==i.drawingContainer()){r.push(o);break}return r}function a(e){var t={};return e=e||{},me(e.text)&&null!==e.text&&(t.text=e.text),me(e.x)&&null!==e.x&&(t.x=e.x),me(e.y)&&null!==e.y&&(t.y=e.y),me(e.width)&&null!==e.width&&(t.width=e.width),me(e.height)&&null!==e.height&&(t.height=e.height),me(e.type)&&null!==e.type&&(t.type=e.type),t}function s(e){var t={};return e=e||{},me(e.text)&&null!==e.text&&(t.content=e.text),me(e.type)&&null!==e.type&&(t.type=e.type),me(e.from)&&null!==e.from&&(t.from=e.from),me(e.fromConnector)&&null!==e.fromConnector&&(t.fromConnector=e.fromConnector),me(e.fromX)&&null!==e.fromX&&(t.fromX=e.fromX),me(e.fromY)&&null!==e.fromY&&(t.fromY=e.fromY),me(e.to)&&null!==e.to&&(t.to=e.to),me(e.toConnector)&&null!==e.toConnector&&(t.toConnector=e.toConnector),me(e.toX)&&null!==e.toX&&(t.toX=e.toX),me(e.toY)&&null!==e.toY&&(t.toY=e.toY),t}function l(t,n){var i,o=this.dataSource.reader.model;o&&(i=o.fn.fields.text?"text":o.idField,e("<input name='"+n.field+"' />").appendTo(t).kendoDropDownList({dataValueField:o.idField,dataTextField:i,dataSource:this.dataSource.data().toJSON(),optionLabel:" ",valuePrimitive:!0}))}function c(e){this.dataItem=e,this.callbacks=[]}function d(){this.items={}}function u(e){var t=e;return e instanceof kendo.data.Model&&(t=e.toJSON(),t[e.idField]=e._defaultId),t}function h(e){var t,n,i=[],o=[];for(n=0;n<e.length;n++)t=e[n],t instanceof k?o.push(t):i.push(t);return{shapes:o,connections:i}}function p(e,t){return e.reader.model?new e.reader.model(t):new kendo.data.ObservableObject(t)}function f(e,t){me(t[e])&&t.set(e,null)}function g(e,t,n){var i,o;for(o=0;o<n.length;o++)i=n[o],t&&!me(t[i])&&(t[i]=e[i])}function m(e){var t=e.drawingContainer().clippedBBox(null);0===t.origin.x&&0===t.origin.y||e.position(-t.origin.x,-t.origin.y)}function v(e){e.preventDefault()}var _,b,w,k,y,x,C,S,T,D,A,E,I=kendo.dataviz,M=kendo.drawing,F=kendo.geometry,R=I.diagram,P=kendo.ui.Widget,z=kendo.Class,B=e.proxy,L=kendo.deepExtend,H=kendo._outerWidth,N=kendo._outerHeight,O=e.extend,V=kendo.data.HierarchicalDataSource,W=R.Canvas,U=R.Group,q=R.Rectangle,j=R.Circle,G=R.CompositeTransform,$=R.Rect,Y=R.Path,K=R.DeleteShapeUnit,Q=R.DeleteConnectionUnit,X=R.TextBlock,J=R.Image,Z=R.Point,ee=R.Intersect,te=R.ConnectionEditAdorner,ne=R.UndoRedoService,ie=R.ToolService,oe=R.Selector,re=R.ResizingAdorner,ae=R.ConnectorsAdorner,se=R.Cursors,le=R.Utils,ce=kendo.Observable,de=R.ToBackUnit,ue=R.ToFrontUnit,he=R.PolylineRouter,pe=R.CascadingRouter,fe=le.isUndefined,ge=le.isDefined,me=M.util.defined,ve=e.isArray,_e=kendo.isFunction,be=le.isString,we=e.isPlainObject,ke=Math,ye=".kendoDiagram",xe="cascading",Ce="itemBoundsChange",Se="change",Te="click",De="drag",Ae="dragEnd",Ee="dragStart",Ie="mouseEnter",Me="mouseLeave",Fe="error",Re="Auto",Pe="Top",ze="Right",Be="Left",Le="Bottom",He=9007199254740992,Ne="select",Oe="itemRotate",Ve="pan",We="zoomStart",Ue="zoomEnd",qe="none",je=600,Ge=600,$e="rectangle",Ye=100,Ke=100,Qe=20,Xe=20,Je=0,Ze="Yellow",et=Number.MAX_VALUE,tt=-Number.MAX_VALUE,nt="absolute",it="transformed",ot="rotated",rt="transparent",at="width",st="height",lt="x",ct="y",dt="DOMMouseScroll"+ye+" mousewheel"+ye,ut=.05,ht=5,pt='<a class="k-button k-button-icontext #=className#" href="\\#"><span class="#=iconClass# #=imageClass#"></span>#=text#</a>',ft=5;R.DefaultConnectors=[{name:Pe},{name:Le},{name:Be},{name:ze},{name:Re,position:function(e){return e.getPosition("center")}}],_={cancel:{text:"Cancel",imageClass:"k-i-cancel",className:"k-diagram-cancel",iconClass:"k-icon"},update:{text:"Update",imageClass:"k-i-checkmark",className:"k-diagram-update",iconClass:"k-icon"}},R.shapeDefaults=function(e){var t={type:$e,path:"",autoSize:!0,visual:null,x:Je,y:Je,minWidth:Qe,minHeight:Xe,width:Ye,height:Ke,hover:{},editable:{connect:!0,tools:[]},connectors:R.DefaultConnectors,rotation:{angle:0}};return le.simpleExtend(t,e),t},b=ce.extend({init:function(e){var t=this;t.dataItem=(e||{}).dataItem,ce.fn.init.call(t),t.options=L({id:R.randomId()},t.options,e),t.isSelected=!1,t.visual=new U({id:t.options.id,autoSize:t.options.autoSize}),t.id=t.options.id,t._template()},options:{hover:{},cursor:se.grip,content:{align:"center middle"},selectable:!0,serializable:!0,enable:!0},_getCursor:function(e){return this.adorner?this.adorner._getCursor(e):this.options.cursor},visible:function(e){return fe(e)?this.visual.visible():(this.visual.visible(e),t)},bounds:function(){},refresh:function(){this.visual.redraw()},position:function(e){this.options.x=e.x,this.options.y=e.y,this.visual.position(e)},toString:function(){return this.options.id},serialize:function(){var e=L({},{options:this.options});return this.dataItem&&(e.dataItem=""+this.dataItem),e},_content:function(e){var n,i,o;return e!==t&&(n=this.options,R.Utils.isString(e)?n.content.text=e:L(n.content,e),i=n.content,o=this._contentVisual,o?this._updateContentVisual(i):this._createContentVisual(i)),this.options.content.text},_createContentVisual:function(e){e.text&&(this._contentVisual=new X(e),this._contentVisual._includeInBBox=!1,this.visual.append(this._contentVisual))},_updateContentVisual:function(e){this._contentVisual.redraw(e)},_hitTest:function(e){var t=this.bounds();return this.visible()&&t.contains(e)&&this.options.enable},_template:function(){var e,t,n=this;n.options.content.template&&(e=n.dataItem||{},t=kendo.template(n.options.content.template,{paramName:"dataItem"}),n.options.content.text=t(e))},_canSelect:function(){return this.options.selectable!==!1},toJSON:function(){return{id:this.options.id}}}),w=z.extend({init:function(e,t){this.options=L({},this.options,t),this.connections=[],this.shape=e},options:{width:7,height:7,fill:{color:Ze},hover:{}},position:function(){return this.options.position?this.options.position(this.shape):this.shape.getPosition(this.options.name)},toJSON:function(){return{shapeId:""+this.shape,connector:this.options.name}}}),w.parse=function(e,t){var n,i,o=t.split(":"),r=o[0],a=o[1]||Re;for(n=0;n<e.shapes.length;n++)if(i=e.shapes[n],i.options.id==r)return i.getConnector(a.trim())},k=b.extend({init:function(e,t){var n=this;b.fn.init.call(n,e),this.diagram=t,this.updateOptionsFromModel(),e=n.options,n.connectors=[],n.type=e.type,n.createShapeVisual(),n.updateBounds(),n.content(n.content()),n._createConnectors()},options:R.shapeDefaults(),_setOptionsFromModel:function(e){var t=a(e||this.dataItem);this.options=L({},this.options,t),this.redrawVisual()},updateOptionsFromModel:function(e,t){var n,i;this.diagram&&this.diagram._isEditable&&(n=a(e||this.dataItem),e&&t?I.inArray(t,["x","y","width","height"])?(i=this.bounds(),i[t]=e[t],this.bounds(i)):(this.options.visual?this._redrawVisual():n.type&&(this.options=L({},this.options,n),this._redrawVisual()),this.options.content&&(this._template(),this.content(this.options.content))):this.options=L({},this.options,n))},_redrawVisual:function(){this.visual.clear(),this._contentVisual=null,this.options.dataItem=this.dataItem,this.createShapeVisual(),this.updateBounds()},redrawVisual:function(){this._redrawVisual(),this.options.content&&(this._template(),this.content(this.options.content))},updateModel:function(e){var t,n,i=this.diagram;i&&i._isEditable&&(t=this._bounds,n=this.dataItem,n&&(i._suspendModelRefresh(),me(n.x)&&t.x!==n.x&&n.set("x",t.x),me(n.y)&&t.y!==n.y&&n.set("y",t.y),me(n.width)&&t.width!==n.width&&n.set("width",t.width),me(n.height)&&t.height!==n.height&&n.set("height",t.height),this.dataItem=n,i._resumeModelRefresh(),e&&i._syncShapeChanges()))},updateBounds:function(){var e=this.visual._measure(!0),t=this.options;this.bounds(new $(t.x,t.y,e.width,e.height)),this._rotate(),this._alignContent()},content:function(e){var t=this._content(e);return this._alignContent(),t},_alignContent:function(){var e,t,n,i,o,r=this.options.content||{},a=this._contentVisual;a&&r.align&&(e=this.visual._measure(),t=new R.RectAlign(e),n=a.drawingElement.bbox(null),i=new $(0,0,n.width(),n.height()),o=t.align(i,r.align),a.position(o.topLeft()))},_createConnectors:function(){var e,t,n=this.options,i=n.connectors.length,o=n.connectorDefaults;for(t=0;t<i;t++)e=new w(this,L({},o,n.connectors[t])),this.connectors.push(e)},bounds:function(e){var t,n;if(e)if(be(e))switch(e){case it:t=this._transformedBounds();break;case nt:t=this._transformedBounds(),n=this.diagram._pan,t.x+=n.x,t.y+=n.y;break;case ot:t=this._rotatedBounds();break;default:t=this._bounds}else this._setBounds(e),this._triggerBoundsChange(),this.diagram&&this.diagram._layouting||this.refreshConnections();else t=this._bounds;return t},_setBounds:function(e){var t=this.options,n=e.topLeft(),i=t.x=n.x,o=t.y=n.y,r=t.width=ke.max(e.width,t.minWidth),a=t.height=ke.max(e.height,t.minHeight);this._bounds=new $(i,o,r,a),this.visual.redraw({x:i,y:o,width:r,height:a})},position:function(e){return e?(this.bounds(new $(e.x,e.y,this._bounds.width,this._bounds.height)),t):this._bounds.topLeft()},clone:function(){var e=this.serialize();return e.options.id=R.randomId(),this.diagram&&this.diagram._isEditable&&me(this.dataItem)&&(e.options.dataItem=u(this.dataItem)),new k(e.options)},select:function(e){var t,n,i=this.diagram;if(fe(e)&&(e=!0),this._canSelect()&&this.isSelected!=e)return t=[],n=[],this.isSelected=e,this.isSelected?(i._selectedItems.push(this),t.push(this)):(le.remove(i._selectedItems,this),n.push(this)),i._internalSelection||i._selectionChanged(t,n),!0},rotate:function(e,n,i){var o,r,a,s,l=this.visual.rotate();return e!==t&&(i!==!1&&this.diagram&&this.diagram.undoRedoService&&e!==l.angle&&this.diagram.undoRedoService.add(new R.RotateUnit(this.diagram._resizingAdorner,[this],[l.angle]),!1),o=this.bounds(),r=new Z(o.width/2,o.height/2),n&&(a=e-l.angle,s=o.center().rotate(n,360-a).minus(r),this._rotationOffset=this._rotationOffset.plus(s.minus(o.topLeft())),this.position(s)),this.visual.rotate(e,r),this.options.rotation.angle=e,this.diagram&&this.diagram._connectorsAdorner&&this.diagram._connectorsAdorner.refresh(),this.refreshConnections(),this.diagram&&this.diagram.trigger(Oe,{item:this})),l},connections:function(e){var t,n,i,o,r,a,s,l=[];for(t=0;t<this.connectors.length;t++)for(r=this.connectors[t],o=r.connections,n=0,o;n<o.length;n++)i=o[n],"out"==e?(a=i.source(),a.shape&&a.shape==this&&l.push(i)):"in"==e?(s=i.target(),s.shape&&s.shape==this&&l.push(i)):l.push(i);return l},refreshConnections:function(){e.each(this.connections(),function(){this.refresh()})},getConnector:function(e){var t,n;if(!be(e))return e instanceof Z?o(e,this.connectors):this.connectors.length?this.connectors[0]:null;for(e=e.toLocaleLowerCase(),t=0;t<this.connectors.length;t++)if(n=this.connectors[t],n.options.name.toLocaleLowerCase()==e)return n},getPosition:function(e){var t=this.bounds(),n=e.charAt(0).toLowerCase()+e.slice(1);return _e(t[n])?this._transformPoint(t[n]()):t.center()},redraw:function(e){var t,n;e&&(t=this.options,this.shapeVisual.redraw(this._visualOptions(e)),this._diffNumericOptions(e,[at,st,lt,ct])&&(this.bounds(new $(t.x,t.y,t.width,t.height)),n=!0),e.connectors&&(t.connectors=e.connectors,this._updateConnectors()),t=L(t,e),(e.rotation||n)&&this._rotate(),t.content&&this.content(t.content))},_updateConnectors:function(){var e,t,n,i,o=this.connections();for(this.connectors=[],this._createConnectors(),i=0;i<o.length;i++)e=o[i],t=e.source(),n=e.target(),t.shape&&t.shape===this?e.source(this.getConnector(t.options.name)||null):n.shape&&n.shape===this&&e.target(this.getConnector(n.options.name)||null),e.updateModel()},_diffNumericOptions:R.diffNumericOptions,_visualOptions:function(e){return{data:e.path,source:e.source,hover:e.hover,fill:e.fill,stroke:e.stroke}},_triggerBoundsChange:function(){this.diagram&&this.diagram.trigger(Ce,{item:this,bounds:this._bounds.clone()})},_transformPoint:function(e){var t=this.rotate(),n=this.bounds(),i=n.topLeft();return t.angle&&e.rotate(t.center().plus(i),360-t.angle),e},_transformedBounds:function(){var e=this.bounds(),t=e.topLeft(),n=e.bottomRight();return $.fromPoints(this.diagram.modelToView(t),this.diagram.modelToView(n))},_rotatedBounds:function(){var e=this.bounds().rotatedBounds(this.rotate().angle),t=e.topLeft(),n=e.bottomRight();return $.fromPoints(t,n)},_rotate:function(){var e=this.options.rotation;e&&e.angle&&this.rotate(e.angle),this._rotationOffset=new Z},_hover:function(e){var t=this.options,n=t.hover,i=t.stroke,o=t.fill;e&&ge(n.stroke)&&(i=L({},i,n.stroke)),e&&ge(n.fill)&&(o=n.fill),this.shapeVisual.redraw({stroke:i,fill:o}),t.editable&&t.editable.connect&&this.diagram._showConnectors(this,e)},_hitTest:function(e){if(this.visible()){var t,n=this.bounds(),i=this.rotate().angle;if(e.isEmpty&&!e.isEmpty())return ee.rects(e,n,i?i:0);if(t=e.clone().rotate(n.center(),i),n.contains(t))return this}},toJSON:function(){return{shapeId:this.options.id}},createShapeVisual:function(){var e,t=this.options,n=this._visualOptions(t),i=t.visual,o=(t.type+"").toLocaleLowerCase();n.width=t.width,n.height=t.height,_e(i)?e=i.call(this,t):n.data?(e=new Y(n),m(e)):e="rectangle"==o?new q(n):"circle"==o?new j(n):"text"==o?new X(n):"image"==o?new J(n):new Y(n),this.shapeVisual=e,this.visual.append(this.shapeVisual)}}),y=b.extend({init:function(e,t,n){var i=this;b.fn.init.call(i,n),this.updateOptionsFromModel(),this._initRouter(),i.path=new R.Polyline(i.options),i.path.fill(rt),i.visual.append(i.path),i._sourcePoint=i._targetPoint=new Z,i._setSource(e),i._setTarget(t),i.content(i.options.content),i.definers=[],me(n)&&n.points&&i.points(n.points)},options:{hover:{stroke:{}},startCap:qe,endCap:qe,points:[],selectable:!0,fromConnector:Re,toConnector:Re},_setOptionsFromModel:function(e){this.updateOptionsFromModel(e||this.dataItem)},updateOptionsFromModel:function(e){var t,n,i,o;this.diagram&&this.diagram._isEditable&&(t=this.diagram._dataMap,n=s(e||this.dataItem),e?(me(n.from)?(i=t[n.from],i&&me(n.fromConnector)&&(i=i.getConnector(n.fromConnector)),this.source(i)):me(n.fromX)&&me(n.fromY)&&this.source(new Z(n.fromX,n.fromY)),me(n.to)?(o=t[n.to],o&&me(n.toConnector)&&(o=o.getConnector(n.toConnector)),this.target(o)):me(n.toX)&&me(n.toY)&&this.target(new Z(n.toX,n.toY)),me(n.type)&&this.type()!==n.type&&(this.points([]), +this.type(n.type)),this.dataItem=e,this._template(),this.redraw(this.options)):this.options=L({},n,this.options))},updateModel:function(e){if(this.diagram&&this.diagram._isEditable&&this.diagram.connectionsDataSource){var t=this.diagram.connectionsDataSource.getByUid(this.dataItem.uid);t&&(this.diagram._suspendModelRefresh(),me(this.options.fromX)&&null!==this.options.fromX?(f("from",t),f("fromConnector",t),t.set("fromX",this.options.fromX),t.set("fromY",this.options.fromY)):(t.set("from",this.options.from),me(t.fromConnector)&&t.set("fromConnector",this.sourceConnector?this.sourceConnector.options.name:null),f("fromX",t),f("fromY",t)),me(this.options.toX)&&null!==this.options.toX?(f("to",t),f("toConnector",t),t.set("toX",this.options.toX),t.set("toY",this.options.toY)):(t.set("to",this.options.to),me(t.toConnector)&&t.set("toConnector",this.targetConnector?this.targetConnector.options.name:null),f("toX",t),f("toY",t)),me(this.options.type)&&me(t.type)&&t.set("type",this.options.type),this.dataItem=t,this.diagram._resumeModelRefresh(),e&&this.diagram._syncConnectionChanges())}},sourcePoint:function(){return this._resolvedSourceConnector?this._resolvedSourceConnector.position():this._sourcePoint},_setSource:function(e){var n,i=e instanceof k,o=this.options.fromConnector||Re;i&&!e.getConnector(o)||(e!==t&&(this.from=e),this._removeFromSourceConnector(),null===e?this.sourceConnector&&(this._sourcePoint=(this._resolvedSourceConnector||this.sourceConnector).position(),this._clearSourceConnector(),this._setFromOptions(null,this._sourcePoint)):e instanceof w?(n=e.shape.dataItem,n&&this._setFromOptions(n.id),this.sourceConnector=e,this.sourceConnector.connections.push(this)):e instanceof Z?(this._setFromOptions(null,e),this._sourcePoint=e,this.sourceConnector&&this._clearSourceConnector()):i&&(n=e.dataItem,n&&this._setFromOptions(n.id),this.sourceConnector=e.getConnector(o),this.sourceConnector.connections.push(this)))},source:function(e,t){return ge(e)&&(t&&this.diagram&&this.diagram.undoRedoService.addCompositeItem(new R.ConnectionEditUnit(this,e)),this._setSource(e),this.refresh()),this.sourceConnector?this.sourceConnector:this._sourcePoint},_setFromOptions:function(e,t){this.options.from=e,t?(this.options.fromX=t.x,this.options.fromY=t.y):(this.options.fromX=null,this.options.fromY=null)},sourceDefiner:function(e){if(!e)return this._sourceDefiner||(this._sourceDefiner=new R.PathDefiner(this.sourcePoint(),null,null)),this._sourceDefiner;if(!(e instanceof R.PathDefiner))throw"The sourceDefiner needs to be a PathDefiner.";e.left=null,this._sourceDefiner=e,this.source(e.point)},targetPoint:function(){return this._resolvedTargetConnector?this._resolvedTargetConnector.position():this._targetPoint},_setTarget:function(e){var n,i=e instanceof k,o=this.options.toConnector||Re;i&&!e.getConnector(o)||(e!==t&&(this.to=e),this._removeFromTargetConnector(),null===e?this.targetConnector&&(this._targetPoint=(this._resolvedTargetConnector||this.targetConnector).position(),this._clearTargetConnector(),this._setToOptions(null,this._targetPoint)):e instanceof w?(n=e.shape.dataItem,n&&this._setToOptions(n.id),this.targetConnector=e,this.targetConnector.connections.push(this)):e instanceof Z?(this._setToOptions(null,e),this._targetPoint=e,this.targetConnector&&this._clearTargetConnector()):i&&(n=e.dataItem,n&&this._setToOptions(n.id),this.targetConnector=e.getConnector(o),this.targetConnector.connections.push(this)))},target:function(e,n){return ge(e)&&(n&&this.diagram&&this.diagram.undoRedoService.addCompositeItem(new R.ConnectionEditUnit(this,t,e)),this._setTarget(e),this.refresh()),this.targetConnector?this.targetConnector:this._targetPoint},_setToOptions:function(e,t){this.options.to=e,t?(this.options.toX=t.x,this.options.toY=t.y):(this.options.toX=null,this.options.toY=null)},targetDefiner:function(e){if(!e)return this._targetDefiner||(this._targetDefiner=new R.PathDefiner(this.targetPoint(),null,null)),this._targetDefiner;if(!(e instanceof R.PathDefiner))throw"The sourceDefiner needs to be a PathDefiner.";e.right=null,this._targetDefiner=e,this.target(e.point)},_updateConnectors:function(){this._updateConnector(this.source(),"source"),this._updateConnector(this.target(),"target")},_updateConnector:function(e,t){var n,i,o,r,a=this,s=a.diagram;e instanceof w&&!s.getShapeById(e.shape.id)?(n=e.shape.dataItem,i=e.options.name,o=function(){var o=s._dataMap[n.id];e=o.getConnector(i),a[t](e,!1),a.updateModel()},s._dataMap[n.id]?o():(r=s._inactiveShapeItems.getByUid(n.uid),r&&s._deferredConnectionUpdates.push(r.onActivate(o)))):a[t](e,!1)},content:function(e){var t=this._content(e);return me(e)&&this._alignContent(),t},_createContentVisual:function(e){var t;return _e(e.visual)?t=e.visual.call(this,e):e.text&&(t=new X(e)),t&&(this._contentVisual=t,t._includeInBBox=!1,this.visual.append(t)),t},_updateContentVisual:function(e){_e(e.visual)?(this.visual.remove(this._contentVisual),this._createContentVisual(e)):this._contentVisual.redraw(e)},_alignContent:function(){var e,t,n,i,o,r,a,s,l,c,d,u,h,p,f,g;if(this._contentVisual){for(e=ft,t=this.allPoints(),n=ke.floor(t.length/2),i=n-1;i>0&&t[i].equals(t[n]);)i--,n++;o=t[n],r=t[i],a=this._contentVisual._measure(),s=a.width,l=a.height,c=t.length%2===0,d=r.distanceTo(o),c&&t.length>2&&d>0&&(r.y===o.y&&d<s||r.x===o.x&&d<l)&&(c=!1,e=0),c?(h=M.util.deg(ke.atan2(o.y-r.y,o.x-r.x)),u=new Z((o.x-r.x)/2+r.x,(o.y-r.y)/2+r.y),90===ke.abs(h)?(u.x+=e,u.y-=l/2):h%180===0?(u.x-=s/2,u.y-=l+e):h<-90||0<h&&h<90?u.y-=l:(h<0||h>90)&&(u.x-=s,u.y-=l)):(p=ke.floor(t.length/2),u=t[p].clone(),r=t[p-1],o=t[p+1],f=r.x<=u.x&&o.x<=u.x?e:-a.width-e,g=r.y<=u.y&&o.y<=u.y?e:-a.height-e,u.x+=f,u.y+=g),this._contentVisual.position(u)}},select:function(e){var n,i,o=this.diagram;if(this._canSelect()&&this.isSelected!==e)return this.isSelected=e,n=[],i=[],this.isSelected?(this.adorner=new te(this,this.options.selection),o._adorn(this.adorner,!0),o._selectedItems.push(this),n.push(this)):this.adorner&&(o._adorn(this.adorner,!1),le.remove(o._selectedItems,this),this.adorner=t,i.push(this)),this.adorner&&this.adorner.refresh(),o._internalSelection||o._selectionChanged(n,i),!0},bounds:function(e){return!e||be(e)?this._bounds:(this._bounds=e,t)},type:function(e){var n=this.options;return e?(e!==n.type&&(n.type=e,this._initRouter(),this.refresh()),t):n.type},_initRouter:function(){var e=(this.options.type||"").toLowerCase();this._router=e==xe?new pe(this):new he(this)},points:function(e){var t,n,i,o;if(!e){if(i=[],ge(this.definers))for(o=0;o<this.definers.length;o++)i.push(this.definers[o].point);return i}for(this.definers=[],t=0;t<e.length;t++)if(n=e[t],n instanceof R.Point)this.definers.push(new R.PathDefiner(n));else{if(!n.hasOwnProperty("x")||!n.hasOwnProperty("y"))throw"A Connection point needs to be a Point or an object with x and y properties.";this.definers.push(new R.PathDefiner(new Z(n.x,n.y)))}},allPoints:function(){var e,t=[this.sourcePoint()];if(this.definers)for(e=0;e<this.definers.length;e++)t.push(this.definers[e].point);return t.push(this.targetPoint()),t},refresh:function(){this._resolveConnectors(),this._refreshPath(),this._alignContent(),this.adorner&&this.adorner.refresh()},_resolveConnectors:function(){var e,t,n,r,a=this,s=a.source(),l=a.target();s instanceof Z?e=s:s instanceof w&&(n=i(s)?s.shape.connectors:[s]),l instanceof Z?t=l:l instanceof w&&(r=i(l)?l.shape.connectors:[l]),e?r&&(a._resolvedTargetConnector=o(e,r)):n&&(t?a._resolvedSourceConnector=o(t,n):r&&this._resolveAutoConnectors(n,r))},_resolveAutoConnectors:function(e,t){var n,o,r,a,s,l,c,d,u,h,p,f=He,g=He;for(u=0;u<e.length;u++)if(c=e[u],!i(c))for(r=c.position(),h=0;h<t.length;h++)d=t[h],i(d)||(a=d.position(),p=ke.round(r.distanceTo(a)),p<f&&this.diagram&&this._testRoutePoints(r,a,c,d)&&(f=p,n=c,o=d),p<g&&(s=c,l=d,g=p));n&&(s=n,l=o),this._resolvedSourceConnector=s,this._resolvedTargetConnector=l},_testRoutePoints:function(e,t,n,i){var o,r,a,s,l,c,d=this._router,u=!0;if(d instanceof pe)for(o=d.routePoints(e,t,n,i),l=this._getRouteExclude(e,t,n.shape,i.shape),o.unshift(e),o.push(t),c=1;c<o.length;c++)if(r=o[c-1],a=o[c],s=new $(ke.min(r.x,a.x),ke.min(r.y,a.y),ke.abs(r.x-a.x),ke.abs(r.y-a.y)),s.width>0&&(s.x++,s.width-=2),s.height>0&&(s.y++,s.height-=2),!s.isEmpty()&&this.diagram._shapesQuadTree.hitTestRect(s,l)){u=!1;break}return u},_getRouteExclude:function(e,t,n,i){var o=[];return this._isPointInsideShape(e,n)&&o.push(n),this._isPointInsideShape(t,i)&&o.push(i),o},_isPointInsideShape:function(e,t){var n,i,o,r=t.bounds(),a=t.rotate().angle,s=r.x,l=r.y;return n=e.clone().rotate(r.center(),a),i=n.x,o=n.y,i>s&&i<s+r.width&&o>l&&o<l+r.height},redraw:function(e){if(e){this.options=L({},this.options,e);var t=this.options.points;me(t)&&t.length>0&&(this.points(t),this._refreshPath()),(e&&e.content||e.text)&&this.content(e.content),this.path.redraw({fill:e.fill,stroke:e.stroke,startCap:e.startCap,endCap:e.endCap})}},clone:function(){var e=this.serialize();return this.diagram&&this.diagram._isEditable&&me(this.dataItem)&&(e.options.dataItem=u(this.dataItem)),new y(this.from,this.to,e.options)},serialize:function(){var e=this.from.toJSON?this.from.toJSON:""+this.from,t=this.to.toJSON?this.to.toJSON:""+this.to,n=L({},{options:this.options,from:e,to:t});return me(this.dataItem)&&(n.dataItem=""+this.dataItem),n.options.points=this.points(),n},_hitTest:function(e){if(this.visible()){var t=new Z(e.x,e.y),n=this.sourcePoint(),i=this.targetPoint();if(e.isEmpty&&!e.isEmpty()&&e.contains(n)&&e.contains(i))return this;if(this._router.hitTest(t))return this}},_hover:function(e){var t=(this.options.stroke||{}).color;e&&ge(this.options.hover.stroke.color)&&(t=this.options.hover.stroke.color),this.path.redraw({stroke:{color:t}})},_refreshPath:function(){me(this.path)&&(this._drawPath(),this.bounds(this._router.getBounds()))},_drawPath:function(){var e,t,n;this._router&&this._router.route(),e=this.sourcePoint(),t=this.targetPoint(),n=this.points(),this.path.redraw({points:[e].concat(n,[t])})},_clearSourceConnector:function(){this.sourceConnector=t,this._resolvedSourceConnector=t},_clearTargetConnector:function(){this.targetConnector=t,this._resolvedTargetConnector=t},_removeFromSourceConnector:function(){this.sourceConnector&&le.remove(this.sourceConnector.connections,this)},_removeFromTargetConnector:function(){this.targetConnector&&le.remove(this.targetConnector.connections,this)},toJSON:function(){var e,t,n,i=this;return i.from&&i.from.toJSON?e=i.from.toJSON():(n=i._sourcePoint,e={x:n.x,y:n.y}),i.to&&i.to.toJSON?t=i.to.toJSON():(n=i._targetPoint,t={x:n.x,y:n.y}),{from:e,to:t}}}),x=P.extend({init:function(e,t){var n=this;kendo.destroy(e),P.fn.init.call(n,e,t),n._initTheme(),n._initElements(),n._extendLayoutOptions(n.options),n._initDefaults(t),n._interactionDefaults(),n._initCanvas(),n.mainLayer=new U({id:"main-layer"}),n.canvas.append(n.mainLayer),n._shapesQuadTree=new E(n),n._pan=new Z,n._adorners=[],n.adornerLayer=new U({id:"adorner-layer"}),n.canvas.append(n.adornerLayer),n._createHandlers(),n._initialize(),n._resizingAdorner=new re(n,{editable:n.options.editable}),n._connectorsAdorner=new ae(n),n._adorn(n._resizingAdorner,!0),n._adorn(n._connectorsAdorner,!0),n.selector=new oe(n),n._clipboard=[],n.pauseMouseHandlers=!1,n._fetchFreshData(),n._createGlobalToolBar(),n._createOptionElements(),n.zoom(n.options.zoom),n.canvas.draw()},options:{name:"Diagram",theme:"default",layout:"",zoomRate:.1,zoom:1,zoomMin:0,zoomMax:2,dataSource:{},draggable:!0,template:"",autoBind:!0,editable:{rotate:{},resize:{},text:!0,tools:[],drag:{snap:{size:10,angle:10}},remove:!0},pannable:{},selectable:{key:"none"},tooltip:{enabled:!0,format:"{0}"},copy:{enabled:!0,offsetX:20,offsetY:20},shapeDefaults:R.shapeDefaults({undoable:!0}),connectionDefaults:{editable:{tools:[]},type:xe},shapes:[],connections:[]},events:[Ue,We,Ve,Ne,Oe,Ce,Se,Te,Ie,Me,"toolBarClick","save","cancel","edit","remove","add","dataBound",Ee,De,Ae],items:function(){return e()},_createGlobalToolBar:function(){var e,t=this.options.editable;t&&(e=t.tools,!this._isEditable||e===!1||e&&0!==e.length||(e=["createShape","undo","redo","rotateClockwise","rotateAnticlockwise"]),e&&e.length&&(this.toolBar=new C(this,{tools:e||{},click:B(this._toolBarClick,this),modal:!1}),this.toolBar.element.css({textAlign:"left"}),this.element.prepend(this.toolBar.element),this._resize()))},createShape:function(){var e,t,n,i,o,r;(this.editor&&this.editor.end()||!this.editor)&&(e=this.dataSource,t=e.view()||[],n=t.length,i=p(e,{}),o=this._createShape(i,{}),this.trigger("add",{shape:o})||(e.insert(n,i),r=this._inactiveShapeItems.getByUid(i.uid),r.element=o,this.edit(o)))},_createShape:function(e,t){t=L({},this.options.shapeDefaults,t),t.dataItem=e;var n=new k(t,this);return n},createConnection:function(){var e,t,n,i,o;(this.editor&&this.editor.end()||!this.editor)&&(e=this.connectionsDataSource,t=e.view()||[],n=t.length,i=p(e,{}),o=this._createConnection(i),this.trigger("add",{connection:o})||(this._connectionsDataMap[i.uid]=o,e.insert(n,i),this.addConnection(o,!1),this.edit(o)))},_createConnection:function(e,t,n){var i,o=L({},this.options.connectionDefaults);return o.dataItem=e,i=new y(t||new Z,n||new Z,o)},editModel:function(e,t){var n,i,o,r;if(this.cancelEdit(),o=this.options.editable,"shape"==t)n=o.shapeEditors,i=o.shapeTemplate;else{if("connection"!=t)return;r=B(l,this),n=L({},{from:r,to:r},o.connectionEditors),i=o.connectionTemplate}this.editor=new T(this.element,{update:B(this._update,this),cancel:B(this._cancel,this),model:e,type:t,target:this,editors:n,template:i}),this.trigger("edit",this._editArgs())},edit:function(e){if(e.dataItem){var t=e instanceof k?"shape":"connection";this.editModel(e.dataItem,t)}},cancelEdit:function(){this.editor&&(this._getEditDataSource().cancelChanges(this.editor.model),this._destroyEditor())},saveEdit:function(){this.editor&&this.editor.end()&&!this.trigger("save",this._editArgs())&&this._getEditDataSource().sync()},_update:function(){this.editor&&this.editor.end()&&!this.trigger("save",this._editArgs())&&(this._getEditDataSource().sync(),this._destroyEditor())},_cancel:function(){var e,t;this.editor&&!this.trigger("cancel",this._editArgs())&&(e=this.editor.model,this._getEditDataSource().cancelChanges(e),t=this._connectionsDataMap[e.uid]||this._dataMap[e.id],t&&t._setOptionsFromModel(e),this._destroyEditor())},_getEditDataSource:function(){return"shape"===this.editor.options.type?this.dataSource:this.connectionsDataSource},_editArgs:function(){var e={container:this.editor.wrapper};return e[this.editor.options.type]=this.editor.model,e},_destroyEditor:function(){this.editor&&(this.editor.close(),this.editor=null)},_initElements:function(){this.wrapper=this.element.empty().css("position","relative").attr("tabindex",0).addClass("k-widget k-diagram"),this.scrollable=e("<div />").appendTo(this.element)},_initDefaults:function(e){var t=this.options,n=t.editable,i=t.shapeDefaults,o=t.connectionDefaults,r=(e||{}).shapeDefaults;n===!1?(i.editable=!1,o.editable=!1):(g(n,i.editable,["drag","remove","connect"]),g(n,o.editable,["drag","remove"])),r&&r.connectors&&(t.shapeDefaults.connectors=r.connectors)},_interactionDefaults:function(){var e=this.options,t=e.selectable,n=e.pannable,i=kendo.support.mobileOS;t&&!me(t.multiple)&&(e.selectable=L({multiple:!i},e.selectable)),n&&!me(n.key)&&(e.pannable=L({key:i?"none":"ctrl"},e.pannable))},_initCanvas:function(){var t=e("<div class='k-layer'></div>").appendTo(this.scrollable)[0],n=this.viewport();this.canvas=new W(t,{width:n.width||je,height:n.height||Ge})},_createHandlers:function(){var e=this,t=e.element;t.on(dt,B(e._wheel,e)).on("keydown"+ye,B(e._keydown,e)),e._userEvents=new kendo.UserEvents(this.scrollable,{multiTouch:!0,fastTap:!0,tap:B(e._tap,e),start:B(e._dragStart,e),move:B(e._drag,e),end:B(e._dragEnd,e),gesturestart:B(e._gestureStart,e),gesturechange:B(e._gestureChange,e),gestureend:B(e._gestureEnd,e),doubleTap:B(e._doubleTap,e),supportDoubleTap:!0}),e.toolService=new ie(e),this.scrollable.on("mouseover"+ye,B(e._mouseover,e)).on("mouseout"+ye,B(e._mouseout,e)).on("mousemove"+ye,B(e._mouseMove,e)).on("mousedown"+ye,B(e._mouseDown,e)).on("mouseup"+ye,B(e._mouseUp,e)),this._syncHandler=B(e._syncChanges,e),e._resizeHandler=B(e.resize,e,!1),kendo.onResize(e._resizeHandler),this.bind(We,B(e._destroyToolBar,e)),this.bind(Ve,B(e._destroyToolBar,e))},_dragStart:function(e){var t,n;this._pauseMouseHandlers=!0,t=this._eventPositions(e,!0),n=e.event,this.toolService.start(t,this._meta(n))&&(this._destroyToolBar(),n.preventDefault())},_drag:function(e){var t=this._eventPositions(e),n=e.event;this.toolService.move(t,this._meta(n))&&n.preventDefault()},_dragEnd:function(e){var t,n;this._pauseMouseHandlers=!1,t=this._eventPositions(e),n=e.event,this.toolService.end(t,this._meta(n))&&(this._createToolBar(),n.preventDefault())},_mouseMove:function(e){if(!this._pauseMouseHandlers){var t=this._eventPositions(e);this.toolService._updateHoveredItem(t),this.toolService._updateCursor(t)}},_mouseDown:function(){this._pauseMouseHandlers=!0},_mouseUp:function(){this._pauseMouseHandlers=!1},_tap:function(e){var t,n,i,o=this.toolService,r=this.options.selectable,a=this._eventPositions(e),s=this.focus();o._updateHoveredItem(a),o.hoveredItem?(t=o.hoveredItem,this.trigger("click",{item:t,point:a}),r&&t.options.selectable!==!1&&(n=r.multiple!==!1,i=kendo.support.mobileOS||this._meta(e.event).ctrlKey,t.isSelected?i?(this._destroyToolBar(),t.select(!1)):this._createToolBar(s):(this._destroyToolBar(),this.select(t,{addToSelection:n&&i}),this._createToolBar(s)))):r&&(this._destroyToolBar(),this.deselect())},_keydown:function(e){this.toolService.keyDown(e.keyCode,this._meta(e))&&e.preventDefault()},_wheel:function(e){var t=n(e),i=this._eventPositions(e),o=L(this._meta(e),{delta:t});this.toolService.wheel(i,o)&&e.preventDefault()},_meta:function(e){return{ctrlKey:e.ctrlKey,metaKey:e.metaKey,altKey:e.altKey,shiftKey:e.shiftKey,type:e.type}},_eventPositions:function(e,t){var n,i,o;return e.touch?(i=t?"startLocation":"location",n=new Z(e.x[i],e.y[i])):(o=e.originalEvent,n=new Z(o.pageX,o.pageY)),this.documentToModel(n)},_gestureStart:function(e){var t,n;this._destroyToolBar(),this.scroller.disable(),t=this.documentToModel(new Z(e.center.x,e.center.y)),n={point:t,zoom:this.zoom()},this.trigger(We,n)||(this._gesture=e,this._initialCenter=t)},_gestureChange:function(e){var t,n,i=this._gesture,o=this._initialCenter,r=this.documentToView(new Z(e.center.x,e.center.y)),a=e.distance/i.distance,s=this._zoom,l=!1;ke.abs(a-1)>=ut&&(this._zoom=s=this._getValidZoom(s*a),this.options.zoom=s,this._gesture=e,l=!0),t=o.times(s),n=r.minus(t),(l||this._pan.distanceTo(n)>=ht)&&(this._panTransform(n),this._updateAdorners()),e.preventDefault()},_doubleTap:function(e){var t=this,n=this._eventPositions(e),i=t.options,o=i.zoomRate,r=t.zoom()+o,a=this._meta(e),s={point:n,meta:a,zoom:r};t.trigger(We,s)||(r=kendo.dataviz.round(Math.max(i.zoomMin,Math.min(i.zoomMax,r)),2),s.zoom=r,t.zoom(r,s),t.trigger(Ue,s))},_gestureEnd:function(){this.options.pannable!==!1&&this.scroller.enable(),this.trigger(Ue,{point:this._initialCenter,zoom:this.zoom()})},_resize:function(){var e=this.viewport();this.canvas&&this.canvas.size(e),this.scrollable&&this.toolBar&&this.scrollable.height(e.height)},_mouseover:function(e){var t=e.target._kendoNode;t&&t.srcElement._hover&&t.srcElement._hover(!0,t.srcElement)},_mouseout:function(e){var t=e.target._kendoNode;t&&t.srcElement._hover&&t.srcElement._hover(!1,t.srcElement)},_initTheme:function(){var e,t=this,n=((t.options||{}).theme||"").toLowerCase(),i=I.ui.themes||{};e=I.SASS_THEMES.indexOf(n)!=-1?I.autoTheme().diagram:(i[n]||{}).diagram,t.options=L({},e,t.options),t.options.editable===!0&&L(t.options,{editable:(e||{}).editable})},_createOptionElements:function(){var e=this.options,t=e.shapes.length;t&&this._createShapes(),e.connections.length&&this._createConnections(),t&&e.layout&&this.layout(e.layout)},_createShapes:function(){var e,t,n=this,i=n.options,o=i.shapes;for(t=0;t<o.length;t++)e=o[t],n.addShape(e)},_createConnections:function(){var e,t,n,i,o=this,r=o.options,a=r.connectionDefaults,s=r.connections;for(i=0;i<s.length;i++)e=s[i],t=o._findConnectionTarget(e.from),n=o._findConnectionTarget(e.to),o.connect(t,n,L({},a,e))},_findConnectionTarget:function(e){var t,n,i;return e=e||{},t=this,n=be(e)?e:e.shapeId||e.id,n?(i=t.getShapeById(n),e.connector&&(i=i.getConnector(e.connector))):i=new Z(e.x||0,e.y||0),i},destroy:function(){var e=this;P.fn.destroy.call(e),this._userEvents&&this._userEvents.destroy(),kendo.unbindResize(e._resizeHandler),e.clear(),e.element.off(ye),e.scroller.wrapper.off(ye),e.canvas.destroy(!0),e.canvas=t,e._destroyEditor(),e.destroyScroller(),e._destroyGlobalToolBar(),e._destroyToolBar()},destroyScroller:function(){var e=this.scroller;e&&(e.destroy(),e.element.remove(),this.scroller=null)},save:function(){var e,t,n,i={shapes:[],connections:[]};for(e=0;e<this.shapes.length;e++)n=this.shapes[e],n.options.serializable&&i.shapes.push(n.options);for(e=0;e<this.connections.length;e++)t=this.connections[e],i.connections.push(L({},t.options,t.toJSON()));return i},focus:function(){if(!this.element.is(kendo._activeElement())){var e,t=this.element,n=t[0],i=[],o=[],r=document.documentElement;do n=n.parentNode,n.scrollHeight>n.clientHeight&&(i.push(n),o.push(n.scrollTop));while(n!=r);for(t.focus(),e=0;e<i.length;e++)i[e].scrollTop=o[e];return!0}},load:function(e){this.clear(),this.setOptions(e),this._createShapes(),this._createConnections()},setOptions:function(e){L(this.options,e)},clear:function(){var e=this;e.select(!1),e.mainLayer.clear(),e._shapesQuadTree.clear(),e._initialize()},connect:function(e,t,n){var i,o;return this.connectionsDataSource&&this._isEditable?(o=this.connectionsDataSource.add({}),i=this._connectionsDataMap[o.uid],i.source(e),i.target(t),i.redraw(n),i.updateModel()):(i=new y(e,t,L({},this.options.connectionDefaults,n)),this.addConnection(i)),i},connected:function(e,t){var n,i;for(n=0;n<this.connections.length;n++)if(i=this.connections[n],i.from==e&&i.to==t)return!0;return!1},addConnection:function(e,t){return t!==!1&&this.undoRedoService.add(new R.AddConnectionUnit(e,this),!1),e.diagram=this,e._setOptionsFromModel(),e.refresh(),this.mainLayer.append(e.visual),this.connections.push(e),this.trigger(Se,{added:[e],removed:[]}),e},_addConnection:function(e,t){var n,i=this.connectionsDataSource;if(i&&this._isEditable){if(n=p(i,u(e.dataItem)),e.dataItem=n,e.updateModel(),!this.trigger("add",{connection:e}))return this._connectionsDataMap[n.uid]=e,i.add(n),this.addConnection(e,t),e._updateConnectors(),e}else if(!this.trigger("add",{connection:e}))return this.addConnection(e,t),e._updateConnectors(),e},addShape:function(e,t){var n,i=this.options.shapeDefaults;if(e instanceof k)n=e;else{if(e instanceof kendo.Class)return;i=L({},i,e||{}),n=new k(i,this)}return t!==!1&&this.undoRedoService.add(new R.AddShapeUnit(n,this),!1),this.shapes.push(n),n.diagram!==this&&(this._shapesQuadTree.insert(n),n.diagram=this),this.mainLayer.append(n.visual),this.trigger(Se,{added:[n],removed:[]}),n},_addShape:function(e,t){var n,i,o=this,r=o.dataSource;if(r&&this._isEditable){if(n=p(r,u(e.dataItem)),e.dataItem=n,e.updateModel(),!this.trigger("add",{shape:e}))return this.dataSource.add(n),i=this._inactiveShapeItems.getByUid(n.uid),i.element=e,i.undoable=t,e}else if(!this.trigger("add",{shape:e}))return this.addShape(e,t)},remove:function(e,t){var n,i,o,r;for(e=ve(e)?e.slice(0):[e],n=h(e),i=n.shapes,o=n.connections,me(t)||(t=!0),t&&this.undoRedoService.begin(),this._suspendModelRefresh(),r=i.length-1;r>=0;r--)this._removeItem(i[r],t,o);for(r=o.length-1;r>=0;r--)this._removeItem(o[r],t);this._resumeModelRefresh(),t&&this.undoRedoService.commit(!1),this.trigger(Se,{added:[],removed:e})},_removeShapeDataItem:function(e){this._isEditable&&(this.dataSource.remove(e.dataItem),delete this._dataMap[e.dataItem.id])},_removeConnectionDataItem:function(e){this._isEditable&&(this.connectionsDataSource.remove(e.dataItem),delete this._connectionsDataMap[e.dataItem.uid])},_triggerRemove:function(e){var t,n,i,o,r=[];for(o=0;o<e.length;o++)t=e[o],i=t.options.editable,n=t instanceof k?{shape:t}:{connection:t},i&&i.remove!==!1&&!this.trigger("remove",n)&&r.push(t);return r},undo:function(){this.undoRedoService.undo()},redo:function(){this.undoRedoService.redo()},select:function(e,t){if(!ge(e))return this._selectedItems;t=L({addToSelection:!1},t);var n,i,o=t.addToSelection,r=[],a=[];for(o||this.deselect(),this._internalSelection=!0,e instanceof Array?r=e:e instanceof b&&(r=[e]),n=0;n<r.length;n++)i=r[n],i.select(!0)&&a.push(i);this._selectionChanged(a,[]),this._internalSelection=!1},selectAll:function(){this.select(this.shapes.concat(this.connections))},selectArea:function(e){var t,n,i,o;if(this._internalSelection=!0,o=[],e instanceof $)for(n=this.shapes.concat(this.connections),t=0;t<n.length;t++)i=n[t],e&&!i._hitTest(e)||!i.options.enable||i.select(!0)&&o.push(i);this._selectionChanged(o,[]),this._internalSelection=!1},deselect:function(e){this._internalSelection=!0;var t,n,i=[],o=[];for(e instanceof Array?o=e:e instanceof b?o.push(e):ge(e)||(o=this._selectedItems.slice(0)),n=0;n<o.length;n++)t=o[n],t.select(!1)&&i.push(t);this._selectionChanged([],i),this._internalSelection=!1},toFront:function(e,t){var n,i,o;e||(e=this._selectedItems.slice()),n=this._getDiagramItems(e),!me(t)||t?(i=r(this.mainLayer,n.visuals),o=new ue(this,e,i),this.undoRedoService.add(o)):(this.mainLayer.toFront(n.visuals),this._fixOrdering(n,!0))},toBack:function(e,t){var n,i,o;e||(e=this._selectedItems.slice()),n=this._getDiagramItems(e),!me(t)||t?(i=r(this.mainLayer,n.visuals),o=new de(this,e,i),this.undoRedoService.add(o)):(this.mainLayer.toBack(n.visuals),this._fixOrdering(n,!1))},bringIntoView:function(e,t){var n,i,o,r,a=this.viewport(),s=new R.RectAlign(a);0!==a.width&&0!==a.height&&(t=L({animate:!1,align:"center middle"},t),"none"==t.align&&(t.align="center middle"),e instanceof b?i=e.bounds(it):ve(e)?i=this.boundingBox(e):e instanceof $&&(i=e.clone()),o=i.clone(),i.zoom(this._zoom),(i.width>a.width||i.height>a.height)&&(this._zoom=this._getValidZoom(ke.min(a.width/o.width,a.height/o.height)),i=o.clone().zoom(this._zoom)),this._zoomMainLayer(),n=i.clone(),s.align(i,t.align),r=i.topLeft().minus(n.topLeft()),this.pan(r.times(-1),t.animate))},alignShapes:function(e){var t,n,i,o,r,a,s;if(fe(e)&&(e="Left"),t=this.select(),0!==t.length){switch(e.toLowerCase()){case"left":case"top":n=et;break;case"right":case"bottom":n=tt}for(o=0;o<t.length;o++)if(i=t[o],i instanceof k)switch(e.toLowerCase()){case"left":n=ke.min(n,i.options.x);break;case"top":n=ke.min(n,i.options.y);break;case"right":n=ke.max(n,i.options.x);break;case"bottom":n=ke.max(n,i.options.y)}for(r=[],a=[],o=0;o<t.length;o++)if(i=t[o],i instanceof k)switch(a.push(i),r.push(i.bounds()),e.toLowerCase()){case"left":case"right":i.position(new Z(n,i.options.y));break;case"top":case"bottom":i.position(new Z(i.options.x,n))}s=new R.TransformUnit(a,r),this.undoRedoService.add(s,!1)}},zoom:function(e,t){var n,i,o,r;return e&&(n=t?t.point:new R.Point(0,0),e=this._zoom=this._getValidZoom(e),fe(n)||(n=new R.Point(ke.round(n.x),ke.round(n.y)),i=n.times(e),o=this.modelToView(n),r=o.minus(i),this._storePan(new R.Point(ke.round(r.x),ke.round(r.y)))),t&&(t.zoom=e),this._panTransform(),this.canvas.surface.hideTooltip(),this._updateAdorners()),this._zoom},_getPan:function(e){var t=this.canvas;return t.translate||(e=e.plus(this._pan)),e},pan:function(e,n){var i,o;return e instanceof Z?(i=this,o=i.scroller,e=i._getPan(e),e=e.times(-1),n?o.animatedScrollTo(e.x,e.y,function(){i._updateAdorners()}):(o.scrollTo(e.x,e.y),i._updateAdorners()),t):this._pan.times(-1)},viewport:function(){var e=this.element,t=e.width(),n=e.height();return this.toolBar&&(n-=N(this.toolBar.element)),new $(0,0,t,n)},copy:function(){var e,t;if(this.options.copy.enabled)for(this._clipboard=[],this._copyOffset=1,e=0;e<this._selectedItems.length;e++)t=this._selectedItems[e],this._clipboard.push(t)},cut:function(){var e,t;if(this.options.copy.enabled){for(this._clipboard=[],this._copyOffset=0,e=0;e<this._selectedItems.length;e++)t=this._selectedItems[e],this._clipboard.push(t);this.remove(this._clipboard,!0)}},paste:function(){var e,t,n,i,o,r,a,s;if(this._clipboard.length>0){for(i={},o=h(this._clipboard),r=o.connections,a=o.shapes,s={x:this._copyOffset*this.options.copy.offsetX,y:this._copyOffset*this.options.copy.offsetY},this.deselect(),n=0;n<a.length;n++)e=a[n],t=e.clone(),i[e.id]=t,t.position(new Z(e.options.x+s.x,e.options.y+s.y)),t.diagram=this,t=this._addShape(t),t&&t.select();for(n=0;n<r.length;n++)e=r[n],t=this._addConnection(e.clone()),t&&(this._updateCopiedConnection(t,e,"source",i,s),this._updateCopiedConnection(t,e,"target",i,s),t.select(!0),t.updateModel());this._syncChanges(),this._copyOffset+=1}},_updateCopiedConnection:function(e,t,n,i,o){var r,a,s,l=t[n](),c=this;l instanceof w&&i[l.shape.id]?(s=i[l.shape.id],c.getShapeById(s.id)?e[n](s.getConnector(l.options.name)):(a=c._inactiveShapeItems.getByUid(s.dataItem.uid),a&&(r=function(t){s=c._dataMap[t.id],e[n](s.getConnector(l.options.name)),e.updateModel()},c._deferredConnectionUpdates.push(a.onActivate(r))))):e[n](new Z(t[n+"Point"]().x+o.x,t[n+"Point"]().y+o.y))},boundingBox:function(e,t){var n,i,o,r=$.empty(),a=ge(e)?this._getDiagramItems(e):{shapes:this.shapes};if(a.shapes.length>0)for(i=a.shapes[0],r=i.bounds(ot),o=1;o<a.shapes.length;o++)i=a.shapes[o],n=i.bounds(ot),t===!0&&(n.x-=i._rotationOffset.x,n.y-=i._rotationOffset.y),r=r.union(n);return r},_containerOffset:function(){var e=this.element.offset();return this.toolBar&&(e.top+=N(this.toolBar.element)),e},documentToView:function(e){var t=this._containerOffset();return new Z(e.x-t.left,e.y-t.top)},viewToDocument:function(e){var t=this._containerOffset();return new Z(e.x+t.left,e.y+t.top)},viewToModel:function(e){return this._transformWithMatrix(e,this._matrixInvert)},modelToView:function(e){return this._transformWithMatrix(e,this._matrix)},modelToLayer:function(e){return this._transformWithMatrix(e,this._layerMatrix)},layerToModel:function(e){return this._transformWithMatrix(e,this._layerMatrixInvert)},documentToModel:function(e){var t=this.documentToView(e);return this.canvas.translate||(t.x=t.x+this.scroller.scrollLeft,t.y=t.y+this.scroller.scrollTop),this.viewToModel(t)},modelToDocument:function(e){return this.viewToDocument(this.modelToView(e))},_transformWithMatrix:function(e,t){var n,i,o=e;return e instanceof Z?t&&(o=t.apply(e)):(n=this._transformWithMatrix(e.topLeft(),t),i=this._transformWithMatrix(e.bottomRight(),t),o=$.fromPoints(n,i)),o},setDataSource:function(e){this.options.dataSource=e,this._dataSource(),this.options.autoBind&&this.dataSource.fetch()},setConnectionsDataSource:function(e){this.options.connectionsDataSource=e,this._connectionDataSource(),this.options.autoBind&&this.connectionsDataSource.fetch()},layout:function(e){var t,n,i,o,r;switch(this._layouting=!0,fe(e)&&(e=this.options.layout),t=fe(e)||fe(e.type)?"Tree":e.type,t.toLowerCase()){case"tree":n=new R.TreeLayout(this);break;case"layered":n=new R.LayeredLayout(this);break;case"forcedirected":case"force":case"spring":case"springembedder":n=new R.SpringLayout(this);break;default:throw"Layout algorithm '"+t+"' is not supported."}i=new R.LayoutState(this),o=n.layout(e),o&&(r=new R.LayoutUndoUnit(i,o,e?e.animate:null),this.undoRedoService.add(r)),this._layouting=!1,this._redrawConnections()},getShapeById:function(e){var t;return(t=le.first(this.shapes,function(t){return t.visual.id===e}))?t:t=le.first(this.connections,function(t){return t.visual.id===e})},getShapeByModelId:function(e){var t;return t=this._isEditable?this._dataMap[e]:le.first(this.shapes,function(t){return(t.dataItem||{}).id===e})},getShapeByModelUid:function(e){var t;return t=this._isEditable?le.first(this.shapes,function(t){return(t.dataItem||{}).uid===e}):this._dataMap[e]},getConnectionByModelId:function(e){ +var t;return this.connectionsDataSource&&(t=le.first(this.connections,function(t){return(t.dataItem||{}).id===e})),t},getConnectionByModelUid:function(e){var t;return this.connectionsDataSource&&(t=this._connectionsDataMap[e]),t},_extendLayoutOptions:function(e){e.layout&&(e.layout=L({},R.LayoutBase.fn.defaultOptions||{},e.layout))},_selectionChanged:function(e,t){(e.length||t.length)&&this.trigger(Ne,{selected:e,deselected:t})},_getValidZoom:function(e){return ke.min(ke.max(e,this.options.zoomMin),this.options.zoomMax)},_panTransform:function(e){var t=this,n=e||t._pan;t.canvas.translate?(t.scroller.scrollTo(n.x,n.y),t._zoomMainLayer()):(t._storePan(n),t._transformMainLayer())},_finishPan:function(){this.trigger(Ve,{total:this._pan,delta:Number.NaN})},_storePan:function(e){this._pan=e,this._storeViewMatrix()},_zoomMainLayer:function(){var e=this._zoom,t=new G(0,0,e,e);t.render(this.mainLayer),this._storeLayerMatrix(t),this._storeViewMatrix()},_transformMainLayer:function(){var e=this._pan,t=this._zoom,n=new G(e.x,e.y,t,t);n.render(this.mainLayer),this._storeLayerMatrix(n),this._storeViewMatrix()},_storeLayerMatrix:function(e){this._layerMatrix=e.toMatrix(),this._layerMatrixInvert=e.invert().toMatrix()},_storeViewMatrix:function(){var e=this._pan,t=this._zoom,n=new G(e.x,e.y,t,t);this._matrix=n.toMatrix(),this._matrixInvert=n.invert().toMatrix()},_toIndex:function(e,t){var n=this._getDiagramItems(e);this.mainLayer.toIndex(n.visuals,t),this._fixOrdering(n,!1)},_fixOrdering:function(e,t){var n,i,o=t?this.shapes.length-1:0,r=t?this.connections.length-1:0;for(n=0;n<e.shapes.length;n++)i=e.shapes[n],le.remove(this.shapes,i),le.insert(this.shapes,i,o);for(n=0;n<e.cons.length;n++)i=e.cons[n],le.remove(this.connections,i),le.insert(this.connections,i,r)},_getDiagramItems:function(e){var t,n,i={},o=e;for(i.visuals=[],i.shapes=[],i.cons=[],e?ve(e)||(o=[e]):o=this._selectedItems.slice(),t=0;t<o.length;t++)n=o[t],n instanceof k?(i.shapes.push(n),i.visuals.push(n.visual)):n instanceof y&&(i.cons.push(n),i.visuals.push(n.visual));return i},_removeItem:function(e,t,n){e.select(!1),e instanceof k?(this._removeShapeDataItem(e),this._removeShape(e,t,n)):e instanceof y&&(this._removeConnectionDataItem(e),this._removeConnection(e,t)),this.mainLayer.remove(e.visual)},_removeShape:function(e,t,n){var i,o,r,a,s=[],l=[];for(this.toolService._removeHover(),t&&this.undoRedoService.addCompositeItem(new K(e)),le.remove(this.shapes,e),this._shapesQuadTree.remove(e),i=0;i<e.connectors.length;i++)for(r=e.connectors[i],a=0;a<r.connections.length;a++)o=r.connections[a],n&&I.inArray(o,n)||(o.sourceConnector==r?s.push(o):o.targetConnector==r&&l.push(o));for(i=0;i<s.length;i++)s[i].source(null,t),s[i].updateModel();for(i=0;i<l.length;i++)l[i].target(null,t),l[i].updateModel()},_removeConnection:function(e,t){e.sourceConnector&&le.remove(e.sourceConnector.connections,e),e.targetConnector&&le.remove(e.targetConnector.connections,e),t&&this.undoRedoService.addCompositeItem(new Q(e)),le.remove(this.connections,e)},_removeDataItems:function(e,t){var n,i,o,r;for(e=ve(e)?e:[e];e.length;)if(n=e.shift(),o=this._dataMap[n.uid],o&&(this._removeShapeConnections(o),this._removeItem(o,!1),delete this._dataMap[n.uid],t&&n.hasChildren&&n.loaded()))for(i=n.children.data(),r=0;r<i.length;r++)e.push(i[r])},_removeShapeConnections:function(e){var t,n=e.connections();if(n)for(t=0;t<n.length;t++)this._removeItem(n[t],!1)},_addDataItem:function(e,t){var n,i;if(me(e))return(n=this._dataMap[e.id])?n:(i=L({},this.options.shapeDefaults),i.dataItem=e,n=new k(i,this),this.addShape(n,t!==!1),this._dataMap[e.id]=n,n)},_addDataItemByUid:function(e){var t,n;if(me(e))return(t=this._dataMap[e.uid])?t:(n=L({},this.options.shapeDefaults),n.dataItem=e,t=new k(n,this),this.addShape(t),this._dataMap[e.uid]=t,t)},_addDataItems:function(e,t){var n,i,o,r,a;for(i=0;i<e.length;i++)n=e[i],o=this._addDataItemByUid(n),r=this._addDataItemByUid(t),r&&!this.connected(r,o)&&(a=this.connect(r,o))},_refreshSource:function(e){var t,n,i=this,o=e.node,r=e.action,a=e.items,s=i.options;if(e.field)for(t=0;t<a.length;t++)this._dataMap[a[t].uid]&&this._dataMap[a[t].uid].redrawVisual();else{if("remove"==r)this._removeDataItems(e.items,!0);else for(r&&"itemloaded"!==r||this._bindingRoots||(this._bindingRoots=!0,n=!0),r||o||i.clear(),this._addDataItems(a,o),t=0;t<a.length;t++)a[t].load();s.layout&&(n||"remove"==r||"add"==r)&&i.layout(s.layout),n&&(this.trigger("dataBound"),this._bindingRoots=!1)}},_addItem:function(e){e instanceof k?this.addShape(e):e instanceof y&&this.addConnection(e)},_createToolBar:function(e){var t,n,i,o,r,a,s,l,c,d=this.toolService.diagram;this.singleToolBar||1!==d.select().length||(t=d.select()[0],t&&t.options.editable!==!1&&(n=t.options.editable,i=n.tools,this._isEditable&&0===i.length&&(t instanceof k?i=["edit","rotateClockwise","rotateAnticlockwise"]:t instanceof y&&(i=["edit"]),n&&n.remove!==!1&&i.push("delete")),i&&i.length&&(o=20,this.singleToolBar=new C(d,{tools:i,click:B(this._toolBarClick,this),modal:!0,popupZIndex:parseInt(d.element.closest(".k-window").css("zIndex"),10)+10}),a=H(this.singleToolBar._popup.element),s=N(this.singleToolBar._popup.element),t instanceof k?(l=this.modelToView(t.bounds(ot)),r=new Z(l.x,l.y).minus(new Z((a-l.width)/2,s+o))):t instanceof y&&(c=this.modelToView(t.bounds()),r=new Z(c.x,c.y).minus(new Z((a-c.width-20)/2,s+o))),r?(this.canvas.translate||(r=r.minus(new Z(this.scroller.scrollLeft,this.scroller.scrollTop))),r=this.viewToDocument(r),r=new Z(ke.max(r.x,0),ke.max(r.y,0)),this.singleToolBar.showAt(r),e&&this.singleToolBar._popup.one("close",v)):this._destroyToolBar())))},_toolBarClick:function(e){this.trigger("toolBarClick",e),this._destroyToolBar()},_normalizePointZoom:function(e){return e.times(1/this.zoom())},_initialize:function(){this.shapes=[],this._selectedItems=[],this.connections=[],this._dataMap={},this._connectionsDataMap={},this._inactiveShapeItems=new d,this._deferredConnectionUpdates=[],this.undoRedoService=new ne({undone:this._syncHandler,redone:this._syncHandler}),this.id=R.randomId()},_fetchFreshData:function(){var e=this;e._dataSource(),e._isEditable&&e._connectionDataSource(),e.options.autoBind&&(e._isEditable?(this._loadingShapes=!0,this._loadingConnections=!0,e.dataSource.fetch(),e.connectionsDataSource.fetch()):e.dataSource.fetch())},_dataSource:function(){var e,t;me(this.options.connectionsDataSource)?(this._isEditable=!0,e=this.options.dataSource||{},t=ve(e)?{data:e}:e,this.dataSource&&this._shapesRefreshHandler?this.dataSource.unbind("change",this._shapesRefreshHandler).unbind("requestStart",this._shapesRequestStartHandler).unbind("error",this._shapesErrorHandler):(this._shapesRefreshHandler=B(this._refreshShapes,this),this._shapesRequestStartHandler=B(this._shapesRequestStart,this),this._shapesErrorHandler=B(this._error,this)),this.dataSource=kendo.data.DataSource.create(t).bind("change",this._shapesRefreshHandler).bind("requestStart",this._shapesRequestStartHandler).bind("error",this._shapesErrorHandler)):(this._treeDataSource(),this._isEditable=!1)},_connectionDataSource:function(){var e,t=this.options.connectionsDataSource;t&&(e=ve(t)?{data:t}:t,this.connectionsDataSource&&this._connectionsRefreshHandler?this.connectionsDataSource.unbind("change",this._connectionsRefreshHandler).unbind("requestStart",this._connectionsRequestStartHandler).unbind("error",this._connectionsErrorHandler):(this._connectionsRefreshHandler=B(this._refreshConnections,this),this._connectionsRequestStartHandler=B(this._connectionsRequestStart,this),this._connectionsErrorHandler=B(this._connectionsError,this)),this.connectionsDataSource=kendo.data.DataSource.create(e).bind("change",this._connectionsRefreshHandler).bind("requestStart",this._connectionsRequestStartHandler).bind("error",this._connectionsErrorHandler))},_shapesRequestStart:function(e){"read"==e.type&&(this._loadingShapes=!0)},_connectionsRequestStart:function(e){"read"==e.type&&(this._loadingConnections=!0)},_error:function(){this._loadingShapes=!1},_connectionsError:function(){this._loadingConnections=!1},_refreshShapes:function(e){"remove"===e.action?this._shouldRefresh()&&this._removeShapes(e.items):"itemchange"===e.action?this._shouldRefresh()&&this._updateShapes(e.items,e.field):"add"===e.action?this._inactiveShapeItems.add(e.items):"sync"===e.action?this._syncShapes(e.items):this.refresh()},_shouldRefresh:function(){return!this._suspended},_suspendModelRefresh:function(){this._suspended=(this._suspended||0)+1},_resumeModelRefresh:function(){this._suspended=ke.max((this._suspended||0)-1,0)},refresh:function(){this._loadingShapes=!1,this._loadingConnections||this._rebindShapesAndConnections()},_rebindShapesAndConnections:function(){this.clear(),this._addShapes(this.dataSource.view()),this.connectionsDataSource&&this._addConnections(this.connectionsDataSource.view(),!1),this.options.layout?this.layout(this.options.layout):this._redrawConnections(),this.trigger("dataBound")},refreshConnections:function(){this._loadingConnections=!1,this._loadingShapes||this._rebindShapesAndConnections()},_redrawConnections:function(){var e,t=this.connections;for(e=0;e<t.length;e++)t[e].refresh()},_removeShapes:function(e){var t,n,i=this._dataMap;for(n=0;n<e.length;n++)t=e[n],i[t.id]&&(this.remove(i[t.id],!1),i[t.id]=null)},_syncShapes:function(){var e=this,t=e._inactiveShapeItems;t.forEach(function(n){var i=n.dataItem,o=n.element;i.isNew()||(o?(o._setOptionsFromModel(),e.addShape(o,n.undoable),e._dataMap[i.id]=o):e._addDataItem(i),n.activate(),t.remove(i))})},_updateShapes:function(e,t){var n,i,o;for(n=0;n<e.length;n++)i=e[n],o=this._dataMap[i.id],o&&o.updateOptionsFromModel(i,t)},_addShapes:function(e){for(var t=0;t<e.length;t++)this._addDataItem(e[t],!1)},_refreshConnections:function(e){"remove"===e.action?this._shouldRefresh()&&this._removeConnections(e.items):"add"===e.action?this._addConnections(e.items):"sync"===e.action||("itemchange"===e.action?this._shouldRefresh()&&this._updateConnections(e.items):this.refreshConnections())},_removeConnections:function(e){for(var t=0;t<e.length;t++)this.remove(this._connectionsDataMap[e[t].uid],!1),this._connectionsDataMap[e[t].uid]=null},_updateConnections:function(e){var t,n,i;for(t=0;t<e.length;t++)n=e[t],i=this._connectionsDataMap[n.uid],i.updateOptionsFromModel(n)},_addConnections:function(e,t){var n,i,o=e.length;for(n=0;n<o;n++)i=e[n],this._addConnectionDataItem(i,t)},_addConnectionDataItem:function(e,t){var n,i,o,r;this._connectionsDataMap[e.uid]||(n=this._validateConnector(e.from),me(n)&&null!==n||(n=new Z(e.fromX,e.fromY)),i=this._validateConnector(e.to),me(i)&&null!==i||(i=new Z(e.toX,e.toY)),me(n)&&me(i)&&(o=L({},this.options.connectionDefaults),o.dataItem=e,r=new y(n,i,o),this._connectionsDataMap[e.uid]=r,this.addConnection(r,t)))},_validateConnector:function(e){var t;return me(e)&&null!==e&&(t=this._dataMap[e]),t},_treeDataSource:function(){var e=this,t=e.options,n=t.dataSource;if(n=ve(n)?{data:n}:n,n instanceof kendo.data.DataSource&&!(n instanceof kendo.data.HierarchicalDataSource))throw Error("Incorrect DataSource type. If a single dataSource instance is set to the diagram then it should be a HierarchicalDataSource. You should set only the options instead of an instance or a HierarchicalDataSource instance or supply connectionsDataSource as well.");n.fields||(n.fields=[{field:"text"},{field:"url"},{field:"spriteCssClass"},{field:"imageUrl"}]),e.dataSource&&e._refreshHandler&&e._unbindDataSource(),e._refreshHandler=B(e._refreshSource,e),e._errorHandler=B(e._error,e),e.dataSource=V.create(n).bind(Se,e._refreshHandler).bind(Fe,e._errorHandler)},_unbindDataSource:function(){var e=this;e.dataSource.unbind(Se,e._refreshHandler).unbind(Fe,e._errorHandler)},_adorn:function(e,n){n!==t&&e&&(n?(this._adorners.push(e),this.adornerLayer.append(e.visual)):(le.remove(this._adorners,e),this.adornerLayer.remove(e.visual)))},_showConnectors:function(e,t){t?this._connectorsAdorner.show(e):this._connectorsAdorner.destroy()},_updateAdorners:function(){var e,t,n=this._adorners;for(e=0;e<n.length;e++)t=n[e],t.refreshBounds&&t.refreshBounds(),t.refresh()},_refresh:function(){for(var e=0;e<this.connections.length;e++)this.connections[e].refresh()},_destroyToolBar:function(){this.singleToolBar&&(this.singleToolBar.hide(),this.singleToolBar.destroy(),this.singleToolBar=null)},_destroyGlobalToolBar:function(){this.toolBar&&(this.toolBar.hide(),this.toolBar.destroy(),this.toolBar=null)},exportDOMVisual:function(){var e=this.canvas._viewBox,t=F.transform().translate(-e.x,-e.y),n=new F.Rect([0,0],[e.width,e.height]),i=M.Path.fromRect(n),o=new M.Group({transform:t}),r=new M.Group({clip:i}),a=this.canvas.drawingElement.children[0];return r.append(o),o.children.push(a),r},exportVisual:function(){var e=F.transform().scale(1/this._zoom),t=new M.Group({transform:e}),n=this.mainLayer.drawingElement;return t.children.push(n),t},_syncChanges:function(){this._syncShapeChanges(),this._syncConnectionChanges()},_syncShapeChanges:function(){this.dataSource&&this._isEditable&&this.dataSource.sync()},_syncConnectionChanges:function(){var t=this;t.connectionsDataSource&&t._isEditable&&(e.when.apply(e,t._deferredConnectionUpdates).then(function(){t.connectionsDataSource.sync()}),t.deferredConnectionUpdates=[])}}),I.ExportMixin.extend(x.fn,!0),kendo.PDFMixin&&kendo.PDFMixin.extend(x.fn),C=kendo.Observable.extend({init:function(e,t){kendo.Observable.fn.init.call(this),this.diagram=e,this.options=L({},this.options,t),this._tools=[],this.createToolBar(),this.createTools(),this.appendTools(),this.options.modal&&this.createPopup(),this.bind(this.events,t)},events:["click"],createPopup:function(){this.container=e("<div/>").append(this.element),this._popup=this.container.kendoPopup({}).getKendoPopup()},appendTools:function(){var e,t;for(e=0;e<this._tools.length;e++)t=this._tools[e],(t.buttons&&t.buttons.length||!me(t.buttons))&&this._toolBar.add(t)},createToolBar:function(){this.element=e("<div/>"),this._toolBar=this.element.kendoToolBar({click:B(this.click,this),resizable:!1}).getKendoToolBar(),this.element.css("border","none")},createTools:function(){for(var e=0;e<this.options.tools.length;e++)this.createTool(this.options.tools[e])},createTool:function(e){we(e)||(e={name:e});var t=e.name+"Tool";this[t]?this[t](e):this._tools.push(L({},e,{attributes:this._setAttributes({action:e.name})}))},showAt:function(e){var t=parseInt(this.options.popupZIndex,10);this._popup&&(this._popup.open(e.x,e.y),t&&this._popup.wrapper.css("zIndex",t))},hide:function(){this._popup&&this._popup.close()},newGroup:function(){return{type:"buttonGroup",buttons:[]}},editTool:function(){this._tools.push({icon:"edit",showText:"overflow",type:"button",text:"Edit",attributes:this._setAttributes({action:"edit"})})},deleteTool:function(){this._tools.push({icon:"close",showText:"overflow",type:"button",text:"Delete",attributes:this._setAttributes({action:"delete"})})},rotateAnticlockwiseTool:function(e){this._appendGroup("rotate"),this._rotateGroup.buttons.push({icon:"rotate-left",showText:"overflow",text:"RotateAnticlockwise",group:"rotate",attributes:this._setAttributes({action:"rotateAnticlockwise",step:e.step})})},rotateClockwiseTool:function(e){this._appendGroup("rotate"),this._rotateGroup.buttons.push({icon:"rotate-right",attributes:this._setAttributes({action:"rotateClockwise",step:e.step}),showText:"overflow",text:"RotateClockwise",group:"rotate"})},createShapeTool:function(){this._appendGroup("create"),this._createGroup.buttons.push({icon:"shape",showText:"overflow",text:"CreateShape",group:"create",attributes:this._setAttributes({action:"createShape"})})},createConnectionTool:function(){this._appendGroup("create"),this._createGroup.buttons.push({icon:"connector",showText:"overflow",text:"CreateConnection",group:"create",attributes:this._setAttributes({action:"createConnection"})})},undoTool:function(){this._appendGroup("history"),this._historyGroup.buttons.push({icon:"undo",showText:"overflow",text:"Undo",group:"history",attributes:this._setAttributes({action:"undo"})})},redoTool:function(){this._appendGroup("history"),this._historyGroup.buttons.push({icon:"redo",showText:"overflow",text:"Redo",group:"history",attributes:this._setAttributes({action:"redo"})})},_appendGroup:function(e){var t="_"+e+"Group";this[t]||(this[t]=this.newGroup(),this._tools.push(this[t]))},_setAttributes:function(e){var t={};return e.action&&(t[kendo.attr("action")]=e.action),e.step&&(t[kendo.attr("step")]=e.step),t},_getAttributes:function(e){var t,n={},i=e.attr(kendo.attr("action"));return i&&(n.action=i),t=e.attr(kendo.attr("step")),t&&(n.step=t),n},click:function(t){var n=this._getAttributes(e(t.target)),i=n.action;i&&this[i]&&this[i](n),this.trigger("click",this.eventData(i,t.target))},eventData:function(e,t){var n,i,o=this.selectedElements(),r=o.length,a=[],s=[];for(i=0;i<r;i++)n=o[i],n instanceof k?a.push(n):s.push(n);return{shapes:a,connections:s,action:e,target:t}},"delete":function(){var e=this.diagram,t=e._triggerRemove(this.selectedElements());t.length&&(this.diagram.remove(t,!0),this.diagram._syncChanges())},edit:function(){var e=this.selectedElements();1===e.length&&this.diagram.edit(e[0])},rotateClockwise:function(e){var t=parseFloat(e.step||90);this._rotate(t)},rotateAnticlockwise:function(e){var t=parseFloat(e.step||90);this._rotate(-t)},_rotate:function(e){var t=this.diagram._resizingAdorner;t.angle(t.angle()+e),t.rotate()},selectedElements:function(){return this.diagram.select()},createShape:function(){this.diagram.createShape()},createConnection:function(){this.diagram.createConnection()},undo:function(){this.diagram.undo()},redo:function(){this.diagram.redo()},destroy:function(){this.diagram=null,this.element=null,this.options=null,this._toolBar&&this._toolBar.destroy(),this._popup&&this._popup.destroy()}}),S=kendo.Observable.extend({init:function(e,t){kendo.Observable.fn.init.call(this),this.options=O(!0,{},this.options,t),this.element=e,this.model=this.options.model,this.fields=this._getFields(),this._initContainer(),this.createEditable()},options:{editors:{}},_initContainer:function(){this.wrapper=this.element},createEditable:function(){var e=this.options;this.editable=new kendo.ui.Editable(this.wrapper,{fields:this.fields,target:e.target,clearContainer:!1,model:this.model})},_isEditable:function(e){return this.model.editable&&this.model.editable(e)},_getFields:function(){var e,t,n,i=[],o=this.model.fields;for(e in o)t={},this._isEditable(e)&&(n=this.options.editors[e],n&&(t.editor=n),t.field=e,i.push(t));return i},end:function(){return this.editable.end()},destroy:function(){this.editable.destroy(),this.editable.element.find("["+kendo.attr("container-for")+"]").empty(),this.model=this.wrapper=this.element=this.columns=this.editable=null}}),T=S.extend({init:function(e,t){S.fn.init.call(this,e,t),this.bind(this.events,this.options),this.open()},events:["update","cancel"],options:{window:{modal:!0,resizable:!1,draggable:!0,title:"Edit",visible:!1}},_initContainer:function(){var t,n=this;this.wrapper=e('<div class="k-popup-edit-form"/>').attr(kendo.attr("uid"),this.model.uid),t="",this.options.template?(t+=this._renderTemplate(),this.fields=[]):t+=this._renderFields(),t+=this._renderButtons(),this.wrapper.append(e('<div class="k-edit-form-container"/>').append(t)),this.window=new kendo.ui.Window(this.wrapper.appendTo(this.element),this.options.window),this.window.bind("close",function(e){e.userTriggered&&(e.sender.element.focus(),n._cancelClick(e))}),this._attachButtonEvents()},_renderTemplate:function(){var e=this.options.template;return"string"==typeof e&&(e=kendo.unescape(e)),e=kendo.template(e)(this.model)},_renderFields:function(){var e,t,n="";for(e=0;e<this.fields.length;e++)t=this.fields[e],n+='<div class="k-edit-label"><label for="'+t.field+'">'+(t.field||"")+"</label></div>",this._isEditable(t.field)&&(n+="<div "+kendo.attr("container-for")+'="'+t.field+'" class="k-edit-field"></div>');return n},_renderButtons:function(){var e='<div class="k-edit-buttons k-state-default">';return e+=this._createButton("update"),e+=this._createButton("cancel"),e+="</div>"},_createButton:function(e){return kendo.template(pt)(_[e])},_attachButtonEvents:function(){this._cancelClickHandler=B(this._cancelClick,this),this.window.element.on(Te+ye,"a.k-diagram-cancel",this._cancelClickHandler),this._updateClickHandler=B(this._updateClick,this),this.window.element.on(Te+ye,"a.k-diagram-update",this._updateClickHandler)},_updateClick:function(e){e.preventDefault(),this.trigger("update")},_cancelClick:function(e){e.preventDefault(),this.trigger("cancel")},open:function(){this.window.center().open()},close:function(){this.window.bind("deactivate",B(this.destroy,this)).close()},destroy:function(){this.window.close().destroy(),this.window.element.off(Te+ye,"a.k-diagram-cancel",this._cancelClickHandler),this.window.element.off(Te+ye,"a.k-diagram-update",this._updateClickHandler),this._cancelClickHandler=null,this._editUpdateClickHandler=null,this.window=null,S.fn.destroy.call(this)}}),c.fn=c.prototype={onActivate:function(t){var n=e.Deferred();return this.callbacks.push({callback:t,deferred:n}),n},activate:function(){var e,t,n=this.callbacks;for(t=0;t<n.length;t++)e=this.callbacks[t],e.callback(this.dataItem),e.deferred.resolve();this.callbacks=[]}},d.fn=d.prototype={add:function(e){for(var t=0;t<e.length;t++)this.items[e[t].uid]=new c(e[t])},forEach:function(e){for(var t in this.items)e(this.items[t])},getByUid:function(e){return this.items[e]},remove:function(e){delete this.items[e.uid]}},D=z.extend({init:function(){this.shapes=[]},_add:function(e,t){this.shapes.push({bounds:t,shape:e}),e._quadNode=this},insert:function(e,t){this._add(e,t)},remove:function(e){var t,n=this.shapes,i=n.length;for(t=0;t<i;t++)if(n[t].shape===e){n.splice(t,1);break}},hitTestRect:function(e,t){var n,i=this.shapes,o=i.length;for(n=0;n<o;n++)if(this._testRect(i[n].shape,e)&&!I.inArray(i[n].shape,t))return!0},_testRect:function(e,t){var n,i=e.rotate().angle,o=e.bounds();return n=i?ee.rects(t,o,-i):o.overlaps(t)}}),A=D.extend({init:function(e){D.fn.init.call(this),this.children=[],this.rect=e},inBounds:function(e){var t=this.rect,n=t.bottomRight(),i=e.bottomRight(),o=t.x<=e.x&&t.y<=e.y&&i.x<=n.x&&i.y<=n.y;return o},overlapsBounds:function(e){return this.rect.overlaps(e)},insert:function(e,t){var n,i=!1,o=this.children,r=o.length;if(this.inBounds(t)){if(!r&&this.shapes.length<4)this._add(e,t);else{for(r||this._initChildren(),n=0;n<o.length;n++)if(o[n].insert(e,t)){i=!0;break}i||this._add(e,t)}i=!0}return i},_initChildren:function(){var e,t,n=this.rect,i=this.children,o=this.shapes,r=n.center(),a=n.width/2,s=n.height/2;for(i.push(new A(new $(n.x,n.y,a,s)),new A(new $(r.x,n.y,a,s)),new A(new $(n.x,r.y,a,s)),new A(new $(r.x,r.y,a,s))),t=o.length-1;t>=0;t--)for(e=0;e<i.length;e++)if(i[e].insert(o[t].shape,o[t].bounds)){o.splice(t,1);break}},hitTestRect:function(e,t){var n,i=this.children,o=i.length,r=!1;if(this.overlapsBounds(e))if(D.fn.hitTestRect.call(this,e,t))r=!0;else for(n=0;n<o;n++)if(i[n].hitTestRect(e,t)){r=!0;break}return r}}),E=z.extend({ROOT_SIZE:1e3,init:function(e){var t=B(this._boundsChange,this);e.bind(Ce,t),e.bind(Oe,t),this.initRoots()},initRoots:function(){this.rootMap={},this.root=new D},clear:function(){this.initRoots()},_boundsChange:function(e){e.item._quadNode&&e.item._quadNode.remove(e.item),this.insert(e.item)},insert:function(e){var t=e.bounds(ot),n=this.ROOT_SIZE,i=this.getSectors(t),o=i[0][0],r=i[1][0];this.inRoot(i)?this.root.insert(e,t):(this.rootMap[o]||(this.rootMap[o]={}),this.rootMap[o][r]||(this.rootMap[o][r]=new A(new $(o*n,r*n,n,n))),this.rootMap[o][r].insert(e,t))},remove:function(e){e._quadNode&&e._quadNode.remove(e)},inRoot:function(e){return e[0].length>1||e[1].length>1},getSectors:function(e){var t,n,i=this.ROOT_SIZE,o=e.bottomRight(),r=ke.floor(o.x/i),a=ke.floor(o.y/i),s=[[],[]];for(t=ke.floor(e.x/i);t<=r;t++)s[0].push(t);for(n=ke.floor(e.y/i);n<=a;n++)s[1].push(n);return s},hitTestRect:function(e,t){var n,i,o,r,a,s=this.getSectors(e);if(this.root.hitTestRect(e,t))return!0;for(n=0;n<s[0].length;n++)for(o=s[0][n],i=0;i<s[1].length;i++)if(r=s[1][i],a=(this.rootMap[o]||{})[r],a&&a.hitTestRect(e,t))return!0;return!1}}),I.ui.plugin(x),L(R,{Shape:k,Connection:y,Connector:w,DiagramToolBar:C,QuadNode:A,QuadRoot:D,ShapesQuadTree:E,PopupEditor:T})}(window.kendo.jQuery)},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.diagram.min",["kendo.data.min","kendo.draganddrop.min","kendo.userevents.min","kendo.mobile.scroller.min","kendo.drawing.min","dataviz/diagram/utils.min","dataviz/diagram/math.min","dataviz/diagram/svg.min","dataviz/diagram/services.min","dataviz/diagram/layout.min","dataviz/diagram/dom.min"],e)}(function(){return window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.treemap.min",["kendo.data.min","kendo.userevents.min","kendo.dataviz.themes.min"],e)}(function(){return function(e,t){function n(e,t){if(null===t)return t;var n=C(e,!0);return n(t)}function i(e){return typeof e!==R}function o(e,t,n){var i,o,l=s(e),c=s(t),d=u(e)-u(t)<0,h=[];for(h.push(e),i=0;i<n;i++)o={r:r(l.r,c.r,i,n,d),g:r(l.g,c.g,i,n,d),b:r(l.b,c.b,i,n,d)},h.push(a(o));return h.push(t),h}function r(e,t,n,i,o){var r,a=p.min(p.abs(e),p.abs(t)),s=p.max(p.abs(e),p.abs(t)),l=(s-a)/(i+1),c=l*(n+1);return r=o?a+c:s-c}function a(e){return"#"+l(e.r)+l(e.g)+l(e.b)}function s(e){e=e.replace("#","");var t=c(e);return{r:d(t.r),g:d(t.g),b:d(t.b)}}function l(e){var t=p.round(e).toString(16).toUpperCase();return 1===t.length&&(t="0"+t),t}function c(e){var t=e.length,n={};return 3===t?(n.r=e[0],n.g=e[1],n.b=e[2]):(n.r=e.substring(0,2),n.g=e.substring(2,4),n.b=e.substring(4,6)),n}function d(e){return parseInt(e.toString(16),16)}function u(e){var t=0;return e&&(e=s(e),t=p.sqrt(.241*e.r*e.r+.691*e.g*e.g+.068*e.b*e.b)),t}function h(e){var t=p.pow(10,4);return p.round(e*t)/t}var p=Math,f=e.proxy,g=e.isArray,m=window.kendo,v=m._outerHeight,_=m._outerWidth,b=m.Class,w=m.ui.Widget,k=m.template,y=m.deepExtend,x=m.data.HierarchicalDataSource,C=m.getter,S=m.dataviz,T=".kendoTreeMap",D="change",A="dataBound",E="itemCreated",I=Number.MAX_VALUE,M="mouseover"+T,F="mouseleave"+T,R="undefined",P=w.extend({init:function(t,n){m.destroy(t),e(t).empty(),w.fn.init.call(this,t,n),this.wrapper=this.element,this._initTheme(this.options),this.element.addClass("k-widget k-treemap"),this._setLayout(),this._originalOptions=y({},this.options),this._initDataSource(),this._attachEvents(),m.notify(this,S.ui)},options:{name:"TreeMap",theme:"default",autoBind:!0,textField:"text",valueField:"value",colorField:"color"},events:[A,E],_initTheme:function(e){var t=this,n=S.ui.themes||{},i=((e||{}).theme||"").toLowerCase(),o=(n[i]||{}).treeMap;t.options=y({},o,e)},_attachEvents:function(){this.element.on(M,f(this._mouseover,this)).on(F,f(this._mouseleave,this)),this._resizeHandler=f(this.resize,this,!1),m.onResize(this._resizeHandler)},_setLayout:function(){"horizontal"===this.options.type?(this._layout=new L((!1)),this._view=new H(this,this.options)):"vertical"===this.options.type?(this._layout=new L((!0)),this._view=new H(this,this.options)):(this._layout=new z,this._view=new B(this,this.options))},_initDataSource:function(){var e=this,t=e.options,n=t.dataSource;e._dataChangeHandler=f(e._onDataChange,e),e.dataSource=x.create(n).bind(D,e._dataChangeHandler),n&&e.options.autoBind&&e.dataSource.fetch()},setDataSource:function(e){var t=this;t.dataSource.unbind(D,t._dataChangeHandler),t.dataSource=e.bind(D,t._dataChangeHandler),e&&t.options.autoBind&&t.dataSource.fetch()},_onDataChange:function(e){var t,n,i,o,r=e.node,a=e.items,s=this.options;if(r){if(a.length){for(i=this._getByUid(r.uid),i.children=[],a=new m.data.Query(a)._sortForGrouping(s.valueField,"desc"),n=0;n<a.length;n++)t=a[n],i.children.push(this._wrapItem(t));o=this._view.htmlSize(i),this._layout.compute(i.children,i.coord,o),this._setColors(i.children),this._view.render(i)}}else this._cleanItems(),this.element.empty(),t=this._wrapItem(a[0]),this._layout.createRoot(t,_(this.element),v(this.element),"vertical"===this.options.type),this._view.createRoot(t),this._root=t,this._colorIdx=0;for(n=0;n<a.length;n++)a[n].load();r&&this.trigger(A,{node:r})},_cleanItems:function(){var e=this;e.angular("cleanup",function(){return{elements:e.element.find(".k-leaf div,.k-treemap-title,.k-treemap-title-vertical")}})},_setColors:function(e){var t,n,r,a,s=this.options.colors,l=this._colorIdx,c=s[l%s.length];for(g(c)&&(t=o(c[0],c[1],e.length)),r=!1,a=0;a<e.length;a++)n=e[a],i(n.color)||(n.color=t?t[a]:c),n.dataItem.hasChildren||(r=!0);r&&this._colorIdx++},_contentSize:function(e){this.view.renderHeight(e)},_wrapItem:function(e){var t={};return i(this.options.valueField)&&(t.value=n(this.options.valueField,e)),i(this.options.colorField)&&(t.color=n(this.options.colorField,e)),i(this.options.textField)&&(t.text=n(this.options.textField,e)),t.level=e.level(),t.dataItem=e,t},_getByUid:function(e){for(var t,n=[this._root];n.length;){if(t=n.pop(),t.dataItem.uid===e)return t;t.children&&(n=n.concat(t.children))}},dataItem:function(t){var n=e(t).attr(m.attr("uid")),i=this.dataSource;return i&&i.getByUid(n)},findByUid:function(e){return this.element.find(".k-treemap-tile["+m.attr("uid")+"='"+e+"']")},_mouseover:function(t){var n=e(t.target);n.hasClass("k-leaf")&&(this._removeActiveState(),n.removeClass("k-state-hover").addClass("k-state-hover"))},_removeActiveState:function(){this.element.find(".k-state-hover").removeClass("k-state-hover")},_mouseleave:function(){this._removeActiveState()},destroy:function(){w.fn.destroy.call(this),this.element.off(T),this.dataSource&&this.dataSource.unbind(D,this._dataChangeHandler),this._root=null,m.unbindResize(this._resizeHandler),m.destroy(this.element)},items:function(){return e()},getSize:function(){return m.dimensions(this.element)},_resize:function(){var e,t,n=this._root;n&&(e=this.element,t=e.children(),n.coord.width=_(e),n.coord.height=v(e),t.css({width:n.coord.width,height:n.coord.height}),this._resizeItems(n,t))},_resizeItems:function(e,t){var n,i,o,r;if(e.children&&e.children.length)for(n=t.children(".k-treemap-wrap").children(),this._layout.compute(e.children,e.coord,{text:this._view.titleSize(e,t)}),r=0;r<e.children.length;r++)i=e.children[r],o=n.filter("["+m.attr("uid")+"='"+i.dataItem.uid+"']"),this._view.setItemSize(i,o),this._resizeItems(i,o)},setOptions:function(e){var n=e.dataSource;e.dataSource=t,this._originalOptions=y(this._originalOptions,e),this.options=y({},this._originalOptions),this._setLayout(),this._initTheme(this.options),w.fn._setEvents.call(this,e),n&&this.setDataSource(x.create(n)),this.options.autoBind&&this.dataSource.fetch()}}),z=b.extend({createRoot:function(e,t,n){e.coord={width:t,height:n,top:0,left:0}},leaf:function(e){return!e.children},layoutChildren:function(e,t){var n,i,o,r,a=t.width*t.height,s=0,l=[];for(n=0;n<e.length;n++)l[n]=parseFloat(e[n].value),s+=l[n];for(n=0;n<l.length;n++)e[n].area=a*l[n]/s;i=this.layoutHorizontal()?t.height:t.width,o=[e[0]],r=e.slice(1),this.squarify(r,o,i,t)},squarify:function(e,t,n,i){this.computeDim(e,t,n,i)},computeDim:function(e,n,i,o){var r,a,s;return e.length+n.length==1?(r=1==e.length?e:n,this.layoutLast(r,i,o),t):(e.length>=2&&0===n.length&&(n=[e[0]],e=e.slice(1)),0===e.length?(n.length>0&&this.layoutRow(n,i,o),t):(a=e[0],this.worstAspectRatio(n,i)>=this.worstAspectRatio([a].concat(n),i)?this.computeDim(e.slice(1),n.concat([a]),i,o):(s=this.layoutRow(n,i,o),this.computeDim(e,[],s.dim,s)),t))},layoutLast:function(e,t,n){e[0].coord=n},layoutRow:function(e,t,n){return this.layoutHorizontal()?this.layoutV(e,t,n):this.layoutH(e,t,n)},orientation:"h",layoutVertical:function(){return"v"===this.orientation},layoutHorizontal:function(){return"h"===this.orientation},layoutChange:function(){this.orientation=this.layoutVertical()?"h":"v"},worstAspectRatio:function(e,t){var n,i,o,r,a;if(!e||0===e.length)return I; +for(n=0,i=0,o=I,r=0;r<e.length;r++)a=e[r].area,n+=a,o=o<a?o:a,i=i>a?i:a;return p.max(t*t*i/(n*n),n*n/(t*t*o))},compute:function(e,t,n){if(t.width>=t.height&&this.layoutHorizontal()||this.layoutChange(),e&&e.length>0){var i={width:t.width,height:t.height-n.text,top:0,left:0};this.layoutChildren(e,i)}},layoutV:function(e,t,n){var i,o,r,a=this._totalArea(e),s=0;for(t=h(a/t),i=0;i<e.length;i++)o=h(e[i].area/t),e[i].coord={height:o,width:t,top:n.top+s,left:n.left},s+=o;return r={height:n.height,width:n.width-t,top:n.top,left:n.left+t},r.dim=p.min(r.width,r.height),r.dim!=r.height&&this.layoutChange(),r},layoutH:function(e,t,n){var i,o,r=this._totalArea(e),a=h(r/t),s=n.top,l=0;for(i=0;i<e.length;i++)e[i].coord={height:a,width:h(e[i].area/a),top:s,left:n.left+l},l+=e[i].coord.width;return o={height:n.height-a,width:n.width,top:n.top+a,left:n.left},o.dim=p.min(o.width,o.height),o.dim!=o.width&&this.layoutChange(),o},_totalArea:function(e){var t,n=0;for(t=0;t<e.length;t++)n+=e[t].area;return n}}),B=b.extend({init:function(t,n){this.options=y({},this.options,n),this.treeMap=t,this.element=e(t.element),this.offset=0},titleSize:function(e,t){var n=t.children(".k-treemap-title");return n.height()||0},htmlSize:function(e){var t,n,i=this._getByUid(e.dataItem.uid),o={text:0};return e.children&&(this._clean(i),t=this._getText(e),t&&(n=this._createTitle(e),i.append(n),this._compile(n,e.dataItem),o.text=n.height()),i.append(this._createWrap()),this.offset=(_(i)-i.innerWidth())/2),o},_compile:function(e,t){this.treeMap.angular("compile",function(){return{elements:e,data:[{dataItem:t}]}})},_getByUid:function(e){return this.element.find(".k-treemap-tile["+m.attr("uid")+"='"+e+"']")},render:function(e){var t,n,i,o,r=this._getByUid(e.dataItem.uid),a=e.children;if(a)for(t=r.find(".k-treemap-wrap"),n=0;n<a.length;n++)i=a[n],o=this._createLeaf(i),t.append(o),this._compile(o.children(),i.dataItem),this.treeMap.trigger(E,{element:o})},createRoot:function(e){var t=this._createLeaf(e);this.element.append(t),this._compile(t.children(),e.dataItem),this.treeMap.trigger(E,{element:t})},_clean:function(e){this.treeMap.angular("cleanup",function(){return{elements:e.children(":not(.k-treemap-wrap)")}}),e.css("background-color",""),e.removeClass("k-leaf"),e.removeClass("k-inverse"),e.empty()},_createLeaf:function(t){return this._createTile(t).css("background-color",t.color).addClass("k-leaf").toggleClass("k-inverse",this._tileColorBrightness(t)>180).toggle(0!==t.value).append(e("<div></div>").html(this._getText(t)))},_createTile:function(t){var n=e("<div class='k-treemap-tile'></div>");return this.setItemSize(t,n),i(t.dataItem)&&i(t.dataItem.uid)&&n.attr(m.attr("uid"),t.dataItem.uid),n},_itemCoordinates:function(e){var t={width:e.coord.width,height:e.coord.height,left:e.coord.left,top:e.coord.top};return t.width+=t.left&&this.offset?2*this.offset:this.offset,t.height+=t.top?2*this.offset:this.offset,t},setItemSize:function(e,t){var n=this._itemCoordinates(e);t.css({width:n.width,height:n.height,left:n.left,top:n.top})},_getText:function(e){var t=e.text;return this.options.template&&(t=this._renderTemplate(e)),t},_renderTemplate:function(e){var t=k(this.options.template);return t({dataItem:e.dataItem,text:e.text})},_createTitle:function(t){return e("<div class='k-treemap-title'></div>").append(e("<div></div>").html(this._getText(t)))},_createWrap:function(){return e("<div class='k-treemap-wrap'></div>")},_tileColorBrightness:function(e){return u(e.color)}}),L=b.extend({createRoot:function(e,t,n,i){e.coord={width:t,height:n,top:0,left:0},e.vertical=i},init:function(e){this.vertical=e,this.quotient=e?1:0},compute:function(e,t,n){var i,o,r;e.length>0&&(i=t.width,o=t.height,this.vertical?o-=n.text:i-=n.text,r={width:i,height:o,top:0,left:0},this.layoutChildren(e,r))},layoutChildren:function(e,t){var n,i,o=t.width*t.height,r=0,a=[];for(n=0;n<e.length;n++)i=e[n],a[n]=parseFloat(e[n].value),r+=a[n],i.vertical=this.vertical;for(n=0;n<a.length;n++)e[n].area=o*a[n]/r;this.sliceAndDice(e,t)},sliceAndDice:function(e,t){var n=this._totalArea(e);e[0].level%2===this.quotient?this.layoutHorizontal(e,t,n):this.layoutVertical(e,t,n)},layoutHorizontal:function(e,t,n){var i,o,r,a=0;for(i=0;i<e.length;i++)o=e[i],r=o.area/(n/t.width),o.coord={height:t.height,width:r,top:t.top,left:t.left+a},a+=r},layoutVertical:function(e,t,n){var i,o,r,a=0;for(i=0;i<e.length;i++)o=e[i],r=o.area/(n/t.height),o.coord={height:r,width:t.width,top:t.top+a,left:t.left},a+=r},_totalArea:function(e){var t,n=0;for(t=0;t<e.length;t++)n+=e[t].area;return n}}),H=B.extend({htmlSize:function(e){var t,n,i=this._getByUid(e.dataItem.uid),o={text:0,offset:0};return e.children&&(this._clean(i),t=this._getText(e),t&&(n=this._createTitle(e),i.append(n),this._compile(n,e.dataItem),o.text=e.vertical?n.height():n.width()),i.append(this._createWrap()),this.offset=(_(i)-i.innerWidth())/2),o},titleSize:function(e,t){var n;return n=e.vertical?t.children(".k-treemap-title").height():t.children(".k-treemap-title-vertical").width(),n||0},_createTitle:function(t){var n;return n=e(t.vertical?"<div class='k-treemap-title'></div>":"<div class='k-treemap-title-vertical'></div>"),n.append(e("<div></div>").html(this._getText(t)))}});S.ui.plugin(P)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.dataviz.min",["kendo.core.min","kendo.fx.min","kendo.router.min","kendo.view.min","kendo.data.odata.min","kendo.data.xml.min","kendo.data.min","kendo.data.signalr.min","kendo.binder.min","kendo.userevents.min","kendo.draganddrop.min","kendo.mobile.scroller.min","kendo.popup.min","kendo.tooltip.min","kendo.drawing.min","kendo.dataviz.core.min","kendo.dataviz.themes.min","kendo.dataviz.chart.min","kendo.dataviz.gauge.min","kendo.dataviz.barcode.min","kendo.dataviz.qrcode.min","kendo.dataviz.stock.min","kendo.dataviz.sparkline.min","kendo.dataviz.map.min","kendo.dataviz.diagram.min","kendo.dataviz.treemap.min","kendo.angular.min"],e)}(function(){"bundle all";return window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.view.min",["kendo.core.min","kendo.fx.min","kendo.mobile.scroller.min","kendo.view.min"],e)}(function(){return function(e,t){function n(e){var t,n,i=e.find(y("popover")),o=s.roles;for(t=0,n=i.length;t<n;t++)r.initWidget(i[t],{},o)}function i(e){r.triggeredByInput(e)||e.preventDefault()}function o(t){t.each(function(){r.initWidget(e(this),{},s.roles)})}var r=window.kendo,a=r.mobile,s=a.ui,l=r.attr,c=s.Widget,d=r.ViewClone,u="init",h='<div style="height: 100%; width: 100%; position: absolute; top: 0; left: 0; z-index: 20000; display: none" />',p="beforeShow",f="show",g="afterShow",m="beforeHide",v="transitionEnd",_="transitionStart",b="hide",w="destroy",k=r.attrValue,y=r.roleSelector,x=r.directiveSelector,C=r.compileMobileDirective,S=c.extend({init:function(t,n){c.fn.init.call(this,t,n),this.params={},e.extend(this,n),this.transition=this.transition||this.defaultTransition,this._id(),this.options.$angular?this._overlay():(this._layout(),this._overlay(),this._scroller(),this._model())},events:[u,p,f,g,m,b,w,_,v],options:{name:"View",title:"",layout:null,getLayout:e.noop,reload:!1,transition:"",defaultTransition:"",useNativeScrolling:!1,stretch:!1,zoom:!1,model:null,modelScope:window,scroller:{},initWidgets:!0},enable:function(e){t===e&&(e=!0),e?this.overlay.hide():this.overlay.show()},destroy:function(){this.layout&&this.layout.detach(this),this.trigger(w),c.fn.destroy.call(this),this.scroller&&this.scroller.destroy(),this.options.$angular&&this.element.scope().$destroy(),r.destroy(this.element)},purge:function(){this.destroy(),this.element.remove()},triggerBeforeShow:function(){return!this.trigger(p,{view:this})},triggerBeforeHide:function(){return!this.trigger(m,{view:this})},showStart:function(){var e=this.element;e.css("display",""),this.inited?this._invokeNgController():(this.inited=!0,this.trigger(u,{view:this})),this.layout&&this.layout.attach(this),this._padIfNativeScrolling(),this.trigger(f,{view:this}),r.resize(e)},showEnd:function(){this.trigger(g,{view:this}),this._padIfNativeScrolling()},hideEnd:function(){var e=this;e.element.hide(),e.trigger(b,{view:e}),e.layout&&e.layout.trigger(b,{view:e,layout:e.layout})},beforeTransition:function(e){this.trigger(_,{type:e})},afterTransition:function(e){this.trigger(v,{type:e})},_padIfNativeScrolling:function(){if(a.appLevelNativeScrolling()){var e=r.support.mobileOS&&r.support.mobileOS.android,t=a.application.skin()||"",n=a.application.os.android||t.indexOf("android")>-1,i="flat"===t||t.indexOf("material")>-1,o=!e&&!n||i?"header":"footer",s=!e&&!n||i?"footer":"header";this.content.css({paddingTop:this[o].height(),paddingBottom:this[s].height()})}},contentElement:function(){var e=this;return e.options.stretch?e.content:e.scrollerContent},clone:function(){return new d(this)},_scroller:function(){var t=this;a.appLevelNativeScrolling()||(t.options.stretch?t.content.addClass("km-stretched-view"):(t.content.kendoMobileScroller(e.extend(t.options.scroller,{zoom:t.options.zoom,useNative:t.options.useNativeScrolling})),t.scroller=t.content.data("kendoMobileScroller"),t.scrollerContent=t.scroller.scrollElement),r.support.kineticScrollNeeded&&(e(t.element).on("touchmove",".km-header",i),t.options.useNativeScrolling||t.options.stretch||e(t.element).on("touchmove",".km-content",i)))},_model:function(){var e=this,t=e.element,i=e.options.model;"string"==typeof i&&(i=r.getter(i)(e.options.modelScope)),e.model=i,n(t),e.element.css("display",""),e.options.initWidgets&&(i?r.bind(t,i,s,r.ui,r.dataviz.ui):a.init(t.children())),e.element.css("display","none")},_id:function(){var e=this.element,t=e.attr("id")||"";this.id=k(e,"url")||"#"+t,"#"==this.id&&(this.id=r.guid(),e.attr("id",this.id))},_layout:function(){var e=y("content"),t=this.element;t.addClass("km-view"),this.header=t.children(y("header")).addClass("km-header"),this.footer=t.children(y("footer")).addClass("km-footer"),t.children(e)[0]||t.wrapInner("<div "+l("role")+'="content"></div>'),this.content=t.children(y("content")).addClass("km-content"),this.element.prepend(this.header).append(this.footer),this.layout=this.options.getLayout(this.layout),this.layout&&this.layout.setup(this)},_overlay:function(){this.overlay=e(h).appendTo(this.element)},_invokeNgController:function(){var t,n,i;this.options.$angular&&(t=this.element.controller(),n=this.options.$angular[0],t&&(i=e.proxy(this,"_callController",t,n),/^\$(digest|apply)$/.test(n.$$phase)?i():n.$apply(i)))},_callController:function(e,t){this.element.injector().invoke(e.constructor,e,{$scope:t})}}),T=c.extend({init:function(e,t){c.fn.init.call(this,e,t),e=this.element,this.header=e.children(this._locate("header")).addClass("km-header"),this.footer=e.children(this._locate("footer")).addClass("km-footer"),this.elements=this.header.add(this.footer),n(e),this.options.$angular||r.mobile.init(this.element.children()),this.element.detach(),this.trigger(u,{layout:this})},_locate:function(e){return this.options.$angular?x(e):y(e)},options:{name:"Layout",id:null,platform:null},events:[u,f,b],setup:function(e){e.header[0]||(e.header=this.header),e.footer[0]||(e.footer=this.footer)},detach:function(e){var t=this;e.header===t.header&&t.header[0]&&e.element.prepend(t.header.detach()[0].cloneNode(!0)),e.footer===t.footer&&t.footer.length&&e.element.append(t.footer.detach()[0].cloneNode(!0))},attach:function(e){var t=this,n=t.currentView;n&&t.detach(n),e.header===t.header&&(t.header.detach(),e.element.children(y("header")).remove(),e.element.prepend(t.header)),e.footer===t.footer&&(t.footer.detach(),e.element.children(y("footer")).remove(),e.element.append(t.footer)),t.trigger(f,{layout:t,view:e}),t.currentView=e}}),D=r.Observable,A=/<body[^>]*>(([\u000a\u000d\u2028\u2029]|.)*)<\/body>/i,E="loadStart",I="loadComplete",M="showStart",F="sameViewRequested",R="viewShow",P="viewTypeDetermined",z="after",B=D.extend({init:function(t){var n,i,a,s,l=this;if(D.fn.init.call(l),e.extend(l,t),l.sandbox=e("<div />"),a=l.container,n=l._hideViews(a),l.rootView=n.first(),!l.rootView[0]&&t.rootNeeded)throw i=a[0]==r.mobile.application.element[0]?'Your kendo mobile application element does not contain any direct child elements with data-role="view" attribute set. Make sure that you instantiate the mobile application using the correct container.':'Your pane element does not contain any direct child elements with data-role="view" attribute set.',Error(i);l.layouts={},l.viewContainer=new r.ViewContainer(l.container),l.viewContainer.bind("accepted",function(e){e.view.params=l.params}),l.viewContainer.bind("complete",function(e){l.trigger(R,{view:e.view})}),l.viewContainer.bind(z,function(){l.trigger(z)}),this.getLayoutProxy=e.proxy(this,"_getLayout"),l._setupLayouts(a),s=a.children(l._locate("modalview drawer")),l.$angular?(l.$angular[0].viewOptions={defaultTransition:l.transition,loader:l.loader,container:l.container,getLayout:l.getLayoutProxy},s.each(function(n,i){C(e(i),t.$angular[0])})):o(s),this.bind(this.events,t)},events:[M,z,R,E,I,F,P],destroy:function(){r.destroy(this.container);for(var e in this.layouts)this.layouts[e].destroy()},view:function(){return this.viewContainer.view},showView:function(e,t,n){if(e=e.replace(RegExp("^"+this.remoteViewURLPrefix),""),""===e&&this.remoteViewURLPrefix&&(e="/"),e.replace(/^#/,"")===this.url)return this.trigger(F),!1;this.trigger(M);var i=this,o=function(n){return i.viewContainer.show(n,t,e)},a=i._findViewElement(e),s=r.widgetInstance(a);return i.url=e.replace(/^#/,""),i.params=n,s&&s.reload&&(s.purge(),a=[]),this.trigger(P,{remote:0===a.length,url:e}),a[0]?(s||(s=i._createView(a)),o(s)):(this.serverNavigation?location.href=e:i._loadView(e,o),!0)},append:function(e,t){var n,i,r,a=this.sandbox,s=(t||"").split("?")[0],c=this.container;return A.test(e)&&(e=RegExp.$1),a[0].innerHTML=e,c.append(a.children("script, style")),n=this._hideViews(a),r=n.first(),r.length||(n=r=a.wrapInner("<div data-role=view />").children()),s&&r.hide().attr(l("url"),s),this._setupLayouts(a),i=a.children(this._locate("modalview drawer")),c.append(a.children(this._locate("layout modalview drawer")).add(n)),o(i),this._createView(r)},_locate:function(e){return this.$angular?x(e):y(e)},_findViewElement:function(e){var t,n=e.split("?")[0];return n?(t=this.container.children("["+l("url")+"='"+n+"']"),t[0]||n.indexOf("/")!==-1||(t=this.container.children("#"===n.charAt(0)?n:"#"+n)),t):this.rootView},_createView:function(e){return this.$angular?C(e,this.$angular[0]):r.initWidget(e,{defaultTransition:this.transition,loader:this.loader,container:this.container,getLayout:this.getLayoutProxy,modelScope:this.modelScope,reload:k(e,"reload")},s.roles)},_getLayout:function(e){return""===e?null:e?this.layouts[e]:this.layouts[this.layout]},_loadView:function(t,n){this._xhr&&this._xhr.abort(),this.trigger(E),this._xhr=e.get(r.absoluteURL(t,this.remoteViewURLPrefix),"html").always(e.proxy(this,"_xhrComplete",n,t))},_xhrComplete:function(e,t,n){var i=!0;if("object"==typeof n&&0===n.status){if(!(n.responseText&&n.responseText.length>0))return;i=!0,n=n.responseText}this.trigger(I),i&&e(this.append(n,t))},_hideViews:function(e){return e.children(this._locate("view splitview")).hide()},_setupLayouts:function(t){var n,i=this;t.children(i._locate("layout")).each(function(){n=i.$angular?C(e(this),i.$angular[0]):r.initWidget(e(this),{},s.roles);var t=n.options.platform;t&&t!==a.application.os.name?n.destroy():i.layouts[n.options.id]=n})}});r.mobile.ViewEngine=B,s.plugin(S),s.plugin(T)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.loader.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.mobile.ui,o=i.Widget,r=e.map(n.eventMap,function(e){return e}).join(" ").split(" "),a=o.extend({init:function(t,n){var i=this,r=e('<div class="km-loader"><span class="km-loading km-spin"></span><span class="km-loading-left"></span><span class="km-loading-right"></span></div>');o.fn.init.call(i,r,n),i.container=t,i.captureEvents=!1,i._attachCapture(),r.append(i.options.loading).hide().appendTo(t)},options:{name:"Loader",loading:"<h1>Loading...</h1>",timeout:100},show:function(){var e=this;clearTimeout(e._loading),e.options.loading!==!1&&(e.captureEvents=!0,e._loading=setTimeout(function(){e.element.show()},e.options.timeout))},hide:function(){this.captureEvents=!1,clearTimeout(this._loading),this.element.hide()},changeMessage:function(e){this.options.loading=e,this.element.find(">h1").html(e)},transition:function(){this.captureEvents=!0,this.container.css("pointer-events","none")},transitionDone:function(){this.captureEvents=!1,this.container.css("pointer-events","")},_attachCapture:function(){function e(e){n.captureEvents&&e.preventDefault()}var t,n=this;for(n.captureEvents=!1,t=0;t<r.length;t++)n.container[0].addEventListener(r[t],e,!0)}});i.plugin(a)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.pane.min",["kendo.mobile.view.min","kendo.mobile.loader.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.mobile,o=n.roleSelector,r=i.ui,a=r.Widget,s=i.ViewEngine,l=r.View,c=i.ui.Loader,d="external",u="href",h="#!",p="navigate",f="viewShow",g="sameViewRequested",m=n.support.mobileOS,v=m.ios&&!m.appMode&&m.flatVersion>=700,_=/popover|actionsheet|modalview|drawer/,b="#:back",w=n.attrValue,k=a.extend({init:function(e,t){var i=this;a.fn.init.call(i,e,t),t=i.options,e=i.element,e.addClass("km-pane"),i.options.collapsible&&e.addClass("km-collapsible-pane"),this.history=[],this.historyCallback=function(e,t,n){var o=i.transition;return i.transition=null,v&&n&&(o="none"),i.viewEngine.showView(e,o,t)},this._historyNavigate=function(e){if(e===b){if(1===i.history.length)return;i.history.pop(),e=i.history[i.history.length-1]}else i.history.push(e);i.historyCallback(e,n.parseQueryStringParams(e))},this._historyReplace=function(e){var t=n.parseQueryStringParams(e);i.history[i.history.length-1]=e,i.historyCallback(e,t)},i.loader=new c(e,{loading:i.options.loading}),i.viewEngine=new s({container:e,transition:t.transition,modelScope:t.modelScope,rootNeeded:!t.initial,serverNavigation:t.serverNavigation,remoteViewURLPrefix:t.root||"",layout:t.layout,$angular:t.$angular,loader:i.loader,showStart:function(){i.loader.transition(),i.closeActiveDialogs()},after:function(){i.loader.transitionDone()},viewShow:function(e){i.trigger(f,e)},loadStart:function(){i.loader.show()},loadComplete:function(){i.loader.hide()},sameViewRequested:function(){i.trigger(g)},viewTypeDetermined:function(e){e.remote&&i.options.serverNavigation||i.trigger(p,{url:e.url})}}),this._setPortraitWidth(),n.onResize(function(){i._setPortraitWidth()}),i._setupAppLinks()},closeActiveDialogs:function(){var t=this.element.find(o("actionsheet popover modalview")).filter(":visible");t.each(function(){n.widgetInstance(e(this),r).close()})},navigateToInitial:function(){var e=this.options.initial;return e&&this.navigate(e),e},options:{name:"Pane",portraitWidth:"",transition:"",layout:"",collapsible:!1,initial:null,modelScope:window,loading:"<h1>Loading...</h1>"},events:[p,f,g],append:function(e){return this.viewEngine.append(e)},destroy:function(){a.fn.destroy.call(this),this.viewEngine.destroy(),this.userEvents.destroy()},navigate:function(e,t){e instanceof l&&(e=e.id),this.transition=t,this._historyNavigate(e)},replace:function(e,t){e instanceof l&&(e=e.id),this.transition=t,this._historyReplace(e)},bindToRouter:function(e){var t=this,i=this.history,o=this.viewEngine;e.bind("init",function(t){var r,a=t.url,s=e.pushState?a:"/";o.rootView.attr(n.attr("url"),s),r=i.length,"/"===a&&r&&(e.navigate(i[r-1],!0),t.preventDefault())}),e.bind("routeMissing",function(e){t.historyCallback(e.url,e.params,e.backButtonPressed)||e.preventDefault()}),e.bind("same",function(){t.trigger(g)}),t._historyNavigate=function(t){e.navigate(t)},t._historyReplace=function(t){e.replace(t)}},hideLoading:function(){this.loader.hide()},showLoading:function(){this.loader.show()},changeLoadingMessage:function(e){this.loader.changeMessage(e)},view:function(){return this.viewEngine.view()},_setPortraitWidth:function(){var e,t=this.options.portraitWidth;t&&(e=n.mobile.application.element.is(".km-vertical")?t:"auto",this.element.css("width",e))},_setupAppLinks:function(){var t=this,i="tab",r="[data-"+n.ns+"navigate-on-press]",a=e.map(["button","backbutton","detailbutton","listview-link"],function(e){return o(e)+":not("+r+")"}).join(",");this.element.handler(this).on("down",o(i)+","+r,"_mouseup").on("click",o(i)+","+a+","+r,"_appLinkClick"),this.userEvents=new n.UserEvents(this.element,{fastTap:!0,filter:a,tap:function(e){e.event.currentTarget=e.touch.currentTarget,t._mouseup(e.event)}}),this.element.css("-ms-touch-action","")},_appLinkClick:function(t){var n=e(t.currentTarget).attr("href"),i=n&&"#"!==n[0]&&this.options.serverNavigation;i||w(e(t.currentTarget),"rel")==d||t.preventDefault()},_mouseup:function(o){if(!(o.which>1||o.isDefaultPrevented())){var a=this,s=e(o.currentTarget),l=w(s,"transition"),c=w(s,"rel")||"",p=w(s,"target"),f=s.attr(u),g=v&&0===s[0].offsetHeight,m=f&&"#"!==f[0]&&this.options.serverNavigation;g||m||c===d||t===f||f===h||(s.attr(u,h),setTimeout(function(){s.attr(u,f)}),c.match(_)?(n.widgetInstance(e(f),r).openFor(s),"actionsheet"!==c&&"drawer"!==c||o.stopPropagation()):("_top"===p?a=i.application.pane:p&&(a=e("#"+p).data("kendoMobilePane")),a.navigate(f,l)),o.preventDefault())}}});k.wrap=function(e){e.is(o("view"))||(e=e.wrap("<div data-"+n.ns+'role="view" data-stretch="true"></div>').parent());var t=e.wrap('<div class="km-pane-wrapper"><div></div></div>').parent(),i=new k(t);return i.navigate(""),i},r.plugin(k)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.popover.min",["kendo.popup.min","kendo.mobile.pane.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.mobile,o=i.ui,r="hide",a="open",s="close",l='<div class="km-popup-wrapper" />',c='<div class="km-popup-arrow" />',d='<div class="km-popup-overlay" />',u="km-up km-down km-left km-right",h=o.Widget,p={down:{origin:"bottom center",position:"top center"},up:{origin:"top center",position:"bottom center"},left:{origin:"center left",position:"center right",collision:"fit flip"},right:{origin:"center right",position:"center left",collision:"fit flip"}},f={animation:{open:{effects:"fade:in",duration:0},close:{effects:"fade:out",duration:400}}},g={horizontal:{offset:"top",size:"height"},vertical:{offset:"left",size:"width"}},m={up:"down",down:"up",left:"right",right:"left"},v=h.extend({init:function(t,i){var o,a,s=this,u=t.closest(".km-modalview-wrapper"),m=t.closest(".km-root").children(".km-pane").first(),v=u[0]?u:m;i.viewport?m=i.viewport:m[0]||(m=window),i.container?v=i.container:v[0]||(v=document.body),o={viewport:m,copyAnchorStyles:!1,autosize:!0,open:function(){s.overlay.show()},activate:e.proxy(s._activate,s),deactivate:function(){s.overlay.hide(),s._apiCall||s.trigger(r),s._apiCall=!1}},h.fn.init.call(s,t,i),t=s.element,i=s.options,t.wrap(l).addClass("km-popup").show(),a=s.options.direction.match(/left|right/)?"horizontal":"vertical",s.dimensions=g[a],s.wrapper=t.parent().css({width:i.width,height:i.height}).addClass("km-popup-wrapper km-"+i.direction).hide(),s.arrow=e(c).prependTo(s.wrapper).hide(),s.overlay=e(d).appendTo(v).hide(),o.appendTo=s.overlay,i.className&&s.overlay.addClass(i.className),s.popup=new n.ui.Popup(s.wrapper,e.extend(!0,o,f,p[i.direction]))},options:{name:"Popup",width:240,height:"",direction:"down",container:null,viewport:null},events:[r],show:function(t){this.popup.options.anchor=e(t),this.popup.open()},hide:function(){this._apiCall=!0,this.popup.close()},destroy:function(){h.fn.destroy.call(this),this.popup.destroy(),this.overlay.remove()},target:function(){return this.popup.options.anchor},_activate:function(){var t=this,n=t.options.direction,i=t.dimensions,o=i.offset,r=t.popup,a=r.options.anchor,s=e(a).offset(),l=e(r.element).offset(),c=r.flipped?m[n]:n,d=2*t.arrow[i.size](),h=t.element[i.size]()-t.arrow[i.size](),p=e(a)[i.size](),f=s[o]-l[o]+p/2;f<d&&(f=d),f>h&&(f=h),t.wrapper.removeClass(u).addClass("km-"+c),t.arrow.css(o,f).show()}}),_=h.extend({init:function(t,i){var r,a=this;a.initialOpen=!1,h.fn.init.call(a,t,i),r=e.extend({className:"km-popover-root",hide:function(){a.trigger(s)}},this.options.popup),a.popup=new v(a.element,r),a.popup.overlay.on("move",function(e){e.target==a.popup.overlay[0]&&e.preventDefault()}),a.pane=new o.Pane(a.element,e.extend(this.options.pane,{$angular:this.options.$angular})),n.notify(a,o)},options:{name:"PopOver",popup:{},pane:{}},events:[a,s],open:function(e){this.popup.show(e),this.initialOpen?this.pane.view()._invokeNgController():(this.pane.navigateToInitial()||this.pane.navigate(""),this.popup.popup._position(),this.initialOpen=!0)},openFor:function(e){this.open(e),this.trigger(a,{target:this.popup.target()})},close:function(){this.popup.hide()},destroy:function(){h.fn.destroy.call(this),this.pane.destroy(),this.popup.destroy(),n.destroy(this.element)}});o.plugin(v),o.plugin(_)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.shim.min",["kendo.popup.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.mobile.ui,o=n.ui.Popup,r='<div class="km-shim"/>',a="hide",s=i.Widget,l=s.extend({init:function(t,i){var l=this,c=n.mobile.application,d=n.support.mobileOS,u=c?c.os.name:d?d.name:"ios",h="ios"===u||"wp"===u||!!c&&c.os.skin,p="blackberry"===u,f=i.align||(h?"bottom center":p?"center right":"center center"),g=i.position||(h?"bottom center":p?"center right":"center center"),m=i.effect||(h?"slideIn:up":p?"slideIn:left":"fade:in"),v=e(r).handler(l).hide();s.fn.init.call(l,t,i),l.shim=v,t=l.element,i=l.options,i.className&&l.shim.addClass(i.className),i.modal||l.shim.on("down","_hide"),(c?c.element:e(document.body)).append(v),l.popup=new o(l.element,{anchor:v,modal:!0,appendTo:v,origin:f,position:g,animation:{open:{effects:m,duration:i.duration},close:{duration:i.duration}},close:function(e){var t=!1;l._apiCall||(t=l.trigger(a)),t&&e.preventDefault(),l._apiCall=!1},deactivate:function(){v.hide()},open:function(){v.show()}}),n.notify(l)},events:[a],options:{name:"Shim",modal:!1,align:t,position:t,effect:t,duration:200},show:function(){this.popup.open()},hide:function(){this._apiCall=!0,this.popup.close()},destroy:function(){s.fn.destroy.call(this),this.shim.kendoDestroy(),this.popup.destroy(),this.shim.remove()},_hide:function(t){t&&e.contains(this.shim.children().children(".k-popup")[0],t.target)||this.popup.close()}});i.plugin(l)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.modalview.min",["kendo.mobile.shim.min","kendo.mobile.view.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.mobile.ui,o=i.Shim,r=i.Widget,a="beforeOpen",s="open",l="close",c="init",d='<div class="km-modalview-wrapper" />',u=i.View.extend({init:function(e,t){var n=this;r.fn.init.call(n,e,t),n._id(),n._wrap(),n._shim(),this.options.$angular||(n._layout(),n._scroller(),n._model()),n.element.css("display",""),n.trigger(c)},events:[c,a,s,l],options:{name:"ModalView",modal:!0,width:null,height:null},destroy:function(){r.fn.destroy.call(this),this.shim.destroy()},open:function(t){var n=this;n.target=e(t),n.shim.show(),n._invokeNgController(),n.trigger("show",{view:n})},openFor:function(e){this.trigger(a,{target:e})||(this.open(e),this.trigger(s,{target:e}))},close:function(){this.element.is(":visible")&&!this.trigger(l)&&this.shim.hide()},_wrap:function(){var e,t,n=this,i=n.element,o=n.options;e=i[0].style.width||"auto",t=i[0].style.height||"auto",i.addClass("km-modalview").wrap(d),n.wrapper=i.parent().css({width:o.width||e||300,height:o.height||t||300}).addClass("auto"==t?" km-auto-height":""),i.css({width:"",height:""})},_shim:function(){var e=this;e.shim=new o(e.wrapper,{modal:e.options.modal,position:"center center",align:"center center",effect:"fade:in",className:"km-modalview-root",hide:function(t){e.trigger(l)&&t.preventDefault()}})}});i.plugin(u)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.drawer.min",["kendo.mobile.view.min","kendo.userevents.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.mobile,o=n.support.mobileOS,r=n.effects.Transition,a=n.roleSelector,s="x",l=i.ui,c=!(o.ios&&7==o.majorVersion&&!o.appMode),d="beforeShow",u="init",h="show",p="hide",f="afterHide",g={enable:e.noop},m=l.View.extend({init:function(t,o){var r,s,l,d,h;if(e(t).parent().prepend(t),i.ui.Widget.fn.init.call(this,t,o),this.options.$angular||(this._layout(),this._scroller()),this._model(),r=this.element.closest(a("pane")).data("kendoMobilePane"))this.pane=r,this.pane.bind("viewShow",function(e){d._viewShow(e)}),this.pane.bind("sameViewRequested",function(){d.hide()}),s=this.userEvents=new n.UserEvents(r.element,{fastTap:!0,filter:a("view splitview"),allowSelection:!0});else{if(this.currentView=g,l=e(this.options.container),!l)throw Error("The drawer needs a container configuration option set.");s=this.userEvents=new n.UserEvents(l,{fastTap:!0,allowSelection:!0}),this._attachTransition(l)}d=this,h=function(e){d.visible&&(d.hide(),e.preventDefault())},this.options.swipeToOpen&&c?(s.bind("press",function(){d.transition.cancel()}),s.bind("start",function(e){d._start(e)}),s.bind("move",function(e){d._update(e)}),s.bind("end",function(e){d._end(e)}),s.bind("tap",h)):s.bind("press",h),this.leftPositioned="left"===this.options.position,this.visible=!1,this.element.hide().addClass("km-drawer").addClass(this.leftPositioned?"km-left-drawer":"km-right-drawer"),this.trigger(u)},options:{name:"Drawer",position:"left",views:[],swipeToOpenViews:[],swipeToOpen:!0,title:"",container:null},events:[d,p,f,u,h],show:function(){this._activate()&&this._show()},hide:function(){this.currentView&&(this.currentView.enable(),m.current=null,this._moveViewTo(0),this.trigger(p,{view:this}))},openFor:function(){this.visible?this.hide():this.show()},destroy:function(){l.View.fn.destroy.call(this),this.userEvents.destroy()},_activate:function(){if(this.visible)return!0;var e=this._currentViewIncludedIn(this.options.views);return!(!e||this.trigger(d,{view:this}))&&(this._setAsCurrent(),this.element.show(),this.trigger(h,{view:this}),this._invokeNgController(),!0)},_currentViewIncludedIn:function(t){if(!this.pane||!t.length)return!0;var n=this.pane.view();return e.inArray(n.id.replace("#",""),t)>-1||e.inArray(n.element.attr("id"),t)>-1},_show:function(){this.currentView.enable(!1),this.visible=!0;var e=this.element.width();this.leftPositioned||(e=-e),this._moveViewTo(e)},_setAsCurrent:function(){m.last!==this&&(m.last&&m.last.element.hide(),this.element.show()),m.last=this,m.current=this},_moveViewTo:function(e){this.userEvents.cancel(),this.transition.moveTo({location:e,duration:400,ease:r.easeOutExpo})},_viewShow:function(e){return this.currentView&&this.currentView.enable(),this.currentView===e.view?(this.hide(),t):(this.currentView=e.view,this._attachTransition(e.view.element),t)},_attachTransition:function(e){var t=this,i=this.movable,o=i&&i.x;this.transition&&(this.transition.cancel(),this.movable.moveAxis("x",0)),i=this.movable=new n.ui.Movable(e),this.transition=new r({axis:s,movable:this.movable,onEnd:function(){0===i[s]&&(e[0].style.cssText="",t.element.hide(),t.trigger(f),t.visible=!1)}}),o&&(e.addClass("k-fx-hidden"),n.animationFrame(function(){e.removeClass("k-fx-hidden"),t.movable.moveAxis(s,o),t.hide()}))},_start:function(e){var i,o,r,a,s,l=e.sender;return Math.abs(e.x.velocity)<Math.abs(e.y.velocity)||n.triggeredByInput(e.event)||!this._currentViewIncludedIn(this.options.swipeToOpenViews)?(l.cancel(), +t):(i=this.leftPositioned,o=this.visible,r=i&&o||!i&&!m.current,a=!i&&o||i&&!m.current,s=e.x.velocity<0,(r&&s||a&&!s)&&this._activate()?(l.capture(),t):(l.cancel(),t))},_update:function(e){var t,n=this.movable,i=n.x+e.x.delta;t=this.leftPositioned?Math.min(Math.max(0,i),this.element.width()):Math.max(Math.min(0,i),-this.element.width()),this.movable.moveAxis(s,t),e.event.preventDefault(),e.event.stopPropagation()},_end:function(e){var t,n=e.x.velocity,i=Math.abs(this.movable.x)>this.element.width()/2,o=.8;t=this.leftPositioned?n>-o&&(n>o||i):n<o&&(n<-o||i),t?this._show():this.hide()}});l.plugin(m)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.splitview.min",["kendo.mobile.pane.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.mobile.ui,o=i.Widget,r="<div class='km-expanded-pane-shim' />",a=i.View,s=a.extend({init:function(t,a){var s,l,c=this;o.fn.init.call(c,t,a),t=c.element,e.extend(c,a),c._id(),c.options.$angular?c._overlay():(c._layout(),c._overlay()),c._style(),l=t.children(c._locate("modalview")),c.options.$angular?l.each(function(t,i){n.compileMobileDirective(e(i),a.$angular[0])}):n.mobile.init(l),c.panes=[],c._paramsHistory=[],c.options.$angular?(c.element.children(n.directiveSelector("pane")).each(function(){s=n.compileMobileDirective(e(this),a.$angular[0]),c.panes.push(s)}),c.element.children(n.directiveSelector("header footer")).each(function(){n.compileMobileDirective(e(this),a.$angular[0])})):c.content.children(n.roleSelector("pane")).each(function(){s=n.initWidget(this,{},i.roles),c.panes.push(s)}),c.expandedPaneShim=e(r).appendTo(c.element),c._shimUserEvents=new n.UserEvents(c.expandedPaneShim,{fastTap:!0,tap:function(){c.collapsePanes()}})},_locate:function(e){return this.options.$angular?n.directiveSelector(e):n.roleSelector(e)},options:{name:"SplitView",style:"horizontal"},expandPanes:function(){this.element.addClass("km-expanded-splitview")},collapsePanes:function(){this.element.removeClass("km-expanded-splitview")},_layout:function(){var e=this,t=e.element;e.transition=n.attrValue(t,"transition"),n.mobile.ui.View.prototype._layout.call(this),n.mobile.init(this.header.add(this.footer)),e.element.addClass("km-splitview"),e.content.addClass("km-split-content")},_style:function(){var t,n=this.options.style,i=this.element;n&&(t=n.split(" "),e.each(t,function(){i.addClass("km-split-"+this)}))},showStart:function(){var t=this;t.element.css("display",""),t.inited?this._invokeNgController():(t.inited=!0,e.each(t.panes,function(){this.options.initial?this.navigateToInitial():this.navigate("")}),t.trigger("init",{view:t})),t.trigger("show",{view:t})}});i.plugin(s)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.application.min",["kendo.mobile.pane.min","kendo.router.min"],e)}(function(){return function(e,t){function n(e,t){var n=[];return f&&n.push("km-on-"+f.name),n.push(e.skin?"km-"+e.skin:"ios"==e.name&&e.majorVersion>6?"km-ios7":"km-"+e.name),("ios"==e.name&&e.majorVersion<7||"ios"!=e.name)&&n.push("km-"+e.name+e.majorVersion),n.push("km-"+e.majorVersion),n.push("km-m"+(e.minorVersion?e.minorVersion[0]:0)),e.variant&&(e.skin&&e.skin===e.name||!e.skin||e.setDefaultPlatform===!1)&&n.push("km-"+(e.skin?e.skin:e.name)+"-"+e.variant),e.cordova&&n.push("km-cordova"),n.push(e.appMode?"km-app":"km-web"),t&&t.statusBarStyle&&n.push("km-"+t.statusBarStyle+"-status-bar"),n.join(" ")}function i(t){return"km-wp-"+(t.noVariantSet?0===parseInt(e("<div style='background: Background' />").css("background-color").split(",")[1],10)?"dark":"light":t.variant+" km-wp-"+t.variant+"-force")}function o(e){return f.wp?"-kendo-landscape"==e.css("animation-name"):Math.abs(window.orientation)/90==1}function r(e){return o(e)?k:v}function a(e){e.parent().addBack().css("min-height",window.innerHeight)}function s(){e("meta[name=viewport]").remove(),z.append(x({height:", width=device-width"+(o()?", height="+window.innerHeight+"px":d.mobileOS.flatVersion>=600&&d.mobileOS.flatVersion<700?", height="+window.innerWidth+"px":", height=device-height")}))}var l=window.kendo,c=l.mobile,d=l.support,u=c.ui.Widget,h=c.ui.Pane,p="ios7",f=d.mobileOS,g="blackberry"==f.device&&f.flatVersion>=600&&f.flatVersion<1e3&&f.appMode,m=.93,v="km-vertical",_="chrome"===f.browser,b=f.ios&&f.flatVersion>=700&&f.flatVersion<800&&(f.appMode||_),w=Math.abs(window.orientation)/90==1,k="km-horizontal",y={ios7:{ios:!0,browser:"default",device:"iphone",flatVersion:"700",majorVersion:"7",minorVersion:"0.0",name:"ios",tablet:!1},ios:{ios:!0,browser:"default",device:"iphone",flatVersion:"612",majorVersion:"6",minorVersion:"1.2",name:"ios",tablet:!1},android:{android:!0,browser:"default",device:"android",flatVersion:"442",majorVersion:"4",minorVersion:"4.2",name:"android",tablet:!1},blackberry:{blackberry:!0,browser:"default",device:"blackberry",flatVersion:"710",majorVersion:"7",minorVersion:"1.0",name:"blackberry",tablet:!1},meego:{meego:!0,browser:"default",device:"meego",flatVersion:"850",majorVersion:"8",minorVersion:"5.0",name:"meego",tablet:!1},wp:{wp:!0,browser:"default",device:"wp",flatVersion:"800",majorVersion:"8",minorVersion:"0.0",name:"wp",tablet:!1}},x=l.template('<meta content="initial-scale=#: data.scale #, maximum-scale=#: data.scale #, user-scalable=no#=data.height#" name="viewport" />',{usedWithBlock:!1}),C=l.template('<meta name="apple-mobile-web-app-capable" content="#= data.webAppCapable === false ? \'no\' : \'yes\' #" /> <meta name="apple-mobile-web-app-status-bar-style" content="#=data.statusBarStyle#" /> <meta name="msapplication-tap-highlight" content="no" /> ',{usedWithBlock:!1}),S=l.template("<style>.km-view { clip: rect(0 #= data.width #px #= data.height #px 0); }</style>",{usedWithBlock:!1}),T=f.android&&"chrome"!=f.browser||f.blackberry,D=l.template('<link rel="apple-touch-icon'+(f.android?"-precomposed":"")+'" # if(data.size) { # sizes="#=data.size#" #}# href="#=data.icon#" />',{usedWithBlock:!1}),A=("iphone"==f.device||"ipod"==f.device)&&f.majorVersion<7,E=("iphone"==f.device||"ipod"==f.device)&&f.majorVersion>=7,I=E?"none":null,M="mobilesafari"==f.browser?60:0,F=20,R=e(window),P=window.screen,z=e("head"),B="init",L=e.proxy,H=u.extend({init:function(t,n){c.application=this,e(e.proxy(this,"bootstrap",t,n))},bootstrap:function(t,n){var i,o,r;t=e(t),t[0]||(t=e(document.body)),u.fn.init.call(this,t,n),this.element.removeAttr("data-"+l.ns+"role"),this._setupPlatform(),this._attachMeta(),this._setupElementClass(),this._attachHideBarHandlers(),i=e.extend({},this.options),delete i.name,o=this,r=function(){o.pane=new h(o.element,i),o.pane.navigateToInitial(),o.options.updateDocumentTitle&&o._setupDocumentTitle(),o._startHistory(),o.trigger(B)},this.options.$angular?setTimeout(r):r()},options:{name:"Application",hideAddressBar:!0,browserHistory:!0,historyTransition:I,modelScope:window,statusBarStyle:"black",transition:"",retina:!1,platform:null,skin:null,updateDocumentTitle:!0,useNativeScrolling:!1},events:[B],navigate:function(e,t){this.pane.navigate(e,t)},replace:function(e,t){this.pane.replace(e,t)},scroller:function(){return this.view().scroller},hideLoading:function(){if(!this.pane)throw Error("The mobile application instance is not fully instantiated. Please consider activating loading in the application init event handler.");this.pane.hideLoading()},showLoading:function(){if(!this.pane)throw Error("The mobile application instance is not fully instantiated. Please consider activating loading in the application init event handler.");this.pane.showLoading()},changeLoadingMessage:function(e){if(!this.pane)throw Error("The mobile application instance is not fully instantiated. Please consider changing the message in the application init event handler.");this.pane.changeLoadingMessage(e)},view:function(){return this.pane.view()},skin:function(e){var t=this;return arguments.length?(t.options.skin=e||"",t.element[0].className="km-pane",t._setupPlatform(),t._setupElementClass(),t.options.skin):t.options.skin},destroy:function(){u.fn.destroy.call(this),this.pane.destroy(),this.options.browserHistory&&this.router.destroy()},_setupPlatform:function(){var t=this,o=t.options.platform,r=t.options.skin,a=[],s=f||y[p];o&&(s.setDefaultPlatform=!0,"string"==typeof o?(a=o.split("-"),s=e.extend({variant:a[1]},s,y[a[0]])):s=o),r&&(a=r.split("-"),f||(s.setDefaultPlatform=!1),s=e.extend({},s,{skin:a[0],variant:a[1]})),s.variant||(s.noVariantSet=!0,s.variant="dark"),t.os=s,t.osCssClass=n(t.os,t.options),"wp"==s.name&&(t.refreshBackgroundColorProxy||(t.refreshBackgroundColorProxy=e.proxy(function(){(t.os.variant&&t.os.skin&&t.os.skin===t.os.name||!t.os.skin)&&t.element.removeClass("km-wp-dark km-wp-light km-wp-dark-force km-wp-light-force").addClass(i(t.os))},t)),e(document).off("visibilitychange",t.refreshBackgroundColorProxy),e(document).off("resume",t.refreshBackgroundColorProxy),s.skin||(t.element.parent().css("overflow","hidden"),e(document).on("visibilitychange",t.refreshBackgroundColorProxy),e(document).on("resume",t.refreshBackgroundColorProxy),t.refreshBackgroundColorProxy()))},_startHistory:function(){this.options.browserHistory?(this.router=new l.Router({pushState:this.options.pushState,root:this.options.root,hashBang:this.options.hashBang}),this.pane.bindToRouter(this.router),this.router.start()):this.options.initial||this.pane.navigate("")},_resizeToScreenHeight:function(){var t,n=e("meta[name=apple-mobile-web-app-status-bar-style]").attr("content").match(/black-translucent|hidden/),i=this.element;t=_?window.innerHeight:o(i)?n?w?P.availWidth+F:P.availWidth:w?P.availWidth:P.availWidth-F:n?w?P.availHeight:P.availHeight+F:w?P.availHeight-F:P.availHeight,i.height(t)},_setupElementClass:function(){var t,n=this,i=n.element;i.parent().addClass("km-root km-"+(n.os.tablet?"tablet":"phone")),i.addClass(n.osCssClass+" "+r(i)),this.options.useNativeScrolling&&i.parent().addClass("km-native-scrolling"),_&&i.addClass("km-ios-chrome"),d.wpDevicePixelRatio&&i.parent().css("font-size",d.wpDevicePixelRatio+"em"),this.options.retina&&(i.parent().addClass("km-retina"),i.parent().css("font-size",d.devicePixelRatio*m+"em")),g&&s(),n.options.useNativeScrolling?i.parent().addClass("km-native-scrolling"):T&&(t=(screen.availWidth>screen.availHeight?screen.availWidth:screen.availHeight)+200,e(S({width:t,height:t})).appendTo(z)),b&&n._resizeToScreenHeight(),l.onResize(function(){i.removeClass("km-horizontal km-vertical").addClass(r(i)),n.options.useNativeScrolling&&a(i),b&&n._resizeToScreenHeight(),g&&s(),l.resize(i)})},_clearExistingMeta:function(){z.find("meta").filter("[name|='apple-mobile-web-app'],[name|='msapplication-tap'],[name='viewport']").remove()},_attachMeta:function(){var e,t=this.options,n=t.icon;if(this._clearExistingMeta(),g||z.prepend(x({height:"",scale:this.options.retina?1/d.devicePixelRatio:"1.0"})),z.prepend(C(t)),n){"string"==typeof n&&(n={"":n});for(e in n)z.prepend(D({icon:n[e],size:e}))}t.useNativeScrolling&&a(this.element)},_attachHideBarHandlers:function(){var e=this,t=L(e,"_hideBar");!d.mobileOS.appMode&&e.options.hideAddressBar&&A&&!e.options.useNativeScrolling&&(e._initialHeight={},R.on("load",t),l.onResize(function(){setTimeout(window.scrollTo,0,0,1)}))},_setupDocumentTitle:function(){var e=this,n=document.title;e.pane.bind("viewShow",function(e){var i=e.view.title;document.title=i!==t?i:n})},_hideBar:function(){var t=this,n=t.element;n.height(l.support.transforms.css+"calc(100% + "+M+"px)"),e(window).trigger(l.support.resize)}});l.mobile.Application=H,l.ui.plugin(H,l.mobile,"Mobile")}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.actionsheet.min",["kendo.mobile.popover.min","kendo.mobile.shim.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.support,o=n.mobile.ui,r=o.Shim,a=o.Popup,s=o.Widget,l="open",c="close",d="command",u="li>a",h="actionsheetContext",p='<div class="km-actionsheet-wrapper" />',f=n.template('<li class="km-actionsheet-cancel"><a href="\\#">#:cancel#</a></li>'),g=s.extend({init:function(t,l){var c,d,h,g=this,m=i.mobileOS;s.fn.init.call(g,t,l),l=g.options,h=l.type,t=g.element,d="auto"===h?m&&m.tablet:"tablet"===h,c=d?a:r,l.cancelTemplate&&(f=n.template(l.cancelTemplate)),t.addClass("km-actionsheet").append(f({cancel:g.options.cancel})).wrap(p).on("up",u,"_click").on("click",u,n.preventDefault),g.view().bind("destroy",function(){g.destroy()}),g.wrapper=t.parent().addClass(h?" km-actionsheet-"+h:""),g.shim=new c(g.wrapper,e.extend({modal:m.ios&&m.majorVersion<7,className:"km-actionsheet-root"},g.options.popup)),g._closeProxy=e.proxy(g,"_close"),g._shimHideProxy=e.proxy(g,"_shimHide"),g.shim.bind("hide",g._shimHideProxy),d&&n.onResize(g._closeProxy),n.notify(g,o)},events:[l,c,d],options:{name:"ActionSheet",cancel:"Cancel",type:"auto",popup:{height:"auto"}},open:function(t,n){var i=this;i.target=e(t),i.context=n,i.shim.show(t)},close:function(){this.context=this.target=null,this.shim.hide()},openFor:function(e){var t=this,n=e.data(h);t.open(e,n),t.trigger(l,{target:e,context:n})},destroy:function(){s.fn.destroy.call(this),n.unbindResize(this._closeProxy),this.shim.destroy()},_click:function(t){var i,o,r,a;t.isDefaultPrevented()||(i=e(t.currentTarget),o=i.data("action"),o&&(r={target:this.target,context:this.context},a=this.options.$angular,a?this.element.injector().get("$parse")(o)(a[0])(r):n.getter(o)(window)(r)),this.trigger(d,{target:this.target,context:this.context,currentTarget:i}),t.preventDefault(),this._close())},_shimHide:function(e){this.trigger(c)?e.preventDefault():this.context=this.target=null},_close:function(e){this.trigger(c)?e.preventDefault():this.close()}});o.plugin(g)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.button.min",["kendo.userevents.min"],e)}(function(){return function(e,t){function n(t,n,i){e(n.target).closest(".km-button,.km-detail").toggleClass("km-state-active",i),d&&t.deactivateTimeoutID&&(clearTimeout(t.deactivateTimeoutID),t.deactivateTimeoutID=0)}function i(t){return e('<span class="km-badge">'+t+"</span>")}var o=window.kendo,r=o.mobile,a=r.ui,s=a.Widget,l=o.support,c=l.mobileOS,d=c.android&&c.flatVersion>=300,u="click",h="disabled",p="km-state-disabled",f=s.extend({init:function(e,t){var i,r=this;s.fn.init.call(r,e,t),i="up"===r.options.clickOn,r._wrap(),r._style(),i||r.element.attr("data-navigate-on-press",!0),r.options.enable=r.options.enable&&!r.element.attr(h),r.enable(r.options.enable),r._userEvents=new o.UserEvents(r.element,{allowSelection:!i,fastTap:!0,press:function(e){r._activate(e)},release:function(e){n(r,e,!1),i||e.event.stopPropagation()}}),r._userEvents.bind(i?"tap":"press",function(e){r._release(e)}),d&&r.element.on("move",function(e){r._timeoutDeactivate(e)})},destroy:function(){s.fn.destroy.call(this),this._userEvents.destroy()},events:[u],options:{name:"Button",icon:"",style:"",badge:"",clickOn:"up",enable:!0},badge:function(e){var t=this.badgeElement=this.badgeElement||i(e).appendTo(this.element);return e||0===e?(t.html(e),this):e===!1?(t.empty().remove(),this.badgeElement=!1,this):t.html()},enable:function(e){var n=this.element;t===e&&(e=!0),this.options.enable=e,e?n.removeAttr(h):n.attr(h,h),n.toggleClass(p,!e)},_timeoutDeactivate:function(e){this.deactivateTimeoutID||(this.deactivateTimeoutID=setTimeout(n,500,this,e,!1))},_activate:function(e){var t=document.activeElement,i=t?t.nodeName:"";this.options.enable&&(n(this,e,!0),"INPUT"!=i&&"TEXTAREA"!=i||t.blur())},_release:function(n){var i=this;if(!(n.which>1))return i.options.enable?(i.trigger(u,{target:e(n.target),button:i.element})&&n.preventDefault(),t):(n.preventDefault(),t)},_style:function(){var t,n=this.options.style,i=this.element;n&&(t=n.split(" "),e.each(t,function(){i.addClass("km-"+this)}))},_wrap:function(){var t=this,n=t.options.icon,o=t.options.badge,r='<span class="km-icon km-'+n,a=t.element.addClass("km-button"),s=a.children("span:not(.km-icon)").addClass("km-text"),l=a.find("img").addClass("km-image");!s[0]&&a.html()&&(s=a.wrapInner('<span class="km-text" />').children("span.km-text")),!l[0]&&n&&(s[0]||(r+=" km-notext"),t.iconElement=a.prepend(e(r+'" />'))),(o||0===o)&&(t.badgeElement=i(o).appendTo(a))}}),g=f.extend({options:{name:"BackButton",style:"back"},init:function(e,n){var i=this;f.fn.init.call(i,e,n),t===i.element.attr("href")&&i.element.attr("href","#:back")}}),m=f.extend({options:{name:"DetailButton",style:""},init:function(e,t){f.fn.init.call(this,e,t)},_style:function(){var t,n=this.options.style+" detail",i=this.element;n&&(t=n.split(" "),e.each(t,function(){i.addClass("km-"+this)}))},_wrap:function(){var t=this,n=t.options.icon,i='<span class="km-icon km-'+n,o=t.element,r=o.children("span"),a=o.find("img").addClass("km-image");!a[0]&&n&&(r[0]||(i+=" km-notext"),o.prepend(e(i+'" />')))}});a.plugin(f),a.plugin(g),a.plugin(m)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.buttongroup.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(e){return"k-"+e+" km-"+e}function i(t){return e('<span class="'+n("badge")+'">'+t+"</span>")}var o=window.kendo,r=o.mobile.ui,a=r.Widget,s="state-active",l="state-disabled",c="select",d="li:not(.km-"+s+")",u=a.extend({init:function(e,t){var i=this;a.fn.init.call(i,e,t),i.element.addClass("km-buttongroup k-widget k-button-group").find("li").each(i._button),i.element.on(i.options.selectOn,d,"_select"),i._enable=!0,i.select(i.options.index),i.options.enable||(i._enable=!1,i.wrapper.addClass(n(l)))},events:[c],options:{name:"ButtonGroup",selectOn:"down",index:-1,enable:!0},current:function(){return this.element.find(".km-"+s)},select:function(i){var o=this,r=-1;i!==t&&i!==-1&&o._enable&&!e(i).is(".km-"+l)&&(o.current().removeClass(n(s)),"number"==typeof i?(r=i,i=e(o.element[0].children[i])):i.nodeType&&(i=e(i),r=i.index()),i.addClass(n(s)),o.selectedIndex=r)},badge:function(t,n){var o,r=this.element;return isNaN(t)||(t=r.children().get(t)),t=r.find(t),o=e(t.children(".km-badge")[0]||i(n).appendTo(t)),n||0===n?(o.html(n),this):n===!1?(o.empty().remove(),this):o.html()},enable:function(e){t===e&&(e=!0),this.wrapper.toggleClass(n(l),!e),this._enable=this.options.enable=e},_button:function(){var t=e(this).addClass(n("button")),r=o.attrValue(t,"icon"),a=o.attrValue(t,"badge"),s=t.children("span"),l=t.find("img").addClass(n("image"));s[0]||(s=t.wrapInner("<span/>").children("span")),s.addClass(n("text")),!l[0]&&r&&t.prepend(e('<span class="'+n("icon")+" "+n(r)+'"/>')),(a||0===a)&&i(a).appendTo(t)},_select:function(e){e.which>1||e.isDefaultPrevented()||!this._enable||(this.select(e.currentTarget),this.trigger(c,{index:this.selectedIndex}))}});r.plugin(u)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.collapsible.min",["kendo.core.min"],e)}(function(){return function(e,t){var n=window.kendo,i=n.mobile.ui,o=i.Widget,r="km-collapsible",a="km-collapsible-header",s="km-collapsible-content",l="km-collapsibleinset",c="<div data-role='collapsible-header' class='"+a+"'></div>",d="<div data-role='collapsible-content' class='"+s+"'></div>",u="km-collapsed",h="km-expanded",p="km-animated",f="left",g="expand",m="collapse",v=o.extend({init:function(t,i){var a=this,s=e(t);o.fn.init.call(a,s,i),s.addClass(r),a._buildHeader(),a.content=s.children().not(a.header).wrapAll(d).parent(),a._userEvents=new n.UserEvents(a.header,{fastTap:!0,tap:function(){a.toggle()}}),s.addClass(a.options.collapsed?u:h),a.options.inset&&s.addClass(l),a.options.animation?(a.content.addClass(p),a.content.height(0),a.options.collapsed&&a.content.hide()):a.options.collapsed&&a.content.hide()},events:[g,m],options:{name:"Collapsible",collapsed:!0,collapseIcon:"arrow-n",expandIcon:"arrow-s",iconPosition:f,animation:!0,inset:!1},destroy:function(){o.fn.destroy.call(this),this._userEvents.destroy()},expand:function(e){var t=this.options.collapseIcon,i=this.content,o=n.support.mobileOS.ios;this.trigger(g)||(t&&this.header.find(".km-icon").removeClass().addClass("km-icon km-"+t),this.element.removeClass(u).addClass(h),this.options.animation&&!e?(i.off("transitionend"),i.show(),o&&i.removeClass(p),i.height(this._getContentHeight()),o&&i.addClass(p),n.resize(i)):i.show())},collapse:function(e){var t=this.options.expandIcon,n=this.content;this.trigger(m)||(t&&this.header.find(".km-icon").removeClass().addClass("km-icon km-"+t),this.element.removeClass(h).addClass(u),this.options.animation&&!e?(n.one("transitionend",function(){n.hide()}),n.height(0)):n.hide())},toggle:function(e){this.isCollapsed()?this.expand(e):this.collapse(e)},isCollapsed:function(){return this.element.hasClass(u)},resize:function(){!this.isCollapsed()&&this.options.animation&&this.content.height(this._getContentHeight())},_buildHeader:function(){var t=this.element.children(":header").wrapAll(c),n=e('<span class="km-icon"/>'),i=this.options.collapsed?this.options.expandIcon:this.options.collapseIcon,o=this.options.iconPosition;i&&(t.prepend(n),n.addClass("km-"+i)),this.header=t.parent(),this.header.addClass("km-icon-"+o)},_getContentHeight:function(){var e,t=this.content.attr("style");return this.content.css({position:"absolute",visibility:"hidden",height:"auto"}),e=this.content.height(),this.content.attr("style",t?t:""),e}});i.plugin(v)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.listview.min",["kendo.data.min","kendo.userevents.min","kendo.mobile.button.min"],e)}(function(){return function(e,t){function n(){return this.nodeType===v.TEXT_NODE&&this.nodeValue.match(U)}function i(e,t){t&&!e[0].querySelector(".km-icon")&&e.prepend('<span class="km-icon km-'+t+'"/>')}function o(e){i(e,D(e,"icon")),i(e,D(e.children(S),"icon"))}function r(e){var t=e.parent(),o=e.add(t.children(m.roleSelector("detailbutton"))),r=t.contents().not(o).not(n);r.length||(e.addClass("km-listview-link").attr(m.attr("role"),"listview-link"),i(e,D(t,"icon")),i(e,D(e,"icon")))}function a(e){if(e[0].querySelector("input[type=checkbox],input[type=radio]")){var t=e.parent();t.contents().not(e).not(function(){return 3==this.nodeType})[0]||(e.addClass("km-listview-label"),e.children("[type=checkbox],[type=radio]").addClass("km-widget km-icon km-check"))}}function s(t,n){e(t).css("transform","translate3d(0px, "+n+"px, 0px)")}var l,c,d,u,h,p,f,g,m=window.kendo,v=window.Node,_=m.mobile,b=_.ui,w=m._outerHeight,k=m.data.DataSource,y=b.DataBoundWidget,x=".km-list > li, > li:not(.km-group-container)",C=".km-listview-link, .km-listview-label",S="["+m.attr("icon")+"]",T=e.proxy,D=m.attrValue,A="km-group-title",E="km-state-active",I='<div class="'+A+'"><div class="km-text"></div></div>',M=m.template('<li><div class="'+A+'"><div class="km-text">#= this.headerTemplate(data) #</div></div><ul>#= kendo.render(this.template, data.items)#</ul></li>'),F='<div class="km-listview-wrapper" />',R=m.template('<form class="km-filter-form"><div class="km-filter-wrap"><input type="search" placeholder="#=placeholder#"/><a href="\\#" class="km-filter-reset" title="Clear"><span class="km-icon km-clear"></span><span class="km-text">Clear</span></a></div></form>'),P=".kendoMobileListView",z="styled",B="dataBound",L="dataBinding",H="itemChange",N="click",O="change",V="progress",W="function",U=/^\s+$/,q=/button/,j=m.Class.extend({init:function(e){var t,n,i=e.scroller();i&&(this.options=e.options,this.element=e.element,this.scroller=e.scroller(),this._shouldFixHeaders(),t=this,n=function(){t._cacheHeaders()},e.bind("resize",n),e.bind(z,n),e.bind(B,n),this._scrollHandler=function(e){t._fixHeader(e)},i.bind("scroll",this._scrollHandler))},destroy:function(){var e=this;e.scroller&&e.scroller.unbind("scroll",e._scrollHandler)},_fixHeader:function(t){if(this.fixedHeaders){var n,i,o,r=0,a=this.scroller,s=this.headers,l=t.scrollTop;do{if(n=s[r++],!n){o=e("<div />");break}i=n.offset,o=n.header}while(i+1>l);this.currentHeader!=r&&(a.fixedContainer.html(o.clone()),this.currentHeader=r)}},_shouldFixHeaders:function(){this.fixedHeaders="group"===this.options.type&&this.options.fixedHeaders},_cacheHeaders:function(){if(this._shouldFixHeaders(),this.fixedHeaders){var t=[],n=this.scroller.scrollTop;this.element.find("."+A).each(function(i,o){o=e(o),t.unshift({offset:o.position().top+n,header:o})}),this.headers=t,this._fixHeader({scrollTop:n})}}}),G=function(){return{page:1}},$=m.Class.extend({init:function(e){var t=this,n=e.options,i=e.scroller(),o=n.pullParameters||G;this.listView=e,this.scroller=i,e.bind("_dataSource",function(e){t.setDataSource(e.dataSource)}),i.setOptions({pullToRefresh:!0,pull:function(){t._pulled||(t._pulled=!0,t.dataSource.read(o.call(e,t._first)))},messages:{pullTemplate:n.messages.pullTemplate,releaseTemplate:n.messages.releaseTemplate,refreshTemplate:n.messages.refreshTemplate}})},setDataSource:function(e){var t=this;this._first=e.view()[0],this.dataSource=e,e.bind("change",function(){t._change()}),e.bind("error",function(){t._change()})},_change:function(){var e,t=this.scroller,n=this.dataSource;this._pulled&&t.pullHandled(),!this._pulled&&this._first||(e=n.view(),e[0]&&(this._first=e[0])),this._pulled=!1}}),Y=m.Observable.extend({init:function(e){var t=this;m.Observable.fn.init.call(t),t.buffer=e.buffer,t.height=e.height,t.item=e.item,t.items=[],t.footer=e.footer,t.buffer.bind("reset",function(){t.refresh()})},refresh:function(){for(var e,t,n,i,o=this.buffer,r=this.items,a=!1;r.length;)r.pop().destroy();for(this.offset=o.offset,e=this.item,i=0;i<o.viewSize;i++){if(i===o.total()){a=!0;break}n=e(this.content(this.offset+r.length)),n.below(t),t=n,r.push(n)}this.itemCount=r.length,this.trigger("reset"),this._resize(),a&&this.trigger("endReached")},totalHeight:function(){if(!this.items[0])return 0;var e=this,t=e.items,n=t[0].top,i=t[t.length-1].bottom,o=(i-n)/e.itemCount,r=e.buffer.length-e.offset-e.itemCount;return(this.footer?this.footer.height:0)+i+r*o},batchUpdate:function(e){var t,n,i=this.height(),o=this.items,r=this.offset;if(o[0]){if(this.lastDirection)for(;o[o.length-1].bottom>e+2*i&&0!==this.offset;)this.offset--,t=o.pop(),t.update(this.content(this.offset)),t.above(o[0]),o.unshift(t);else for(;o[0].top<e-i;){if(n=this.offset+this.itemCount,n===this.buffer.total()){this.trigger("endReached");break}if(n===this.buffer.length)break;t=o.shift(),t.update(this.content(this.offset+this.itemCount)),t.below(o[o.length-1]),o.push(t),this.offset++}r!==this.offset&&this._resize()}},update:function(e){var t,n,i,o,r=this,a=this.items,s=this.height(),l=this.itemCount,c=s/2,d=(this.lastTop||0)>e,u=e-c,h=e+s+c;a[0]&&(this.lastTop=e,this.lastDirection=d,d?a[0].top>u&&a[a.length-1].bottom>h+c&&this.offset>0&&(this.offset--,t=a.pop(),n=a[0],t.update(this.content(this.offset)),a.unshift(t),t.above(n),r._resize()):a[a.length-1].bottom<h&&a[0].top<u-c&&(o=this.offset+l,o===this.buffer.total()?this.trigger("endReached"):o!==this.buffer.length&&(t=a.shift(),i=a[a.length-1],a.push(t),t.update(this.content(this.offset+this.itemCount)),r.offset++,t.below(i),r._resize())))},content:function(e){return this.buffer.at(e)},destroy:function(){this.unbind()},_resize:function(){var e=this.items,t=0,n=0,i=e[0],o=e[e.length-1];i&&(t=i.top,n=o.bottom),this.trigger("resize",{top:t,bottom:n}),this.footer&&this.footer.below(o)}});m.mobile.ui.VirtualList=Y,l=m.Class.extend({init:function(t,n){var i=t.append([n],!0)[0],o=i.offsetHeight;e.extend(this,{top:0,element:i,listView:t,height:o,bottom:o})},update:function(e){this.element=this.listView.setDataItem(this.element,e)},above:function(e){e&&(this.height=this.element.offsetHeight,this.top=e.top-this.height,this.bottom=e.top,s(this.element,this.top))},below:function(e){e&&(this.height=this.element.offsetHeight,this.top=e.bottom,this.bottom=this.top+this.height,s(this.element,this.top))},destroy:function(){m.destroy(this.element),e(this.element).remove()}}),c='<div><span class="km-icon"></span><span class="km-loading-left"></span><span class="km-loading-right"></span></div>',d=m.Class.extend({init:function(t){this.element=e('<li class="km-load-more km-scroller-refresh" style="display: none"></li>').appendTo(t.element),this._loadIcon=e(c).appendTo(this.element)},enable:function(){this.element.show(),this.height=w(this.element,!0)},disable:function(){this.element.hide(),this.height=0},below:function(e){e&&(this.top=e.bottom,this.bottom=this.height+this.top,s(this.element,this.top))}}),u=d.extend({init:function(t,n){this._loadIcon=e(c).hide(),this._loadButton=e('<a class="km-load">'+t.options.messages.loadMoreText+"</a>").hide(),this.element=e('<li class="km-load-more" style="display: none"></li>').append(this._loadIcon).append(this._loadButton).appendTo(t.element);var i=this;this._loadButton.kendoMobileButton().data("kendoMobileButton").bind("click",function(){i._hideShowButton(),n.next()}),n.bind("resize",function(){i._showLoadButton()}),this.height=w(this.element,!0),this.disable()},_hideShowButton:function(){this._loadButton.hide(),this.element.addClass("km-scroller-refresh"),this._loadIcon.css("display","block")},_showLoadButton:function(){this._loadButton.show(),this.element.removeClass("km-scroller-refresh"),this._loadIcon.hide()}}),h=m.Class.extend({init:function(e){var t=this;this.chromeHeight=w(e.wrapper.children().not(e.element)),this.listView=e,this.scroller=e.scroller(),this.options=e.options,e.bind("_dataSource",function(e){t.setDataSource(e.dataSource,e.empty)}),e.bind("resize",function(){t.list.items.length&&(t.scroller.reset(),t.buffer.range(0),t.list.refresh())}),this.scroller.makeVirtual(),this._scroll=function(e){t.list.update(e.scrollTop)},this.scroller.bind("scroll",this._scroll),this._scrollEnd=function(e){t.list.batchUpdate(e.scrollTop)},this.scroller.bind("scrollEnd",this._scrollEnd)},destroy:function(){this.list.unbind(),this.buffer.unbind(),this.scroller.unbind("scroll",this._scroll),this.scroller.unbind("scrollEnd",this._scrollEnd)},setDataSource:function(t,n){var i,o,r,a,s=this,c=this.options,h=this.listView,p=h.scroller(),f=c.loadMore;if(this.dataSource=t,i=t.pageSize()||c.virtualViewSize,!i&&!n)throw Error("the DataSource does not have page size configured. Page Size setting is mandatory for the mobile listview virtual scrolling to work as expected.");this.buffer&&this.buffer.destroy(),o=new m.data.Buffer(t,Math.floor(i/2),f),r=f?new u(h,o):new d(h),this.list&&this.list.destroy(),a=new Y({buffer:o,footer:r,item:function(e){return new l(h,e)},height:function(){return p.height()}}),a.bind("resize",function(){s.updateScrollerSize(),h.updateSize()}),a.bind("reset",function(){s.footer.enable()}),a.bind("endReached",function(){r.disable(),s.updateScrollerSize()}),o.bind("expand",function(){a.lastDirection=!1,a.batchUpdate(p.scrollTop)}),e.extend(this,{buffer:o,scroller:p,list:a,footer:r})},updateScrollerSize:function(){this.scroller.virtualSize(0,this.list.totalHeight()+this.chromeHeight)},refresh:function(){this.list.refresh()},reset:function(){this.buffer.range(0),this.list.refresh()}}),p=m.Class.extend({init:function(e){var t,n=this;this.listView=e,this.options=e.options,t=this,this._refreshHandler=function(e){t.refresh(e)},this._progressHandler=function(){e.showLoading()},e.bind("_dataSource",function(e){n.setDataSource(e.dataSource)})},destroy:function(){this._unbindDataSource()},reset:function(){},refresh:function(e){var n,i,o,r,a,s,l,c=e&&e.action,d=e&&e.items,u=this.listView,h=this.dataSource,p=this.options.appendOnRefresh,f=h.view(),g=h.group(),m=g&&g[0];return"itemchange"===c?(u._hasBindingTarget()||(n=u.findByDataItem(d)[0],n&&u.setDataItem(n,d[0])),t):(a="add"===c&&!m||p&&!u._filter,s="remove"===c&&!m,a?i=[]:s&&(i=u.findByDataItem(d)),u.trigger(L,{action:c||"rebind", +items:d,removedItems:i,index:e&&e.index})?(this._shouldShowLoading()&&u.hideLoading(),t):("add"!==c||m?"remove"!==c||m?m?u.replaceGrouped(f):p&&!u._filter?(o=u.prepend(f),r=f):u.replace(f):(o=[],u.remove(d)):(l=f.indexOf(d[0]),l>-1&&(o=u.insertAt(d,l),r=d)),this._shouldShowLoading()&&u.hideLoading(),u.trigger(B,{ns:b,addedItems:o,addedDataItems:r}),t))},setDataSource:function(e){this.dataSource&&this._unbindDataSource(),this.dataSource=e,e.bind(O,this._refreshHandler),this._shouldShowLoading()&&this.dataSource.bind(V,this._progressHandler)},_unbindDataSource:function(){this.dataSource.unbind(O,this._refreshHandler).unbind(V,this._progressHandler)},_shouldShowLoading:function(){var e=this.options;return!e.pullToRefresh&&!e.loadMore&&!e.endlessScroll}}),f=m.Class.extend({init:function(t){var n=this,i=t.options.filterable,o="change paste",r=this;this.listView=t,this.options=i,t.element.before(R({placeholder:i.placeholder||"Search..."})),i.autoFilter!==!1&&(o+=" keyup"),this.element=t.wrapper.find(".km-search-form"),this.searchInput=t.wrapper.find("input[type=search]").closest("form").on("submit"+P,function(e){e.preventDefault()}).end().on("focus"+P,function(){n._oldFilter=n.searchInput.val()}).on(o.split(" ").join(P+" ")+P,T(this._filterChange,this)),this.clearButton=t.wrapper.find(".km-filter-reset").on(N,T(this,"_clearFilter")).hide(),this._dataSourceChange=e.proxy(this._refreshInput,this),t.bind("_dataSource",function(e){e.dataSource.bind("change",r._dataSourceChange)})},_refreshInput:function(){var e=this.listView.dataSource.filter(),t=this.listView._filter.searchInput;t.val(e&&e.filters[0].field===this.listView.options.filterable.field?e.filters[0].value:"")},_search:function(e){this._filter=!0,this.clearButton[e?"show":"hide"](),this.listView.dataSource.filter(e)},_filterChange:function(e){var t=this;"paste"==e.type&&this.options.autoFilter!==!1?setTimeout(function(){t._applyFilter()},1):this._applyFilter()},_applyFilter:function(){var e=this.options,t=this.searchInput.val(),n=t.length?{field:e.field,operator:e.operator||"startswith",ignoreCase:e.ignoreCase,value:t}:null;t!==this._oldFilter&&(this._oldFilter=t,this._search(n))},_clearFilter:function(e){this.searchInput.val(""),this._search(null),e.preventDefault()}}),g=y.extend({init:function(t,n){var i=this;y.fn.init.call(this,t,n),t=this.element,n=this.options,n.scrollTreshold&&(n.scrollThreshold=n.scrollTreshold),t.on("down",C,"_highlight").on("move up cancel",C,"_dim"),this._userEvents=new m.UserEvents(t,{fastTap:!0,filter:x,allowSelection:!0,tap:function(e){i._click(e)}}),t.css("-ms-touch-action","auto"),t.wrap(F),this.wrapper=this.element.parent(),this._headerFixer=new j(this),this._itemsCache={},this._templates(),this.virtual=n.endlessScroll||n.loadMore,this._style(),this.options.$angular&&(this.virtual||this.options.pullToRefresh)?setTimeout(e.proxy(this,"_start")):this._start()},_start:function(){var e=this.options;this.options.filterable&&(this._filter=new f(this)),this._itemBinder=this.virtual?new h(this):new p(this),this.options.pullToRefresh&&(this._pullToRefreshHandler=new $(this)),this.setDataSource(e.dataSource),this._enhanceItems(this.items()),m.notify(this,b)},events:[N,L,B,H],options:{name:"ListView",style:"",type:"flat",autoBind:!0,fixedHeaders:!1,template:"#:data#",headerTemplate:'<span class="km-text">#:value#</span>',appendOnRefresh:!1,loadMore:!1,endlessScroll:!1,scrollThreshold:30,pullToRefresh:!1,messages:{loadMoreText:"Press to load more",pullTemplate:"Pull to refresh",releaseTemplate:"Release to refresh",refreshTemplate:"Refreshing"},pullOffset:140,filterable:!1,virtualViewSize:null},refresh:function(){this._itemBinder.refresh()},reset:function(){this._itemBinder.reset()},setDataSource:function(e){var t=!e;this.dataSource=k.create(e),this.trigger("_dataSource",{dataSource:this.dataSource,empty:t}),this.options.autoBind&&!t&&(this.items().remove(),this.dataSource.fetch())},destroy:function(){y.fn.destroy.call(this),m.destroy(this.element),this._userEvents.destroy(),this._itemBinder&&this._itemBinder.destroy(),this._headerFixer&&this._headerFixer.destroy(),this.element.unwrap(),delete this.element,delete this.wrapper,delete this._userEvents},items:function(){return"group"===this.options.type?this.element.find(".km-list").children():this.element.children().not(".km-load-more")},scroller:function(){return this._scrollerInstance||(this._scrollerInstance=this.element.closest(".km-scroll-wrapper").data("kendoMobileScroller")),this._scrollerInstance},showLoading:function(){var e=this.view();e&&e.loader&&e.loader.show()},hideLoading:function(){var e=this.view();e&&e.loader&&e.loader.hide()},insertAt:function(e,t,n){var i=this;return i._renderItems(e,function(o){if(0===t?i.element.prepend(o):t===-1?i.element.append(o):i.items().eq(t-1).after(o),n)for(var r=0;r<o.length;r++)i.trigger(H,{item:o.eq(r),data:e[r],ns:b})})},append:function(e,t){return this.insertAt(e,-1,t)},prepend:function(e,t){return this.insertAt(e,0,t)},replace:function(e){return this.options.type="flat",this._angularItems("cleanup"),m.destroy(this.element.children()),this.element.empty(),this._userEvents.cancel(),this._style(),this.insertAt(e,0)},replaceGrouped:function(t){this.options.type="group",this._angularItems("cleanup"),this.element.empty();var n=e(m.render(this.groupTemplate,t));this._enhanceItems(n.children("ul").children("li")),this.element.append(n),_.init(n),this._style(),this._angularItems("compile")},remove:function(e){var t=this.findByDataItem(e);this.angular("cleanup",function(){return{elements:t}}),m.destroy(t),t.remove()},findByDataItem:function(e){var t,n,i=[];for(t=0,n=e.length;t<n;t++)i[t]="[data-"+m.ns+"uid="+e[t].uid+"]";return this.element.find(i.join(","))},setDataItem:function(t,n){var i=this,o=function(o){var r=e(o[0]);m.destroy(t),i.angular("cleanup",function(){return{elements:[e(t)]}}),e(t).replaceWith(r),i.trigger(H,{item:r,data:n,ns:b})};return this._renderItems([n],o)[0]},updateSize:function(){this._size=this.getSize()},_renderItems:function(t,n){var i=e(m.render(this.template,t));return n(i),this.angular("compile",function(){return{elements:i,data:t.map(function(e){return{dataItem:e}})}}),_.init(i),this._enhanceItems(i),i},_dim:function(e){this._toggle(e,!1)},_highlight:function(e){this._toggle(e,!0)},_toggle:function(t,n){if(!(t.which>1)){var i=e(t.currentTarget),o=i.parent(),r=D(i,"role")||"",a=!r.match(q),s=t.isDefaultPrevented();a&&o.toggleClass(E,n&&!s)}},_templates:function(){var e=this.options.template,t=this.options.headerTemplate,n=' data-uid="#=arguments[0].uid || ""#"',i={},o={};typeof e===W&&(i.template=e,e="#=this.template(data)#"),this.template=T(m.template("<li"+n+">"+e+"</li>"),i),o.template=this.template,typeof t===W&&(o._headerTemplate=t,t="#=this._headerTemplate(data)#"),o.headerTemplate=m.template(t),this.groupTemplate=T(M,o)},_click:function(t){if(!(t.event.which>1||t.event.isDefaultPrevented())){var n,i=t.target,o=e(t.event.target),r=o.closest(m.roleSelector("button","detailbutton","backbutton")),a=m.widgetInstance(r,b),s=i.attr(m.attr("uid"));s&&(n=this.dataSource.getByUid(s)),this.trigger(N,{target:o,item:i,dataItem:n,button:a})&&t.preventDefault()}},_styleGroups:function(){var t=this.element.children();t.children("ul").addClass("km-list"),t.each(function(){var t=e(this),n=t.contents().first();t.addClass("km-group-container"),n.is("ul")||n.is("div."+A)||n.wrap(I)})},_style:function(){var e=this.options,t="group"===e.type,n=this.element,i="inset"===e.style;n.addClass("km-listview").toggleClass("km-list",!t).toggleClass("km-virtual-list",this.virtual).toggleClass("km-listinset",!t&&i).toggleClass("km-listgroup",t&&!i).toggleClass("km-listgroupinset",t&&i),n.parents(".km-listview")[0]||n.closest(".km-content").toggleClass("km-insetcontent",i),t&&this._styleGroups(),this.trigger(z)},_enhanceItems:function(t){t.each(function(){var t,n=e(this),i=!1;n.children().each(function(){t=e(this),t.is("a")?(r(t),i=!0):t.is("label")&&(a(t),i=!0)}),i||o(n)})}}),b.plugin(g)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.navbar.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(t,n){var i=n.find("["+o.attr("align")+"="+t+"]");if(i[0])return e('<div class="km-'+t+'item" />').append(i).prependTo(n)}function i(t){var n=t.siblings(),i=!!t.children("ul")[0],r=!!n[0]&&""===e.trim(t.text()),a=!(!o.mobile.application||!o.mobile.application.element.is(".km-android"));t.prevAll().toggleClass("km-absolute",i),t.toggleClass("km-show-title",r),t.toggleClass("km-fill-title",r&&!e.trim(t.html())),t.toggleClass("km-no-title",i),t.toggleClass("km-hide-title",a&&!n.children().is(":visible"))}var o=window.kendo,r=o.mobile,a=r.ui,s=a.Widget,l=s.extend({init:function(t,i){var o=this;s.fn.init.call(o,t,i),t=o.element,o.container().bind("show",e.proxy(this,"refresh")),t.addClass("km-navbar").wrapInner(e('<div class="km-view-title km-show-title" />')),o.leftElement=n("left",t),o.rightElement=n("right",t),o.centerElement=t.find(".km-view-title")},options:{name:"NavBar"},title:function(e){this.element.find(o.roleSelector("view-title")).text(e),i(this.centerElement)},refresh:function(e){var t=e.view;this.title(t.options.title)},destroy:function(){s.fn.destroy.call(this),o.destroy(this.element)}});a.plugin(l)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.scrollview.min",["kendo.fx.min","kendo.data.min","kendo.draganddrop.min"],e)}(function(){return function(e,t){function n(e){return"k-"+e+" km-"+e}var i,o,r,a,s,l,c,d,u=window.kendo,h=u.mobile,p=h.ui,f=e.proxy,g=u.effects.Transition,m=u.ui.Pane,v=u.ui.PaneDimensions,_=p.DataBoundWidget,b=u.data.DataSource,w=u.data.Buffer,k=u.data.BatchBuffer,y=Math,x=y.abs,C=y.ceil,S=y.round,T=y.max,D=y.min,A=y.floor,E="change",I="changing",M="refresh",F="current-page",R="virtual-page",P="function",z="itemChange",B="cleanup",L=3,H=-1,N=0,O=1,V=-1,W=0,U=1,q=u.Class.extend({init:function(t){var i=this,o=e("<ol class='"+n("pages")+"'/>");t.element.append(o),this._changeProxy=f(i,"_change"),this._refreshProxy=f(i,"_refresh"),t.bind(E,this._changeProxy),t.bind(M,this._refreshProxy),e.extend(i,{element:o,scrollView:t})},items:function(){return this.element.children()},_refresh:function(e){var t,i="";for(t=0;t<e.pageCount;t++)i+="<li/>";this.element.html(i),this.items().eq(e.page).addClass(n(F))},_change:function(e){this.items().removeClass(n(F)).eq(e.page).addClass(n(F))},destroy:function(){this.scrollView.unbind(E,this._changeProxy),this.scrollView.unbind(M,this._refreshProxy),this.element.remove()}});u.mobile.ui.ScrollViewPager=q,i="transitionEnd",o="dragStart",r="dragEnd",a=u.Observable.extend({init:function(t,n){var a,s,l,c,d,h,p=this;u.Observable.fn.init.call(this),this.element=t,this.container=t.parent(),a=new u.ui.Movable(p.element),s=new g({axis:"x",movable:a,onEnd:function(){p.trigger(i)}}),l=new u.UserEvents(t,{fastTap:!0,start:function(e){2*x(e.x.velocity)>=x(e.y.velocity)?l.capture():l.cancel(),p.trigger(o,e),s.cancel()},allowSelection:!0,end:function(e){p.trigger(r,e)}}),c=new v({element:p.element,container:p.container}),d=c.x,d.bind(E,function(){p.trigger(E)}),h=new m({dimensions:c,userEvents:l,movable:a,elastic:!0}),e.extend(p,{duration:n&&n.duration||1,movable:a,transition:s,userEvents:l,dimensions:c,dimension:d,pane:h}),this.bind([i,o,r,E],n)},size:function(){return{width:this.dimensions.x.getSize(),height:this.dimensions.y.getSize()}},total:function(){return this.dimension.getTotal()},offset:function(){return-this.movable.x},updateDimension:function(){this.dimension.update(!0)},refresh:function(){this.dimensions.refresh()},moveTo:function(e){this.movable.moveAxis("x",-e)},transitionTo:function(e,t,n){n?this.moveTo(-e):this.transition.moveTo({location:e,duration:this.duration,ease:t})}}),u.mobile.ui.ScrollViewElasticPane=a,s=u.Observable.extend({init:function(e,t,n){var i=this;u.Observable.fn.init.call(this),i.element=e,i.pane=t,i._getPages(),this.page=0,this.pageSize=n.pageSize||1,this.contentHeight=n.contentHeight,this.enablePager=n.enablePager,this.pagerOverlay=n.pagerOverlay},scrollTo:function(e,t){this.page=e,this.pane.transitionTo(-e*this.pane.size().width,g.easeOutExpo,t)},paneMoved:function(e,t,n,i){var o,r,a=this,s=a.pane,l=s.size().width*a.pageSize,c=S,d=t?g.easeOutBack:g.easeOutExpo;e===V?c=C:e===U&&(c=A),r=c(s.offset()/l),o=T(a.minSnap,D(-r*l,a.maxSnap)),r!=a.page&&n&&n({currentPage:a.page,nextPage:r})&&(o=-a.page*s.size().width),s.transitionTo(o,d,i)},updatePage:function(){var e=this.pane,t=S(e.offset()/e.size().width);return t!=this.page&&(this.page=t,!0)},forcePageUpdate:function(){return this.updatePage()},resizeTo:function(e){var t,n,i=this.pane,o=e.width;this.pageElements.width(o),"100%"===this.contentHeight&&(t=this.element.parent().height(),this.enablePager===!0&&(n=this.element.parent().find("ol.km-pages"),!this.pagerOverlay&&n.length&&(t-=u._outerHeight(n,!0))),this.element.css("height",t),this.pageElements.css("height",t)),i.updateDimension(),this._paged||(this.page=A(i.offset()/o)),this.scrollTo(this.page,!0),this.pageCount=C(i.total()/o),this.minSnap=-(this.pageCount-1)*o,this.maxSnap=0},_getPages:function(){this.pageElements=this.element.find(u.roleSelector("page")),this._paged=this.pageElements.length>0}}),u.mobile.ui.ScrollViewContent=s,l=u.Observable.extend({init:function(e,t,n){var i=this;u.Observable.fn.init.call(this),i.element=e,i.pane=t,i.options=n,i._templates(),i.page=n.page||0,i.pages=[],i._initPages(),i.resizeTo(i.pane.size()),i.pane.dimension.forceEnabled()},setDataSource:function(e){this.dataSource=b.create(e),this._buffer(),this._pendingPageRefresh=!1,this._pendingWidgetRefresh=!1},_viewShow:function(){var e=this;e._pendingWidgetRefresh&&(setTimeout(function(){e._resetPages()},0),e._pendingWidgetRefresh=!1)},_buffer:function(){var e=this.options.itemsPerPage;this.buffer&&this.buffer.destroy(),this.buffer=e>1?new k(this.dataSource,e):new w(this.dataSource,3*e),this._resizeProxy=f(this,"_onResize"),this._resetProxy=f(this,"_onReset"),this._endReachedProxy=f(this,"_onEndReached"),this.buffer.bind({resize:this._resizeProxy,reset:this._resetProxy,endreached:this._endReachedProxy})},_templates:function(){var e=this.options.template,t=this.options.emptyTemplate,n={},i={};typeof e===P&&(n.template=e,e="#=this.template(data)#"),this.template=f(u.template(e),n),typeof t===P&&(i.emptyTemplate=t,t="#=this.emptyTemplate(data)#"),this.emptyTemplate=f(u.template(t),i)},_initPages:function(){var e,t,n=this.pages,i=this.element;for(t=0;t<L;t++)e=new c(i),n.push(e);this.pane.updateDimension()},resizeTo:function(e){var t,n,i,o=this.pages,r=this.pane;for(t=0;t<o.length;t++)o[t].setWidth(e.width);"auto"===this.options.contentHeight?this.element.css("height",this.pages[1].element.height()):"100%"===this.options.contentHeight&&(n=this.element.parent().height(),this.options.enablePager===!0&&(i=this.element.parent().find("ol.km-pages"),!this.options.pagerOverlay&&i.length&&(n-=u._outerHeight(i,!0))),this.element.css("height",n),o[0].element.css("height",n),o[1].element.css("height",n),o[2].element.css("height",n)),r.updateDimension(),this._repositionPages(),this.width=e.width},scrollTo:function(e){var t,n=this.buffer;n.syncDataSource(),t=n.at(e),t&&(this._updatePagesContent(e),this.page=e)},paneMoved:function(e,t,n,i){var o,r=this,a=r.pane,s=a.size().width,l=a.offset(),c=Math.abs(l)>=s/3,d=t?u.effects.Transition.easeOutBack:u.effects.Transition.easeOutExpo,h=r.page+2>r.buffer.total(),p=0;e===U?0!==r.page&&(p=-1):e!==V||h?l>0&&c&&!h?p=1:l<0&&c&&0!==r.page&&(p=-1):p=1,o=r.page,p&&(o=p>0?o+1:o-1),n&&n({currentPage:r.page,nextPage:o})&&(p=0),0===p?r._cancelMove(d,i):p===-1?r._moveBackward(i):1===p&&r._moveForward(i)},updatePage:function(){var e=this.pages;return 0!==this.pane.offset()&&(this.pane.offset()>0?(e.push(this.pages.shift()),this.page++,this.setPageContent(e[2],this.page+1)):(e.unshift(this.pages.pop()),this.page--,this.setPageContent(e[0],this.page-1)),this._repositionPages(),this._resetMovable(),!0)},forcePageUpdate:function(){var e=this.pane.offset(),t=3*this.pane.size().width/4;return x(e)>t&&this.updatePage()},_resetMovable:function(){this.pane.moveTo(0)},_moveForward:function(e){this.pane.transitionTo(-this.width,u.effects.Transition.easeOutExpo,e)},_moveBackward:function(e){this.pane.transitionTo(this.width,u.effects.Transition.easeOutExpo,e)},_cancelMove:function(e,t){this.pane.transitionTo(0,e,t)},_resetPages:function(){this.page=this.options.page||0,this._updatePagesContent(this.page),this._repositionPages(),this.trigger("reset")},_onResize:function(){this.pageCount=C(this.dataSource.total()/this.options.itemsPerPage),this._pendingPageRefresh&&(this._updatePagesContent(this.page),this._pendingPageRefresh=!1),this.trigger("resize")},_onReset:function(){this.pageCount=C(this.dataSource.total()/this.options.itemsPerPage),this._resetPages()},_onEndReached:function(){this._pendingPageRefresh=!0},_repositionPages:function(){var e=this.pages;e[0].position(H),e[1].position(N),e[2].position(O)},_updatePagesContent:function(e){var t=this.pages,n=e||0;this.setPageContent(t[0],n-1),this.setPageContent(t[1],n),this.setPageContent(t[2],n+1)},setPageContent:function(t,n){var i=this.buffer,o=this.template,r=this.emptyTemplate,a=null;n>=0&&(a=i.at(n),e.isArray(a)&&!a.length&&(a=null)),this.trigger(B,{item:t.element}),t.content(null!==a?o(a):r({})),u.mobile.init(t.element),this.trigger(z,{item:t.element,data:a,ns:u.mobile.ui})}}),u.mobile.ui.VirtualScrollViewContent=l,c=u.Class.extend({init:function(t){this.element=e("<div class='"+n(R)+"'></div>"),this.width=t.width(),this.element.width(this.width),t.append(this.element)},content:function(e){this.element.html(e)},position:function(e){this.element.css("transform","translate3d("+this.width*e+"px, 0, 0)")},setWidth:function(e){this.width=e,this.element.width(e)}}),u.mobile.ui.VirtualPage=c,d=_.extend({init:function(e,t){var i,o,r,c=this;_.fn.init.call(c,e,t),t=c.options,e=c.element,u.stripWhitespace(e[0]),e.wrapInner("<div/>").addClass("k-widget "+n("scrollview")),this.options.enablePager&&(this.pager=new q(this),this.options.pagerOverlay&&e.addClass(n("scrollview-overlay"))),c.inner=e.children().first(),c.page=0,c.inner.css("height",t.contentHeight),c.pane=new a(c.inner,{duration:this.options.duration,transitionEnd:f(this,"_transitionEnd"),dragStart:f(this,"_dragStart"),dragEnd:f(this,"_dragEnd"),change:f(this,M)}),c.bind("resize",function(){c.pane.refresh()}),c.page=t.page,i=0===this.inner.children().length,o=i?new l(c.inner,c.pane,t):new s(c.inner,c.pane,t),o.page=c.page,o.bind("reset",function(){this._pendingPageRefresh=!1,c._syncWithContent(),c.trigger(M,{pageCount:o.pageCount,page:o.page})}),o.bind("resize",function(){c.trigger(M,{pageCount:o.pageCount,page:o.page})}),o.bind(z,function(e){c.trigger(z,e),c.angular("compile",function(){return{elements:e.item,data:[{dataItem:e.data}]}})}),o.bind(B,function(e){c.angular("cleanup",function(){return{elements:e.item}})}),c._content=o,c.setDataSource(t.dataSource),r=c.container(),r.nullObject?(c.viewInit(),c.viewShow()):r.bind("show",f(this,"viewShow")).bind("init",f(this,"viewInit"))},options:{name:"ScrollView",page:0,duration:400,velocityThreshold:.8,contentHeight:"auto",pageSize:1,itemsPerPage:1,bounceVelocityThreshold:1.6,enablePager:!0,pagerOverlay:!1,autoBind:!0,template:"",emptyTemplate:""},events:[I,E,M],destroy:function(){_.fn.destroy.call(this),u.destroy(this.element)},viewInit:function(){this.options.autoBind&&this._content.scrollTo(this._content.page,!0)},viewShow:function(){this.pane.refresh()},refresh:function(){var e=this._content;e.resizeTo(this.pane.size()),this.page=e.page,this.trigger(M,{pageCount:e.pageCount,page:e.page})},content:function(e){this.element.children().first().html(e),this._content._getPages(),this.pane.refresh()},value:function(e){var n=this.dataSource;return e?(this.scrollTo(n.indexOf(e),!0),t):n.at(this.page)},scrollTo:function(e,t){this._content.scrollTo(e,t),this._syncWithContent()},prev:function(){var e=this,n=e.page-1;e._content instanceof l?e._content.paneMoved(U,t,function(t){return e.trigger(I,t)}):n>-1&&e.scrollTo(n)},next:function(){var e=this,n=e.page+1;e._content instanceof l?e._content.paneMoved(V,t,function(t){return e.trigger(I,t)}):n<e._content.pageCount&&e.scrollTo(n)},setDataSource:function(e){if(this._content instanceof l){var t=!e;this.dataSource=b.create(e),this._content.setDataSource(this.dataSource),this.options.autoBind&&!t&&this.dataSource.fetch()}},items:function(){return this.element.find(".km-"+R)},_syncWithContent:function(){var e,n,i=this._content.pages,o=this._content.buffer;this.page=this._content.page,e=o?o.at(this.page):t,e instanceof Array||(e=[e]),n=i?i[1].element:t,this.trigger(E,{page:this.page,element:n,data:e})},_dragStart:function(){this._content.forcePageUpdate()&&this._syncWithContent()},_dragEnd:function(e){var t=this,n=e.x.velocity,i=this.options.velocityThreshold,o=W,r=x(n)>this.options.bounceVelocityThreshold;n>i?o=U:n<-i&&(o=V),this._content.paneMoved(o,r,function(e){return t.trigger(I,e)})},_transitionEnd:function(){this._content.updatePage()&&this._syncWithContent()}}),p.plugin(d)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.switch.min",["kendo.fx.min","kendo.userevents.min"],e)}(function(){return function(e,t){function n(e){return"km-"+e}function i(e,t,n){return Math.max(t,Math.min(n,e))}var o=window.kendo,r=o.mobile.ui,a=o._outerWidth,s=r.Widget,l=o.support,c="change",d="switch-on",u="switch-off",h="margin-left",p="state-active",f="state-disabled",g="disabled",m=l.transitions.css===t?"":l.transitions.css,v=m+"transform",_=e.proxy,b='<span class="'+n("switch")+" "+n("widget")+'"> <span class="'+n("switch-wrapper")+'"> <span class="'+n("switch-background")+'"></span> </span> <span class="'+n("switch-container")+'"> <span class="'+n("switch-handle")+'"> <span class="'+n("switch-label-on")+'">{0}</span> <span class="'+n("switch-label-off")+'">{1}</span> </span> </span> </span>',w=s.extend({init:function(t,n){var i,r=this;s.fn.init.call(r,t,n),n=r.options,r.wrapper=e(o.format(b,n.onLabel,n.offLabel)),r.handle=r.wrapper.find(".km-switch-handle"),r.background=r.wrapper.find(".km-switch-background"),r.wrapper.insertBefore(r.element).prepend(r.element),r._drag(),r.origin=parseInt(r.background.css(h),10),r.constrain=0,r.snapPoint=0,t=r.element[0],t.type="checkbox",r._animateBackground=!0,i=r.options.checked,null===i&&(i=t.checked),r.check(i),r.options.enable=r.options.enable&&!r.element.attr(g),r.enable(r.options.enable),r.refresh(),o.notify(r,o.mobile.ui)},refresh:function(){var e=this,t=a(e.handle,!0);e.width=e.wrapper.width(),e.constrain=e.width-t,e.snapPoint=e.constrain/2,"number"!=typeof e.origin&&(e.origin=parseInt(e.background.css(h),10)),e.background.data("origin",e.origin),e.check(e.element[0].checked)},events:[c],options:{name:"Switch",onLabel:"on",offLabel:"off",checked:null,enable:!0},check:function(e){var i=this,o=i.element[0];return e===t?o.checked:(i._position(e?i.constrain:0),o.checked=e,i.wrapper.toggleClass(n(d),e).toggleClass(n(u),!e),t)},value:function(){return this.check.apply(this,arguments)},destroy:function(){s.fn.destroy.call(this),this.userEvents.destroy()},toggle:function(){var e=this;e.check(!e.element[0].checked)},enable:function(e){var i=this.element,o=this.wrapper;t===e&&(e=!0),this.options.enable=e,e?i.removeAttr(g):i.attr(g,g),o.toggleClass(n(f),!e)},_resize:function(){this.refresh()},_move:function(e){var t=this;e.preventDefault(),t._position(i(t.position+e.x.delta,0,t.width-a(t.handle,!0)))},_position:function(e){var t=this;t.position=e,t.handle.css(v,"translatex("+e+"px)"),t._animateBackground&&t.background.css(h,t.origin+e)},_start:function(){this.options.enable?(this.userEvents.capture(),this.handle.addClass(n(p))):this.userEvents.cancel()},_stop:function(){var e=this;e.handle.removeClass(n(p)),e._toggle(e.position>e.snapPoint)},_toggle:function(e){var t,i=this,r=i.handle,a=i.element[0],s=a.checked,l=o.mobile.application&&o.mobile.application.os.wp?100:200;i.wrapper.toggleClass(n(d),e).toggleClass(n(u),!e),i.position=t=e*i.constrain,i._animateBackground&&i.background.kendoStop(!0,!0).kendoAnimate({effects:"slideMargin",offset:t,reset:!0,reverse:!e,axis:"left",duration:l}),r.kendoStop(!0,!0).kendoAnimate({effects:"slideTo",duration:l,offset:t+"px,0",reset:!0,complete:function(){s!==e&&(a.checked=e,i.trigger(c,{checked:e}))}})},_drag:function(){var e=this;e.userEvents=new o.UserEvents(e.wrapper,{fastTap:!0,tap:function(){e.options.enable&&e._toggle(!e.element[0].checked)},start:_(e._start,e),move:_(e._move,e),end:_(e._stop,e)})}});r.plugin(w)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.tabstrip.min",["kendo.core.min"],e)}(function(){return function(e,t){function n(t){return e('<span class="km-badge">'+t+"</span>")}var i=window.kendo,o=i.mobile.ui,r=o.Widget,a="km-state-active",s="select",l=r.extend({init:function(t,n){var i=this;r.fn.init.call(i,t,n),i.container().bind("show",e.proxy(this,"refresh")),i.element.addClass("km-tabstrip").find("a").each(i._buildButton).eq(i.options.selectedIndex).addClass(a),i.element.on("down","a","_release")},events:[s],switchTo:function(t){var n,i,o=this.element.find("a"),r=0,a=o.length;if(!isNaN(t))return this._setActiveItem(o.eq(t)),!0;for(;r<a;r++)if(n=o[r],i=n.href.replace(/(\#.+)(\?.+)$/,"$1"),i.indexOf(t,i.length-t.length)!==-1)return this._setActiveItem(e(n)),!0;return!1},switchByFullUrl:function(e){var t;t=this.element.find("a[href$='"+e+"']"),this._setActiveItem(t)},clear:function(){this.currentItem().removeClass(a)},currentItem:function(){return this.element.children("."+a)},badge:function(t,i){var o,r=this.element;return isNaN(t)||(t=r.children().get(t)),t=r.find(t),o=e(t.find(".km-badge")[0]||n(i).insertAfter(t.children(".km-icon"))),i||0===i?(o.html(i),this):i===!1?(o.empty().remove(),this):o.html()},_release:function(t){if(!(t.which>1)){var n=this,i=e(t.currentTarget);i[0]!==n.currentItem()[0]&&(n.trigger(s,{item:i})?t.preventDefault():n._setActiveItem(i))}},_setActiveItem:function(e){e[0]&&(this.clear(),e.addClass(a))},_buildButton:function(){var t=e(this),o=i.attrValue(t,"icon"),r=i.attrValue(t,"badge"),a=t.find("img"),s=e('<span class="km-icon"/>');t.addClass("km-button").attr(i.attr("role"),"tab").contents().not(a).wrapAll('<span class="km-text"/>'),a[0]?a.addClass("km-image").prependTo(t):(t.prepend(s),o&&(s.addClass("km-"+o),(r||0===r)&&n(r).insertAfter(s)))},refresh:function(e){var t=e.view.id;t&&!this.switchTo(e.view.id)&&this.switchTo(t)},options:{name:"TabStrip",selectedIndex:0,enable:!0}});o.plugin(l)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.mobile.min",["kendo.core.min","kendo.fx.min","kendo.data.odata.min","kendo.data.xml.min","kendo.data.min","kendo.data.signalr.min","kendo.binder.min","kendo.validator.min","kendo.router.min","kendo.view.min","kendo.userevents.min","kendo.draganddrop.min","kendo.popup.min","kendo.touch.min","kendo.mobile.popover.min","kendo.mobile.loader.min","kendo.mobile.scroller.min","kendo.mobile.shim.min","kendo.mobile.view.min","kendo.mobile.modalview.min","kendo.mobile.drawer.min","kendo.mobile.splitview.min","kendo.mobile.pane.min","kendo.mobile.application.min","kendo.mobile.actionsheet.min","kendo.mobile.button.min","kendo.mobile.buttongroup.min","kendo.mobile.collapsible.min","kendo.mobile.listview.min","kendo.mobile.navbar.min","kendo.mobile.scrollview.min","kendo.mobile.switch.min","kendo.mobile.tabstrip.min","kendo.angular.min"],e)}(function(){"bundle all";return window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}),function(e,define){define("kendo.all.min",["kendo.web.min","kendo.dataviz.min","kendo.mobile.min","kendo.drawing.min","kendo.dom.min"],e)}(function(){"bundle all";return window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()}); +//# sourceMappingURL=kendo.all.min.js.map diff --git a/src/wwwroot/libraries/kendo/kendo.all.min.js.map b/src/wwwroot/libraries/kendo/kendo.all.min.js.map new file mode 100644 index 0000000..c271209 --- /dev/null +++ b/src/wwwroot/libraries/kendo/kendo.all.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["kendo.all.js"],"names":["f","define","$","window","undefined","Class","compilePart","part","stringPart","split","join","replace","first","charAt","rest","substring","pad","number","digits","end","length","zeros","getShadows","element","shadow","css","kendo","support","transitions","radius","match","boxShadowRegExp","blur","math","max","left","right","bottom","wrap","autosize","percentage","width","height","percentWidth","percentHeight","forceWidth","browser","outerWidth","_outerWidth","outerHeight","_outerHeight","parent","windowOuterWidth","removeClass","hasClass","wrapResize","style","percentRegExp","test","is","addClass","boxSizing","mozBoxSizing","webkitBoxSizing","msie","floor","version","zoom","children","wrapper","wrapperStyle","display","position","deepExtend","destination","i","arguments","deepExtendOne","source","property","propValue","propType","propInit","destProp","ObservableArray","data","LazyObservableArray","DataSource","HierarchicalDataSource","OBJECT","constructor","Array","RegExp","isFunction","ArrayBuffer","UNDEFINED","Date","getTime","clone","testRx","agent","rxs","dflt","rx","hasOwnProperty","toHyphens","str","g","toLowerCase","toCamelCase","strMatch","g1","toUpperCase","getComputedStyles","properties","computedStyle","styles","document","defaultView","getComputedStyle","each","idx","value","getPropertyValue","currentStyle","size","isScrollable","className","indexOf","overflow","scrollLeft","isRtl","webkit","mozila","mozilla","el","scrollWidth","clientWidth","Math","abs","obj","key","result","getOffset","type","positioned","offset","sign","top","pointers","msPointers","pageYOffset","documentElement","scrollTop","pageXOffset","parseEffects","input","effects","this","fx","Element","prepareAnimationOptions","options","duration","reverse","complete","STRING","BOOLEAN","extend","init","noop","teardown","hide","completeCallback","animate","instance","queue","promise","toggleClass","classes","add","htmlEncode","ampRegExp","ltRegExp","gtRegExp","quoteRegExp","aposRegExp","unescape","template","decodeURIComponent","error","_","m1","m2","String","fromCharCode","parseInt","parseOption","option","dashRegExp","getAttribute","ns","numberRegExp","parseFloat","jsonRegExp","jsonFormatRegExp","Function","parseOptions","role","templateRegExp","html","containmentComparer","a","b","contains","resizableWidget","widget","inArray","attr","focusable","isTabIndexNotNaN","nodeName","disabled","href","visible","expr","pseudos","parents","addBack","filter","kendoJQuery","selector","context","fn","Template","preventDefault","isDefaultPrevented","Observable","argumentNameRegExp","encodeRegExp","escapedCurlyRegExp","curlyRegExp","escapedSharpRegExp","sharpRegExp","directions","eventTarget","wrapExpression","localUrlRe","Widget","DataBoundWidget","ContainerNullObject","MobileWidget","MOUSE_EVENTS","EXCLUDE_BUST_CLICK_SELECTOR","MouseEventNormalizer","eventMap","getEventMap","eventRegEx","on","rootjQuery","animationFrame","animationQueue","cultures","isArray","proxy","JSON","formatRegExp","FUNCTION","NUMBER","NULL","getterCache","setterCache","slice","noDepricateExtend","src","copyIsArray","copy","name","target","deep","jQuery","isPlainObject","proto","member","base","that","subclass","apply","prototype","Object","_initOptions","_defaultPrevented","_events","bind","eventName","handlers","one","original","handler","events","eventNames","handlersIsFunction","unbind","push","unshift","trigger","e","sender","call","splice","paramName","useWithBlock","render","compile","parts","settings","argumentName","functionBody","_slotCount","Error","format","quote","string","escapable","lastIndex","c","meta","charCodeAt","toString","holder","k","v","partial","mind","gap","toJSON","rep","isFinite","indent","\b","\t","\n","\f","\r","\"","\\","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","stringify","replacer","space","","findCulture","culture","numberFormat","getCulture","current","formatDate","date","calendar","calendars","standard","days","months","patterns","dateFormatRegExp","minutes","getDate","namesAbbr","getDay","names","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","AM","PM","getTimezoneOffset","formatNumber","decimal","precision","pattern","literals","symbol","isCurrency","isPercent","customPrecision","formatAndPrecision","negative","integer","fraction","integerLength","fractionLength","replacement","ch","hasGroup","hasNegativeFormat","decimalIndex","sharpIndex","zeroIndex","hasZero","hasSharp","percentIndex","currencyIndex","startZeroIndex","start","exp","rounded","POINT","decimals","EMPTY","toLocaleString","standardFormatRegExp","exec","currency","percent","toExponential","round","groupInteger","literalRegExp","quoteChar","literal","PLACEHOLDER","SHARP","ZERO","COMMA","commaRegExp","lastIndexOf","EN","objectToString",",",".","groupSize","abbr","namesShort","d","D","F","G","m","M","s","t","T","u","y","Y","/",":","firstDay","twoDigitYearMax","cultureName","newGroupSize","groupSizes","shift","toFixed","min","fmt","values","index","placeholderFormat","_extractFormat","_activeElement","activeElement","_round","includeMargin","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","adjustDST","hours","setHours","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","parseExact","strict","count","pmHour","UTC","matches","amDesignators","pmDesignators","hoursOffset","minutesOffset","hasTime","lookAhead","getNumber","rg","substr","valueIdx","getIndexByName","lower","nameLength","subValue","matchLength","matchIdx","checkLiteral","year","month","day","seconds","milliseconds","defaultYear","_lowerDays","_lowerMonths","longTimeZoneRegExp","shortTimeZoneRegExp","isNaN","setFullYear","parseMicrosoftFormatOffset","getDefaultFormats","cultureFormats","formatIdx","FORMATS_SEQUENCE","STANDARD_FORMATS","formats","concat","internalParseDate","tzoffset","dateRegExp","offsetRegExp","timezone","convert","nonBreakingSpaceRegExp","exponentRegExp","2","3","4","parseDate","parseExactDate","percentSymbol","table","docStyle","transforms","elementProto","mobileOS","documentMode","chrome","_scrollbar","scrollbar","refresh","div","createElement","cssText","innerHTML","body","appendChild","offsetWidth","removeChild","closest","tbodyInnerHtml","touch","HTMLElement","hasHW3D","WebKitCSSMatrix","cssFlexbox","lowPrefix","prefix","hasTransitions","event","devicePixelRatio","screenWidth","screen","availWidth","innerWidth","screenHeight","availHeight","innerHeight","detectOS","ua","minorVersion","os","notAndroidPhone","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","ie","navigator","device","majorVersion","flatVersion","cordova","PhoneGap","appMode","standalone","location","protocol","userAgent","wpDevicePixelRatio","hasNativeScrolling","delayedClick","mouseAndTouchPresent","detectBrowser","edge","safari","opera","detectClipboardAccess","commands","queryCommandSupported","cut","paste","clipboard","zoomLevel","ie11WidthCorrection","docEl","scrollHeight","clientHeight","cssBorderSpacing","borderSpacing","cssClass","docElement","eventCapture","addEventListener","placeholder","propertyChangeEvent","types","setAttribute","cssFloat","stableSort","threshold","sorted","field","sort","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","nodeList","querySelectorAll","parentNode","matchMedia","pushState","history","hashChange","customElements","MSPointerEvent","PointerEvent","kineticScrollNeeded","down","up","in","out","enabled","dequeue","disable","promiseShim","enable","animatedPromise","kendoStop","clearQueue","gotoEnd","stop","kendoAnimate","kendoAddClass","kendoRemoveClass","kendoToggleClass","toggle","touches","originalEvent","changedTouches","elementFromPoint","clientX","clientY","callback","mousedown","mouseup","mousemove","mousecancel","click","resize","members","widgets","_widgetRegisteredCallbacks","ui","mobile","dataviz","drawing","spreadsheet","messages","keys","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","LEFT","UP","RIGHT","DOWN","END","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F2","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","isLocalUrl","url","expression","safe","getter","setter","accessor","get","set","guid","random","id","roleSelector","directiveSelector","directives","selectors","triggeredByInput","tagName","onWidgetRegistered","len","logToConsole","message","console","suppressLog","log","dataSource","angular","_hasBindingTarget","kendoBindingTarget","_tabindex","TABINDEX","tabindex","removeAttr","setOptions","_setEvents","force","getSize","currentSize","_size","_resize","dimensions","setSize","destroy","removeData","_destroy","_muteAngularRebind","_muteRebind","dataItems","flatView","_angularItems","cmd","elements","items","dataItem","domElement","offsetHeight","notify","initWidget","roles","fullPath","widgetKeyRegExp","widgetKey","nodeType","isEmptyObject","rolesFromNamespaces","namespaces","find","widgetsArray","makeArray","widgetInstance","progress","container","leftRight","webkitCorrection","containerScrollLeft","mask","opacity","loading","prependTo","remove","plugin","register","widgetEntry","args","method","nullObject","autoApplyNS","kendoDestroy","view","viewElement","viewHasNativeScrolling","useNativeScrolling","eq","appLevelNativeScrolling","application","themes","views","touchScroller","useNative","Scroller","kendoMobileScroller","suites","editorToolbar","elementData","onResize","setTimeout","unbindResize","off","attrValue","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","kendoFocusable","setupMouseMute","mouseTrap","bustClick","captureMouse","stopPropagation","muteMouse","clearTimeout","mouseTrapTimeoutID","unMuteMouse","move","cancel","MSPointerEnter","MSPointerLeave","orig","fix","special","delegateType","bindType","handle","ret","related","relatedTarget","handleObj","origType","applyEventMap","pop","search","touchstart","touchend","ruleToDate","rule","targetDay","ourDay","time","cache","getUTCDay","setUTCDate","findRule","utcTime","rules","zone","grep","from","to","findZone","zones","until","zoneRules","zoneAndRule","info","fromOffset","toOffset","diff","fromLocalOffset","toLocalOffset","tempToOffset","toLocalDate","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sun","Mon","Tue","Wed","Thu","Fri","Sat","setDayOfWeek","dir","setDate","dayOfWeek","firstDayOfMonth","lastDayOfMonth","last","timeOffset","moveDateToWeekStart","weekStartDay","addDays","calcWeekInYear","firstWeekInYear","newDate","diffInMS","MS_PER_DAY","weekInYear","prevWeekDate","nextWeekDate","weekNumber","toUtcTime","toInvariantTime","isInTimeRange","msValue","msMin","msMax","isInDateRange","setTime","ignoreDST","difference","MS_PER_MINUTE","today","isToday","staticDate","nextDay","previousDay","MS_PER_HOUR","stripWhitespace","iterator","child","createNodeIterator","NodeFilter","SHOW_TEXT","node","FILTER_ACCEPT","FILTER_REJECT","nextNode","referenceNode","textContent","trim","childNodes","nodeValue","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","queueAnimation","runNextAnimation","parseQueryStringParams","queryString","params","paramParts","elementUnderCursor","x","client","wheelDeltaY","jQueryEvent","delta","deltaY","wheelDelta","detail","axis","VERTICAL_AXIS","throttle","delay","timeout","throttled","lastExecTime","elapsed","caret","rangeElement","rangeDuplicated","selectionStart","selectionEnd","isPosition","focus","setSelectionRange","selection","createTextRange","collapse","moveStart","moveEnd","select","duplicate","moveToBookmark","createRange","getBookmark","setEndPoint","text","compileMobileDirective","scope","injector","invoke","$compile","$$phase","$digest","antiForgeryTokens","tokens","csrf_token","csrf_param","cycleForm","form","firstElement","lastElement","keyCode","shiftKey","focusElement","scrollTopPositions","scrollableParents","parentsUntil","setActive","matchesMedia","mediaQuery","media","_bootstrapToMedia","bootstrapMedia","xs","sm","md","lg","xl","postToProxy","dataURI","fileName","proxyURL","proxyTarget","action","contentType","base64","appendTo","submit","saveAsBlob","blob","atob","Uint8Array","Blob","buffer","msSaveBlob","saveAsDataURI","URL","createObjectURL","fileSaver","download","createEvent","initMouseEvent","dispatchEvent","revokeObjectURL","downloadAttribute","saveAs","save","forceProxy","proxyModelSetters","observable","forEach","defineProperty","dirty","amd","a1","a2","a3","absoluteURL","path","pathPrefix","regEx","host","hashDelimiter","bang","locationHash","stripRoot","root","fixHash","fixBang","CHANGE","BACK","SAME","CHECK_URL_INTERVAL","BROKEN_BACK_NAV","hashStrip","HistoryAdapter","back","forward","replaceLocation","PushStateAdapter","navigate","title","replaceState","normalize","pathname","change","normalizeCurrent","fixedUrl","hash","hashBang","HashAdapter","_id","_interval","setInterval","clearInterval","History","_started","adapter","createAdapter","historyLength","locations","silent","_navigate","backCalled","decode","_checkUrl","newLength","navigatingInExisting","prev","backButtonPressed","namedParamReplace","optional","routeToRegExp","route","ignoreCase","escapeRegExp","optionalParam","namedParam","splatParam","stripUrl","INIT","ROUTE_MISSING","Route","_callback","queryStringParams","_back","worksWith","Router","routes","_urlChangedProxy","_sameProxy","_backProxy","initEventObject","sameProxy","_same","backProxy","urlChangedProxy","_urlChanged","same","toOdataFilter","useOdataFour","operator","logic","filters","odataFilters","odataFiltersVersionFour","stripMetadata","hex16","createBoundary","createDelimeter","boundary","close","NEWLINE","createCommand","transport","item","httpVerb","command","transportUrl","commandPrefix","getOperationHeader","changeset","changeId","header","getOperationContent","content","DOUBLELINE","getOperations","collection","skipContent","requestBody","processCollection","colection","getBoundary","createBatchRequest","colections","batchURL","batch","headers","Content-Type","updated","destroyed","created","parseBatchResponse","responseText","changeBody","status","code","marker","jsonModel","responseMarkers","markerIndex","collections","models","passed","parse","neq","gt","gte","lt","lte","doesnotcontain","endswith","startswith","isnull","isnotnull","isnullorempty","isnotnullorempty","isempty","isnotempty","mappers","pageSize","page","useVersionFour","$filter","orderby","order","$orderby","skip","$skip","take","$top","defaultDataType","read","dataType","schemas","odata","results","total","transports","jsonp","update","create","parameterMap","$inlinecount","$format","odata-v4","$count","ajax","success","response","responses","XmlDataReader","idField","xmlParse","model","errors","serialize","modelBase","Model","fields","xpathToMember","modelInstance","evaluate","record","_parse","xml","parseDOM","parsedNode","attribute","attributes","attributeCount","firstChild","nextSibling","intermediateResult","tree","parseXML","raw","readers","eventHandler","_notifyChange","equal","xtype","ytype","getFieldByName","fieldName","Query","normalizeSort","descriptor","descriptors","normalizeOperator","operatorMap","normalizeFilter","compareDescriptor","f1","f2","normalizeDescriptor","fieldComparer","compareFilters","expr1","expr2","filters1","filters2","normalizeAggregate","expressions","normalizeGroup","compare","skipItemSorting","aggregates","normalizeGroupWithoutCompare","anyGroupDescriptorHasCompare","groupDescriptors","groupValueComparer","calculateAggregate","accumulator","state","aggr","functionName","aggregate","functions","isNumber","val","isDate","serializeRecords","getters","originalFieldNames","fieldNames","originalName","setters","convertRecords","convertGroup","hasSubgroups","wrapDataAccess","originalFunction","converter","wrapDataAccessBase","fillLastGroup","originalGroup","newGroup","currOriginal","currentNew","mergeGroups","dest","group","flatGroups","groups","indexFunction","groupIndex","itemIndex","groupsLength","indexFn","flattenGroups","at","wrapGroupItems","eachGroupItems","func","replaceInRanges","ranges","replaceInRange","replaceWithObservable","serverGrouping","viewIndex","removeModel","uid","indexOfPristineModel","_defaultId","indexOfModel","comparer","fieldNameFromModel","convertFilterDescriptorsField","convertDescriptorsField","inferSelect","firstField","secondField","optgroup","label","specified","inferTable","fieldIndex","cells","cell","empty","tbody","tBodies","rows","fieldCount","dataMethod","_data","_attachBubbleHandlers","inferList","list","textChild","textField","urlField","spriteCssClassField","imageUrlField","_loaded","prop","hasChildren","ObservableObject","parsers","defaultValues","Comparer","StableComparer","operators","LocalTransport","RemoteTransport","Cache","DataReader","Transport","Node","Buffer","BatchBuffer","ASCENDING","CREATE","READ","UPDATE","DESTROY","SYNC","GET","ERROR","REQUESTSTART","PROGRESS","REQUESTEND","crud","identity","o","wrapAll","json","object","howMany","thisArg","reduce","reduceRight","every","some","Symbol","_parent","_handlers","shouldSerialize","_set","paths","composite","isSetPrevented","isObservableArray","isDataSource","boolean","default","defaults","_initializers","dirtyFields","editable","initiator","accept","isNew","functionFields","nullable","defaultValue","localeCompare","combine","comparers","asc","valueA","valueB","__position","desc","textOp","impl","ignore","accentFoldingFiltering","toLocaleLowerCase","op","getMatchRegexp","esc","doesnotstartwith","n","doesnotendwith","doesnotmatch","filterExpr","and","or","fieldFunctions","operatorFunctions","==","equals","isequalto","equalto","!=","ne","notequals","isnotequalto","notequalto","notequal","<","islessthan","lessthan","less","<=","le","islessthanorequalto","lessthanequal",">","isgreaterthan","greaterthan","greater",">=","isgreaterthanorequalto","greaterthanequal","ge","notsubstringof","toArray","range","inPlace","orderBy","orderByDescending","compiled","predicate","allData","groupBy","groupValue","currentValue","_sortForGrouping","_sortGroups","sum","average","process","customGroupSort","query","groupDescriptorsWithoutCompare","normalizedSort","groupDescriptorsWithoutSort","filterCallback","groupDescriptor","setup","parameters","operation","_store","clear","store","inmemory","schema","dataFunction","groupsFunction","serializeFunction","serializeGetters","_dataAccessFunction","fromName","_wrapDataAccessBase","_map","_prefetch","_pristineData","_ranges","_view","_pristineTotal","_destroyed","_pageSize","_page","_sort","_filter","_group","_aggregate","_total","_shouldDetachObservableParents","pushCreate","_pushCreate","pushUpdate","_pushUpdate","pushDestroy","_pushDestroy","offlineStorage","_storage","getItem","localStorage","setItem","reader","_detachObservableParents","_observe","_online","serverSorting","serverPaging","serverFiltering","serverAggregates","inPlaceSort","online","sync","Deferred","resolve","offlineData","_isServerGrouped","_push","_readData","_flatData","useRanges","getByUid","_getByUid","_storeData","_addRange","_process","_observeView","insert","_createNewModel","_wrapInEmptyGroup","_insertModelInRange","pushInsert","pushed","autoSync","pristine","rangeSpan","_getCurrentRangeSpan","pristineData","_updatePristineForModel","_removeItems","removePristine","shouldRemovePristine","found","_eachItem","_removePristineForModel","hasGroups","_removeModelFromRanges","promises","_sendSubmit","_send","when","then","_accept","_syncEnd","_change","cancelChanges","_cancelModel","_changesCanceled","_markOfflineUpdatesAsDirty","__state__","hasChanges","serverGroup","_handleCustomErrors","_executeOnPristineForModel","_eachPristineItem","_pristineForModel","_modelCanceled","_submit","reject","deferred","_promise","converted","_params","_queueRequest","isPrevented","_dequeueRequest","_readAggregates","replaceSubset","itemIds","j","_aggregateResult","_skip","endless","_changeHandler","updatePristine","timestamp","_timeStamp","_sortRanges","xhr","errorThrown","_requestInProgress","_pending","_shouldWrap","arrayType","_updateTotalForAction","_calculateAggregates","_take","currentRangeStart","_clearEmptyGroups","_queryProcess","dataToAggregate","_setFilterTotal","_mergeState","_currentRangeStart","moreItemsCount","remote","filterTotal","setDefaultValue","fetch","_query","done","next","totalPages","_pageableQueryOptions","_emptyAggregates","ceil","inRange","_findRange","lastRange","firstItemUid","enableRequestsInProgress","_skipRequestsInProgress","_currentRequestTimeStamp","pageSkip","_processRangeData","_rangeExists","prefetch","skipIdx","takeIdx","startIndex","endIndex","rangeData","rangeEnd","processed","flatData","_mergeGroups","prevGroup","temp","paging","sorting","filtering","_prefetchSuccessHandler","_timeout","_multiplePrefetch","_removeModelFromRange","_updateRangesLength","rangesLength","mismatchFound","mismatchLength","lengthDifference","transportOptions","hasChildrenObject","childrenField","childrenOptions","_childrenOptions","_initChildren","_updateChildrenField","append","loaded","level","_childrenLoaded","load","_matchFilter","_hierarchicalFilter","_markHierarchicalQuery","_updateHierarchicalFilter","_find","_dataSource","viewSize","disablePrefetch","_prefetching","_reset","_syncWithDataSource","setViewSize","_recalculate","itemPresent","dataOffset","prefetchThreshold","midPageThreshold","nextMidRange","nextPageThreshold","nextFullRange","pullBackThreshold","previousMidRange","previousFullRange","_goToRange","nextRange","syncDataSource","prefetchOffset","expanding","_expanding","_syncPending","_firstItemUid","batchSize","batchBuffer","endreached","prefetching","prefetched","reset","dataSourceBinding","bindingName","Binder","bindings","_dataBinding","dataBinding","_dataBound","dataBound","_itemChange","itemChange","bindElement","_ns","_parents","removedItems","unbindElementTree","all","addedItems","hds","addedDataItems","multiselect","dropdowntree","Select","MultiSelect","DropDownTree","treeview","retrievePrimitiveValues","dataValueField","bindingTargetForRole","WidgetBindingTarget","parseBindings","token","colonIndex","keyValueRegExp","createBindings","binding","childrenCopy","unbindElement","whiteSpaceRegExp","valueField","valueUpdate","valuePrimitive","autoBind","BindingTarget","Binding","TemplateBinding","EventBinding","dom","destroyWidget","bindingTarget","deleteExpando","removeAttribute","destroyWidgets","unbindElementChildren","namespace","TypedBinder","arraySplice","binders","VALUE","SOURCE","EVENTS","CHECKED","CSS","dependencies","_access","dependency","currentSource","parsedValue","_parseValue","readonly","dataFormat","invisible","_initChange","cloneNode","reference","insertBefore","checked","selectedIndex","selected","valueIndex","sourceValue","optionIndex","optionValue","check","_range","_valueIsObservableObject","_valueIsObservableArray","_source","valueLength","sourceItem","dataTextField","isObservableObject","cascadeFrom","listView","bound","_preselect","old","removeIndex","newValue","oldValues","selectedNode","nonPrimitiveValues","_isMultipleSelection","_getAllChecked","newValues","selectedValue","gantt","_isBound","scheduler","grid","arr","addLength","oldLength","shifted","shiftedLength","toDestroy","hasValue","hasSource","hasEvents","hasChecked","hasCss","widgetBinding","specificBinders","applyBinding","binder","observableHierarchy","recursiveRead","parseInteger","parseCSS","propertyName","acc","strip3DTransforms","transformProps","transform2d","normalizeCSS","lowerKey","isTransformed","transformation","cssValues","TRANSFORM","animationProperty","transform","computed","NONE","matrix3dRegExp","translateXRegExp","atan2","capitalize","word","createEffect","definition","effectClass","Effect","direction","opt1","opt2","opt3","theDirection","createToggleEffect","defaultStart","defaultEnd","IN_OUT","startValue","_startValue","endValue","_endValue","shouldHide","_shouldHide","prepare","_direction","startDataValue","startDataValueIsSet","_reverse","clipInHalf","vertical","HEIGHT","WIDTH","CLIPS","curProxy","EffectSet","FOUR_DIRECTIONS","TRANSFER_START_STATE","ROTATIONS","RESTORE_OVERFLOW","IGNORE_TRANSITION_EVENT_SELECTOR","Animation","Transition","scaleProperties","scale","scalex","scaley","scale3d","translateProperties","translate","translatex","translatey","translate3d","hasZoom","cssParamsRegExp","oldEffectsRegExp","singleEffectRegExp","unitRegExp","transform2units","rotate","skew","cssPrefix","BLANK","PX","AUTO","HIDDEN","ORIGIN","ABORT_ID","OVERFLOW","TRANSLATE","POSITION","COMPLETE_CALLBACK","TRANSITION","BACKFACE","PERSPECTIVE","DEFAULT_PERSPECTIVE","TRANSFORM_PERSPECTIVE","transition","modifier","horizontal","stopQueue","transformValue","step","elem","now","cur","exclusive","ease","mirror","redirectedEffect","resolved","$1","$2","effect","effectBody","timeoutID","stopTransitionCalled","stopTransition","oldKeys","speeds","merge","uniqueSort","unique","taskKeys","retainPosition","restore","run","jdx","childrenLength","effectName","setReverse","addRestoreProperties","restoreCallback","effectSet","parsedEffects","useTransition","show","multiple","single","isFixed","originalPosition","dX","dY","marginLeft","marginTop","_additionalEffects","play","additional","_duration","compositeRun","_complete","divisor","tmp","previous","previousDivisor","slideIn","margin","origin","setLength","realLength","outerBox","box","innerBox","currentScale","fillScale","transformOrigin","_container","rotation","zIndex","_clipInHalf","clip","face","_face","temporary","reverseDirection","faceClone","backClone","staticPage","turningPage","transformStyle","_before","_after","transitionClass","_previous","_transitionClass","beforeTransition","afterTransition","_both","_element","_containerClass","containerClass","completeProxy","isAbsolute","originalOverflow","both","_tickProxy","_tick","tick","onEnd","onCancel","timePassed","startDate","moveTo","movable","initial","_easeProxy","moveAxis","easeOutExpo","pow","easeOutBack","inner","outer","fitScale","parseTransition","transitionRegExp","SCRIPT","TRANSITION_START","TRANSITION_END","SHOW","HIDE","ATTACH","DETACH","sizzleErrorRegExp","bodyRegExp","LOAD_START","LOAD_COMPLETE","SHOW_START","SAME_VIEW_REQUESTED","VIEW_SHOW","VIEW_TYPE_DETERMINED","AFTER","classNames","stretchedView","footer","View","renderOnInit","_createElement","wrapInSections","_renderSections","_wrap","_evalTemplate","evalTemplate","_fragments","detachOnHide","detachOnDestroy","notInitialized","_eachFragment","ViewClone","triggerBeforeShow","triggerBeforeHide","showStart","showEnd","hideEnd","detach","purge","fragments","methodName","getElementById","contents","replaceWith","_wrapper","_createContent","_createHeader","_createFooter","ccontentElements","contentSelector","contentElement","Layout","containers","_createContainer","showIn","ViewContainer","Fragment","attach","running","after","locationID","previousEntry","theTransition","transitionData","ViewEngine","sandbox","_hideViews","rootView","layouts","viewContainer","showView","remoteViewURLPrefix","_findViewElement","reload","_createView","urlPath","wrapInner","_locate","$angular","_findViewElementById","_createSpaView","_createMobileView","defaultTransition","loader","getLayout","getLayoutProxy","modelScope","viewOptions","NullNode","TextNode","HtmlNode","insertHtml","HTML_CONTAINER","attrs","Tree","NULL_NODE","cached","cachedChildren","cachedLength","replaceChild","syncAttributes","removeAttributes","cachedAttr","cachedValue","setStyle","removeStyle","cachedStyle","createTextNode","nodes","lastChild","ooxml","createZip","JSZip","dateToJulianDays","packDate","BASE_DATE","packTime","hh","mm","ss","ms","dateToSerial","serial","toDataURI","DATA_URL_PREFIX","thing","repeat","foreach","writeFormula","formula","ref","numChar","colIndex","letter","rowIndex","$ref","filterRowIndex","frozenRows","freezePane","rowSplit","toWidth","px","maximumDigitWidth","toHeight","stripFunnyChars","convertColor","color","$0","borderStyle","alias","borderSideTemplate","borderTemplate","border","inflate","mergedCells","ctx","rowData","rowsByIndex","indexRows","row","sortByIndex","fillCells","pushUnique","getSpan","topLeft","bottomRight","parseRef","rowSpan","colSpan","col","getcol","upperStr","getrow","pixelsToExcel","cellIndex","topLeftRef","ri","nextRow","cellData","EMPTY_CELL","insertCell","spanCell","insertCellAt","appendCell","borderTop","borderRight","borderBottom","borderLeft","spreadsheetFilters","SPREADSHEET_FILTERS","columns","generators","custom","SPREADSHEET_CUSTOM_FILTER","dynamic","SPREADSHEET_DYNAMIC_FILTER","SPREADSHEET_TOP_FILTER","SPREADSHEET_VALUE_FILTER","IntlService","MIME_TYPE","DATA_URL_OPTIONS","BLOB_OPTIONS","ARRAYBUFFER_OPTIONS","parseJSON","XMLHEAD","RELS","CORE","APP","CONTENT_TYPES","WORKBOOK","WORKSHEET","WORKBOOK_RELS","WORKSHEET_RELS","COMMENTS_XML","LEGACY_DRAWING","DRAWINGS_XML","DRAWINGS_RELS_XML","SHARED_STRINGS","STYLES","Worksheet","MAP_EXCEL_OPERATOR","MAP_EXCEL_TYPE","defaultFormats","Workbook","userImplementation","compression","creator","lastModifiedBy","modified","sheets","sheet","sheetCount","commentFiles","drawingFiles","filename","filterNames","userNames","localSheetId","hidden","frozenColumns","mergeCells","autoFilter","showGridLines","hyperlinks","validations","defaultCellStyleId","rtl","legacyDrawing","lastRow","rowHeight","columnWidth","column","ci","columnIndex","autoWidth","sqref","showErrorMessage","allowBlank","showDropDown","errorTitle","formula1","formula2","link","rId","comments","sheetIndex","drawings","comment","anchor","colOffset","rowOffset","imageId","rels","rel","uniqueCount","indexes","fonts","fills","borders","fi","font","fontSize","bold","italic","underline","fontFamily","fill","background","fontId","fillId","numFmtId","textAlign","verticalAlign","borderId","sharedStrings","_strings","_styles","_borders","_validations","_comments","_drawings","_hyperlinks","relsToXML","toXML","this$1","_readCells","defaultCellStyle","_lookupStyle","_getLastRow","colSplit","commentsXML","drawingsXML","images","main","drw","topLeftCell","img","image","offsetX","offsetY","_lookupString","_lookupBorder","_cell","defStyle","displayValue","cellName","validation","_addValidation","comparerType","allowNulls","showButton","messageTemplate","titleTemplate","greaterThanOrEqualTo","lessThanOrEqualTo","General","0","0.00","#,##0","#,##0.00","0%","0.00%","0.00E+00","# ?/?","# ??/??","mm-dd-yy","d-mmm-yy","d-mmm","mmm-yy","h:mm AM/PM","h:mm:ss AM/PM","h:mm","h:mm:ss","m/d/yy h:mm","#,##0 ;(#,##0)","#,##0 ;[Red](#,##0)","#,##0.00;(#,##0.00)","#,##0.00;[Red](#,##0.00)","mm:ss","[h]:mm:ss","mmss.0","##0.0E+0","@","[$-404]e/m/d","m/d/yy","t0","t0.00","t#,##0","t#,##0.00","t0%","t0.00%","t# ?/?","t# ??/??","_images","_imgId","_sheets","imageFilename","mimeType","toZIP","xlRels","sheetIds","worksheets","drawingsRels","sheetRels","sheetName","sheetXML","relsXML","name$1","hasFont","convertFontSize","zip","docProps","folder","file","def","localName","fontInPt","fontInPx","toDataURL","generateAsync","generate","toBlob","ref$1","criteria","customOperator","customValue","dynamicFilterType","blanks","quarter1","quarter2","quarter3","quarter4","january","february","march","april","may","june","july","august","september","october","november","december","toDataURLAsync","defaultGroupHeaderTemplate","createArray","TemplateService","ExcelExporter","excel","_trimColumns","allColumns","_leafColumns","_prepareColumn","hierarchy","workbook","_columns","_hierarchyRows","_rows","_freezePane","groupHeaderTemplate","groupFooterTemplate","footerTemplate","filterable","depth","_depth","_createPaddingCells","paddingCellOptions","_dataRow","dataCells","cellIdx","groupHeaderCellOptions","_dataRows","collapsible","_footer","previousItemId","rootAggregate","itemLevel","hasFooter","_hasFooterTemplate","previousLevel","_hierarchyFooterRows","parentId","_hierarchyFooter","_prependHeaderRows","currentLevel","footerCellOptions","templateData","groupFooterCellOptions","_isColumnVisible","_visibleColumns","_headerRow","headerPaddingCellOptions","headerRows","_prepareHeaderRows","parentCell","parentRow","childRow","totalColSpan","headerCellOptions","_headerDepth","locked","cellOptions","allPages","expanded","_hierarchy","ExcelMixin","saveAsExcel","exporter","book","isJQueryPromise","fail","isNativePromise","hub","signalr","callbacks","_crud","server","createPromise","promiseAll","util","hex","hue2rgb","p","q","parseColor","BaseColor","matchNamedColor","RGB","namedColors","Bytes","HSV","HSL","Color","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","regexp","colorNames","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","r","toDisplay","other","c1","c2","NaN","sqrt","h","toHSL","l","resolvedColor","formatRegex","processor","channels","resolveColor","re","normalizeByte","padDigit","brightness","percBrightness","fromBytes","fromRGB","fromHSV","fromHSL","normalizeText","REPLACE_REGEX","SPACE","objectKey","hashKey","zeroSize","baseline","measureText","measureBox","TextMetrics","measure","LRUCache","DEFAULT_OPTIONS","defaultMeasureBox","_length","put","entry","_head","_tail","newer","older","baselineMarkerSize","_cache","styleKey","cacheKey","cachedResult","baselineMarker","textStr","_baselineMarker","offsetTop","second","arabicToRoman","roman","defined","definitionId","defId","deg","radians","DEG_TO_RAD","encodeUTF8","output","encodeBase64","chr1","chr2","chr3","enc1","enc2","enc3","enc4","utfInput","KEY_STR","eventCoordinates","pageX","pageY","eventElement","initialTouch","isTransparent","limitValue","mergeSort","cmp","ai","bi","rad","degrees","power","valueOrDefault","bindEvents","elementOffset","getBoundingClientRect","clientTop","clientLeft","elementStyles","stylesArray","getPixels","elementSize","size$1","unbindEvents","removeEventListener","setAccessor","geometryChange","getAccessor","defineAccessors","capitalized","toMatrix","matrix","Transformation","ellipseExtremeAngles","center","ry","extremeX","extremeY","geometryAccessor","_observerField","defineGeometryAccessors","tolerance","PRECISION","closeOrLess","lineIntersection","p0","p1","p2","p3","s1x","s2x","s1y","s2y","nx","ny","Point","calculateAngle","cx","cy","cos","sin","normalizeArcParameters","cosine","sine","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","uX","uY","vX","vY","startAngle","angleCosine","angle","endAngle","signEndAngle","x1","y1","x2","y2","largeArc","swipe","acos","radiusX","radiusY","xRotation","bboxStartAngle","pointAccessor","definePointAccessors","isOutOfEndPoint","endPoint","controlPoint","point","rotatedPoint","transformCopy","calculateCurveAt","points","t1","toCubicPolynomial","numberSign","solveQuadraticEquation","squareRoot","solveCubicEquation","Q","b3a","y3","z1","z2","ComplexNumber","nthRoot","multiplyConstant","negate","multiply","isReal","real","hasRootsInRange","rootField","intersection","polynomial","roots","curveIntersectionsCount","bbox","rayIntersection","intersectsRay","lineIntersectionsCount","intersects","minX","maxX","minY","maxY","arrayLimits","MAX_NUM","MIN_NUM","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","rawBBox","Rect","union","elementsClippedBoundingBox","clippedBBox","toLineParamaters","isVertical","insertPosition","reflectionPoint","scaleCopy","quadraticToCubicControlPoints","scaledPoint","controlOut","translateWith","third","controlIn","parseParameters","SPLIT_REGEX","translateToPoint","transofrm","alignStart","rect","align","sizeField","alignStartReverse","alignElements","alignment","vAlign","stackElements","stackAxis","otherAxis","previousBBox","createStackElements","stack","vStack","getStacks","maxSize","stacks","stackSize","addElementToStack","wrapElements","startElement","elementIdx","vWrap","fit","rectSize","transform$$1","optionsAccessor","defineOptionsAccessors","swing","PI","linear","easeOutElastic","asin","renderAttr","renderAllAttr","renderStyle","isDefinition","baseUrl","hashIndex","getElementsByTagName","supportBrowser","alignToScreen","ctm","getScreenCTM","decodeEntities","ENTITY_REGEX","innerText","exportGroup","exportRoot","svg","RootNode","skipBaseHref","rootGroup","getOrigin","Group","SVG_NS","renderPath","segment","prevSeg","prevOut","segments","bezierCurveTo","lineTo","closed","closePath","zIndexComparer","_zIndex","addGradientStops","gradient","stops","addColorStop","exportImage","surfaceOptions","surface","cors","Surface$3","suspendTracking","draw","exportSVG","slice$1","cls","classList","setCSS","getXY","drawDOM","doOne","pos","setTransform","nodeInfo","_clipbox","_matrix","Matrix","unit","_stackingContext","_avoidLinks","avoidLinks","renderElement","makeTemplate","template$$1","firstElementChild","handlePageBreaks","forceBreak","pageWidth","pageHeight","doPageBreak","splitElement","makePage","pages","pageNum","cacheImages","whenImagesAreActuallyLoaded","keepTogether","adjust","tag","bottomPadding","bottomBorder","saveAdjust","isFirst","fall","tableLayout","breakAtElement","fallsOnMargin","splitText","firstInParent","colgroup","thead","gridHead","querySelector","repeatHeaders","doc","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","padding","pageClassName","available","nextnode","selectNodeContents","findEOP","setEnd","endOffset","li","ownerDocument","_destructive","cloneNodes","tfoot","ol","paddingLeft","paddingRight","beforePageBreak","pdf","defineFont","getFontFaces","forcePageBreak","hasPaperSize","paperSize","paperOptions","getPaperOptions","hasMargin","multiPage","_ignoreMargin","canceled","doStylesheet","cssRules","ex","addRules","findFonts","splitProperty","getFontURL","styleSheet","family","addRule","styleSheets","getCounter","getAllCounters","getPrototypeOf","incCounter","inc","_root","resetCounter","doCounters","updateCounters","counterIncrement","counterReset","parseColor$1","pending","onload","onerror","IMAGE_CACHE","urls","dive","parseBackgroundImage","bg","Image","crossOrigin","alphaNumeral","pushNodeInfo","decoration","createsStackingContext","popNodeInfo","updateClipbox","intersect","emptyClipbox","cb","pseudoElt","defa","microsoft","pleaseSetPropertyValue","important","setProperty","getBorder","side","saveStyle","getBorderRadius","sanitizeRadius","getContentBox","wt","wr","wb","wl","getTransform","radiansToDegrees","parseAngle","num","shape","setClipping","clipPath","addArcToPath","Arc$2","curvePoints","curveTo","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","tl","tr","br","bl","elementRoundBox","bt","bb","pt","pr","pb","pl","roundBox","rTL0","rTR0","rBR0","rBL0","Path","stroke","formatCounter","evalPseudoElementContent","displayCounter","separator","getCssText","_renderWithPseudoElements","pseudo","kind","place","psel","KENDO_PSEUDO_ELEMENT","fake","saveClass","_renderElement","adjustBoxes","boxes","tableBorderLeft","tableBorderTop","tableBox","firstCell","firstCellBox","drawEdge","Wtop","Wleft","Wright","rl","rr","drawRoundCorner","anticlockwise","drawBackground","backgroundColor","backgroundImage","drawOneBackground","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","drawBackgroundImage","img_width","img_height","renderBG","rewX","rewY","repeatX","aspect_ratio","orgBox","Image$1","gradientRenderer","drawBullet","_drawBullet","bullet","listStylePosition","elementIndex","listStyleType","lineHeight","disc","circle","square","drawOneBox","isLast","inv","shouldDrawLeft","shouldDrawRight","textOverflow","saveTextOverflow","innerbox","getClientRects","_pdfLink","clipit","isFormField","maybeRenderWidget","renderContents","pxlen","scaledAngle","implicit","atan","fromRect","LinearGradient","userSpace","visual","wrap$$1","_kendoExportVisual","exportDOMVisual","exportVisual","renderImage","zIndexSort","sa","sb","za","zb","pa","getSelectedOption","selectedOptions","renderCheckbox","Circle","Circle$2","renderFormField","whiteSpace","floats","floating","renderText","actuallyGetRangeBoundingRect","rectangles","Infinity","prevLineBottom","doChunk","cc","origStart","setStart","isJustified","columnCount","findEOL","eol","estimateLineLength","startOffset","drawText","getFontHeight","textTransform","TextRect","decorate","line","ypos","lineThrough","overline","align$$1","hasDecoration","selectNode","groupInStackingContext","_dom_zIndex","invert","visibility","mmul","multiplyCopy","b1","d1","e1","b2","d2","e2","kendoDrawing","kendoDrawingUtil","kendoUtil","ObserversMixin","OptionsStore","Size","Element$1","PI_DIV_2","GRADIENT","Paintable","IDENTITY_MATRIX_HASH","Measurable","DEFAULT_STROKE","MAX_INTERVAL","pow$1","ElementsArray","GeometryElementsArray","Segment","MultiPath","ShapeMap","SEGMENT_REGEX","MOVE","CLOSE","PathParser","DEFAULT_STROKE$1","Arc","DEFAULT_FONT","DEFAULT_FILL","Text","Traversable","forEachReverse","Rect$2","StopsArray","GradientStop","Gradient","RadialGradient","easingFunctions","AnimationFactory","SurfaceFactory","Surface","BaseNode","NODE_MAP","renderSVG","testFragment","testContainer","hasParser","renderSVG$1","DefinitionMap","GradientStopNode","GradientNode","LinearGradientNode","RadialGradientNode","ClipNode","DefinitionNode","RTL","Surface$1","GroupNode","DASH_ARRAYS","SOLID","BUTT","ATTRIBUTE_MAP","PathNode","ArcNode","CircleNode","RectNode","ImageNode","MultiPathNode","geometry","NODE_MAP$2","Node$2","GroupNode$2","FRAME_DELAY","RootNode$2","QuadRoot","QuadNode","ROOT_SIZE","LEVEL_STEP","MAX_LEVEL","ShapesQuadTree","SurfaceCursor","PathNode$2","ArcNode$2","CircleNode$2","RectNode$2","ImageNode$2","TextNode$2","MultiPathNode$2","canvas","inBrowser","observers","_observers","addObserver","removeObserver","observer","_suspended","optionsChange","suspend","resume","1","10","100","20","200","30","300","40","400","5","50","500","6","60","600","7","70","700","8","80","800","9","90","900","1000","MAX_VALUE","parentObj","_clear","wrapped","det","scaleX","scaleY","IDENTITY","originPoint","distanceTo","dx","dy","doRound","arg0","arg1","arguments$1","minPoint","maxPoint","defineProperties","setOrigin","topRight","bottomLeft","fromPoints","expand","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","rect1","rect2","_optionsChange","parentTransform","parentMatrix","currentTransform","elementTransform","elementMatrix","combinedMatrix","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","setCenter","setRadius","getCenter","pointAt","_pointAt","currentPointX","currentPointY","currentPoint","extremeAngles","inCircle","pointDistance","newFill","strokeWidth","matrixHash","_bboxCache","_matrixHash","_bbox","_geometry","radian","nextAngle","interval","_arcInterval","intervalAngle","subIntervalsCount","subIntervalAngle","currentAngle","_intervalCurvePoints","cp1","cp2","currentAngleX","currentAngleY","oldStart","p1Derivative","_derivativeAt","p2Derivative","inAngleRange","distance","angleRad","pointRadius","startPoint","arcParameters","_splice","_add","_remove","_clearObserver","_setObserver","cNumber","addConstant","rad$$1","nthR","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","intersectionsCount","_isOnCurveTo","endSegment","p4","rotatedPoints","_isOnLineTo","_isOnPathTo","isOnPath","arc","arcTo","isRelative","lastControlIn","previousCommand","cubicControlPoints","lastSegment","multiPath","lineJoin","_addArcSegments","pathWidth","segmentBox","fromArc","toPath","metrics","_rect","traverse","childrenChange","_reparent","insertAt","removeAt","newParent","alignContent","justifyContent","alignItems","spacing","orientation","lineSpacing","revers","_fieldMap","_initMap","fieldMap","groupsSizeField","groupAxis","groupsAxis","justifyAlign","reflow","groupsSize","groupOrigin","elementOrigin","groupStart","elementStart","groupBox","arrangeElements","groupIdx","scaledStart","scaledSize","newStart","_initGroups","lineSize","bboxes","_newGroup","addGroup","_addToGroup","arg","_createStops","_userSpace","addStop","removeStop","_radius","_fallbackFill","fallbackFill","_items","easing","finish","abort","loop","wallTime","easingPosition","_stopped","preferred","_click","_handler","_mouseenter","_mouseleave","_mousemove","_visual","_enableTracking","domNode","_kendoNode","parentElement","srcElement","_suspendedTracking","resumeTracking","_elementOffset","paddingTop","_surfacePoint","coord","observe","removeSelf","invalidate","DOMParser","namespaceURI","parser","chartDoc","parseFromString","importedDoc","adoptNode","definitions","clearDefinitions","childNode","createDefinitions","attachTo","setElement","childElement","renderChildren","updateDefinition","allAttr","allCss","mapTransform","renderTransform","transformChange","mapStyle","cursor","renderOpacity","renderId","hasDefinitions","definitionChange","refUrl","renderDefinitions","mapDefinitions","baseHref","renderOffset","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","definitionMap","addDefinitions","removeDefinitions","createDefinition","addDefinition","mapItem","removeDefinition","defs","_template","_rootElement","mouseover","mouseout","viewBox","_offset","implementation","hasFeature","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","fill.opacity","stroke.color","stroke.width","stroke.opacity","renderData","mapFill","mapStroke","printPath","currentType","segmentType","printPoints","segmentStart","segmentEnd","renderLinecap","dashType","renderDashType","renderStroke","dashArray","lineCap","renderFill","mapPosition","mapSource","renderPosition","encode","renderSource","setY","renderContent","renderTextAnchor","initClip","clearClip","setClip","beginPath","loadElements","setOpacity","globalAlpha","opactity","renderTo","getContext","invalidateHandler","_invalidate","clearRect","shapes","_quadNode","pointShapes","inBounds","nodeRect","nodeBottomRight","inserted","halfWidth","halfHeight","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","levelWeight","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","resolveDataURL","rootElement","loadingStates","currentShape","_currentShape","renderPoints","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","createLinearGradient","createRadialGradient","strokeStyle","lineWidth","mozDash","webkitLineDash","onLoad","onError","drawImage","fillText","strokeText","_pdfRect","$el","$clone","canvases","canvas$$1","skip_ws","tok_whitespace","read_stop","tok_length","tok_percent","read_linear_gradient","propName","to1","to2","tok_popen","tok_angle","tok_comma","tok_keyword","tok_pclose","read_url","tok_content","tok","cache1","tok_linear_gradient","tok_url","cache2","looking_at","last$$1","in_paren","in_string","tabKeyTrapNS","focusableNodesSelector","TabKeyTrap","OPEN","DEACTIVATE","ACTIVATE","CENTER","TOP","BOTTOM","ABSOLUTE","BODY","LOCATION","VISIBLE","EFFECTS","ACTIVE","ACTIVEBORDER","ACTIVEBORDERREGEXP","ACTIVECHILDREN","MOUSEDOWN","DOCUMENT_ELEMENT","WINDOW","SCROLL","NS","Popup","parentPopup","collisions","collision","downEvent","_hovered","scrollArea","animation","open","_activated","_trigger","_animationClose","_mousedownProxy","_mousedown","_resizeProxy","toggleTarget","toggleEvent","viewport","copyAnchorStyles","modal","adjustSize","_hideDirClass","_closing","_toggleResize","fixed","flipped","_position","_openAnimation","_showDirClass","_location","dirClass","skipEffects","openEffects","closeEffects","popup","ev","_resizeTimeout","_scrollableParents","_fit","viewPortSize","_flip","anchorSize","boxSize","siblingContainer","parentZIndex","viewportOffset","viewportWidth","viewportHeight","anchorParent","offsets","flipPos","elementHeight","wrapperHeight","isWindow","origins","positions","siblings","_align","offsetParent","appendToOffset","verticalOrigin","horizontalOrigin","verticalPosition","horizontalPosition","anchorOffset","anchorWidth","anchorHeight","trap","_keepInTrap","removeTrap","shouldTrap","sortedElements","which","_focusableElements","_sortFocusableElements","_nextFocusable","_focus","tabIndex","attrName","contentWindow","_haveSelectionRange","elementType","utils","TOOLTIP_TEMPLATE","TOOLTIP_CLOSE_TEMPLATE","SurfaceTooltip","_tooltipOptions","popupOptions","_openPopupHandler","_openPopup","_bindEvents","showOn","autoHide","hideDelay","showAfter","_showHandler","_showEvent","_surfaceLeaveHandler","_surfaceLeave","_mouseleaveHandler","_mousemoveHandler","_hideClick","_tooltipLeave","getPopup","shared","_tooltipShape","tooltip","_updateContent","tooltipOffset","_instance","surfaceOffset","_show","_showTimeout","_autoHide","_measure","_closeButton","_popupRelatedTarget","DrawingSurface","_triggerInstanceHandler","_triggerInstanceEvent","_bindHandler","hideTooltip","_tooltip","showTooltip","resolveRules","resolvers","validator","ruleResolvers","numberOfDecimalDigits","parseHtml","parseHTML","searchForMessageContainer","invalidMsgRegExp","Validator","INVALIDMSG","INVALIDINPUT","VALIDINPUT","emailRegExp","urlRegExp","INPUTSELECTOR","CHECKBOXSELECTOR","NUMBERINPUTSELECTOR","BLUR","NAME","FORM","NOVALIDATE","VALIDATE","VALIDATE_INPUT","patternMatcher","matcher","hasAttribute","validateAttributeSelector","_errorTemplate","errorTemplate","_inputSelector","_checkboxSelector","_errors","_attachEvents","_isValidated","required","email","dateCompare","checkbox","raise","validateOnBlur","validate","stopImmediatePropagation","_checkElement","validateInput","inputs","invalid","isValid","valid","lbl","messageText","wasValid","messageLabel","lblId","inputWrap","_checkValidity","_findMessageContainer","_extractMessage","_decorateMessageContainer","insertAfter","_inputWrapper","hideMessages","locators","messageLocators","locate","ruleKey","nonDefaultMessage","customMessage","touchDelta","touch1","touch2","getTouches","currentTarget","api","identifier","pointerId","withEachUpEvent","downEvents","OS","invalidZeroEvents","DEFAULT_MIN_HOLD","CLICK_DELAY","DEFAULT_THRESHOLD","PRESS","HOLD","SELECT","START","CANCEL","TAP","DOUBLETAP","RELEASE","GESTURESTART","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","mouse","pointer","ENABLE_GLOBAL_SURFACE","TouchAxis","_updateLocationData","startLocation","velocity","timeStamp","timeDelta","initialDelta","Touch","userEvents","touchInfo","useClickAsTap","pressEvent","_clicks","supportDoubleTap","_moved","_finished","press","_holdTimeout","minHold","_tap","_clickTimeout","_hold","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","dispose","_start","endTime","activeTouches","isMoved","startTime","xDelta","yDelta","defaultAction","surfaceElement","preventIfMovingProxy","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","eventNS","global","pressed","touchAction","preventDragEvent","preventIfMoving","_isMoved","_disposeAll","capture","_isMultiTouch","_apiCall","_maxTouchesReached","_select","_move","_eachTouch","_end","matchingTouch","dict","defaultThreshold","numericCssPropery","within","containerBoundaries","checkTarget","targets","areas","theTarget","theFilter","targetLen","areaLen","targetElement","destroyDroppable","groupName","droppables","scrollableViewPort","scrollableRoot","$window","findScrollableParent","autoScrollVelocity","mouseX","mouseY","AUTO_SCROLL_AREA","lastDropTarget","Movable","DropTarget","DropTargetArea","Draggable","draggables","dropTargets","dropAreas","KEYUP","DRAGSTART","DRAG","DRAGEND","DRAGCANCEL","HINTDESTROYED","DRAGENTER","DRAGLEAVE","DROP","TapCapture","_press","_release","attachEvent","captureNext","cancelCapture","PaneDimension","forcedEnabled","scrollSize","makeVirtual","virtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","centerOffset","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","dimension","dragMove","resistance","translateAxis","Pane","elastic","gesturestart","gesture","gesturechange","coordinates","previousGesture","previousCenter","scaleDelta","scaleWith","TRANSFORM_STYLE","webkitTransformOrigin","_saveCoordinates","by","scaleTo","newCoordinates","draggable","dropTarget","_over","_out","_drop","dropped","destroyGroup","hold","_drag","_cancel","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","holdToDrag","autoScroll","cancelHold","_updateHint","boundaries","hintOffset","hint","_shouldIgnoreTarget","ignoreSelector","currentTargetOffset","scopeTarget","scopeFrom","cursorElement","_elementUnderCursor","_cursorElement","_scrollableParent","_lastEvent","_processMovement","_scrollCompenstation","_scrollVelocity","_scrollInterval","_withDropTarget","_autoScroll","yIsScrollable","xIsScrollable","isRootNode","yInBounds","xInBounds","compensation","initialTarget","SNAPBACK_DURATION","SCROLLBAR_OPACITY","FRICTION","VELOCITY_MULTIPLIER","MAX_VELOCITY","OUT_OF_BOUNDS_FRICTION","ANIMATED_SCROLLER_PRECISION","RELEASECLASS","REFRESHCLASS","PULL","RESIZE","MOUSE_WHEEL_ID","ZoomSnapBack","tapCapture","DragInertia","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","scrollMovable","alwaysVisible","paneSize","sizeRatio","avoidScrolling","pane","zoomSnapBack","animatedScroller","_native","prepend","scrollElement","fixedContainer","velocityX","velocityY","horizontalSwipe","originatedFromFixedContainer","verticalSwipe","scrollTo","mousewheelScrolling","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","_wheelScroll","ctrlKey","_wheelTimeout","pullOffset","visibleScrollHints","pullTemplate","releaseTemplate","refreshTemplate","contentResized","_scale","zoomOut","animatedScrollTo","pullHandled","refreshHint","hintContainer","yinertia","xinertia","_paneChange","_dragEnd","scrollBar","kendoAttr","DIR","FIELD","TITLE","DESCENDING","GROUP_SORT","indicatorTmpl","dropCue","Groupable","horizontalCuePosition","intializePositions","_intializePositions","dropCuePositions","_dropCuePositions","draggableElements","groupContainer","kendoDropTarget","dragenter","_canDrag","dragleave","drop","sourceIndicator","indicator","lastCuePosition","sortOptions","_dropCuePosition","_canDrop","before","buildIndicator","_setIndicatorSortOptions","kendoDraggable","dragcancel","_dragCancel","dragstart","elementPosition","dragend","drag","_removeIndicator","newDir","marginRight","allowDrag","_refreshHandler","indicatorHtml","fieldAttr","titleAttr","_invalidateGroupContainer","indicators","indicatorSortOptions","toggleHintClass","denied","KREORDERABLE","Reorderable","reorderDropCue","_draggable","_dropTargetAllowed","_isLastDraggable","inSameContainer","sourceIndex","_index","targetIndex","_dropTarget","oldIndex","newIndex","_elements","dropStartOffset","dragOverContainers","HORIZONTAL","VERTICAL","RESIZEEND","Resizable","_positionMouse","_sizingDom","draggableElement","_stop","_max","hintSize","_initialElementPosition","_min","_initialMousePosition","_maxPosition","_minPosition","maxPosition","minPosition","currentPosition","invalidClass","resizing","targetPosition","containsOrEqualTo","defaultHint","defaultPlaceholder","BEFORE_MOVE","ACTION_SORT","ACTION_REMOVE","ACTION_RECEIVE","DEFAULT_FILTER","MISSING_INDEX","Sortable","_createDraggable","connectWith","moveOnDragEnter","_dragstart","_dragcancel","_dragend","draggedElement","_placeholder","draggableEvent","targetCenter","offsetDelta","sibling","getSibling","_findTarget","axisDelta","eventData","_movementByAxis","_getElementCenter","appendToBottom","_movePlaceholder","appendAfterHidden","_isFloating","connectedList","connectedListEventData","draggedIndex","placeholderIndex","getKendoSortable","_findElementUnderCursor","has","sortable","_isEmpty","_isLastHidden","_searchConnectedTargets","sortableInstance","connected","_isCursorAfterLast","lastItemOffset","lastItem","cursorPosition","_originalCursorType","_cursorStylesheet","isFloating","isTable","isHorizontalFlex","not","Selectable","ARIASELECTED","SELECTED","SELECTABLE","UNSELECT","UNSELECTING","supportEventDelegation","_marquee","_lastActive","aria","tap","inputSelectors","_isElement","metaKey","whichCode","buttonCode","button","_allowSelection","selectRange","_firstSelectee","_unselect","_notify","_downTarget","currentElement","useAllItems","_selectElement","_invalidateSelectables","toSelect","selectElement","preventNotify","resetTouchEvents","continuousItems","selectable","asLowerString","DOT","SEND_ICON","TOGGLE_ICON","messageBoxStyles","buttonFlat","buttonIcon","buttonSend","buttonToggle","iconAdd","ChatMessageBox","_typing","inputId","toolbar","toggleable","buttons","_keydown","_input","_inputFocusout","_buttonClick","_toggleToolbar","_triggerTyping","_sendMessage","chat","DATA_K_BUTTON_NAME","SCROLL_LEFT_NAME","SCROLL_RIGHT_NAME","DEFAULT_ANIMATION","NO_ANIMATION","toolbarStyles","buttonList","scrollButton","scrollButtonLeft","scrollButtonRight","scrollButtonLeftIcon","scrollButtonRightIcon","ChatToolBar","toolbarOptions","buttonsDefined","_createButtonList","scrollable","buttonsWidth","_initScrolling","_setupAnimation","_onClick","_createButton","btnOptions","buttonElm","iconClass","_scrolling","_scroll","class","_refreshScrollButtons","commandName","buttonWidth","maxScrollSize","scrollAmmount","currentScroll","currentScrollLeft","scrollValue","defaultExpandAnimation","defaultCollapseAnimation","_animationComplete","skipAnimation","Component","Calendar","viewStyles","ChatView","MESSAGE_GROUP_TEMPLATE","SELF_MESSAGE_GROUP_TEMPLATE","TEXT_MESSAGE_TEMPLATE","TYPING_INDICATOR_TEMPLATE","SUGGESTED_ACTIONS_TEMPLATE","HERO_CARD_TEMPLATE","Templates","Components","registerTemplate","templateName","getTemplate","registerComponent","componentName","component","getComponent","kendoCalendar","messageList","messageListContent","messageTime","messageGroup","only","middle","author","avatar","noAvatar","self","iconButton","buttonPrimary","scrollButtonIcon","scrollButtonIconLeft","scrollButtonIconRight","typingIndicator","typingIndicatorBubble","bubble","suggestedActions","suggestedAction","cardWrapper","cardDeckScrollWrap","cardDeck","cardList","card","cardRich","cardBody","cardImage","cardTitle","cardSubtitle","cardActions","cardActionsVertical","cardAction","_list","_lastSender","typingParticipants","_scrollable","isTyping","areTyping","_scrollDraggable","_listClick","_messageClick","_suggestedActionClick","_cardActionClick","_scrollButtonClick","scrollToLeft","scrollContainer","lastCard","cardWidth","renderMessage","bubbleElement","_renderTemplate","_renderBubble","_removeTypingParticipant","renderSuggestedActions","_removeSuggestedActions","_scrollToBottom","renderAttachments","cardElement","_renderAttachmentWrapper","attachmentLayout","cardContainer","attachments","_removeTypingIndicator","renderComponent","componentType","layout","buttonLeft","buttonRight","_renderScrollButton","directionClass","_clearSelection","messageType","_getMessageGroup","_appendToGroup","templateOptions","_getMessageGroupTemplate","appendTarget","iconUrl","isOwnMessage","user","messageElement","childrenCount","_renderTypingIndicator","indicatorList","participants","_addTypingParticipant","_composeTypingParticipantsText","typingAction","typingText","trimRight","selectedClass","chatStyles","viewWrapper","messageBoxWrapper","toolbarBoxWrapper","Chat","_user","_messageBox","_toolbar","messageBox","_resetToolbarButtons","getUser","uiElements","postMessage","toggleToolbar","postArgs","renderUserTypingIndicator","clearUserTypingIndicator","removeTypingIndicator","CLICK","MOUSEUP","KBUTTON","KBUTTONICON","KBUTTONICONTEXT","DISABLED","DISABLEDSTATE","FOCUSEDSTATE","SELECTEDSTATE","Button","iconElement","_blur","_removeActive","_addActive","icon","spriteCssClass","imageUrl","_isNativeButton","span","isEmpty","err","createBadge","KWIDGET","KBUTTONGROUP","FOCUSED","KEYDOWN","FOCUS","templates","ButtonGroup","_renderItems","selectedIndices","_updateClasses","_enable","_keyDown","preventFocus","renderedItem","encoded","itemToFocus","buttonGroup","focusableItems","focusedElement","currentIndex","ariaPressed","indices","badge","buttongroup","validValue","switchStyles","checkedLabel","unchecked","uncheckedLabel","active","ARIA_DISABLED","READONLY","ARIA_READONLY","ARIA_CHECKED","TOUCHEND","LABELIDPART","SWITCH_TEMPLATE","SWITCH_CONTAINER_TEMPLATE","Switch","_touchEnd","_initSettings","_aria","labelId","labelFor","ariaLabel","ariaLabelledBy","_check","_isTouch","pointerType","numeric","wrapClassName","iconTemplate","FIRST","PREV","NEXT","LAST","SIZE","Pager","pageSizes","pageItems","sizeClassName","_createDataSource","linkTemplate","selectTemplate","currentPageTemplate","previousNext","of","itemsPerPage","DropDownList","kendoDropDownList","_refreshClick","_toggleActive","_resizeHandler","_getWidthSizeClass","buttonCount","responsive","morePages","setDataSource","reminder","hasAll","selectAll","collapsedTotal","_collapsedTotal","_hideList","sizes","KNOTIFICATION","KICLOSE","KHIDING","INFO","SUCCESS","WARNING","WRAPPER","TEMPLATE","SAFE_TEMPLATE","Notification","_compileTemplates","_guid","_isRtl","_compileStacking","stacking","pinned","hideOnClick","allowHideAfter","autoHideAfter","kendoTemplate","_compiled","templateId","_defaultCompiled","_safeCompiled","_getCompiled","defaultCompiled","paddings","paddingBottom","horizontalAlignment","_popupOrigin","_popupPosition","_popupPaddings","_attachPopupEvents","attachClick","_hidePopup","closeIcon","attachDelay","_showPopup","openPopup","_triggerHide","deactivate","_togglePin","pin","win","_attachStaticEvents","_hideStatic","_showStatic","initializedNotifications","insertionMethod","getNotifications","defaultArgs","typeIcon","showText","warning","openedNotifications","guidElements","newOptions","restoreTitle","restoreTitleAttributeForElement","saveTitleAttributeForElement","saveTitleAttributes","DOCUMENT","ARIAIDSUFFIX","DESCRIBEDBY","CONTENTLOAD","KCONTENTFRAME","IFRAMETEMPLATE","POSITIONS","REVERSE","DIRCLASSES","DIMENSIONS","DEFAULTCONTENT","Tooltip","_documentKeyDownHandler","_documentKeyDown","_showOn","_isShownOnMouseEnter","_isShownOnClick","_isShownOnFocus","hideAfter","callout","_appendContent","iframe","contentOptions","showIframe","_ajaxRequest","_initPopup","activate","ariaId","_positionCallout","arrow","_closeButtonClick","_closePopup","offsetAmount","isTopLeft","isFlipped","marginRule","unifyType","mapChangedItems","itemsToMatch","itemsLength","selectedLength","changed","unchanged","isValidFilterExpr","removeFiltersForField","STATIC_LIST_NS","StaticList","percentageUnitsRegex","ID","HOVER","LOADING","GROUPHEADER","ITEMSELECTOR","CASCADE","HIDDENCLASS","isIE","isIE8","quotRegExp","alternativeNames","ComboBox","MultiColumnComboBox","List","_isSelect","ul","aria-hidden","_listMousedown","_columnsHeader","_header","_noData","_accessors","_initValue","headerTemplate","noDataTemplate","noData","_renderFooter","_renderNoData","_focused","_editable","_angularElement","colGroup","currentColumn","columnsHeaderTemplate","currentWidth","currentWidthInt","widthStyle","columnsHeader","_listOptions","currentOptions","changeEventOption","_listChange","listBoundHandler","_listBound","_activateItem","_deactivateItem","groupTemplate","fixedGroupTemplate","_initList","listOptions","selectedItemChange","VirtualList","_setListValue","_updateSelectionState","filterInput","_isFilterEnabled","_hideClear","_showClear","_clearValue","_clearText","_accessor","_customOption","enforceMinLength","highlightFirst","_clearFilter","_filterSource","newExpression","dataSourceState","isMultiColumnFiltering","filterFields","resetPageSettings","removed","_clearFilterExpressions","_pushFilterExpression","_cascading","setDSFilter","filtersToRemove","_toggleNoData","_toggleHeader","groupHeader","_allowOpening","_old","_ignoreCase","candidate","widgetOptions","fromFilter","_buildExpression","_open","_clearButton","clearTitle","clearButton","_inputValue","_typingTimeout","minLength","_state","_emptySearch","_searchByWord","_unbindDataSource","_form","_resetHandler","selectedDataItems","_text","_value","suggest","_ariaLabel","focusedElm","inputElm","labelElm","_generateLabelId","_oldText","_valueBeforeCascade","_userTriggered","_oldIndex","isFiltered","typing","_dataValue","_offsetHeight","prevAll","_height","popups","footerHeight","_openHandler","_adjustListWidth","computedWidth","borderLeftWidth","borderRightWidth","minWidth","_closeHandler","_focusItem","noFocusedItem","scrollToIndex","_calculateGroupPadding","_calculatePopupHeight","_calculateColumnsHeaderPadding","_refreshScroll","enableYScroll","overflowX","overflowY","_resizePopup","_popup","_makeUnselectable","_toggleHover","_toggle","touchEnabled","MSPointers","_prevent","_triggerCascade","_cascadeTriggered","_cascadedValue","userTriggered","_triggerChange","_requestStartHandler","_requestEndHandler","_errorHandler","requireValueMapper","valueMapper","_initial","_initialIndex","_parentWidget","_cascadeSelect","_cascadeValue","_accessorInput","_accessorSelect","_custom","_syncValueAndText","_hideBusy","_busy","_arrowIcon","_showBusy","_request","_requestEnd","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","activeFilter","shouldTrigger","altKey","_fetch","dataItemByIndex","getElementIndex","_focusElement","focusout","scrollWith","_fetchData","hasItems","_options","optionLabel","dataText","dataValue","htmlElement","formId","_cascade","cascade","_cascadeHandlerProxy","_cascadeHandler","_cascadeFilterRequests","_selectedValue","_toggleCascadeOnFocus","valueBeforeCascade","_cascadeChange","filterValue","cascadeFromParentField","cascadeFromField","currentHandler","_touchHandlers","_optionID","_selectedIndices","_dataItems","_values","_getter","_templates","_onScroll","_scrollId","_renderHeader","_fixedHeader","startY","endY","tapPosition","_touchTriggered","_triggerClick","_render","scroll","itemOffsetTop","itemOffsetHeight","contentScrollTop","contentOffsetHeight","bottomDistance","_getValues","_valueGetter","hasCandidate","_get","focusIndex","skipUpdate","_skipUpdate","filtered","singleSelection","uiSelectedIndices","added","_deselectFiltered","_deselect","_valueComparer","setValue","_valueDeferred","_valueIndices","_valueExpr","normalized","_valueType","_dataItemPosition","valueExpr","removedIndices","templateText","_normalizeIndices","newIndices","_firstVisibleItem","itemHeight","previousSibling","isGrouped","visibleItem","_renderItem","notFirstItem","hasColumns","isLastGroupedItem","_renderColumns","dataContext","_selected","_lastDSFilter","skipUpdateOnBind","isItemChange","_bound","modular","minYear","maxYear","build","weekNumberBuild","isWeekColumnVisible","cellsPerRow","perRow","otherMonth","weekNumberTemplate","cellTemplate","emptyCellTemplate","otherMonthTemplate","otherMonthCellTemplate","createDate","disableDates","OTHERMONTH","isInRange","date1","date2","year1","getToday","DATE","restrictValue","shiftArray","multiplier","daysBetweenTwoDates","endDate","fromDateUTC","endDateUTC","addDaysToArray","numberOfDays","fromDate","mousetoggle","MOUSEENTER","prevent","dateObject","getCalendarInfo","extractFormat","MONTH","dates","makeUnselectable","addClassToViewContainer","currentView","isEqualDatePart","value1","value2","isEqualMonth","getDisabledExpr","createDisabledExpr","convertDatesArray","disabledDates","searchExpression","isEqualDate","oldValue","toDateObject","transitionOrigin","KEYDOWN_NS","MIN","SLIDE","CENTURY","NAVIGATE","OTHERMONTHCLASS","OUTOFRANGE","TODAY","CELLSELECTOR","CELLSELECTORVALID","WEEKCOLUMNSELECTOR","FOCUS_WITH_NS","MOUSEENTER_WITH_NS","MOUSELEAVE","PREVARROW","NEXTARROW","ARIA_SELECTED","ARIA_LABEL","decade","century","_selectable","_viewWrapper","_focusView","focusOnNav","_cellID","_class","_selectDates","_addClassProxy","_active","todayString","toDateString","_cellByDate","_removeClassProxy","selectDates","weekColumnHeader","_today","_title","_destroySelectable","_table","_bindTable","_option","navigateToPast","navigateToFuture","navigateUp","navigateDown","future","_oldTable","_changeView","_animate","_visualizeSelectedDatesInView","validSelectedDates","datesUnique","_validateValue","selectedDates","selectableOptions","_onSelect","_onRelatedTarget","eventArgs","_toggleSelection","_cellsBySelector","_addSelectedCellsToArray","_rangeSelection","currentCell","toDateCell","daysDifference","toDate","currentDateIndex","_dateInView","firstDateInView","lastDateInView","_isNavigatable","isDisabled","focusedDate","_keyboardToggleSelection","_nextNavigatable","_keyboardRangeSelection","navigatableDate","_horizontal","viewWidth","float","margin-left","unwrap","_vertical","disabledDate","links","firstDayCurrentMonth","isBigger","isTodayDisabled","_todayClick","firstVisibleDay","calendarInfo","tzOffsetBefore","resultDATE","tzOffsetDiff","navigateUrl","showHeader","hasUrl","currentCalendar","firstDayIdx","shortNames","linkClass","dateString","currentDate","month1","month2","year2","setMonth","viewsEnum","approximateStringMatching","oldText","oldFormat","newText","deletedSymbol","oldTextSeparator","knownSymbols","customDateTime","INPUT_EVENT_NAME","STATEDISABLED","STATEDEFAULT","STATEINVALID","DateInput","insidePicker","weekday","hour","minute","dayperiod","_unbindInput","_bindInput","_updateElementValue","_formElement","_dateTime","getDateObject","_oldValue","stringAndFromat","toPair","_format","_paste","_mouseUp","navigationOnly","difSym","newEvent","stateInvalid","blinkInvalid","parsePart","_selectSegment","_blinkInvalidTimeout","_selectNearestSegment","returnValue","keycode","modifyPart","begin","initDate","initFormat","initCulture","initMessages","generateMatcher","retFormat","returnsFormat","setExisting","typedMonthPart","typedDayPeriodPart","sampleFormat","placeholders","mins","formatResult","getValue","newMonth","setMinutes","setSeconds","currentChar","newHours","monthNames","newYear","newMinutes","newSeconds","parseFormats","DatePicker","DIV","SPAN","DEFAULT","HOVEREVENTS","MAX","ARIA_EXPANDED","ARIA_HIDDEN","DateView","_dateViewID","_calendar","_setOptions","popupHovered","selectIsClicked","handled","_initialOptions","dateView","_updateARIA","_icon","aria-expanded","aria-owns","autocomplete","_createDateInput","_update","ARIATemplate","dateInput","_dateInput","_dateIcon","eventType","dateChanged","valueUpdated","textFormatted","aria-controls","formattedValue","isSameType","_ariaTemplate","ITEMCLICK","PUSH","OVERLAY","Drawer","_mode","mini","_miniMode","_initDrawerItems","mode","_setBodyOffset","drawerContainer","drawerItemsWrapper","_itemClick","swipeToOpen","minHeight","drawerElement","drawerWrapper","overlayMiniOffset","leftPositioned","drawerItems","separatorItems","_selectedItemIndex","overlayContainer","miniWidth","miniTemplate","_miniTemplate","isExpanded","_selectItem","drawerMini","_overlay","shouldShow","elementWidth","pastHalf","velocityThreshold","moveEventArgs","updatedPosition","limitedPosition","selectedItemIndex","shiftDate","numberOfViews","DECADE","MID","SPLITEND","SPLITSTART","MOUSELEAVE_NS","RangeSelectable","dragToSelect","mid","tables","lastCell","clearVariables","selectFrom","startIdx","selectTo","endIdx","_toggling","MultiViewCalendar","_mouseEnter","_calendarWidth","_initViews","viewName","_restoreSelection","showViewHeader","_views","_currentView","rangeSelectable","_dateInViews","_updateHeader","lastDate","prevDisabled","nextDisabled","_firstViewValue","visibleRange","_visibleRange","_navContainer","lastActive","focusedCell","_focusCell","_selectRange","_selection","unselect","_unselecting","_getFirstViewDate","_canRenderNextView","viewDate","fullYear","maxMonth","tablesWrapper","_preventChange","selectElements","domEvent","isCell","_fillRange","originaValue","focusTable","cellId","clearSelection","startInRange","endInRange","lastFrom","isPrimitive","getItemCount","listScreens","getDefaultItemHeight","mockList","bufferSizes","opposite","listValidator","downThreshold","upThreshold","lastScrollTop","scrollCallback","syncList","reorder","webkitTransform","map2","arr1","arr2","ITEMCHANGE","reshift","itemTemplate","placeholderTemplate","renderColumns","GROUPITEM","isActivePromise","VIRTUALLIST","CONTENT","LIST","HEADER","VIRTUALITEM","ITEM","HEIGHTCONTAINER","LISTBOUND","VIRTUAL_LIST_NS","_fetching","_selectedDataItems","_selectedIndexes","_rangesList","_promisesList","_triggerListBound","oppositeBuffer","mapValueTo","_selectProxy","_clean","_deferValueSet","mute","_selectingValue","_highlightSelectedItems","_getElementByDataItem","_mute","_createList","_forcePrefetch","shouldClear","_prefetchByValue","_checkValuesOrder","_removedAddedIndexes","dataView","_dataView","valueGetter","forSelection","mapValueToIndex","mapValueToDataItem","_getIndecies","deferredRange","itemCount","low","high","existingRange","isEmptyList","_activeDeferred","_getSkip","_findDataItem","_getRange","triggerEvent","_getElementByIndex","_focusedIndex","_getElementLocation","_screenHeight","heightContainer","initialIndices","isAlreadySelected","prefetchStarted","_selectDeferred","_deselectCurrentValues","_listCreated","_lastScrollTop","hasData","setScreenHeight","yPosition","yDownPostion","screenEnd","_generateItems","_saveInitialRanges","_buildValueGetter","_setHeight","getList","_listItems","_whenChanged","_reorderList","currentHeight","padHeight","lastRequestedRange","lastRangeStart","rangeStart","flatGroup","groupLength","_getterDeferred","firstItemIndex","_indexConstraint","firstVisibleGroup","fixedGroupText","currentVisibleGroup","firstVisibleDataItemIndex","firstVisibleDataItem","_itemMapper","listType","_currentGroup","_getDataItemsCollection","_listIndex","theValidator","theNew","currentOffset","list2","range2","_bufferSizes","buffers","selectedIndexes","removedindexesCounter","_deselectSingleItem","oldSkip","_clickHandler","firstItem","indexOfWordAtCaret","caretIdx","wordAtCaret","replaceWordAtCaret","defaultSeparator","words","placeholderSupported","AUTOCOMPLETEVALUE","AutoComplete","_loader","_keypress","_search","_prev","aria-haspopup","_resetFocusItemHandler","_resetFocusItem","_toggleCloseVisibility","_progressHandler","_separator","_unifySeparators","_last","wordIndex","isActive","_touchScroller","_muted","_selectValue","_defaultSeparator","itemSelected","_loading","DOMelement","assign","normalizeIndex","sameCharsOnly","character","nsFocusEvent","CLICKEVENTS","STATE_FILTER","STATE_ACCEPT","MSG_INVALID_OPTION_LABEL","_focusHandler","_focusInputHandler","_focusInput","_optionLabel","_inputTemplate","_word","_span","_mobile","_filterHeader","_attachFocusHandlers","hasOptionLabel","_textAccessor","_optionLabelText","valueTemplate","optionLabelTemplate","_arrow","_focusFilter","_resizeFilterInput","isInputActive","originalPrevent","_optionLabelDataItem","loweredText","_valueSetter","_assignInstance","_buildOptions","optionLabelValue","initialIndex","_presetValue","_filterPaste","_focusinHandler","_focusoutHandler","isIFrame","_wrapperMousedown","_wrapperClick","dropDownWrapper","isPopupVisible","_getElementDataItem","_matchText","_shuffleData","splitIndex","optionDataItem","_selectNext","oldFocusedItem","dataLength","isInLoop","charCode","_popupOpen","compareElement","jQueryCandidate","_resetOptionLabel","focusedItem","additionalClass","keepState","SELECTOR","accesskey","unselectable","getElements","optionLabelText","VISIBILITY","KSTATEHOVER","HierarchicalDragAndDrop","hovered","_hint","hintText","_removeTouchHover","_hintStatus","newStatus","statusElement","itemSelector","dropHint","reorderable","hoveredItem","itemTop","itemContent","insertOnTop","insertOnBottom","addChild","itemData","allowedContainers","itemFromTarget","_lastHover","dropHintContainer","setStatus","dropPrevented","dropPositionFrom","setValid","newValid","contentChild","templateNoWith","checkboxes","insertAction","indexOffset","nodeData","NODE","_dataSourceMove","referenceItem","referenceNodeIndex","moveContents","spriteRe","updateNodeHtml","toggleButton","innerWrapper","TreeView","subGroup","nodeContents","nodeIcon","TEMP_NS","CHECK","EXPAND","INDETERMINATE","COLLAPSE","DATABOUND","KTREEVIEW","ARIACHECKED","ARIADISABLED","isJQueryInstance","isDomElement","inferred","hasDataSource","loadOnDemand","_dataSourceUids","_animation","_dragging","_syncHtmlAndDataSource","_progress","checkChildren","updateIndeterminate","_ariaId","clickableItems","_toggleButtonClick","_checkboxChange","_checkboxLabelClick","_retryRequest","itemCheckbox","uidAttr","expandedAttr","checkboxesEnabled","animationOptions","hasCollapseAnimation","dragAndDrop","dragging","_hintText","sourceNode","statusClass","setStatusClass","navigationTarget","_tempPreventNavigation","destinationNode","dropPosition","triggerDragEnd","dragClue","fieldAccessor","_fieldAccessor","_checkboxes","setAttributes","wrapperCssClass","firstLevel","textClass","isLink","toggleButtonClass","groupAttributes","groupCssClass","itemElement","retry","_bindDataSource","_error","silentRead","requestFailed","fieldBindings","_setChecked","datasource","_setCheckedValue","_setIndeterminate","indeterminate","subnodes","_bubbleIndeterminate","skipDownward","isChecked","_clickTarget","_focusable","clickTarget","_nextVisible","_enabled","skipSelf","wrapperRe","itemRe","nextParent","_expanded","_previousVisible","focused","matchToFocus","focusedNode","isPrintable","_match","_matchTimer","_matchNextByText","textNodes","shouldNavigate","wrapperClasses","_getSelectedNode","groupElement","_nodes","groupData","_updateNodeClasses","defaultTemplate","textWrap","_processNodes","_dataItem","_insertNode","insertCallback","collapsed","childrenData","updatedGroupLength","nodeHtml","_renderGroup","_updateNodes","setCheckedState","nodeWrapper","isCollapsed","findByUid","_appendItems","viewItems","rootItems","_refreshChildren","_refreshRoot","groupHtml","retryHtml","showProgress","loadingText","_objectOrSelf","referenceDataItem","destTreeview","destDataSource","loadPromise","_toObservableData","loadModel","keepData","prevSibling","findByText","expandPath","proceed","nodeIds","_parentIds","expandTo","renderItems","_clickSelectedItem","_checkOnSelect","defaultrefresh","_treeViewDataBound","checkAll","_checkValue","_dropdowntree","SingleSelection","MultipleSelection","_getSelection","_noInitialValue","_isNullorUndefined","_valueMethodCalled","_setTreeViewOptions","_initWrapper","_treeview","_checkAll","treeviewOptions","dataImageUrlField","dataSpriteCssClassField","dataUrlField","rootDataSource","_clearTextAndValue","autoClose","singleTag","deleteTag","checkAllTemplate","tagMode","_getFilter","_filtering","tagList","_setValue","_selectItemByText","_currentValue","alreadyAddedTag","itemToAdd","itemToRemove","indexOfValue","isMultiple","_level","_tags","_tagUid","_multipleTags","_treeViewCheckAllCheck","_preventChangeTrigger","_updateSelectedOptions","selectedItems","_clearClick","_clearInput","getterFunction","levels","isReadOnly","valueDoesNotEqualPlaceHolder","rootItem","subItems","_deselectItem","_checkLoadedItems","_checkLoadedItem","_checkCheckAll","_uncheckCheckAll","checkAllCheckbox","_allItemsAreChecked","_allItemsAreUnchecked","_disableCheckChildren","_filterChange","_clickCheckAll","_changeCheckAll","_keydownCheckAll","_disabledCheckedItems","_disabledUnCheckedItems","_updateCheckAll","_toggleCheckAllItems","_dfs","_traverceChildren","_uncheckItemByUid","_uncheckItemEqualsUid","_itemEqualsText","_selectItemByValue","_itemEqualsValue","_checkItemByValue","_checkItemEqualsValue","itemText","itemValue","_allCheckedItems","_getAllCheckedItems","_checkAllCheckItem","_removeTagClick","isFilterInputActive","isWrapperActive","tagItem","_focusPrevTag","_focusNextTag","_focusFirstTag","_focusLastTag","_removeTag","activedescendant","firstTag","_clearDisabledTag","lastTag","tempItem","_tagTemplate","_tagList","valueToSelect","tagTemplate","aria-activedescendant","_innerWrapper","tagCollection","viewModel","multipleTag","tags","_removeValues","removedValues","_getNewValues","tagsArray","_findTag","tempItemValue","STATE_REBIND","newLineRegEx","_attachFocusEvents","_setText","syncValueAndText","_pasteTimeout","hasText","isCustom","_inputFocus","_arrowClick","_inputPaste","reinitialized","_scrollToFocusedItem","_updateSelection","hasInitialIndex","_updateItemFocus","isFirstPage","_setDomInputValue","caretStart","currentCaret","preventShow","maxLength","accessKey","A","LI","ACCEPT","FILTER","REBIND","DESELECT","FOCUSEDCLASS","SELECTEDCLASS","HOVERCLASS","NOCLICKCLASS","_optionsMap","_customOptions","_textContainer","_tagID","_initialOpen","_ariaSetLive","_ariaSetSize","maxSelectedItems","persistTagList","currentTag","_currentTag","_selectedItemChange","_initialValues","optionsMap","tagTextTemplate","notInput","closeButton","cancelable","listViewChild","customIndex","listViewChildren","_close","_updateTagListHTML","_tagListClick","_clearSingleTagValue","_retrieveData","_activeItem","inputValue","clearFilters","_normalizeValues","_setOption","isEmptyArray","_getActiveItem","_getSelectedIndices","activeItemIdx","activeIndex","_multipleSelection","_showBusyHandler","skipCaret","caretPos","textWidth","wrapperWidth","_buildSelectedItems","_angularTagItems","updatePersistTagList","removedItem","addedItem","_maxTotal","maxTotal","currentTotal","isSelected","indicesToSelect","selectIndices","aria-autocomplete","computedStyles","MCCOMBOBOX","POPUPCLASS","_allColumnsWidthsAreSet","_calculateDropDownWidth","dropDownWidth","totalWidth","createWrapper","isHorizontal","orientationCssClass","cssClasses","tickPlacementCssClass","tickPlacement","showButtons","createButton","buttonCssClass","createSliderItems","smallStep","createTrack","dragHandleCount","firstDragHandleTitle","leftDragHandleTitle","dragHandleTitle","rightDragHandleTitle","stepValue","formatValue","calculatePrecision","parseAttr","removeFraction","RangeSlider","MOUSE_DOWN","TRACK_MOUSE_DOWN","MOUSE_UP","TRACK_MOUSE_UP","MOVE_SELECTION","KEY_DOWN","MOUSE_OVER","DRAG_HANDLE","TRACK_SELECTOR","TICK_SELECTOR","STATE_SELECTED","STATE_FOCUSED","STATE_DEFAULT","STATE_DISABLED","SliderBase","rtlDirectionSign","_isHorizontal","_sizeFn","_outerSize","_createHtml","_trackDiv","_setTrackDivWidth","_maxSelection","_sliderItemsInit","_keyMap","37","39","38","35","36","33","largeStep","34","_distance","_refresh","sizeBetweenTicks","pixelWidths","_calculateItemsWidth","_setItemsWidth","_setItemsTitle","_calculateSteps","_setItemsLargeTick","trackDivPosition","bordersWidth","titleNumber","limit","increment","valueWithoutFraction","itemsCount","itemWidth","trackDivSize","pixelStep","_roundWidths","pixelWidthsArray","balance","_addAdditionalSize","additionalSize","_pixelSteps","_getValueFromPosition","mousePosition","dragableArea","halfStep","_getFormattedValue","tooltipTemplate","_getDraggableArea","_firstHandleDrag","_activeHandle","_lastHandleDrag","_activeHandleDrag","_updateTooltip","_focusWithMouse","_setTooltipTimeout","_removeTooltip","_tooltipTimeout","_clearTooltipTimeout","tooltipDiv","_formResetHandler","Slider","dragHandle","Selection","Drag","increaseButtonTitle","decreaseButtonTitle","clickHandler","mouseDownHandler","newVal","_nextValueByIndex","_valueIndex","_setValueInRange","timer","_clearTimer","_refreshAriaAttr","_tooltipDiv","moveSelection","selectionValue","selectionDiv","halfDragHanndle","rtlCorrection","owner","_activeDragHandle","_setZIndex","oldVal","_createTooltip","colloutCssClass","wnd","tooltipInnerDiv","_scrollOffset","moveTooltip","slideParams","constrainValue","noAnimation","fadeOut","dragHandles","sdhOffset","viewPortEnd","maxOverflow","firstInput","secondInput","warn","dragSelectionStart","dragSelectionEnd","activeHandleDrag","selectionStartValue","selectionEndValue","selectionStartIndex","selectionEndIndex","halfHandle","makeSelection","selectionPosition","relative","KEYS","BACKGROUNDCOLOR","ITEMSELECTEDCLASS","SIMPLEPALETTE","WEBPALETTE","WHITE","MESSAGES","noColor","clearColor","previewInput","CLICK_NS","ColorSelector","_tabIndex","_standalone","_triggerSelect","_updateUI","_onEnable","nohooks","_selectOnHide","ColorPalette","colors","tileSize","palette","_selectedID","FlatColorPicker","_hueElements","_selectedColor","_colorAsText","_sliders","_hsvArea","autoupdate","_clearedColor","_getHSV","_applyIEFilter","_hueSlider","_opacitySlider","_hsvRect","_hsvHandle","preview","track","hueChange","opacityChange","hueSlider","opacitySlider","kendoSlider","slide","rw","rh","_svChange","hsvRect","hsvHandle","_hsvEvents","hue","handlePosition","dontChangeInput","ColorPicker","_selector","toolIcon","_getPopup","selOptions","_noColorIcon","_isInputTypeColor","selectorType","kendoPopup","kendoButton","selectorColor","buttonHtml","CLASS_ICON","truncate","INPUT","SPIN","STATE_INVALID","INTEGER_REGEXP","NumericTextBox","inputType","isStep","_focusout","_arrows","_validation","_toggleText","factor","restrictDecimals","spinners","upArrowText","downArrowText","_upArrowEventHandler","_downArrowEventHandler","_spin","_upArrow","_downArrow","_keyup","_arrowsWrap","aria-valuemin","aria-valuemax","adjusted","_adjust","_focusin","arrows","_spinning","release","_validationIcon","_focusing","groupRegExp","extractRegExp","caretPosition","_culture","_removeInvalidState","CLASSNAME","_key","_step","isNumPadDecimal","_numericRegex","_addInvalidState","fractionRule","_floatRegExp","originalValue","rounder","isNotNull","DOMElement","convertItems","clearFilter","nested","filterValuesForField","flatFilterValues","distinct","seen","removeDuplicates","dataSelector","POPUP","REFRESH","EQ","NEQ","mobileRoles","booleanTemplate","customBooleanTemplate","defaultMobileTemplate","booleanMobileTemplate","FilterMenu","appendToElement","_defaultFilter","_init","setUI","_isMobile","_createMobileForm","_createForm","hasCustomTemplate","extra","_activate","closeCallback","filterMenuGuid","_closeForm","_mobileClear","defaultFilters","defaultOperator","filterModel","_bind","currentFilter","_stripFilters","_merge","_removeFilter","booleanRadioButton","booleanRadioButtonValue","operatorSelects","valueInputs","andLogicRadio","containsFilters","currentExpression","_checkForNullOrEmptyFilter","firstNullOrEmpty","secondNullOrEmpty","animations","enums","isTrue","isFalse","selectValue","additionalValue","additionalOperator","into","multiCheckNS","multiCkeckMobileTemplate","FilterMultiCheck","checkSource","_foreignKeyValues","forceUnique","_createLink","_link","_attachProgress","checkChangeHandler","_progressHideHandler","_clearTypingTimeout","labelText","searchString","searchTextBox","labels","selectedItemsFormat","_mobileCheckAll","createCheckAllItem","checkAllContainer","checkBoxAll","checkAllHandler","updateCheckAllState","getFilterArray","createCheckBoxes","checkValues","flatValues","itemsHtml","ele","checkBoxVal","valueFormat","clearAll","getEffectDirection","parseDirection","updateItemClasses","IMG","IMAGE","LINK","DEFAULTSTATE","LINK_SELECTOR","excludedNodesRegExp","updateArrow","updateFirstLast","arrowCssClass","getArrowCssClass","MENU","updateHasAriaPopup","parentLi","getParentLiItems","storeItemSelectEventHandler","selectHandler","getItemSelectEventHandler","setItemData","popupOpenerSelector","popupGroupSelector","getChildPopups","currentPopup","overflowWrapper","childPopupOpener","opener","popupId","POPUP_OPENER_ATTR","popupParentItem","popupElement","POPUP_ID_ATTR","itemPopup","animationContainerSelector","overflowMenuParents","getParents","mousewheelDelta","parentsScroll","scrollDirection","isPointerTouch","allPointers","touchPointerTypes","isTouch","removeSpacesBetweenItems","DELAY","SCROLLSPEED","ICON_SELECTOR","TIMER","ZINDEX","POINTERDOWN","TOUCHSTART","MOUSEWHEEL","SCROLLWIDTH","SCROLLHEIGHT","OFFSETWIDTH","OFFSETHEIGHT","KENDOPOPUP","HOVERSTATE","menuSelector","groupSelector","popupSelector","allItemsSelector","disabledSelector","availableItemsSelector","linkSelector","exclusionSelector","nextSelector","lastSelector","templateSelector","scrollButtonSelector","imageAttr","rendering","itemCssAttributes","imageCssAttributes","imgAttributes","contentCssAttributes","contentAttr","defaultClasses","arrowClass","Menu","_animations","nextItemZIndex","_initOverflow","_attachMenuEventsHandlers","openOnClick","clicked","closeOnClick","hoverDelay","popupCollision","_initData","_overflowWrapper","_preventClose","_removeHoverItem","_checkActiveElement","_mouseleavePopup","_mouseenterPopup","_documentClickHandler","_documentClick","_detachMenuEventsHandlers","backwardBtn","forwardBtn","initialWidth","initialCssWidth","_openedPopups","_scrollWrapper","_setOverflowWrapperWidth","_toggleScrollButtons","_popupsWrapper","menuWidth","wrapperCssWidth","_reinitOverflow","overflowChanged","_destroyOverflow","popupWrapper","popupParentLi","isNumeric","mouseWheelDistance","backward","backwardDouble","forwardDouble","scrolling","touchEvents","mouseenterHandler","mousedownHandler","scrollSpeed","_closeChildPopups","_toggleDisabled","attemptGetItem","plain","renderGroup","renderItem","parentItems","_openAfterLoad","visiblePopups","closePopup","overflowPopup","windowHeight","setScrolling","nextZindex","parentHorizontal","_triggerEvent","maxHeight","_configurePopupOverflow","_initPopupScrolling","popupOpener","groupId","_wrapPopupElement","skipMouseEvents","_initPopupScrollButtons","scrollButtons","_closeParentPopups","_keyTriggered","_setPopupHeight","popupOuterHeight","popupOffsetTop","bottomScrollbar","canFit","_initialHeight","dontClearClose","hasChildPopupsHovered","isPopupMouseLeaved","_isRootItem","_forceClose","isEnter","_closurePrevented","hoverItem","_hoverItem","_findRootParent","hasFocus","oldHoverItem","_oldHoverItem","nonContentGroupsSelector","_itemHasChildren","pointerTouch","delegateTarget","rootMenuItems","subMenuItems","toElement","_closePopups","rootPopup","groupParent","innerPopup","_innerPopup","openHandle","childGroup","childGroupVisible","shouldCloseTheRootItem","childPopupId","formNode","targetHref","sampleHref","isLocalLink","isTargetLink","_parentsUntil","enterKey","itemSelectEventData","isSelectItemDefaultPrevented","isSelectDefaultPrevented","_getEventData","_moveHover","belongsToVertical","_itemBelongsToVertival","_itemDown","_itemUp","_itemEsc","_childPopupElement","menuIsVertical","nextItem","_scrollToItem","_itemRight","parentItem","nextAll","_itemLeft","scrollDir","currentScrollOffset","itemSize","itemOffset","ulSize","scrollButtonSize","itemPosition","wrapperElement","itemsToUpdate","updateProxy","_updateItem","removeProxy","_removeItem","nextElement","itemWrapper","sprite","menu","dataContentField","ContextMenu","_marker","_wire","_initialWidth","alignToAnchor","_showProxy","_closeProxy","_configurePopupScrolling","_setPopupWidth","windowWidth","popupOuterWidth","popupOffsetLeft","maxWidth","_closeTimeoutProxy","_eventOrigin","_targetChild","normalClick","sameTarget","containment","_triggerProxy","toHash","leafColumns","attrEquals","insertElementAt","ASC","DESC","FILTERMENU","ColumnMenu","_createMobileMenu","_createMenu","_lockColumns","sortAscending","sortDescending","columnVisibility","lock","unlock","_ownerColumns","showColumns","lockedColumns","_deactivate","_updateMenuItems","mobileTemplate","MobileMenu","columnMenu","_applyChanges","_cancelChanges","_updateLockedColumns","initialSort","_originalObject","filterMenu","_updateColumnsMenuHandler","_updateColumnsLockedStateHandler","_setMenuItemsVisibility","_reorderMenuItems","_eachRenderedMenuItem","renderedListElement","renderedList","duplcateColumns","duplicateColumnIndex","fieldValue","filterByTitle","containerElement","matchTitle","duplicateColumns","menuColumns","originalField","_sortDataSource","allowUnsort","_updateColumnsMenu","_updateColumnsLockedState","showColumn","hideColumn","switchWidget","lockedAttr","columnsInMenu","visibleFields","visibleDataFields","lockedCount","nonLockedCount","columnsNotInMenu","hiddenColumnsNotInMenu","multi","lockColumn","unlockColumn","lockItem","unlockItem","_filterExist","_createCheckBoxes","_updateSelectedItems","otherItem","otherItemId","kendoSwitch","_destroyCheckBoxes","leafDataCells","indexAttr","indexA","indexB","SINGLE","sorterNS","TLINK","ARIASORT","ColumnSorter","initialDirection","showIndexes","headerIndex","sortOrder","leafCells","_toggleSortDirection","getKendoGrid","_endlessPageSize","fieldType","convertToValueBinding","bindAttr","createAttributes","ruleName","stringRule","DATATYPE","BINDING","specialRules","addIdAttribute","addValidationRules","modelField","oldIE","nameSpecialCharRegExp","ERRORTEMPLATE","EQUAL_SET","editors","kendoNumericTextBox","kendoDatePicker","mobileEditors","Editable","_validateProxy","_validate","clearContainer","skipFocus","editor","isObject","isValuesEditor","isCustomEditor","preventChangeTrigger","_validationEventInProgress","bindAttribute","bindingRegex","validatable","modelFields","toInt","constrain","normalizedValue","executableScript","getPosition","parentOverflowX","parentOverflowY","offsetLeft","WindowResizing","_preventDragging","KWINDOWRESIZEHANDLES","addOverlay","removeOverlay","WindowDragging","MODAL_NS","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KDIALOGCONTENT","KOVERLAY","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","CURSOR","MINIMIZE","MAXIMIZE","RESIZESTART","DATADOCOVERFLOWRULE","MINIMIZE_MAXIMIZE","KPIN","KUNPIN","PIN_UNPIN","TITLEBAR_BUTTONS","REFRESHICON","WINDOWEVENTSHANDLED","zero","small","medium","large","Window","windowContent","windowFrame","globalWindow","isVisible","suppressActions","actions","_createWindow","_dimensions","minTop","minLeft","maxTop","maxLeft","toFront","_buttonEnter","_buttonLeave","_windowActionHandler","windowInstance","_resizable","aria-labelledby","_onDocumentResize","_tabKeyTrap","sizeClass","contentBoxSizing","lrBorderWidth","tbBorderWidth","_isPinned","_updateBoundaries","_animationOptions","basicAnimation","resizable","toggleMaximization","resizeHandle","_actions","titlebar","windowSpecificCommands","cachedOptions","_enableDocumentScrolling","fade","autoFocus","isMaximized","isMinimized","_closable","newWidth","newHeight","w","unpin","maximize","minimize","overlay","preventScroll","_stopDocumentScrolling","_actionForIcon","k-i-close","k-i-window-maximize","k-i-window-minimize","k-i-window-restore","k-i-refresh","k-i-pin","k-i-unpin","_modals","zStack","_object","newTop","newLeft","documentWindow","_scrollIsAppended","titleBarHeight","titleBar","titleElement","otherModalsVisible","overlayFx","showOptions","containmentContext","Fade","fadeIn","_containerScrollTop","_containerScrollLeft","_removeOverlay","suppressAnimation","modals","hideOverlay","hideOptions","systemTriggered","defaultPrevented","lastModal","_actionable","_shouldFocus","windowTop","currentWindow","originalZIndex","windowObject","zIndexNew","shouldRestrictTop","restoreOptions","_sizingAction","actionId","$body","$html","_storeOverflowRule","_restoreOverflowRule","$element","_isOverflowStored","overflowRule","initOptions","contentFrame","_triggerRefresh","_ajaxComplete","_loadingIconTimeout","_ajaxError","_ajaxSuccess","contentTemplate","_showLoading","iframeSrcAttributes","contentHtml","wrapperPosition","relativeElMarginLeft","relativeElMarginTop","elementPadding","initialPosition","resizeDirection","initialSize","containerOffset","_relativeElMarginLeft","_relativeElMarginTop","leftRtlOffset","scrollOffset","windowBottom","windowRight","newWindowTop","initialWindowPosition","initialPointerPosition","startPosition","_finishDrag","SKIP_TRANSITION_ON_BACK_BUTTON","paneWrapper","collapsiblePane","historyCallback","viewEngine","_historyNavigate","_historyReplace","rootNeeded","serverNavigation","closeActiveDialogs","viewShow","loadStart","loadComplete","sameViewRequested","viewTypeDetermined","_setPortraitWidth","dialogs","navigateToInitial","portraitWidth","paneContainer","DEFAULTMIN","DEFAULTMAX","DEFAULTVALUE","DEFAULTCHUNKCOUNT","KPROGRESSBAR","KPROGRESSBARREVERSE","KPROGRESSBARINDETERMINATE","KPROGRESSBARCOMPLETE","KPROGRESSWRAPPER","KPROGRESSSTATUS","LABEL_POSITION_END","KCOMPLETEDCHUNK","KUPCOMINGCHUNK","PROGRESSTYPE","PERCENT","CHUNK","COMPLETE","HUNDREDPERCENT","DEFAULTANIMATIONDURATION","progressStatus","ProgressBar","_progressProperty","_fields","_validateType","_progressAnimation","_updateProgress","chunkCount","showStatus","_isStarted","progressWrapper","initialStatusValue","_addChunkProgressWrapper","_calculatePercentage","validated","_roundValue","_updateChunks","_onProgressUpdateAlways","_updateProgressWrapper","completedChunks","percentagesPerChunk","percentageParsed","completedChunksCount","animationDuration","animationCssOptions","_addRegularProgressWrapper","_onProgressAnimateStart","_onProgressAnimate","_onProgressAnimateComplete","always","progressStatusWrapSize","progressInPercent","progressValue","progressWrapperSize","chunkSize","_normalizeChunkSize","lastChunk","_calculateChunkSize","chunkContainer","_onePercent","supportsDeflate","pako","deflate","BinaryStream","eof","readByte","writeByte","ensure","readShort","writeShort","readShort_","writeShort_","readLong","writeLong","readLong_","writeLong_","readFixed","writeFixed","readFixed_","writeFixed_","times","readString","writeString","write","stream","HAS_TYPED_ARRAYS","bytes","nbytes","saveExcursion","writeBase64","BASE64","ucs2decode","counter","ucs2encode","atobUint8Array","createUint8Array","base64ToUint8Array","hasOwnProperty$1","sortedKeys","Directory","scalerType","tableCount","searchRange","entrySelector","rangeShift","checksum","deftable","methods","Ctor","rawData","nextSubsetTag","subsetTag","Subfont","subset","unicodes","ogid2ngid","ngid2ogid","ncid2ogid","firstChar","nextGid","psName","TTFFont","numFonts","makeOutput","PDFValue","beforeRender","renderArray","renderDate","PDFDictionary","indentLevel","writeData","withIndent","NL","wrapObject","renderValue","renderFull","getOption","PAPER_SIZE","a4","unitsToPoints","PDFDocument","defval","catalog","pageTree","nameTree","objcount","objects","FONTS","IMAGES","GRAD_COL_FUNCTIONS","GRAD_OPC_FUNCTIONS","GRAD_COL","GRAD_OPC","PDFCatalog","PDFPageTree","JavaScript","Names","PDFString","S","JS","props","setPages","Producer","Title","Author","Subject","Keywords","Creator","CreationDate","addPage","contentWidth","contentHeight","PDFStream","Contents","Parent","MediaBox","PDFPage","_content","xrefOffset","zeropad","Root","Info","loadBinary","cont","req","XMLHttpRequest","responseType","VBArray","responseBody","send","loadFont","FONT_CACHE","clearImageCache","loadImage","_load","_onload","_onerror","_trycanvas","imgdata","hasAlpha","alpha","rawbytes","getImageData","bloburl","PDFRawImage","PDFJpegImage","FileReader","readAsArrayBuffer","manyLoader","loadOne","mm2pt","cm2pt","cm","in2pt","inch","defclass","Base","PDFName_cache","PDFName","colorSpace","bitsPerComponent","soi","ff","SOF_CODES","Type","Subtype","Width","Height","BitsPerComponent","Filter","ColorSpace","Decode","asStream","_resourceName","RESOURCE_COUNTER","SMask","makeHash","cacheColorGradientFunction","r1","r2","g2","FunctionType","Domain","Range","N","C0","C1","cacheOpacityGradientFunction","makeGradientFunctions","assemble","funcs","Functions","Bounds","Encode","prevColor","curColor","opacities","cacheColorGradient","isRadial","coords","shading","ShadingType","Coords","Extend","cacheOpacityGradient","AIS","CA","ca","FormType","BBox","CS","I","Resources","ExtGState","a0","Shading","s0","cacheGradient","unquote","parseFontDef","fontdef","variant","mkFamily","FONT_MAPPINGS","fontAlias","isIdentityMatrix","doIt","drawPage","addMargin","optimize","kendoGeometry","landscape","drawElement","producer","subject","keywords","autoPrint","imgDPI","dispatch","loadFonts","loadImages","saveAs$1","dataURL","_pdfDebug","setStrokeOptions","setFillOptions","drawPath","drawMultiPath","drawCircle","drawArc","drawGroup","drawRect","setStrokeColor","setStrokeOpacity","setLineWidth","setDashPattern","DASH_PATTERNS","LINE_CAP","LINE_JOIN","setFillColor","setFillOpacity","_drawPath","shouldDraw","maybeGradient","clipStroke","maybeFillStroke","fillStroke","nop","maybeDrawRect","isRect","seg","bezier","TEXT_RENDERING_MODE$1","fillAndStroke","beginText","setFont","setTextRenderingMode","endText","addLink","sz","newShape","optArray","opt","withClipping","saveclipbox","clipbox","savematrix","inClipbox","currentBox","exportPDF","exportPDFToBlob","kendoPdf","HeadTable","LocaTable","HheaTable","MaxpTable","HmtxTable","GlyfTable","NameTable","PostTable","CmapTable","OS2Table","PDFHexString","PDFStandardFont","PDFFont","PDFToUnicodeCmap","TEXT_RENDERING_MODE","keyStr","readTable","directoryLength","headOffset","tableData","adjustment","maxpow2","LN2","revision","checkSumAdjustment","magicNumber","flags","unitsPerEm","xMin","yMin","xMax","yMax","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","head","offsetOf","lengthOf","needsLongFormat","ascent","descent","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numOfLongHorMetrics","ids","numGlyphs","maxPoints","maxContours","maxComponentPoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","glyphIds","hhea","lsbCount","advance","lsb","maxp","leftSideBearings","forGlyph","SimpleGlyph","CompoundGlyph","idOffsets","MORE_COMPONENTS","ARG_1_AND_2_ARE_WORDS","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_SCALE","compound","old2new","glyphFor","loca","numberOfContours","glyph","glyphs","oldIds","NameEntry","platformID","platformSpecificID","languageID","nameID","stringOffset","nameRecords","strings","rec","postscriptEntry","postscriptName","strTable","strCount","POSTSCRIPT_GLYPHS","numberOfGlyphs","italicAngle","underlinePosition","underlineThickness","isFixedPitch","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","mapping","post","CmapEntry","codeMap","segCount","endCode","startCode","idDelta","idRangeOffset","glyphId","ngroups","endCharCode","glyphCode","language","renderCharmap","new_gid","charcode","gid","segCountX2","deltas","rangeOffsets","startGlyph","codes","startCodes","endCodes","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","familyClass","panose","charRange","vendorID","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","xHeight","capHeight","defaultChar","breakChar","maxContext","use","old_gid","cmap","encodeText","glyphsFor","glyf","new_gid_ids","old_gid_ids","lastChar","hmtx","OS/2","os2","directory","cidToGidMap","cid","widthOfGlyph","makeSubset","a5","a6","a7","a8","a9","a10","b0","b3","b4","b5","b6","b7","b8","b9","b10","c0","c3","c4","c5","c6","c7","c8","c9","c10","executive","folio","legal","tabloid","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Courier","Courier-Bold","Courier-Oblique","Courier-BoldOblique","ZapfDingbats","getFont","getImage","getOpacityGS","forStroke","gs","_opacityGSCache","txt","escape","compress","Length","pagesObj","Pages","Kids","Count","pageObj","BaseFont","Encoding","_pdf","_font","_sub","stemV","isSerif","isScript","getTextWidth","descendant","unimap","unimapStream","sub","fontStream","Length1","FontName","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","FontFile2","charWidths","chunk","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","FirstChar","LastChar","DW","W","CIDToGIDMap","_makeCidToGidMap","DescendantFonts","ToUnicode","unicode","_rcount","_textMode","_fontResources","_gsResources","_xResources","_patResources","_shResources","_opacity","_annotations","_fontSize","_contextStack","ProcSet","Font","XObject","Pattern","Annots","sx","sy","_requireTextMode","_requireFont","setTextLeading","requestedWidth","outputWidth","showTextNL","uri","ll","_toPage","ur","Border","URI","sname","oname","dashPhase","setMitterLimit","mitterLimit","_context","bezier1","bezier2","ellipse","_X","_Y","closeStroke","serif","serif|bold","serif|italic","serif|bold|italic","sans-serif","sans-serif|bold","sans-serif|italic","sans-serif|bold|italic","monospace","monospace|bold","monospace|italic","monospace|bold|italic","zapfdingbats","zapfdingbats|bold","zapfdingbats|italic","zapfdingbats|bold|italic","fillAndClip","strokeAndClip","fillStrokeClip","dashDot","longDash","longDashDot","longDashDotDot","solid","butt","miter","bevel","Document","PDFMixin","saveAsPDF","_drawPDF","_drawPDFShadow","pageNumber","drawOptions","defer","buttonKeyTrigger","PopupBox","Alert","kendoAlert","Confirm","kendoConfirm","Prompt","kendoPrompt","KDIALOG","KICONCLOSE","KCONTENTCLASS","KCONTENTSELECTOR","KCONTENT","KSCROLL","KTITLELESS","KDIALOGTITLE","KDIALOGTITLEBAR","KALERT","KCONFIRM","KPROMPT","KTEXTBOX","INITOPEN","TOUCHMOVE","DATAHTMLTAPYRULE","CSSFLEXBOX","okText","promptInput","overlaySelector","DialogBase","_centerCallback","_center","wrapperTemplate","_createDialog","_defaultFocus","_triggerOpen","_createActionbar","_setElementMaxHeight","_setElementHeight","paddingBox","elementMaxHeight","_paddingBox","_uiHeight","_applyScrollClassName","hasScroll","actionbar","actionbarHeight","titlebarHeight","_waiAriaOverlay","_removeWaiAriaOverlay","_overlayedNodes","jthis","hiddenValue","_closeClick","_closeKeyHandler","closable","titleId","titlebarActions","closeAction","isStretchedLayout","buttonLayout","_addButtons","_normalizeButtonSize","btn","actionClick","_actionClick","actionKeyHandler","_actionKeyHandler","buttonSize","_mergeTextWithOptions","lastButton","closeBtn","actionButtons","_runActionBtn","preventClose","_triggerInitOpen","_focusDialog","_openAnimationEnd","_initOpenTriggered","_stopCenterOnResize","_closeAnimationEnd","_centerOnResize","_trackResize","_touchStart","passive","_touchMove","$target","upScroll","preventYScroll","encodedHtml","Dialog","alertWrapper","_ensureContentId","_ariaDescribedBy","_initFocus","_chooseEntryFocus","alert","primary","confirmDialog","confirm","_createPrompt","promptContainer","promptInputContainer","promptDialog","prompt","groupCells","stringifyAttributes","lockedContent","attachCustomCommandEvent","normalizeColumns","parentIds","addHiddenStyle","footerAttributes","headerAttributes","columnParent","columnParents","setColumnVisibility","setVisibility","removeHiddenStyle","setColumnMediaVisibility","setColumnMatchesMedia","hideByMedia","_hideByMedia","columnMatchesMedia","isUndefined","isCellVisible","isElementVisible","visibleColumns","columnsWithMedia","minScreenWidth","toJQuery","updateCellRowSpan","sourceLockedColumnsCount","lockedColumnDepth","nonLockedColumnDepth","nonLockedColumns","moveCellsBetweenContainers","sources","leafs","sourcesDepth","targetDepth","addRowSpanValue","moveCells","updateCellIndex","columnPosition","sourcePosition","columnVisiblePosition","ths","cellCounts","findParentColumnWithChildren","targetLocked","findReorderTarget","masterColumns","parentColumns","flatColumnsInDomOrder","flatColumns","targetParentContainerIndex","hiddenLeafColumnsCount","columnsWidth","cols","colWidth","removeRowSpanValue","removeEmptyRows","emptyRowsCount","mapColumnToCellRows","visibleNonLockedColumns","visibleLockedColumns","visibleLeafColumns","childColumns","getColumnsFields","parentColumnsCells","parentCellsWithChildren","prevCells","childColumnsCells","colSpanAttr","appendContent","tbodySupportsInnerHtml","normalizeCols","hasDetails","normalizeHeaderCells","th","convertToObject","formatGroupValue","columnValues","isForeignKey","setCellVisibility","nonDataCellsRegExp","hideColumnCells","groupRows","groupFooters","showColumnCells","updateColspan","toAdd","toRemove","tableWidth","syncTableHeight","table1","table2","lockedHeigth","tableHeigth","filterRowRegExp","adjustRowHeight","row1","row2","offsetHeight1","offsetHeight2","getCommand","direct","isColumnGroupable","groupable","isGroupedBy","isColumnEditable","isInputElement","tableClick","isHeader","lockedTable","headerTable","lockedHeader","isInput","currentTable","_setCurrent","navigatable","CHECKBOXINPUT","leftMostPosition","isInEdit","groupCellBuilder","headerTemplateIndex","ARIALABEL","groupCellLockedContentBuilder","groupRowBuilder","colspan","groupRowLockedContentBuilder","HIERARCHY_CELL_CLASS","DATA_CELL","SELECTION_CELL_SELECTOR","NAVROW","NAVCELL","ITEMROW","FIRSTITEMROW","LASTITEMROW","FIRSTNAVITEM","HEADERCELLS","CONTENTRLOCKEDCONTAINER","GROUPCELLCLASS","EDIT","BEFOREEDIT","SAVE","REMOVE","DETAILINIT","FILTERMENUINIT","COLUMNMENUINIT","FILTERMENUOPEN","COLUMNMENUOPEN","CELLCLOSE","COLUMNHIDE","COLUMNSHOW","SAVECHANGES","DETAILEXPAND","DETAILCOLLAPSE","ITEM_CHANGE","PAGE","PAGING","FOCUSABLE","CHECKBOX","NORECORDSCLASS","LINK_CLASS","ICON_CLASS","ORDER_CLASS","HEADER_COLUMN_MENU_CLASS","FILTER_MENU_CLASS","COLUMNRESIZE","COLUMNREORDER","COLUMNLOCK","COLUMNUNLOCK","CONTAINER_FOR","INCELL","INLINE","UNIQUE_ID","MINCOLSPANVALUE","COLSPAN","DELETECONFIRM","NORECORDS","CONFIRMDELETE","CANCELDELETE","templateHashRegExp","whitespaceRegExp","COMMANDBUTTONTMPL","SELECTCOLUMNTMPL","SELECTCOLUMNHEADERTMPL","isIE7","isIE11","isMac","VirtualScrollable","maxScrollHeight","verticalScrollbar","_scrollingTimeout","overflow-y","delayLoading","_rangeStart","isScrollingUp","_scrollbarTop","lastItemIndex","_preventScroll","_scrollTop","scrollToTop","_scrollTo","scrollToBottom","_scrollWrapperToTop","_scrollWrapperToBottom","_scrollWrapperOnColumnResize","initialScrollTop","_wrapperScrolled","_isScrolledToBottom","_isWrapperScrolledToBottom","_isScrolledToTop","_isElementVisible","_isElementVisibleInWrapper","scrollIntoView","containerHeight","containerScroll","scrollingUp","currentSkip","fetching","prefetchAt","repaintScrollbar","shouldScrollWrapper","wasScrolledToBottom","addScrollBarHeight","totalHeight","defaultCommands","edit","canceledit","Grid","_tbody","_pageable","_thead","_groupable","_setContentHeight","_navigatable","_clipboard","_details","_attachCustomCommandsEvent","_adaptiveColumns","_minScreenSupport","_groups","scrollableContent","virtualScrollable","allowCopy","pageable","persistSelection","rowTemplate","altRowTemplate","noRecords","detailTemplate","columnResizeHandleWidth","cancelDelete","confirmation","confirmDelete","expandCollapseColumnHeader","ungroupHeader","_destroyColumnAttachments","_navigatableTables","pager","_progressTimeOut","_collapseGroupsTimeOut","_endlessFetchTimeOut","_destroyGroupable","clearArea","_selectedIds","copyHandler","updateClipBoardState","clearAreaHandler","_resizeUserEvents","_resizeHandleDocumentClickHandler","_destroyVirtualScrollable","_destroyEditable","_removeLockedContainers","minScreenResizeHandler","_detachColumnMediaResizeHandler","_draggableInstance","lockedRowTemplate","lockedAltRowTemplate","lockedGroupFooterTemplate","noRecordsTemplate","scrollables","lockedFooter","_groupableClickHandler","_groupRows","_setContentWidthHandler","getOptions","initialData","mobileWrapper","_cellId","_hasDetails","_createResizeHandle","headerWrap","ieCorrection","firefoxCorrection","indicatorWidth","_autoFitLeafColumn","_positionColumnResizeHandle","lockedHead","_resizeHandleDocumentClick","_resetResizeHandleHeader","_hideResizeHandle","_positionColumnResizeHandleTouch","resizeColumn","isLocked","isHidden","contentTable","columnMinWidth","minResizableWidth","gridWidth","_footerWidth","_scrollVirtualWrapperOnColumnResize","_applyLockedContainersWidth","_syncLockedContentHeight","_syncLockedHeaderHeight","columnStart","isMobile","rtlMultiplier","resizeend","oldWidth","_reorderable","kendoReorderable","lockable","reorderColumn","_reorderHeader","sourceLockedColumns","targetLockedColumns","destPosition","_reorderContent","footerCol","beforeVisibleColumn","columnsArray","lockedRows","visibleSources","destIndex","colSourceIndex","colDest","headerCol","_findClosestVisibleColumnIndex","_hasFilterRow","closestVisibleColumn","leafIndex","autoFitColumn","contentDiv","footerTable","oldColumnWidth","newColumnWidth","visibleLocked","notGroupOrHierarchyCol","notGroupOrHierarchyVisibleCell","lockChanged","sourceColumns","destColumn","groupHeaderColumnTemplateColumns","groupHeaderColumnTemplate","_updateLockedCols","_updateCols","_updateColumnCellIndex","_updateColumnSorters","_renderGroupRows","_updateTablesWidth","_updateFirstColumnClass","td","lockedColumnOffset","_modelForContainer","_editMode","_editContainer","closeCell","_scrollVirtualWrapper","editContainer","_mousedownOnEditCell","isLockedCell","editCell","shouldCloseCell","editRow","_isVirtualInlineEditable","removeRow","_confirmation","_attachModelChange","_shouldClearEditableState","_clearEditableState","kendoEditable","_isVirtualIncellEditable","_editableState","_relatedRow","_syncLockedScroll","_adjustLockedHorizontalScrollBar","_adjustRowsHeight","_syncLockedFooterHeight","editView","_editCancelClickHandler","_editUpdateClickHandler","_detachModelChange","_destroyEditView","_editableIsClosing","_confirmDialog","_modelChangeHandler","_modelChange","isCancel","_displayCell","storage","templateSettings","tmpl","_cellTmpl","_removeRow","modelId","cancelRow","_createPopupEditor","_createInlineEditor","_editCancelClick","_editUpdateClick","saveRow","updateText","cancelText","updateIconClass","cancelIconClass","tempCommand","editMenuGuid","kendoWindow","_openPopUpEditor","windowEditor","windowOptions","_editAnimation","_displayRow","newRow","angularElements","angularData","isAlt","_checkBoxSelection","_showMessage","_isVirtualEditable","_virtualPageToTop","saveChanges","addRow","createAt","createAtBottom","virtualEditable","_removeCurrent","_virtualAddRow","_editModel","_firstEditableColumnIndex","_virtualAddRowAtBottom","_virtualAddRowAtTop","_virtualPageToBottom","_virtualPage","_toolbarTmpl","_searchTimeOut","searchFields","attributeClassMatch","_hasFooters","groupRow","collapseGroup","expandGroup","_isLocked","_attachGroupable","_addGroupableOptionsToHeader","headerCell","columnOptions","columnFieldMap","headerCells","_headerCells","cellFieldAttr","kendoGroupable","_removeGroupableOptionsFromHeader","_continuousItems","lockedItems","nonLockedItems","notString","selectedValues","_persistSelectedRows","_uncheckCheckBoxes","_checkRows","_toggleHeaderCheckState","_deselectCheckRows","copySelection","areaClipBoard","getTSV","Event","getSelection","cellsOffset","lockedCols","inLockedArea","rowsOffset","delimeter","onlyVisible","cellText","_anyColumnHasMediaQuery","_setColumnsMediaVisibility","_attachColumnMediaResizeHandler","_columnsWithMediaQuery","_columnMediaResizeHandler","_onColumnMediaResize","_setContentMediaWidth","_setColumnMediaVisibility","_showColumnByMedia","_hideColumnByMedia","initiallyHidden","headerColumns","headerColgroup","headerColumnsCount","visibleHeaderColumnsCount","hiddenHeaderColumnsCount","totalHeaderWidth","currentHeaderWidth","colgroupChild","columnStyleWidth","any","hideMinScreenCols","_iterateMinScreenCols","_relatedCell","selectableoptions","allRows","dataSourceOptions","selectedViewIds","selectedKeyNames","_updateCurrentAttr","headerId","_scrollCurrent","tableContainer","isInLockedContainer","isInContent","scrollableContainer","_rowVirtualIndex","preventTrigger","_lastCellIndex","elementToLowercase","elementOffsetDir","containerOffsetDir","dataTables","headerTables","_openHeaderMenu","_tableFocus","_tableBlur","_tableKeyDown","_setTabIndex","requestInProgress","canHandle","_moveUp","_moveDown","_moveRight","_moveLeft","_handlePageDown","_handlePageUp","_handleHome","_handleEnd","_handleSpaceKey","_handleEnterKey","_handleEscKey","_handleTabKey","collapseRow","_moveColumn","_prevHorizontalCell","_tabNext","_horizontalContainer","expandRow","_nextHorizontalCell","_prevVerticalCell","_verticalContainer","_nextVerticalCell","isLeft","ctrl","rowContainer","isInLockedTable","isInBody","isInCell","_handleEditing","_toggleCurrent","originalIndex","_currentDataIndex","lockedColumnsCount","tmpIndex","currentRowCells","hiddenColumns","switchRow","isEdited","triggerHandler","_initMobile","_createPane","originalPageSize","hasVirtualScroll","_createVirtualScrollable","_scrollLeft","_endlessFetchInProgress","_skipRerenderItemsCount","_averageRowHeight","_restoreEditableState","_focusEditable","_onVirtualPaging","_cacheEditableState","_isVirtualPopupEditable","editableState","editedModel","inlineMode","incellMode","editedField","_canFocusEditable","_renderNoRecordsContent","noRecordsElement","_setContentWidth","expander","hiddenDivClass","hiddenDiv","footerWrap","nonLockedCols","nonLockedColsWidth","isGridHeightSet","scrollableHeight","initialHeight","currentRowHeight","_rowHeight","_sum","_measures","_requestStart","relatedRow","selectableRow","childCells","originalCells","_wrapFooter","_appendLockedColumnFooter","footerRow","_appendCols","_columnMenu","menuOptions","hasMultiColumnHeaders","initCallback","openCallback","sortHandler","filterHandler","kendoColumnMenu","_filterable","columnFilterable","filterInit","filterOpen","kendoFilterMultiCheck","kendoFilterMenu","_filterRow","rowheader","suggestDataSource","customDataSource","inputWidth","suggestionOperator","showOperators","kendoFilterCell","_sortable","sorterInstance","kendoColumnSorter","initialColumns","_updateColumnIDs","_checkboxClick","_headerCheckboxClick","checkBox","parentGrid","isSelecting","_tmpl","alt","skipGroupCells","dirtyCellTemplate","_dirtyCellTemplate","dirtyField","_headerCellText","_dirtyIndicatorTemplate","columnLeafs","columnsLocked","groupHeaderColumnTemplateLockedColumns","groupHeaderColumnTemplateNonLockedColumns","_detailTmpl","_footerTmpl","_groupHeaderTmpl","lockedGroupHeaderColumnTemplate","_noRecordsTmpl","scrollableNoGridHeightStyles","rowClass","fieldsMap","templateFunctionStorage","templateFunctionCount","hasFiltering","columnsWithoutFiltering","detailRow","masterRow","ariaLabelText","ariaExpandText","detailCell","correctIdx","classesRegEx","sectionRowIndex","_createHeaderCells","_appendLockedColumnContent","spanIdx","skipHiddenCount","lockedCells","_appendLockedColumnHeader","trFilter","hasFilterRow","filterCellOffset","filterCells","leafColumnsCount","filtercellCells","filterRow","existingFilterRow","syncHeight","hasLockedColumns","hasTHead","headerContent","_updateHeadersAttr","_prepareColumns","_retrieveFirstColumn","_updateHeaderCols","_autoColumns","_rowsHtml","_groupData","skipFooter","firstColumn","footerDefaults","_groupAggregatesDefaultObject","groupItems","headerData","footerData","_groupRowHtml","groupHeaderBuilder","skipColspan","skipLastGroup","firstVisibleColumnGroupHeaderTemplate","_skippedGroups","toHide","groupToCollapse","showFooter","footerCount","relatedGroup","_groupToCollapse","footersVisibility","groupsCount","toggleVisibility","_firstDataItem","grouped","headerCellIndex","_columnVisibilitySetter","_setParentsVisibility","originalColumn","columnLeafIndex","_isActiveInTable","contentScrollLeft","cachedItemsToSkip","isCurrentInHeader","_renderContent","_renderLockedContent","_togglePagerVisibility","_restoreCurrent","selectedRows","dataItemKey","_cleanupDetailItems","_angularGroupItems","_angularGroupFooterItems","flatViewLength","endlessAppend","groupRowBuilderFunc","groupHeaderData","prevElement","newGroupRowElement","currentRow","firstColumnGroupData","rows2","containersLength","heights","_drawPDF_autoPageBreak","startingPage","renderPage","origBody","_initPDFProgress","exportPage","kendoProgressBar","DATABINDING","FOCUSSELECTOR","KEDITITEM","ListView","_itemId","_crudHandlers","altTemplate","editTemplate","_item","_focusNext","pagerId","-webkit-overflow-scrolling","scrollDirectionFunc","UseJQueryoffset","elementDimension","containerScrollAmount","containerDimension","clickCallback","focusAgain","isTextBox","editItem","_modelFromElement","_closeEditable","mousedownNs","touchstartNs","clickNs","getSortedDomIndices","DRAGGEDCLASS","FOCUSED_CLASS","SELECTED_STATE_CLASS","RESET","DRAG_CLUE_CLASS","DROP_HINT_CLASS","CommandFactory","ListBoxCommand","RemoveItemsCommand","MoveItemsCommand","MoveUpItemsCommand","MoveDownItemsCommand","TransferItemsCommand","TransferItemsToCommand","TransferItemsFromCommand","TransferAllItemsToCommand","TransferAllItemsFromCommand","ToolBar","DASH","HASH","KENDO_LISTBOX","DISABLED_STATE_CLASS","ENABLED_ITEM_SELECTOR","ENABLED_ITEMS_SELECTOR","TOOLBAR_CLASS","TOOL_SELECTOR","LIST_CLASS","LIST_SELECTOR","ADD","REORDER","MOVE_UP","MOVE_DOWN","TRANSFER_TO","TRANSFER_FROM","TRANSFER_ALL_TO","TRANSFER_ALL_FROM","COMMAND","MOVE_UP_OFFSET","MOVE_DOWN_OFFSET","TOOLBAR_POSITION_CLASS_NAMES","ListBox","_createToolbar","_createNavigatable","_listTabIndex","_getList","_destroyToolbar","_target","dropSources","tools","moveUp","moveDown","transferTo","transferFrom","transferAllTo","transferAllFrom","_addItem","_syncElement","_addItemAt","_insertElementAt","_getTabIndex","oldTarget","_getNavigatableItem","_scrollIntoView","shouldPreventDefault","_shiftSelecting","_executeCommand","elementNode","listBox","_searchConnectedListBox","connectedListBox","closestContainer","originalElement","getKendoListBox","draggableOptions","draggedItem","_updateToolbar","_updateAllToolbars","dataItemAtIndex","itemAtIndex","listItem","_removeElement","listItems","_getItems","uniqueIdAttr","enabledItems","_enableItem","_dataChangeHandler","_setItemIds","viewLength","toolbarElement","toolbarInsertion","execute","_updateToolStates","listBoxElements","elementsLength","_commands","commandType","getItems","canExecute","moveItems","movedItem","indecesInDom","movedItems","itemComparer","moveAction","item1","item2","indexItem1","indexItem2","domIndices","sourceListBox","getSourceListBox","destinationListBox","getDestinationListBox","updatedSelection","getUpdatedSelection","updateSelection","itemFilter","lastEnabledItem","containsLastItem","itemToSelect","_initTemplates","_createTools","_attachEventHandlers","_detachEventHandlers","tool","toolsLength","toolsMessages","toolList","_createToolList","defaultTools","_onToolClick","_executeToolCommand","_updateToolState","toolName","toolElement","getFileName","inputFiles","$input","files","getAllFileInfo","stripPath","extension","getFileExtension","rawFiles","getFileInfo","rawFile","fileSize","rFileExtension","slashIndex","assignGuidToFiles","validateFiles","validationInfo","allowedExtensions","parseAllowedExtensions","maxFileSize","minFileSize","validateFileExtension","validateFileSize","extensions","ext","parsedExt","validationErrors","INVALIDFILEEXTENSION","INVALIDMINFILESIZE","INVALIDMAXFILESIZE","getTotalFilesSizeMessage","totalSize","shouldRemoveFileEntry","upload","removeUploadedFile","fileEntry","shouldSendRemoveRequest","fileNames","_supportsRemove","_removeFileEntry","_submitRemove","textStatus","prevented","tryParseJSON","onSuccess","normalizeJSON","stopEvent","bindDragEventWrappers","onDragEnter","onDragLeave","hideInterval","lastDrag","sinceLastDrag","isFileUploadStarted","getFileEntry","iframeUploadModule","formDataUploadModule","UPLOAD","CLEAR","PAUSE","RESUME","VALIDATIONERRORS","PROGRESSHIDEDELAY","PROGRESSHIDEDURATION","headerStatusIcon","Upload","activeInput","initialFiles","localization","_wrapInput","_activeInput","_onParentFormSubmit","_onParentFormReset","async","saveUrl","_module","_supportsFormData","_async","_renderInitialFiles","syncUploadModule","_supportsDrop","dropZone","_setupCustomDropZone","_setupDropZone","_onFileAction","_onClearSelected","_onUploadSelected","_onInputChange","showFileList","autoRetryAfter","bufferChunkSize","maxAutoRetries","removeVerb","autoUpload","withCredentials","useArrayBuffer","pause","clearSelectedFiles","uploadSelectedFiles","dropFilesHere","invalidFiles","statusUploading","statusUploaded","statusWarning","statusFailed","headerStatusUploading","headerStatusPaused","headerStatusUploaded","invalidMaxFileSize","invalidMinFileSize","invalidFileExtension","_supportsMultiple","customDropZone","onPause","pauseIcon","onResume","playIcon","onSaveSelected","getFiles","filesData","allFiles","clearAllFiles","_removeFileByDomElement","removeAllFiles","removeFileByUid","_removeFileByUid","clearFileByUid","clearFile","_removeFile","removeFile","fileData","onRemove","_hideHeaderUploadstatus","_updateHeaderUploadStatus","_addInput","sourceInput","_onInputKeyDown","firstButton","_inputFiles","_isAsyncNonBatch","onSelect","_readDirectory","dirReader","createReader","allFolderFiles","readEntries","entries","_readFile","fullpath","relativePath","droppedFolderFiles","droppedFolderCounter","_proceedDroppedItems","_traverseFileTree","skipCounter","isFile","isDirectory","_onDrop","dt","dataTransfer","droppedFiles","directoryDrop","webkitGetAsEntry","_filesContainValidationErrors","hasErrors","currentFile","_enqueueFile","_fileAction","_prepareTemplateData","_prepareDefaultSingleFileEntryTemplate","_prepareDefaultMultipleFileEntriesTemplate","filesHaveValidationErrors","totalFileSize","existingFileEntries","removeEventArgs","fileUid","fileList","allCompletedFiles","allInvalidFiles","_hideUploadButton","fileElement","actionKey","skipClear","firstActionButton","classDictionary","iconsClassDictionary","_clearFileAction","_renderAction","_fileState","stateKey","states","uploading","uploaded","failed","currentState","actionClass","actionText","hasValidationErrors","_retryClicked","_checkAllComplete","onRetry","clearEventArgs","_onFileProgress","percentComplete","progressPct","warningPct","_onUploadSuccess","_setUploadErrorState","_hideUploadProgress","_onUploadError","module","_decreasePosition","_autoRetryAfter","retries","performUpload","uploadPercentage","_updateUploadProgress","fileMetaData","metaData","totalChunks","chunkIndex","_showUploadButton","uploadButton","_showHeaderUploadStatus","isUploading","headerUploadStatus","failedUploads","headerUploadStatusIcon","currentlyUploading","currentlyInvalid","currentlyFailed","currentlyPaused","concurrent","onAbort","FormData","_userAgent","isChrome","isSafari","isWindowsSafari","_bindDocumentDragEventWrappers","removeUrl","removeField","dataFilter","traditional","xhrFields","filesContainErrors","relatedInput","iframes","_frameId","prepareUpload","saveField","createFrame","registerFrame","createForm","frame","dataInput","cleanupFrame","unregisterFrame","onIframeLoad","started","processResponse","fakeXHR","jsonResult","statusText","stopFrameSubmit","execCommand","cancelled","paused","sourceElement","fileEntries","prepareChunk","enqueueFiles","filesLength","webkitRelativePath","formData","createFormData","createXHR","removeFileEntry","populateFormData","postFormData","fileArrayBuffer","_appendBuffer","_getCurrentChunk","buffer1","buffer2","byteLength","prevEntry","stopUploadRequest","_increaseChunkIndex","onRequestSuccess","onRequestError","onRequestProgress","setRequestHeader","serializedMetaData","raiseError","parseSuccess","cleanupFileEntry","_resetChunkIndex","uploadComplete","isUploadButtonVisible","uploadUid","_decreaseChunkIndex","methodToInvoke","oldPosition","_getChunker","mozSlice","webkitSlice","concatPaths","sizeFormatter","suffix","FileBrowser","SearchBox","Breadcrumbs","trimSlashesRegExp","APPLY","BREADCRUBMSNS","SEARCHBOXNS","NAMEFIELD","SIZEFIELD","TYPEFIELD","DEFAULTSORTORDER","EMPTYTILE","TOOLBARTMPL","filebrowser","_call","_deleteClick","_addClick","_directoryKeyDown","_directoryBlur","uploadFile","orderByName","orderBySize","directoryNotFound","emptyFolder","deleteFile","invalidFileType","overwriteFile","fileTypes","_selectedItem","fileUrl","encodeURIComponent","arrangeBy","showUpload","uploadUrl","showCreate","showDelete","kendoUpload","_fileUpload","_attachDropzoneEvents","_dropEnter","_dropLeave","_scrollHandler","_positionDropzone","_removeDropzone","createDirectory","_getFieldName","filterRegExp","fileNameField","_createFile","_insertFileToList","_override","_tiles","_findFile","typeField","nameField","lastDirectoryIdx","_nameDirectory","_nameExists","directoryNames","_dblClick","_itemTmpl","_editTmpl","_listViewChange","breadcrumbs","typeSortOrder","nameSortOrder","_navigation","navigation","kendoBreadcrumbs","searchBox","kendoSearchBox","_path","_updateValue","_toggleLabel","_rootClick","_adjustSectionWidth","trail","ImageBrowser","imagebrowser","_uploading","_loadImage","thumbnailUrl","urlJoin","viewTop","viewBottom","UndoRedoStack","currentCommandIndex","undo","canUndo","redo","canRedo","Tool","bomFill","emptyElementContent","emptyTableCellContent","SELECT_OVERLAY_SELECTOR","PLACEHOLDER_CLASS","PLACEHOLDER_TAG_ID","REFRESH_INTERVAL","DEFAULT_LANGUAGE","ToolTemplate","getHtml","EditorUtils","editorWrapperTemplate","buttonTemplate","tableWizardButtonTemplate","colorPickerTemplate","comboBoxTemplate","dropDownListTemplate","separatorTemplate","overflowAnchorTemplate","formatByName","getToolCssClass","toolCssClassNames","superscript","subscript","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","import","outdent","createLink","unlink","insertImage","insertFile","viewHtml","foreColor","backColor","createTable","addColumnLeft","addColumnRight","addRowAbove","addRowBelow","deleteRow","deleteColumn","tableWizard","tableWizardInsert","cleanFormatting","registerTool","toolOptions","Editor","registerFormat","formatName","cacheComments","retrieveComments","strikethrough","fontName","fontNameInherit","fontSizeInherit","formatBlock","formatting","editAreaTitle","overflowAnchor","imageWebAddress","imageAltText","imageWidth","imageHeight","fileWebAddress","fileTitle","fileText","linkWebAddress","linkText","linkToolTip","linkOpenInNewWindow","dialogUpdate","dialogInsert","dialogOk","dialogCancel","createTableHint","tableTab","cellTab","accessibilityTab","caption","summary","units","cellSpacing","cellPadding","cellMargin","collapseBorders","wrapText","associateCellsWithHeaders","alignLeft","alignCenter","alignRight","alignLeftTop","alignCenterTop","alignRightTop","alignLeftMiddle","alignCenterMiddle","alignRightMiddle","alignLeftBottom","alignCenterBottom","alignRightBottom","alignRemove","selectAllCells","exportAs","print","supportedBrowser","contentEditable","toolGroups","basic","lists","indenting","toolbarContainer","editorNS","Dom","_registerHandler","_wrapTextarea","Toolbar","bindTo","heightStyle","expectedHeight","actualHeight","_initializeContentElement","keyboard","Keyboard","BackspaceHandler","TypingHandler","SystemHandler","SelectAllHandler","Clipboard","undoRedoStack","textarea","getAllComments","_endTyping","_mouseup","_initializeImmutables","_initializePlaceholder","_togglePlaceholder","isTypingInProgress","endTyping","saveSelection","_selectionChange","_selectionStarted","isResizable","kendoResizable","newSize","getKendoResizable","_initializeTableResizing","TableResizing","_showTableResizeHandlesProxy","_showTableResizeHandles","_destroyTableResizing","tableResizing","showResizeHandles","_initializeColumnResizing","ColumnResizing","_destroyColumnResizing","columnResizing","_initializeRowResizing","RowResizing","_destroyRowResizing","rowResizing","editorWrap","editArea","_createContentElement","stylesheets","specifiedDomain","domain","domainScript","lang","frameBorder","hostname","contentDocument","decorateFrom","encodedValue","_spellCorrect","beforeCorrection","falseTrigger","contextmenu","_spellCorrectTimeout","RestorePoint","getRange","_finishUpdate","_deregisterHandlers","blurTrigger","mousedownTrigger","keydown","nextChar","preventPopupHide","toolFromShortcut","keyPressCommand","_runPostContentKeyCommands","keypress","keyup","selectionCodes","_refreshInterval","cut copy paste drop dragover","focusin","toolbarContainerElement","$head","immutables","Immutables","gecko","toolsFromShortcut","changesContent","_destroyResizings","deserialization","serialization","entities","semantic","scripts","pasteCleanup","keepNewLines","msAllFormatting","msConvertLists","msTags","none","dialogOptions","imageBrowser","fileBrowser","_focusOutside","_destroyUploadWidget","tempInput","_uploadWidget","finder","RangeUtils","startContainer","getFormat","isFormatted","currentHtml","Serializer","domToXhtml","htmlToDom","selectionRestorePoint","refreshTools","commonAncestorContainer","_focusBody","restoreSelection","toRange","SelectionUtils","selectionFromDocument","removeAllRanges","addRange","rangeCount","getRangeAt","endContainer","_containsRange","isAncestorOrSelf","_deleteSavedRange","selectedHtml","cloneContents","InsertHtmlCommand","toolById","managesUndoRedo","initialize","aria-label","commandArguments","_bomFill","makeMap","whitespace","emptyspace","bom","whitespaceOrBom","persistedScrollTop","cssAttributes","htmlRe","entityRe","entityTable","STYLE","FLOAT","CSSFLOAT","STYLEFLOAT","CLASS","KMARKER","nonListBlockElements","blockElements","block","selfClosing","inlineElements","inline","fillAttrs","62","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","402","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","931","932","933","934","935","936","937","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","977","978","982","8226","8230","8242","8243","8254","8260","8472","8465","8476","8482","8501","8592","8593","8594","8595","8596","8629","8656","8657","8658","8659","8660","8704","8706","8707","8709","8711","8712","8713","8715","8719","8721","8722","8727","8730","8733","8734","8736","8743","8744","8745","8746","8747","8756","8764","8773","8776","8800","8801","8804","8805","8834","8835","8836","8838","8839","8853","8855","8869","8901","8968","8969","8970","8971","9001","9002","9674","9824","9827","9829","9830","338","339","352","353","376","710","732","8194","8195","8201","8204","8205","8206","8207","8211","8212","8216","8217","8218","8220","8221","8222","8224","8225","8240","8249","8250","8364","findNodeIndex","skipText","isDataNode","isAncestorOf","findClosestAncestor","rootElem","SHOW_COMMENT","curNode","getNodeLength","splitDataNode","newNode","denormalizedText","deleteData","blockParentOrBody","parentOfType","blockParents","blocks","windowFromDocument","parentWindow","nodeTypes","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","encodableChars","entity","isBom","stripBom","stripBomNode","insignificant","_moz_dirty","_moz_editor_bogus_node","tableCell","significantNodes","emptyTextNode","emptyNode","significantChildNodes","isWhitespace","lastTextNode","isMarker","allWhitespaceContent","isEmptyspace","htmlIndentSpace","isPrevBlock","isNextBlock","isBlock","isSelfClosing","isInline","isBr","compatMode","scrollingElement","toStart","elementTop","persistScrollTop","restoreScrollTop","newElement","referenceElement","removeChildren","removeTextSiblings","closestBy","condition","rootCondition","ofType","changeTag","skipAttributes","editableParent","createEmptyNode","mergeAttributes","unstyle","inlineStyle","getEffectiveBackground","backgroundStyle","commonAncestor","ancestors","minPathLength","closestSplittableParent","editableParents","editableAncestor","closestEditable","closestEditableOfType","filterFn","filterBy","ensureTrailingBreaks","ensureTrailingBreak","removeTrailingBreak","supportsLeadingWhitespace","TD","fontSizeMappings","quoteRe","brRe","pixelRe","emptyPRe","cssDeclaration","sizzleAttr","scriptAttr","onerrorRe","toEditableHtml","_toEditableImmutables","immutable","_fillEmptyElements","_removeSystemElements","_resetOrderedLists","originalStart","ols","_preventScriptExecution","attributesToRemove","legacyIE","originalSrc","originalHref","deserialize","semanticFilter","mapStart","cssProperties","styleAttr","specifiedAttributes","$node","skipEncoding","isEmptyBomNode","mapper","jqNode","tagMap","textOnly","runCustom","k:script","semanticAttributes","textDecoration","strong","em","styleObj","script","SelectBox","_initSelectOverlay","autoSize","listWidth","_listWidth","selectBox","compareBoundaries","startAncestor","endAncestor","fixIvalidRange","isInvalidRange","updateRangeProperties","textRangeContainer","textRange","adoptContainer","cursorNode","textOffset","isData","anchorNode","moveToElementText","adoptEndPoint","comparison","appended","compareEndPoints","RangeIterator","W3CSelection","RangeEnumerator","ImmutablesRangeIterator","ImmutablesRangeEnumerator","Marker","selectionFromWindow","selectionFromRange","rangeDocument","documentFromRange","W3CRange","setStartAfter","setEndAfter","deleteContents","cloneRange","deleteSubtree","hasPartialSubtree","getSubtreeIterator","cloneSubtree","frag","createDocumentFragment","extractSubtree","originalRange","insertNode","startNodeName","endNodeName","fromNode","_next","hasNext","nodeIndex","inStartContainer","inEndContainer","getSubRange","subRange","movedStart","movedEnd","enumerate","visit","rootNode","getEditable","nodeToPath","serializedImmutables","removeImmutables","restoreImmutables","lastType","restoreHtml","toRangePoint","denormalizedOffset","addCaret","removeCaret","containerIndex","textNode","rangeBoundary","isExpandable","_removeDeadMarkers","_normalizedIndex","shouldNormalizeStart","shouldNormalizeEnd","shouldNormalize","isBomSelected","collapsedToStart","startParent","endParent","editableTextNodes","immutableParent","partition","partitionRange","mapAll","mapped","getAll","getMarkers","isStartOf","isEndOf","wrapSelectedElements","isEnd","startEditable","endEditable","beforeCaret","afterCaret","complexBlocks","toolsToBeUpdated","IMMUTABALE","IMMUTABALE_MARKER_SELECTOR","IMMUTABLE_SELECTOR","expandImmutablesIn","startImmutableParent","endImmutableParent","immutablesContext","editableNodes","randomId","chars","serialized","deletingKey","updateToolOptions","_toHtml","serializationType","isDeleting","shouldCancelEvent","_cancelDeleting","_cancelTyping","typingInProgress","isTypingKey","cancelDeleting","closestSelectionLi","closestImmutableLi","backspace","del","nextImmutable","_removeImmutable","forwards","commonContainer","_nextNode","startRestorePoint","finishUpdate","endRestorePoint","GenericCommand","Command","restorePoint","formatter","lockRange","releaseRange","createDialog","OVERFLOWANCHOR","toolNamesByCssClass","k-i-sup-script","k-i-sub-script","k-i-align-left","k-i-align-center","k-i-align-right","k-i-align-justify","k-i-list-unordered","k-i-list-ordered","k-i-login","k-i-indent-increase","k-i-indent-decrease","k-i-link-horizontal","k-i-unlink-horizontal","k-i-image","k-i-file-add","k-i-html","k-i-foreground-color","k-i-paint","k-i-table-insert","k-i-table-column-insert-left","k-i-table-column-insert-right","k-i-table-row-insert-above","k-i-table-row-insert-below","k-i-table-row-delete","k-i-table-column-delete","k-i-table-properties","k-i-table-wizard","k-i-clear-css","OverflowAnchorTool","advanced","overflowFlaseTools","_toggleOverflowStyles","_initOverflowPopup","popupTemplate","focusOverflowPopup","toolGroupFor","isCustomTool","_editor","expandTools","combobox","dropDown","isOpened","inheritText","_toolName","description","_appendShortcutSequence","editorElement","editorOffset","editorOptions","_getWindowWidth","_overlaps","toolbarWrapper","toolbarWrapperOffset","toolbarWrapperLeft","toolbarWrapperTop","boxOffset","boxOffsetLeft","boxOffsetTop","localizedText","res","_nativeTools","currentTool","nativeTools","endGroup","groupPosition","startGroup","newGroupName","toolConfig","updateGroups","attachToolsEvents","enabledButtons","disabledButtons","dropdown","colorpicker","editorTools","currentContainer","toolname","_immutablesContext","_updateImmutablesState","uiData","groupUi","uiElement","trackImmutables","containerWidth","toolbarWindow","_refreshWidths","_shrink","_stretch","visibleGroups","_groupsWidth","_visibleGroups","_hideGroup","hiddenGroups","_hiddenGroups","_showGroup","ViewHtmlCommand","dialog","FormatCommand","FormatTool","MOUSEDOWN_NS","InlineFormatFinder","numberOfSiblings","textNodesCount","elementNodesCount","markerCount","findSuitable","findFormat","InlineFormatter","formatNode","formatNodes","consolidate","outerMostInline","GreedyInlineFormatFinder","greedyProperty","getInlineCssValue","attributeValue","pair","cssIndex","propertyAndValue","getFormatInner","GreedyInlineFormatter","InlineFormatTool","DelayedExecutionTool","FontTool","cssAttr","domAttr","newRange","ColorTool","_widget","storedRange","_inputFocused","picker","fontWeight","fontStyle","lastIndexOfRegExp","indexOfRegExp","HTTP_PROTOCOL","protocolRegExp","endLinkCharsRegExp","LinkFormatFinder","LinkFormatter","markers","UnlinkCommand","LinkCommand","_dialogTemplate","_initialText","_apply","linkUrl","_dialog","textInput","AutoLinkCommand","linkMarker","linkRange","detectedLink","detectLink","_ensureWebProtocol","traverser","detection","startNode","LeftDomTextTraverser","cancelAtNode","DomTextLinkDetection","hasProtocol","_hasProtocolPrefix","_prefixWithWebProtocol","UnlinkTool","DomPos","puntuationOptions","puntuationTraverser","_detectEnd","blank","_detectStart","_isLinkDetected","extendOptions","RightDomTextTraverser","_skipStartPuntuation","ii","DomTextTraverser","_traverse","edgeNode","subText","listElements","BlockFormatFinder","suitable","_resolveListsItems","ImmutablesNS","BlockFormatter","ancestor","imageFormat","imageAttributes","nonImages","_handleImmutables","applyFormatting","immutableFormat","namedFormat","GreedyBlockFormatter","immutalbeParent","blockFormatter","formatTag","ListFormatter","BlockFormatTool","ListFormatFinder","unwrapTag","isList","isImmutable","containsAny","_parentLists","breakable","applyOnSection","section","pushAncestor","addLastSection","lastSection","sections","lastNodes","fragment","ListCommand","ListTool","unwrapListItem","listFormatter","FormattingTool","toFormattingItem","kendoSelectBox","getFormattingValue","_ancestor","CleanFormatCommand","tagsToClean","clean","KEDITORIMAGEURL","KEDITORIMAGETITLE","KEDITORIMAGEWIDTH","KEDITORIMAGEHEIGHT","ImageCommand","removeIEAttributes","showBrowser","applied","keyDown","dialogHeight","_imageBrowser","loadingOverlay","ImportCommand","_initializeUploadWidget","importOptions","_onUploadProgress","_onUploadSelect","_onUploadComplete","proxyUrl","getKendoUpload","_removeLoadingOverlay","_initLoadingOverlay","uploadEvent","_iframeWrapper","genericCommand","postProcess","InsertHtmlTool","_selectBox","selectbox","initialValue","defaultExportAsItems","ExportAsCommand","exportType","generateForm","exportAsOptions","valueInput","exportTypeInput","fileNameInput","ExportAsTool","changeHandler","_exec","indentDirection","IndentFormatter","parentList","siblingList","nestedList","mapImmutables","targetNode","listParent","IndentCommand","indentFormatter","OutdentCommand","OutdentTool","isOutdentable","listParentsCount","suitableNodes","ParagraphCommand","_insertMarker","_moveFocus","focusNode","shouldTrim","startInBlock","endInBlock","_blankAfter","paragraph","heading","tableNode","rng","parentChildrenLength","emptyParagraphContent","_insertParagraphAfter","NewLineCommand","filler","KEDITORFILEURL","KEDITORFILETEXT","KEDITORFILETITLE","FileCommand","_fileBrowser","ACTIVESTATE","columnTemplate","tableFormatFinder","TableCommand","skipCleaners","_tableHtml","columnHtml","insertedTable","PopupTool","twTool","TableWizardTool","TableWizardCommand","insertNewTable","InsertTableTool","tableFromLocation","cellHeight","cellWidth","_setTableSize","_valid","selectedColumns","tableSize","InsertRowCommand","cellCount","InsertColumnCommand","newCell","DeleteRowCommand","DeleteColumnCommand","TableModificationTool","cleaners","ScriptCleaner","TabCleaner","MSWordFormatCleaner","WebkitFormatCleaner","HtmlTagsCleaner","HtmlAttrCleaner","HtmlContentCleaner","CustomCleaner","htmlToFragment","_startModification","_inProgress","_endModification","modificationInfo","_contentModification","_removeBomNodes","_onBeforeCopy","oncopy","oncut","_fileToDataURL","File","getAsFile","readAsDataURL","_triggerPaste","_handleImagePaste","clipboardData","_insertImages","onpaste","clipboardRange","clipboardNode","_decoreateClipboardNode","_moveToCaretPosition","ondragover","ondrop","borderWidth","fontVariant","nodeOffset","_caretOffset","translateX","translateY","-webkit-transform","rangeChanged","isStartTextNode","prevLength","bomNode","splittableParent","splittable","fragmentsHtml","focusedTable","siblingNodes","lastSiblingIndex","lastSibling","applicable","elm","Cleaner","replacements","customReplacements","junkReplacements","convertFontMatch","closing","faceRe","stripEmptyAnchors","listData","startingSymbol","matchSymbol","trimStartText","_guessUnorderedListStyle","_guessOrderedListStyle","_convertToLi","extractListLevels","msoListRegExp","styleType","rootMargin","rootIndex","lastRootLi","isLastRootLi","rootList","listIndex","levelType","blockChildren","lastMargin","acceptedNameTags","isParentTable","removeAttributeNode","createColGroup","convertHeaders","boldedCells","removeParagraphs","paragraphs","removeDefaultColors","spans","firstRow","longestRow","titles","removeFormatting","DomCleaner","cleanDom","collectTags","collectAttr","TextContainer","HtmlTextLines","separators","lines","inlineBlockText","resetLine","appendText","textContainer","appendInlineBlockText","flashInlineBlockText","endLine","il","il1","jl","jl1","DomEnumerator","preventDown","enumerator","buildText","getDefaultSeparators","htmlLines","cleaner","tdCleaner","PREVIOUS_SIBLING","tableCells","tableCellsWrappers","tableElements","inTable","RemoveTableContent","cellsTypes","startCell","endCell","_removeContent","getNext","removeTableContent","backspaceHandler","evt","deleteSelection","startTyping","_addCaret","_restoreCaret","_handleDelete","_cleanBomBefore","_handleBackspace","startAtLi","liIndex","startAtNonFirstLi","rangeStartNode","previousNode","isEndOfLink","_handleSelection","_surroundFullyContent","_surroundFullySelectedAnchor","_join","startImmutable","endImmutable","_moveMarker","_mergeWithTextNode","appendedNode","_isCaret","systemCommandIsInProgress","createUndoCommand","isModifierKey","isSystem","_toSelectableImmutables","_selectEditorBody","isCharacter","_getShortcutModifier","platform","mac","matchesKey","matchKey","toolKey","onEndTyping","stopTyping","what","ExportPdfCommand","PrintCommand","lowerBound","upperBound","getScrollBarWidth","calculatePercentageRatio","inPercentages","REGEX_NUMBER_IN_PERCENTAGES","inPixels","REGEX_NUMBER_IN_PIXELS","toPercentages","PERCENTAGE","toPixels","PIXEL","ResizingUtils","MOUSE_ENTER","MOUSE_LEAVE","MOUSE_MOVE","LAST_CHILD","TABLE","TableElementResizing","eventNamespace","_destroyResizeHandle","dataAttribute","detectElementBorderHovering","resizingInProgress","handleOptions","tableElement","elementBorderHovered","showResizeHandle","_initResizeHandle","setResizeHandlePosition","setResizeHandleDimensions","setResizeHandleDataAttributes","_attachResizeHandleEventHandlers","_initResizable","_hideResizeMarker","markerClass","_destroyResizable","onResizeStart","onResizeEnd","_disableKeyboard","setResizeHandleDragPosition","_enableKeyboard","_forceResizing","ResizingFactory","resizingName","_destroyResizing","_initResizing","parentTable","resizingType","RESIZE_HANDLE_CLASS","RESIZE_MARKER_CLASS","TBODY","TH","TR","handleWidth","borderOffset","tableBody","scrollTopOffset","scrollLeftOffset","columnWidthOffset","scrollBarWidth","columnOffsetLeft","tBodyOffsetTop","columnLeftOffset","adjacentColumnWidth","resizeHandleOffsetLeft","handleOffset","initialAdjacentColumnWidth","initialColumnWidth","rtlModifier","initialDeltaX","_setTableComputedWidth","_setColumnsComputedWidth","_resizeColumn","_resizeTopAndBottomColumns","_resizeAdjacentColumns","tableBodyWidth","currentColumnsWidths","topAndBottomColumns","deltaWidth","adjacentColumns","_resizeAdjacentColumn","adjacentColumn","RESIZE_HANDLE_MARKER_WRAPPER_CLASS","handleHeight","rowOffsetLeft","rowOffsetTop","$row","tableBodyTopOffset","resizeHandleOffsetTop","initialTableHeight","tableBodyHeight","initialStyleHeight","newRowHeight","_setRowsHeightInPixels","_setTableHeight","_setRowsHeightInPercentages","currentRowsHeights","HandlePositioningStrategy","EastPositioningStrategy","NorthPositioningStrategy","NortheastPositioningStrategy","NorthwestPositioningStrategy","SouthPositioningStrategy","SoutheastPositioningStrategy","SouthwestPositioningStrategy","WestPositioningStrategy","DraggingStrategyFactory","HandleDraggingStrategy","HorizontalDraggingStrategy","EastDraggingStrategy","WestDraggingStrategy","VerticalDraggingStrategy","NorthDraggingStrategy","SouthDraggingStrategy","HorizontalAndVerticalDraggingStrategy","NorthEastDraggingStrategy","NorthWestDraggingStrategy","SouthEastDraggingStrategy","SouthWestDraggingStrategy","DRAG_START","DRAG_END","HALF_INSIDE","MOUSE_OUT","EAST","NORTH","NORTHEAST","NORTHWEST","SOUTH","SOUTHEAST","SOUTHWEST","WEST","TableResizeHandle","_addStyles","_initDraggable","_initPositioningStrategy","_initDraggingStrategy","resizableElement","_destroyDraggable","_setPosition","_positioningStrategy","_onMouseOver","_onMouseOut","_onDragStart","_onDrag","_onDragEnd","_draggingStrategy","adjustDragDelta","deltaX","initialDeltaY","StrategyFactory","PositioningStrategyFactory","calculatePosition","handleOffsetPosition","applyHandleOffset","scrollOffsetPosition","applyScrollOffset","xAxisAdjustment","yAxisAdjustment","RESIZE_HANDLE_WRAPPER_CLASS","TABLE_CLASS","TABLE_RESIZING_CLASS","COLUMN","ROW","handles","_destroyResizeHandles","appendHandlesTo","_resizeWidth","_resizeHeight","ratioValue","ratioTotalValue","constrainedWidth","styleWidth","parentWidth","_getMaxDimensionValue","_initialElementWidth","_setColumnsWidth","constrainedHeight","styleHeight","parentHeight","hasRowsInPixels","_hasRowsInPixels","_initialElementHeight","dimensionLowercase","parentDimension","parentScrollOffset","isWidthInPercentages","parentColumn","columnsLength","_initResizeHandles","_showResizeHandles","_bindToResizeHandlesEvents","_onResizeHandleDragStart","_onResizeHandleDrag","_onResizeHandleDragEnd","_onResizeHandleMouseOver","_onResizeHandleMouseOut","TableResizingFactory","factory","eventCurrentTarget","isResizeHandleOrChild","cellsFormatFinder","reUnit","selectedTable","_sourceTable","_selectedTable","selectedCells","_selectedTableCells","_selectedCells","onDialogClose","parseTable","TableWizardDialog","insertTable","createNewTable","updateTable","_ensureFocusableAfterTable","lastSelectedRow","cellsLength","newRowsCount","cellProp","tableRows","tableProp","tableProperties","_deleteTableRows","insertRow","_insertCells","deleteCell","_updateTableProperties","cellProperties","_updateCellProperties","_updateCaption","cellsWithHeaders","cellsWithHeadersAssociated","associateCellsWithHeader","_isHeadingRow","associate","isDataRow","generateIds","modifySellsIds","modifyCellsHeadings","isHeadingRow","associatedCells","headingIds","headersAttr","rowParent","cellPropToAll","createTBody","_getStylesData","captionContent","deleteCaption","createCaption","_getAlignmentData","captionAlignment","widthUnit","heightUnit","bgColor","borderColor","borderCollapse","tStyle","captionClone","tableAlignment","tableJson","_getAlignment","_getUnit","parseTableRows","parseCell","cStyle","horizontalOnly","hAlign","TableWizardEditTool","updateTabClasses","tabs","TABONTOP","tabGroup","scrollButtonHtml","buttonClass","HREF","CONTENTURL","NAVIGATABLEITEMS","KEYBOARDNAVIGATABLEITEMS","HOVERABLEITEMS","DEFAULTDISTANCE","textAttributes","contentAttributes","contentUrl","TabStrip","_contentUrls","contentUrls","_tabPosition","_keyDownProxy","contentHolder","activateTab","_endItem","_getItem","endItem","tabPosition","tab","dataEncodedField","dataContentUrlField","dataSpriteCssClass","scrollWrap","_scrollableModeActive","_scrollPrevButton","_scrollNextButton","ajaxRequest","_create","_updateContentElements","_appendUrlItem","_moveUrlItem","_removeUrlItem","referenceTab","referenceContent","fromIndex","newTabsCreated","activeItem","activeTab","contentElements","_elementId","tabStripID","elementId","wrapperId","isInitialUpdate","currentContent","contentAnimators","tabsHeight","_setContentElementsDimensions","contentDivs","activeDiv","marginStyleProperty","_sizeScrollWrap","isAnchor","neighbours","oldFocusedTab","_scrollTabsToItem","deactivateTab","wrapperOffsetWidth","tabGroupScrollWidth","scrollPrevButton","scrollNextButton","mouseDown","mouseUp","isRtlScrollDirection","_scrollableAllowed","_nowScrollingTabs","_scrollTabsByDelta","tabGroupWidth","tabGroupPadding","scrLeft","animationSettings","hasCloseAnimation","oldTab","isAnimationEnabled","visibleContents","isAjaxContent","showContentElement","showContent","inRequest","fakeProgress","statusIcon","endState","oldProgressAnimation","ajaxOptions","ajaxSettings","request","progressUpload","noProgress","lengthComputable","stopProgress","tabStrip","numericTextBoxSettings","borderStyles","tableAlignmentDropDownSettings","cellAlignmentDropDownSettings","accessibilityAlignmentDropDownSettings","dialogTemplate","okHandler","collectDialogValues","closeHandler","_initTabStripComponent","_initTableViewComponents","_initCellViewComponents","_initAccessibilityViewComponents","components","kendoTabStrip","_collectTableViewValues","_collectCellViewValues","_collectAccessibilityViewValues","tableView","cellView","accessibilityView","_addUnit","_initNumericTextbox","_initDropDownList","_initTableAlignmentDropDown","_initColorPicker","_initInput","_initCheckbox","_initCellAlignmentDropDown","_initAccessibilityAlignmentDropDown","_setComponentValue","_initAlignmentDropDown","kendoColorPicker","_destroyComponents","stringDiffStart","str1","str2","PASTE","MaskedTextBox","_rules","_tokenize","_togglePrompt","_emptyMask","_timeoutId","_maskLength","clearPromptChar","unmaskOnPost","promptChar","#","L","?","&","C","_submitHandler","unmasked","_unmask","emptyMask","_mask","_unmaskedValue","_trackChange","_inputHandler","_legacyIEInputHandler","__changing","inputChange","contentStart","endContent","lengthDiff","__dropping","_trimStartPromptChars","_findCaretPosBackwards","__backward","__pasting","chr","chrIdx","tokenIdx","tokensLength","_blinkInvalidState","_invalidStateTimeout","maskChars","toggleActive","STATE_ACTIVE","actionSheetWrap","preventClick","findFocusableSibling","OVERFLOW_ANCHOR","Item","ToolBarButton","OverflowButton","ToolBarButtonGroup","OverflowButtonGroup","ToolBarSplitButton","OverflowSplitButton","ToolBarSeparator","OverflowSeparator","ToolBarSpacer","TemplateItem","OverflowTemplateItem","TOOLBAR","BUTTON","OVERFLOW_BUTTON","TOGGLE_BUTTON","BUTTON_GROUP","SPLIT_BUTTON","SEPARATOR","SPACER_CLASS","SPACER","RESIZABLE_TOOLBAR","STATE_HIDDEN","GROUP_START","GROUP_END","PRIMARY","ICON","ICON_PREFIX","BUTTON_ICON","BUTTON_ICON_TEXT","LIST_CONTAINER","SPLIT_BUTTON_ARROW","OVERFLOW_CONTAINER","FIRST_TOOLBAR_VISIBLE","LAST_TOOLBAR_VISIBLE","TOGGLE","OVERFLOW_OPEN","OVERFLOW_CLOSE","OVERFLOW_NEVER","OVERFLOW_AUTO","OVERFLOW_ALWAYS","OVERFLOW_HIDDEN","OPTION_LIST_SUFFIX","KENDO_UID_ATTR","overflowContainer","addOverflowAttr","addUidAttr","addIdAttr","addOverflowIdAttr","overflowHidden","isEnabled","twin","splitContainerId","useButtonTag","togglable","addToGroup","toggleHandler","propagate","getParentGroup","isChild","_addGraphics","hasIcon","showIcon","createButtons","buttonConstructor","mainButton","arrowButton","createMenuButtons","createPopup","splitButton","menuButtons","rootUid","adjustPopupWidth","min-width","_renderOverflow","overflowUserEvents","_toggleOverflow","_toggleOverflowAnchor","overflowTool","itemClasses","overflowTemplate","toolbarItem","overflowItem","buttonGroupInstance","getSelectedFromGroup","horizontalDirection","isComplexTool","hasVisibleChildren","paddingEnd","splitContainer","urlTarget","isSplitButtonArrow","lastHasFocus","firstHasFocus","isOnlyOverflowAnchor","lastItemNotOverflowAnchor","isFirstTool","prevFocusable","isOverflowAnchor","_getPrevFocusable","_preventNextFocus","_getNextElement","directionNumber","searchIndex","focusableItem","elementToFocus","prevElements","_markVisibles","_childrenWidth","childrenWidth","commandElement","visibleCommands","_hideItem","hiddenCommands","_showItem","overflowItems","toolbarItems","visibleOverflowItems","visibleToolbarItems","PLAY","READY","TIMECHANGE","VOLUMECHANGE","FULLSCREEN_ENTER","FULLSCREEN_EXIT","MUTE","LOW_VOLUME","HIGH_VOLUME","VIDEO_QUALITY","STATE_PLAY","STATE_PAUSE","TITLEBAR","TOOLBARWRAP","SLIDER","VOLUME_SLIDER","MEDIA","YTPLAYER","baseTime","timeZoneSec","timeFormats","shortTime","longTime","htmlPlayer","toolBar","youtubePlayer","toolBarTime","slider","volumeSlider","qualityDropDown","toolTip","MediaPlayer","_currentIndex","_createTitlebar","_createDropDown","_createSlider","_createVolumeSlider","_timers","fullScreen","autoPlay","autoRepeat","volume","forwardSeek","unmute","quality","fullscreen","_msToTime","_timeToSec","curTime","_titleBar","sliderElement","_slider","_sliderDragChangeHandler","_sliderDragChange","_sliderDraggingHandler","_sliderDragging","volumeSliderElement","_volumeSlider","_volumeDraggingHandler","_volumeDragging","_volumeChangeHandler","_volumeChange","_resetTime","_youTubeVideo","_ytmedia","seekTo","_media","currentTime","_mediaTimeUpdate","_toolBar","_currentUrl","_isYouTubeUrl","_setPlayerUrl","initialized","oldPlayer","_initializePlayer","_videoOverlay","loadVideoById","_getMediaId","_playStateToggle","cueVideoById","toolBarElement","_toolbarClickHandler","_toolbarClick","_volumeButton","_fullscreenButton","_currentTimeElement","_durationElement","_playButton","_playButtonSpan","dropDownElement","_dropDownSelectHandler","_dropDownSelect","_dropDown","muted","isPaused","_isInFullScreen","_isDragging","tzOffset","_sliderChangeFired","_seekBarLastPosition","_preventPlay","_changeVolumeButtonImage","volumeButton","volumeElement","timeInMs","getCurrentTime","_timeFormat","isPlaying","_mediaEnded","_mediaPlay","_mediaReady","_mediaDurationChange","durationTime","getDuration","_isFirstRun","_createYoutubePlayer","_mediaTimeUpdateHandler","_mediaDurationChangeHandler","_ytPlayer","YT","Player","_configurePlayer","onYouTubeIframeAPIReadyRegister","getScript","onYouTubeIframeAPIReady","_youtubeApiReady","_poll","callLater","player","vars","autoplay","wmode","controls","showinfo","_onYouTubePlayerReady","onYouTubePlayerReady","_onPlayerStateChangeHandler","_onPlayerStateChange","onPlayerStateChange","videoId","playerVars","onReady","onStateChange","getIframe","_updateTitle","_paused","setVolume","_uiDisplay","regExp","_mouseClick","_mouseMoveHandler","_mouseMove","_mouseInHandler","_mouseIn","_mouseOutHandler","_mouseOut","_createHtmlPlayer","_mouseClickHanlder","_mediaEndedHandler","_mediaCanPlayHandler","_mediaPlayHandler","ontimeupdate","ondurationchange","oncanplay","onplay","onended","_mouseIdle","animationSpeed","_keyDownHandler","_fullscreenHandler","_youtubeApiReadyHandler","_mouseMoveTimer","seek","playVideo","stopVideo","pauseVideo","enterFullScreen","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","cancelFullscreen","webkitCancelFullScreen","mozCancelFullScreen","msCancelFullscreen","exitFullscreen","msExitFullscreen","_volume","isMuted","unMute","getVolume","isEnded","getPlayerState","ended","_mediaData","_fullscreen","isFullScreen","mozFullScreen","webkitIsFullScreen","fsButton","normalizeMeasures","normalizeMembers","normalizeName","accumulateMembers","rootTuple","tuple","buildPath","descriptorsForAxes","tuples","addMissingPathMembers","tupleMembers","firstTuple","getName","tupleToDescriptors","descriptorsForMembers","measures","tupletoSearch","MEASURES","findExistingTuple","createAggregateGetter","measureGetter","aggregatorContext","addEmptyDataItem","fmtValue","ordinal","validateAxis","newAxis","membersCount","adjustDataByColumn","sourceTuples","targetTuples","rowsLength","columnIdx","rowIdx","dataIdx","targetColumnsLength","measuresLength","tupleIndex","adjustDataByRow","normalizeAxis","findDataIndex","memberIndex","mergeTuples","targetMembers","sourceMembers","parsedRoot","equalTuples","toFind","membersLength","addMembers","findParentMember","parentMember","parentPath","parentName","measurePosition","normalizeTupleMeasures","dataIndex","parseSource","measureIndex","prepareDataOnRows","calcIndex","buildDataIndices","prepareDataOnColumns","spliceIndex","baseHierarchyPath","memberName","expandMemberDescriptor","sortDescriptor","sortDescriptorForMember","crossJoin","crossJoinCommand","measureNames","getRootNames","mapNames","rootNames","rootName","rootLength","expandedIdx","uniquePath","parseDescriptors","hierarchyName","serializeMembers","crossJoinCommands","serializeExpression","filterFunctionFormats","serializeFilters","cube","serializeOptions","parentTagName","asArray","memberIdx","captionGetter","unameGetter","levelNameGetter","levelNumGetter","childrenGetter","hierarchyGetter","parentNameGetter","Member","levelName","levelNum","xmlaDiscoverCommands","convertersMap","XmlaTransport","schemaDataReaderMap","xmlaReaderMethods","XmlaDataReader","sortExpr","removeExpr","PivotGrid","htmlNode","createMetadata","tupleName","ColumnBuilder","RowBuilder","ContentBuilder","PivotExcelMixin","STATERESET","ROW_TOTAL_KEY","EXPANDMEMBER","COLLAPSEMEMBER","STATE_EXPANDED","STATE_COLLAPSED","HEADER_TEMPLATE","KPISTATUS_TEMPLATE","KPITREND_TEMPLATE","DATACELL_TEMPLATE","LAYOUT_TABLE","AXIS_ROWS","AXIS_COLUMNS","PivotCubeBuilder","_normalizeDescriptors","keyField","_rootTuples","measureAggregators","aggregatorsLength","dimensionsSchema","measureIdx","rootNamesLength","_expandedTuples","currentKeys","memberInfo","expandedNames","accumulatorKeys","_findExpandedMember","_asTuples","rootInfo","expandedInfo","_measuresInfo","rowAxis","aggregateNames","resultFuncs","_toDataArray","measuresInfo","rowKeys","columnKeys","columnKey","columnMeasureNames","rowMeasureNamesLength","rowMeasureNames","rowLength","columnLength","_addData","resultFunc","_matchDescriptors","parentField","expectedValue","_calculateAggregate","totalItem","aggregator","_processColumns","rowTotal","updateColumn","_measureAggregators","defaultAggregate","measureDescriptors","aggregators","_buildGetters","_parseDescriptors","parsedDescriptors","_normalizeFilter","measuresRowAxis","columnDescriptors","rowDescriptors","aggregatedData","rowValue","columnGetters","rowGetters","expandedColumns","expandedRows","hasExpandedRows","rowDescriptor","rowName","columnsInfo","rowsInfo","measuresAxis","axes","PivotTransport","discover","connection","PivotDataSource","cubes","catalogs","hierarchies","_cubeSchema","cubeBuilder","_measuresAxis","_skipNormalize","_axes","uniqueName","defaultHierarchy","restrictions","levelUniqueName","memberUniqueName","schemaData","dataGetter","_rawData","treeOp","childrenCardinality","dimensionUniqueName","hierarchyUniqueName","_clearAxesData","rowsAxisDescriptors","columnsAxisDescriptors","_expandPath","memberToExpand","_lastExpanded","_descriptorsForAxis","_updateLocalData","expandColumn","originalData","_processResult","processedData","columnIndexes","rowIndexes","resultAxis","axisToSkip","hasColumnTuples","_requestData","_rowMeasures","_normalizeTuples","_columnMeasures","_normalizeData","_mergeAxes","newData","_createTuple","buildRoot","_hasRoot","isRoot","sourceAxes","mergedColumns","mergedRows","columnMeasures","rowMeasures","oldRowsLength","newRowsLength","oldColumnsLength","newColumnsLength","_mergeColumnData","_mergeRowData","_addMissingDataItems","metadata","_normalizeOrdinals","lastOrdinal","schemaMeasures","catalogName","cubeName","schemaKPIs","kpis","schemaDimensions","schemaHierarchies","dimensionName","schemaLevels","schemaCubes","schemaCatalogs","schemaMembers","Catalog","originalOptions","displayFolder","defaultFormat","goal","trend","statusGraphic","trendGraphic","defaultMember","orderingProperty","_extend","fault","faultstring","faultcode","ordinalGetter","fmtValueGetter","_mapSchema","xmla","PivotSettingTarget","emptyTemplate","fieldMenu","PivotFieldMenu","setting","kendoSortable","_indexOf","_isKPI","isMeasure","sortExpressions","skipExpr","sortIcon","_sortIcon","columnBuilder","rowBuilder","_bindConfigurator","_createLayout","_columnBuilder","_rowBuilder","_contentBuilder","rowsHeader","builder","childrenLoaded","maxChildren","configurator","columnHeaderTemplate","rowHeaderTemplate","dataCellTemplate","kpiStatusTemplate","kpiTrendTemplate","measureFields","columnFields","rowFields","dataTemplate","kendoPivotConfigurator","cellInfoByElement","cellInfo","contentBuilder","columnInfo","rowInfo","columnTuple","rowTuple","measuresTarget","rowsTarget","columnsTarget","_headerReflowTimeout","_stateResetHandler","_stateReset","_measureFields","_createSettingTarget","icons","_initSettingTargets","layoutTable","leftContainer","rightContainer","gridWrapper","columnsHeaderTree","rowsHeaderTree","contentTree","_setSectionsWidth","_setSectionsHeight","_columnHeaderReflow","columnTable","leftColumn","measureFieldsHeight","columnFieldsHeight","rowFieldsHeight","columnsHeight","firstRowHeight","secondRowHeight","calculatedWidth","_resetColspan","skipScrollbar","_colspan","_layoutTimeout","_axisMeasures","hasMeasure","columnAxis","_indexes","maxMembers","_colGroup","_rowLength","_buildRows","_normalize","tupleAll","_rowIndex","_row","rowKey","notFirst","measureRow","allCell","cellAttr","nextMember","cellChildren","memberCollapsed","rootLevelNum","maxcolSpan","allRow","firstMemberName","expandIconAttr","tuplePath","hasChild","axisInfo","axisInfoMember","skipChildren","firstEmpty","_buildRow","templateInfo","cellContent","PivotExcelExporter","columnHeaderTable","rowHeaderTable","columnHeaderLength","rowHeaderLength","_cells","dataCallback","rowRows","columnHeaderRows","rowHeaderRows","contentRows","columnRows","findFilters","filterOperator","checkNodes","checkedNodeIds","checkedNodes","FILTER_ITEM","_layout","include","ok","MENUTEMPLATE","_menuOpen","_initFilterForm","filterForm","filterProxy","_filterOperator","_filterValue","_updateFilterAriaLabel","_setFilterForm","_clearFilters","_convert","currentMember","selectedOperator","selectedOperatorName","includeWindow","WINDOWTEMPLATE","_applyIncludes","_closeWindow","_windowOpen","resultExpression","treeView","rootChecked","existingExpression","_treeViewDataSource","_createTreeView","LABELMENUTEMPLATE","operatorsTemplate","logicTemplate","mainContainer","mainLogicTemplate","logicItemTemplate","expressionItemTemplate","findModel","FilterButtonGroup","_getFieldsInfo","_renderMain","_addExpressionTree","_renderApplyButton","expressionPreview","_previewContainer","_createPreview","applyButton","mainLogic","addExpression","applyFilter","_hasFieldsFilter","_applyButton","_addGroup","_addExpression","_removeExpression","parentContainer","expressionModel","parentUID","itemsContainer","_defaultField","itemHTML","_addNewModel","fieldsLabel","_addExpressionControls","_expressionChange","operatorsContainer","editorContainer","_appendOperators","_appendEditor","_bindModel","_showHideEditor","operatorsLabel","logicHTML","createdField","haveFields","childhtml","toLocaleUpperCase","_getOperatorText","fieldInfo","fieldsCollection","editorTemplate","haveField","newField","parentModel","itemContainer","isMain","isNonValueFilter","nonValueOperators","findFilterForField","BOOL","ENUM","FilterCell","passedOptions","operatorVisible","_clearInProgress","updateDsFilter","initSuggestDataSource","_getColumnTitle","_setInputType","_createOperatorDropDown","_createClearIcon","setAutoCompleteSource","setComboBoxSource","_refreshUI","radioInput","inputName","labelTrue","labelFalse","operatorDropDown","autoComplete","comboBox","manuallyUpdatingVM","mergeResult","updateItemHtml","LINKSELECTOR","GROUP","VISIBLEGROUP","ACTIVECLASS","GROUPS","CONTENTS","DISABLEDCLASS","SELECTEDSELECTOR","HIGHLIGHTCLASS","ACTIVEITEMSELECTOR","disabledItems","selectableItems","defaultState","ariaHidden","itemIcon","PanelBar","_first","_angularCompile","expandMode","_angularCompileElements","_angularCleanup","useAnimation","animBackup","_animating","_addGroupElement","_collapseAllExpanded","_toggleItem","rootItemsHtml","_toggleGroup","_updateItems","_hasChildItems","currentNode","panelBar","skipChange","_updateSelected","isReferenceItem","_updateItemsClasses","panels","panelsParent","_updateItemClasses","wrapElement","notVisible","_animationCallback","stopExpand","loadingIconTimeout","ACTIVATE_EVENTS","ResponsivePanel","_toggleHandler","_registerBreakpoint","_mediaQuery","_registerStyle","breakpoint","dst","midnight","noon","lastTimeOption","mergeDateAndTime","TimeView","TimePicker","ARIA_ACTIVEDESCENDANT","_dates","_timeViewID","_heightHandler","dataBind","_html","msStart","msLastTime","msInterval","useValueToRender","_distinctSelection","selectionIndex","timeView","timeFormat","ARIA_OWNS","dateViewParams","timeViewParams","DateTimePicker","_icons","_midnight","_calculateMidnight","dateButtonText","timeButtonText","dateIcon","timeIcon","_timeIcon","secondView","minDateEqual","maxDateEqual","timeViewOptions","rebind","isDateViewVisible","adjustedDate","_timeSelected","DateRangePicker","DateRangeView","_buildHTML","_startDateInput","_endDateInput","_inputs","_initializeDateInputs","startField","endField","startLabel","endLabel","_preventInputAction","_startChange","_endChange","inputOptions","_startInput","kendoDateInput","getKendoDateInput","_endInput","_startChangeHandler","_endChangeHandler","ElasticPane","ScrollViewContent","VirtualScrollViewContent","Page","ScrollView","CHANGING","CURRENT_PAGE_CLASS","VIRTUAL_PAGE_CLASS","CLEANUP","VIRTUAL_PAGE_COUNT","LEFT_PAGE","CETER_PAGE","RIGHT_PAGE","LEFT_SWIPE","NUDGE","RIGHT_SWIPE","ScrollViewDataReader","pendingRequestArray","initialFetch","pageCount","prevPage","prevPrefetch","currentPage","nextPage","nextPrefetch","getViewData","scrollView","navigationWrapElement","_navigationContainer","_changeProxy","_refreshProxy","pageHTML","_toggleNavigation","innerNavigationContainer","scrollViewWidth","newPage","ScrollViewPager","updateDimension","transitionTo","instant","tansition","ScrollViewElasticPane","_getPages","enablePager","pagerOverlay","paneMoved","swipeType","bounce","snap","approx","minSnap","maxSnap","updatePage","forcePageUpdate","resizeTo","pageElements","_paged","_initPages","_dataReader","_pendingPageRefresh","_pendingWidgetRefresh","_viewShow","_resetPages","dataReader","_pageProxy","_resetProxy","templateProxy","emptyTemplateProxy","setWidth","_repositionPages","pagerScroll","thresholdPassed","isEndReached","_cancelMove","_moveBackward","_moveForward","setPageContent","_resetMovable","_onPage","_onReset","theContent","VirtualPage","_initNavigation","transitionEnd","dragStart","dragEnd","viewInit","bounceVelocityThreshold","enableNavigationButtons","emptyDataSource","_dragStart","_transitionEnd","navigationContainer","prevArrow","nextArrow","isPercentageSize","isPixelSize","pxUnitsRegex","isFluid","calculateSize","panePropertyAccessor","triggersResize","splitter","paneConfig","PANE","PaneResizing","horizontalDefaults","verticalDefaults","_createHint","LAYOUTCHANGE","KPANE","PANECLASS","Splitter","_dimension","_keys","decrease","increase","_resizeStep","_initPanes","_addOverlays","_panes","_removeOverlays","_togglePane","_detachEvents","panes","navigationKeys","isResizing","_triggerAction","panesConfig","_initPane","config","arrowType","_updateSplitBar","splitbar","previousPane","nextPane","catIconIf","iconType","prevCollapsible","prevCollapsed","nextCollapsible","nextCollapsed","_updateSplitBars","_removeSplitBars","sizedPanesWidth","sizedPanesCount","freeSizedPanes","freeSizePanesCount","freeSizePaneWidth","alternateSizingProperty","positioningProperty","sizingDomProperty","lastNonCollapsedPane","splitBars","splitBarsCount","sizingProperty","collapsedSize","_addPane","paneElement","referencePane","mousePositioningProperty","previousPaneConfig","nextPaneConfig","prevBoundary","nextBoundary","toPx","prevMinSize","prevMaxSize","nextMinSize","nextMaxSize","ghostPosition","previousPaneNewSize","nextPaneNewSize","fluidPanesCount","collect","cellspacing","allDayTable","timesHeader","columnLevelCount","allDaySlot","rowCount","datesHeader","columnLevels","columnLevelIndex","allDayTableRows","lastLevel","dateTableRows","rowLevels","rowLevelIndex","rowspan","allDay","scrollbarWidth","collidingEvents","overlaps","rangeIndex","eventsForSlot","slotStart","slotEnd","createColumns","eventElements","_createColumns","createRows","eventRange","endOverlaps","createDateLayoutConfiguration","configuration","minorTicks","createLayoutConfiguration","resources","resource","dataColorField","groupEqFilter","addSelectedState","selectedStateRegExp","INVERSE_COLOR_CLASS","MIN_HORIZONTAL_SCROLL_SIZE","HINT","ResourceView","_timeSlotCollections","_daySlotCollections","addTimeSlotCollection","_addCollection","addDaySlotCollection","SlotCollection","timeSlotCollectionCount","daySlotCollectionCount","daySlotByPosition","byDate","_slotByPosition","timeSlotByPosition","collectionIndex","slotIndex","slot","nextSlot","horizontalEnd","verticalEnd","timeSlotRanges","_startSlot","_endSlot","_continuousRange","TimeSlotRange","daySlotRanges","isAllDay","DaySlotRange","tail","startSlot","endSlot","slotRanges","isDay","_startTime","_endTime","isMultiDay","_startCollection","_endCollection","_getCollections","continuousSlot","isDaySlot","firstSlot","lastSlot","upSlot","keepCollection","groupByDateVertically","moveToDaySlot","isFirstCell","_verticalSlot","downSlot","moveToTimeSlot","leftSlot","_horizontalSlot","rightSlot","swapCollection","_collection","multiday","slotByStartDate","slotByEndDate","getSlotCollection","getTimeSlotCollection","getDaySlotCollection","SlotRange","addEvent","outerRect","startSlotDuration","endSlotDuration","innerRect","_slots","_groupIndex","_collectionIndex","allday","addTimeSlot","TimeSlot","addDaySlot","eventCount","DaySlot","Slot","firstChildHeight","firstChildTop","SchedulerView","_normalizeOptions","_resizeHint","_moveHint","_resourcesForGroups","_selectedSlots","visibleEndDate","setMilliseconds","workDayStart","workDayEnd","_addResourceView","resourceView","dateForTitle","selectedDateFormat","shortDateForTitle","selectedShortDateFormat","mobileDateForTitle","selectedMobileDateFormat","_changeGroup","_isGroupedByDate","_changeDate","_changeGroupContinuously","_changeViewPeriod","_isInRange","newEnd","_horizontalSlots","tempSlot","horizontalRange","_isVerticallyGrouped","_normalizeHorizontalSelection","_getNextHorizontalRange","_continuousSlot","_verticalSlots","verticalRange","_normalizeVerticalSelection","_getNextVerticalRange","timezoneOffset","constrainSelection","slots","verticalByDate","_updateDirection","moveToEventInGroup","selectedEvents","lastSelected","_continuousEvents","moveToEvent","allEvents","uniqueAllEvents","sortedEvents","eventIndex","_getAllEvents","_getUniqueEvents","_getSortedEvents","_getNextEventIndexBySlot","_getStartIdx","_getSelectedSlot","_selectEvents","_selectSlots","eventStartDate","tempIndex","slotStartDate","selectedEventIndex","exists","firstStartDate","secondStartDate","groupEvent","groupEvents","_resourceValue","_resourceBySlot","resourceIndex","groupedResources","_createResizeHint","_removeResizeHint","_removeMoveHint","_inverseEventColor","eventColor","eventColorIsDark","isDark","eventBackground","eventBackgroundIsDark","_eventTmpl","eventResources","eventResource","resourceColor","createLayout","allDayIndex","_topSection","_bottomSection","_groupOrientation","_scroller","refreshLayout","datesHeaderRows","isSchedulerHeightSet","timesTable","headerHeight","paddingDirection","thElm","_createDateLayout","_createColumnsLayout","_createRowsLayout","selectionByElement","prevGroupSlot","nextGroupSlot","_eventOptionsForMove","_updateEventForResize","_updateEventForSelection","brightnessValue","addContinuousEvent","lastEvent","getWorkDays","workDays","dayIndex","workWeekStart","workWeekEnd","CURRENT_TIME_MARKER_CLASS","CURRENT_TIME_MARKER_ARROW_CLASS","BORDER_SIZE_COEFF","DAY_VIEW_EVENT_TEMPLATE","DAY_VIEW_ALL_DAY_EVENT_TEMPLATE","DATA_HEADER_TEMPLATE","ALLDAY_EVENT_WRAPPER_STRING","EVENT_WRAPPER_STRING","MultiDayView","_workDays","calculateDateRange","_currentTime","_currentTimeMarkerUpdater","_updateCurrentTimeMarker","firstTimesCell","lastTimesCell","currentGroup","utcCurrentTime","slotElement","elementHtml","timesTableMarker","markerTopPosition","timesTableMarkerCss","markerWidth","currentTimeMarker","useLocalTimezone","setUpdateTimer","markerOptions","updateInterval","_currentTimeUpdateTimer","_updateResizeHint","slotIdx","_updateMoveHint","eventHint","_createEventElement","inverseColor","_appendMoveHint","_groupCount","_columnCountForLevel","_rowCountForLevel","_columnOffsetForResource","_columnCountInResourceView","_timeSlotGroups","groupCount","rowMultiplier","cellMultiplier","timeIndex","_timeSlotInterval","verticalViews","_addTimeSlotGroup","_addDaySlotGroup","_daySlotGroups","showWorkHours","minorTickCount","majorTick","majorTimeHeaderTemplate","minorTimeHeaderTemplate","slotTemplate","allDaySlotTemplate","eventTemplate","allDayEventTemplate","dateHeaderTemplate","showFullDay","showWorkDay","_touchEditable","_mouseEditable","resourceInfo","eventInfo","_addUserEvents","_allDayUserEvents","_editUserEvents","touchElement","_forTimeRange","middleRow","lastSlotRow","isWorkDay","msMajorInterval","startDay","majorTickDivider","isMajorTickRow","isMiddleRow","isLastSlotRow","allDayVerticalGroupRow","appendRow","isVerticalGroupped","dateID","dateGroupIndex","dateIndex","_addCellsToContent","tmplDate","_isWorkDay","allDayHeader","_startDate","_endDate","_allDayHeaderHeight","additioanlWidth","additionalHeight","nextDate","previousDate","_timeSlotIndex","eventStartTime","timeSlotInterval","_slotIndex","_dateSlotIndex","_positionAllDayEvent","slotRange","rowEvents","eventLength","slotWidth","allDayEvents","currentColumnCount","_headerColumnCount","leftOffset","rightOffset","eventHeight","_arrangeColumns","eventRightOffset","columnEvents","slotEvents","_positionEvent","isOneDayEvent","eventEndDate","_time","eventEndTime","singleDay","_isInTimeSlot","slotStartTime","slotEndTime","_date","_isInDateSlot","_updateAllDayHeaderHeight","allDaySlots","_renderEvents","isMultiDayEvent","occurrence","dateRange","allDayEventContainer","eventsByResource","eventsPerDate","_eventsByResource","itemIdx","eventsFilteredByResource","columnLevel","rowLevel","endMilliseconds","newDateStart","newDateEnd","DayView","WeekView","selectedDate","WorkWeekView","weekStart","tasks","resourceValue","flattenTaskGroups","flattenGroup","EVENT_WRAPPER_FORMAT","EVENT_DATE_TEMPLATE","EVENT_GROUP_TEMPLATE","AgendaGroupedView","_getColumns","groupHeaders","_getGroupsInDay","_getSumOfItemsForDate","_renderTaskGroupsCells","taskGroupIndex","taskIndex","_renderDateCell","tableRow","tasksGroups","_dateTemplate","_renderDates","_getParents","parentGroups","_getGroupsByDate","_renderTaskGroups","AgendaGroupedByDateView","columnsWithoutDate","_compareDateGroups","tasksGroupIdx","itemsIdx","lastItemValue","groupsInDay","sumOfItemsForDate","groupsRowSpanIndex","_groupTemplate","sortedArray","_groupsByDate","dateExists","AgendaView","_groupedView","_getGroupedView","delete","_eventTemplate","eventDateTemplate","eventGroupTemplate","_timeTemplate","eventTimeTemplate","_renderLayout","_tasks","eventDurationInDays","task","_createGroupConfiguration","_renderGroups","_eventsList","firstVisibleMonthDay","NUMBER_OF_ROWS","NUMBER_OF_COLUMNS","DAY_TEMPLATE","EVENT_TEMPLATE","MORE_BUTTON_TEMPLATE","MonthGroupedView","_verticalRowCountForLevel","_horizontalGroupCountForLevel","_getCalendarRowsLength","_createRows","horizontalGroupCount","verticalGroupIndex","isVerticallyGrouped","_createRow","_adjustStartDate","_getContent","_getTimeSlotByPosition","_nextSlotStartDate","_createVerticalColumnsLayout","_verticalGroupCount","_horizontalGroupCount","_positionMobileEvent","_addDaySlotCollections","_changePeriodGroupIndex","_appendResizeHint","_createMoveHint","MonthGroupedByDateView","verticalStart","dateIdx","isLastRow","subColumns","currentSlot","currentTableIndex","currentCellIndex","currentGroupIndex","selectionGroupIndex","MonthView","isSameSlot","isSameCollection","updateDirection","lastGroupIndex","dayTemplate","_firstDayOfMonth","_lastDayOfMonth","verticalGroupIdx","verticalGroupCount","groupedView","_createCalendar","calendarRowsLength","weekStartDates","_slotIndices","_weekStartDates","weekDayNames","eventTop","more","moreButtonHeight","intervalExcess","excess","dayInYear","leapYear","DAYS_IN_LEAPYEAR","DAYS_IN_YEAR","weekInMonth","firstWeekDay","firstWeekLength","normalizeDayIndex","weekDay","normalizeOffset","weeksInMonth","skipFirst","skipLast","numberOfWeeks","isInWeek","ruleWeekValues","weekDays","ruleWeekOffset","currentDay","ruleValues","ruleValue","availableRules","parseArray","numberSortPredicate","parseWeekDayList","WEEK_DAYS_IDX","serializeWeekDayList","valueString","WEEK_DAYS","getMonthLength","MONTHS","parseExceptions","exceptions","parseUTCDate","isException","dateTime","toExceptionString","RECURRENCE_DATE_FORMAT","startPeriodByFreq","freq","endPeriodByFreq","eventsByPosition","periodEvents","periodEventsLength","removeExceptionDates","exceptionDates","durationMS","startPeriod","inPeriod","ruleStart","ruleEnd","useEventStart","freqName","eventStartMS","eventStart","currentIdx","shiftedStart","shiftedEnd","shiftedStartTime","shifterEndTime","startZone","endZone","startOffsetDiff","endOffsetDiff","startTZOffsetDiff","endTZOffsetDiff","offsetTicksStart","offsetTicksEnd","isMissingDSTHour","parseRule","recurrenceRule","recurrenceException","exdates","frequencies","_startPeriod","kendoDate","_endPeriod","startTimezone","endTimezone","getZoneOffset","toOccurrence","isDSTMissingHour","dateOffset","dateMinusHour","dateMinusHourOffset","DATE_FORMATS","parseDateRule","dateRule","tzid","pairs","recur","splits","day1","day2","monthDays","yearDays","weeks","_hasRuleValue","serializeDateRule","ruleString","weekDayCheckBoxes","mobileWeekDayCheckBoxes","RECURRENCE_VIEW_TEMPLATE","DAY_RULE","WEEKDAY_RULE","WEEKEND_RULE","BaseRecurrenceEditor","RecurrenceEditor","RECURRENCE_HEADER_TEMPLATE","RECURRENCE_REPEAT_PATTERN_TEMPLATE","RECURRENCE_END_PATTERN_TEMPLATE","RECURRENCE_GROUP_BUTTON_TEMPLATE","MobileRecurrenceEditor","SU","MO","TU","WE","FR","SA","RULE_NAMES","RULE_NAMES_LENGTH","limitation","monthRules","monthLength","monthDay","yearDay","week","weekDayRule","weekDayRules","hourRules","startHours","minuteRules","currentMinutes","secondRules","BaseFrequency","_hour","firstRule","startTimeHours","normalizedCurrentIndex","normalizedStartIndex","frequency","_getNumberOfWeeksBetweenDates","exactWeeks","HourlyFrequency","DailyFrequency","WeeklyFrequency","MonthlyFrequency","YearlyFrequency","hourly","daily","weekly","monthly","yearly","recurrence","_namespace","recurrenceEditorTitle","never","repeatEvery","repeatOn","mobileLabel","offsetPositions","fourth","weekdays","weekend","_initInterval","_weekDayRule","_weekDay","_weekDayOffset","_weekDayView","weekDayOffset","weekDayValue","weekDayOffsetWidget","_initWeekDay","weekdayMessage","offsetMessage","weekDayInput","dayName","_initWeekDays","_initMonthDay","monthDayInput","_monthDay","_initCount","_count","_initUntil","_until","_initFrequency","_initContainer","_frequency","_initView","ddl","_initMonth","_period","monthInputs","monthName","_month1","_month2","endRule","_toggleEnd","_buttonNever","_buttonCount","_buttonUntil","toggleRule","_toggleMonthDay","_toggleYear","radioButtons","_buttonMonthDay","_buttonWeekDay","enableCount","enableUntil","monthRule","enableMonthDay","enableWeekDay","yearRule","enableMonth1","enableMonth2","_optionTemplate","_pane","_initRepeatButton","_initParentRepeatEnd","_defaultValue","endTitle","repeatTitle","headerTitle","repeatBy","dayOfMonth","_destroyView","_endFields","_chevronButton","_repeatValue","_endLiItem","endLabelField","endEditField","_navigateToView","_endParentLabelField","_endParentEndButton","_endText","_initRepeatEnd","_endLabelField","_endButton","frequencyMessages","_initRepeatView","_initEndNavigation","endMessages","_initEndView","viewType","returnViewId","endPattern","weekDaySelect","monthSelect","_monthSelect","repeatRuleGroupButton","weekDayView","monthDayView","weekDayName","setColspan","endPosition","rectLeft","rectRight","TimelineView","SCHEDULER_HEADER_WRAP_CLASS","TimelineGroupedView","_hideHeaders","_setColspan","timeColumn","_getRowCount","_getGroupsCount","_addContent","isVerticalGrouped","_addTimeSlotsCollections","datesCount","cellsPerGroup","cellsPerDay","cellOffset","_addTimeSlotToCollection","_getVerticalGroupCount","_getVerticalRowCount","eventGroups","maxRowCount","_renderEvent","eventGroup","adjustedEvent","eventObject","_arrangeRows","_verticalCountForLevel","_horizontalCountForLevel","_updateCurrentVerticalTimeMarker","_adjustLeftPosition","_prevGroupSlot","_nextGroupSlot","_verticalMethod","_isHorizontallyGrouped","_changeVerticalViewPeriod","_changeHorizontalViewPeriod","TimelineGroupedByDateView","isMajorTickColumn","isMiddleColumn","isLastSlotColumn","minorTickColumns","workDateIndex","tempStart","eventObjects","startEnd","eventMinWidth","defaultRowText","_calculateSlotRanges","_slotRanges","isLastMajorSlot","minorTickIndex","timeColumns","minorTickSlots","middleColumn","lastSlotColumn","minorSlotsCount","_setRowsHeight","_positionEvents","eventsForGroup","eventUid","rowsCount","timesRow","eventBottomOffset","_getBottomRowOffset","_refreshSlots","minOffset","maxOffset","slotsCollection","offsetRight","_adjustEvent","adjustedStartDate","adjustedEndDate","clonedEvent","eventDuraton","startRect","TimelineWeekView","TimelineWorkWeekView","TimelineMonthView","timezoneButtonText","appendTimezoneAttr","appendValidDateValidator","validDateRule","validationRules","validDateValidator","appendDateCompareValidator","dateCompareRule","convertData","wrapDataSerialization","removeUid","getOccurrenceByUid","applyZone","fromZone","toZone","dateCompareValidator","startInput","endInput","startPicker","endPicker","expandAll","trimOptions","createValidationAttributes","datatype","dropDownResourceEditor","dropDownResourceEditorMobile","descriptionEditor","multiSelectResourceEditor","kendoMultiSelect","multiSelectResourceEditorMobile","moveEventRange","MobileEditor","PopupEditor","Scheduler","defaultViews","SCHEDULER_EXPORT","TimezoneEditor","ZONETITLEOPTIONTEMPLATE","ZONEOPTIONTEMPLATE","MobileTimezoneEditor","MOUSEMOVE","EXPANDEDSTATE","VIEWSSELECTOR","INVERSECOLORCLASS","valueStartEndBoundRegex","EXCEPTION_SEPARATOR","OLD_EXCEPTION_SEPARATOR_REGEXP","RECURRENCE_EXCEPTION","DELETERECURRING","EDITRECURRING","DELETERECURRINGCONFIRM","RESETSERIESCONFIRM","DELETESERIESCONFIRM","VIEWBUTTONTEMPLATE","TOOLBARTEMPLATE","MOBILETOOLBARTEMPLATE","MOBILEDATERANGEEDITOR","dateTimeValidate","dateValidate","DATERANGEEDITOR","RECURRENCEEDITOR","kendoRecurrenceEditor","MOBILERECURRENCEEDITOR","kendoMobileRecurrenceEditor","MOBILEISALLDAYEDITOR","MOBILETIMEZONEPOPUP","noTimezone","TIMEZONEPOPUP","timezoneEditorButton","MOBILETIMEZONEEDITOR","kendoMobileTimezoneEditor","TIMEZONEEDITOR","kendoTimezoneEditor","SchedulerDataReader","SchedulerEvent","fieldTime","updateUid","recurrenceId","isOccurrence","isRecurring","isRecurrenceHead","validDate","SchedulerDataSource","_removeExceptionDate","_pushCreated","_addExceptionDate","_removeExceptions","replaceRegExp","newException","imageClass","timezonePopUp","multipleResources","desktop","toggleDateValidationHandler","_toggleDateValidation","isDateTimeInput","shouldValidate","_initTimezoneEditor","allDayEvent","windows_zones","recurrenceEditor","_buildDesktopEditTemplate","editableFields","separateTimezones","_createEndTimezoneButton","_buildMobileEditTemplate","_buildEditTemplate","_revertTimezones","_startTimezone","_endTimezone","timezoneView","kSwitch","endTimezoneRow","startTimezoneChange","timezoneTitle","_editPane","showDialog","kendoDialog","editEvent","resetSeriesBtn","deleteBtn","removeText","titleText","editorTitle","resetSeries","deleteText","_timezonePopup","buttonIndex","getKendoWindow","activator","saveButton","cancelButton","timezonePopup","timezoneEditorTitle","_initModel","_resources","_movable","_bindResize","_createEditor","_unbindResize","eventsCount","sortedData","eventsUids","eventsUidsLength","_isInverseColor","_groupsByResource","groupsArray","parentFieldValue","prevIndex","selectedGroups","groupsByResource","_selectedEvents","collIdx","dayCollIdx","eventsLength","_createSelection","startX","endX","touchMoveHandler","_touchPosX","_tapPosition","_touchPosY","_userTouched","amplitude","_amplitude","_mouseDownSelection","mouseMoveHandler","isRight","_selectFirstSlot","_ctrlKey","_shiftKey","currentUid","labelFormat","oldSelection","oldEventsLength","ariaEventLabel","ariaSlotLabel","uids","occurrenceByUid","coordinate","verticalScroll","horizontalScroll","applyVerticalScroll","applyhorizontalScroll","_moveTimer","_viewByIndex","focusedViewName","viewByIndex","prevSelection","isModifier","focusableToolBarSelector","viewsWrapper","focusedViewIndex","_focusedView","_showCalendar","removeEvent","_selectedViewName","_adjustSelectedDate","indexOfEvent","deleteWindowTitle","workWeek","agenda","timeline","timelineWeek","timelineWorkWeek","timelineMonth","recurrenceMessages","resetSeriesWindowTitle","deleteWindowOccurrence","deleteWindowSeries","editWindowTitle","editWindowOccurrence","editWindowSeries","resourceDS","_resourceRefreshHandler","_resourceProgressHandler","_resourceErrorHandler","_moveDraggable","_resizeDraggable","_model","_selectedView","startResources","originSlot","originStartTime","clonedEvents","cachedEvents","evtClone","evtCloneElement","targetSlotElement","endResources","updatedEventOptions","eventOptions","_isMultiDrag","_updateEvent","k-resize-e","k-resize-w","k-resize-n","k-resize-s","originalEnd","updateEvent","_preventRefresh","_convertDates","recurrenceHead","updateSeries","updateOccurrence","exception","_showRecurringDialog","editRecurring","occurrenceText","seriesText","isResetSeries","_isEditorOpened","deleteRecurringConfirmation","deleteSeriesConfirmation","resetSeriesConfirmation","cancelEvent","_editEvent","saveEvent","_editRecurringDialog","editOccurrence","editSeries","editRecurringMode","_attemptRefresh","_deleteRecurringDialog","_removeEvent","occurrencesInRange","deleteOccurrenceConfirmation","seriesCallback","occurrenceCallback","currentModel","deleteOccurrence","deleteSeries","deleteRecurring","_unbindView","_bindView","_viewRemoveHandler","_viewAddHandler","_viewEditHandler","_viewNavigateHandler","switchWorkDay","_workDayMode","_selectView","_viewActivateHandler","viewButton","viewButtons","viewSelect","_renderView","_viewsCount","_initializeView","isSettings","hasType","resourcePromises","_resourceDataSource","dataSourceInstance","_bindResourceEvents","isResourceGrouped","_refreshResource","formattedDate","formattedShortDate","viewsCount","hover","targetElm","preventRefresh","slotByPosition","slotByElement","resourcesBySlot","zones_titles","_zonesQuery","_zoneTitleId","_zoneTitlePicker","_zonePicker","_zoneTitle","_zone","zoneTitle","other_zone","_bindZones","_zonePickerLabel","zoneSelect","zonePicker","zone_value","MAX_DOUBLE_TAP_DISTANCE","eventProxy","_triggerTouch","gestureEventProxy","gestureend","enableSwipe","minXDelta","maxYDelta","maxDuration","doubleTapTimeout","lastTap","_swipestart","_swipemove","createPlaceholders","kendoDomElement","blurActiveElement","kendoDom","kendoTextElement","titleFromField","orderId","SIZE_CALCULATION_TEMPLATE","listStyles","gridHeader","gridHeaderWrap","gridContent","gridContentWrap","iconCollapse","iconExpand","iconHidden","iconPlaceHolder","resizeHandleInner","dropPositions","dropTop","dropBottom","dropAdd","dropMiddle","dropDenied","dragStatus","dragClueText","GanttList","_domTrees","_adjustHeight","headerCols","tableCols","_reorderDraggable","_tableDropArea","_contentDropArea","_columnResizable","headerTree","calculateRowHeight","domTree","_cols","_ths","tableAttr","_trs","data-field","data-title","_levels","data-uid","data-level","_tds","_td","formatedValue","resourcesField","selectedClassName","_setDataSource","iconSelector","finishEdit","_closeCell","_startEditHandler","_columnFromElement","_editCell","_editableContainer","kendoTouch","doubletap","modelCopy","FORMAT","_editableContent","kendoDateTimePicker","cancelUpdate","taskInfo","updateInfo","draggedTask","dropAllowed","allowDrop","taskParent","defineLimits","beforeLimit","afterLimit","defineAction","kendoDropTargetArea","positionResizeHandle","colSelector","minColumnWidth","timelineStyles","GanttTimeline","kendoHtmlElement","DBLCLICK","TIME_HEADER_TEMPLATE","DAY_HEADER_TEMPLATE","WEEK_HEADER_TEMPLATE","MONTH_HEADER_TEMPLATE","YEAR_HEADER_TEMPLATE","RESIZE_HINT","RESIZE_TOOLTIP_TEMPLATE","PERCENT_RESIZE_TOOLTIP_TEMPLATE","TASK_TOOLTIP_TEMPLATE","nonWorking","tasksWrapper","rowsTable","columnsTable","tasksTable","dependenciesWrapper","resourceAlt","taskSingle","taskMilestone","taskSummary","taskWrap","taskMilestoneWrap","resourcesWrap","taskDot","taskDotStart","taskDotEnd","taskDragHandle","taskContent","taskTemplate","taskActions","taskDelete","taskComplete","taskDetails","taskDetailsPercent","iconDelete","taskResizeHandle","taskResizeHandleWest","taskResizeHandleEast","taskSummaryProgress","taskSummaryComplete","lineHorizontal","lineVertical","arrowWest","arrowEast","dragHint","dependencyHint","tooltipWrapper","tooltipContent","tooltipCallout","marquee","marqueeColor","GanttView","_headerTree","_taskTree","taskTree","_taskTemplate","_dependencyTree","dependencyTree","_taskCoordinates","headerRow","_dragHint","_resizeTooltip","_taskTooltip","_percentCompleteResizeTooltip","showWorkDays","hourSpan","slotSize","renderLayout","_createSlots","_tableWidth","_calculateTableWidth","_slotDimensions","_headers","_colgroup","_timeSlots","taskCount","_rowsTable","_columnsTable","_tasksTable","calculatedSize","_contentHeight","_renderCurrentTime","_createTable","slotSpan","slotsCount","totalSpan","isNonWorking","resourcesPosition","resourceStyle","_calculateMilestoneWidth","milestoneWidth","resourcesMargin","_calculateResourcesMargin","taskBorderWidth","_calculateTaskBorderWidth","addCoordinates","taskLeft","taskRight","isMilestone","_taskPosition","_renderTask","_renderResources","currentSpan","maxSpan","boundingClientRect","milestone","taskWrapper","taskElement","progressHandleOffset","dragHandleStyle","taskWrapAttr","_renderSummary","_renderMilestone","_renderSingleTask","dependencyCreate","dragPercentComplete","progressWidth","taskChildren","startLeft","endLeft","slotDuration","slotOffset","_timeByPosition","snapToEnd","_renderDependencies","_renderDependency","predecessor","predecessorId","successor","successorId","_renderFF","_dependencyFF","_renderSS","_renderFS","_dependencyFS","_renderSF","overlap","arrowOverlap","minLineWidth","fromTop","toTop","addHorizontal","_line","addVertical","minLineHeight","minDistance","_createDragHint","_updateDragHint","_removeDragHint","tooltipHeight","tooltipTop","taskTop","resizeTooltipFormat","_resizeTooltipWidth","_resizeTooltipTop","resizeStart","tooltipLeft","tablesWidth","tooltipWidth","tableOffset","_updatePercentCompleteTooltip","tooltipMiddle","arrowHeight","_removePercentCompleteTooltip","_updateDependencyDragHint","useVML","_removeDependencyDragHint","_creteVmlDependencyDragHint","_creteDependencyDragHint","transform-origin","-ms-transform-origin","-webkit-transform-origin","-ms-transform","outerHTML","_createTaskTooltip","mouseLeft","contentOffset","_removeTaskTooltip","elementLeft","elementRight","rowTop","rowBottom","contentTop","contentBottom","contentLeft","contentRight","_scrollToDate","viewStart","viewEnd","headerText","levelIndex","levelCount","_hours","isWorkHour","_days","_weeks","daySlots","_months","endMonth","_years","monthSpan","_slotHeaders","_getCurrentTime","tablesWrap","GanttDayView","timeHeaderTemplate","dayHeaderTemplate","optionsRange","daySlot","hourSlots","GanttWeekView","weekHeaderTemplate","endDay","GanttMonthView","monthHeaderTemplate","GanttYearView","yearHeaderTemplate","monthSlots","taskWrapActive","_percentResizeDraggable","_createDependencyDraggable","_percentDraggable","_dependencyDraggable","calculatedRowHeight","calculatedCellHeight","_calculatedSize","startOrder","endOrder","_taskByUid","currentStart","cleanUp","dragInProgress","updateHintDate","currentEnd","taskElementOffset","timelineOffset","originalPercentWidth","maxPercentWidth","currentPercentComplete","updateElement","originalHandle","hoveredHandle","hoveredTask","toggleHandles","tablesOffset","currentX","currentY","fromStart","selectDependency","selectedDependency","dependencyDestroy","currentMousePosition","tooltipOptions","scrollPositions","GanttTask","GanttDataSource","ResourceEditor","Gantt","supportsMedia","defaultIndicatorWidth","PERCENTAGE_FORMAT","DIRECTIONS","ARIA_DESCENDANT","ACTIVE_CELL","ACTIVE_OPTION","TASK_DELETE_CONFIRM","DEPENDENCY_DELETE_CONFIRM","TOGGLE_BUTTON_TEMPLATE","BUTTON_TEMPLATE","COMMAND_BUTTON_TEMPLATE","HEADER_VIEWS_TEMPLATE","TASK_DROPDOWN_TEMPLATE","RESOURCESEDITOR","assignButton","ganttStyles","listWrapper","timelineWrapper","splitBarWrapper","splitBar","splitBarHover","popupList","buttonDelete","buttonCancel","buttonSave","editForm","formContainer","resourcesFormContainer","buttonsContainer","editField","editLabel","headerWrapper","footerWrapper","iconPlus","iconPdf","iconToggle","viewButtonDefault","pdfButton","appendButton","TaskDropDown","appendButtonSelector","listOuterWidth","_focusTimeout","createDataSource","GanttDependency","GanttDependencyDataSource","successors","_dependencies","predecessors","taskAllChildren","_childRemoved","_toGanttTask","taskSiblings","_reorderSiblings","_resolveSummaryFields","taskId","taskLevel","offsetChildren","parentTask","modelChangeHandler","_resolveSummaryStart","_resolveSummaryEnd","_resolveSummaryPercentComplete","_updateSummary","getSummaryStart","currentMin","_updateSummaryRecursive","getSummaryEnd","currentMax","getSummaryPercentComplete","oldOrderId","childCount","popupStyles","editTask","editableWidget","_attachHandlers","_dettachHandlers","_cancelProxy","_saveProxy","_save","_updateModel","resourcesEditorTitle","_resourceGrid","_createButtons","resourcesHeader","unitsHeader","unitsValidation","_timeline","_adjustDimensions","_assignments","_dropDowns","_dataBind","assignments","deleteTaskConfirmation","deleteDependencyConfirmation","deleteTaskWindowTitle","deleteDependencyWindowTitle","_dependencyRefreshHandler","_dependencyErrorHandler","footerDropDown","headerDropDown","removeListener","_mediaQueryHandler","selectedView","splitBarHandleClassName","viewsSelector","pdfSelector","toggleSelector","treelist","hoveredClassName","actionsWrap","max-width","addListener","listSelector","timelineSelector","splitBarSelector","toolbarHeight","splitBarWidth","treeListWidth","scrollTarget","actionsSelector","actionMessages","_createTask","toggleButtons","restoreFocus","_cachedCurrent","_createResourceEditor","_updateTask","currentViewSelector","_createDependency","removeTask","removeDependency","refreshDependencies","dataFormatField","_assignmentsRefreshHandler","dataTaskIdField","dataResourceIdField","_createPopupButton","cancelTask","saveTask","_onDialogClose","assignmentsModel","Units","_resourceEditor","_wrapResourceData","_updateAssignments","setDependenciesDataSource","assignment","resourceId","hasMatch","_updateAssignment","_removeAssignment","_createAssignment","taskCopy","_editTask","_syncDataSource","resourceValueField","_taskConfirm","_removeTask","_scrollToUid","_preventDependencyRefresh","_dependencyConfirm","_removeDependency","_removeTaskDependencies","_removeTaskAssignments","_confirm","scrollToUid","cachedUid","cachedIndex","_assignResources","groupAssigments","assigments","applyTaskResource","wrapTask","resourcedId","taskAssignments","valuePerResource","timelineWidth","timelineScroll","treeListWrapper","headerSelector","timelineHeader","timelineContent","treeListHeader","treeListContent","expandState","scrollVertical","moveVertical","subling","moveHorizontal","toggleExpandedState","deleteAction","selectedTask","_getToolbarItems","listClass","calculateTransform","calculateOffset","applyCssStyles","FLAGWRAPCLASS","TRACKITEMCLASS","SCROLLABLEWRAPCLASS","DEFAULTHORIZONTALCARDTEMPLATE","DEFAULTVERTICALCARDTEMPLATE","HORIZONTALTRACKTEMPLATE","VERTICALEVENTSTEMPLATE","ARROWSHTML","htmlContent","callOut","setPageCallout","propery","callOutElement","HorizontalPane","dataFieldMappings","initPages","repositionPages","titleField","subtitleField","subtitle","descriptionField","imagesField","actionsField","isForward","calloutOffset","Timeline","dataItemUid","currentEventIndex","_forward","_eventPage","_firstIndexInView","_initDataFieldMappings","trackWrap","eventsWrap","eventsList","_trackWrap","_eventsWrap","alternatingMode","collapsibleEvents","_renderContentVertical","dateField","dataDateField","dataTitleField","dataSubtitleField","dataDescriptionField","dataImagesField","dataActionsField","alterMode","dateFormat","showDateLabels","eventWidth","_renderContentHorizontal","trackTemplate","_dataFieldMappings","initialEventIndex","_animationInProgress","_setCurrentEvent","trackItem","eventContainer","trackItemCircle","_repositionEvents","_updateArrows","_validateNavigation","numOfEvents","maxEvents","firstEventInViewIndex","firstEventInView","firstIndexInView","_tackItemWidth","_redrawEvents","redraw","circleElement","trackWrapScrollableElement","_initHorizontal","firstEventElement","sortCells","visibleChildColumns","updateRowSpans","containerDOMtree","emptyRows","shouldRemove","isDirtyColumn","TreeListModel","TreeListDataSource","TreeListPager","IncellEditor","TreeList","BEFORE_EDIT","PAGE_CHANGE","SAVE_CHANGES","CELL_CLOSE","PARENTIDFIELD","NAVHEADER","dirtyCell","gridToolbar","gridFilter","withIcon","iconFilter","createchild","defaultParentId","parentIdField","childrenMap","dataItemId","dataItemParentId","_childrenMap","idsMap","_idMap","dataMaps","_dataMaps","rootNodes","removeCollapsedSubtreesFromRootNodes","prunedTree","maxDepth","removeCollapsedSubtrees","childIdx","TreeQuery","filteredChildrenMap","prunedData","processFromRootNodes","_getDataMaps","fromModel","_modelParentIdField","_isPageable","_getData","_replaceData","sourceLength","_defaultParentId","_modelOptions","_removeChildData","_removeFromDataMaps","_getChildrenMap","_subtree","newModel","_insertInDataMaps","_filterCallback","_modelIdField","parentSubtree","_parentNode","_initIdsMap","_idsMap","_getIdsMap","_getFilteredChildrenMap","filteredChildren","_setFilteredChildrenMap","_initDataMaps","_initChildrenMapForParent","_defaultTreeModelOptions","modelOptions","_defaultDataItemType","subtree","pageableChildrenMap","hasLoadedChildren","_processPageableQuery","_processTreeQuery","_replaceWithObservedData","_processDataItemsState","_replaceItemsInDataMaps","_dataToAggregate","_replaceInMapWithObservedData","firstDataItem","firstItemParents","_parentNodes","observableArray","directParent","itemType","_insertInIdsMap","_replaceInMap","itemInArray","dataToReplace","replacementArray","itemToReplace","itemToReplaceId","dataItemIndex","observableItem","_getById","_insertInChildrenMap","itemId","_removeFromIdsMap","_removeFromChildrenMap","_indexInChildrenMap","_itemIndexInMap","dataMap","_isLastItemInView","_defaultPageableQueryOptions","_updateCollapsedTotalForAction","_calculateCollapsedTotal","_setFilterCollapsedTotal","_dataWithoutCollapsedSubtrees","_removeCollapsedSubtrees","_processDataItemState","_modelLoaded","_modelError","requestParams","defaultPromise","rootId","_byParentId","defaultId","_rootNode","_pageableRootNodes","nodesWithoutParentInView","_nodesWithoutParentInView","_parentNodesNotInView","parentInView","_parentInView","_pageableModelLevel","baseFilter","_restorePageSizeAfterAddChild","_setAddChildPageSize","queryOptions","_addChildPageSize","createEditable","_isEditable","formContent","_appendTemplate","_appendFields","_appendButtons","fieldRenderer","commandRenderer","_detachHandlers","_hasLockedColumns","originalSrcParentId","originalSrcIndex","itemFor","_itemFor","lockedDiv","_showStatus","_cancelEditor","_angularFooters","allAggregates","footerRows","_footerItems","_angularFooter","_showNoRecordsTemplate","_contentTree","_lockedContentTree","noRows","_hideStatus","_hideNoRecordsTempalte","isHeightSet","contentWrap","pagerHeight","_destroyEditor","_destroyPager","_autoExpandable","_dataSourceFetchProxy","_statusTree","_lockedHeaderColsTree","_lockedContentColsTree","_lockedHeaderTree","afterModelLoaded","_toggleData","_isIncellEditable","_togglePageableData","_renderProgress","_refreshPager","_toggleChildren","_tableClick","newCurrent","_findCurrentCell","_handleExpand","_handleCollapse","incellEditing","_preventPageSizeRestore","editedCell","nextFocusableCellRowIndex","nextFocusableCellIndex","currentFocusedCellRowIndex","currentFocusedCellIndex","retryButton","_commandClick","_attachCellEditingEventHandlers","_closeCellTimeout","_commandByName","currentName","_ensureExpandableColumn","expandableColumns","expandable","_columnTemplates","_columnAttributes","convertStyle","declaration","camelCase","_initVirtualTrees","_renderCols","_headerColsTree","_contentColsTree","_buildCommands","_lockedColumns","_nonLockedColumns","_templateColumns","_flushCache","maps","viewChildrenMap","_renderOptions","_dataToRender","_renderedModelLevel","_absoluteIndex","_clearRenderMap","_viewChildrenMap","editedColumn","editedColumnIndex","parentsNotInView","parentNotInView","parentNotInViewId","childId","parentsCopy","parentIndex","_markNodeAsNonRenderable","_skipRenderingMap","nodeId","cellClasses","_clearColsCache","_updateRowSpans","included","_setColumnDataIndexes","_renderHeaderTree","rowsToRender","lockedWidth","nonLockedWidth","_edit","data-parentId","_footerId","renderer","editedColumnField","editColumn","columnHasEditCommand","_cellContent","dirtyIndicator","_evalDirtyIndicatorTemplate","_evalColumnTemplate","_evalCustomColumnTemplate","_customTemplateSettings","columnTemplateAlias","templateString","templateFunction","dirtyIndicatorTemplate","_button","data-command","_positionResizeHandle","filterMenuInstance","_selectableTarget","ds","_isPopupEditable","_cancelEdit","inlineEditing","_isInlineEditable","showNewModelInView","_insertAt","_shouldRestorePageSize","leafCols","_createIncellEditor","_toggleColumnVisibility","_findColumn","_adjustTablesWidth","_allowDragOverContainers","_reorderTrees","destSources","destContainer","destDomTree","sourcesContainer","sourcesDomTree","destDomChildren","destRow","sourcesLeafs","destLeafs","reorderTaget","destThs","sourceDOM","sourceChildren","_insertTree","domTr","rowsToAdd","sourceLocked","destLocked","destRows","nonLockedColumnsLength","initHandler","_columnMenuInit","openHandler","_columnMenuOpen","lockedColumnsLength","_createPager","treeList","progressBar","sqr","renderSize","renderPos","romanToArabic","memoize","isUnicodeLetter","RX_UNICODE_LETTER","withExit","Return","CODE","UCS2","readChar","croak","msg","readWhile","pred","readAsciiWhile","skipWhitespace","eat","isDigit","isHexDigit","isNameStart","isName","xmlComment","END_COMMENT","xmlTag","QUESTION_MARK","xmlDecl","START_COMMENT","xmlName","xmlAttrs","END_SHORT_TAG","GREATER_THAN","xmlContent","END_TAG","START_CDATA","END_CDATA","LESS_THAN","AMPERSAND","xmlEntity","xmlString","QUOTE","APOSTROPHE","LOWERCASE_X","UPPERCASE_X","ENTITIES","SEMICOLON","END_DECLARATION","$tag","EQUAL","arg2","exit","EXIT","amp","quot","apos","nbsp","copyToClipboard","COMMAND_TYPES","DrawingCommand","ReorderDrawingsCommand","TargetValueCommand","PropertyChangeCommand","ApplyFilterCommand","DeleteCommand","AddCommand","NameCommand","AUTO_FILL","CUT","VALIDATION","_workbook","_property","_setRange","setState","getState","rejectState","validationState","reason","_forEachCell","_ref","toRangeRef","usesImage","DrawingUpdateCommand","_sheet","_drawing","_orig","_activeDrawing","triggerChange","InsertImageCommand","_blob","_width","aspect","addDrawing","addImage","removeDrawing","DeleteDrawingCommand","_origIndex","_newIndex","_reorder","BringToFrontCommand","SendToBackCommand","ColumnWidthCommand","RowHeightCommand","HyperlinkCommand","_prevLink","_prevUnderline","_hasSetValue","GridLinesChangeCommand","skipHiddenCells","ClearContentCommand","rowValues","nullValues","currentRange","canEditArrayFormula","refs","changeType","clearContent","_getValidationState","EditCommand","_editRange","arrayFormula","activeCellSelection","withCultureDecimals","editRange","_adjustRowHeight","calc","ParseError","InsertCommentCommand","TextWrapCommand","forEachRow","AdjustDecimalsCommand","_delta","forEachCell","adjustDecimals","BorderChangeCommand","_type","_style","_batch","noBorders","insideBorders","outsideBorders","allBorders","leftBorder","rightBorder","rightColumn","topBorder","topRow","bottomRow","insideHorizontalBorders","insideVerticalBorders","MergeCellCommand","activeCell","unmerge","horizontally","vertically","forEachColumn","FreezePanesCommand","_topLeft","unfreeze","PasteCommand","_event","_clipboardContent","_clipboardPasteRef","pasteRef","activeSheet","canPaste","clipboardContent","menuInvoked","pasteOnMerged","pasteOnDisabled","AdjustRowHeightCommand","ToolbarPasteCommand","CutCommand","_eventType","rangeValues","canCopy","multiSelection","CopyCommand","ToolbarCopyCommand","AutoFillCommand","_origin","autoFillData","intersectingArrayFormula","_previewFillFrom","_properties","FillError","ToolbarCutCommand","FilterCommand","hasFilter","SortCommand","ascending","expandRange","cantSort","_sheetRef","filterRule","valueFilter","ValueFilter","customFilter","CustomFilter","ClearFilterCommand","HideLineCommand","setAxisState","getAxisState","axisManager","hideSelectedRows","hideSelectedColumns","UnHideLineCommand","unhideSelectedRows","unhideSelectedColumns","_expandedRange","_expand","_undoOne","_restoreModifiedFormulas","formulas","recalc","deleteSelectedRows","deleteSelectedColumns","insertColumn","_pos","AddColumnCommand","preventAddColumn","AddRowCommand","preventAddRow","EditValidationCommand","OpenCommand","cannotUndo","fromFile","excelImportErrors","openDialog","SaveAsCommand","_name","nameDefinition","DefineNameCommand","defineName","DeleteNameCommand","undefineName","FormulaBar","formulaInput","FormulaInput","isOpenParen","isCloseParen","isMatchingParen","knownFunction","runtime","FUNCS","isEqualToken","tok1","tok2","KEY_NAMES","PRIVATE_FORMULA_CHECK","27","32","autoScale","_highlightedRefs","_staticTokens","_formulaSource","_formulaList","scalePadding","getPos","lookup","lookupNode","sel","focusOffset","setPos","differ","eiv","home","formulaSource","_formulaListChange","activeToken","completion","tokenCtx","_tokenContext","nextToken","_replaceAt","_focusId","_isFormula","_navigated","_keyDownTimeout","_syntaxHighlight","_sync","getData","tokenize","_editorToSync","_cellTooltip","toggleTooltip","rectangle","canInsertRef","isKeyboardAction","_canInsertRef","afterPoint","canReplace","canInsertBetween","strictMode","refAtPoint","simplify","setSheet","syncWith","iehandler","highlightedRefs","refClasses","series","refIndex","parens","colorClass","_setStaticTokens","insertNewline","Mac","isAlphaNum","keyName","EventListener","13","46","113","_observer","keyDownProxy","mouseProxy","touchProxy","_pressLocation","handleEvent","rightClick","catchAllHandler","eventKey","mod","NilNode","RangeTreeNode","heir","intersecting","RangeTree","RangeList","Iterator","SparseRangeList","findrange","firstRange","rangeValue","expandedValues","sortedIndices","valueComparer","sourceStart","sourceEnd","targetStart","fromJSON","ValueRange","toExcelFormat","cloneFormulaValue","deepClone","cloneFormulaTree","Property","JsonProperty","ValueProperty","dateToNumber","limitPrecision","PropertyBag","specs","serializable","depends","spec","si","iter","iterators","addBorder","hBorders","leftBorders","rightBorders","forEachProperty","ALL_PROPERTIES","columnName","displaySheet","displayRef","aa","Ref","NameRef","CellRef","RangeRef","UnionRef","hasSheet","_hasSheet","absolute","toRow","toColumn","rangeAt","nextRangeIndex","previousRangeIndex","refs1","refs2","replaceAt","forEachColumnIndex","forEachAxisIndex","forEachRowIndex","renameSheet","oldSheetName","newSheetName","trow","tcol","arow","acol","forRow","endSheet","_containsCell","_intersectRange","a_left","a_top","a_right","a_bottom","b_left","b_top","b_right","b_bottom","rr1","rc1","rr2","rc2","changes","relTL","relBR","toCell","startRow","endRow","startCol","endCol","topLeftRow","topLeftCol","bottomRightRow","bottomRightCol","theRef","newRefs","NULLREF","SHEETREF","FIRSTREF","AutoFillCalculator","_grid","rectIsVertical","endRect","autoFillDest","quadrant","pivot","cornerResult","further","EdgeNavigator","SheetNavigator","rangeGetter","prevLeft","prevVisible","nextRight","nextVisible","nextLeft","prevRight","autoFillCalculator","colEdge","columnRange","rowEdge","rowRange","_viewPortHeight","unionWithMerged","leftCol","rightCol","selectionIncludesMergedCells","_mergedCells","setSelectionValue","addToExisting","refForMode","rowRef","colRef","startSelection","startAutoFill","completeSelection","selectForContextMenu","selectDrawingForContextMenu","modifySelection","scrollInto","newSelection","determineDirection","viewPortHeight","originalSelection","currentOriginalSelectionRange","firstVisible","lastVisible","updateCurrentSelectionRange","moveActiveCell","originalActiveCell","navigateInSelection","setSelection","selTopLeft","selBottomRight","currentNavigationRange","nextNavigationRange","previousNavigationRange","shouldSkip","singleCellSelection","extendSelection","resizeAutoFill","isMerged","isHiddenRow","isHiddenColumn","forEachMergedCell","merged","_autoFillOrigin","punch","updateAutoFill","currentSelectionRange","leftMode","rightMode","topMode","bottomMode","originalSelect","selectionRangeIndex","bottomCol","AxisManager","forEachSelectedColumn","forEachSelectedRow","includesHiddenColumns","includesHidden","includesHiddenRows","selectionIncludesHiddenColumns","selectionIncludesHiddenRows","_saveModifiedFormulas","hasRight","hasLeft","hasBottom","hasTop","hideRow","unhideColumn","unhideRow","preventInsertRow","preventInsertColumn","newState","foreign","origRef","setStateData","stripStyle","borderObject","cellState","vBorders","ignoreColspan","dr","dc","parseTSV","_externalContent","_internalContent","_uid","intersectsMerged","originActiveCell","rowDelta","colDelta","external","isExternal","_isInternal","internalHTML","internalPlain","looksLikeANumber","getTextHeight","font-size","font-family","white-space","overflow-wrap","word-wrap","PROPERTIES","skipHiddenRows","skipHiddenCols","noTrigger","_resizedRef","existingFormat","existingFormatType","editorChange","isInEditMode","numberToDate","_useCultureDecimals","__","setArrayFormulaRange","_forFormulas","arrayFormulaRange","mergedRef","vi","isAutofill","setProp","isFilteredRow","contentsOnly","formatOnly","keepBorders","clearFormat","isSortable","mc","secondary","cant","_getMergedCells","hasMerged","_sortBy","isFilterable","_filterBy","intersectingMerged","Formula","Validation","internalClipboard","externalClipboard","textHeight","_defaultCellStyle","flag","CalcError","argmax","sameRef","compileArgumentChecks","comp","wantNulls","allowError","arrayArgs","cond","canBeArrayArg","hasArrayArgs","typeCheck","forced","haveForced","forceNum","toPrecision","maybeRoundFloatErrors","withErrorHandling","makeSyncFunction","doit","xargs","arrays","getNA","makeAsyncFunction","makeCallback","defineFunction","kendoSpreadsheetArgs","argsAsync","julianDaysToDate","jd","ord","ORDINAL_ADD_DAYS","isLeapYear","yr","daysInYear","daysInMonth","mo","DAYS_IN_MONTH","da","unpackDate","unpackTime","frac","MS_IN_DAY","MS_IN_HOUR","MS_IN_MIN","serialToDate","makeDateFormat","binaryCompare","exports","Context","NUMBER_OR_ZERO","ARGS_NUMERIC","ARGS_ANYVALUE","resolveCells","_resolve","asMatrix","_arrayArg","onFormula","getRefCells","cellValues","getRefData","fetchName","nameValue","ValidationFormulaContext","fname","bool","isRange","hiddenInfo","includeEmpty","eachRow","eachCol","mapRow","mapCol","transpose","va","vb","adds","determinant","inverse","imax","augment","printer","absrefs","forceRefs","lcsheet","parentContext","affectedSheet","formulaMoves","formulaRow","formulaCol","newFormulaRow","newFormulaCol","formulaSheet","prevRefs","prevRange","newRef","co","comatrix","thmatrix","elmatrix","defineAlias","kendoSpreadsheetAliases","compileValidation","validationHandler","parsedFromDate","parsedToDate","fromIsListValue","TRANSPOSE_FORMAT","DATE_FORMAT","fromIsDateValue","parseFormula","toIsDateValue","validationComparers","valueToCompare","toValue","to_value","from_value","_getListData","tooltipMessageTemplate","tooltipTitleTemplate","_formatMessages","fromFormula","toFormula","_setMessages","tooltipTitle","tooltipMessage","_getOptions","compareValue","compareFormat","calculateFromCallBack","prevFrom","prevTo","greaterThan","lessThan","between","equalTo","notEqualTo","notBetween","MODIFIED_FORMULAS","Sheet","Drawing","_activeCell","currentOriginalNavigationRange","changeActiveCell","triggerSelect","_reinit","headerWidth","Axis","_filteredRows","_frozenRows","_frozenColumns","_suspendChanges","_showGridLines","_gridLinesColor","_sorter","Sorter","_viewSelection","_editSelection","_formulaSelections","_selectionState","_inEdit","_navigator","_axisManager","_sheetName","_field","suspendChanges","dataSourceBinder","SheetDataSourceBinder","unhide","_copyRange","sourceRangeRef","targetRef","nextRefTopLeft","nextRefBottomRight","nextIndex","nextBottomIndex","sheetByName","cellRefIndex","_adjustReferences","_forValidations","adjustNames","selectedHeaders","allCols","nextRef","isEnabledRow","isEnabledColumn","gridLinesColor","numRows","numColumns","parseReference","cellRef","forEachFilterHeader","columnRef","forEachRange","startCellIndex","endCellIndex","startResizing","_initialPosition","_resizeInProgress","_autoFillInProgress","_autoFillDest","_autoFillPunch","_autoFillHint","_autoFillDirection","autoFillRef","autoFillPunch","autoFillInProgress","draggingInProgress","_draggingInProgress","completeResizing","hintPosition","resizeHintPosition","resizeHandlePosition","_renderComment","_commentRef","_resizeHandlePosition","_resizeHintPosition","removeResizeHandle","startDragging","completeDragging","refBox","drawingBoundingBox","indexVisible","refBoundingBox","_selectionInProgress","operatingRange","selectionInProgress","expandedRef","selectionState","isAxis","trims","maxRow","maxCol","rowSelection","colSelection","rowState","colState","_setFormulaSelections","_viewActiveCell","clearDefaultStyle","viewSelection","activeCellRef","_compileFormula","_compileValidation","_refreshFilter","resetFormulas","resetValidations","revalidate","_copyValuesInRange","suspended","sortBy","filterColumn","filterRef","ALL_REASONS","currentRef","useCultureDecimals","withDecimalSeparator","Rectangle","EMPTYCHAR","sheetsBarClassNames","SheetsBar","sheetsBarWrapper","sheetsBarSheetsWrapper","sheetsBarActive","sheetsBarInactive","sheetsBarAdd","sheetsBarRemove","sheetsBarItems","sheetsBarEditor","sheetsBarScrollable","sheetsBarNext","sheetsBarPrev","sheetsBarKItem","sheetsBarKActive","sheetsBarKTextbox","sheetsBarKLink","sheetsBarKIcon","sheetsBarKFontIcon","sheetsBarKButton","sheetsBarKButtonBare","sheetsBarKArrowW","sheetsBarKArrowE","sheetsBarKReset","sheetsBarKIconX","sheetsBarKSprite","sheetsBarKIconPlus","sheetsBarHintWrapper","sheetsBarKResetItems","_openDialog","_tree","_addButton","_createSheetsWrapper","_toggleScrollEvents","_createSortable","_onSheetReorderStart","_onSheetReorderEnd","_onSheetRemove","_onSheetSelect","_onAddSelect","_renderSheets","_selectedIndex","_onEditorKeydown","_onEditorBlur","_onSheetRename","renderSheets","sheetsGroupScrollWidth","sheetsWrapper","gapWidth","addButton","addButtonWidth","scrollPrevButtonWidth","sheetsGroup","scrollNextButtonRight","_renderHtml","_sheetsWrapper","_sheetsGroup","_nowScrollingSheets","_scrollSheetsByDelta","renderScrollButtons","isSelectedSheet","elementContent","deleteIcon","sheetElements","maxlength","baseButtonClass","childrenElements","removedSheetName","dlg","isConfirmed","selectedSheetText","_scrollSheetsToItem","isAddButton","sheetsGroupWidth","sheetsGroupPadding","setDecimalSeparator","sep","SEPARATORS","DEC","ARG","COL","OPERATORS","OPERATORS_COMMA","OPERATORS_STANDARD","noThrow","OUT","TokenStream","addReference","allowEOF","peek","parseExpression","commas","maybeBinary","maybeIntersect","parseAtom","parseSymbol","upper","TRUE","FALSE","parseFuncall","fixReference","maybePercent","my_prec","his_prec","ast","parseNameDefinition","defAST","nameRef","makeFormula","makePrinter","prec","withParens","needParens","parenthesize","makeClosure","toCPS","cps","cpsRef","cpsAtom","cpsUnary","cpsBinary","cpsFunc","cpsLambda","cpsMatrix","cpsNameRef","makeContinuation","cpsIf","thenK","gensym","elseK","cpsAnd","cpsOr","isMatrix","GENSYM","js","jsArray","FORMULA_CACHE","readNext","ahead","refRange3D","refCell3D","refSheetRange","refSheetCell","refRange","refCell","funcall","forEditor","fixCell","addPos","RawTokenStream","InputStream","startToken","endToken","isIdStart","isId","isOpChar","isPunc","readNumber","has_dot","getRC","readSymbol","lookingAt","readEscaped","readSheetName","readOperator","readPunc","EOF","escaped","parseSqref","getNumberRegexp","comma","NUMBER_FORMAT_RX","FORMAT_PARSERS","registerFormatParser","ops","_separators","monthFirst","rxnum","rxcur","has_currency","has_percent","readExcel","readWorkbook","relationships","theme","ERROR_LOG","readStrings","readRelationships","readTheme","byType","readStyles","enter","relId","dim","SEL_SHEET","byId","sheetDimensions","SEL_VIEW","SEL_DEFINED_NAME","vbProcedure","withErrorLog","recalcSheets","loadSheets","ready","insertSheet","queueSheet","readSheet","defaultColWidth","toColWidth","defaultRowHeight","toRowHeight","SEL_ROW","pts","addAutoFilter","formulaRange","isArrayFormula","customFilterLogic","customFilterCriteria","valueFilterBlanks","valueFilterValues","commentFile","drawingFile","sharedFormulas","nCols","prevCellRef","relsFile","styleIndex","acRef","SEL_FORMULA","SEL_CELL","applyStyle","SEL_MERGE","SEL_COL","ht","SEL_SELECTION","SEL_PANE","xSplit","ySplit","SEL_SHEET_VIEW","SEL_HYPERLINK","colId","getCustomFilter","DynamicFilter","TopFilter","getFilterVal","leave","SEL_VALIDATION","SEL_VALIDATION_INSANE","SEL_VALUE","SEL_STRING","SEL_VALIDATION_FORMULA1","SEL_VALIDATION_FORMULA1_INSANE","SEL_VALIDATION_FORMULA2","SEL_VALIDATION_FORMULA2_INSANE","SEL_VALIDATION_SQREF_INSANE","relative_file","readComments","readDrawings","getContentType","jpg","jpeg","png","gif","cdr","sel_two_cell_anchor","sel_ext","sel_one_cell_anchor","sel_from","sel_to","sel_row","sel_col","sel_row_offset","sel_col_offset","sel_blip","asArrayBuffer","excelToPixels","brCell","brX","brY","authors","SEL_COMMENT","authorId","SEL_AUTHOR","SEL_COMMENT_TEXT","ourOp","notEqual","greaterThanOrEqual","lessThanOrEqual","Q1","Q2","Q3","Q4","M1","M2","M3","M4","M5","M6","M7","M8","M9","M10","M11","M12","setFormat","formatCode","setBorder","BORDER_WIDTHS","shouldSet","applyName","xf","inlineStyles","xfId","namedStyles","numFmts","DEFAULT_FORMATS","asUint8Array","SEL_SHARED_STRING","SEL_TEXT","Id","Target","getXf","addBool","pivotButton","quotePrefix","getColor","themeColor","tint","toCSSColor","indexed","INDEXED_COLORS","colorScheme","SEL_NUM_FMT","SEL_FONT","SEL_FILL","patternType","SEL_BORDER","SEL_NAMED_STYLE","SEL_INLINE_STYLE","swap","scheme","SEL_SCHEME_SYSCLR","SEL_SCHEME_RGBCLR","thin","dashed","dotted","thick","double","hair","mediumDashed","mediumDashDot","dashDotDot","mediumDashDotDot","slantDashDot","11","12","14","15","16","17","18","19","21","22","45","47","48","49","_readSheet","_readStrings","_readStyles","_readTheme","_readWorkbook","getResponseHeader","sheetParamsFromJSON","defaultSheetName","_imgID","_sheetsSearchCache","_onUndoRedo","FormulaContext","_validationContext","_names","_sheetChanging","_sheetChange","_sheetInsertRow","_sheetInsertColumn","_sheetDeleteRow","_sheetDeleteColumn","_sheetHideRow","_sheetHideColumn","_sheetUnhideRow","_sheetUnhideColumn","_sheetSelect","_sheetDataBinding","_sheetDataBound","_sheetCommandRequest","_inputForRef","commandOptions","cleanupImages","moveSheetToIndex","toIndex","sheetSelection","insertIndex","getUniqueSheetName","sheetNameSuffix","_bindSheetEvents","sheetByIndex","forEachName","nameref","removeSheet","newSheet","_clearSheets","saveJSON","nameForRef","area","fsheet","frow","fcol","arrayRange","tlRow","tlCol","currentFormula","vrow","vcol","_formulaContextRefresh","toActionSelector","alphaNumRegExp","ACTIONS","ENTRY_ACTIONS","CONTAINER_EVENTS","CLIPBOARD_EVENTS","EDITOR_EVENTS","FORMULABAR_EVENTS","FORMULAINPUT_EVENTS","SELECTION_MODES","COMPOSITE_UNAVAILABLE_ACTION_SELECTORS","UNHIDE_ACTION_SELECTORS","ACTION_KEYS","SHIFT_ACTION_KEYS","ENTRY_ACTION_KEYS","Controller","ctrl+left","ctrl+right","ctrl+up","ctrl+down","ctrl+home","ctrl+end","pageup","pagedown","shift+tab","shift+enter","shift+:alphanum","alt+:alphanum",":alphanum","ctrl+:alphanum","alt+ctrl+:alphanum",":edit","wheel","*+mousedown","*+mousedrag","*+mouseup","*+dblclick","touchmove","*+cut","*+paste","*+copy","alt+enter","shift+ctrl+enter","columnheader","topcorner","autofill","clipboardElement","cellContextMenu","rowHeaderContextMenu","colHeaderContextMenu","drawingContextMenu","scroller","tabstrip","sheetsbar","nameEditor","onNameEditorEnter","onNameEditorCancel","onNameEditorSelect","onNameEditorDelete","onEditorChange","onEditorActivate","onEditorDeactivate","onEditorUpdate","onScroll","listener","_enableEditorEvents","onSheetBarSelect","onSheetBarReorder","onSheetBarRename","onSheetBarRemove","onContextMenuSelect","onCommandRequest","onDialogRequest","keyListener","barKeyListener","barElement","inputKeyListener","cellElement","_execute","editorClose","_preventNavigation","showError","activateEditor","_lastEditorValue","_activeTooltip","isEditorDisabled","resetEditorValue","onWheel","deltaMode","onTouchMove","forceScrollerStackingOrder","onTouchEnd","onAction","onPageUp","scrollDown","onPageDown","onEntryAction","shouldPrevent","casual","onShiftAction","appendSelection","onMouseMove","objectAt","onMouseDown","originFrame","_startResizingDrawing","startBox","onEditorEsc","openCustomEditor","_selectionMode","openFilterMenu","translateCoords","onContextMenu","isComposite","showUnhide","showUnmerge","constrainResize","_dragDrawing","onMouseDrag","startAutoScroll","selectToLocation","onMouseUp","stopAutoScroll","activeEditor","onDblClick","onCut","clipBoardValue","_pasteImage","dataTransferItem","onPaste","hasHTML","hasPlainText","DOMStringList","onCopy","scrollRight","noDrawing","cellLocation","lastKnownCellLocation","_autoScrollTarget","scrollStep","finalLocation","viewObject","createFilterMenu","openFor","_saveEditorValue","onEditorArrayFormula","onEditorBarFocus","activeCellRectangle","onEditorCellFocus","onEditorBlur","onEditorAction","_casualEditing","deactivateEditor","onEditorShiftAction","additionalOptions","pdfExport","excelExport","selectElementContents","cellBefore","trs","cellAbove","prevRow","cellBorder","asURL","drawCell","showGrid","maybeLink","defaultBorder","outline","overflowWrap","wordWrap","__dataType","applyIndent","paneClassNames","addCell","borderRightColor","borderBottomColor","borderLeftColor","borderTopColor","drawingResizeHandles","data-direction","RESIZE_HANDLE_WIDTH","EDIT_BUTTON_WIDTH","viewClassNames","HtmlTable","CELL_CONTEXT_MENU","ROW_HEADER_CONTEXT_MENU","COL_HEADER_CONTEXT_MENU","DRAWING_CONTEXT_MENU","VIEW_CONTENTS","cellEditor","barEditor","topCorner","filterHeadersWrapper","filterRange","filterButton","filterButtonActive","horizontalResize","verticalResize","iconFilterDefault","sheetsBar","nameBox","openUnsupported","shiftingNonblankCells","insertColumnWhenRowIsSelected","insertRowWhenColumnIsSelected","filterRangeContainingMerges","sortRangeContainingMerges","cantSortMultipleSelection","cantSortNullRef","cantSortMixedCells","validationError","cannotModifyDisabled","menus","bringToFront","sendToBack","addColumn","toDomTree","contextMenuConfig","_chrome","_dialogs","_formulaInput","clipboardContents","SheetEditor","_sheetsbar","enableClipboard","isClipboardDeactivated","actionBar","formulaBar","tabstripHeight","formulaBarHeight","sheetsBarHeight","quickAccessAdjust","NameEditor","_tabstrip","cellRectangle","_rectangle","boundingRectangle","isColumnResizer","_headerWidth","frozen","isRowResizer","_headerHeight","isFilterIcon","theGrid","filterIconRect","isAutoFill","isEditButton","ed","activeCellCustomEditor","_editorInLastColumn","drawingAt","drx","dry","selecting","paneAt","containingPane","_destroyFilterMenu","_filterMenu","selectClipboardContents","willScroll","scrollBoundaries","scrollBottom","_destroyDialog","reopenEditor","errorMessages","focusButton","onClose","_retry","registered","_filterMenuColumn","renderResizeHint","renderClipboardContents","resizeHint","resizeHintVertical","resizeHintHandle","resizeHintMarker","selectionView","primaryMergedCells","secondaryMergedCells","rangeDimensions","mergedCell","vaxis","haxis","vborder","hborder","rowHeader","columnHeader","mergedCellsWrapper","selectionWrapper","autoFillWrapper","columnResizeHandle","rowResizeHandle","selectionHighlight","paneClasses","_currentRect","_selectedHeaders","renderSelection","renderAutoFill","renderEditorSelection","renderFilterHeaders","hasRowHeader","headerClassName","hasColumnHeader","columnOffset","renderResizeHandle","itemSelection","allHeaders","activeCellRange","doLayout","forScreen","xCoords","yCoords","Borders","ttOffset","absRow","absCol","_activeFormulaColor","_directionClasses","vert","rendered","horiz","renderDrawings","toDiv","BUTTON_SIZE","BUTTON_OFFSET","_addDiv","selections","selectionClasses","_renderCustomEditorButton","autoFillRectangle","_axis","btnClass","isLastColumn","_buttonOutOfVisiblePane","activeFormulaSelection","colorClasses","mergedCellLeft","mergedCellTop","EDITORS","registerEditor","getKendoCalendar","getKendoPopup","kendoStaticList","getKendoStaticList","PaneGrid","intersectsRect","rangeRef","headerSize","hasHeader","paneSegment","_viewSize","widthCompensation","heightCompensation","_hidden","scrollBarSize","firstHidden","lastHidden","startSegment","lastPage","_pixelValues","quarter","sameYear","sameMonth","sameWeek","firstWeek","secondWeek","_blanks","_logic","_criteria","_matches","criterionValue","criterionType","valueType","_predicate","_average","aboveAverage","belowAverage","tomorrow","yesterday","nextWeek","thisWeek","lastWeek","nextMonth","thisMonth","lastMonth","nextQuarter","thisQuarter","lastQuarter","nextYear","thisYear","lastYear","yearToDate","_lists","ascendingComparer","descendingComparer","typeA","typeB","maybeColor","RX_COLORS","maybeCondition","RX_CONDITION","readFormat","maybeFraction","decimalPart","am","pm","readSection","haveConditional","sec","printSection","printToken","padLeft","restart","compileFormatPart","checkComma","scaleCount","hasDate","hasAmpm","percentCount","separeThousands","declen","intFormat","decFormat","preamble","padRight","digNumber","intpart","decpart","TEXT","ampm","fraclen","eltime","formatInt","skipMinus","shouldInsertMinus","lastPart","iv","chf","formatDec","textAndColor","_cosh","_sinh","_tanh","_gcd","_lcm","forIFS","chunks","parseCriteria","_avg","numbers","_var_sp","avg","_stdev_sp","_percentrank","exc","nlt","ngt","_covariance","ax","ay","_percentile","rank","_percentile_inc","_percentile_exc","fetchValuesForAggregate","opt_ignore_hidden_rows","opt_ignore_errors","opt_use_aggregates","fetchValues","_binom_dist","cumulative","_combinations","weeksInYear","_days_360","Hyperlink","numericPredicate","descending","ARGS_COUNTIFS","ARGS_SUMIFS","ARGS_SUMIF","ARGS_PERCENTRANK","_fact","AGGREGATE_FUNCS","RX_NON_PRINTABLE","mult","prod","coef","sumRange","nth","discard","bins","variance","stddev","significance","fact","funcId","ignoreHidden","s2","resultCol","areanum","colRange","resultRow","fw","dow","wk","holidays","rom","radix","minLen","dec","denomitator","noCommas","valueIfError","makeComparator","lc","compLT","compLTE","compGT","compGTE","compNE","compEQ","RXCACHE","ERF","an","f_abs","ERFC","GAMMALN","cof","ser","GAMMA","pi","BETALN","BETA","gamma_inc","g_series","g_contfrac","ap","gln","MAX_IT","EPS","FP_MIN","aj","bj","GAMMA_DIST","GAMMA_INV","ab","NORM_S_DIST","NORM_S_INV","plow","phigh","NORM_DIST","NORM_INV","betastd_pdf","betastd_cdf","beta_lentz","qab","qap","qam","betastd_inv","BETADIST","BETA_DIST","cdf","BETA_INV","chisq_left","cds","chisq_right","chisq_left_inv","chisq_right_inv","chisq_test","obsv","expect","eij","expon","poisson","lnf","Fdist","Fdist_right","Finv_right","Finv","_mean","me","_var_sq","Ftest","n1","n2","va1","va2","fisher","fisherinv","Tdist","Tdist_right","Tdist_2tail","Tdist_inv","Tdist_2tail_inv","Tdist_test","gr1","gr2","t_st","df","v1","v2","u1","u2","q1","q2","confidence_t","confidence_norm","gauss","z","phi","lognorm_dist","lognorm_inv","prob","x_","p_","lw","slope","y_","mx","my","intercept","pearson","s1","s3","whipNumberArrays","rsq","steyx","forecast","_mat_mean","Mat","_mat_devsq","mean","sq","linest","X","konst","stats","Xt","B","line_1","Y1","y_y1","mp","SSreg","SSresid","line_5","R2","degfre","err_est","line_3","F_sta","line_4","SCP","line_2","logest","growth","new_X","root_newton","guess","max_it","eps","f_d","FV","rate","nper","pmt","pv","h1","h2","PV","fv","PMT","NPER","RATE","xfd","IPMT","per","ipmt","PPMT","CUMPRINC","tn","ts","te","monthlyPayment","remainingBalanceAtStart","remainingBalanceAtEnd","CUMIPMT","cip","NPV","flows","npv","IRR","npv1","EFFECT","nominal_rate","npery","NOMINAL","effect_rate","XNPV","XIRR","ISPMT","DB","cost","salvage","life","period","db","DDB","prior","dep","SLN","SYD","VDB","no_switch","_getGDA","gda","interest","_interVDB","life1","term","remValue","intEnd","lia","vdb","nowLia","intStart","_edate","_daysBetween","basis","_borderCoupons","settlement","maturity","sett","periods","_borderCoupons_fw","COUPDAYBS","COUPDAYS","settl","matur","COUPDAYSNC","COUPPCD","COUPNCD","COUPNUM","mat","ACCRINTM","issue","par","year_days","ACCRINT","_numCoupons","annual","brace","prev1","next1","nrc","accr","DISC","redemption","INTRATE","investment","RECEIVED","discount","PRICE","yld","beg_settl","settl_end","beg_end","den","yf","PRICEDISC","dsm","COUPS_ARGS","ac","withPreventDefault","BORDER_TYPES","BORDER_PALETTE_MESSAGES","COLOR_PICKER_MESSAGES","ColorChooser","BorderPalette","borderPalette","colorPicker","customColor","_resetButton","_colorPalette","_customColorPalette","_customColorButton","resetButton","resetColor","customColorButton","colorPalette","flatColorPicker","kendoColorPalette","maximizable","kendoFlatColorPicker","_borderTypePalette","_borderColorPalette","colorChooser","_colorChange","toolDefaults","SpreadsheetToolBar","DropDownTool","OverflowDialogButton","ColorPickerButton","FONT_SIZES","DEFAULT_FONT_SIZE","FontSize","FontSizeButton","FONT_FAMILIES","DEFAULT_FONT_FAMILY","FontFamily","FontFamilyButton","Format","FormatButton","BorderChangeTool","BorderChangeButton","AlignmentTool","AlignmentButton","MergeTool","MergeButton","FreezeTool","FreezeButton","Sort","SortButton","FilterButton","Open","alignmentButtons","justtifyLeft","alignTop","alignMiddle","alignBottom","formatTypes","automatic","financial","moreFormats","formatDecreaseDecimal","formatIncreaseDecimal","freezeButtons","freezePanes","freezeRows","freezeColumns","insertComment","mergeButtons","mergeHorizontally","mergeVertically","quickAccess","toggleGridlines","sortButtons","sortRangeAsc","sortRangeDesc","textColor","hyperlink","dialogName","formatCells","handleClick","_expandTools","toolbarName","_addSeparators","_nextTool","expandTool","typeDefaults","setToggle","_tools","dropDownList","data-property","popupName","_dialogName","iconName","kendoComboBox","_valueChange","fontSizes","defaultSize","fontFamilies","defaultFont","_revertTitle","dataValuePrimitive","sample","_borderPalette","_action","_defineButtons","_commandPalette","_quickAccessButtons","toolbars","quickAccessToolBar","uniqueBy","PDF_PAPER_SIZE","basicErrorDialog","MessageDialog","messageId","Localizable","trans","registry","SpreadsheetDialog","FormatCellsViewModel","FormatCellsDialog","ConfirmationDialog","ValidationErrorDialog","FontFamilyDialog","FontSizeDialog","BordersDialog","ColorPickerDialog","CustomColorDialog","AlignmentDialog","MergeDialog","FreezeDialog","ValidationViewModel","ValidationDialog","ExportAsDialog","ImportErrorDialog","UseKeyboardDialog","HyperlinkDialog","InsertCommentDialog","InsertImageDialog","revert","formatCellsDialog","categories","fontFamilyDialog","fontSizeDialog","bordersDialog","alignmentDialog","mergeDialog","freezeDialog","confirmationDialog","validationDialog","hintMessage","hintTitle","comparerMessages","onInvalidData","rejectInput","showWarning","showHint","ignoreBlank","showListButton","showCalendarButton","typeTitle","typeMessage","exportAsDialog","defaultFileName","xlsx","paper","normal","narrow","wide","saveAsType","exportArea","margins","guidelines","modifyMergedDialog","errorMessage","rangeDisabledDialog","intersectsArrayDialog","incompatibleRangesDialog","noFillDirectionDialog","duplicateSheetNameDialog","overflowDialog","useKeyboardDialog","forCopy","forCut","forPaste","unsupportedSelectionDialog","linkDialog","removeLink","insertCommentDialog","removeComment","insertImageDialog","typeError","dialogClass","_onDialogActivate","_onDialogDeactivate","useCategory","category","formatCurrency","currencies","allFormats","useFirstFormat","_currency","iso","categoryFilter","defaultOptions","_generateFormats","calendarPatterns","currenciesFrom","numberFormats","dateFormats","currencyFilter","_confirmed","_colorPicker","ValidationCellsViewModel","criterion","setHintMessageTemplate","shouldBuild","buildMessages","hintTitleTemplate","hintMessageTemplate","setComparers","defaultHintTitle","text_comparers","defaultComparers","defaultHintMessage","isAny","showToForNumber","showTo","showToForDate","isText","showRemove","fromValidationObject","useCustomMessages","toValidationObject","fileFormats","fitWidth","paperSizes","hCenter","vCenter","okEnabled","hasImage","isHovered","_url","_image","selectFile","dragEnter","dragLeave","_normalizeColumns","_boundRowsCount","_sheetChangeHandler","_sheetDeleteRowHandler","_sheetInsertRowHandler","normalizedRef","_skipRebind","colValueIndex","getterIdx","distinctValues","itemVisible","filterSpread","anyVisibleChildren","valuesFilter","uncheckAll","flattenOperators","Details","FilterMenuViewModel","FilterMenuController","details","detailsSummary","detailsContent","iconSearch","textbox","filterByCondition","filterByValue","valuesTreeViewWrapper","addToCurrent","operatorNone","_summary","spreadsheetFilterValue","menuItem","valuesChange","valuesDataSource","appendToSearch","valueSelect","hasActiveSearch","filterValues","operatorChange","isNone","isString","valuesTree","filterType","topValue","filterForColumn","allFilters","columnFilters","_filterInit","_filterByCondition","_filterByValue","_actionButtons","valuesTreeView","kendoMenu","compiledTemplate","_detailToggle","activeContainer","oldRect","newRect","barInput","cellInput","_triggerUpdate","noChange","linearRegression","findSeries","findStep","forEachSeries","getType","lst","findStringList","stringLists","strl","ERR_INCOMPATIBLE","ERR_NO_DIRECTION","srcRange","srcIdx","destRange","fillFrom","CLASS_NAMES","comboBoxTitle","comboElement","combo","_on_listChange","getKendoComboBox","_on_keyDown","_on_focus","_deleteItem","_prevValue","distributeCoords","maxEmpty","headerCoords","curr","wholeRect","rowHeights","colWidths","scaleFactor","hyCoords","boxWidth","boxHeight","nonEmpty","relrow","relcol","cw","shouldDrawCell","emptyCells","orlast","orderCoords","orderCells","sameBorder","drawLayout","isInside","endbottom","endright","bordersGroup","kdrw","geo","guideColor","GUIDELINE_WIDTH","ncols","nrows","r2d2","vtrans","text_group","CONT","makeFontDef","Container","addVert","addHoriz","drawTabularData","charWidth","mkCell","headerBackground","headerColor","oddBackground","evenBackground","useGridFormat","charWidthFunction","columnTitles","columnWidths","CACHE_CHAR_WIDTH","widths","Spreadsheet","F11","U","H","R","_controller","_autoRefresh","_bindWorkbookEvents","redoTool","_workbookChanging","_workbookChange","_workbookCut","_workbookCopy","_workbookPaste","autoRefresh","_workbookExcelExport","_workbookExcelImport","_initProgress","_workbookPdfExport","_workbookInsertSheet","_workbookRemoveSheet","_workbookSelectSheet","_workbookRenameSheet","_workbookInsertRow","_workbookInsertColumn","_workbookDeleteRow","_workbookDeleteColumn","_workbookHideRow","_workbookHideColumn","_workbookUnhideRow","_workbookUnhideColumn","_workbookSelect","_workbookChangeFormat","_workbookDataBinding","_workbookDataBound","addKPI","kpiNode","normalizeKPIs","settingTargetFromNode","kpiMeasure","kpi","buildKPImeasures","SETTING_CONTAINER_TEMPLATE","PivotConfigurator","measuresLabel","columnsLabel","rowsLabel","_targets","kendoTreeView","_createTarget","columnsContainer","rowsContainer","measuresContainer","_cube","_catalog","createRipple","once","finishAnimation","ripple","containerSelector","doubleFocus","_a","animated","released","pointerdown","touchdown","flatten","RippleContainer","registerListeners","nextElementSibling","removeListeners","isLoaded","pdfjsLib","pdfviewer","pdfjs","lib","PDFJS","PDFJSProcessor","viewer","fetchDocument","_isBase64Data","getDocument","pagePromises","_downloadData","numPages","getPage","Promise","pagePromise","getViewport","_triggerError","parseError","notFoundError","includes","alertMessage","notFound","_renderBlankPage","fetchPageData","downloadFile","pageContainer","_updateDocument","equalSign","notBase64","renderTextLayer","DPLProcessor","pageField","geometries","_clearPages","_renderPages","activatePage","dpl","SHRINKWIDTH","pagerStyles","wrapperClass","iconFirst","iconLast","iconPrev","iconNext","nav","_renderLinks","_toggleDisabledClass","_pagerLink","pageIdx","wrapClass","firstLink","prevLink","nextLink","lastLink","_renderInput","upDown","allowedKeys","prevTotal","totalMessage","inputTemplate","shouldShrink","pagerInputWrap","appendZoomButtons","isOverflow","zoomOverflowButtons","zoomButtons","ZOOM_BUTTON_TEMPLATE","ZOOMOUT","zoomOutIcon","zoomIn","ZOOMIN","zoomInIcon","ToolBarZoom","ToolBarOverflowZoom","ViewerToolBar","ACTION","FLATBUTTONCLASS","PREDEFINED_ZOOM_VALUES","auto","actual","fitToWidth","fitToPage","ZOOM_COMBOBOX_TEMPLATE","DefaultTools","spacer","zoomInOut","zoomLevels","toggleSelection","spacer2","AllTools","ToolbarPager","pagerElement","_appendElements","zoomElement","_buildComboBox","comboOptions","actualWidth","_buttonCommand","updateComboBox","isBuiltInTool","pageOptions","isBlank","_updateZoomComboBox","isPredefined","RENDER","geometryTypes","_updatePageSize","ratio","pageElement","DPLPage","_drawGeometries","_initSurface","kGeometry","_drawRect","_drawImage","_drawText","rectGeo","_getMatrix","fillOptions","strokeOptions","imageRect","subPath","drawAction","PDFJSPage","defaultScale","canvasContext","_renderTextLayer","textLayer","getTextContent","normalizeWhitespace","textDivs","enhanceTextSelection","SearchDOM","processDom","highlightClass","charClass","charIndex","traverseToTextNode","processTextNode","splitChars","newHtml","matchCase","resetMark","resetHighlight","resetMatchIndex","highlightAll","mark","highlight","matchIndex","nextMatch","previousMatch","getMarkedIndex","getFirstMarked","EXTENSIONS","ErrorDialog","getKendoDialog","_initializeDialog","pagesCount","dialogMessages","SearchDialog","dialogElm","dialogOffset","searchModel","boundValue","searchText","matchCaseClick","onKeyup","navigationFn","onInput","ZOOMSTART","ZOOMEND","_upload","_initUpload","uploadOptions","_onSuccess","_onError","_onComplete","notSupported","fileToUpload","PageChangeCommand","DownloadCommand","ExportCommand","_saveDialog","_initDialog","EnableSelectionCommand","EnablePanCommand","OpenSearchCommand","searchDialog","zoomStartHandler","_closeDialog","openFileHandler","_searchDOM","_initSearchDOM","searchEngine","_updateSearchModel","_scrollToMark","marked","ZoomCommand","updateViewer","loadedPagesHeight","_pageNum","updatedVisiblePagesCount","renderTasks","processingLib","_calculateZoom","scrollingStarted","_scrollingStarted","zoomScale","_visiblePages","_visiblePagesCount","_loadVisiblePages","_triggerZoomEnd","preventZoom","viewerOptions","visibleCanvas","scaleValue","_allowResize","_autoFit","zoomRate","_autoZoomScale","zoomMin","zoomMax","_renderPrintContainer","_loadAllPages","printContainer","printHandler","originalScale","printImmediately","_renderPrintPages","_printDocument","_renderPrintImage","myWindow","PLUS","MINUS","NUMPAD_ZERO","ZOOM_SCALE","ZOOMCOMMAND","WHITECOLOR","PROCESSORS","enableTextSelection","enablePanning","PDFViewer","_renderToolbar","_initProcessor","_renderPageContainer","_loadDocument","pdfjsProcessing","dplProcessing","defaultPageSize","togglePan","inputLabel","plusShortcuts","minusShortcuts","zeroShortcuts","shouldExecute","_blankPage","processingOptions","_initErrorDialog","dialogInstance","_errorDialog","pagesData","viewerPage","pageData","_attachContainerEvents","_getVisiblePagesCount","_resizePages","currentRatio","pageToLoad","currentPageTop","currentPageHeight","previousPage","prevPageTop","prevPageHeight","containerScrollHeight","containerScrollTop","containerOffsetTop","pageIndex","pageToLoadNum","_prevScrollTop","preventComboBoxChange","loadPage","subtractMargin","minVisiblePageNum","maxVisiblePageNum","_getTextLayers","HOVERED","ARIA_LABELLEDBY","ARIA_VALUEMIN","ARIA_VALUEMAX","ARIA_VALUENOW","PRECISION_PART","PRECISION_COMPLEMENT","PRECISION_HALF_VALUE","KITEM","ROLE","ratingSelection","continuous","ratingPrecision","half","ratingItemTemplates","ratingItemStates","hoveredPrecise","ratingItemAttributes","partValue","ratingStyles","iconSelected","RATING_TEMPLATE","RATING_CONTAINER_TEMPLATE","RATING_LABEL_WRAPPER_TEMPLATE","RATING_LABEL_TEMPLATE","RATING_ITEM_WRAPPER_TEMPLATE","RATING_ITEM_TEMPLATE","Rating","_renderTooltip","_renderLabel","_selectInitial","selectValueOnFocus","selectedTemplate","hoveredTemplate","isPrecise","_valueMin","_setState","maxValue","isHalfPrecision","selectedElement","hoveredElement","focusedItems","_getTemplateType","defaultIcon","_updateItemTemplates","isSingle","previousSelection","currentSelection","resetItems","templateType","stateClass","enableMove","hasPart","setTemplate","currentItem","_togglePrecisionElements","partSize","_updatePrecisionElements","isFraction","partTemplate","_createUpdatePrecisionComplement","isHalf","complement","itemPart","halfOffset","_updateElement","elementValue","_updateItemsRendering","updateTemplate","valueItem","withoutTimeout","$timeout","createWidget","origAttr","controllers","createIt","destroyRegister","kNgDisabled","kNgReadonly","isReadonly","kRebind","ctor","OPTIONS_NOW","exposeWidget","$emit","destroyWidgetOnScopeDestroy","setupRebind","$eval","bindToKNgDisabled","bindToKNgReadonly","kNgModel","bindToKNgModel","ngModel","bindToNgModel","ngForm","propagateClassToWidgetWrapper","kNgDelay","delayValue","parsed","unresolved","unwatch","$watch","$root","unregister","$attr","$apply","addOption","scopeValue","widgetEvents","optionsPath","kOptions","optionsValue","dataName","optionName","ignoredOwnProperties","ignoredAttributes","kDataSource","$log","kendoWidget","$parse","formValue","isForm","formRegExp","haveChangeOnElement","viewRender","onChange","currentVal","$viewValue","$modelValue","$render","formPristine","$pristine","$setViewValue","$setPristine","digest","$isEmpty","rangePickerModels","rangePickerStartModel","rangePickerEndModel","updating","valueIsCollection","currentValueLength","watchHandler","$angular_setLogicValue","$watchCollection","$setDirty","$angular_getLogicValue","deregister","$on","disconnect","prevClassList","MutationObserver","chg","currClassList","attributeName","rebindAttr","isUpload","_cleanUp","WIDGET_TEMPLATE_OPTIONS","templateContents","createDirectives","klass","make","directiveName","widgetName","directive","directiveFactory","shortcut","SKIP_SHORTCUTS","restrict","TAGNAMES","scopeField","kScopeField","MANUAL_DIRECTIVES","kendoWidgetInstance","isDigesting","destroyScope","$destroy","defadvice","origMethod","pendingPatches","$injector","$defaultCompile","encOpen","encClose","toDataSource","mew","kendoRenderedTimeout","RENDERED","require","controller","$scope","$attrs","roleattr","MobileButton","MobileBackButton","MobileDetailButton","MobileListView","ActionSheet","$angular_scope","$angular_init","itemScope","$$kendoScope","$new","$angular_makeEventHandler","kendoEvent","elems","colIdx","locals","angularDataItem","terminal","pre","kAttr","priority","TreeMap","MobileScrollView","templateDirectives","classArray","SPACE_REGEX","alignPathToPixel","clockwise","angle1","angle2","convertableToNumber","styleValue","isSizeField","SIZE_STYLES_REGEX","field$1","getSpacing","defaultSpacing","hasClasses","interpolateValue","COORD_PRECISION","setDefaultOptions","sparseArrayLimits","MIN_VALUE","autoMajorUnit","relativeValue","scaleMultiplier","DEFAULT_PRECISION","rotatePoint","theta","numericComparer","boxDiff","Box","innerRadialStops","currentStop","usedSpace","innerRadius","currentStops","rectToBox","createAxisTick","tickOptions","tickX","tickY","createAxisGridLine","gridLine","lineStart","lineEnd","absoluteDateDiff","offsetDiff","TIME_PER_MINUTE","addTicks","ticks","startOfWeek","daysToSubtract","TIME_PER_DAY","addHours","tzDiff","roundedDate","TIME_PER_HOUR","addDuration","dateValue","YEARS","WEEKS","DAYS","HOURS","MINUTES","SECONDS","TIME_PER_SECOND","MILLISECONDS","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","baseUnit","TIME_PER_UNIT","baseUnitStep","lteDateIndex","sortedDates","intlService","parseDates","categoryRange","autoBaseUnit","startUnit","startStep","unitSteps","nextStep","categoryLimits","autoBaseUnitSteps","maxDateGroups","autoUnit","FIT","autoUnitIx","BASE_UNITS","totalUnits","defaultBaseUnit","lastCategory","categoryIx","minDiff","TIME_PER_YEAR","TIME_PER_MONTH","TIME_PER_WEEK","initUnit","useDefault","autoAxisMin","axisMin","minValue","ZERO_THRESHOLD","autoAxisMax","axisMax","limitCoordinate","COORDINATE_LIMIT","autoAxisOptions","seriesMin","seriesMax","narrowRange","autoMin","autoMax","majorUnit","autoOptions","roundToMajorUnit","remainderClose","totalAxisOptions","clearNullValues","axisOptions","userOptions","userSetMin","userSetMax","userSetLimits","minorUnit","remainder","timeUnits","applyDefaults","baseUnitTime","userMajorUnit","actualUnits","unitsToAdd","initRange","axisCrossingValue","throwNegativeValuesError","autoAxisMin$1","autoAxisMax$1","logMaxRemainder","angularDistance","geometryTransform","__common_getter_js","ARC","AXIS_LABEL_CLICK","BLACK","CIRCLE","CROSS","DEFAULT_HEIGHT","DEFAULT_WIDTH","FORMAT_REGEX","HIGHLIGHT_ZINDEX","INSIDE","NOTE_CLICK","NOTE_HOVER","NOTE_LEAVE","OUTSIDE","TRIANGLE","constants","defaultImplementation","FORMAT_REPLACE_REGEX","FormatService","ChartService","current$1","DomEventsBuilder","current$2","services","HashMap","TRIGGER","InstanceObserver","FontLoader","Ring","Sector","DIRECTION_ANGLE","ShapeBuilder","ChartElement","BoxElement","ShapeElement","LINEAR","RADIAL","GRADIENTS","RootElement","FloatElement","DrawingText","ROWS_SPLIT_REGEX","TextBox","AxisLabel","DEFAULT_ICON_SIZE","DEFAULT_LABEL_COLOR","Note","TIME_PER_MILLISECOND","MIN_CATEGORY_POINTS_RANGE","CategoryAxis","DateLabelFormats","EmptyDateRange","DateRange","DateCategoryAxis","MIN_VALUE_RANGE","NumericAxis","DateValueAxis","DEFAULT_MAJOR_UNIT","LogarithmicAxis","GridLinesMixin","RadarCategoryAxis","PolarAxis","RadarNumericAxisMixin","RadarNumericAxis","RadarLogarithmicAxis","WEIGHT","EXTREMUM_ALLOWED_DEVIATION","CurveProcessor","_intlService","formatString","intl","localeAuto","locale","chart","isPannable","pannable","handlerMap","callObserver","fnName","requiresHandlers","fetchFonts","MAX_DEPTH","preloadFonts","cosT","sinT","onCircle","targetBox","wrapPoint","arrayPoint","snapTo","alignTo","shrink","dw","dh","unpad","getHash","r3","r4","toRect","hasSize","sizeFunc","newRadius","radianAngle","adjacentBox","sector","midAndle","midPoint","hw","vector","startVector","endVector","dist","getBBox","angles","allAngles","startAngleIndex","endAngleIndex","createRing","innerEnd","initUserOptions","currentChild","getRoot","getSender","service","getService","chartService","translateChildren","renderVisual","createVisual","addVisual","createAnimation","renderComplete","chartElement","appendVisual","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","here","visuals","matched","hasHighlight","createHighlight","toggleHighlight","highlightOptions","customVisual","_highlight","highlightVisualArgs","runningTotal","createGradientOverlay","gradientOptions","createGradient","shrinkToFit","hasSetSize","reflowPaddingBox","contentBox","hasBox","visualStyle","pointData","getElement","visualOptions","glass","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","rootOptions","gradients","createBackground","drawingGradient","hashCode","cleanGradients","_initDirection","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groupElements","groupElementsCount","elementSize$$1","groupElementStart","elementBox","groupOptions","maxGroupElementsSize","groupsStart","groupElementsSize","_autoReflow","floatElement","textOptions","visualBox","visualFn","_boxReflow","visualContext","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","buildTitle","titleOptions","alignRotation","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","distanceLeft","distanceRight","alignEnd","childAlias","noteTemplate","aliasFor","wrapperBox","linePoints","createLine","defaultVisual","over","majorTickSize","minorTickSize","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","labelsCount","labelOptions","clearLabels","autoRotateLabels","createAxisLabel","lineBox","axisX","axisY","visualSize","note","notes","parseNoteValue","createPlotBands","gridLinesVisual","gridLines","_gridLines","createTicks","lineGroup","tickPositions","skipUnit","tickLineOptions","getMajorTickPositions","getMinorTickPositions","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","altAxis","slotX","slotY","bandRect","plotBands","plotArea","_plotbandGroup","getSlot","createGridLines","axisLineVisible","linePos","lineOptions","minorGridLines","majorGridLines","labelSize","sizeFn","titleSize","rootBox","maxLabelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","tickIx","labelPos","labelBox","firstTickPosition","nextTickPosition","labelX","labelY","labelsBetweenTicks","labelOffset","idx$1","shouldRenderNote","noteSlot","secondAxis","axisLabelText","lastLabel","maxLabelOffset","startTick","endTick","offsetField","maxStartOffset","maxEndOffset","limitRange","rangeSize","valueRange","justified","prepareUserOptions","years","_ticks","categoriesHash","definedMin","definedMax","srcCategories","rangeIndices","totalRange","totalRangeIndices","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","getTickPositions","hasMinor","_hash","filterOutOfRangePositions","slotBox","singleSlot","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","zoomRange","totalMin","totalMax","scaleRange","hideOutOfRangeNotes","pan","pointsRange","diffStart","diffEnd","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","totalCount","mapCategories","map$$1","displayIndices","displayRange","valuesCount","dateAt","roundToBaseUnit","lowerEnd","expandEnd","roundToTotalStep","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","minIdx","maxIdx","_indices","roundedStep","dataRange","maxDivisions","divisionOptions","dataRangeOptions","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","divisionRange","rounds","totalLimits","panRange","datesRange","indicesRange","maxDiff","rangeDiff","baseUnitIndex","autoBaseUnitStep","stepIndex","unitFormat","totalOptions","totalMajorUnit","getDivisions","divisions","startEdge","skipStep","valueOffset","isValidRange","axisCrossingValues","timeRange","exact","limittedRange","logMin","logMax","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","_lineOptions","minorOptions","ref$2","_minorIntervalOptions","minorStep","acceptOptionsRange","acceptNewRange","nextValue","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","reflowLabels","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","minorAngle","minorRadius","band","ring","plotBandSlot","totalDivs","slotAngle","fromValue","instanceOptions","bandStyle","polarAxis","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","midAngle","gamma","beta","axisType","minorSkipStep","dataPoints","tangent","initialControlPoint","lastControlPoint","controlPoints","tangent$1","cp0","controlPoints$1","controlPoints$2","tangent$2","firstControlPoint","secondControlPoint","invertAxis","lineFunction","calculateFunction","isLine","monotonic","oldXField","xField","yField","switchOrientation","isMonotonicByField","restrictControlPoint","cp","xValue","yValue","Gradients","SASS_THEMES","ExportMixin","skipLegacy","imageDataURL","Point2D","Box2D","mwDelta","BAR_GAP","BAR_SPACING","SANS","SANS11","SANS12","SANS16","TRANSPARENT","axisDefaults","areaSeries","rangeAreaSeries","barSeries","boxPlotSeries","bubbleSeries","bulletSeries","candlestickSeries","columnSeries","donutSeries","lineSeries","ohlcSeries","radarAreaSeries","radarLineSeries","rangeBarSeries","rangeColumnSeries","scatterLineSeries","waterfallSeries","pieSeries","funnelSeries","seriesDefaults","legend","baseTheme","outliersField","meanField","_brightness","downColor","whiskers","median","rangeArea","verticalRangeArea","bar","boxPlot","candlestick","pie","donut","funnel","horizontalWaterfall","ohlc","radarArea","radarLine","polarArea","polarLine","rangeBar","rangeColumn","scatterLine","verticalArea","verticalBoxPlot","verticalBullet","verticalLine","waterfall","categoryAxis","chartBaseTheme","autoTheme","mapColor","varName","queryStyle","hook","titleFont","labelFont","letterPos","seriesPos","seriesColors","fuse","gaugeBaseTheme","diagramBaseTheme","shapeDefaults","connectionDefaults","registerTheme","themeName","gauge","diagram","treeMap","inactiveItems","errorBars","scatter","chartArea","crosshair","rangePlaceholderColor","connectorDefaults","thumb","connectors","noteStyle","AXIS","INACTIVE","INACTIVE_SHAPE","AXIS_MINOR","SERIES","SERIES_LIGHT","DIAGRAM_HOVER","sass","findAxisByName","ChartAxis","countNumbers","getField","evalOptions","dryRun","needsEval","excluded","MAX_EXPAND_DEPTH","seriesCount","toGeometryPoint","lintPoint","stepAxis","stepDir","GeometryPoint","anyHasZIndex","hasGradientOverlay","areNumbers","wrapData","seriesItem","paneID","appendIfNotNull","segmentVisible","pointVisibility","bindSegments","SeriesBinder","bindPoint","valueFields","equalsIgnoreCase","filterSeriesByType","currentSeries","seriesTypes","getDateField","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","seriesMissingValues","missingValues","AREA_REGEX","INTERPOLATE","hasValue$1","findNext","pointHasValue","outPoint","getter$$1","hasItem","createOutOfRangePoints","hasMinPoint","hasMaxPoint","_outOfRangeMinPoint","_outOfRangeMaxPoint","axisGroupBox","axisBox","paneAnchor","updateAxisOptions","targetOptions","axesOptions","axisIndex","groupSeries","axisIx","acceptKey","mouseKey","toChartAxisRanges","axisRanges","axisRange","createDiv","closestHandle","updateAxisOptions$1","yAxis","xAxis","tooltipAlignment","RAD_60","RAD_30","uat","ub","xComparer","resolveAxisAliases","aliases","AXIS_NAMES","pointByCategoryName","applyAxisDefaults","themeOptions","mapAxisOptions","axisColor","themeAxisDefaults","axisName","applySeriesDefaults","seriesType","baseOptions","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","_defaults","sortDates","uniqueDates","srcDates","rowIx","colCount","colIx","clearMissingValues","nullValue","DATA_FIELDS","triggerPaneRender","notifyRender","datavizConstants","ChartPane","ChartPlotArea","Aggregates","STD_ERR","STD_DEV","percentRegex","standardDeviationRegex","ErrorRangeCalculator","INITIAL_ANIMATION_DURATION","FADEIN","GLASS","BORDER_BRIGHTNESS","TOOLTIP_OFFSET","START_SCALE","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","X_ERROR_LOW_FIELD","X_ERROR_HIGH_FIELD","Y_ERROR_LOW_FIELD","Y_ERROR_HIGH_FIELD","LINE_MARKER_SIZE","GAP","ABOVE","BELOW","SMOOTH","STEP","AREA","BAR","BOX_PLOT","BUBBLE","BULLET","CANDLESTICK","DONUT","FUNNEL","HORIZONTAL_WATERFALL","LINE","OHLC","PIE","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","RANGE_AREA","RANGE_BAR","RANGE_COLUMN","SCATTER","SCATTER_LINE","VERTICAL_AREA","VERTICAL_BOX_PLOT","VERTICAL_BULLET","VERTICAL_LINE","VERTICAL_RANGE_AREA","WATERFALL","EQUALLY_SPACED_SERIES","LEGEND_ITEM_CLICK","LEGEND_ITEM_HOVER","LEGEND_ITEM_LEAVE","SERIES_CLICK","SERIES_HOVER","SERIES_OVER","SERIES_LEAVE","PLOT_AREA_CLICK","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT_END","SHOW_TOOLTIP","HIDE_TOOLTIP","PANE_RENDER","LOGARITHMIC","CATEGORY","INSIDE_END","INSIDE_BASE","OUTSIDE_END","MOUSEWHEEL_DELAY","DEFAULT_ERROR_BAR_WIDTH","ErrorBarBase","CategoricalErrorBar","CategoricalChart","PointEventsMixin","NoteMixin","LinePoint","LineSegment","StepLineMixin","StepLineSegment","SplineSegment","LineChartMixin","ClipAnimation","ClipAnimationMixin","LineChart","AreaSegment","StepAreaSegment","SplineAreaSegment","AreaChart","AxisGroupRangeTracker","BarLabel","BAR_ALIGN_MIN_WIDTH","Bar","ClusterLayout","StackWrap","BarChart","Candlestick","CandlestickChart","BoxPlot","VerticalBoxPlot","BoxPlotChart","ScatterErrorBar","ScatterChart","Bubble","BubbleChart","Bullet","BulletChart","BaseTooltip","CrosshairTooltip","Crosshair","ChartContainer","PlotAreaBase","allPaneAxes","PlotAreaEventsMixin","SeriesAggregator","DefaultAggregates","RangeBar","RangeBarChart","RangeLinePoint","DEFAULT_FROM_FORMAT","DEFAULT_TO_FORMAT","RangeAreaPoint","RangeAreaSegment","SplineRangeAreaSegment","StepRangeAreaSegment","RangeAreaChart","OHLCPoint","OHLCChart","WaterfallSegment","WaterfallChart","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","Highlight","Pannable","ZoomSelection","MousewheelZoom","LegendLayout","LegendItem","POINTER","CUSTOM","Legend","PlotAreaFactory","ZOOM_ACCELERATION","SELECTOR_HEIGHT_ADJUST","SharedTooltip","BarChartAnimation","BubbleAnimation","FadeInAnimation","PieAnimation","ScatterLineChart","XYPlotArea","PieSegment","PieChartMixin","PIE_SECTOR_ANIM_DELAY","PieChart","PiePlotArea","DonutSegment","DONUT_SECTOR_ANIM_DELAY","DonutChart","DonutPlotArea","DEFAULT_PADDING","PolarPlotAreaBase","PolarScatterChart","PolarLineChart","SplinePolarAreaSegment","PolarAreaSegment","PolarAreaChart","PolarPlotArea","RadarLineChart","SplineRadarAreaSegment","RadarAreaSegment","RadarAreaChart","RadarSegment","RadarClusterLayout","RadarStackLayout","RadarBarChart","RadarPlotArea","FunnelSegment","FunnelChart","FunnelPlotArea","COLOR","FROM","NOTE_TEXT","SUMMARY_FIELD","TO","CONTEXTMENU","MOUSEMOVE_DELAY","Chart","chartsVisual","chartContainer","_plotArea","backgroundVisual","_bgVisual","sumOrNull","_valueFields","_otherFields","_nullValue","_undefinedValue","otherFields","_makeValue","canonicalFields","pointIx","fieldData","srcValueFields","srcPointFields","_bindFromArray","sourceFields","_bindFromObject","srcFields","srcFieldName","sourceFieldName","errorValue","initGlobalRanges","deviation","errorRange","standardError","deviationMatch","createValueGetter","getAverage","getStandardDeviation","globalRange","getStandardError","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","endCaps","getAxis","valueBox","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","seriesValueAxis","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","pointOptions","seriesIx","pointType","invertAxes","plotValue","otherValues","categorySum","otherStack","isStacked100","plotRange","positive","prevValue","isStackedBar","otherValue","isStacked","categoryAxisCrossingValue","stackLimits","stackName","pIx","updateStackRange","limits","errorTotals","chartSeries","limitsCache","addErrorBar","lowValue","highValue","seriesErrorRanges","addPointErrorBar","stackedErrorRange","errorBar","updateRange","createPoint","noteText","evalPointOptions","doEval","namedValueAxes","categorySlots","chartPoints","valueSlot","pointSlot","categorySlot","aboveAxis","stackValue","reflowPoint","reflowCategories","limitPoints","limitPoint","crossingValues","seriesIx$1","currentCategory","seriesIx$2","_outOfRangeCallback","_bindPoint","outOfRangePoint","bindCache","_bindCache","formatPointValue","createNote","tooltipTracking","labelTemplate","_rendered","createMarker","markerBorder","markerBox","_childBox","childBox","noteTargetBox","reflowLabel","defaultColor","highlightVisual","halfSize","tooltipAnchor","horizontalAlign","clipBox","overlapsBox","unclipElements","toGeometryPoints","segmentVisual","getNearestPoint","calculateStepPoints","stepPoint","previousPoint","curveProcessor","curve","renderSegments","sortedPoints","pointCount","_segments","sortPoints","createSegment","_addSegment","assumeZero","nearestPoint","pointBox","allPoints","nearestPointDistance","_setEnd","setX","_setChildrenAnimation","animationPoints","prevSegment","stackPoints","createFill","createStroke","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","firstPoint","lastPoint","previousSegment","_gapStackPoints","stackPoint","_stackPoints","pointOffset","currentSeriesIx","gapStackPoint","_previousSegmentPoint","_createGapStackPoint","segmentIx","seriesIdx","chartAxisRanges","chartRange","textBox","alignToClipBox","parentBox","createLabel","rectVisual","createRect","strokeOpacity","getBorderColor","baseColor","positionAxis","clusterType","stackType","cluster","stackWrap","negativeColor","getStackWrap","stackGroup","wraps","_stackGroup","zeroSlot","_setAnimationOptions","pointVisual","ocSlot","lhSlot","realBody","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","drawLines","lineStyle","normalColor","valueParts","splitValue","whiskerSlot","boxSlot","medianSlot","meanSlot","q3","reflowBoxSlot","reflowWhiskerSlot","meanPoints","calcMeanPoints","whiskerPoints","calcWhiskerPoints","medianPoints","calcMedianPoints","renderOutliers","outlierValue","markersBorder","outliers","outerFence","reflowOutliers","filterOutliers","seriesAxes","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxisName","yAxisName","xAxisRange","yAxisRange","namedXAxes","namedYAxes","currentSeriesPoints","highlightGroup","_maxSize","negativeValues","updateBubblesSize","pointsCount","minSize","minR","maxR","minArea","maxArea","areaRange","areaRatio","baseZIndex","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","bulletOptions","getStyle","pointColor","formatService","initAxisName","showAt","stickyMode","getAnchor","ref_options","moveLine","getBox","axisLineBox","currentAxis","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","appendAxis","appendAxisAt","appendChart","i$1","removeAxis","removeChart","allAxes","vGridLines","hGridLines","axisValueField","length$1","axis$1","lineBox$1","paneIndex","initSeries","crosshairs","createPanes","createCrosshairs","setTitle","currentPane","paneOptions","panesLength","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","seriesVisible","itemLabelOptions","markerColor","inactiveItemsLabels","visibleInLegend","groupAxes","paneIx","paneAxes","xAxes","yAxes","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","panesArray","crossingAxes","valuesToAdd","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","alignAxes","paneId","anchorCrossings","pane$1","paneId$1","visible$1","anchor$1","anchorCrossings$1","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","_overlap","_mirrored","shrinkAxisWidth","shrinkAxisHeight","shrinked","fitAxes","paneBox","currentAxis$1","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","rotated","chartPane","percents","currentPane$1","i$2","currentPane$2","remainingHeight","remainingPanes","autoHeightPanes","backgroundBox","axisA","axisB","axesCount","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxis","labelAxisCount","createLabelAxis","onAxis","_dispatchEvent","defaultAggregates","fieldAggregate","seriesFields","_seriesFields","_series","_binder","canonicalName","aggregatePoints","srcPoints","srcValues","_bindPoints","_bindField","fromOptions","toOptions","labelFrom","_createLabel","labelTo","plotLimits","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","toPoints","fromSegments","fromPath","createCurveSegments","fromSlot","toSlot","oPoints","cPoints","lhPoints","oSlot","cSlot","createSegments","totalCategories","prevPoint","namedCategoryAxes","valueAxisRangeTracker","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","paneSeries","visibleSeries","groupIx","groupSeriesByCategoryAxis","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","axisPane","dateAxis","srcSeries","processedSeries","_currentPointsCache","_seriesPointsCache","categoryField","aggregateSeries","filterSeries","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","srcData","getFn","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","paneName","stackableChartOptions","firstSeries","axisSeries","categoryAxes","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","seriesAxis","centeredSeries","aggregatedAxis","primaryAxis","defaultAxisRange","tracker","defaultRange","_eventCoordinates","pointPane","_points","arrayPoints","togglePointHighlight","isHighlighted","_panAxes","updatedAxes","removeElement","setStyles","zoomPane","_zoomPane","_zoomPaneClipBox","_selectionPosition","elementOffset$$1","_updateAxisRanges","updateRanges","legendItem","createContainer","eventSink","_itemOverlay","_legendItemHover","pointIndex","_unsetActivePoint","createItems","userAlign","innerElement","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","_registry","_dateAxis","createElements","onPane","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","leftMask","rightMask","mousewheel","_mousewheelHandler","_mousewheel","_domEvents","_gesturestart","_gesturechange","_gestureend","_mwTimeout","_rangeEventArgs","moveTarget","oldRange","_toModelCoordinates","_slot","rightMaskWidth","leftMaskWidth","zDir","tooltipPoints","_slotAnchor","_defaultAnchor","categoryText","categoryFormat","centerPoint","slotCenter","fromScale","fadeTo","missingValue","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","xAxisOptions","yAxisOptions","createXYAxis","seriesAxisName","firstPointValue","inferredDate","namedAxes","isLog","typeSamples","axisPane$1","xAxesOptions","yAxesOptions","xValues","yValues","themeLabels","animationDelay","labelHeight","labelWidth","lp","labelsOptions","labelsDistance","createSegmentVisual","borderOptions","singleSegment","createLegendItem","pointVisible","legendOptions","legendItems","colorsCount","anglePerValue","constantAngle","explode","evalSegmentOptions","segmentOptions","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","seriesConfigs","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","secondBox","lr","firstBox","remaining","_takeDistance","amount","boxX","labelDistance","boxY","hAlignLabel","connectorsColor","connectorLine","sr","crossing","_connectorLines","pointInCircle","reverseValue","originalX","sector_center","createPieChart","pieChart","seriesWithoutSize","holeSize","currentSeries$1","createDonutChart","donutChart","createPolarAxis","createValueAxis","axisDefaultRange","valueAxisOptions","valueAxisBox","heightDiff","valueRadius","_polarAxisCenter","centerSegment","_hasMissingValuesGap","scatterChart","slotSector","childSector","_hasBarCharts","_isStacked100","chartOptions","chartBox","createPath","labelPadding","dynamicSlopeReflow","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","firstSegment","maxSegment","dynamicHeight","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","topMostWidth","finalNarrow","dynamicSlope","createFunnelChart","funnelChart","errorLow","errorHigh","_initElement","_originalOptions","_theme","_initTheme","_initHandlers","bindCategories","fontLoaded","_redraw","_setElementClass","seriesCopies","applySeriesColors","_noTransitionsRedraw","findPaneByName","findPaneByIndex","seriesName","categoryName","togglePointsHighlight","_sharedTooltip","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","_getModel","_setupSelection","_createPannable","_createZoomSelection","_createMousewheelZoom","_navState","_cancelDomEvents","exportOptions","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowZoom","_dragZoomEnabled","_touchAction","_toggleDomEvents","domEvents","toggleDrag","toggleZoom","_createSharedTooltip","seriesColor","_createPlotArea","skipSeries","_selections","_selectStart","_selectEnd","_mouseover","_mouseout","_toDocumentCoordinates","obj$1","_shouldAttachMouseMove","_hoveredPoint","_stopChartHandlers","_gestureDistance","_zooming","previousGestureDistance","mousewheelZoom","_drawingChartElement","_startNavigation","_suppressHover","ranges$1","_endNavigation","totalDelta","chartEvent","_getChartElement","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","activePoint","hoveredPoint","_activePoint","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","overPlotArea","_trackCrosshairs","pointArgs","hoverArgs","_tooltipCategoryIx","_sharedHighlight","hideElements","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","bindCategoryAxisFromSeries","dataIx","dataRow","uniqueCategories","bindable","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setDirection","setIntlService","noTransitionsRedraw","createProxyMember","nameTemplate","seriesClone","legacyTemplate","groupNameTemplate","_groupIx","_groupValue","normalizeStyle","ChartInstanceObserver","proxyMembers","SeriesVisibilityState","geom","ChartSeries","KendoChart","LEAVE","TOOLTIP_ANIMATION_DURATION","TOOLTIP_SHOW_DELAY","TOOLTIP_INVERSE","SHARED_TOOLTIP_CLASS","legendItemClick","_seriesVisibility","_initDataSource","_bindSeries","_bindCategories","_getThemeOptions","_sourceSeries","_hasDataSource","_onDataChanged","_hasData","_destroyCrosshairTooltips","findSeriesByName","_createSeries","findSeriesByIndex","originalChartArea","_seriesOptions","_initChart","_createChart","_onInit","_initTooltip","tooltips","_crosshairTooltips","_getCrosshairTooltip","_showTooltip","_hideTooltip","_onRender","_copyMembers","_tooltipleave","_onLegendItemClick","_legendItemClick","_bindData","groupedSeries","seriesVisibility","applyByGroup","applyByIndex","seriesData","categoriesData","_bindCategoryAxis","persistSeriesVisibility","saveState","mobileScrollerSelector","_mobileScroller","_clearShowTimeout","sharedTemplate","_ensureElement","showTimeout","_sharedContent","_pointContent","_hideElement","nameColumn","colorMarker","xLow","xHigh","yLow","yHigh","_chart","_filterPoints","_clearFields","_filterData","buildLabelElement","Path$1","styleGeometry","styleBox","renderAxisTick","tickRenderOptions","tickPath","Path$2","renderTicks","tickGroup","drawTicks","tickAngles","tickStart","tickEnd","Group$5","getRadiusX","Path$5","rangeSegment","DrawingGroup","DrawingPath","ANGULAR_SPEED","LINEAR_SPEED","ARROW","ARROW_POINTER","BAR_POINTER","DEFAULT_LINE_WIDTH","DEGREE","RADIAL_POINTER","RADIAL_RANGE_POINTER","DEFAULT_MARGIN","Gauge","Group$2","LinearScale","Pointer","LinearPointer","ArrowLinearPointerAnimation","Point$1","Path$3","ArrowLinearPointer","BarLinearPointerAnimation","Group$3","Path$4","BarLinearPointer","DEFAULT_MIN_WIDTH","DEFAULT_MIN_HEIGHT","Group$1","LinearGauge","GEO_ARC_ADJUST_ANGLE","RadialScale","RadialPointerAnimation","CAP_SIZE","Group$6","Path$6","RadialPointer","Group$4","RadialGauge","ArcScale","MAX_DURATION","RangePointerAnimation","RangePointer","ArcGauge","contextService","pointerValue","_setValueOptions","_draw","_visuals","allValues","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","currentTheme","areaGeometry","_surfaceElement","_getSize","_defaultSize","renderLabels","scaleLine","renderLine","scaleTicks","renderRanges","linePath","repaint","pointerBox","pointerRangeBox","trackBox","trackSize","pointerHalfSize","getElementOptions","_margin","toScale","pointerShape","elementOptions","newPoints","oldPoints","speed","minSlot","sizeAxis","pointerPath","oldShape","renderTrack","trackOptions","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","plotAreaBox","scaleBox","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","hasLabelElements","labelAngle","labelElement","prevLabelPos","labelTransform","labelsGroup","rangeDistance","setRadiusX","setRadiusY","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","rangeGeom","allTicks","tickArc","majorTickAngles","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","newAngle","oldAngle","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","_initialPlotArea","alignScale","_buildPointers","midDiff","oldDiff","getDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","rangeLineCap","placeholderRangeAngle","geometry$$1","setEndAngle","setStartAngle","startColor","currentColor","rangeColor","centerLabelPosition","yLimit","lowerName","createExportMethod","ArcGaugeWidget","_centerElement","RadialGaugeWidget","LinearGaugeWidget","exportMethods","_createInstance","_copyFields","gaugeType","_gaugeType","_centerTemplate","centerElement","centerTemplate","_getCenterElement","state128","state128AB","states128","code128Base","msiBase","Barcode","DEFAULT_QUIETZONE_LENGTH","numberRegex","alphanumericRegex","InvalidCharacterErrorTemplate","quietZoneLength","addQuietZone","initValue","addData","addCheckSum","invalidCharacterError","encodings","code39Base","minBaseUnitLength","addStart","addCharacter","pushCheckSum","prepareValues","charData","characterMap","addBase","code39ExtendedBase","addExtended","extendedMappings","shiftCharacters","dataCharacter","specialAsciiCodes","64","96","127","shiftValuesAsciiCodes","41","42","+","%","code39","checkSumMod","minRatio","maxRatio","splitCharacter","patternString","minBaseUnit","getBaseUnit","getBaseWidth","characterLength","addPattern","addCharacterGap","patternMappings","E","J","K","O","P","V","Z","-"," ","code39extended","SHIFT0","SHIFT1","SHIFT2","SHIFT3","code93","cCheckSumTotal","kCheckSumTotal","setBaseUnit","checkSumLength","TERMINATION_BAR","_getCheckValues","_findCharacterByValue","cValue","kValue","wightedSum","weightedValue","code93extended","encoding","FNC4","_initMoves","isCode","encodingState","_moves","numberMatch","_moveFNC","_shiftState","_moveState","fnc","previousState","SHIFT","next4","dependentStates","_initSubStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","startState","startAI","endAI","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","getAI","unsupportedAIError","applicationIdentifiers","multiKey","7004","8020","703","8008","8003","_initStates","checkSum","getNextState","STOP","code128a","code128b","code128c","code128","startStopLength","checkSumFunction","checkSums","checkSumType","Modulo10","evenSum","oddSum","odd","Modulo11","weight","checkValue","weightedSum","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","msimod10","msimod11","msimod1110","msimod1010","code11","kCheckSumMinLength","DASH_VALUE","getWeightedSum","postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","ean13","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","keyTable","arrToAdd","limitedHeight","even","ean8","surfaceWrap","textToDisplay","textMargin","barHeight","_getBackground","_getText","_bandsGroup","_getBands","_textbox","toDecimal","toBitsString","splitInto","fillFunctionCell","matrices","bit","fillDataCell","maskPatternConditions","generatePowersOfTwo","powersOfTwoResult","powersOfTwo","generateGeneratorPolynomials","firstPolynomial","secondPolynomial","maxErrorCorrectionCodeWordsCount","generatorPolynomials","multiplyPolynomials","multiplyByConstant","getNumberAt","scoreFinderPatternOccurance","scores","rowColumn","finderPatternValue","scoreAdjacentSameBits","previousBits","adjacentBits","calculateDarkModulesRatioScore","darkModules","mod5","score","modeInstances","FreeCellVisitor","fillData","padDataString","xorPolynomials","generateErrorCodewords","getBlocks","chooseMode","getModes","getDataCodewordsCount","getVersion","getDataString","encodeFormatInformation","encodeBCH","dividePolynomials","initMatrices","addFormatInformation","encodeVersionInformation","addVersionInformation","addCentricPattern","addFinderSeparator","addFinderPatterns","addAlignmentPatterns","addTimingFunctions","scoreMaskMatrixes","EncodingResult","IsoEncoder","UTF8Encoder","QRCodeDataEncoder","encodeData","QRCodeDefaults","QRCode","terminator","NUMERIC","ALPHA_NUMERIC","BYTE","irregularAlignmentPatternsStartDistance","24","26","28","31","versionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","finderPattern","alignmentPattern","errorCorrectionPatterns","formatMaskPattern","formatGeneratorPolynomial","versionGeneratorPolynomial","paddingCodewords","alphaPattern","alphaExclusiveSet","alphaRegex","alphaNumericRegex","byteRegex","initMinNumericBeforeAlpha","initMinNumericBeforeByte","initMinAlphaBeforeByte","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","QRDataMode","getVersionIndex","getBitsCharacterCount","bitsInCharacterCount","getModeCountString","modeIndicator","getStringBitsLength","modes","inputLength","mod3","characters","*","startColumn","getNextCell","getNextRemainderCell","codewordIdx","blockIdx","cellVisitor","dataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","errorCodewordsCount","generator","generatorPolynomial","steps","errorCodewords","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","previousMode","modeString","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","nextMode","dataCodewordsCount","errorCorrectionLevel","encodedString","codeLength","generatorNumber","polynomialLength","valueNumber","numberX","numberY","yLength","xLength","modules","quotient","nextX","nextY","startDistance","adjacentSameBits","getEncodingResult","inputString","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","significantOnes","bytesCount","getBytesCount","bc","optimalMatrix","encoder","encodingResult","versionInformation","DEFAULT_SIZE","QUIET_ZONE_LENGTH","DEFAULT_ERROR_CORRECTION_LEVEL","DEFAULT_BACKGROUND","DEFAULT_DARK_MODULE_COLOR","MIN_BASE_UNIT_SIZE","quietZoneSize","dataSize","contentSize","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","matrixSize","QRCodeFunctions","QRCodeFields","ClonedObject","FadeOutAnimation","NavigatorHint","NAVIGATOR_PANE","NAVIGATOR_AXIS","Navigator","AUTO_CATEGORY_WIDTH","StockChart","_initialOpacity","chartPadding","tooltipStyle","minPos","maxPos","posRange","clearHideTimeout","_visible","borderTopWidth","_hideTimeout","_hideAnimation","chartObserver","_redrawSelf","initSelection","mainAxis","axisClone","selectStart","selectEnd","setRange","filterAxes","redrawSlaves","slavePanes","navigatorAxis","naviRange","inNavigator","liveDrag","readSelection","ref_selection_options","_zoom","fromIx","toIx","_zoomEnd","naviOptions","__navi","attachAxes","attachSeries","valueAxes","equallySpacedSeries","justifyAxis","_collapse","autoBindElements","navigatorSeries","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","_seriesCount","copyNavigatorCategories","buildFilter","KendoStockChart","StockInstanceObserver","navigatorFilter","navigatorCreated","_initNavigatorOptions","navigatorOptions","isFirefox","dummyAxis","hasServerFiltering","hasSelect","_onNavigatorCreated","_initNavigatorDataSource","dsOptions","_navigatorDataChangedHandler","_onNavigatorDataChanged","_navigatorDataSource","_bindNavigatorSeries","naviCategories","axesLength","_removeNavigatorDataSource","_onNavigatorFilter","navigatorDataSource","wrapNumber","TOP_OFFSET","SharedTooltip$1","DEAULT_BAR_WIDTH","DEAULT_BULLET_WIDTH","NO_CROSSHAIR","Sparkline","stage","displayState","_autoWidth","_calculateWidth","currentChart","pointWidth","normalizeOptions","SparklineTooltip","KendoSparkline","Extent","Location","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","loc","datum","greatCircleTo","bearing","fromLat","fromLng","dToR","datums","WGS84","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","prevLambda","converged","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","sinA","deltao","azimuthFrom","azimuthTo","fromLngLat","fromLatLng","nw","se","locs","includeAll","edges","sw","extent","World","Attribution","_extent","_itemText","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","BUTTONS","_keyroot","panStep","_pan","FF_PLUS","FF_MINUS","ZoomControl","zoomStep","PI_DIV_4","Mercator","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","centralMeridian","clamp","proj","lng0","_projectLat","ecc","con","_inverseY","dphi","ecch","SphericalMercator","Equirectangular","EPSG3857","crs","_proj","_tm","_itm","toLocation","EPSG3395","EPSG4326","projections","Layer","_beforeReset","_panEnd","_updateAttribution","_applyExtent","_setVisibility","matchMinZoom","matchMaxZoom","inside","attribution","layers","ShapeLayer","_initRoot","_markers","_dataChange","_translateSurface","_clearMarkers","GeoJSONLoader","shapeCreated","_createMarker","layer","featureCreated","_panning","locationToView","locator","defaultStyle","_loadGeometryTo","_featureCreated","_shapeCreated","_loadPolygon","_setLineFill","_loadPoint","_loadShape","rings","_buildPolygon","geojson","features","BubbleLayer","locationField","scaleType","_scaleType","_createSymbol","_drawSymbol","scales","symbols","SqrtScale","domainRange","outputRange","_domain","_ratio","Symbols","roundPoint","drawingUtil","TileLayer","subdomains","_viewType","locationToLayer","viewOrigin","_updateView","TileView","extentToPoint","pool","TilePool","urlTemplate","_viewOrigin","pointToTileIndex","tileCount","firstTileIndex","indexToPoint","subdomainText","subdomainIndex","tile","createTile","tileOptions","wrapIndex","subdomain","errorUrlTemplate","wrapValue","ImageTile","errorUrl","urlResult","urlOptions","quadkey","maxDist","BingLayer","_scheme","_onMetadata","_fetchMetadata","imagerySet","uriScheme","resourceSets","imageUrlSubdomains","_addAttribution","BingView","imageryProviders","coverageAreas","tileQuadKey","digit","quadKey","bing","MarkerLayer","_markerClick","_addOne","addTo","getLocation","getTitle","renderTooltip","CSS_PREFIX","FRICTION_MOBILE","DEFAULT_ZOOM_RATE","Map","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","layerDefaults","markerDefaults","wraparound","zoomControl","_setExtent","_getExtent","_layerSize","layerToLocation","viewToLocation","eventOffset","eventToView","eventToLayer","eventToLocation","_setOrigin","layerWidth","layerHeight","_zoomAround","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPos","posSelector","_navigatorPan","_navigatorCenter","bounds","_virtualSize","_scrollEnd","_zoomControlChange","_scaleStart","_doubleTap","_panComplete","_panEndTS","_scaleToZoom","gestureCenter","centerLocation","tiles","_resetScroller","xBounds","yBounds","_renderLayers","toZoom","postZoom","fromZoom","rangeIntegerScale","Utils","findRadian","sngXComp","sngYComp","Easing","Ticker","EPSILON","isNearZero","isDefined","isBoolean","isType","simpleExtend","initArray","serializePoints","deserializePoints","randomInteger","DFT","getMatrixAngle","getMatrixScaling","sX","sY","findAngle","thisRef","fold","constraint","bisort","sortfunc","easeInOut","adapters","lastTime","_this","timerDelegate","onTimerEvent","addAdapter","onComplete","removeHandler","caller","onStep","seekFromTo","intervalId","initState","movement","intersectLine","start1","end1","start2","end2","isSegment","num1","num2","tangensdiff","normalVariable","PathDefiner","Intersect","RectAlign","Polar","MatrixVector","Geometry","HashTable","Dictionary","Queue","Set","Link","Graph","HITTESTAREA","plus","minus","lengthSquared","middleOf","toPolar","useDegrees","halfpi","isOnLine","o1","tempStr","xy","rotatedBounds","delimiter","staicPoint","adornerCenter","scaled","thisCenter","rectBottomRight","Empty","rectWithLine","rects","reverseAngle","alignValues","_singleAlign","_left","_right","stretch","_top","_middle","_bottom","alignCalc","applyRect","fromSVGMatrix","vm","fromMatrixVector","fromList","translation","scaling","nums","fromMatrix","_distanceToLineSquared","pt1","pt2","vx","vy","distanceToLine","distanceToPolyline","minimum","_buckets","_createGetBucket","_bucketExists","containsKey","hashId","bucket","hashes","_hashes","_hashString","_objectHashId","_hashId","dictionary","_hashTable","forEachValue","forEachKey","enqueue","kv","outgoing","incoming","associatedShape","shortForm","isVirtual","isIsolated","isLinkedTo","getComplement","getChildren","adjacentTo","hasLinkTo","degree","incidentWith","getLinksWith","getNeighbors","neighbors","sourceFound","targetFound","associatedConnection","getCommonNode","isBridging","getNodes","changeSource","changeTarget","changesNodes","oldSource","directTo","createReverseEdge","reversed","idOrDiagram","_nodeMap","_hasCachedRelationships","cacheRelationships","forceRebuild","assignLevels","visited","getConnectedComponents","componentId","graph","componentIndex","setItemIndices","_collectConnectedNodes","addNodeAndOutgoings","setIds","nextId","calcBounds","getSpanningTree","ni","cn","newLink","treeLevels","_addNode","takeRandomNode","excludedNodes","incidenceLessThan","isHealthy","hasNode","sourceOrLink","foundSource","foundTarget","addExistingLink","getNode","addNode","removeAllLinks","hasLink","linkOrId","nodeOrId","_removeNode","removeNode","areConnected","layoutRect","newLinks","saveMapping","nodeMap","linkMap","nOriginal","nCopy","linkOriginal","linkCopy","linearize","addIds","depthFirstTraversal","foundNode","_dftIterator","breadthFirstTraversal","_stronglyConnectedComponents","excludeSingleItems","lowLinks","findCycles","isAcyclic","isSubGraph","otherArray","thisArray","makeAcyclic","oneLink","oneNode","rev","intensityCatalog","flowIntensity","catalogEqualIntensity","sourceStack","targetStack","intensity","targetLink","sourceLink","maxdiff","ril","vertexOrder","kk","reversedEdges","Predefined","EightGraph","Mindmap","ThreeGraph","BinaryTree","createBalancedTree","Linear","siblingsCount","Forest","trees","createBalancedForest","Workflow","graphString","previousLink","lin","_addShape","kendoDiagram","undoable","addShape","_addConnection","connect","createDiagramFromGraph","randomSize","gli","sourceShape","targetShape","shi","SpringLayout","layoutGraph","limitToView","lastAdded","news","treeCount","createRandomConnectedGraph","nodeCount","maxIncidence","isTree","poolNode","randomAdditions","randomDiagram","shapeCount","diffNumericOptions","sizeOptionsOrDefault","normalizeDrawingOptions","drawingOptions","lineAngle","toDrawingRect","Scale","Translation","Rotation","CompositeTransform","AutoSizeableMixin","VisualBase","TextBlock","MarkerBase","CircleMarker","ArrowMarker","MarkerPathMixin","Line","Polyline","Canvas","Markers","arrowStart","filledCircle","arrowEnd","FULL_CIRCLE_ANGLE","toMatrixVector","_transform","_renderTransform","rotateMatrix","scaleMatrix","translatePoint","_setScale","originWidth","_originWidth","originHeight","_originHeight","_setTranslate","_initSize","_updateSize","_diffNumericOptions","_originSize","drawingContainer","_hover","_measured","_boundingBox","_fill","_stroke","GradientClass","_textColor","_initText","fontOptions","sizeChanged","_initPath","sizeOptions","_transformToPath","positionMarker","targetSegment","_linePoints","_getPath","_normalizeMarkerOptions","startCap","endCap","_removeMarker","_createMarkers","markerType","_positionMarker","_capMap","_redrawMarker","pathChange","pathOptions","pathCapType","optionsCap","_redrawMarkers","_createElements","_setData","_updatePath","_pointsDiffer","currentPoints","_initImage","_childrenChange","toBack","_reorderChildren","drawingChildren","fixedPosition","childBoundingBox","_includeInBBox","drawingRect","_initCircle","circleOptions","_circle","_translate","_viewBox","clearHtml","testKey","hitToOppositeSide","hit","canDrag","hitTestShapeConnectors","connector","HIT_TEST_DISTANCE","noMeta","PositionAdapter","LayoutUndoUnit","CompositeUnit","ConnectionEditUnit","ConnectionEditUndoUnit","DeleteConnectionUnit","DeleteShapeUnit","TransformUnit","AddConnectionUnit","AddShapeUnit","PanUndoUnit","RotateUnit","ToFrontUnit","ToBackUnit","UndoRedoService","EmptyTool","ScrollerTool","PointerTool","SelectionTool","ConnectionTool","ConnectionEditTool","ToolService","ConnectionRouterBase","LinearConnectionRouter","PolylineRouter","CascadingRouter","AdornerBase","ConnectionEditAdorner","ConnectorsAdorner","ResizingAdorner","Selector","ConnectorVisual","Cursors","grip","cross","south","east","west","north","rowresize","colresize","DEFAULT_SNAP_SIZE","DEFAULT_SNAP_ANGLE","ITEMROTATE","ITEMBOUNDSCHANGE","MIN_SNAP_SIZE","MIN_SNAP_ANGLE","SCROLL_MIN","SCROLL_MAX","PAN","ROTATED","TARGET","HANDLE_NAMES","-1","layoutState","pusher","getShapeById","subjects","froms","tos","initialState","finalState","_initialState","_finalState","ticker","conn","undoUnit","redoSource","redoTarget","_redoSource","_redoTarget","_undoSource","_undoTarget","_updateConnector","updateModel","undoSource","undoTarget","targetConnector","undoStates","adorner","redoStates","refreshBounds","deselect","finalPosition","finalPos","undoRotates","redoRotates","redoAngle","_angle","_innerBounds","_initialize","_toIndex","capacity","commit","_restart","addCompositeItem","toolService","tryActivate","getCursor","virtualScroll","movableCanvas","hoveredAdorner","_hoveredConnector","scrollPos","_storePan","selectSingle","_hitTest","_resizingAdorner","isDragHandle","connections","undoRedoService","selectArea","_createConnection","_c","connectionHandle","_connectionManipulation","_removeHover","activeConnection","_cachedTouchTarget","cachedTouchTarget","sourceConnector","Shape","getConnector","_syncConnectionChanges","_connectorsAdorner","handleName","activeTool","_updateHoveredItem","_activateTool","_updateCursor","updateHovered","_triggerRemove","_syncChanges","_destroyToolBar","_discardNewConnection","zoomOptions","setTool","addToSelection","newConnection","disabledShape","selectedConnections","_selectedItems","Connection","_hitTestItems","_hitTestElements","mainLayer","shapeIdx","connectionIdx","shapeHit","connectionHit","hitTest","getBounds","SAME_SIDE_DISTANCE_RATIO","routePoints","_connectorPoints","_floatingPoints","_resolvedSourceConnector","_resolvedTargetConnector","sourcePoint","targetPoint","_connectorSides","boundsPoint","secondarySign","_connectorSide","sideDistance","minSide","shapeBounds","sides","_sameSideDistance","pointX","pointY","sourceConnectorSide","targetConnectorSide","sameSideDistance","shiftX","shiftY","cascadeStartHorizontal","_startHorizontal","sourceSide","_adorners","sp","tp","_ts","spVisual","epVisual","_initialSource","_initialTarget","sourcePointDistance","targetPointDistance","sourceHandle","targetHandle","modelToLayer","ctr","_clearVisual","_keepCachedTouchTarget","visualChildren","_manipulating","_initSelection","_createHandles","_internalChange","_rotatedHandler","_handleOptions","_bounds","handleBounds","handlesCount","_getHandleBounds","_rotationOffset","_startAngle","_rotates","_positions","initialRotates","initialStates","_sp","_cp","_lp","shapeStates","visibleHandles","newBounds","staticPoint","thr","newCenter","oldBounds","dtl","dbr","_truncateAngle","_rotating","shouldSnap","_truncateDistance","_displaceBounds","_truncatePositionToGuides","ruler","truncatePositionToGuides","_truncateSizeToGuides","truncateSizeToGuides","snapOptions","snapAngle","snapSize","_diffStates","_syncShapeChanges","rotationThumb","_rotationThumbBounds","_ep","_adorn","visualBounds","modelToView","_visualBounds","HyperTree","LayoutBase","subtype","nodeDistance","iterations","horizontalSeparation","verticalSeparation","underneathVerticalTopOffset","underneathHorizontalOffset","underneathVerticalSeparation","componentSpacingX","componentSpacingY","layerSeparation","layeredIterations","startRadialAngle","endRadialAngle","radialSeparation","radialFirstLevelSeparation","keepComponentsInOneRadialLayout","ignoreContainers","layoutContainerChildren","ignoreInvisible","animateTransitions","gridLayoutComponents","resultLinkSet","resultNodeSet","boundingRect","moveToOffset","nodeBounds","newpoints","deltax","deltay","currentHorizontalOffset","transferOptions","DiagramToHyperTreeAdapter","shapeMap","edgeMap","finalNodes","finalLinks","ignoredConnections","ignoredShapes","hyperMap","hyperTree","finalGraph","_renormalizeShapes","_renormalizeConnections","mapConnection","mapShape","getEdge","listToRoot","containerGraph","firstNonIgnorableContainer","isContainer","_isIgnorableItem","isContainerConnection","isDescendantOf","isIgnorableItem","_isVisible","_isTop","isShapeMapped","leastCommonAncestor","al","xa","xb","_isCollapsed","sink","sinkNode","newEdge","areConnectedAlready","finalNodeSet","LayoutState","initialTemperature","guessBounds","temperature","_expectedBounds","refineStage","_repulsion","_attraction","_shake","rho","_InverseSquareForce","wn","hn","wm","hm","_SquareForce","av","squareSize","TreeLayoutProcessor","treeGraph","layoutSwitch","layoutLeft","setChildrenDirection","setChildrenLayout","TreeDirection","arrange","layoutRight","layoutUp","layoutDown","treeDirection","layoutRadialTree","previousRoot","calculateAngularWidth","radialLayout","Angle","tipOverTree","startFromLevel","aw","diameter","sectorAngle","sortChildren","nl","basevalue","normalizeAngle","childAngleFraction","deltaTheta","deltaThetaHalf","parentSector","setPolarLocation","BoundingRectangle","includeStart","rootDirection","rootLayout","childrenLayout","givenSize","shapeWidth","shapeHeight","AngleToParent","SectorAngle","pp","childrenwidth","selfLocation","male","female","leftcount","tipOverTreeStartLevel","TreeLayout","layoutComponents","getTree","givenRootShape","getTreeForRoot","LayeredLayout","_initRuntimeProperties","downstreamLinkCount","upstreamLinkCount","uBaryCenter","dBaryCenter","upstreamPriority","downstreamPriority","gridPosition","_prepare","targetLayer","sortedNodes","minLayer","layerMap","layerCount","o2","o1layer","o2layer","linksTo","_dummify","_optimizeCrossings","_swapPairs","arrangeNodes","_moveThingsAround","_dedummify","setMinDist","minDist","layerIndex","minDistances","getMinDist","i1","i2","placeLeftToRight","leftClasses","classNodes","rightSibling","neighbor","leftPos","placeLeft","POSITIVE_INFINITY","nodeLeftClass","upNodes","downNodes","intDiv","placeRightToLeft","rightClasses","leftSibling","rightPos","placeRight","NEGATIVE_INFINITY","nodeRightClass","_getLeftWing","leftWing","computeClasses","_getRightWing","rightWing","wingPair","ndsinl","vnode","wings","currentWing","wing","_nodesInLink","classIndex","_isVerticalLayout","_isHorizontalLayout","_isIncreasingLayout","maximumHeight","currDown","downNode","placed","sequenceStart","sequenceEnd","fromLayerIndex","reachedFinalLayerIndex","layerIncrement","_gridPositionComparer","virtualStartIndex","virtualStart","sequence","virtualEnd","virtualEndIndex","_firstVirtualNode","_sequencer","nextVirtualNode","adjustDirections","prevBridge","prevBridgeTarget","nextBridge","nextBridgeTarget","clayer","j1","j2","getNeighborOnLayer","_sequenceSingle","combineSequences","rightHeap","leftRes","rightRes","leftHeap","_positionDescendingComparer","_positionAscendingComparer","leftClass","_getComposite","rightClass","maxLayoutIterations","it","gridPos","layoutLayer","iconsidered","considered","n1Priority","n2Priority","nodeGridPos","nodeBaryCenter","calcBaryCenter","nodePriority","moveRight","moveLeft","calcDownData","calcUpData","rightNode","rightNodePriority","leftNode","leftNodePriority","mapVirtualNode","nodeToLinkMap","linkToNodeMap","addLinkBetweenLayers","oLayer","dLayer","oPos","dPos","upLayer","downLayer","depthOfDumminess","dedum","moves","maxIterations","optimizeLayerCrossings","presorted","inode","n1BaryCenter","n2BaryCenter","compareByIndex","downwards","secondPass","hasSwapped","calcCrossings","memCrossings","crossBefore","node1","node2","node1GridPos","node2GridPos","crossAfter","countLinksCrossingBetweenTwoLayers","ulayer","dlayer","link1","link2","n11","n12","n21","n22","l1","l2","n11gp","n12gp","n21gp","n22gp","crossings","numerator","denominator","graphOrNodes","diagramOrGraphOrNodes","GraphAdapter","origEvent","isAutoConnector","closestConnector","resCtr","minimumDistance","MAXINT","indicesOfItems","filterShapeDataItem","filterConnectionDataItem","fromConnector","fromX","fromY","toConnector","toX","toY","connectionSelector","InactiveItem","InactiveItemsCollection","cloneDataItem","splitDiagramElements","createModel","clearField","copyDefaultOptions","mainOptions","translateToOrigin","defaultButtons","DiagramElement","Connector","Diagram","DiagramToolBar","CASCADING","DEFAULT_CANVAS_WIDTH","DEFAULT_CANVAS_HEIGHT","DEFAULT_SHAPE_TYPE","DEFAULT_SHAPE_WIDTH","DEFAULT_SHAPE_HEIGHT","DEFAULT_SHAPE_MINWIDTH","DEFAULT_SHAPE_MINHEIGHT","DEFAULT_SHAPE_POSITION","DEFAULT_CONNECTION_BACKGROUND","TRANSFORMED","MOUSEWHEEL_NS","MOBILE_ZOOM_RATE","MOBILE_PAN_DISTANCE","CONNECTION_CONTENT_OFFSET","DefaultConnectors","contentVisual","_contentVisual","_updateContentVisual","_createContentVisual","elementTemplate","_canSelect","shapeId","updateOptionsFromModel","createShapeVisual","updateBounds","_createConnectors","_setOptionsFromModel","redrawVisual","_redrawVisual","syncChanges","_suspendModelRefresh","_resumeModelRefresh","_rotate","_alignContent","containerRect","aligner","contentBounds","contentRect","alignedBounds","_transformedBounds","_rotatedBounds","_setBounds","_triggerBoundsChange","_layouting","refreshConnections","deselected","_internalSelection","_selectionChanged","sc","deltaAngle","newPosition","cons","nameOrPoint","_transformPoint","shapeOptions","boundsChange","shapeVisual","_visualOptions","_updateConnectors","_showConnectors","visualTemplate","_initRouter","_sourcePoint","_targetPoint","_setSource","_setTarget","definers","_dataMap","connectionsDataSource","shapeSource","defaultConnector","_removeFromSourceConnector","_clearSourceConnector","_setFromOptions","sourceDefiner","_sourceDefiner","shapeTarget","_removeFromTargetConnector","_clearTargetConnector","_setToOptions","targetDefiner","_targetDefiner","connectorName","setNewTarget","inactiveItem","_inactiveShapeItems","_deferredConnectionUpdates","onActivate","alignToPath","midIdx","_router","_resolveConnectors","_refreshPath","sourceConnectors","targetConnectors","_resolveAutoConnectors","minNonConflictSource","minNonConflictTarget","minSource","minTarget","sourceIdx","targetIdx","minNonConflict","_testRoutePoints","exclude","router","passRoute","_getRouteExclude","_shapesQuadTree","hitTestRect","_isPointInsideShape","boundsX","boundsY","_initElements","_extendLayoutOptions","_initDefaults","_interactionDefaults","_initCanvas","adornerLayer","_createHandlers","pauseMouseHandlers","_fetchFreshData","_createGlobalToolBar","_createOptionElements","_toolBarClick","createShape","_createShape","createConnection","_connectionsDataMap","addConnection","editModel","editorType","connectionSelectorHandler","cancelEdit","shapeEditors","shapeTemplate","connectionEditors","connectionTemplate","_editArgs","_getEditDataSource","saveEdit","userShapeDefaults","canvasContainer","viewPort","_userEvents","_gestureStart","_gestureChange","_gestureEnd","doubleTap","_mouseDown","_syncHandler","_pauseMouseHandlers","_eventPositions","_meta","_createToolBar","ctrlPressed","documentToModel","initialCenter","_gesture","_initialCenter","zoomedPoint","documentToView","updateZoom","_getValidZoom","_panTransform","_updateAdorners","pointPosition","shapesLength","_createShapes","_createConnections","_findConnectionTarget","destroyScroller","_destroyGlobalToolBar","_removeShapeDataItem","_removeConnectionDataItem","_getDiagramItems","_fixOrdering","bringIntoView","newPan","_zoomMainLayer","alignShapes","viewportVector","_getPan","_copyOffset","copied","_updateCopiedConnection","sourceConnection","di","_containerOffset","viewToDocument","viewToModel","_transformWithMatrix","_matrixInvert","_layerMatrix","layerToModel","_layerMatrixInvert","viewPoint","modelToDocument","setConnectionsDataSource","_connectionDataSource","_redrawConnections","getShapeByModelId","getShapeByModelUid","getConnectionByModelId","getConnectionByModelUid","_transformMainLayer","_finishPan","_storeViewMatrix","_storeLayerMatrix","canvasTransform","shapePos","conPos","removedConnections","_removeShape","_removeConnection","_removeDataItems","recursive","_removeShapeConnections","_addDataItem","_addDataItemByUid","_addDataItems","parentShape","_refreshSource","_bindingRoots","preventClosing","popupWidth","popupHeight","connectionBounds","singleToolBar","popupZIndex","_normalizePointZoom","undone","redone","_loadingShapes","_loadingConnections","_shapesRefreshHandler","_shapesRequestStartHandler","_shapesErrorHandler","_refreshShapes","_shapesRequestStart","_treeDataSource","_connectionsRefreshHandler","_connectionsRequestStartHandler","_connectionsErrorHandler","_refreshConnections","_connectionsRequestStart","_connectionsError","_shouldRefresh","_removeShapes","_updateShapes","_syncShapes","_rebindShapesAndConnections","_addShapes","_addConnections","_removeConnections","_updateConnections","_addConnectionDataItem","_validateConnector","adorners","viewRect","clipWrap","deferredConnectionUpdates","createToolBar","createTools","appendTools","kendoToolBar","getKendoToolBar","createTool","_setAttributes","editTool","deleteTool","rotateAnticlockwiseTool","_appendGroup","_rotateGroup","rotateClockwiseTool","createShapeTool","_createGroup","createConnectionTool","undoTool","_historyGroup","_getAttributes","selectedElements","selectedElemens","rotateClockwise","rotateAnticlockwise","_getFields","_renderFields","_renderButtons","_cancelClick","_attachButtonEvents","_cancelClickHandler","_updateClickHandler","_updateClick","deffered","_testRect","overlapsBounds","boundsChangeHandler","_boundsChange","rootSize","xIdx","yIdx","colorsByLength","rgbColor","minRGBtoDecimal","rgbToDecimal","maxRGBtoDecimal","isDarker","colorBrightness","colorByIndex","buildColorFromRGB","minColor","maxColor","currentStep","decimalToRgb","colorToRGB","rgbToHex","colorLength","DATA_BOUND","ITEM_CREATED","MOUSEOVER_NS","_setLayout","colorField","SliceAndDice","SliceAndDiceView","Squarified","SquarifiedView","_onDataChange","htmlSize","_wrapItem","compute","_setColors","_cleanItems","createRoot","_colorIdx","colorRange","leafNodes","colorIdx","_contentSize","renderHeight","_removeActiveState","_resizeItems","setItemSize","leaf","layoutChildren","minimumSideValue","parentArea","totalArea","itemsArea","layoutHorizontal","squarify","initElement","computeDim","newCoords","layoutLast","layoutRow","worstAspectRatio","layoutV","layoutH","layoutVertical","layoutChange","areaSum","rootCoord","newRootCoord","ans","_totalArea","_createTitle","_compile","_createWrap","rootWrap","_createLeaf","_createTile","_tileColorBrightness","_itemCoordinates","sliceAndDice","initPopOvers","popovers","preventScrollIfNotInput","initWidgets","UI_OVERLAY","BEFORE_SHOW","AFTER_SHOW","BEFORE_HIDE","inited","_invokeNgController","_padIfNativeScrolling","isAndroid","skin","isAndroidForced","hasPlatformIndependentSkin","topContainer","bottomContainer","scrollerContent","idAttrValue","_callController","previousView","_setupLayouts","showClosure","_loadView","modalViews","_getLayout","_xhr","_xhrComplete","CAPTURE_EVENTS","Loader","captureEvents","_attachCapture","changeMessage","transitionDone","EXTERNAL","DUMMY_HREF","WIDGET_RELS","_setupAppLinks","bindToRouter","attrUrl","hideLoading","showLoading","changeLoadingMessage","linkRoles","pressedButtonSelector","buttonSelectors","_appLinkClick","delayedTouchEnd","DIRECTION_CLASSES","ANIMATION","containerPopup","PopOver","initialOpen","SHIM","Shim","app","osname","ioswp","shim","_hide","BEFORE_OPEN","WRAP","ModalView","_shim","SWIPE_TO_OPEN","AFTER_HIDE","NULL_VIEW","drawer","_attachTransition","swipeToOpenViews","_moveViewTo","visibleOnCurrentView","_currentViewIncludedIn","_setAsCurrent","canMoveLeft","canMoveRight","leftSwipe","EXPANED_PANE_SHIM","SplitView","_paramsHistory","expandedPaneShim","_shimUserEvents","collapsePanes","expandPanes","osCssClass","setDefaultPlatform","statusBarStyle","wp8Background","noVariantSet","isOrientationHorizontal","getOrientationClass","setMinimumHeight","applyViewportHeight","HEAD","viewportTemplate","DEFAULT_OS","BERRYPHONEGAP","FONT_SIZE_COEF","CHROME","BROKEN_WEBVIEW_RESIZE","INITIALLY_HORIZONTAL","MOBILE_PLATFORMS","ios7","usedWithBlock","systemMeta","clipTemplate","ENABLE_CLIP","iconMeta","HIDEBAR","SUPPORT_SWIPE_TO_GO_BACK","HISTORY_TRANSITION","BARCOMPENSATION","STATUS_BAR_HEIGHT","SCREEN","Application","bootstrap","startHistory","_setupPlatform","_attachMeta","_setupElementClass","_attachHideBarHandlers","updateDocumentTitle","_setupDocumentTitle","_startHistory","hideAddressBar","browserHistory","historyTransition","retina","refreshBackgroundColorProxy","_resizeToScreenHeight","includeStatusBar","_clearExistingMeta","hideBar","defaultTitle","_hideBar","CONTEXT_DATA","cancelTemplate","ShimClass","_shimHideProxy","actionData","_shimHide","highlightButton","ANDROID3UP","deactivateTimeoutID","useTap","clickOn","_timeoutDeactivate","badgeElement","iconSpan","BackButton","DetailButton","DISABLE","selectOn","COLLAPSIBLE","INSET","HEADER_WRAPPER","CONTENT_WRAPPER","COLLAPSED","EXPANDED","ANIMATED","EXAPND","Collapsible","_buildHeader","inset","collapseIcon","expandIcon","iconPosition","_getContentHeight","addIcon","enhanceItem","enhanceLinkItem","itemAndDetailButtons","otherNodes","enhanceCheckBoxItem","putAt","VirtualListViewItem","LOAD_ICON","VirtualListViewLoadingIndicator","VirtualListViewPressToLoadMore","VirtualListViewItemBinder","ListViewItemBinder","ListViewFilter","ITEM_SELECTOR","HIGHLIGHT_SELECTOR","GROUP_CLASS","ACTIVE_CLASS","GROUP_WRAPPER","GROUP_TEMPLATE","SEARCH_TEMPLATE","STYLED","buttonRegExp","HeaderFixer","headerFixer","cacheHeaders","_shouldFixHeaders","_cacheHeaders","_fixHeader","fixedHeaders","headerPair","currentHeader","DEFAULT_PULL_PARAMETERS","RefreshHandler","pullParameters","pull","_pulled","itemConstructor","prevItem","endReached","below","averageItemHeight","remainingItemsCount","batchUpdate","initialOffset","lastDirection","above","lastTop","setDataItem","_loadIcon","_loadButton","loadMoreText","loadMore","kendoMobileButton","_hideShowButton","_showLoadButton","chromeHeight","pressToLoadMore","virtualViewSize","updateScrollerSize","updateSize","itemBinder","adding","removing","prependOnRefresh","appendOnRefresh","groupedMode","findByDataItem","_shouldShowLoading","replaceGrouped","endlessScroll","searchInput","_oldFilter","_dataSourceChange","_refreshInput","appliedFilters","_applyFilter","scrollTreshold","scrollThreshold","_headerFixer","_itemsCache","_itemBinder","_pullToRefreshHandler","_enhanceItems","_scrollerInstance","replaceItem","newItem","_dim","plainItem","dataIDAttribute","groupTemplateProxy","_headerTemplate","buttonElement","_styleGroups","enhanced","toggleTitle","noTitle","showTitle","NavBar","leftElement","rightElement","_buffer","_endReachedProxy","_updatePagesContent","_onResize","_onEndReached","mobileContainer","_syncWithContent","minLimit","maxLimit","SWITCHON","SWITCHOFF","MARGINLEFT","ACTIVE_STATE","DISABLED_STATE","RESOLVEDPREFIX","TRANSFORMSTYLE","SWITCH_MARKUP","onLabel","offLabel","snapPoint","_animateBackground","ACTIVE_STATE_CLASS","_buildButton","switchTo","_setActiveItem","switchByFullUrl"],"mappings":"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DA,GAAIoH,IACIA,GAAcpH,EAAY/4hB,QAC9BmgiB,EAAapH,EAAYp9gB,OAExBwkhB,IAGDA,EAAW31hB,SAAS08I,EAAc18I,GAClCrK,EAAQ0xB,UAHR6pgB,EAAKznV,KAAKp2E,EAAW,4EAA8E9wH,EAAQzN,KAAK,oBAW9IP,OAAOuB,MAAM8P,OAAQrR,OAAOyvB,SACvBzvB,OAAOuB,OACE,kBAAVzB,SAAwBA,OAAOykC,IAAMzkC,OAAS,SAAU0kC,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAU5kC,EAAGC,QACVA,OAAO,aACH,aACA,eACA,aACA,WACA,YACA,mBACA,iBACA,aACA,cACA,cACA,qBACA,eACA,gBACA,kBACA,mBACA,oBACA,wBACA,kBACA,oBACA,kBACA,iBACA,mBACA,aACA,eACA,oBACA,eACA,cACA,cACA,qBACA,gBACA,aACA,iBACA,mBACA,kBACA,eACA,0BACA,qBACA,qBACA,qBACA,iBACA,oBACA,4BACA,oBACA,mBACA,qBACA,aACA,iBACA,gBACA,oBACA,qBACA,eACA,uBACA,sBACA,oBACA,aACA,iBACA,wBACA,eACA,mBACA,iBACA,oBACA,wBACA,iBACA,mBACA,gBACA,uBACA,wBACA,6BACA,iBACA,mBACA,eACA,iBACA,eACA,eACA,eACA,oBACA,uBACA,0BACA,6BACA,4BACA,6BACA,kBACA,mBACA,uBACA,cACA,iBACA,iBACA,kBACA,oBACA,2BACA,eACA,kBACA,eACA,iBACDD,IACL,WACE,YACA,OAAOG,QAAOuB,OACE,kBAAVzB,SAAwBA,OAAOykC,IAAMzkC,OAAS,SAAU0kC,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAU5kC,EAAGC,QACVA,OAAO,2BACH,aACA,iBACDD,IACL,YACG,SAAUE,GA4FP,QAASqQ,GAAQ7I,GACb,MAAO/B,OAAM4K,QAAQ7I,GAEzB,QAAS9D,GAASrC,EAAS4J,GAA3B,GAEa1D,GACDM,EAFJm7hB,EAAa3yhB,EAAQpF,GAAWA,GAAWA,EAC/C,KAAS1D,EAAM,EAAGA,EAAMy7hB,EAAW9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ACA7ve,GACA2kE,GACAC,GACAC,GACAjsG,GACAmpL,GACA61V,GACA9tC,GACA9hf,GACA8Q,GACA6+gB,GACAv8X,GACA60X,GACAwH,GACAx4c,GACAllE,GACA/d,GACAy9hB,GACA71c,GACA0sc,GACAzB,GACAc,GACAz2hB,GACA5H,GACA2vF,GACA2kI,GACA11N,GACAg2B,GACAo6D,GACA0zD,GACAmmZ,GACAR,GACArK,GACAsM,GACA/hf,GACA2qd,GACAh3f,GACA0hhB,GACAwL,GACAhB,GACAvzhB,GACAs6E,GACAh9D,GACA89D,GACAiuc,GACAtuc,GACA83c,GACAp3c,GACAx0F,GACA8qB,GACA4iF,GACA/yC,GACAi+C,GACAjY,GACApc,GACAm2B,GACAq2c,GACAh5f,GACAm4f,GA+BA2G,GAUAC,GAkBAC,GA8EArF,GAiHAsF,GACAC,GACAC,GACAC,GACAC,GA2GAj2jB,GACAk2jB,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA3+iB,GACAm5iB,GACAyF,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACApwO,GACAqwO,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAaAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA1ub,GACA25M,GACAD,GACAi1O,GACAC,GACAC,GACAC,GACAz1b,GACA01b,GACA1yC,GACA2yC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA/2W,GACAg3W,GACAxwB,GAmFAywB,GACAC,GAqGAC,GAMAtL,GA2CAuL,GAmdAC,GA6BAC,GAgBAC,GA8QAC,GAmEAC,GAsCAC,GAMAC,GAuBAC,GAiEAC,GA4BAC,GAuBAC,GA8EAC,GAgGAC,GASAC,GAgBAC,GAqGAC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ACAG,KAEAxH,GACAoH,GACAE,KAEJpR,GAAa18iB,QAAQwc,UACjB2oiB,GACApB,KACAnmgB,KACA4ogB,GACAoH,GACAE,GACAC,KAEJrR,GAAa18iB,QAAQwc,UACjB2niB,GACAC,GACAC,KAEA38D,GACA9hf,KACAgojB,KACJlR,GAAa18iB,QAAQwc,UACjB8niB,GACAC,GACAC,KACA5mgB,KAASgwgB,KACblR,GAAa18iB,QAAQwc,UAAUsniB,KAAUlmgB,KACrC4ogB,GACAoH,GACA,kBACA,YAEJlE,GAAkB1pjB,QAAQwc,UACtBgniB,GACAhwO,GACAwwO,GACAiB,GACA1B,GACAuB,GACAK,GACApB,KAEAhzjB,MAAOy1K,GACPhuG,MAAOklF,GACPq2a,SAAUr2a,GACV28b,SAAUj/a,GACVk/a,UAAW9za,KAEfkjZ,GAAkB1pjB,QAAQwc,UACtBmoiB,GACAD,GACAD,GACAS,KAEA5jiB,KAAM85I,GACN75I,GAAIilJ,GACJhuG,MAAOklF,GACPq2a,SAAUr2a,KAEdgsa,GAAkB1pjB,QAAQwc,UACtB8niB,GACAC,GACAC,KAEAzzjB,MAAOy1K,GACPhuG,MAAOklF,KAEXg/Z,GAAa18iB,QAAQwc,UACjBooiB,GACAC,GACAnB,KAEAh8D,GACA9hf,KAEAgojB,GACAE,GACAjL,GACAC,GACAC,GACAC,KAEJtG,GAAa18iB,QAAQwc,UAAUkniB,KAC3Bh8D,GACA9hf,GACA,SAEAgojB,GACApH,GACAsH,KAEJpR,GAAa18iB,QAAQwc,UACjBoniB,GACAK,KAEA,OACA,OACA,MACA,UAEAuC,GACAoH,GACA,YACAE,KAEJpE,GAAkB1pjB,QAAQwc,UACtBoniB,GACAK,KAEAjgc,KAAMwiD,GACNqM,KAAMrM,GACNoM,IAAKxX,GACLnnI,MAAOuyI,GACPhuG,MAAOklF,GACPs5Z,UAAWt5Z,GACXq2a,SAAUr2a,KAEdg/Z,GAAa18iB,QAAQwc,UACjBiniB,GACAsB,KAEA,QACA,KACA,SACA,KACA,QACA,OACA,aAEAyB,GACAoH,GACAE,KAEJpE,GAAkB1pjB,QAAQwc,U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AAIt7lB,GAAO/H,IACX+H,GAAK21hB,SAAW31hB,EAAKpP,OAASoP,EAAK+2hB,WAAa/2hB,EAAK03lB,kBAEzDwC,WAAY,SAAU/+jB,GAAV,GACuDtlC,GACtD/C,EADLkN,EAAO/H,KAAMwO,EAAUzG,GAAAA,EAAKw4lB,aAAar9jB,EAC7C,KAASroC,EAAI,EAAGA,EAAI2T,EAAQlX,OAAQuD,IAChC+C,EAAQ0E,SAASkM,EAAQzX,OAAO8D,GAAI,IACpCkN,EAAKyG,QAAQvF,KAAKrL,GAClBmK,EAAK+2hB,YAAclhiB,CAEvBmK,GAAK0+lB,UAAYvjkB,EAAOn7B,EAAKrN,YAEjCgsmB,aAAc,SAAUvC,EAAepuU,GACnC,IAAK,GAAIl7R,GAAI,EAAGA,EAAIk7R,EAAOz+R,OAAQuD,IAC/B,GAAImF,KAAK+1R,EAAOl7R,IAAIhB,GAAGsqmB,EAAcvmmB,MAAOummB,EAAc7wlB,OACtD,MAAOyiR,GAAOl7R,EAGtBmF,MAAK8/lB,sBAAsBqE,EAAcvmmB,MAAM7G,OAAOotmB,EAAc7wlB,SAExEitlB,cACI,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,SAEJoG,KAAM,MAEV5G,EAAU6G,SAAW1H,EAAYx+lB,QAC7B6G,KAAM,aA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,IAGhB2B,GAAG4G,OAAO4+T,IACZ3xV,OAAOuB,MAAM8P,QACRrR,OAAOuB,OACE,kBAAVzB,SAAwBA,OAAOykC,IAAMzkC,OAAS,SAAU0kC,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAU5kC,EAAGC,QACVA,OAAO,gBACH,aACA,WACA,mBACA,iBACA,aACA,qBACA,eACA,kBACA,eACA,aACA,mBACA,oBACA,cACA,cACA,uBACA,sBACA,wBACA,oBACA,oBACA,yBACA,sBACA,yBACA,oBACA,2BACA,2BACA,sBACA,2BACA,2BACA,wBACA,sBACA,0BACA,sBACA,wBACA,iBACDD,IACL,WACE,YACA,OAAOG,QAAOuB,OACE,kBAAVzB,SAAwBA,OAAOykC,IAAMzkC,OAAS,SAAU0kC,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAU5kC,EAAGC,QACVA,OAAO,aACH,YACA,gBACA,eACA,gBACA,aACDD,IACL,WACE,YACA,OAAOG,QAAOuB,OACE,kBAAVzB,SAAwBA,OAAOykC,IAAMzkC,OAAS,SAAU0kC,EAAIC,EAAIC,IACrEA,GAAMD","file":"kendo.all.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.core', ['jquery'], f);\n}(function () {\n var __meta__ = {\n id: 'core',\n name: 'Core',\n category: 'framework',\n description: 'The core of the Kendo framework.'\n };\n (function ($, window, undefined) {\n var kendo = window.kendo = window.kendo || { cultures: {} }, extend = $.extend, each = $.each, isArray = $.isArray, proxy = $.proxy, noop = $.noop, math = Math, Template, JSON = window.JSON || {}, support = {}, percentRegExp = /%/, formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g, boxShadowRegExp = /(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+)?/i, numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/, FUNCTION = 'function', STRING = 'string', NUMBER = 'number', OBJECT = 'object', NULL = 'null', BOOLEAN = 'boolean', UNDEFINED = 'undefined', getterCache = {}, setterCache = {}, slice = [].slice, noDepricateExtend = function () {\n var src, copyIsArray, copy, name, options, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;\n if (typeof target === 'boolean') {\n deep = target;\n target = arguments[i] || {};\n i++;\n }\n if (typeof target !== 'object' && !jQuery.isFunction(target)) {\n target = {};\n }\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n if ((options = arguments[i]) != null) {\n for (name in options) {\n if (name == 'filters' || name == 'concat' || name == ':') {\n continue;\n }\n src = target[name];\n copy = options[name];\n if (target === copy) {\n continue;\n }\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && jQuery.isArray(src) ? src : [];\n } else {\n clone = src && jQuery.isPlainObject(src) ? src : {};\n }\n target[name] = noDepricateExtend(deep, clone, copy);\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n };\n kendo.version = '2019.3.917'.replace(/^\\s+|\\s+$/g, '');\n function Class() {\n }\n Class.extend = function (proto) {\n var base = function () {\n }, member, that = this, subclass = proto && proto.init ? proto.init : function () {\n that.apply(this, arguments);\n }, fn;\n base.prototype = that.prototype;\n fn = subclass.fn = subclass.prototype = new base();\n for (member in proto) {\n if (proto[member] != null && proto[member].constructor === Object) {\n fn[member] = extend(true, {}, base.prototype[member], proto[member]);\n } else {\n fn[member] = proto[member];\n }\n }\n fn.constructor = subclass;\n subclass.extend = that.extend;\n return subclass;\n };\n Class.prototype._initOptions = function (options) {\n this.options = deepExtend({}, this.options, options);\n };\n var isFunction = kendo.isFunction = function (fn) {\n return typeof fn === 'function';\n };\n var preventDefault = function () {\n this._defaultPrevented = true;\n };\n var isDefaultPrevented = function () {\n return this._defaultPrevented === true;\n };\n var Observable = Class.extend({\n init: function () {\n this._events = {};\n },\n bind: function (eventName, handlers, one) {\n var that = this, idx, eventNames = typeof eventName === STRING ? [eventName] : eventName, length, original, handler, handlersIsFunction = typeof handlers === FUNCTION, events;\n if (handlers === undefined) {\n for (idx in eventName) {\n that.bind(idx, eventName[idx]);\n }\n return that;\n }\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n handler = handlersIsFunction ? handlers : handlers[eventName];\n if (handler) {\n if (one) {\n original = handler;\n handler = function () {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n handler.original = original;\n }\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n return that;\n },\n one: function (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n },\n first: function (eventName, handlers) {\n var that = this, idx, eventNames = typeof eventName === STRING ? [eventName] : eventName, length, handler, handlersIsFunction = typeof handlers === FUNCTION, events;\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n handler = handlersIsFunction ? handlers : handlers[eventName];\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n return that;\n },\n trigger: function (eventName, e) {\n var that = this, events = that._events[eventName], idx, length;\n if (events) {\n e = e || {};\n e.sender = that;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n events = events.slice();\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n return e._defaultPrevented === true;\n }\n return false;\n },\n unbind: function (eventName, handler) {\n var that = this, events = that._events[eventName], idx;\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n return that;\n }\n });\n function compilePart(part, stringPart) {\n if (stringPart) {\n return '\\'' + part.split('\\'').join('\\\\\\'').split('\\\\\"').join('\\\\\\\\\\\\\"').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\t/g, '\\\\t') + '\\'';\n } else {\n var first = part.charAt(0), rest = part.substring(1);\n if (first === '=') {\n return '+(' + rest + ')+';\n } else if (first === ':') {\n return '+$kendoHtmlEncode(' + rest + ')+';\n } else {\n return ';' + part + ';$kendoOutput+=';\n }\n }\n }\n var argumentNameRegExp = /^\\w+/, encodeRegExp = /\\$\\{([^}]*)\\}/g, escapedCurlyRegExp = /\\\\\\}/g, curlyRegExp = /__CURLY__/g, escapedSharpRegExp = /\\\\#/g, sharpRegExp = /__SHARP__/g, zeros = [\n '',\n '0',\n '00',\n '000',\n '0000'\n ];\n Template = {\n paramName: 'data',\n useWithBlock: true,\n render: function (template, data) {\n var idx, length, html = '';\n for (idx = 0, length = data.length; idx < length; idx++) {\n html += template(data[idx]);\n }\n return html;\n },\n compile: function (template, options) {\n var settings = extend({}, this, options), paramName = settings.paramName, argumentName = paramName.match(argumentNameRegExp)[0], useWithBlock = settings.useWithBlock, functionBody = 'var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;', fn, parts, idx;\n if (isFunction(template)) {\n return template;\n }\n functionBody += useWithBlock ? 'with(' + paramName + '){' : '';\n functionBody += '$kendoOutput=';\n parts = template.replace(escapedCurlyRegExp, '__CURLY__').replace(encodeRegExp, '#=$kendoHtmlEncode($1)#').replace(curlyRegExp, '}').replace(escapedSharpRegExp, '__SHARP__').split('#');\n for (idx = 0; idx < parts.length; idx++) {\n functionBody += compilePart(parts[idx], idx % 2 === 0);\n }\n functionBody += useWithBlock ? ';}' : ';';\n functionBody += 'return $kendoOutput;';\n functionBody = functionBody.replace(sharpRegExp, '#');\n try {\n fn = new Function(argumentName, functionBody);\n fn._slotCount = Math.floor(parts.length / 2);\n return fn;\n } catch (e) {\n throw new Error(kendo.format('Invalid template:\\'{0}\\' Generated code:\\'{1}\\'', template, functionBody));\n }\n }\n };\n function pad(number, digits, end) {\n number = number + '';\n digits = digits || 2;\n end = digits - number.length;\n if (end) {\n return zeros[digits].substring(0, end) + number;\n }\n return number;\n }\n (function () {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g, gap, indent, meta = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n }, rep, toString = {}.toString;\n if (typeof Date.prototype.toJSON !== FUNCTION) {\n Date.prototype.toJSON = function () {\n var that = this;\n return isFinite(that.valueOf()) ? pad(that.getUTCFullYear(), 4) + '-' + pad(that.getUTCMonth() + 1) + '-' + pad(that.getUTCDate()) + 'T' + pad(that.getUTCHours()) + ':' + pad(that.getUTCMinutes()) + ':' + pad(that.getUTCSeconds()) + 'Z' : null;\n };\n String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () {\n return this.valueOf();\n };\n }\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === STRING ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n function str(key, holder) {\n var i, k, v, length, mind = gap, partial, value = holder[key], type;\n if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) {\n value = value.toJSON(key);\n }\n if (typeof rep === FUNCTION) {\n value = rep.call(holder, key, value);\n }\n type = typeof value;\n if (type === STRING) {\n return quote(value);\n } else if (type === NUMBER) {\n return isFinite(value) ? String(value) : NULL;\n } else if (type === BOOLEAN || type === NULL) {\n return String(value);\n } else if (type === OBJECT) {\n if (!value) {\n return NULL;\n }\n gap += indent;\n partial = [];\n if (toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i++) {\n partial[i] = str(i, value) || NULL;\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === OBJECT) {\n length = rep.length;\n for (i = 0; i < length; i++) {\n if (typeof rep[i] === STRING) {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n if (typeof JSON.stringify !== FUNCTION) {\n JSON.stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === NUMBER) {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === STRING) {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) {\n throw new Error('JSON.stringify');\n }\n return str('', { '': value });\n };\n }\n }());\n (function () {\n var dateFormatRegExp = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g, standardFormatRegExp = /^(n|c|p|e)(\\d*)$/i, literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g, commaRegExp = /\\,/g, EMPTY = '', POINT = '.', COMMA = ',', SHARP = '#', ZERO = '0', PLACEHOLDER = '??', EN = 'en-US', objectToString = {}.toString;\n kendo.cultures['en-US'] = {\n name: EN,\n numberFormat: {\n pattern: ['-n'],\n decimals: 2,\n ',': ',',\n '.': '.',\n groupSize: [3],\n percent: {\n pattern: [\n '-n %',\n 'n %'\n ],\n decimals: 2,\n ',': ',',\n '.': '.',\n groupSize: [3],\n symbol: '%'\n },\n currency: {\n name: 'US Dollar',\n abbr: 'USD',\n pattern: [\n '($n)',\n '$n'\n ],\n decimals: 2,\n ',': ',',\n '.': '.',\n groupSize: [3],\n symbol: '$'\n }\n },\n calendars: {\n standard: {\n days: {\n names: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ],\n namesAbbr: [\n 'Sun',\n 'Mon',\n 'Tue',\n 'Wed',\n 'Thu',\n 'Fri',\n 'Sat'\n ],\n namesShort: [\n 'Su',\n 'Mo',\n 'Tu',\n 'We',\n 'Th',\n 'Fr',\n 'Sa'\n ]\n },\n months: {\n names: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n namesAbbr: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ]\n },\n AM: [\n 'AM',\n 'am',\n 'AM'\n ],\n PM: [\n 'PM',\n 'pm',\n 'PM'\n ],\n patterns: {\n d: 'M/d/yyyy',\n D: 'dddd, MMMM dd, yyyy',\n F: 'dddd, MMMM dd, yyyy h:mm:ss tt',\n g: 'M/d/yyyy h:mm tt',\n G: 'M/d/yyyy h:mm:ss tt',\n m: 'MMMM dd',\n M: 'MMMM dd',\n s: 'yyyy\\'-\\'MM\\'-\\'ddTHH\\':\\'mm\\':\\'ss',\n t: 'h:mm tt',\n T: 'h:mm:ss tt',\n u: 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n y: 'MMMM, yyyy',\n Y: 'MMMM, yyyy'\n },\n '/': '/',\n ':': ':',\n firstDay: 0,\n twoDigitYearMax: 2029\n }\n }\n };\n function findCulture(culture) {\n if (culture) {\n if (culture.numberFormat) {\n return culture;\n }\n if (typeof culture === STRING) {\n var cultures = kendo.cultures;\n return cultures[culture] || cultures[culture.split('-')[0]] || null;\n }\n return null;\n }\n return null;\n }\n function getCulture(culture) {\n if (culture) {\n culture = findCulture(culture);\n }\n return culture || kendo.cultures.current;\n }\n kendo.culture = function (cultureName) {\n var cultures = kendo.cultures, culture;\n if (cultureName !== undefined) {\n culture = findCulture(cultureName) || cultures[EN];\n culture.calendar = culture.calendars.standard;\n cultures.current = culture;\n } else {\n return cultures.current;\n }\n };\n kendo.findCulture = findCulture;\n kendo.getCulture = getCulture;\n kendo.culture(EN);\n function formatDate(date, format, culture) {\n culture = getCulture(culture);\n var calendar = culture.calendars.standard, days = calendar.days, months = calendar.months;\n format = calendar.patterns[format] || format;\n return format.replace(dateFormatRegExp, function (match) {\n var minutes;\n var result;\n var sign;\n if (match === 'd') {\n result = date.getDate();\n } else if (match === 'dd') {\n result = pad(date.getDate());\n } else if (match === 'ddd') {\n result = days.namesAbbr[date.getDay()];\n } else if (match === 'dddd') {\n result = days.names[date.getDay()];\n } else if (match === 'M') {\n result = date.getMonth() + 1;\n } else if (match === 'MM') {\n result = pad(date.getMonth() + 1);\n } else if (match === 'MMM') {\n result = months.namesAbbr[date.getMonth()];\n } else if (match === 'MMMM') {\n result = months.names[date.getMonth()];\n } else if (match === 'yy') {\n result = pad(date.getFullYear() % 100);\n } else if (match === 'yyyy') {\n result = pad(date.getFullYear(), 4);\n } else if (match === 'h') {\n result = date.getHours() % 12 || 12;\n } else if (match === 'hh') {\n result = pad(date.getHours() % 12 || 12);\n } else if (match === 'H') {\n result = date.getHours();\n } else if (match === 'HH') {\n result = pad(date.getHours());\n } else if (match === 'm') {\n result = date.getMinutes();\n } else if (match === 'mm') {\n result = pad(date.getMinutes());\n } else if (match === 's') {\n result = date.getSeconds();\n } else if (match === 'ss') {\n result = pad(date.getSeconds());\n } else if (match === 'f') {\n result = math.floor(date.getMilliseconds() / 100);\n } else if (match === 'ff') {\n result = date.getMilliseconds();\n if (result > 99) {\n result = math.floor(result / 10);\n }\n result = pad(result);\n } else if (match === 'fff') {\n result = pad(date.getMilliseconds(), 3);\n } else if (match === 'tt') {\n result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0];\n } else if (match === 'zzz') {\n minutes = date.getTimezoneOffset();\n sign = minutes < 0;\n result = math.abs(minutes / 60).toString().split('.')[0];\n minutes = math.abs(minutes) - result * 60;\n result = (sign ? '+' : '-') + pad(result);\n result += ':' + pad(minutes);\n } else if (match === 'zz' || match === 'z') {\n result = date.getTimezoneOffset() / 60;\n sign = result < 0;\n result = math.abs(result).toString().split('.')[0];\n result = (sign ? '+' : '-') + (match === 'zz' ? pad(result) : result);\n }\n return result !== undefined ? result : match.slice(1, match.length - 1);\n });\n }\n function formatNumber(number, format, culture) {\n culture = getCulture(culture);\n var numberFormat = culture.numberFormat, decimal = numberFormat[POINT], precision = numberFormat.decimals, pattern = numberFormat.pattern[0], literals = [], symbol, isCurrency, isPercent, customPrecision, formatAndPrecision, negative = number < 0, integer, fraction, integerLength, fractionLength, replacement = EMPTY, value = EMPTY, idx, length, ch, hasGroup, hasNegativeFormat, decimalIndex, sharpIndex, zeroIndex, hasZero, hasSharp, percentIndex, currencyIndex, startZeroIndex, start = -1, end;\n if (number === undefined) {\n return EMPTY;\n }\n if (!isFinite(number)) {\n return number;\n }\n if (!format) {\n return culture.name.length ? number.toLocaleString() : number.toString();\n }\n formatAndPrecision = standardFormatRegExp.exec(format);\n if (formatAndPrecision) {\n format = formatAndPrecision[1].toLowerCase();\n isCurrency = format === 'c';\n isPercent = format === 'p';\n if (isCurrency || isPercent) {\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n pattern = numberFormat.pattern[negative ? 0 : 1];\n }\n customPrecision = formatAndPrecision[2];\n if (customPrecision) {\n precision = +customPrecision;\n }\n if (format === 'e') {\n var exp = customPrecision ? number.toExponential(precision) : number.toExponential();\n return exp.replace(POINT, numberFormat[POINT]);\n }\n if (isPercent) {\n number *= 100;\n }\n number = round(number, precision);\n negative = number < 0;\n number = number.split(POINT);\n integer = number[0];\n fraction = number[1];\n if (negative) {\n integer = integer.substring(1);\n }\n value = groupInteger(integer, 0, integer.length, numberFormat);\n if (fraction) {\n value += decimal + fraction;\n }\n if (format === 'n' && !negative) {\n return value;\n }\n number = EMPTY;\n for (idx = 0, length = pattern.length; idx < length; idx++) {\n ch = pattern.charAt(idx);\n if (ch === 'n') {\n number += value;\n } else if (ch === '$' || ch === '%') {\n number += symbol;\n } else {\n number += ch;\n }\n }\n return number;\n }\n if (format.indexOf('\\'') > -1 || format.indexOf('\"') > -1 || format.indexOf('\\\\') > -1) {\n format = format.replace(literalRegExp, function (match) {\n var quoteChar = match.charAt(0).replace('\\\\', ''), literal = match.slice(1).replace(quoteChar, '');\n literals.push(literal);\n return PLACEHOLDER;\n });\n }\n format = format.split(';');\n if (negative && format[1]) {\n format = format[1];\n hasNegativeFormat = true;\n } else if (number === 0 && format[2]) {\n format = format[2];\n if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {\n return format;\n }\n } else {\n format = format[0];\n }\n percentIndex = format.indexOf('%');\n currencyIndex = format.indexOf('$');\n isPercent = percentIndex != -1;\n isCurrency = currencyIndex != -1;\n if (isPercent) {\n number *= 100;\n }\n if (isCurrency && format[currencyIndex - 1] === '\\\\') {\n format = format.split('\\\\').join('');\n isCurrency = false;\n }\n if (isCurrency || isPercent) {\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n }\n hasGroup = format.indexOf(COMMA) > -1;\n if (hasGroup) {\n format = format.replace(commaRegExp, EMPTY);\n }\n decimalIndex = format.indexOf(POINT);\n length = format.length;\n if (decimalIndex != -1) {\n fraction = number.toString().split('e');\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n hasZero = zeroIndex > -1;\n hasSharp = sharpIndex > -1;\n idx = fraction.length;\n if (!hasZero && !hasSharp) {\n format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n length = format.length;\n decimalIndex = -1;\n idx = 0;\n }\n if (hasZero && zeroIndex > sharpIndex) {\n idx = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && idx > sharpIndex) {\n var rounded = round(number, sharpIndex, negative);\n while (rounded.charAt(rounded.length - 1) === ZERO && sharpIndex > 0 && sharpIndex > zeroIndex) {\n sharpIndex--;\n rounded = round(number, sharpIndex, negative);\n }\n idx = sharpIndex;\n } else if (hasZero && idx < zeroIndex) {\n idx = zeroIndex;\n }\n }\n }\n number = round(number, idx, negative);\n sharpIndex = format.indexOf(SHARP);\n startZeroIndex = zeroIndex = format.indexOf(ZERO);\n if (sharpIndex == -1 && zeroIndex != -1) {\n start = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n start = sharpIndex;\n } else {\n start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;\n }\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n if (sharpIndex == -1 && zeroIndex != -1) {\n end = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n end = sharpIndex;\n } else {\n end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;\n }\n if (start == length) {\n end = start;\n }\n if (start != -1) {\n value = number.toString().split(POINT);\n integer = value[0];\n fraction = value[1] || EMPTY;\n integerLength = integer.length;\n fractionLength = fraction.length;\n if (negative && number * -1 >= 0) {\n negative = false;\n }\n number = format.substring(0, start);\n if (negative && !hasNegativeFormat) {\n number += '-';\n }\n for (idx = start; idx < length; idx++) {\n ch = format.charAt(idx);\n if (decimalIndex == -1) {\n if (end - idx < integerLength) {\n number += integer;\n break;\n }\n } else {\n if (zeroIndex != -1 && zeroIndex < idx) {\n replacement = EMPTY;\n }\n if (decimalIndex - idx <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n if (decimalIndex === idx) {\n number += (fraction ? decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, integerLength + start), numberFormat);\n }\n if (end >= start) {\n number += format.substring(end + 1);\n }\n if (isCurrency || isPercent) {\n value = EMPTY;\n for (idx = 0, length = number.length; idx < length; idx++) {\n ch = number.charAt(idx);\n value += ch === '$' || ch === '%' ? symbol : ch;\n }\n number = value;\n }\n length = literals.length;\n if (length) {\n for (idx = 0; idx < length; idx++) {\n number = number.replace(PLACEHOLDER, literals[idx]);\n }\n }\n }\n return number;\n }\n var groupInteger = function (number, start, end, numberFormat) {\n var decimalIndex = number.indexOf(numberFormat[POINT]);\n var groupSizes = numberFormat.groupSize.slice();\n var groupSize = groupSizes.shift();\n var integer, integerLength;\n var idx, parts, value;\n var newGroupSize;\n end = decimalIndex !== -1 ? decimalIndex : end + 1;\n integer = number.substring(start, end);\n integerLength = integer.length;\n if (integerLength >= groupSize) {\n idx = integerLength;\n parts = [];\n while (idx > -1) {\n value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n if (groupSize === 0) {\n if (idx > 0) {\n parts.push(integer.substring(0, idx));\n }\n break;\n }\n }\n integer = parts.reverse().join(numberFormat[COMMA]);\n number = number.substring(0, start) + integer + number.substring(end);\n }\n return number;\n };\n var round = function (value, precision, negative) {\n precision = precision || 0;\n value = value.toString().split('e');\n value = Math.round(+(value[0] + 'e' + (value[1] ? +value[1] + precision : precision)));\n if (negative) {\n value = -value;\n }\n value = value.toString().split('e');\n value = +(value[0] + 'e' + (value[1] ? +value[1] - precision : -precision));\n return value.toFixed(Math.min(precision, 20));\n };\n var toString = function (value, fmt, culture) {\n if (fmt) {\n if (objectToString.call(value) === '[object Date]') {\n return formatDate(value, fmt, culture);\n } else if (typeof value === NUMBER) {\n return formatNumber(value, fmt, culture);\n }\n }\n return value !== undefined ? value : '';\n };\n kendo.format = function (fmt) {\n var values = arguments;\n return fmt.replace(formatRegExp, function (match, index, placeholderFormat) {\n var value = values[parseInt(index, 10) + 1];\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : '');\n });\n };\n kendo._extractFormat = function (format) {\n if (format.slice(0, 3) === '{0:') {\n format = format.slice(3, format.length - 1);\n }\n return format;\n };\n kendo._activeElement = function () {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n };\n kendo._round = round;\n kendo._outerWidth = function (element, includeMargin) {\n return $(element).outerWidth(includeMargin || false) || 0;\n };\n kendo._outerHeight = function (element, includeMargin) {\n return $(element).outerHeight(includeMargin || false) || 0;\n };\n kendo.toString = toString;\n }());\n (function () {\n var nonBreakingSpaceRegExp = /\\u00A0/g, exponentRegExp = /[eE][\\-+]?[0-9]+/, shortTimeZoneRegExp = /[+|\\-]\\d{1,2}/, longTimeZoneRegExp = /[+|\\-]\\d{1,2}:?\\d{2}/, dateRegExp = /^\\/Date\\((.*?)\\)\\/$/, offsetRegExp = /[+-]\\d*/, FORMATS_SEQUENCE = [\n [],\n [\n 'G',\n 'g',\n 'F'\n ],\n [\n 'D',\n 'd',\n 'y',\n 'm',\n 'T',\n 't'\n ]\n ], STANDARD_FORMATS = [\n [\n 'yyyy-MM-ddTHH:mm:ss.fffffffzzz',\n 'yyyy-MM-ddTHH:mm:ss.fffffff',\n 'yyyy-MM-ddTHH:mm:ss.fffzzz',\n 'yyyy-MM-ddTHH:mm:ss.fff',\n 'ddd MMM dd yyyy HH:mm:ss',\n 'yyyy-MM-ddTHH:mm:sszzz',\n 'yyyy-MM-ddTHH:mmzzz',\n 'yyyy-MM-ddTHH:mmzz',\n 'yyyy-MM-ddTHH:mm:ss',\n 'yyyy-MM-dd HH:mm:ss',\n 'yyyy/MM/dd HH:mm:ss'\n ],\n [\n 'yyyy-MM-ddTHH:mm',\n 'yyyy-MM-dd HH:mm',\n 'yyyy/MM/dd HH:mm'\n ],\n [\n 'yyyy/MM/dd',\n 'yyyy-MM-dd',\n 'HH:mm:ss',\n 'HH:mm'\n ]\n ], numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n }, objectToString = {}.toString;\n function outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n }\n function designatorPredicate(designator) {\n return designator.charAt(0);\n }\n function mapDesignators(designators) {\n return $.map(designators, designatorPredicate);\n }\n function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n }\n function lowerArray(data) {\n var idx = 0, length = data.length, array = [];\n for (; idx < length; idx++) {\n array[idx] = (data[idx] + '').toLowerCase();\n }\n return array;\n }\n function lowerLocalInfo(localInfo) {\n var newLocalInfo = {}, property;\n for (property in localInfo) {\n newLocalInfo[property] = lowerArray(localInfo[property]);\n }\n return newLocalInfo;\n }\n function parseExact(value, format, culture, strict) {\n if (!value) {\n return null;\n }\n var lookAhead = function (match) {\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n return i;\n }, getNumber = function (size) {\n var rg = numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}'), match = value.substr(valueIdx, size).match(rg);\n if (match) {\n match = match[0];\n valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n }, getIndexByName = function (names, lower) {\n var i = 0, length = names.length, name, nameLength, matchLength = 0, matchIdx = 0, subValue;\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = value.substr(valueIdx, nameLength);\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n if (subValue == name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n if (matchLength) {\n valueIdx += matchLength;\n return matchIdx + 1;\n }\n return null;\n }, checkLiteral = function () {\n var result = false;\n if (value.charAt(valueIdx) === format[idx]) {\n valueIdx++;\n result = true;\n }\n return result;\n }, calendar = culture.calendars.standard, year = null, month = null, day = null, hours = null, minutes = null, seconds = null, milliseconds = null, idx = 0, valueIdx = 0, literal = false, date = new Date(), twoDigitYearMax = calendar.twoDigitYearMax || 2029, defaultYear = date.getFullYear(), ch, count, length, pattern, pmHour, UTC, matches, amDesignators, pmDesignators, hoursOffset, minutesOffset, hasTime, match;\n if (!format) {\n format = 'd';\n }\n pattern = calendar.patterns[format];\n if (pattern) {\n format = pattern;\n }\n format = format.split('');\n length = format.length;\n for (; idx < length; idx++) {\n ch = format[idx];\n if (literal) {\n if (ch === '\\'') {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n if (ch === 'd') {\n count = lookAhead('d');\n if (!calendar._lowerDays) {\n calendar._lowerDays = lowerLocalInfo(calendar.days);\n }\n if (day !== null && count > 2) {\n continue;\n }\n day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? 'namesAbbr' : 'names'], true);\n if (day === null || outOfRange(day, 1, 31)) {\n return null;\n }\n } else if (ch === 'M') {\n count = lookAhead('M');\n if (!calendar._lowerMonths) {\n calendar._lowerMonths = lowerLocalInfo(calendar.months);\n }\n month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true);\n if (month === null || outOfRange(month, 1, 12)) {\n return null;\n }\n month -= 1;\n } else if (ch === 'y') {\n count = lookAhead('y');\n year = getNumber(count);\n if (year === null) {\n return null;\n }\n if (count == 2) {\n if (typeof twoDigitYearMax === 'string') {\n twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10);\n }\n year = defaultYear - defaultYear % 100 + year;\n if (year > twoDigitYearMax) {\n year -= 100;\n }\n }\n } else if (ch === 'h') {\n lookAhead('h');\n hours = getNumber(2);\n if (hours == 12) {\n hours = 0;\n }\n if (hours === null || outOfRange(hours, 0, 11)) {\n return null;\n }\n } else if (ch === 'H') {\n lookAhead('H');\n hours = getNumber(2);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return null;\n }\n } else if (ch === 'm') {\n lookAhead('m');\n minutes = getNumber(2);\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return null;\n }\n } else if (ch === 's') {\n lookAhead('s');\n seconds = getNumber(2);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return null;\n }\n } else if (ch === 'f') {\n count = lookAhead('f');\n match = value.substr(valueIdx, count).match(numberRegExp[3]);\n milliseconds = getNumber(count);\n if (milliseconds !== null) {\n milliseconds = parseFloat('0.' + match[0], 10);\n milliseconds = kendo._round(milliseconds, 3);\n milliseconds *= 1000;\n }\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return null;\n }\n } else if (ch === 't') {\n count = lookAhead('t');\n amDesignators = calendar.AM;\n pmDesignators = calendar.PM;\n if (count === 1) {\n amDesignators = mapDesignators(amDesignators);\n pmDesignators = mapDesignators(pmDesignators);\n }\n pmHour = getIndexByName(pmDesignators);\n if (!pmHour && !getIndexByName(amDesignators)) {\n return null;\n }\n } else if (ch === 'z') {\n UTC = true;\n count = lookAhead('z');\n if (value.substr(valueIdx, 1) === 'Z') {\n checkLiteral();\n continue;\n }\n matches = value.substr(valueIdx, 6).match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp);\n if (!matches) {\n return null;\n }\n matches = matches[0].split(':');\n hoursOffset = matches[0];\n minutesOffset = matches[1];\n if (!minutesOffset && hoursOffset.length > 3) {\n valueIdx = hoursOffset.length - 2;\n minutesOffset = hoursOffset.substring(valueIdx);\n hoursOffset = hoursOffset.substring(0, valueIdx);\n }\n hoursOffset = parseInt(hoursOffset, 10);\n if (outOfRange(hoursOffset, -12, 13)) {\n return null;\n }\n if (count > 2) {\n minutesOffset = matches[0][0] + minutesOffset;\n minutesOffset = parseInt(minutesOffset, 10);\n if (isNaN(minutesOffset) || outOfRange(minutesOffset, -59, 59)) {\n return null;\n }\n }\n } else if (ch === '\\'') {\n literal = true;\n checkLiteral();\n } else if (!checkLiteral()) {\n return null;\n }\n }\n }\n if (strict && !/^\\s*$/.test(value.substr(valueIdx))) {\n return null;\n }\n hasTime = hours !== null || minutes !== null || seconds || null;\n if (year === null && month === null && day === null && hasTime) {\n year = defaultYear;\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = defaultYear;\n }\n if (day === null) {\n day = 1;\n }\n }\n if (pmHour && hours < 12) {\n hours += 12;\n }\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n if (minutesOffset) {\n minutes += -minutesOffset;\n }\n value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n value = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(value, hours);\n }\n if (year < 100) {\n value.setFullYear(year);\n }\n if (value.getDate() !== day && UTC === undefined) {\n return null;\n }\n return value;\n }\n function parseMicrosoftFormatOffset(offset) {\n var sign = offset.substr(0, 1) === '-' ? -1 : 1;\n offset = offset.substring(1);\n offset = parseInt(offset.substr(0, 2), 10) * 60 + parseInt(offset.substring(2), 10);\n return sign * offset;\n }\n function getDefaultFormats(culture) {\n var length = math.max(FORMATS_SEQUENCE.length, STANDARD_FORMATS.length);\n var calendar = culture.calendar || culture.calendars.standard;\n var patterns = calendar.patterns;\n var cultureFormats, formatIdx, idx;\n var formats = [];\n for (idx = 0; idx < length; idx++) {\n cultureFormats = FORMATS_SEQUENCE[idx];\n for (formatIdx = 0; formatIdx < cultureFormats.length; formatIdx++) {\n formats.push(patterns[cultureFormats[formatIdx]]);\n }\n formats = formats.concat(STANDARD_FORMATS[idx]);\n }\n return formats;\n }\n function internalParseDate(value, formats, culture, strict) {\n if (objectToString.call(value) === '[object Date]') {\n return value;\n }\n var idx = 0;\n var date = null;\n var length;\n var tzoffset;\n if (value && value.indexOf('/D') === 0) {\n date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n tzoffset = offsetRegExp.exec(date.substring(1));\n date = new Date(parseInt(date, 10));\n if (tzoffset) {\n tzoffset = parseMicrosoftFormatOffset(tzoffset[0]);\n date = kendo.timezone.apply(date, 0);\n date = kendo.timezone.convert(date, 0, -1 * tzoffset);\n }\n return date;\n }\n }\n culture = kendo.getCulture(culture);\n if (!formats) {\n formats = getDefaultFormats(culture);\n }\n formats = isArray(formats) ? formats : [formats];\n length = formats.length;\n for (; idx < length; idx++) {\n date = parseExact(value, formats[idx], culture, strict);\n if (date) {\n return date;\n }\n }\n return date;\n }\n kendo.parseDate = function (value, formats, culture) {\n return internalParseDate(value, formats, culture, false);\n };\n kendo.parseExactDate = function (value, formats, culture) {\n return internalParseDate(value, formats, culture, true);\n };\n kendo.parseInt = function (value, culture) {\n var result = kendo.parseFloat(value, culture);\n if (result) {\n result = result | 0;\n }\n return result;\n };\n kendo.parseFloat = function (value, culture, format) {\n if (!value && value !== 0) {\n return null;\n }\n if (typeof value === NUMBER) {\n return value;\n }\n value = value.toString();\n culture = kendo.getCulture(culture);\n var number = culture.numberFormat, percent = number.percent, currency = number.currency, symbol = currency.symbol, percentSymbol = percent.symbol, negative = value.indexOf('-'), parts, isPercent;\n if (exponentRegExp.test(value)) {\n value = parseFloat(value.replace(number['.'], '.'));\n if (isNaN(value)) {\n value = null;\n }\n return value;\n }\n if (negative > 0) {\n return null;\n } else {\n negative = negative > -1;\n }\n if (value.indexOf(symbol) > -1 || format && format.toLowerCase().indexOf('c') > -1) {\n number = currency;\n parts = number.pattern[0].replace('$', symbol).split('n');\n if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) {\n value = value.replace(parts[0], '').replace(parts[1], '');\n negative = true;\n }\n } else if (value.indexOf(percentSymbol) > -1) {\n isPercent = true;\n number = percent;\n symbol = percentSymbol;\n }\n value = value.replace('-', '').replace(symbol, '').replace(nonBreakingSpaceRegExp, ' ').split(number[','].replace(nonBreakingSpaceRegExp, ' ')).join('').replace(number['.'], '.');\n value = parseFloat(value);\n if (isNaN(value)) {\n value = null;\n } else if (negative) {\n value *= -1;\n }\n if (value && isPercent) {\n value /= 100;\n }\n return value;\n };\n }());\n function getShadows(element) {\n var shadow = element.css(kendo.support.transitions.css + 'box-shadow') || element.css('box-shadow'), radius = shadow ? shadow.match(boxShadowRegExp) || [\n 0,\n 0,\n 0,\n 0,\n 0\n ] : [\n 0,\n 0,\n 0,\n 0,\n 0\n ], blur = math.max(+radius[3], +(radius[4] || 0));\n return {\n left: -radius[1] + blur,\n right: +radius[1] + blur,\n bottom: +radius[2] + blur\n };\n }\n function wrap(element, autosize) {\n var browser = support.browser, percentage, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, parent = element.parent(), windowOuterWidth = outerWidth(window);\n parent.removeClass('k-animation-container-sm');\n if (!parent.hasClass('k-animation-container')) {\n var width = element[0].style.width, height = element[0].style.height, percentWidth = percentRegExp.test(width), percentHeight = percentRegExp.test(height), forceWidth = element.hasClass('k-tooltip') || element.is('.k-menu-horizontal.k-context-menu');\n percentage = percentWidth || percentHeight;\n if (!percentWidth && (!autosize || autosize && width || forceWidth)) {\n width = autosize ? outerWidth(element) + 1 : outerWidth(element);\n }\n if (!percentHeight && (!autosize || autosize && height) || element.is('.k-menu-horizontal.k-context-menu')) {\n height = outerHeight(element);\n }\n element.wrap($('<div/>').addClass('k-animation-container').css({\n width: width,\n height: height\n }));\n parent = element.parent();\n if (percentage) {\n element.css({\n width: '100%',\n height: '100%',\n boxSizing: 'border-box',\n mozBoxSizing: 'border-box',\n webkitBoxSizing: 'border-box'\n });\n }\n } else {\n wrapResize(element, autosize);\n }\n if (windowOuterWidth < outerWidth(parent)) {\n parent.addClass('k-animation-container-sm');\n wrapResize(element, autosize);\n }\n if (browser.msie && math.floor(browser.version) <= 7) {\n element.css({ zoom: 1 });\n element.children('.k-menu').width(element.width());\n }\n return parent;\n }\n function wrapResize(element, autosize) {\n var percentage, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, wrapper = element.parent('.k-animation-container'), wrapperStyle = wrapper[0].style;\n if (wrapper.is(':hidden')) {\n wrapper.css({\n display: '',\n position: ''\n });\n }\n percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height);\n if (!percentage) {\n wrapper.css({\n width: autosize ? outerWidth(element) + 1 : outerWidth(element),\n height: outerHeight(element),\n boxSizing: 'content-box',\n mozBoxSizing: 'content-box',\n webkitBoxSizing: 'content-box'\n });\n }\n }\n function deepExtend(destination) {\n var i = 1, length = arguments.length;\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n return destination;\n }\n function deepExtendOne(destination, source) {\n var ObservableArray = kendo.data.ObservableArray, LazyObservableArray = kendo.data.LazyObservableArray, DataSource = kendo.data.DataSource, HierarchicalDataSource = kendo.data.HierarchicalDataSource, property, propValue, propType, propInit, destProp;\n for (property in source) {\n propValue = source[property];\n propType = typeof propValue;\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n if (propInit && propInit !== Array && propInit !== ObservableArray && propInit !== LazyObservableArray && propInit !== DataSource && propInit !== HierarchicalDataSource && propInit !== RegExp && (!kendo.isFunction(window.ArrayBuffer) || propInit !== ArrayBuffer)) {\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n destProp = destination[property];\n if (typeof destProp === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n return destination;\n }\n function testRx(agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n }\n function toHyphens(str) {\n return str.replace(/([a-z][A-Z])/g, function (g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n }\n function toCamelCase(str) {\n return str.replace(/\\-(\\w)/g, function (strMatch, g1) {\n return g1.toUpperCase();\n });\n }\n function getComputedStyles(element, properties) {\n var styles = {}, computedStyle;\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(element, '');\n if (properties) {\n $.each(properties, function (idx, value) {\n styles[value] = computedStyle.getPropertyValue(value);\n });\n }\n } else {\n computedStyle = element.currentStyle;\n if (properties) {\n $.each(properties, function (idx, value) {\n styles[value] = computedStyle[toCamelCase(value)];\n });\n }\n }\n if (!kendo.size(styles)) {\n styles = computedStyle;\n }\n return styles;\n }\n function isScrollable(element) {\n if (element && element.className && typeof element.className === 'string' && element.className.indexOf('k-auto-scrollable') > -1) {\n return true;\n }\n var overflow = getComputedStyles(element, ['overflow']).overflow;\n return overflow == 'auto' || overflow == 'scroll';\n }\n function scrollLeft(element, value) {\n var webkit = support.browser.webkit;\n var mozila = support.browser.mozilla;\n var el = element instanceof $ ? element[0] : element;\n var isRtl;\n if (!element) {\n return;\n }\n isRtl = support.isRtl(element);\n if (value !== undefined) {\n if (isRtl && webkit) {\n el.scrollLeft = el.scrollWidth - el.clientWidth - value;\n } else if (isRtl && mozila) {\n el.scrollLeft = -value;\n } else {\n el.scrollLeft = value;\n }\n } else {\n if (isRtl && webkit) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return Math.abs(el.scrollLeft);\n }\n }\n }\n (function () {\n support._scrollbar = undefined;\n support.scrollbar = function (refresh) {\n if (!isNaN(support._scrollbar) && !refresh) {\n return support._scrollbar;\n } else {\n var div = document.createElement('div'), result;\n div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n support._scrollbar = result = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n return result;\n }\n };\n support.isRtl = function (element) {\n return $(element).closest('.k-rtl').length > 0;\n };\n var table = document.createElement('table');\n try {\n table.innerHTML = '<tr><td></td></tr>';\n support.tbodyInnerHtml = true;\n } catch (e) {\n support.tbodyInnerHtml = false;\n }\n support.touch = 'ontouchstart' in window;\n var docStyle = document.documentElement.style;\n var transitions = support.transitions = false, transforms = support.transforms = false, elementProto = 'HTMLElement' in window ? HTMLElement.prototype : [];\n support.hasHW3D = 'WebKitCSSMatrix' in window && 'm11' in new window.WebKitCSSMatrix() || 'MozPerspective' in docStyle || 'msPerspective' in docStyle;\n support.cssFlexbox = 'flexWrap' in docStyle || 'WebkitFlexWrap' in docStyle || 'msFlexWrap' in docStyle;\n each([\n 'Moz',\n 'webkit',\n 'O',\n 'ms'\n ], function () {\n var prefix = this.toString(), hasTransitions = typeof table.style[prefix + 'Transition'] === STRING;\n if (hasTransitions || typeof table.style[prefix + 'Transform'] === STRING) {\n var lowPrefix = prefix.toLowerCase();\n transforms = {\n css: lowPrefix != 'ms' ? '-' + lowPrefix + '-' : '',\n prefix: prefix,\n event: lowPrefix === 'o' || lowPrefix === 'webkit' ? lowPrefix : ''\n };\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + 'TransitionEnd' : 'transitionend';\n }\n return false;\n }\n });\n table = null;\n support.transforms = transforms;\n support.transitions = transitions;\n support.devicePixelRatio = window.devicePixelRatio === undefined ? 1 : window.devicePixelRatio;\n try {\n support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;\n support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight;\n } catch (e) {\n support.screenWidth = window.screen.availWidth;\n support.screenHeight = window.screen.availHeight;\n }\n support.detectOS = function (ua) {\n var os = false, minorVersion, match = [], notAndroidPhone = !/mobile safari/i.test(ua), agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n }, osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n }, formFactorRxs = { tablet: /playbook|ipad|fire/i }, browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent == 'windows' && 'plugins' in navigator) {\n return false;\n }\n os = {};\n os.device = agent;\n os.tablet = testRx(agent, formFactorRxs, false);\n os.browser = testRx(ua, browserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || '0').replace('_', '.');\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0');\n os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED;\n os.appMode = window.navigator.standalone || /file|local|wmapp/.test(window.location.protocol) || os.cordova;\n if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) {\n os.tablet = agent;\n }\n break;\n }\n }\n }\n return os;\n };\n var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent);\n support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0;\n support.hasNativeScrolling = false;\n if (mobileOS.ios || mobileOS.android && mobileOS.majorVersion > 2 || mobileOS.wp) {\n support.hasNativeScrolling = mobileOS;\n }\n support.delayedClick = function () {\n if (support.touch) {\n if (mobileOS.ios) {\n return true;\n }\n if (mobileOS.android) {\n if (!support.browser.chrome) {\n return true;\n }\n if (support.browser.version < 32) {\n return false;\n }\n return !($('meta[name=viewport]').attr('content') || '').match(/user-scalable=no/i);\n }\n }\n return false;\n };\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n support.detectBrowser = function (ua) {\n var browser = false, match = [], browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browser;\n };\n support.browser = support.detectBrowser(navigator.userAgent);\n support.detectClipboardAccess = function () {\n var commands = {\n copy: document.queryCommandSupported ? document.queryCommandSupported('copy') : false,\n cut: document.queryCommandSupported ? document.queryCommandSupported('cut') : false,\n paste: document.queryCommandSupported ? document.queryCommandSupported('paste') : false\n };\n if (support.browser.chrome) {\n commands.paste = false;\n if (support.browser.version >= 43) {\n commands.copy = true;\n commands.cut = true;\n }\n }\n return commands;\n };\n support.clipboard = support.detectClipboardAccess();\n support.zoomLevel = function () {\n try {\n var browser = support.browser;\n var ie11WidthCorrection = 0;\n var docEl = document.documentElement;\n if (browser.msie && browser.version == 11 && docEl.scrollHeight > docEl.clientHeight && !support.touch) {\n ie11WidthCorrection = support.scrollbar();\n }\n return support.touch ? docEl.clientWidth / window.innerWidth : browser.msie && browser.version >= 10 ? ((top || window).document.documentElement.offsetWidth + ie11WidthCorrection) / (top || window).innerWidth : 1;\n } catch (e) {\n return 1;\n }\n };\n support.cssBorderSpacing = typeof docStyle.borderSpacing != 'undefined' && !(support.browser.msie && support.browser.version < 8);\n (function (browser) {\n var cssClass = '', docElement = $(document.documentElement), majorVersion = parseInt(browser.version, 10);\n if (browser.msie) {\n cssClass = 'ie';\n } else if (browser.mozilla) {\n cssClass = 'ff';\n } else if (browser.safari) {\n cssClass = 'safari';\n } else if (browser.webkit) {\n cssClass = 'webkit';\n } else if (browser.opera) {\n cssClass = 'opera';\n } else if (browser.edge) {\n cssClass = 'edge';\n }\n if (cssClass) {\n cssClass = 'k-' + cssClass + ' k-' + cssClass + majorVersion;\n }\n if (support.mobileOS) {\n cssClass += ' k-mobile';\n }\n if (!support.cssFlexbox) {\n cssClass += ' k-no-flexbox';\n }\n docElement.addClass(cssClass);\n }(support.browser));\n support.eventCapture = document.documentElement.addEventListener;\n var input = document.createElement('input');\n support.placeholder = 'placeholder' in input;\n support.propertyChangeEvent = 'onpropertychange' in input;\n support.input = function () {\n var types = [\n 'number',\n 'date',\n 'time',\n 'month',\n 'week',\n 'datetime',\n 'datetime-local'\n ];\n var length = types.length;\n var value = 'test';\n var result = {};\n var idx = 0;\n var type;\n for (; idx < length; idx++) {\n type = types[idx];\n input.setAttribute('type', type);\n input.value = value;\n result[type.replace('-', '')] = input.type !== 'text' && input.value !== value;\n }\n return result;\n }();\n input.style.cssText = 'float:left;';\n support.cssFloat = !!input.style.cssFloat;\n input = null;\n support.stableSort = function () {\n var threshold = 513;\n var sorted = [{\n index: 0,\n field: 'b'\n }];\n for (var i = 1; i < threshold; i++) {\n sorted.push({\n index: i,\n field: 'a'\n });\n }\n sorted.sort(function (a, b) {\n return a.field > b.field ? 1 : a.field < b.field ? -1 : 0;\n });\n return sorted[0].index === 1;\n }();\n support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector || elementProto.msMatchesSelector || elementProto.oMatchesSelector || elementProto.matchesSelector || elementProto.matches || function (selector) {\n var nodeList = document.querySelectorAll ? (this.parentNode || document).querySelectorAll(selector) || [] : $(selector), i = nodeList.length;\n while (i--) {\n if (nodeList[i] == this) {\n return true;\n }\n }\n return false;\n };\n support.matchMedia = 'matchMedia' in window;\n support.pushState = window.history && window.history.pushState;\n var documentMode = document.documentMode;\n support.hashChange = 'onhashchange' in window && !(support.browser.msie && (!documentMode || documentMode <= 8));\n support.customElements = 'registerElement' in window.document;\n var chrome = support.browser.chrome, mozilla = support.browser.mozilla;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.pointers = !chrome && !mozilla && window.PointerEvent;\n support.kineticScrollNeeded = mobileOS && (support.touch || support.msPointers || support.pointers);\n }());\n function size(obj) {\n var result = 0, key;\n for (key in obj) {\n if (obj.hasOwnProperty(key) && key != 'toJSON') {\n result++;\n }\n }\n return result;\n }\n function getOffset(element, type, positioned) {\n if (!type) {\n type = 'offset';\n }\n var offset = element[type]();\n var result = {\n top: offset.top,\n right: offset.right,\n bottom: offset.bottom,\n left: offset.left\n };\n if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) {\n var sign = support.isRtl(element) ? 1 : -1;\n result.top -= window.pageYOffset - document.documentElement.scrollTop;\n result.left -= window.pageXOffset + sign * document.documentElement.scrollLeft;\n }\n return result;\n }\n var directions = {\n left: { reverse: 'right' },\n right: { reverse: 'left' },\n down: { reverse: 'up' },\n up: { reverse: 'down' },\n top: { reverse: 'bottom' },\n bottom: { reverse: 'top' },\n 'in': { reverse: 'out' },\n out: { reverse: 'in' }\n };\n function parseEffects(input) {\n var effects = {};\n each(typeof input === 'string' ? input.split(' ') : input, function (idx) {\n effects[idx] = this;\n });\n return effects;\n }\n function fx(element) {\n return new kendo.effects.Element(element);\n }\n var effects = {};\n $.extend(effects, {\n enabled: true,\n Element: function (element) {\n this.element = $(element);\n },\n promise: function (element, options) {\n if (!element.is(':visible')) {\n element.css({ display: element.data('olddisplay') || 'block' }).css('display');\n }\n if (options.hide) {\n element.data('olddisplay', element.css('display')).hide();\n }\n if (options.init) {\n options.init();\n }\n if (options.completeCallback) {\n options.completeCallback(element);\n }\n element.dequeue();\n },\n disable: function () {\n this.enabled = false;\n this.promise = this.promiseShim;\n },\n enable: function () {\n this.enabled = true;\n this.promise = this.animatedPromise;\n }\n });\n effects.promiseShim = effects.promise;\n function prepareAnimationOptions(options, duration, reverse, complete) {\n if (typeof options === STRING) {\n if (isFunction(duration)) {\n complete = duration;\n duration = 400;\n reverse = false;\n }\n if (isFunction(reverse)) {\n complete = reverse;\n reverse = false;\n }\n if (typeof duration === BOOLEAN) {\n reverse = duration;\n duration = 400;\n }\n options = {\n effects: options,\n duration: duration,\n reverse: reverse,\n complete: complete\n };\n }\n return extend({\n effects: {},\n duration: 400,\n reverse: false,\n init: noop,\n teardown: noop,\n hide: false\n }, options, {\n completeCallback: options.complete,\n complete: noop\n });\n }\n function animate(element, options, duration, reverse, complete) {\n var idx = 0, length = element.length, instance;\n for (; idx < length; idx++) {\n instance = $(element[idx]);\n instance.queue(function () {\n effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete));\n });\n }\n return element;\n }\n function toggleClass(element, classes, options, add) {\n if (classes) {\n classes = classes.split(' ');\n each(classes, function (idx, value) {\n element.toggleClass(value, add);\n });\n }\n return element;\n }\n if (!('kendoAnimate' in $.fn)) {\n extend($.fn, {\n kendoStop: function (clearQueue, gotoEnd) {\n return this.stop(clearQueue, gotoEnd);\n },\n kendoAnimate: function (options, duration, reverse, complete) {\n return animate(this, options, duration, reverse, complete);\n },\n kendoAddClass: function (classes, options) {\n return kendo.toggleClass(this, classes, options, true);\n },\n kendoRemoveClass: function (classes, options) {\n return kendo.toggleClass(this, classes, options, false);\n },\n kendoToggleClass: function (classes, options, toggle) {\n return kendo.toggleClass(this, classes, options, toggle);\n }\n });\n }\n var ampRegExp = /&/g, ltRegExp = /</g, quoteRegExp = /\"/g, aposRegExp = /'/g, gtRegExp = />/g;\n function htmlEncode(value) {\n return ('' + value).replace(ampRegExp, '&').replace(ltRegExp, '<').replace(gtRegExp, '>').replace(quoteRegExp, '"').replace(aposRegExp, ''');\n }\n function unescape(value) {\n var template;\n try {\n template = window.decodeURIComponent(value);\n } catch (error) {\n template = value.replace(/%u([\\dA-F]{4})|%([\\dA-F]{2})/gi, function (_, m1, m2) {\n return String.fromCharCode(parseInt('0x' + (m1 || m2), 16));\n });\n }\n return template;\n }\n var eventTarget = function (e) {\n return e.target;\n };\n if (support.touch) {\n eventTarget = function (e) {\n var touches = 'originalEvent' in e ? e.originalEvent.changedTouches : 'changedTouches' in e ? e.changedTouches : null;\n return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target;\n };\n each([\n 'swipe',\n 'swipeLeft',\n 'swipeRight',\n 'swipeUp',\n 'swipeDown',\n 'doubleTap',\n 'tap'\n ], function (m, value) {\n $.fn[value] = function (callback) {\n return this.bind(value, callback);\n };\n });\n }\n if (support.touch) {\n if (!support.mobileOS) {\n support.mousedown = 'mousedown touchstart';\n support.mouseup = 'mouseup touchend';\n support.mousemove = 'mousemove touchmove';\n support.mousecancel = 'mouseleave touchcancel';\n support.click = 'click';\n support.resize = 'resize';\n } else {\n support.mousedown = 'touchstart';\n support.mouseup = 'touchend';\n support.mousemove = 'touchmove';\n support.mousecancel = 'touchcancel';\n support.click = 'touchend';\n support.resize = 'orientationchange';\n }\n } else if (support.pointers) {\n support.mousemove = 'pointermove';\n support.mousedown = 'pointerdown';\n support.mouseup = 'pointerup';\n support.mousecancel = 'pointercancel';\n support.click = 'pointerup';\n support.resize = 'orientationchange resize';\n } else if (support.msPointers) {\n support.mousemove = 'MSPointerMove';\n support.mousedown = 'MSPointerDown';\n support.mouseup = 'MSPointerUp';\n support.mousecancel = 'MSPointerCancel';\n support.click = 'MSPointerUp';\n support.resize = 'orientationchange resize';\n } else {\n support.mousemove = 'mousemove';\n support.mousedown = 'mousedown';\n support.mouseup = 'mouseup';\n support.mousecancel = 'mouseleave';\n support.click = 'click';\n support.resize = 'resize';\n }\n var wrapExpression = function (members, paramName) {\n var result = paramName || 'd', index, idx, length, member, count = 1;\n for (idx = 0, length = members.length; idx < length; idx++) {\n member = members[idx];\n if (member !== '') {\n index = member.indexOf('[');\n if (index !== 0) {\n if (index == -1) {\n member = '.' + member;\n } else {\n count++;\n member = '.' + member.substring(0, index) + ' || {})' + member.substring(index);\n }\n }\n count++;\n result += member + (idx < length - 1 ? ' || {})' : ')');\n }\n }\n return new Array(count).join('(') + result;\n }, localUrlRe = /^([a-z]+:)?\\/\\//i;\n extend(kendo, {\n widgets: [],\n _widgetRegisteredCallbacks: [],\n ui: kendo.ui || {},\n fx: kendo.fx || fx,\n effects: kendo.effects || effects,\n mobile: kendo.mobile || {},\n data: kendo.data || {},\n dataviz: kendo.dataviz || {},\n drawing: kendo.drawing || {},\n spreadsheet: { messages: {} },\n keys: {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n },\n support: kendo.support || support,\n animate: kendo.animate || animate,\n ns: '',\n attr: function (value) {\n return 'data-' + kendo.ns + value;\n },\n getShadows: getShadows,\n wrap: wrap,\n deepExtend: deepExtend,\n getComputedStyles: getComputedStyles,\n isScrollable: isScrollable,\n scrollLeft: scrollLeft,\n size: size,\n toCamelCase: toCamelCase,\n toHyphens: toHyphens,\n getOffset: kendo.getOffset || getOffset,\n parseEffects: kendo.parseEffects || parseEffects,\n toggleClass: kendo.toggleClass || toggleClass,\n directions: kendo.directions || directions,\n Observable: Observable,\n Class: Class,\n Template: Template,\n template: proxy(Template.compile, Template),\n render: proxy(Template.render, Template),\n stringify: proxy(JSON.stringify, JSON),\n eventTarget: eventTarget,\n htmlEncode: htmlEncode,\n unescape: unescape,\n isLocalUrl: function (url) {\n return url && !localUrlRe.test(url);\n },\n expr: function (expression, safe, paramName) {\n expression = expression || '';\n if (typeof safe == STRING) {\n paramName = safe;\n safe = false;\n }\n paramName = paramName || 'd';\n if (expression && expression.charAt(0) !== '[') {\n expression = '.' + expression;\n }\n if (safe) {\n expression = expression.replace(/\"([^.]*)\\.([^\"]*)\"/g, '\"$1_$DOT$_$2\"');\n expression = expression.replace(/'([^.]*)\\.([^']*)'/g, '\\'$1_$DOT$_$2\\'');\n expression = wrapExpression(expression.split('.'), paramName);\n expression = expression.replace(/_\\$DOT\\$_/g, '.');\n } else {\n expression = paramName + expression;\n }\n return expression;\n },\n getter: function (expression, safe) {\n var key = expression + safe;\n return getterCache[key] = getterCache[key] || new Function('d', 'return ' + kendo.expr(expression, safe));\n },\n setter: function (expression) {\n return setterCache[expression] = setterCache[expression] || new Function('d,value', kendo.expr(expression) + '=value');\n },\n accessor: function (expression) {\n return {\n get: kendo.getter(expression),\n set: kendo.setter(expression)\n };\n },\n guid: function () {\n var id = '', i, random;\n for (i = 0; i < 32; i++) {\n random = math.random() * 16 | 0;\n if (i == 8 || i == 12 || i == 16 || i == 20) {\n id += '-';\n }\n id += (i == 12 ? 4 : i == 16 ? random & 3 | 8 : random).toString(16);\n }\n return id;\n },\n roleSelector: function (role) {\n return role.replace(/(\\S+)/g, '[' + kendo.attr('role') + '=$1],').slice(0, -1);\n },\n directiveSelector: function (directives) {\n var selectors = directives.split(' ');\n if (selectors) {\n for (var i = 0; i < selectors.length; i++) {\n if (selectors[i] != 'view') {\n selectors[i] = selectors[i].replace(/(\\w*)(view|bar|strip|over)$/, '$1-$2');\n }\n }\n }\n return selectors.join(' ').replace(/(\\S+)/g, 'kendo-mobile-$1,').slice(0, -1);\n },\n triggeredByInput: function (e) {\n return /^(label|input|textarea|select)$/i.test(e.target.tagName);\n },\n onWidgetRegistered: function (callback) {\n for (var i = 0, len = kendo.widgets.length; i < len; i++) {\n callback(kendo.widgets[i]);\n }\n kendo._widgetRegisteredCallbacks.push(callback);\n },\n logToConsole: function (message, type) {\n var console = window.console;\n if (!kendo.suppressLog && typeof console != 'undefined' && console.log) {\n console[type || 'log'](message);\n }\n }\n });\n var Widget = Observable.extend({\n init: function (element, options) {\n var that = this;\n that.element = kendo.jQuery(element).handler(that);\n that.angular('init', options);\n Observable.fn.init.call(that);\n var dataSource = options ? options.dataSource : null;\n if (dataSource) {\n options = extend({}, options, { dataSource: {} });\n }\n options = that.options = extend(true, {}, that.options, options);\n if (dataSource) {\n options.dataSource = dataSource;\n }\n if (!that.element.attr(kendo.attr('role'))) {\n that.element.attr(kendo.attr('role'), (options.name || '').toLowerCase());\n }\n that.element.data('kendo' + options.prefix + options.name, that);\n that.bind(that.events, options);\n },\n events: [],\n options: { prefix: '' },\n _hasBindingTarget: function () {\n return !!this.element[0].kendoBindingTarget;\n },\n _tabindex: function (target) {\n target = target || this.wrapper;\n var element = this.element, TABINDEX = 'tabindex', tabindex = target.attr(TABINDEX) || element.attr(TABINDEX);\n element.removeAttr(TABINDEX);\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n },\n setOptions: function (options) {\n this._setEvents(options);\n $.extend(this.options, options);\n },\n _setEvents: function (options) {\n var that = this, idx = 0, length = that.events.length, e;\n for (; idx < length; idx++) {\n e = that.events[idx];\n if (that.options[e] && options[e]) {\n that.unbind(e, that.options[e]);\n if (that._events && that._events[e]) {\n delete that._events[e];\n }\n }\n }\n that.bind(that.events, options);\n },\n resize: function (force) {\n var size = this.getSize(), currentSize = this._size;\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger('resize', size);\n }\n },\n getSize: function () {\n return kendo.dimensions(this.element);\n },\n size: function (size) {\n if (!size) {\n return this.getSize();\n } else {\n this.setSize(size);\n }\n },\n setSize: $.noop,\n _resize: $.noop,\n destroy: function () {\n var that = this;\n that.element.removeData('kendo' + that.options.prefix + that.options.name);\n that.element.removeData('handler');\n that.unbind();\n },\n _destroy: function () {\n this.destroy();\n },\n angular: function () {\n },\n _muteAngularRebind: function (callback) {\n this._muteRebind = true;\n callback.call(this);\n this._muteRebind = false;\n }\n });\n var DataBoundWidget = Widget.extend({\n dataItems: function () {\n return this.dataSource.flatView();\n },\n _angularItems: function (cmd) {\n var that = this;\n that.angular(cmd, function () {\n return {\n elements: that.items(),\n data: $.map(that.dataItems(), function (dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n }\n });\n kendo.dimensions = function (element, dimensions) {\n var domElement = element[0];\n if (dimensions) {\n element.css(dimensions);\n }\n return {\n width: domElement.offsetWidth,\n height: domElement.offsetHeight\n };\n };\n kendo.notify = noop;\n var templateRegExp = /template$/i, jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/, jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]+\\]$/, dashRegExp = /([A-Z])/g;\n function parseOption(element, option) {\n var value;\n if (option.indexOf('data') === 0) {\n option = option.substring(4);\n option = option.charAt(0).toLowerCase() + option.substring(1);\n }\n option = option.replace(dashRegExp, '-$1');\n value = element.getAttribute('data-' + kendo.ns + option);\n if (value === null) {\n value = undefined;\n } else if (value === 'null') {\n value = null;\n } else if (value === 'true') {\n value = true;\n } else if (value === 'false') {\n value = false;\n } else if (numberRegExp.test(value) && option != 'mask') {\n value = parseFloat(value);\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\n value = new Function('return (' + value + ')')();\n }\n return value;\n }\n function parseOptions(element, options, source) {\n var result = {}, option, value, role = element.getAttribute('data-' + kendo.ns + 'role');\n for (option in options) {\n value = parseOption(element, option);\n if (value !== undefined) {\n if (templateRegExp.test(option) && role != 'drawer') {\n if (typeof value === 'string') {\n if ($('#' + value).length) {\n value = kendo.template($('#' + value).html());\n } else if (source) {\n value = kendo.template(source[value]);\n }\n } else {\n value = element.getAttribute(option);\n }\n }\n result[option] = value;\n }\n }\n return result;\n }\n kendo.initWidget = function (element, options, roles) {\n var result, option, widget, idx, length, role, value, dataSource, fullPath, widgetKeyRegExp;\n if (!roles) {\n roles = kendo.ui.roles;\n } else if (roles.roles) {\n roles = roles.roles;\n }\n element = element.nodeType ? element : element[0];\n role = element.getAttribute('data-' + kendo.ns + 'role');\n if (!role) {\n return;\n }\n fullPath = role.indexOf('.') === -1;\n if (fullPath) {\n widget = roles[role];\n } else {\n widget = kendo.getter(role)(window);\n }\n var data = $(element).data(), widgetKey = widget ? 'kendo' + widget.fn.options.prefix + widget.fn.options.name : '';\n if (fullPath) {\n widgetKeyRegExp = new RegExp('^kendo.*' + role + '$', 'i');\n } else {\n widgetKeyRegExp = new RegExp('^' + widgetKey + '$', 'i');\n }\n for (var key in data) {\n if (key.match(widgetKeyRegExp)) {\n if (key === widgetKey) {\n result = data[key];\n } else {\n return data[key];\n }\n }\n }\n if (!widget) {\n return;\n }\n dataSource = parseOption(element, 'dataSource');\n options = $.extend({}, parseOptions(element, widget.fn.options), options);\n if (dataSource) {\n if (typeof dataSource === STRING) {\n options.dataSource = kendo.getter(dataSource)(window);\n } else {\n options.dataSource = dataSource;\n }\n }\n for (idx = 0, length = widget.fn.events.length; idx < length; idx++) {\n option = widget.fn.events[idx];\n value = parseOption(element, option);\n if (value !== undefined) {\n options[option] = kendo.getter(value)(window);\n }\n }\n if (!result) {\n result = new widget(element, options);\n } else if (!$.isEmptyObject(options)) {\n result.setOptions(options);\n }\n return result;\n };\n kendo.rolesFromNamespaces = function (namespaces) {\n var roles = [], idx, length;\n if (!namespaces[0]) {\n namespaces = [\n kendo.ui,\n kendo.dataviz.ui\n ];\n }\n for (idx = 0, length = namespaces.length; idx < length; idx++) {\n roles[idx] = namespaces[idx].roles;\n }\n return extend.apply(null, [{}].concat(roles.reverse()));\n };\n kendo.init = function (element) {\n var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1));\n $(element).find('[data-' + kendo.ns + 'role]').addBack().each(function () {\n kendo.initWidget(this, {}, roles);\n });\n };\n kendo.destroy = function (element) {\n $(element).find('[data-' + kendo.ns + 'role]').addBack().each(function () {\n var data = $(this).data();\n for (var key in data) {\n if (key.indexOf('kendo') === 0 && typeof data[key].destroy === FUNCTION) {\n data[key].destroy();\n }\n }\n });\n };\n function containmentComparer(a, b) {\n return $.contains(a, b) ? -1 : 1;\n }\n function resizableWidget() {\n var widget = $(this);\n return $.inArray(widget.attr('data-' + kendo.ns + 'role'), [\n 'slider',\n 'rangeslider'\n ]) > -1 || widget.is(':visible');\n }\n kendo.resize = function (element, force) {\n var widgets = $(element).find('[data-' + kendo.ns + 'role]').addBack().filter(resizableWidget);\n if (!widgets.length) {\n return;\n }\n var widgetsArray = $.makeArray(widgets);\n widgetsArray.sort(containmentComparer);\n $.each(widgetsArray, function () {\n var widget = kendo.widgetInstance($(this));\n if (widget) {\n widget.resize(force);\n }\n });\n };\n kendo.parseOptions = parseOptions;\n extend(kendo.ui, {\n Widget: Widget,\n DataBoundWidget: DataBoundWidget,\n roles: {},\n progress: function (container, toggle, options) {\n var mask = container.find('.k-loading-mask'), support = kendo.support, browser = support.browser, isRtl, leftRight, webkitCorrection, containerScrollLeft, cssClass;\n options = $.extend({}, {\n width: '100%',\n height: '100%',\n top: container.scrollTop(),\n opacity: false\n }, options);\n cssClass = options.opacity ? 'k-loading-mask k-opaque' : 'k-loading-mask';\n if (toggle) {\n if (!mask.length) {\n isRtl = support.isRtl(container);\n leftRight = isRtl ? 'right' : 'left';\n containerScrollLeft = container.scrollLeft();\n webkitCorrection = browser.webkit ? !isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft : 0;\n mask = $(kendo.format('<div class=\\'{0}\\'><span class=\\'k-loading-text\\'>{1}</span><div class=\\'k-loading-image\\'/><div class=\\'k-loading-color\\'/></div>', cssClass, kendo.ui.progress.messages.loading)).width(options.width).height(options.height).css('top', options.top).css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection).prependTo(container);\n }\n } else if (mask) {\n mask.remove();\n }\n },\n plugin: function (widget, register, prefix) {\n var name = widget.fn.options.name, getter;\n register = register || kendo.ui;\n prefix = prefix || '';\n register[name] = widget;\n register.roles[name.toLowerCase()] = widget;\n getter = 'getKendo' + prefix + name;\n name = 'kendo' + prefix + name;\n var widgetEntry = {\n name: name,\n widget: widget,\n prefix: prefix || ''\n };\n kendo.widgets.push(widgetEntry);\n for (var i = 0, len = kendo._widgetRegisteredCallbacks.length; i < len; i++) {\n kendo._widgetRegisteredCallbacks[i](widgetEntry);\n }\n $.fn[name] = function (options) {\n var value = this, args;\n if (typeof options === STRING) {\n args = slice.call(arguments, 1);\n this.each(function () {\n var widget = $.data(this, name), method, result;\n if (!widget) {\n throw new Error(kendo.format('Cannot call method \\'{0}\\' of {1} before it is initialized', options, name));\n }\n method = widget[options];\n if (typeof method !== FUNCTION) {\n throw new Error(kendo.format('Cannot find method \\'{0}\\' of {1}', options, name));\n }\n result = method.apply(widget, args);\n if (result !== undefined) {\n value = result;\n return false;\n }\n });\n } else {\n this.each(function () {\n return new widget(this, options);\n });\n }\n return value;\n };\n $.fn[name].widget = widget;\n $.fn[getter] = function () {\n return this.data(name);\n };\n }\n });\n kendo.ui.progress.messages = { loading: 'Loading...' };\n var ContainerNullObject = {\n bind: function () {\n return this;\n },\n nullObject: true,\n options: {}\n };\n var MobileWidget = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.autoApplyNS();\n this.wrapper = this.element;\n this.element.addClass('km-widget');\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.element.kendoDestroy();\n },\n options: { prefix: 'Mobile' },\n events: [],\n view: function () {\n var viewElement = this.element.closest(kendo.roleSelector('view splitview modalview drawer'));\n return kendo.widgetInstance(viewElement, kendo.mobile.ui) || ContainerNullObject;\n },\n viewHasNativeScrolling: function () {\n var view = this.view();\n return view && view.options.useNativeScrolling;\n },\n container: function () {\n var element = this.element.closest(kendo.roleSelector('view layout modalview drawer splitview'));\n return kendo.widgetInstance(element.eq(0), kendo.mobile.ui) || ContainerNullObject;\n }\n });\n extend(kendo.mobile, {\n init: function (element) {\n kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui);\n },\n appLevelNativeScrolling: function () {\n return kendo.mobile.application && kendo.mobile.application.options && kendo.mobile.application.options.useNativeScrolling;\n },\n roles: {},\n ui: {\n Widget: MobileWidget,\n DataBoundWidget: DataBoundWidget.extend(MobileWidget.prototype),\n roles: {},\n plugin: function (widget) {\n kendo.ui.plugin(widget, kendo.mobile.ui, 'Mobile');\n }\n }\n });\n deepExtend(kendo.dataviz, {\n init: function (element) {\n kendo.init(element, kendo.dataviz.ui);\n },\n ui: {\n roles: {},\n themes: {},\n views: [],\n plugin: function (widget) {\n kendo.ui.plugin(widget, kendo.dataviz.ui);\n }\n },\n roles: {}\n });\n kendo.touchScroller = function (elements, options) {\n if (!options) {\n options = {};\n }\n options.useNative = true;\n return $(elements).map(function (idx, element) {\n element = $(element);\n if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data('kendoMobileScroller')) {\n element.kendoMobileScroller(options);\n return element.data('kendoMobileScroller');\n } else {\n return false;\n }\n })[0];\n };\n kendo.preventDefault = function (e) {\n e.preventDefault();\n };\n kendo.widgetInstance = function (element, suites) {\n var role = element.data(kendo.ns + 'role'), widgets = [], i, length, elementData = element.data('kendoView');\n if (role) {\n if (role === 'content') {\n role = 'scroller';\n }\n if (role === 'editortoolbar') {\n var editorToolbar = element.data('kendoEditorToolbar');\n if (editorToolbar) {\n return editorToolbar;\n }\n }\n if (role === 'view' && elementData) {\n return elementData;\n }\n if (suites) {\n if (suites[0]) {\n for (i = 0, length = suites.length; i < length; i++) {\n widgets.push(suites[i].roles[role]);\n }\n } else {\n widgets.push(suites.roles[role]);\n }\n } else {\n widgets = [\n kendo.ui.roles[role],\n kendo.dataviz.ui.roles[role],\n kendo.mobile.ui.roles[role]\n ];\n }\n if (role.indexOf('.') >= 0) {\n widgets = [kendo.getter(role)(window)];\n }\n for (i = 0, length = widgets.length; i < length; i++) {\n var widget = widgets[i];\n if (widget) {\n var instance = element.data('kendo' + widget.fn.options.prefix + widget.fn.options.name);\n if (instance) {\n return instance;\n }\n }\n }\n }\n };\n kendo.onResize = function (callback) {\n var handler = callback;\n if (support.mobileOS.android) {\n handler = function () {\n setTimeout(callback, 600);\n };\n }\n $(window).on(support.resize, handler);\n return handler;\n };\n kendo.unbindResize = function (callback) {\n $(window).off(support.resize, callback);\n };\n kendo.attrValue = function (element, key) {\n return element.data(kendo.ns + key);\n };\n kendo.days = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6\n };\n function focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n return (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : 'a' === nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN) && visible(element);\n }\n function visible(element) {\n return $.expr.pseudos.visible(element) && !$(element).parents().addBack().filter(function () {\n return $.css(this, 'visibility') === 'hidden';\n }).length;\n }\n $.extend($.expr.pseudos, {\n kendoFocusable: function (element) {\n var idx = $.attr(element, 'tabindex');\n return focusable(element, !isNaN(idx) && idx > -1);\n }\n });\n var MOUSE_EVENTS = [\n 'mousedown',\n 'mousemove',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mouseup',\n 'click'\n ];\n var EXCLUDE_BUST_CLICK_SELECTOR = 'label, input, [data-rel=external]';\n var MouseEventNormalizer = {\n setupMouseMute: function () {\n var idx = 0, length = MOUSE_EVENTS.length, element = document.documentElement;\n if (MouseEventNormalizer.mouseTrap || !support.eventCapture) {\n return;\n }\n MouseEventNormalizer.mouseTrap = true;\n MouseEventNormalizer.bustClick = false;\n MouseEventNormalizer.captureMouse = false;\n var handler = function (e) {\n if (MouseEventNormalizer.captureMouse) {\n if (e.type === 'click') {\n if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else {\n e.stopPropagation();\n }\n }\n };\n for (; idx < length; idx++) {\n element.addEventListener(MOUSE_EVENTS[idx], handler, true);\n }\n },\n muteMouse: function (e) {\n MouseEventNormalizer.captureMouse = true;\n if (e.data.bustClick) {\n MouseEventNormalizer.bustClick = true;\n }\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n },\n unMuteMouse: function () {\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function () {\n MouseEventNormalizer.captureMouse = false;\n MouseEventNormalizer.bustClick = false;\n }, 400);\n }\n };\n var eventMap = {\n down: 'touchstart mousedown',\n move: 'mousemove touchmove',\n up: 'mouseup touchend touchcancel',\n cancel: 'mouseleave touchcancel'\n };\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: 'touchstart',\n move: 'touchmove',\n up: 'touchend touchcancel',\n cancel: 'touchcancel'\n };\n } else if (support.pointers) {\n eventMap = {\n down: 'pointerdown',\n move: 'pointermove',\n up: 'pointerup',\n cancel: 'pointercancel pointerleave'\n };\n } else if (support.msPointers) {\n eventMap = {\n down: 'MSPointerDown',\n move: 'MSPointerMove',\n up: 'MSPointerUp',\n cancel: 'MSPointerCancel MSPointerLeave'\n };\n }\n if (support.msPointers && !('onmspointerenter' in window)) {\n $.each({\n MSPointerEnter: 'MSPointerOver',\n MSPointerLeave: 'MSPointerOut'\n }, function (orig, fix) {\n $.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj;\n if (!related || related !== target && !$.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n return ret;\n }\n };\n });\n }\n var getEventMap = function (e) {\n return eventMap[e] || e;\n }, eventRegEx = /([^ ]+)/g;\n kendo.applyEventMap = function (events, ns) {\n events = events.replace(eventRegEx, getEventMap);\n if (ns) {\n events = events.replace(eventRegEx, '$1.' + ns);\n }\n return events;\n };\n var on = $.fn.on;\n function kendoJQuery(selector, context) {\n return new kendoJQuery.fn.init(selector, context);\n }\n noDepricateExtend(true, kendoJQuery, $);\n kendoJQuery.fn = kendoJQuery.prototype = new $();\n kendoJQuery.fn.constructor = kendoJQuery;\n kendoJQuery.fn.init = function (selector, context) {\n if (context && context instanceof $ && !(context instanceof kendoJQuery)) {\n context = kendoJQuery(context);\n }\n return $.fn.init.call(this, selector, context, rootjQuery);\n };\n kendoJQuery.fn.init.prototype = kendoJQuery.fn;\n var rootjQuery = kendoJQuery(document);\n extend(kendoJQuery.fn, {\n handler: function (handler) {\n this.data('handler', handler);\n return this;\n },\n autoApplyNS: function (ns) {\n this.data('kendoNS', ns || kendo.guid());\n return this;\n },\n on: function () {\n var that = this, ns = that.data('kendoNS');\n if (arguments.length === 1) {\n return on.call(that, arguments[0]);\n }\n var context = that, args = slice.call(arguments);\n if (typeof args[args.length - 1] === UNDEFINED) {\n args.pop();\n }\n var callback = args[args.length - 1], events = kendo.applyEventMap(args[0], ns);\n if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) {\n MouseEventNormalizer.setupMouseMute();\n var selector = args.length === 2 ? null : args[1], bustClick = events.indexOf('click') > -1 && events.indexOf('touchend') > -1;\n on.call(this, {\n touchstart: MouseEventNormalizer.muteMouse,\n touchend: MouseEventNormalizer.unMuteMouse\n }, selector, { bustClick: bustClick });\n }\n if (typeof callback === STRING) {\n context = that.data('handler');\n callback = context[callback];\n args[args.length - 1] = function (e) {\n callback.call(context, e);\n };\n }\n args[0] = events;\n on.apply(that, args);\n return that;\n },\n kendoDestroy: function (ns) {\n ns = ns || this.data('kendoNS');\n if (ns) {\n this.off('.' + ns);\n }\n return this;\n }\n });\n kendo.jQuery = kendoJQuery;\n kendo.eventMap = eventMap;\n kendo.timezone = function () {\n var months = {\n Jan: 0,\n Feb: 1,\n Mar: 2,\n Apr: 3,\n May: 4,\n Jun: 5,\n Jul: 6,\n Aug: 7,\n Sep: 8,\n Oct: 9,\n Nov: 10,\n Dec: 11\n };\n var days = {\n Sun: 0,\n Mon: 1,\n Tue: 2,\n Wed: 3,\n Thu: 4,\n Fri: 5,\n Sat: 6\n };\n function ruleToDate(year, rule) {\n var date;\n var targetDay;\n var ourDay;\n var month = rule[3];\n var on = rule[4];\n var time = rule[5];\n var cache = rule[8];\n if (!cache) {\n rule[8] = cache = {};\n }\n if (cache[year]) {\n return cache[year];\n }\n if (!isNaN(on)) {\n date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0));\n } else if (on.indexOf('last') === 0) {\n date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0));\n targetDay = days[on.substr(4, 3)];\n ourDay = date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n } else if (on.indexOf('>=') >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\n }\n return cache[year] = date;\n }\n function findRule(utcTime, rules, zone) {\n rules = rules[zone];\n if (!rules) {\n var time = zone.split(':');\n var offset = 0;\n if (time.length > 1) {\n offset = time[0] * 60 + Number(time[1]);\n }\n return [\n -1000000,\n 'max',\n '-',\n 'Jan',\n 1,\n [\n 0,\n 0,\n 0\n ],\n offset,\n '-'\n ];\n }\n var year = new Date(utcTime).getUTCFullYear();\n rules = jQuery.grep(rules, function (rule) {\n var from = rule[0];\n var to = rule[1];\n return from <= year && (to >= year || from == year && to == 'only' || to == 'max');\n });\n rules.push(utcTime);\n rules.sort(function (a, b) {\n if (typeof a != 'number') {\n a = Number(ruleToDate(year, a));\n }\n if (typeof b != 'number') {\n b = Number(ruleToDate(year, b));\n }\n return a - b;\n });\n var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1];\n return isNaN(rule) ? rule : null;\n }\n function findZone(utcTime, zones, timezone) {\n var zoneRules = zones[timezone];\n if (typeof zoneRules === 'string') {\n zoneRules = zones[zoneRules];\n }\n if (!zoneRules) {\n throw new Error('Timezone \"' + timezone + '\" is either incorrect, or kendo.timezones.min.js is not included.');\n }\n for (var idx = zoneRules.length - 1; idx >= 0; idx--) {\n var until = zoneRules[idx][3];\n if (until && utcTime > until) {\n break;\n }\n }\n var zone = zoneRules[idx + 1];\n if (!zone) {\n throw new Error('Timezone \"' + timezone + '\" not found on ' + utcTime + '.');\n }\n return zone;\n }\n function zoneAndRule(utcTime, zones, rules, timezone) {\n if (typeof utcTime != NUMBER) {\n utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(), utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(), utcTime.getSeconds(), utcTime.getMilliseconds());\n }\n var zone = findZone(utcTime, zones, timezone);\n return {\n zone: zone,\n rule: findRule(utcTime, rules, zone[1])\n };\n }\n function offset(utcTime, timezone) {\n if (timezone == 'Etc/UTC' || timezone == 'Etc/GMT') {\n return 0;\n }\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n return kendo.parseFloat(rule ? zone[0] - rule[6] : zone[0]);\n }\n function abbr(utcTime, timezone) {\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n var base = zone[2];\n if (base.indexOf('/') >= 0) {\n return base.split('/')[rule && +rule[6] ? 1 : 0];\n } else if (base.indexOf('%s') >= 0) {\n return base.replace('%s', !rule || rule[7] == '-' ? '' : rule[7]);\n }\n return base;\n }\n function convert(date, fromOffset, toOffset) {\n var tempToOffset = toOffset;\n var diff;\n if (typeof fromOffset == STRING) {\n fromOffset = this.offset(date, fromOffset);\n }\n if (typeof toOffset == STRING) {\n toOffset = this.offset(date, toOffset);\n }\n var fromLocalOffset = date.getTimezoneOffset();\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = date.getTimezoneOffset();\n if (typeof tempToOffset == STRING) {\n tempToOffset = this.offset(date, tempToOffset);\n }\n diff = toLocalOffset - fromLocalOffset + (toOffset - tempToOffset);\n return new Date(date.getTime() + diff * 60000);\n }\n function apply(date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n }\n function remove(date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n }\n function toLocalDate(time) {\n return this.apply(new Date(time), 'Etc/UTC');\n }\n return {\n zones: {},\n rules: {},\n offset: offset,\n convert: convert,\n apply: apply,\n remove: remove,\n abbr: abbr,\n toLocalDate: toLocalDate\n };\n }();\n kendo.date = function () {\n var MS_PER_MINUTE = 60000, MS_PER_DAY = 86400000;\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n return false;\n }\n function setDayOfWeek(date, day, dir) {\n var hours = date.getHours();\n dir = dir || 1;\n day = (day - date.getDay() + 7 * dir) % 7;\n date.setDate(date.getDate() + day);\n adjustDST(date, hours);\n }\n function dayOfWeek(date, day, dir) {\n date = new Date(date);\n setDayOfWeek(date, day, dir);\n return date;\n }\n function firstDayOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n }\n function lastDayOfMonth(date) {\n var last = new Date(date.getFullYear(), date.getMonth() + 1, 0), first = firstDayOfMonth(date), timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n if (timeOffset) {\n last.setHours(first.getHours() + timeOffset / 60);\n }\n return last;\n }\n function moveDateToWeekStart(date, weekStartDay) {\n if (weekStartDay !== 1) {\n return addDays(dayOfWeek(date, weekStartDay, -1), 4);\n }\n return addDays(date, 4 - (date.getDay() || 7));\n }\n function calcWeekInYear(date, weekStartDay) {\n var firstWeekInYear = new Date(date.getFullYear(), 0, 1, -6);\n var newDate = moveDateToWeekStart(date, weekStartDay);\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n var days = Math.floor(diffInMS / MS_PER_DAY);\n return 1 + Math.floor(days / 7);\n }\n function weekInYear(date, weekStartDay) {\n if (weekStartDay === undefined) {\n weekStartDay = kendo.culture().calendar.firstDay;\n }\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n var weekNumber = calcWeekInYear(date, weekStartDay);\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n return weekNumber;\n }\n function getDate(date) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n adjustDST(date, 0);\n return date;\n }\n function toUtcTime(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n function getMilliseconds(date) {\n return toInvariantTime(date).getTime() - getDate(toInvariantTime(date));\n }\n function isInTimeRange(value, min, max) {\n var msMin = getMilliseconds(min), msMax = getMilliseconds(max), msValue;\n if (!value || msMin == msMax) {\n return true;\n }\n if (min >= max) {\n max += MS_PER_DAY;\n }\n msValue = getMilliseconds(value);\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n return msValue >= msMin && msValue <= msMax;\n }\n function isInDateRange(value, min, max) {\n var msMin = min.getTime(), msMax = max.getTime(), msValue;\n if (msMin >= msMax) {\n msMax += MS_PER_DAY;\n }\n msValue = value.getTime();\n return msValue >= msMin && msValue <= msMax;\n }\n function addDays(date, offset) {\n var hours = date.getHours();\n date = new Date(date);\n setTime(date, offset * MS_PER_DAY);\n adjustDST(date, hours);\n return date;\n }\n function setTime(date, milliseconds, ignoreDST) {\n var offset = date.getTimezoneOffset();\n var difference;\n date.setTime(date.getTime() + milliseconds);\n if (!ignoreDST) {\n difference = date.getTimezoneOffset() - offset;\n date.setTime(date.getTime() + difference * MS_PER_MINUTE);\n }\n }\n function setHours(date, time) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n adjustDST(date, time.getHours());\n return date;\n }\n function today() {\n return getDate(new Date());\n }\n function isToday(date) {\n return getDate(date).getTime() == today().getTime();\n }\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n if (date) {\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n return staticDate;\n }\n return {\n adjustDST: adjustDST,\n dayOfWeek: dayOfWeek,\n setDayOfWeek: setDayOfWeek,\n getDate: getDate,\n isInDateRange: isInDateRange,\n isInTimeRange: isInTimeRange,\n isToday: isToday,\n nextDay: function (date) {\n return addDays(date, 1);\n },\n previousDay: function (date) {\n return addDays(date, -1);\n },\n toUtcTime: toUtcTime,\n MS_PER_DAY: MS_PER_DAY,\n MS_PER_HOUR: 60 * MS_PER_MINUTE,\n MS_PER_MINUTE: MS_PER_MINUTE,\n setTime: setTime,\n setHours: setHours,\n addDays: addDays,\n today: today,\n toInvariantTime: toInvariantTime,\n firstDayOfMonth: firstDayOfMonth,\n lastDayOfMonth: lastDayOfMonth,\n weekInYear: weekInYear,\n getMilliseconds: getMilliseconds\n };\n }();\n kendo.stripWhitespace = function (element) {\n if (document.createNodeIterator) {\n var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function (node) {\n return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }, false);\n while (iterator.nextNode()) {\n if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) {\n iterator.referenceNode.parentNode.removeChild(iterator.referenceNode);\n }\n }\n } else {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n if (child.nodeType == 3 && !/\\S/.test(child.nodeValue)) {\n element.removeChild(child);\n i--;\n }\n if (child.nodeType == 1) {\n kendo.stripWhitespace(child);\n }\n }\n }\n };\n var animationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n setTimeout(callback, 1000 / 60);\n };\n kendo.animationFrame = function (callback) {\n animationFrame.call(window, callback);\n };\n var animationQueue = [];\n kendo.queueAnimation = function (callback) {\n animationQueue[animationQueue.length] = callback;\n if (animationQueue.length === 1) {\n kendo.runNextAnimation();\n }\n };\n kendo.runNextAnimation = function () {\n kendo.animationFrame(function () {\n if (animationQueue[0]) {\n animationQueue.shift()();\n if (animationQueue[0]) {\n kendo.runNextAnimation();\n }\n }\n });\n };\n kendo.parseQueryStringParams = function (url) {\n var queryString = url.split('?')[1] || '', params = {}, paramParts = queryString.split(/&|=/), length = paramParts.length, idx = 0;\n for (; idx < length; idx += 2) {\n if (paramParts[idx] !== '') {\n params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]);\n }\n }\n return params;\n };\n kendo.elementUnderCursor = function (e) {\n if (typeof e.x.client != 'undefined') {\n return document.elementFromPoint(e.x.client, e.y.client);\n }\n };\n kendo.wheelDeltaY = function (jQueryEvent) {\n var e = jQueryEvent.originalEvent, deltaY = e.wheelDeltaY, delta;\n if (e.wheelDelta) {\n if (deltaY === undefined || deltaY) {\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) {\n delta = -e.detail * 10;\n }\n return delta;\n };\n kendo.throttle = function (fn, delay) {\n var timeout;\n var lastExecTime = 0;\n if (!delay || delay <= 0) {\n return fn;\n }\n var throttled = function () {\n var that = this;\n var elapsed = +new Date() - lastExecTime;\n var args = arguments;\n function exec() {\n fn.apply(that, args);\n lastExecTime = +new Date();\n }\n if (!lastExecTime) {\n return exec();\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n };\n return throttled;\n };\n kendo.caret = function (element, start, end) {\n var rangeElement;\n var isPosition = start !== undefined;\n if (end === undefined) {\n end = start;\n }\n if (element[0]) {\n element = element[0];\n }\n if (isPosition && element.disabled) {\n return;\n }\n try {\n if (element.selectionStart !== undefined) {\n if (isPosition) {\n element.focus();\n var mobile = support.mobileOS;\n if (mobile.wp || mobile.android) {\n setTimeout(function () {\n element.setSelectionRange(start, end);\n }, 0);\n } else {\n element.setSelectionRange(start, end);\n }\n } else {\n start = [\n element.selectionStart,\n element.selectionEnd\n ];\n }\n } else if (document.selection) {\n if ($(element).is(':visible')) {\n element.focus();\n }\n rangeElement = element.createTextRange();\n if (isPosition) {\n rangeElement.collapse(true);\n rangeElement.moveStart('character', start);\n rangeElement.moveEnd('character', end - start);\n rangeElement.select();\n } else {\n var rangeDuplicated = rangeElement.duplicate(), selectionStart, selectionEnd;\n rangeElement.moveToBookmark(document.selection.createRange().getBookmark());\n rangeDuplicated.setEndPoint('EndToStart', rangeElement);\n selectionStart = rangeDuplicated.text.length;\n selectionEnd = selectionStart + rangeElement.text.length;\n start = [\n selectionStart,\n selectionEnd\n ];\n }\n }\n } catch (e) {\n start = [];\n }\n return start;\n };\n kendo.compileMobileDirective = function (element, scope) {\n var angular = window.angular;\n element.attr('data-' + kendo.ns + 'role', element[0].tagName.toLowerCase().replace('kendo-mobile-', '').replace('-', ''));\n angular.element(element).injector().invoke([\n '$compile',\n function ($compile) {\n $compile(element)(scope);\n if (!/^\\$(digest|apply)$/.test(scope.$$phase)) {\n scope.$digest();\n }\n }\n ]);\n return kendo.widgetInstance(element, kendo.mobile.ui);\n };\n kendo.antiForgeryTokens = function () {\n var tokens = {}, csrf_token = $('meta[name=csrf-token],meta[name=_csrf]').attr('content'), csrf_param = $('meta[name=csrf-param],meta[name=_csrf_header]').attr('content');\n $('input[name^=\\'__RequestVerificationToken\\']').each(function () {\n tokens[this.name] = this.value;\n });\n if (csrf_param !== undefined && csrf_token !== undefined) {\n tokens[csrf_param] = csrf_token;\n }\n return tokens;\n };\n kendo.cycleForm = function (form) {\n var firstElement = form.find('input, .k-widget').first();\n var lastElement = form.find('button, .k-button').last();\n function focus(el) {\n var widget = kendo.widgetInstance(el);\n if (widget && widget.focus) {\n widget.focus();\n } else {\n el.focus();\n }\n }\n lastElement.on('keydown', function (e) {\n if (e.keyCode == kendo.keys.TAB && !e.shiftKey) {\n e.preventDefault();\n focus(firstElement);\n }\n });\n firstElement.on('keydown', function (e) {\n if (e.keyCode == kendo.keys.TAB && e.shiftKey) {\n e.preventDefault();\n focus(lastElement);\n }\n });\n };\n kendo.focusElement = function (element) {\n var scrollTopPositions = [];\n var scrollableParents = element.parentsUntil('body').filter(function (index, element) {\n var computedStyle = kendo.getComputedStyles(element, ['overflow']);\n return computedStyle.overflow !== 'visible';\n }).add(window);\n scrollableParents.each(function (index, parent) {\n scrollTopPositions[index] = $(parent).scrollTop();\n });\n try {\n element[0].setActive();\n } catch (e) {\n element[0].focus();\n }\n scrollableParents.each(function (index, parent) {\n $(parent).scrollTop(scrollTopPositions[index]);\n });\n };\n kendo.matchesMedia = function (mediaQuery) {\n var media = kendo._bootstrapToMedia(mediaQuery) || mediaQuery;\n return support.matchMedia && window.matchMedia(media).matches;\n };\n kendo._bootstrapToMedia = function (bootstrapMedia) {\n return {\n 'xs': '(max-width: 576px)',\n 'sm': '(min-width: 576px)',\n 'md': '(min-width: 768px)',\n 'lg': '(min-width: 992px)',\n 'xl': '(min-width: 1200px)'\n }[bootstrapMedia];\n };\n (function () {\n function postToProxy(dataURI, fileName, proxyURL, proxyTarget) {\n var form = $('<form>').attr({\n action: proxyURL,\n method: 'POST',\n target: proxyTarget\n });\n var data = kendo.antiForgeryTokens();\n data.fileName = fileName;\n var parts = dataURI.split(';base64,');\n data.contentType = parts[0].replace('data:', '');\n data.base64 = parts[1];\n for (var name in data) {\n if (data.hasOwnProperty(name)) {\n $('<input>').attr({\n value: data[name],\n name: name,\n type: 'hidden'\n }).appendTo(form);\n }\n }\n form.appendTo('body').submit().remove();\n }\n var fileSaver = document.createElement('a');\n var downloadAttribute = 'download' in fileSaver && !kendo.support.browser.edge;\n function saveAsBlob(dataURI, fileName) {\n var blob = dataURI;\n if (typeof dataURI == 'string') {\n var parts = dataURI.split(';base64,');\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n blob = new Blob([array.buffer], { type: contentType });\n }\n navigator.msSaveBlob(blob, fileName);\n }\n function saveAsDataURI(dataURI, fileName) {\n if (window.Blob && dataURI instanceof Blob) {\n dataURI = URL.createObjectURL(dataURI);\n }\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n var e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n fileSaver.dispatchEvent(e);\n setTimeout(function () {\n URL.revokeObjectURL(dataURI);\n });\n }\n kendo.saveAs = function (options) {\n var save = postToProxy;\n if (!options.forceProxy) {\n if (downloadAttribute) {\n save = saveAsDataURI;\n } else if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget);\n };\n }());\n kendo.proxyModelSetters = function proxyModelSetters(data) {\n var observable = {};\n Object.keys(data || {}).forEach(function (property) {\n Object.defineProperty(observable, property, {\n get: function () {\n return data[property];\n },\n set: function (value) {\n data[property] = value;\n data.dirty = true;\n }\n });\n });\n return observable;\n };\n }(jQuery, window));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.router', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'router',\n name: 'Router',\n category: 'framework',\n description: 'The Router class is responsible for tracking the application state and navigating between the application states.',\n depends: ['core'],\n hidden: false\n };\n (function ($, undefined) {\n var kendo = window.kendo, CHANGE = 'change', BACK = 'back', SAME = 'same', support = kendo.support, location = window.location, history = window.history, CHECK_URL_INTERVAL = 50, BROKEN_BACK_NAV = kendo.support.browser.msie, hashStrip = /^#*/, document = window.document;\n function absoluteURL(path, pathPrefix) {\n if (!pathPrefix) {\n return path;\n }\n if (path + '/' === pathPrefix) {\n path = pathPrefix;\n }\n var regEx = new RegExp('^' + pathPrefix, 'i');\n if (!regEx.test(path)) {\n path = pathPrefix + '/' + path;\n }\n return location.protocol + '//' + (location.host + '/' + path).replace(/\\/\\/+/g, '/');\n }\n function hashDelimiter(bang) {\n return bang ? '#!' : '#';\n }\n function locationHash(hashDelimiter) {\n var href = location.href;\n if (hashDelimiter === '#!' && href.indexOf('#') > -1 && href.indexOf('#!') < 0) {\n return null;\n }\n return href.split(hashDelimiter)[1] || '';\n }\n function stripRoot(root, url) {\n if (url.indexOf(root) === 0) {\n return url.substr(root.length).replace(/\\/\\//g, '/');\n } else {\n return url;\n }\n }\n var HistoryAdapter = kendo.Class.extend({\n back: function () {\n if (BROKEN_BACK_NAV) {\n setTimeout(function () {\n history.back();\n });\n } else {\n history.back();\n }\n },\n forward: function () {\n if (BROKEN_BACK_NAV) {\n setTimeout(function () {\n history.forward();\n });\n } else {\n history.forward();\n }\n },\n length: function () {\n return history.length;\n },\n replaceLocation: function (url) {\n location.replace(url);\n }\n });\n var PushStateAdapter = HistoryAdapter.extend({\n init: function (root) {\n this.root = root;\n },\n navigate: function (to) {\n history.pushState({}, document.title, absoluteURL(to, this.root));\n },\n replace: function (to) {\n history.replaceState({}, document.title, absoluteURL(to, this.root));\n },\n normalize: function (url) {\n return stripRoot(this.root, url);\n },\n current: function () {\n var current = location.pathname;\n if (location.search) {\n current += location.search;\n }\n return stripRoot(this.root, current);\n },\n change: function (callback) {\n $(window).bind('popstate.kendo', callback);\n },\n stop: function () {\n $(window).unbind('popstate.kendo');\n },\n normalizeCurrent: function (options) {\n var fixedUrl, root = options.root, pathname = location.pathname, hash = locationHash(hashDelimiter(options.hashBang));\n if (root === pathname + '/') {\n fixedUrl = root;\n }\n if (root === pathname && hash) {\n fixedUrl = absoluteURL(hash.replace(hashStrip, ''), root);\n }\n if (fixedUrl) {\n history.pushState({}, document.title, fixedUrl);\n }\n }\n });\n function fixHash(url) {\n return url.replace(/^(#)?/, '#');\n }\n function fixBang(url) {\n return url.replace(/^(#(!)?)?/, '#!');\n }\n var HashAdapter = HistoryAdapter.extend({\n init: function (bang) {\n this._id = kendo.guid();\n this.prefix = hashDelimiter(bang);\n this.fix = bang ? fixBang : fixHash;\n },\n navigate: function (to) {\n location.hash = this.fix(to);\n },\n replace: function (to) {\n this.replaceLocation(this.fix(to));\n },\n normalize: function (url) {\n if (url.indexOf(this.prefix) < 0) {\n return url;\n } else {\n return url.split(this.prefix)[1];\n }\n },\n change: function (callback) {\n if (support.hashChange) {\n $(window).on('hashchange.' + this._id, callback);\n } else {\n this._interval = setInterval(callback, CHECK_URL_INTERVAL);\n }\n },\n stop: function () {\n $(window).off('hashchange.' + this._id);\n clearInterval(this._interval);\n },\n current: function () {\n return locationHash(this.prefix);\n },\n normalizeCurrent: function (options) {\n var pathname = location.pathname, root = options.root;\n if (options.pushState && root !== pathname) {\n this.replaceLocation(root + this.prefix + stripRoot(root, pathname));\n return true;\n }\n return false;\n }\n });\n var History = kendo.Observable.extend({\n start: function (options) {\n options = options || {};\n this.bind([\n CHANGE,\n BACK,\n SAME\n ], options);\n if (this._started) {\n return;\n }\n this._started = true;\n options.root = options.root || '/';\n var adapter = this.createAdapter(options), current;\n if (adapter.normalizeCurrent(options)) {\n return;\n }\n current = adapter.current();\n $.extend(this, {\n adapter: adapter,\n root: options.root,\n historyLength: adapter.length(),\n current: current,\n locations: [current]\n });\n adapter.change($.proxy(this, '_checkUrl'));\n },\n createAdapter: function (options) {\n return support.pushState && options.pushState ? new PushStateAdapter(options.root) : new HashAdapter(options.hashBang);\n },\n stop: function () {\n if (!this._started) {\n return;\n }\n this.adapter.stop();\n this.unbind(CHANGE);\n this._started = false;\n },\n change: function (callback) {\n this.bind(CHANGE, callback);\n },\n replace: function (to, silent) {\n this._navigate(to, silent, function (adapter) {\n adapter.replace(to);\n this.locations[this.locations.length - 1] = this.current;\n });\n },\n navigate: function (to, silent) {\n if (to === '#:back') {\n this.backCalled = true;\n this.adapter.back();\n return;\n }\n this._navigate(to, silent, function (adapter) {\n adapter.navigate(to);\n this.locations.push(this.current);\n });\n },\n _navigate: function (to, silent, callback) {\n var adapter = this.adapter;\n to = adapter.normalize(to);\n if (this.current === to || this.current === decodeURIComponent(to)) {\n this.trigger(SAME);\n return;\n }\n if (!silent) {\n if (this.trigger(CHANGE, {\n url: to,\n decode: false\n })) {\n return;\n }\n }\n this.current = to;\n callback.call(this, adapter);\n this.historyLength = adapter.length();\n },\n _checkUrl: function () {\n var adapter = this.adapter, current = adapter.current(), newLength = adapter.length(), navigatingInExisting = this.historyLength === newLength, back = current === this.locations[this.locations.length - 2] && navigatingInExisting, backCalled = this.backCalled, prev = this.current;\n if (current === null || this.current === current || this.current === decodeURIComponent(current)) {\n return true;\n }\n this.historyLength = newLength;\n this.backCalled = false;\n this.current = current;\n if (back && this.trigger('back', {\n url: prev,\n to: current\n })) {\n adapter.forward();\n this.current = prev;\n return;\n }\n if (this.trigger(CHANGE, {\n url: current,\n backButtonPressed: !backCalled\n })) {\n if (back) {\n adapter.forward();\n } else {\n adapter.back();\n this.historyLength--;\n }\n this.current = prev;\n return;\n }\n if (back) {\n this.locations.pop();\n } else {\n this.locations.push(current);\n }\n }\n });\n kendo.History = History;\n kendo.History.HistoryAdapter = HistoryAdapter;\n kendo.History.HashAdapter = HashAdapter;\n kendo.History.PushStateAdapter = PushStateAdapter;\n kendo.absoluteURL = absoluteURL;\n kendo.history = new History();\n }(window.kendo.jQuery));\n (function () {\n var kendo = window.kendo, history = kendo.history, Observable = kendo.Observable, INIT = 'init', ROUTE_MISSING = 'routeMissing', CHANGE = 'change', BACK = 'back', SAME = 'same', optionalParam = /\\((.*?)\\)/g, namedParam = /(\\(\\?)?:\\w+/g, splatParam = /\\*\\w+/g, escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n function namedParamReplace(match, optional) {\n return optional ? match : '([^/]+)';\n }\n function routeToRegExp(route, ignoreCase) {\n return new RegExp('^' + route.replace(escapeRegExp, '\\\\$&').replace(optionalParam, '(?:$1)?').replace(namedParam, namedParamReplace).replace(splatParam, '(.*?)') + '$', ignoreCase ? 'i' : '');\n }\n function stripUrl(url) {\n return url.replace(/(\\?.*)|(#.*)/g, '');\n }\n var Route = kendo.Class.extend({\n init: function (route, callback, ignoreCase) {\n if (!(route instanceof RegExp)) {\n route = routeToRegExp(route, ignoreCase);\n }\n this.route = route;\n this._callback = callback;\n },\n callback: function (url, back, decode) {\n var params, idx = 0, length, queryStringParams = kendo.parseQueryStringParams(url);\n queryStringParams._back = back;\n url = stripUrl(url);\n params = this.route.exec(url).slice(1);\n length = params.length;\n if (decode) {\n for (; idx < length; idx++) {\n if (typeof params[idx] !== 'undefined') {\n params[idx] = decodeURIComponent(params[idx]);\n }\n }\n }\n params.push(queryStringParams);\n this._callback.apply(null, params);\n },\n worksWith: function (url, back, decode) {\n if (this.route.test(stripUrl(url))) {\n this.callback(url, back, decode);\n return true;\n } else {\n return false;\n }\n }\n });\n var Router = Observable.extend({\n init: function (options) {\n if (!options) {\n options = {};\n }\n Observable.fn.init.call(this);\n this.routes = [];\n this.pushState = options.pushState;\n this.hashBang = options.hashBang;\n this.root = options.root;\n this.ignoreCase = options.ignoreCase !== false;\n this.bind([\n INIT,\n ROUTE_MISSING,\n CHANGE,\n SAME,\n BACK\n ], options);\n },\n destroy: function () {\n history.unbind(CHANGE, this._urlChangedProxy);\n history.unbind(SAME, this._sameProxy);\n history.unbind(BACK, this._backProxy);\n this.unbind();\n },\n start: function () {\n var that = this, sameProxy = function () {\n that._same();\n }, backProxy = function (e) {\n that._back(e);\n }, urlChangedProxy = function (e) {\n that._urlChanged(e);\n };\n history.start({\n same: sameProxy,\n change: urlChangedProxy,\n back: backProxy,\n pushState: that.pushState,\n hashBang: that.hashBang,\n root: that.root\n });\n var initEventObject = {\n url: history.current || '/',\n preventDefault: $.noop\n };\n if (!that.trigger(INIT, initEventObject)) {\n that._urlChanged(initEventObject);\n }\n this._urlChangedProxy = urlChangedProxy;\n this._backProxy = backProxy;\n },\n route: function (route, callback) {\n this.routes.push(new Route(route, callback, this.ignoreCase));\n },\n navigate: function (url, silent) {\n kendo.history.navigate(url, silent);\n },\n replace: function (url, silent) {\n kendo.history.replace(url, silent);\n },\n _back: function (e) {\n if (this.trigger(BACK, {\n url: e.url,\n to: e.to\n })) {\n e.preventDefault();\n }\n },\n _same: function () {\n this.trigger(SAME);\n },\n _urlChanged: function (e) {\n var url = e.url;\n var decode = !!e.decode;\n var back = e.backButtonPressed;\n if (!url) {\n url = '/';\n }\n if (this.trigger(CHANGE, {\n url: e.url,\n params: kendo.parseQueryStringParams(e.url),\n backButtonPressed: back\n })) {\n e.preventDefault();\n return;\n }\n var idx = 0, routes = this.routes, route, length = routes.length;\n for (; idx < length; idx++) {\n route = routes[idx];\n if (route.worksWith(url, back, decode)) {\n return;\n }\n }\n if (this.trigger(ROUTE_MISSING, {\n url: url,\n params: kendo.parseQueryStringParams(url),\n backButtonPressed: back\n })) {\n e.preventDefault();\n }\n }\n });\n kendo.Router = Router;\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.data.odata', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'data.odata',\n name: 'OData',\n category: 'framework',\n depends: ['core'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, NEWLINE = '\\r\\n', DOUBLELINE = '\\r\\n\\r\\n', isFunction = kendo.isFunction, odataFilters = {\n eq: 'eq',\n neq: 'ne',\n gt: 'gt',\n gte: 'ge',\n lt: 'lt',\n lte: 'le',\n contains: 'substringof',\n doesnotcontain: 'substringof',\n endswith: 'endswith',\n startswith: 'startswith',\n isnull: 'eq',\n isnotnull: 'ne',\n isnullorempty: 'eq',\n isnotnullorempty: 'ne',\n isempty: 'eq',\n isnotempty: 'ne'\n }, odataFiltersVersionFour = extend({}, odataFilters, { contains: 'contains' }), mappers = {\n pageSize: $.noop,\n page: $.noop,\n filter: function (params, filter, useVersionFour) {\n if (filter) {\n filter = toOdataFilter(filter, useVersionFour);\n if (filter) {\n params.$filter = filter;\n }\n }\n },\n sort: function (params, orderby) {\n var expr = $.map(orderby, function (value) {\n var order = value.field.replace(/\\./g, '/');\n if (value.dir === 'desc') {\n order += ' desc';\n }\n return order;\n }).join(',');\n if (expr) {\n params.$orderby = expr;\n }\n },\n skip: function (params, skip) {\n if (skip) {\n params.$skip = skip;\n }\n },\n take: function (params, take) {\n if (take) {\n params.$top = take;\n }\n }\n }, defaultDataType = { read: { dataType: 'jsonp' } };\n function toOdataFilter(filter, useOdataFour) {\n var result = [], logic = filter.logic || 'and', idx, length, field, type, format, operator, value, ignoreCase, filters = filter.filters;\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n value = filter.value;\n operator = filter.operator;\n if (filter.filters) {\n filter = toOdataFilter(filter, useOdataFour);\n } else {\n ignoreCase = filter.ignoreCase;\n field = field.replace(/\\./g, '/');\n filter = odataFilters[operator];\n if (useOdataFour) {\n filter = odataFiltersVersionFour[operator];\n }\n if (operator === 'isnullorempty') {\n filter = kendo.format('{0} {1} null or {0} {1} \\'\\'', field, filter);\n } else if (operator === 'isnotnullorempty') {\n filter = kendo.format('{0} {1} null and {0} {1} \\'\\'', field, filter);\n } else if (operator === 'isnull' || operator === 'isnotnull') {\n filter = kendo.format('{0} {1} null', field, filter);\n } else if (operator === 'isempty' || operator === 'isnotempty') {\n filter = kendo.format('{0} {1} \\'\\'', field, filter);\n } else if (filter && value !== undefined) {\n type = $.type(value);\n if (type === 'string') {\n format = '\\'{1}\\'';\n value = value.replace(/'/g, '\\'\\'');\n if (ignoreCase === true) {\n field = 'tolower(' + field + ')';\n }\n } else if (type === 'date') {\n if (useOdataFour) {\n format = '{1:yyyy-MM-ddTHH:mm:ss+00:00}';\n value = kendo.timezone.apply(value, 'Etc/UTC');\n } else {\n format = 'datetime\\'{1:yyyy-MM-ddTHH:mm:ss}\\'';\n }\n } else {\n format = '{1}';\n }\n if (filter.length > 3) {\n if (filter !== 'substringof') {\n format = '{0}({2},' + format + ')';\n } else {\n format = '{0}(' + format + ',{2})';\n if (operator === 'doesnotcontain') {\n if (useOdataFour) {\n format = '{0}({2},\\'{1}\\') eq -1';\n filter = 'indexof';\n } else {\n format += ' eq false';\n }\n }\n }\n } else {\n format = '{2} {0} ' + format;\n }\n filter = kendo.format(format, filter, value, field);\n }\n }\n result.push(filter);\n }\n filter = result.join(' ' + logic + ' ');\n if (result.length > 1) {\n filter = '(' + filter + ')';\n }\n return filter;\n }\n function stripMetadata(obj) {\n for (var name in obj) {\n if (name.indexOf('@odata') === 0) {\n delete obj[name];\n }\n }\n }\n function hex16() {\n return Math.floor((1 + Math.random()) * 65536).toString(16).substr(1);\n }\n function createBoundary(prefix) {\n return prefix + hex16() + '-' + hex16() + '-' + hex16();\n }\n function createDelimeter(boundary, close) {\n var result = NEWLINE + '--' + boundary;\n if (close) {\n result += '--';\n }\n return result;\n }\n function createCommand(transport, item, httpVerb, command) {\n var transportUrl = transport.options[command].url;\n var commandPrefix = kendo.format('{0} ', httpVerb);\n if (isFunction(transportUrl)) {\n return commandPrefix + transportUrl(item);\n } else {\n return commandPrefix + transportUrl;\n }\n }\n function getOperationHeader(changeset, changeId) {\n var header = '';\n header += createDelimeter(changeset, false);\n header += NEWLINE + 'Content-Type: application/http';\n header += NEWLINE + 'Content-Transfer-Encoding: binary';\n header += NEWLINE + 'Content-ID: ' + changeId;\n return header;\n }\n function getOperationContent(item) {\n var content = '';\n content += NEWLINE + 'Content-Type: application/json;odata=minimalmetadata';\n content += NEWLINE + 'Prefer: return=representation';\n content += DOUBLELINE + kendo.stringify(item);\n return content;\n }\n function getOperations(collection, changeset, changeId, command, transport, skipContent) {\n var requestBody = '';\n for (var i = 0; i < collection.length; i++) {\n requestBody += getOperationHeader(changeset, changeId);\n requestBody += DOUBLELINE + createCommand(transport, collection[i], transport.options[command].type, command) + ' HTTP/1.1';\n if (!skipContent) {\n requestBody += getOperationContent(collection[i]);\n }\n requestBody += NEWLINE;\n changeId++;\n }\n return requestBody;\n }\n function processCollection(colection, boundary, changeset, changeId, transport, command, skipContent) {\n var requestBody = '';\n requestBody += getBoundary(boundary, changeset);\n requestBody += getOperations(colection, changeset, changeId, command, transport, skipContent);\n requestBody += createDelimeter(changeset, true);\n requestBody += NEWLINE;\n return requestBody;\n }\n function getBoundary(boundary, changeset) {\n var requestBody = '';\n requestBody += '--' + boundary + NEWLINE;\n requestBody += 'Content-Type: multipart/mixed; boundary=' + changeset + NEWLINE;\n return requestBody;\n }\n function createBatchRequest(transport, colections) {\n var options = {};\n var boundary = createBoundary('sf_batch_');\n var requestBody = '';\n var changeId = 0;\n var batchURL = transport.options.batch.url;\n var changeset = createBoundary('sf_changeset_');\n options.type = transport.options.batch.type;\n options.url = isFunction(batchURL) ? batchURL() : batchURL;\n options.headers = { 'Content-Type': 'multipart/mixed; boundary=' + boundary };\n if (colections.updated.length) {\n requestBody += processCollection(colections.updated, boundary, changeset, changeId, transport, 'update', false);\n changeId += colections.updated.length;\n changeset = createBoundary('sf_changeset_');\n }\n if (colections.destroyed.length) {\n requestBody += processCollection(colections.destroyed, boundary, changeset, changeId, transport, 'destroy', true);\n changeId += colections.destroyed.length;\n changeset = createBoundary('sf_changeset_');\n }\n if (colections.created.length) {\n requestBody += processCollection(colections.created, boundary, changeset, changeId, transport, 'create', false);\n }\n requestBody += createDelimeter(boundary, true);\n options.data = requestBody;\n return options;\n }\n function parseBatchResponse(responseText) {\n var responseMarkers = responseText.match(/--changesetresponse_[a-z0-9-]+$/gm);\n var markerIndex = 0;\n var collections = [];\n var changeBody;\n var status;\n var code;\n var marker;\n var jsonModel;\n collections.push({\n models: [],\n passed: true\n });\n for (var i = 0; i < responseMarkers.length; i++) {\n marker = responseMarkers[i];\n if (marker.lastIndexOf('--', marker.length - 1)) {\n if (i < responseMarkers.length - 1) {\n collections.push({\n models: [],\n passed: true\n });\n }\n continue;\n }\n if (!markerIndex) {\n markerIndex = responseText.indexOf(marker);\n } else {\n markerIndex = responseText.indexOf(marker, markerIndex + marker.length);\n }\n changeBody = responseText.substring(markerIndex, responseText.indexOf('--', markerIndex + 1));\n status = changeBody.match(/^HTTP\\/1\\.\\d (\\d{3}) (.*)$/gm).pop();\n code = kendo.parseFloat(status.match(/\\d{3}/g).pop());\n if (code >= 200 && code <= 299) {\n jsonModel = changeBody.match(/\\{.*\\}/gm);\n if (jsonModel) {\n collections[collections.length - 1].models.push(JSON.parse(jsonModel[0]));\n }\n } else {\n collections[collections.length - 1].passed = false;\n }\n }\n return collections;\n }\n extend(true, kendo.data, {\n schemas: {\n odata: {\n type: 'json',\n data: function (data) {\n return data.d.results || [data.d];\n },\n total: 'd.__count'\n }\n },\n transports: {\n odata: {\n read: {\n cache: true,\n dataType: 'jsonp',\n jsonp: '$callback'\n },\n update: {\n cache: true,\n dataType: 'json',\n contentType: 'application/json',\n type: 'PUT'\n },\n create: {\n cache: true,\n dataType: 'json',\n contentType: 'application/json',\n type: 'POST'\n },\n destroy: {\n cache: true,\n dataType: 'json',\n type: 'DELETE'\n },\n parameterMap: function (options, type, useVersionFour) {\n var params, value, option, dataType;\n options = options || {};\n type = type || 'read';\n dataType = (this.options || defaultDataType)[type];\n dataType = dataType ? dataType.dataType : 'json';\n if (type === 'read') {\n params = { $inlinecount: 'allpages' };\n if (dataType != 'json') {\n params.$format = 'json';\n }\n for (option in options) {\n if (mappers[option]) {\n mappers[option](params, options[option], useVersionFour);\n } else {\n params[option] = options[option];\n }\n }\n } else {\n if (dataType !== 'json') {\n throw new Error('Only json dataType can be used for ' + type + ' operation.');\n }\n if (type !== 'destroy') {\n for (option in options) {\n value = options[option];\n if (typeof value === 'number') {\n options[option] = value + '';\n }\n }\n params = kendo.stringify(options);\n }\n }\n return params;\n }\n }\n }\n });\n extend(true, kendo.data, {\n schemas: {\n 'odata-v4': {\n type: 'json',\n data: function (data) {\n if ($.isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n stripMetadata(data[i]);\n }\n return data;\n } else {\n data = $.extend({}, data);\n stripMetadata(data);\n if (data.value) {\n return data.value;\n }\n return [data];\n }\n },\n total: function (data) {\n return data['@odata.count'];\n }\n }\n },\n transports: {\n 'odata-v4': {\n batch: { type: 'POST' },\n read: {\n cache: true,\n dataType: 'json'\n },\n update: {\n cache: true,\n dataType: 'json',\n contentType: 'application/json;IEEE754Compatible=true',\n type: 'PUT'\n },\n create: {\n cache: true,\n dataType: 'json',\n contentType: 'application/json;IEEE754Compatible=true',\n type: 'POST'\n },\n destroy: {\n cache: true,\n dataType: 'json',\n type: 'DELETE'\n },\n parameterMap: function (options, type) {\n var result = kendo.data.transports.odata.parameterMap(options, type, true);\n if (type == 'read') {\n result.$count = true;\n delete result.$inlinecount;\n }\n return result;\n },\n submit: function (e) {\n var that = this;\n var options = createBatchRequest(that, e.data);\n var collections = e.data;\n if (!collections.updated.length && !collections.destroyed.length && !collections.created.length) {\n return;\n }\n $.ajax(extend(true, {}, {\n success: function (response) {\n var responses = parseBatchResponse(response);\n var index = 0;\n var current;\n if (collections.updated.length) {\n current = responses[index];\n if (current.passed) {\n e.success(current.models.length ? current.models : [], 'update');\n }\n index++;\n }\n if (collections.destroyed.length) {\n current = responses[index];\n if (current.passed) {\n e.success([], 'destroy');\n }\n index++;\n }\n if (collections.created.length) {\n current = responses[index];\n if (current.passed) {\n e.success(current.models, 'create');\n }\n }\n },\n error: function (response, status, error) {\n e.error(response, status, error);\n }\n }, options));\n }\n }\n }\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.data.xml', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'data.xml',\n name: 'XML',\n category: 'framework',\n depends: ['core'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, isArray = $.isArray, isPlainObject = $.isPlainObject, map = $.map, each = $.each, extend = $.extend, getter = kendo.getter, Class = kendo.Class;\n var XmlDataReader = Class.extend({\n init: function (options) {\n var that = this, total = options.total, model = options.model, parse = options.parse, errors = options.errors, serialize = options.serialize, data = options.data;\n if (model) {\n if (isPlainObject(model)) {\n var base = options.modelBase || kendo.data.Model;\n if (model.fields) {\n each(model.fields, function (field, value) {\n if (isPlainObject(value) && value.field) {\n if (!$.isFunction(value.field)) {\n value = extend(value, { field: that.getter(value.field) });\n }\n } else {\n value = { field: that.getter(value) };\n }\n model.fields[field] = value;\n });\n }\n var id = model.id;\n if (id) {\n var idField = {};\n idField[that.xpathToMember(id, true)] = { field: that.getter(id) };\n model.fields = extend(idField, model.fields);\n model.id = that.xpathToMember(id);\n }\n model = base.define(model);\n }\n that.model = model;\n }\n if (total) {\n if (typeof total == 'string') {\n total = that.getter(total);\n that.total = function (data) {\n return parseInt(total(data), 10);\n };\n } else if (typeof total == 'function') {\n that.total = total;\n }\n }\n if (errors) {\n if (typeof errors == 'string') {\n errors = that.getter(errors);\n that.errors = function (data) {\n return errors(data) || null;\n };\n } else if (typeof errors == 'function') {\n that.errors = errors;\n }\n }\n if (data) {\n if (typeof data == 'string') {\n data = that.xpathToMember(data);\n that.data = function (value) {\n var result = that.evaluate(value, data), modelInstance;\n result = isArray(result) ? result : [result];\n if (that.model && model.fields) {\n modelInstance = new that.model();\n return map(result, function (value) {\n if (value) {\n var record = {}, field;\n for (field in model.fields) {\n record[field] = modelInstance._parse(field, model.fields[field].field(value));\n }\n return record;\n }\n });\n }\n return result;\n };\n } else if (typeof data == 'function') {\n that.data = data;\n }\n }\n if (typeof parse == 'function') {\n var xmlParse = that.parse;\n that.parse = function (data) {\n var xml = parse.call(that, data);\n return xmlParse.call(that, xml);\n };\n }\n if (typeof serialize == 'function') {\n that.serialize = serialize;\n }\n },\n total: function (result) {\n return this.data(result).length;\n },\n errors: function (data) {\n return data ? data.errors : null;\n },\n serialize: function (data) {\n return data;\n },\n parseDOM: function (element) {\n var result = {}, parsedNode, node, nodeType, nodeName, member, attribute, attributes = element.attributes, attributeCount = attributes.length, idx;\n for (idx = 0; idx < attributeCount; idx++) {\n attribute = attributes[idx];\n result['@' + attribute.nodeName] = attribute.nodeValue;\n }\n for (node = element.firstChild; node; node = node.nextSibling) {\n nodeType = node.nodeType;\n if (nodeType === 3 || nodeType === 4) {\n result['#text'] = node.nodeValue;\n } else if (nodeType === 1) {\n parsedNode = this.parseDOM(node);\n nodeName = node.nodeName;\n member = result[nodeName];\n if (isArray(member)) {\n member.push(parsedNode);\n } else if (member !== undefined) {\n member = [\n member,\n parsedNode\n ];\n } else {\n member = parsedNode;\n }\n result[nodeName] = member;\n }\n }\n return result;\n },\n evaluate: function (value, expression) {\n var members = expression.split('.'), member, result, length, intermediateResult, idx;\n while (member = members.shift()) {\n value = value[member];\n if (isArray(value)) {\n result = [];\n expression = members.join('.');\n for (idx = 0, length = value.length; idx < length; idx++) {\n intermediateResult = this.evaluate(value[idx], expression);\n intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];\n result.push.apply(result, intermediateResult);\n }\n return result;\n }\n }\n return value;\n },\n parse: function (xml) {\n var documentElement, tree, result = {};\n documentElement = xml.documentElement || $.parseXML(xml).documentElement;\n tree = this.parseDOM(documentElement);\n result[documentElement.nodeName] = tree;\n return result;\n },\n xpathToMember: function (member, raw) {\n if (!member) {\n return '';\n }\n member = member.replace(/^\\//, '').replace(/\\//g, '.');\n if (member.indexOf('@') >= 0) {\n return member.replace(/\\.?(@.*)/, raw ? '$1' : '[\"$1\"]');\n }\n if (member.indexOf('text()') >= 0) {\n return member.replace(/(\\.?text\\(\\))/, raw ? '#text' : '[\"#text\"]');\n }\n return member;\n },\n getter: function (member) {\n return getter(this.xpathToMember(member), true);\n }\n });\n $.extend(true, kendo.data, {\n XmlDataReader: XmlDataReader,\n readers: { xml: XmlDataReader }\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.data', [\n 'kendo.core',\n 'kendo.data.odata',\n 'kendo.data.xml'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'data',\n name: 'Data source',\n category: 'framework',\n description: 'Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.',\n depends: ['core'],\n features: [\n {\n id: 'data-odata',\n name: 'OData',\n description: 'Support for accessing Open Data Protocol (OData) services.',\n depends: ['data.odata']\n },\n {\n id: 'data-signalr',\n name: 'SignalR',\n description: 'Support for binding to SignalR hubs.',\n depends: ['data.signalr']\n },\n {\n id: 'data-XML',\n name: 'XML',\n description: 'Support for binding to XML.',\n depends: ['data.xml']\n }\n ]\n };\n (function ($, undefined) {\n var extend = $.extend, proxy = $.proxy, isPlainObject = $.isPlainObject, isEmptyObject = $.isEmptyObject, isArray = $.isArray, grep = $.grep, ajax = $.ajax, map, each = $.each, noop = $.noop, kendo = window.kendo, isFunction = kendo.isFunction, Observable = kendo.Observable, Class = kendo.Class, STRING = 'string', FUNCTION = 'function', ASCENDING = 'asc', CREATE = 'create', READ = 'read', UPDATE = 'update', DESTROY = 'destroy', CHANGE = 'change', SYNC = 'sync', GET = 'get', ERROR = 'error', REQUESTSTART = 'requestStart', PROGRESS = 'progress', REQUESTEND = 'requestEnd', crud = [\n CREATE,\n READ,\n UPDATE,\n DESTROY\n ], identity = function (o) {\n return o;\n }, getter = kendo.getter, stringify = kendo.stringify, math = Math, push = [].push, join = [].join, pop = [].pop, splice = [].splice, shift = [].shift, slice = [].slice, unshift = [].unshift, toString = {}.toString, stableSort = kendo.support.stableSort, dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\n var ObservableArray = Observable.extend({\n init: function (array, type) {\n var that = this;\n that.type = type || ObservableObject;\n Observable.fn.init.call(that);\n that.length = array.length;\n that.wrapAll(array, that);\n },\n at: function (index) {\n return this[index];\n },\n toJSON: function () {\n var idx, length = this.length, value, json = new Array(length);\n for (idx = 0; idx < length; idx++) {\n value = this[idx];\n if (value instanceof ObservableObject) {\n value = value.toJSON();\n }\n json[idx] = value;\n }\n return json;\n },\n parent: noop,\n wrapAll: function (source, target) {\n var that = this, idx, length, parent = function () {\n return that;\n };\n target = target || [];\n for (idx = 0, length = source.length; idx < length; idx++) {\n target[idx] = that.wrap(source[idx], parent);\n }\n return target;\n },\n wrap: function (object, parent) {\n var that = this, observable;\n if (object !== null && toString.call(object) === '[object Object]') {\n observable = object instanceof that.type || object instanceof Model;\n if (!observable) {\n object = object instanceof ObservableObject ? object.toJSON() : object;\n object = new that.type(object);\n }\n object.parent = parent;\n object.bind(CHANGE, function (e) {\n that.trigger(CHANGE, {\n field: e.field,\n node: e.node,\n index: e.index,\n items: e.items || [this],\n action: e.node ? e.action || 'itemloaded' : 'itemchange'\n });\n });\n }\n return object;\n },\n push: function () {\n var index = this.length, items = this.wrapAll(arguments), result;\n result = push.apply(this, items);\n this.trigger(CHANGE, {\n action: 'add',\n index: index,\n items: items\n });\n return result;\n },\n slice: slice,\n sort: [].sort,\n join: join,\n pop: function () {\n var length = this.length, result = pop.apply(this);\n if (length) {\n this.trigger(CHANGE, {\n action: 'remove',\n index: length - 1,\n items: [result]\n });\n }\n return result;\n },\n splice: function (index, howMany, item) {\n var items = this.wrapAll(slice.call(arguments, 2)), result, i, len;\n result = splice.apply(this, [\n index,\n howMany\n ].concat(items));\n if (result.length) {\n this.trigger(CHANGE, {\n action: 'remove',\n index: index,\n items: result\n });\n for (i = 0, len = result.length; i < len; i++) {\n if (result[i] && result[i].children) {\n result[i].unbind(CHANGE);\n }\n }\n }\n if (item) {\n this.trigger(CHANGE, {\n action: 'add',\n index: index,\n items: items\n });\n }\n return result;\n },\n shift: function () {\n var length = this.length, result = shift.apply(this);\n if (length) {\n this.trigger(CHANGE, {\n action: 'remove',\n index: 0,\n items: [result]\n });\n }\n return result;\n },\n unshift: function () {\n var items = this.wrapAll(arguments), result;\n result = unshift.apply(this, items);\n this.trigger(CHANGE, {\n action: 'add',\n index: 0,\n items: items\n });\n return result;\n },\n indexOf: function (item) {\n var that = this, idx, length;\n for (idx = 0, length = that.length; idx < length; idx++) {\n if (that[idx] === item) {\n return idx;\n }\n }\n return -1;\n },\n forEach: function (callback, thisArg) {\n var idx = 0;\n var length = this.length;\n var context = thisArg || window;\n for (; idx < length; idx++) {\n callback.call(context, this[idx], idx, this);\n }\n },\n map: function (callback, thisArg) {\n var idx = 0;\n var result = [];\n var length = this.length;\n var context = thisArg || window;\n for (; idx < length; idx++) {\n result[idx] = callback.call(context, this[idx], idx, this);\n }\n return result;\n },\n reduce: function (callback) {\n var idx = 0, result, length = this.length;\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx < length) {\n result = this[idx++];\n }\n for (; idx < length; idx++) {\n result = callback(result, this[idx], idx, this);\n }\n return result;\n },\n reduceRight: function (callback) {\n var idx = this.length - 1, result;\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx > 0) {\n result = this[idx--];\n }\n for (; idx >= 0; idx--) {\n result = callback(result, this[idx], idx, this);\n }\n return result;\n },\n filter: function (callback, thisArg) {\n var idx = 0;\n var result = [];\n var item;\n var length = this.length;\n var context = thisArg || window;\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n result[result.length] = item;\n }\n }\n return result;\n },\n find: function (callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return item;\n }\n }\n },\n every: function (callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n for (; idx < length; idx++) {\n item = this[idx];\n if (!callback.call(context, item, idx, this)) {\n return false;\n }\n }\n return true;\n },\n some: function (callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return true;\n }\n }\n return false;\n },\n remove: function (item) {\n var idx = this.indexOf(item);\n if (idx !== -1) {\n this.splice(idx, 1);\n }\n },\n empty: function () {\n this.splice(0, this.length);\n }\n });\n if (typeof Symbol !== 'undefined' && Symbol.iterator && !ObservableArray.prototype[Symbol.iterator]) {\n ObservableArray.prototype[Symbol.iterator] = [][Symbol.iterator];\n }\n var LazyObservableArray = ObservableArray.extend({\n init: function (data, type, events) {\n Observable.fn.init.call(this);\n this.type = type || ObservableObject;\n if (events) {\n this._events = events;\n }\n for (var idx = 0; idx < data.length; idx++) {\n this[idx] = data[idx];\n }\n this.length = idx;\n this._parent = proxy(function () {\n return this;\n }, this);\n },\n at: function (index) {\n var item = this[index];\n if (!(item instanceof this.type)) {\n item = this[index] = this.wrap(item, this._parent);\n } else {\n item.parent = this._parent;\n }\n return item;\n }\n });\n function eventHandler(context, type, field, prefix) {\n return function (e) {\n var event = {}, key;\n for (key in e) {\n event[key] = e[key];\n }\n if (prefix) {\n event.field = field + '.' + e.field;\n } else {\n event.field = field;\n }\n if (type == CHANGE && context._notifyChange) {\n context._notifyChange(event);\n }\n context.trigger(type, event);\n };\n }\n var ObservableObject = Observable.extend({\n init: function (value) {\n var that = this, member, field, parent = function () {\n return that;\n };\n Observable.fn.init.call(this);\n this._handlers = {};\n for (field in value) {\n member = value[field];\n if (typeof member === 'object' && member && !member.getTime && field.charAt(0) != '_') {\n member = that.wrap(member, field, parent);\n }\n that[field] = member;\n }\n that.uid = kendo.guid();\n },\n shouldSerialize: function (field) {\n return this.hasOwnProperty(field) && field !== '_handlers' && field !== '_events' && typeof this[field] !== FUNCTION && field !== 'uid';\n },\n forEach: function (f) {\n for (var i in this) {\n if (this.shouldSerialize(i)) {\n f(this[i], i);\n }\n }\n },\n toJSON: function () {\n var result = {}, value, field;\n for (field in this) {\n if (this.shouldSerialize(field)) {\n value = this[field];\n if (value instanceof ObservableObject || value instanceof ObservableArray) {\n value = value.toJSON();\n }\n result[field] = value;\n }\n }\n return result;\n },\n get: function (field) {\n var that = this, result;\n that.trigger(GET, { field: field });\n if (field === 'this') {\n result = that;\n } else {\n result = kendo.getter(field, true)(that);\n }\n return result;\n },\n _set: function (field, value) {\n var that = this;\n var composite = field.indexOf('.') >= 0;\n if (composite) {\n var paths = field.split('.'), path = '';\n while (paths.length > 1) {\n path += paths.shift();\n var obj = kendo.getter(path, true)(that);\n if (obj instanceof ObservableObject) {\n obj.set(paths.join('.'), value);\n return composite;\n }\n path += '.';\n }\n }\n kendo.setter(field)(that, value);\n return composite;\n },\n set: function (field, value) {\n var that = this, isSetPrevented = false, composite = field.indexOf('.') >= 0, current = kendo.getter(field, true)(that);\n if (current !== value) {\n if (current instanceof Observable && this._handlers[field]) {\n if (this._handlers[field].get) {\n current.unbind(GET, this._handlers[field].get);\n }\n current.unbind(CHANGE, this._handlers[field].change);\n }\n isSetPrevented = that.trigger('set', {\n field: field,\n value: value\n });\n if (!isSetPrevented) {\n if (!composite) {\n value = that.wrap(value, field, function () {\n return that;\n });\n }\n if (!that._set(field, value) || field.indexOf('(') >= 0 || field.indexOf('[') >= 0) {\n that.trigger(CHANGE, { field: field });\n }\n }\n }\n return isSetPrevented;\n },\n parent: noop,\n wrap: function (object, field, parent) {\n var that = this;\n var get;\n var change;\n var type = toString.call(object);\n if (object != null && (type === '[object Object]' || type === '[object Array]')) {\n var isObservableArray = object instanceof ObservableArray;\n var isDataSource = object instanceof DataSource;\n if (type === '[object Object]' && !isDataSource && !isObservableArray) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n get = eventHandler(that, GET, field, true);\n object.bind(GET, get);\n change = eventHandler(that, CHANGE, field, true);\n object.bind(CHANGE, change);\n that._handlers[field] = {\n get: get,\n change: change\n };\n } else if (type === '[object Array]' || isObservableArray || isDataSource) {\n if (!isObservableArray && !isDataSource) {\n object = new ObservableArray(object);\n }\n change = eventHandler(that, CHANGE, field, false);\n object.bind(CHANGE, change);\n that._handlers[field] = { change: change };\n }\n object.parent = parent;\n }\n return object;\n }\n });\n function equal(x, y) {\n if (x === y) {\n return true;\n }\n var xtype = $.type(x), ytype = $.type(y), field;\n if (xtype !== ytype) {\n return false;\n }\n if (xtype === 'date') {\n return x.getTime() === y.getTime();\n }\n if (xtype !== 'object' && xtype !== 'array') {\n return false;\n }\n for (field in x) {\n if (!equal(x[field], y[field])) {\n return false;\n }\n }\n return true;\n }\n var parsers = {\n 'number': function (value) {\n if (typeof value === STRING && value.toLowerCase() === 'null') {\n return null;\n }\n return kendo.parseFloat(value);\n },\n 'date': function (value) {\n if (typeof value === STRING && value.toLowerCase() === 'null') {\n return null;\n }\n return kendo.parseDate(value);\n },\n 'boolean': function (value) {\n if (typeof value === STRING) {\n if (value.toLowerCase() === 'null') {\n return null;\n } else {\n return value.toLowerCase() === 'true';\n }\n }\n return value != null ? !!value : value;\n },\n 'string': function (value) {\n if (typeof value === STRING && value.toLowerCase() === 'null') {\n return null;\n }\n return value != null ? value + '' : value;\n },\n 'default': function (value) {\n return value;\n }\n };\n var defaultValues = {\n 'string': '',\n 'number': 0,\n 'date': new Date(),\n 'boolean': false,\n 'default': ''\n };\n function getFieldByName(obj, name) {\n var field, fieldName;\n for (fieldName in obj) {\n field = obj[fieldName];\n if (isPlainObject(field) && field.field && field.field === name) {\n return field;\n } else if (field === name) {\n return field;\n }\n }\n return null;\n }\n var Model = ObservableObject.extend({\n init: function (data) {\n var that = this;\n if (!data || $.isEmptyObject(data)) {\n data = $.extend({}, that.defaults, data);\n if (that._initializers) {\n for (var idx = 0; idx < that._initializers.length; idx++) {\n var name = that._initializers[idx];\n data[name] = that.defaults[name]();\n }\n }\n }\n ObservableObject.fn.init.call(that, data);\n that.dirty = false;\n that.dirtyFields = {};\n if (that.idField) {\n that.id = that.get(that.idField);\n if (that.id === undefined) {\n that.id = that._defaultId;\n }\n }\n },\n shouldSerialize: function (field) {\n return ObservableObject.fn.shouldSerialize.call(this, field) && field !== 'uid' && !(this.idField !== 'id' && field === 'id') && field !== 'dirty' && field !== 'dirtyFields' && field !== '_accessors';\n },\n _parse: function (field, value) {\n var that = this, fieldName = field, fields = that.fields || {}, parse;\n field = fields[field];\n if (!field) {\n field = getFieldByName(fields, fieldName);\n }\n if (field) {\n parse = field.parse;\n if (!parse && field.type) {\n parse = parsers[field.type.toLowerCase()];\n }\n }\n return parse ? parse(value) : value;\n },\n _notifyChange: function (e) {\n var action = e.action;\n if (action == 'add' || action == 'remove') {\n this.dirty = true;\n this.dirtyFields[e.field] = true;\n }\n },\n editable: function (field) {\n field = (this.fields || {})[field];\n return field ? field.editable !== false : true;\n },\n set: function (field, value, initiator) {\n var that = this;\n var dirty = that.dirty;\n if (that.editable(field)) {\n value = that._parse(field, value);\n if (!equal(value, that.get(field))) {\n that.dirty = true;\n that.dirtyFields[field] = true;\n if (ObservableObject.fn.set.call(that, field, value, initiator) && !dirty) {\n that.dirty = dirty;\n if (!that.dirty) {\n that.dirtyFields[field] = false;\n }\n }\n } else {\n that.trigger('equalSet', {\n field: field,\n value: value\n });\n }\n }\n },\n accept: function (data) {\n var that = this, parent = function () {\n return that;\n }, field;\n for (field in data) {\n var value = data[field];\n if (field.charAt(0) != '_') {\n value = that.wrap(data[field], field, parent);\n }\n that._set(field, value);\n }\n if (that.idField) {\n that.id = that.get(that.idField);\n }\n that.dirty = false;\n that.dirtyFields = {};\n },\n isNew: function () {\n return this.id === this._defaultId;\n }\n });\n Model.define = function (base, options) {\n if (options === undefined) {\n options = base;\n base = Model;\n }\n var model, proto = extend({ defaults: {} }, options), name, field, type, value, idx, length, fields = {}, originalName, id = proto.id, functionFields = [];\n if (id) {\n proto.idField = id;\n }\n if (proto.id) {\n delete proto.id;\n }\n if (id) {\n proto.defaults[id] = proto._defaultId = '';\n }\n if (toString.call(proto.fields) === '[object Array]') {\n for (idx = 0, length = proto.fields.length; idx < length; idx++) {\n field = proto.fields[idx];\n if (typeof field === STRING) {\n fields[field] = {};\n } else if (field.field) {\n fields[field.field] = field;\n }\n }\n proto.fields = fields;\n }\n for (name in proto.fields) {\n field = proto.fields[name];\n type = field.type || 'default';\n value = null;\n originalName = name;\n name = typeof field.field === STRING ? field.field : name;\n if (!field.nullable) {\n value = proto.defaults[originalName !== name ? originalName : name] = field.defaultValue !== undefined ? field.defaultValue : defaultValues[type.toLowerCase()];\n if (typeof value === 'function') {\n functionFields.push(name);\n }\n }\n if (options.id === name) {\n proto._defaultId = value;\n }\n proto.defaults[originalName !== name ? originalName : name] = value;\n field.parse = field.parse || parsers[type];\n }\n if (functionFields.length > 0) {\n proto._initializers = functionFields;\n }\n model = base.extend(proto);\n model.define = function (options) {\n return Model.define(model, options);\n };\n if (proto.fields) {\n model.fields = proto.fields;\n model.idField = proto.idField;\n }\n return model;\n };\n var Comparer = {\n selector: function (field) {\n return isFunction(field) ? field : getter(field);\n },\n compare: function (field) {\n var selector = this.selector(field);\n return function (a, b) {\n a = selector(a);\n b = selector(b);\n if (a == null && b == null) {\n return 0;\n }\n if (a == null) {\n return -1;\n }\n if (b == null) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : a < b ? -1 : 0;\n };\n },\n create: function (sort) {\n var compare = sort.compare || this.compare(sort.field);\n if (sort.dir == 'desc') {\n return function (a, b) {\n return compare(b, a, true);\n };\n }\n return compare;\n },\n combine: function (comparers) {\n return function (a, b) {\n var result = comparers[0](a, b), idx, length;\n for (idx = 1, length = comparers.length; idx < length; idx++) {\n result = result || comparers[idx](a, b);\n }\n return result;\n };\n }\n };\n var StableComparer = extend({}, Comparer, {\n asc: function (field) {\n var selector = this.selector(field);\n return function (a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n if (valueA == null) {\n return -1;\n }\n if (valueB == null) {\n return 1;\n }\n if (valueA.localeCompare) {\n return valueA.localeCompare(valueB);\n }\n return valueA > valueB ? 1 : -1;\n };\n },\n desc: function (field) {\n var selector = this.selector(field);\n return function (a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n if (valueA == null) {\n return 1;\n }\n if (valueB == null) {\n return -1;\n }\n if (valueB.localeCompare) {\n return valueB.localeCompare(valueA);\n }\n return valueA < valueB ? 1 : -1;\n };\n },\n create: function (sort) {\n return this[sort.dir](sort.field);\n }\n });\n map = function (array, callback) {\n var idx, length = array.length, result = new Array(length);\n for (idx = 0; idx < length; idx++) {\n result[idx] = callback(array[idx], idx, array);\n }\n return result;\n };\n var operators = function () {\n function quote(str) {\n if (typeof str == 'string') {\n str = str.replace(/[\\r\\n]+/g, '');\n }\n return JSON.stringify(str);\n }\n function textOp(impl) {\n return function (a, b, ignore, accentFoldingFiltering) {\n b += '';\n if (ignore) {\n a = '(' + a + ' + \\'\\').toString()' + (accentFoldingFiltering ? '.toLocaleLowerCase(\\'' + accentFoldingFiltering + '\\')' : '.toLowerCase()');\n b = accentFoldingFiltering ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase();\n }\n return impl(a, quote(b), ignore);\n };\n }\n function operator(op, a, b, ignore, accentFoldingFiltering) {\n if (b != null) {\n if (typeof b === STRING) {\n var date = dateRegExp.exec(b);\n if (date) {\n b = new Date(+date[1]);\n } else if (ignore) {\n b = quote(accentFoldingFiltering ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase());\n a = '((' + a + ' || \\'\\')+\\'\\')' + (accentFoldingFiltering ? '.toLocaleLowerCase(\\'' + accentFoldingFiltering + '\\')' : '.toLowerCase()');\n } else {\n b = quote(b);\n }\n }\n if (b.getTime) {\n a = '(' + a + '&&' + a + '.getTime?' + a + '.getTime():' + a + ')';\n b = b.getTime();\n }\n }\n return a + ' ' + op + ' ' + b;\n }\n function getMatchRegexp(pattern) {\n for (var rx = '/^', esc = false, i = 0; i < pattern.length; ++i) {\n var ch = pattern.charAt(i);\n if (esc) {\n rx += '\\\\' + ch;\n } else if (ch == '~') {\n esc = true;\n continue;\n } else if (ch == '*') {\n rx += '.*';\n } else if (ch == '?') {\n rx += '.';\n } else if ('.+^$()[]{}|\\\\/\\n\\r\\u2028\\u2029\\xA0'.indexOf(ch) >= 0) {\n rx += '\\\\' + ch;\n } else {\n rx += ch;\n }\n esc = false;\n }\n return rx + '$/';\n }\n return {\n quote: function (value) {\n if (value && value.getTime) {\n return 'new Date(' + value.getTime() + ')';\n }\n return quote(value);\n },\n eq: function (a, b, ignore, accentFoldingFiltering) {\n return operator('==', a, b, ignore, accentFoldingFiltering);\n },\n neq: function (a, b, ignore, accentFoldingFiltering) {\n return operator('!=', a, b, ignore, accentFoldingFiltering);\n },\n gt: function (a, b, ignore) {\n return operator('>', a, b, ignore);\n },\n gte: function (a, b, ignore) {\n return operator('>=', a, b, ignore);\n },\n lt: function (a, b, ignore) {\n return operator('<', a, b, ignore);\n },\n lte: function (a, b, ignore) {\n return operator('<=', a, b, ignore);\n },\n startswith: textOp(function (a, b) {\n return a + '.lastIndexOf(' + b + ', 0) == 0';\n }),\n doesnotstartwith: textOp(function (a, b) {\n return a + '.lastIndexOf(' + b + ', 0) == -1';\n }),\n endswith: textOp(function (a, b) {\n var n = b ? b.length - 2 : 0;\n return a + '.indexOf(' + b + ', ' + a + '.length - ' + n + ') >= 0';\n }),\n doesnotendwith: textOp(function (a, b) {\n var n = b ? b.length - 2 : 0;\n return a + '.indexOf(' + b + ', ' + a + '.length - ' + n + ') < 0';\n }),\n contains: textOp(function (a, b) {\n return a + '.indexOf(' + b + ') >= 0';\n }),\n doesnotcontain: textOp(function (a, b) {\n return a + '.indexOf(' + b + ') == -1';\n }),\n matches: textOp(function (a, b) {\n b = b.substring(1, b.length - 1);\n return getMatchRegexp(b) + '.test(' + a + ')';\n }),\n doesnotmatch: textOp(function (a, b) {\n b = b.substring(1, b.length - 1);\n return '!' + getMatchRegexp(b) + '.test(' + a + ')';\n }),\n isempty: function (a) {\n return a + ' === \\'\\'';\n },\n isnotempty: function (a) {\n return a + ' !== \\'\\'';\n },\n isnull: function (a) {\n return '(' + a + ' == null)';\n },\n isnotnull: function (a) {\n return '(' + a + ' != null)';\n },\n isnullorempty: function (a) {\n return '(' + a + ' === null) || (' + a + ' === \\'\\')';\n },\n isnotnullorempty: function (a) {\n return '(' + a + ' !== null) && (' + a + ' !== \\'\\')';\n }\n };\n }();\n function Query(data) {\n this.data = data || [];\n }\n Query.filterExpr = function (expression) {\n var expressions = [], logic = {\n and: ' && ',\n or: ' || '\n }, idx, length, filter, expr, fieldFunctions = [], operatorFunctions = [], field, operator, filters = expression.filters;\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n operator = filter.operator;\n if (filter.filters) {\n expr = Query.filterExpr(filter);\n filter = expr.expression.replace(/__o\\[(\\d+)\\]/g, function (match, index) {\n index = +index;\n return '__o[' + (operatorFunctions.length + index) + ']';\n }).replace(/__f\\[(\\d+)\\]/g, function (match, index) {\n index = +index;\n return '__f[' + (fieldFunctions.length + index) + ']';\n });\n operatorFunctions.push.apply(operatorFunctions, expr.operators);\n fieldFunctions.push.apply(fieldFunctions, expr.fields);\n } else {\n if (typeof field === FUNCTION) {\n expr = '__f[' + fieldFunctions.length + '](d)';\n fieldFunctions.push(field);\n } else {\n expr = kendo.expr(field);\n }\n if (typeof operator === FUNCTION) {\n filter = '__o[' + operatorFunctions.length + '](' + expr + ', ' + operators.quote(filter.value) + ')';\n operatorFunctions.push(operator);\n } else {\n filter = operators[(operator || 'eq').toLowerCase()](expr, filter.value, filter.ignoreCase !== undefined ? filter.ignoreCase : true, expression.accentFoldingFiltering);\n }\n }\n expressions.push(filter);\n }\n return {\n expression: '(' + expressions.join(logic[expression.logic]) + ')',\n fields: fieldFunctions,\n operators: operatorFunctions\n };\n };\n function normalizeSort(field, dir) {\n if (field) {\n var descriptor = typeof field === STRING ? {\n field: field,\n dir: dir\n } : field, descriptors = isArray(descriptor) ? descriptor : descriptor !== undefined ? [descriptor] : [];\n return grep(descriptors, function (d) {\n return !!d.dir;\n });\n }\n }\n var operatorMap = {\n '==': 'eq',\n equals: 'eq',\n isequalto: 'eq',\n equalto: 'eq',\n equal: 'eq',\n '!=': 'neq',\n ne: 'neq',\n notequals: 'neq',\n isnotequalto: 'neq',\n notequalto: 'neq',\n notequal: 'neq',\n '<': 'lt',\n islessthan: 'lt',\n lessthan: 'lt',\n less: 'lt',\n '<=': 'lte',\n le: 'lte',\n islessthanorequalto: 'lte',\n lessthanequal: 'lte',\n '>': 'gt',\n isgreaterthan: 'gt',\n greaterthan: 'gt',\n greater: 'gt',\n '>=': 'gte',\n isgreaterthanorequalto: 'gte',\n greaterthanequal: 'gte',\n ge: 'gte',\n notsubstringof: 'doesnotcontain',\n isnull: 'isnull',\n isempty: 'isempty',\n isnotempty: 'isnotempty'\n };\n function normalizeOperator(expression) {\n var idx, length, filter, operator, filters = expression.filters;\n if (filters) {\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n operator = filter.operator;\n if (operator && typeof operator === STRING) {\n filter.operator = operatorMap[operator.toLowerCase()] || operator;\n }\n normalizeOperator(filter);\n }\n }\n }\n function normalizeFilter(expression) {\n if (expression && !isEmptyObject(expression)) {\n if (isArray(expression) || !expression.filters) {\n expression = {\n logic: 'and',\n filters: isArray(expression) ? expression : [expression]\n };\n }\n normalizeOperator(expression);\n return expression;\n }\n }\n Query.normalizeFilter = normalizeFilter;\n function compareDescriptor(f1, f2) {\n if (f1.logic || f2.logic) {\n return false;\n }\n return f1.field === f2.field && f1.value === f2.value && f1.operator === f2.operator;\n }\n function normalizeDescriptor(filter) {\n filter = filter || {};\n if (isEmptyObject(filter)) {\n return {\n logic: 'and',\n filters: []\n };\n }\n return normalizeFilter(filter);\n }\n function fieldComparer(a, b) {\n if (b.logic || a.field > b.field) {\n return 1;\n } else if (a.field < b.field) {\n return -1;\n } else {\n return 0;\n }\n }\n function compareFilters(expr1, expr2) {\n expr1 = normalizeDescriptor(expr1);\n expr2 = normalizeDescriptor(expr2);\n if (expr1.logic !== expr2.logic) {\n return false;\n }\n var f1, f2;\n var filters1 = (expr1.filters || []).slice();\n var filters2 = (expr2.filters || []).slice();\n if (filters1.length !== filters2.length) {\n return false;\n }\n filters1 = filters1.sort(fieldComparer);\n filters2 = filters2.sort(fieldComparer);\n for (var idx = 0; idx < filters1.length; idx++) {\n f1 = filters1[idx];\n f2 = filters2[idx];\n if (f1.logic && f2.logic) {\n if (!compareFilters(f1, f2)) {\n return false;\n }\n } else if (!compareDescriptor(f1, f2)) {\n return false;\n }\n }\n return true;\n }\n Query.compareFilters = compareFilters;\n function normalizeAggregate(expressions) {\n return isArray(expressions) ? expressions : [expressions];\n }\n function normalizeGroup(field, dir, compare, skipItemSorting) {\n var descriptor = typeof field === STRING ? {\n field: field,\n dir: dir,\n compare: compare,\n skipItemSorting: skipItemSorting\n } : field, descriptors = isArray(descriptor) ? descriptor : descriptor !== undefined ? [descriptor] : [];\n return map(descriptors, function (d) {\n return {\n field: d.field,\n dir: d.dir || 'asc',\n aggregates: d.aggregates,\n compare: d.compare,\n skipItemSorting: d.skipItemSorting\n };\n });\n }\n function normalizeGroupWithoutCompare(field, dir, compare) {\n var descriptors = normalizeGroup(field, dir, compare);\n for (var i = 0; i < descriptors.length; i++) {\n delete descriptors[i].compare;\n }\n return descriptors;\n }\n function anyGroupDescriptorHasCompare(groupDescriptors) {\n var descriptors = isArray(groupDescriptors) ? groupDescriptors : [groupDescriptors];\n for (var i = 0; i < descriptors.length; i++) {\n if (descriptors[i] && isFunction(descriptors[i].compare)) {\n return true;\n }\n }\n return false;\n }\n Query.prototype = {\n toArray: function () {\n return this.data;\n },\n range: function (index, count) {\n return new Query(this.data.slice(index, index + count));\n },\n skip: function (count) {\n return new Query(this.data.slice(count));\n },\n take: function (count) {\n return new Query(this.data.slice(0, count));\n },\n select: function (selector) {\n return new Query(map(this.data, selector));\n },\n order: function (selector, dir, inPlace) {\n var sort = { dir: dir };\n if (selector) {\n if (selector.compare) {\n sort.compare = selector.compare;\n } else {\n sort.field = selector;\n }\n }\n if (inPlace) {\n return new Query(this.data.sort(Comparer.create(sort)));\n }\n return new Query(this.data.slice(0).sort(Comparer.create(sort)));\n },\n orderBy: function (selector, inPlace) {\n return this.order(selector, 'asc', inPlace);\n },\n orderByDescending: function (selector, inPlace) {\n return this.order(selector, 'desc', inPlace);\n },\n sort: function (field, dir, comparer, inPlace) {\n var idx, length, descriptors = normalizeSort(field, dir), comparers = [];\n comparer = comparer || Comparer;\n if (descriptors.length) {\n for (idx = 0, length = descriptors.length; idx < length; idx++) {\n comparers.push(comparer.create(descriptors[idx]));\n }\n return this.orderBy({ compare: comparer.combine(comparers) }, inPlace);\n }\n return this;\n },\n filter: function (expressions) {\n var idx, current, length, compiled, predicate, data = this.data, fields, operators, result = [], filter;\n expressions = normalizeFilter(expressions);\n if (!expressions || expressions.filters.length === 0) {\n return this;\n }\n compiled = Query.filterExpr(expressions);\n fields = compiled.fields;\n operators = compiled.operators;\n predicate = filter = new Function('d, __f, __o', 'return ' + compiled.expression);\n if (fields.length || operators.length) {\n filter = function (d) {\n return predicate(d, fields, operators);\n };\n }\n for (idx = 0, length = data.length; idx < length; idx++) {\n current = data[idx];\n if (filter(current)) {\n result.push(current);\n }\n }\n return new Query(result);\n },\n group: function (descriptors, allData) {\n descriptors = normalizeGroup(descriptors || []);\n allData = allData || this.data;\n var that = this, result = new Query(that.data), descriptor;\n if (descriptors.length > 0) {\n descriptor = descriptors[0];\n result = result.groupBy(descriptor).select(function (group) {\n var data = new Query(allData).filter([{\n field: group.field,\n operator: 'eq',\n value: group.value,\n ignoreCase: false\n }]);\n return {\n field: group.field,\n value: group.value,\n items: descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray()).toArray() : group.items,\n hasSubgroups: descriptors.length > 1,\n aggregates: data.aggregate(descriptor.aggregates)\n };\n });\n }\n return result;\n },\n groupBy: function (descriptor) {\n var that = this;\n if (isEmptyObject(descriptor) || !this.data.length) {\n return new Query([]);\n }\n var field = descriptor.field, sorted = descriptor.skipItemSorting ? this.data : this._sortForGrouping(field, descriptor.dir || 'asc'), accessor = kendo.accessor(field), item, groupValue = accessor.get(sorted[0], field), group = {\n field: field,\n value: groupValue,\n items: []\n }, currentValue, idx, len, result = [group];\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n result = that._sortGroups(result, descriptor);\n return new Query(result);\n },\n _sortForGrouping: function (field, dir) {\n var idx, length, data = this.data;\n if (!stableSort) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n data[idx].__position = idx;\n }\n data = new Query(data).sort(field, dir, StableComparer).toArray();\n for (idx = 0, length = data.length; idx < length; idx++) {\n delete data[idx].__position;\n }\n return data;\n }\n return this.sort(field, dir).toArray();\n },\n _sortGroups: function (groups, descriptor) {\n var result = groups;\n if (descriptor && isFunction(descriptor.compare)) {\n result = new Query(result).order({ compare: descriptor.compare }, descriptor.dir || ASCENDING).toArray();\n }\n return result;\n },\n aggregate: function (aggregates) {\n var idx, len, result = {}, state = {};\n if (aggregates && aggregates.length) {\n for (idx = 0, len = this.data.length; idx < len; idx++) {\n calculateAggregate(result, aggregates, this.data[idx], idx, len, state);\n }\n }\n return result;\n }\n };\n function groupValueComparer(a, b) {\n if (a && a.getTime && b && b.getTime) {\n return a.getTime() === b.getTime();\n }\n return a === b;\n }\n function calculateAggregate(accumulator, aggregates, item, index, length, state) {\n aggregates = aggregates || [];\n var idx, aggr, functionName, len = aggregates.length;\n for (idx = 0; idx < len; idx++) {\n aggr = aggregates[idx];\n functionName = aggr.aggregate;\n var field = aggr.field;\n accumulator[field] = accumulator[field] || {};\n state[field] = state[field] || {};\n state[field][functionName] = state[field][functionName] || {};\n accumulator[field][functionName] = functions[functionName.toLowerCase()](accumulator[field][functionName], item, kendo.accessor(field), index, length, state[field][functionName]);\n }\n }\n var functions = {\n sum: function (accumulator, item, accessor) {\n var value = accessor.get(item);\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n return accumulator;\n },\n count: function (accumulator) {\n return (accumulator || 0) + 1;\n },\n average: function (accumulator, item, accessor, index, length, state) {\n var value = accessor.get(item);\n if (state.count === undefined) {\n state.count = 0;\n }\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n if (isNumber(value)) {\n state.count++;\n }\n if (index == length - 1 && isNumber(accumulator)) {\n accumulator = accumulator / state.count;\n }\n return accumulator;\n },\n max: function (accumulator, item, accessor) {\n var value = accessor.get(item);\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n if (accumulator < value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n },\n min: function (accumulator, item, accessor) {\n var value = accessor.get(item);\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n if (accumulator > value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n }\n };\n function isNumber(val) {\n return typeof val === 'number' && !isNaN(val);\n }\n function isDate(val) {\n return val && val.getTime;\n }\n function toJSON(array) {\n var idx, length = array.length, result = new Array(length);\n for (idx = 0; idx < length; idx++) {\n result[idx] = array[idx].toJSON();\n }\n return result;\n }\n Query.normalizeGroup = normalizeGroup;\n Query.normalizeSort = normalizeSort;\n Query.process = function (data, options, inPlace) {\n options = options || {};\n var group = options.group;\n var customGroupSort = anyGroupDescriptorHasCompare(normalizeGroup(group || []));\n var query = new Query(data), groupDescriptorsWithoutCompare = normalizeGroupWithoutCompare(group || []), normalizedSort = normalizeSort(options.sort || []), sort = customGroupSort ? normalizedSort : groupDescriptorsWithoutCompare.concat(normalizedSort), groupDescriptorsWithoutSort, total, filterCallback = options.filterCallback, filter = options.filter, skip = options.skip, take = options.take;\n if (sort && inPlace) {\n query = query.sort(sort, undefined, undefined, inPlace);\n }\n if (filter) {\n query = query.filter(filter);\n if (filterCallback) {\n query = filterCallback(query);\n }\n total = query.toArray().length;\n }\n if (sort && !inPlace) {\n query = query.sort(sort);\n if (group) {\n data = query.toArray();\n }\n }\n if (customGroupSort) {\n query = query.group(group, data);\n if (skip !== undefined && take !== undefined) {\n query = new Query(flatGroups(query.toArray())).range(skip, take);\n groupDescriptorsWithoutSort = map(groupDescriptorsWithoutCompare, function (groupDescriptor) {\n return extend({}, groupDescriptor, { skipItemSorting: true });\n });\n query = query.group(groupDescriptorsWithoutSort, data);\n }\n } else {\n if (skip !== undefined && take !== undefined) {\n query = query.range(skip, take);\n }\n if (group) {\n query = query.group(group, data);\n }\n }\n return {\n total: total,\n data: query.toArray()\n };\n };\n var LocalTransport = Class.extend({\n init: function (options) {\n this.data = options.data;\n },\n read: function (options) {\n options.success(this.data);\n },\n update: function (options) {\n options.success(options.data);\n },\n create: function (options) {\n options.success(options.data);\n },\n destroy: function (options) {\n options.success(options.data);\n }\n });\n var RemoteTransport = Class.extend({\n init: function (options) {\n var that = this, parameterMap;\n options = that.options = extend({}, that.options, options);\n each(crud, function (index, type) {\n if (typeof options[type] === STRING) {\n options[type] = { url: options[type] };\n }\n });\n that.cache = options.cache ? Cache.create(options.cache) : {\n find: noop,\n add: noop\n };\n parameterMap = options.parameterMap;\n if (options.submit) {\n that.submit = options.submit;\n }\n if (isFunction(options.push)) {\n that.push = options.push;\n }\n if (!that.push) {\n that.push = identity;\n }\n that.parameterMap = isFunction(parameterMap) ? parameterMap : function (options) {\n var result = {};\n each(options, function (option, value) {\n if (option in parameterMap) {\n option = parameterMap[option];\n if (isPlainObject(option)) {\n value = option.value(value);\n option = option.key;\n }\n }\n result[option] = value;\n });\n return result;\n };\n },\n options: { parameterMap: identity },\n create: function (options) {\n return ajax(this.setup(options, CREATE));\n },\n read: function (options) {\n var that = this, success, error, result, cache = that.cache;\n options = that.setup(options, READ);\n success = options.success || noop;\n error = options.error || noop;\n result = cache.find(options.data);\n if (result !== undefined) {\n success(result);\n } else {\n options.success = function (result) {\n cache.add(options.data, result);\n success(result);\n };\n $.ajax(options);\n }\n },\n update: function (options) {\n return ajax(this.setup(options, UPDATE));\n },\n destroy: function (options) {\n return ajax(this.setup(options, DESTROY));\n },\n setup: function (options, type) {\n options = options || {};\n var that = this, parameters, operation = that.options[type], data = isFunction(operation.data) ? operation.data(options.data) : operation.data;\n options = extend(true, {}, operation, options);\n parameters = extend(true, {}, data, options.data);\n options.data = that.parameterMap(parameters, type);\n if (isFunction(options.url)) {\n options.url = options.url(parameters);\n }\n return options;\n }\n });\n var Cache = Class.extend({\n init: function () {\n this._store = {};\n },\n add: function (key, data) {\n if (key !== undefined) {\n this._store[stringify(key)] = data;\n }\n },\n find: function (key) {\n return this._store[stringify(key)];\n },\n clear: function () {\n this._store = {};\n },\n remove: function (key) {\n delete this._store[stringify(key)];\n }\n });\n Cache.create = function (options) {\n var store = {\n 'inmemory': function () {\n return new Cache();\n }\n };\n if (isPlainObject(options) && isFunction(options.find)) {\n return options;\n }\n if (options === true) {\n return new Cache();\n }\n return store[options]();\n };\n function serializeRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record, getter, originalName, idx, setters = {}, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n originalName = fieldNames[getter];\n if (originalName && originalName !== getter) {\n if (!setters[originalName]) {\n setters[originalName] = kendo.setter(originalName);\n }\n setters[originalName](record, getters[getter](record));\n delete record[getter];\n }\n }\n }\n }\n function convertRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record, getter, originalName, idx, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n record[getter] = modelInstance._parse(getter, getters[getter](record));\n originalName = fieldNames[getter];\n if (originalName && originalName !== getter) {\n delete record[originalName];\n }\n }\n }\n }\n function convertGroup(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record, idx, fieldName, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n fieldName = originalFieldNames[record.field];\n if (fieldName && fieldName != record.field) {\n record.field = fieldName;\n }\n record.value = modelInstance._parse(record.field, record.value);\n if (record.hasSubgroups) {\n convertGroup(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n } else {\n convertRecords(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n }\n }\n }\n function wrapDataAccess(originalFunction, model, converter, getters, originalFieldNames, fieldNames) {\n return function (data) {\n data = originalFunction(data);\n return wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames)(data);\n };\n }\n function wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames) {\n return function (data) {\n if (data && !isEmptyObject(getters)) {\n if (toString.call(data) !== '[object Array]' && !(data instanceof ObservableArray)) {\n data = [data];\n }\n converter(data, getters, new model(), originalFieldNames, fieldNames);\n }\n return data || [];\n };\n }\n var DataReader = Class.extend({\n init: function (schema) {\n var that = this, member, get, model, base;\n schema = schema || {};\n for (member in schema) {\n get = schema[member];\n that[member] = typeof get === STRING ? getter(get) : get;\n }\n base = schema.modelBase || Model;\n if (isPlainObject(that.model)) {\n that.model = model = base.define(that.model);\n }\n var dataFunction = proxy(that.data, that);\n that._dataAccessFunction = dataFunction;\n if (that.model) {\n var groupsFunction = proxy(that.groups, that), serializeFunction = proxy(that.serialize, that), originalFieldNames = {}, getters = {}, serializeGetters = {}, fieldNames = {}, shouldSerialize = false, fieldName, name;\n model = that.model;\n if (model.fields) {\n each(model.fields, function (field, value) {\n var fromName;\n fieldName = field;\n if (isPlainObject(value) && value.field) {\n fieldName = value.field;\n } else if (typeof value === STRING) {\n fieldName = value;\n }\n if (isPlainObject(value) && value.from) {\n fromName = value.from;\n }\n shouldSerialize = shouldSerialize || fromName && fromName !== field || fieldName !== field;\n name = fromName || fieldName;\n getters[field] = name.indexOf('.') !== -1 ? getter(name, true) : getter(name);\n serializeGetters[field] = getter(field);\n originalFieldNames[fromName || fieldName] = field;\n fieldNames[field] = fromName || fieldName;\n });\n if (!schema.serialize && shouldSerialize) {\n that.serialize = wrapDataAccess(serializeFunction, model, serializeRecords, serializeGetters, originalFieldNames, fieldNames);\n }\n }\n that._dataAccessFunction = dataFunction;\n that._wrapDataAccessBase = wrapDataAccessBase(model, convertRecords, getters, originalFieldNames, fieldNames);\n that.data = wrapDataAccess(dataFunction, model, convertRecords, getters, originalFieldNames, fieldNames);\n that.groups = wrapDataAccess(groupsFunction, model, convertGroup, getters, originalFieldNames, fieldNames);\n }\n },\n errors: function (data) {\n return data ? data.errors : null;\n },\n parse: identity,\n data: identity,\n total: function (data) {\n return data.length;\n },\n groups: identity,\n aggregates: function () {\n return {};\n },\n serialize: function (data) {\n return data;\n }\n });\n function fillLastGroup(originalGroup, newGroup) {\n var currOriginal;\n var currentNew;\n if (newGroup.items && newGroup.items.length) {\n for (var i = 0; i < newGroup.items.length; i++) {\n currOriginal = originalGroup.items[i];\n currentNew = newGroup.items[i];\n if (currOriginal && currentNew) {\n if (currOriginal.hasSubgroups) {\n fillLastGroup(currOriginal, currentNew);\n } else if (currOriginal.field && currOriginal.value == currentNew.value) {\n currOriginal.items.push.apply(currOriginal.items, currentNew.items);\n } else {\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n }\n } else if (currentNew) {\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n }\n }\n }\n }\n function mergeGroups(target, dest, skip, take) {\n var group, idx = 0, items;\n while (dest.length && take) {\n group = dest[idx];\n items = group.items;\n var length = items.length;\n if (target && target.field === group.field && target.value === group.value) {\n if (target.hasSubgroups && target.items.length) {\n mergeGroups(target.items[target.items.length - 1], group.items, skip, take);\n } else {\n items = items.slice(skip, skip + take);\n target.items = target.items.concat(items);\n }\n dest.splice(idx--, 1);\n } else if (group.hasSubgroups && items.length) {\n mergeGroups(group, items, skip, take);\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n } else {\n items = items.slice(skip, skip + take);\n group.items = items;\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n }\n if (items.length === 0) {\n skip -= length;\n } else {\n skip = 0;\n take -= items.length;\n }\n if (++idx >= dest.length) {\n break;\n }\n }\n if (idx < dest.length) {\n dest.splice(idx, dest.length - idx);\n }\n }\n function flatGroups(groups, indexFunction) {\n var result = [];\n var groupsLength = (groups || []).length;\n var group;\n var items;\n var indexFn = isFunction(indexFunction) ? indexFunction : function (array, index) {\n return array[index];\n };\n for (var groupIndex = 0; groupIndex < groupsLength; groupIndex++) {\n group = indexFn(groups, groupIndex);\n if (group.hasSubgroups) {\n result = result.concat(flatGroups(group.items));\n } else {\n items = group.items;\n for (var itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(indexFn(items, itemIndex));\n }\n }\n }\n return result;\n }\n function flattenGroups(data) {\n var idx, result = [], length, items, itemIndex;\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data.at(idx);\n if (group.hasSubgroups) {\n result = result.concat(flattenGroups(group.items));\n } else {\n items = group.items;\n for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(items.at(itemIndex));\n }\n }\n }\n return result;\n }\n function wrapGroupItems(data, model) {\n var idx, length, group;\n if (model) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n group = data.at(idx);\n if (group.hasSubgroups) {\n wrapGroupItems(group.items, model);\n } else {\n group.items = new LazyObservableArray(group.items, model, group.items._events);\n }\n }\n }\n }\n function eachGroupItems(data, func) {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx].hasSubgroups) {\n if (eachGroupItems(data[idx].items, func)) {\n return true;\n }\n } else if (func(data[idx].items, data[idx])) {\n return true;\n }\n }\n }\n function replaceInRanges(ranges, data, item, observable) {\n for (var idx = 0; idx < ranges.length; idx++) {\n if (ranges[idx].data === data) {\n break;\n }\n if (replaceInRange(ranges[idx].data, item, observable)) {\n break;\n }\n }\n }\n function replaceInRange(items, item, observable) {\n for (var idx = 0, length = items.length; idx < length; idx++) {\n if (items[idx] && items[idx].hasSubgroups) {\n return replaceInRange(items[idx].items, item, observable);\n } else if (items[idx] === item || items[idx] === observable) {\n items[idx] = observable;\n return true;\n }\n }\n }\n function replaceWithObservable(view, data, ranges, type, serverGrouping) {\n for (var viewIndex = 0, length = view.length; viewIndex < length; viewIndex++) {\n var item = view[viewIndex];\n if (!item || item instanceof type) {\n continue;\n }\n if (item.hasSubgroups !== undefined && !serverGrouping) {\n replaceWithObservable(item.items, data, ranges, type, serverGrouping);\n } else {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx] === item) {\n view[viewIndex] = data.at(idx);\n replaceInRanges(ranges, data, item, view[viewIndex]);\n break;\n }\n }\n }\n }\n }\n function removeModel(data, model) {\n var length = data.length;\n var dataItem;\n var idx;\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n if (dataItem.uid && dataItem.uid == model.uid) {\n data.splice(idx, 1);\n return dataItem;\n }\n }\n }\n function indexOfPristineModel(data, model) {\n if (model) {\n return indexOf(data, function (item) {\n return item.uid && item.uid == model.uid || item[model.idField] === model.id && model.id !== model._defaultId;\n });\n }\n return -1;\n }\n function indexOfModel(data, model) {\n if (model) {\n return indexOf(data, function (item) {\n return item.uid == model.uid;\n });\n }\n return -1;\n }\n function indexOf(data, comparer) {\n var idx, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (comparer(data[idx])) {\n return idx;\n }\n }\n return -1;\n }\n function fieldNameFromModel(fields, name) {\n if (fields && !isEmptyObject(fields)) {\n var descriptor = fields[name];\n var fieldName;\n if (isPlainObject(descriptor)) {\n fieldName = descriptor.from || descriptor.field || name;\n } else {\n fieldName = fields[name] || name;\n }\n if (isFunction(fieldName)) {\n return name;\n }\n return fieldName;\n }\n return name;\n }\n function convertFilterDescriptorsField(descriptor, model) {\n var idx, length, target = {};\n for (var field in descriptor) {\n if (field !== 'filters') {\n target[field] = descriptor[field];\n }\n }\n if (descriptor.filters) {\n target.filters = [];\n for (idx = 0, length = descriptor.filters.length; idx < length; idx++) {\n target.filters[idx] = convertFilterDescriptorsField(descriptor.filters[idx], model);\n }\n } else {\n target.field = fieldNameFromModel(model.fields, target.field);\n }\n return target;\n }\n function convertDescriptorsField(descriptors, model) {\n var idx, length, result = [], target, descriptor;\n for (idx = 0, length = descriptors.length; idx < length; idx++) {\n target = {};\n descriptor = descriptors[idx];\n for (var field in descriptor) {\n target[field] = descriptor[field];\n }\n target.field = fieldNameFromModel(model.fields, target.field);\n if (target.aggregates && isArray(target.aggregates)) {\n target.aggregates = convertDescriptorsField(target.aggregates, model);\n }\n result.push(target);\n }\n return result;\n }\n var DataSource = Observable.extend({\n init: function (options) {\n var that = this, model, data;\n if (options) {\n data = options.data;\n }\n options = that.options = extend({}, that.options, options);\n that._map = {};\n that._prefetch = {};\n that._data = [];\n that._pristineData = [];\n that._ranges = [];\n that._view = [];\n that._pristineTotal = 0;\n that._destroyed = [];\n that._pageSize = options.pageSize;\n that._page = options.page || (options.pageSize ? 1 : undefined);\n that._sort = normalizeSort(options.sort);\n that._filter = normalizeFilter(options.filter);\n that._group = normalizeGroup(options.group);\n that._aggregate = options.aggregate;\n that._total = options.total;\n that._shouldDetachObservableParents = true;\n Observable.fn.init.call(that);\n that.transport = Transport.create(options, data, that);\n if (isFunction(that.transport.push)) {\n that.transport.push({\n pushCreate: proxy(that._pushCreate, that),\n pushUpdate: proxy(that._pushUpdate, that),\n pushDestroy: proxy(that._pushDestroy, that)\n });\n }\n if (options.offlineStorage != null) {\n if (typeof options.offlineStorage == 'string') {\n var key = options.offlineStorage;\n that._storage = {\n getItem: function () {\n return JSON.parse(localStorage.getItem(key));\n },\n setItem: function (item) {\n localStorage.setItem(key, stringify(that.reader.serialize(item)));\n }\n };\n } else {\n that._storage = options.offlineStorage;\n }\n }\n that.reader = new kendo.data.readers[options.schema.type || 'json'](options.schema);\n model = that.reader.model || {};\n that._detachObservableParents();\n that._data = that._observe(that._data);\n that._online = true;\n that.bind([\n 'push',\n ERROR,\n CHANGE,\n REQUESTSTART,\n SYNC,\n REQUESTEND,\n PROGRESS\n ], options);\n },\n options: {\n data: null,\n schema: { modelBase: Model },\n offlineStorage: null,\n serverSorting: false,\n serverPaging: false,\n serverFiltering: false,\n serverGrouping: false,\n serverAggregates: false,\n batch: false,\n inPlaceSort: false\n },\n clone: function () {\n return this;\n },\n online: function (value) {\n if (value !== undefined) {\n if (this._online != value) {\n this._online = value;\n if (value) {\n return this.sync();\n }\n }\n return $.Deferred().resolve().promise();\n } else {\n return this._online;\n }\n },\n offlineData: function (state) {\n if (this.options.offlineStorage == null) {\n return null;\n }\n if (state !== undefined) {\n return this._storage.setItem(state);\n }\n return this._storage.getItem() || [];\n },\n _isServerGrouped: function () {\n var group = this.group() || [];\n return this.options.serverGrouping && group.length;\n },\n _pushCreate: function (result) {\n this._push(result, 'pushCreate');\n },\n _pushUpdate: function (result) {\n this._push(result, 'pushUpdate');\n },\n _pushDestroy: function (result) {\n this._push(result, 'pushDestroy');\n },\n _push: function (result, operation) {\n var data = this._readData(result);\n if (!data) {\n data = result;\n }\n this[operation](data);\n },\n _flatData: function (data, skip) {\n if (data) {\n if (this._isServerGrouped()) {\n return flattenGroups(data);\n }\n if (!skip) {\n for (var idx = 0; idx < data.length; idx++) {\n data.at(idx);\n }\n }\n }\n return data;\n },\n parent: noop,\n get: function (id) {\n var idx, length, data = this._flatData(this._data, this.options.useRanges);\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].id == id) {\n return data[idx];\n }\n }\n },\n getByUid: function (id) {\n return this._getByUid(id, this._data);\n },\n _getByUid: function (id, dataItems) {\n var idx, length, data = this._flatData(dataItems, this.options.useRanges);\n if (!data) {\n return;\n }\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].uid == id) {\n return data[idx];\n }\n }\n },\n indexOf: function (model) {\n return indexOfModel(this._data, model);\n },\n at: function (index) {\n return this._data.at(index);\n },\n data: function (value) {\n var that = this;\n if (value !== undefined) {\n that._detachObservableParents();\n that._data = this._observe(value);\n that._pristineData = value.slice(0);\n that._storeData();\n that._ranges = [];\n that.trigger('reset');\n that._addRange(that._data);\n that._total = that._data.length;\n that._pristineTotal = that._total;\n that._process(that._data);\n } else {\n if (that._data) {\n for (var idx = 0; idx < that._data.length; idx++) {\n that._data.at(idx);\n }\n }\n return that._data;\n }\n },\n view: function (value) {\n if (value === undefined) {\n return this._view;\n } else {\n this._view = this._observeView(value);\n }\n },\n _observeView: function (data) {\n var that = this;\n replaceWithObservable(data, that._data, that._ranges, that.reader.model || ObservableObject, that._isServerGrouped());\n var view = new LazyObservableArray(data, that.reader.model);\n view.parent = function () {\n return that.parent();\n };\n return view;\n },\n flatView: function () {\n var groups = this.group() || [];\n if (groups.length) {\n return flattenGroups(this._view);\n } else {\n return this._view;\n }\n },\n add: function (model) {\n return this.insert(this._data.length, model);\n },\n _createNewModel: function (model) {\n if (this.reader.model) {\n return new this.reader.model(model);\n }\n if (model instanceof ObservableObject) {\n return model;\n }\n return new ObservableObject(model);\n },\n insert: function (index, model) {\n if (!model) {\n model = index;\n index = 0;\n }\n if (!(model instanceof Model)) {\n model = this._createNewModel(model);\n }\n if (this._isServerGrouped()) {\n this._data.splice(index, 0, this._wrapInEmptyGroup(model));\n } else {\n this._data.splice(index, 0, model);\n }\n this._insertModelInRange(index, model);\n return model;\n },\n pushInsert: function (index, items) {\n var that = this;\n var rangeSpan = that._getCurrentRangeSpan();\n if (!items) {\n items = index;\n index = 0;\n }\n if (!isArray(items)) {\n items = [items];\n }\n var pushed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n try {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items[idx];\n var result = this.insert(index, item);\n pushed.push(result);\n var pristine = result.toJSON();\n if (this._isServerGrouped()) {\n pristine = this._wrapInEmptyGroup(pristine);\n }\n this._pristineData.push(pristine);\n if (rangeSpan && rangeSpan.length) {\n $(rangeSpan).last()[0].pristineData.push(pristine);\n }\n index++;\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n if (pushed.length) {\n this.trigger('push', {\n type: 'create',\n items: pushed\n });\n }\n },\n pushCreate: function (items) {\n this.pushInsert(this._data.length, items);\n },\n pushUpdate: function (items) {\n if (!isArray(items)) {\n items = [items];\n }\n var pushed = [];\n for (var idx = 0; idx < items.length; idx++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n var target = this.get(model.id);\n if (target) {\n pushed.push(target);\n target.accept(item);\n target.trigger(CHANGE);\n this._updatePristineForModel(target, item);\n } else {\n this.pushCreate(item);\n }\n }\n if (pushed.length) {\n this.trigger('push', {\n type: 'update',\n items: pushed\n });\n }\n },\n pushDestroy: function (items) {\n var pushed = this._removeItems(items);\n if (pushed.length) {\n this.trigger('push', {\n type: 'destroy',\n items: pushed\n });\n }\n },\n _removeItems: function (items, removePristine) {\n if (!isArray(items)) {\n items = [items];\n }\n var shouldRemovePristine = typeof removePristine !== 'undefined' ? removePristine : true;\n var destroyed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n try {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n var found = false;\n this._eachItem(this._data, function (items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.id === model.id) {\n destroyed.push(item);\n items.splice(idx, 1);\n found = true;\n break;\n }\n }\n });\n if (found && shouldRemovePristine) {\n this._removePristineForModel(model);\n this._destroyed.pop();\n }\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n return destroyed;\n },\n remove: function (model) {\n var result, that = this, hasGroups = that._isServerGrouped();\n this._eachItem(that._data, function (items) {\n result = removeModel(items, model);\n if (result && hasGroups) {\n if (!result.isNew || !result.isNew()) {\n that._destroyed.push(result);\n }\n return true;\n }\n });\n this._removeModelFromRanges(model);\n return model;\n },\n destroyed: function () {\n return this._destroyed;\n },\n created: function () {\n var idx, length, result = [], data = this._flatData(this._data, this.options.useRanges);\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && data[idx].isNew()) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n updated: function () {\n var idx, length, result = [], data = this._flatData(this._data, this.options.useRanges);\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && !data[idx].isNew() && data[idx].dirty) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n sync: function () {\n var that = this, created = [], updated = [], destroyed = that._destroyed;\n var promise = $.Deferred().resolve().promise();\n if (that.online()) {\n if (!that.reader.model) {\n return promise;\n }\n created = that.created();\n updated = that.updated();\n var promises = [];\n if (that.options.batch && that.transport.submit) {\n promises = that._sendSubmit(created, updated, destroyed);\n } else {\n promises.push.apply(promises, that._send('create', created));\n promises.push.apply(promises, that._send('update', updated));\n promises.push.apply(promises, that._send('destroy', destroyed));\n }\n promise = $.when.apply(null, promises).then(function () {\n var idx, length;\n for (idx = 0, length = arguments.length; idx < length; idx++) {\n if (arguments[idx]) {\n that._accept(arguments[idx]);\n }\n }\n that._storeData(true);\n that._syncEnd();\n that._change({ action: 'sync' });\n that.trigger(SYNC);\n });\n } else {\n that._storeData(true);\n that._syncEnd();\n that._change({ action: 'sync' });\n }\n return promise;\n },\n _syncEnd: noop,\n cancelChanges: function (model) {\n var that = this;\n if (model instanceof kendo.data.Model) {\n that._cancelModel(model);\n } else {\n that._destroyed = [];\n that._detachObservableParents();\n that._data = that._observe(that._pristineData);\n if (that.options.serverPaging) {\n that._total = that._pristineTotal;\n }\n that._ranges = [];\n that._addRange(that._data, 0);\n that._changesCanceled();\n that._change();\n that._markOfflineUpdatesAsDirty();\n }\n },\n _changesCanceled: noop,\n _markOfflineUpdatesAsDirty: function () {\n var that = this;\n if (that.options.offlineStorage != null) {\n that._eachItem(that._data, function (items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.__state__ == 'update' || item.__state__ == 'create') {\n item.dirty = true;\n }\n }\n });\n }\n },\n hasChanges: function () {\n var idx, length, data = this._flatData(this._data, this.options.useRanges);\n if (this._destroyed.length) {\n return true;\n }\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && data[idx].isNew() || data[idx].dirty) {\n return true;\n }\n }\n return false;\n },\n _accept: function (result) {\n var that = this, models = result.models, response = result.response, idx = 0, serverGroup = that._isServerGrouped(), pristine = that._pristineData, type = result.type, length;\n that.trigger(REQUESTEND, {\n response: response,\n type: type\n });\n if (response && !isEmptyObject(response)) {\n response = that.reader.parse(response);\n if (that._handleCustomErrors(response)) {\n return;\n }\n response = that.reader.data(response);\n if (!isArray(response)) {\n response = [response];\n }\n } else {\n response = $.map(models, function (model) {\n return model.toJSON();\n });\n }\n if (type === 'destroy') {\n that._destroyed = [];\n }\n for (idx = 0, length = models.length; idx < length; idx++) {\n if (type !== 'destroy') {\n models[idx].accept(response[idx]);\n if (type === 'create') {\n pristine.push(serverGroup ? that._wrapInEmptyGroup(models[idx].toJSON()) : response[idx]);\n } else if (type === 'update') {\n that._updatePristineForModel(models[idx], response[idx]);\n }\n } else {\n that._removePristineForModel(models[idx]);\n }\n }\n },\n _updatePristineForModel: function (model, values) {\n this._executeOnPristineForModel(model, function (index, items) {\n kendo.deepExtend(items[index], values);\n });\n },\n _executeOnPristineForModel: function (model, callback) {\n this._eachPristineItem(function (items) {\n var index = indexOfPristineModel(items, model);\n if (index > -1) {\n callback(index, items);\n return true;\n }\n });\n },\n _removePristineForModel: function (model) {\n this._executeOnPristineForModel(model, function (index, items) {\n items.splice(index, 1);\n });\n },\n _readData: function (data) {\n var read = !this._isServerGrouped() ? this.reader.data : this.reader.groups;\n return read.call(this.reader, data);\n },\n _eachPristineItem: function (callback) {\n var that = this;\n var options = that.options;\n var rangeSpan = that._getCurrentRangeSpan();\n that._eachItem(that._pristineData, callback);\n if (options.serverPaging && options.useRanges) {\n each(rangeSpan, function (i, range) {\n that._eachItem(range.pristineData, callback);\n });\n }\n },\n _eachItem: function (data, callback) {\n if (data && data.length) {\n if (this._isServerGrouped()) {\n eachGroupItems(data, callback);\n } else {\n callback(data);\n }\n }\n },\n _pristineForModel: function (model) {\n var pristine, idx, callback = function (items) {\n idx = indexOfPristineModel(items, model);\n if (idx > -1) {\n pristine = items[idx];\n return true;\n }\n };\n this._eachPristineItem(callback);\n return pristine;\n },\n _cancelModel: function (model) {\n var that = this;\n var pristine = this._pristineForModel(model);\n this._eachItem(this._data, function (items) {\n var idx = indexOfModel(items, model);\n if (idx >= 0) {\n if (pristine && (!model.isNew() || pristine.__state__)) {\n items[idx].accept(pristine);\n if (pristine.__state__ == 'update') {\n items[idx].dirty = true;\n }\n } else {\n that._modelCanceled(model);\n items.splice(idx, 1);\n that._removeModelFromRanges(model);\n }\n }\n });\n },\n _modelCanceled: noop,\n _submit: function (promises, data) {\n var that = this;\n that.trigger(REQUESTSTART, { type: 'submit' });\n that.trigger(PROGRESS);\n that.transport.submit(extend({\n success: function (response, type) {\n var promise = $.grep(promises, function (x) {\n return x.type == type;\n })[0];\n if (promise) {\n promise.resolve({\n response: response,\n models: promise.models,\n type: type\n });\n }\n },\n error: function (response, status, error) {\n for (var idx = 0; idx < promises.length; idx++) {\n promises[idx].reject(response);\n }\n that.error(response, status, error);\n }\n }, data));\n },\n _sendSubmit: function (created, updated, destroyed) {\n var that = this, promises = [];\n if (that.options.batch) {\n if (created.length) {\n promises.push($.Deferred(function (deferred) {\n deferred.type = 'create';\n deferred.models = created;\n }));\n }\n if (updated.length) {\n promises.push($.Deferred(function (deferred) {\n deferred.type = 'update';\n deferred.models = updated;\n }));\n }\n if (destroyed.length) {\n promises.push($.Deferred(function (deferred) {\n deferred.type = 'destroy';\n deferred.models = destroyed;\n }));\n }\n that._submit(promises, {\n data: {\n created: that.reader.serialize(toJSON(created)),\n updated: that.reader.serialize(toJSON(updated)),\n destroyed: that.reader.serialize(toJSON(destroyed))\n }\n });\n }\n return promises;\n },\n _promise: function (data, models, type) {\n var that = this;\n return $.Deferred(function (deferred) {\n that.trigger(REQUESTSTART, { type: type });\n that.trigger(PROGRESS);\n that.transport[type].call(that.transport, extend({\n success: function (response) {\n deferred.resolve({\n response: response,\n models: models,\n type: type\n });\n },\n error: function (response, status, error) {\n deferred.reject(response);\n that.error(response, status, error);\n }\n }, data));\n }).promise();\n },\n _send: function (method, data) {\n var that = this, idx, length, promises = [], converted = that.reader.serialize(toJSON(data));\n if (that.options.batch) {\n if (data.length) {\n promises.push(that._promise({ data: { models: converted } }, data, method));\n }\n } else {\n for (idx = 0, length = data.length; idx < length; idx++) {\n promises.push(that._promise({ data: converted[idx] }, [data[idx]], method));\n }\n }\n return promises;\n },\n read: function (data) {\n var that = this, params = that._params(data);\n var deferred = $.Deferred();\n that._queueRequest(params, function () {\n var isPrevented = that.trigger(REQUESTSTART, { type: 'read' });\n if (!isPrevented) {\n that.trigger(PROGRESS);\n that._ranges = [];\n that.trigger('reset');\n if (that.online()) {\n that.transport.read({\n data: params,\n success: function (data) {\n that._ranges = [];\n that.success(data, params);\n deferred.resolve();\n },\n error: function () {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n deferred.reject.apply(deferred, args);\n }\n });\n } else if (that.options.offlineStorage != null) {\n that.success(that.offlineData(), params);\n deferred.resolve();\n }\n } else {\n that._dequeueRequest();\n deferred.resolve(isPrevented);\n }\n });\n return deferred.promise();\n },\n _readAggregates: function (data) {\n return this.reader.aggregates(data);\n },\n success: function (data) {\n var that = this, options = that.options, items, replaceSubset;\n that.trigger(REQUESTEND, {\n response: data,\n type: 'read'\n });\n if (that.online()) {\n data = that.reader.parse(data);\n if (that._handleCustomErrors(data)) {\n that._dequeueRequest();\n return;\n }\n that._total = that.reader.total(data);\n if (that._pageSize > that._total) {\n that._pageSize = that._total;\n if (that.options.pageSize && that.options.pageSize > that._pageSize) {\n that._pageSize = that.options.pageSize;\n }\n }\n if (that._aggregate && options.serverAggregates) {\n that._aggregateResult = that._readAggregates(data);\n }\n data = that._readData(data);\n that._destroyed = [];\n } else {\n data = that._readData(data);\n items = [];\n var itemIds = {};\n var model = that.reader.model;\n var idField = model ? model.idField : 'id';\n var idx;\n for (idx = 0; idx < this._destroyed.length; idx++) {\n var id = this._destroyed[idx][idField];\n itemIds[id] = id;\n }\n for (idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var state = item.__state__;\n if (state == 'destroy') {\n if (!itemIds[item[idField]]) {\n this._destroyed.push(this._createNewModel(item));\n }\n } else {\n items.push(item);\n }\n }\n data = items;\n that._total = data.length;\n }\n that._pristineTotal = that._total;\n replaceSubset = that._skip && that._data.length && that._skip < that._data.length;\n if (that.options.endless) {\n if (replaceSubset) {\n that._pristineData.splice(that._skip, that._pristineData.length);\n }\n items = data.slice(0);\n for (var j = 0; j < items.length; j++) {\n that._pristineData.push(items[j]);\n }\n } else {\n that._pristineData = data.slice(0);\n }\n that._detachObservableParents();\n if (that.options.endless) {\n that._data.unbind(CHANGE, that._changeHandler);\n if (that._isServerGrouped() && that._data[that._data.length - 1].value === data[0].value) {\n fillLastGroup(that._data[that._data.length - 1], data[0]);\n data.shift();\n }\n data = that._observe(data);\n if (replaceSubset) {\n that._data.splice(that._skip, that._data.length);\n }\n for (var i = 0; i < data.length; i++) {\n that._data.push(data[i]);\n }\n that._data.bind(CHANGE, that._changeHandler);\n } else {\n that._data = that._observe(data);\n }\n that._markOfflineUpdatesAsDirty();\n that._storeData();\n that._addRange(that._data);\n that._process(that._data);\n that._dequeueRequest();\n },\n _detachObservableParents: function () {\n if (this._data && this._shouldDetachObservableParents) {\n for (var idx = 0; idx < this._data.length; idx++) {\n if (this._data[idx].parent) {\n this._data[idx].parent = noop;\n }\n }\n }\n },\n _storeData: function (updatePristine) {\n var serverGrouping = this._isServerGrouped();\n var model = this.reader.model;\n function items(data) {\n var state = [];\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data.at(idx);\n var item = dataItem.toJSON();\n if (serverGrouping && dataItem.items) {\n item.items = items(dataItem.items);\n } else {\n item.uid = dataItem.uid;\n if (model) {\n if (dataItem.isNew()) {\n item.__state__ = 'create';\n } else if (dataItem.dirty) {\n item.__state__ = 'update';\n }\n }\n }\n state.push(item);\n }\n return state;\n }\n if (this.options.offlineStorage != null) {\n var state = items(this._data);\n var destroyed = [];\n for (var idx = 0; idx < this._destroyed.length; idx++) {\n var item = this._destroyed[idx].toJSON();\n item.__state__ = 'destroy';\n destroyed.push(item);\n }\n this.offlineData(state.concat(destroyed));\n if (updatePristine) {\n this._pristineData = this.reader.reader ? this.reader.reader._wrapDataAccessBase(state) : this.reader._wrapDataAccessBase(state);\n }\n }\n },\n _addRange: function (data, skip) {\n var that = this, start = typeof skip !== 'undefined' ? skip : that._skip || 0, end = start + that._flatData(data, true).length;\n that._ranges.push({\n start: start,\n end: end,\n data: data,\n pristineData: data.toJSON(),\n timestamp: that._timeStamp()\n });\n that._sortRanges();\n },\n _sortRanges: function () {\n this._ranges.sort(function (x, y) {\n return x.start - y.start;\n });\n },\n error: function (xhr, status, errorThrown) {\n this._dequeueRequest();\n this.trigger(REQUESTEND, {});\n this.trigger(ERROR, {\n xhr: xhr,\n status: status,\n errorThrown: errorThrown\n });\n },\n _params: function (data) {\n var that = this, options = extend({\n take: that.take(),\n skip: that.skip(),\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n }, data);\n if (!that.options.serverPaging) {\n delete options.take;\n delete options.skip;\n delete options.page;\n delete options.pageSize;\n }\n if (!that.options.serverGrouping) {\n delete options.group;\n } else if (that.reader.model && options.group) {\n options.group = convertDescriptorsField(options.group, that.reader.model);\n }\n if (!that.options.serverFiltering) {\n delete options.filter;\n } else if (that.reader.model && options.filter) {\n options.filter = convertFilterDescriptorsField(options.filter, that.reader.model);\n }\n if (!that.options.serverSorting) {\n delete options.sort;\n } else if (that.reader.model && options.sort) {\n options.sort = convertDescriptorsField(options.sort, that.reader.model);\n }\n if (!that.options.serverAggregates) {\n delete options.aggregate;\n } else if (that.reader.model && options.aggregate) {\n options.aggregate = convertDescriptorsField(options.aggregate, that.reader.model);\n }\n return options;\n },\n _queueRequest: function (options, callback) {\n var that = this;\n if (!that._requestInProgress) {\n that._requestInProgress = true;\n that._pending = undefined;\n callback();\n } else {\n that._pending = {\n callback: proxy(callback, that),\n options: options\n };\n }\n },\n _dequeueRequest: function () {\n var that = this;\n that._requestInProgress = false;\n if (that._pending) {\n that._queueRequest(that._pending.options, that._pending.callback);\n }\n },\n _handleCustomErrors: function (response) {\n if (this.reader.errors) {\n var errors = this.reader.errors(response);\n if (errors) {\n this.trigger(ERROR, {\n xhr: null,\n status: 'customerror',\n errorThrown: 'custom error',\n errors: errors\n });\n return true;\n }\n }\n return false;\n },\n _shouldWrap: function (data) {\n var model = this.reader.model;\n if (model && data.length) {\n return !(data[0] instanceof model);\n }\n return false;\n },\n _observe: function (data) {\n var that = this, model = that.reader.model;\n that._shouldDetachObservableParents = true;\n if (data instanceof ObservableArray) {\n that._shouldDetachObservableParents = false;\n if (that._shouldWrap(data)) {\n data.type = that.reader.model;\n data.wrapAll(data, data);\n }\n } else {\n var arrayType = that.pageSize() && !that.options.serverPaging ? LazyObservableArray : ObservableArray;\n data = new arrayType(data, that.reader.model);\n data.parent = function () {\n return that.parent();\n };\n }\n if (that._isServerGrouped()) {\n wrapGroupItems(data, model);\n }\n if (that._changeHandler && that._data && that._data instanceof ObservableArray && !(that.options.useRanges && that.options.serverPaging)) {\n that._data.unbind(CHANGE, that._changeHandler);\n } else {\n that._changeHandler = proxy(that._change, that);\n }\n return data.bind(CHANGE, that._changeHandler);\n },\n _updateTotalForAction: function (action, items) {\n var that = this;\n var total = parseInt(that._total, 10);\n if (!isNumber(that._total)) {\n total = parseInt(that._pristineTotal, 10);\n }\n if (action === 'add') {\n total += items.length;\n } else if (action === 'remove') {\n total -= items.length;\n } else if (action !== 'itemchange' && action !== 'sync' && !that.options.serverPaging) {\n total = that._pristineTotal;\n } else if (action === 'sync') {\n total = that._pristineTotal = parseInt(that._total, 10);\n }\n that._total = total;\n },\n _change: function (e) {\n var that = this, idx, length, action = e ? e.action : '';\n if (action === 'remove') {\n for (idx = 0, length = e.items.length; idx < length; idx++) {\n if (!e.items[idx].isNew || !e.items[idx].isNew()) {\n that._destroyed.push(e.items[idx]);\n }\n }\n }\n if (that.options.autoSync && (action === 'add' || action === 'remove' || action === 'itemchange')) {\n var handler = function (args) {\n if (args.action === 'sync') {\n that.unbind('change', handler);\n that._updateTotalForAction(action, e.items);\n }\n };\n that.first('change', handler);\n that.sync();\n } else {\n that._updateTotalForAction(action, e ? e.items : []);\n that._process(that._data, e);\n }\n },\n _calculateAggregates: function (data, options) {\n options = options || {};\n var query = new Query(data), aggregates = options.aggregate, filter = options.filter;\n if (filter) {\n query = query.filter(filter);\n }\n return query.aggregate(aggregates);\n },\n _process: function (data, e) {\n var that = this, options = {}, result;\n if (that.options.serverPaging !== true) {\n options.skip = that._skip;\n options.take = that._take || that._pageSize;\n if (options.skip === undefined && that._page !== undefined && that._pageSize !== undefined) {\n options.skip = (that._page - 1) * that._pageSize;\n }\n if (that.options.useRanges) {\n options.skip = that.currentRangeStart();\n }\n }\n if (that.options.serverSorting !== true) {\n options.sort = that._sort;\n }\n if (that.options.serverFiltering !== true) {\n options.filter = that._filter;\n }\n if (that.options.serverGrouping !== true) {\n options.group = that._group;\n }\n if (that.options.serverAggregates !== true) {\n options.aggregate = that._aggregate;\n }\n if (that.options.serverGrouping) {\n that._clearEmptyGroups(data);\n }\n result = that._queryProcess(data, options);\n if (that.options.serverAggregates !== true) {\n that._aggregateResult = that._calculateAggregates(result.dataToAggregate || data, options);\n }\n that.view(result.data);\n that._setFilterTotal(result.total, false);\n e = e || {};\n e.items = e.items || that._view;\n that.trigger(CHANGE, e);\n },\n _clearEmptyGroups: function (data) {\n for (var idx = data.length - 1; idx >= 0; idx--) {\n var group = data[idx];\n if (group.hasSubgroups) {\n this._clearEmptyGroups(group.items);\n } else {\n if (group.items && !group.items.length) {\n splice.apply(group.parent(), [\n idx,\n 1\n ]);\n }\n }\n }\n },\n _queryProcess: function (data, options) {\n if (this.options.inPlaceSort) {\n return Query.process(data, options, this.options.inPlaceSort);\n } else {\n return Query.process(data, options);\n }\n },\n _mergeState: function (options) {\n var that = this;\n if (options !== undefined) {\n that._pageSize = options.pageSize;\n that._page = options.page;\n that._sort = options.sort;\n that._filter = options.filter;\n that._group = options.group;\n that._aggregate = options.aggregate;\n that._skip = that._currentRangeStart = options.skip;\n that._take = options.take;\n if (that._skip === undefined) {\n that._skip = that._currentRangeStart = that.skip();\n options.skip = that.skip();\n }\n if (that._take === undefined && that._pageSize !== undefined) {\n that._take = that._pageSize;\n options.take = that._take;\n }\n if (options.sort) {\n that._sort = options.sort = normalizeSort(options.sort);\n }\n if (options.filter) {\n that._filter = options.filter = that.options.accentFoldingFiltering && !$.isEmptyObject(options.filter) ? $.extend({}, normalizeFilter(options.filter), { accentFoldingFiltering: that.options.accentFoldingFiltering }) : normalizeFilter(options.filter);\n }\n if (options.group) {\n that._group = options.group = normalizeGroup(options.group);\n }\n if (options.aggregate) {\n that._aggregate = options.aggregate = normalizeAggregate(options.aggregate);\n }\n }\n return options;\n },\n query: function (options) {\n var result;\n var remote = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;\n if (remote || (this._data === undefined || this._data.length === 0) && !this._destroyed.length) {\n if (this.options.endless) {\n var moreItemsCount = options.pageSize - this.pageSize();\n if (moreItemsCount > 0) {\n moreItemsCount = this.pageSize();\n options.page = options.pageSize / moreItemsCount;\n options.pageSize = moreItemsCount;\n } else {\n options.page = 1;\n this.options.endless = false;\n }\n }\n return this.read(this._mergeState(options));\n }\n var isPrevented = this.trigger(REQUESTSTART, { type: 'read' });\n if (!isPrevented) {\n this.trigger(PROGRESS);\n result = this._queryProcess(this._data, this._mergeState(options));\n this._setFilterTotal(result.total, true);\n this._aggregateResult = this._calculateAggregates(result.dataToAggregate || this._data, options);\n this.view(result.data);\n this.trigger(REQUESTEND, { type: 'read' });\n this.trigger(CHANGE, { items: result.data });\n }\n return $.Deferred().resolve(isPrevented).promise();\n },\n _setFilterTotal: function (filterTotal, setDefaultValue) {\n var that = this;\n if (!that.options.serverFiltering) {\n if (filterTotal !== undefined) {\n that._total = filterTotal;\n } else if (setDefaultValue) {\n that._total = that._data.length;\n }\n }\n },\n fetch: function (callback) {\n var that = this;\n var fn = function (isPrevented) {\n if (isPrevented !== true && isFunction(callback)) {\n callback.call(that);\n }\n };\n return this._query().done(fn);\n },\n _query: function (options) {\n var that = this;\n return that.query(extend({}, {\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that.sort(),\n filter: that.filter(),\n group: that.group(),\n aggregate: that.aggregate()\n }, options));\n },\n next: function (options) {\n var that = this, page = that.page(), total = that.total();\n options = options || {};\n if (!page || total && page + 1 > that.totalPages()) {\n return;\n }\n that._skip = that._currentRangeStart = page * that.take();\n page += 1;\n options.page = page;\n that._query(options);\n return page;\n },\n prev: function (options) {\n var that = this, page = that.page();\n options = options || {};\n if (!page || page === 1) {\n return;\n }\n that._skip = that._currentRangeStart = that._skip - that.take();\n page -= 1;\n options.page = page;\n that._query(options);\n return page;\n },\n page: function (val) {\n var that = this, skip;\n if (val !== undefined) {\n val = math.max(math.min(math.max(val, 1), that.totalPages()), 1);\n that._query(that._pageableQueryOptions({ page: val }));\n return;\n }\n skip = that.skip();\n return skip !== undefined ? math.round((skip || 0) / (that.take() || 1)) + 1 : undefined;\n },\n pageSize: function (val) {\n var that = this;\n if (val !== undefined) {\n that._query(that._pageableQueryOptions({\n pageSize: val,\n page: 1\n }));\n return;\n }\n return that.take();\n },\n sort: function (val) {\n var that = this;\n if (val !== undefined) {\n that._query({ sort: val });\n return;\n }\n return that._sort;\n },\n filter: function (val) {\n var that = this;\n if (val === undefined) {\n return that._filter;\n }\n that.trigger('reset');\n that._query({\n filter: val,\n page: 1\n });\n },\n group: function (val) {\n var that = this;\n if (val !== undefined) {\n that._query({ group: val });\n return;\n }\n return that._group;\n },\n total: function () {\n return parseInt(this._total || 0, 10);\n },\n aggregate: function (val) {\n var that = this;\n if (val !== undefined) {\n that._query({ aggregate: val });\n return;\n }\n return that._aggregate;\n },\n aggregates: function () {\n var result = this._aggregateResult;\n if (isEmptyObject(result)) {\n result = this._emptyAggregates(this.aggregate());\n }\n return result;\n },\n _emptyAggregates: function (aggregates) {\n var result = {};\n if (!isEmptyObject(aggregates)) {\n var aggregate = {};\n if (!isArray(aggregates)) {\n aggregates = [aggregates];\n }\n for (var idx = 0; idx < aggregates.length; idx++) {\n aggregate[aggregates[idx].aggregate] = 0;\n result[aggregates[idx].field] = aggregate;\n }\n }\n return result;\n },\n _pageableQueryOptions: function (options) {\n return options;\n },\n _wrapInEmptyGroup: function (model) {\n var groups = this.group(), parent, group, idx, length;\n for (idx = groups.length - 1, length = 0; idx >= length; idx--) {\n group = groups[idx];\n parent = {\n value: model.get ? model.get(group.field) : model[group.field],\n field: group.field,\n items: parent ? [parent] : [model],\n hasSubgroups: !!parent,\n aggregates: this._emptyAggregates(group.aggregates)\n };\n }\n return parent;\n },\n totalPages: function () {\n var that = this, pageSize = that.pageSize() || that.total();\n return math.ceil((that.total() || 0) / pageSize);\n },\n inRange: function (skip, take) {\n var that = this, end = math.min(skip + take, that.total());\n if (!that.options.serverPaging && that._data.length > 0) {\n return true;\n }\n return that._findRange(skip, end).length > 0;\n },\n lastRange: function () {\n var ranges = this._ranges;\n return ranges[ranges.length - 1] || {\n start: 0,\n end: 0,\n data: []\n };\n },\n firstItemUid: function () {\n var ranges = this._ranges;\n return ranges.length && ranges[0].data.length && ranges[0].data[0].uid;\n },\n enableRequestsInProgress: function () {\n this._skipRequestsInProgress = false;\n },\n _timeStamp: function () {\n return new Date().getTime();\n },\n range: function (skip, take, callback) {\n this._currentRequestTimeStamp = this._timeStamp();\n this._skipRequestsInProgress = true;\n skip = math.min(skip || 0, this.total());\n callback = isFunction(callback) ? callback : noop;\n var that = this, pageSkip = math.max(math.floor(skip / take), 0) * take, size = math.min(pageSkip + take, that.total()), data;\n data = that._findRange(skip, math.min(skip + take, that.total()));\n if (data.length || that.total() === 0) {\n that._processRangeData(data, skip, take, pageSkip, size);\n callback();\n return;\n }\n if (take !== undefined) {\n if (!that._rangeExists(pageSkip, size)) {\n that.prefetch(pageSkip, take, function () {\n if (skip > pageSkip && size < that.total() && !that._rangeExists(size, math.min(size + take, that.total()))) {\n that.prefetch(size, take, function () {\n that.range(skip, take, callback);\n });\n } else {\n that.range(skip, take, callback);\n }\n });\n } else if (pageSkip < skip) {\n that.prefetch(size, take, function () {\n that.range(skip, take, callback);\n });\n }\n }\n },\n _findRange: function (start, end) {\n var that = this, ranges = that._ranges, range, data = [], skipIdx, takeIdx, startIndex, endIndex, rangeData, rangeEnd, processed, options = that.options, remote = options.serverSorting || options.serverPaging || options.serverFiltering || options.serverGrouping || options.serverAggregates, flatData, count, length;\n for (skipIdx = 0, length = ranges.length; skipIdx < length; skipIdx++) {\n range = ranges[skipIdx];\n if (start >= range.start && start <= range.end) {\n count = 0;\n for (takeIdx = skipIdx; takeIdx < length; takeIdx++) {\n range = ranges[takeIdx];\n flatData = that._flatData(range.data, true);\n if (flatData.length && start + count >= range.start) {\n rangeData = range.data;\n rangeEnd = range.end;\n if (!remote) {\n if (options.inPlaceSort) {\n processed = that._queryProcess(range.data, { filter: that.filter() });\n } else {\n var sort = normalizeGroupWithoutCompare(that.group() || []).concat(normalizeSort(that.sort() || []));\n processed = that._queryProcess(range.data, {\n sort: sort,\n filter: that.filter()\n });\n }\n flatData = rangeData = processed.data;\n if (processed.total !== undefined) {\n rangeEnd = processed.total;\n }\n }\n startIndex = 0;\n if (start + count > range.start) {\n startIndex = start + count - range.start;\n }\n endIndex = flatData.length;\n if (rangeEnd > end) {\n endIndex = endIndex - (rangeEnd - end);\n }\n count += endIndex - startIndex;\n data = that._mergeGroups(data, rangeData, startIndex, endIndex);\n if (end <= range.end && count == end - start) {\n return data;\n }\n }\n }\n break;\n }\n }\n return [];\n },\n _mergeGroups: function (data, range, skip, take) {\n if (this._isServerGrouped()) {\n var temp = range.toJSON(), prevGroup;\n if (data.length) {\n prevGroup = data[data.length - 1];\n }\n mergeGroups(prevGroup, temp, skip, take);\n return data.concat(temp);\n }\n return data.concat(range.slice(skip, take));\n },\n _processRangeData: function (data, skip, take, pageSkip, size) {\n var that = this;\n that._pending = undefined;\n that._skip = skip > that.skip() ? math.min(size, (that.totalPages() - 1) * that.take()) : pageSkip;\n that._currentRangeStart = skip;\n that._take = take;\n var paging = that.options.serverPaging;\n var sorting = that.options.serverSorting;\n var filtering = that.options.serverFiltering;\n var aggregates = that.options.serverAggregates;\n try {\n that.options.serverPaging = true;\n if (!that._isServerGrouped() && !(that.group() && that.group().length)) {\n that.options.serverSorting = true;\n }\n that.options.serverFiltering = true;\n that.options.serverPaging = true;\n that.options.serverAggregates = true;\n if (paging) {\n that._detachObservableParents();\n that._data = data = that._observe(data);\n }\n that._process(data);\n } finally {\n that.options.serverPaging = paging;\n that.options.serverSorting = sorting;\n that.options.serverFiltering = filtering;\n that.options.serverAggregates = aggregates;\n }\n },\n skip: function () {\n var that = this;\n if (that._skip === undefined) {\n return that._page !== undefined ? (that._page - 1) * (that.take() || 1) : undefined;\n }\n return that._skip;\n },\n currentRangeStart: function () {\n return this._currentRangeStart || 0;\n },\n take: function () {\n return this._take || this._pageSize;\n },\n _prefetchSuccessHandler: function (skip, size, callback, force) {\n var that = this;\n var timestamp = that._timeStamp();\n return function (data) {\n var found = false, range = {\n start: skip,\n end: size,\n data: [],\n timestamp: that._timeStamp()\n }, idx, length, temp;\n that._dequeueRequest();\n that.trigger(REQUESTEND, {\n response: data,\n type: 'read'\n });\n data = that.reader.parse(data);\n temp = that._readData(data);\n if (temp.length) {\n for (idx = 0, length = that._ranges.length; idx < length; idx++) {\n if (that._ranges[idx].start === skip) {\n found = true;\n range = that._ranges[idx];\n range.pristineData = temp;\n range.data = that._observe(temp);\n range.end = range.start + that._flatData(range.data, true).length;\n that._sortRanges();\n break;\n }\n }\n if (!found) {\n that._addRange(that._observe(temp), skip);\n }\n }\n that._total = that.reader.total(data);\n if (force || (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress)) {\n if (callback && temp.length) {\n callback();\n } else {\n that.trigger(CHANGE, {});\n }\n }\n };\n },\n prefetch: function (skip, take, callback) {\n var that = this, size = math.min(skip + take, that.total()), options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n if (!that._rangeExists(skip, size)) {\n clearTimeout(that._timeout);\n that._timeout = setTimeout(function () {\n that._queueRequest(options, function () {\n if (!that.trigger(REQUESTSTART, { type: 'read' })) {\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback),\n error: function () {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n } else if (callback) {\n callback();\n }\n },\n _multiplePrefetch: function (skip, take, callback) {\n var that = this, size = math.min(skip + take, that.total()), options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n if (!that._rangeExists(skip, size)) {\n if (!that.trigger(REQUESTSTART, { type: 'read' })) {\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback, true)\n });\n }\n } else if (callback) {\n callback();\n }\n },\n _rangeExists: function (start, end) {\n var that = this, ranges = that._ranges, idx, length;\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= start && ranges[idx].end >= end) {\n return true;\n }\n }\n return false;\n },\n _getCurrentRangeSpan: function () {\n var that = this;\n var ranges = that._ranges;\n var start = that.currentRangeStart();\n var end = start + (that.take() || 0);\n var rangeSpan = [];\n var range;\n var idx;\n var length = ranges.length;\n for (idx = 0; idx < length; idx++) {\n range = ranges[idx];\n if (range.start <= start && range.end >= start || range.start >= start && range.start <= end) {\n rangeSpan.push(range);\n }\n }\n return rangeSpan;\n },\n _removeModelFromRanges: function (model) {\n var that = this;\n var range;\n for (var idx = 0, length = this._ranges.length; idx < length; idx++) {\n range = this._ranges[idx];\n that._removeModelFromRange(range, model);\n }\n that._updateRangesLength();\n },\n _removeModelFromRange: function (range, model) {\n this._eachItem(range.data, function (data) {\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data[idx];\n if (dataItem.uid && dataItem.uid == model.uid) {\n [].splice.call(data, idx, 1);\n break;\n }\n }\n });\n },\n _insertModelInRange: function (index, model) {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var range;\n var i;\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n if (range.start <= index && range.end >= index) {\n if (!that._getByUid(model.uid, range.data)) {\n if (that._isServerGrouped()) {\n range.data.splice(index, 0, that._wrapInEmptyGroup(model));\n } else {\n range.data.splice(index, 0, model);\n }\n }\n break;\n }\n }\n that._updateRangesLength();\n },\n _updateRangesLength: function () {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchFound = false;\n var mismatchLength = 0;\n var lengthDifference = 0;\n var range;\n var i;\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n lengthDifference = that._flatData(range.data, true).length - math.abs(range.end - range.start);\n if (!mismatchFound && lengthDifference !== 0) {\n mismatchFound = true;\n mismatchLength = lengthDifference;\n range.end += mismatchLength;\n continue;\n }\n if (mismatchFound) {\n range.start += mismatchLength;\n range.end += mismatchLength;\n }\n }\n }\n });\n var Transport = {};\n Transport.create = function (options, data, dataSource) {\n var transport, transportOptions = options.transport ? $.extend({}, options.transport) : null;\n if (transportOptions) {\n transportOptions.read = typeof transportOptions.read === STRING ? { url: transportOptions.read } : transportOptions.read;\n if (options.type === 'jsdo') {\n transportOptions.dataSource = dataSource;\n }\n if (options.type) {\n kendo.data.transports = kendo.data.transports || {};\n kendo.data.schemas = kendo.data.schemas || {};\n if (!kendo.data.transports[options.type]) {\n kendo.logToConsole('Unknown DataSource transport type \\'' + options.type + '\\'.\\nVerify that registration scripts for this type are included after Kendo UI on the page.', 'warn');\n } else if (!isPlainObject(kendo.data.transports[options.type])) {\n transport = new kendo.data.transports[options.type](extend(transportOptions, { data: data }));\n } else {\n transportOptions = extend(true, {}, kendo.data.transports[options.type], transportOptions);\n }\n options.schema = extend(true, {}, kendo.data.schemas[options.type], options.schema);\n }\n if (!transport) {\n transport = isFunction(transportOptions.read) ? transportOptions : new RemoteTransport(transportOptions);\n }\n } else {\n transport = new LocalTransport({ data: options.data || [] });\n }\n return transport;\n };\n DataSource.create = function (options) {\n if (isArray(options) || options instanceof ObservableArray) {\n options = { data: options };\n }\n var dataSource = options || {}, data = dataSource.data, fields = dataSource.fields, table = dataSource.table, select = dataSource.select, idx, length, model = {}, field;\n if (!data && fields && !dataSource.transport) {\n if (table) {\n data = inferTable(table, fields);\n } else if (select) {\n data = inferSelect(select, fields);\n if (dataSource.group === undefined && data[0] && data[0].optgroup !== undefined) {\n dataSource.group = 'optgroup';\n }\n }\n }\n if (kendo.data.Model && fields && (!dataSource.schema || !dataSource.schema.model)) {\n for (idx = 0, length = fields.length; idx < length; idx++) {\n field = fields[idx];\n if (field.type) {\n model[field.field] = field;\n }\n }\n if (!isEmptyObject(model)) {\n dataSource.schema = extend(true, dataSource.schema, { model: { fields: model } });\n }\n }\n dataSource.data = data;\n select = null;\n dataSource.select = null;\n table = null;\n dataSource.table = null;\n return dataSource instanceof DataSource ? dataSource : new DataSource(dataSource);\n };\n function inferSelect(select, fields) {\n select = $(select)[0];\n var options = select.options;\n var firstField = fields[0];\n var secondField = fields[1];\n var data = [];\n var idx, length;\n var optgroup;\n var option;\n var record;\n var value;\n for (idx = 0, length = options.length; idx < length; idx++) {\n record = {};\n option = options[idx];\n optgroup = option.parentNode;\n if (optgroup === select) {\n optgroup = null;\n }\n if (option.disabled || optgroup && optgroup.disabled) {\n continue;\n }\n if (optgroup) {\n record.optgroup = optgroup.label;\n }\n record[firstField.field] = option.text;\n value = option.attributes.value;\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n record[secondField.field] = value;\n data.push(record);\n }\n return data;\n }\n function inferTable(table, fields) {\n var tbody = $(table)[0].tBodies[0], rows = tbody ? tbody.rows : [], idx, length, fieldIndex, fieldCount = fields.length, data = [], cells, record, cell, empty;\n for (idx = 0, length = rows.length; idx < length; idx++) {\n record = {};\n empty = true;\n cells = rows[idx].cells;\n for (fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++) {\n cell = cells[fieldIndex];\n if (cell.nodeName.toLowerCase() !== 'th') {\n empty = false;\n record[fields[fieldIndex].field] = cell.innerHTML;\n }\n }\n if (!empty) {\n data.push(record);\n }\n }\n return data;\n }\n var Node = Model.define({\n idField: 'id',\n init: function (value) {\n var that = this, hasChildren = that.hasChildren || value && value.hasChildren, childrenField = 'items', childrenOptions = {};\n kendo.data.Model.fn.init.call(that, value);\n if (typeof that.children === STRING) {\n childrenField = that.children;\n }\n childrenOptions = {\n schema: {\n data: childrenField,\n model: {\n hasChildren: hasChildren,\n id: that.idField,\n fields: that.fields\n }\n }\n };\n if (typeof that.children !== STRING) {\n extend(childrenOptions, that.children);\n }\n childrenOptions.data = value;\n if (!hasChildren) {\n hasChildren = childrenOptions.schema.data;\n }\n if (typeof hasChildren === STRING) {\n hasChildren = kendo.getter(hasChildren);\n }\n if (isFunction(hasChildren)) {\n var hasChildrenObject = hasChildren.call(that, that);\n if (hasChildrenObject && hasChildrenObject.length === 0) {\n that.hasChildren = false;\n } else {\n that.hasChildren = !!hasChildrenObject;\n }\n }\n that._childrenOptions = childrenOptions;\n if (that.hasChildren) {\n that._initChildren();\n }\n that._loaded = !!(value && value._loaded);\n },\n _initChildren: function () {\n var that = this;\n var children, transport, parameterMap;\n if (!(that.children instanceof HierarchicalDataSource)) {\n children = that.children = new HierarchicalDataSource(that._childrenOptions);\n transport = children.transport;\n parameterMap = transport.parameterMap;\n transport.parameterMap = function (data, type) {\n data[that.idField || 'id'] = that.id;\n if (parameterMap) {\n data = parameterMap(data, type);\n }\n return data;\n };\n children.parent = function () {\n return that;\n };\n children.bind(CHANGE, function (e) {\n e.node = e.node || that;\n that.trigger(CHANGE, e);\n });\n children.bind(ERROR, function (e) {\n var collection = that.parent();\n if (collection) {\n e.node = e.node || that;\n collection.trigger(ERROR, e);\n }\n });\n that._updateChildrenField();\n }\n },\n append: function (model) {\n this._initChildren();\n this.loaded(true);\n this.children.add(model);\n },\n hasChildren: false,\n level: function () {\n var parentNode = this.parentNode(), level = 0;\n while (parentNode && parentNode.parentNode) {\n level++;\n parentNode = parentNode.parentNode ? parentNode.parentNode() : null;\n }\n return level;\n },\n _updateChildrenField: function () {\n var fieldName = this._childrenOptions.schema.data;\n this[fieldName || 'items'] = this.children.data();\n },\n _childrenLoaded: function () {\n this._loaded = true;\n this._updateChildrenField();\n },\n load: function () {\n var options = {};\n var method = '_query';\n var children, promise;\n if (this.hasChildren) {\n this._initChildren();\n children = this.children;\n options[this.idField || 'id'] = this.id;\n if (!this._loaded) {\n children._data = undefined;\n method = 'read';\n }\n children.one(CHANGE, proxy(this._childrenLoaded, this));\n if (this._matchFilter) {\n options.filter = {\n field: '_matchFilter',\n operator: 'eq',\n value: true\n };\n }\n promise = children[method](options);\n } else {\n this.loaded(true);\n }\n return promise || $.Deferred().resolve().promise();\n },\n parentNode: function () {\n var array = this.parent();\n return array.parent();\n },\n loaded: function (value) {\n if (value !== undefined) {\n this._loaded = value;\n } else {\n return this._loaded;\n }\n },\n shouldSerialize: function (field) {\n return Model.fn.shouldSerialize.call(this, field) && field !== 'children' && field !== '_loaded' && field !== 'hasChildren' && field !== '_childrenOptions';\n }\n });\n function dataMethod(name) {\n return function () {\n var data = this._data, result = DataSource.fn[name].apply(this, slice.call(arguments));\n if (this._data != data) {\n this._attachBubbleHandlers();\n }\n return result;\n };\n }\n var HierarchicalDataSource = DataSource.extend({\n init: function (options) {\n var node = Node.define({ children: options });\n if (options.filter && !options.serverFiltering) {\n this._hierarchicalFilter = options.filter;\n options.filter = null;\n }\n DataSource.fn.init.call(this, extend(true, {}, {\n schema: {\n modelBase: node,\n model: node\n }\n }, options));\n this._attachBubbleHandlers();\n },\n _attachBubbleHandlers: function () {\n var that = this;\n that._data.bind(ERROR, function (e) {\n that.trigger(ERROR, e);\n });\n },\n read: function (data) {\n var result = DataSource.fn.read.call(this, data);\n if (this._hierarchicalFilter) {\n if (this._data && this._data.length > 0) {\n this.filter(this._hierarchicalFilter);\n } else {\n this.options.filter = this._hierarchicalFilter;\n this._filter = normalizeFilter(this.options.filter);\n this._hierarchicalFilter = null;\n }\n }\n return result;\n },\n remove: function (node) {\n var parentNode = node.parentNode(), dataSource = this, result;\n if (parentNode && parentNode._initChildren) {\n dataSource = parentNode.children;\n }\n result = DataSource.fn.remove.call(dataSource, node);\n if (parentNode && !dataSource.data().length) {\n parentNode.hasChildren = false;\n }\n return result;\n },\n success: dataMethod('success'),\n data: dataMethod('data'),\n insert: function (index, model) {\n var parentNode = this.parent();\n if (parentNode && parentNode._initChildren) {\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n return DataSource.fn.insert.call(this, index, model);\n },\n filter: function (val) {\n if (val === undefined) {\n return this._filter;\n }\n if (!this.options.serverFiltering && this._markHierarchicalQuery(val)) {\n val = {\n logic: 'or',\n filters: [\n val,\n {\n field: '_matchFilter',\n operator: 'equals',\n value: true\n }\n ]\n };\n }\n this.trigger('reset');\n this._query({\n filter: val,\n page: 1\n });\n },\n _markHierarchicalQuery: function (expressions) {\n var compiled;\n var predicate;\n var fields;\n var operators;\n var filter;\n var accentFoldingFiltering = this.options.accentFoldingFiltering;\n expressions = accentFoldingFiltering ? $.extend({}, normalizeFilter(expressions), { accentFoldingFiltering: accentFoldingFiltering }) : normalizeFilter(expressions);\n if (!expressions || expressions.filters.length === 0) {\n this._updateHierarchicalFilter(function () {\n return true;\n });\n return false;\n }\n compiled = Query.filterExpr(expressions);\n fields = compiled.fields;\n operators = compiled.operators;\n predicate = filter = new Function('d, __f, __o', 'return ' + compiled.expression);\n if (fields.length || operators.length) {\n filter = function (d) {\n return predicate(d, fields, operators);\n };\n }\n this._updateHierarchicalFilter(filter);\n return true;\n },\n _updateHierarchicalFilter: function (filter) {\n var current;\n var data = this._data;\n var result = false;\n for (var idx = 0; idx < data.length; idx++) {\n current = data[idx];\n if (current.hasChildren) {\n current._matchFilter = current.children._updateHierarchicalFilter(filter);\n if (!current._matchFilter) {\n current._matchFilter = filter(current);\n }\n } else {\n current._matchFilter = filter(current);\n }\n if (current._matchFilter) {\n result = true;\n }\n }\n return result;\n },\n _find: function (method, value) {\n var idx, length, node, children;\n var data = this._data;\n if (!data) {\n return;\n }\n node = DataSource.fn[method].call(this, value);\n if (node) {\n return node;\n }\n data = this._flatData(this._data);\n for (idx = 0, length = data.length; idx < length; idx++) {\n children = data[idx].children;\n if (!(children instanceof HierarchicalDataSource)) {\n continue;\n }\n node = children[method](value);\n if (node) {\n return node;\n }\n }\n },\n get: function (id) {\n return this._find('get', id);\n },\n getByUid: function (uid) {\n return this._find('getByUid', uid);\n }\n });\n function inferList(list, fields) {\n var items = $(list).children(), idx, length, data = [], record, textField = fields[0].field, urlField = fields[1] && fields[1].field, spriteCssClassField = fields[2] && fields[2].field, imageUrlField = fields[3] && fields[3].field, item, id, textChild, className, children;\n function elements(collection, tagName) {\n return collection.filter(tagName).add(collection.find(tagName));\n }\n for (idx = 0, length = items.length; idx < length; idx++) {\n record = { _loaded: true };\n item = items.eq(idx);\n textChild = item[0].firstChild;\n children = item.children();\n list = children.filter('ul');\n children = children.filter(':not(ul)');\n id = item.attr('data-id');\n if (id) {\n record.id = id;\n }\n if (textChild) {\n record[textField] = textChild.nodeType == 3 ? textChild.nodeValue : children.text();\n }\n if (urlField) {\n record[urlField] = elements(children, 'a').attr('href');\n }\n if (imageUrlField) {\n record[imageUrlField] = elements(children, 'img').attr('src');\n }\n if (spriteCssClassField) {\n className = elements(children, '.k-sprite').prop('className');\n record[spriteCssClassField] = className && $.trim(className.replace('k-sprite', ''));\n }\n if (list.length) {\n record.items = inferList(list.eq(0), fields);\n }\n if (item.attr('data-hasChildren') == 'true') {\n record.hasChildren = true;\n }\n data.push(record);\n }\n return data;\n }\n HierarchicalDataSource.create = function (options) {\n options = options && options.push ? { data: options } : options;\n var dataSource = options || {}, data = dataSource.data, fields = dataSource.fields, list = dataSource.list;\n if (data && data._dataSource) {\n return data._dataSource;\n }\n if (!data && fields && !dataSource.transport) {\n if (list) {\n data = inferList(list, fields);\n }\n }\n dataSource.data = data;\n return dataSource instanceof HierarchicalDataSource ? dataSource : new HierarchicalDataSource(dataSource);\n };\n var Buffer = kendo.Observable.extend({\n init: function (dataSource, viewSize, disablePrefetch) {\n kendo.Observable.fn.init.call(this);\n this._prefetching = false;\n this.dataSource = dataSource;\n this.prefetch = !disablePrefetch;\n var buffer = this;\n dataSource.bind('change', function () {\n buffer._change();\n });\n dataSource.bind('reset', function () {\n buffer._reset();\n });\n this._syncWithDataSource();\n this.setViewSize(viewSize);\n },\n setViewSize: function (viewSize) {\n this.viewSize = viewSize;\n this._recalculate();\n },\n at: function (index) {\n var pageSize = this.pageSize, itemPresent = true;\n if (index >= this.total()) {\n this.trigger('endreached', { index: index });\n return null;\n }\n if (!this.useRanges) {\n return this.dataSource.view()[index];\n }\n if (this.useRanges) {\n if (index < this.dataOffset || index >= this.skip + pageSize) {\n itemPresent = this.range(Math.floor(index / pageSize) * pageSize);\n }\n if (index === this.prefetchThreshold) {\n this._prefetch();\n }\n if (index === this.midPageThreshold) {\n this.range(this.nextMidRange, true);\n } else if (index === this.nextPageThreshold) {\n this.range(this.nextFullRange);\n } else if (index === this.pullBackThreshold) {\n if (this.offset === this.skip) {\n this.range(this.previousMidRange);\n } else {\n this.range(this.previousFullRange);\n }\n }\n if (itemPresent) {\n return this.dataSource.at(index - this.dataOffset);\n } else {\n this.trigger('endreached', { index: index });\n return null;\n }\n }\n },\n indexOf: function (item) {\n return this.dataSource.data().indexOf(item) + this.dataOffset;\n },\n total: function () {\n return parseInt(this.dataSource.total(), 10);\n },\n next: function () {\n var buffer = this, pageSize = buffer.pageSize, offset = buffer.skip - buffer.viewSize + pageSize, pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize;\n this.offset = offset;\n this.dataSource.prefetch(pageSkip, pageSize, function () {\n buffer._goToRange(offset, true);\n });\n },\n range: function (offset, nextRange) {\n if (this.offset === offset) {\n return true;\n }\n var buffer = this, pageSize = this.pageSize, pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize, dataSource = this.dataSource;\n if (nextRange) {\n pageSkip += pageSize;\n }\n if (dataSource.inRange(offset, pageSize)) {\n this.offset = offset;\n this._recalculate();\n this._goToRange(offset);\n return true;\n } else if (this.prefetch) {\n dataSource.prefetch(pageSkip, pageSize, function () {\n buffer.offset = offset;\n buffer._recalculate();\n buffer._goToRange(offset, true);\n });\n return false;\n }\n return true;\n },\n syncDataSource: function () {\n var offset = this.offset;\n this.offset = null;\n this.range(offset);\n },\n destroy: function () {\n this.unbind();\n },\n _prefetch: function () {\n var buffer = this, pageSize = this.pageSize, prefetchOffset = this.skip + pageSize, dataSource = this.dataSource;\n if (!dataSource.inRange(prefetchOffset, pageSize) && !this._prefetching && this.prefetch) {\n this._prefetching = true;\n this.trigger('prefetching', {\n skip: prefetchOffset,\n take: pageSize\n });\n dataSource.prefetch(prefetchOffset, pageSize, function () {\n buffer._prefetching = false;\n buffer.trigger('prefetched', {\n skip: prefetchOffset,\n take: pageSize\n });\n });\n }\n },\n _goToRange: function (offset, expanding) {\n if (this.offset !== offset) {\n return;\n }\n this.dataOffset = offset;\n this._expanding = expanding;\n this.dataSource.range(offset, this.pageSize);\n this.dataSource.enableRequestsInProgress();\n },\n _reset: function () {\n this._syncPending = true;\n },\n _change: function () {\n var dataSource = this.dataSource;\n this.length = this.useRanges ? dataSource.lastRange().end : dataSource.view().length;\n if (this._syncPending) {\n this._syncWithDataSource();\n this._recalculate();\n this._syncPending = false;\n this.trigger('reset', { offset: this.offset });\n }\n this.trigger('resize');\n if (this._expanding) {\n this.trigger('expand');\n }\n delete this._expanding;\n },\n _syncWithDataSource: function () {\n var dataSource = this.dataSource;\n this._firstItemUid = dataSource.firstItemUid();\n this.dataOffset = this.offset = dataSource.skip() || 0;\n this.pageSize = dataSource.pageSize();\n this.useRanges = dataSource.options.serverPaging;\n },\n _recalculate: function () {\n var pageSize = this.pageSize, offset = this.offset, viewSize = this.viewSize, skip = Math.ceil(offset / pageSize) * pageSize;\n this.skip = skip;\n this.midPageThreshold = skip + pageSize - 1;\n this.nextPageThreshold = skip + viewSize - 1;\n this.prefetchThreshold = skip + Math.floor(pageSize / 3 * 2);\n this.pullBackThreshold = this.offset - 1;\n this.nextMidRange = skip + pageSize - viewSize;\n this.nextFullRange = skip;\n this.previousMidRange = offset - viewSize;\n this.previousFullRange = skip - pageSize;\n }\n });\n var BatchBuffer = kendo.Observable.extend({\n init: function (dataSource, batchSize) {\n var batchBuffer = this;\n kendo.Observable.fn.init.call(batchBuffer);\n this.dataSource = dataSource;\n this.batchSize = batchSize;\n this._total = 0;\n this.buffer = new Buffer(dataSource, batchSize * 3);\n this.buffer.bind({\n 'endreached': function (e) {\n batchBuffer.trigger('endreached', { index: e.index });\n },\n 'prefetching': function (e) {\n batchBuffer.trigger('prefetching', {\n skip: e.skip,\n take: e.take\n });\n },\n 'prefetched': function (e) {\n batchBuffer.trigger('prefetched', {\n skip: e.skip,\n take: e.take\n });\n },\n 'reset': function () {\n batchBuffer._total = 0;\n batchBuffer.trigger('reset');\n },\n 'resize': function () {\n batchBuffer._total = Math.ceil(this.length / batchBuffer.batchSize);\n batchBuffer.trigger('resize', {\n total: batchBuffer.total(),\n offset: this.offset\n });\n }\n });\n },\n syncDataSource: function () {\n this.buffer.syncDataSource();\n },\n at: function (index) {\n var buffer = this.buffer, skip = index * this.batchSize, take = this.batchSize, view = [], item;\n if (buffer.offset > skip) {\n buffer.at(buffer.offset - 1);\n }\n for (var i = 0; i < take; i++) {\n item = buffer.at(skip + i);\n if (item === null) {\n break;\n }\n view.push(item);\n }\n return view;\n },\n total: function () {\n return this._total;\n },\n destroy: function () {\n this.buffer.destroy();\n this.unbind();\n }\n });\n extend(true, kendo.data, {\n readers: { json: DataReader },\n Query: Query,\n DataSource: DataSource,\n HierarchicalDataSource: HierarchicalDataSource,\n Node: Node,\n ObservableObject: ObservableObject,\n ObservableArray: ObservableArray,\n LazyObservableArray: LazyObservableArray,\n LocalTransport: LocalTransport,\n RemoteTransport: RemoteTransport,\n Cache: Cache,\n DataReader: DataReader,\n Model: Model,\n Buffer: Buffer,\n BatchBuffer: BatchBuffer\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.binder', [\n 'kendo.core',\n 'kendo.data'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'binder',\n name: 'MVVM',\n category: 'framework',\n description: 'Model View ViewModel (MVVM) is a design pattern which helps developers separate the Model (the data) from the View (the UI).',\n depends: [\n 'core',\n 'data'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Observable = kendo.Observable, ObservableObject = kendo.data.ObservableObject, ObservableArray = kendo.data.ObservableArray, toString = {}.toString, binders = {}, Class = kendo.Class, proxy = $.proxy, VALUE = 'value', SOURCE = 'source', EVENTS = 'events', CHECKED = 'checked', CSS = 'css', deleteExpando = true, FUNCTION = 'function', CHANGE = 'change';\n (function () {\n var a = document.createElement('a');\n try {\n delete a.test;\n } catch (e) {\n deleteExpando = false;\n }\n }());\n var Binding = Observable.extend({\n init: function (parents, path) {\n var that = this;\n Observable.fn.init.call(that);\n that.source = parents[0];\n that.parents = parents;\n that.path = path;\n that.dependencies = {};\n that.dependencies[path] = true;\n that.observable = that.source instanceof Observable;\n that._access = function (e) {\n that.dependencies[e.field] = true;\n };\n if (that.observable) {\n that._change = function (e) {\n that.change(e);\n };\n that.source.bind(CHANGE, that._change);\n }\n },\n _parents: function () {\n var parents = this.parents;\n var value = this.get();\n if (value && typeof value.parent == 'function') {\n var parent = value.parent();\n if ($.inArray(parent, parents) < 0) {\n parents = [parent].concat(parents);\n }\n }\n return parents;\n },\n change: function (e) {\n var dependency, ch, field = e.field, that = this;\n if (that.path === 'this') {\n that.trigger(CHANGE, e);\n } else {\n for (dependency in that.dependencies) {\n if (dependency.indexOf(field) === 0) {\n ch = dependency.charAt(field.length);\n if (!ch || ch === '.' || ch === '[') {\n that.trigger(CHANGE, e);\n break;\n }\n }\n }\n }\n },\n start: function (source) {\n source.bind('get', this._access);\n },\n stop: function (source) {\n source.unbind('get', this._access);\n },\n get: function () {\n var that = this, source = that.source, index = 0, path = that.path, result = source;\n if (!that.observable) {\n return result;\n }\n that.start(that.source);\n result = source.get(path);\n while (result === undefined && source) {\n source = that.parents[++index];\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n if (result === undefined) {\n source = that.source;\n while (result === undefined && source) {\n source = source.parent();\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n }\n if (typeof result === 'function') {\n index = path.lastIndexOf('.');\n if (index > 0) {\n source = source.get(path.substring(0, index));\n }\n that.start(source);\n if (source !== that.source) {\n result = result.call(source, that.source);\n } else {\n result = result.call(source);\n }\n that.stop(source);\n }\n if (source && source !== that.source) {\n that.currentSource = source;\n source.unbind(CHANGE, that._change).bind(CHANGE, that._change);\n }\n that.stop(that.source);\n return result;\n },\n set: function (value) {\n var source = this.currentSource || this.source;\n var field = kendo.getter(this.path)(source);\n if (typeof field === 'function') {\n if (source !== this.source) {\n field.call(source, this.source, value);\n } else {\n field.call(source, value);\n }\n } else {\n source.set(this.path, value);\n }\n },\n destroy: function () {\n if (this.observable) {\n this.source.unbind(CHANGE, this._change);\n if (this.currentSource) {\n this.currentSource.unbind(CHANGE, this._change);\n }\n }\n this.unbind();\n }\n });\n var EventBinding = Binding.extend({\n get: function () {\n var source = this.source, path = this.path, index = 0, handler;\n handler = source.get(path);\n while (!handler && source) {\n source = this.parents[++index];\n if (source instanceof ObservableObject) {\n handler = source.get(path);\n }\n }\n return proxy(handler, source);\n }\n });\n var TemplateBinding = Binding.extend({\n init: function (source, path, template) {\n var that = this;\n Binding.fn.init.call(that, source, path);\n that.template = template;\n },\n render: function (value) {\n var html;\n this.start(this.source);\n html = kendo.render(this.template, value);\n this.stop(this.source);\n return html;\n }\n });\n var Binder = Class.extend({\n init: function (element, bindings, options) {\n this.element = element;\n this.bindings = bindings;\n this.options = options;\n },\n bind: function (binding, attribute) {\n var that = this;\n binding = attribute ? binding[attribute] : binding;\n binding.bind(CHANGE, function (e) {\n that.refresh(attribute || e);\n });\n that.refresh(attribute);\n },\n destroy: function () {\n }\n });\n var TypedBinder = Binder.extend({\n dataType: function () {\n var dataType = this.element.getAttribute('data-type') || this.element.type || 'text';\n return dataType.toLowerCase();\n },\n parsedValue: function () {\n return this._parseValue(this.element.value, this.dataType());\n },\n _parseValue: function (value, dataType) {\n if (dataType == 'date') {\n value = kendo.parseDate(value, 'yyyy-MM-dd');\n } else if (dataType == 'datetime-local') {\n value = kendo.parseDate(value, [\n 'yyyy-MM-ddTHH:mm:ss',\n 'yyyy-MM-ddTHH:mm'\n ]);\n } else if (dataType == 'number') {\n value = kendo.parseFloat(value);\n } else if (dataType == 'boolean') {\n value = value.toLowerCase();\n if (kendo.parseFloat(value) !== null) {\n value = Boolean(kendo.parseFloat(value));\n } else {\n value = value.toLowerCase() === 'true';\n }\n }\n return value;\n }\n });\n binders.attr = Binder.extend({\n refresh: function (key) {\n this.element.setAttribute(key, this.bindings.attr[key].get());\n }\n });\n binders.css = Binder.extend({\n init: function (element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.classes = {};\n },\n refresh: function (className) {\n var element = $(this.element), binding = this.bindings.css[className], hasClass = this.classes[className] = binding.get();\n if (hasClass) {\n element.addClass(className);\n } else {\n element.removeClass(className);\n }\n }\n });\n binders.style = Binder.extend({\n refresh: function (key) {\n this.element.style[key] = this.bindings.style[key].get() || '';\n }\n });\n binders.enabled = Binder.extend({\n refresh: function () {\n if (this.bindings.enabled.get()) {\n this.element.removeAttribute('disabled');\n } else {\n this.element.setAttribute('disabled', 'disabled');\n }\n }\n });\n binders.readonly = Binder.extend({\n refresh: function () {\n if (this.bindings.readonly.get()) {\n this.element.setAttribute('readonly', 'readonly');\n } else {\n this.element.removeAttribute('readonly');\n }\n }\n });\n binders.disabled = Binder.extend({\n refresh: function () {\n if (this.bindings.disabled.get()) {\n this.element.setAttribute('disabled', 'disabled');\n } else {\n this.element.removeAttribute('disabled');\n }\n }\n });\n binders.events = Binder.extend({\n init: function (element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.handlers = {};\n },\n refresh: function (key) {\n var element = $(this.element), binding = this.bindings.events[key], handler = this.handlers[key];\n if (handler) {\n element.off(key, handler);\n }\n handler = this.handlers[key] = binding.get();\n element.on(key, binding.source, handler);\n },\n destroy: function () {\n var element = $(this.element), handler;\n for (handler in this.handlers) {\n element.off(handler, this.handlers[handler]);\n }\n }\n });\n binders.text = Binder.extend({\n refresh: function () {\n var text = this.bindings.text.get();\n var dataFormat = this.element.getAttribute('data-format') || '';\n if (text == null) {\n text = '';\n }\n $(this.element).text(kendo.toString(text, dataFormat));\n }\n });\n binders.visible = Binder.extend({\n refresh: function () {\n if (this.bindings.visible.get()) {\n this.element.style.display = '';\n } else {\n this.element.style.display = 'none';\n }\n }\n });\n binders.invisible = Binder.extend({\n refresh: function () {\n if (!this.bindings.invisible.get()) {\n this.element.style.display = '';\n } else {\n this.element.style.display = 'none';\n }\n }\n });\n binders.html = Binder.extend({\n refresh: function () {\n this.element.innerHTML = this.bindings.html.get();\n }\n });\n binders.value = TypedBinder.extend({\n init: function (element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n this._change = proxy(this.change, this);\n this.eventName = options.valueUpdate || CHANGE;\n $(this.element).on(this.eventName, this._change);\n this._initChange = false;\n },\n change: function () {\n this._initChange = this.eventName != CHANGE;\n this.bindings[VALUE].set(this.parsedValue());\n this._initChange = false;\n },\n refresh: function () {\n if (!this._initChange) {\n var value = this.bindings[VALUE].get();\n if (value == null) {\n value = '';\n }\n var type = this.dataType();\n if (type == 'date') {\n value = kendo.toString(value, 'yyyy-MM-dd');\n } else if (type == 'datetime-local') {\n value = kendo.toString(value, 'yyyy-MM-ddTHH:mm:ss');\n }\n this.element.value = value;\n }\n this._initChange = false;\n },\n destroy: function () {\n $(this.element).off(this.eventName, this._change);\n }\n });\n binders.source = Binder.extend({\n init: function (element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n var source = this.bindings.source.get();\n if (source instanceof kendo.data.DataSource && options.autoBind !== false) {\n source.fetch();\n }\n },\n refresh: function (e) {\n var that = this, source = that.bindings.source.get();\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n if (e.action == 'add') {\n that.add(e.index, e.items);\n } else if (e.action == 'remove') {\n that.remove(e.index, e.items);\n } else if (e.action != 'itemchange') {\n that.render();\n }\n } else {\n that.render();\n }\n },\n container: function () {\n var element = this.element;\n if (element.nodeName.toLowerCase() == 'table') {\n if (!element.tBodies[0]) {\n element.appendChild(document.createElement('tbody'));\n }\n element = element.tBodies[0];\n }\n return element;\n },\n template: function () {\n var options = this.options, template = options.template, nodeName = this.container().nodeName.toLowerCase();\n if (!template) {\n if (nodeName == 'select') {\n if (options.valueField || options.textField) {\n template = kendo.format('<option value=\"#:{0}#\">#:{1}#</option>', options.valueField || options.textField, options.textField || options.valueField);\n } else {\n template = '<option>#:data#</option>';\n }\n } else if (nodeName == 'tbody') {\n template = '<tr><td>#:data#</td></tr>';\n } else if (nodeName == 'ul' || nodeName == 'ol') {\n template = '<li>#:data#</li>';\n } else {\n template = '#:data#';\n }\n template = kendo.template(template);\n }\n return template;\n },\n add: function (index, items) {\n var element = this.container(), parents, idx, length, child, clone = element.cloneNode(false), reference = element.children[index];\n $(clone).html(kendo.render(this.template(), items));\n if (clone.children.length) {\n parents = this.bindings.source._parents();\n for (idx = 0, length = items.length; idx < length; idx++) {\n child = clone.children[0];\n element.insertBefore(child, reference || null);\n bindElement(child, items[idx], this.options.roles, [items[idx]].concat(parents));\n }\n }\n },\n remove: function (index, items) {\n var idx, element = this.container();\n for (idx = 0; idx < items.length; idx++) {\n var child = element.children[index];\n unbindElementTree(child, true);\n if (child.parentNode == element) {\n element.removeChild(child);\n }\n }\n },\n render: function () {\n var source = this.bindings.source.get(), parents, idx, length, element = this.container(), template = this.template();\n if (source == null) {\n return;\n }\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n if (!(source instanceof ObservableArray) && toString.call(source) !== '[object Array]') {\n source = [source];\n }\n if (this.bindings.template) {\n unbindElementChildren(element, true);\n $(element).html(this.bindings.template.render(source));\n if (element.children.length) {\n parents = this.bindings.source._parents();\n for (idx = 0, length = source.length; idx < length; idx++) {\n bindElement(element.children[idx], source[idx], this.options.roles, [source[idx]].concat(parents));\n }\n }\n } else {\n $(element).html(kendo.render(template, source));\n }\n }\n });\n binders.input = {\n checked: TypedBinder.extend({\n init: function (element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n this._change = proxy(this.change, this);\n $(this.element).change(this._change);\n },\n change: function () {\n var element = this.element;\n var value = this.value();\n if (element.type == 'radio') {\n value = this.parsedValue();\n this.bindings[CHECKED].set(value);\n } else if (element.type == 'checkbox') {\n var source = this.bindings[CHECKED].get();\n var index;\n if (source instanceof ObservableArray) {\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n if (index > -1) {\n source.splice(index, 1);\n } else {\n source.push(value);\n }\n } else {\n this.bindings[CHECKED].set(value);\n }\n }\n },\n refresh: function () {\n var value = this.bindings[CHECKED].get(), source = value, type = this.dataType(), element = this.element;\n if (element.type == 'checkbox') {\n if (source instanceof ObservableArray) {\n var index = -1;\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n element.checked = index >= 0;\n } else {\n element.checked = source;\n }\n } else if (element.type == 'radio') {\n if (type == 'date') {\n value = kendo.toString(value, 'yyyy-MM-dd');\n } else if (type == 'datetime-local') {\n value = kendo.toString(value, 'yyyy-MM-ddTHH:mm:ss');\n }\n if (value !== null && typeof value !== 'undefined' && element.value === value.toString()) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n }\n },\n value: function () {\n var element = this.element, value = element.value;\n if (element.type == 'checkbox') {\n value = element.checked;\n }\n return value;\n },\n destroy: function () {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n binders.select = {\n source: binders.source.extend({\n refresh: function (e) {\n var that = this, source = that.bindings.source.get();\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n if (e.action == 'add') {\n that.add(e.index, e.items);\n } else if (e.action == 'remove') {\n that.remove(e.index, e.items);\n } else if (e.action == 'itemchange' || e.action === undefined) {\n that.render();\n if (that.bindings.value) {\n if (that.bindings.value) {\n var val = retrievePrimitiveValues(that.bindings.value.get(), $(that.element).data('valueField'));\n if (val === null) {\n that.element.selectedIndex = -1;\n } else {\n that.element.value = val;\n }\n }\n }\n }\n } else {\n that.render();\n }\n }\n }),\n value: TypedBinder.extend({\n init: function (target, bindings, options) {\n TypedBinder.fn.init.call(this, target, bindings, options);\n this._change = proxy(this.change, this);\n $(this.element).change(this._change);\n },\n parsedValue: function () {\n var dataType = this.dataType();\n var values = [];\n var value, option, idx, length;\n for (idx = 0, length = this.element.options.length; idx < length; idx++) {\n option = this.element.options[idx];\n if (option.selected) {\n value = option.attributes.value;\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n values.push(this._parseValue(value, dataType));\n }\n }\n return values;\n },\n change: function () {\n var values = [], element = this.element, source, field = this.options.valueField || this.options.textField, valuePrimitive = this.options.valuePrimitive, option, valueIndex, value, idx, length;\n for (idx = 0, length = element.options.length; idx < length; idx++) {\n option = element.options[idx];\n if (option.selected) {\n value = option.attributes.value;\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n if (field) {\n values.push(value);\n } else {\n values.push(this._parseValue(value, this.dataType()));\n }\n }\n }\n if (field) {\n source = this.bindings.source.get();\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n for (valueIndex = 0; valueIndex < values.length; valueIndex++) {\n for (idx = 0, length = source.length; idx < length; idx++) {\n var sourceValue = source[idx].get(field);\n var match = String(sourceValue) === values[valueIndex];\n if (match) {\n values[valueIndex] = source[idx];\n break;\n }\n }\n }\n }\n value = this.bindings[VALUE].get();\n if (value instanceof ObservableArray) {\n value.splice.apply(value, [\n 0,\n value.length\n ].concat(values));\n } else if (!valuePrimitive && (value instanceof ObservableObject || value === null || value === undefined || !field)) {\n this.bindings[VALUE].set(values[0]);\n } else {\n this.bindings[VALUE].set(values[0].get(field));\n }\n },\n refresh: function () {\n var optionIndex, element = this.element, options = element.options, value = this.bindings[VALUE].get(), values = value, field = this.options.valueField || this.options.textField, found = false, type = this.dataType(), optionValue;\n if (!(values instanceof ObservableArray)) {\n values = new ObservableArray([value]);\n }\n element.selectedIndex = -1;\n for (var valueIndex = 0; valueIndex < values.length; valueIndex++) {\n value = values[valueIndex];\n if (field && value instanceof ObservableObject) {\n value = value.get(field);\n }\n if (type == 'date') {\n value = kendo.toString(values[valueIndex], 'yyyy-MM-dd');\n } else if (type == 'datetime-local') {\n value = kendo.toString(values[valueIndex], 'yyyy-MM-ddTHH:mm:ss');\n }\n for (optionIndex = 0; optionIndex < options.length; optionIndex++) {\n optionValue = options[optionIndex].value;\n if (optionValue === '' && value !== '') {\n optionValue = options[optionIndex].text;\n }\n if (value != null && optionValue == value.toString()) {\n options[optionIndex].selected = true;\n found = true;\n }\n }\n }\n },\n destroy: function () {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n function dataSourceBinding(bindingName, fieldName, setter) {\n return Binder.extend({\n init: function (widget, bindings, options) {\n var that = this;\n Binder.fn.init.call(that, widget.element[0], bindings, options);\n that.widget = widget;\n that._dataBinding = proxy(that.dataBinding, that);\n that._dataBound = proxy(that.dataBound, that);\n that._itemChange = proxy(that.itemChange, that);\n },\n itemChange: function (e) {\n bindElement(e.item[0], e.data, this._ns(e.ns), [e.data].concat(this.bindings[bindingName]._parents()));\n },\n dataBinding: function (e) {\n var idx, length, widget = this.widget, items = e.removedItems || widget.items();\n for (idx = 0, length = items.length; idx < length; idx++) {\n unbindElementTree(items[idx], false);\n }\n },\n _ns: function (ns) {\n ns = ns || kendo.ui;\n var all = [\n kendo.ui,\n kendo.dataviz.ui,\n kendo.mobile.ui\n ];\n all.splice($.inArray(ns, all), 1);\n all.unshift(ns);\n return kendo.rolesFromNamespaces(all);\n },\n dataBound: function (e) {\n var idx, length, widget = this.widget, items = e.addedItems || widget.items(), dataSource = widget[fieldName], view, parents, hds = kendo.data.HierarchicalDataSource;\n if (hds && dataSource instanceof hds) {\n return;\n }\n if (items.length) {\n view = e.addedDataItems || dataSource.flatView();\n parents = this.bindings[bindingName]._parents();\n for (idx = 0, length = view.length; idx < length; idx++) {\n if (items[idx]) {\n bindElement(items[idx], view[idx], this._ns(e.ns), [view[idx]].concat(parents));\n }\n }\n }\n },\n refresh: function (e) {\n var that = this, source, widget = that.widget, select, multiselect, dropdowntree;\n e = e || {};\n if (!e.action) {\n that.destroy();\n widget.bind('dataBinding', that._dataBinding);\n widget.bind('dataBound', that._dataBound);\n widget.bind('itemChange', that._itemChange);\n source = that.bindings[bindingName].get();\n if (widget[fieldName] instanceof kendo.data.DataSource && widget[fieldName] != source) {\n if (source instanceof kendo.data.DataSource) {\n widget[setter](source);\n } else if (source && source._dataSource) {\n widget[setter](source._dataSource);\n } else {\n select = kendo.ui.Select && widget instanceof kendo.ui.Select;\n multiselect = kendo.ui.MultiSelect && widget instanceof kendo.ui.MultiSelect;\n dropdowntree = kendo.ui.DropDownTree && widget instanceof kendo.ui.DropDownTree;\n if (!dropdowntree) {\n widget[fieldName].data(source);\n } else {\n widget.treeview[fieldName].data(source);\n }\n if (that.bindings.value && (select || multiselect)) {\n widget.value(retrievePrimitiveValues(that.bindings.value.get(), widget.options.dataValueField));\n }\n }\n }\n }\n },\n destroy: function () {\n var widget = this.widget;\n widget.unbind('dataBinding', this._dataBinding);\n widget.unbind('dataBound', this._dataBound);\n widget.unbind('itemChange', this._itemChange);\n }\n });\n }\n binders.widget = {\n events: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this.handlers = {};\n },\n refresh: function (key) {\n var binding = this.bindings.events[key], handler = this.handlers[key];\n if (handler) {\n this.widget.unbind(key, handler);\n }\n handler = binding.get();\n this.handlers[key] = function (e) {\n e.data = binding.source;\n handler(e);\n if (e.data === binding.source) {\n delete e.data;\n }\n };\n this.widget.bind(key, this.handlers[key]);\n },\n destroy: function () {\n var handler;\n for (handler in this.handlers) {\n this.widget.unbind(handler, this.handlers[handler]);\n }\n }\n }),\n checked: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this._change = proxy(this.change, this);\n this.widget.bind(CHANGE, this._change);\n },\n change: function () {\n this.bindings[CHECKED].set(this.value());\n },\n refresh: function () {\n this.widget.check(this.bindings[CHECKED].get() === true);\n },\n value: function () {\n var element = this.element, value = element.value;\n if (value == 'on' || value == 'off' || this.element.type == 'checkbox') {\n value = element.checked;\n }\n return value;\n },\n destroy: function () {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n start: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = proxy(this.change, this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n change: function () {\n this.bindings.start.set(this.widget.range().start);\n },\n refresh: function () {\n var that = this;\n var start = this.bindings.start.get();\n var end = that.widget._range ? that.widget._range.end : null;\n this.widget.range({\n start: start,\n end: end\n });\n },\n destroy: function () {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n end: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = proxy(this.change, this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n change: function () {\n this.bindings.end.set(this.widget.range().end);\n },\n refresh: function () {\n var that = this;\n var end = this.bindings.end.get();\n var start = that.widget._range ? that.widget._range.start : null;\n this.widget.range({\n start: start,\n end: end\n });\n },\n destroy: function () {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n visible: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n },\n refresh: function () {\n var visible = this.bindings.visible.get();\n this.widget.wrapper[0].style.display = visible ? '' : 'none';\n }\n }),\n invisible: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n },\n refresh: function () {\n var invisible = this.bindings.invisible.get();\n this.widget.wrapper[0].style.display = invisible ? 'none' : '';\n }\n }),\n enabled: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n },\n refresh: function () {\n if (this.widget.enable) {\n this.widget.enable(this.bindings.enabled.get());\n }\n }\n }),\n disabled: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n },\n refresh: function () {\n if (this.widget.enable) {\n this.widget.enable(!this.bindings.disabled.get());\n }\n }\n }),\n source: dataSourceBinding('source', 'dataSource', 'setDataSource'),\n value: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this._change = $.proxy(this.change, this);\n this.widget.first(CHANGE, this._change);\n var value = this.bindings.value.get();\n this._valueIsObservableObject = !options.valuePrimitive && (value == null || value instanceof ObservableObject);\n this._valueIsObservableArray = value instanceof ObservableArray;\n this._initChange = false;\n },\n _source: function () {\n var source;\n if (this.widget.dataItem) {\n source = this.widget.dataItem();\n if (source && source instanceof ObservableObject) {\n return [source];\n }\n }\n if (this.bindings.source) {\n source = this.bindings.source.get();\n }\n if (!source || source instanceof kendo.data.DataSource) {\n source = this.widget.dataSource.flatView();\n }\n return source;\n },\n change: function () {\n var value = this.widget.value(), field = this.options.dataValueField || this.options.dataTextField, isArray = toString.call(value) === '[object Array]', isObservableObject = this._valueIsObservableObject, valueIndex, valueLength, values = [], sourceItem, sourceValue, idx, length, source;\n this._initChange = true;\n if (field) {\n if (value === '' && (isObservableObject || this.options.valuePrimitive)) {\n value = null;\n } else {\n source = this._source();\n if (isArray) {\n valueLength = value.length;\n values = value.slice(0);\n }\n for (idx = 0, length = source.length; idx < length; idx++) {\n sourceItem = source[idx];\n sourceValue = sourceItem.get(field);\n if (isArray) {\n for (valueIndex = 0; valueIndex < valueLength; valueIndex++) {\n if (sourceValue == values[valueIndex]) {\n values[valueIndex] = sourceItem;\n break;\n }\n }\n } else if (sourceValue == value) {\n value = isObservableObject ? sourceItem : sourceValue;\n break;\n }\n }\n if (values[0]) {\n if (this._valueIsObservableArray) {\n value = values;\n } else if (isObservableObject || !field) {\n value = values[0];\n } else {\n value = values[0].get(field);\n }\n }\n }\n }\n this.bindings.value.set(value);\n this._initChange = false;\n },\n refresh: function () {\n if (!this._initChange) {\n var widget = this.widget;\n var options = widget.options;\n var textField = options.dataTextField;\n var valueField = options.dataValueField || textField;\n var value = this.bindings.value.get();\n var text = options.text || '';\n var idx = 0, length;\n var values = [];\n if (value === undefined) {\n value = null;\n }\n if (valueField) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n values[idx] = value[idx].get(valueField);\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n text = value.get(textField);\n value = value.get(valueField);\n }\n }\n if (options.autoBind === false && !options.cascadeFrom && widget.listView && !widget.listView.bound()) {\n if (textField === valueField && !text) {\n text = value;\n }\n if (!text && (value || value === 0) && options.valuePrimitive) {\n widget.value(value);\n } else {\n widget._preselect(value, text);\n }\n } else {\n widget.value(value);\n }\n }\n this._initChange = false;\n },\n destroy: function () {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n dropdowntree: {\n value: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this._change = $.proxy(this.change, this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n change: function () {\n var that = this, oldValues = that.bindings[VALUE].get(), valuePrimitive = that.options.valuePrimitive, selectedNode = that.widget.treeview.select(), nonPrimitiveValues = that.widget._isMultipleSelection() ? that.widget._getAllChecked() : that.widget.treeview.dataItem(selectedNode) || that.widget.value(), newValues = valuePrimitive || that.widget.options.autoBind === false ? that.widget.value() : nonPrimitiveValues;\n var field = this.options.dataValueField || this.options.dataTextField;\n newValues = newValues.slice ? newValues.slice(0) : newValues;\n that._initChange = true;\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n var newLength = newValues.length;\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n while (old !== undefined) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n old = oldValues[i];\n }\n arraySplice(oldValues, oldValues.length, 0, newValues);\n if (remove.length) {\n oldValues.trigger('change', {\n action: 'remove',\n items: remove,\n index: removeIndex\n });\n }\n if (newValues.length) {\n oldValues.trigger('change', {\n action: 'add',\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n that._initChange = false;\n },\n refresh: function () {\n if (!this._initChange) {\n var options = this.options, widget = this.widget, field = options.dataValueField || options.dataTextField, value = this.bindings.value.get(), data = value, idx = 0, length, values = [], selectedValue;\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n if (options.autoBind === false && options.valuePrimitive !== true) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n destroy: function () {\n this.widget.unbind(CHANGE, this._change);\n }\n })\n },\n gantt: { dependencies: dataSourceBinding('dependencies', 'dependencies', 'setDependenciesDataSource') },\n multiselect: {\n value: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this._change = $.proxy(this.change, this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n change: function () {\n var that = this, oldValues = that.bindings[VALUE].get(), valuePrimitive = that.options.valuePrimitive, newValues = valuePrimitive ? that.widget.value() : that.widget.dataItems();\n var field = this.options.dataValueField || this.options.dataTextField;\n newValues = newValues.slice(0);\n that._initChange = true;\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n var newLength = newValues.length;\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n while (old !== undefined) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n old = oldValues[i];\n }\n arraySplice(oldValues, oldValues.length, 0, newValues);\n if (remove.length) {\n oldValues.trigger('change', {\n action: 'remove',\n items: remove,\n index: removeIndex\n });\n }\n if (newValues.length) {\n oldValues.trigger('change', {\n action: 'add',\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n that._initChange = false;\n },\n refresh: function () {\n if (!this._initChange) {\n var options = this.options, widget = this.widget, field = options.dataValueField || options.dataTextField, value = this.bindings.value.get(), data = value, idx = 0, length, values = [], selectedValue;\n if (value === undefined) {\n value = null;\n }\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n if (options.autoBind === false && options.valuePrimitive !== true && !widget._isBound()) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n destroy: function () {\n this.widget.unbind(CHANGE, this._change);\n }\n })\n },\n scheduler: {\n source: dataSourceBinding('source', 'dataSource', 'setDataSource').extend({\n dataBound: function (e) {\n var idx;\n var length;\n var widget = this.widget;\n var elements = e.addedItems || widget.items();\n var data, parents;\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n },\n grid: {\n source: dataSourceBinding('source', 'dataSource', 'setDataSource').extend({\n dataBound: function (e) {\n var idx, length, widget = this.widget, elements = e.addedItems || widget.items(), parents, data;\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n }\n };\n var arraySplice = function (arr, idx, remove, add) {\n add = add || [];\n remove = remove || 0;\n var addLength = add.length;\n var oldLength = arr.length;\n var shifted = [].slice.call(arr, idx + remove);\n var shiftedLength = shifted.length;\n var index;\n if (addLength) {\n addLength = idx + addLength;\n index = 0;\n for (; idx < addLength; idx++) {\n arr[idx] = add[index];\n index++;\n }\n arr.length = addLength;\n } else if (remove) {\n arr.length = idx;\n remove += idx;\n while (idx < remove) {\n delete arr[--remove];\n }\n }\n if (shiftedLength) {\n shiftedLength = idx + shiftedLength;\n index = 0;\n for (; idx < shiftedLength; idx++) {\n arr[idx] = shifted[index];\n index++;\n }\n arr.length = shiftedLength;\n }\n idx = arr.length;\n while (idx < oldLength) {\n delete arr[idx];\n idx++;\n }\n };\n var BindingTarget = Class.extend({\n init: function (target, options) {\n this.target = target;\n this.options = options;\n this.toDestroy = [];\n },\n bind: function (bindings) {\n var key, hasValue, hasSource, hasEvents, hasChecked, hasCss, widgetBinding = this instanceof WidgetBindingTarget, specificBinders = this.binders();\n for (key in bindings) {\n if (key == VALUE) {\n hasValue = true;\n } else if (key == SOURCE) {\n hasSource = true;\n } else if (key == EVENTS && !widgetBinding) {\n hasEvents = true;\n } else if (key == CHECKED) {\n hasChecked = true;\n } else if (key == CSS) {\n hasCss = true;\n } else {\n this.applyBinding(key, bindings, specificBinders);\n }\n }\n if (hasSource) {\n this.applyBinding(SOURCE, bindings, specificBinders);\n }\n if (hasValue) {\n this.applyBinding(VALUE, bindings, specificBinders);\n }\n if (hasChecked) {\n this.applyBinding(CHECKED, bindings, specificBinders);\n }\n if (hasEvents && !widgetBinding) {\n this.applyBinding(EVENTS, bindings, specificBinders);\n }\n if (hasCss && !widgetBinding) {\n this.applyBinding(CSS, bindings, specificBinders);\n }\n },\n binders: function () {\n return binders[this.target.nodeName.toLowerCase()] || {};\n },\n applyBinding: function (name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders[name], toDestroy = this.toDestroy, attribute, binding = bindings[name];\n if (binder) {\n binder = new binder(this.target, bindings, this.options);\n toDestroy.push(binder);\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else if (name !== 'template') {\n throw new Error('The ' + name + ' binding is not supported by the ' + this.target.nodeName.toLowerCase() + ' element');\n }\n },\n destroy: function () {\n var idx, length, toDestroy = this.toDestroy;\n for (idx = 0, length = toDestroy.length; idx < length; idx++) {\n toDestroy[idx].destroy();\n }\n }\n });\n var WidgetBindingTarget = BindingTarget.extend({\n binders: function () {\n return binders.widget[this.target.options.name.toLowerCase()] || {};\n },\n applyBinding: function (name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders.widget[name], toDestroy = this.toDestroy, attribute, binding = bindings[name];\n if (binder) {\n binder = new binder(this.target, bindings, this.target.options);\n toDestroy.push(binder);\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else {\n throw new Error('The ' + name + ' binding is not supported by the ' + this.target.options.name + ' widget');\n }\n }\n });\n function bindingTargetForRole(element, roles) {\n var widget = kendo.initWidget(element, {}, roles);\n if (widget) {\n return new WidgetBindingTarget(widget);\n }\n }\n var keyValueRegExp = /[A-Za-z0-9_\\-]+:(\\{([^}]*)\\}|[^,}]+)/g, whiteSpaceRegExp = /\\s/g;\n function parseBindings(bind) {\n var result = {}, idx, length, token, colonIndex, key, value, tokens;\n tokens = bind.match(keyValueRegExp);\n for (idx = 0, length = tokens.length; idx < length; idx++) {\n token = tokens[idx];\n colonIndex = token.indexOf(':');\n key = token.substring(0, colonIndex);\n value = token.substring(colonIndex + 1);\n if (value.charAt(0) == '{') {\n value = parseBindings(value);\n }\n result[key] = value;\n }\n return result;\n }\n function createBindings(bindings, source, type) {\n var binding, result = {};\n for (binding in bindings) {\n result[binding] = new type(source, bindings[binding]);\n }\n return result;\n }\n function bindElement(element, source, roles, parents) {\n if (!element || element.getAttribute('data-' + kendo.ns + 'stop')) {\n return;\n }\n var role = element.getAttribute('data-' + kendo.ns + 'role'), idx, bind = element.getAttribute('data-' + kendo.ns + 'bind'), childrenCopy = [], deep = true, bindings, options = {}, target;\n parents = parents || [source];\n if (role || bind) {\n unbindElement(element, false);\n }\n if (role) {\n target = bindingTargetForRole(element, roles);\n }\n if (bind) {\n bind = parseBindings(bind.replace(whiteSpaceRegExp, ''));\n if (!target) {\n options = kendo.parseOptions(element, {\n textField: '',\n valueField: '',\n template: '',\n valueUpdate: CHANGE,\n valuePrimitive: false,\n autoBind: true\n }, source);\n options.roles = roles;\n target = new BindingTarget(element, options);\n }\n target.source = source;\n bindings = createBindings(bind, parents, Binding);\n if (options.template) {\n bindings.template = new TemplateBinding(parents, '', options.template);\n }\n if (bindings.click) {\n bind.events = bind.events || {};\n bind.events.click = bind.click;\n bindings.click.destroy();\n delete bindings.click;\n }\n if (bindings.source) {\n deep = false;\n }\n if (bind.attr) {\n bindings.attr = createBindings(bind.attr, parents, Binding);\n }\n if (bind.style) {\n bindings.style = createBindings(bind.style, parents, Binding);\n }\n if (bind.events) {\n bindings.events = createBindings(bind.events, parents, EventBinding);\n }\n if (bind.css) {\n bindings.css = createBindings(bind.css, parents, Binding);\n }\n target.bind(bindings);\n }\n if (target) {\n element.kendoBindingTarget = target;\n }\n var children = element.children;\n if (deep && children) {\n for (idx = 0; idx < children.length; idx++) {\n childrenCopy[idx] = children[idx];\n }\n for (idx = 0; idx < childrenCopy.length; idx++) {\n bindElement(childrenCopy[idx], source, roles, parents);\n }\n }\n }\n function bind(dom, object) {\n var idx, length, node, roles = kendo.rolesFromNamespaces([].slice.call(arguments, 2));\n object = kendo.observable(object);\n dom = $(dom);\n for (idx = 0, length = dom.length; idx < length; idx++) {\n node = dom[idx];\n if (node.nodeType === 1) {\n bindElement(node, object, roles);\n }\n }\n }\n function unbindElement(element, destroyWidget) {\n var bindingTarget = element.kendoBindingTarget;\n if (bindingTarget) {\n bindingTarget.destroy();\n if (deleteExpando) {\n delete element.kendoBindingTarget;\n } else if (element.removeAttribute) {\n element.removeAttribute('kendoBindingTarget');\n } else {\n element.kendoBindingTarget = null;\n }\n }\n if (destroyWidget) {\n var widget = kendo.widgetInstance($(element));\n if (widget && typeof widget.destroy === FUNCTION) {\n widget.destroy();\n }\n }\n }\n function unbindElementTree(element, destroyWidgets) {\n unbindElement(element, destroyWidgets);\n unbindElementChildren(element, destroyWidgets);\n }\n function unbindElementChildren(element, destroyWidgets) {\n var children = element.children;\n if (children) {\n for (var idx = 0, length = children.length; idx < length; idx++) {\n unbindElementTree(children[idx], destroyWidgets);\n }\n }\n }\n function unbind(dom) {\n var idx, length;\n dom = $(dom);\n for (idx = 0, length = dom.length; idx < length; idx++) {\n unbindElementTree(dom[idx], false);\n }\n }\n function notify(widget, namespace) {\n var element = widget.element, bindingTarget = element[0].kendoBindingTarget;\n if (bindingTarget) {\n bind(element, bindingTarget.source, namespace);\n }\n }\n function retrievePrimitiveValues(value, valueField) {\n var values = [];\n var idx = 0;\n var length;\n var item;\n if (!valueField) {\n return value;\n }\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n item = value[idx];\n values[idx] = item.get ? item.get(valueField) : item[valueField];\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(valueField);\n }\n return value;\n }\n kendo.unbind = unbind;\n kendo.bind = bind;\n kendo.data.binders = binders;\n kendo.data.Binder = Binder;\n kendo.notify = notify;\n kendo.observable = function (object) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n return object;\n };\n kendo.observableHierarchy = function (array) {\n var dataSource = kendo.data.HierarchicalDataSource.create(array);\n function recursiveRead(data) {\n var i, children;\n for (i = 0; i < data.length; i++) {\n data[i]._initChildren();\n children = data[i].children;\n children.fetch();\n data[i].items = children.data();\n recursiveRead(data[i].items);\n }\n }\n dataSource.fetch();\n recursiveRead(dataSource.data());\n dataSource._data._dataSource = dataSource;\n return dataSource._data;\n };\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.fx', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'fx',\n name: 'Effects',\n category: 'framework',\n description: 'Required for animation effects in all Kendo UI widgets.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, fx = kendo.effects, each = $.each, extend = $.extend, proxy = $.proxy, support = kendo.support, browser = support.browser, transforms = support.transforms, transitions = support.transitions, scaleProperties = {\n scale: 0,\n scalex: 0,\n scaley: 0,\n scale3d: 0\n }, translateProperties = {\n translate: 0,\n translatex: 0,\n translatey: 0,\n translate3d: 0\n }, hasZoom = typeof document.documentElement.style.zoom !== 'undefined' && !transforms, matrix3dRegExp = /matrix3?d?\\s*\\(.*,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?/i, cssParamsRegExp = /^(-?[\\d\\.\\-]+)?[\\w\\s]*,?\\s*(-?[\\d\\.\\-]+)?[\\w\\s]*/i, translateXRegExp = /translatex?$/i, oldEffectsRegExp = /(zoom|fade|expand)(\\w+)/, singleEffectRegExp = /(zoom|fade|expand)/, unitRegExp = /[xy]$/i, transformProps = [\n 'perspective',\n 'rotate',\n 'rotatex',\n 'rotatey',\n 'rotatez',\n 'rotate3d',\n 'scale',\n 'scalex',\n 'scaley',\n 'scalez',\n 'scale3d',\n 'skew',\n 'skewx',\n 'skewy',\n 'translate',\n 'translatex',\n 'translatey',\n 'translatez',\n 'translate3d',\n 'matrix',\n 'matrix3d'\n ], transform2d = [\n 'rotate',\n 'scale',\n 'scalex',\n 'scaley',\n 'skew',\n 'skewx',\n 'skewy',\n 'translate',\n 'translatex',\n 'translatey',\n 'matrix'\n ], transform2units = {\n 'rotate': 'deg',\n scale: '',\n skew: 'px',\n translate: 'px'\n }, cssPrefix = transforms.css, round = Math.round, BLANK = '', PX = 'px', NONE = 'none', AUTO = 'auto', WIDTH = 'width', HEIGHT = 'height', HIDDEN = 'hidden', ORIGIN = 'origin', ABORT_ID = 'abortId', OVERFLOW = 'overflow', TRANSLATE = 'translate', POSITION = 'position', COMPLETE_CALLBACK = 'completeCallback', TRANSITION = cssPrefix + 'transition', TRANSFORM = cssPrefix + 'transform', BACKFACE = cssPrefix + 'backface-visibility', PERSPECTIVE = cssPrefix + 'perspective', DEFAULT_PERSPECTIVE = '1500px', TRANSFORM_PERSPECTIVE = 'perspective(' + DEFAULT_PERSPECTIVE + ')', directions = {\n left: {\n reverse: 'right',\n property: 'left',\n transition: 'translatex',\n vertical: false,\n modifier: -1\n },\n right: {\n reverse: 'left',\n property: 'left',\n transition: 'translatex',\n vertical: false,\n modifier: 1\n },\n down: {\n reverse: 'up',\n property: 'top',\n transition: 'translatey',\n vertical: true,\n modifier: 1\n },\n up: {\n reverse: 'down',\n property: 'top',\n transition: 'translatey',\n vertical: true,\n modifier: -1\n },\n top: { reverse: 'bottom' },\n bottom: { reverse: 'top' },\n 'in': {\n reverse: 'out',\n modifier: -1\n },\n out: {\n reverse: 'in',\n modifier: 1\n },\n vertical: { reverse: 'vertical' },\n horizontal: { reverse: 'horizontal' }\n };\n kendo.directions = directions;\n extend($.fn, {\n kendoStop: function (clearQueue, gotoEnd) {\n if (transitions) {\n return fx.stopQueue(this, clearQueue || false, gotoEnd || false);\n } else {\n return this.stop(clearQueue, gotoEnd);\n }\n }\n });\n if (transforms && !transitions) {\n each(transform2d, function (idx, value) {\n $.fn[value] = function (val) {\n if (typeof val == 'undefined') {\n return animationProperty(this, value);\n } else {\n var that = $(this)[0], transformValue = value + '(' + val + transform2units[value.replace(unitRegExp, '')] + ')';\n if (that.style.cssText.indexOf(TRANSFORM) == -1) {\n $(this).css(TRANSFORM, transformValue);\n } else {\n that.style.cssText = that.style.cssText.replace(new RegExp(value + '\\\\(.*?\\\\)', 'i'), transformValue);\n }\n }\n return this;\n };\n $.fx.step[value] = function (fx) {\n $(fx.elem)[value](fx.now);\n };\n });\n var curProxy = $.fx.prototype.cur;\n $.fx.prototype.cur = function () {\n if (transform2d.indexOf(this.prop) != -1) {\n return parseFloat($(this.elem)[this.prop]());\n }\n return curProxy.apply(this, arguments);\n };\n }\n kendo.toggleClass = function (element, classes, options, add) {\n if (classes) {\n classes = classes.split(' ');\n if (transitions) {\n options = extend({\n exclusive: 'all',\n duration: 400,\n ease: 'ease-out'\n }, options);\n element.css(TRANSITION, options.exclusive + ' ' + options.duration + 'ms ' + options.ease);\n setTimeout(function () {\n element.css(TRANSITION, '').css(HEIGHT);\n }, options.duration);\n }\n each(classes, function (idx, value) {\n element.toggleClass(value, add);\n });\n }\n return element;\n };\n kendo.parseEffects = function (input, mirror) {\n var effects = {};\n if (typeof input === 'string') {\n each(input.split(' '), function (idx, value) {\n var redirectedEffect = !singleEffectRegExp.test(value), resolved = value.replace(oldEffectsRegExp, function (match, $1, $2) {\n return $1 + ':' + $2.toLowerCase();\n }), effect = resolved.split(':'), direction = effect[1], effectBody = {};\n if (effect.length > 1) {\n effectBody.direction = mirror && redirectedEffect ? directions[direction].reverse : direction;\n }\n effects[effect[0]] = effectBody;\n });\n } else {\n each(input, function (idx) {\n var direction = this.direction;\n if (direction && mirror && !singleEffectRegExp.test(idx)) {\n this.direction = directions[direction].reverse;\n }\n effects[idx] = this;\n });\n }\n return effects;\n };\n function parseInteger(value) {\n return parseInt(value, 10);\n }\n function parseCSS(element, property) {\n return parseInteger(element.css(property));\n }\n function keys(obj) {\n var acc = [];\n for (var propertyName in obj) {\n acc.push(propertyName);\n }\n return acc;\n }\n function strip3DTransforms(properties) {\n for (var key in properties) {\n if (transformProps.indexOf(key) != -1 && transform2d.indexOf(key) == -1) {\n delete properties[key];\n }\n }\n return properties;\n }\n function normalizeCSS(element, properties) {\n var transformation = [], cssValues = {}, lowerKey, key, value, isTransformed;\n for (key in properties) {\n lowerKey = key.toLowerCase();\n isTransformed = transforms && transformProps.indexOf(lowerKey) != -1;\n if (!support.hasHW3D && isTransformed && transform2d.indexOf(lowerKey) == -1) {\n delete properties[key];\n } else {\n value = properties[key];\n if (isTransformed) {\n transformation.push(key + '(' + value + ')');\n } else {\n cssValues[key] = value;\n }\n }\n }\n if (transformation.length) {\n cssValues[TRANSFORM] = transformation.join(' ');\n }\n return cssValues;\n }\n if (transitions) {\n extend(fx, {\n transition: function (element, properties, options) {\n var css, delay = 0, oldKeys = element.data('keys') || [], timeoutID;\n options = extend({\n duration: 200,\n ease: 'ease-out',\n complete: null,\n exclusive: 'all'\n }, options);\n var stopTransitionCalled = false;\n var stopTransition = function () {\n if (!stopTransitionCalled) {\n stopTransitionCalled = true;\n if (timeoutID) {\n clearTimeout(timeoutID);\n timeoutID = null;\n }\n element.removeData(ABORT_ID).dequeue().css(TRANSITION, '').css(TRANSITION);\n options.complete.call(element);\n }\n };\n options.duration = $.fx ? $.fx.speeds[options.duration] || options.duration : options.duration;\n css = normalizeCSS(element, properties);\n $.merge(oldKeys, keys(css));\n if ($.hasOwnProperty('uniqueSort')) {\n element.data('keys', $.uniqueSort(oldKeys)).height();\n } else {\n element.data('keys', $.unique(oldKeys)).height();\n }\n element.css(TRANSITION, options.exclusive + ' ' + options.duration + 'ms ' + options.ease).css(TRANSITION);\n element.css(css).css(TRANSFORM);\n if (transitions.event) {\n element.one(transitions.event, stopTransition);\n if (options.duration !== 0) {\n delay = 500;\n }\n }\n timeoutID = setTimeout(stopTransition, options.duration + delay);\n element.data(ABORT_ID, timeoutID);\n element.data(COMPLETE_CALLBACK, stopTransition);\n },\n stopQueue: function (element, clearQueue, gotoEnd) {\n var cssValues, taskKeys = element.data('keys'), retainPosition = !gotoEnd && taskKeys, completeCallback = element.data(COMPLETE_CALLBACK);\n if (retainPosition) {\n cssValues = kendo.getComputedStyles(element[0], taskKeys);\n }\n if (completeCallback) {\n completeCallback();\n }\n if (retainPosition) {\n element.css(cssValues);\n }\n return element.removeData('keys').stop(clearQueue);\n }\n });\n }\n function animationProperty(element, property) {\n if (transforms) {\n var transform = element.css(TRANSFORM);\n if (transform == NONE) {\n return property == 'scale' ? 1 : 0;\n }\n var match = transform.match(new RegExp(property + '\\\\s*\\\\(([\\\\d\\\\w\\\\.]+)')), computed = 0;\n if (match) {\n computed = parseInteger(match[1]);\n } else {\n match = transform.match(matrix3dRegExp) || [\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n property = property.toLowerCase();\n if (translateXRegExp.test(property)) {\n computed = parseFloat(match[3] / match[2]);\n } else if (property == 'translatey') {\n computed = parseFloat(match[4] / match[2]);\n } else if (property == 'scale') {\n computed = parseFloat(match[2]);\n } else if (property == 'rotate') {\n computed = parseFloat(Math.atan2(match[2], match[1]));\n }\n }\n return computed;\n } else {\n return parseFloat(element.css(property));\n }\n }\n var EffectSet = kendo.Class.extend({\n init: function (element, options) {\n var that = this;\n that.element = element;\n that.effects = [];\n that.options = options;\n that.restore = [];\n },\n run: function (effects) {\n var that = this, effect, idx, jdx, length = effects.length, element = that.element, options = that.options, deferred = $.Deferred(), start = {}, end = {}, target, children, childrenLength;\n that.effects = effects;\n deferred.done($.proxy(that, 'complete'));\n element.data('animating', true);\n for (idx = 0; idx < length; idx++) {\n effect = effects[idx];\n effect.setReverse(options.reverse);\n effect.setOptions(options);\n that.addRestoreProperties(effect.restore);\n effect.prepare(start, end);\n children = effect.children();\n for (jdx = 0, childrenLength = children.length; jdx < childrenLength; jdx++) {\n children[jdx].duration(options.duration).run();\n }\n }\n for (var effectName in options.effects) {\n extend(end, options.effects[effectName].properties);\n }\n if (!element.is(':visible')) {\n extend(start, { display: element.data('olddisplay') || 'block' });\n }\n if (transforms && !options.reset) {\n target = element.data('targetTransform');\n if (target) {\n start = extend(target, start);\n }\n }\n start = normalizeCSS(element, start);\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n element.css(start).css(TRANSFORM);\n for (idx = 0; idx < length; idx++) {\n effects[idx].setup();\n }\n if (options.init) {\n options.init();\n }\n element.data('targetTransform', end);\n fx.animate(element, end, extend({}, options, { complete: deferred.resolve }));\n return deferred.promise();\n },\n stop: function () {\n $(this.element).kendoStop(true, true);\n },\n addRestoreProperties: function (restore) {\n var element = this.element, value, i = 0, length = restore.length;\n for (; i < length; i++) {\n value = restore[i];\n this.restore.push(value);\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n },\n restoreCallback: function () {\n var element = this.element;\n for (var i = 0, length = this.restore.length; i < length; i++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n complete: function () {\n var that = this, idx = 0, element = that.element, options = that.options, effects = that.effects, length = effects.length;\n element.removeData('animating').dequeue();\n if (options.hide) {\n element.data('olddisplay', element.css('display')).hide();\n }\n this.restoreCallback();\n if (hasZoom && !transforms) {\n setTimeout($.proxy(this, 'restoreCallback'), 0);\n }\n for (; idx < length; idx++) {\n effects[idx].teardown();\n }\n if (options.completeCallback) {\n options.completeCallback(element);\n }\n }\n });\n fx.promise = function (element, options) {\n var effects = [], effectClass, effectSet = new EffectSet(element, options), parsedEffects = kendo.parseEffects(options.effects), effect;\n options.effects = parsedEffects;\n for (var effectName in parsedEffects) {\n effectClass = fx[capitalize(effectName)];\n if (effectClass) {\n effect = new effectClass(element, parsedEffects[effectName].direction);\n effects.push(effect);\n }\n }\n if (effects[0]) {\n effectSet.run(effects);\n } else {\n if (!element.is(':visible')) {\n element.css({ display: element.data('olddisplay') || 'block' }).css('display');\n }\n if (options.init) {\n options.init();\n }\n element.dequeue();\n effectSet.complete();\n }\n };\n extend(fx, {\n animate: function (elements, properties, options) {\n var useTransition = options.transition !== false;\n delete options.transition;\n if (transitions && 'transition' in fx && useTransition) {\n fx.transition(elements, properties, options);\n } else {\n if (transforms) {\n elements.animate(strip3DTransforms(properties), {\n queue: false,\n show: false,\n hide: false,\n duration: options.duration,\n complete: options.complete\n });\n } else {\n elements.each(function () {\n var element = $(this), multiple = {};\n each(transformProps, function (idx, value) {\n var params, currentValue = properties ? properties[value] + ' ' : null;\n if (currentValue) {\n var single = properties;\n if (value in scaleProperties && properties[value] !== undefined) {\n params = currentValue.match(cssParamsRegExp);\n if (transforms) {\n extend(single, { scale: +params[0] });\n }\n } else {\n if (value in translateProperties && properties[value] !== undefined) {\n var position = element.css(POSITION), isFixed = position == 'absolute' || position == 'fixed';\n if (!element.data(TRANSLATE)) {\n if (isFixed) {\n element.data(TRANSLATE, {\n top: parseCSS(element, 'top') || 0,\n left: parseCSS(element, 'left') || 0,\n bottom: parseCSS(element, 'bottom'),\n right: parseCSS(element, 'right')\n });\n } else {\n element.data(TRANSLATE, {\n top: parseCSS(element, 'marginTop') || 0,\n left: parseCSS(element, 'marginLeft') || 0\n });\n }\n }\n var originalPosition = element.data(TRANSLATE);\n params = currentValue.match(cssParamsRegExp);\n if (params) {\n var dX = value == TRANSLATE + 'y' ? +null : +params[1], dY = value == TRANSLATE + 'y' ? +params[1] : +params[2];\n if (isFixed) {\n if (!isNaN(originalPosition.right)) {\n if (!isNaN(dX)) {\n extend(single, { right: originalPosition.right - dX });\n }\n } else {\n if (!isNaN(dX)) {\n extend(single, { left: originalPosition.left + dX });\n }\n }\n if (!isNaN(originalPosition.bottom)) {\n if (!isNaN(dY)) {\n extend(single, { bottom: originalPosition.bottom - dY });\n }\n } else {\n if (!isNaN(dY)) {\n extend(single, { top: originalPosition.top + dY });\n }\n }\n } else {\n if (!isNaN(dX)) {\n extend(single, { marginLeft: originalPosition.left + dX });\n }\n if (!isNaN(dY)) {\n extend(single, { marginTop: originalPosition.top + dY });\n }\n }\n }\n }\n }\n if (!transforms && value != 'scale' && value in single) {\n delete single[value];\n }\n if (single) {\n extend(multiple, single);\n }\n }\n });\n if (browser.msie) {\n delete multiple.scale;\n }\n element.animate(multiple, {\n queue: false,\n show: false,\n hide: false,\n duration: options.duration,\n complete: options.complete\n });\n });\n }\n }\n }\n });\n fx.animatedPromise = fx.promise;\n var Effect = kendo.Class.extend({\n init: function (element, direction) {\n var that = this;\n that.element = element;\n that._direction = direction;\n that.options = {};\n that._additionalEffects = [];\n if (!that.restore) {\n that.restore = [];\n }\n },\n reverse: function () {\n this._reverse = true;\n return this.run();\n },\n play: function () {\n this._reverse = false;\n return this.run();\n },\n add: function (additional) {\n this._additionalEffects.push(additional);\n return this;\n },\n direction: function (value) {\n this._direction = value;\n return this;\n },\n duration: function (duration) {\n this._duration = duration;\n return this;\n },\n compositeRun: function () {\n var that = this, effectSet = new EffectSet(that.element, {\n reverse: that._reverse,\n duration: that._duration\n }), effects = that._additionalEffects.concat([that]);\n return effectSet.run(effects);\n },\n run: function () {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n var that = this, element = that.element, idx = 0, restore = that.restore, length = restore.length, value, deferred = $.Deferred(), start = {}, end = {}, target, children = that.children(), childrenLength = children.length;\n deferred.done($.proxy(that, '_complete'));\n element.data('animating', true);\n for (idx = 0; idx < length; idx++) {\n value = restore[idx];\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n for (idx = 0; idx < childrenLength; idx++) {\n children[idx].duration(that._duration).run();\n }\n that.prepare(start, end);\n if (!element.is(':visible')) {\n extend(start, { display: element.data('olddisplay') || 'block' });\n }\n if (transforms) {\n target = element.data('targetTransform');\n if (target) {\n start = extend(target, start);\n }\n }\n start = normalizeCSS(element, start);\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n element.css(start).css(TRANSFORM);\n that.setup();\n element.data('targetTransform', end);\n fx.animate(element, end, {\n duration: that._duration,\n complete: deferred.resolve\n });\n return deferred.promise();\n },\n stop: function () {\n var idx = 0, children = this.children(), childrenLength = children.length;\n for (idx = 0; idx < childrenLength; idx++) {\n children[idx].stop();\n }\n $(this.element).kendoStop(true, true);\n return this;\n },\n restoreCallback: function () {\n var element = this.element;\n for (var i = 0, length = this.restore.length; i < length; i++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n _complete: function () {\n var that = this, element = that.element;\n element.removeData('animating').dequeue();\n that.restoreCallback();\n if (that.shouldHide()) {\n element.data('olddisplay', element.css('display')).hide();\n }\n if (hasZoom && !transforms) {\n setTimeout($.proxy(that, 'restoreCallback'), 0);\n }\n that.teardown();\n },\n setOptions: function (options) {\n extend(true, this.options, options);\n },\n children: function () {\n return [];\n },\n shouldHide: $.noop,\n setup: $.noop,\n prepare: $.noop,\n teardown: $.noop,\n directions: [],\n setReverse: function (reverse) {\n this._reverse = reverse;\n return this;\n }\n });\n function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1);\n }\n function createEffect(name, definition) {\n var effectClass = Effect.extend(definition), directions = effectClass.prototype.directions;\n fx[capitalize(name)] = effectClass;\n fx.Element.prototype[name] = function (direction, opt1, opt2, opt3) {\n return new effectClass(this.element, direction, opt1, opt2, opt3);\n };\n each(directions, function (idx, theDirection) {\n fx.Element.prototype[name + capitalize(theDirection)] = function (opt1, opt2, opt3) {\n return new effectClass(this.element, theDirection, opt1, opt2, opt3);\n };\n });\n }\n var FOUR_DIRECTIONS = [\n 'left',\n 'right',\n 'up',\n 'down'\n ], IN_OUT = [\n 'in',\n 'out'\n ];\n createEffect('slideIn', {\n directions: FOUR_DIRECTIONS,\n divisor: function (value) {\n this.options.divisor = value;\n return this;\n },\n prepare: function (start, end) {\n var that = this, tmp, element = that.element, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, direction = directions[that._direction], offset = -direction.modifier * (direction.vertical ? outerHeight(element) : outerWidth(element)), startValue = offset / (that.options && that.options.divisor || 1) + PX, endValue = '0px';\n if (that._reverse) {\n tmp = start;\n start = end;\n end = tmp;\n }\n if (transforms) {\n start[direction.transition] = startValue;\n end[direction.transition] = endValue;\n } else {\n start[direction.property] = startValue;\n end[direction.property] = endValue;\n }\n }\n });\n createEffect('tile', {\n directions: FOUR_DIRECTIONS,\n init: function (element, direction, previous) {\n Effect.prototype.init.call(this, element, direction);\n this.options = { previous: previous };\n },\n previousDivisor: function (value) {\n this.options.previousDivisor = value;\n return this;\n },\n children: function () {\n var that = this, reverse = that._reverse, previous = that.options.previous, divisor = that.options.previousDivisor || 1, dir = that._direction;\n var children = [kendo.fx(that.element).slideIn(dir).setReverse(reverse)];\n if (previous) {\n children.push(kendo.fx(previous).slideIn(directions[dir].reverse).divisor(divisor).setReverse(!reverse));\n }\n return children;\n }\n });\n function createToggleEffect(name, property, defaultStart, defaultEnd) {\n createEffect(name, {\n directions: IN_OUT,\n startValue: function (value) {\n this._startValue = value;\n return this;\n },\n endValue: function (value) {\n this._endValue = value;\n return this;\n },\n shouldHide: function () {\n return this._shouldHide;\n },\n prepare: function (start, end) {\n var that = this, startValue, endValue, out = this._direction === 'out', startDataValue = that.element.data(property), startDataValueIsSet = !(isNaN(startDataValue) || startDataValue == defaultStart);\n if (startDataValueIsSet) {\n startValue = startDataValue;\n } else if (typeof this._startValue !== 'undefined') {\n startValue = this._startValue;\n } else {\n startValue = out ? defaultStart : defaultEnd;\n }\n if (typeof this._endValue !== 'undefined') {\n endValue = this._endValue;\n } else {\n endValue = out ? defaultEnd : defaultStart;\n }\n if (this._reverse) {\n start[property] = endValue;\n end[property] = startValue;\n } else {\n start[property] = startValue;\n end[property] = endValue;\n }\n that._shouldHide = end[property] === defaultEnd;\n }\n });\n }\n createToggleEffect('fade', 'opacity', 1, 0);\n createToggleEffect('zoom', 'scale', 1, 0.01);\n createEffect('slideMargin', {\n prepare: function (start, end) {\n var that = this, element = that.element, options = that.options, origin = element.data(ORIGIN), offset = options.offset, margin, reverse = that._reverse;\n if (!reverse && origin === null) {\n element.data(ORIGIN, parseFloat(element.css('margin-' + options.axis)));\n }\n margin = element.data(ORIGIN) || 0;\n end['margin-' + options.axis] = !reverse ? margin + offset : margin;\n }\n });\n createEffect('slideTo', {\n prepare: function (start, end) {\n var that = this, element = that.element, options = that.options, offset = options.offset.split(','), reverse = that._reverse;\n if (transforms) {\n end.translatex = !reverse ? offset[0] : 0;\n end.translatey = !reverse ? offset[1] : 0;\n } else {\n end.left = !reverse ? offset[0] : 0;\n end.top = !reverse ? offset[1] : 0;\n }\n element.css('left');\n }\n });\n createEffect('expand', {\n directions: [\n 'horizontal',\n 'vertical'\n ],\n restore: [OVERFLOW],\n prepare: function (start, end) {\n var that = this, element = that.element, options = that.options, reverse = that._reverse, property = that._direction === 'vertical' ? HEIGHT : WIDTH, setLength = element[0].style[property], oldLength = element.data(property), length = parseFloat(oldLength || setLength), realLength = round(element.css(property, AUTO)[property]());\n start.overflow = HIDDEN;\n length = options && options.reset ? realLength || length : length || realLength;\n end[property] = (reverse ? 0 : length) + PX;\n start[property] = (reverse ? length : 0) + PX;\n if (oldLength === undefined) {\n element.data(property, setLength);\n }\n },\n shouldHide: function () {\n return this._reverse;\n },\n teardown: function () {\n var that = this, element = that.element, property = that._direction === 'vertical' ? HEIGHT : WIDTH, length = element.data(property);\n if (length == AUTO || length === BLANK) {\n setTimeout(function () {\n element.css(property, AUTO).css(property);\n }, 0);\n }\n }\n });\n var TRANSFER_START_STATE = {\n position: 'absolute',\n marginLeft: 0,\n marginTop: 0,\n scale: 1\n };\n createEffect('transfer', {\n init: function (element, target) {\n this.element = element;\n this.options = { target: target };\n this.restore = [];\n },\n setup: function () {\n this.element.appendTo(document.body);\n },\n prepare: function (start, end) {\n var that = this, element = that.element, outerBox = fx.box(element), innerBox = fx.box(that.options.target), currentScale = animationProperty(element, 'scale'), scale = fx.fillScale(innerBox, outerBox), transformOrigin = fx.transformOrigin(innerBox, outerBox);\n extend(start, TRANSFER_START_STATE);\n end.scale = 1;\n element.css(TRANSFORM, 'scale(1)').css(TRANSFORM);\n element.css(TRANSFORM, 'scale(' + currentScale + ')');\n start.top = outerBox.top;\n start.left = outerBox.left;\n start.transformOrigin = transformOrigin.x + PX + ' ' + transformOrigin.y + PX;\n if (that._reverse) {\n start.scale = scale;\n } else {\n end.scale = scale;\n }\n }\n });\n var CLIPS = {\n top: 'rect(auto auto $size auto)',\n bottom: 'rect($size auto auto auto)',\n left: 'rect(auto $size auto auto)',\n right: 'rect(auto auto auto $size)'\n };\n var ROTATIONS = {\n top: {\n start: 'rotatex(0deg)',\n end: 'rotatex(180deg)'\n },\n bottom: {\n start: 'rotatex(-180deg)',\n end: 'rotatex(0deg)'\n },\n left: {\n start: 'rotatey(0deg)',\n end: 'rotatey(-180deg)'\n },\n right: {\n start: 'rotatey(180deg)',\n end: 'rotatey(0deg)'\n }\n };\n function clipInHalf(container, direction) {\n var vertical = kendo.directions[direction].vertical, size = container[vertical ? HEIGHT : WIDTH]() / 2 + 'px';\n return CLIPS[direction].replace('$size', size);\n }\n createEffect('turningPage', {\n directions: FOUR_DIRECTIONS,\n init: function (element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n prepare: function (start, end) {\n var that = this, reverse = that._reverse, direction = reverse ? directions[that._direction].reverse : that._direction, rotation = ROTATIONS[direction];\n start.zIndex = 1;\n if (that._clipInHalf) {\n start.clip = clipInHalf(that._container, kendo.directions[direction].reverse);\n }\n start[BACKFACE] = HIDDEN;\n end[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.start : rotation.end);\n start[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.end : rotation.start);\n },\n setup: function () {\n this._container.append(this.element);\n },\n face: function (value) {\n this._face = value;\n return this;\n },\n shouldHide: function () {\n var that = this, reverse = that._reverse, face = that._face;\n return reverse && !face || !reverse && face;\n },\n clipInHalf: function (value) {\n this._clipInHalf = value;\n return this;\n },\n temporary: function () {\n this.element.addClass('temp-page');\n return this;\n }\n });\n createEffect('staticPage', {\n directions: FOUR_DIRECTIONS,\n init: function (element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n restore: ['clip'],\n prepare: function (start, end) {\n var that = this, direction = that._reverse ? directions[that._direction].reverse : that._direction;\n start.clip = clipInHalf(that._container, direction);\n start.opacity = 0.999;\n end.opacity = 1;\n },\n shouldHide: function () {\n var that = this, reverse = that._reverse, face = that._face;\n return reverse && !face || !reverse && face;\n },\n face: function (value) {\n this._face = value;\n return this;\n }\n });\n createEffect('pageturn', {\n directions: [\n 'horizontal',\n 'vertical'\n ],\n init: function (element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n children: function () {\n var that = this, options = that.options, direction = that._direction === 'horizontal' ? 'left' : 'top', reverseDirection = kendo.directions[direction].reverse, reverse = that._reverse, temp, faceClone = options.face.clone(true).removeAttr('id'), backClone = options.back.clone(true).removeAttr('id'), element = that.element;\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n return [\n kendo.fx(options.face).staticPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).staticPage(reverseDirection, element).setReverse(reverse),\n kendo.fx(faceClone).turningPage(direction, element).face(true).clipInHalf(true).temporary().setReverse(reverse),\n kendo.fx(backClone).turningPage(reverseDirection, element).clipInHalf(true).temporary().setReverse(reverse)\n ];\n },\n prepare: function (start, end) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = 'preserve-3d';\n start.opacity = 0.999;\n end.opacity = 1;\n },\n teardown: function () {\n this.element.find('.temp-page').remove();\n }\n });\n createEffect('flip', {\n directions: [\n 'horizontal',\n 'vertical'\n ],\n init: function (element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n children: function () {\n var that = this, options = that.options, direction = that._direction === 'horizontal' ? 'left' : 'top', reverseDirection = kendo.directions[direction].reverse, reverse = that._reverse, temp, element = that.element;\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n return [\n kendo.fx(options.face).turningPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).turningPage(reverseDirection, element).setReverse(reverse)\n ];\n },\n prepare: function (start) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = 'preserve-3d';\n }\n });\n var RESTORE_OVERFLOW = !support.mobileOS.android;\n var IGNORE_TRANSITION_EVENT_SELECTOR = '.km-touch-scrollbar, .km-actionsheet-wrapper';\n createEffect('replace', {\n _before: $.noop,\n _after: $.noop,\n init: function (element, previous, transitionClass) {\n Effect.prototype.init.call(this, element);\n this._previous = $(previous);\n this._transitionClass = transitionClass;\n },\n duration: function () {\n throw new Error('The replace effect does not support duration setting; the effect duration may be customized through the transition class rule');\n },\n beforeTransition: function (callback) {\n this._before = callback;\n return this;\n },\n afterTransition: function (callback) {\n this._after = callback;\n return this;\n },\n _both: function () {\n return $().add(this._element).add(this._previous);\n },\n _containerClass: function () {\n var direction = this._direction, containerClass = 'k-fx k-fx-start k-fx-' + this._transitionClass;\n if (direction) {\n containerClass += ' k-fx-' + direction;\n }\n if (this._reverse) {\n containerClass += ' k-fx-reverse';\n }\n return containerClass;\n },\n complete: function (e) {\n if (!this.deferred || e && $(e.target).is(IGNORE_TRANSITION_EVENT_SELECTOR)) {\n return;\n }\n var container = this.container;\n container.removeClass('k-fx-end').removeClass(this._containerClass()).off(transitions.event, this.completeProxy);\n this._previous.hide().removeClass('k-fx-current');\n this.element.removeClass('k-fx-next');\n if (RESTORE_OVERFLOW) {\n container.css(OVERFLOW, '');\n }\n if (!this.isAbsolute) {\n this._both().css(POSITION, '');\n }\n this.deferred.resolve();\n delete this.deferred;\n },\n run: function () {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n var that = this, element = that.element, previous = that._previous, container = element.parents().filter(previous.parents()).first(), both = that._both(), deferred = $.Deferred(), originalPosition = element.css(POSITION), originalOverflow;\n if (!container.length) {\n container = element.parent();\n }\n this.container = container;\n this.deferred = deferred;\n this.isAbsolute = originalPosition == 'absolute';\n if (!this.isAbsolute) {\n both.css(POSITION, 'absolute');\n }\n if (RESTORE_OVERFLOW) {\n originalOverflow = container.css(OVERFLOW);\n container.css(OVERFLOW, 'hidden');\n }\n if (!transitions) {\n this.complete();\n } else {\n element.addClass('k-fx-hidden');\n container.addClass(this._containerClass());\n this.completeProxy = $.proxy(this, 'complete');\n container.on(transitions.event, this.completeProxy);\n kendo.animationFrame(function () {\n element.removeClass('k-fx-hidden').addClass('k-fx-next');\n previous.css('display', '').addClass('k-fx-current');\n that._before(previous, element);\n kendo.animationFrame(function () {\n container.removeClass('k-fx-start').addClass('k-fx-end');\n that._after(previous, element);\n });\n });\n }\n return deferred.promise();\n },\n stop: function () {\n this.complete();\n }\n });\n var Animation = kendo.Class.extend({\n init: function () {\n var that = this;\n that._tickProxy = proxy(that._tick, that);\n that._started = false;\n },\n tick: $.noop,\n done: $.noop,\n onEnd: $.noop,\n onCancel: $.noop,\n start: function () {\n if (!this.enabled()) {\n return;\n }\n if (!this.done()) {\n this._started = true;\n kendo.animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n },\n enabled: function () {\n return true;\n },\n cancel: function () {\n this._started = false;\n this.onCancel();\n },\n _tick: function () {\n var that = this;\n if (!that._started) {\n return;\n }\n that.tick();\n if (!that.done()) {\n kendo.animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n });\n var Transition = Animation.extend({\n init: function (options) {\n var that = this;\n extend(that, options);\n Animation.fn.init.call(that);\n },\n done: function () {\n return this.timePassed() >= this.duration;\n },\n timePassed: function () {\n return Math.min(this.duration, new Date() - this.startDate);\n },\n moveTo: function (options) {\n var that = this, movable = that.movable;\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n that.duration = typeof options.duration == 'number' ? options.duration : 300;\n that.tick = that._easeProxy(options.ease);\n that.startDate = new Date();\n that.start();\n },\n _easeProxy: function (ease) {\n var that = this;\n return function () {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n }\n });\n extend(Transition, {\n easeOutExpo: function (t, b, c, d) {\n return t == d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n },\n easeOutBack: function (t, b, c, d, s) {\n s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n });\n fx.Animation = Animation;\n fx.Transition = Transition;\n fx.createEffect = createEffect;\n fx.box = function (element) {\n element = $(element);\n var result = element.offset();\n result.width = kendo._outerWidth(element);\n result.height = kendo._outerHeight(element);\n return result;\n };\n fx.transformOrigin = function (inner, outer) {\n var x = (inner.left - outer.left) * outer.width / (outer.width - inner.width), y = (inner.top - outer.top) * outer.height / (outer.height - inner.height);\n return {\n x: isNaN(x) ? 0 : x,\n y: isNaN(y) ? 0 : y\n };\n };\n fx.fillScale = function (inner, outer) {\n return Math.min(inner.width / outer.width, inner.height / outer.height);\n };\n fx.fitScale = function (inner, outer) {\n return Math.max(inner.width / outer.width, inner.height / outer.height);\n };\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.view', [\n 'kendo.core',\n 'kendo.binder',\n 'kendo.fx'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'view',\n name: 'View',\n category: 'framework',\n description: 'The View class instantiates and handles the events of a certain screen from the application.',\n depends: [\n 'core',\n 'binder',\n 'fx'\n ],\n hidden: false\n };\n (function ($, undefined) {\n var kendo = window.kendo, attr = kendo.attr, ui = kendo.ui, attrValue = kendo.attrValue, directiveSelector = kendo.directiveSelector, Observable = kendo.Observable, Widget = kendo.ui.Widget, roleSelector = kendo.roleSelector, SCRIPT = 'SCRIPT', INIT = 'init', TRANSITION_START = 'transitionStart', TRANSITION_END = 'transitionEnd', SHOW = 'show', HIDE = 'hide', ATTACH = 'attach', DETACH = 'detach', sizzleErrorRegExp = /unrecognized expression/;\n var bodyRegExp = /<body[^>]*>(([\\u000a\\u000d\\u2028\\u2029]|.)*)<\\/body>/i;\n var LOAD_START = 'loadStart';\n var LOAD_COMPLETE = 'loadComplete';\n var SHOW_START = 'showStart';\n var SAME_VIEW_REQUESTED = 'sameViewRequested';\n var VIEW_SHOW = 'viewShow';\n var VIEW_TYPE_DETERMINED = 'viewTypeDetermined';\n var AFTER = 'after';\n var classNames = {\n content: 'k-content',\n view: 'k-view',\n stretchedView: 'k-stretched-view',\n widget: 'k-widget',\n header: 'k-header',\n footer: 'k-footer'\n };\n var View = kendo.ui.Widget.extend({\n init: function (content, options) {\n var that = this;\n options = options || {};\n that.id = kendo.guid();\n Observable.fn.init.call(that);\n this.options = $.extend({}, this.options, options);\n that.content = content;\n if (that.options.renderOnInit) {\n Widget.fn.init.call(that, that._createElement(), options);\n }\n if (that.options.wrapInSections) {\n that._renderSections();\n }\n that.tagName = options.tagName || 'div';\n that.model = options.model;\n that._wrap = options.wrap !== false;\n this._evalTemplate = options.evalTemplate || false;\n that._fragments = {};\n that.bind([\n INIT,\n SHOW,\n HIDE,\n TRANSITION_START,\n TRANSITION_END\n ], options);\n },\n options: {\n name: 'View',\n renderOnInit: false,\n wrapInSections: false,\n detachOnHide: true,\n detachOnDestroy: true\n },\n render: function (container) {\n var that = this, notInitialized = !that.element;\n if (notInitialized) {\n that.element = that._createElement();\n }\n if (container) {\n $(container).append(that.element);\n }\n if (notInitialized) {\n kendo.bind(that.element, that.model);\n that.trigger(INIT);\n }\n if (container) {\n that._eachFragment(ATTACH);\n that.trigger(SHOW);\n }\n return that.element;\n },\n clone: function () {\n return new ViewClone(this);\n },\n triggerBeforeShow: function () {\n return true;\n },\n triggerBeforeHide: function () {\n return true;\n },\n showStart: function () {\n var that = this;\n var element = that.render();\n if (element) {\n element.css('display', '');\n }\n this.trigger(SHOW_START, { view: this });\n },\n showEnd: function () {\n },\n hideEnd: function () {\n this.hide();\n },\n beforeTransition: function (type) {\n this.trigger(TRANSITION_START, { type: type });\n },\n afterTransition: function (type) {\n this.trigger(TRANSITION_END, { type: type });\n },\n hide: function () {\n if (this.options.detachOnHide) {\n this._eachFragment(DETACH);\n $(this.element).detach();\n }\n this.trigger(HIDE);\n },\n destroy: function () {\n var that = this;\n var element = that.element;\n if (element) {\n Widget.fn.destroy.call(that);\n kendo.unbind(element);\n kendo.destroy(element);\n if (that.options.detachOnDestroy) {\n element.remove();\n }\n }\n },\n purge: function () {\n var that = this;\n that.destroy();\n $(that.element).add(that.content).add(that.wrapper).off().remove();\n },\n fragments: function (fragments) {\n $.extend(this._fragments, fragments);\n },\n _eachFragment: function (methodName) {\n for (var placeholder in this._fragments) {\n this._fragments[placeholder][methodName](this, placeholder);\n }\n },\n _createElement: function () {\n var that = this, wrapper = '<' + that.tagName + ' />', element, content;\n try {\n content = $(document.getElementById(that.content) || that.content);\n if (content[0].tagName === SCRIPT) {\n content = content.html();\n }\n } catch (e) {\n if (sizzleErrorRegExp.test(e.message)) {\n content = that.content;\n }\n }\n if (typeof content === 'string') {\n content = content.replace(/^\\s+|\\s+$/g, '');\n if (that._evalTemplate) {\n content = kendo.template(content)(that.model || {});\n }\n element = $(wrapper).append(content);\n if (!that._wrap) {\n element = element.contents();\n }\n } else {\n element = content;\n if (that._evalTemplate) {\n var result = $(kendo.template($('<div />').append(element.clone(true)).html())(that.model || {}));\n if ($.contains(document, element[0])) {\n element.replaceWith(result);\n }\n element = result;\n }\n if (that._wrap) {\n element = element.wrapAll(wrapper).parent();\n }\n }\n return element;\n },\n _renderSections: function () {\n var that = this;\n if (that.options.wrapInSections) {\n that._wrapper();\n that._createContent();\n that._createHeader();\n that._createFooter();\n }\n },\n _wrapper: function () {\n var that = this;\n var content = that.content;\n if (content.is(roleSelector('view'))) {\n that.wrapper = that.content;\n } else {\n that.wrapper = content.wrap('<div data-' + kendo.ns + 'stretch=\"true\" data-' + kendo.ns + 'role=\"view\" data-' + kendo.ns + 'init-widgets=\"false\"></div>').parent();\n }\n var wrapper = that.wrapper;\n wrapper.attr('id', that.id);\n wrapper.addClass(classNames.view);\n wrapper.addClass(classNames.widget);\n wrapper.attr('role', 'view');\n },\n _createContent: function () {\n var that = this;\n var wrapper = $(that.wrapper);\n var contentSelector = roleSelector('content');\n if (!wrapper.children(contentSelector)[0]) {\n var ccontentElements = wrapper.children().filter(function () {\n var child = $(this);\n if (!child.is(roleSelector('header')) && !child.is(roleSelector('footer'))) {\n return child;\n }\n });\n ccontentElements.wrap('<div ' + attr('role') + '=\"content\"></div>');\n }\n this.contentElement = wrapper.children(roleSelector('content'));\n this.contentElement.addClass(classNames.stretchedView).addClass(classNames.content);\n },\n _createHeader: function () {\n var that = this;\n var wrapper = that.wrapper;\n this.header = wrapper.children(roleSelector('header')).addClass(classNames.header);\n },\n _createFooter: function () {\n var that = this;\n var wrapper = that.wrapper;\n this.footer = wrapper.children(roleSelector('footer')).addClass(classNames.footer);\n }\n });\n var ViewClone = kendo.Class.extend({\n init: function (view) {\n $.extend(this, {\n element: view.element.clone(true),\n transition: view.transition,\n id: view.id\n });\n view.element.parent().append(this.element);\n },\n hideEnd: function () {\n this.element.remove();\n },\n beforeTransition: $.noop,\n afterTransition: $.noop\n });\n var Layout = View.extend({\n init: function (content, options) {\n View.fn.init.call(this, content, options);\n this.containers = {};\n },\n container: function (selector) {\n var container = this.containers[selector];\n if (!container) {\n container = this._createContainer(selector);\n this.containers[selector] = container;\n }\n return container;\n },\n showIn: function (selector, view, transition) {\n this.container(selector).show(view, transition);\n },\n _createContainer: function (selector) {\n var root = this.render(), element = root.find(selector), container;\n if (!element.length && root.is(selector)) {\n if (root.is(selector)) {\n element = root;\n } else {\n throw new Error('can\\'t find a container with the specified ' + selector + ' selector');\n }\n }\n container = new ViewContainer(element);\n container.bind('accepted', function (e) {\n e.view.render(element);\n });\n return container;\n }\n });\n var Fragment = View.extend({\n attach: function (view, placeholder) {\n view.element.find(placeholder).replaceWith(this.render());\n },\n detach: function () {\n }\n });\n var transitionRegExp = /^(\\w+)(:(\\w+))?( (\\w+))?$/;\n function parseTransition(transition) {\n if (!transition) {\n return {};\n }\n var matches = transition.match(transitionRegExp) || [];\n return {\n type: matches[1],\n direction: matches[3],\n reverse: matches[5] === 'reverse'\n };\n }\n var ViewContainer = Observable.extend({\n init: function (container) {\n Observable.fn.init.call(this);\n this.container = container;\n this.history = [];\n this.view = null;\n this.running = false;\n },\n after: function () {\n this.running = false;\n this.trigger('complete', { view: this.view });\n this.trigger('after');\n },\n end: function () {\n this.view.showEnd();\n this.previous.hideEnd();\n this.after();\n },\n show: function (view, transition, locationID) {\n if (!view.triggerBeforeShow() || this.view && !this.view.triggerBeforeHide()) {\n this.trigger('after');\n return false;\n }\n locationID = locationID || view.id;\n var that = this, current = view === that.view ? view.clone() : that.view, history = that.history, previousEntry = history[history.length - 2] || {}, back = previousEntry.id === locationID, theTransition = transition || (back ? history[history.length - 1].transition : view.transition), transitionData = parseTransition(theTransition);\n if (that.running) {\n that.effect.stop();\n }\n if (theTransition === 'none') {\n theTransition = null;\n }\n that.trigger('accepted', { view: view });\n that.view = view;\n that.previous = current;\n that.running = true;\n if (!back) {\n history.push({\n id: locationID,\n transition: theTransition\n });\n } else {\n history.pop();\n }\n if (!current) {\n view.showStart();\n view.showEnd();\n that.after();\n return true;\n }\n if (!theTransition || !kendo.effects.enabled) {\n view.showStart();\n that.end();\n } else {\n view.element.addClass('k-fx-hidden');\n view.showStart();\n if (back && !transition) {\n transitionData.reverse = !transitionData.reverse;\n }\n that.effect = kendo.fx(view.element).replace(current.element, transitionData.type).beforeTransition(function () {\n view.beforeTransition('show');\n current.beforeTransition('hide');\n }).afterTransition(function () {\n view.afterTransition('show');\n current.afterTransition('hide');\n }).direction(transitionData.direction).setReverse(transitionData.reverse);\n that.effect.run().then(function () {\n that.end();\n });\n }\n return true;\n },\n destroy: function () {\n var that = this;\n var view = that.view;\n if (view && view.destroy) {\n view.destroy();\n }\n }\n });\n var ViewEngine = Observable.extend({\n init: function (options) {\n var that = this, views, container;\n Observable.fn.init.call(that);\n that.options = options;\n $.extend(that, options);\n that.sandbox = $('<div />');\n container = that.container;\n views = that._hideViews(container);\n that.rootView = views.first();\n that.layouts = {};\n that.viewContainer = new kendo.ViewContainer(that.container);\n that.viewContainer.bind('accepted', function (e) {\n e.view.params = that.params;\n });\n that.viewContainer.bind('complete', function (e) {\n that.trigger(VIEW_SHOW, { view: e.view });\n });\n that.viewContainer.bind(AFTER, function () {\n that.trigger(AFTER);\n });\n this.bind(this.events, options);\n },\n events: [\n SHOW_START,\n AFTER,\n VIEW_SHOW,\n LOAD_START,\n LOAD_COMPLETE,\n SAME_VIEW_REQUESTED,\n VIEW_TYPE_DETERMINED\n ],\n destroy: function () {\n var that = this;\n var viewContainer = that.viewContainer;\n kendo.destroy(that.container);\n for (var id in that.layouts) {\n this.layouts[id].destroy();\n }\n if (viewContainer) {\n viewContainer.destroy();\n }\n },\n view: function () {\n return this.viewContainer.view;\n },\n showView: function (url, transition, params) {\n url = url.replace(new RegExp('^' + this.remoteViewURLPrefix), '');\n if (url === '' && this.remoteViewURLPrefix) {\n url = '/';\n }\n if (url.replace(/^#/, '') === this.url) {\n this.trigger(SAME_VIEW_REQUESTED);\n return false;\n }\n this.trigger(SHOW_START);\n var that = this, element = that._findViewElement(url), view = kendo.widgetInstance(element);\n that.url = url.replace(/^#/, '');\n that.params = params;\n if (view && view.reload) {\n view.purge();\n element = [];\n }\n this.trigger(VIEW_TYPE_DETERMINED, {\n remote: element.length === 0,\n url: url\n });\n if (element[0]) {\n if (!view) {\n view = that._createView(element);\n }\n return that.viewContainer.show(view, transition, url);\n } else {\n return true;\n }\n },\n append: function (html, url) {\n var sandbox = this.sandbox, urlPath = (url || '').split('?')[0], container = this.container, views, view;\n if (bodyRegExp.test(html)) {\n html = RegExp.$1;\n }\n sandbox[0].innerHTML = html;\n container.append(sandbox.children('script, style'));\n views = this._hideViews(sandbox);\n view = views.first();\n if (!view.length) {\n views = view = sandbox.wrapInner('<div data-role=view />').children();\n }\n if (urlPath) {\n view.hide().attr(attr('url'), urlPath);\n }\n container.append(views);\n return this._createView(view);\n },\n _locate: function (selectors) {\n return this.$angular ? directiveSelector(selectors) : roleSelector(selectors);\n },\n _findViewElement: function (url) {\n var element, urlPath = url.split('?')[0];\n if (!urlPath) {\n return this.rootView;\n }\n element = this.container.children('[' + attr('url') + '=\\'' + urlPath + '\\']');\n if (!element[0] && urlPath.indexOf('/') === -1) {\n element = this.container.children(urlPath.charAt(0) === '#' ? urlPath : '#' + urlPath);\n }\n if (!element[0]) {\n element = this._findViewElementById(url);\n }\n return element;\n },\n _findViewElementById: function (id) {\n var element = this.container.children('[id=\\'' + id + '\\']');\n return element;\n },\n _createView: function (element) {\n return this._createSpaView(element);\n },\n _createMobileView: function (element) {\n return kendo.initWidget(element, {\n defaultTransition: this.transition,\n loader: this.loader,\n container: this.container,\n getLayout: this.getLayoutProxy,\n modelScope: this.modelScope,\n reload: attrValue(element, 'reload')\n }, ui.roles);\n },\n _createSpaView: function (element) {\n var viewOptions = (this.options || {}).viewOptions || {};\n return new kendo.View(element, {\n renderOnInit: viewOptions.renderOnInit,\n wrap: viewOptions.wrap || false,\n wrapInSections: viewOptions.wrapInSections,\n detachOnHide: viewOptions.detachOnHide,\n detachOnDestroy: viewOptions.detachOnDestroy\n });\n },\n _hideViews: function (container) {\n return container.children(this._locate('view')).hide();\n }\n });\n kendo.ViewEngine = ViewEngine;\n kendo.ViewContainer = ViewContainer;\n kendo.Fragment = Fragment;\n kendo.Layout = Layout;\n kendo.View = View;\n kendo.ViewClone = ViewClone;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dom', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'dom',\n name: 'Virtual DOM',\n category: 'framework',\n depends: ['core'],\n advanced: true\n };\n (function (kendo) {\n function Node() {\n this.node = null;\n }\n Node.prototype = {\n remove: function () {\n if (this.node.parentNode) {\n this.node.parentNode.removeChild(this.node);\n }\n this.attr = {};\n },\n attr: {},\n text: function () {\n return '';\n }\n };\n function NullNode() {\n }\n NullNode.prototype = {\n nodeName: '#null',\n attr: { style: {} },\n children: [],\n remove: function () {\n }\n };\n var NULL_NODE = new NullNode();\n function Element(nodeName, attr, children) {\n this.nodeName = nodeName;\n this.attr = attr || {};\n this.children = children || [];\n }\n Element.prototype = new Node();\n Element.prototype.appendTo = function (parent) {\n var node = document.createElement(this.nodeName);\n var children = this.children;\n for (var index = 0; index < children.length; index++) {\n children[index].render(node, NULL_NODE);\n }\n parent.appendChild(node);\n return node;\n };\n Element.prototype.render = function (parent, cached) {\n var node;\n if (cached.nodeName !== this.nodeName) {\n cached.remove();\n node = this.appendTo(parent);\n } else {\n node = cached.node;\n var index;\n var children = this.children;\n var length = children.length;\n var cachedChildren = cached.children;\n var cachedLength = cachedChildren.length;\n if (Math.abs(cachedLength - length) > 2) {\n this.render({\n appendChild: function (node) {\n parent.replaceChild(node, cached.node);\n }\n }, NULL_NODE);\n return;\n }\n for (index = 0; index < length; index++) {\n children[index].render(node, cachedChildren[index] || NULL_NODE);\n }\n for (index = length; index < cachedLength; index++) {\n cachedChildren[index].remove();\n }\n }\n this.node = node;\n this.syncAttributes(cached.attr);\n this.removeAttributes(cached.attr);\n };\n Element.prototype.syncAttributes = function (cachedAttr) {\n var attr = this.attr;\n for (var name in attr) {\n var value = attr[name];\n var cachedValue = cachedAttr[name];\n if (name === 'style') {\n this.setStyle(value, cachedValue);\n } else if (value !== cachedValue) {\n this.setAttribute(name, value, cachedValue);\n }\n }\n };\n Element.prototype.setStyle = function (style, cachedValue) {\n var node = this.node;\n var key;\n if (cachedValue) {\n for (key in style) {\n if (style[key] !== cachedValue[key]) {\n node.style[key] = style[key];\n }\n }\n } else {\n for (key in style) {\n node.style[key] = style[key];\n }\n }\n };\n Element.prototype.removeStyle = function (cachedStyle) {\n var style = this.attr.style || {};\n var node = this.node;\n for (var key in cachedStyle) {\n if (style[key] === undefined) {\n node.style[key] = '';\n }\n }\n };\n Element.prototype.removeAttributes = function (cachedAttr) {\n var attr = this.attr;\n for (var name in cachedAttr) {\n if (name === 'style') {\n this.removeStyle(cachedAttr.style);\n } else if (attr[name] === undefined) {\n this.removeAttribute(name);\n }\n }\n };\n Element.prototype.removeAttribute = function (name) {\n var node = this.node;\n if (name === 'style') {\n node.style.cssText = '';\n } else if (name === 'className') {\n node.className = '';\n } else {\n node.removeAttribute(name);\n }\n };\n Element.prototype.setAttribute = function (name, value) {\n var node = this.node;\n if (node[name] !== undefined) {\n node[name] = value;\n } else {\n node.setAttribute(name, value);\n }\n };\n Element.prototype.text = function () {\n var str = '';\n for (var i = 0; i < this.children.length; ++i) {\n str += this.children[i].text();\n }\n return str;\n };\n function TextNode(nodeValue) {\n this.nodeValue = String(nodeValue);\n }\n TextNode.prototype = new Node();\n TextNode.prototype.nodeName = '#text';\n TextNode.prototype.render = function (parent, cached) {\n var node;\n if (cached.nodeName !== this.nodeName) {\n cached.remove();\n node = document.createTextNode(this.nodeValue);\n parent.appendChild(node);\n } else {\n node = cached.node;\n if (this.nodeValue !== cached.nodeValue) {\n if (node.parentNode) {\n node.nodeValue = this.nodeValue;\n }\n }\n }\n this.node = node;\n };\n TextNode.prototype.text = function () {\n return this.nodeValue;\n };\n function HtmlNode(html) {\n this.html = html;\n }\n HtmlNode.prototype = {\n nodeName: '#html',\n attr: {},\n remove: function () {\n for (var index = 0; index < this.nodes.length; index++) {\n var el = this.nodes[index];\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n },\n render: function (parent, cached) {\n if (cached.nodeName !== this.nodeName || cached.html !== this.html) {\n cached.remove();\n var lastChild = parent.lastChild;\n insertHtml(parent, this.html);\n this.nodes = [];\n for (var child = lastChild ? lastChild.nextSibling : parent.firstChild; child; child = child.nextSibling) {\n this.nodes.push(child);\n }\n } else {\n this.nodes = cached.nodes.slice(0);\n }\n }\n };\n var HTML_CONTAINER = document.createElement('div');\n function insertHtml(node, html) {\n HTML_CONTAINER.innerHTML = html;\n while (HTML_CONTAINER.firstChild) {\n node.appendChild(HTML_CONTAINER.firstChild);\n }\n }\n function html(value) {\n return new HtmlNode(value);\n }\n function element(nodeName, attrs, children) {\n return new Element(nodeName, attrs, children);\n }\n function text(value) {\n return new TextNode(value);\n }\n function Tree(root) {\n this.root = root;\n this.children = [];\n }\n Tree.prototype = {\n html: html,\n element: element,\n text: text,\n render: function (children) {\n var cachedChildren = this.children;\n var index;\n var length;\n for (index = 0, length = children.length; index < length; index++) {\n var cached = cachedChildren[index];\n if (!cached) {\n cached = NULL_NODE;\n } else if (!cached.node || !cached.node.parentNode) {\n cached.remove();\n cached = NULL_NODE;\n }\n children[index].render(this.root, cached);\n }\n for (index = length; index < cachedChildren.length; index++) {\n cachedChildren[index].remove();\n }\n this.children = children;\n }\n };\n kendo.dom = {\n html: html,\n text: text,\n element: element,\n Tree: Tree,\n Node: Node\n };\n }(window.kendo));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('ooxml/utils', ['kendo.core'], f);\n}(function () {\n (function () {\n kendo.ooxml = kendo.ooxml || {};\n kendo.ooxml.createZip = function () {\n if (typeof JSZip === 'undefined') {\n throw new Error('JSZip not found. Check http://docs.telerik.com/kendo-ui/framework/excel/introduction#requirements for more details.');\n }\n return new JSZip();\n };\n }());\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('ooxml/kendo-ooxml', [\n 'kendo.core',\n 'ooxml/utils'\n ], f);\n}(function () {\n (function ($) {\n window.kendo.ooxml = window.kendo.ooxml || {};\n var ooxml = kendo.ooxml;\n var map = $.map;\n var createZip = ooxml.createZip;\n var current = {\n toString: function (value) {\n return value;\n }\n };\n var IntlService = kendo.Class.extend({});\n IntlService.register = function (userImplementation) {\n current = userImplementation;\n };\n IntlService.toString = function (value, format) {\n return current.toString(value, format);\n };\n function dateToJulianDays(y, m, d) {\n return (1461 * (y + 4800 + ((m - 13) / 12 | 0)) / 4 | 0) + (367 * (m - 1 - 12 * ((m - 13) / 12 | 0)) / 12 | 0) - (3 * ((y + 4900 + ((m - 13) / 12 | 0)) / 100 | 0) / 4 | 0) + d - 32075;\n }\n var BASE_DATE = dateToJulianDays(1900, 0, -1);\n function packDate(year, month, date) {\n return dateToJulianDays(year, month, date) - BASE_DATE;\n }\n function packTime(hh, mm, ss, ms) {\n return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n }\n function dateToSerial(date) {\n var time = packTime(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n var serial = packDate(date.getFullYear(), date.getMonth(), date.getDate());\n return serial < 0 ? serial - 1 + time : serial + time;\n }\n var MIME_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n var DATA_URL_PREFIX = 'data:' + MIME_TYPE + ';base64,';\n var DATA_URL_OPTIONS = {\n compression: 'DEFLATE',\n type: 'base64'\n };\n var BLOB_OPTIONS = {\n compression: 'DEFLATE',\n type: 'blob'\n };\n var ARRAYBUFFER_OPTIONS = {\n compression: 'DEFLATE',\n type: 'arraybuffer'\n };\n function toDataURI(content) {\n return DATA_URL_PREFIX + content;\n }\n function indexOf(thing, array) {\n return array.indexOf(thing);\n }\n var parseJSON = JSON.parse.bind(JSON);\n function ESC(val) {\n return String(val).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\\\"/g, '"').replace(/\\'/g, ''');\n }\n function repeat(count, func) {\n var str = '';\n for (var i = 0; i < count; ++i) {\n str += func(i);\n }\n return str;\n }\n function foreach(arr, func) {\n var str = '';\n if (arr != null) {\n if (Array.isArray(arr)) {\n for (var i = 0; i < arr.length; ++i) {\n str += func(arr[i], i);\n }\n } else if (typeof arr == 'object') {\n Object.keys(arr).forEach(function (key, i) {\n str += func(arr[key], key, i);\n });\n }\n }\n return str;\n }\n var XMLHEAD = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\r';\n var RELS = XMLHEAD + '\\n <Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\\n <Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\" Target=\"docProps/app.xml\"/>\\n <Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\" Target=\"docProps/core.xml\"/>\\n <Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>\\n </Relationships>';\n var CORE = function (ref) {\n var creator = ref.creator;\n var lastModifiedBy = ref.lastModifiedBy;\n var created = ref.created;\n var modified = ref.modified;\n return XMLHEAD + '\\n <cp:coreProperties xmlns:cp=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\"\\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\"\\n xmlns:dcmitype=\"http://purl.org/dc/dcmitype/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\\n <dc:creator>' + ESC(creator) + '</dc:creator>\\n <cp:lastModifiedBy>' + ESC(lastModifiedBy) + '</cp:lastModifiedBy>\\n <dcterms:created xsi:type=\"dcterms:W3CDTF\">' + ESC(created) + '</dcterms:created>\\n <dcterms:modified xsi:type=\"dcterms:W3CDTF\">' + ESC(modified) + '</dcterms:modified>\\n</cp:coreProperties>';\n };\n var APP = function (ref) {\n var sheets = ref.sheets;\n return XMLHEAD + '\\n<Properties xmlns=\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\" xmlns:vt=\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\">\\n <Application>Microsoft Excel</Application>\\n <DocSecurity>0</DocSecurity>\\n <ScaleCrop>false</ScaleCrop>\\n <HeadingPairs>\\n <vt:vector size=\"2\" baseType=\"variant\">\\n <vt:variant>\\n <vt:lpstr>Worksheets</vt:lpstr>\\n </vt:variant>\\n <vt:variant>\\n <vt:i4>' + sheets.length + '</vt:i4>\\n </vt:variant>\\n </vt:vector>\\n </HeadingPairs>\\n <TitlesOfParts>\\n <vt:vector size=\"' + sheets.length + '\" baseType=\"lpstr\">' + foreach(sheets, function (sheet, i) {\n return sheet.options.title ? '<vt:lpstr>' + ESC(sheet.options.title) + '</vt:lpstr>' : '<vt:lpstr>Sheet' + (i + 1) + '</vt:lpstr>';\n }) + '</vt:vector>\\n </TitlesOfParts>\\n <LinksUpToDate>false</LinksUpToDate>\\n <SharedDoc>false</SharedDoc>\\n <HyperlinksChanged>false</HyperlinksChanged>\\n <AppVersion>14.0300</AppVersion>\\n</Properties>';\n };\n var CONTENT_TYPES = function (ref) {\n var sheetCount = ref.sheetCount;\n var commentFiles = ref.commentFiles;\n var drawingFiles = ref.drawingFiles;\n return XMLHEAD + '\\n<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">\\n <Default Extension=\"png\" ContentType=\"image/png\"/>\\n <Default Extension=\"gif\" ContentType=\"image/gif\"/>\\n <Default Extension=\"jpg\" ContentType=\"image/jpeg\"/>\\n <Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\" />\\n <Default Extension=\"xml\" ContentType=\"application/xml\" />\\n <Default Extension=\"vml\" ContentType=\"application/vnd.openxmlformats-officedocument.vmlDrawing\"/>\\n <Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\" />\\n <Override PartName=\"/xl/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\"/>\\n <Override PartName=\"/xl/sharedStrings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\"/>\\n ' + repeat(sheetCount, function (idx) {\n return '<Override PartName=\"/xl/worksheets/sheet' + (idx + 1) + '.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\" />';\n }) + '\\n ' + foreach(commentFiles, function (filename) {\n return '<Override PartName=\"/xl/' + filename + '\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\"/>';\n }) + '\\n ' + foreach(drawingFiles, function (filename) {\n return '<Override PartName=\"/xl/drawings/' + filename + '\" ContentType=\"application/vnd.openxmlformats-officedocument.drawing+xml\"/>';\n }) + '\\n <Override PartName=\"/docProps/core.xml\" ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\" />\\n <Override PartName=\"/docProps/app.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.extended-properties+xml\" />\\n</Types>';\n };\n var WORKBOOK = function (ref) {\n var sheets = ref.sheets;\n var filterNames = ref.filterNames;\n var userNames = ref.userNames;\n return XMLHEAD + '\\n<workbook xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">\\n <fileVersion appName=\"xl\" lastEdited=\"5\" lowestEdited=\"5\" rupBuild=\"9303\" />\\n <workbookPr defaultThemeVersion=\"124226\" />\\n <bookViews>\\n <workbookView xWindow=\"240\" yWindow=\"45\" windowWidth=\"18195\" windowHeight=\"7995\" />\\n </bookViews>\\n <sheets>\\n ' + foreach(sheets, function (ref, i) {\n var options = ref.options;\n var name = options.name || options.title || 'Sheet' + (i + 1);\n return '<sheet name=\"' + ESC(name) + '\" sheetId=\"' + (i + 1) + '\" r:id=\"rId' + (i + 1) + '\" />';\n }) + '\\n </sheets>\\n ' + (filterNames.length || userNames.length ? '\\n <definedNames>\\n ' + foreach(filterNames, function (f) {\n return '\\n <definedName name=\"_xlnm._FilterDatabase\" hidden=\"1\" localSheetId=\"' + f.localSheetId + '\">' + ESC(f.name) + '!' + ESC(f.from) + ':' + ESC(f.to) + '</definedName>';\n }) + '\\n ' + foreach(userNames, function (f) {\n return '\\n <definedName name=\"' + f.name + '\" hidden=\"' + (f.hidden ? 1 : 0) + '\" ' + (f.localSheetId != null ? 'localSheetId=\"' + f.localSheetId + '\"' : '') + '>' + ESC(f.value) + '</definedName>';\n }) + '\\n </definedNames>' : '') + '\\n <calcPr fullCalcOnLoad=\"1\" calcId=\"145621\" />\\n</workbook>';\n };\n var WORKSHEET = function (ref) {\n var frozenColumns = ref.frozenColumns;\n var frozenRows = ref.frozenRows;\n var columns = ref.columns;\n var defaults = ref.defaults;\n var data = ref.data;\n var index = ref.index;\n var mergeCells = ref.mergeCells;\n var autoFilter = ref.autoFilter;\n var filter = ref.filter;\n var showGridLines = ref.showGridLines;\n var hyperlinks = ref.hyperlinks;\n var validations = ref.validations;\n var defaultCellStyleId = ref.defaultCellStyleId;\n var rtl = ref.rtl;\n var legacyDrawing = ref.legacyDrawing;\n var drawing = ref.drawing;\n var lastRow = ref.lastRow;\n return XMLHEAD + '\\n<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:x14ac=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\" mc:Ignorable=\"x14ac\">\\n <dimension ref=\"A1:A' + lastRow + '\" />\\n\\n <sheetViews>\\n <sheetView ' + (rtl ? 'rightToLeft=\"1\"' : '') + ' ' + (index === 0 ? 'tabSelected=\"1\"' : '') + ' workbookViewId=\"0\" ' + (showGridLines === false ? 'showGridLines=\"0\"' : '') + '>\\n ' + (frozenRows || frozenColumns ? '\\n <pane state=\"frozen\"\\n ' + (frozenColumns ? 'xSplit=\"' + frozenColumns + '\"' : '') + '\\n ' + (frozenRows ? 'ySplit=\"' + frozenRows + '\"' : '') + '\\n topLeftCell=\"' + (String.fromCharCode(65 + (frozenColumns || 0)) + ((frozenRows || 0) + 1)) + '\"\\n />' : '') + '\\n </sheetView>\\n </sheetViews>\\n\\n <sheetFormatPr x14ac:dyDescent=\"0.25\" customHeight=\"1\" defaultRowHeight=\"' + (defaults.rowHeight ? defaults.rowHeight * 0.75 : 15) + '\"\\n ' + (defaults.columnWidth ? 'defaultColWidth=\"' + toWidth(defaults.columnWidth) + '\"' : '') + ' />\\n\\n ' + (defaultCellStyleId != null || columns && columns.length > 0 ? '\\n <cols>\\n ' + (!columns || !columns.length ? '\\n <col min=\"1\" max=\"16384\" style=\"' + defaultCellStyleId + '\"\\n ' + (defaults.columnWidth ? 'width=\"' + toWidth(defaults.columnWidth) + '\"' : '') + ' /> ' : '') + '\\n ' + foreach(columns, function (column, ci) {\n var columnIndex = typeof column.index === 'number' ? column.index + 1 : ci + 1;\n if (column.width === 0) {\n return '<col ' + (defaultCellStyleId != null ? 'style=\"' + defaultCellStyleId + '\"' : '') + '\\n min=\"' + columnIndex + '\" max=\"' + columnIndex + '\" hidden=\"1\" customWidth=\"1\" />';\n }\n return '<col ' + (defaultCellStyleId != null ? 'style=\"' + defaultCellStyleId + '\"' : '') + '\\n min=\"' + columnIndex + '\" max=\"' + columnIndex + '\" customWidth=\"1\"\\n ' + (column.autoWidth ? 'width=\"' + (column.width * 7 + 5) / 7 * 256 / 256 + '\" bestFit=\"1\"' : 'width=\"' + toWidth(column.width) + '\"') + ' />';\n }) + '\\n </cols>' : '') + '\\n\\n <sheetData>\\n ' + foreach(data, function (row, ri) {\n var rowIndex = typeof row.index === 'number' ? row.index + 1 : ri + 1;\n return '\\n <row r=\"' + rowIndex + '\" x14ac:dyDescent=\"0.25\"\\n ' + (row.level ? 'outlineLevel=\"' + row.level + '\"' : '') + '\\n ' + (row.height === 0 ? 'hidden=\"1\"' : row.height ? 'ht=\"' + toHeight(row.height) + '\" customHeight=\"1\"' : '') + '>\\n ' + foreach(row.data, function (cell) {\n return '\\n <c r=\"' + cell.ref + '\" ' + (cell.style ? 's=\"' + cell.style + '\"' : '') + ' ' + (cell.type ? 't=\"' + cell.type + '\"' : '') + '>\\n ' + (cell.formula != null ? writeFormula(cell.formula) : '') + '\\n ' + (cell.value != null ? '<v>' + ESC(cell.value) + '</v>' : '') + '\\n </c>';\n }) + '\\n </row>\\n ';\n }) + '\\n </sheetData>\\n\\n ' + (autoFilter ? '<autoFilter ref=\"' + autoFilter.from + ':' + autoFilter.to + '\"/>' : filter ? spreadsheetFilters(filter) : '') + '\\n\\n ' + (mergeCells.length ? '\\n <mergeCells count=\"' + mergeCells.length + '\">\\n ' + foreach(mergeCells, function (ref) {\n return '<mergeCell ref=\"' + ref + '\"/>';\n }) + '\\n </mergeCells>' : '') + '\\n\\n ' + (validations.length ? '\\n <dataValidations>\\n ' + foreach(validations, function (val) {\n return '\\n <dataValidation sqref=\"' + val.sqref.join(' ') + '\"\\n showErrorMessage=\"' + val.showErrorMessage + '\"\\n type=\"' + ESC(val.type) + '\"\\n ' + (val.type !== 'list' ? 'operator=\"' + ESC(val.operator) + '\"' : '') + '\\n allowBlank=\"' + val.allowBlank + '\"\\n showDropDown=\"' + val.showDropDown + '\"\\n ' + (val.error ? 'error=\"' + ESC(val.error) + '\"' : '') + '\\n ' + (val.errorTitle ? 'errorTitle=\"' + ESC(val.errorTitle) + '\"' : '') + '>\\n ' + (val.formula1 ? '<formula1>' + ESC(val.formula1) + '</formula1>' : '') + '\\n ' + (val.formula2 ? '<formula2>' + ESC(val.formula2) + '</formula2>' : '') + '\\n </dataValidation>';\n }) + '\\n </dataValidations>' : '') + '\\n\\n ' + (hyperlinks.length ? '\\n <hyperlinks>\\n ' + foreach(hyperlinks, function (link) {\n return '\\n <hyperlink ref=\"' + link.ref + '\" r:id=\"' + link.rId + '\"/>';\n }) + '\\n </hyperlinks>' : '') + '\\n\\n <pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" bottom=\"0.75\" header=\"0.3\" footer=\"0.3\" />\\n ' + (legacyDrawing ? '<legacyDrawing r:id=\"' + legacyDrawing + '\"/>' : '') + '\\n ' + (drawing ? '<drawing r:id=\"' + drawing + '\"/>' : '') + '\\n</worksheet>';\n };\n var WORKBOOK_RELS = function (ref) {\n var count = ref.count;\n return XMLHEAD + '\\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\\n ' + repeat(count, function (idx) {\n return '\\n <Relationship Id=\"rId' + (idx + 1) + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet' + (idx + 1) + '.xml\" />';\n }) + '\\n <Relationship Id=\"rId' + (count + 1) + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\" />\\n <Relationship Id=\"rId' + (count + 2) + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\" Target=\"sharedStrings.xml\" />\\n</Relationships>';\n };\n var WORKSHEET_RELS = function (ref) {\n var hyperlinks = ref.hyperlinks;\n var comments = ref.comments;\n var sheetIndex = ref.sheetIndex;\n var drawings = ref.drawings;\n return XMLHEAD + '\\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\\n ' + foreach(hyperlinks, function (link) {\n return '\\n <Relationship Id=\"' + link.rId + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\" Target=\"' + ESC(link.target) + '\" TargetMode=\"External\" />';\n }) + '\\n ' + (!comments.length ? '' : '\\n <Relationship Id=\"comment' + sheetIndex + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\" Target=\"../comments' + sheetIndex + '.xml\"/>\\n <Relationship Id=\"vml' + sheetIndex + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\" Target=\"../drawings/vmlDrawing' + sheetIndex + '.vml\"/>') + '\\n ' + (!drawings.length ? '' : '\\n <Relationship Id=\"drw' + sheetIndex + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\" Target=\"../drawings/drawing' + sheetIndex + '.xml\"/>') + '\\n</Relationships>';\n };\n var COMMENTS_XML = function (ref) {\n var comments = ref.comments;\n return XMLHEAD + '\\n<comments xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">\\n <authors>\\n <author></author>\\n </authors>\\n <commentList>\\n ' + foreach(comments, function (comment) {\n return '\\n <comment ref=\"' + comment.ref + '\" authorId=\"0\">\\n <text>\\n <r>\\n <rPr>\\n <sz val=\"8\"/>\\n <color indexed=\"81\"/>\\n <rFont val=\"Tahoma\"/>\\n <charset val=\"1\"/>\\n </rPr>\\n <t>' + ESC(comment.text) + '</t>\\n </r>\\n </text>\\n </comment>';\n }) + '\\n </commentList>\\n</comments>';\n };\n var LEGACY_DRAWING = function (ref) {\n var comments = ref.comments;\n return '<xml xmlns:v=\"urn:schemas-microsoft-com:vml\"\\n xmlns:o=\"urn:schemas-microsoft-com:office:office\"\\n xmlns:x=\"urn:schemas-microsoft-com:office:excel\">\\n <v:shapetype id=\"_x0000_t202\" path=\"m,l,21600r21600,l21600,xe\"></v:shapetype>\\n ' + foreach(comments, function (comment) {\n return '\\n <v:shape type=\"#_x0000_t202\" style=\"visibility: hidden\" fillcolor=\"#ffffe1\" o:insetmode=\"auto\">\\n <v:shadow on=\"t\" color=\"black\" obscured=\"t\"/>\\n <x:ClientData ObjectType=\"Note\">\\n <x:MoveWithCells/>\\n <x:SizeWithCells/>\\n <x:Anchor>' + comment.anchor + '</x:Anchor>\\n <x:AutoFill>False</x:AutoFill>\\n <x:Row>' + comment.row + '</x:Row>\\n <x:Column>' + comment.col + '</x:Column>\\n </x:ClientData>\\n </v:shape>';\n }) + '\\n</xml>';\n };\n var DRAWINGS_XML = function (drawings) {\n return XMLHEAD + '\\n<xdr:wsDr xmlns:xdr=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\"\\n xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"\\n xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">\\n ' + foreach(drawings, function (drawing, index) {\n return '\\n <xdr:oneCellAnchor editAs=\"oneCell\">\\n <xdr:from>\\n <xdr:col>' + drawing.col + '</xdr:col>\\n <xdr:colOff>' + drawing.colOffset + '</xdr:colOff>\\n <xdr:row>' + drawing.row + '</xdr:row>\\n <xdr:rowOff>' + drawing.rowOffset + '</xdr:rowOff>\\n </xdr:from>\\n <xdr:ext cx=\"' + drawing.width + '\" cy=\"' + drawing.height + '\" />\\n <xdr:pic>\\n <xdr:nvPicPr>\\n <xdr:cNvPr id=\"' + (index + 1) + '\" name=\"Picture ' + (index + 1) + '\"/>\\n <xdr:cNvPicPr/>\\n </xdr:nvPicPr>\\n <xdr:blipFill>\\n <a:blip r:embed=\"' + drawing.imageId + '\"/>\\n <a:stretch>\\n <a:fillRect/>\\n </a:stretch>\\n </xdr:blipFill>\\n <xdr:spPr>\\n <a:prstGeom prst=\"rect\">\\n <a:avLst/>\\n </a:prstGeom>\\n </xdr:spPr>\\n </xdr:pic>\\n <xdr:clientData/>\\n </xdr:oneCellAnchor>';\n }) + '\\n</xdr:wsDr>';\n };\n var DRAWINGS_RELS_XML = function (rels) {\n return XMLHEAD + '\\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\\n ' + foreach(rels, function (rel) {\n return '\\n <Relationship Id=\"' + rel.rId + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\" Target=\"' + rel.target + '\"/>';\n }) + '\\n</Relationships>';\n };\n var SHARED_STRINGS = function (ref) {\n var count = ref.count;\n var uniqueCount = ref.uniqueCount;\n var indexes = ref.indexes;\n return XMLHEAD + '\\n<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"' + count + '\" uniqueCount=\"' + uniqueCount + '\">\\n ' + foreach(Object.keys(indexes), function (index) {\n return '\\n <si><t xml:space=\"preserve\">' + ESC(index.substring(1)) + '</t></si>';\n }) + '\\n</sst>';\n };\n var STYLES = function (ref) {\n var formats = ref.formats;\n var fonts = ref.fonts;\n var fills = ref.fills;\n var borders = ref.borders;\n var styles = ref.styles;\n return XMLHEAD + '\\n<styleSheet\\n xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\\n xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\\n mc:Ignorable=\"x14ac\"\\n xmlns:x14ac=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\">\\n <numFmts count=\"' + formats.length + '\">\\n ' + foreach(formats, function (format, fi) {\n return '\\n <numFmt formatCode=\"' + ESC(format.format) + '\" numFmtId=\"' + (165 + fi) + '\" />';\n }) + '\\n </numFmts>\\n <fonts count=\"' + (fonts.length + 1) + '\" x14ac:knownFonts=\"1\">\\n <font>\\n <sz val=\"11\" />\\n <color theme=\"1\" />\\n <name val=\"Calibri\" />\\n <family val=\"2\" />\\n <scheme val=\"minor\" />\\n </font>\\n ' + foreach(fonts, function (font) {\n return '\\n <font>\\n <sz val=\"' + (font.fontSize || 11) + '\" />\\n ' + (font.bold ? '<b/>' : '') + '\\n ' + (font.italic ? '<i/>' : '') + '\\n ' + (font.underline ? '<u/>' : '') + '\\n ' + (font.color ? '<color rgb=\"' + ESC(font.color) + '\" />' : '<color theme=\"1\" />') + '\\n ' + (font.fontFamily ? '\\n <name val=\"' + ESC(font.fontFamily) + '\" />\\n <family val=\"2\" />\\n ' : '\\n <name val=\"Calibri\" />\\n <family val=\"2\" />\\n <scheme val=\"minor\" />\\n ') + '\\n </font>';\n }) + '\\n </fonts>\\n <fills count=\"' + (fills.length + 2) + '\">\\n <fill><patternFill patternType=\"none\"/></fill>\\n <fill><patternFill patternType=\"gray125\"/></fill>\\n ' + foreach(fills, function (fill) {\n return '\\n ' + (fill.background ? '\\n <fill>\\n <patternFill patternType=\"solid\">\\n <fgColor rgb=\"' + ESC(fill.background) + '\"/>\\n </patternFill>\\n </fill>\\n ' : '');\n }) + '\\n </fills>\\n <borders count=\"' + (borders.length + 1) + '\">\\n <border><left/><right/><top/><bottom/><diagonal/></border>\\n ' + foreach(borders, borderTemplate) + '\\n </borders>\\n <cellStyleXfs count=\"1\">\\n <xf borderId=\"0\" fillId=\"0\" fontId=\"0\" />\\n </cellStyleXfs>\\n <cellXfs count=\"' + (styles.length + 1) + '\">\\n <xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\" xfId=\"0\" />\\n ' + foreach(styles, function (style) {\n return '\\n <xf xfId=\"0\"\\n ' + (style.fontId ? 'fontId=\"' + style.fontId + '\" applyFont=\"1\"' : '') + '\\n ' + (style.fillId ? 'fillId=\"' + style.fillId + '\" applyFill=\"1\"' : '') + '\\n ' + (style.numFmtId ? 'numFmtId=\"' + style.numFmtId + '\" applyNumberFormat=\"1\"' : '') + '\\n ' + (style.textAlign || style.verticalAlign || style.wrap ? 'applyAlignment=\"1\"' : '') + '\\n ' + (style.borderId ? 'borderId=\"' + style.borderId + '\" applyBorder=\"1\"' : '') + '>\\n ' + (style.textAlign || style.verticalAlign || style.wrap ? '\\n <alignment\\n ' + (style.textAlign ? 'horizontal=\"' + ESC(style.textAlign) + '\"' : '') + '\\n ' + (style.verticalAlign ? 'vertical=\"' + ESC(style.verticalAlign) + '\"' : '') + '\\n ' + (style.indent ? 'indent=\"' + ESC(style.indent) + '\"' : '') + '\\n ' + (style.wrap ? 'wrapText=\"1\"' : '') + ' />\\n ' : '') + '\\n </xf>\\n ';\n }) + '\\n </cellXfs>\\n <cellStyles count=\"1\">\\n <cellStyle name=\"Normal\" xfId=\"0\" builtinId=\"0\"/>\\n </cellStyles>\\n <dxfs count=\"0\" />\\n <tableStyles count=\"0\" defaultTableStyle=\"TableStyleMedium2\" defaultPivotStyle=\"PivotStyleMedium9\" />\\n</styleSheet>';\n };\n function writeFormula(formula) {\n if (typeof formula == 'string') {\n return '<f>' + ESC(formula) + '</f>';\n }\n return '<f t=\"array\" ref=\"' + formula.ref + '\">' + ESC(formula.src) + '</f>';\n }\n function numChar(colIndex) {\n var letter = Math.floor(colIndex / 26) - 1;\n return (letter >= 0 ? numChar(letter) : '') + String.fromCharCode(65 + colIndex % 26);\n }\n function ref(rowIndex, colIndex) {\n return numChar(colIndex) + (rowIndex + 1);\n }\n function $ref(rowIndex, colIndex) {\n return '$' + numChar(colIndex) + '$' + (rowIndex + 1);\n }\n function filterRowIndex(options) {\n var frozenRows = options.frozenRows || (options.freezePane || {}).rowSplit || 1;\n return frozenRows - 1;\n }\n function toWidth(px) {\n var maximumDigitWidth = 7;\n return px / maximumDigitWidth - Math.floor(128 / maximumDigitWidth) / 256;\n }\n function toHeight(px) {\n return px * 0.75;\n }\n function stripFunnyChars(value) {\n return String(value).replace(/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F]/g, '').replace(/\\r?\\n/g, '\\r\\n');\n }\n var Worksheet = kendo.Class.extend({\n init: function (options, sharedStrings, styles, borders) {\n this.options = options;\n this._strings = sharedStrings;\n this._styles = styles;\n this._borders = borders;\n this._validations = {};\n this._comments = [];\n this._drawings = options.drawings || [];\n this._hyperlinks = (this.options.hyperlinks || []).map(function (link, i) {\n return $.extend({}, link, { rId: 'link' + i });\n });\n },\n relsToXML: function () {\n var hyperlinks = this._hyperlinks;\n var comments = this._comments;\n var drawings = this._drawings;\n if (hyperlinks.length || comments.length || drawings.length) {\n return WORKSHEET_RELS({\n hyperlinks: hyperlinks,\n comments: comments,\n sheetIndex: this.options.sheetIndex,\n drawings: drawings\n });\n }\n },\n toXML: function (index) {\n var this$1 = this;\n var mergeCells = this.options.mergedCells || [];\n var rows = this.options.rows || [];\n var data = inflate(rows, mergeCells);\n this._readCells(data);\n var autoFilter = this.options.filter;\n var filter;\n if (autoFilter && typeof autoFilter.from === 'number' && typeof autoFilter.to === 'number') {\n autoFilter = {\n from: ref(filterRowIndex(this.options), autoFilter.from),\n to: ref(filterRowIndex(this.options), autoFilter.to)\n };\n } else if (autoFilter && autoFilter.ref && autoFilter.columns) {\n filter = autoFilter;\n autoFilter = null;\n }\n var validations = [];\n for (var i in this._validations) {\n if (Object.prototype.hasOwnProperty.call(this$1._validations, i)) {\n validations.push(this$1._validations[i]);\n }\n }\n var defaultCellStyleId = null;\n if (this.options.defaultCellStyle) {\n defaultCellStyleId = this._lookupStyle(this.options.defaultCellStyle);\n }\n var freezePane = this.options.freezePane || {};\n var defaults = this.options.defaults || {};\n var lastRow = this.options.rows ? this._getLastRow() : 1;\n return WORKSHEET({\n frozenColumns: this.options.frozenColumns || freezePane.colSplit,\n frozenRows: this.options.frozenRows || freezePane.rowSplit,\n columns: this.options.columns,\n defaults: defaults,\n data: data,\n index: index,\n mergeCells: mergeCells,\n autoFilter: autoFilter,\n filter: filter,\n showGridLines: this.options.showGridLines,\n hyperlinks: this._hyperlinks,\n validations: validations,\n defaultCellStyleId: defaultCellStyleId,\n rtl: this.options.rtl !== undefined ? this.options.rtl : defaults.rtl,\n legacyDrawing: this._comments.length ? 'vml' + this.options.sheetIndex : null,\n drawing: this._drawings.length ? 'drw' + this.options.sheetIndex : null,\n lastRow: lastRow\n });\n },\n commentsXML: function () {\n if (this._comments.length) {\n return COMMENTS_XML({ comments: this._comments });\n }\n },\n drawingsXML: function (images) {\n if (this._drawings.length) {\n var rels = {};\n var main = this._drawings.map(function (drw) {\n var ref = parseRef(drw.topLeftCell);\n var img = rels[drw.image];\n if (!img) {\n img = rels[drw.image] = {\n rId: 'img' + drw.image,\n target: images[drw.image].target\n };\n }\n return {\n col: ref.col,\n colOffset: pixelsToExcel(drw.offsetX),\n row: ref.row,\n rowOffset: pixelsToExcel(drw.offsetY),\n width: pixelsToExcel(drw.width),\n height: pixelsToExcel(drw.height),\n imageId: img.rId\n };\n });\n return {\n main: DRAWINGS_XML(main),\n rels: DRAWINGS_RELS_XML(rels)\n };\n }\n },\n legacyDrawing: function () {\n if (this._comments.length) {\n return LEGACY_DRAWING({ comments: this._comments });\n }\n },\n _lookupString: function (value) {\n var key = '$' + value;\n var index = this._strings.indexes[key];\n var result;\n if (index !== undefined) {\n result = index;\n } else {\n result = this._strings.indexes[key] = this._strings.uniqueCount;\n this._strings.uniqueCount++;\n }\n this._strings.count++;\n return result;\n },\n _lookupStyle: function (style) {\n var json = JSON.stringify(style);\n if (json === '{}') {\n return 0;\n }\n var index = indexOf(json, this._styles);\n if (index < 0) {\n index = this._styles.push(json) - 1;\n }\n return index + 1;\n },\n _lookupBorder: function (border) {\n var json = JSON.stringify(border);\n if (json === '{}') {\n return;\n }\n var index = indexOf(json, this._borders);\n if (index < 0) {\n index = this._borders.push(json) - 1;\n }\n return index + 1;\n },\n _readCells: function (rowData) {\n var this$1 = this;\n for (var i = 0; i < rowData.length; i++) {\n var row = rowData[i];\n var cells = row.cells;\n row.data = [];\n for (var j = 0; j < cells.length; j++) {\n var cellData = this$1._cell(cells[j], row.index, j);\n if (cellData) {\n row.data.push(cellData);\n }\n }\n }\n },\n _cell: function (data, rowIndex, cellIndex) {\n if (!data || data === EMPTY_CELL) {\n return null;\n }\n var value = data.value;\n var border = {};\n if (data.borderLeft) {\n border.left = data.borderLeft;\n }\n if (data.borderRight) {\n border.right = data.borderRight;\n }\n if (data.borderTop) {\n border.top = data.borderTop;\n }\n if (data.borderBottom) {\n border.bottom = data.borderBottom;\n }\n border = this._lookupBorder(border);\n var defStyle = this.options.defaultCellStyle || {};\n var style = { borderId: border };\n (function (add) {\n add('color');\n add('background');\n add('bold');\n add('italic');\n add('underline');\n if (!add('fontFamily')) {\n add('fontName', 'fontFamily');\n }\n add('fontSize');\n add('format');\n if (!add('textAlign')) {\n add('hAlign', 'textAlign');\n }\n if (!add('verticalAlign')) {\n add('vAlign', 'verticalAlign');\n }\n add('wrap');\n add('indent');\n }(function (prop, target) {\n var val = data[prop];\n if (val === undefined) {\n val = defStyle[prop];\n }\n if (val !== undefined) {\n style[target || prop] = val;\n return true;\n }\n }));\n var columns = this.options.columns || [];\n var column = columns[cellIndex];\n var type = typeof value;\n if (column && column.autoWidth) {\n var displayValue = value;\n if (type === 'number') {\n displayValue = IntlService.toString(value, data.format);\n }\n column.width = Math.max(column.width || 0, String(displayValue).length);\n }\n if (type === 'string') {\n value = stripFunnyChars(value);\n value = this._lookupString(value);\n type = 's';\n } else if (type === 'number') {\n type = 'n';\n } else if (type === 'boolean') {\n type = 'b';\n value = Number(value);\n } else if (value && value.getTime) {\n type = null;\n value = dateToSerial(value);\n if (!style.format) {\n style.format = 'mm-dd-yy';\n }\n } else {\n type = null;\n value = null;\n }\n style = this._lookupStyle(style);\n var cellName = ref(rowIndex, cellIndex);\n if (data.validation) {\n this._addValidation(data.validation, cellName);\n }\n if (data.comment) {\n var anchor = [\n cellIndex + 1,\n 15,\n rowIndex,\n 10,\n cellIndex + 3,\n 15,\n rowIndex + 3,\n 4\n ];\n this._comments.push({\n ref: cellName,\n text: data.comment,\n row: rowIndex,\n col: cellIndex,\n anchor: anchor.join(', ')\n });\n }\n return {\n value: value,\n formula: data.formula,\n type: type,\n style: style,\n ref: cellName\n };\n },\n _addValidation: function (v, ref) {\n var tmp = {\n showErrorMessage: v.type === 'reject' ? 1 : 0,\n formula1: v.from,\n formula2: v.to,\n type: MAP_EXCEL_TYPE[v.dataType] || v.dataType,\n operator: MAP_EXCEL_OPERATOR[v.comparerType] || v.comparerType,\n allowBlank: v.allowNulls ? 1 : 0,\n showDropDown: v.showButton ? 0 : 1,\n error: v.messageTemplate,\n errorTitle: v.titleTemplate\n };\n var json = JSON.stringify(tmp);\n if (!this._validations[json]) {\n this._validations[json] = tmp;\n tmp.sqref = [];\n }\n this._validations[json].sqref.push(ref);\n },\n _getLastRow: function () {\n var rows = this.options.rows;\n var lastRow = rows.length;\n rows.forEach(function (row) {\n if (row.index && row.index >= lastRow) {\n lastRow = row.index + 1;\n }\n });\n return lastRow;\n }\n });\n var MAP_EXCEL_OPERATOR = {\n greaterThanOrEqualTo: 'greaterThanOrEqual',\n lessThanOrEqualTo: 'lessThanOrEqual'\n };\n var MAP_EXCEL_TYPE = { number: 'decimal' };\n var defaultFormats = {\n 'General': 0,\n '0': 1,\n '0.00': 2,\n '#,##0': 3,\n '#,##0.00': 4,\n '0%': 9,\n '0.00%': 10,\n '0.00E+00': 11,\n '# ?/?': 12,\n '# ??/??': 13,\n 'mm-dd-yy': 14,\n 'd-mmm-yy': 15,\n 'd-mmm': 16,\n 'mmm-yy': 17,\n 'h:mm AM/PM': 18,\n 'h:mm:ss AM/PM': 19,\n 'h:mm': 20,\n 'h:mm:ss': 21,\n 'm/d/yy h:mm': 22,\n '#,##0 ;(#,##0)': 37,\n '#,##0 ;[Red](#,##0)': 38,\n '#,##0.00;(#,##0.00)': 39,\n '#,##0.00;[Red](#,##0.00)': 40,\n 'mm:ss': 45,\n '[h]:mm:ss': 46,\n 'mmss.0': 47,\n '##0.0E+0': 48,\n '@': 49,\n '[$-404]e/m/d': 27,\n 'm/d/yy': 30,\n 't0': 59,\n 't0.00': 60,\n 't#,##0': 61,\n 't#,##0.00': 62,\n 't0%': 67,\n 't0.00%': 68,\n 't# ?/?': 69,\n 't# ??/??': 70\n };\n function convertColor(value) {\n var color = value;\n if (color.length < 6) {\n color = color.replace(/(\\w)/g, function ($0, $1) {\n return $1 + $1;\n });\n }\n color = color.substring(1).toUpperCase();\n if (color.length < 8) {\n color = 'FF' + color;\n }\n return color;\n }\n var Workbook = kendo.Class.extend({\n init: function (options) {\n var this$1 = this;\n this.options = options || {};\n this._strings = {\n indexes: {},\n count: 0,\n uniqueCount: 0\n };\n this._styles = [];\n this._borders = [];\n this._images = this.options.images;\n this._imgId = 0;\n this._sheets = map(this.options.sheets || [], function (options, i) {\n options.defaults = this$1.options;\n options.sheetIndex = i + 1;\n return new Worksheet(options, this$1._strings, this$1._styles, this$1._borders);\n });\n },\n imageFilename: function (mimeType) {\n var id = ++this._imgId;\n switch (mimeType) {\n case 'image/jpg':\n case 'image/jpeg':\n return 'image' + id + '.jpg';\n case 'image/png':\n return 'image' + id + '.png';\n case 'image/gif':\n return 'image' + id + '.gif';\n default:\n return 'image' + id + '.bin';\n }\n },\n toZIP: function () {\n var this$1 = this;\n var zip = createZip();\n var docProps = zip.folder('docProps');\n docProps.file('core.xml', CORE({\n creator: this.options.creator || 'Kendo UI',\n lastModifiedBy: this.options.creator || 'Kendo UI',\n created: this.options.date || new Date().toJSON(),\n modified: this.options.date || new Date().toJSON()\n }));\n var sheetCount = this._sheets.length;\n docProps.file('app.xml', APP({ sheets: this._sheets }));\n var rels = zip.folder('_rels');\n rels.file('.rels', RELS);\n var xl = zip.folder('xl');\n var xlRels = xl.folder('_rels');\n xlRels.file('workbook.xml.rels', WORKBOOK_RELS({ count: sheetCount }));\n if (this._images) {\n var media = xl.folder('media');\n Object.keys(this._images).forEach(function (id) {\n var img = this$1._images[id];\n var filename = this$1.imageFilename(img.type);\n media.file(filename, img.data);\n img.target = '../media/' + filename;\n });\n }\n var sheetIds = {};\n xl.file('workbook.xml', WORKBOOK({\n sheets: this._sheets,\n filterNames: map(this._sheets, function (sheet, index) {\n var options = sheet.options;\n var sheetName = options.name || options.title || 'Sheet' + (index + 1);\n sheetIds[sheetName.toLowerCase()] = index;\n var filter = options.filter;\n if (filter) {\n if (filter.ref) {\n var a = filter.ref.split(':');\n var from = parseRef(a[0]);\n var to = parseRef(a[1]);\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(from.row, from.col),\n to: $ref(to.row, to.col)\n };\n } else if (typeof filter.from !== 'undefined' && typeof filter.to !== 'undefined') {\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(filterRowIndex(options), filter.from),\n to: $ref(filterRowIndex(options), filter.to)\n };\n }\n }\n }),\n userNames: map(this.options.names || [], function (def) {\n return {\n name: def.localName,\n localSheetId: def.sheet ? sheetIds[def.sheet.toLowerCase()] : null,\n value: def.value,\n hidden: def.hidden\n };\n })\n }));\n var worksheets = xl.folder('worksheets');\n var drawings = xl.folder('drawings');\n var drawingsRels = drawings.folder('_rels');\n var sheetRels = worksheets.folder('_rels');\n var commentFiles = [];\n var drawingFiles = [];\n for (var idx = 0; idx < sheetCount; idx++) {\n var sheet = this$1._sheets[idx];\n var sheetName = 'sheet' + (idx + 1) + '.xml';\n var sheetXML = sheet.toXML(idx);\n var relsXML = sheet.relsToXML();\n var commentsXML = sheet.commentsXML();\n var legacyDrawing = sheet.legacyDrawing();\n var drawingsXML = sheet.drawingsXML(this$1._images);\n if (relsXML) {\n sheetRels.file(sheetName + '.rels', relsXML);\n }\n if (commentsXML) {\n var name = 'comments' + sheet.options.sheetIndex + '.xml';\n xl.file(name, commentsXML);\n commentFiles.push(name);\n }\n if (legacyDrawing) {\n drawings.file('vmlDrawing' + sheet.options.sheetIndex + '.vml', legacyDrawing);\n }\n if (drawingsXML) {\n var name$1 = 'drawing' + sheet.options.sheetIndex + '.xml';\n drawings.file(name$1, drawingsXML.main);\n drawingsRels.file(name$1 + '.rels', drawingsXML.rels);\n drawingFiles.push(name$1);\n }\n worksheets.file(sheetName, sheetXML);\n }\n var borders = map(this._borders, parseJSON);\n var styles = map(this._styles, parseJSON);\n var hasFont = function (style) {\n return style.underline || style.bold || style.italic || style.color || style.fontFamily || style.fontSize;\n };\n var convertFontSize = function (value) {\n var fontInPx = Number(value);\n var fontInPt;\n if (fontInPx) {\n fontInPt = fontInPx * 3 / 4;\n }\n return fontInPt;\n };\n var fonts = map(styles, function (style) {\n if (style.fontSize) {\n style.fontSize = convertFontSize(style.fontSize);\n }\n if (style.color) {\n style.color = convertColor(style.color);\n }\n if (hasFont(style)) {\n return style;\n }\n });\n var formats = map(styles, function (style) {\n if (style.format && defaultFormats[style.format] === undefined) {\n return style;\n }\n });\n var fills = map(styles, function (style) {\n if (style.background) {\n style.background = convertColor(style.background);\n return style;\n }\n });\n xl.file('styles.xml', STYLES({\n fonts: fonts,\n fills: fills,\n formats: formats,\n borders: borders,\n styles: map(styles, function (style) {\n var result = {};\n if (hasFont(style)) {\n result.fontId = indexOf(style, fonts) + 1;\n }\n if (style.background) {\n result.fillId = indexOf(style, fills) + 2;\n }\n result.textAlign = style.textAlign;\n result.indent = style.indent;\n result.verticalAlign = style.verticalAlign;\n result.wrap = style.wrap;\n result.borderId = style.borderId;\n if (style.format) {\n if (defaultFormats[style.format] !== undefined) {\n result.numFmtId = defaultFormats[style.format];\n } else {\n result.numFmtId = 165 + indexOf(style, formats);\n }\n }\n return result;\n })\n }));\n xl.file('sharedStrings.xml', SHARED_STRINGS(this._strings));\n zip.file('[Content_Types].xml', CONTENT_TYPES({\n sheetCount: sheetCount,\n commentFiles: commentFiles,\n drawingFiles: drawingFiles\n }));\n return zip;\n },\n toDataURL: function () {\n var zip = this.toZIP();\n return zip.generateAsync ? zip.generateAsync(DATA_URL_OPTIONS).then(toDataURI) : toDataURI(zip.generate(DATA_URL_OPTIONS));\n },\n toBlob: function () {\n var zip = this.toZIP();\n if (zip.generateAsync) {\n return zip.generateAsync(BLOB_OPTIONS);\n }\n return new Blob([zip.generate(ARRAYBUFFER_OPTIONS)], { type: MIME_TYPE });\n }\n });\n function borderStyle(width) {\n var alias = 'thin';\n if (width === 2) {\n alias = 'medium';\n } else if (width === 3) {\n alias = 'thick';\n }\n return alias;\n }\n function borderSideTemplate(name, style) {\n var result = '';\n if (style) {\n result += '<' + name + ' style=\"' + borderStyle(style.size) + '\">';\n if (style.color) {\n result += '<color rgb=\"' + convertColor(style.color) + '\"/>';\n }\n result += '</' + name + '>';\n }\n return result;\n }\n function borderTemplate(border) {\n return '<border>' + borderSideTemplate('left', border.left) + borderSideTemplate('right', border.right) + borderSideTemplate('top', border.top) + borderSideTemplate('bottom', border.bottom) + '</border>';\n }\n var EMPTY_CELL = {};\n function inflate(rows, mergedCells) {\n var rowData = [];\n var rowsByIndex = [];\n indexRows(rows, function (row, index) {\n var data = {\n _source: row,\n index: index,\n height: row.height,\n level: row.level,\n cells: []\n };\n rowData.push(data);\n rowsByIndex[index] = data;\n });\n var sorted = sortByIndex(rowData).slice(0);\n var ctx = {\n rowData: rowData,\n rowsByIndex: rowsByIndex,\n mergedCells: mergedCells\n };\n for (var i = 0; i < sorted.length; i++) {\n fillCells(sorted[i], ctx);\n delete sorted[i]._source;\n }\n return sortByIndex(rowData);\n }\n function indexRows(rows, callback) {\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n if (!row) {\n continue;\n }\n var index = row.index;\n if (typeof index !== 'number') {\n index = i;\n }\n callback(row, index);\n }\n }\n function sortByIndex(items) {\n return items.sort(function (a, b) {\n return a.index - b.index;\n });\n }\n function pushUnique(array, el) {\n if (array.indexOf(el) < 0) {\n array.push(el);\n }\n }\n function getSpan(mergedCells, ref) {\n for (var i = 0; i < mergedCells.length; ++i) {\n var range = mergedCells[i];\n var a = range.split(':');\n var topLeft = a[0];\n if (topLeft === ref) {\n var bottomRight = a[1];\n topLeft = parseRef(topLeft);\n bottomRight = parseRef(bottomRight);\n return {\n rowSpan: bottomRight.row - topLeft.row + 1,\n colSpan: bottomRight.col - topLeft.col + 1\n };\n }\n }\n }\n function parseRef(ref) {\n function getcol(str) {\n var upperStr = str.toUpperCase();\n var col = 0;\n for (var i = 0; i < upperStr.length; ++i) {\n col = col * 26 + upperStr.charCodeAt(i) - 64;\n }\n return col - 1;\n }\n function getrow(str) {\n return parseInt(str, 10) - 1;\n }\n var m = /^([a-z]+)(\\d+)$/i.exec(ref);\n return {\n row: getrow(m[2]),\n col: getcol(m[1])\n };\n }\n function pixelsToExcel(px) {\n return Math.round(px * 9525);\n }\n function fillCells(data, ctx) {\n var row = data._source;\n var rowIndex = data.index;\n var cells = row.cells;\n var cellData = data.cells;\n if (!cells) {\n return;\n }\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i] || EMPTY_CELL;\n var rowSpan = cell.rowSpan || 1;\n var colSpan = cell.colSpan || 1;\n var cellIndex = insertCell(cellData, cell);\n var topLeftRef = ref(rowIndex, cellIndex);\n if (rowSpan === 1 && colSpan === 1) {\n var tmp = getSpan(ctx.mergedCells, topLeftRef);\n if (tmp) {\n colSpan = tmp.colSpan;\n rowSpan = tmp.rowSpan;\n }\n }\n spanCell(cell, cellData, cellIndex, colSpan);\n if (rowSpan > 1 || colSpan > 1) {\n pushUnique(ctx.mergedCells, topLeftRef + ':' + ref(rowIndex + rowSpan - 1, cellIndex + colSpan - 1));\n }\n if (rowSpan > 1) {\n for (var ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n var nextRow = ctx.rowsByIndex[ri];\n if (!nextRow) {\n nextRow = ctx.rowsByIndex[ri] = {\n index: ri,\n cells: []\n };\n ctx.rowData.push(nextRow);\n }\n spanCell(cell, nextRow.cells, cellIndex - 1, colSpan + 1);\n }\n }\n }\n }\n function insertCell(data, cell) {\n var index;\n if (typeof cell.index === 'number') {\n index = cell.index;\n insertCellAt(data, cell, cell.index);\n } else {\n index = appendCell(data, cell);\n }\n return index;\n }\n function insertCellAt(data, cell, index) {\n data[index] = cell;\n }\n function appendCell(data, cell) {\n var index = data.length;\n for (var i = 0; i < data.length + 1; i++) {\n if (!data[i]) {\n data[i] = cell;\n index = i;\n break;\n }\n }\n return index;\n }\n function spanCell(cell, row, startIndex, colSpan) {\n for (var i = 1; i < colSpan; i++) {\n var tmp = {\n borderTop: cell.borderTop,\n borderRight: cell.borderRight,\n borderBottom: cell.borderBottom,\n borderLeft: cell.borderLeft\n };\n insertCellAt(row, tmp, startIndex + i);\n }\n }\n var SPREADSHEET_FILTERS = function (ref$1) {\n var ref = ref$1.ref;\n var columns = ref$1.columns;\n var generators = ref$1.generators;\n return '\\n<autoFilter ref=\"' + ref + '\">\\n ' + foreach(columns, function (col) {\n return '\\n <filterColumn colId=\"' + col.index + '\">\\n ' + generators[col.filter](col) + '\\n </filterColumn>\\n ';\n }) + '\\n</autoFilter>';\n };\n var SPREADSHEET_CUSTOM_FILTER = function (ref) {\n var logic = ref.logic;\n var criteria = ref.criteria;\n return '\\n<customFilters ' + (logic === 'and' ? 'and=\"1\"' : '') + '>\\n' + foreach(criteria, function (f) {\n var op = spreadsheetFilters.customOperator(f);\n var val = spreadsheetFilters.customValue(f);\n return '<customFilter ' + (op ? 'operator=\"' + op + '\"' : '') + ' val=\"' + val + '\"/>';\n }) + '\\n</customFilters>';\n };\n var SPREADSHEET_DYNAMIC_FILTER = function (ref) {\n var type = ref.type;\n return '<dynamicFilter type=\"' + spreadsheetFilters.dynamicFilterType(type) + '\" />';\n };\n var SPREADSHEET_TOP_FILTER = function (ref) {\n var type = ref.type;\n var value = ref.value;\n return '<top10 percent=\"' + (/percent$/i.test(type) ? 1 : 0) + '\"\\n top=\"' + (/^top/i.test(type) ? 1 : 0) + '\"\\n val=\"' + value + '\" />';\n };\n var SPREADSHEET_VALUE_FILTER = function (ref) {\n var blanks = ref.blanks;\n var values = ref.values;\n return '<filters ' + (blanks ? 'blank=\"1\"' : '') + '>\\n ' + foreach(values, function (value) {\n return '\\n <filter val=\"' + value + '\" />';\n }) + '\\n </filters>';\n };\n function spreadsheetFilters(filter) {\n return SPREADSHEET_FILTERS({\n ref: filter.ref,\n columns: filter.columns,\n generators: {\n custom: SPREADSHEET_CUSTOM_FILTER,\n dynamic: SPREADSHEET_DYNAMIC_FILTER,\n top: SPREADSHEET_TOP_FILTER,\n value: SPREADSHEET_VALUE_FILTER\n }\n });\n }\n spreadsheetFilters.customOperator = function (f) {\n return {\n eq: 'equal',\n gt: 'greaterThan',\n gte: 'greaterThanOrEqual',\n lt: 'lessThan',\n lte: 'lessThanOrEqual',\n ne: 'notEqual',\n doesnotstartwith: 'notEqual',\n doesnotendwith: 'notEqual',\n doesnotcontain: 'notEqual',\n doesnotmatch: 'notEqual'\n }[f.operator.toLowerCase()];\n };\n spreadsheetFilters.customValue = function (f) {\n function esc(str) {\n return str.replace(/([*?])/g, '~$1');\n }\n switch (f.operator.toLowerCase()) {\n case 'startswith':\n case 'doesnotstartwith':\n return esc(f.value) + '*';\n case 'endswith':\n case 'doesnotendwith':\n return '*' + esc(f.value);\n case 'contains':\n case 'doesnotcontain':\n return '*' + esc(f.value) + '*';\n default:\n return f.value;\n }\n };\n spreadsheetFilters.dynamicFilterType = function (type) {\n return {\n quarter1: 'Q1',\n quarter2: 'Q2',\n quarter3: 'Q3',\n quarter4: 'Q4',\n january: 'M1',\n february: 'M2',\n march: 'M3',\n april: 'M4',\n may: 'M5',\n june: 'M6',\n july: 'M7',\n august: 'M8',\n september: 'M9',\n october: 'M10',\n november: 'M11',\n december: 'M12'\n }[type.toLowerCase()] || type;\n };\n kendo.deepExtend(kendo.ooxml, {\n IntlService: IntlService,\n Workbook: Workbook,\n Worksheet: Worksheet\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('ooxml/main', [\n 'kendo.core',\n 'ooxml/kendo-ooxml'\n ], f);\n}(function () {\n (function ($) {\n var Workbook = kendo.ooxml.Workbook;\n kendo.ooxml.IntlService.register({ toString: kendo.toString });\n kendo.ooxml.Workbook = Workbook.extend({\n toDataURL: function () {\n var result = Workbook.fn.toDataURL.call(this);\n if (typeof result !== 'string') {\n throw new Error('The toDataURL method can be used only with jsZip 2. Either include jsZip 2 or use the toDataURLAsync method.');\n }\n return result;\n },\n toDataURLAsync: function () {\n var deferred = $.Deferred();\n var result = Workbook.fn.toDataURL.call(this);\n if (typeof result === 'string') {\n result = deferred.resolve(result);\n } else if (result && result.then) {\n result.then(function (dataURI) {\n deferred.resolve(dataURI);\n }, function () {\n deferred.reject();\n });\n }\n return deferred.promise();\n }\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.ooxml', ['ooxml/main'], f);\n}(function () {\n var __meta__ = {\n id: 'ooxml',\n name: 'XLSX generation',\n category: 'framework',\n advanced: true,\n depends: ['core']\n };\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('excel/kendo-excel', ['kendo.core'], f);\n}(function () {\n (function ($) {\n window.kendo.excel = window.kendo.excel || {};\n var getter = kendo.getter;\n var map = $.map;\n var current = {\n compile: function (template) {\n return template;\n }\n };\n var TemplateService = kendo.Class.extend({});\n TemplateService.register = function (userImplementation) {\n current = userImplementation;\n };\n TemplateService.compile = function (template) {\n return current.compile(template);\n };\n function defaultGroupHeaderTemplate(data) {\n return data.title + ': ' + data.value;\n }\n function createArray(length, callback) {\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n result.push(callback(idx));\n }\n return result;\n }\n var ExcelExporter = kendo.Class.extend({\n init: function (options) {\n options.columns = this._trimColumns(options.columns || []);\n this.allColumns = map(this._leafColumns(options.columns || []), this._prepareColumn);\n this.columns = this.allColumns.filter(function (column) {\n return !column.hidden;\n });\n this.options = options;\n this.data = options.data || [];\n this.aggregates = options.aggregates || {};\n this.groups = [].concat(options.groups || []);\n this.hierarchy = options.hierarchy;\n },\n workbook: function () {\n var workbook = {\n sheets: [{\n columns: this._columns(),\n rows: this.hierarchy ? this._hierarchyRows() : this._rows(),\n freezePane: this._freezePane(),\n filter: this._filter()\n }]\n };\n return workbook;\n },\n _trimColumns: function (columns) {\n var this$1 = this;\n return columns.filter(function (column) {\n var result = Boolean(column.field);\n if (!result && column.columns) {\n result = this$1._trimColumns(column.columns).length > 0;\n }\n return result;\n });\n },\n _leafColumns: function (columns) {\n var this$1 = this;\n var result = [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n } else {\n result = result.concat(this$1._leafColumns(columns[idx].columns));\n }\n }\n return result;\n },\n _prepareColumn: function (column) {\n if (!column.field) {\n return null;\n }\n var value = function (dataItem) {\n return getter(column.field, true)(dataItem);\n };\n var values = null;\n if (column.values) {\n values = {};\n column.values.forEach(function (item) {\n values[item.value] = item.text;\n });\n value = function (dataItem) {\n return values[getter(column.field, true)(dataItem)];\n };\n }\n return $.extend({}, column, {\n value: value,\n values: values,\n groupHeaderTemplate: column.groupHeaderTemplate ? TemplateService.compile(column.groupHeaderTemplate) : defaultGroupHeaderTemplate,\n groupFooterTemplate: column.groupFooterTemplate ? TemplateService.compile(column.groupFooterTemplate) : null,\n footerTemplate: column.footerTemplate ? TemplateService.compile(column.footerTemplate) : null\n });\n },\n _filter: function () {\n if (!this.options.filterable) {\n return null;\n }\n var depth = this._depth();\n return {\n from: depth,\n to: depth + this.columns.length - 1\n };\n },\n _createPaddingCells: function (length) {\n var this$1 = this;\n return createArray(length, function () {\n return $.extend({\n background: '#dfdfdf',\n color: '#333'\n }, this$1.options.paddingCellOptions);\n });\n },\n _dataRow: function (dataItem, level, depth) {\n var this$1 = this;\n var cells = this._createPaddingCells(level);\n if (depth && dataItem.items) {\n var column = this.allColumns.filter(function (column) {\n return column.field === dataItem.field;\n })[0];\n var title = column && column.title ? column.title : dataItem.field;\n var template = column ? column.groupHeaderTemplate : null;\n var group = $.extend({\n title: title,\n field: dataItem.field,\n value: column && column.values ? column.values[dataItem.value] : dataItem.value,\n aggregates: dataItem.aggregates,\n items: dataItem.items\n }, dataItem.aggregates[dataItem.field]);\n var value = title + ': ' + dataItem.value;\n if (template) {\n value = template(group);\n }\n cells.push($.extend({\n value: value,\n background: '#dfdfdf',\n color: '#333',\n colSpan: this.columns.length + depth - level\n }, (column || {}).groupHeaderCellOptions));\n var rows = this._dataRows(dataItem.items, level + 1);\n rows.unshift({\n type: 'group-header',\n cells: cells,\n level: this.options.collapsible ? level : null\n });\n return rows.concat(this._footer(dataItem, level));\n }\n var dataCells = [];\n for (var cellIdx = 0; cellIdx < this.columns.length; cellIdx++) {\n dataCells[cellIdx] = this$1._cell(dataItem, this$1.columns[cellIdx]);\n }\n if (this.hierarchy) {\n dataCells[0].colSpan = depth - level + 1;\n }\n return [{\n type: 'data',\n cells: cells.concat(dataCells),\n level: this.options.collapsible ? level : null\n }];\n },\n _dataRows: function (dataItems, level) {\n var this$1 = this;\n var depth = this._depth();\n var rows = [];\n for (var idx = 0; idx < dataItems.length; idx++) {\n rows.push.apply(rows, this$1._dataRow(dataItems[idx], level, depth));\n }\n return rows;\n },\n _hierarchyRows: function () {\n var this$1 = this;\n var depth = this._depth();\n var data = this.data;\n var itemLevel = this.hierarchy.itemLevel;\n var hasFooter = this._hasFooterTemplate();\n var rows = [];\n var parents = [];\n var previousLevel = 0;\n var previousItemId;\n for (var idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var level = itemLevel(item);\n if (hasFooter) {\n if (level > previousLevel) {\n parents.push({\n id: previousItemId,\n level: previousLevel\n });\n } else if (level < previousLevel) {\n rows.push.apply(rows, this$1._hierarchyFooterRows(parents, level, depth));\n }\n previousLevel = level;\n previousItemId = item.id;\n }\n rows.push.apply(rows, this$1._dataRow(item, level + 1, depth));\n }\n if (hasFooter) {\n rows.push.apply(rows, this._hierarchyFooterRows(parents, 0, depth));\n var rootAggregate = data.length ? this.aggregates[data[0].parentId] : {};\n rows.push(this._hierarchyFooter(rootAggregate, 0, depth));\n }\n this._prependHeaderRows(rows);\n return rows;\n },\n _hierarchyFooterRows: function (parents, currentLevel, depth) {\n var this$1 = this;\n var rows = [];\n while (parents.length && parents[parents.length - 1].level >= currentLevel) {\n var parent = parents.pop();\n rows.push(this$1._hierarchyFooter(this$1.aggregates[parent.id], parent.level + 1, depth));\n }\n return rows;\n },\n _hasFooterTemplate: function () {\n var columns = this.columns;\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].footerTemplate) {\n return true;\n }\n }\n },\n _hierarchyFooter: function (aggregates, level, depth) {\n var cells = this.columns.map(function (column, index) {\n var colSpan = index ? 1 : depth - level + 1;\n if (column.footerTemplate) {\n return $.extend({\n background: '#dfdfdf',\n color: '#333',\n colSpan: colSpan,\n value: column.footerTemplate($.extend({}, (aggregates || {})[column.field]))\n }, column.footerCellOptions);\n }\n return $.extend({\n background: '#dfdfdf',\n color: '#333',\n colSpan: colSpan\n }, column.footerCellOptions);\n });\n return {\n type: 'footer',\n cells: this._createPaddingCells(level).concat(cells)\n };\n },\n _footer: function (dataItem, level) {\n var rows = [];\n var footer = this.columns.some(function (column) {\n return column.groupFooterTemplate;\n });\n var templateData, group;\n if (footer) {\n group = {\n group: {\n items: dataItem.items,\n field: dataItem.field,\n value: dataItem.value\n }\n };\n templateData = {};\n Object.keys(dataItem.aggregates).forEach(function (key) {\n templateData[key] = $.extend({}, dataItem.aggregates[key], group);\n });\n }\n var cells = this.columns.map(function (column) {\n if (column.groupFooterTemplate) {\n var data = $.extend({}, templateData, dataItem.aggregates[column.field], group);\n return $.extend({\n background: '#dfdfdf',\n color: '#333',\n value: column.groupFooterTemplate(data)\n }, column.groupFooterCellOptions);\n }\n return $.extend({\n background: '#dfdfdf',\n color: '#333'\n }, column.groupFooterCellOptions);\n });\n if (footer) {\n rows.push({\n type: 'group-footer',\n cells: this._createPaddingCells(this.groups.length).concat(cells),\n level: this.options.collapsible ? level : null\n });\n }\n return rows;\n },\n _isColumnVisible: function (column) {\n return this._visibleColumns([column]).length > 0 && (column.field || column.columns);\n },\n _visibleColumns: function (columns) {\n var this$1 = this;\n return columns.filter(function (column) {\n var result = !column.hidden;\n if (result && column.columns) {\n result = this$1._visibleColumns(column.columns).length > 0;\n }\n return result;\n });\n },\n _headerRow: function (row, groups) {\n var this$1 = this;\n var headers = row.cells.map(function (cell) {\n return $.extend(cell, {\n colSpan: cell.colSpan > 1 ? cell.colSpan : 1,\n rowSpan: row.rowSpan > 1 && !cell.colSpan ? row.rowSpan : 1\n });\n });\n if (this.hierarchy) {\n headers[0].colSpan = this._depth() + 1;\n }\n return {\n type: 'header',\n cells: createArray(groups.length, function () {\n return $.extend({\n background: '#7a7a7a',\n color: '#fff'\n }, this$1.options.headerPaddingCellOptions);\n }).concat(headers)\n };\n },\n _prependHeaderRows: function (rows) {\n var this$1 = this;\n var groups = this.groups;\n var headerRows = [{\n rowSpan: 1,\n cells: [],\n index: 0\n }];\n this._prepareHeaderRows(headerRows, this.options.columns);\n for (var idx = headerRows.length - 1; idx >= 0; idx--) {\n rows.unshift(this$1._headerRow(headerRows[idx], groups));\n }\n },\n _prepareHeaderRows: function (rows, columns, parentCell, parentRow) {\n var this$1 = this;\n var row = parentRow || rows[rows.length - 1];\n var childRow = rows[row.index + 1];\n var totalColSpan = 0;\n for (var idx = 0; idx < columns.length; idx++) {\n var column = columns[idx];\n if (this$1._isColumnVisible(column)) {\n var cell = $.extend({\n background: '#7a7a7a',\n color: '#fff',\n value: column.title || column.field,\n colSpan: 0\n }, column.headerCellOptions);\n row.cells.push(cell);\n if (column.columns && column.columns.length) {\n if (!childRow) {\n childRow = {\n rowSpan: 0,\n cells: [],\n index: rows.length\n };\n rows.push(childRow);\n }\n cell.colSpan = this$1._trimColumns(this$1._visibleColumns(column.columns)).length;\n this$1._prepareHeaderRows(rows, column.columns, cell, childRow);\n totalColSpan += cell.colSpan - 1;\n row.rowSpan = rows.length - row.index;\n }\n }\n }\n if (parentCell) {\n parentCell.colSpan += totalColSpan;\n }\n },\n _rows: function () {\n var this$1 = this;\n var rows = this._dataRows(this.data, 0);\n if (this.columns.length) {\n this._prependHeaderRows(rows);\n var footer = false;\n var cells = this.columns.map(function (column) {\n if (column.footerTemplate) {\n footer = true;\n return $.extend({\n background: '#dfdfdf',\n color: '#333',\n value: column.footerTemplate($.extend({}, this$1.aggregates, this$1.aggregates[column.field]))\n }, column.footerCellOptions);\n }\n return $.extend({\n background: '#dfdfdf',\n color: '#333'\n }, column.footerCellOptions);\n });\n if (footer) {\n rows.push({\n type: 'footer',\n cells: this._createPaddingCells(this.groups.length).concat(cells)\n });\n }\n }\n return rows;\n },\n _headerDepth: function (columns) {\n var this$1 = this;\n var result = 1;\n var max = 0;\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n var temp = this$1._headerDepth(columns[idx].columns);\n if (temp > max) {\n max = temp;\n }\n }\n }\n return result + max;\n },\n _freezePane: function () {\n var columns = this._visibleColumns(this.options.columns || []);\n var colSplit = this._visibleColumns(this._trimColumns(this._leafColumns(columns.filter(function (column) {\n return column.locked;\n })))).length;\n return {\n rowSplit: this._headerDepth(columns),\n colSplit: colSplit ? colSplit + this.groups.length : 0\n };\n },\n _cell: function (dataItem, column) {\n return $.extend({ value: column.value(dataItem) }, column.cellOptions);\n },\n _depth: function () {\n var depth = 0;\n if (this.hierarchy) {\n depth = this.hierarchy.depth;\n } else {\n depth = this.groups.length;\n }\n return depth;\n },\n _columns: function () {\n var depth = this._depth();\n var columns = createArray(depth, function () {\n return { width: 20 };\n });\n return columns.concat(this.columns.map(function (column) {\n return {\n width: parseInt(column.width, 10),\n autoWidth: column.width ? false : true\n };\n }));\n }\n });\n kendo.deepExtend(kendo.excel, {\n ExcelExporter: ExcelExporter,\n TemplateService: TemplateService\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('excel/main', [\n 'kendo.core',\n 'kendo.data',\n 'excel/kendo-excel'\n ], f);\n}(function () {\n (function ($, kendo) {\n var ExcelExporter = kendo.excel.ExcelExporter;\n var extend = $.extend;\n kendo.excel.TemplateService.register({ compile: kendo.template });\n kendo.ExcelExporter = kendo.Class.extend({\n init: function (options) {\n this.options = options;\n var dataSource = options.dataSource;\n if (dataSource instanceof kendo.data.DataSource) {\n if (!dataSource.filter()) {\n dataSource.options.filter = undefined;\n }\n this.dataSource = new dataSource.constructor(extend({}, dataSource.options, {\n page: options.allPages ? 0 : dataSource.page(),\n filter: dataSource.filter(),\n pageSize: options.allPages ? dataSource.total() : dataSource.pageSize() || dataSource.total(),\n sort: dataSource.sort(),\n group: dataSource.group(),\n aggregate: dataSource.aggregate()\n }));\n var data = dataSource.data();\n if (data.length > 0) {\n if (options.hierarchy) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].expanded === false || data[i].expanded === undefined) {\n data[i].expanded = true;\n }\n }\n }\n this.dataSource._data = data;\n var transport = this.dataSource.transport;\n if (dataSource._isServerGrouped() && transport.options && transport.options.data) {\n transport.options.data = null;\n }\n }\n } else {\n this.dataSource = kendo.data.DataSource.create(dataSource);\n }\n },\n _hierarchy: function () {\n var hierarchy = this.options.hierarchy;\n var dataSource = this.dataSource;\n if (hierarchy && dataSource.level) {\n hierarchy = {\n itemLevel: function (item) {\n return dataSource.level(item);\n }\n };\n var view = dataSource.view();\n var depth = 0;\n var level;\n for (var idx = 0; idx < view.length; idx++) {\n level = dataSource.level(view[idx]);\n if (level > depth) {\n depth = level;\n }\n }\n hierarchy.depth = depth + 1;\n } else {\n hierarchy = false;\n }\n return { hierarchy: hierarchy };\n },\n workbook: function () {\n return $.Deferred($.proxy(function (d) {\n this.dataSource.fetch().then($.proxy(function () {\n var workbook = new ExcelExporter(extend({}, this.options, this._hierarchy(), {\n data: this.dataSource.view(),\n groups: this.dataSource.group(),\n aggregates: this.dataSource.aggregates()\n })).workbook();\n d.resolve(workbook, this.dataSource.view());\n }, this));\n }, this)).promise();\n }\n });\n }(kendo.jQuery, kendo));\n return kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('excel/mixins', [\n 'excel/main',\n 'kendo.ooxml'\n ], f);\n}(function () {\n (function ($, kendo) {\n kendo.ExcelMixin = {\n extend: function (proto) {\n proto.events.push('excelExport');\n proto.options.excel = $.extend(proto.options.excel, this.options);\n proto.saveAsExcel = this.saveAsExcel;\n },\n options: {\n proxyURL: '',\n allPages: false,\n filterable: false,\n fileName: 'Export.xlsx',\n collapsible: false\n },\n saveAsExcel: function () {\n var excel = this.options.excel || {};\n var exporter = new kendo.ExcelExporter({\n columns: this.columns,\n dataSource: this.dataSource,\n allPages: excel.allPages,\n filterable: excel.filterable,\n hierarchy: excel.hierarchy,\n collapsible: excel.collapsible\n });\n exporter.workbook().then($.proxy(function (book, data) {\n if (!this.trigger('excelExport', {\n workbook: book,\n data: data\n })) {\n var workbook = new kendo.ooxml.Workbook(book);\n workbook.toDataURLAsync().then(function (dataURI) {\n kendo.saveAs({\n dataURI: dataURI,\n fileName: book.fileName || excel.fileName,\n proxyURL: excel.proxyURL,\n forceProxy: excel.forceProxy\n });\n });\n }\n }, this));\n }\n };\n }(kendo.jQuery, kendo));\n return kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.excel', [\n 'excel/main',\n 'excel/mixins'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'excel',\n name: 'Excel export',\n category: 'framework',\n advanced: true,\n mixin: true,\n depends: [\n 'data',\n 'ooxml'\n ]\n };\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.data.signalr', ['kendo.data'], f);\n}(function () {\n var __meta__ = {\n id: 'data.signalr',\n name: 'SignalR',\n category: 'framework',\n depends: ['data'],\n hidden: true\n };\n (function ($) {\n var kendo = window.kendo;\n var isFunction = kendo.isFunction;\n function isJQueryPromise(promise) {\n return promise && isFunction(promise.done) && isFunction(promise.fail);\n }\n function isNativePromise(promise) {\n return promise && isFunction(promise.then) && isFunction(promise.catch);\n }\n var transport = kendo.data.RemoteTransport.extend({\n init: function (options) {\n var signalr = options && options.signalr ? options.signalr : {};\n var promise = signalr.promise;\n if (!promise) {\n throw new Error('The \"promise\" option must be set.');\n }\n if (!isJQueryPromise(promise) && !isNativePromise(promise)) {\n throw new Error('The \"promise\" option must be a Promise.');\n }\n this.promise = promise;\n var hub = signalr.hub;\n if (!hub) {\n throw new Error('The \"hub\" option must be set.');\n }\n if (typeof hub.on != 'function' || typeof hub.invoke != 'function') {\n throw new Error('The \"hub\" option is not a valid SignalR hub proxy.');\n }\n this.hub = hub;\n kendo.data.RemoteTransport.fn.init.call(this, options);\n },\n push: function (callbacks) {\n var client = this.options.signalr.client || {};\n if (client.create) {\n this.hub.on(client.create, callbacks.pushCreate);\n }\n if (client.update) {\n this.hub.on(client.update, callbacks.pushUpdate);\n }\n if (client.destroy) {\n this.hub.on(client.destroy, callbacks.pushDestroy);\n }\n },\n _crud: function (options, type) {\n var hub = this.hub;\n var promise = this.promise;\n var server = this.options.signalr.server;\n if (!server || !server[type]) {\n throw new Error(kendo.format('The \"server.{0}\" option must be set.', type));\n }\n var args = [server[type]];\n var data = this.parameterMap(options.data, type);\n if (!$.isEmptyObject(data)) {\n args.push(data);\n }\n if (isJQueryPromise(promise)) {\n promise.done(function () {\n hub.invoke.apply(hub, args).done(options.success).fail(options.error);\n });\n } else if (isNativePromise(promise)) {\n promise.then(function () {\n hub.invoke.apply(hub, args).then(options.success).catch(options.error);\n });\n }\n },\n read: function (options) {\n this._crud(options, 'read');\n },\n create: function (options) {\n this._crud(options, 'create');\n },\n update: function (options) {\n this._crud(options, 'update');\n },\n destroy: function (options) {\n this._crud(options, 'destroy');\n }\n });\n $.extend(true, kendo.data, { transports: { signalr: transport } });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('drawing/util', ['kendo.core'], f);\n}(function () {\n (function ($) {\n function createPromise() {\n return $.Deferred();\n }\n function promiseAll(promises) {\n return $.when.apply($, promises);\n }\n kendo.drawing.util = kendo.drawing.util || {};\n kendo.deepExtend(kendo.drawing.util, {\n createPromise: createPromise,\n promiseAll: promiseAll\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.color', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'color',\n name: 'Color utils',\n category: 'framework',\n advanced: true,\n description: 'Color utilities used across components',\n depends: ['core']\n };\n window.kendo = window.kendo || {};\n var Class = kendo.Class;\n var support = kendo.support;\n var namedColors = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgrey: 'a9a9a9',\n darkgreen: '006400',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkslategrey: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dimgrey: '696969',\n dodgerblue: '1e90ff',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n grey: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred: 'cd5c5c',\n indigo: '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgray: 'd3d3d3',\n lightgrey: 'd3d3d3',\n lightgreen: '90ee90',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslategray: '778899',\n lightslategrey: '778899',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '00ff00',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'ff00ff',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370d8',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'd87093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n red: 'ff0000',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n slategrey: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n wheat: 'f5deb3',\n white: 'ffffff',\n whitesmoke: 'f5f5f5',\n yellow: 'ffff00',\n yellowgreen: '9acd32'\n };\n var browser = support.browser;\n var matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push('transparent');\n var regexp = new RegExp('^(' + colorNames.join('|') + ')(\\\\W|$)', 'i');\n matchNamedColor = function (color) {\n return regexp.exec(color);\n };\n return regexp.exec(color);\n };\n var BaseColor = Class.extend({\n init: function () {\n },\n toHSV: function () {\n return this;\n },\n toRGB: function () {\n return this;\n },\n toHex: function () {\n return this.toBytes().toHex();\n },\n toBytes: function () {\n return this;\n },\n toCss: function () {\n return '#' + this.toHex();\n },\n toCssRgba: function () {\n var rgb = this.toBytes();\n return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(Number(this.a).toFixed(3)) + ')';\n },\n toDisplay: function () {\n if (browser.msie && browser.version < 9) {\n return this.toCss();\n }\n return this.toCssRgba();\n },\n equals: function (c) {\n return c === this || c !== null && this.toCssRgba() === parseColor(c).toCssRgba();\n },\n diff: function (other) {\n if (other === null) {\n return NaN;\n }\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.3, 2) + Math.pow((c1.g - c2.g) * 0.59, 2) + Math.pow((c1.b - c2.b) * 0.11, 2));\n },\n clone: function () {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n return c;\n }\n });\n var RGB = BaseColor.extend({\n init: function (r, g, b, a) {\n BaseColor.fn.init.call(this);\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n },\n toHSV: function () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n return new HSV(h, s, v, this.a);\n },\n toHSL: function () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n }\n return new HSL(h * 60, s * 100, l * 100, this.a);\n },\n toBytes: function () {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n });\n var Bytes = RGB.extend({\n init: function (r, g, b, a) {\n RGB.fn.init.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n },\n toRGB: function () {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n },\n toHSV: function () {\n return this.toRGB().toHSV();\n },\n toHSL: function () {\n return this.toRGB().toHSL();\n },\n toHex: function () {\n return hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n },\n toBytes: function () {\n return this;\n }\n });\n function hex(n, width, pad) {\n if (pad === void 0) {\n pad = '0';\n }\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n return result;\n }\n var HSV = BaseColor.extend({\n init: function (h, s, v, a) {\n BaseColor.fn.init.call(this);\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n },\n toRGB: function () {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n break;\n }\n }\n return new RGB(r, g, b, this.a);\n },\n toHSL: function () {\n return this.toRGB().toHSL();\n },\n toBytes: function () {\n return this.toRGB().toBytes();\n }\n });\n var HSL = BaseColor.extend({\n init: function (h, s, l, a) {\n BaseColor.fn.init.call(this);\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n },\n toRGB: function () {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n if (s === 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return new RGB(r, g, b, this.a);\n },\n toHSV: function () {\n return this.toRGB().toHSV();\n },\n toBytes: function () {\n return this.toRGB().toBytes();\n }\n });\n function hue2rgb(p, q, s) {\n var t = s;\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n }\n function parseColor(value, safe) {\n var m, ret;\n if (value == null || value === 'none') {\n return null;\n }\n if (value instanceof BaseColor) {\n return value;\n }\n var color = value.toLowerCase();\n if (m = matchNamedColor(color)) {\n if (m[1] === 'transparent') {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [m[1]];\n return color;\n }\n if (m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color)) {\n ret = new Bytes(parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 1);\n } else if (m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color)) {\n ret = new Bytes(parseInt(m[1] + m[1], 16), parseInt(m[2] + m[2], 16), parseInt(m[3] + m[3], 16), 1);\n } else if (m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color)) {\n ret = new Bytes(parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10), 1);\n } else if (m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color)) {\n ret = new Bytes(parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10), parseFloat(m[4]));\n } else if (m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color)) {\n ret = new RGB(parseFloat(m[1]) / 100, parseFloat(m[2]) / 100, parseFloat(m[3]) / 100, 1);\n } else if (m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color)) {\n ret = new RGB(parseFloat(m[1]) / 100, parseFloat(m[2]) / 100, parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error('Cannot parse color: ' + color);\n }\n return ret;\n }\n var Color = Class.extend({\n init: function (value) {\n var this$1 = this;\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n if (parts) {\n var channels = processor(parts);\n this$1.r = channels[0];\n this$1.g = channels[1];\n this$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n },\n toHex: function () {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n return '#' + pad(r) + pad(g) + pad(b);\n },\n resolveColor: function (value) {\n var color = value || 'black';\n if (color.charAt(0) === '#') {\n color = color.substr(1, 6);\n }\n color = color.replace(/ /g, '');\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n return color;\n },\n normalizeByte: function (value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n return value > 255 ? 255 : value;\n },\n padDigit: function (value) {\n return value.length === 1 ? '0' + value : value;\n },\n brightness: function (value) {\n var round = Math.round;\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n return this;\n },\n percBrightness: function () {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n }\n });\n Color.fromBytes = function (r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n Color.fromRGB = function (r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n Color.fromHSV = function (h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n Color.fromHSL = function (h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n Color.formats = [\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function (parts) {\n return [\n parseInt(parts[1], 10),\n parseInt(parts[2], 10),\n parseInt(parts[3], 10)\n ];\n }\n },\n {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function (parts) {\n return [\n parseInt(parts[1], 16),\n parseInt(parts[2], 16),\n parseInt(parts[3], 16)\n ];\n }\n },\n {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function (parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n }\n ];\n Color.namedColors = namedColors;\n kendo.deepExtend(kendo, {\n parseColor: parseColor,\n Color: Color\n });\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/text-metrics', ['kendo.core'], f);\n}(function () {\n (function ($) {\n window.kendo.util = window.kendo.util || {};\n var LRUCache = kendo.Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var map = this._map;\n var entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n },\n get: function (key) {\n var entry = this._map[key];\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = this._tail;\n entry.newer = null;\n this._tail.newer = entry;\n this._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n return parts.sort().join('');\n }\n function hashKey(str) {\n var hash = 2166136261;\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n return hash >>> 0;\n }\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var DEFAULT_OPTIONS = { baselineMarkerSize: 1 };\n var defaultMeasureBox;\n if (typeof document !== 'undefined') {\n defaultMeasureBox = document.createElement('div');\n defaultMeasureBox.style.cssText = 'position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;' + 'padding: 0 !important; margin: 0 !important; border: 0 !important;' + 'line-height: normal !important; visibility: hidden !important; white-space: pre!important;';\n }\n var TextMetrics = kendo.Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n measure: function (text, style, options) {\n if (options === void 0) {\n options = {};\n }\n if (!text) {\n return zeroSize();\n }\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (typeof value !== 'undefined') {\n measureBox.style[key] = value;\n }\n }\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n measureBox.parentNode.removeChild(measureBox);\n return size;\n },\n _baselineMarker: function () {\n var marker = document.createElement('div');\n marker.style.cssText = 'display: inline-block; vertical-align: baseline;width: ' + this.options.baselineMarkerSize + 'px; height: ' + this.options.baselineMarkerSize + 'px;overflow: hidden;';\n return marker;\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n kendo.deepExtend(kendo.util, {\n LRUCache: LRUCache,\n TextMetrics: TextMetrics,\n measureText: measureText,\n objectKey: objectKey,\n hashKey: hashKey,\n normalizeText: normalizeText\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('drawing/kendo-drawing', [\n 'drawing/util',\n 'kendo.color',\n 'util/text-metrics'\n ], f);\n}(function () {\n (function ($) {\n window.kendo = window.kendo || {};\n var kendoDrawing = kendo.drawing;\n var kendoDrawingUtil = kendoDrawing.util;\n var Class = kendo.Class;\n var kendoUtil = kendo.util;\n var support = kendo.support;\n var supportBrowser = support.browser;\n var createPromise = kendoDrawingUtil.createPromise;\n var promiseAll = kendoDrawingUtil.promiseAll;\n var ObserversMixin = {\n extend: function (proto) {\n var this$1 = this;\n for (var method in this) {\n if (method !== 'extend') {\n proto[method] = this$1[method];\n }\n }\n },\n observers: function () {\n this._observers = this._observers || [];\n return this._observers;\n },\n addObserver: function (element) {\n if (!this._observers) {\n this._observers = [element];\n } else {\n this._observers.push(element);\n }\n return this;\n },\n removeObserver: function (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n },\n trigger: function (methodName, event) {\n var observers = this._observers;\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n },\n optionsChange: function (e) {\n if (e === void 0) {\n e = {};\n }\n e.element = this;\n this.trigger('optionsChange', e);\n },\n geometryChange: function () {\n this.trigger('geometryChange', { element: this });\n },\n suspend: function () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n },\n resume: function () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n },\n _observerField: function (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n };\n function append(first, second) {\n first.push.apply(first, second);\n return first;\n }\n var literals = {\n 1: 'i',\n 10: 'x',\n 100: 'c',\n 2: 'ii',\n 20: 'xx',\n 200: 'cc',\n 3: 'iii',\n 30: 'xxx',\n 300: 'ccc',\n 4: 'iv',\n 40: 'xl',\n 400: 'cd',\n 5: 'v',\n 50: 'l',\n 500: 'd',\n 6: 'vi',\n 60: 'lx',\n 600: 'dc',\n 7: 'vii',\n 70: 'lxx',\n 700: 'dcc',\n 8: 'viii',\n 80: 'lxxx',\n 800: 'dccc',\n 9: 'ix',\n 90: 'xc',\n 900: 'cm',\n 1000: 'm'\n };\n function arabicToRoman(n) {\n var values = [\n 1000,\n 900,\n 800,\n 700,\n 600,\n 500,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 1\n ];\n var roman = '';\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n var UNDEFINED = 'undefined';\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n var defId = 1;\n function definitionId() {\n return 'kdef' + defId++;\n }\n var DEG_TO_RAD = Math.PI / 180;\n var MAX_NUM = Number.MAX_VALUE;\n var MIN_NUM = -Number.MAX_VALUE;\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n var KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var fromCharCode = String.fromCharCode;\n function encodeUTF8(input) {\n var output = '';\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n if (c < 128) {\n output += fromCharCode(c);\n } else if (c < 2048) {\n output += fromCharCode(192 | c >>> 6);\n output += fromCharCode(128 | c & 63);\n } else if (c < 65536) {\n output += fromCharCode(224 | c >>> 12);\n output += fromCharCode(128 | c >>> 6 & 63);\n output += fromCharCode(128 | c & 63);\n }\n }\n return output;\n }\n function encodeBase64(input) {\n var output = '';\n var i = 0;\n var utfInput = encodeUTF8(input);\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n var enc1 = chr1 >> 2;\n var enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n var enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n var enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n return output;\n }\n function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n }\n function eventElement(e) {\n if (e === void 0) {\n e = {};\n }\n return e.touch ? e.touch.initialTouch : e.target;\n }\n function isTransparent(color) {\n return color === '' || color === null || color === 'none' || color === 'transparent' || !defined(color);\n }\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n }\n function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n }(a);\n }\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n return 1;\n }\n function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n }\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(' ');\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n }\n function elementOffset(element) {\n var box = element.getBoundingClientRect();\n var documentElement = document.documentElement;\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n }\n function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [styles];\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n return result;\n }\n function getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + 'px';\n }\n function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n } else {\n var size$1 = elementStyles(element, [\n 'width',\n 'height'\n ]);\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n }\n function unbindEvents(element, events) {\n if (events === void 0) {\n events = {};\n }\n for (var name in events) {\n var eventNames = name.trim().split(' ');\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n }\n var util = {\n append: append,\n arabicToRoman: arabicToRoman,\n createPromise: createPromise,\n defined: defined,\n definitionId: definitionId,\n deg: deg,\n encodeBase64: encodeBase64,\n eventCoordinates: eventCoordinates,\n eventElement: eventElement,\n isTransparent: isTransparent,\n last: last,\n limitValue: limitValue,\n mergeSort: mergeSort,\n promiseAll: promiseAll,\n rad: rad,\n round: round,\n valueOrDefault: valueOrDefault,\n bindEvents: bindEvents,\n elementOffset: elementOffset,\n elementSize: elementSize,\n elementStyles: elementStyles,\n unbindEvents: unbindEvents,\n DEG_TO_RAD: DEG_TO_RAD,\n MAX_NUM: MAX_NUM,\n MIN_NUM: MIN_NUM\n };\n var toString = {}.toString;\n var OptionsStore = Class.extend({\n init: function (options, prefix) {\n var this$1 = this;\n if (prefix === void 0) {\n prefix = '';\n }\n this.prefix = prefix;\n for (var field in options) {\n var member = options[field];\n member = this$1._wrap(member, field);\n this$1[field] = member;\n }\n },\n get: function (field) {\n var parts = field.split('.');\n var result = this;\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n return result;\n },\n set: function (field, value) {\n var current = this.get(field);\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n },\n _set: function (field, value) {\n var this$1 = this;\n var composite = field.indexOf('.') >= 0;\n var parentObj = this;\n var fieldName = field;\n if (composite) {\n var parts = fieldName.split('.');\n var prefix = this.prefix;\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + '.';\n var obj = parentObj[fieldName];\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n },\n _clear: function (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n },\n _wrap: function (object, field) {\n var type = toString.call(object);\n var wrapped = object;\n if (wrapped !== null && defined(wrapped) && type === '[object Object]') {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + '.');\n }\n wrapped.addObserver(this);\n }\n return wrapped;\n }\n });\n ObserversMixin.extend(OptionsStore.prototype);\n function setAccessor(field) {\n return function (value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n return this;\n };\n }\n function getAccessor(field) {\n return function () {\n return this[field];\n };\n }\n function defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() + name.substring(1, name.length);\n fn['set' + capitalized] = setAccessor(name);\n fn['get' + capitalized] = getAccessor(name);\n }\n }\n var Matrix = Class.extend({\n init: function (a, b, c, d, e, f) {\n if (a === void 0) {\n a = 0;\n }\n if (b === void 0) {\n b = 0;\n }\n if (c === void 0) {\n c = 0;\n }\n if (d === void 0) {\n d = 0;\n }\n if (e === void 0) {\n e = 0;\n }\n if (f === void 0) {\n f = 0;\n }\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n },\n multiplyCopy: function (matrix) {\n return new Matrix(this.a * matrix.a + this.c * matrix.b, this.b * matrix.a + this.d * matrix.b, this.a * matrix.c + this.c * matrix.d, this.b * matrix.c + this.d * matrix.d, this.a * matrix.e + this.c * matrix.f + this.e, this.b * matrix.e + this.d * matrix.f + this.f);\n },\n invert: function () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n if (det === 0) {\n return null;\n }\n return new Matrix(e / det, -b / det, -d / det, a / det, (d * h - e * g) / det, (b * g - a * h) / det);\n },\n clone: function () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n },\n equals: function (other) {\n if (!other) {\n return false;\n }\n return this.a === other.a && this.b === other.b && this.c === other.c && this.d === other.d && this.e === other.e && this.f === other.f;\n },\n round: function (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n return this;\n },\n toArray: function (precision) {\n var result = [\n this.a,\n this.b,\n this.c,\n this.d,\n this.e,\n this.f\n ];\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n return result;\n },\n toString: function (precision, separator) {\n if (separator === void 0) {\n separator = ',';\n }\n return this.toArray(precision).join(separator);\n }\n });\n Matrix.translate = function (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n Matrix.unit = function () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n Matrix.rotate = function (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = x - x * matrix.a + y * matrix.b || 0;\n matrix.f = y - y * matrix.a - x * matrix.b || 0;\n return matrix;\n };\n Matrix.scale = function (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n Matrix.IDENTITY = Matrix.unit();\n function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === 'function') {\n return transformation.matrix();\n }\n return transformation;\n }\n var Point = Class.extend({\n init: function (x, y) {\n this.x = x || 0;\n this.y = y || 0;\n },\n equals: function (other) {\n return other && other.x === this.x && other.y === this.y;\n },\n clone: function () {\n return new Point(this.x, this.y);\n },\n rotate: function (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n },\n translate: function (x, y) {\n this.x += x;\n this.y += y;\n this.geometryChange();\n return this;\n },\n translateWith: function (point) {\n return this.translate(point.x, point.y);\n },\n move: function (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n },\n scale: function (scaleX, scaleY) {\n if (scaleY === void 0) {\n scaleY = scaleX;\n }\n this.x *= scaleX;\n this.y *= scaleY;\n this.geometryChange();\n return this;\n },\n scaleCopy: function (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n },\n transform: function (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n this.geometryChange();\n return this;\n },\n transformCopy: function (transformation) {\n var point = this.clone();\n if (transformation) {\n point.transform(transformation);\n }\n return point;\n },\n distanceTo: function (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n round: function (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n this.geometryChange();\n return this;\n },\n toArray: function (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n return [\n x,\n y\n ];\n },\n toString: function (digits, separator) {\n if (separator === void 0) {\n separator = ' ';\n }\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n return x + separator + y;\n }\n });\n Point.create = function (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n return new Point(arg0, arg1);\n }\n };\n Point.min = function () {\n var arguments$1 = arguments;\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n return new Point(minX, minY);\n };\n Point.max = function () {\n var arguments$1 = arguments;\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n return new Point(maxX, maxY);\n };\n Point.minPoint = function () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n Point.maxPoint = function () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n if (Object.defineProperties) {\n Object.defineProperties(Point, {\n ZERO: {\n get: function () {\n return new Point(0, 0);\n }\n }\n });\n }\n defineAccessors(Point.prototype, [\n 'x',\n 'y'\n ]);\n ObserversMixin.extend(Point.prototype);\n var Size = Class.extend({\n init: function (width, height) {\n this.width = width || 0;\n this.height = height || 0;\n },\n equals: function (other) {\n return other && other.width === this.width && other.height === this.height;\n },\n clone: function () {\n return new Size(this.width, this.height);\n },\n toArray: function (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n return [\n width,\n height\n ];\n }\n });\n Size.create = function (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n return new Size(arg0, arg1);\n }\n };\n if (Object.defineProperties) {\n Object.defineProperties(Size, {\n ZERO: {\n get: function () {\n return new Size(0, 0);\n }\n }\n });\n }\n defineAccessors(Size.prototype, [\n 'width',\n 'height'\n ]);\n ObserversMixin.extend(Size.prototype);\n var Rect = Class.extend({\n init: function (origin, size) {\n if (origin === void 0) {\n origin = new Point();\n }\n if (size === void 0) {\n size = new Size();\n }\n this.setOrigin(origin);\n this.setSize(size);\n },\n clone: function () {\n return new Rect(this.origin.clone(), this.size.clone());\n },\n equals: function (other) {\n return other && other.origin.equals(this.origin) && other.size.equals(this.size);\n },\n setOrigin: function (value) {\n this._observerField('origin', Point.create(value));\n this.geometryChange();\n return this;\n },\n getOrigin: function () {\n return this.origin;\n },\n setSize: function (value) {\n this._observerField('size', Size.create(value));\n this.geometryChange();\n return this;\n },\n getSize: function () {\n return this.size;\n },\n width: function () {\n return this.size.width;\n },\n height: function () {\n return this.size.height;\n },\n topLeft: function () {\n return this.origin.clone();\n },\n bottomRight: function () {\n return this.origin.clone().translate(this.width(), this.height());\n },\n topRight: function () {\n return this.origin.clone().translate(this.width(), 0);\n },\n bottomLeft: function () {\n return this.origin.clone().translate(0, this.height());\n },\n center: function () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n },\n bbox: function (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n return Rect.fromPoints(tl, tr, br, bl);\n },\n transformCopy: function (m) {\n return Rect.fromPoints(this.topLeft().transform(m), this.bottomRight().transform(m));\n },\n expand: function (x, y) {\n if (y === void 0) {\n y = x;\n }\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n this.origin.translate(-x, -y);\n return this;\n },\n expandCopy: function (x, y) {\n return this.clone().expand(x, y);\n },\n containsPoint: function (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n },\n _isOnPath: function (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n }\n });\n Rect.fromPoints = function () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);\n return new Rect(topLeft, size);\n };\n Rect.union = function (a, b) {\n return Rect.fromPoints(Point.min(a.topLeft(), b.topLeft()), Point.max(a.bottomRight(), b.bottomRight()));\n };\n Rect.intersect = function (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n if (rect1.left <= rect2.right && rect2.left <= rect1.right && rect1.top <= rect2.bottom && rect2.top <= rect1.bottom) {\n return Rect.fromPoints(new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)), new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom)));\n }\n };\n ObserversMixin.extend(Rect.prototype);\n var Transformation = Class.extend({\n init: function (matrix) {\n if (matrix === void 0) {\n matrix = Matrix.unit();\n }\n this._matrix = matrix;\n },\n clone: function () {\n return new Transformation(this._matrix.clone());\n },\n equals: function (other) {\n return other && other._matrix.equals(this._matrix);\n },\n translate: function (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n this._optionsChange();\n return this;\n },\n scale: function (scaleX, scaleY, origin) {\n if (scaleY === void 0) {\n scaleY = scaleX;\n }\n if (origin === void 0) {\n origin = null;\n }\n var originPoint = origin;\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n this._optionsChange();\n return this;\n },\n rotate: function (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n this._optionsChange();\n return this;\n },\n multiply: function (transformation) {\n var matrix = toMatrix(transformation);\n this._matrix = this._matrix.multiplyCopy(matrix);\n this._optionsChange();\n return this;\n },\n matrix: function (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n return this._matrix;\n },\n _optionsChange: function () {\n this.optionsChange({\n field: 'transform',\n value: this\n });\n }\n });\n ObserversMixin.extend(Transformation.prototype);\n function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n if (matrix instanceof Transformation) {\n return matrix;\n }\n return new Transformation(matrix);\n }\n var Element$1 = Class.extend({\n init: function (options) {\n this._initOptions(options);\n },\n _initOptions: function (options) {\n if (options === void 0) {\n options = {};\n }\n var clip = options.clip;\n var transform$$1 = options.transform;\n if (transform$$1) {\n options.transform = transform(transform$$1);\n }\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n },\n transform: function (value) {\n if (defined(value)) {\n this.options.set('transform', transform(value));\n } else {\n return this.options.get('transform');\n }\n },\n parentTransform: function () {\n var element = this;\n var parentMatrix;\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n if (parentMatrix) {\n return transform(parentMatrix);\n }\n },\n currentTransform: function (parentTransform) {\n if (parentTransform === void 0) {\n parentTransform = this.parentTransform();\n }\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n if (combinedMatrix) {\n return transform(combinedMatrix);\n }\n },\n visible: function (value) {\n if (defined(value)) {\n this.options.set('visible', value);\n return this;\n }\n return this.options.get('visible') !== false;\n },\n clip: function (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set('clip', value);\n return this;\n }\n return options.get('clip');\n },\n opacity: function (value) {\n if (defined(value)) {\n this.options.set('opacity', value);\n return this;\n }\n return valueOrDefault(this.options.get('opacity'), 1);\n },\n clippedBBox: function (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n },\n containsPoint: function (point, parentTransform) {\n if (this.visible()) {\n var transform$$1 = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform$$1) {\n transformedPoint = point.transformCopy(transform$$1.matrix().invert());\n }\n return this._hasFill() && this._containsPoint(transformedPoint) || this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint);\n }\n return false;\n },\n _hasFill: function () {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n },\n _hasStroke: function () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n },\n _clippedBBox: function (transformation) {\n return this.bbox(transformation);\n }\n });\n Element$1.prototype.nodeType = 'Element';\n ObserversMixin.extend(Element$1.prototype);\n function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n return {\n x: extremeX,\n y: extremeY\n };\n }\n var PI_DIV_2 = Math.PI / 2;\n var Circle$2 = Class.extend({\n init: function (center, radius) {\n if (center === void 0) {\n center = new Point();\n }\n if (radius === void 0) {\n radius = 0;\n }\n this.setCenter(center);\n this.setRadius(radius);\n },\n setCenter: function (value) {\n this._observerField('center', Point.create(value));\n this.geometryChange();\n return this;\n },\n getCenter: function () {\n return this.center;\n },\n equals: function (other) {\n return other && other.center.equals(this.center) && other.radius === this.radius;\n },\n clone: function () {\n return new Circle$2(this.center.clone(), this.radius);\n },\n pointAt: function (angle) {\n return this._pointAt(rad(angle));\n },\n bbox: function (matrix) {\n var this$1 = this;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n return Rect.fromPoints(minPoint, maxPoint);\n },\n _pointAt: function (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n return new Point(center.x + radius * Math.cos(angle), center.y + radius * Math.sin(angle));\n },\n containsPoint: function (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) + Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n },\n _isOnPath: function (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n return radius - width <= pointDistance && pointDistance <= radius + width;\n }\n });\n defineAccessors(Circle$2.prototype, ['radius']);\n ObserversMixin.extend(Circle$2.prototype);\n var GRADIENT = 'Gradient';\n var Paintable = {\n extend: function (proto) {\n proto.fill = this.fill;\n proto.stroke = this.stroke;\n },\n fill: function (color, opacity) {\n var options = this.options;\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = { color: color };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set('fill', newFill);\n } else {\n options.set('fill', color);\n }\n return this;\n }\n return options.get('fill');\n },\n stroke: function (color, width, opacity) {\n if (defined(color)) {\n this.options.set('stroke.color', color);\n if (defined(width)) {\n this.options.set('stroke.width', width);\n }\n if (defined(opacity)) {\n this.options.set('stroke.opacity', opacity);\n }\n return this;\n }\n return this.options.get('stroke');\n }\n };\n var IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n var Measurable = {\n extend: function (proto) {\n proto.bbox = this.bbox;\n proto.geometryChange = this.geometryChange;\n },\n bbox: function (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n var strokeWidth = this.options.get('stroke.width');\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n return bbox;\n },\n geometryChange: function () {\n delete this._bboxCache;\n this.trigger('geometryChange', { element: this });\n }\n };\n function geometryAccessor(name) {\n var fieldName = '_' + name;\n return function (value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n return this[fieldName];\n };\n }\n function defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n }\n var DEFAULT_STROKE = '#000';\n var Circle = Element$1.extend({\n init: function (geometry, options) {\n if (geometry === void 0) {\n geometry = new Circle$2();\n }\n if (options === void 0) {\n options = {};\n }\n Element$1.fn.init.call(this, options);\n this.geometry(geometry);\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n },\n rawBBox: function () {\n return this._geometry.bbox();\n },\n _bbox: function (matrix) {\n return this._geometry.bbox(matrix);\n },\n _containsPoint: function (point) {\n return this.geometry().containsPoint(point);\n },\n _isOnPath: function (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n });\n Circle.prototype.nodeType = 'Circle';\n Paintable.extend(Circle.prototype);\n Measurable.extend(Circle.prototype);\n defineGeometryAccessors(Circle.prototype, ['geometry']);\n var PRECISION = 10;\n function close(a, b, tolerance) {\n if (tolerance === void 0) {\n tolerance = PRECISION;\n }\n return round(Math.abs(a - b), tolerance) === 0;\n }\n function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n }\n function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n }\n var MAX_INTERVAL = 45;\n var pow$1 = Math.pow;\n var Arc$2 = Class.extend({\n init: function (center, options) {\n if (center === void 0) {\n center = new Point();\n }\n if (options === void 0) {\n options = {};\n }\n this.setCenter(center);\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n },\n clone: function () {\n return new Arc$2(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n },\n setCenter: function (value) {\n this._observerField('center', Point.create(value));\n this.geometryChange();\n return this;\n },\n getCenter: function () {\n return this.center;\n },\n pointAt: function (angle) {\n var center = this.center;\n var radian = rad(angle);\n return new Point(center.x + this.radiusX * Math.cos(radian), center.y + this.radiusY * Math.sin(radian));\n },\n curvePoints: function () {\n var this$1 = this;\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [this.pointAt(startAngle)];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n return curvePoints;\n },\n bbox: function (matrix) {\n var this$1 = this;\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = void 0;\n if (currentAngleX < endAngle) {\n currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n var currentPointY = void 0;\n if (currentAngleY < endAngle) {\n currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n return Rect.fromPoints(minPoint, maxPoint);\n },\n _arcInterval: function () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n if (startAngle > endAngle || anticlockwise && startAngle === endAngle) {\n endAngle += 360;\n }\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n },\n _intervalCurvePoints: function (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n },\n _derivativeAt: function (angle) {\n var radian = rad(angle);\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n },\n containsPoint: function (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = radiusX * radiusY / Math.sqrt(pow$1(radiusX, 2) * pow$1(Math.sin(angleRad), 2) + pow$1(radiusY, 2) * pow$1(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = inAngleRange && closeOrLess(distance, pointRadius) || !inAngleRange && (!intersection || intersection.equals(point));\n }\n return containsPoint;\n },\n _isOnPath: function (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n }\n });\n Arc$2.fromPoints = function (start, end, rx, ry, largeArc, swipe, rotation) {\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n return new Arc$2(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n defineAccessors(Arc$2.prototype, [\n 'radiusX',\n 'radiusY',\n 'startAngle',\n 'endAngle',\n 'anticlockwise'\n ]);\n ObserversMixin.extend(Arc$2.prototype);\n function calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n return round(deg(Math.atan2(sin, cos)));\n }\n function normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation;\n if (rotation === void 0) {\n rotation = 0;\n }\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n var sign = largeArc !== swipe ? 1 : -1;\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n var delta = xt2 / rx2 + yt2 / ry2;\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n if (isNaN(constT)) {\n constT = 0;\n }\n var cxT = constT * (rx * yT) / ry;\n var cyT = -constT * (ry * xT) / rx;\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = Math.abs(endAngle) % 360 * signEndAngle;\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n }\n function bboxStartAngle(angle, start) {\n var startAngle = angle;\n while (startAngle < start) {\n startAngle += 90;\n }\n return startAngle;\n }\n var push = [].push;\n var pop = [].pop;\n var splice = [].splice;\n var shift = [].shift;\n var slice = [].slice;\n var unshift = [].unshift;\n var ElementsArray = Class.extend({\n init: function (array) {\n if (array === void 0) {\n array = [];\n }\n this.length = 0;\n this._splice(0, array.length, array);\n },\n elements: function (value) {\n if (value) {\n this._splice(0, this.length, value);\n this._change();\n return this;\n }\n return this.slice(0);\n },\n push: function () {\n var elements = arguments;\n var result = push.apply(this, elements);\n this._add(elements);\n return result;\n },\n slice: function () {\n return slice.call(this);\n },\n pop: function () {\n var length = this.length;\n var result = pop.apply(this);\n if (length) {\n this._remove([result]);\n }\n return result;\n },\n splice: function (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n this._change();\n return result;\n },\n shift: function () {\n var length = this.length;\n var result = shift.apply(this);\n if (length) {\n this._remove([result]);\n }\n return result;\n },\n unshift: function () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n this._add(elements);\n return result;\n },\n indexOf: function (element) {\n var this$1 = this;\n var length = this.length;\n for (var idx = 0; idx < length; idx++) {\n if (this$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n },\n _splice: function (index, howMany, elements) {\n var result = splice.apply(this, [\n index,\n howMany\n ].concat(elements));\n this._clearObserver(result);\n this._setObserver(elements);\n return result;\n },\n _add: function (elements) {\n this._setObserver(elements);\n this._change();\n },\n _remove: function (elements) {\n this._clearObserver(elements);\n this._change();\n },\n _setObserver: function (elements) {\n var this$1 = this;\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1);\n }\n },\n _clearObserver: function (elements) {\n var this$1 = this;\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1);\n }\n },\n _change: function () {\n }\n });\n ObserversMixin.extend(ElementsArray.prototype);\n var GeometryElementsArray = ElementsArray.extend({\n _change: function () {\n this.geometryChange();\n }\n });\n function pointAccessor(name) {\n var fieldName = '_' + name;\n return function (value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n return this[fieldName];\n };\n }\n function definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n }\n function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n return rotatedPoint.x < endPoint.x;\n }\n function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] + 3 * Math.pow(t1, 2) * t * points[1][field] + 3 * Math.pow(t, 2) * t1 * points[2][field] + Math.pow(t, 3) * points[3][field];\n }\n function toCubicPolynomial(points, field) {\n return [\n -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n }\n var ComplexNumber = Class.extend({\n init: function (real, img) {\n if (real === void 0) {\n real = 0;\n }\n if (img === void 0) {\n img = 0;\n }\n this.real = real;\n this.img = img;\n },\n add: function (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n },\n addConstant: function (value) {\n return new ComplexNumber(this.real + value, this.img);\n },\n negate: function () {\n return new ComplexNumber(-this.real, -this.img);\n },\n multiply: function (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img, this.real * cNumber.img + this.img * cNumber.real);\n },\n multiplyConstant: function (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n },\n nthRoot: function (n) {\n var rad$$1 = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n return new ComplexNumber(nthR * Math.cos(rad$$1 / n), nthR * Math.sin(rad$$1 / n));\n },\n equals: function (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n },\n isReal: function () {\n return this.img === 0;\n }\n });\n function numberSign(x) {\n return x < 0 ? -1 : 1;\n }\n function solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n }\n function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0, 1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, -Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n y1 = x1.add(x2);\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n var result = [];\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n return result;\n }\n function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n }\n function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, 'x');\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], 'y', points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && ((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x || 0 < roots[i] && roots[i] < 1)) {\n count++;\n }\n }\n return count;\n }\n function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x) / (maxX - minX) + minY - point.y >= 0;\n }\n }\n return intersects ? 1 : 0;\n }\n var Segment = Class.extend({\n init: function (anchor, controlIn, controlOut) {\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n },\n bboxTo: function (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(segmentAnchor, this.controlOut().transformCopy(matrix), toSegment.controlIn().transformCopy(matrix), toSegmentAnchor);\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n return rect;\n },\n _lineBoundingBox: function (p1, p2) {\n return Rect.fromPoints(p1, p2);\n },\n _curveBoundingBox: function (p1, cp1, cp2, p2) {\n var points = [\n p1,\n cp1,\n cp2,\n p2\n ];\n var extremesX = this._curveExtremesFor(points, 'x');\n var extremesY = this._curveExtremesFor(points, 'y');\n var xLimits = arrayLimits([\n extremesX.min,\n extremesX.max,\n p1.x,\n p2.x\n ]);\n var yLimits = arrayLimits([\n extremesY.min,\n extremesY.max,\n p1.y,\n p2.y\n ]);\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n },\n _curveExtremesFor: function (points, field) {\n var extremes = this._curveExtremes(points[0][field], points[1][field], points[2][field], points[3][field]);\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n },\n _curveExtremes: function (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = -2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (-b + sqrt) / (2 * a);\n t2 = (-b - sqrt) / (2 * a);\n }\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n return {\n min: min,\n max: max\n };\n },\n _intersectionsTo: function (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([\n this.anchor(),\n this.controlOut(),\n segment.controlIn(),\n segment.anchor()\n ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n },\n _isOnCurveTo: function (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n if (endSegment === 'start' && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === 'end' && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n var points = [\n p1,\n p2,\n p3,\n p4\n ];\n if (hasRootsInRange(points, point, 'x', 'y', width) || hasRootsInRange(points, point, 'y', 'x', width)) {\n return true;\n }\n var rotation = transform().rotate(45, point);\n var rotatedPoints = [\n p1.transformCopy(rotation),\n p2.transformCopy(rotation),\n p3.transformCopy(rotation),\n p4.transformCopy(rotation)\n ];\n return hasRootsInRange(rotatedPoints, point, 'x', 'y', width) || hasRootsInRange(rotatedPoints, point, 'y', 'x', width);\n }\n },\n _isOnLineTo: function (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([\n p1.x,\n p1.y - width / 2\n ], [\n p1.distanceTo(p2),\n width\n ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n },\n _isOnPathTo: function (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n }\n });\n definePointAccessors(Segment.prototype, [\n 'anchor',\n 'controlIn',\n 'controlOut'\n ]);\n ObserversMixin.extend(Segment.prototype);\n function arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n for (var i = 0; i < length; i++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n return {\n min: min,\n max: max\n };\n }\n function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n return boundingBox;\n }\n function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n return boundingBox;\n }\n var MultiPath = Element$1.extend({\n init: function (options) {\n Element$1.fn.init.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n },\n moveTo: function (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n this.paths.push(path);\n return this;\n },\n lineTo: function (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n return this;\n },\n curveTo: function (controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n return this;\n },\n arc: function (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n return this;\n },\n arcTo: function (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n return this;\n },\n close: function () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n return this;\n },\n _bbox: function (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n },\n rawBBox: function () {\n return elementsBoundingBox(this.paths, false);\n },\n _containsPoint: function (point) {\n var paths = this.paths;\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n },\n _isOnPath: function (point) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n },\n _clippedBBox: function (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n }\n });\n MultiPath.prototype.nodeType = 'MultiPath';\n Paintable.extend(MultiPath.prototype);\n Measurable.extend(MultiPath.prototype);\n var ShapeMap = {\n l: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n point.translateWith(position);\n }\n path.lineTo(point.x, point.y);\n position.x = point.x;\n position.y = point.y;\n }\n },\n c: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n path.curveTo(controlOut, controlIn, point);\n position.x = point.x;\n position.y = point.y;\n }\n },\n v: function (path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n h: function (path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n a: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n s: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n if (previousCommand === 's' || previousCommand === 'c') {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = void 0;\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n lastControlIn = controlIn;\n path.curveTo(controlOut, controlIn, endPoint);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n q: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n t: function (path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n if (previousCommand === 'q' || previousCommand === 't') {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone().translateWith(position.scaleCopy(-1 / 3)).scale(3 / 2);\n }\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n };\n function toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n }\n function reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n }\n var third = 1 / 3;\n function quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n }\n var SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\n var SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\n var MOVE = 'm';\n var CLOSE = 'z';\n function parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function (match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n }\n var PathParser = Class.extend({\n parse: function (str, options) {\n var multiPath = new MultiPath(options);\n var position = new Point();\n var previousCommand;\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n multiPath.moveTo(position.x, position.y);\n if (parameters.length > 2) {\n command = 'l';\n parameters.splice(0, 2);\n }\n }\n if (ShapeMap[command]) {\n ShapeMap[command](multiPath, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n });\n if (closePath && closePath.toLowerCase() === CLOSE) {\n multiPath.close();\n }\n } else if (command !== MOVE) {\n throw new Error('Error while parsing SVG path. Unsupported command: ' + command);\n }\n previousCommand = command;\n });\n return multiPath;\n }\n });\n PathParser.current = new PathParser();\n var Path = Element$1.extend({\n init: function (options) {\n Element$1.fn.init.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n },\n moveTo: function (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n this.lineTo(x, y);\n return this;\n },\n lineTo: function (x, y) {\n var point = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point);\n this.segments.push(segment);\n return this;\n },\n curveTo: function (controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n this.segments.push(segment);\n }\n return this;\n },\n arc: function (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start), anchor.y - radiusY * Math.sin(start));\n var arc = new Arc$2(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n this._addArcSegments(arc);\n }\n return this;\n },\n arcTo: function (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc$2.fromPoints(anchor, end, rx, ry, largeArc, swipe, rotation);\n this._addArcSegments(arc);\n }\n return this;\n },\n _addArcSegments: function (arc) {\n var this$1 = this;\n this.suspend();\n var curvePoints = arc.curvePoints();\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n this.resume();\n this.geometryChange();\n },\n close: function () {\n this.options.closed = true;\n this.geometryChange();\n return this;\n },\n rawBBox: function () {\n return this._bbox();\n },\n _containsPoint: function (point) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n return intersectionsCount % 2 !== 0;\n },\n _isOnPath: function (point, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n return true;\n }\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n },\n _bbox: function (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n return boundingBox;\n }\n });\n Path.fromRect = function (rect, options) {\n return new Path(options).moveTo(rect.topLeft()).lineTo(rect.topRight()).lineTo(rect.bottomRight()).lineTo(rect.bottomLeft()).close();\n };\n Path.fromPoints = function (points, options) {\n if (points) {\n var path = new Path(options);\n for (var i = 0; i < points.length; i++) {\n var point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n return path;\n }\n };\n Path.fromArc = function (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n Path.prototype.nodeType = 'Path';\n Paintable.extend(Path.prototype);\n Measurable.extend(Path.prototype);\n Path.parse = function (str, options) {\n return PathParser.current.parse(str, options);\n };\n var DEFAULT_STROKE$1 = '#000';\n var Arc = Element$1.extend({\n init: function (geometry, options) {\n if (geometry === void 0) {\n geometry = new Arc$2();\n }\n if (options === void 0) {\n options = {};\n }\n Element$1.fn.init.call(this, options);\n this.geometry(geometry);\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE$1);\n }\n },\n _bbox: function (matrix) {\n return this._geometry.bbox(matrix);\n },\n rawBBox: function () {\n return this.geometry().bbox();\n },\n toPath: function () {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n for (var i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n return path;\n },\n _containsPoint: function (point) {\n return this.geometry().containsPoint(point);\n },\n _isOnPath: function (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n });\n Arc.prototype.nodeType = 'Arc';\n Paintable.extend(Arc.prototype);\n Measurable.extend(Arc.prototype);\n defineGeometryAccessors(Arc.prototype, ['geometry']);\n var DEFAULT_FONT = '12px sans-serif';\n var DEFAULT_FILL = '#000';\n var Text = Element$1.extend({\n init: function (content, position, options) {\n if (position === void 0) {\n position = new Point();\n }\n if (options === void 0) {\n options = {};\n }\n Element$1.fn.init.call(this, options);\n this.content(content);\n this.position(position);\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n },\n content: function (value) {\n if (defined(value)) {\n this.options.set('content', value);\n return this;\n }\n return this.options.get('content');\n },\n measure: function () {\n var metrics = kendoUtil.measureText(this.content(), { font: this.options.get('font') });\n return metrics;\n },\n rect: function () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [\n size.width,\n size.height\n ]);\n },\n bbox: function (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n },\n rawBBox: function () {\n return this.rect().bbox();\n },\n _containsPoint: function (point) {\n return this.rect().containsPoint(point);\n }\n });\n Text.prototype.nodeType = 'Text';\n Paintable.extend(Text.prototype);\n definePointAccessors(Text.prototype, ['position']);\n var Image$1 = Element$1.extend({\n init: function (src, rect, options) {\n if (rect === void 0) {\n rect = new Rect();\n }\n if (options === void 0) {\n options = {};\n }\n Element$1.fn.init.call(this, options);\n this.src(src);\n this.rect(rect);\n },\n src: function (value) {\n if (defined(value)) {\n this.options.set('src', value);\n return this;\n }\n return this.options.get('src');\n },\n bbox: function (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n },\n rawBBox: function () {\n return this._rect.bbox();\n },\n _containsPoint: function (point) {\n return this._rect.containsPoint(point);\n },\n _hasFill: function () {\n return this.src();\n }\n });\n Image$1.prototype.nodeType = 'Image';\n defineGeometryAccessors(Image$1.prototype, ['rect']);\n var Traversable = {\n extend: function (proto, childrenField) {\n proto.traverse = function (callback) {\n var children = this[childrenField];\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n return this;\n };\n }\n };\n var Group = Element$1.extend({\n init: function (options) {\n Element$1.fn.init.call(this, options);\n this.children = [];\n },\n childrenChange: function (action, items, index) {\n this.trigger('childrenChange', {\n action: action,\n items: items,\n index: index\n });\n },\n append: function () {\n append(this.children, arguments);\n this._reparent(arguments, this);\n this.childrenChange('add', arguments);\n return this;\n },\n insert: function (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n this.childrenChange('add', [element], index);\n return this;\n },\n insertAt: function (element, index) {\n return this.insert(index, element);\n },\n remove: function (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange('remove', [element], index);\n }\n return this;\n },\n removeAt: function (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange('remove', [element], index);\n }\n return this;\n },\n clear: function () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n this.childrenChange('remove', items, 0);\n return this;\n },\n bbox: function (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n },\n rawBBox: function () {\n return elementsBoundingBox(this.children, false);\n },\n _clippedBBox: function (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n },\n currentTransform: function (transformation) {\n return Element$1.prototype.currentTransform.call(this, transformation) || null;\n },\n containsPoint: function (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n },\n _reparent: function (elements, newParent) {\n var this$1 = this;\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1 && parent.remove) {\n parent.remove(child);\n }\n child.parent = newParent;\n }\n }\n });\n Group.prototype.nodeType = 'Group';\n Traversable.extend(Group.prototype, 'children');\n function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || transform();\n var matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n transofrm.matrix(matrix);\n element.transform(transofrm);\n }\n function alignStart(size, rect, align, axis, sizeField) {\n var start;\n if (align === 'start') {\n start = rect.origin[axis];\n } else if (align === 'end') {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n return start;\n }\n function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n if (align === 'start') {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === 'end') {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n return start;\n }\n var DEFAULT_OPTIONS = {\n alignContent: 'start',\n justifyContent: 'start',\n alignItems: 'start',\n spacing: 0,\n orientation: 'horizontal',\n lineSpacing: 0,\n wrap: true,\n revers: false\n };\n var forEach = function (elements, callback) {\n elements.forEach(callback);\n };\n var forEachReverse = function (elements, callback) {\n var length = elements.length;\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n };\n var Layout = Group.extend({\n init: function (rect, options) {\n Group.fn.init.call(this, $.extend({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n },\n rect: function (value) {\n if (value) {\n this._rect = value;\n return this;\n }\n return this._rect;\n },\n _initMap: function () {\n var options = this.options;\n var fieldMap = this._fieldMap;\n if (options.orientation === 'horizontal') {\n fieldMap.sizeField = 'width';\n fieldMap.groupsSizeField = 'height';\n fieldMap.groupAxis = 'x';\n fieldMap.groupsAxis = 'y';\n } else {\n fieldMap.sizeField = 'height';\n fieldMap.groupsSizeField = 'width';\n fieldMap.groupAxis = 'y';\n fieldMap.groupsAxis = 'x';\n }\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n },\n reflow: function () {\n var this$1 = this;\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n if (this.options.transform) {\n this.transform(null);\n }\n var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n var arrangeElements = function (bbox, idx) {\n var element = group.elements[idx];\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this$1.forEach(group.bboxes, arrangeElements);\n groupStart += group.lineSize + options.lineSpacing;\n }\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform$$1 = transform();\n if (groupAxis === 'x') {\n transform$$1.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform$$1.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform$$1.scale(scale, scale);\n this.transform(transform$$1);\n }\n },\n _initGroups: function () {\n var this$1 = this;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function () {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1._newGroup();\n } else {\n addGroup();\n group = this$1._newGroup();\n this$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1._addToGroup(group, bbox, element);\n }\n }\n }\n if (group.bboxes.length) {\n addGroup();\n }\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n },\n _addToGroup: function (group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n },\n _newGroup: function () {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n }\n });\n var Rect$2 = Element$1.extend({\n init: function (geometry, options) {\n if (geometry === void 0) {\n geometry = new Rect();\n }\n if (options === void 0) {\n options = {};\n }\n Element$1.fn.init.call(this, options);\n this.geometry(geometry);\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n },\n _bbox: function (matrix) {\n return this._geometry.bbox(matrix);\n },\n rawBBox: function () {\n return this._geometry.bbox();\n },\n _containsPoint: function (point) {\n return this._geometry.containsPoint(point);\n },\n _isOnPath: function (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n });\n Rect$2.prototype.nodeType = 'Rect';\n Paintable.extend(Rect$2.prototype);\n Measurable.extend(Rect$2.prototype);\n defineGeometryAccessors(Rect$2.prototype, ['geometry']);\n function alignElements(elements, rect, alignment, axis, sizeField) {\n for (var idx = 0; idx < elements.length; idx++) {\n var bbox = elements[idx].clippedBBox();\n if (bbox) {\n var point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || 'start', axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n }\n function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, 'x', 'width');\n }\n function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, 'y', 'height');\n }\n function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n var origin = new Point();\n var previousBBox = elements[0].bbox;\n for (var idx = 1; idx < elements.length; idx++) {\n var element = elements[idx].element;\n var bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n }\n function createStackElements(elements) {\n var stackElements = [];\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n return stackElements;\n }\n function stack(elements) {\n stackElements(createStackElements(elements), 'x', 'y', 'width');\n }\n function vStack(elements) {\n stackElements(createStackElements(elements), 'y', 'x', 'height');\n }\n function getStacks(elements, rect, sizeField) {\n var maxSize = rect.size[sizeField];\n var stacks = [];\n var stack = [];\n var stackSize = 0;\n var element, bbox;\n var addElementToStack = function () {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n for (var idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n bbox = element.clippedBBox();\n if (bbox) {\n var size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n if (stack.length) {\n stacks.push(stack);\n }\n return stacks;\n }\n function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n var stacks = getStacks(elements, rect, sizeField);\n var origin = rect.origin.clone();\n var result = [];\n for (var idx = 0; idx < stacks.length; idx++) {\n var stack = stacks[idx];\n var startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (var elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n }\n function wrap(elements, rect) {\n return wrapElements(elements, rect, 'x', 'y', 'width');\n }\n function vWrap(elements, rect) {\n return wrapElements(elements, rect, 'y', 'x', 'height');\n }\n function fit(element, rect) {\n var bbox = element.clippedBBox();\n if (bbox) {\n var elementSize = bbox.size;\n var rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n var scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n var transform$$1 = element.transform() || transform();\n transform$$1.scale(scale, scale);\n element.transform(transform$$1);\n }\n }\n }\n var StopsArray = ElementsArray.extend({\n _change: function () {\n this.optionsChange({ field: 'stops' });\n }\n });\n function optionsAccessor(name) {\n return function (value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n return this.options.get(name);\n };\n }\n function defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n }\n var GradientStop = Class.extend({\n init: function (offset, color, opacity) {\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n this.options.addObserver(this);\n }\n });\n GradientStop.create = function (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n return stop;\n }\n };\n defineOptionsAccessors(GradientStop.prototype, [\n 'offset',\n 'color',\n 'opacity'\n ]);\n ObserversMixin.extend(GradientStop.prototype);\n var Gradient = Class.extend({\n init: function (options) {\n if (options === void 0) {\n options = {};\n }\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n },\n userSpace: function (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n return this._userSpace;\n },\n _createStops: function (stops) {\n if (stops === void 0) {\n stops = [];\n }\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n return result;\n },\n addStop: function (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n },\n removeStop: function (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n }\n });\n Gradient.prototype.nodeType = 'Gradient';\n ObserversMixin.extend(Gradient.prototype);\n $.extend(Gradient.prototype, {\n optionsChange: function (e) {\n this.trigger('optionsChange', {\n field: 'gradient' + (e ? '.' + e.field : ''),\n value: this\n });\n },\n geometryChange: function () {\n this.optionsChange();\n }\n });\n var LinearGradient = Gradient.extend({\n init: function (options) {\n if (options === void 0) {\n options = {};\n }\n Gradient.fn.init.call(this, options);\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n });\n definePointAccessors(LinearGradient.prototype, [\n 'start',\n 'end'\n ]);\n var RadialGradient = Gradient.extend({\n init: function (options) {\n if (options === void 0) {\n options = {};\n }\n Gradient.fn.init.call(this, options);\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n },\n radius: function (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n return this._radius;\n },\n fallbackFill: function (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n return this._fallbackFill;\n }\n });\n definePointAccessors(RadialGradient.prototype, ['center']);\n function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n }\n function linear(position) {\n return position;\n }\n function easeOutElastic(position, time, start, diff) {\n var s = 1.70158, p = 0, a = diff;\n if (position === 0) {\n return start;\n }\n if (position === 1) {\n return start + diff;\n }\n if (!p) {\n p = 0.5;\n }\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n return a * Math.pow(2, -10 * position) * Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n }\n var easingFunctions = {\n swing: swing,\n linear: linear,\n easeOutElastic: easeOutElastic\n };\n var AnimationFactory = Class.extend({\n init: function () {\n this._items = [];\n },\n register: function (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n },\n create: function (element, options) {\n var items = this._items;\n var match;\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n if (match) {\n return new match.type(element, options);\n }\n }\n });\n AnimationFactory.current = new AnimationFactory();\n var now = Date.now || function () {\n return new Date().getTime();\n };\n var Animation = Class.extend({\n init: function (element, options) {\n this.options = $.extend({}, this.options, options);\n this.element = element;\n },\n setup: function () {\n },\n step: function () {\n },\n play: function () {\n var this$1 = this;\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay;\n if (delay === void 0) {\n delay = 0;\n }\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1._stopped) {\n return;\n }\n var wallTime = now();\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n this$1.step(easingPosition);\n if (wallTime < finish) {\n kendo.animationFrame(loop);\n } else {\n this$1.abort();\n }\n };\n loop();\n }, delay);\n }\n },\n abort: function () {\n this._stopped = true;\n },\n destroy: function () {\n this.abort();\n }\n });\n Animation.prototype.options = {\n duration: 500,\n easing: 'swing'\n };\n Animation.create = function (type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n };\n var SurfaceFactory = Class.extend({\n init: function () {\n this._items = [];\n },\n register: function (name, type, order) {\n var items = this._items;\n var first = items[0];\n var entry = {\n name: name,\n type: type,\n order: order\n };\n if (!first || order < first.order) {\n items.unshift(entry);\n } else {\n items.push(entry);\n }\n },\n create: function (element, options) {\n var items = this._items;\n var match = items[0];\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n if (match) {\n return new match.type(element, options);\n }\n kendo.logToConsole('Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n' + '- The browser does not support SVG and Canvas. User agent: ' + navigator.userAgent);\n }\n });\n SurfaceFactory.current = new SurfaceFactory();\n var events = [\n 'click',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'resize'\n ];\n var Surface = kendo.Observable.extend({\n init: function (element, options) {\n kendo.Observable.fn.init.call(this);\n this.options = $.extend({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n this._click = this._handler('click');\n this._mouseenter = this._handler('mouseenter');\n this._mouseleave = this._handler('mouseleave');\n this._mousemove = this._handler('mousemove');\n this._visual = new Group();\n elementSize(element, this.options);\n this.bind(events, this.options);\n this._enableTracking();\n },\n draw: function (element) {\n this._visual.children.push(element);\n },\n clear: function () {\n this._visual.children = [];\n },\n destroy: function () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n },\n eventTarget: function (e) {\n var this$1 = this;\n var domNode = eventElement(e);\n var node;\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1.element) {\n break;\n }\n domNode = domNode.parentElement;\n }\n if (node) {\n return node.srcElement;\n }\n },\n exportVisual: function () {\n return this._visual;\n },\n getSize: function () {\n return elementSize(this.element);\n },\n currentSize: function (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n },\n setSize: function (size) {\n elementSize(this.element, size);\n this.currentSize(size);\n this._resize();\n },\n resize: function (force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger('resize', size);\n }\n },\n size: function (value) {\n if (!value) {\n return this.getSize();\n }\n this.setSize(value);\n },\n suspendTracking: function () {\n this._suspendedTracking = true;\n },\n resumeTracking: function () {\n this._suspendedTracking = false;\n },\n _enableTracking: function () {\n },\n _resize: function () {\n },\n _handler: function (eventName) {\n var this$1 = this;\n return function (e) {\n var node = this$1.eventTarget(e);\n if (node && !this$1._suspendedTracking) {\n this$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n },\n _elementOffset: function () {\n var element = this.element;\n var ref = elementStyles(element, [\n 'paddingLeft',\n 'paddingTop'\n ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var ref$1 = elementOffset(element);\n var left = ref$1.left;\n var top = ref$1.top;\n return {\n left: left + parseInt(paddingLeft, 10),\n top: top + parseInt(paddingTop, 10)\n };\n },\n _surfacePoint: function (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n return new Point(x, y);\n }\n });\n Surface.create = function (element, options) {\n return SurfaceFactory.current.create(element, options);\n };\n Surface.support = {};\n var BaseNode = Class.extend({\n init: function (srcElement) {\n this.childNodes = [];\n this.parent = null;\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n },\n destroy: function () {\n var this$1 = this;\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1.childNodes[i].destroy();\n }\n this.parent = null;\n },\n load: function () {\n },\n observe: function () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n },\n append: function (node) {\n this.childNodes.push(node);\n node.parent = this;\n },\n insertAt: function (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n },\n remove: function (index, count) {\n var this$1 = this;\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n },\n removeSelf: function () {\n this.clear();\n this.destroy();\n },\n clear: function () {\n this.remove(0, this.childNodes.length);\n },\n invalidate: function () {\n if (this.parent) {\n this.parent.invalidate();\n }\n },\n geometryChange: function () {\n this.invalidate();\n },\n optionsChange: function () {\n this.invalidate();\n },\n childrenChange: function (e) {\n if (e.action === 'add') {\n this.load(e.items, e.index);\n } else if (e.action === 'remove') {\n this.remove(e.index, e.items.length);\n }\n this.invalidate();\n }\n });\n function renderAttr(name, value) {\n return defined(value) && value !== null ? ' ' + name + '=\"' + value + '\" ' : '';\n }\n function renderAllAttr(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n return output;\n }\n function renderStyle(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + ':' + value + ';';\n }\n }\n if (output !== '') {\n return output;\n }\n }\n var NODE_MAP = {};\n var SVG_NS = 'http://www.w3.org/2000/svg';\n var NONE = 'none';\n var renderSVG = function (container, svg) {\n container.innerHTML = svg;\n };\n if (typeof document !== 'undefined') {\n var testFragment = '<svg xmlns=\\'' + SVG_NS + '\\'></svg>';\n var testContainer = document.createElement('div');\n var hasParser = typeof DOMParser !== 'undefined';\n testContainer.innerHTML = testFragment;\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function (container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(svg, 'text/xml');\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n container.innerHTML = '';\n container.appendChild(importedDoc);\n };\n }\n }\n var renderSVG$1 = renderSVG;\n var TRANSFORM = 'transform';\n var DefinitionMap = {\n clip: 'clip-path',\n fill: 'fill'\n };\n function isDefinition(type, value) {\n return type === 'clip' || type === 'fill' && (!value || value.nodeType === 'Gradient');\n }\n function baseUrl() {\n var base = document.getElementsByTagName('base')[0];\n var href = document.location.href;\n var url = '';\n if (base && !supportBrowser.msie) {\n var hashIndex = href.indexOf('#');\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n url = href;\n }\n return url;\n }\n var Node = BaseNode.extend({\n init: function (srcElement, options) {\n BaseNode.fn.init.call(this, srcElement);\n this.definitions = {};\n this.options = options;\n },\n destroy: function () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n this.clearDefinitions();\n BaseNode.fn.destroy.call(this);\n },\n load: function (elements, pos) {\n var this$1 = this;\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1.options);\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n childNode.createDefinitions();\n if (children && children.length > 0) {\n childNode.load(children);\n }\n var element = this$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n },\n root: function () {\n var root = this;\n while (root.parent) {\n root = root.parent;\n }\n return root;\n },\n attachTo: function (domElement, pos) {\n var container = document.createElement('div');\n renderSVG$1(container, '<svg xmlns=\\'' + SVG_NS + '\\' version=\\'1.1\\'>' + this.render() + '</svg>');\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n },\n setElement: function (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n this.element = element;\n this.element._kendoNode = this;\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n },\n clear: function () {\n this.clearDefinitions();\n if (this.element) {\n this.element.innerHTML = '';\n }\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n this.childNodes = [];\n },\n removeSelf: function () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n BaseNode.fn.removeSelf.call(this);\n },\n template: function () {\n return this.renderChildren();\n },\n render: function () {\n return this.template();\n },\n renderChildren: function () {\n var nodes = this.childNodes;\n var output = '';\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n return output;\n },\n optionsChange: function (e) {\n var field = e.field;\n var value = e.value;\n if (field === 'visible') {\n this.css('display', value ? '' : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === 'opacity') {\n this.attr('opacity', value);\n } else if (field === 'cursor') {\n this.css('cursor', value);\n } else if (field === 'id') {\n if (value) {\n this.attr('id', value);\n } else {\n this.removeAttr('id');\n }\n }\n BaseNode.fn.optionsChange.call(this, e);\n },\n attr: function (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n },\n allAttr: function (attrs) {\n var this$1 = this;\n for (var i = 0; i < attrs.length; i++) {\n this$1.attr(attrs[i][0], attrs[i][1]);\n }\n },\n css: function (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n },\n allCss: function (styles) {\n var this$1 = this;\n for (var i = 0; i < styles.length; i++) {\n this$1.css(styles[i][0], styles[i][1]);\n }\n },\n removeAttr: function (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n },\n mapTransform: function (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n 'matrix(' + transform.matrix().toString(6) + ')'\n ]);\n }\n return attrs;\n },\n renderTransform: function () {\n return renderAllAttr(this.mapTransform(this.srcElement.transform()));\n },\n transformChange: function (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n },\n mapStyle: function () {\n var options = this.srcElement.options;\n var style = [[\n 'cursor',\n options.cursor\n ]];\n if (options.visible === false) {\n style.push([\n 'display',\n NONE\n ]);\n }\n return style;\n },\n renderStyle: function () {\n return renderAttr('style', renderStyle(this.mapStyle(true)));\n },\n renderOpacity: function () {\n return renderAttr('opacity', this.srcElement.options.opacity);\n },\n renderId: function () {\n return renderAttr('id', this.srcElement.options.id);\n },\n createDefinitions: function () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: 'add',\n definitions: definitions\n });\n }\n }\n },\n definitionChange: function (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n },\n updateDefinition: function (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: 'remove',\n definitions: definition\n });\n delete definitions[type];\n }\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: 'add',\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n },\n clearDefinitions: function () {\n var definitions = this.definitions;\n this.definitionChange({\n action: 'remove',\n definitions: definitions\n });\n this.definitions = {};\n },\n renderDefinitions: function () {\n return renderAllAttr(this.mapDefinitions());\n },\n mapDefinitions: function () {\n var this$1 = this;\n var definitions = this.definitions;\n var attrs = [];\n for (var field in definitions) {\n attrs.push([\n DefinitionMap[field],\n this$1.refUrl(definitions[field].id)\n ]);\n }\n return attrs;\n },\n refUrl: function (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, '\\\\\\'');\n var base = skipBaseHref ? '' : baseHref;\n return 'url(' + base + '#' + id + ')';\n },\n baseUrl: function () {\n return baseUrl();\n }\n });\n var GradientStopNode = Node.extend({\n template: function () {\n return '<stop ' + this.renderOffset() + ' ' + this.renderStyle() + ' />';\n },\n renderOffset: function () {\n return renderAttr('offset', this.srcElement.offset());\n },\n mapStyle: function () {\n var srcElement = this.srcElement;\n return [\n [\n 'stop-color',\n srcElement.color()\n ],\n [\n 'stop-opacity',\n srcElement.opacity()\n ]\n ];\n },\n optionsChange: function (e) {\n if (e.field === 'offset') {\n this.attr(e.field, e.value);\n } else if (e.field === 'color' || e.field === 'opacity') {\n this.css('stop-' + e.field, e.value);\n }\n }\n });\n var GradientNode = Node.extend({\n init: function (srcElement) {\n Node.fn.init.call(this, srcElement);\n this.id = srcElement.id;\n this.loadStops();\n },\n loadStops: function () {\n var this$1 = this;\n var stops = this.srcElement.stops;\n var element = this.element;\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n },\n optionsChange: function (e) {\n if (e.field === 'gradient.stops') {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === 'gradient') {\n this.allAttr(this.mapCoordinates());\n }\n },\n renderCoordinates: function () {\n return renderAllAttr(this.mapCoordinates());\n },\n mapSpace: function () {\n return [\n 'gradientUnits',\n this.srcElement.userSpace() ? 'userSpaceOnUse' : 'objectBoundingBox'\n ];\n }\n });\n var LinearGradientNode = GradientNode.extend({\n template: function () {\n return '<linearGradient id=\\'' + this.id + '\\' ' + this.renderCoordinates() + '>' + this.renderChildren() + '</linearGradient>';\n },\n mapCoordinates: function () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var attrs = [\n [\n 'x1',\n start.x\n ],\n [\n 'y1',\n start.y\n ],\n [\n 'x2',\n end.x\n ],\n [\n 'y2',\n end.y\n ],\n this.mapSpace()\n ];\n return attrs;\n }\n });\n var RadialGradientNode = GradientNode.extend({\n template: function () {\n return '<radialGradient id=\\'' + this.id + '\\' ' + this.renderCoordinates() + '>' + this.renderChildren() + '</radialGradient>';\n },\n mapCoordinates: function () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [\n 'cx',\n center.x\n ],\n [\n 'cy',\n center.y\n ],\n [\n 'r',\n radius\n ],\n this.mapSpace()\n ];\n return attrs;\n }\n });\n var ClipNode = Node.extend({\n init: function (srcElement) {\n Node.fn.init.call(this);\n this.srcElement = srcElement;\n this.id = srcElement.id;\n this.load([srcElement]);\n },\n template: function () {\n return '<clipPath id=\\'' + this.id + '\\'>' + this.renderChildren() + '</clipPath>';\n }\n });\n var DefinitionNode = Node.extend({\n init: function () {\n Node.fn.init.call(this);\n this.definitionMap = {};\n },\n attachTo: function (domElement) {\n this.element = domElement;\n },\n template: function () {\n return '<defs>' + this.renderChildren() + '</defs>';\n },\n definitionChange: function (e) {\n var definitions = e.definitions;\n var action = e.action;\n if (action === 'add') {\n this.addDefinitions(definitions);\n } else if (action === 'remove') {\n this.removeDefinitions(definitions);\n }\n },\n createDefinition: function (type, item) {\n var nodeType;\n if (type === 'clip') {\n nodeType = ClipNode;\n } else if (type === 'fill') {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n },\n addDefinitions: function (definitions) {\n var this$1 = this;\n for (var field in definitions) {\n this$1.addDefinition(field, definitions[field]);\n }\n },\n addDefinition: function (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n },\n removeDefinitions: function (definitions) {\n var this$1 = this;\n for (var field in definitions) {\n this$1.removeDefinition(definitions[field]);\n }\n },\n removeDefinition: function (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n }\n });\n var RootNode = Node.extend({\n init: function (options) {\n Node.fn.init.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n },\n attachTo: function (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n },\n clear: function () {\n BaseNode.prototype.clear.call(this);\n },\n template: function () {\n return this.defs.render() + this.renderChildren();\n },\n definitionChange: function (e) {\n this.defs.definitionChange(e);\n }\n });\n var RTL = 'rtl';\n function alignToScreen(element) {\n var ctm;\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) {\n }\n if (ctm) {\n var left = -ctm.e % 1;\n var top = -ctm.f % 1;\n var style = element.style;\n if (left !== 0 || top !== 0) {\n style.left = left + 'px';\n style.top = top + 'px';\n }\n }\n }\n var Surface$1 = Surface.extend({\n init: function (element, options) {\n Surface.fn.init.call(this, element, options);\n this._root = new RootNode($.extend({ rtl: elementStyles(element, 'direction').direction === RTL }, this.options));\n renderSVG$1(this.element, this._template());\n this._rootElement = this.element.firstElementChild;\n alignToScreen(this._rootElement);\n this._root.attachTo(this._rootElement);\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n this.resize();\n },\n destroy: function () {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n Surface.fn.destroy.call(this);\n },\n translate: function (offset) {\n var viewBox = Math.round(offset.x) + ' ' + Math.round(offset.y) + ' ' + this._size.width + ' ' + this._size.height;\n this._offset = offset;\n this._rootElement.setAttribute('viewBox', viewBox);\n },\n draw: function (element) {\n Surface.fn.draw.call(this, element);\n this._root.load([element]);\n },\n clear: function () {\n Surface.fn.clear.call(this);\n this._root.clear();\n },\n svg: function () {\n return '<?xml version=\\'1.0\\' ?>' + this._template();\n },\n exportVisual: function () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n wrap.transform(transform().translate(-offset.x, -offset.y));\n visual = wrap;\n }\n return visual;\n },\n _resize: function () {\n if (this._offset) {\n this.translate(this._offset);\n }\n },\n _template: function () {\n return '<svg style=\\'width: 100%; height: 100%; overflow: hidden;\\' xmlns=\\'' + SVG_NS + '\\' xmlns:xlink=\\'http://www.w3.org/1999/xlink\\' version=\\'1.1\\'>' + this._root.render() + '</svg>';\n }\n });\n Surface$1.prototype.type = 'svg';\n if (typeof document !== 'undefined' && document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#BasicStructure', '1.1')) {\n Surface.support.svg = true;\n SurfaceFactory.current.register('svg', Surface$1, 10);\n }\n var GroupNode = Node.extend({\n template: function () {\n return '<g' + (this.renderId() + this.renderTransform() + this.renderStyle() + this.renderOpacity() + this.renderDefinitions()) + '>' + this.renderChildren() + '</g>';\n },\n optionsChange: function (e) {\n if (e.field === 'transform') {\n this.transformChange(e.value);\n }\n Node.fn.optionsChange.call(this, e);\n }\n });\n NODE_MAP.Group = GroupNode;\n var DASH_ARRAYS = {\n dot: [\n 1.5,\n 3.5\n ],\n dash: [\n 4,\n 3.5\n ],\n longdash: [\n 8,\n 3.5\n ],\n dashdot: [\n 3.5,\n 3.5,\n 1.5,\n 3.5\n ],\n longdashdot: [\n 8,\n 3.5,\n 1.5,\n 3.5\n ],\n longdashdotdot: [\n 8,\n 3.5,\n 1.5,\n 3.5,\n 1.5,\n 3.5\n ]\n };\n var SOLID = 'solid';\n var BUTT = 'butt';\n var ATTRIBUTE_MAP = {\n 'fill.opacity': 'fill-opacity',\n 'stroke.color': 'stroke',\n 'stroke.width': 'stroke-width',\n 'stroke.opacity': 'stroke-opacity'\n };\n var SPACE = ' ';\n var PathNode = Node.extend({\n geometryChange: function () {\n this.attr('d', this.renderData());\n this.invalidate();\n },\n optionsChange: function (e) {\n switch (e.field) {\n case 'fill':\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr('fill');\n }\n break;\n case 'fill.color':\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n case 'stroke':\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr('stroke');\n }\n break;\n case 'transform':\n this.transformChange(e.value);\n break;\n default:\n var name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n Node.fn.optionsChange.call(this, e);\n },\n content: function () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n },\n renderData: function () {\n return this.printPath(this.srcElement);\n },\n printPath: function (path) {\n var this$1 = this;\n var segments = path.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var output, currentType;\n for (var i = 1; i < length; i++) {\n var segmentType = this$1.segmentType(segments[i - 1], segments[i]);\n if (segmentType !== currentType) {\n currentType = segmentType;\n parts.push(segmentType);\n }\n if (segmentType === 'L') {\n parts.push(this$1.printPoints(segments[i].anchor()));\n } else {\n parts.push(this$1.printPoints(segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()));\n }\n }\n output = 'M' + this.printPoints(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (path.options.closed) {\n output += 'Z';\n }\n return output;\n }\n },\n printPoints: function () {\n var points = arguments;\n var length = points.length;\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(points[i].toString(3));\n }\n return result.join(' ');\n },\n segmentType: function (segmentStart, segmentEnd) {\n return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L';\n },\n mapStroke: function (stroke) {\n var attrs = [];\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([\n 'stroke',\n stroke.color\n ]);\n attrs.push([\n 'stroke-width',\n stroke.width\n ]);\n attrs.push([\n 'stroke-linecap',\n this.renderLinecap(stroke)\n ]);\n attrs.push([\n 'stroke-linejoin',\n stroke.lineJoin\n ]);\n if (defined(stroke.opacity)) {\n attrs.push([\n 'stroke-opacity',\n stroke.opacity\n ]);\n }\n if (defined(stroke.dashType)) {\n attrs.push([\n 'stroke-dasharray',\n this.renderDashType(stroke)\n ]);\n }\n } else {\n attrs.push([\n 'stroke',\n NONE\n ]);\n }\n return attrs;\n },\n renderStroke: function () {\n return renderAllAttr(this.mapStroke(this.srcElement.options.stroke));\n },\n renderDashType: function (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width;\n if (width === void 0) {\n width = 1;\n }\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n return result.join(' ');\n }\n },\n renderLinecap: function (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n return dashType && dashType !== 'solid' ? BUTT : lineCap;\n },\n mapFill: function (fill) {\n var attrs = [];\n if (!(fill && fill.nodeType === 'Gradient')) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([\n 'fill',\n fill.color\n ]);\n if (defined(fill.opacity)) {\n attrs.push([\n 'fill-opacity',\n fill.opacity\n ]);\n }\n } else {\n attrs.push([\n 'fill',\n NONE\n ]);\n }\n }\n return attrs;\n },\n renderFill: function () {\n return renderAllAttr(this.mapFill(this.srcElement.options.fill));\n },\n template: function () {\n return '<path ' + this.renderId() + ' ' + this.renderStyle() + ' ' + this.renderOpacity() + ' ' + renderAttr('d', this.renderData()) + '' + this.renderStroke() + this.renderFill() + this.renderDefinitions() + this.renderTransform() + '></path>';\n }\n });\n NODE_MAP.Path = PathNode;\n var ArcNode = PathNode.extend({\n renderData: function () {\n return this.printPath(this.srcElement.toPath());\n }\n });\n NODE_MAP.Arc = ArcNode;\n var CircleNode = PathNode.extend({\n geometryChange: function () {\n var center = this.center();\n this.attr('cx', center.x);\n this.attr('cy', center.y);\n this.attr('r', this.radius());\n this.invalidate();\n },\n center: function () {\n return this.srcElement.geometry().center;\n },\n radius: function () {\n return this.srcElement.geometry().radius;\n },\n template: function () {\n return '<circle ' + this.renderId() + ' ' + this.renderStyle() + ' ' + this.renderOpacity() + 'cx=\\'' + this.center().x + '\\' cy=\\'' + this.center().y + '\\' r=\\'' + this.radius() + '\\'' + this.renderStroke() + ' ' + this.renderFill() + ' ' + this.renderDefinitions() + this.renderTransform() + ' ></circle>';\n }\n });\n NODE_MAP.Circle = CircleNode;\n var RectNode = PathNode.extend({\n geometryChange: function () {\n var geometry = this.srcElement.geometry();\n this.attr('x', geometry.origin.x);\n this.attr('y', geometry.origin.y);\n this.attr('width', geometry.size.width);\n this.attr('height', geometry.size.height);\n this.invalidate();\n },\n size: function () {\n return this.srcElement.geometry().size;\n },\n origin: function () {\n return this.srcElement.geometry().origin;\n },\n template: function () {\n return '<rect ' + this.renderId() + ' ' + this.renderStyle() + ' ' + this.renderOpacity() + ' x=\\'' + this.origin().x + '\\' y=\\'' + this.origin().y + '\\' ' + 'width=\\'' + this.size().width + '\\' height=\\'' + this.size().height + '\\' ' + this.renderStroke() + ' ' + this.renderFill() + ' ' + this.renderDefinitions() + ' ' + this.renderTransform() + ' />';\n }\n });\n NODE_MAP.Rect = RectNode;\n var ImageNode = PathNode.extend({\n geometryChange: function () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n },\n optionsChange: function (e) {\n if (e.field === 'src') {\n this.allAttr(this.mapSource());\n }\n PathNode.fn.optionsChange.call(this, e);\n },\n mapPosition: function () {\n var rect = this.srcElement.rect();\n var tl = rect.topLeft();\n return [\n [\n 'x',\n tl.x\n ],\n [\n 'y',\n tl.y\n ],\n [\n 'width',\n rect.width() + 'px'\n ],\n [\n 'height',\n rect.height() + 'px'\n ]\n ];\n },\n renderPosition: function () {\n return renderAllAttr(this.mapPosition());\n },\n mapSource: function (encode) {\n var src = this.srcElement.src();\n if (encode) {\n src = kendo.htmlEncode(src);\n }\n return [[\n 'xlink:href',\n src\n ]];\n },\n renderSource: function () {\n return renderAllAttr(this.mapSource(true));\n },\n template: function () {\n return '<image preserveAspectRatio=\\'none\\' ' + this.renderId() + ' ' + this.renderStyle() + ' ' + this.renderTransform() + ' ' + this.renderOpacity() + this.renderPosition() + ' ' + this.renderSource() + ' ' + this.renderDefinitions() + '>' + '</image>';\n }\n });\n NODE_MAP.Image = ImageNode;\n var ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n function decodeEntities(text) {\n if (!text || typeof text !== 'string' || !ENTITY_REGEX.test(text)) {\n return text;\n }\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n return element.textContent || element.innerText;\n });\n }\n if (typeof document !== 'undefined') {\n decodeEntities._element = document.createElement('span');\n }\n var TextNode = PathNode.extend({\n geometryChange: function () {\n var pos = this.pos();\n this.attr('x', pos.x);\n this.attr('y', pos.y);\n this.invalidate();\n },\n optionsChange: function (e) {\n if (e.field === 'font') {\n this.attr('style', renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === 'content') {\n PathNode.fn.content.call(this, this.srcElement.content());\n }\n PathNode.fn.optionsChange.call(this, e);\n },\n mapStyle: function (encode) {\n var style = PathNode.fn.mapStyle.call(this, encode);\n var font = this.srcElement.options.font;\n if (encode) {\n font = kendo.htmlEncode(font);\n }\n style.push([\n 'font',\n font\n ], [\n 'white-space',\n 'pre'\n ]);\n return style;\n },\n pos: function () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n },\n renderContent: function () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = kendo.htmlEncode(content);\n return kendoUtil.normalizeText(content);\n },\n renderTextAnchor: function () {\n var anchor;\n if ((this.options || {}).rtl && !(supportBrowser.msie || supportBrowser.edge)) {\n anchor = 'end';\n }\n return renderAttr('text-anchor', anchor);\n },\n template: function () {\n return '<text ' + this.renderId() + ' ' + this.renderTextAnchor() + ' ' + this.renderStyle() + ' ' + this.renderOpacity() + 'x=\\'' + this.pos().x + '\\' y=\\'' + this.pos().y + '\\' ' + this.renderStroke() + ' ' + this.renderTransform() + ' ' + this.renderDefinitions() + this.renderFill() + '>' + this.renderContent() + '</text>';\n }\n });\n NODE_MAP.Text = TextNode;\n var MultiPathNode = PathNode.extend({\n renderData: function () {\n var this$1 = this;\n var paths = this.srcElement.paths;\n if (paths.length > 0) {\n var result = [];\n for (var i = 0; i < paths.length; i++) {\n result.push(this$1.printPath(paths[i]));\n }\n return result.join(' ');\n }\n }\n });\n NODE_MAP.MultiPath = MultiPathNode;\n var geometry = {\n Circle: Circle$2,\n Arc: Arc$2,\n Rect: Rect,\n Point: Point,\n Segment: Segment,\n Matrix: Matrix,\n Size: Size,\n toMatrix: toMatrix,\n Transformation: Transformation,\n transform: transform\n };\n function exportGroup(group) {\n var root = new RootNode({ skipBaseHref: true });\n var bbox = group.clippedBBox();\n var rootGroup = group;\n if (bbox) {\n var origin = bbox.getOrigin();\n var exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n rootGroup = exportRoot;\n }\n root.load([rootGroup]);\n var svg = '<?xml version=\\'1.0\\' ?><svg xmlns=\\'' + SVG_NS + '\\' xmlns:xlink=\\'http://www.w3.org/1999/xlink\\' version=\\'1.1\\'>' + root.render() + '</svg>';\n root.destroy();\n return svg;\n }\n var svg = {\n Surface: Surface$1,\n RootNode: RootNode,\n Node: Node,\n GroupNode: GroupNode,\n ArcNode: ArcNode,\n CircleNode: CircleNode,\n RectNode: RectNode,\n ImageNode: ImageNode,\n TextNode: TextNode,\n PathNode: PathNode,\n MultiPathNode: MultiPathNode,\n DefinitionNode: DefinitionNode,\n ClipNode: ClipNode,\n GradientStopNode: GradientStopNode,\n LinearGradientNode: LinearGradientNode,\n RadialGradientNode: RadialGradientNode,\n exportGroup: exportGroup\n };\n var NODE_MAP$2 = {};\n function renderPath(ctx, path) {\n var segments = path.segments;\n if (segments.length === 0) {\n return;\n }\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var controlIn = segment.controlIn();\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y, controlIn.x, controlIn.y, anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n if (path.options.closed) {\n ctx.closePath();\n }\n }\n var Node$2 = BaseNode.extend({\n init: function (srcElement) {\n BaseNode.fn.init.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n },\n initClip: function () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n },\n clear: function () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n this.clearClip();\n BaseNode.fn.clear.call(this);\n },\n clearClip: function () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n },\n setClip: function (ctx) {\n if (this.clip) {\n ctx.beginPath();\n renderPath(ctx, this.clip);\n ctx.clip();\n }\n },\n optionsChange: function (e) {\n if (e.field === 'clip') {\n this.clearClip();\n this.initClip();\n }\n BaseNode.fn.optionsChange.call(this, e);\n },\n setTransform: function (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n },\n loadElements: function (elements, pos, cors) {\n var this$1 = this;\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n var childNode = new NODE_MAP$2[srcElement.nodeType](srcElement, cors);\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n }\n },\n load: function (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this.invalidate();\n },\n setOpacity: function (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n },\n globalAlpha: function (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n },\n visible: function () {\n var src = this.srcElement;\n return !src || src && src.options.visible !== false;\n }\n });\n var GroupNode$2 = Node$2.extend({\n renderTo: function (ctx) {\n if (!this.visible()) {\n return;\n }\n ctx.save();\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n ctx.restore();\n }\n });\n Traversable.extend(GroupNode$2.prototype, 'childNodes');\n NODE_MAP$2.Group = GroupNode$2;\n var FRAME_DELAY = 1000 / 60;\n var RootNode$2 = GroupNode$2.extend({\n init: function (canvas) {\n GroupNode$2.fn.init.call(this);\n this.canvas = canvas;\n this.ctx = canvas.getContext('2d');\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = kendo.throttle(function () {\n kendo.animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n },\n destroy: function () {\n GroupNode$2.fn.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n },\n load: function (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n },\n _invalidate: function () {\n if (!this.ctx) {\n return;\n }\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n }\n });\n Traversable.extend(RootNode$2.prototype, 'childNodes');\n var QuadRoot = Class.extend({\n init: function () {\n this.shapes = [];\n },\n _add: function (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n },\n pointShapes: function (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n },\n insert: function (shape, bbox) {\n this._add(shape, bbox);\n },\n remove: function (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n }\n });\n var QuadNode = QuadRoot.extend({\n init: function (rect) {\n QuadRoot.fn.init.call(this);\n this.children = [];\n this.rect = rect;\n },\n inBounds: function (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x && bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n },\n pointShapes: function (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot.fn.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n },\n insert: function (shape, bbox) {\n var children = this.children;\n var inserted = false;\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n return inserted;\n },\n _initChildren: function () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var halfHeight = rect.height() / 2;\n children.push(new QuadNode(new Rect([\n rect.origin.x,\n rect.origin.y\n ], [\n halfWidth,\n halfHeight\n ])), new QuadNode(new Rect([\n center.x,\n rect.origin.y\n ], [\n halfWidth,\n halfHeight\n ])), new QuadNode(new Rect([\n rect.origin.x,\n center.y\n ], [\n halfWidth,\n halfHeight\n ])), new QuadNode(new Rect([\n center.x,\n center.y\n ], [\n halfWidth,\n halfHeight\n ])));\n }\n });\n var ROOT_SIZE = 3000;\n var LEVEL_STEP = 10000;\n var MAX_LEVEL = 75;\n var ShapesQuadTree = Class.extend({\n init: function () {\n this.initRoots();\n },\n initRoots: function () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n },\n clear: function () {\n var this$1 = this;\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1.remove(rootElements[idx]);\n }\n this.initRoots();\n },\n pointShape: function (point) {\n var sectorRoot = (this.rootMap[Math.floor(point.x / ROOT_SIZE)] || {})[Math.floor(point.y / ROOT_SIZE)];\n var result = this.root.pointShapes(point);\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n this.assignZindex(result);\n result.sort(zIndexComparer);\n for (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n },\n assignZindex: function (elements) {\n var this$1 = this;\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var parents = [];\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n elements[idx]._zIndex = zIndex;\n }\n },\n optionsChange: function (e) {\n if (e.field === 'transform' || e.field === 'stroke.width') {\n this.bboxChange(e.element);\n }\n },\n geometryChange: function (e) {\n this.bboxChange(e.element);\n },\n bboxChange: function (element) {\n var this$1 = this;\n if (element.nodeType === 'Group') {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n },\n add: function (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [elements];\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n },\n childrenChange: function (e) {\n var this$1 = this;\n if (e.action === 'remove') {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n },\n _insert: function (elements) {\n var this$1 = this;\n var element;\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1);\n if (element.nodeType === 'Group') {\n append(elements, element.children);\n } else {\n this$1._insertShape(element);\n }\n }\n },\n _insertShape: function (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(new Rect([\n x * ROOT_SIZE,\n y * ROOT_SIZE\n ], [\n ROOT_SIZE,\n ROOT_SIZE\n ]));\n }\n rootMap[x][y].insert(shape, bbox);\n }\n }\n },\n remove: function (element) {\n var this$1 = this;\n element.removeObserver(this);\n if (element.nodeType === 'Group') {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n },\n inRoot: function (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n },\n getSectors: function (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [\n [],\n []\n ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n }\n });\n function zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n return 0;\n }\n var SurfaceCursor = Class.extend({\n init: function (surface) {\n surface.bind('mouseenter', this._mouseenter.bind(this));\n surface.bind('mouseleave', this._mouseleave.bind(this));\n this.element = surface.element;\n },\n clear: function () {\n this._resetCursor();\n },\n destroy: function () {\n this._resetCursor();\n delete this.element;\n },\n _mouseenter: function (e) {\n var cursor = this._shapeCursor(e);\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n this._setCursor(cursor);\n }\n },\n _mouseleave: function () {\n this._resetCursor();\n },\n _shapeCursor: function (e) {\n var shape = e.element;\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n if (shape) {\n return shape.options.cursor;\n }\n },\n _getCursor: function () {\n if (this.element) {\n return this.element.style.cursor;\n }\n },\n _setCursor: function (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n },\n _resetCursor: function () {\n if (this._current) {\n this._setCursor(this._defaultCursor || '');\n delete this._current;\n }\n }\n });\n var Surface$3 = Surface.extend({\n init: function (element, options) {\n Surface.fn.init.call(this, element, options);\n this.element.innerHTML = this._template(this);\n var canvas = this.element.firstElementChild;\n var size = elementSize(element);\n canvas.width = size.width;\n canvas.height = size.height;\n this._rootElement = canvas;\n this._root = new RootNode$2(canvas);\n this._mouseTrackHandler = this._trackMouse.bind(this);\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n },\n destroy: function () {\n Surface.fn.destroy.call(this);\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n },\n draw: function (element) {\n Surface.fn.draw.call(this, element);\n this._root.load([element], undefined, this.options.cors);\n if (this._searchTree) {\n this._searchTree.add([element]);\n }\n },\n clear: function () {\n Surface.fn.clear.call(this);\n this._root.clear();\n if (this._searchTree) {\n this._searchTree.clear();\n }\n if (this._cursor) {\n this._cursor.clear();\n }\n },\n eventTarget: function (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n },\n image: function () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate();\n try {\n var data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n return promise;\n },\n suspendTracking: function () {\n Surface.fn.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n },\n resumeTracking: function () {\n Surface.fn.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n },\n _resize: function () {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n this._root.invalidate();\n },\n _template: function () {\n return '<canvas style=\\'width: 100%; height: 100%;\\'></canvas>';\n },\n _enableTracking: function () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n Surface.fn._enableTracking.call(this);\n },\n _trackMouse: function (e) {\n if (this._suspendedTracking) {\n return;\n }\n var shape = this.eventTarget(e);\n if (e.type !== 'click') {\n var currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger('mouseleave', {\n element: currentShape,\n originalEvent: e,\n type: 'mouseleave'\n });\n }\n if (shape && currentShape !== shape) {\n this.trigger('mouseenter', {\n element: shape,\n originalEvent: e,\n type: 'mouseenter'\n });\n }\n this.trigger('mousemove', {\n element: shape,\n originalEvent: e,\n type: 'mousemove'\n });\n this._currentShape = shape;\n } else if (shape) {\n this.trigger('click', {\n element: shape,\n originalEvent: e,\n type: 'click'\n });\n }\n }\n });\n Surface$3.prototype.type = 'canvas';\n if (typeof document !== 'undefined' && document.createElement('canvas').getContext) {\n Surface.support.canvas = true;\n SurfaceFactory.current.register('canvas', Surface$3, 20);\n }\n function addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = kendo.parseColor(stop.color());\n color.a *= stop.opacity();\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n }\n var PathNode$2 = Node$2.extend({\n renderTo: function (ctx) {\n ctx.save();\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n ctx.beginPath();\n this.renderPoints(ctx, this.srcElement);\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n this.setFill(ctx);\n this.setStroke(ctx);\n ctx.restore();\n },\n setFill: function (ctx) {\n var fill = this.srcElement.options.fill;\n var hasFill = false;\n if (fill) {\n if (fill.nodeType === 'Gradient') {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n hasFill = true;\n }\n }\n return hasFill;\n },\n setGradientFill: function (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n addGradientStops(gradient, fill.stops);\n ctx.save();\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n ctx.restore();\n },\n setStroke: function (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n return true;\n }\n },\n dashType: function () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n },\n setLineDash: function (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n },\n setLineCap: function (ctx) {\n var dashType = this.dashType();\n var stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n },\n setLineJoin: function (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n },\n renderPoints: function (ctx, path) {\n renderPath(ctx, path);\n }\n });\n NODE_MAP$2.Path = PathNode$2;\n var ArcNode$2 = PathNode$2.extend({\n renderPoints: function (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n }\n });\n NODE_MAP$2.Arc = ArcNode$2;\n var CircleNode$2 = PathNode$2.extend({\n renderPoints: function (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n }\n });\n NODE_MAP$2.Circle = CircleNode$2;\n var RectNode$2 = PathNode$2.extend({\n renderPoints: function (ctx) {\n var ref = this.srcElement.geometry();\n var origin = ref.origin;\n var size = ref.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n }\n });\n NODE_MAP$2.Rect = RectNode$2;\n var ImageNode$2 = PathNode$2.extend({\n init: function (srcElement, cors) {\n PathNode$2.fn.init.call(this, srcElement);\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n this.loading = createPromise();\n var img = this.img = new Image();\n if (cors && !/^data:/i.test(srcElement.src())) {\n img.crossOrigin = cors;\n }\n img.src = srcElement.src();\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n },\n renderTo: function (ctx) {\n if (this.loading.state() === 'resolved') {\n ctx.save();\n this.setTransform(ctx);\n this.setClip(ctx);\n this.drawImage(ctx);\n ctx.restore();\n }\n },\n optionsChange: function (e) {\n if (e.field === 'src') {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode$2.fn.optionsChange.call(this, e);\n }\n },\n onLoad: function () {\n this.loading.resolve();\n this.invalidate();\n },\n onError: function () {\n this.loading.reject(new Error('Unable to load image \\'' + this.img.src + '\\'. Check for connectivity and verify CORS headers.'));\n },\n drawImage: function (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n ctx.drawImage(this.img, topLeft.x, topLeft.y, rect.width(), rect.height());\n }\n });\n NODE_MAP$2.Image = ImageNode$2;\n var TextNode$2 = PathNode$2.extend({\n renderTo: function (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var size = text.measure();\n ctx.save();\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n ctx.beginPath();\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n ctx.restore();\n }\n });\n NODE_MAP$2.Text = TextNode$2;\n var MultiPathNode$2 = PathNode$2.extend({\n renderPoints: function (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n }\n });\n NODE_MAP$2.MultiPath = MultiPathNode$2;\n var canvas = {\n Surface: Surface$3,\n RootNode: RootNode$2,\n Node: Node$2,\n GroupNode: GroupNode$2,\n ArcNode: ArcNode$2,\n CircleNode: CircleNode$2,\n RectNode: RectNode$2,\n ImageNode: ImageNode$2,\n TextNode: TextNode$2,\n PathNode: PathNode$2,\n MultiPathNode: MultiPathNode$2\n };\n function exportImage(group, options) {\n var defaults = {\n width: '800px',\n height: '600px',\n cors: 'Anonymous'\n };\n var exportRoot = group;\n var bbox = group.clippedBBox();\n if (bbox) {\n var origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n var size = bbox.getSize();\n defaults.width = size.width + 'px';\n defaults.height = size.height + 'px';\n }\n var surfaceOptions = $.extend(defaults, options);\n var container = document.createElement('div');\n var style = container.style;\n style.display = 'none';\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n var surface = new Surface$3(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n var promise = surface.image();\n var destroy = function () {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n return promise;\n }\n function exportSVG(group, options) {\n var svg = exportGroup(group);\n if (!options || !options.raw) {\n svg = 'data:image/svg+xml;base64,' + encodeBase64(svg);\n }\n return createPromise().resolve(svg);\n }\n var browser = supportBrowser;\n function slice$1(thing) {\n return Array.prototype.slice.call(thing);\n }\n var KENDO_PSEUDO_ELEMENT = 'KENDO-PSEUDO-ELEMENT';\n var IMAGE_CACHE = {};\n var nodeInfo = {};\n nodeInfo._root = nodeInfo;\n var inBrowser = typeof window !== 'undefined';\n var microsoft = inBrowser ? browser.msie || browser.edge : false;\n var TextRect = Text.extend({\n init: function (str, rect, options) {\n Text.fn.init.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n },\n rect: function () {\n return this._pdfRect;\n },\n rawBBox: function () {\n return this._pdfRect;\n }\n });\n function addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += ' ' + cls;\n }\n }\n function removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function (a, word) {\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(' ');\n }\n }\n function setCSS(el, styles) {\n Object.keys(styles).forEach(function (key) {\n el.style[key] = styles[key];\n });\n }\n var matches = typeof Element !== 'undefined' && Element.prototype && function (p) {\n if (p.matches) {\n return function (el, selector) {\n return el.matches(selector);\n };\n }\n if (p.webkitMatchesSelector) {\n return function (el, selector) {\n return el.webkitMatchesSelector(selector);\n };\n }\n if (p.mozMatchesSelector) {\n return function (el, selector) {\n return el.mozMatchesSelector(selector);\n };\n }\n if (p.msMatchesSelector) {\n return function (el, selector) {\n return el.msMatchesSelector(selector);\n };\n }\n return function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n }(Element.prototype);\n function closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n }\n var cloneNodes = function ($) {\n if ($) {\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext('2d').drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n clone.removeAttribute('id');\n clone.removeAttribute('name');\n clone.value = el.value;\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n return function cloneNodes(el) {\n var clone = function dive(node) {\n var clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n }(el);\n var canvases = el.querySelectorAll('canvas');\n if (canvases.length) {\n slice$1(clone.querySelectorAll('canvas')).forEach(function (canvas$$1, i) {\n canvas$$1.getContext('2d').drawImage(canvases[i], 0, 0);\n });\n }\n var orig = el.querySelectorAll('input, select, textarea, option');\n slice$1(clone.querySelectorAll('input, select, textarea, option')).forEach(function (el, i) {\n el.removeAttribute('id');\n el.removeAttribute('name');\n el.value = orig[i].value;\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n return clone;\n };\n }\n }(typeof window !== 'undefined' && window.kendo && window.kendo.jQuery);\n function getXY(thing) {\n if (typeof thing == 'number') {\n return {\n x: thing,\n y: thing\n };\n }\n if (Array.isArray(thing)) {\n return {\n x: thing[0],\n y: thing[1]\n };\n }\n return {\n x: thing.x,\n y: thing.y\n };\n }\n function drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n if (!element) {\n return promise.reject('No element to export');\n }\n if (typeof window.getComputedStyle != 'function') {\n throw new Error('window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.');\n }\n kendo.pdf.defineFont(getFontFaces(element.ownerDocument));\n var scale = getXY(options.scale || 1);\n function doOne(element) {\n var group = new Group();\n var pos = element.getBoundingClientRect();\n setTransform(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n -pos.left * scale.x,\n -pos.top * scale.y\n ]);\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = 'a';\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n addClass(element, 'k-pdf-export');\n renderElement(element, group);\n removeClass(element, 'k-pdf-export');\n return group;\n }\n cacheImages(element, function () {\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != 'auto';\n var paperOptions = kendo.pdf.getPaperOptions(function (key, def) {\n if (key == 'paperSize') {\n return hasPaperSize ? options[key] : 'A4';\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n }\n if (pageWidth) {\n pageWidth /= scale.x;\n }\n if (pageHeight) {\n pageHeight /= scale.y;\n }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n var group = new Group({\n pdf: {\n multiPage: true,\n paperSize: hasPaperSize ? paperOptions.paperSize : 'auto',\n _ignoreMargin: hasMargin\n }\n });\n handlePageBreaks(function (x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next() {\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function () {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n }());\n } else {\n x.pages.forEach(function (page) {\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n }, element, forceBreak, pageWidth ? pageWidth - margin.left - margin.right : null, pageHeight ? pageHeight - margin.top - margin.bottom : null, margin, options);\n } else {\n promise.resolve(doOne(element));\n }\n });\n function makeTemplate(template$$1) {\n if (template$$1 != null) {\n if (typeof template$$1 == 'string') {\n template$$1 = kendo.template(template$$1.replace(/^\\s+|\\s+$/g, ''));\n }\n if (typeof template$$1 == 'function') {\n return function (data) {\n var el = template$$1(data);\n if (el && typeof el == 'string') {\n var div = document.createElement('div');\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n return function () {\n return template$$1.cloneNode(true);\n };\n }\n }\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template$$1 = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement('KENDO-PDF-DOCUMENT');\n var adjust = 0;\n slice$1(copy.querySelectorAll('tfoot')).forEach(function (tfoot) {\n tfoot.parentNode.appendChild(tfoot);\n });\n slice$1(copy.querySelectorAll('ol')).forEach(function (ol) {\n slice$1(ol.children).forEach(function (li, index) {\n li.setAttribute('kendo-split-index', index);\n });\n });\n setCSS(container, {\n display: 'block',\n position: 'absolute',\n boxSizing: 'content-box',\n left: '-10000px',\n top: '-10000px'\n });\n if (pageWidth) {\n setCSS(container, {\n width: pageWidth + 'px',\n paddingLeft: margin.left + 'px',\n paddingRight: margin.right + 'px'\n });\n setCSS(copy, { overflow: 'hidden' });\n }\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n if (options.beforePageBreak) {\n setTimeout(function () {\n options.beforePageBreak(container, doPageBreak);\n }, 15);\n } else {\n setTimeout(doPageBreak, 15);\n }\n function doPageBreak() {\n if (forceBreak != '-' || pageHeight) {\n splitElement(copy);\n }\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n if (template$$1) {\n pages.forEach(function (page, i) {\n var el = template$$1({\n element: page,\n pageNum: i + 1,\n totalPages: pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n cacheImages(pages, function () {\n whenImagesAreActuallyLoaded(pages, function () {\n callback({\n pages: pages,\n container: container\n });\n });\n });\n }\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n return el.getAttribute('data-kendo-chart') || /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName);\n }\n function splitElement(element) {\n if (element.tagName == 'TABLE') {\n setCSS(element, { tableLayout: 'fixed' });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle(element);\n var bottomPadding = parseFloat(getPropertyValue(style, 'padding-bottom'));\n var bottomBorder = parseFloat(getPropertyValue(style, 'border-bottom-width'));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle(el), 'position'))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n breakAtElement(el);\n } else if (fall) {\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n } else {\n splitElement(el);\n }\n } else if (el.nodeType == 3 && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 || first.nodeType == 8) {\n return true;\n }\n if (first.nodeType == 3) {\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, 'table');\n colgroup = table && table.querySelector('colgroup');\n if (options.repeatHeaders) {\n thead = table && table.querySelector('thead');\n grid = closest(el, '.k-grid.k-widget');\n if (grid && grid.querySelector('.k-auto-scrollable')) {\n gridHead = grid.querySelector('.k-grid-header');\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, 'table');\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, '.k-grid.k-widget');\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n function makePage() {\n var page = doc.createElement('KENDO-PDF-PAGE');\n setCSS(page, {\n display: 'block',\n boxSizing: 'content-box',\n width: pageWidth ? pageWidth + 'px' : 'auto',\n padding: margin.top + 'px ' + margin.right + 'px ' + margin.bottom + 'px ' + margin.left + 'px',\n position: 'relative',\n height: pageHeight ? pageHeight + 'px' : 'auto',\n overflow: pageHeight || pageWidth ? 'hidden' : 'visible',\n clear: 'both'\n });\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return box.height > available ? 3 : box.top - top > available ? 1 : box.bottom - top > available ? 2 : 0;\n }\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return;\n }\n var nextnode = node;\n if (fall == 1) {\n if (isFirst) {\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n } else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, min + pos >> 1, pos);\n } else {\n return findEOP(pos, pos + max >> 1, max);\n }\n }(0, len >> 1, len));\n if (!/\\S/.test(range.toString()) && isFirst) {\n breakAtElement(node.parentNode);\n } else {\n nextnode = node.splitText(range.endOffset);\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n splitText(nextnode);\n }\n function preventBulletOnListItem(el) {\n var li = closest(el, 'li');\n if (li) {\n li.setAttribute('kendo-no-bullet', '1');\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n return promise;\n }\n drawDOM.getFontFaces = getFontFaces;\n drawDOM.drawText = function (element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle(element), group);\n if (element.firstChild.nodeType == 3) {\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n };\n var parseBackgroundImage = function () {\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn))/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n var cache1 = {}, cache2 = {};\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n function read_stop() {\n var color = kendo.parseColor(input, true);\n var length, percent;\n if (color) {\n var match = /^#[0-9a-f]+/i.exec(input) || /^rgba?\\(.*?\\)/i.exec(input) || /^..*?\\b/.exec(input);\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return {\n color: color,\n length: length,\n percent: percent\n };\n }\n }\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n if (read(tok_popen)) {\n angle = read(tok_angle);\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n } else {\n to1 = read(tok_keyword);\n if (to1 == 'to') {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == '0%') {\n to1 = 'left';\n } else if (x == '100%') {\n to1 = 'right';\n }\n if (y == '0%') {\n to2 = 'top';\n } else if (y == '100%') {\n to2 = 'bottom';\n }\n read(tok_comma);\n }\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n return {\n type: 'linear',\n angle: angle,\n to: to1 && to2 ? to1 + ' ' + to2 : to1 ? to1 : to2 ? to2 : null,\n stops: stops,\n reverse: reverse\n };\n }\n }\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, '');\n read(tok_pclose);\n return {\n type: 'url',\n url: url\n };\n }\n }\n var tok;\n if (tok = read(tok_linear_gradient)) {\n tok = read_linear_gradient(tok);\n } else if (tok = read(tok_url)) {\n tok = read_url();\n }\n return cache1[orig] = tok || { type: 'none' };\n }\n return function (input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return cache2[input] = splitProperty(input).map(parse);\n };\n }();\n var splitProperty = function () {\n var cache = {};\n return function (input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n var cacheKey = input + separator;\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n var ret = [];\n var last$$1 = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n function looking_at(rx) {\n return m = rx.exec(input.substr(pos));\n }\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n }\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n } else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n } else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n } else if (in_string == '\\'' && looking_at(/^\\\\\\'/)) {\n pos += 2;\n } else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n } else if (in_string == '\\'' && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n } else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n } else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last$$1) {\n ret.push(trim(input.substring(last$$1, pos)));\n last$$1 = pos + m[0].length;\n }\n pos += m[0].length;\n } else {\n pos++;\n }\n }\n if (last$$1 < pos) {\n ret.push(trim(input.substring(last$$1, pos)));\n }\n return cache[cacheKey] = ret;\n };\n }();\n var getFontURL = function (cache) {\n return function (el) {\n var url = cache[el];\n if (!url) {\n var m;\n if (m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el)) {\n url = cache[el] = m[2];\n } else if (m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el)) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n }(Object.create ? Object.create(null) : {});\n var getFontHeight = function (cache) {\n return function (font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = kendoUtil.measureText('Mapq', { font: font }).height;\n }\n return height;\n };\n }(Object.create ? Object.create(null) : {});\n function getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {\n }\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, 'src');\n if (src) {\n return splitProperty(src).reduce(function (a, el) {\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n var font = getFontURL(rule.cssText);\n return font ? [font] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3:\n doStylesheet(r.styleSheet);\n break;\n case 5:\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, 'font-family'));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, 'font-weight'));\n var italic = 'italic' == getPropertyValue(style, 'font-style');\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n if (!/^data:/i.test(url)) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, '') + url;\n }\n }\n names.forEach(function (name) {\n name = name.replace(/^(['\"]?)(.*?)\\1$/, '$2');\n if (bold) {\n name += '|bold';\n }\n if (italic) {\n name += '|italic';\n }\n result[name] = url;\n });\n }\n }\n function hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n function getCounter(name) {\n name = '_counter_' + name;\n return nodeInfo[name];\n }\n function getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = '_counter_' + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n }\n function incCounter(name, inc) {\n var p = nodeInfo;\n name = '_counter_' + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n }\n function resetCounter(name, val) {\n name = '_counter_' + name;\n nodeInfo[name] = val == null ? 0 : val;\n }\n function doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n }\n function updateCounters(style) {\n var counterReset = getPropertyValue(style, 'counter-reset');\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, 'counter-increment');\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n }\n function parseColor$1(str, css) {\n var color = kendo.parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n }\n function whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n elements.forEach(function (el) {\n var images = el.querySelectorAll('img');\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n if (!pending) {\n next();\n }\n function next() {\n if (--pending <= 0) {\n callback();\n }\n }\n }\n function cacheImages(element, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n function dive(element) {\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(getPropertyValue(getComputedStyle(element), 'background-image')).forEach(function (bg) {\n if (bg.type == 'url') {\n add(bg.url);\n }\n });\n if (element.children) {\n slice$1(element.children).forEach(dive);\n }\n }\n if (Array.isArray(element)) {\n element.forEach(dive);\n } else {\n dive(element);\n }\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n callback();\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function (url) {\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!/^data:/i.test(url)) {\n img.crossOrigin = 'Anonymous';\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function () {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n }\n function alphaNumeral(n) {\n var result = '';\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n }\n function pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, 'text-decoration');\n if (decoration && decoration != 'none') {\n var color = getPropertyValue(style, 'color');\n decoration.split(/\\s+/g).forEach(function (name) {\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n }\n });\n }\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n }\n function popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n }\n function updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n }\n function emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n }\n function createsStackingContext(style) {\n function prop(name) {\n return getPropertyValue(style, name);\n }\n if (prop('transform') != 'none' || prop('position') != 'static' || prop('z-index') != 'auto' || prop('opacity') < 1) {\n return true;\n }\n }\n function getComputedStyle(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n }\n function getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === '') {\n if (browser.webkit) {\n val = style.getPropertyValue('-webkit-' + prop);\n } else if (browser.mozilla) {\n val = style.getPropertyValue('-moz-' + prop);\n } else if (browser.opera) {\n val = style.getPropertyValue('-o-' + prop);\n } else if (microsoft) {\n val = style.getPropertyValue('-ms-' + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === '')) {\n return defa;\n } else {\n return val;\n }\n }\n function pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty('-webkit-' + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty('-moz-' + prop, value, important);\n } else if (browser.opera) {\n style.setProperty('-o-' + prop, value, important);\n } else if (microsoft) {\n style.setProperty('-ms-' + prop, value, important);\n prop = 'ms' + prop.replace(/(^|-)([a-z])/g, function (s, p1, p2) {\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n }\n function getBorder(style, side) {\n side = 'border-' + side;\n return {\n width: parseFloat(getPropertyValue(style, side + '-width')),\n style: getPropertyValue(style, side + '-style'),\n color: parseColor$1(getPropertyValue(style, side + '-color'), true)\n };\n }\n function saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n }\n function getBorderRadius(style, side) {\n var r = getPropertyValue(style, 'border-' + side + '-radius').split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({\n x: r[0],\n y: r[1]\n });\n }\n function getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, 'border-*-width', element);\n box = innerBox(box, 'padding-*', element);\n return box;\n }\n function innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == 'string') {\n style = getComputedStyle(element);\n wt = parseFloat(getPropertyValue(style, prop.replace('*', 'top')));\n wr = parseFloat(getPropertyValue(style, prop.replace('*', 'right')));\n wb = parseFloat(getPropertyValue(style, prop.replace('*', 'bottom')));\n wl = parseFloat(getPropertyValue(style, prop.replace('*', 'left')));\n } else if (typeof prop == 'number') {\n wt = wr = wb = wl = prop;\n }\n return {\n top: box.top + wt,\n right: box.right - wr,\n bottom: box.bottom - wb,\n left: box.left + wl,\n width: box.right - box.left - wr - wl,\n height: box.bottom - box.top - wb - wt\n };\n }\n function getTransform(style) {\n var transform$$1 = getPropertyValue(style, 'transform');\n if (transform$$1 == 'none') {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform$$1);\n if (matrix) {\n var origin = getPropertyValue(style, 'transform-origin');\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n }\n function radiansToDegrees(radians) {\n return 180 * radians / Math.PI % 360;\n }\n function parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n } else if (/rad$/.test(angle)) {\n return num;\n } else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n } else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n }\n function setTransform(shape, m) {\n m = new Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n }\n function setClipping(shape, clipPath) {\n shape.clip(clipPath);\n }\n function addArcToPath(path, x, y, options) {\n var points = new Arc$2([\n x,\n y\n ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n }\n function sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n }\n function adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n var f = Math.min(box.width / (tl_x + tr_x), box.height / (tr_y + br_y), box.width / (br_x + bl_x), box.height / (bl_y + tl_y));\n if (f < 1) {\n tl_x *= f;\n tl_y *= f;\n tr_x *= f;\n tr_y *= f;\n br_x *= f;\n br_y *= f;\n bl_x *= f;\n bl_y *= f;\n }\n return {\n tl: {\n x: tl_x,\n y: tl_y\n },\n tr: {\n x: tr_x,\n y: tr_y\n },\n br: {\n x: br_x,\n y: br_y\n },\n bl: {\n x: bl_x,\n y: bl_y\n }\n };\n }\n function elementRoundBox(element, box, type) {\n var style = getComputedStyle(element);\n var rTL = getBorderRadius(style, 'top-left');\n var rTR = getBorderRadius(style, 'top-right');\n var rBL = getBorderRadius(style, 'bottom-left');\n var rBR = getBorderRadius(style, 'bottom-right');\n if (type == 'padding' || type == 'content') {\n var bt = getBorder(style, 'top');\n var br = getBorder(style, 'right');\n var bb = getBorder(style, 'bottom');\n var bl = getBorder(style, 'left');\n rTL.x -= bl.width;\n rTL.y -= bt.width;\n rTR.x -= br.width;\n rTR.y -= bt.width;\n rBR.x -= br.width;\n rBR.y -= bb.width;\n rBL.x -= bl.width;\n rBL.y -= bb.width;\n if (type == 'content') {\n var pt = parseFloat(getPropertyValue(style, 'padding-top'));\n var pr = parseFloat(getPropertyValue(style, 'padding-right'));\n var pb = parseFloat(getPropertyValue(style, 'padding-bottom'));\n var pl = parseFloat(getPropertyValue(style, 'padding-left'));\n rTL.x -= pl;\n rTL.y -= pt;\n rTR.x -= pr;\n rTR.y -= pt;\n rBR.x -= pr;\n rBR.y -= pb;\n rBL.x -= pl;\n rBL.y -= pb;\n }\n }\n if (typeof type == 'number') {\n rTL.x -= type;\n rTL.y -= type;\n rTR.x -= type;\n rTR.y -= type;\n rBR.x -= type;\n rBR.y -= type;\n rBL.x -= type;\n rBL.y -= type;\n }\n return roundBox(box, rTL, rTR, rBR, rBL);\n }\n function roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({\n fill: null,\n stroke: null\n });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n }\n function formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case 'decimal-leading-zero':\n if (str.length < 2) {\n str = '0' + str;\n }\n return str;\n case 'lower-roman':\n return arabicToRoman(val).toLowerCase();\n case 'upper-roman':\n return arabicToRoman(val).toUpperCase();\n case 'lower-latin':\n case 'lower-alpha':\n return alphaNumeral(val - 1);\n case 'upper-latin':\n case 'upper-alpha':\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n }\n function evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, '$2');\n return getAllCounters(name).map(function (val) {\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function (el) {\n var tmp;\n if (m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el)) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function (s, p) {\n return String.fromCharCode(parseInt(p, 16));\n }));\n } else if (m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el)) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n } else if (m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el)) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n } else if (m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el)) {\n result.push(element.getAttribute(m[1]) || '');\n } else {\n result.push(el);\n }\n });\n return result.join('');\n }\n function getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + ': ' + getPropertyValue(style, style[i]));\n }\n return result.join(';\\n');\n }\n function _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != 'normal' && content != 'none' && style.width != '0px') {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(':before', element.firstChild);\n pseudo(':after', null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += ' kendo-pdf-hide-pseudo-elements';\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function (el) {\n element.removeChild(el);\n });\n } else {\n _renderElement(element, group);\n }\n }\n function _renderElement(element, group) {\n var style = getComputedStyle(element);\n var top = getBorder(style, 'top');\n var right = getBorder(style, 'right');\n var bottom = getBorder(style, 'bottom');\n var left = getBorder(style, 'left');\n var rTL0 = getBorderRadius(style, 'top-left');\n var rTR0 = getBorderRadius(style, 'top-right');\n var rBL0 = getBorderRadius(style, 'bottom-left');\n var rBR0 = getBorderRadius(style, 'bottom-right');\n var dir = getPropertyValue(style, 'direction');\n var backgroundColor = getPropertyValue(style, 'background-color');\n backgroundColor = parseColor$1(backgroundColor);\n var backgroundImage = parseBackgroundImage(getPropertyValue(style, 'background-image'));\n var backgroundRepeat = splitProperty(getPropertyValue(style, 'background-repeat'));\n var backgroundPosition = splitProperty(getPropertyValue(style, 'background-position'));\n var backgroundOrigin = splitProperty(getPropertyValue(style, 'background-origin'));\n var backgroundSize = splitProperty(getPropertyValue(style, 'background-size'));\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow;\n if (textOverflow == 'ellipsis') {\n saveTextOverflow = element.style.textOverflow;\n element.style.textOverflow = 'clip';\n }\n }\n if (browser.msie && browser.version < 10) {\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n var innerbox = innerBox(element.getBoundingClientRect(), 'border-*-width', element);\n (function () {\n var clip = getPropertyValue(style, 'clip');\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == 'auto' ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == 'auto' ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == 'auto' ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == 'auto' ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path().moveTo(left, top).lineTo(right, top).lineTo(right, bottom).lineTo(left, bottom).close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n }());\n var boxes, i, cells;\n var display = getPropertyValue(style, 'display');\n if (display == 'table-row') {\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n boxes = [element.getBoundingClientRect()];\n }\n }\n boxes = adjustBoxes(boxes);\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n if (element.tagName == 'A' && element.href && !/^#?$/.test(element.getAttribute('href'))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice$1(r.getClientRects()).forEach(function (box) {\n var g = new Group();\n g._pdfLink = {\n url: element.href,\n top: box.top,\n right: box.right,\n bottom: box.bottom,\n left: box.left\n };\n group.append(g);\n });\n }\n }\n if (boxes.length > 0 && display == 'list-item' && !element.getAttribute('kendo-no-bullet')) {\n drawBullet(boxes[0]);\n }\n (function () {\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, 'padding');\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, 'overflow'))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, 'overflow-x'))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, 'overflow-y'))) {\n clipit();\n }\n }());\n if (!maybeRenderWidget(element, group)) {\n renderContents(element, group);\n }\n if (microsoft && textOverflow == 'ellipsis') {\n element.style.textOverflow = saveTextOverflow;\n }\n return group;\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, 'border-collapse') == 'collapse') {\n var tableBorderLeft = getBorder(table.style, 'left').width;\n var tableBorderTop = getBorder(table.style, 'top').width;\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes;\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice$1(boxes).map(function (box) {\n return {\n left: box.left + tableBorderLeft,\n top: box.top + tableBorderTop,\n right: box.right + tableBorderLeft,\n bottom: box.bottom + tableBorderTop,\n height: box.height,\n width: box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform$$1) {\n if (Wtop <= 0) {\n return;\n }\n var path, edge = new Group();\n setTransform(edge, transform$$1);\n group.append(edge);\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0).lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0).lineTo(len - Math.max(rr.x, Wright), Wtop).lineTo(Math.max(rl.x, Wleft), Wtop).close();\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [\n -1,\n 0,\n 0,\n 1,\n rl.x,\n 0\n ]);\n }\n if (rr.x) {\n drawRoundCorner(Wright, rr, [\n 1,\n 0,\n 0,\n 1,\n len - rr.x,\n 0\n ]);\n }\n function drawRoundCorner(Wright, r, transform$$1) {\n var angle = Math.PI / 2 * Wright / (Wright + Wtop);\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n setTransform(path, transform$$1);\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n } else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop).lineTo(0, Wtop);\n } else {\n path.lineTo(ri.x, Wtop).lineTo(ri.x, 0);\n }\n edge.append(path.close());\n }\n }\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top).lineTo(box.right, box.top).lineTo(box.right, box.bottom).lineTo(box.left, box.bottom).close();\n background.append(path);\n }\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(background, box, backgroundImage[i], backgroundRepeat[i % backgroundRepeat.length], backgroundPosition[i % backgroundPosition.length], backgroundOrigin[i % backgroundOrigin.length], backgroundSize[i % backgroundSize.length]);\n }\n }\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || background == 'none') {\n return;\n }\n if (background.type == 'url') {\n if (/^url\\(\\\"data:image\\/svg/i.test(background.url)) {\n return;\n }\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function (group, rect) {\n group.append(new Image$1(background.url, rect));\n });\n }\n } else if (background.type == 'linear') {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n var orgBox = box;\n if (backgroundOrigin == 'content-box') {\n orgBox = innerBox(orgBox, 'border-*-width', element);\n orgBox = innerBox(orgBox, 'padding-*', element);\n } else if (backgroundOrigin == 'padding-box') {\n orgBox = innerBox(orgBox, 'border-*-width', element);\n }\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == 'contain') {\n f = Math.min(orgBox.width / img_width, orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n } else if (backgroundSize == 'cover') {\n f = Math.max(orgBox.width / img_width, orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n } else {\n var size = backgroundSize.split(/\\s+/g);\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n if (size.length == 1 || size[1] == 'auto') {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n var pos = String(backgroundPosition);\n switch (pos) {\n case 'bottom':\n pos = '50% 100%';\n break;\n case 'top':\n pos = '50% 0';\n break;\n case 'left':\n pos = '0 50%';\n break;\n case 'right':\n pos = '100% 50%';\n break;\n case 'center':\n pos = '50% 50%';\n break;\n }\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = '50%';\n }\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n var rect = new Rect([\n orgBox.left + pos[0],\n orgBox.top + pos[1]\n ], [\n img_width,\n img_height\n ]);\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n if (backgroundRepeat == 'no-repeat') {\n renderBG(group, rect);\n } else if (backgroundRepeat == 'repeat-x') {\n rewX();\n repeatX();\n } else if (backgroundRepeat == 'repeat-y') {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n } else if (backgroundRepeat == 'repeat') {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n function drawBullet() {\n var listStyleType = getPropertyValue(style, 'list-style-type');\n if (listStyleType == 'none') {\n return;\n }\n var listStylePosition = getPropertyValue(style, 'list-style-position');\n function _drawBullet(f) {\n saveStyle(element, function () {\n element.style.position = 'relative';\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = 'absolute';\n bullet.style.boxSizing = 'border-box';\n if (listStylePosition == 'outside') {\n bullet.style.width = '6em';\n bullet.style.left = '-6.8em';\n bullet.style.textAlign = 'right';\n } else {\n bullet.style.left = '0px';\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute('kendo-split-index');\n if (k != null) {\n return f(k | 0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n switch (listStyleType) {\n case 'circle':\n case 'disc':\n case 'square':\n _drawBullet(function (bullet) {\n bullet.style.fontSize = '60%';\n bullet.style.lineHeight = '200%';\n bullet.style.paddingRight = '0.5em';\n bullet.style.fontFamily = 'DejaVu Serif';\n bullet.innerHTML = {\n 'disc': '\\u25CF',\n 'circle': '\\u25EF',\n 'square': '\\u25A0'\n }[listStyleType];\n });\n break;\n case 'decimal':\n case 'decimal-leading-zero':\n _drawBullet(function (bullet) {\n elementIndex(function (idx) {\n ++idx;\n if (listStyleType == 'decimal-leading-zero' && idx < 10) {\n idx = '0' + idx;\n }\n bullet.innerHTML = idx + '.';\n });\n });\n break;\n case 'lower-roman':\n case 'upper-roman':\n _drawBullet(function (bullet) {\n elementIndex(function (idx) {\n idx = arabicToRoman(idx + 1);\n if (listStyleType == 'upper-roman') {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + '.';\n });\n });\n break;\n case 'lower-latin':\n case 'lower-alpha':\n case 'upper-latin':\n case 'upper-alpha':\n _drawBullet(function (bullet) {\n elementIndex(function (idx) {\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + '.';\n });\n });\n break;\n }\n }\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n drawBackground(box);\n var shouldDrawLeft = left.width > 0 && (isFirst && dir == 'ltr' || isLast && dir == 'rtl');\n var shouldDrawRight = right.width > 0 && (isLast && dir == 'ltr' || isFirst && dir == 'rtl');\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n if (top.width == right.width && top.width == bottom.width && top.width == left.width) {\n if (shouldDrawLeft && shouldDrawRight) {\n box = innerBox(box, top.width / 2);\n var path = elementRoundBox(element, box, top.width / 2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n if (top.width > 0) {\n group.append(new Path({\n stroke: {\n width: top.width,\n color: top.color\n }\n }).moveTo(box.left, box.top + top.width / 2).lineTo(box.right, box.top + top.width / 2));\n }\n if (bottom.width > 0) {\n group.append(new Path({\n stroke: {\n width: bottom.width,\n color: bottom.color\n }\n }).moveTo(box.left, box.bottom - bottom.width / 2).lineTo(box.right, box.bottom - bottom.width / 2));\n }\n if (shouldDrawLeft) {\n group.append(new Path({\n stroke: {\n width: left.width,\n color: left.color\n }\n }).moveTo(box.left + left.width / 2, box.top).lineTo(box.left + left.width / 2, box.bottom));\n }\n if (shouldDrawRight) {\n group.append(new Path({\n stroke: {\n width: right.width,\n color: right.color\n }\n }).moveTo(box.right - right.width / 2, box.top).lineTo(box.right - right.width / 2, box.bottom));\n }\n return;\n }\n }\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n drawEdge(top.color, box.width, top.width, left.width, right.width, rTL, rTR, [\n 1,\n 0,\n 0,\n 1,\n box.left,\n box.top\n ]);\n drawEdge(bottom.color, box.width, bottom.width, right.width, left.width, rBR, rBL, [\n -1,\n 0,\n 0,\n -1,\n box.right,\n box.bottom\n ]);\n function inv(p) {\n return {\n x: p.y,\n y: p.x\n };\n }\n drawEdge(left.color, box.height, left.width, bottom.width, top.width, inv(rBL), inv(rTL), [\n 0,\n -1,\n 1,\n 0,\n box.left,\n box.bottom\n ]);\n drawEdge(right.color, box.height, right.width, top.width, bottom.width, inv(rTR), inv(rBR), [\n 0,\n 1,\n -1,\n 0,\n box.right,\n box.top\n ]);\n }\n }\n function gradientRenderer(gradient) {\n return function (group, rect) {\n var width = rect.width(), height = rect.height();\n switch (gradient.type) {\n case 'linear':\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case 'top':\n angle = 0;\n break;\n case 'left':\n angle = -Math.PI / 2;\n break;\n case 'bottom':\n angle = Math.PI;\n break;\n case 'right':\n angle = Math.PI / 2;\n break;\n case 'top left':\n case 'left top':\n angle = -Math.atan2(height, width);\n break;\n case 'top right':\n case 'right top':\n angle = Math.atan2(height, width);\n break;\n case 'bottom left':\n case 'left bottom':\n angle = Math.PI + Math.atan2(height, width);\n break;\n case 'bottom right':\n case 'right bottom':\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len / 2 * sin;\n var y = len / 2 * cos;\n if (angle > Math.PI / 2 && angle <= 3 * Math.PI / 2) {\n x = -x;\n y = -y;\n }\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function (s, i) {\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n implicit.forEach(function (s, i) {\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({\n left: right,\n stop: stop\n });\n }\n return stop;\n });\n var start = [\n 0.5 - x,\n 0.5 + y\n ];\n var end = [\n 0.5 + x,\n 0.5 - y\n ];\n group.append(Path.fromRect(rect).stroke(null).fill(new LinearGradient({\n start: start,\n end: end,\n stops: stops,\n userSpace: false\n })));\n break;\n case 'radial':\n if (window.console && window.console.log) {\n window.console.log('Radial gradients are not yet supported in HTML renderer');\n }\n break;\n }\n };\n }\n function maybeRenderWidget(element, group) {\n var visual;\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr('role'))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n if (!visual) {\n return false;\n }\n var wrap$$1 = new Group();\n wrap$$1.children.push(visual);\n var bbox = element.getBoundingClientRect();\n wrap$$1.transform(transform().translate(bbox.left, bbox.top));\n group.append(wrap$$1);\n return true;\n }\n function renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new Rect([\n box.left,\n box.top\n ], [\n box.width,\n box.height\n ]);\n var image = new Image$1(url, rect);\n setClipping(image, elementRoundBox(element, box, 'content'));\n group.append(image);\n }\n function zIndexSort(a, b) {\n var sa = getComputedStyle(a);\n var sb = getComputedStyle(b);\n var za = parseFloat(getPropertyValue(sa, 'z-index'));\n var zb = parseFloat(getPropertyValue(sb, 'z-index'));\n var pa = getPropertyValue(sa, 'position');\n var pb = getPropertyValue(sb, 'position');\n if (isNaN(za) && isNaN(zb)) {\n if (/static|absolute/.test(pa) && /static|absolute/.test(pb)) {\n return 0;\n }\n if (pa == 'static') {\n return -1;\n }\n if (pb == 'static') {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n }\n function isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n }\n function getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n }\n function renderCheckbox(element, group) {\n var style = getComputedStyle(element);\n var color = getPropertyValue(style, 'color');\n var box = element.getBoundingClientRect();\n if (element.type == 'checkbox') {\n group.append(Path.fromRect(new Rect([\n box.left + 1,\n box.top + 1\n ], [\n box.width - 2,\n box.height - 2\n ])).stroke(color, 1));\n if (element.checked) {\n group.append(new Path().stroke(color, 1.2).moveTo(box.left + 0.22 * box.width, box.top + 0.55 * box.height).lineTo(box.left + 0.45 * box.width, box.top + 0.75 * box.height).lineTo(box.left + 0.78 * box.width, box.top + 0.22 * box.width));\n }\n } else {\n group.append(new Circle(new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width - 2, box.height - 2) / 2)).stroke(color, 1));\n if (element.checked) {\n group.append(new Circle(new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width - 8, box.height - 8) / 2)).fill(color).stroke(null));\n }\n }\n }\n function renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == 'input' && (element.type == 'checkbox' || element.type == 'radio')) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle(element));\n if (tag == 'input') {\n el.style.whiteSpace = 'pre';\n }\n if (tag == 'select' || tag == 'textarea') {\n el.style.overflow = 'auto';\n }\n if (tag == 'select') {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle(element.options[i]));\n option.style.display = 'block';\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n element.style.display = 'none';\n renderContents(el, group);\n element.style.display = '';\n p.removeChild(el);\n }\n function renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case 'img':\n renderImage(element, element.src, group);\n break;\n case 'canvas':\n try {\n renderImage(element, element.toDataURL('image/png'), group);\n } catch (ex) {\n }\n break;\n case 'textarea':\n case 'input':\n case 'select':\n renderFormField(element, group);\n break;\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3:\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1:\n var style = getComputedStyle(i);\n var floating = getPropertyValue(style, 'float');\n var position = getPropertyValue(style, 'position');\n if (position != 'static') {\n positioned.push(i);\n } else if (floating != 'none') {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n mergeSort(children, zIndexSort).forEach(function (el) {\n renderElement(el, group);\n });\n mergeSort(floats, zIndexSort).forEach(function (el) {\n renderElement(el, group);\n });\n mergeSort(positioned, zIndexSort).forEach(function (el) {\n renderElement(el, group);\n });\n }\n }\n function renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle(element);\n if (parseFloat(getPropertyValue(style, 'text-indent')) < -500) {\n return;\n }\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n if (!end) {\n return;\n }\n var fontSize = getPropertyValue(style, 'font-size');\n var lineHeight = getPropertyValue(style, 'line-height');\n var font = [\n getPropertyValue(style, 'font-style'),\n getPropertyValue(style, 'font-variant'),\n getPropertyValue(style, 'font-weight'),\n fontSize,\n getPropertyValue(style, 'font-family')\n ].join(' ');\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n if (fontSize === 0) {\n return;\n }\n var color = getPropertyValue(style, 'color');\n var range = element.ownerDocument.createRange();\n var align$$1 = getPropertyValue(style, 'text-align');\n var isJustified = align$$1 == 'justify';\n var columnCount = getPropertyValue(style, 'column-count', 1);\n var whiteSpace = getPropertyValue(style, 'white-space');\n var textTransform = getPropertyValue(style, 'text-transform');\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n var prevLineBottom = null;\n var underline = nodeInfo['underline'];\n var lineThrough = nodeInfo['line-through'];\n var overline = nodeInfo['overline'];\n var hasDecoration = underline || lineThrough || overline;\n while (!doChunk()) {\n }\n if (hasDecoration) {\n range.selectNode(node);\n slice$1(range.getClientRects()).forEach(decorate);\n }\n return;\n function actuallyGetRangeBoundingRect(range) {\n if (microsoft || browser.chrome) {\n var rectangles = range.getClientRects(), box = {\n top: Infinity,\n right: -Infinity,\n bottom: -Infinity,\n left: Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue;\n }\n box.left = Math.min(b.left, box.left);\n box.top = Math.min(b.top, box.top);\n box.right = Math.max(b.right, box.right);\n box.bottom = Math.max(b.bottom, box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n if (!found) {\n pos = function findEOL(min, eol, max) {\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, min + eol >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, eol + max >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n }(start, Math.min(end, start + estimateLineLength), end);\n if (pos == start) {\n return true;\n }\n start = pos;\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false;\n }\n if (pos > 0) {\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n str = str.replace(/\\s+/g, ' ');\n } else if (/\\t/.test(str)) {\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n cc = 0;\n } else {\n cc++;\n }\n }\n while ((pos = str.search('\\t')) >= 0) {\n var indent = ' '.substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n function drawText(str, box) {\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top: top,\n right: box.right,\n bottom: top + height,\n left: box.left,\n height: height,\n width: box.right - box.left\n };\n }\n switch (textTransform) {\n case 'uppercase':\n str = str.toUpperCase();\n break;\n case 'lowercase':\n str = str.toLowerCase();\n break;\n case 'capitalize':\n str = str.replace(/(?:^|\\s)\\S/g, function (l) {\n return l.toUpperCase();\n });\n break;\n }\n var text = new TextRect(str, new Rect([\n box.left,\n box.top\n ], [\n box.width,\n box.height\n ]), {\n font: font,\n fill: { color: color }\n });\n group.append(text);\n }\n function decorate(box) {\n line(underline, box.bottom);\n line(lineThrough, box.bottom - box.height / 2.7);\n line(overline, box.top);\n function line(color, ypos) {\n if (color) {\n var width = fontSize / 12;\n var path = new Path({\n stroke: {\n width: width,\n color: color\n }\n });\n ypos -= width;\n path.moveTo(box.left, ypos).lineTo(box.right, ypos);\n group.append(path);\n }\n }\n }\n }\n function groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != 'auto') {\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n if (main !== group) {\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n }\n }\n return tmp;\n }\n function renderElement(element, container) {\n var style = getComputedStyle(element);\n updateCounters(style);\n if (/^(style|script|link|meta|iframe|svg|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n if (nodeInfo._clipbox == null) {\n return;\n }\n var opacity = parseFloat(getPropertyValue(style, 'opacity'));\n var visibility = getPropertyValue(style, 'visibility');\n var display = getPropertyValue(style, 'display');\n if (opacity === 0 || visibility == 'hidden' || display == 'none') {\n return;\n }\n var tr = getTransform(style);\n var group;\n var zIndex = getPropertyValue(style, 'z-index');\n if ((tr || opacity < 1) && zIndex == 'auto') {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n pushNodeInfo(element, style, group);\n if (!tr) {\n _renderWithPseudoElements(element, group);\n } else {\n saveStyle(element, function () {\n pleaseSetPropertyValue(element.style, 'transform', 'none', 'important');\n pleaseSetPropertyValue(element.style, 'transition', 'none', 'important');\n if (getPropertyValue(style, 'position') == 'static') {\n pleaseSetPropertyValue(element.style, 'position', 'relative', 'important');\n }\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [\n 1,\n 0,\n 0,\n 1,\n -x,\n -y\n ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [\n 1,\n 0,\n 0,\n 1,\n x,\n y\n ]);\n m = setTransform(group, m);\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n _renderWithPseudoElements(element, group);\n });\n }\n popNodeInfo();\n }\n function mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1 * a2 + b1 * c2,\n a1 * b2 + b1 * d2,\n c1 * a2 + d1 * c2,\n c1 * b2 + d1 * d2,\n e1 * a2 + f1 * c2 + e2,\n e1 * b2 + f1 * d2 + f2\n ];\n }\n var drawing = {\n svg: svg,\n canvas: canvas,\n util: util,\n PathParser: PathParser,\n Surface: Surface,\n BaseNode: BaseNode,\n SurfaceFactory: SurfaceFactory,\n OptionsStore: OptionsStore,\n exportImage: exportImage,\n exportSVG: exportSVG,\n QuadNode: QuadNode,\n ShapesQuadTree: ShapesQuadTree,\n ObserversMixin: ObserversMixin,\n Element: Element$1,\n Circle: Circle,\n Arc: Arc,\n Path: Path,\n MultiPath: MultiPath,\n Text: Text,\n Image: Image$1,\n Group: Group,\n Layout: Layout,\n Rect: Rect$2,\n align: align,\n vAlign: vAlign,\n stack: stack,\n vStack: vStack,\n wrap: wrap,\n vWrap: vWrap,\n fit: fit,\n LinearGradient: LinearGradient,\n RadialGradient: RadialGradient,\n GradientStop: GradientStop,\n Gradient: Gradient,\n Animation: Animation,\n AnimationFactory: AnimationFactory,\n drawDOM: drawDOM\n };\n kendo.deepExtend(kendo, {\n drawing: drawing,\n geometry: geometry\n });\n kendo.drawing.Segment = kendo.geometry.Segment;\n kendo.dataviz.drawing = kendo.drawing;\n kendo.dataviz.geometry = kendo.geometry;\n kendo.drawing.util.measureText = kendo.util.measureText;\n kendo.drawing.util.objectKey = kendo.util.objectKey;\n kendo.drawing.Color = kendo.Color;\n kendo.util.encodeBase64 = kendo.drawing.util.encodeBase64;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.popup', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'popup',\n name: 'Pop-up',\n category: 'framework',\n depends: ['core'],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, Class = kendo.Class, support = kendo.support, getOffset = kendo.getOffset, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, OPEN = 'open', CLOSE = 'close', DEACTIVATE = 'deactivate', ACTIVATE = 'activate', CENTER = 'center', LEFT = 'left', RIGHT = 'right', TOP = 'top', BOTTOM = 'bottom', ABSOLUTE = 'absolute', HIDDEN = 'hidden', BODY = 'body', LOCATION = 'location', POSITION = 'position', VISIBLE = 'visible', EFFECTS = 'effects', ACTIVE = 'k-state-active', ACTIVEBORDER = 'k-state-border', ACTIVEBORDERREGEXP = /k-state-border-(\\w+)/, ACTIVECHILDREN = '.k-picker-wrap, .k-dropdown-wrap, .k-link', MOUSEDOWN = 'down', DOCUMENT_ELEMENT = $(document.documentElement), proxy = $.proxy, WINDOW = $(window), SCROLL = 'scroll', cssPrefix = support.transitions.css, TRANSFORM = cssPrefix + 'transform', extend = $.extend, NS = '.kendoPopup', styles = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n ];\n function contains(container, target) {\n if (!container || !target) {\n return false;\n }\n return container === target || $.contains(container, target);\n }\n var Popup = Widget.extend({\n init: function (element, options) {\n var that = this, parentPopup;\n options = options || {};\n if (options.isRtl) {\n options.origin = options.origin || BOTTOM + ' ' + RIGHT;\n options.position = options.position || TOP + ' ' + RIGHT;\n }\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n that.collisions = options.collision ? options.collision.split(' ') : [];\n that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n if (that.collisions.length === 1) {\n that.collisions.push(that.collisions[0]);\n }\n parentPopup = $(that.options.anchor).closest('.k-popup,.k-group').filter(':not([class^=km-])');\n options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || document.body);\n that.element.hide().addClass('k-popup k-group k-reset').toggleClass('k-rtl', !!options.isRtl).css({ position: ABSOLUTE }).appendTo(options.appendTo).attr('aria-hidden', true).on('mouseenter' + NS, function () {\n that._hovered = true;\n }).on('wheel' + NS, function (e) {\n var list = $(e.target).find('.k-list');\n var scrollArea = list.parent();\n if (list.length && list.is(':visible') && (scrollArea.scrollTop() === 0 && e.originalEvent.deltaY < 0 || scrollArea.scrollTop() === scrollArea.prop('scrollHeight') - scrollArea.prop('offsetHeight') && e.originalEvent.deltaY > 0)) {\n e.preventDefault();\n }\n }).on('mouseleave' + NS, function () {\n that._hovered = false;\n });\n that.wrapper = $();\n if (options.animation === false) {\n options.animation = {\n open: { effects: {} },\n close: {\n hide: true,\n effects: {}\n }\n };\n }\n extend(options.animation.open, {\n complete: function () {\n that.wrapper.css({ overflow: VISIBLE });\n that._activated = true;\n that._trigger(ACTIVATE);\n }\n });\n extend(options.animation.close, {\n complete: function () {\n that._animationClose();\n }\n });\n that._mousedownProxy = function (e) {\n that._mousedown(e);\n };\n if (support.mobileOS.android) {\n that._resizeProxy = function (e) {\n setTimeout(function () {\n that._resize(e);\n }, 600);\n };\n } else {\n that._resizeProxy = function (e) {\n that._resize(e);\n };\n }\n if (options.toggleTarget) {\n $(options.toggleTarget).on(options.toggleEvent + NS, $.proxy(that.toggle, that));\n }\n },\n events: [\n OPEN,\n ACTIVATE,\n CLOSE,\n DEACTIVATE\n ],\n options: {\n name: 'Popup',\n toggleEvent: 'click',\n origin: BOTTOM + ' ' + LEFT,\n position: TOP + ' ' + LEFT,\n anchor: BODY,\n appendTo: null,\n collision: 'flip fit',\n viewport: window,\n copyAnchorStyles: true,\n autosize: false,\n modal: false,\n adjustSize: {\n width: 0,\n height: 0\n },\n animation: {\n open: {\n effects: 'slideIn:down',\n transition: true,\n duration: 200\n },\n close: {\n duration: 100,\n hide: true\n }\n }\n },\n _animationClose: function () {\n var that = this;\n var location = that.wrapper.data(LOCATION);\n that.wrapper.hide();\n if (location) {\n that.wrapper.css(location);\n }\n if (that.options.anchor != BODY) {\n that._hideDirClass();\n }\n that._closing = false;\n that._trigger(DEACTIVATE);\n },\n destroy: function () {\n var that = this, options = that.options, element = that.element.off(NS), parent;\n Widget.fn.destroy.call(that);\n if (options.toggleTarget) {\n $(options.toggleTarget).off(NS);\n }\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n }\n kendo.destroy(that.element.children());\n element.removeData();\n if (options.appendTo[0] === document.body) {\n parent = element.parent('.k-animation-container');\n if (parent[0]) {\n parent.remove();\n } else {\n element.remove();\n }\n }\n },\n open: function (x, y) {\n var that = this, fixed = {\n isFixed: !isNaN(parseInt(y, 10)),\n x: x,\n y: y\n }, element = that.element, options = that.options, animation, wrapper, anchor = $(options.anchor), mobile = element[0] && element.hasClass('km-widget');\n if (!that.visible()) {\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == 'font-size') {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n if (element.data('animating') || that._trigger(OPEN)) {\n return;\n }\n that._activated = false;\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy).on(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n that._toggleResize(true);\n }\n that.wrapper = wrapper = kendo.wrap(element, options.autosize).css({\n overflow: HIDDEN,\n display: 'block',\n position: ABSOLUTE\n }).attr('aria-hidden', false);\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, 'translatez(0)');\n }\n wrapper.css(POSITION);\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, '-10000px');\n }\n that.flipped = that._position(fixed);\n animation = that._openAnimation();\n if (options.anchor != BODY) {\n that._showDirClass(animation);\n }\n element.data(EFFECTS, animation.effects).kendoStop(true).kendoAnimate(animation).attr('aria-hidden', false);\n }\n },\n _location: function (isFixed) {\n var that = this, element = that.element, options = that.options, wrapper, anchor = $(options.anchor), mobile = element[0] && element.hasClass('km-widget');\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == 'font-size') {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n that.wrapper = wrapper = kendo.wrap(element, options.autosize).css({\n overflow: HIDDEN,\n display: 'block',\n position: ABSOLUTE\n });\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, 'translatez(0)');\n }\n wrapper.css(POSITION);\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, '-10000px');\n }\n that._position(isFixed || {});\n var offset = wrapper.offset();\n return {\n width: kendo._outerWidth(wrapper),\n height: kendo._outerHeight(wrapper),\n left: offset.left,\n top: offset.top\n };\n },\n _openAnimation: function () {\n var animation = extend(true, {}, this.options.animation.open);\n animation.effects = kendo.parseEffects(animation.effects, this.flipped);\n return animation;\n },\n _hideDirClass: function () {\n var anchor = $(this.options.anchor);\n var direction = ((anchor.attr('class') || '').match(ACTIVEBORDERREGEXP) || [\n '',\n 'down'\n ])[1];\n var dirClass = ACTIVEBORDER + '-' + direction;\n anchor.removeClass(dirClass).children(ACTIVECHILDREN).removeClass(ACTIVE).removeClass(dirClass);\n this.element.removeClass(ACTIVEBORDER + '-' + kendo.directions[direction].reverse);\n },\n _showDirClass: function (animation) {\n var direction = animation.effects.slideIn ? animation.effects.slideIn.direction : 'down';\n var dirClass = ACTIVEBORDER + '-' + direction;\n $(this.options.anchor).addClass(dirClass).children(ACTIVECHILDREN).addClass(ACTIVE).addClass(dirClass);\n this.element.addClass(ACTIVEBORDER + '-' + kendo.directions[direction].reverse);\n },\n position: function () {\n if (this.visible()) {\n this.flipped = this._position();\n }\n },\n toggle: function () {\n var that = this;\n that[that.visible() ? CLOSE : OPEN]();\n },\n visible: function () {\n return this.element.is(':' + VISIBLE);\n },\n close: function (skipEffects) {\n var that = this, options = that.options, wrap, animation, openEffects, closeEffects;\n if (that.visible()) {\n wrap = that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide();\n that._toggleResize(false);\n if (that._closing || that._trigger(CLOSE)) {\n that._toggleResize(true);\n return;\n }\n that.element.find('.k-popup').each(function () {\n var that = $(this), popup = that.data('kendoPopup');\n if (popup) {\n popup.close(skipEffects);\n }\n });\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n if (skipEffects) {\n animation = {\n hide: true,\n effects: {}\n };\n } else {\n animation = extend(true, {}, options.animation.close);\n openEffects = that.element.data(EFFECTS);\n closeEffects = animation.effects;\n if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) {\n animation.effects = openEffects;\n animation.reverse = true;\n }\n that._closing = true;\n }\n that.element.kendoStop(true).attr('aria-hidden', true);\n wrap.css({ overflow: HIDDEN }).attr('aria-hidden', true);\n that.element.kendoAnimate(animation);\n if (skipEffects) {\n that._animationClose();\n }\n }\n },\n _trigger: function (ev) {\n return this.trigger(ev, { type: ev });\n },\n _resize: function (e) {\n var that = this;\n if (support.resize.indexOf(e.type) !== -1) {\n clearTimeout(that._resizeTimeout);\n that._resizeTimeout = setTimeout(function () {\n that._position();\n that._resizeTimeout = null;\n }, 50);\n } else {\n if (!that._hovered || that._activated && that.element.hasClass('k-list-container')) {\n that.close();\n }\n }\n },\n _toggleResize: function (toggle) {\n var method = toggle ? 'on' : 'off';\n var eventNames = support.resize;\n if (!(support.mobileOS.ios || support.mobileOS.android)) {\n eventNames += ' ' + SCROLL;\n }\n if (toggle && !this.scrollableParents) {\n this.scrollableParents = this._scrollableParents();\n }\n if (this.scrollableParents && this.scrollableParents.length) {\n this.scrollableParents[method](SCROLL, this._resizeProxy);\n }\n WINDOW[method](eventNames, this._resizeProxy);\n },\n _mousedown: function (e) {\n var that = this, container = that.element[0], options = that.options, anchor = $(options.anchor)[0], toggleTarget = options.toggleTarget, target = kendo.eventTarget(e), popup = $(target).closest('.k-popup'), mobile = popup.parent().parent('.km-shim').length;\n popup = popup[0];\n if (!mobile && popup && popup !== that.element[0]) {\n return;\n }\n if ($(e.target).closest('a').data('rel') === 'popover') {\n return;\n }\n if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) {\n that.close();\n }\n },\n _fit: function (position, size, viewPortSize) {\n var output = 0;\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n if (position < 0) {\n output = -position;\n }\n return output;\n },\n _flip: function (offset, size, anchorSize, viewPortSize, origin, position, boxSize) {\n var output = 0;\n boxSize = boxSize || size;\n if (position !== origin && position !== CENTER && origin !== CENTER) {\n if (offset + boxSize > viewPortSize) {\n output += -(anchorSize + size);\n }\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n }\n return output;\n },\n _scrollableParents: function () {\n return $(this.options.anchor).parentsUntil('body').filter(function (index, element) {\n return kendo.isScrollable(element);\n });\n },\n _position: function (fixed) {\n var that = this, element = that.element, wrapper = that.wrapper, options = that.options, viewport = $(options.viewport), zoomLevel = support.zoomLevel(), isWindow = !!(viewport[0] == window && window.innerWidth && zoomLevel <= 1.02), anchor = $(options.anchor), origins = options.origin.toLowerCase().split(' '), positions = options.position.toLowerCase().split(' '), collisions = that.collisions, siblingContainer, parents, parentZIndex, zIndex = 10002, idx = 0, docEl = document.documentElement, length, viewportOffset, viewportWidth, viewportHeight;\n if (options.viewport === window) {\n viewportOffset = {\n top: window.pageYOffset || document.documentElement.scrollTop || 0,\n left: window.pageXOffset || document.documentElement.scrollLeft || 0\n };\n } else {\n viewportOffset = viewport.offset();\n }\n if (isWindow) {\n viewportWidth = window.innerWidth;\n viewportHeight = window.innerHeight;\n } else {\n viewportWidth = viewport.width();\n viewportHeight = viewport.height();\n }\n if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) {\n var sign = options.isRtl ? -1 : 1;\n viewportWidth -= sign * kendo.support.scrollbar();\n }\n siblingContainer = anchor.parents().filter(wrapper.siblings());\n if (siblingContainer[0]) {\n parentZIndex = Math.max(Number(siblingContainer.css('zIndex')), 0);\n if (parentZIndex) {\n zIndex = parentZIndex + 10;\n } else {\n parents = anchor.parentsUntil(siblingContainer);\n for (length = parents.length; idx < length; idx++) {\n parentZIndex = Number($(parents[idx]).css('zIndex'));\n if (parentZIndex && zIndex < parentZIndex) {\n zIndex = parentZIndex + 10;\n }\n }\n }\n }\n wrapper.css('zIndex', zIndex);\n if (fixed && fixed.isFixed) {\n wrapper.css({\n left: fixed.x,\n top: fixed.y\n });\n } else {\n wrapper.css(that._align(origins, positions));\n }\n var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]), offset = getOffset(wrapper), anchorParent = anchor.offsetParent().parent('.k-animation-container,.k-popup,.k-group');\n if (anchorParent.length) {\n pos = getOffset(wrapper, POSITION, true);\n offset = getOffset(wrapper);\n }\n offset.top -= viewportOffset.top;\n offset.left -= viewportOffset.left;\n if (!that.wrapper.data(LOCATION)) {\n wrapper.data(LOCATION, extend({}, pos));\n }\n var offsets = extend({}, offset), location = extend({}, pos), adjustSize = options.adjustSize;\n if (collisions[0] === 'fit') {\n location.top += that._fit(offsets.top, outerHeight(wrapper) + adjustSize.height, viewportHeight / zoomLevel);\n }\n if (collisions[1] === 'fit') {\n location.left += that._fit(offsets.left, outerWidth(wrapper) + adjustSize.width, viewportWidth / zoomLevel);\n }\n var flipPos = extend({}, location);\n var elementHeight = outerHeight(element);\n var wrapperHeight = outerHeight(wrapper);\n if (!wrapper.height() && elementHeight) {\n wrapperHeight = wrapperHeight + elementHeight;\n }\n if (collisions[0] === 'flip') {\n location.top += that._flip(offsets.top, elementHeight, outerHeight(anchor), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight);\n }\n if (collisions[1] === 'flip') {\n location.left += that._flip(offsets.left, outerWidth(element), outerWidth(anchor), viewportWidth / zoomLevel, origins[1], positions[1], outerWidth(wrapper));\n }\n element.css(POSITION, ABSOLUTE);\n wrapper.css(location);\n return location.left != flipPos.left || location.top != flipPos.top;\n },\n _align: function (origin, position) {\n var that = this, element = that.wrapper, anchor = $(that.options.anchor), verticalOrigin = origin[0], horizontalOrigin = origin[1], verticalPosition = position[0], horizontalPosition = position[1], anchorOffset = getOffset(anchor), appendTo = $(that.options.appendTo), appendToOffset, width = outerWidth(element), height = outerHeight(element) || outerHeight(element.children().first()), anchorWidth = outerWidth(anchor), anchorHeight = outerHeight(anchor), top = anchorOffset.top, left = anchorOffset.left, round = Math.round;\n if (appendTo[0] != document.body) {\n appendToOffset = getOffset(appendTo);\n top -= appendToOffset.top;\n left -= appendToOffset.left;\n }\n if (verticalOrigin === BOTTOM) {\n top += anchorHeight;\n }\n if (verticalOrigin === CENTER) {\n top += round(anchorHeight / 2);\n }\n if (verticalPosition === BOTTOM) {\n top -= height;\n }\n if (verticalPosition === CENTER) {\n top -= round(height / 2);\n }\n if (horizontalOrigin === RIGHT) {\n left += anchorWidth;\n }\n if (horizontalOrigin === CENTER) {\n left += round(anchorWidth / 2);\n }\n if (horizontalPosition === RIGHT) {\n left -= width;\n }\n if (horizontalPosition === CENTER) {\n left -= round(width / 2);\n }\n return {\n top: top,\n left: left\n };\n }\n });\n ui.plugin(Popup);\n var stableSort = kendo.support.stableSort;\n var tabKeyTrapNS = 'kendoTabKeyTrap';\n var focusableNodesSelector = 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], *[contenteditable]';\n var TabKeyTrap = Class.extend({\n init: function (element) {\n this.element = $(element);\n this.element.autoApplyNS(tabKeyTrapNS);\n },\n trap: function () {\n this.element.on('keydown', proxy(this._keepInTrap, this));\n },\n removeTrap: function () {\n this.element.kendoDestroy(tabKeyTrapNS);\n },\n destroy: function () {\n this.element.kendoDestroy(tabKeyTrapNS);\n this.element = undefined;\n },\n shouldTrap: function () {\n return true;\n },\n _keepInTrap: function (e) {\n if (e.which !== 9 || !this.shouldTrap() || e.isDefaultPrevented()) {\n return;\n }\n var elements = this._focusableElements();\n var sortedElements = this._sortFocusableElements(elements);\n var next = this._nextFocusable(e, sortedElements);\n this._focus(next);\n e.preventDefault();\n },\n _focusableElements: function () {\n var elements = this.element.find(focusableNodesSelector).filter(function (i, item) {\n return item.tabIndex >= 0 && $(item).is(':visible') && !$(item).is('[disabled]');\n });\n if (this.element.is('[tabindex]')) {\n elements.push(this.element[0]);\n }\n return elements;\n },\n _sortFocusableElements: function (elements) {\n var sortedElements;\n if (stableSort) {\n sortedElements = elements.sort(function (prev, next) {\n return prev.tabIndex - next.tabIndex;\n });\n } else {\n var attrName = '__k_index';\n elements.each(function (i, item) {\n item.setAttribute(attrName, i);\n });\n sortedElements = elements.sort(function (prev, next) {\n return prev.tabIndex === next.tabIndex ? parseInt(prev.getAttribute(attrName), 10) - parseInt(next.getAttribute(attrName), 10) : prev.tabIndex - next.tabIndex;\n });\n elements.removeAttr(attrName);\n }\n return sortedElements;\n },\n _nextFocusable: function (e, elements) {\n var count = elements.length;\n var current = elements.index(e.target);\n return elements.get((current + (e.shiftKey ? -1 : 1)) % count);\n },\n _focus: function (element) {\n if (element.nodeName == 'IFRAME') {\n element.contentWindow.document.body.focus();\n return;\n }\n element.focus();\n if (element.nodeName == 'INPUT' && element.setSelectionRange && this._haveSelectionRange(element)) {\n element.setSelectionRange(0, element.value.length);\n }\n },\n _haveSelectionRange: function (element) {\n var elementType = element.type.toLowerCase();\n return elementType === 'text' || elementType === 'search' || elementType === 'url' || elementType === 'tel' || elementType === 'password';\n }\n });\n ui.Popup.TabKeyTrap = TabKeyTrap;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('drawing/surface-tooltip', [\n 'kendo.popup',\n 'drawing/kendo-drawing'\n ], f);\n}(function () {\n (function ($) {\n var NS = '.kendo';\n var kendo = window.kendo;\n var deepExtend = kendo.deepExtend;\n var utils = kendo.drawing.util;\n var defined = utils.defined;\n var limitValue = utils.limitValue;\n var eventCoordinates = utils.eventCoordinates;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n var proxy = $.proxy;\n var TOOLTIP_TEMPLATE = '<div class=\"k-tooltip\">' + '<div class=\"k-tooltip-content\"></div>' + '</div>';\n var TOOLTIP_CLOSE_TEMPLATE = '<div class=\"k-tooltip-button\"><a href=\"\\\\#\" class=\"k-icon k-i-close\">close</a></div>';\n var SurfaceTooltip = kendo.Class.extend({\n init: function (surface, options) {\n this.element = $(TOOLTIP_TEMPLATE);\n this.content = this.element.children('.k-tooltip-content');\n options = options || {};\n this.options = deepExtend({}, this.options, this._tooltipOptions(options));\n this.popupOptions = {\n appendTo: options.appendTo,\n animation: options.animation,\n copyAnchorStyles: false,\n collision: 'fit fit'\n };\n this._openPopupHandler = $.proxy(this._openPopup, this);\n this.surface = surface;\n this._bindEvents();\n },\n options: {\n position: 'top',\n showOn: 'mouseenter',\n offset: 7,\n autoHide: true,\n hideDelay: 0,\n showAfter: 100\n },\n _bindEvents: function () {\n this._showHandler = proxy(this._showEvent, this);\n this._surfaceLeaveHandler = proxy(this._surfaceLeave, this);\n this._mouseleaveHandler = proxy(this._mouseleave, this);\n this._mousemoveHandler = proxy(this._mousemove, this);\n this.surface.bind('click', this._showHandler);\n this.surface.bind('mouseenter', this._showHandler);\n this.surface.bind('mouseleave', this._mouseleaveHandler);\n this.surface.bind('mousemove', this._mousemoveHandler);\n this.surface.element.on('mouseleave' + NS, this._surfaceLeaveHandler);\n this.element.on('click' + NS, '.k-tooltip-button', proxy(this._hideClick, this));\n this.element.on('mouseleave' + NS, proxy(this._tooltipLeave, this));\n },\n getPopup: function () {\n if (!this.popup) {\n this.popup = new kendo.ui.Popup(this.element, this.popupOptions);\n }\n return this.popup;\n },\n destroy: function () {\n var popup = this.popup;\n this.surface.unbind('click', this._showHandler);\n this.surface.unbind('mouseenter', this._showHandler);\n this.surface.unbind('mouseleave', this._mouseleaveHandler);\n this.surface.unbind('mousemove', this._mousemoveHandler);\n this.surface.element.off('mouseleave' + NS, this._surfaceLeaveHandler);\n this.element.off('click' + NS);\n this.element.off('mouseleave' + NS);\n if (popup) {\n popup.destroy();\n delete this.popup;\n }\n delete this.popupOptions;\n clearTimeout(this._timeout);\n delete this.element;\n delete this.content;\n delete this.surface;\n },\n _tooltipOptions: function (options) {\n options = options || {};\n return {\n position: options.position,\n showOn: options.showOn,\n offset: options.offset,\n autoHide: options.autoHide,\n width: options.width,\n height: options.height,\n content: options.content,\n shared: options.shared,\n hideDelay: options.hideDelay,\n showAfter: options.showAfter\n };\n },\n _tooltipShape: function (shape) {\n while (shape && !shape.options.tooltip) {\n shape = shape.parent;\n }\n return shape;\n },\n _updateContent: function (target, shape, options) {\n var content = options.content;\n if (kendo.isFunction(content)) {\n content = content({\n element: shape,\n target: target\n });\n }\n if (content) {\n this.content.html(content);\n return true;\n }\n },\n _position: function (shape, options, elementSize, event) {\n var position = options.position;\n var tooltipOffset = options.offset || 0;\n var surface = this.surface;\n var offset = surface._instance._elementOffset();\n var size = surface.getSize();\n var surfaceOffset = surface._instance._offset;\n var bbox = shape.bbox();\n var width = elementSize.width;\n var height = elementSize.height;\n var left = 0, top = 0;\n bbox.origin.translate(offset.left, offset.top);\n if (surfaceOffset) {\n bbox.origin.translate(-surfaceOffset.x, -surfaceOffset.y);\n }\n if (position == 'cursor' && event) {\n var coord = eventCoordinates(event);\n left = coord.x - width / 2;\n top = coord.y - height - tooltipOffset;\n } else if (position == 'left') {\n left = bbox.origin.x - width - tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == 'right') {\n left = bbox.bottomRight().x + tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == 'bottom') {\n left = bbox.center().x - width / 2;\n top = bbox.bottomRight().y + tooltipOffset;\n } else {\n left = bbox.center().x - width / 2;\n top = bbox.origin.y - height - tooltipOffset;\n }\n return {\n left: limitValue(left, offset.left, offset.left + size.width),\n top: limitValue(top, offset.top, offset.top + size.height)\n };\n },\n show: function (shape, options) {\n this._show(shape, shape, deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip), options));\n },\n hide: function () {\n var popup = this.popup;\n var current = this._current;\n delete this._current;\n clearTimeout(this._showTimeout);\n if (popup && popup.visible() && current && !this.surface.trigger('tooltipClose', {\n element: current.shape,\n target: current.target,\n popup: popup\n })) {\n popup.close();\n }\n },\n _hideClick: function (e) {\n e.preventDefault();\n this.hide();\n },\n _show: function (target, shape, options, event, delay) {\n var current = this._current;\n clearTimeout(this._timeout);\n if (current && (current.shape === shape && options.shared || current.target === target)) {\n return;\n }\n clearTimeout(this._showTimeout);\n var popup = this.getPopup();\n if (!this.surface.trigger('tooltipOpen', {\n element: shape,\n target: target,\n popup: popup\n }) && this._updateContent(target, shape, options)) {\n this._autoHide(options);\n var elementSize = this._measure(options);\n if (popup.visible()) {\n popup.close(true);\n }\n this._current = {\n options: options,\n elementSize: elementSize,\n shape: shape,\n target: target,\n position: this._position(options.shared ? shape : target, options, elementSize, event)\n };\n if (delay) {\n this._showTimeout = setTimeout(this._openPopupHandler, options.showAfter || 0);\n } else {\n this._openPopup();\n }\n }\n },\n _openPopup: function () {\n var current = this._current;\n var position = current.position;\n this.getPopup().open(position.left, position.top);\n },\n _autoHide: function (options) {\n if (options.autoHide && this._closeButton) {\n this.element.removeClass('k-tooltip-closable');\n this._closeButton.remove();\n delete this._closeButton;\n }\n if (!options.autoHide && !this._closeButton) {\n this.element.addClass('k-tooltip-closable');\n this._closeButton = $(TOOLTIP_CLOSE_TEMPLATE).prependTo(this.element);\n }\n },\n _showEvent: function (e) {\n var shape = this._tooltipShape(e.element);\n if (shape) {\n var options = deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip));\n if (options && options.showOn == e.type) {\n this._show(e.element, shape, options, e.originalEvent, true);\n }\n }\n },\n _measure: function (options) {\n var popup = this.getPopup();\n var width, height;\n this.element.css({\n width: 'auto',\n height: 'auto'\n });\n var visible = popup.visible();\n if (!visible) {\n popup.wrapper.show();\n }\n this.element.css({\n width: defined(options.width) ? options.width : 'auto',\n height: defined(options.height) ? options.height : 'auto'\n });\n width = outerWidth(this.element);\n height = outerHeight(this.element);\n if (!visible) {\n popup.wrapper.hide();\n }\n return {\n width: width,\n height: height\n };\n },\n _mouseleave: function (e) {\n if (this.popup && !this._popupRelatedTarget(e.originalEvent)) {\n var tooltip = this;\n var current = tooltip._current;\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function () {\n clearTimeout(tooltip._showTimeout);\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n },\n _mousemove: function (e) {\n var current = this._current;\n if (current && e.element) {\n var options = current.options;\n if (options.position == 'cursor') {\n var position = this._position(e.element, options, current.elementSize, e.originalEvent);\n current.position = position;\n this.getPopup().wrapper.css({\n left: position.left,\n top: position.top\n });\n }\n }\n },\n _surfaceLeave: function (e) {\n if (this.popup && !this._popupRelatedTarget(e)) {\n clearTimeout(this._showTimeout);\n this.hide();\n }\n },\n _popupRelatedTarget: function (e) {\n return e.relatedTarget && $(e.relatedTarget).closest(this.popup.wrapper).length;\n },\n _tooltipLeave: function () {\n var tooltip = this;\n var current = tooltip._current;\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function () {\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n });\n kendo.drawing.SurfaceTooltip = SurfaceTooltip;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('drawing/surface', [\n 'drawing/kendo-drawing',\n 'drawing/surface-tooltip'\n ], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo;\n var draw = kendo.drawing;\n var DrawingSurface = draw.Surface;\n var Widget = kendo.ui.Widget;\n var deepExtend = kendo.deepExtend;\n var proxy = $.proxy;\n kendo.support.svg = DrawingSurface.support.svg;\n kendo.support.canvas = DrawingSurface.support.canvas;\n var Surface = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, {});\n this.options = deepExtend({}, this.options, options);\n this._instance = DrawingSurface.create(this.element[0], options);\n if (this._instance.translate) {\n this.translate = translate;\n }\n this._triggerInstanceHandler = proxy(this._triggerInstanceEvent, this);\n this._bindHandler('click');\n this._bindHandler('mouseenter');\n this._bindHandler('mouseleave');\n this._bindHandler('mousemove');\n this._enableTracking();\n },\n options: {\n name: 'Surface',\n tooltip: {}\n },\n events: [\n 'click',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'resize',\n 'tooltipOpen',\n 'tooltipClose'\n ],\n _triggerInstanceEvent: function (e) {\n this.trigger(e.type, e);\n },\n _bindHandler: function (event) {\n this._instance.bind(event, this._triggerInstanceHandler);\n },\n draw: function (element) {\n this._instance.draw(element);\n },\n clear: function () {\n if (this._instance) {\n this._instance.clear();\n }\n this.hideTooltip();\n },\n destroy: function () {\n if (this._instance) {\n this._instance.destroy();\n delete this._instance;\n }\n if (this._tooltip) {\n this._tooltip.destroy();\n delete this._tooltip;\n }\n Widget.fn.destroy.call(this);\n },\n exportVisual: function () {\n return this._instance.exportVisual();\n },\n eventTarget: function (e) {\n return this._instance.eventTarget(e);\n },\n showTooltip: function (shape, options) {\n if (this._tooltip) {\n this._tooltip.show(shape, options);\n }\n },\n hideTooltip: function () {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n },\n suspendTracking: function () {\n this._instance.suspendTracking();\n this.hideTooltip();\n },\n resumeTracking: function () {\n this._instance.resumeTracking();\n },\n getSize: function () {\n return {\n width: this.element.width(),\n height: this.element.height()\n };\n },\n setSize: function (size) {\n this.element.css({\n width: size.width,\n height: size.height\n });\n this._size = size;\n this._instance.currentSize(size);\n this._resize();\n },\n _resize: function () {\n this._instance.currentSize(this._size);\n this._instance._resize();\n },\n _enableTracking: function () {\n if (kendo.ui.Popup) {\n this._tooltip = new draw.SurfaceTooltip(this, this.options.tooltip || {});\n }\n }\n });\n kendo.ui.plugin(Surface);\n Surface.create = function (element, options) {\n return new Surface(element, options);\n };\n kendo.drawing.Surface = Surface;\n function translate(offset) {\n this._instance.translate(offset);\n }\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('drawing/html', ['drawing/kendo-drawing'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo;\n var drawing = kendo.drawing;\n var drawDOM = drawing.drawDOM;\n drawing.drawDOM = function (element, options) {\n return drawDOM($(element)[0], options);\n };\n drawing.drawDOM.drawText = drawDOM.drawText;\n drawing.drawDOM.getFontFaces = drawDOM.getFontFaces;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.drawing', [\n 'drawing/util',\n 'drawing/kendo-drawing',\n 'drawing/surface-tooltip',\n 'drawing/surface',\n 'drawing/html'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'drawing',\n name: 'Drawing API',\n category: 'framework',\n description: 'The Kendo UI low-level drawing API',\n depends: [\n 'core',\n 'color',\n 'popup'\n ]\n };\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.validator', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'validator',\n name: 'Validator',\n category: 'web',\n description: 'The Validator offers an easy way to do a client-side form validation.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, NS = '.kendoValidator', INVALIDMSG = 'k-invalid-msg', invalidMsgRegExp = new RegExp(INVALIDMSG, 'i'), INVALIDINPUT = 'k-invalid', VALIDINPUT = 'k-valid', emailRegExp = /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/i, urlRegExp = /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i, INPUTSELECTOR = ':input:not(:button,[type=submit],[type=reset],[disabled],[readonly])', CHECKBOXSELECTOR = ':checkbox:not([disabled],[readonly])', NUMBERINPUTSELECTOR = '[type=number],[type=range]', BLUR = 'blur', NAME = 'name', FORM = 'form', NOVALIDATE = 'novalidate', VALIDATE = 'validate', CHANGE = 'change', VALIDATE_INPUT = 'validateInput', proxy = $.proxy, patternMatcher = function (value, pattern) {\n if (typeof pattern === 'string') {\n pattern = new RegExp('^(?:' + pattern + ')$');\n }\n return pattern.test(value);\n }, matcher = function (input, selector, pattern) {\n var value = input.val();\n if (input.filter(selector).length && value !== '') {\n return patternMatcher(value, pattern);\n }\n return true;\n }, hasAttribute = function (input, name) {\n if (input.length) {\n return input[0].attributes[name] != null;\n }\n return false;\n };\n if (!kendo.ui.validator) {\n kendo.ui.validator = {\n rules: {},\n messages: {}\n };\n }\n function resolveRules(element) {\n var resolvers = kendo.ui.validator.ruleResolvers || {}, rules = {}, name;\n for (name in resolvers) {\n $.extend(true, rules, resolvers[name].resolve(element));\n }\n return rules;\n }\n function decode(value) {\n return value.replace(/&/g, '&').replace(/"/g, '\"').replace(/'/g, '\\'').replace(/</g, '<').replace(/>/g, '>');\n }\n function numberOfDecimalDigits(value) {\n value = (value + '').split('.');\n if (value.length > 1) {\n return value[1].length;\n }\n return 0;\n }\n function parseHtml(text) {\n if ($.parseHTML) {\n return $($.parseHTML(text));\n }\n return $(text);\n }\n function searchForMessageContainer(elements, fieldName) {\n var containers = $(), element, attr;\n for (var idx = 0, length = elements.length; idx < length; idx++) {\n element = elements[idx];\n if (invalidMsgRegExp.test(element.className)) {\n attr = element.getAttribute(kendo.attr('for'));\n if (attr === fieldName) {\n containers = containers.add(element);\n }\n }\n }\n return containers;\n }\n var Validator = Widget.extend({\n init: function (element, options) {\n var that = this, resolved = resolveRules(element), validateAttributeSelector = '[' + kendo.attr('validate') + '!=false]';\n options = options || {};\n options.rules = $.extend({}, kendo.ui.validator.rules, resolved.rules, options.rules);\n options.messages = $.extend({}, kendo.ui.validator.messages, resolved.messages, options.messages);\n Widget.fn.init.call(that, element, options);\n that._errorTemplate = kendo.template(that.options.errorTemplate);\n if (that.element.is(FORM)) {\n that.element.attr(NOVALIDATE, NOVALIDATE);\n }\n that._inputSelector = INPUTSELECTOR + validateAttributeSelector;\n that._checkboxSelector = CHECKBOXSELECTOR + validateAttributeSelector;\n that._errors = {};\n that._attachEvents();\n that._isValidated = false;\n },\n events: [\n VALIDATE,\n CHANGE,\n VALIDATE_INPUT\n ],\n options: {\n name: 'Validator',\n errorTemplate: '<span class=\"k-widget k-tooltip k-tooltip-validation\">' + '<span class=\"k-icon k-i-warning\"> </span> #=message#</span>',\n messages: {\n required: '{0} is required',\n pattern: '{0} is not valid',\n min: '{0} should be greater than or equal to {1}',\n max: '{0} should be smaller than or equal to {1}',\n step: '{0} is not valid',\n email: '{0} is not valid email',\n url: '{0} is not valid URL',\n date: '{0} is not valid date',\n dateCompare: 'End date should be greater than or equal to the start date'\n },\n rules: {\n required: function (input) {\n var checkbox = input.filter('[type=checkbox]').length && !input.is(':checked'), value = input.val();\n return !(hasAttribute(input, 'required') && (!value || value === '' || value.length === 0 || checkbox));\n },\n pattern: function (input) {\n if (input.filter('[type=text],[type=email],[type=url],[type=tel],[type=search],[type=password]').filter('[pattern]').length && input.val() !== '') {\n return patternMatcher(input.val(), input.attr('pattern'));\n }\n return true;\n },\n min: function (input) {\n if (input.filter(NUMBERINPUTSELECTOR + ',[' + kendo.attr('type') + '=number]').filter('[min]').length && input.val() !== '') {\n var min = parseFloat(input.attr('min')) || 0, val = kendo.parseFloat(input.val());\n return min <= val;\n }\n return true;\n },\n max: function (input) {\n if (input.filter(NUMBERINPUTSELECTOR + ',[' + kendo.attr('type') + '=number]').filter('[max]').length && input.val() !== '') {\n var max = parseFloat(input.attr('max')) || 0, val = kendo.parseFloat(input.val());\n return max >= val;\n }\n return true;\n },\n step: function (input) {\n if (input.filter(NUMBERINPUTSELECTOR + ',[' + kendo.attr('type') + '=number]').filter('[step]').length && input.val() !== '') {\n var min = parseFloat(input.attr('min')) || 0, step = parseFloat(input.attr('step')) || 1, val = parseFloat(input.val()), decimals = numberOfDecimalDigits(step), raise;\n if (decimals) {\n raise = Math.pow(10, decimals);\n return Math.floor((val - min) * raise) % (step * raise) / Math.pow(100, decimals) === 0;\n }\n return (val - min) % step === 0;\n }\n return true;\n },\n email: function (input) {\n return matcher(input, '[type=email],[' + kendo.attr('type') + '=email]', emailRegExp);\n },\n url: function (input) {\n return matcher(input, '[type=url],[' + kendo.attr('type') + '=url]', urlRegExp);\n },\n date: function (input) {\n if (input.filter('[type^=date],[' + kendo.attr('type') + '=date]').length && input.val() !== '') {\n return kendo.parseDate(input.val(), input.attr(kendo.attr('format'))) !== null;\n }\n return true;\n }\n },\n validateOnBlur: true\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.element.off(NS);\n },\n value: function () {\n if (!this._isValidated) {\n return false;\n }\n return this.errors().length === 0;\n },\n _submit: function (e) {\n if (!this.validate()) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n e.preventDefault();\n return false;\n }\n return true;\n },\n _checkElement: function (element) {\n var state = this.value();\n this.validateInput(element);\n if (this.value() !== state) {\n this.trigger(CHANGE);\n }\n },\n _attachEvents: function () {\n var that = this;\n if (that.element.is(FORM)) {\n that.element.on('submit' + NS, proxy(that._submit, that));\n }\n if (that.options.validateOnBlur) {\n if (!that.element.is(INPUTSELECTOR)) {\n that.element.on(BLUR + NS, that._inputSelector, function () {\n that._checkElement($(this));\n });\n that.element.on('click' + NS, that._checkboxSelector, function () {\n that._checkElement($(this));\n });\n } else {\n that.element.on(BLUR + NS, function () {\n that._checkElement(that.element);\n });\n if (that.element.is(CHECKBOXSELECTOR)) {\n that.element.on('click' + NS, function () {\n that._checkElement(that.element);\n });\n }\n }\n }\n },\n validate: function () {\n var inputs;\n var idx;\n var result = false;\n var length;\n var isValid = this.value();\n this._errors = {};\n if (!this.element.is(INPUTSELECTOR)) {\n var invalid = false;\n inputs = this.element.find(this._inputSelector);\n for (idx = 0, length = inputs.length; idx < length; idx++) {\n if (!this.validateInput(inputs.eq(idx))) {\n invalid = true;\n }\n }\n result = !invalid;\n } else {\n result = this.validateInput(this.element);\n }\n this.trigger(VALIDATE, { valid: result });\n if (isValid !== result) {\n this.trigger(CHANGE);\n }\n return result;\n },\n validateInput: function (input) {\n input = $(input);\n this._isValidated = true;\n var that = this, template = that._errorTemplate, result = that._checkValidity(input), valid = result.valid, className = '.' + INVALIDMSG, fieldName = input.attr(NAME) || '', lbl = that._findMessageContainer(fieldName).add(input.next(className).filter(function () {\n var element = $(this);\n if (element.filter('[' + kendo.attr('for') + ']').length) {\n return element.attr(kendo.attr('for')) === fieldName;\n }\n return true;\n })).hide(), messageText, wasValid = !input.attr('aria-invalid');\n input.removeAttr('aria-invalid');\n if (!valid) {\n messageText = that._extractMessage(input, result.key);\n that._errors[fieldName] = messageText;\n var messageLabel = parseHtml(template({ message: decode(messageText) }));\n var lblId = lbl.attr('id');\n that._decorateMessageContainer(messageLabel, fieldName);\n if (lblId) {\n messageLabel.attr('id', lblId);\n }\n if (!lbl.replaceWith(messageLabel).length) {\n messageLabel.insertAfter(input);\n }\n messageLabel.show();\n input.attr('aria-invalid', true);\n } else {\n delete that._errors[fieldName];\n }\n if (wasValid !== valid) {\n this.trigger(VALIDATE_INPUT, {\n valid: valid,\n input: input\n });\n }\n input.toggleClass(INVALIDINPUT, !valid);\n input.toggleClass(VALIDINPUT, valid);\n if (kendo.widgetInstance(input)) {\n var inputWrap = kendo.widgetInstance(input)._inputWrapper;\n if (inputWrap) {\n inputWrap.toggleClass(INVALIDINPUT, !valid);\n inputWrap.toggleClass(INVALIDINPUT, !valid);\n }\n }\n return valid;\n },\n hideMessages: function () {\n var that = this, className = '.' + INVALIDMSG, element = that.element;\n if (!element.is(INPUTSELECTOR)) {\n element.find(className).hide();\n } else {\n element.next(className).hide();\n }\n },\n _findMessageContainer: function (fieldName) {\n var locators = kendo.ui.validator.messageLocators, name, containers = $();\n for (var idx = 0, length = this.element.length; idx < length; idx++) {\n containers = containers.add(searchForMessageContainer(this.element[idx].getElementsByTagName('*'), fieldName));\n }\n for (name in locators) {\n containers = containers.add(locators[name].locate(this.element, fieldName));\n }\n return containers;\n },\n _decorateMessageContainer: function (container, fieldName) {\n var locators = kendo.ui.validator.messageLocators, name;\n container.addClass(INVALIDMSG).attr(kendo.attr('for'), fieldName || '');\n for (name in locators) {\n locators[name].decorate(container, fieldName);\n }\n container.attr('role', 'alert');\n },\n _extractMessage: function (input, ruleKey) {\n var that = this, customMessage = that.options.messages[ruleKey], fieldName = input.attr(NAME), nonDefaultMessage;\n if (!kendo.ui.Validator.prototype.options.messages[ruleKey]) {\n nonDefaultMessage = kendo.isFunction(customMessage) ? customMessage(input) : customMessage;\n }\n customMessage = kendo.isFunction(customMessage) ? customMessage(input) : customMessage;\n return kendo.format(input.attr(kendo.attr(ruleKey + '-msg')) || input.attr('validationMessage') || nonDefaultMessage || input.attr('title') || customMessage || '', fieldName, input.attr(ruleKey) || input.attr(kendo.attr(ruleKey)));\n },\n _checkValidity: function (input) {\n var rules = this.options.rules, rule;\n for (rule in rules) {\n if (!rules[rule].call(this, input)) {\n return {\n valid: false,\n key: rule\n };\n }\n }\n return { valid: true };\n },\n errors: function () {\n var results = [], errors = this._errors, error;\n for (error in errors) {\n results.push(errors[error]);\n }\n return results;\n }\n });\n kendo.ui.plugin(Validator);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.userevents', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'userevents',\n name: 'User Events',\n category: 'framework',\n depends: ['core'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, support = kendo.support, Class = kendo.Class, Observable = kendo.Observable, now = $.now, extend = $.extend, OS = support.mobileOS, invalidZeroEvents = OS && OS.android, DEFAULT_MIN_HOLD = 800, CLICK_DELAY = 300, DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0, PRESS = 'press', HOLD = 'hold', SELECT = 'select', START = 'start', MOVE = 'move', END = 'end', CANCEL = 'cancel', TAP = 'tap', DOUBLETAP = 'doubleTap', RELEASE = 'release', GESTURESTART = 'gesturestart', GESTURECHANGE = 'gesturechange', GESTUREEND = 'gestureend', GESTURETAP = 'gesturetap';\n var THRESHOLD = {\n 'api': 0,\n 'touch': 0,\n 'mouse': 9,\n 'pointer': 9\n };\n var ENABLE_GLOBAL_SURFACE = !support.touch || support.mouseAndTouchPresent;\n function touchDelta(touch1, touch2) {\n var x1 = touch1.x.location, y1 = touch1.y.location, x2 = touch2.x.location, y2 = touch2.y.location, dx = x1 - x2, dy = y1 - y2;\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n }\n function getTouches(e) {\n var touches = [], originalEvent = e.originalEvent, currentTarget = e.currentTarget, idx = 0, length, changedTouches, touch;\n if (e.api) {\n touches.push({\n id: 2,\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: 'api'\n });\n } else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n for (length = changedTouches.length; idx < length; idx++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: 'touch'\n });\n }\n } else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: 'pointer'\n });\n } else {\n touches.push({\n id: 1,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: 'mouse'\n });\n }\n return touches;\n }\n var TouchAxis = Class.extend({\n init: function (axis, location) {\n var that = this;\n that.axis = axis;\n that._updateLocationData(location);\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n },\n move: function (location) {\n var that = this, offset = location['page' + that.axis], timeStamp = now(), timeDelta = timeStamp - that.timeStamp || 1;\n if (!offset && invalidZeroEvents) {\n return;\n }\n that.delta = offset - that.location;\n that._updateLocationData(location);\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n },\n _updateLocationData: function (location) {\n var that = this, axis = that.axis;\n that.location = location['page' + axis];\n that.client = location['client' + axis];\n that.screen = location['screen' + axis];\n }\n });\n var Touch = Class.extend({\n init: function (userEvents, target, touchInfo) {\n extend(this, {\n x: new TouchAxis('X', touchInfo.location),\n y: new TouchAxis('Y', touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n },\n press: function () {\n this._holdTimeout = setTimeout($.proxy(this, '_hold'), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n },\n _tap: function (touchInfo) {\n var that = this;\n that.userEvents._clicks++;\n if (that.userEvents._clicks == 1) {\n that._clickTimeout = setTimeout(function () {\n if (that.userEvents._clicks == 1) {\n that._trigger(TAP, touchInfo);\n } else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n },\n _hold: function () {\n this._trigger(HOLD, this.pressEvent);\n },\n move: function (touchInfo) {\n var that = this;\n var preventMove = touchInfo.type !== 'api' && that.userEvents._shouldNotMove;\n if (that._finished || preventMove) {\n return;\n }\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n },\n end: function (touchInfo) {\n this.endTime = now();\n if (this._finished) {\n return;\n }\n this._finished = true;\n this._trigger(RELEASE, touchInfo);\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n } else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n clearTimeout(this._holdTimeout);\n this.dispose();\n },\n dispose: function () {\n var userEvents = this.userEvents, activeTouches = userEvents.touches;\n this._finished = true;\n this.pressEvent = null;\n clearTimeout(this._holdTimeout);\n activeTouches.splice($.inArray(this, activeTouches), 1);\n },\n skip: function () {\n this.dispose();\n },\n cancel: function () {\n this.dispose();\n },\n isMoved: function () {\n return this._moved;\n },\n _start: function (touchInfo) {\n clearTimeout(this._holdTimeout);\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n },\n _trigger: function (name, touchInfo) {\n var that = this, jQueryEvent = touchInfo.event, data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n },\n _withinIgnoreThreshold: function () {\n var xDelta = this.x.initialDelta, yDelta = this.y.initialDelta;\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n });\n function withEachUpEvent(callback) {\n var downEvents = kendo.eventMap.up.split(' '), idx = 0, length = downEvents.length;\n for (; idx < length; idx++) {\n callback(downEvents[idx]);\n }\n }\n var UserEvents = Observable.extend({\n init: function (element, options) {\n var that = this, filter, ns = kendo.guid();\n options = options || {};\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that.eventNS = ns;\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n extend(that, {\n element: element,\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n that.surface.handler(that).on(kendo.applyEventMap('move', ns), '_move').on(kendo.applyEventMap('up cancel', ns), '_end');\n element.on(kendo.applyEventMap('down', ns), filter, '_start');\n if (that.useClickAsTap) {\n element.on(kendo.applyEventMap('click', ns), filter, '_click');\n }\n if (support.pointers || support.msPointers) {\n if (support.browser.version < 11) {\n var defaultAction = 'pinch-zoom double-tap-zoom';\n element.css('-ms-touch-action', options.touchAction && options.touchAction != 'none' ? defaultAction + ' ' + options.touchAction : defaultAction);\n } else {\n element.css('touch-action', options.touchAction || 'none');\n }\n }\n if (options.preventDragEvent) {\n element.on(kendo.applyEventMap('dragstart', ns), kendo.preventDefault);\n }\n element.on(kendo.applyEventMap('mousedown', ns), filter, { root: element }, '_select');\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0], preventIfMovingProxy = $.proxy(that.preventIfMoving, that);\n withEachUpEvent(function (eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n },\n preventIfMoving: function (e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n },\n destroy: function () {\n var that = this;\n if (that._destroyed) {\n return;\n }\n that._destroyed = true;\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0];\n withEachUpEvent(function (eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData('handler');\n that.surface.removeData('handler');\n that._disposeAll();\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n capture: function () {\n UserEvents.current = this;\n },\n cancel: function () {\n this._disposeAll();\n this.trigger(CANCEL);\n },\n notify: function (eventName, data) {\n var that = this, touches = that.touches;\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n }\n extend(data, { touches: touches }, touchDelta(touches[0], touches[1]));\n }\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n press: function (x, y, target) {\n this._apiCall('_start', x, y, target);\n },\n move: function (x, y) {\n this._apiCall('_move', x, y);\n },\n end: function (x, y) {\n this._apiCall('_end', x, y);\n },\n _isMultiTouch: function () {\n return this.touches.length > 1;\n },\n _maxTouchesReached: function () {\n return this.touches.length >= this._maxTouches;\n },\n _disposeAll: function () {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n _isMoved: function () {\n return $.grep(this.touches, function (touch) {\n return touch.isMoved();\n }).length;\n },\n _select: function (e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n },\n _start: function (e) {\n var that = this, idx = 0, filter = that.filter, target, touches = getTouches(e), length = touches.length, touch, which = e.which;\n if (which && which > 1 || that._maxTouchesReached()) {\n return;\n }\n UserEvents.current = null;\n that.currentTarget = e.currentTarget;\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n for (; idx < length; idx++) {\n if (that._maxTouchesReached()) {\n break;\n }\n touch = touches[idx];\n if (filter) {\n target = $(touch.currentTarget);\n } else {\n target = that.element;\n }\n if (!target.length) {\n continue;\n }\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n if (that._isMultiTouch()) {\n that.notify('gesturestart', {});\n }\n }\n },\n _move: function (e) {\n this._eachTouch('move', e);\n },\n _end: function (e) {\n this._eachTouch('end', e);\n },\n _click: function (e) {\n var data = {\n touch: {\n initialTouch: e.target,\n target: $(e.currentTarget),\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: $(e.currentTarget),\n event: e,\n type: 'tap'\n };\n if (this.trigger('tap', data)) {\n e.preventDefault();\n }\n },\n _eachTouch: function (methodName, e) {\n var that = this, dict = {}, touches = getTouches(e), activeTouches = that.touches, idx, touch, touchInfo, matchingTouch;\n for (idx = 0; idx < activeTouches.length; idx++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n for (idx = 0; idx < touches.length; idx++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n },\n _apiCall: function (type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: $(target || this.element)[0],\n stopPropagation: $.noop,\n preventDefault: $.noop\n });\n }\n });\n UserEvents.defaultThreshold = function (value) {\n DEFAULT_THRESHOLD = value;\n };\n UserEvents.minHold = function (value) {\n DEFAULT_MIN_HOLD = value;\n };\n kendo.getTouches = getTouches;\n kendo.touchDelta = touchDelta;\n kendo.UserEvents = UserEvents;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.draganddrop', [\n 'kendo.core',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'draganddrop',\n name: 'Drag & drop',\n category: 'framework',\n description: 'Drag & drop functionality for any DOM element.',\n depends: [\n 'core',\n 'userevents'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, support = kendo.support, document = window.document, $window = $(window), Class = kendo.Class, Widget = kendo.ui.Widget, Observable = kendo.Observable, UserEvents = kendo.UserEvents, proxy = $.proxy, extend = $.extend, getOffset = kendo.getOffset, draggables = {}, dropTargets = {}, dropAreas = {}, lastDropTarget, elementUnderCursor = kendo.elementUnderCursor, KEYUP = 'keyup', CHANGE = 'change', DRAGSTART = 'dragstart', HOLD = 'hold', DRAG = 'drag', DRAGEND = 'dragend', DRAGCANCEL = 'dragcancel', HINTDESTROYED = 'hintDestroyed', DRAGENTER = 'dragenter', DRAGLEAVE = 'dragleave', DROP = 'drop';\n function contains(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n function numericCssPropery(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n function within(value, range) {\n return Math.min(Math.max(value, range.min), range.max);\n }\n function containerBoundaries(container, element) {\n var offset = getOffset(container), outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, minX = offset.left + numericCssPropery(container, 'borderLeftWidth') + numericCssPropery(container, 'paddingLeft'), minY = offset.top + numericCssPropery(container, 'borderTopWidth') + numericCssPropery(container, 'paddingTop'), maxX = minX + container.width() - outerWidth(element, true), maxY = minY + container.height() - outerHeight(element, true);\n return {\n x: {\n min: minX,\n max: maxX\n },\n y: {\n min: minY,\n max: maxY\n }\n };\n }\n function checkTarget(target, targets, areas) {\n var theTarget, theFilter, i = 0, targetLen = targets && targets.length, areaLen = areas && areas.length;\n while (target && target.parentNode) {\n for (i = 0; i < targetLen; i++) {\n theTarget = targets[i];\n if (theTarget.element[0] === target) {\n return {\n target: theTarget,\n targetElement: target\n };\n }\n }\n for (i = 0; i < areaLen; i++) {\n theFilter = areas[i];\n if ($.contains(theFilter.element[0], target) && support.matchesSelector.call(target, theFilter.options.filter)) {\n return {\n target: theFilter,\n targetElement: target\n };\n }\n }\n target = target.parentNode;\n }\n return undefined;\n }\n var TapCapture = Observable.extend({\n init: function (element, options) {\n var that = this, domElement = element[0];\n that.capture = false;\n if (domElement.addEventListener) {\n $.each(kendo.eventMap.down.split(' '), function () {\n domElement.addEventListener(this, proxy(that._press, that), true);\n });\n $.each(kendo.eventMap.up.split(' '), function () {\n domElement.addEventListener(this, proxy(that._release, that), true);\n });\n } else {\n $.each(kendo.eventMap.down.split(' '), function () {\n domElement.attachEvent(this, proxy(that._press, that));\n });\n $.each(kendo.eventMap.up.split(' '), function () {\n domElement.attachEvent(this, proxy(that._release, that));\n });\n }\n Observable.fn.init.call(that);\n that.bind([\n 'press',\n 'release'\n ], options || {});\n },\n captureNext: function () {\n this.capture = true;\n },\n cancelCapture: function () {\n this.capture = false;\n },\n _press: function (e) {\n var that = this;\n that.trigger('press');\n if (that.capture) {\n e.preventDefault();\n }\n },\n _release: function (e) {\n var that = this;\n that.trigger('release');\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n });\n var PaneDimension = Observable.extend({\n init: function (options) {\n var that = this;\n Observable.fn.init.call(that);\n that.forcedEnabled = false;\n $.extend(that, options);\n that.scale = 1;\n if (that.horizontal) {\n that.measure = 'offsetWidth';\n that.scrollSize = 'scrollWidth';\n that.axis = 'x';\n } else {\n that.measure = 'offsetHeight';\n that.scrollSize = 'scrollHeight';\n that.axis = 'y';\n }\n },\n makeVirtual: function () {\n $.extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n },\n virtualSize: function (min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n },\n outOfBounds: function (offset) {\n return offset > this.max || offset < this.min;\n },\n forceEnabled: function () {\n this.forcedEnabled = true;\n },\n getSize: function () {\n return this.container[0][this.measure];\n },\n getTotal: function () {\n return this.element[0][this.scrollSize];\n },\n rescale: function (scale) {\n this.scale = scale;\n },\n update: function (silent) {\n var that = this, total = that.virtual ? that._virtualMax : that.getTotal(), scaledTotal = total * that.scale, size = that.getSize();\n if (total === 0 && !that.forcedEnabled) {\n return;\n }\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n that.enabled = that.forcedEnabled || scaledTotal > size;\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n });\n var PaneDimensions = Observable.extend({\n init: function (options) {\n var that = this;\n Observable.fn.init.call(that);\n that.x = new PaneDimension(extend({ horizontal: true }, options));\n that.y = new PaneDimension(extend({ horizontal: false }, options));\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n that.bind(CHANGE, options);\n },\n rescale: function (newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n },\n centerCoordinates: function () {\n return {\n x: Math.min(0, -this.x.centerOffset),\n y: Math.min(0, -this.y.centerOffset)\n };\n },\n refresh: function () {\n var that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n }\n });\n var PaneAxis = Observable.extend({\n init: function (options) {\n var that = this;\n extend(that, options);\n Observable.fn.init.call(that);\n },\n outOfBounds: function () {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n },\n dragMove: function (delta) {\n var that = this, dimension = that.dimension, axis = that.axis, movable = that.movable, position = movable[axis] + delta;\n if (!dimension.enabled) {\n return;\n }\n if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) {\n delta *= that.resistance;\n }\n movable.translateAxis(axis, delta);\n that.trigger(CHANGE, that);\n }\n });\n var Pane = Class.extend({\n init: function (options) {\n var that = this, x, y, resistance, movable;\n extend(that, { elastic: true }, options);\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n that.x = x = new PaneAxis({\n axis: 'x',\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n that.y = y = new PaneAxis({\n axis: 'y',\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n that.userEvents.bind([\n 'press',\n 'move',\n 'end',\n 'gesturestart',\n 'gesturechange'\n ], {\n gesturestart: function (e) {\n that.gesture = e;\n that.offset = that.dimensions.container.offset();\n },\n press: function (e) {\n if ($(e.event.target).closest('a').is('[data-navigate-on-press=true]')) {\n e.sender.cancel();\n }\n },\n gesturechange: function (e) {\n var previousGesture = that.gesture, previousCenter = previousGesture.center, center = e.center, scaleDelta = e.distance / previousGesture.distance, minScale = that.dimensions.minScale, maxScale = that.dimensions.maxScale, coordinates;\n if (movable.scale <= minScale && scaleDelta < 1) {\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n var offsetX = movable.x + that.offset.left, offsetY = movable.y + that.offset.top;\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n movable.scaleWith(scaleDelta);\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n e.preventDefault();\n },\n move: function (e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n end: function (e) {\n e.preventDefault();\n }\n });\n }\n });\n var TRANSFORM_STYLE = support.transitions.prefix + 'Transform', translate;\n if (support.hasHW3D) {\n translate = function (x, y, scale) {\n return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')';\n };\n } else {\n translate = function (x, y, scale) {\n return 'translate(' + x + 'px,' + y + 'px) scale(' + scale + ')';\n };\n }\n var Movable = Observable.extend({\n init: function (element) {\n var that = this;\n Observable.fn.init.call(that);\n that.element = $(element);\n that.element[0].style.webkitTransformOrigin = 'left top';\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n that._saveCoordinates(translate(that.x, that.y, that.scale));\n },\n translateAxis: function (axis, by) {\n this[axis] += by;\n this.refresh();\n },\n scaleTo: function (scale) {\n this.scale = scale;\n this.refresh();\n },\n scaleWith: function (scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n },\n translate: function (coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n },\n moveAxis: function (axis, value) {\n this[axis] = value;\n this.refresh();\n },\n moveTo: function (coordinates) {\n extend(this, coordinates);\n this.refresh();\n },\n refresh: function () {\n var that = this, x = that.x, y = that.y, newCoordinates;\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n newCoordinates = translate(x, y, that.scale);\n if (newCoordinates != that.coordinates) {\n if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n that.element[0].style.position = 'absolute';\n that.element[0].style.left = that.x + 'px';\n that.element[0].style.top = that.y + 'px';\n } else {\n that.element[0].style[TRANSFORM_STYLE] = newCoordinates;\n }\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n },\n _saveCoordinates: function (coordinates) {\n this.coordinates = coordinates;\n }\n });\n function destroyDroppable(collection, widget) {\n var groupName = widget.options.group, droppables = collection[groupName], i;\n Widget.fn.destroy.call(widget);\n if (droppables.length > 1) {\n for (i = 0; i < droppables.length; i++) {\n if (droppables[i] == widget) {\n droppables.splice(i, 1);\n break;\n }\n }\n } else {\n droppables.length = 0;\n delete collection[groupName];\n }\n }\n var DropTarget = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n var group = that.options.group;\n if (!(group in dropTargets)) {\n dropTargets[group] = [that];\n } else {\n dropTargets[group].push(that);\n }\n },\n events: [\n DRAGENTER,\n DRAGLEAVE,\n DROP\n ],\n options: {\n name: 'DropTarget',\n group: 'default'\n },\n destroy: function () {\n destroyDroppable(dropTargets, this);\n },\n _trigger: function (eventName, e) {\n var that = this, draggable = draggables[that.options.group];\n if (draggable) {\n return that.trigger(eventName, extend({}, e.event, {\n draggable: draggable,\n dropTarget: e.dropTarget\n }));\n }\n },\n _over: function (e) {\n this._trigger(DRAGENTER, e);\n },\n _out: function (e) {\n this._trigger(DRAGLEAVE, e);\n },\n _drop: function (e) {\n var that = this, draggable = draggables[that.options.group];\n if (draggable) {\n draggable.dropped = !that._trigger(DROP, e);\n }\n }\n });\n DropTarget.destroyGroup = function (groupName) {\n var group = dropTargets[groupName] || dropAreas[groupName], i;\n if (group) {\n for (i = 0; i < group.length; i++) {\n Widget.fn.destroy.call(group[i]);\n }\n group.length = 0;\n delete dropTargets[groupName];\n delete dropAreas[groupName];\n }\n };\n DropTarget._cache = dropTargets;\n var DropTargetArea = DropTarget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n var group = that.options.group;\n if (!(group in dropAreas)) {\n dropAreas[group] = [that];\n } else {\n dropAreas[group].push(that);\n }\n },\n destroy: function () {\n destroyDroppable(dropAreas, this);\n },\n options: {\n name: 'DropTargetArea',\n group: 'default',\n filter: null\n }\n });\n var Draggable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that._activated = false;\n that.userEvents = new UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n threshold: that.options.distance,\n start: proxy(that._start, that),\n hold: proxy(that._hold, that),\n move: proxy(that._drag, that),\n end: proxy(that._end, that),\n cancel: proxy(that._cancel, that),\n select: proxy(that._select, that)\n });\n that._afterEndHandler = proxy(that._afterEnd, that);\n that._captureEscape = proxy(that._captureEscape, that);\n },\n events: [\n HOLD,\n DRAGSTART,\n DRAG,\n DRAGEND,\n DRAGCANCEL,\n HINTDESTROYED\n ],\n options: {\n name: 'Draggable',\n distance: kendo.support.touch ? 0 : 5,\n group: 'default',\n cursorOffset: null,\n axis: null,\n container: null,\n filter: null,\n ignore: null,\n holdToDrag: false,\n autoScroll: false,\n dropped: false\n },\n cancelHold: function () {\n this._activated = false;\n },\n _captureEscape: function (e) {\n var that = this;\n if (e.keyCode === kendo.keys.ESC) {\n that._trigger(DRAGCANCEL, { event: e });\n that.userEvents.cancel();\n }\n },\n _updateHint: function (e) {\n var that = this, coordinates, options = that.options, boundaries = that.boundaries, axis = options.axis, cursorOffset = that.options.cursorOffset;\n if (cursorOffset) {\n coordinates = {\n left: e.x.location + cursorOffset.left,\n top: e.y.location + cursorOffset.top\n };\n } else {\n that.hintOffset.left += e.x.delta;\n that.hintOffset.top += e.y.delta;\n coordinates = $.extend({}, that.hintOffset);\n }\n if (boundaries) {\n coordinates.top = within(coordinates.top, boundaries.y);\n coordinates.left = within(coordinates.left, boundaries.x);\n }\n if (axis === 'x') {\n delete coordinates.top;\n } else if (axis === 'y') {\n delete coordinates.left;\n }\n that.hint.css(coordinates);\n },\n _shouldIgnoreTarget: function (target) {\n var ignoreSelector = this.options.ignore;\n return ignoreSelector && $(target).is(ignoreSelector);\n },\n _select: function (e) {\n if (!this._shouldIgnoreTarget(e.event.target)) {\n e.preventDefault();\n }\n },\n _start: function (e) {\n var that = this, options = that.options, container = options.container ? $(options.container) : null, hint = options.hint;\n if (this._shouldIgnoreTarget(e.touch.initialTouch) || options.holdToDrag && !that._activated) {\n that.userEvents.cancel();\n return;\n }\n that.currentTarget = e.target;\n that.currentTargetOffset = getOffset(that.currentTarget);\n if (hint) {\n if (that.hint) {\n that.hint.stop(true, true).remove();\n }\n that.hint = kendo.isFunction(hint) ? $(hint.call(that, that.currentTarget)) : hint;\n var offset = getOffset(that.currentTarget);\n that.hintOffset = offset;\n that.hint.css({\n position: 'absolute',\n zIndex: 20000,\n left: offset.left,\n top: offset.top\n }).appendTo(document.body);\n that.angular('compile', function () {\n that.hint.removeAttr('ng-repeat');\n var scopeTarget = $(e.target);\n while (!scopeTarget.data('$$kendoScope') && scopeTarget.length) {\n scopeTarget = scopeTarget.parent();\n }\n return {\n elements: that.hint.get(),\n scopeFrom: scopeTarget.data('$$kendoScope')\n };\n });\n }\n draggables[options.group] = that;\n that.dropped = false;\n if (container) {\n that.boundaries = containerBoundaries(container, that.hint);\n }\n $(document).on(KEYUP, that._captureEscape);\n if (that._trigger(DRAGSTART, e)) {\n that.userEvents.cancel();\n that._afterEnd();\n }\n that.userEvents.capture();\n },\n _hold: function (e) {\n this.currentTarget = e.target;\n if (this.options.holdToDrag && this._trigger(HOLD, e)) {\n this.userEvents.cancel();\n } else {\n this._activated = true;\n }\n },\n _drag: function (e) {\n e.preventDefault();\n var cursorElement = this._elementUnderCursor(e);\n if (this.options.autoScroll && this._cursorElement !== cursorElement) {\n this._scrollableParent = findScrollableParent(cursorElement);\n this._cursorElement = cursorElement;\n }\n this._lastEvent = e;\n this._processMovement(e, cursorElement);\n if (this.options.autoScroll) {\n if (this._scrollableParent[0]) {\n var velocity = autoScrollVelocity(e.x.location, e.y.location, scrollableViewPort(this._scrollableParent));\n this._scrollCompenstation = $.extend({}, this.hintOffset);\n this._scrollVelocity = velocity;\n if (velocity.y === 0 && velocity.x === 0) {\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n } else if (!this._scrollInterval) {\n this._scrollInterval = setInterval($.proxy(this, '_autoScroll'), 50);\n }\n }\n }\n if (this.hint) {\n this._updateHint(e);\n }\n },\n _processMovement: function (e, cursorElement) {\n this._withDropTarget(cursorElement, function (target, targetElement) {\n if (!target) {\n if (lastDropTarget) {\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n lastDropTarget = null;\n }\n return;\n }\n if (lastDropTarget) {\n if (targetElement === lastDropTarget.targetElement) {\n return;\n }\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n }\n target._trigger(DRAGENTER, extend(e, { dropTarget: $(targetElement) }));\n lastDropTarget = extend(target, { targetElement: targetElement });\n });\n this._trigger(DRAG, extend(e, {\n dropTarget: lastDropTarget,\n elementUnderCursor: cursorElement\n }));\n },\n _autoScroll: function () {\n var parent = this._scrollableParent[0], velocity = this._scrollVelocity, compensation = this._scrollCompenstation;\n if (!parent) {\n return;\n }\n var cursorElement = this._elementUnderCursor(this._lastEvent);\n this._processMovement(this._lastEvent, cursorElement);\n var yIsScrollable, xIsScrollable;\n var isRootNode = parent === scrollableRoot()[0];\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > $window.height();\n xIsScrollable = document.body.scrollWidth > $window.width();\n } else {\n yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\n xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\n }\n var yDelta = parent.scrollTop + velocity.y;\n var yInBounds = yIsScrollable && yDelta > 0 && yDelta < parent.scrollHeight;\n var xDelta = parent.scrollLeft + velocity.x;\n var xInBounds = xIsScrollable && xDelta > 0 && xDelta < parent.scrollWidth;\n if (yInBounds) {\n parent.scrollTop += velocity.y;\n }\n if (xInBounds) {\n parent.scrollLeft += velocity.x;\n }\n if (this.hint && isRootNode && (xInBounds || yInBounds)) {\n if (yInBounds) {\n compensation.top += velocity.y;\n }\n if (xInBounds) {\n compensation.left += velocity.x;\n }\n this.hint.css(compensation);\n }\n },\n _end: function (e) {\n this._withDropTarget(this._elementUnderCursor(e), function (target, targetElement) {\n if (target) {\n target._drop(extend({}, e, { dropTarget: $(targetElement) }));\n lastDropTarget = null;\n }\n });\n this._cancel(this._trigger(DRAGEND, e));\n },\n _cancel: function (isDefaultPrevented) {\n var that = this;\n that._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n that._activated = false;\n if (that.hint && !that.dropped) {\n setTimeout(function () {\n that.hint.stop(true, true);\n if (isDefaultPrevented) {\n that._afterEndHandler();\n } else {\n that.hint.animate(that.currentTargetOffset, 'fast', that._afterEndHandler);\n }\n }, 0);\n } else {\n that._afterEnd();\n }\n },\n _trigger: function (eventName, e) {\n var that = this;\n return that.trigger(eventName, extend({}, e.event, {\n x: e.x,\n y: e.y,\n currentTarget: that.currentTarget,\n initialTarget: e.touch ? e.touch.initialTouch : null,\n dropTarget: e.dropTarget,\n elementUnderCursor: e.elementUnderCursor\n }));\n },\n _elementUnderCursor: function (e) {\n var target = elementUnderCursor(e), hint = this.hint;\n if (hint && contains(hint[0], target)) {\n hint.hide();\n target = elementUnderCursor(e);\n if (!target) {\n target = elementUnderCursor(e);\n }\n hint.show();\n }\n return target;\n },\n _withDropTarget: function (element, callback) {\n var result, group = this.options.group, targets = dropTargets[group], areas = dropAreas[group];\n if (targets && targets.length || areas && areas.length) {\n result = checkTarget(element, targets, areas);\n if (result) {\n callback(result.target, result.targetElement);\n } else {\n callback();\n }\n }\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that._afterEnd();\n that.userEvents.destroy();\n this._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n that.currentTarget = null;\n },\n _afterEnd: function () {\n var that = this;\n if (that.hint) {\n that.hint.remove();\n }\n delete draggables[that.options.group];\n that.trigger('destroy');\n that.trigger(HINTDESTROYED);\n $(document).off(KEYUP, that._captureEscape);\n }\n });\n kendo.ui.plugin(DropTarget);\n kendo.ui.plugin(DropTargetArea);\n kendo.ui.plugin(Draggable);\n kendo.TapCapture = TapCapture;\n kendo.containerBoundaries = containerBoundaries;\n extend(kendo.ui, {\n Pane: Pane,\n PaneDimensions: PaneDimensions,\n Movable: Movable\n });\n function scrollableViewPort(element) {\n var root = scrollableRoot()[0], offset, top, left;\n if (element[0] === root) {\n top = root.scrollTop;\n left = root.scrollLeft;\n return {\n top: top,\n left: left,\n bottom: top + $window.height(),\n right: left + $window.width()\n };\n } else {\n offset = element.offset();\n offset.bottom = offset.top + element.height();\n offset.right = offset.left + element.width();\n return offset;\n }\n }\n function scrollableRoot() {\n return $(kendo.support.browser.edge || kendo.support.browser.safari ? document.body : document.documentElement);\n }\n function findScrollableParent(element) {\n var root = scrollableRoot();\n if (!element || element === document.body || element === document.documentElement) {\n return root;\n }\n var parent = $(element)[0];\n while (parent && !kendo.isScrollable(parent) && parent !== document.body) {\n parent = parent.parentNode;\n }\n if (parent === document.body) {\n return root;\n }\n return $(parent);\n }\n function autoScrollVelocity(mouseX, mouseY, rect) {\n var velocity = {\n x: 0,\n y: 0\n };\n var AUTO_SCROLL_AREA = 50;\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n } else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n } else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n return velocity;\n }\n kendo.ui.Draggable.utils = {\n autoScrollVelocity: autoScrollVelocity,\n scrollableViewPort: scrollableViewPort,\n findScrollableParent: findScrollableParent\n };\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.mobile.scroller', [\n 'kendo.fx',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'mobile.scroller',\n name: 'Scroller',\n category: 'mobile',\n description: 'The Kendo Mobile Scroller widget enables touch friendly kinetic scrolling for the contents of a given DOM element.',\n depends: [\n 'fx',\n 'draganddrop'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, mobile = kendo.mobile, fx = kendo.effects, ui = mobile.ui, proxy = $.proxy, extend = $.extend, Widget = ui.Widget, Class = kendo.Class, Movable = kendo.ui.Movable, Pane = kendo.ui.Pane, PaneDimensions = kendo.ui.PaneDimensions, Transition = fx.Transition, Animation = fx.Animation, abs = Math.abs, SNAPBACK_DURATION = 500, SCROLLBAR_OPACITY = 0.7, FRICTION = 0.96, VELOCITY_MULTIPLIER = 10, MAX_VELOCITY = 55, OUT_OF_BOUNDS_FRICTION = 0.5, ANIMATED_SCROLLER_PRECISION = 5, RELEASECLASS = 'km-scroller-release', REFRESHCLASS = 'km-scroller-refresh', PULL = 'pull', CHANGE = 'change', RESIZE = 'resize', SCROLL = 'scroll', MOUSE_WHEEL_ID = 2;\n var ZoomSnapBack = Animation.extend({\n init: function (options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options);\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.tapCapture.bind('press', proxy(that.cancel, that));\n },\n enabled: function () {\n return this.movable.scale < this.dimensions.minScale;\n },\n done: function () {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n },\n tick: function () {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n },\n onEnd: function () {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n });\n var DragInertia = Animation.extend({\n init: function (options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function () {\n that._end();\n }\n })\n });\n that.tapCapture.bind('press', function () {\n that.cancel();\n });\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n },\n onCancel: function () {\n this.transition.cancel();\n },\n freeze: function (location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n },\n onEnd: function () {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n },\n done: function () {\n return abs(this.velocity) < 1;\n },\n start: function (e) {\n var that = this, velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n Animation.fn.start.call(that);\n }\n },\n tick: function () {\n var that = this, dimension = that.dimension, friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction, delta = that.velocity *= friction, location = that.movable[that.axis] + delta;\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n that.movable.moveAxis(that.axis, location);\n },\n _end: function () {\n this.tapCapture.cancelCapture();\n this.end();\n },\n _snapBack: function () {\n var that = this, dimension = that.dimension, snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n that._moveTo(snapBack);\n },\n _moveTo: function (location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n }\n });\n var AnimatedScroller = Animation.extend({\n init: function (options) {\n var that = this;\n kendo.effects.Animation.fn.init.call(this);\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n },\n tick: function () {\n this._updateCoordinates();\n this.moveTo(this.origin);\n },\n done: function () {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n },\n onEnd: function () {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n },\n setCoordinates: function (from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n },\n setCallback: function (callback) {\n if (callback && kendo.isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n },\n _updateCoordinates: function () {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n });\n var ScrollBar = Class.extend({\n init: function (options) {\n var that = this, horizontal = options.axis === 'x', element = $('<div class=\"km-touch-scrollbar km-' + (horizontal ? 'horizontal' : 'vertical') + '-scrollbar\" />');\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n that.scrollMovable.bind(CHANGE, proxy(that.refresh, that));\n that.container.append(element);\n if (options.alwaysVisible) {\n that.show();\n }\n },\n refresh: function () {\n var that = this, axis = that.axis, dimension = that.dimension, paneSize = dimension.size, scrollMovable = that.scrollMovable, sizeRatio = paneSize / dimension.total, position = Math.round(-scrollMovable[axis] * sizeRatio), size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.css('display', 'none');\n } else {\n this.element.css('display', '');\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize != size) {\n that.element.css(that.size, size + 'px');\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n },\n show: function () {\n this.element.css({\n opacity: SCROLLBAR_OPACITY,\n visibility: 'visible'\n });\n },\n hide: function () {\n if (!this.alwaysVisible) {\n this.element.css({ opacity: 0 });\n }\n }\n });\n var Scroller = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n that._native = that.options.useNative && kendo.support.hasNativeScrolling;\n if (that._native) {\n element.addClass('km-native-scroller').prepend('<div class=\"km-scroll-header\"/>');\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children().first()\n });\n return;\n }\n element.css('overflow', 'hidden').addClass('km-scroll-wrapper').wrapInner('<div class=\"km-scroll-container\"/>').prepend('<div class=\"km-scroll-header\"/>');\n var inner = element.children().eq(1), tapCapture = new kendo.TapCapture(element), movable = new Movable(inner), dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }), avoidScrolling = this.options.avoidScrolling, userEvents = new kendo.UserEvents(element, {\n touchAction: 'pan-y',\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start: function (e) {\n dimensions.refresh();\n var velocityX = abs(e.x.velocity), velocityY = abs(e.y.velocity), horizontalSwipe = velocityX * 2 >= velocityY, originatedFromFixedContainer = $.contains(that.fixedContainer[0], e.event.target), verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }), pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }), zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }), animatedScroller = new AnimatedScroller({\n moveTo: function (coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n movable.bind(CHANGE, function () {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n if (that.options.mousewheelScrolling) {\n element.on('DOMMouseScroll mousewheel', proxy(this, '_wheelScroll'));\n }\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children().first()\n });\n that._initAxis('x');\n that._initAxis('y');\n that._wheelEnd = function () {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n dimensions.refresh();\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n _wheelScroll: function (e) {\n if (e.ctrlKey) {\n return;\n }\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n var delta = kendo.wheelDeltaY(e);\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n e.preventDefault();\n },\n makeVirtual: function () {\n this.dimensions.y.makeVirtual();\n },\n virtualSize: function (min, max) {\n this.dimensions.y.virtualSize(min, max);\n },\n height: function () {\n return this.dimensions.y.size;\n },\n scrollHeight: function () {\n return this.scrollElement[0].scrollHeight;\n },\n scrollWidth: function () {\n return this.scrollElement[0].scrollWidth;\n },\n options: {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function () {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n },\n events: [\n PULL,\n SCROLL,\n RESIZE\n ],\n _resize: function () {\n if (!this._native) {\n this.contentResized();\n }\n },\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n reset: function () {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n },\n contentResized: function () {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n },\n zoomOut: function () {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n },\n enable: function () {\n this.enabled = true;\n },\n disable: function () {\n this.enabled = false;\n },\n scrollTo: function (x, y) {\n if (this._native) {\n this.scrollElement.scrollLeft(abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n },\n animatedScrollTo: function (x, y, callback) {\n var from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n },\n pullHandled: function () {\n var that = this;\n that.refreshHint.removeClass(REFRESHCLASS);\n that.hintContainer.html(that.pullTemplate({}));\n that.yinertia.onEnd();\n that.xinertia.onEnd();\n that.userEvents.cancel();\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n },\n _scale: function (scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n },\n _initPullToRefresh: function () {\n var that = this;\n that.dimensions.y.forceEnabled();\n that.pullTemplate = kendo.template(that.options.messages.pullTemplate);\n that.releaseTemplate = kendo.template(that.options.messages.releaseTemplate);\n that.refreshTemplate = kendo.template(that.options.messages.refreshTemplate);\n that.scrollElement.prepend('<span class=\"km-scroller-pull\"><span class=\"km-icon\"></span><span class=\"km-loading-left\"></span><span class=\"km-loading-right\"></span><span class=\"km-template\">' + that.pullTemplate({}) + '</span></span>');\n that.refreshHint = that.scrollElement.children().first();\n that.hintContainer = that.refreshHint.children('.km-template');\n that.pane.y.bind('change', proxy(that._paneChange, that));\n that.userEvents.bind('end', proxy(that._dragEnd, that));\n },\n _dragEnd: function () {\n var that = this;\n if (!that.pulled) {\n return;\n }\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS).addClass(REFRESHCLASS);\n that.hintContainer.html(that.refreshTemplate({}));\n that.yinertia.freeze(that.options.pullOffset / 2);\n that.trigger('pull');\n },\n _paneChange: function () {\n var that = this;\n if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n if (!that.pulled) {\n that.pulled = true;\n that.refreshHint.removeClass(REFRESHCLASS).addClass(RELEASECLASS);\n that.hintContainer.html(that.releaseTemplate({}));\n }\n } else if (that.pulled) {\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS);\n that.hintContainer.html(that.pullTemplate({}));\n }\n },\n _initAxis: function (axis) {\n var that = this, movable = that.movable, dimension = that.dimensions[axis], tapCapture = that.tapCapture, paneAxis = that.pane[axis], scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n dimension.bind(CHANGE, function () {\n scrollBar.refresh();\n });\n paneAxis.bind(CHANGE, function () {\n scrollBar.show();\n });\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function () {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n });\n ui.plugin(Scroller);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.groupable', [\n 'kendo.core',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'groupable',\n name: 'Groupable',\n category: 'framework',\n depends: [\n 'core',\n 'draganddrop'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, outerWidth = kendo._outerWidth, kendoAttr = kendo.attr, extend = $.extend, each = $.each, proxy = $.proxy, isRtl = false, DIR = 'dir', FIELD = 'field', TITLE = 'title', ASCENDING = 'asc', DESCENDING = 'desc', GROUP_SORT = 'group-sort', NS = '.kendoGroupable', CHANGE = 'change', indicatorTmpl = kendo.template('<div class=\"k-group-indicator\" data-#=data.ns#field=\"${data.field}\" data-#=data.ns#title=\"${data.title || \"\"}\" data-#=data.ns#dir=\"${data.dir || \"asc\"}\">' + '<a href=\"\\\\#\" class=\"k-link\">' + '<span class=\"k-icon k-i-sort-${(data.dir || \"asc\") == \"asc\" ? \"asc-sm\" : \"desc-sm\"}\" title=\"(sorted ${(data.dir || \"asc\") == \"asc\" ? \"ascending\": \"descending\"})\"></span>' + '${data.title ? data.title: data.field}' + '</a>' + '<a class=\"k-button k-button-icon k-bare\">' + '<span class=\"k-icon k-i-close\"></span>' + '</a>' + '</div>', { useWithBlock: false }), hint = function (target) {\n var title = target.attr(kendo.attr('title'));\n if (title) {\n title = kendo.htmlEncode(title);\n }\n return $('<div class=\"k-header k-group-clue k-drag-clue\" />').html(title || target.attr(kendo.attr('field'))).prepend('<span class=\"k-icon k-drag-status k-i-cancel\" />');\n }, dropCue = $('<div class=\"k-grouping-dropclue\"/>');\n var Groupable = Widget.extend({\n init: function (element, options) {\n var that = this, group = kendo.guid(), intializePositions = proxy(that._intializePositions, that), draggable, horizontalCuePosition, dropCuePositions = that._dropCuePositions = [];\n Widget.fn.init.call(that, element, options);\n isRtl = kendo.support.isRtl(element);\n horizontalCuePosition = isRtl ? 'right' : 'left';\n that.draggable = draggable = that.options.draggable || new kendo.ui.Draggable(that.element, {\n filter: that.options.draggableElements,\n hint: hint,\n group: group\n });\n that.groupContainer = $(that.options.groupContainer, that.element).kendoDropTarget({\n group: draggable.options.group,\n dragenter: function (e) {\n if (that._canDrag(e.draggable.currentTarget)) {\n e.draggable.hint.find('.k-drag-status').removeClass('k-i-cancel').addClass('k-i-plus');\n dropCue.css(horizontalCuePosition, 0).appendTo(that.groupContainer);\n }\n },\n dragleave: function (e) {\n e.draggable.hint.find('.k-drag-status').removeClass('k-i-plus').addClass('k-i-cancel');\n dropCue.remove();\n },\n drop: function (e) {\n var targetElement = e.draggable.currentTarget, field = targetElement.attr(kendo.attr('field')), title = targetElement.attr(kendo.attr('title')), sourceIndicator = that.indicator(field), dropCuePositions = that._dropCuePositions, lastCuePosition = dropCuePositions[dropCuePositions.length - 1], position;\n var sortOptions = extend({}, that.options.sort, targetElement.data(GROUP_SORT));\n var dir = sortOptions.dir;\n if (!targetElement.hasClass('k-group-indicator') && !that._canDrag(targetElement)) {\n return;\n }\n if (lastCuePosition) {\n position = that._dropCuePosition(kendo.getOffset(dropCue).left + parseInt(lastCuePosition.element.css('marginLeft'), 10) * (isRtl ? -1 : 1) + parseInt(lastCuePosition.element.css('marginRight'), 10));\n if (position && that._canDrop($(sourceIndicator), position.element, position.left)) {\n if (position.before) {\n position.element.before(sourceIndicator || that.buildIndicator(field, title, dir));\n } else {\n position.element.after(sourceIndicator || that.buildIndicator(field, title, dir));\n }\n that._setIndicatorSortOptions(field, sortOptions);\n that._change();\n }\n } else {\n that.groupContainer.empty();\n that.groupContainer.append(that.buildIndicator(field, title, dir));\n that._setIndicatorSortOptions(field, sortOptions);\n that._change();\n }\n }\n }).kendoDraggable({\n filter: 'div.k-group-indicator',\n hint: hint,\n group: draggable.options.group,\n dragcancel: proxy(that._dragCancel, that),\n dragstart: function (e) {\n var element = e.currentTarget, marginLeft = parseInt(element.css('marginLeft'), 10), elementPosition = element.position(), left = isRtl ? elementPosition.left - marginLeft : elementPosition.left + outerWidth(element);\n intializePositions();\n dropCue.css('left', left).appendTo(that.groupContainer);\n this.hint.find('.k-drag-status').removeClass('k-i-cancel').addClass('k-i-plus');\n },\n dragend: function () {\n that._dragEnd(this);\n },\n drag: proxy(that._drag, that)\n }).on('click' + NS, '.k-button', function (e) {\n e.preventDefault();\n that._removeIndicator($(this).parent());\n }).on('click' + NS, '.k-link', function (e) {\n var indicator = $(this).parent();\n var newDir = indicator.attr(kendoAttr(DIR)) === ASCENDING ? DESCENDING : ASCENDING;\n indicator.attr(kendoAttr(DIR), newDir);\n that._change();\n e.preventDefault();\n });\n draggable.bind([\n 'dragend',\n 'dragcancel',\n 'dragstart',\n 'drag'\n ], {\n dragend: function () {\n that._dragEnd(this);\n },\n dragcancel: proxy(that._dragCancel, that),\n dragstart: function (e) {\n var element, marginRight, left;\n if (!that.options.allowDrag && !that._canDrag(e.currentTarget)) {\n e.preventDefault();\n return;\n }\n intializePositions();\n if (dropCuePositions.length) {\n element = dropCuePositions[dropCuePositions.length - 1].element;\n marginRight = parseInt(element.css('marginRight'), 10);\n left = element.position().left + outerWidth(element) + marginRight;\n } else {\n left = 0;\n }\n },\n drag: proxy(that._drag, that)\n });\n that.dataSource = that.options.dataSource;\n if (that.dataSource && that._refreshHandler) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n } else {\n that._refreshHandler = proxy(that.refresh, that);\n }\n if (that.dataSource) {\n that.dataSource.bind('change', that._refreshHandler);\n that.refresh();\n }\n },\n refresh: function () {\n var that = this, dataSource = that.dataSource;\n var groups = dataSource.group() || [];\n var fieldAttr = kendoAttr(FIELD);\n var titleAttr = kendoAttr(TITLE);\n var indicatorHtml;\n if (that.groupContainer) {\n that.groupContainer.empty();\n each(groups, function (index, group) {\n var field = group.field;\n var dir = group.dir;\n var element = that.element.find(that.options.filter).filter(function () {\n return $(this).attr(fieldAttr) === field;\n });\n indicatorHtml = that.buildIndicator(field, element.attr(titleAttr), dir);\n that.groupContainer.append(indicatorHtml);\n that._setIndicatorSortOptions(field, extend({}, that.options.sort, {\n dir: dir,\n compare: group.compare\n }));\n });\n }\n that._invalidateGroupContainer();\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.groupContainer.off(NS);\n if (that.groupContainer.data('kendoDropTarget')) {\n that.groupContainer.data('kendoDropTarget').destroy();\n }\n if (that.groupContainer.data('kendoDraggable')) {\n that.groupContainer.data('kendoDraggable').destroy();\n }\n if (!that.options.draggable) {\n that.draggable.destroy();\n }\n if (that.dataSource && that._refreshHandler) {\n that.dataSource.unbind('change', that._refreshHandler);\n that._refreshHandler = null;\n }\n that.groupContainer = that.element = that.draggable = null;\n },\n events: ['change'],\n options: {\n name: 'Groupable',\n filter: 'th',\n draggableElements: 'th',\n messages: { empty: 'Drag a column header and drop it here to group by that column' },\n sort: {\n dir: ASCENDING,\n compare: null\n }\n },\n indicator: function (field) {\n var indicators = $('.k-group-indicator', this.groupContainer);\n return $.grep(indicators, function (item) {\n return $(item).attr(kendo.attr('field')) === field;\n })[0];\n },\n buildIndicator: function (field, title, dir) {\n var that = this;\n var indicator = indicatorTmpl({\n ns: kendo.ns,\n field: field.replace(/\"/g, '\\''),\n title: title,\n dir: dir || (that.options.sort || {}).dir || ASCENDING\n });\n return indicator;\n },\n _setIndicatorSortOptions: function (field, options) {\n var indicator = $(this.indicator(field));\n indicator.data(GROUP_SORT, options);\n },\n aggregates: function () {\n var that = this;\n var names;\n var idx;\n var length;\n return that.element.find(that.options.filter).map(function () {\n var cell = $(this), aggregate = cell.attr(kendo.attr('aggregates')), member = cell.attr(kendo.attr('field'));\n if (aggregate && aggregate !== '') {\n names = aggregate.split(',');\n aggregate = [];\n for (idx = 0, length = names.length; idx < length; idx++) {\n aggregate.push({\n field: member,\n aggregate: names[idx]\n });\n }\n }\n return aggregate;\n }).toArray();\n },\n descriptors: function () {\n var that = this, indicators = $('.k-group-indicator', that.groupContainer), field, aggregates = that.aggregates();\n return $.map(indicators, function (item) {\n item = $(item);\n field = item.attr(kendo.attr('field'));\n var sortOptions = that.options.sort || {};\n var indicatorSortOptions = item.data(GROUP_SORT) || {};\n return {\n field: field,\n dir: item.attr(kendo.attr('dir')),\n aggregates: aggregates || [],\n compare: indicatorSortOptions.compare || sortOptions.compare\n };\n });\n },\n _removeIndicator: function (indicator) {\n var that = this;\n indicator.off();\n indicator.removeData();\n indicator.remove();\n that._invalidateGroupContainer();\n that._change();\n },\n _change: function () {\n var that = this;\n if (that.dataSource) {\n var descriptors = that.descriptors();\n if (that.trigger('change', { groups: descriptors })) {\n that.refresh();\n return;\n }\n that.dataSource.group(descriptors);\n }\n },\n _dropCuePosition: function (position) {\n var dropCuePositions = this._dropCuePositions;\n if (!dropCue.is(':visible') || dropCuePositions.length === 0) {\n return;\n }\n position = Math.ceil(position);\n var lastCuePosition = dropCuePositions[dropCuePositions.length - 1], left = lastCuePosition.left, right = lastCuePosition.right, marginLeft = parseInt(lastCuePosition.element.css('marginLeft'), 10), marginRight = parseInt(lastCuePosition.element.css('marginRight'), 10);\n if (position >= right && !isRtl || position < left && isRtl) {\n position = {\n left: lastCuePosition.element.position().left + (!isRtl ? outerWidth(lastCuePosition.element) + marginRight : -marginLeft),\n element: lastCuePosition.element,\n before: false\n };\n } else {\n position = $.grep(dropCuePositions, function (item) {\n return item.left <= position && position <= item.right || isRtl && position > item.right;\n })[0];\n if (position) {\n position = {\n left: isRtl ? position.element.position().left + outerWidth(position.element) + marginRight : position.element.position().left - marginLeft,\n element: position.element,\n before: true\n };\n }\n }\n return position;\n },\n _drag: function (event) {\n var position = this._dropCuePosition(event.x.location);\n if (position) {\n dropCue.css({\n left: position.left,\n right: 'auto'\n });\n }\n },\n _canDrag: function (element) {\n var field = element.attr(kendo.attr('field'));\n return element.attr(kendo.attr('groupable')) != 'false' && field && (element.hasClass('k-group-indicator') || !this.indicator(field));\n },\n _canDrop: function (source, target, position) {\n var next = source.next(), result = source[0] !== target[0] && (!next[0] || target[0] !== next[0] || (!isRtl && position > next.position().left || isRtl && position < next.position().left));\n return result;\n },\n _dragEnd: function (draggable) {\n var that = this, field = draggable.currentTarget.attr(kendo.attr('field')), sourceIndicator = that.indicator(field);\n if (draggable !== that.options.draggable && !draggable.dropped && sourceIndicator) {\n that._removeIndicator($(sourceIndicator));\n }\n that._dragCancel();\n },\n _dragCancel: function () {\n dropCue.remove();\n this._dropCuePositions = [];\n },\n _intializePositions: function () {\n var that = this, indicators = $('.k-group-indicator', that.groupContainer), left;\n that._dropCuePositions = $.map(indicators, function (item) {\n item = $(item);\n left = kendo.getOffset(item).left;\n return {\n left: parseInt(left, 10),\n right: parseInt(left + outerWidth(item), 10),\n element: item\n };\n });\n },\n _invalidateGroupContainer: function () {\n var groupContainer = this.groupContainer;\n if (groupContainer && groupContainer.is(':empty')) {\n groupContainer.html(this.options.messages.empty);\n }\n }\n });\n kendo.ui.plugin(Groupable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.reorderable', [\n 'kendo.core',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'reorderable',\n name: 'Reorderable',\n category: 'framework',\n depends: [\n 'core',\n 'draganddrop'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, getOffset = kendo.getOffset, Widget = kendo.ui.Widget, CHANGE = 'change', KREORDERABLE = 'k-reorderable';\n function toggleHintClass(hint, denied) {\n hint = $(hint);\n if (denied) {\n hint.find('.k-drag-status').removeClass('k-i-plus').addClass('k-i-cancel');\n } else {\n hint.find('.k-drag-status').removeClass('k-i-cancel').addClass('k-i-plus');\n }\n }\n var Reorderable = Widget.extend({\n init: function (element, options) {\n var that = this, draggable, group = kendo.guid() + '-reorderable';\n Widget.fn.init.call(that, element, options);\n element = that.element.addClass(KREORDERABLE);\n options = that.options;\n that.draggable = draggable = options.draggable || new kendo.ui.Draggable(element, {\n group: group,\n autoScroll: true,\n filter: options.filter,\n hint: options.hint\n });\n that.reorderDropCue = $('<div class=\"k-reorder-cue\"></div></div>');\n element.find(draggable.options.filter).kendoDropTarget({\n group: draggable.options.group,\n dragenter: function (e) {\n if (!that._draggable) {\n return;\n }\n var dropTarget = this.element, offset;\n var denied = !that._dropTargetAllowed(dropTarget) || that._isLastDraggable();\n toggleHintClass(e.draggable.hint, denied);\n if (!denied) {\n offset = getOffset(dropTarget);\n var left = offset.left;\n if (options.inSameContainer && !options.inSameContainer({\n source: dropTarget,\n target: that._draggable,\n sourceIndex: that._index(dropTarget),\n targetIndex: that._index(that._draggable)\n })) {\n that._dropTarget = dropTarget;\n } else {\n if (that._index(dropTarget) > that._index(that._draggable)) {\n left += outerWidth(dropTarget);\n }\n }\n that.reorderDropCue.css({\n height: outerHeight(dropTarget),\n top: offset.top,\n left: left\n }).appendTo(document.body);\n }\n },\n dragleave: function (e) {\n toggleHintClass(e.draggable.hint, true);\n that.reorderDropCue.remove();\n that._dropTarget = null;\n },\n drop: function () {\n that._dropTarget = null;\n if (!that._draggable) {\n return;\n }\n var dropTarget = this.element;\n var draggable = that._draggable;\n if (that._dropTargetAllowed(dropTarget) && !that._isLastDraggable()) {\n that.trigger(CHANGE, {\n element: that._draggable,\n target: dropTarget,\n oldIndex: that._index(draggable),\n newIndex: that._index(dropTarget),\n position: getOffset(that.reorderDropCue).left > getOffset(dropTarget).left ? 'after' : 'before'\n });\n }\n }\n });\n draggable.bind([\n 'dragcancel',\n 'dragend',\n 'dragstart',\n 'drag'\n ], {\n dragcancel: function () {\n that.reorderDropCue.remove();\n that._draggable = null;\n that._elements = null;\n },\n dragend: function () {\n that.reorderDropCue.remove();\n that._draggable = null;\n that._elements = null;\n },\n dragstart: function (e) {\n that._draggable = e.currentTarget;\n that._elements = that.element.find(that.draggable.options.filter);\n },\n drag: function (e) {\n if (!that._dropTarget || this.hint.find('.k-drag-status').hasClass('k-i-cancel')) {\n return;\n }\n var dropStartOffset = getOffset(that._dropTarget).left;\n var width = outerWidth(that._dropTarget);\n if (e.pageX > dropStartOffset + width / 2) {\n that.reorderDropCue.css({ left: dropStartOffset + width });\n } else {\n that.reorderDropCue.css({ left: dropStartOffset });\n }\n }\n });\n },\n options: {\n name: 'Reorderable',\n filter: '*'\n },\n events: [CHANGE],\n _isLastDraggable: function () {\n var inSameContainer = this.options.inSameContainer, draggable = this._draggable[0], elements = this._elements.get(), found = false, item;\n if (!inSameContainer) {\n return false;\n }\n while (!found && elements.length > 0) {\n item = elements.pop();\n found = draggable !== item && inSameContainer({\n source: draggable,\n target: item,\n sourceIndex: this._index(draggable),\n targetIndex: this._index(item)\n });\n }\n return !found;\n },\n _dropTargetAllowed: function (dropTarget) {\n var inSameContainer = this.options.inSameContainer, dragOverContainers = this.options.dragOverContainers, draggable = this._draggable;\n if (draggable[0] === dropTarget[0]) {\n return false;\n }\n if (!inSameContainer || !dragOverContainers) {\n return true;\n }\n if (inSameContainer({\n source: draggable,\n target: dropTarget,\n sourceIndex: this._index(draggable),\n targetIndex: this._index(dropTarget)\n })) {\n return true;\n }\n return dragOverContainers(this._index(draggable), this._index(dropTarget));\n },\n _index: function (element) {\n return this._elements.index(element);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.element.find(that.draggable.options.filter).each(function () {\n var item = $(this);\n if (item.data('kendoDropTarget')) {\n item.data('kendoDropTarget').destroy();\n }\n });\n if (that.draggable) {\n that.draggable.destroy();\n that.draggable.element = that.draggable = null;\n }\n that.elements = that.reorderDropCue = that._elements = that._draggable = null;\n }\n });\n kendo.ui.plugin(Reorderable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.resizable', [\n 'kendo.core',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'resizable',\n name: 'Resizable',\n category: 'framework',\n depends: [\n 'core',\n 'draganddrop'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, proxy = $.proxy, isFunction = kendo.isFunction, extend = $.extend, HORIZONTAL = 'horizontal', VERTICAL = 'vertical', START = 'start', RESIZE = 'resize', RESIZEEND = 'resizeend';\n var Resizable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that.orientation = that.options.orientation.toLowerCase() != VERTICAL ? HORIZONTAL : VERTICAL;\n that._positionMouse = that.orientation == HORIZONTAL ? 'x' : 'y';\n that._position = that.orientation == HORIZONTAL ? 'left' : 'top';\n that._sizingDom = that.orientation == HORIZONTAL ? 'outerWidth' : 'outerHeight';\n that.draggable = new ui.Draggable(options.draggableElement || element, {\n distance: 1,\n filter: options.handle,\n drag: proxy(that._resize, that),\n dragcancel: proxy(that._cancel, that),\n dragstart: proxy(that._start, that),\n dragend: proxy(that._stop, that)\n });\n that.userEvents = that.draggable.userEvents;\n },\n events: [\n RESIZE,\n RESIZEEND,\n START\n ],\n options: {\n name: 'Resizable',\n orientation: HORIZONTAL\n },\n resize: function () {\n },\n _max: function (e) {\n var that = this, hintSize = that.hint ? that.hint[that._sizingDom]() : 0, size = that.options.max;\n return isFunction(size) ? size(e) : size !== undefined ? that._initialElementPosition + size - hintSize : size;\n },\n _min: function (e) {\n var that = this, size = that.options.min;\n return isFunction(size) ? size(e) : size !== undefined ? that._initialElementPosition + size : size;\n },\n _start: function (e) {\n var that = this, hint = that.options.hint, el = $(e.currentTarget);\n that._initialElementPosition = el.position()[that._position];\n that._initialMousePosition = e[that._positionMouse].startLocation;\n if (hint) {\n that.hint = isFunction(hint) ? $(hint(el)) : hint;\n that.hint.css({ position: 'absolute' }).css(that._position, that._initialElementPosition).appendTo(that.element);\n }\n that.trigger(START, e);\n that._maxPosition = that._max(e);\n that._minPosition = that._min(e);\n $(document.body).css('cursor', el.css('cursor'));\n },\n _resize: function (e) {\n var that = this, maxPosition = that._maxPosition, minPosition = that._minPosition, currentPosition = that._initialElementPosition + (e[that._positionMouse].location - that._initialMousePosition), position;\n position = minPosition !== undefined ? Math.max(minPosition, currentPosition) : currentPosition;\n that.position = position = maxPosition !== undefined ? Math.min(maxPosition, position) : position;\n if (that.hint) {\n that.hint.toggleClass(that.options.invalidClass || '', position == maxPosition || position == minPosition).css(that._position, position);\n }\n that.resizing = true;\n that.trigger(RESIZE, extend(e, { position: position }));\n },\n _stop: function (e) {\n var that = this;\n if (that.hint) {\n that.hint.remove();\n }\n that.resizing = false;\n that.trigger(RESIZEEND, extend(e, { position: that.position }));\n $(document.body).css('cursor', '');\n },\n _cancel: function (e) {\n var that = this;\n if (that.hint) {\n that.position = undefined;\n that.hint.css(that._position, that._initialElementPosition);\n that._stop(e);\n }\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n if (that.draggable) {\n that.draggable.destroy();\n }\n },\n press: function (target) {\n if (!target) {\n return;\n }\n var position = target.position(), that = this;\n that.userEvents.press(position.left, position.top, target[0]);\n that.targetPosition = position;\n that.target = target;\n },\n move: function (delta) {\n var that = this, orientation = that._position, position = that.targetPosition, current = that.position;\n if (current === undefined) {\n current = position[orientation];\n }\n position[orientation] = current + delta;\n that.userEvents.move(position.left, position.top);\n },\n end: function () {\n this.userEvents.end();\n this.target = this.position = undefined;\n }\n });\n kendo.ui.plugin(Resizable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.sortable', ['kendo.draganddrop'], f);\n}(function () {\n var __meta__ = {\n id: 'sortable',\n name: 'Sortable',\n category: 'framework',\n depends: ['draganddrop']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, START = 'start', BEFORE_MOVE = 'beforeMove', MOVE = 'move', END = 'end', CHANGE = 'change', CANCEL = 'cancel', ACTION_SORT = 'sort', ACTION_REMOVE = 'remove', ACTION_RECEIVE = 'receive', DEFAULT_FILTER = '>*', MISSING_INDEX = -1;\n function containsOrEqualTo(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n function defaultHint(element) {\n return element.clone();\n }\n function defaultPlaceholder(element) {\n return element.clone().removeAttr('id').css('visibility', 'hidden');\n }\n var Sortable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n if (!that.options.placeholder) {\n that.options.placeholder = defaultPlaceholder;\n }\n if (!that.options.hint) {\n that.options.hint = defaultHint;\n }\n that.draggable = that._createDraggable();\n },\n events: [\n START,\n BEFORE_MOVE,\n MOVE,\n END,\n CHANGE,\n CANCEL\n ],\n options: {\n name: 'Sortable',\n hint: null,\n placeholder: null,\n filter: DEFAULT_FILTER,\n holdToDrag: false,\n disabled: null,\n container: null,\n connectWith: null,\n handler: null,\n cursorOffset: null,\n axis: null,\n ignore: null,\n autoScroll: false,\n cursor: 'auto',\n moveOnDragEnter: false\n },\n destroy: function () {\n this.draggable.destroy();\n Widget.fn.destroy.call(this);\n },\n _createDraggable: function () {\n var that = this, element = that.element, options = that.options;\n return new kendo.ui.Draggable(element, {\n filter: options.filter,\n hint: kendo.isFunction(options.hint) ? options.hint : $(options.hint),\n holdToDrag: options.holdToDrag,\n container: options.container ? $(options.container) : null,\n cursorOffset: options.cursorOffset,\n axis: options.axis,\n ignore: options.ignore,\n autoScroll: options.autoScroll,\n dragstart: $.proxy(that._dragstart, that),\n dragcancel: $.proxy(that._dragcancel, that),\n drag: $.proxy(that._drag, that),\n dragend: $.proxy(that._dragend, that)\n });\n },\n _dragstart: function (e) {\n var draggedElement = this.draggedElement = e.currentTarget, disabled = this.options.disabled, handler = this.options.handler, _placeholder = this.options.placeholder, placeholder = this.placeholder = kendo.isFunction(_placeholder) ? $(_placeholder.call(this, draggedElement)) : $(_placeholder);\n if (disabled && draggedElement.is(disabled)) {\n e.preventDefault();\n } else if (handler && !$(e.initialTarget).is(handler)) {\n e.preventDefault();\n } else {\n if (this.trigger(START, {\n item: draggedElement,\n draggableEvent: e\n })) {\n e.preventDefault();\n } else {\n draggedElement.css('display', 'none');\n draggedElement.before(placeholder);\n this._setCursor();\n }\n }\n },\n _dragcancel: function () {\n this._cancel();\n this.trigger(CANCEL, { item: this.draggedElement });\n this._resetCursor();\n },\n _drag: function (e) {\n var draggedElement = this.draggedElement, target = this._findTarget(e), targetCenter, cursorOffset = {\n left: e.x.location,\n top: e.y.location\n }, offsetDelta, axisDelta = {\n x: e.x.delta,\n y: e.y.delta\n }, direction, sibling, getSibling, axis = this.options.axis, moveOnDragEnter = this.options.moveOnDragEnter, eventData = {\n item: draggedElement,\n list: this,\n draggableEvent: e\n };\n if (axis === 'x' || axis === 'y') {\n this._movementByAxis(axis, cursorOffset, axisDelta[axis], eventData);\n return;\n }\n if (target) {\n targetCenter = this._getElementCenter(target.element);\n offsetDelta = {\n left: Math.round(cursorOffset.left - targetCenter.left),\n top: Math.round(cursorOffset.top - targetCenter.top)\n };\n $.extend(eventData, { target: target.element });\n if (target.appendToBottom) {\n this._movePlaceholder(target, null, eventData);\n return;\n }\n if (target.appendAfterHidden) {\n this._movePlaceholder(target, 'next', eventData);\n }\n if (this._isFloating(target.element)) {\n if (axisDelta.x < 0 && moveOnDragEnter || !moveOnDragEnter && offsetDelta.left < 0) {\n direction = 'prev';\n } else if (axisDelta.x > 0 && moveOnDragEnter || !moveOnDragEnter && offsetDelta.left > 0) {\n direction = 'next';\n }\n } else {\n if (axisDelta.y < 0 && moveOnDragEnter || !moveOnDragEnter && offsetDelta.top < 0) {\n direction = 'prev';\n } else if (axisDelta.y > 0 && moveOnDragEnter || !moveOnDragEnter && offsetDelta.top > 0) {\n direction = 'next';\n }\n }\n if (direction) {\n getSibling = direction === 'prev' ? jQuery.fn.prev : jQuery.fn.next;\n sibling = getSibling.call(target.element);\n while (sibling.length && !sibling.is(':visible')) {\n sibling = getSibling.call(sibling);\n }\n if (sibling[0] != this.placeholder[0]) {\n this._movePlaceholder(target, direction, eventData);\n }\n }\n }\n },\n _dragend: function (e) {\n var placeholder = this.placeholder, draggedElement = this.draggedElement, draggedIndex = this.indexOf(draggedElement), placeholderIndex = this.indexOf(placeholder), connectWith = this.options.connectWith, connectedList, isDefaultPrevented, eventData, connectedListEventData;\n this._resetCursor();\n eventData = {\n action: ACTION_SORT,\n item: draggedElement,\n oldIndex: draggedIndex,\n newIndex: placeholderIndex,\n draggableEvent: e\n };\n if (placeholderIndex >= 0) {\n isDefaultPrevented = this.trigger(END, eventData);\n } else {\n connectedList = placeholder.parents(connectWith).getKendoSortable();\n eventData.action = ACTION_REMOVE;\n connectedListEventData = $.extend({}, eventData, {\n action: ACTION_RECEIVE,\n oldIndex: MISSING_INDEX,\n newIndex: connectedList.indexOf(placeholder)\n });\n isDefaultPrevented = !(!this.trigger(END, eventData) && !connectedList.trigger(END, connectedListEventData));\n }\n if (isDefaultPrevented || placeholderIndex === draggedIndex) {\n this._cancel();\n return;\n }\n placeholder.replaceWith(draggedElement);\n draggedElement.show();\n this.draggable.dropped = true;\n eventData = {\n action: this.indexOf(draggedElement) != MISSING_INDEX ? ACTION_SORT : ACTION_REMOVE,\n item: draggedElement,\n oldIndex: draggedIndex,\n newIndex: this.indexOf(draggedElement),\n draggableEvent: e\n };\n this.trigger(CHANGE, eventData);\n if (connectedList) {\n connectedListEventData = $.extend({}, eventData, {\n action: ACTION_RECEIVE,\n oldIndex: MISSING_INDEX,\n newIndex: connectedList.indexOf(draggedElement)\n });\n connectedList.trigger(CHANGE, connectedListEventData);\n }\n },\n _findTarget: function (e) {\n var element = this._findElementUnderCursor(e), items, connectWith = this.options.connectWith, node;\n if ($.contains(this.element[0], element)) {\n items = this.items();\n node = items.filter(element)[0] || items.has(element)[0];\n return node ? {\n element: $(node),\n sortable: this\n } : null;\n } else if (this.element[0] == element && this._isEmpty()) {\n return {\n element: this.element,\n sortable: this,\n appendToBottom: true\n };\n } else if (this.element[0] == element && this._isLastHidden()) {\n node = this.items().eq(0);\n return {\n element: node,\n sortable: this,\n appendAfterHidden: true\n };\n } else if (connectWith) {\n return this._searchConnectedTargets(element, e);\n }\n },\n _findElementUnderCursor: function (e) {\n var elementUnderCursor = kendo.elementUnderCursor(e), draggable = e.sender;\n if (containsOrEqualTo(draggable.hint[0], elementUnderCursor)) {\n draggable.hint.hide();\n elementUnderCursor = kendo.elementUnderCursor(e);\n if (!elementUnderCursor) {\n elementUnderCursor = kendo.elementUnderCursor(e);\n }\n draggable.hint.show();\n }\n return elementUnderCursor;\n },\n _searchConnectedTargets: function (element, e) {\n var connected = $(this.options.connectWith), sortableInstance, items, node;\n for (var i = 0; i < connected.length; i++) {\n sortableInstance = connected.eq(i).getKendoSortable();\n if ($.contains(connected[i], element)) {\n if (sortableInstance) {\n items = sortableInstance.items();\n node = items.filter(element)[0] || items.has(element)[0];\n if (node) {\n sortableInstance.placeholder = this.placeholder;\n return {\n element: $(node),\n sortable: sortableInstance\n };\n } else {\n return null;\n }\n }\n } else if (connected[i] == element) {\n if (sortableInstance && sortableInstance._isEmpty()) {\n return {\n element: connected.eq(i),\n sortable: sortableInstance,\n appendToBottom: true\n };\n } else if (this._isCursorAfterLast(sortableInstance, e)) {\n node = sortableInstance.items().last();\n return {\n element: node,\n sortable: sortableInstance\n };\n }\n }\n }\n },\n _isCursorAfterLast: function (sortable, e) {\n var lastItem = sortable.items().last(), cursorOffset = {\n left: e.x.location,\n top: e.y.location\n }, lastItemOffset, delta;\n lastItemOffset = kendo.getOffset(lastItem);\n lastItemOffset.top += outerHeight(lastItem);\n lastItemOffset.left += outerWidth(lastItem);\n if (this._isFloating(lastItem)) {\n delta = lastItemOffset.left - cursorOffset.left;\n } else {\n delta = lastItemOffset.top - cursorOffset.top;\n }\n return delta < 0 ? true : false;\n },\n _movementByAxis: function (axis, cursorOffset, delta, eventData) {\n var cursorPosition = axis === 'x' ? cursorOffset.left : cursorOffset.top, target = delta < 0 ? this.placeholder.prev() : this.placeholder.next(), items = this.items(), targetCenter;\n if (target.length && !target.is(':visible')) {\n target = delta < 0 ? target.prev() : target.next();\n }\n if (!items.filter(target).length) {\n return;\n }\n $.extend(eventData, { target: target });\n targetCenter = this._getElementCenter(target);\n if (targetCenter) {\n targetCenter = axis === 'x' ? targetCenter.left : targetCenter.top;\n }\n if (target.length && delta < 0 && cursorPosition - targetCenter < 0) {\n this._movePlaceholder({\n element: target,\n sortable: this\n }, 'prev', eventData);\n } else if (target.length && delta > 0 && cursorPosition - targetCenter > 0) {\n this._movePlaceholder({\n element: target,\n sortable: this\n }, 'next', eventData);\n }\n },\n _movePlaceholder: function (target, direction, eventData) {\n var placeholder = this.placeholder;\n if (!target.sortable.trigger(BEFORE_MOVE, eventData)) {\n if (!direction) {\n target.element.append(placeholder);\n } else if (direction === 'prev') {\n target.element.before(placeholder);\n } else if (direction === 'next') {\n target.element.after(placeholder);\n }\n target.sortable.trigger(MOVE, eventData);\n }\n },\n _setCursor: function () {\n var cursor = this.options.cursor, body;\n if (cursor && cursor !== 'auto') {\n body = $(document.body);\n this._originalCursorType = body.css('cursor');\n body.css({ 'cursor': cursor });\n if (!this._cursorStylesheet) {\n this._cursorStylesheet = $('<style>* { cursor: ' + cursor + ' !important; }</style>');\n }\n this._cursorStylesheet.appendTo(body);\n }\n },\n _resetCursor: function () {\n if (this._originalCursorType) {\n $(document.body).css('cursor', this._originalCursorType);\n this._originalCursorType = null;\n this._cursorStylesheet.remove();\n }\n },\n _getElementCenter: function (element) {\n var center = element.length ? kendo.getOffset(element) : null;\n if (center) {\n center.top += outerHeight(element) / 2;\n center.left += outerWidth(element) / 2;\n }\n return center;\n },\n _isFloating: function (item) {\n var isFloating = /left|right/.test(item.css('float'));\n var isTable = /inline|table-cell/.test(item.css('display'));\n var isHorizontalFlex = /flex/.test(item.parent().css('display')) && (/row|row-reverse/.test(item.parent().css('flex-direction')) || !item.parent().css('flex-direction'));\n return isFloating || isTable || isHorizontalFlex;\n },\n _cancel: function () {\n this.draggedElement.show();\n this.placeholder.remove();\n },\n _items: function () {\n var filter = this.options.filter, items;\n if (filter) {\n items = this.element.find(filter);\n } else {\n items = this.element.children();\n }\n return items;\n },\n indexOf: function (element) {\n var items = this._items(), placeholder = this.placeholder, draggedElement = this.draggedElement;\n if (placeholder && element[0] == placeholder[0]) {\n return items.not(draggedElement).index(element);\n } else {\n return items.not(placeholder).index(element);\n }\n },\n items: function () {\n var placeholder = this.placeholder, items = this._items();\n if (placeholder) {\n items = items.not(placeholder);\n }\n return items;\n },\n _isEmpty: function () {\n return !this.items().length;\n },\n _isLastHidden: function () {\n return this.items().length === 1 && this.items().is(':hidden');\n }\n });\n kendo.ui.plugin(Sortable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.selectable', [\n 'kendo.core',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'selectable',\n name: 'Selectable',\n category: 'framework',\n depends: [\n 'core',\n 'userevents'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, proxy = $.proxy, abs = Math.abs, ARIASELECTED = 'aria-selected', SELECTED = 'k-state-selected', ACTIVE = 'k-state-selecting', SELECTABLE = 'k-selectable', CHANGE = 'change', NS = '.kendoSelectable', UNSELECT = 'unselect', UNSELECTING = 'k-state-unselecting', INPUTSELECTOR = 'input,a,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up,label.k-checkbox-label.k-no-text,.k-icon.k-i-collapse,.k-icon.k-i-expand,span.k-numeric-wrap', msie = kendo.support.browser.msie, supportEventDelegation = false;\n (function ($) {\n (function () {\n $('<div class=\"parent\"><span /></div>').on('click', '>*', function () {\n supportEventDelegation = true;\n }).find('span').trigger('click').end().off();\n }());\n }($));\n var Selectable = Widget.extend({\n init: function (element, options) {\n var that = this, multiple;\n Widget.fn.init.call(that, element, options);\n that._marquee = $('<div class=\\'k-marquee\\'><div class=\\'k-marquee-color\\'></div></div>');\n that._lastActive = null;\n that.element.addClass(SELECTABLE);\n that.relatedTarget = that.options.relatedTarget;\n multiple = that.options.multiple;\n if (this.options.aria && multiple) {\n that.element.attr('aria-multiselectable', true);\n }\n that.userEvents = new kendo.UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: (!supportEventDelegation ? '.' + SELECTABLE + ' ' : '') + that.options.filter,\n tap: proxy(that._tap, that),\n touchAction: multiple ? 'none' : 'pan-x pan-y'\n });\n if (multiple) {\n that.userEvents.bind('start', proxy(that._start, that)).bind('move', proxy(that._move, that)).bind('end', proxy(that._end, that)).bind('select', proxy(that._select, that));\n }\n },\n events: [\n CHANGE,\n UNSELECT\n ],\n options: {\n name: 'Selectable',\n filter: '>*',\n inputSelectors: INPUTSELECTOR,\n multiple: false,\n relatedTarget: $.noop\n },\n _isElement: function (target) {\n var elements = this.element;\n var idx, length = elements.length, result = false;\n target = target[0];\n for (idx = 0; idx < length; idx++) {\n if (elements[idx] === target) {\n result = true;\n break;\n }\n }\n return result;\n },\n _tap: function (e) {\n var target = $(e.target), that = this, ctrlKey = e.event.ctrlKey || e.event.metaKey, multiple = that.options.multiple, shiftKey = multiple && e.event.shiftKey, selected, whichCode = e.event.which, buttonCode = e.event.button;\n if (!that._isElement(target.closest('.' + SELECTABLE)) || whichCode && whichCode == 3 || buttonCode && buttonCode == 2) {\n return;\n }\n if (!this._allowSelection(e.event.target)) {\n return;\n }\n selected = target.hasClass(SELECTED);\n if (!multiple || !ctrlKey) {\n that.clear();\n }\n target = target.add(that.relatedTarget(target));\n if (shiftKey) {\n that.selectRange(that._firstSelectee(), target, e);\n } else {\n if (selected && ctrlKey) {\n that._unselect(target);\n that._notify(CHANGE, e);\n } else {\n that.value(target, e);\n }\n that._lastActive = that._downTarget = target;\n }\n },\n _start: function (e) {\n var that = this, target = $(e.target), selected = target.hasClass(SELECTED), currentElement, ctrlKey = e.event.ctrlKey || e.event.metaKey;\n if (!this._allowSelection(e.event.target)) {\n return;\n }\n that._downTarget = target;\n if (!that._isElement(target.closest('.' + SELECTABLE))) {\n that.userEvents.cancel();\n return;\n }\n if (that.options.useAllItems) {\n that._items = that.element.find(that.options.filter);\n } else {\n currentElement = target.closest(that.element);\n that._items = currentElement.find(that.options.filter);\n }\n e.sender.capture();\n that._marquee.appendTo(document.body).css({\n left: e.x.client + 1,\n top: e.y.client + 1,\n width: 0,\n height: 0\n });\n if (!ctrlKey) {\n that.clear();\n }\n target = target.add(that.relatedTarget(target));\n if (selected) {\n that._selectElement(target, true);\n if (ctrlKey) {\n target.addClass(UNSELECTING);\n }\n }\n },\n _move: function (e) {\n var that = this, position = {\n left: e.x.startLocation > e.x.location ? e.x.location : e.x.startLocation,\n top: e.y.startLocation > e.y.location ? e.y.location : e.y.startLocation,\n width: abs(e.x.initialDelta),\n height: abs(e.y.initialDelta)\n };\n that._marquee.css(position);\n that._invalidateSelectables(position, e.event.ctrlKey || e.event.metaKey);\n e.preventDefault();\n },\n _end: function (e) {\n var that = this;\n that._marquee.remove();\n that._unselect(that.element.find(that.options.filter + '.' + UNSELECTING)).removeClass(UNSELECTING);\n var target = that.element.find(that.options.filter + '.' + ACTIVE);\n target = target.add(that.relatedTarget(target));\n that.value(target, e);\n that._lastActive = that._downTarget;\n that._items = null;\n },\n _invalidateSelectables: function (position, ctrlKey) {\n var idx, length, target = this._downTarget[0], items = this._items, related, toSelect;\n for (idx = 0, length = items.length; idx < length; idx++) {\n toSelect = items.eq(idx);\n related = toSelect.add(this.relatedTarget(toSelect));\n if (collision(toSelect, position)) {\n if (toSelect.hasClass(SELECTED)) {\n if (ctrlKey && target !== toSelect[0]) {\n related.removeClass(SELECTED).addClass(UNSELECTING);\n }\n } else if (!toSelect.hasClass(ACTIVE) && !toSelect.hasClass(UNSELECTING)) {\n related.addClass(ACTIVE);\n }\n } else {\n if (toSelect.hasClass(ACTIVE)) {\n related.removeClass(ACTIVE);\n } else if (ctrlKey && toSelect.hasClass(UNSELECTING)) {\n related.removeClass(UNSELECTING).addClass(SELECTED);\n }\n }\n }\n },\n value: function (val, e) {\n var that = this, selectElement = proxy(that._selectElement, that);\n if (val) {\n val.each(function () {\n selectElement(this);\n });\n that._notify(CHANGE, e);\n return;\n }\n return that.element.find(that.options.filter + '.' + SELECTED);\n },\n _firstSelectee: function () {\n var that = this, selected;\n if (that._lastActive !== null) {\n return that._lastActive;\n }\n selected = that.value();\n return selected.length > 0 ? selected[0] : that.element.find(that.options.filter)[0];\n },\n _selectElement: function (element, preventNotify) {\n var toSelect = $(element), isPrevented = !preventNotify && this._notify('select', { element: element });\n toSelect.removeClass(ACTIVE);\n if (!isPrevented) {\n toSelect.addClass(SELECTED);\n if (this.options.aria) {\n toSelect.attr(ARIASELECTED, true);\n }\n }\n },\n _notify: function (name, args) {\n args = args || {};\n return this.trigger(name, args);\n },\n _unselect: function (element) {\n if (this.trigger(UNSELECT, { element: element })) {\n return;\n }\n element.removeClass(SELECTED);\n if (this.options.aria) {\n element.attr(ARIASELECTED, false);\n }\n return element;\n },\n _select: function (e) {\n if (this._allowSelection(e.event.target)) {\n if (!msie || msie && !$(kendo._activeElement()).is(this.options.inputSelectors)) {\n e.preventDefault();\n }\n }\n },\n _allowSelection: function (target) {\n if ($(target).is(this.options.inputSelectors)) {\n this.userEvents.cancel();\n this._downTarget = null;\n return false;\n }\n return true;\n },\n resetTouchEvents: function () {\n this.userEvents.cancel();\n },\n clear: function () {\n var items = this.element.find(this.options.filter + '.' + SELECTED);\n this._unselect(items);\n },\n selectRange: function (start, end, e) {\n var that = this, idx, tmp, items;\n that.clear();\n if (that.element.length > 1) {\n items = that.options.continuousItems();\n }\n if (!items || !items.length) {\n items = that.element.find(that.options.filter);\n }\n start = $.inArray($(start)[0], items);\n end = $.inArray($(end)[0], items);\n if (start > end) {\n tmp = start;\n start = end;\n end = tmp;\n }\n if (!that.options.useAllItems) {\n end += that.element.length - 1;\n }\n for (idx = start; idx <= end; idx++) {\n that._selectElement(items[idx]);\n }\n that._notify(CHANGE, e);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.element.off(NS);\n that.userEvents.destroy();\n that._marquee = that._lastActive = that.element = that.userEvents = null;\n }\n });\n Selectable.parseOptions = function (selectable) {\n var asLowerString = typeof selectable === 'string' && selectable.toLowerCase();\n return {\n multiple: asLowerString && asLowerString.indexOf('multiple') > -1,\n cell: asLowerString && asLowerString.indexOf('cell') > -1\n };\n };\n function collision(element, position) {\n if (!element.is(':visible')) {\n return false;\n }\n var elementPosition = kendo.getOffset(element), right = position.left + position.width, bottom = position.top + position.height;\n elementPosition.right = elementPosition.left + kendo._outerWidth(element);\n elementPosition.bottom = elementPosition.top + kendo._outerHeight(element);\n return !(elementPosition.left > right || elementPosition.right < position.left || elementPosition.top > bottom || elementPosition.bottom < position.top);\n }\n kendo.ui.plugin(Selectable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('chat/messageBox', ['kendo.core'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo;\n var Widget = kendo.ui.Widget;\n var extend = $.extend;\n var proxy = $.proxy;\n var DOT = '.';\n var NS = '.kendoChat';\n var keys = kendo.keys;\n var SEND_ICON = '<svg version=\"1.1\" ixmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 16 16\" xml:space=\"preserve\"><path d=\"M0,14.3c-0.1,0.6,0.3,0.8,0.8,0.6l14.8-6.5c0.5-0.2,0.5-0.6,0-0.8L0.8,1.1C0.3,0.9-0.1,1.1,0,1.7l0.7,4.2C0.8,6.5,1.4,7,1.9,7.1l8.8,0.8c0.6,0.1,0.6,0.1,0,0.2L1.9,8.9C1.4,9,0.8,9.5,0.7,10.1L0,14.3z\"/></svg>';\n var TOGGLE_ICON = '<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 512 512\" style=\"enable-background:new 0 0 512 512;\" xml:space=\"preserve\"><g> <path d=\"M128,240c0-26.4-21.6-48-48-48s-48,21.6-48,48s21.6,48,48,48S128,266.4,128,240z\"/> <path d=\"M192,240c0,26.4,21.6,48,48,48c26.4,0,48-21.6,48-48s-21.6-48-48-48C213.6,192,192,213.6,192,240z\"/> <path d=\"M352,240c0,26.4,21.6,48,48,48c26.4,0,48-21.6,48-48s-21.6-48-48-48C373.6,192,352,213.6,352,240z\"/></g></svg>';\n var messageBoxStyles = {\n input: 'k-input',\n button: 'k-button',\n buttonFlat: 'k-flat',\n buttonIcon: 'k-button-icon',\n buttonSend: 'k-button-send',\n buttonToggle: 'k-button-toggle',\n iconAdd: 'k-icon k-i-add',\n hidden: 'k-hidden'\n };\n var ChatMessageBox = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this._wrapper();\n this._attachEvents();\n this._typing = false;\n },\n events: [],\n options: { messages: { placeholder: 'Type a message...' } },\n destroy: function () {\n Widget.fn.destroy.call(this);\n if (this.input) {\n this.input.off(NS);\n this.input.remove();\n this.input = null;\n }\n this.element.off(NS);\n this.element.empty();\n },\n _wrapper: function () {\n var styles = ChatMessageBox.styles;\n var options = this.options;\n var messages = options.messages;\n var inputId = 'inputId_' + kendo.guid();\n $('<label>').addClass(styles.hidden).html(messages.placeholder).attr('for', inputId).appendTo(this.element);\n this.input = $('<input type=\\'text\\'>').addClass(styles.input).attr('id', inputId).attr('placeholder', messages.placeholder).appendTo(this.element);\n if (options.toolbar && options.toolbar.toggleable && options.toolbar.buttons) {\n $('<button>').addClass(styles.button).addClass(styles.buttonFlat).addClass(styles.buttonIcon).addClass(styles.buttonToggle).attr('type', 'button').append($(TOGGLE_ICON)).appendTo(this.element);\n }\n $('<button>').addClass(styles.button).addClass(styles.buttonFlat).addClass(styles.buttonIcon).addClass(styles.buttonSend).append($(SEND_ICON)).appendTo(this.element);\n },\n _attachEvents: function () {\n var styles = ChatMessageBox.styles;\n this.input.on('keydown' + NS, proxy(this._keydown, this)).on('input' + NS, proxy(this._input, this)).on('focusout' + NS, proxy(this._inputFocusout, this));\n this.element.on('click' + NS, DOT + styles.buttonSend, proxy(this._buttonClick, this));\n this.element.on('click' + NS, DOT + styles.buttonToggle, proxy(this._toggleToolbar, this));\n },\n _input: function () {\n var currentValue = this.input.val();\n var start = currentValue.length > 0;\n this._triggerTyping(start);\n },\n _keydown: function (e) {\n var key = e.keyCode;\n switch (key) {\n case keys.ENTER:\n e.preventDefault();\n this._sendMessage();\n break;\n }\n },\n _buttonClick: function (e) {\n e.preventDefault();\n this._sendMessage();\n },\n _sendMessage: function () {\n var value = this.input.val();\n if (!value.length) {\n return;\n }\n this._triggerTyping(false);\n var args = { text: value };\n this.trigger('sendMessage', args);\n this.input.val('');\n },\n _inputFocusout: function () {\n this._triggerTyping(false);\n },\n _triggerTyping: function (start) {\n if (start) {\n if (!this._typing) {\n this.trigger('typingStart', {});\n this._typing = true;\n }\n } else {\n if (this._typing) {\n this.trigger('typingEnd', {});\n this._typing = false;\n }\n }\n },\n _toggleToolbar: function (ev) {\n this.trigger('toggleToolbar', { originalEvent: ev });\n }\n });\n extend(true, ChatMessageBox, { styles: messageBoxStyles });\n extend(kendo, { chat: { ChatMessageBox: ChatMessageBox } });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('chat/toolbar', ['kendo.core'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo;\n var Widget = kendo.ui.Widget;\n var extend = $.extend;\n var proxy = $.proxy;\n var DOT = '.';\n var NS = '.kendoChat';\n var DATA_K_BUTTON_NAME = 'kButtonName';\n var SCROLL_LEFT_NAME = 'chatToolbarScrollLeft';\n var SCROLL_RIGHT_NAME = 'chatToolbarScrollRight';\n var VISIBLE = ':visible';\n var DEFAULT_ANIMATION = {\n effects: 'expand:vertical',\n duration: 200\n };\n var NO_ANIMATION = {\n expand: { show: true },\n collapse: { hide: true }\n };\n var toolbarStyles = {\n button: 'k-button',\n buttonFlat: 'k-flat',\n buttonList: 'k-button-list',\n scrollButton: 'k-scroll-button',\n scrollButtonLeft: 'k-scroll-button-left',\n scrollButtonRight: 'k-scroll-button-right',\n scrollButtonLeftIcon: 'k-icon k-i-arrow-chevron-left',\n scrollButtonRightIcon: 'k-icon k-i-arrow-chevron-right',\n buttonIcon: 'k-button-icon'\n };\n var ChatToolBar = Widget.extend({\n init: function (element, options) {\n options = extend({}, options, { name: 'ChatToolbar' });\n var toolbarOptions = options.toolbar;\n var buttonsDefined = toolbarOptions.buttons && toolbarOptions.buttons.length;\n Widget.fn.init.call(this, element, options);\n if (buttonsDefined) {\n this._createButtonList();\n }\n if (buttonsDefined && toolbarOptions.scrollable && this.buttonsWidth() > this.element.width()) {\n this._initScrolling();\n }\n this._setupAnimation();\n if (toolbarOptions.toggleable) {\n this.toggle(true);\n }\n this.element.on('click' + NS, proxy(this._onClick, this));\n },\n events: ['click'],\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.element.off(NS);\n this.element.empty();\n },\n _createButtonList: function () {\n var that = this;\n var styles = ChatToolBar.styles;\n var buttons = that.options.toolbar.buttons;\n var buttonList = $('<div class=\\'' + styles.buttonList + '\\'></div>');\n for (var i = 0; i < buttons.length; i++) {\n var button = that._createButton(buttons[i]);\n buttonList.append(button);\n }\n buttonList.appendTo(this.element);\n this.buttonList = buttonList;\n },\n _createButton: function (btnOptions) {\n var styles = ChatToolBar.styles;\n var buttonElm = $('<button>');\n if (typeof btnOptions === 'string') {\n btnOptions = { name: btnOptions };\n }\n buttonElm.attr(btnOptions.attr || {}).attr('title', btnOptions.text).attr('type', 'button').addClass(btnOptions.name).data(DATA_K_BUTTON_NAME, btnOptions.name).addClass(styles.button);\n if (btnOptions.iconClass) {\n buttonElm.addClass(styles.buttonIcon);\n buttonElm.prepend('<span class=\\'' + btnOptions.iconClass + '\\'></span>');\n }\n return buttonElm;\n },\n _onClick: function (ev) {\n var styles = ChatToolBar.styles;\n var target = $(ev.target).closest(DOT + styles.button);\n if (target.is(DOT + styles.scrollButton) && !this._scrolling) {\n this._scroll(target.data(DATA_K_BUTTON_NAME));\n }\n if (target.data(DATA_K_BUTTON_NAME)) {\n this.trigger('click', {\n button: target[0],\n name: target.data(DATA_K_BUTTON_NAME),\n originalEvent: ev\n });\n }\n },\n _initScrolling: function () {\n var styles = ChatToolBar.styles;\n this.scrollButtonLeft = this._createButton({\n name: SCROLL_LEFT_NAME,\n iconClass: styles.scrollButtonLeftIcon,\n attr: { 'class': styles.scrollButton + ' ' + styles.scrollButtonLeft }\n });\n this.scrollButtonRight = this._createButton({\n name: SCROLL_RIGHT_NAME,\n iconClass: styles.scrollButtonRightIcon,\n attr: { 'class': styles.scrollButton + ' ' + styles.scrollButtonRight }\n });\n this.element.prepend(this.scrollButtonLeft);\n this.element.append(this.scrollButtonRight);\n this._refreshScrollButtons();\n this.element.on('keydown' + NS, proxy(this._refreshScrollButtons, this));\n },\n _scroll: function (commandName) {\n var that = this;\n var buttonWidth = that.buttonWidth();\n var maxScrollSize = this.maxScrollSize();\n var scrollAmmount = commandName === SCROLL_LEFT_NAME ? buttonWidth * -1 : buttonWidth;\n var currentScroll = this.currentScrollLeft();\n var scrollValue = currentScroll + scrollAmmount;\n scrollValue = Math.min(Math.max(scrollValue, 0), maxScrollSize);\n if (commandName !== SCROLL_LEFT_NAME && commandName !== SCROLL_RIGHT_NAME) {\n return;\n }\n that.buttonList.scrollLeft(scrollValue);\n that._refreshScrollButtons(scrollValue);\n },\n _refreshScrollButtons: function (value) {\n var maxScrollSize = this.maxScrollSize();\n var currentScrollLeft = value === undefined || isNaN(parseInt(value, 10)) ? this.currentScrollLeft() : value;\n if (!this.scrollButtonLeft && !this.scrollButtonRight) {\n return;\n }\n this.scrollButtonLeft.toggle(currentScrollLeft !== 0);\n this.scrollButtonRight.toggle(currentScrollLeft !== maxScrollSize);\n },\n _setupAnimation: function () {\n var animation = this.options.toolbar.animation;\n var defaultExpandAnimation = extend({}, DEFAULT_ANIMATION);\n var defaultCollapseAnimation = extend({\n reverse: true,\n hide: true\n }, DEFAULT_ANIMATION);\n if (animation === false) {\n animation = extend(true, {}, NO_ANIMATION);\n } else {\n animation = extend(true, {\n expand: defaultExpandAnimation,\n collapse: defaultCollapseAnimation\n }, animation);\n }\n this.options.toolbar.animation = animation;\n },\n _animationComplete: function () {\n this._refreshScrollButtons();\n },\n currentScrollLeft: function () {\n return Math.round(this.buttonList.scrollLeft());\n },\n maxScrollSize: function () {\n return Math.round(this.buttonList[0].scrollWidth - this.buttonList[0].clientWidth);\n },\n buttons: function () {\n var styles = ChatToolBar.styles;\n return this.buttonList ? this.buttonList.children(DOT + styles.button) : null;\n },\n buttonWidth: function () {\n return Math.round(this.buttons().last().outerWidth(true));\n },\n buttonsWidth: function () {\n var width = 0;\n if (this.buttons()) {\n width = this.buttonWidth() * this.buttons().length;\n }\n return width;\n },\n toggle: function (skipAnimation) {\n var animation = this.options.toolbar.animation;\n if (skipAnimation) {\n animation = extend(true, {}, NO_ANIMATION);\n }\n animation.expand.complete = proxy(this._animationComplete, this);\n animation.collapse.complete = proxy(this._animationComplete, this);\n if (this.element.is(VISIBLE)) {\n this.element.kendoStop().kendoAnimate(animation.collapse);\n } else {\n this.element.kendoStop().kendoAnimate(animation.expand);\n }\n }\n });\n extend(true, ChatToolBar, { styles: toolbarStyles });\n extend(kendo.chat, { ChatToolBar: ChatToolBar });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('chat/view', [\n 'kendo.core',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo;\n var Widget = kendo.ui.Widget;\n var extend = $.extend;\n var proxy = $.proxy;\n var DOT = '.';\n var SPACE = ' ';\n var NS = '.kendoChat';\n var MESSAGE_GROUP_TEMPLATE = kendo.template('<div #:text# class=\"#=styles.messageGroup# #= url ? \"\" : styles.noAvatar #\">' + '<p class=\"#=styles.author#\">#:text#</p>' + '# if (url) { #' + '<img src=\"#=url#\" alt=\"#:text#\" class=\"#=styles.avatar#\">' + '# } #' + '</div>');\n var SELF_MESSAGE_GROUP_TEMPLATE = kendo.template('<div me class=\"#=styles.messageGroup# #=styles.self# #= url ? \"\" : styles.noAvatar #\">' + '# if (url) { #' + '<img src=\"#=url#\" alt=\"#:text#\" class=\"#=styles.avatar#\">' + '# } #' + '</div>');\n var TEXT_MESSAGE_TEMPLATE = kendo.template('<div class=\"#=styles.message#\">' + '<time class=\"#=styles.messageTime#\">#= kendo.toString(kendo.parseDate(timestamp), \"HH:mm:ss\") #</time>' + '<div class=\"#=styles.bubble#\">#:text#</div>' + '</div>');\n var TYPING_INDICATOR_TEMPLATE = kendo.template('<div class=\"#=styles.messageListContent# #=styles.typingIndicatorBubble#\">' + '<p class=\"#=styles.author#\">#:text#</p>' + '<div class=\"#=styles.message#\">' + '<div class=\"#=styles.bubble#\">' + '<div class=\"#=styles.typingIndicator#\">' + '<span></span><span></span><span></span>' + '</div>' + '</div>' + '</div>' + '</div>');\n var SUGGESTED_ACTIONS_TEMPLATE = kendo.template('<div class=\"#=styles.suggestedActions#\">' + '# for (var i = 0; i < suggestedActions.length; i++) { #' + '<span class=\"#=styles.suggestedAction#\" data-value=\"#:suggestedActions[i].value#\">#:suggestedActions[i].title#</span>' + '# } #' + '</div>');\n var HERO_CARD_TEMPLATE = kendo.template('<div class=\"#=styles.card# #=styles.cardRich#\">' + '# if (typeof images !== \"undefined\" && images.length > 0) { #' + '<img src=\"#:images[0].url#\" alt=\"#:images[0].alt#\" class=\"#=styles.cardImage#\" />' + '# } #' + '<div class=\"#=styles.cardBody#\">' + '# if (typeof title !== \"undefined\") { #' + '<h5 class=\"#=styles.cardTitle#\">#:title#</h5>' + '# } #' + '# if (typeof subtitle !== \"undefined\") { #' + '<h6 class=\"#=styles.cardSubtitle#\">#:subtitle#</h6>' + '# } #' + '# if (typeof text !== \"undefined\") { #' + '<p>#:text#</p>' + '# } #' + '</div>' + '# if (typeof buttons !== \"undefined\" && buttons.length > 0) { #' + '<div class=\"#=styles.cardActions# #=styles.cardActionsVertical#\">' + '# for (var i = 0; i < buttons.length; i++) { #' + '<span class=\"#=styles.cardAction#\"><span class=\"#=styles.button# #=styles.buttonPrimary#\" data-value=\"#:buttons[i].value#\">#:buttons[i].title#</span></span>' + '# } #' + '</div>' + '# } #' + '</div>');\n extend(kendo.chat, {\n Templates: {},\n Components: {}\n });\n kendo.chat.registerTemplate = function (templateName, template) {\n kendo.chat.Templates[templateName] = kendo.template(template);\n };\n kendo.chat.getTemplate = function (templateName) {\n return kendo.chat.Templates[templateName] || TEXT_MESSAGE_TEMPLATE;\n };\n kendo.chat.registerTemplate('text', TEXT_MESSAGE_TEMPLATE);\n kendo.chat.registerTemplate('message', TEXT_MESSAGE_TEMPLATE);\n kendo.chat.registerTemplate('typing', TYPING_INDICATOR_TEMPLATE);\n kendo.chat.registerTemplate('suggestedAction', SUGGESTED_ACTIONS_TEMPLATE);\n kendo.chat.registerTemplate('heroCard', HERO_CARD_TEMPLATE);\n kendo.chat.registerTemplate('application/vnd.microsoft.card.hero', HERO_CARD_TEMPLATE);\n kendo.chat.registerComponent = function (componentName, component) {\n kendo.chat.Components[componentName] = component;\n };\n kendo.chat.getComponent = function (componentName) {\n return kendo.chat.Components[componentName] || null;\n };\n var Component = kendo.chat.Component = kendo.Class.extend({\n init: function (options, view) {\n this.element = $('<div></div>');\n this.options = options;\n this.view = view;\n },\n destroy: function () {\n kendo.destroy(this.element);\n }\n });\n var Calendar = Component.extend({\n init: function (options, view) {\n Component.fn.init.call(this, options, view);\n this.element.kendoCalendar({\n change: function () {\n view.trigger('suggestedAction', {\n text: kendo.toString(this.value(), 'd'),\n type: 'message'\n });\n }\n });\n },\n destroy: function () {\n }\n });\n kendo.chat.registerComponent('calendar', Calendar);\n var viewStyles = {\n wrapper: 'k-widget k-chat',\n messageList: 'k-avatars',\n messageListContent: 'k-message-list-content',\n messageTime: 'k-message-time',\n messageGroup: 'k-message-group',\n message: 'k-message',\n only: 'k-only',\n first: 'k-first',\n middle: 'k-middle',\n last: 'k-last',\n author: 'k-author',\n avatar: 'k-avatar',\n noAvatar: 'k-no-avatar',\n self: 'k-alt',\n button: 'k-button',\n iconButton: 'k-button-icon',\n buttonPrimary: 'k-flat k-primary',\n scrollButtonIcon: 'k-icon',\n scrollButtonIconLeft: 'k-i-arrow-chevron-left',\n scrollButtonIconRight: 'k-i-arrow-chevron-right',\n typingIndicator: 'k-typing-indicator',\n typingIndicatorBubble: 'k-typing-indicator-bubble',\n bubble: 'k-bubble',\n suggestedActions: 'k-quick-replies',\n suggestedAction: 'k-quick-reply',\n cardWrapper: 'k-card-container',\n cardDeckScrollWrap: 'k-card-deck-scrollwrap',\n cardDeck: 'k-card-deck',\n cardList: 'k-card-list',\n card: 'k-card',\n cardRich: 'k-card-type-rich',\n cardBody: 'k-card-body',\n cardImage: 'k-card-image',\n cardTitle: 'k-card-title',\n cardSubtitle: 'k-card-subtitle',\n cardActions: 'k-card-actions',\n cardActionsVertical: 'k-card-actions-vertical',\n cardAction: 'k-card-action',\n selected: 'k-state-selected'\n };\n var ChatView = kendo.chat.ChatView = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this._list();\n this._lastSender = null;\n this.typingParticipants = [];\n this._attachEvents();\n this._scrollable();\n },\n events: [],\n options: {\n messages: {\n isTyping: ' is typing.',\n areTyping: ' are typing.',\n and: ' and '\n }\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n if (this._scrollDraggable) {\n this._scrollDraggable.destroy();\n }\n this.element.empty();\n this.element.off(NS);\n this.list = null;\n this._lastSender = null;\n },\n _list: function () {\n var viewStyles = ChatView.styles;\n this.element.addClass(viewStyles.messageList).attr('aria-live', 'polite');\n this.list = $('<div>').addClass(viewStyles.messageListContent).appendTo(this.element);\n },\n _attachEvents: function () {\n var styles = ChatView.styles;\n this.element.on('click' + NS, proxy(this._listClick, this)).on('click' + NS, DOT + styles.message, proxy(this._messageClick, this)).on('click' + NS, DOT + styles.suggestedAction, proxy(this._suggestedActionClick, this)).on('click' + NS, DOT + styles.cardAction + SPACE + DOT + styles.button, proxy(this._cardActionClick, this));\n },\n _scrollable: function () {\n var viewStyles = ChatView.styles;\n this.element.on('click' + NS, DOT + viewStyles.cardDeckScrollWrap + SPACE + DOT + viewStyles.button, proxy(this._scrollButtonClick, this));\n },\n _scrollButtonClick: function (e) {\n var viewStyles = ChatView.styles;\n var button = $(e.currentTarget);\n var scrollToLeft = button.find(DOT + viewStyles.scrollButtonIconLeft).length !== 0;\n var scrollContainer = button.siblings(DOT + viewStyles.cardDeck);\n var lastCard = scrollContainer.find(DOT + viewStyles.card).last();\n var cardWidth = lastCard.outerWidth(true);\n if (scrollToLeft) {\n scrollContainer.scrollLeft(scrollContainer.scrollLeft() - cardWidth);\n } else {\n scrollContainer.scrollLeft(scrollContainer.scrollLeft() + cardWidth);\n }\n },\n getTemplate: function (templateName) {\n return kendo.chat.getTemplate(templateName);\n },\n getComponent: function (type) {\n return kendo.chat.getComponent(type);\n },\n renderMessage: function (message, sender) {\n if (!message.timestamp) {\n message.timestamp = new Date();\n }\n if (!message.text) {\n message.text = '';\n }\n var bubbleElement = this._renderTemplate(message.type, message);\n this._renderBubble(message.type, bubbleElement, sender);\n if (message.type == 'typing') {\n if (this.typingParticipants.length > 0) {\n this._removeTypingParticipant(sender);\n }\n } else {\n this._lastSender = sender.id;\n }\n },\n renderSuggestedActions: function (suggestedActions) {\n this._removeSuggestedActions();\n var element = this._renderTemplate('suggestedAction', { suggestedActions: suggestedActions });\n this.list.append(element);\n this._scrollToBottom();\n },\n renderAttachments: function (options) {\n var wrapper = this._renderAttachmentWrapper(options.attachmentLayout);\n var cardContainer = options.attachmentLayout === 'carousel' ? wrapper.find(DOT + ChatView.styles.cardDeck) : wrapper;\n var attachments = options.attachments;\n if (!attachments.length) {\n return;\n }\n for (var i = 0; i < attachments.length; i++) {\n var cardElement = this._renderTemplate(attachments[i].contentType, attachments[i].content);\n cardContainer.append(cardElement);\n }\n this._removeSuggestedActions();\n this._removeTypingIndicator();\n this.list.append(wrapper);\n this._lastSender = null;\n },\n renderComponent: function (type) {\n var componentType = this.getComponent(type);\n var component = new componentType({}, this);\n this.list.append(component.element);\n this._scrollToBottom();\n },\n _renderAttachmentWrapper: function (layout) {\n var viewStyles = ChatView.styles;\n var wrapper = $('<div>');\n if (layout === 'carousel') {\n wrapper.addClass(viewStyles.cardDeckScrollWrap);\n var buttonLeft = this._renderScrollButton(viewStyles.scrollButtonIconLeft);\n wrapper.append(buttonLeft);\n wrapper.append($('<div>').addClass(viewStyles.cardDeck));\n var buttonRight = this._renderScrollButton(viewStyles.scrollButtonIconRight);\n wrapper.append(buttonRight);\n } else {\n wrapper.addClass(viewStyles.cardList);\n }\n return wrapper;\n },\n _renderScrollButton: function (directionClass) {\n var viewStyles = ChatView.styles;\n return $('<button>').addClass(viewStyles.button).addClass(viewStyles.iconButton).append($('<span>').addClass(viewStyles.scrollButtonIcon).addClass(directionClass));\n },\n _removeSuggestedActions: function () {\n this.list.find(DOT + ChatView.styles.suggestedActions).remove();\n },\n _listClick: function (e) {\n var styles = ChatView.styles;\n var targetElement = $(e.target);\n if (targetElement.hasClass(styles.message) || targetElement.parents(DOT + styles.message).length) {\n return;\n }\n this._clearSelection();\n },\n _messageClick: function (e) {\n this._clearSelection();\n $(e.currentTarget).addClass(ChatView.styles.selected);\n },\n _suggestedActionClick: function (e) {\n var text = $(e.target).data('value') || '';\n this.trigger('actionClick', { text: text });\n this._removeSuggestedActions();\n },\n _cardActionClick: function (e) {\n var text = $(e.target).data('value') || '';\n this.trigger('actionClick', { text: text });\n },\n _renderBubble: function (messageType, bubbleElement, sender) {\n this._removeSuggestedActions();\n this._removeTypingIndicator();\n var group = this._getMessageGroup(sender, messageType);\n this._appendToGroup(group, bubbleElement, messageType);\n this._scrollToBottom();\n },\n _renderTemplate: function (type, options) {\n var componentType = this.getComponent(type);\n var element;\n if (componentType) {\n var component = new componentType(options, this);\n element = component.element;\n } else {\n var template = this.getTemplate(type);\n var templateOptions = extend(true, {}, options, { styles: ChatView.styles });\n element = $(template(templateOptions));\n }\n return element;\n },\n _getMessageGroup: function (sender, messageType) {\n var viewStyles = ChatView.styles;\n var template = this._getMessageGroupTemplate(sender, messageType);\n var appendTarget = messageType == 'typing' ? this.element : this.list;\n var group;\n if (sender.id === this._lastSender && this._lastSender !== null && messageType !== 'typing') {\n group = this.list.find(DOT + viewStyles.messageGroup).last();\n if (group.length) {\n return group;\n }\n }\n return $(template({\n text: sender.name,\n url: sender.iconUrl,\n styles: viewStyles\n })).appendTo(appendTarget);\n },\n _getMessageGroupTemplate: function (sender, messageType) {\n var isOwnMessage = sender.id === this.options.user.id;\n var template = isOwnMessage ? SELF_MESSAGE_GROUP_TEMPLATE : MESSAGE_GROUP_TEMPLATE;\n if (messageType == 'typing') {\n template = TYPING_INDICATOR_TEMPLATE;\n }\n return template;\n },\n _appendToGroup: function (group, messageElement, messageType) {\n var viewStyles = ChatView.styles;\n var children = group.find(DOT + viewStyles.message);\n var childrenCount = children.length;\n var indicator = this.element.find(DOT + viewStyles.typingIndicator);\n if (indicator.length && messageType == 'typing') {\n return;\n }\n messageElement.addClass(childrenCount === 0 ? viewStyles.only : viewStyles.last);\n children.filter(DOT + viewStyles.only).removeClass(viewStyles.only).addClass(viewStyles.first);\n children.filter(DOT + viewStyles.last).removeClass(viewStyles.last).addClass(viewStyles.middle);\n group.append(messageElement);\n },\n _renderTypingIndicator: function (sender) {\n var indicator = this.element.find(DOT + viewStyles.typingIndicatorBubble), indicatorList, participants;\n this._addTypingParticipant(sender);\n if (indicator.length) {\n participants = this._composeTypingParticipantsText(this.typingParticipants);\n indicatorList = indicator.find(DOT + viewStyles.author).first();\n indicatorList.text(participants);\n } else {\n $(TYPING_INDICATOR_TEMPLATE({\n text: sender.name + this.options.messages.isTyping,\n styles: viewStyles\n })).appendTo(this.element);\n }\n this._scrollToBottom();\n },\n _addTypingParticipant: function (sender) {\n var found = false;\n for (var i = 0; i < this.typingParticipants.length; i += 1) {\n if (this.typingParticipants[i].id == sender.id) {\n found = true;\n break;\n }\n }\n if (!found) {\n this.typingParticipants.push(sender);\n }\n },\n _removeTypingParticipant: function (sender) {\n var indicator = this.element.find(DOT + viewStyles.typingIndicatorBubble), indicatorList, participants;\n if (indicator.length) {\n for (var i = 0; i < this.typingParticipants.length; i += 1) {\n if (this.typingParticipants[i].id == sender.id) {\n this.typingParticipants.splice(i, 1);\n }\n }\n participants = this._composeTypingParticipantsText(this.typingParticipants);\n if (participants === '') {\n indicator.remove();\n } else {\n indicatorList = indicator.find(DOT + viewStyles.author).first();\n indicatorList.text(participants);\n }\n }\n },\n _composeTypingParticipantsText: function (participants) {\n var messages = this.options.messages, typingAction = participants.length == 1 ? messages.isTyping : messages.areTyping, typingText = '';\n if (participants.length === 0) {\n return typingText;\n }\n typingText = this.typingParticipants.map(function (author) {\n return author.name;\n }).join(', ').replace(/,(?!.*,)/gim, messages.and.trimRight()) + typingAction;\n return typingText;\n },\n _removeTypingIndicator: function () {\n var indicator = this.element.find(DOT + viewStyles.typingIndicatorBubble);\n if (indicator.length) {\n this.typingParticipants = [];\n indicator.remove();\n }\n },\n _clearSelection: function () {\n var selectedClass = ChatView.styles.selected;\n this.element.find(DOT + selectedClass).removeClass(selectedClass);\n },\n _scrollToBottom: function () {\n this.element.scrollTop(this.element.prop('scrollHeight'));\n }\n });\n extend(true, ChatView, { styles: viewStyles });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.chat', [\n 'chat/messageBox',\n 'chat/toolbar',\n 'chat/view'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'chat',\n name: 'Chat',\n category: 'web',\n description: 'The Chat component.',\n depends: [\n 'core',\n 'draganddrop'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo;\n var Widget = kendo.ui.Widget;\n var extend = $.extend;\n var DOT = '.';\n var chatStyles = {\n wrapper: 'k-widget k-chat',\n canvas: 'k-chat-canvas',\n viewWrapper: 'k-message-list',\n messageBoxWrapper: 'k-message-box',\n toolbarBoxWrapper: 'k-toolbar-box'\n };\n var Chat = Widget.extend({\n init: function (element, options, events) {\n Widget.fn.init.call(this, element, options);\n if (events) {\n this._events = events;\n }\n this._user();\n this._wrapper();\n this._view();\n this._messageBox();\n if (options && options.toolbar && options.toolbar.buttons) {\n this._toolbar();\n }\n kendo.notify(this);\n },\n events: [\n 'typingStart',\n 'typingEnd',\n 'post',\n 'sendMessage',\n 'actionClick',\n 'toolClick'\n ],\n options: {\n user: {\n name: 'User',\n iconUrl: ''\n },\n name: 'Chat',\n messages: { placeholder: 'Type a message...' },\n toolbar: false\n },\n setOptions: function (options) {\n this._setEvents(options);\n $.extend(true, this.options, options);\n if (this.toolbar && 'toolbar' in options) {\n this.toolbar.destroy();\n this.toolbar = null;\n }\n if (this.messageBox) {\n this.messageBox.unbind();\n this.messageBox.destroy();\n this.messageBox = null;\n }\n this._messageBox();\n if ('toolbar' in options) {\n this._resetToolbarButtons(options);\n this._toolbar();\n }\n },\n _resetToolbarButtons: function (options) {\n var toolbarBoxWrapper = this.wrapper.find(DOT + chatStyles.toolbarBoxWrapper);\n if (!toolbarBoxWrapper.is(':visible')) {\n toolbarBoxWrapper.show();\n }\n if ('buttons' in options.toolbar) {\n this.options.toolbar.buttons = options.toolbar.buttons;\n }\n },\n destroy: function () {\n if (this.view) {\n this.view.unbind();\n this.view.destroy();\n this.view = null;\n }\n if (this.messageBox) {\n this.messageBox.unbind();\n this.messageBox.destroy();\n this.messageBox = null;\n }\n if (this.toolbar) {\n this.toolbar.destroy();\n this.toolbar = null;\n }\n Widget.fn.destroy.call(this);\n },\n _user: function () {\n this.options.user.id = kendo.guid();\n },\n getUser: function () {\n return extend(true, {}, this.options.user);\n },\n _wrapper: function () {\n var chatStyles = Chat.styles;\n var options = this.options;\n var height = options.height;\n var width = options.width;\n var uiElements = '<div class=\\'' + chatStyles.viewWrapper + '\\'></div>' + '<div class=\\'' + chatStyles.messageBoxWrapper + '\\'></div>' + '<div class=\\'' + chatStyles.toolbarBoxWrapper + '\\' role=\\'toolbar\\' style=\\'display:none;\\'></div>';\n this.wrapper = this.element.addClass(chatStyles.wrapper).append(uiElements);\n if (options.toolbar && options.toolbar.buttons && options.toolbar.buttons.length) {\n this.wrapper.find(DOT + chatStyles.toolbarBoxWrapper).show();\n }\n if (height) {\n this.wrapper.height(height);\n }\n if (width) {\n this.wrapper.css('max-width', width);\n }\n },\n _view: function () {\n var that = this;\n var chatStyles = Chat.styles;\n var options = extend(true, {}, this.options);\n var element = this.wrapper.find(DOT + chatStyles.viewWrapper + '');\n this.view = new kendo.chat.ChatView(element, options);\n this.view.bind('actionClick', function (args) {\n that.trigger('actionClick', args);\n that.postMessage(args.text);\n });\n },\n _messageBox: function () {\n var that = this;\n var chatStyles = Chat.styles;\n var options = extend(true, {}, this.options);\n var element = this.wrapper.find(DOT + chatStyles.messageBoxWrapper + '');\n this.messageBox = new kendo.chat.ChatMessageBox(element, options);\n this.messageBox.bind('typingStart', function (args) {\n that.trigger('typingStart', args);\n }).bind('typingEnd', function (args) {\n that.trigger('typingEnd', args);\n }).bind('sendMessage', function (args) {\n that.trigger('sendMessage', args);\n that.postMessage(args.text);\n }).bind('toggleToolbar', function () {\n that.toggleToolbar();\n });\n },\n _toolbar: function () {\n var that = this;\n var chatStyles = Chat.styles;\n var options = extend(true, {}, that.options);\n var element = that.wrapper.find(DOT + chatStyles.toolbarBoxWrapper + '');\n if (options.toolbar.scrollable === undefined) {\n this.options.toolbar.scrollable = options.toolbar.scrollable = true;\n }\n if (options.toolbar.toggleable === undefined) {\n this.options.toolbar.toggleable = options.toolbar.toggleable = false;\n }\n that.toolbar = new kendo.chat.ChatToolBar(element, options);\n that.toolbar.bind('click', function (ev) {\n that.trigger('toolClick', {\n sender: that,\n name: ev.name,\n button: ev.button,\n messageBox: that.messageBox.input[0],\n originalEvent: ev.originalEvent\n });\n });\n },\n postMessage: function (message) {\n var postArgs = extend(true, {}, {\n text: message,\n type: 'message',\n timestamp: new Date(),\n from: this.getUser()\n });\n this.trigger('post', postArgs);\n this.renderMessage(postArgs, postArgs.from);\n },\n renderMessage: function (message, sender) {\n this.view.renderMessage(message, sender);\n },\n renderSuggestedActions: function (suggestedActions) {\n this.view.renderSuggestedActions(suggestedActions);\n },\n renderAttachments: function (options, sender) {\n this.view.renderAttachments(options, sender);\n },\n toggleToolbar: function (skipAnimation) {\n this.toolbar.toggle(skipAnimation);\n },\n renderUserTypingIndicator: function (sender) {\n this.view._renderTypingIndicator(sender);\n },\n clearUserTypingIndicator: function (sender) {\n this.view._removeTypingParticipant(sender);\n },\n removeTypingIndicator: function () {\n this.view._removeTypingIndicator();\n }\n });\n kendo.ui.plugin(Chat);\n extend(true, Chat, { styles: chatStyles });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.button', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'button',\n name: 'Button',\n category: 'web',\n description: 'The Button widget displays styled buttons.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, proxy = $.proxy, keys = kendo.keys, CLICK = 'click', MOUSEDOWN = kendo.support.mousedown, MOUSEUP = kendo.support.mouseup, KBUTTON = 'k-button', KBUTTONICON = 'k-button-icon', KBUTTONICONTEXT = 'k-button-icontext', NS = '.kendoButton', DISABLED = 'disabled', DISABLEDSTATE = 'k-state-disabled', FOCUSEDSTATE = 'k-state-focused', SELECTEDSTATE = 'k-state-active';\n var Button = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n options = that.options;\n element.addClass(KBUTTON).attr('role', 'button');\n options.enable = options.enable && !element.attr(DISABLED);\n that.enable(options.enable);\n if (options.enable) {\n that._tabindex();\n }\n that.iconElement();\n element.on(CLICK + NS, proxy(that._click, that)).on('focus' + NS, proxy(that._focus, that)).on('blur' + NS, proxy(that._blur, that)).on('keydown' + NS, proxy(that._keydown, that)).on('keyup' + NS, proxy(that._removeActive, that)).on(MOUSEDOWN + NS, proxy(that._addActive, that)).on(MOUSEUP + NS, proxy(that._removeActive, that));\n kendo.notify(that);\n },\n destroy: function () {\n var that = this;\n that.wrapper.off(NS);\n Widget.fn.destroy.call(that);\n },\n events: [CLICK],\n options: {\n name: 'Button',\n icon: '',\n iconClass: '',\n spriteCssClass: '',\n imageUrl: '',\n enable: true\n },\n _isNativeButton: function () {\n return this.element.prop('tagName').toLowerCase() == 'button';\n },\n _click: function (e) {\n if (this.options.enable) {\n if (this.trigger(CLICK, { event: e })) {\n e.preventDefault();\n }\n }\n },\n _focus: function () {\n if (this.options.enable) {\n this.element.addClass(FOCUSEDSTATE);\n }\n },\n _blur: function () {\n var that = this;\n that.element.removeClass(FOCUSEDSTATE);\n setTimeout(function () {\n that.element.removeClass(SELECTEDSTATE);\n });\n },\n _keydown: function (e) {\n var that = this;\n if (e.keyCode == keys.ENTER || e.keyCode == keys.SPACEBAR) {\n that._addActive();\n if (!that._isNativeButton()) {\n if (e.keyCode == keys.SPACEBAR) {\n e.preventDefault();\n }\n that._click(e);\n }\n }\n },\n _removeActive: function () {\n this.element.removeClass(SELECTEDSTATE);\n },\n _addActive: function () {\n if (this.options.enable) {\n this.element.addClass(SELECTEDSTATE);\n }\n },\n iconElement: function () {\n var that = this, element = that.element, options = that.options, icon = options.icon, iconClass = options.iconClass, spriteCssClass = options.spriteCssClass, imageUrl = options.imageUrl, span, img, isEmpty;\n if (spriteCssClass || imageUrl || icon || iconClass) {\n isEmpty = true;\n element.contents().filter(function () {\n return !$(this).hasClass('k-sprite') && !$(this).hasClass('k-icon') && !$(this).hasClass('k-image');\n }).each(function (idx, el) {\n if (el.nodeType == 1 || el.nodeType == 3 && $.trim(el.nodeValue).length > 0) {\n isEmpty = false;\n }\n });\n if (isEmpty) {\n element.addClass(KBUTTONICON);\n } else {\n element.addClass(KBUTTONICONTEXT);\n }\n }\n if (imageUrl) {\n img = element.children('img.k-image').first();\n if (!img[0]) {\n img = $('<img alt=\"icon\" class=\"k-image\" />').prependTo(element);\n }\n img.attr('src', imageUrl);\n } else if (icon || iconClass) {\n span = element.children('span.k-icon').first();\n if (!span[0]) {\n span = $('<span></span>').prependTo(element);\n }\n span.attr('class', icon ? 'k-icon k-i-' + icon : iconClass);\n } else if (spriteCssClass) {\n span = element.children('span.k-sprite').first();\n if (!span[0]) {\n span = $('<span class=\"k-sprite\"></span>').prependTo(element);\n }\n span.addClass(spriteCssClass);\n }\n },\n enable: function (enable) {\n var that = this, element = that.element;\n if (enable === undefined) {\n enable = true;\n }\n enable = !!enable;\n that.options.enable = enable;\n element.toggleClass(DISABLEDSTATE, !enable).attr('aria-disabled', !enable).attr(DISABLED, !enable);\n if (enable) {\n that._tabindex();\n }\n try {\n element.blur();\n } catch (err) {\n }\n }\n });\n kendo.ui.plugin(Button);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.buttongroup', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'buttongroup',\n name: 'ButtonGroup',\n category: 'web',\n description: 'The Kendo ButtonGroup widget is a linear set of grouped buttons.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo;\n var ui = kendo.ui;\n var Widget = ui.Widget;\n var keys = kendo.keys;\n var proxy = $.proxy;\n var template = kendo.template;\n var NS = '.kendoButtonGroup';\n var KWIDGET = 'k-widget';\n var KBUTTONGROUP = 'k-button-group';\n var KBUTTON = 'k-button';\n var KBUTTONICONTEXT = 'k-button-icontext';\n var KBUTTONICON = 'k-button-icon';\n var ACTIVE = 'k-state-active';\n var FOCUSED = 'k-state-focused';\n var DISABLED = 'k-state-disabled';\n var SELECT = 'select';\n var CLICK = 'click';\n var KEYDOWN = 'keydown';\n var FOCUS = 'focus';\n var BLUR = 'blur';\n var MOUSEDOWN = 'mousedown';\n var templates = {\n item: template('<span ' + '#= item.enabled === false ? \"disabled\" : \"\" # ' + '# if (item.badge) { #' + kendo.attr('badge') + '=\"#=item.badge#\"' + '# } #' + '>' + '#= icon(iconClass) #' + '#= image(item) #' + '#= text #' + '</span>'),\n image: template('<img alt=\"icon\" src=\"#=data.imageUrl#\" />'),\n icon: template('<span class=\"#=data#\" />'),\n empty: template('')\n };\n function createBadge(value, item) {\n if (value === undefined) {\n return;\n }\n $('<span class=\"k-badge\">' + kendo.htmlEncode(value) + '</span>').appendTo(item);\n }\n var ButtonGroup = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that.wrapper = that.element;\n if (that.options.items) {\n that._renderItems(that.options.items);\n }\n that.selectedIndices = [];\n that.element.addClass(KWIDGET + ' ' + KBUTTONGROUP).attr('role', 'group').attr('tabindex', that.element.attr('tabindex') || '0').children().each(function () {\n var item = $(this);\n that._updateClasses.bind(that)(item);\n });\n that._enable = true;\n if (!that.options.enable) {\n that._enable = false;\n that.element.attr('aria-disabled', true).addClass(DISABLED);\n }\n that.select(that.options.index);\n that.element.on(CLICK + NS, '.' + KBUTTON, proxy(that._click, that)).on(FOCUS + NS, proxy(that._focus, that)).on(KEYDOWN + NS, proxy(that._keyDown, that)).on(BLUR + NS, function () {\n that.preventFocus = false;\n that.element.find('.' + KBUTTON).removeClass(FOCUSED);\n }).on(MOUSEDOWN + NS, function () {\n that.preventFocus = true;\n });\n },\n events: [SELECT],\n options: {\n name: 'ButtonGroup',\n selection: 'single',\n index: -1,\n enable: true\n },\n current: function () {\n return this.element.find('.' + ACTIVE);\n },\n _renderItems: function (items) {\n var that = this;\n items.forEach(function (item) {\n var renderedItem = $(templates.item({\n image: item.imageUrl ? templates.image : templates.empty,\n icon: !item.imageUrl && (item.iconClass || item.icon) ? templates.icon : templates.empty,\n iconClass: item.iconClass || 'k-icon k-i-' + item.icon,\n item: item,\n text: item.text ? item.encoded === false ? item.text : kendo.htmlEncode(item.text) : ''\n }));\n if (item.attributes) {\n renderedItem.attr(item.attributes);\n }\n if (item.selected) {\n renderedItem.addClass(ACTIVE);\n }\n if (item.iconClass || item.icon || item.imageUrl) {\n renderedItem.addClass(item.text ? 'k-button-icontext' : 'k-button-icon');\n }\n renderedItem.appendTo(that.element);\n });\n },\n _focus: function () {\n var element = $(this.element);\n if (this.preventFocus) {\n return;\n }\n if (element.find('.' + ACTIVE).length) {\n element.find('.' + ACTIVE).first().focus().addClass(FOCUSED);\n } else {\n element.children().first().focus().addClass(FOCUSED);\n }\n },\n _keyDown: function (e) {\n var that = this;\n var buttonGroup = $(that.element);\n var focusableItems = buttonGroup.find('.' + KBUTTON);\n var focusedElement = buttonGroup.find('.' + FOCUSED);\n var currentIndex = focusableItems.index(focusedElement);\n var isRtl = kendo.support.isRtl(that.element);\n var itemToFocus;\n if (e.keyCode === keys.LEFT && !isRtl || e.keyCode === keys.RIGHT && isRtl) {\n focusedElement.removeClass(FOCUSED);\n itemToFocus = currentIndex === 0 ? focusableItems.eq(focusableItems.length - 1) : $(focusableItems[currentIndex - 1]);\n itemToFocus.focus().addClass(FOCUSED);\n e.preventDefault();\n } else if (e.keyCode === keys.LEFT && isRtl || e.keyCode === keys.RIGHT && !isRtl) {\n focusedElement.removeClass(FOCUSED);\n itemToFocus = currentIndex + 1 === focusableItems.length ? focusableItems.eq(0) : $(focusableItems[currentIndex + 1]);\n itemToFocus.focus().addClass(FOCUSED);\n e.preventDefault();\n } else if (e.keyCode === keys.ENTER || e.keyCode === keys.SPACEBAR) {\n that._select(focusedElement);\n e.preventDefault();\n }\n },\n select: function (button) {\n var that = this, ariaPressed, index = -1;\n if (button === undefined || button === -1) {\n return;\n }\n that.element.find('.' + KBUTTON).removeClass(FOCUSED);\n if (typeof button === 'number') {\n index = button;\n button = that.element.children().eq(button);\n } else if (button.nodeType) {\n button = $(button);\n index = button.index();\n }\n if (that.options.selection === 'multiple') {\n ariaPressed = button.attr('aria-pressed') === 'true';\n button.attr('aria-pressed', !ariaPressed).toggleClass(ACTIVE);\n if (that.selectedIndices.indexOf(index) === -1) {\n that.selectedIndices.push(index);\n } else {\n that.selectedIndices.splice(that.selectedIndices.indexOf(index), 1);\n }\n } else {\n that.selectedIndices = [];\n that.current().attr('aria-pressed', false).removeClass(ACTIVE);\n button.attr('aria-pressed', true).addClass(ACTIVE);\n that.selectedIndices.push(index);\n }\n that.trigger(SELECT, { indices: that.selectedIndices });\n },\n badge: function (item, value) {\n var buttongroup = this.element;\n var button = !isNaN(item) ? buttongroup.children().eq(item) : buttongroup.find(item);\n var validValue = value || value === 0;\n var badge;\n if (!button.length) {\n return;\n }\n badge = button.children('.k-badge').eq(0);\n if (!badge.length && validValue) {\n createBadge(kendo.htmlEncode(value), button);\n return kendo.htmlEncode(value);\n }\n if (validValue) {\n badge.html(kendo.htmlEncode(value));\n } else if (value === false) {\n badge.empty().remove();\n return;\n }\n return badge.html();\n },\n enable: function (enable) {\n if (typeof enable == 'undefined') {\n enable = true;\n }\n this.element.attr('aria-disabled', !enable).toggleClass(DISABLED, !enable);\n this._enable = this.options.enable = enable;\n },\n destroy: function () {\n var that = this;\n that.element.off(NS);\n Widget.fn.destroy.call(that);\n },\n _updateClasses: function (button) {\n var icon = kendo.attrValue(button, 'icon');\n var badge = kendo.attrValue(button, 'badge');\n var image = button.find('img').addClass('k-image');\n var isEmpty = true;\n button.attr('aria-pressed', false).attr('role', 'button').addClass(KBUTTON);\n if (button.is('[disabled]') || button.hasClass(DISABLED)) {\n button.addClass(DISABLED).attr('aria-disabled', true).removeAttr('disabled');\n }\n if (button.is('.' + ACTIVE)) {\n button.removeClass(ACTIVE);\n if (!button.hasClass(DISABLED) && this.options.selection === 'single' || this.options.selection === 'multiple') {\n this.select(button[0]);\n }\n }\n if (!image[0] && icon) {\n button.prepend($(templates.icon('k-icon k-i-' + icon)));\n }\n button.contents().filter(function () {\n return !$(this).hasClass('k-icon') && !$(this).hasClass('k-image');\n }).each(function () {\n if (this.nodeType == 1 || this.nodeType == 3 && $.trim(this.nodeValue).length > 0) {\n isEmpty = false;\n }\n });\n if (image[0] || icon) {\n button.addClass(isEmpty ? KBUTTONICON : KBUTTONICONTEXT);\n }\n if (badge || badge === 0) {\n createBadge(badge, button);\n }\n },\n _click: function (e) {\n var target = $(e.target).closest('.' + KBUTTON);\n if (e.isDefaultPrevented()) {\n return;\n }\n this._select(target);\n },\n _select: function (target) {\n var button = target;\n this.element.find('.' + KBUTTON).removeClass(FOCUSED);\n if (!this._enable || button.is('.' + DISABLED)) {\n button.addClass(FOCUSED);\n return;\n }\n this.select(target[0]);\n button.addClass(FOCUSED);\n }\n });\n ui.plugin(ButtonGroup);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.switch', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'switch',\n name: 'Switch',\n category: 'web',\n description: 'The Switch widget is used to display two exclusive choices.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, NS = '.kendoSwitch', Widget = ui.Widget, support = kendo.support, CHANGE = 'change', switchStyles = {\n widget: 'k-switch k-widget',\n container: 'k-switch-container',\n handle: 'k-switch-handle',\n checked: 'k-switch-on',\n checkedLabel: 'k-switch-label-on',\n unchecked: 'k-switch-off',\n uncheckedLabel: 'k-switch-label-off',\n disabled: 'k-state-disabled',\n readonly: 'k-state-readonly',\n active: 'k-state-active'\n }, DISABLED = 'disabled', ARIA_DISABLED = 'aria-disabled', READONLY = 'readonly', ARIA_READONLY = 'aria-readonly', ARIA_CHECKED = 'aria-checked', CHECKED = 'checked', CLICK = support.click + NS, TOUCHEND = support.pointers ? 'pointerup' : 'touchend', KEYDOWN = 'keydown' + NS, LABELIDPART = '_label', proxy = $.proxy;\n var SWITCH_TEMPLATE = kendo.template('<span class=\"#=styles.widget#\" role=\"switch\"></span>');\n var SWITCH_CONTAINER_TEMPLATE = kendo.template('<span class=\\'#=styles.container#\\'>' + '<span class=\\'#=styles.checkedLabel#\\'>#=checked#</span>' + '<span class=\\'#=styles.uncheckedLabel#\\'>#=unchecked#</span>' + '<span class=\\'#=styles.handle#\\'></span>' + '</span>');\n var Switch = Widget.extend({\n init: function (element, options) {\n var that = this, wrapper;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element[0];\n element.type = 'checkbox';\n wrapper = $(SWITCH_TEMPLATE({ styles: switchStyles }));\n that.wrapper = that.element.wrap(wrapper).parent();\n that.wrapper.append($(SWITCH_CONTAINER_TEMPLATE({\n styles: switchStyles,\n checked: options.messages.checked,\n unchecked: options.messages.unchecked\n }))).addClass(element.className);\n that.wrapper.on(CLICK, proxy(that._click, that)).on(TOUCHEND, proxy(that._touchEnd, that)).on(KEYDOWN, proxy(that._keydown, that));\n if (that.options.enabled) {\n that._tabindex();\n }\n that._initSettings();\n that._aria();\n kendo.notify(that, kendo.ui);\n },\n setOptions: function (options) {\n var that = this, messages = options.messages, checkedLabel, uncheckedLabel;\n that.options = $.extend(that.options, options);\n if (messages && messages.checked !== undefined) {\n checkedLabel = that.wrapper.find('.' + switchStyles.checkedLabel);\n checkedLabel.text(messages.checked);\n }\n if (messages && messages.unchecked !== undefined) {\n uncheckedLabel = that.wrapper.find('.' + switchStyles.uncheckedLabel);\n uncheckedLabel.text(messages.unchecked);\n }\n if (options.width) {\n that.wrapper.css({ width: options.width });\n }\n if (options.enabled !== undefined) {\n that.enable(options.enabled);\n }\n if (options.readonly !== undefined) {\n that.readonly(options.readonly);\n }\n that.check(options.checked);\n },\n _initSettings: function () {\n var that = this, element = that.element[0], options = that.options;\n if (options.width) {\n that.wrapper.css({ width: options.width });\n }\n if (options.checked === null) {\n options.checked = element.checked;\n }\n that.check(options.checked);\n options.enabled = options.enabled && !that.element.attr(DISABLED);\n that.enable(options.enabled);\n options.readonly = options.readonly || !!that.element.attr(READONLY);\n that.readonly(options.readonly);\n },\n _aria: function () {\n var that = this, element = that.element, wrapper = that.wrapper, id = element.attr('id'), labelFor = $('label[for=\"' + id + '\"]'), ariaLabel = element.attr('aria-label'), ariaLabelledBy = element.attr('aria-labelledby');\n if (ariaLabel) {\n wrapper.attr('aria-label', ariaLabel);\n } else if (ariaLabelledBy) {\n wrapper.attr('aria-labelledby', ariaLabelledBy);\n } else if (labelFor.length) {\n var labelId = labelFor.attr('id');\n if (!labelId) {\n labelId = (id || kendo.guid()) + LABELIDPART;\n labelFor.attr('id', labelId);\n }\n wrapper.attr('aria-labelledby', labelId);\n }\n },\n events: [CHANGE],\n options: {\n name: 'Switch',\n messages: {\n checked: 'On',\n unchecked: 'Off'\n },\n width: null,\n checked: null,\n enabled: true,\n readonly: false\n },\n check: function (checked) {\n var that = this, element = that.element[0];\n if (checked === undefined) {\n return element.checked;\n }\n if (element.checked !== checked) {\n that.options.checked = element.checked = checked;\n }\n that.wrapper.attr(ARIA_CHECKED, checked).toggleClass(switchStyles.checked, checked).toggleClass(switchStyles.unchecked, !checked);\n if (checked) {\n that.element.attr(CHECKED, CHECKED);\n } else {\n that.element.removeAttr(CHECKED);\n }\n },\n value: function (value) {\n if (typeof value === 'string') {\n value = value === 'true';\n }\n return this.check.apply(this, [value]);\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.wrapper.off(NS);\n },\n toggle: function () {\n var that = this;\n that.check(!that.element[0].checked);\n },\n enable: function (enable) {\n var element = this.element, wrapper = this.wrapper;\n if (typeof enable == 'undefined') {\n enable = true;\n }\n this.options.enabled = enable;\n if (enable) {\n element.removeAttr(DISABLED);\n wrapper.removeAttr(ARIA_DISABLED);\n } else {\n element.attr(DISABLED, DISABLED);\n wrapper.attr(ARIA_DISABLED, true);\n }\n wrapper.toggleClass(switchStyles.disabled, !enable);\n },\n readonly: function (readonly) {\n var that = this, element = that.element, wrapper = that.wrapper;\n if (typeof readonly == 'undefined') {\n readonly = true;\n }\n that.options.readonly = readonly;\n if (readonly) {\n element.attr(READONLY, true);\n wrapper.attr(ARIA_READONLY, true);\n } else {\n element.removeAttr(READONLY);\n wrapper.removeAttr(ARIA_READONLY);\n }\n wrapper.toggleClass(switchStyles.readonly, readonly);\n },\n _check: function () {\n var that = this, checked = that.element[0].checked = !that.element[0].checked;\n that.wrapper.focus();\n if (!that.options.enabled || that.options.readonly || that.trigger(CHANGE, { checked: checked })) {\n that.element[0].checked = !checked;\n return;\n }\n that.check(checked);\n },\n _keydown: function (e) {\n if (e.keyCode === kendo.keys.SPACEBAR) {\n this._check();\n e.preventDefault();\n }\n },\n _isTouch: function (event) {\n return /touch/.test(event.type) || event.originalEvent && /touch/.test(event.originalEvent.pointerType);\n },\n _click: function (e) {\n if (!this._isTouch(e) && e.which === 1) {\n this._check();\n }\n },\n _touchEnd: function (e) {\n if (this._isTouch(e)) {\n this._check();\n e.preventDefault();\n }\n }\n });\n ui.plugin(Switch);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.pager', ['kendo.data'], f);\n}(function () {\n var __meta__ = {\n id: 'pager',\n name: 'Pager',\n category: 'framework',\n depends: ['data'],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, proxy = $.proxy, FIRST = '.k-i-arrow-end-left', LAST = '.k-i-arrow-end-right', PREV = '.k-i-arrow-60-left', NEXT = '.k-i-arrow-60-right', SIZE = 'k-pager-lg k-pager-md k-pager-sm', CHANGE = 'change', NS = '.kendoPager', CLICK = 'click', KEYDOWN = 'keydown', DISABLED = 'disabled', MOUSEDOWN = 'down', DOCUMENT_ELEMENT = $(document.documentElement), MAX_VALUE = Number.MAX_VALUE, iconTemplate = kendo.template('<a href=\"\\\\#\" aria-label=\"#=text#\" title=\"#=text#\" class=\"k-link k-pager-nav #= wrapClassName #\"><span class=\"k-icon #= className #\"></span></a>');\n function button(template, idx, text, numeric, title) {\n return template({\n idx: idx,\n text: text,\n ns: kendo.ns,\n numeric: numeric,\n title: title || ''\n });\n }\n function icon(className, text, wrapClassName) {\n return iconTemplate({\n className: className.substring(1),\n text: text,\n wrapClassName: wrapClassName || ''\n });\n }\n function update(element, selector, page, disabled) {\n element.find(selector).parent().attr(kendo.attr('page'), page).attr('tabindex', -1).toggleClass('k-state-disabled', disabled);\n }\n function first(element, page) {\n update(element, FIRST, 1, page <= 1);\n }\n function prev(element, page) {\n update(element, PREV, Math.max(1, page - 1), page <= 1);\n }\n function next(element, page, totalPages) {\n update(element, NEXT, Math.min(totalPages, page + 1), page >= totalPages);\n }\n function last(element, page, totalPages) {\n update(element, LAST, totalPages, page >= totalPages);\n }\n var Pager = Widget.extend({\n init: function (element, options) {\n var that = this, page, totalPages;\n var sizeClassName = null;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n that._createDataSource(options);\n that.linkTemplate = kendo.template(that.options.linkTemplate);\n that.selectTemplate = kendo.template(that.options.selectTemplate);\n that.currentPageTemplate = kendo.template(that.options.currentPageTemplate);\n page = that.page();\n totalPages = that.totalPages();\n that._refreshHandler = proxy(that.refresh, that);\n that.dataSource.bind(CHANGE, that._refreshHandler);\n that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n if (options.previousNext) {\n if (!that.element.find(FIRST).length) {\n that.element.append(icon(FIRST, options.messages.first, 'k-pager-first'));\n first(that.element, page, totalPages);\n }\n if (!that.element.find(PREV).length) {\n that.element.append(icon(PREV, options.messages.previous));\n prev(that.element, page, totalPages);\n }\n }\n if (options.numeric) {\n that.list = that.element.find('.k-pager-numbers');\n if (!that.list.length) {\n that.list = $('<ul class=\"k-pager-numbers k-reset\" />').appendTo(that.element);\n }\n if (options.dataSource && !options.dataSource.total()) {\n that.list.empty().append(that.currentPageTemplate({ text: 0 })).append(that.selectTemplate({ text: 0 }));\n }\n that.list.wrap('<div class=\"k-pager-numbers-wrap\"></div>');\n }\n if (options.input) {\n if (!that.element.find('.k-pager-input').length) {\n that.element.append('<span class=\"k-pager-input k-label\">' + options.messages.page + '<input class=\"k-textbox\">' + kendo.format(options.messages.of, totalPages) + '</span>');\n }\n that.element.on(KEYDOWN + NS, '.k-pager-input input', proxy(that._keydown, that));\n }\n if (options.previousNext) {\n if (!that.element.find(NEXT).length) {\n that.element.append(icon(NEXT, options.messages.next));\n next(that.element, page, totalPages);\n }\n if (!that.element.find(LAST).length) {\n that.element.append(icon(LAST, options.messages.last, 'k-pager-last'));\n last(that.element, page, totalPages);\n }\n }\n if (options.pageSizes) {\n if (!that.element.find('.k-pager-sizes').length) {\n var pageSizes = options.pageSizes.length ? options.pageSizes : [\n 'all',\n 5,\n 10,\n 20\n ];\n var pageItems = $.map(pageSizes, function (size) {\n if (size.toLowerCase && size.toLowerCase() === 'all') {\n return '<option value=\\'all\\'>' + options.messages.allPages + '</option>';\n }\n return '<option>' + size + '</option>';\n });\n $('<span class=\"k-pager-sizes k-label\"><select/>' + options.messages.itemsPerPage + '</span>').appendTo(that.element).find('select').html(pageItems.join('')).end().appendTo(that.element);\n }\n that.element.find('.k-pager-sizes select').val(that.pageSize());\n if (kendo.ui.DropDownList) {\n that.element.find('.k-pager-sizes select').show().kendoDropDownList();\n }\n that.element.on(CHANGE + NS, '.k-pager-sizes select', proxy(that._change, that));\n }\n if (options.refresh) {\n if (!that.element.find('.k-pager-refresh').length) {\n that.element.append('<a href=\"#\" class=\"k-pager-refresh k-link\" title=\"' + options.messages.refresh + '\" aria-label=\"' + options.messages.refresh + '\"><span class=\"k-icon k-i-reload\"></span></a>');\n }\n that.element.on(CLICK + NS, '.k-pager-refresh', proxy(that._refreshClick, that));\n }\n if (options.info) {\n if (!that.element.find('.k-pager-info').length) {\n that.element.append('<span class=\"k-pager-info k-label\" />');\n }\n }\n that.element.on(CLICK + NS, 'a', proxy(that._click, that)).addClass('k-pager-wrap k-widget k-floatwrap');\n that.element.on(CLICK + NS, '.k-current-page', proxy(that._toggleActive, that));\n if (options.autoBind) {\n that.refresh();\n }\n that._resizeHandler = proxy(that.resize, that, true);\n $(window).on('resize' + NS, that._resizeHandler);\n sizeClassName = that._getWidthSizeClass(that.element.width());\n if (sizeClassName) {\n that.element.addClass(sizeClassName);\n }\n kendo.notify(that);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.element.off(NS);\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n that._refreshHandler = null;\n $(window).off('resize' + NS, this._resizeHandler);\n kendo.destroy(that.element);\n that.element = that.list = null;\n },\n events: [CHANGE],\n options: {\n name: 'Pager',\n selectTemplate: '<li><span class=\"k-state-selected\">#=text#</span></li>',\n currentPageTemplate: '<li class=\"k-current-page\"><span class=\"k-link k-pager-nav\">#=text#</span></li>',\n linkTemplate: '<li><a tabindex=\"-1\" href=\"\\\\#\" class=\"k-link\" data-#=ns#page=\"#=idx#\" #if (title !== \"\") {# title=\"#=title#\" #}#>#=text#</a></li>',\n buttonCount: 10,\n autoBind: true,\n numeric: true,\n info: true,\n input: false,\n previousNext: true,\n pageSizes: false,\n refresh: false,\n responsive: true,\n messages: {\n allPages: 'All',\n display: '{0} - {1} of {2} items',\n empty: 'No items to display',\n page: 'Page',\n of: 'of {0}',\n itemsPerPage: 'items per page',\n first: 'Go to the first page',\n previous: 'Go to the previous page',\n next: 'Go to the next page',\n last: 'Go to the last page',\n refresh: 'Refresh',\n morePages: 'More pages'\n }\n },\n setDataSource: function (dataSource) {\n var that = this;\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n that.dataSource = that.options.dataSource = dataSource;\n dataSource.bind(CHANGE, that._refreshHandler);\n if (that.options.autoBind) {\n dataSource.fetch();\n }\n },\n _resize: function (size) {\n if (size.width) {\n var sizeClassName = this._getWidthSizeClass(size.width);\n var el = this.element;\n if (!sizeClassName) {\n el.removeClass(SIZE);\n } else if (!el.hasClass(sizeClassName)) {\n el.removeClass(SIZE);\n el.addClass(sizeClassName);\n }\n }\n },\n _createDataSource: function (options) {\n this.dataSource = kendo.data.DataSource.create(options.dataSource);\n },\n refresh: function (e) {\n var that = this, idx, end, start = 1, reminder, page = that.page(), html = '', options = that.options, pageSize = that.pageSize(), collapsedTotal = that._collapsedTotal(), total = that.dataSource.total(), totalPages = that.totalPages(), linkTemplate = that.linkTemplate, buttonCount = options.buttonCount;\n DOCUMENT_ELEMENT.unbind(that.downEvent, $.proxy(that._hideList, that));\n if (e && e.action == 'itemchange') {\n return;\n }\n if (options.numeric) {\n if (page > buttonCount) {\n reminder = page % buttonCount;\n start = reminder === 0 ? page - buttonCount + 1 : page - reminder + 1;\n }\n end = Math.min(start + buttonCount - 1, totalPages);\n if (start > 1) {\n html += button(linkTemplate, start - 1, '...', false, options.messages.morePages);\n }\n for (idx = start; idx <= end; idx++) {\n html += button(idx == page ? that.selectTemplate : linkTemplate, idx, idx, true);\n }\n if (end < totalPages) {\n html += button(linkTemplate, idx, '...', false, options.messages.morePages);\n }\n if (html === '') {\n html = that.selectTemplate({ text: 0 });\n }\n html = this.currentPageTemplate({ text: page }) + html;\n that.list.removeClass('k-state-expanded').html(html);\n }\n if (options.info) {\n if (total > 0) {\n html = kendo.format(options.messages.display, that.dataSource.options.endless ? 1 : Math.min((page - 1) * (that.dataSource.pageSize() || 0) + 1, collapsedTotal), Math.min(page * pageSize, collapsedTotal), total);\n } else {\n html = options.messages.empty;\n }\n that.element.find('.k-pager-info').html(html);\n }\n if (options.input) {\n that.element.find('.k-pager-input').html(that.options.messages.page + '<input class=\"k-textbox\" aria-label=\"' + page + '\">' + kendo.format(options.messages.of, totalPages)).find('input').val(page).attr(DISABLED, total < 1).toggleClass('k-state-disabled', total < 1);\n }\n if (options.previousNext) {\n first(that.element, page, totalPages);\n prev(that.element, page, totalPages);\n next(that.element, page, totalPages);\n last(that.element, page, totalPages);\n }\n if (options.pageSizes) {\n var hasAll = that.element.find('.k-pager-sizes option[value=\\'all\\']').length > 0;\n var selectAll = hasAll && (pageSize === this.dataSource.total() || pageSize == MAX_VALUE);\n var text = pageSize;\n if (selectAll) {\n pageSize = 'all';\n text = options.messages.allPages;\n }\n that.element.find('.k-pager-sizes select').val(pageSize).attr('aria-label', pageSize).filter('[' + kendo.attr('role') + '=dropdownlist]').kendoDropDownList('value', pageSize).kendoDropDownList('text', text);\n }\n },\n _collapsedTotal: function () {\n return this.dataSource.total();\n },\n _keydown: function (e) {\n if (e.keyCode === kendo.keys.ENTER) {\n var input = this.element.find('.k-pager-input').find('input'), page = parseInt(input.val(), 10);\n if (isNaN(page) || page < 1 || page > this.totalPages()) {\n page = this.page();\n }\n input.val(page);\n this.page(page);\n }\n },\n _refreshClick: function (e) {\n e.preventDefault();\n this.dataSource.read();\n },\n _change: function (e) {\n var value = e.currentTarget.value;\n var pageSize = parseInt(value, 10);\n var dataSource = this.dataSource;\n if (!isNaN(pageSize)) {\n dataSource.pageSize(pageSize);\n } else if ((value + '').toLowerCase() == 'all') {\n dataSource._pageSize = undefined;\n dataSource._take = undefined;\n dataSource._skip = 0;\n dataSource.fetch();\n }\n },\n _toggleActive: function () {\n var that = this;\n if (that.list.hasClass('k-state-expanded')) {\n DOCUMENT_ELEMENT.unbind(that.downEvent, $.proxy(that._hideList, that));\n } else {\n DOCUMENT_ELEMENT.bind(that.downEvent, $.proxy(that._hideList, that));\n }\n that.list.toggleClass('k-state-expanded');\n },\n _hideList: function (e) {\n var that = this, target = kendo.eventTarget(e);\n if (!$.contains(that.list[0], target)) {\n DOCUMENT_ELEMENT.unbind(that.downEvent, $.proxy(that._hideList, that));\n that.list.removeClass('k-state-expanded');\n }\n },\n _click: function (e) {\n var target = $(e.currentTarget);\n e.preventDefault();\n if (!target.is('.k-state-disabled')) {\n this.page(parseInt(target.attr(kendo.attr('page')), 10));\n }\n },\n totalPages: function () {\n return Math.ceil((this.dataSource.total() || 0) / (this.pageSize() || 1));\n },\n pageSize: function () {\n return this.dataSource.pageSize() || this.dataSource.total();\n },\n page: function (page) {\n if (page) {\n if (this.trigger('pageChange', { index: page })) {\n return;\n }\n this.dataSource.page(page);\n this.trigger(CHANGE, { index: page });\n } else {\n if (this.dataSource.total() > 0) {\n return this.dataSource.page();\n } else {\n return 0;\n }\n }\n },\n _getWidthSizeClass: function (width) {\n var that = this, sizes = SIZE.split(' ');\n if (!that.options.responsive) {\n return null;\n } else if (width <= 480) {\n return sizes[2];\n } else if (width <= 640) {\n return sizes[1];\n } else if (width <= 1024) {\n return sizes[0];\n }\n return null;\n }\n });\n ui.plugin(Pager);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.notification', [\n 'kendo.core',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'notification',\n name: 'Notification',\n category: 'web',\n description: 'The Notification widget displays user alerts.',\n depends: [\n 'core',\n 'popup'\n ],\n features: [{\n id: 'notification-fx',\n name: 'Animation',\n description: 'Support for animation',\n depends: ['fx']\n }]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, proxy = $.proxy, extend = $.extend, setTimeout = window.setTimeout, CLICK = 'click', SHOW = 'show', HIDE = 'hide', KNOTIFICATION = 'k-notification', KICLOSE = '.k-notification-wrap .k-i-close', KHIDING = 'k-hiding', INFO = 'info', SUCCESS = 'success', WARNING = 'warning', ERROR = 'error', TOP = 'top', LEFT = 'left', BOTTOM = 'bottom', RIGHT = 'right', UP = 'up', NS = '.kendoNotification', WRAPPER = '<div class=\"k-widget k-popup k-notification\"></div>', TEMPLATE = '<div class=\"k-notification-wrap\">' + '<span class=\"k-icon k-i-#=typeIcon#\" title=\"#=typeIcon#\"></span>' + '<div class=\"k-notification-content\">#=content#</div>' + '<span class=\"k-icon k-i-close\" title=\"Hide\"></span>' + '</div>', SAFE_TEMPLATE = TEMPLATE.replace('#=content#', '#:content#');\n var Notification = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n if (!options.appendTo || !$(options.appendTo).is(element)) {\n that.element.hide();\n }\n that._compileTemplates(options.templates);\n that._guid = '_' + kendo.guid();\n that._isRtl = kendo.support.isRtl(element);\n that._compileStacking(options.stacking, options.position.top, options.position.left);\n kendo.notify(that);\n },\n events: [\n SHOW,\n HIDE\n ],\n options: {\n name: 'Notification',\n position: {\n pinned: true,\n top: null,\n left: null,\n bottom: 20,\n right: 20\n },\n stacking: 'default',\n hideOnClick: true,\n button: false,\n allowHideAfter: 0,\n autoHideAfter: 5000,\n appendTo: null,\n width: null,\n height: null,\n templates: [],\n animation: {\n open: {\n effects: 'fade:in',\n duration: 300\n },\n close: {\n effects: 'fade:out',\n duration: 600,\n hide: true\n }\n }\n },\n _compileTemplates: function (templates) {\n var that = this;\n var kendoTemplate = kendo.template;\n that._compiled = {};\n $.each(templates, function (key, value) {\n that._compiled[value.type] = kendoTemplate(value.template || $('#' + value.templateId).html());\n });\n that._defaultCompiled = kendoTemplate(TEMPLATE);\n that._safeCompiled = kendoTemplate(SAFE_TEMPLATE);\n },\n _getCompiled: function (type, safe) {\n var defaultCompiled = safe ? this._safeCompiled : this._defaultCompiled;\n return type ? this._compiled[type] || defaultCompiled : defaultCompiled;\n },\n _compileStacking: function (stacking, top, left) {\n var that = this, paddings = {\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0\n }, horizontalAlignment = left !== null ? LEFT : RIGHT, origin, position;\n switch (stacking) {\n case 'down':\n origin = BOTTOM + ' ' + horizontalAlignment;\n position = TOP + ' ' + horizontalAlignment;\n delete paddings.paddingBottom;\n break;\n case RIGHT:\n origin = TOP + ' ' + RIGHT;\n position = TOP + ' ' + LEFT;\n delete paddings.paddingRight;\n break;\n case LEFT:\n origin = TOP + ' ' + LEFT;\n position = TOP + ' ' + RIGHT;\n delete paddings.paddingLeft;\n break;\n case UP:\n origin = TOP + ' ' + horizontalAlignment;\n position = BOTTOM + ' ' + horizontalAlignment;\n delete paddings.paddingTop;\n break;\n default:\n if (top !== null) {\n origin = BOTTOM + ' ' + horizontalAlignment;\n position = TOP + ' ' + horizontalAlignment;\n delete paddings.paddingBottom;\n } else {\n origin = TOP + ' ' + horizontalAlignment;\n position = BOTTOM + ' ' + horizontalAlignment;\n delete paddings.paddingTop;\n }\n break;\n }\n that._popupOrigin = origin;\n that._popupPosition = position;\n that._popupPaddings = paddings;\n },\n _attachPopupEvents: function (options, popup) {\n var that = this, allowHideAfter = options.allowHideAfter, attachDelay = !isNaN(allowHideAfter) && allowHideAfter > 0, closeIcon;\n function attachClick(target) {\n target.on(CLICK + NS, function () {\n that._hidePopup(popup);\n });\n }\n if (options.hideOnClick) {\n popup.bind('activate', function () {\n if (attachDelay) {\n setTimeout(function () {\n attachClick(popup.element);\n }, allowHideAfter);\n } else {\n attachClick(popup.element);\n }\n });\n } else if (options.button) {\n closeIcon = popup.element.find(KICLOSE);\n if (attachDelay) {\n setTimeout(function () {\n attachClick(closeIcon);\n }, allowHideAfter);\n } else {\n attachClick(closeIcon);\n }\n }\n },\n _showPopup: function (wrapper, options) {\n var that = this, autoHideAfter = options.autoHideAfter, x = options.position.left, y = options.position.top, popup, openPopup;\n openPopup = $('.' + that._guid + ':not(.' + KHIDING + ')').last();\n popup = new kendo.ui.Popup(wrapper, {\n anchor: openPopup[0] ? openPopup : document.body,\n origin: that._popupOrigin,\n position: that._popupPosition,\n animation: options.animation,\n copyAnchorStyles: false,\n modal: true,\n collision: '',\n isRtl: that._isRtl,\n close: function () {\n that._triggerHide(this.element);\n },\n deactivate: function (e) {\n e.sender.element.off(NS);\n e.sender.element.find(KICLOSE).off(NS);\n e.sender.destroy();\n }\n });\n that._attachPopupEvents(options, popup);\n wrapper.removeClass('k-group k-reset');\n if (openPopup[0]) {\n popup.open();\n } else {\n if (x === null) {\n x = $(window).width() - wrapper.outerWidth() - options.position.right;\n }\n if (y === null) {\n y = $(window).height() - wrapper.outerHeight() - options.position.bottom;\n }\n popup.open(x, y);\n }\n popup.wrapper.addClass(that._guid).css(extend({\n margin: 0,\n zIndex: 10050\n }, that._popupPaddings));\n if (options.position.pinned) {\n popup.wrapper.css('position', 'fixed');\n if (openPopup[0]) {\n that._togglePin(popup.wrapper, true);\n }\n } else if (!openPopup[0]) {\n that._togglePin(popup.wrapper, false);\n }\n if (autoHideAfter > 0) {\n setTimeout(function () {\n that._hidePopup(popup);\n }, autoHideAfter);\n }\n },\n _hidePopup: function (popup) {\n popup.wrapper.addClass(KHIDING);\n popup.close();\n },\n _togglePin: function (wrapper, pin) {\n var win = $(window), sign = pin ? -1 : 1;\n wrapper.css({\n top: parseInt(wrapper.css(TOP), 10) + sign * win.scrollTop(),\n left: parseInt(wrapper.css(LEFT), 10) + sign * win.scrollLeft()\n });\n },\n _attachStaticEvents: function (options, wrapper) {\n var that = this, allowHideAfter = options.allowHideAfter, attachDelay = !isNaN(allowHideAfter) && allowHideAfter > 0;\n function attachClick(target) {\n target.on(CLICK + NS, proxy(that._hideStatic, that, wrapper));\n }\n if (options.hideOnClick) {\n if (attachDelay) {\n setTimeout(function () {\n attachClick(wrapper);\n }, allowHideAfter);\n } else {\n attachClick(wrapper);\n }\n } else if (options.button) {\n if (attachDelay) {\n setTimeout(function () {\n attachClick(wrapper.find(KICLOSE));\n }, allowHideAfter);\n } else {\n attachClick(wrapper.find(KICLOSE));\n }\n }\n },\n _showStatic: function (wrapper, options) {\n var that = this, autoHideAfter = options.autoHideAfter, animation = options.animation, insertionMethod = options.stacking == UP || options.stacking == LEFT ? 'prependTo' : 'appendTo', initializedNotifications;\n wrapper.removeClass('k-popup').addClass(that._guid)[insertionMethod](options.appendTo).hide().kendoAnimate(animation.open || false);\n initializedNotifications = that.getNotifications();\n initializedNotifications.each(function (idx, element) {\n that._attachStaticEvents(options, $(element));\n if (autoHideAfter > 0) {\n setTimeout(function () {\n that._hideStatic($(element));\n }, autoHideAfter);\n }\n });\n },\n _hideStatic: function (wrapper) {\n wrapper.kendoAnimate(extend(this.options.animation.close || false, {\n complete: function () {\n wrapper.off(NS).find(KICLOSE).off(NS);\n wrapper.remove();\n }\n }));\n this._triggerHide(wrapper);\n },\n _triggerHide: function (element) {\n this.trigger(HIDE, { element: element });\n this.angular('cleanup', function () {\n return { elements: element };\n });\n },\n show: function (content, type, safe) {\n var that = this, options = that.options, wrapper = $(WRAPPER), args, defaultArgs;\n if (!type) {\n type = INFO;\n }\n if (content !== null && content !== undefined && content !== '') {\n if (kendo.isFunction(content)) {\n content = content();\n }\n defaultArgs = {\n typeIcon: type,\n content: ''\n };\n if ($.isPlainObject(content)) {\n args = extend(defaultArgs, content);\n } else {\n args = extend(defaultArgs, { content: content });\n }\n wrapper.addClass(KNOTIFICATION + '-' + type).toggleClass(KNOTIFICATION + '-button', options.button).toggleClass(KNOTIFICATION + '-closable', options.button).attr('data-role', 'alert').css({\n width: options.width,\n height: options.height\n }).append(that._getCompiled(type, safe)(args));\n that.angular('compile', function () {\n return {\n elements: wrapper,\n data: [{ dataItem: args }]\n };\n });\n if ($(options.appendTo)[0]) {\n that._showStatic(wrapper, options);\n } else {\n that._showPopup(wrapper, options);\n }\n that.trigger(SHOW, { element: wrapper });\n }\n return that;\n },\n showText: function (content, type) {\n this.show(content, type, true);\n },\n info: function (content) {\n return this.show(content, INFO);\n },\n success: function (content) {\n return this.show(content, SUCCESS);\n },\n warning: function (content) {\n return this.show(content, WARNING);\n },\n error: function (content) {\n return this.show(content, ERROR);\n },\n hide: function () {\n var that = this, openedNotifications = that.getNotifications();\n if (that.options.appendTo) {\n openedNotifications.each(function (idx, element) {\n that._hideStatic($(element));\n });\n } else {\n openedNotifications.each(function (idx, element) {\n var popup = $(element).data('kendoPopup');\n if (popup) {\n that._hidePopup(popup);\n }\n });\n }\n return that;\n },\n getNotifications: function () {\n var that = this, guidElements = $('.' + that._guid + ':not(.' + KHIDING + ')');\n if (that.options.appendTo) {\n return guidElements;\n } else {\n return guidElements.children('.' + KNOTIFICATION);\n }\n },\n setOptions: function (newOptions) {\n var that = this, options;\n Widget.fn.setOptions.call(that, newOptions);\n options = that.options;\n if (newOptions.templates !== undefined) {\n that._compileTemplates(options.templates);\n }\n if (newOptions.stacking !== undefined || newOptions.position !== undefined) {\n that._compileStacking(options.stacking, options.position.top, options.position.left);\n }\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.getNotifications().off(NS).find(KICLOSE).off(NS);\n }\n });\n kendo.ui.plugin(Notification);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.tooltip', [\n 'kendo.core',\n 'kendo.popup',\n 'kendo.fx'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'tooltip',\n name: 'Tooltip',\n category: 'web',\n description: 'The Tooltip widget displays a popup hint for a given html element.',\n depends: [\n 'core',\n 'popup'\n ],\n features: [{\n id: 'tooltip-fx',\n name: 'Animation',\n description: 'Support for animation',\n depends: ['fx']\n }]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, Popup = kendo.ui.Popup, isFunction = kendo.isFunction, isPlainObject = $.isPlainObject, extend = $.extend, proxy = $.proxy, DOCUMENT = $(document), isLocalUrl = kendo.isLocalUrl, ARIAIDSUFFIX = '_tt_active', DESCRIBEDBY = 'aria-describedby', SHOW = 'show', HIDE = 'hide', ERROR = 'error', CONTENTLOAD = 'contentLoad', REQUESTSTART = 'requestStart', KCONTENTFRAME = 'k-content-frame', TEMPLATE = '<div role=\"tooltip\" class=\"k-widget k-tooltip#if (!autoHide) {# k-tooltip-closable#}#\">#if (!autoHide) {# <div class=\"k-tooltip-button\"><a href=\"\\\\#\" class=\"k-icon k-i-close\" title=\"Close\"></a></div> #}#' + '<div class=\"k-tooltip-content\"></div>' + '#if (callout){ #<div class=\"k-callout k-callout-#=dir#\"></div>#}#' + '</div>', IFRAMETEMPLATE = kendo.template('<iframe frameborder=\\'0\\' class=\\'' + KCONTENTFRAME + '\\' ' + 'src=\\'#= content.url #\\'>' + 'This page requires frames in order to show content' + '</iframe>'), NS = '.kendoTooltip', POSITIONS = {\n bottom: {\n origin: 'bottom center',\n position: 'top center'\n },\n top: {\n origin: 'top center',\n position: 'bottom center'\n },\n left: {\n origin: 'center left',\n position: 'center right',\n collision: 'fit flip'\n },\n right: {\n origin: 'center right',\n position: 'center left',\n collision: 'fit flip'\n },\n center: {\n position: 'center center',\n origin: 'center center'\n }\n }, REVERSE = {\n 'top': 'bottom',\n 'bottom': 'top',\n 'left': 'right',\n 'right': 'left',\n 'center': 'center'\n }, DIRCLASSES = {\n bottom: 'n',\n top: 's',\n left: 'e',\n right: 'w',\n center: 'n'\n }, DIMENSIONS = {\n 'horizontal': {\n offset: 'top',\n size: 'outerHeight'\n },\n 'vertical': {\n offset: 'left',\n size: 'outerWidth'\n }\n }, DEFAULTCONTENT = function (e) {\n return e.target.data(kendo.ns + 'title');\n };\n function restoreTitle(element) {\n while (element.length) {\n if (restoreTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n function restoreTitleAttributeForElement(element) {\n var title = element.data(kendo.ns + 'title');\n if (title) {\n element.attr('title', title);\n element.removeData(kendo.ns + 'title');\n return true;\n }\n }\n function saveTitleAttributeForElement(element) {\n var title = element.attr('title');\n if (title) {\n element.data(kendo.ns + 'title', title);\n element.attr('title', '');\n return true;\n }\n }\n function saveTitleAttributes(element) {\n while (element.length && !element.is('body')) {\n if (saveTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n var Tooltip = Widget.extend({\n init: function (element, options) {\n var that = this, axis;\n Widget.fn.init.call(that, element, options);\n axis = that.options.position.match(/left|right/) ? 'horizontal' : 'vertical';\n that.dimensions = DIMENSIONS[axis];\n that._documentKeyDownHandler = proxy(that._documentKeyDown, that);\n that.element.on(that.options.showOn + NS, that.options.filter, proxy(that._showOn, that));\n if (this._isShownOnMouseEnter() || this._isShownOnClick()) {\n that.element.on('mouseenter' + NS, that.options.filter, proxy(that._mouseenter, that));\n }\n if (this.options.autoHide && this._isShownOnMouseEnter()) {\n that.element.on('mouseleave' + NS, that.options.filter, proxy(that._mouseleave, that));\n }\n if (this.options.autoHide && this._isShownOnFocus()) {\n that.element.on('blur' + NS, that.options.filter, proxy(that._blur, that));\n }\n },\n options: {\n name: 'Tooltip',\n filter: '',\n content: DEFAULTCONTENT,\n showAfter: 100,\n hideAfter: 100,\n callout: true,\n offset: 0,\n position: 'bottom',\n showOn: 'mouseenter',\n autoHide: true,\n width: null,\n height: null,\n animation: {\n open: {\n effects: 'fade:in',\n duration: 0\n },\n close: {\n duration: 40,\n hide: true\n }\n }\n },\n events: [\n SHOW,\n HIDE,\n CONTENTLOAD,\n ERROR,\n REQUESTSTART\n ],\n _isShownOnFocus: function () {\n return this.options.showOn && this.options.showOn.match(/focus/);\n },\n _isShownOnMouseEnter: function () {\n return this.options.showOn && this.options.showOn.match(/mouseenter/);\n },\n _isShownOnClick: function () {\n return this.options.showOn && this.options.showOn.match(/click/);\n },\n _mouseenter: function (e) {\n saveTitleAttributes($(e.currentTarget));\n },\n _showOn: function (e) {\n var that = this;\n var currentTarget = $(e.currentTarget);\n if (that._isShownOnClick() && !that._isShownOnMouseEnter()) {\n that._show(currentTarget);\n } else if (that._isShownOnFocus()) {\n saveTitleAttributes(currentTarget);\n that._show(currentTarget);\n } else {\n clearTimeout(that.timeout);\n that.timeout = setTimeout(function () {\n that._show(currentTarget);\n }, that.options.showAfter);\n }\n },\n _appendContent: function (target) {\n var that = this, contentOptions = that.options.content, element = that.content, showIframe = that.options.iframe, iframe;\n if (isPlainObject(contentOptions) && contentOptions.url) {\n if (!('iframe' in that.options)) {\n showIframe = !isLocalUrl(contentOptions.url);\n }\n that.trigger(REQUESTSTART, {\n options: contentOptions,\n target: target\n });\n if (!showIframe) {\n element.empty();\n kendo.ui.progress(element, true);\n that._ajaxRequest(contentOptions);\n } else {\n element.hide();\n iframe = element.find('.' + KCONTENTFRAME)[0];\n if (iframe) {\n iframe.src = contentOptions.url || iframe.src;\n } else {\n element.html(IFRAMETEMPLATE({ content: contentOptions }));\n }\n element.find('.' + KCONTENTFRAME).off('load' + NS).on('load' + NS, function () {\n that.trigger(CONTENTLOAD);\n element.show();\n });\n }\n } else if (contentOptions && isFunction(contentOptions)) {\n contentOptions = contentOptions({\n sender: this,\n target: target\n });\n element.html(contentOptions || '');\n } else {\n element.html(contentOptions);\n }\n that.angular('compile', function () {\n return { elements: element };\n });\n },\n _ajaxRequest: function (options) {\n var that = this;\n jQuery.ajax(extend({\n type: 'GET',\n dataType: 'html',\n cache: false,\n error: function (xhr, status) {\n kendo.ui.progress(that.content, false);\n that.trigger(ERROR, {\n status: status,\n xhr: xhr\n });\n },\n success: proxy(function (data) {\n kendo.ui.progress(that.content, false);\n that.content.html(data);\n that.trigger(CONTENTLOAD);\n }, that)\n }, options));\n },\n _documentKeyDown: function (e) {\n if (e.keyCode === kendo.keys.ESC) {\n this.hide();\n }\n },\n refresh: function () {\n var that = this, popup = that.popup;\n if (popup && popup.options.anchor) {\n that._appendContent(popup.options.anchor);\n }\n },\n hide: function () {\n if (this.popup) {\n this.popup.close();\n }\n },\n show: function (target) {\n target = target || this.element;\n saveTitleAttributes(target);\n this._show(target);\n },\n _show: function (target) {\n var that = this, current = that.target();\n if (!that.popup) {\n that._initPopup();\n }\n if (current && current[0] != target[0]) {\n that.popup.close();\n that.popup.element.kendoStop(true, true);\n }\n if (!current || current[0] != target[0]) {\n that._appendContent(target);\n that.popup.options.anchor = target;\n }\n that.popup.one('deactivate', function () {\n restoreTitle(target);\n target.removeAttr(DESCRIBEDBY);\n this.element.removeAttr('id').attr('aria-hidden', true);\n DOCUMENT.off('keydown' + NS, that._documentKeyDownHandler);\n });\n that.popup._hovered = true;\n that.popup.open();\n },\n _initPopup: function () {\n var that = this, options = that.options, wrapper = $(kendo.template(TEMPLATE)({\n callout: options.callout && options.position !== 'center',\n dir: DIRCLASSES[options.position],\n autoHide: options.autoHide\n }));\n that.popup = new Popup(wrapper, extend({\n autosize: true,\n activate: function () {\n var anchor = this.options.anchor, ariaId = anchor[0].id || that.element[0].id;\n if (ariaId) {\n anchor.attr(DESCRIBEDBY, ariaId + ARIAIDSUFFIX);\n this.element.attr('id', ariaId + ARIAIDSUFFIX);\n }\n if (options.callout) {\n that._positionCallout();\n } else {\n that._offset(that.options.position, that.options.offset);\n }\n this.element.removeAttr('aria-hidden');\n DOCUMENT.on('keydown' + NS, that._documentKeyDownHandler);\n that.trigger(SHOW);\n that.popup._hovered = undefined;\n },\n close: function () {\n that.trigger(HIDE);\n },\n copyAnchorStyles: false,\n animation: options.animation\n }, POSITIONS[options.position]));\n wrapper.css({\n width: options.width,\n height: options.height\n });\n that.content = wrapper.find('.k-tooltip-content');\n that.arrow = wrapper.find('.k-callout');\n if (options.autoHide && this._isShownOnMouseEnter()) {\n wrapper.on('mouseleave' + NS, proxy(that._mouseleave, that));\n } else {\n wrapper.on('click' + NS, '.k-tooltip-button', proxy(that._closeButtonClick, that));\n }\n },\n _closeButtonClick: function (e) {\n e.preventDefault();\n this.hide();\n },\n _mouseleave: function (e) {\n var that = this;\n clearTimeout(that.timeout);\n that.timeout = setTimeout(function () {\n that._closePopup(e.currentTarget);\n }, that.options.hideAfter);\n },\n _blur: function (e) {\n this._closePopup(e.currentTarget);\n },\n _closePopup: function (target) {\n if (this.popup && !this.popup._hovered) {\n this.popup.close();\n } else {\n restoreTitle($(target));\n }\n },\n target: function () {\n if (this.popup) {\n return this.popup.options.anchor;\n }\n return null;\n },\n _positionCallout: function () {\n var that = this, position = that.options.position, dimensions = that.dimensions, offset = dimensions.offset, popup = that.popup, anchor = popup.options.anchor, anchorOffset = $(anchor).offset(), elementOffset = $(popup.element).offset(), cssClass = DIRCLASSES[popup.flipped ? REVERSE[position] : position], offsetAmount = anchorOffset[offset] - elementOffset[offset] + $(anchor)[dimensions.size]() / 2;\n that._offset(position, that.options.offset);\n that.arrow.removeClass('k-callout-n k-callout-s k-callout-w k-callout-e').addClass('k-callout-' + cssClass).css(offset, offsetAmount);\n },\n destroy: function () {\n var popup = this.popup;\n if (popup) {\n popup.element.off(NS);\n popup.destroy();\n }\n clearTimeout(this.timeout);\n this.element.off(NS);\n DOCUMENT.off('keydown' + NS, this._documentKeyDownHandler);\n Widget.fn.destroy.call(this);\n },\n _offset: function (position, offsetAmount) {\n var that = this, isTopLeft = position == 'top' || position == 'left', isFlipped = that.popup.flipped, direction = isTopLeft && isFlipped || !isTopLeft && !isFlipped ? 1 : -1, marginRule = isTopLeft ? 'margin-' + position : 'margin-' + REVERSE[position], offset = kendo._outerWidth(that.arrow) / 2 + offsetAmount;\n that.popup.wrapper.css(marginRule, offset * direction + 'px');\n }\n });\n kendo.ui.plugin(Tooltip);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.list', [\n 'kendo.data',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'list',\n name: 'List',\n category: 'framework',\n depends: [\n 'data',\n 'popup'\n ],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, outerHeight = kendo._outerHeight, percentageUnitsRegex = /^\\d+(\\.\\d+)?%$/i, Widget = ui.Widget, keys = kendo.keys, support = kendo.support, htmlEncode = kendo.htmlEncode, activeElement = kendo._activeElement, outerWidth = kendo._outerWidth, ObservableArray = kendo.data.ObservableArray, ID = 'id', CHANGE = 'change', FOCUSED = 'k-state-focused', HOVER = 'k-state-hover', LOADING = 'k-i-loading', GROUPHEADER = '.k-group-header', ITEMSELECTOR = '.k-item', LABELIDPART = '_label', OPEN = 'open', CLOSE = 'close', CASCADE = 'cascade', SELECT = 'select', SELECTED = 'selected', REQUESTSTART = 'requestStart', REQUESTEND = 'requestEnd', extend = $.extend, proxy = $.proxy, isArray = $.isArray, browser = support.browser, HIDDENCLASS = 'k-hidden', WIDTH = 'width', isIE = browser.msie, isIE8 = isIE && browser.version < 9, quotRegExp = /\"/g, alternativeNames = {\n 'ComboBox': [\n 'DropDownList',\n 'MultiColumnComboBox'\n ],\n 'DropDownList': [\n 'ComboBox',\n 'MultiColumnComboBox'\n ],\n 'MultiColumnComboBox': [\n 'ComboBox',\n 'DropDownList'\n ]\n };\n var List = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n var that = this, ns = that.ns, id;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n that._isSelect = element.is(SELECT);\n if (that._isSelect && that.element[0].length) {\n if (!options.dataSource) {\n options.dataTextField = options.dataTextField || 'text';\n options.dataValueField = options.dataValueField || 'value';\n }\n }\n that.ul = $('<ul unselectable=\"on\" class=\"k-list k-reset\"/>').attr({\n tabIndex: -1,\n 'aria-hidden': true\n });\n that.list = $('<div class=\\'k-list-container\\'/>').append(that.ul).on('mousedown' + ns, proxy(that._listMousedown, that));\n id = element.attr(ID);\n if (!id) {\n id = kendo.guid();\n }\n that.list.attr(ID, id + '-list');\n that.ul.attr(ID, id + '_listbox');\n if (options.columns && options.columns.length) {\n that.ul.removeClass('k-list').addClass('k-grid-list');\n that._columnsHeader();\n }\n that._header();\n that._noData();\n that._footer();\n that._accessors();\n that._initValue();\n },\n options: {\n valuePrimitive: false,\n footerTemplate: '',\n headerTemplate: '',\n noDataTemplate: true,\n messages: {\n 'noData': 'No data found.',\n 'clear': 'clear'\n }\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n if (options && options.enable !== undefined) {\n options.enabled = options.enable;\n }\n if (options.columns && options.columns.length) {\n this._columnsHeader();\n }\n this._header();\n this._noData();\n this._footer();\n this._renderFooter();\n this._renderNoData();\n },\n focus: function () {\n this._focused.focus();\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n _header: function () {\n var list = this;\n var header = $(list.header);\n var template = list.options.headerTemplate;\n this._angularElement(header, 'cleanup');\n kendo.destroy(header);\n header.remove();\n if (!template) {\n list.header = null;\n return;\n }\n var headerTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n header = $(headerTemplate({}));\n list.header = header[0] ? header : null;\n list.list.prepend(header);\n this._angularElement(list.header, 'compile');\n },\n _columnsHeader: function () {\n var list = this;\n var columnsHeader = $(list.columnsHeader);\n this._angularElement(columnsHeader, 'cleanup');\n kendo.destroy(columnsHeader);\n columnsHeader.remove();\n var header = '<div class=\\'k-grid-header\\'><div class=\\'k-grid-header-wrap\\'><table role=\\'presentation\\'>';\n var colGroup = '<colgroup>';\n var row = '<tr>';\n for (var idx = 0; idx < this.options.columns.length; idx++) {\n var currentColumn = this.options.columns[idx];\n var title = currentColumn.title || currentColumn.field || '';\n var template = currentColumn.headerTemplate || title;\n var columnsHeaderTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n var currentWidth = currentColumn.width;\n var currentWidthInt = parseInt(currentWidth, 10);\n var widthStyle = '';\n if (currentWidth && !isNaN(currentWidthInt)) {\n widthStyle += 'style=\\'width:';\n widthStyle += currentWidthInt;\n widthStyle += percentageUnitsRegex.test(currentWidth) ? '%' : 'px';\n widthStyle += ';\\'';\n }\n colGroup += '<col ' + widthStyle + '/>';\n row += '<th class=\\'k-header\\'>';\n row += columnsHeaderTemplate(currentColumn);\n row += '</th>';\n }\n colGroup += '</colgroup>';\n row += '</tr>';\n header += colGroup;\n header += row;\n header += '</table></div></div>';\n list.columnsHeader = columnsHeader = $(header);\n list.list.prepend(columnsHeader);\n this._angularElement(list.columnsHeader, 'compile');\n },\n _noData: function () {\n var list = this;\n var noData = $(list.noData);\n var template = list.options.noDataTemplate === true ? list.options.messages.noData : list.options.noDataTemplate;\n list.angular('cleanup', function () {\n return { elements: noData };\n });\n kendo.destroy(noData);\n noData.remove();\n if (!template) {\n list.noData = null;\n return;\n }\n list.noData = $('<div class=\"k-nodata\" style=\"display:none\"><div></div></div>').appendTo(list.list);\n list.noDataTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n },\n _footer: function () {\n var list = this;\n var footer = $(list.footer);\n var template = list.options.footerTemplate;\n this._angularElement(footer, 'cleanup');\n kendo.destroy(footer);\n footer.remove();\n if (!template) {\n list.footer = null;\n return;\n }\n list.footer = $('<div class=\"k-footer\"></div>').appendTo(list.list);\n list.footerTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n },\n _listOptions: function (options) {\n var that = this;\n var currentOptions = that.options;\n var virtual = currentOptions.virtual;\n var changeEventOption = { change: proxy(that._listChange, that) };\n var listBoundHandler = proxy(that._listBound, that);\n virtual = typeof virtual === 'object' ? virtual : {};\n options = $.extend({\n autoBind: false,\n selectable: true,\n dataSource: that.dataSource,\n click: proxy(that._click, that),\n activate: proxy(that._activateItem, that),\n columns: currentOptions.columns,\n deactivate: proxy(that._deactivateItem, that),\n dataBinding: function () {\n that.trigger('dataBinding');\n },\n dataBound: listBoundHandler,\n height: currentOptions.height,\n dataValueField: currentOptions.dataValueField,\n dataTextField: currentOptions.dataTextField,\n groupTemplate: currentOptions.groupTemplate,\n fixedGroupTemplate: currentOptions.fixedGroupTemplate,\n template: currentOptions.template\n }, options, virtual, changeEventOption);\n if (!options.template) {\n options.template = '#:' + kendo.expr(options.dataTextField, 'data') + '#';\n }\n if (currentOptions.$angular) {\n options.$angular = currentOptions.$angular;\n }\n return options;\n },\n _initList: function () {\n var that = this;\n var listOptions = that._listOptions({ selectedItemChange: proxy(that._listChange, that) });\n if (!that.options.virtual) {\n that.listView = new kendo.ui.StaticList(that.ul, listOptions);\n } else {\n that.listView = new kendo.ui.VirtualList(that.ul, listOptions);\n }\n that.listView.bind('listBound', proxy(that._listBound, that));\n that._setListValue();\n },\n _setListValue: function (value) {\n value = value || this.options.value;\n if (value !== undefined) {\n this.listView.value(value).done(proxy(this._updateSelectionState, this));\n }\n },\n _updateSelectionState: $.noop,\n _listMousedown: function (e) {\n if (!this.filterInput || this.filterInput[0] !== e.target) {\n e.preventDefault();\n }\n },\n _isFilterEnabled: function () {\n var filter = this.options.filter;\n return filter && filter !== 'none';\n },\n _hideClear: function () {\n var list = this;\n if (list._clear) {\n list._clear.addClass(HIDDENCLASS);\n }\n },\n _showClear: function () {\n if (this._clear) {\n this._clear.removeClass(HIDDENCLASS);\n }\n },\n _clearValue: function () {\n this._clearText();\n this._accessor('');\n this.listView.value([]);\n if (this._isSelect) {\n this._customOption = undefined;\n }\n if (this._isFilterEnabled() && !this.options.enforceMinLength) {\n this._filter({\n word: '',\n open: false\n });\n if (this.options.highlightFirst) {\n this.listView.focus(0);\n }\n }\n this._change();\n },\n _clearText: function () {\n this.text('');\n },\n _clearFilter: function () {\n if (!this.options.virtual) {\n this.listView.bound(false);\n }\n this._filterSource();\n },\n _filterSource: function (filter, force) {\n var that = this;\n var options = that.options;\n var isMultiColumnFiltering = options.filterFields && filter && filter.logic && filter.filters && filter.filters.length;\n var dataSource = that.dataSource;\n var expression = extend({}, dataSource.filter() || {});\n var resetPageSettings = filter || expression.filters && expression.filters.length && !filter;\n var removed = removeFiltersForField(expression, options.dataTextField);\n this._clearFilterExpressions(expression);\n if ((filter || removed) && that.trigger('filtering', { filter: filter })) {\n return;\n }\n var newExpression = {\n filters: [],\n logic: 'and'\n };\n if (isMultiColumnFiltering) {\n newExpression.filters.push(filter);\n } else {\n this._pushFilterExpression(newExpression, filter);\n }\n if (isValidFilterExpr(expression)) {\n if (newExpression.logic === expression.logic) {\n newExpression.filters = newExpression.filters.concat(expression.filters);\n } else {\n newExpression.filters.push(expression);\n }\n }\n if (that._cascading) {\n this.listView.setDSFilter(newExpression);\n }\n var dataSourceState = extend({}, {\n page: resetPageSettings ? 1 : dataSource.page(),\n pageSize: resetPageSettings ? dataSource.options.pageSize : dataSource.pageSize(),\n sort: dataSource.sort(),\n filter: dataSource.filter(),\n group: dataSource.group(),\n aggregate: dataSource.aggregate()\n }, { filter: newExpression });\n return dataSource[force ? 'read' : 'query'](dataSource._mergeState(dataSourceState));\n },\n _pushFilterExpression: function (newExpression, filter) {\n if (isValidFilterExpr(filter) && filter.value !== '') {\n newExpression.filters.push(filter);\n }\n },\n _clearFilterExpressions: function (expression) {\n if (!expression.filters) {\n return;\n }\n var filtersToRemove;\n for (var i = 0; i < expression.filters.length; i++) {\n if ('fromFilter' in expression.filters[i]) {\n filtersToRemove = i;\n }\n }\n if (!isNaN(filtersToRemove)) {\n expression.filters.splice(filtersToRemove, 1);\n }\n },\n _angularElement: function (element, action) {\n if (!element) {\n return;\n }\n this.angular(action, function () {\n return { elements: element };\n });\n },\n _renderNoData: function () {\n var list = this;\n var noData = list.noData;\n if (!noData) {\n return;\n }\n this._angularElement(noData, 'cleanup');\n noData.children(':first').html(list.noDataTemplate({ instance: list }));\n this._angularElement(noData, 'compile');\n },\n _toggleNoData: function (show) {\n $(this.noData).toggle(show);\n },\n _toggleHeader: function (show) {\n var groupHeader = this.listView.content.prev(GROUPHEADER);\n groupHeader.toggle(show);\n },\n _renderFooter: function () {\n var list = this;\n var footer = list.footer;\n if (!footer) {\n return;\n }\n this._angularElement(footer, 'cleanup');\n footer.html(list.footerTemplate({ instance: list }));\n this._angularElement(footer, 'compile');\n },\n _allowOpening: function () {\n return this.options.noDataTemplate || this.dataSource.flatView().length;\n },\n _initValue: function () {\n var that = this, value = that.options.value;\n if (value !== null) {\n that.element.val(value);\n } else {\n value = that._accessor();\n that.options.value = value;\n }\n that._old = value;\n },\n _ignoreCase: function () {\n var that = this, model = that.dataSource.reader.model, field;\n if (model && model.fields) {\n field = model.fields[that.options.dataTextField];\n if (field && field.type && field.type !== 'string') {\n that.options.ignoreCase = false;\n }\n }\n },\n _focus: function (candidate) {\n return this.listView.focus(candidate);\n },\n _filter: function (options) {\n var that = this;\n var widgetOptions = that.options;\n var word = options.word;\n var filterFields = widgetOptions.filterFields;\n var field = widgetOptions.dataTextField;\n var expression;\n if (filterFields && filterFields.length) {\n expression = {\n logic: 'or',\n filters: [],\n fromFilter: true\n };\n for (var i = 0; i < filterFields.length; i++) {\n this._pushFilterExpression(expression, that._buildExpression(word, filterFields[i]));\n }\n } else {\n expression = that._buildExpression(word, field);\n }\n that._open = options.open;\n that._filterSource(expression);\n },\n _buildExpression: function (value, field) {\n var that = this;\n var widgetOptions = that.options;\n var ignoreCase = widgetOptions.ignoreCase;\n var accentFoldingFiltering = that.dataSource.options.accentFoldingFiltering;\n return {\n value: ignoreCase ? accentFoldingFiltering ? value.toLocaleLowerCase(accentFoldingFiltering) : value.toLowerCase() : value,\n field: field,\n operator: widgetOptions.filter,\n ignoreCase: ignoreCase\n };\n },\n _clearButton: function () {\n var list = this;\n var clearTitle = list.options.messages.clear;\n if (!list._clear) {\n list._clear = $('<span unselectable=\"on\" class=\"k-icon k-clear-value k-i-close\" title=\"' + clearTitle + '\"></span>').attr({\n 'role': 'button',\n 'tabIndex': -1\n });\n }\n if (!list.options.clearButton) {\n list._clear.remove();\n }\n this._hideClear();\n },\n search: function (word) {\n var options = this.options;\n word = typeof word === 'string' ? word : this._inputValue();\n clearTimeout(this._typingTimeout);\n if (!options.enforceMinLength && !word.length || word.length >= options.minLength) {\n this._state = 'filter';\n if (this.listView) {\n this.listView._emptySearch = !$.trim(word).length;\n }\n if (!this._isFilterEnabled()) {\n this._searchByWord(word);\n } else {\n this._filter({\n word: word,\n open: true\n });\n }\n }\n },\n current: function (candidate) {\n return this._focus(candidate);\n },\n items: function () {\n return this.ul[0].children;\n },\n destroy: function () {\n var that = this;\n var ns = that.ns;\n Widget.fn.destroy.call(that);\n that._unbindDataSource();\n that.listView.destroy();\n that.list.off(ns);\n that.popup.destroy();\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n },\n dataItem: function (index) {\n var that = this;\n if (index === undefined) {\n return that.listView.selectedDataItems()[0];\n }\n if (typeof index !== 'number') {\n if (that.options.virtual) {\n return that.dataSource.getByUid($(index).data('uid'));\n }\n index = $(that.items()).index(index);\n }\n return that.dataSource.flatView()[index];\n },\n _activateItem: function () {\n var current = this.listView.focus();\n if (current) {\n this._focused.add(this.filterInput).attr('aria-activedescendant', current.attr('id'));\n }\n },\n _deactivateItem: function () {\n this._focused.add(this.filterInput).removeAttr('aria-activedescendant');\n },\n _accessors: function () {\n var that = this;\n var element = that.element;\n var options = that.options;\n var getter = kendo.getter;\n var textField = element.attr(kendo.attr('text-field'));\n var valueField = element.attr(kendo.attr('value-field'));\n if (!options.dataTextField && textField) {\n options.dataTextField = textField;\n }\n if (!options.dataValueField && valueField) {\n options.dataValueField = valueField;\n }\n that._text = getter(options.dataTextField);\n that._value = getter(options.dataValueField);\n },\n _aria: function (id) {\n var that = this, options = that.options, element = that._focused.add(that.filterInput);\n if (options.suggest !== undefined) {\n element.attr('aria-autocomplete', options.suggest ? 'both' : 'list');\n }\n id = id ? id + ' ' + that.ul[0].id : that.ul[0].id;\n element.attr('aria-owns', id);\n that.ul.attr('aria-live', !that._isFilterEnabled() ? 'off' : 'polite');\n that._ariaLabel();\n },\n _ariaLabel: function () {\n var that = this;\n var focusedElm = that._focused;\n var inputElm = that.element;\n var inputId = inputElm.attr('id');\n var labelElm = $('label[for=\"' + inputId + '\"]');\n var ariaLabel = inputElm.attr('aria-label');\n var ariaLabelledBy = inputElm.attr('aria-labelledby');\n if (focusedElm === inputElm) {\n return;\n }\n if (ariaLabel) {\n focusedElm.attr('aria-label', ariaLabel);\n } else if (ariaLabelledBy) {\n focusedElm.attr('aria-labelledby', ariaLabelledBy);\n } else if (labelElm.length) {\n var labelId = labelElm.attr('id') || that._generateLabelId(labelElm, inputId || kendo.guid());\n focusedElm.attr('aria-labelledby', labelId);\n }\n },\n _generateLabelId: function (label, inputId) {\n var labelId = inputId + LABELIDPART;\n label.attr('id', labelId);\n return labelId;\n },\n _blur: function () {\n var that = this;\n that._change();\n that.close();\n },\n _change: function () {\n var that = this;\n var index = that.selectedIndex;\n var optionValue = that.options.value;\n var value = that.value();\n var trigger;\n if (that._isSelect && !that.listView.bound() && optionValue) {\n value = optionValue;\n }\n if (value !== unifyType(that._old, typeof value) && value !== unifyType(that._oldText, typeof value)) {\n trigger = true;\n } else if (that._valueBeforeCascade !== undefined && that._valueBeforeCascade !== unifyType(that._old, typeof that._valueBeforeCascade) && that._userTriggered) {\n trigger = true;\n } else if (index !== undefined && index !== that._oldIndex && !that.listView.isFiltered()) {\n trigger = true;\n }\n if (trigger) {\n if (that._old === null || that._old === '' || value === '') {\n that._valueBeforeCascade = that._old = value;\n } else {\n if (that.dataItem()) {\n that._valueBeforeCascade = that._old = that.options.dataValueField ? that.dataItem()[that.options.dataValueField] : that.dataItem();\n } else {\n that._valueBeforeCascade = that._old = null;\n }\n }\n that._oldIndex = index;\n that._oldText = that.text && that.text();\n if (!that._typing) {\n that.element.trigger(CHANGE);\n }\n that.trigger(CHANGE);\n }\n that.typing = false;\n },\n _data: function () {\n return this.dataSource.view();\n },\n _enable: function () {\n var that = this, options = that.options, disabled = that.element.is('[disabled]');\n if (options.enable !== undefined) {\n options.enabled = options.enable;\n }\n if (!options.enabled || disabled) {\n that.enable(false);\n } else {\n that.readonly(that.element.is('[readonly]'));\n }\n },\n _dataValue: function (dataItem) {\n var value = this._value(dataItem);\n if (value === undefined) {\n value = this._text(dataItem);\n }\n return value;\n },\n _offsetHeight: function () {\n var offsetHeight = 0;\n var siblings = this.listView.content.prevAll(':visible');\n siblings.each(function () {\n var element = $(this);\n offsetHeight += outerHeight(element, true);\n });\n return offsetHeight;\n },\n _height: function (length) {\n var that = this;\n var list = that.list;\n var height = that.options.height;\n var visible = that.popup.visible();\n var offsetTop;\n var popups;\n var footerHeight;\n if (length || that.options.noDataTemplate) {\n popups = list.add(list.parent('.k-animation-container')).show();\n if (!list.is(':visible')) {\n popups.hide();\n return;\n }\n height = that.listView.content[0].scrollHeight > height ? height : 'auto';\n popups.height(height);\n if (height !== 'auto') {\n offsetTop = that._offsetHeight();\n footerHeight = outerHeight($(that.footer)) || 0;\n height = height - offsetTop - footerHeight;\n }\n that.listView.content.height(height);\n if (!visible) {\n popups.hide();\n }\n }\n return height;\n },\n _openHandler: function (e) {\n this._adjustListWidth();\n if (this.trigger(OPEN)) {\n e.preventDefault();\n } else {\n this._focused.attr('aria-expanded', true);\n this.ul.attr('aria-hidden', false);\n }\n },\n _adjustListWidth: function () {\n var that = this, list = that.list, width = list[0].style.width, wrapper = that.wrapper, computedStyle, computedWidth;\n if (!list.data(WIDTH) && width) {\n return;\n }\n computedStyle = window.getComputedStyle ? window.getComputedStyle(wrapper[0], null) : 0;\n computedWidth = parseFloat(computedStyle && computedStyle.width) || outerWidth(wrapper);\n if (computedStyle && browser.msie) {\n computedWidth += parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);\n }\n if (list.css('box-sizing') !== 'border-box') {\n width = computedWidth - (outerWidth(list) - list.width());\n } else {\n width = computedWidth;\n }\n list.css({\n fontFamily: wrapper.css('font-family'),\n width: that.options.autoWidth ? 'auto' : width,\n minWidth: width,\n whiteSpace: that.options.autoWidth ? 'nowrap' : 'normal'\n }).data(WIDTH, width);\n return true;\n },\n _closeHandler: function (e) {\n if (this.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n this._focused.attr('aria-expanded', false);\n this.ul.attr('aria-hidden', true);\n }\n },\n _focusItem: function () {\n var listView = this.listView;\n var noFocusedItem = !listView.focus();\n var index = last(listView.select());\n if (index === undefined && this.options.highlightFirst && noFocusedItem) {\n index = 0;\n }\n if (index !== undefined) {\n listView.focus(index);\n } else if (noFocusedItem) {\n listView.scrollToIndex(0);\n }\n },\n _calculateGroupPadding: function (height) {\n var li = this.ul.children('.k-first:first');\n var groupHeader = this.listView.content.prev(GROUPHEADER);\n var padding = 0;\n var direction = 'right';\n if (groupHeader[0] && groupHeader[0].style.display !== 'none') {\n if (height !== 'auto') {\n padding = kendo.support.scrollbar();\n }\n if (this.element.parents('.k-rtl').length) {\n direction = 'left';\n }\n padding += parseFloat(li.css('border-' + direction + '-width'), 10) + parseFloat(li.children('.k-group').css('padding-' + direction), 10);\n groupHeader.css('padding-' + direction, padding);\n }\n },\n _calculatePopupHeight: function (force) {\n var height = this._height(this.dataSource.flatView().length || force);\n this._calculateGroupPadding(height);\n this._calculateColumnsHeaderPadding(height);\n },\n _calculateColumnsHeaderPadding: function (height) {\n if (this.options.columns && this.options.columns.length) {\n var list = this;\n var isRtl = support.isRtl(list.wrapper);\n var scrollbar = kendo.support.scrollbar();\n list.columnsHeader.css(isRtl ? 'padding-left' : 'padding-right', height !== 'auto' ? scrollbar : 0);\n }\n },\n _refreshScroll: function () {\n var listView = this.listView;\n var enableYScroll = listView.element.height() > listView.content.height();\n if (this.options.autoWidth) {\n listView.content.css({\n overflowX: 'hidden',\n overflowY: enableYScroll ? 'scroll' : 'auto'\n });\n }\n },\n _resizePopup: function (force) {\n if (this.options.virtual) {\n return;\n }\n if (!this.popup.element.is(':visible')) {\n this.popup.one('open', function (force) {\n return proxy(function () {\n this._calculatePopupHeight(force);\n }, this);\n }.call(this, force));\n this.popup.one('activate', proxy(this._refreshScroll, this));\n } else {\n this._calculatePopupHeight(force);\n }\n },\n _popup: function () {\n var list = this;\n list.popup = new ui.Popup(list.list, extend({}, list.options.popup, {\n anchor: list.wrapper,\n open: proxy(list._openHandler, list),\n close: proxy(list._closeHandler, list),\n animation: list.options.animation,\n isRtl: support.isRtl(list.wrapper),\n autosize: list.options.autoWidth\n }));\n },\n _makeUnselectable: function () {\n if (isIE8) {\n this.list.find('*').not('.k-textbox').attr('unselectable', 'on');\n }\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _toggle: function (open, preventFocus) {\n var that = this;\n var touchEnabled = support.mobileOS && (support.touch || support.MSPointers || support.pointers);\n open = open !== undefined ? open : !that.popup.visible();\n if (!preventFocus && !touchEnabled && that._focused[0] !== activeElement()) {\n that._prevent = true;\n that._focused.focus();\n that._prevent = false;\n }\n that[open ? OPEN : CLOSE]();\n },\n _triggerCascade: function () {\n var that = this;\n if (!that._cascadeTriggered || that.value() !== unifyType(that._cascadedValue, typeof that.value())) {\n that._cascadedValue = that.value();\n that._cascadeTriggered = true;\n that.trigger(CASCADE, { userTriggered: that._userTriggered });\n }\n },\n _triggerChange: function () {\n if (this._valueBeforeCascade !== this.value()) {\n this.trigger(CHANGE);\n }\n },\n _unbindDataSource: function () {\n var that = this;\n that.dataSource.unbind(REQUESTSTART, that._requestStartHandler).unbind(REQUESTEND, that._requestEndHandler).unbind('error', that._errorHandler);\n },\n requireValueMapper: function (options, value) {\n var hasValue = (options.value instanceof Array ? options.value.length : options.value) || (value instanceof Array ? value.length : value);\n if (hasValue && options.virtual && typeof options.virtual.valueMapper !== 'function') {\n throw new Error('ValueMapper is not provided while the value is being set. See http://docs.telerik.com/kendo-ui/controls/editors/combobox/virtualization#the-valuemapper-function');\n }\n }\n });\n function unifyType(value, type) {\n if (value !== undefined && value !== '' && value !== null) {\n if (type === 'boolean') {\n if (typeof value !== 'boolean') {\n value = value.toLowerCase() === 'true';\n }\n value = Boolean(value);\n } else if (type === 'number') {\n value = Number(value);\n } else if (type === 'string') {\n value = value.toString();\n }\n }\n return value;\n }\n extend(List, {\n inArray: function (node, parentNode) {\n var idx, length, siblings = parentNode.children;\n if (!node || node.parentNode !== parentNode) {\n return -1;\n }\n for (idx = 0, length = siblings.length; idx < length; idx++) {\n if (node === siblings[idx]) {\n return idx;\n }\n }\n return -1;\n },\n unifyType: unifyType\n });\n kendo.ui.List = List;\n ui.Select = List.extend({\n init: function (element, options) {\n List.fn.init.call(this, element, options);\n this._initial = this.element.val();\n },\n setDataSource: function (dataSource) {\n var that = this;\n var parent;\n that.options.dataSource = dataSource;\n that._dataSource();\n if (that.listView.bound()) {\n that._initialIndex = null;\n that.listView._current = null;\n }\n that.listView.setDataSource(that.dataSource);\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n parent = that._parentWidget();\n if (parent) {\n that._cascadeSelect(parent);\n }\n },\n close: function () {\n this.popup.close();\n },\n select: function (candidate) {\n var that = this;\n if (candidate === undefined) {\n return that.selectedIndex;\n } else {\n return that._select(candidate).done(function () {\n that._cascadeValue = that._old = that._accessor();\n that._oldIndex = that.selectedIndex;\n });\n }\n },\n _accessor: function (value, idx) {\n return this[this._isSelect ? '_accessorSelect' : '_accessorInput'](value, idx);\n },\n _accessorInput: function (value) {\n var element = this.element[0];\n if (value === undefined) {\n return element.value;\n } else {\n if (value === null) {\n value = '';\n }\n element.value = value;\n }\n },\n _accessorSelect: function (value, idx) {\n var element = this.element[0];\n var hasValue;\n if (value === undefined) {\n return getSelectedOption(element).value || '';\n }\n getSelectedOption(element).selected = false;\n if (idx === undefined) {\n idx = -1;\n }\n hasValue = value !== null && value !== '';\n if (hasValue && idx == -1) {\n this._custom(value);\n } else {\n if (value) {\n element.value = value;\n } else {\n element.selectedIndex = idx;\n }\n }\n },\n _syncValueAndText: function () {\n return true;\n },\n _custom: function (value) {\n var that = this;\n var element = that.element;\n var custom = that._customOption;\n if (!custom) {\n custom = $('<option/>');\n that._customOption = custom;\n element.append(custom);\n }\n custom.text(value);\n custom[0].selected = true;\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that._arrowIcon.removeClass(LOADING);\n that._focused.attr('aria-busy', false);\n that._busy = null;\n that._showClear();\n },\n _showBusy: function (e) {\n var that = this;\n if (e.isDefaultPrevented()) {\n return;\n }\n that._request = true;\n if (that._busy) {\n return;\n }\n that._busy = setTimeout(function () {\n if (that._arrowIcon) {\n that._focused.attr('aria-busy', true);\n that._arrowIcon.addClass(LOADING);\n that._hideClear();\n }\n }, 100);\n },\n _requestEnd: function () {\n this._request = false;\n this._hideBusy();\n },\n _dataSource: function () {\n var that = this, element = that.element, options = that.options, dataSource = options.dataSource || {}, idx;\n dataSource = $.isArray(dataSource) ? { data: dataSource } : dataSource;\n if (that._isSelect) {\n idx = element[0].selectedIndex;\n if (idx > -1) {\n options.index = idx;\n }\n dataSource.select = element;\n dataSource.fields = [\n { field: options.dataTextField },\n { field: options.dataValueField }\n ];\n }\n if (that.dataSource) {\n that._unbindDataSource();\n } else {\n that._requestStartHandler = proxy(that._showBusy, that);\n that._requestEndHandler = proxy(that._requestEnd, that);\n that._errorHandler = proxy(that._hideBusy, that);\n }\n that.dataSource = kendo.data.DataSource.create(dataSource).bind(REQUESTSTART, that._requestStartHandler).bind(REQUESTEND, that._requestEndHandler).bind('error', that._errorHandler);\n },\n _firstItem: function () {\n this.listView.focusFirst();\n },\n _lastItem: function () {\n this.listView.focusLast();\n },\n _nextItem: function () {\n this.listView.focusNext();\n },\n _prevItem: function () {\n this.listView.focusPrev();\n },\n _move: function (e) {\n var that = this;\n var listView = that.listView;\n var key = e.keyCode;\n var down = key === keys.DOWN;\n var dataItem;\n var pressed;\n var current;\n if (key === keys.UP || down) {\n if (e.altKey) {\n that.toggle(down);\n } else {\n if (!listView.bound() && !that.ul[0].firstChild) {\n if (!that._fetch) {\n that.dataSource.one(CHANGE, function () {\n that._fetch = false;\n that._move(e);\n });\n that._fetch = true;\n that._filterSource();\n }\n e.preventDefault();\n return true;\n }\n current = that._focus();\n if (!that._fetch && (!current || current.hasClass('k-state-selected'))) {\n if (down) {\n that._nextItem();\n if (!that._focus()) {\n that._lastItem();\n }\n } else {\n that._prevItem();\n if (!that._focus()) {\n that._firstItem();\n }\n }\n }\n dataItem = listView.dataItemByIndex(listView.getElementIndex(that._focus()));\n if (that.trigger(SELECT, {\n dataItem: dataItem,\n item: that._focus()\n })) {\n that._focus(current);\n return;\n }\n that._select(that._focus(), true).done(function () {\n if (!that.popup.visible()) {\n that._blur();\n }\n if (that._cascadedValue === null) {\n that._cascadedValue = that.value();\n } else {\n that._cascadedValue = that.dataItem() ? that.dataItem()[that.options.dataValueField] || that.dataItem() : null;\n }\n });\n }\n e.preventDefault();\n pressed = true;\n } else if (key === keys.ENTER || key === keys.TAB) {\n if (that.popup.visible()) {\n e.preventDefault();\n }\n current = that._focus();\n dataItem = that.dataItem();\n if (!that.popup.visible() && (!dataItem || that.text() !== that._text(dataItem))) {\n current = null;\n }\n var activeFilter = that.filterInput && that.filterInput[0] === activeElement();\n var selection;\n if (current) {\n dataItem = listView.dataItemByIndex(listView.getElementIndex(current));\n var shouldTrigger = true;\n if (dataItem) {\n shouldTrigger = that._value(dataItem) !== List.unifyType(that.value(), typeof that._value(dataItem));\n }\n if (shouldTrigger && that.trigger(SELECT, {\n dataItem: dataItem,\n item: current\n })) {\n return;\n }\n selection = that._select(current);\n } else if (that.input) {\n if (that._syncValueAndText() || that._isSelect) {\n that._accessor(that.input.val());\n }\n that.listView.value(that.input.val());\n }\n if (that._focusElement) {\n that._focusElement(that.wrapper);\n }\n if (activeFilter && key === keys.TAB) {\n that.wrapper.focusout();\n } else {\n if (selection && typeof selection.done === 'function') {\n selection.done(function () {\n that._blur();\n });\n } else {\n that._blur();\n }\n }\n that.close();\n pressed = true;\n } else if (key === keys.ESC) {\n if (that.popup.visible()) {\n e.preventDefault();\n }\n that.close();\n pressed = true;\n } else if (that.popup.visible() && (key === keys.PAGEDOWN || key === keys.PAGEUP)) {\n e.preventDefault();\n var direction = key === keys.PAGEDOWN ? 1 : -1;\n listView.scrollWith(direction * listView.screenHeight());\n pressed = true;\n }\n return pressed;\n },\n _fetchData: function () {\n var that = this;\n var hasItems = !!that.dataSource.view().length;\n if (that._request || that.options.cascadeFrom) {\n return;\n }\n if (!that.listView.bound() && !that._fetch && !hasItems) {\n that._fetch = true;\n that.dataSource.fetch().done(function () {\n that._fetch = false;\n });\n }\n },\n _options: function (data, optionLabel, value) {\n var that = this, element = that.element, htmlElement = element[0], length = data.length, options = '', option, dataItem, dataText, dataValue, idx = 0;\n if (optionLabel) {\n options = optionLabel;\n }\n for (; idx < length; idx++) {\n option = '<option';\n dataItem = data[idx];\n dataText = that._text(dataItem);\n dataValue = that._value(dataItem);\n if (dataValue !== undefined) {\n dataValue += '';\n if (dataValue.indexOf('\"') !== -1) {\n dataValue = dataValue.replace(quotRegExp, '"');\n }\n option += ' value=\"' + dataValue + '\"';\n }\n option += '>';\n if (dataText !== undefined) {\n option += htmlEncode(dataText);\n }\n option += '</option>';\n options += option;\n }\n element.html(options);\n if (value !== undefined) {\n htmlElement.value = value;\n if (htmlElement.value && !value) {\n htmlElement.selectedIndex = -1;\n }\n }\n if (htmlElement.selectedIndex !== -1) {\n option = getSelectedOption(htmlElement);\n if (option) {\n option.setAttribute(SELECTED, SELECTED);\n }\n }\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(that._initial);\n });\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _parentWidget: function () {\n var name = this.options.name;\n if (!this.options.cascadeFrom) {\n return;\n }\n var parentElement = $('#' + this.options.cascadeFrom);\n var parent = parentElement.data('kendo' + name);\n if (!parent) {\n for (var i = 0; i < alternativeNames[name].length; i += 1) {\n parent = parentElement.data('kendo' + alternativeNames[name][i]);\n if (!!parent) {\n break;\n }\n }\n }\n return parent;\n },\n _cascade: function () {\n var that = this;\n var options = that.options;\n var cascade = options.cascadeFrom;\n var parent;\n if (cascade) {\n parent = that._parentWidget();\n if (!parent) {\n return;\n }\n that._cascadeHandlerProxy = proxy(that._cascadeHandler, that);\n that._cascadeFilterRequests = [];\n options.autoBind = false;\n parent.bind('set', function () {\n that.one('set', function (e) {\n that._selectedValue = e.value || that._accessor();\n });\n });\n parent.first(CASCADE, that._cascadeHandlerProxy);\n if (parent.listView.bound()) {\n that._toggleCascadeOnFocus();\n that._cascadeSelect(parent);\n } else {\n parent.one('dataBound', function () {\n that._toggleCascadeOnFocus();\n if (parent.popup.visible()) {\n parent._focused.focus();\n }\n });\n if (!parent.value()) {\n that.enable(false);\n }\n }\n }\n },\n _toggleCascadeOnFocus: function () {\n var that = this;\n var parent = that._parentWidget();\n var focusout = isIE ? 'blur' : 'focusout';\n parent._focused.add(parent.filterInput).bind('focus', function () {\n parent.unbind(CASCADE, that._cascadeHandlerProxy);\n parent.first(CHANGE, that._cascadeHandlerProxy);\n });\n parent._focused.add(parent.filterInput).bind(focusout, function () {\n parent.unbind(CHANGE, that._cascadeHandlerProxy);\n parent.first(CASCADE, that._cascadeHandlerProxy);\n });\n },\n _cascadeHandler: function (e) {\n var parent = this._parentWidget();\n var valueBeforeCascade = this.value();\n this._userTriggered = e.userTriggered;\n if (this.listView.bound()) {\n this._clearSelection(parent, true);\n }\n this._cascadeSelect(parent, valueBeforeCascade);\n },\n _cascadeChange: function (parent) {\n var that = this;\n var value = that._accessor() || that._selectedValue;\n if (!that._cascadeFilterRequests.length) {\n that._selectedValue = null;\n }\n if (that._userTriggered) {\n that._clearSelection(parent, true);\n } else if (value) {\n if (value !== unifyType(that.listView.value()[0], typeof value)) {\n that.value(value);\n }\n if (!that.dataSource.view()[0] || that.selectedIndex === -1) {\n that._clearSelection(parent, true);\n }\n } else if (that.dataSource.flatView().length) {\n that.select(that.options.index);\n }\n that.enable();\n that._triggerCascade();\n that._triggerChange();\n that._userTriggered = false;\n },\n _cascadeSelect: function (parent, valueBeforeCascade) {\n var that = this;\n var dataItem = parent.dataItem();\n var filterValue = dataItem ? dataItem[that.options.cascadeFromParentField] || parent._value(dataItem) : null;\n var valueField = that.options.cascadeFromField || parent.options.dataValueField;\n var expressions;\n that._valueBeforeCascade = valueBeforeCascade !== undefined ? valueBeforeCascade : that.value();\n if (filterValue || filterValue === 0) {\n expressions = that.dataSource.filter() || {};\n removeFiltersForField(expressions, valueField);\n var handler = function () {\n var currentHandler = that._cascadeFilterRequests.shift();\n if (currentHandler) {\n that.unbind('dataBound', currentHandler);\n }\n currentHandler = that._cascadeFilterRequests[0];\n if (currentHandler) {\n that.first('dataBound', currentHandler);\n }\n that._cascadeChange(parent);\n };\n that._cascadeFilterRequests.push(handler);\n if (that._cascadeFilterRequests.length === 1) {\n that.first('dataBound', handler);\n }\n that._cascading = true;\n that._filterSource({\n field: valueField,\n operator: 'eq',\n value: filterValue\n });\n that._cascading = false;\n } else {\n that.enable(false);\n that._clearSelection(parent);\n that._triggerCascade();\n that._triggerChange();\n that._userTriggered = false;\n }\n }\n });\n var STATIC_LIST_NS = '.StaticList';\n var StaticList = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.attr('role', 'listbox').on('click' + STATIC_LIST_NS, 'li', proxy(this._click, this)).on('mouseenter' + STATIC_LIST_NS, 'li', function () {\n $(this).addClass(HOVER);\n }).on('mouseleave' + STATIC_LIST_NS, 'li', function () {\n $(this).removeClass(HOVER);\n });\n if (support.touch) {\n this._touchHandlers();\n }\n if (this.options.selectable === 'multiple') {\n this.element.attr('aria-multiselectable', true);\n }\n this.content = this.element.wrap('<div class=\\'k-list-scroller\\' unselectable=\\'on\\'></div>').parent();\n this.header = this.content.before('<div class=\"k-group-header\" style=\"display:none\"></div>').prev();\n this.bound(false);\n this._optionID = kendo.guid();\n this._selectedIndices = [];\n this._view = [];\n this._dataItems = [];\n this._values = [];\n var value = this.options.value;\n if (value) {\n this._values = $.isArray(value) ? value.slice(0) : [value];\n }\n this._getter();\n this._templates();\n this.setDataSource(this.options.dataSource);\n this._onScroll = proxy(function () {\n var that = this;\n clearTimeout(that._scrollId);\n that._scrollId = setTimeout(function () {\n that._renderHeader();\n }, 50);\n }, this);\n },\n options: {\n name: 'StaticList',\n dataValueField: null,\n valuePrimitive: false,\n selectable: true,\n template: null,\n groupTemplate: null,\n fixedGroupTemplate: null\n },\n events: [\n 'click',\n CHANGE,\n 'activate',\n 'deactivate',\n 'dataBinding',\n 'dataBound',\n 'selectedItemChange'\n ],\n setDataSource: function (source) {\n var that = this;\n var dataSource = source || {};\n var value;\n dataSource = $.isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource = kendo.data.DataSource.create(dataSource);\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n value = that.value();\n that.value([]);\n that.bound(false);\n that.value(value);\n } else {\n that._refreshHandler = proxy(that.refresh, that);\n }\n that.setDSFilter(dataSource.filter());\n that.dataSource = dataSource.bind(CHANGE, that._refreshHandler);\n that._fixedHeader();\n },\n _touchHandlers: function () {\n var that = this;\n var startY;\n var endY;\n var tapPosition = function (event) {\n return (event.originalEvent || event).changedTouches[0].pageY;\n };\n that.element.on('touchstart' + STATIC_LIST_NS, function (e) {\n startY = tapPosition(e);\n });\n that.element.on('touchend' + STATIC_LIST_NS, function (e) {\n if (e.isDefaultPrevented()) {\n return;\n }\n endY = tapPosition(e);\n if (Math.abs(endY - startY) < 10) {\n that._touchTriggered = true;\n that._triggerClick($(e.target).closest(ITEMSELECTOR).get(0));\n }\n });\n },\n skip: function () {\n return this.dataSource.skip();\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._getter();\n this._templates();\n this._render();\n },\n destroy: function () {\n this.element.off(STATIC_LIST_NS);\n if (this._refreshHandler) {\n this.dataSource.unbind(CHANGE, this._refreshHandler);\n }\n clearTimeout(this._scrollId);\n Widget.fn.destroy.call(this);\n },\n dataItemByIndex: function (index) {\n return this.dataSource.flatView()[index];\n },\n screenHeight: function () {\n return this.content[0].clientHeight;\n },\n scrollToIndex: function (index) {\n var item = this.element[0].children[index];\n if (item) {\n this.scroll(item);\n }\n },\n scrollWith: function (value) {\n this.content.scrollTop(this.content.scrollTop() + value);\n },\n scroll: function (item) {\n if (!item) {\n return;\n }\n if (item[0]) {\n item = item[0];\n }\n var content = this.content[0], itemOffsetTop = item.offsetTop, itemOffsetHeight = item.offsetHeight, contentScrollTop = content.scrollTop, contentOffsetHeight = content.clientHeight, bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n } else if (bottomDistance > contentScrollTop + contentOffsetHeight) {\n contentScrollTop = bottomDistance - contentOffsetHeight;\n }\n content.scrollTop = contentScrollTop;\n },\n selectedDataItems: function (dataItems) {\n if (dataItems === undefined) {\n return this._dataItems.slice();\n }\n this._dataItems = dataItems;\n this._values = this._getValues(dataItems);\n },\n _getValues: function (dataItems) {\n var getter = this._valueGetter;\n return $.map(dataItems, function (dataItem) {\n return getter(dataItem);\n });\n },\n focusNext: function () {\n var current = this.focus();\n if (!current) {\n current = 0;\n } else {\n current = current.next();\n }\n this.focus(current);\n },\n focusPrev: function () {\n var current = this.focus();\n if (!current) {\n current = this.element[0].children.length - 1;\n } else {\n current = current.prev();\n }\n this.focus(current);\n },\n focusFirst: function () {\n this.focus(this.element[0].children[0]);\n },\n focusLast: function () {\n this.focus(last(this.element[0].children));\n },\n focus: function (candidate) {\n var that = this;\n var id = that._optionID;\n var hasCandidate;\n if (candidate === undefined) {\n return that._current;\n }\n candidate = last(that._get(candidate));\n candidate = $(this.element[0].children[candidate]);\n if (that._current) {\n that._current.removeClass(FOCUSED).removeAttr(ID);\n that.trigger('deactivate');\n }\n hasCandidate = !!candidate[0];\n if (hasCandidate) {\n candidate.addClass(FOCUSED);\n that.scroll(candidate);\n candidate.attr('id', id);\n }\n that._current = hasCandidate ? candidate : null;\n that.trigger('activate');\n },\n focusIndex: function () {\n return this.focus() ? this.focus().index() : undefined;\n },\n skipUpdate: function (skipUpdate) {\n this._skipUpdate = skipUpdate;\n },\n select: function (indices) {\n var that = this;\n var selectable = that.options.selectable;\n var singleSelection = selectable !== 'multiple' && selectable !== false;\n var selectedIndices = that._selectedIndices;\n var uiSelectedIndices = [this.element.find('.k-state-selected').index()];\n var added = [];\n var removed = [];\n var result;\n if (indices === undefined) {\n return selectedIndices.slice();\n }\n indices = that._get(indices);\n if (indices.length === 1 && indices[0] === -1) {\n indices = [];\n }\n var deferred = $.Deferred().resolve();\n var filtered = that.isFiltered();\n if (filtered && !singleSelection && that._deselectFiltered(indices)) {\n return deferred;\n }\n if (singleSelection && !filtered && $.inArray(last(indices), selectedIndices) !== -1 && $.inArray(last(indices), uiSelectedIndices) !== -1) {\n if (that._dataItems.length && that._view.length) {\n that._dataItems = [that._view[selectedIndices[0]].item];\n }\n return deferred;\n }\n result = that._deselect(indices);\n removed = result.removed;\n indices = result.indices;\n if (indices.length) {\n if (singleSelection) {\n indices = [last(indices)];\n }\n added = that._select(indices);\n }\n if (added.length || removed.length) {\n that._valueComparer = null;\n that.trigger(CHANGE, {\n added: added,\n removed: removed\n });\n }\n return deferred;\n },\n removeAt: function (position) {\n this._selectedIndices.splice(position, 1);\n this._values.splice(position, 1);\n this._valueComparer = null;\n return {\n position: position,\n dataItem: this._dataItems.splice(position, 1)[0]\n };\n },\n setValue: function (value) {\n value = $.isArray(value) || value instanceof ObservableArray ? value.slice(0) : [value];\n this._values = value;\n this._valueComparer = null;\n },\n value: function (value) {\n var that = this;\n var deferred = that._valueDeferred;\n var indices;\n if (value === undefined) {\n return that._values.slice();\n }\n that.setValue(value);\n if (!deferred || deferred.state() === 'resolved') {\n that._valueDeferred = deferred = $.Deferred();\n }\n if (that.bound()) {\n indices = that._valueIndices(that._values);\n if (that.options.selectable === 'multiple') {\n that.select(-1);\n }\n that.select(indices);\n deferred.resolve();\n }\n that._skipUpdate = false;\n return deferred;\n },\n items: function () {\n return this.element.children(ITEMSELECTOR);\n },\n _click: function (e) {\n if (this._touchTriggered) {\n this._touchTriggered = false;\n return;\n }\n if (!e.isDefaultPrevented()) {\n this._triggerClick(e.currentTarget);\n }\n },\n _triggerClick: function (item) {\n if (!this.trigger('click', { item: $(item) })) {\n this.select(item);\n }\n },\n _valueExpr: function (type, values) {\n var that = this;\n var idx = 0;\n var body;\n var comparer;\n var normalized = [];\n if (!that._valueComparer || that._valueType !== type) {\n that._valueType = type;\n for (; idx < values.length; idx++) {\n normalized.push(unifyType(values[idx], type));\n }\n body = 'for (var idx = 0; idx < ' + normalized.length + '; idx++) {' + ' if (current === values[idx]) {' + ' return idx;' + ' }' + '} ' + 'return -1;';\n comparer = new Function('current', 'values', body);\n that._valueComparer = function (current) {\n return comparer(current, normalized);\n };\n }\n return that._valueComparer;\n },\n _dataItemPosition: function (dataItem, values) {\n var value = this._valueGetter(dataItem);\n var valueExpr = this._valueExpr(typeof value, values);\n return valueExpr(value);\n },\n _getter: function () {\n this._valueGetter = kendo.getter(this.options.dataValueField);\n },\n _deselect: function (indices) {\n var that = this;\n var children = that.element[0].children;\n var selectable = that.options.selectable;\n var selectedIndices = that._selectedIndices;\n var dataItems = that._dataItems;\n var values = that._values;\n var removed = [];\n var i = 0;\n var j;\n var index, selectedIndex;\n var removedIndices = 0;\n indices = indices.slice();\n if (selectable === true || !indices.length) {\n for (; i < selectedIndices.length; i++) {\n $(children[selectedIndices[i]]).removeClass('k-state-selected').attr('aria-selected', false);\n removed.push({\n position: i,\n dataItem: dataItems[i]\n });\n }\n that._values = [];\n that._dataItems = [];\n that._selectedIndices = [];\n } else if (selectable === 'multiple') {\n for (; i < indices.length; i++) {\n index = indices[i];\n if (!$(children[index]).hasClass('k-state-selected')) {\n continue;\n }\n for (j = 0; j < selectedIndices.length; j++) {\n selectedIndex = selectedIndices[j];\n if (selectedIndex === index) {\n $(children[selectedIndex]).removeClass('k-state-selected').attr('aria-selected', false);\n removed.push({\n position: j + removedIndices,\n dataItem: dataItems.splice(j, 1)[0]\n });\n selectedIndices.splice(j, 1);\n indices.splice(i, 1);\n values.splice(j, 1);\n removedIndices += 1;\n i -= 1;\n j -= 1;\n break;\n }\n }\n }\n }\n return {\n indices: indices,\n removed: removed\n };\n },\n _deselectFiltered: function (indices) {\n var children = this.element[0].children;\n var dataItem, index, position;\n var removed = [];\n var idx = 0;\n for (; idx < indices.length; idx++) {\n index = indices[idx];\n dataItem = this._view[index].item;\n position = this._dataItemPosition(dataItem, this._values);\n if (position > -1) {\n removed.push(this.removeAt(position));\n $(children[index]).removeClass('k-state-selected');\n }\n }\n if (removed.length) {\n this.trigger(CHANGE, {\n added: [],\n removed: removed\n });\n return true;\n }\n return false;\n },\n _select: function (indices) {\n var that = this;\n var children = that.element[0].children;\n var data = that._view;\n var dataItem, index;\n var added = [];\n var idx = 0;\n if (last(indices) !== -1) {\n that.focus(indices);\n }\n for (; idx < indices.length; idx++) {\n index = indices[idx];\n dataItem = data[index];\n if (index === -1 || !dataItem) {\n continue;\n }\n dataItem = dataItem.item;\n that._selectedIndices.push(index);\n that._dataItems.push(dataItem);\n that._values.push(that._valueGetter(dataItem));\n $(children[index]).addClass('k-state-selected').attr('aria-selected', true);\n added.push({ dataItem: dataItem });\n }\n return added;\n },\n getElementIndex: function (element) {\n return $(element).data('offset-index');\n },\n _get: function (candidate) {\n if (typeof candidate === 'number') {\n candidate = [candidate];\n } else if (!isArray(candidate)) {\n candidate = this.getElementIndex(candidate);\n candidate = [candidate !== undefined ? candidate : -1];\n }\n return candidate;\n },\n _template: function () {\n var that = this;\n var options = that.options;\n var template = options.template;\n if (!template) {\n template = kendo.template('<li tabindex=\"-1\" role=\"option\" unselectable=\"on\" class=\"k-item\">${' + kendo.expr(options.dataTextField, 'data') + '}</li>', { useWithBlock: false });\n } else {\n template = kendo.template(template);\n template = function (data) {\n return '<li tabindex=\"-1\" role=\"option\" unselectable=\"on\" class=\"k-item\">' + template(data) + '</li>';\n };\n }\n return template;\n },\n _templates: function () {\n var template;\n var options = this.options;\n var templates = {\n template: options.template,\n groupTemplate: options.groupTemplate,\n fixedGroupTemplate: options.fixedGroupTemplate\n };\n if (options.columns) {\n for (var i = 0; i < options.columns.length; i++) {\n var currentColumn = options.columns[i];\n var templateText = currentColumn.field ? currentColumn.field.toString() : 'text';\n templates['column' + i] = currentColumn.template || '#: ' + templateText + '#';\n }\n }\n for (var key in templates) {\n template = templates[key];\n if (template && typeof template !== 'function') {\n templates[key] = kendo.template(template);\n }\n }\n this.templates = templates;\n },\n _normalizeIndices: function (indices) {\n var newIndices = [];\n var idx = 0;\n for (; idx < indices.length; idx++) {\n if (indices[idx] !== undefined) {\n newIndices.push(indices[idx]);\n }\n }\n return newIndices;\n },\n _valueIndices: function (values, indices) {\n var data = this._view;\n var idx = 0;\n var index;\n indices = indices ? indices.slice() : [];\n if (!values.length) {\n return [];\n }\n for (; idx < data.length; idx++) {\n index = this._dataItemPosition(data[idx].item, values);\n if (index !== -1) {\n indices[index] = idx;\n }\n }\n return this._normalizeIndices(indices);\n },\n _firstVisibleItem: function () {\n var element = this.element[0];\n var content = this.content[0];\n var scrollTop = content.scrollTop;\n var itemHeight = $(element.children[0]).height();\n var itemIndex = Math.floor(scrollTop / itemHeight) || 0;\n var item = element.children[itemIndex] || element.lastChild;\n var forward = item.offsetTop < scrollTop;\n while (item) {\n if (forward) {\n if (item.offsetTop + itemHeight > scrollTop || !item.nextSibling) {\n break;\n }\n item = item.nextSibling;\n } else {\n if (item.offsetTop <= scrollTop || !item.previousSibling) {\n break;\n }\n item = item.previousSibling;\n }\n }\n return this._view[$(item).data('offset-index')];\n },\n _fixedHeader: function () {\n if (this.isGrouped() && this.templates.fixedGroupTemplate) {\n this.header.show();\n this.content.scroll(this._onScroll);\n } else {\n this.header.hide();\n this.content.off('scroll', this._onScroll);\n }\n },\n _renderHeader: function () {\n var template = this.templates.fixedGroupTemplate;\n if (!template) {\n return;\n }\n var visibleItem = this._firstVisibleItem();\n if (visibleItem && visibleItem.group.toString().length) {\n this.header.html(template(visibleItem.group));\n }\n },\n _renderItem: function (context) {\n var item = '<li tabindex=\"-1\" role=\"option\" unselectable=\"on\" class=\"k-item';\n var dataItem = context.item;\n var notFirstItem = context.index !== 0;\n var selected = context.selected;\n var isGrouped = this.isGrouped();\n var hasColumns = this.options.columns && this.options.columns.length;\n if (notFirstItem && context.newGroup) {\n item += ' k-first';\n }\n if (context.isLastGroupedItem && hasColumns) {\n item += ' k-last';\n }\n if (selected) {\n item += ' k-state-selected';\n }\n item += '\" aria-selected=\"' + (selected ? 'true' : 'false') + '\" data-offset-index=\"' + context.index + '\">';\n if (hasColumns) {\n item += this._renderColumns(dataItem);\n } else {\n item += this.templates.template(dataItem);\n }\n if (notFirstItem && context.newGroup) {\n if (hasColumns) {\n item += '<div class=\"k-cell k-group-cell\"><span>' + this.templates.groupTemplate(context.group) + '</span></div>';\n } else {\n item += '<div class=\"k-group\">' + this.templates.groupTemplate(context.group) + '</div>';\n }\n } else if (isGrouped && hasColumns) {\n item += '<div class=\\'k-cell k-spacer-cell\\'></div>';\n }\n return item + '</li>';\n },\n _renderColumns: function (dataItem) {\n var item = '';\n for (var i = 0; i < this.options.columns.length; i++) {\n var currentWidth = this.options.columns[i].width;\n var currentWidthInt = parseInt(currentWidth, 10);\n var widthStyle = '';\n if (currentWidth && !isNaN(currentWidthInt)) {\n widthStyle += 'style=\\'width:';\n widthStyle += currentWidthInt;\n widthStyle += percentageUnitsRegex.test(currentWidth) ? '%' : 'px';\n widthStyle += ';\\'';\n }\n item += '<span class=\\'k-cell\\' ' + widthStyle + '>';\n item += this.templates['column' + i](dataItem);\n item += '</span>';\n }\n return item;\n },\n _render: function () {\n var html = '';\n var i = 0;\n var idx = 0;\n var context;\n var dataContext = [];\n var view = this.dataSource.view();\n var values = this.value();\n var group, newGroup, j;\n var isGrouped = this.isGrouped();\n if (isGrouped) {\n for (i = 0; i < view.length; i++) {\n group = view[i];\n newGroup = true;\n for (j = 0; j < group.items.length; j++) {\n context = {\n selected: this._selected(group.items[j], values),\n item: group.items[j],\n group: group.value,\n newGroup: newGroup,\n isLastGroupedItem: j === group.items.length - 1,\n index: idx\n };\n dataContext[idx] = context;\n idx += 1;\n html += this._renderItem(context);\n newGroup = false;\n }\n }\n } else {\n for (i = 0; i < view.length; i++) {\n context = {\n selected: this._selected(view[i], values),\n item: view[i],\n index: i\n };\n dataContext[i] = context;\n html += this._renderItem(context);\n }\n }\n this._view = dataContext;\n this.element[0].innerHTML = html;\n if (isGrouped && dataContext.length) {\n this._renderHeader();\n }\n },\n _selected: function (dataItem, values) {\n var select = !this.isFiltered() || this.options.selectable === 'multiple';\n return select && this._dataItemPosition(dataItem, values) !== -1;\n },\n setDSFilter: function (filter) {\n this._lastDSFilter = extend({}, filter);\n },\n isFiltered: function () {\n if (!this._lastDSFilter) {\n this.setDSFilter(this.dataSource.filter());\n }\n return !kendo.data.Query.compareFilters(this.dataSource.filter(), this._lastDSFilter);\n },\n refresh: function (e) {\n var that = this;\n var action = e && e.action;\n var skipUpdateOnBind = that.options.skipUpdateOnBind;\n var isItemChange = action === 'itemchange';\n var result;\n that.trigger('dataBinding');\n that._angularItems('cleanup');\n that._fixedHeader();\n that._render();\n that.bound(true);\n if (isItemChange || action === 'remove') {\n result = mapChangedItems(that._dataItems, e.items);\n if (result.changed.length) {\n if (isItemChange) {\n that.trigger('selectedItemChange', { items: result.changed });\n } else {\n that.value(that._getValues(result.unchanged));\n }\n }\n } else if (that.isFiltered() || that._skipUpdate || that._emptySearch) {\n that.focus(0);\n if (that._skipUpdate) {\n that._skipUpdate = false;\n that._selectedIndices = that._valueIndices(that._values, that._selectedIndices);\n }\n } else if (!skipUpdateOnBind && (!action || action === 'add')) {\n that.value(that._values);\n }\n if (that._valueDeferred) {\n that._valueDeferred.resolve();\n }\n that._angularItems('compile');\n that.trigger('dataBound');\n },\n bound: function (bound) {\n if (bound === undefined) {\n return this._bound;\n }\n this._bound = bound;\n },\n isGrouped: function () {\n return (this.dataSource.group() || []).length;\n }\n });\n ui.plugin(StaticList);\n function last(list) {\n return list[list.length - 1];\n }\n function getSelectedOption(select) {\n var index = select.selectedIndex;\n return index > -1 ? select.options[index] : {};\n }\n function mapChangedItems(selected, itemsToMatch) {\n var itemsLength = itemsToMatch.length;\n var selectedLength = selected.length;\n var dataItem;\n var found;\n var i, j;\n var changed = [];\n var unchanged = [];\n if (selectedLength) {\n for (i = 0; i < selectedLength; i++) {\n dataItem = selected[i];\n found = false;\n for (j = 0; j < itemsLength; j++) {\n if (dataItem === itemsToMatch[j]) {\n found = true;\n changed.push({\n index: i,\n item: dataItem\n });\n break;\n }\n }\n if (!found) {\n unchanged.push(dataItem);\n }\n }\n }\n return {\n changed: changed,\n unchanged: unchanged\n };\n }\n function isValidFilterExpr(expression) {\n if (!expression || $.isEmptyObject(expression)) {\n return false;\n }\n if (expression.filters && !expression.filters.length) {\n return false;\n }\n return true;\n }\n function removeFiltersForField(expression, field) {\n var filters;\n var found = false;\n if (expression.filters) {\n filters = $.grep(expression.filters, function (filter) {\n found = removeFiltersForField(filter, field);\n if (filter.filters) {\n return filter.filters.length;\n } else {\n return filter.field != field;\n }\n });\n if (!found && expression.filters.length !== filters.length) {\n found = true;\n }\n expression.filters = filters;\n }\n return found;\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.calendar', [\n 'kendo.core',\n 'kendo.selectable'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'calendar',\n name: 'Calendar',\n category: 'web',\n description: 'The Calendar widget renders a graphical calendar that supports navigation and selection.',\n depends: [\n 'core',\n 'selectable'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, support = kendo.support, ui = kendo.ui, Widget = ui.Widget, keys = kendo.keys, parse = kendo.parseDate, adjustDST = kendo.date.adjustDST, weekInYear = kendo.date.weekInYear, Selectable = kendo.ui.Selectable, extractFormat = kendo._extractFormat, template = kendo.template, getCulture = kendo.getCulture, transitions = kendo.support.transitions, transitionOrigin = transitions ? transitions.css + 'transform-origin' : '', cellTemplate = template('<td#=data.cssClass# role=\"gridcell\"><a tabindex=\"-1\" class=\"k-link\" href=\"\\\\#\" data-#=data.ns#value=\"#=data.dateString#\">#=data.value#</a></td>', { useWithBlock: false }), emptyCellTemplate = template('<td role=\"gridcell\" class=\"k-out-of-range\"><a class=\"k-link\"></a></td>', { useWithBlock: false }), otherMonthCellTemplate = template('<td role=\"gridcell\" class=\"k-out-of-range\"> </td>', { useWithBlock: false }), weekNumberTemplate = template('<td class=\"k-alt\">#= data.weekNumber #</td>', { useWithBlock: false }), browser = kendo.support.browser, isIE8 = browser.msie && browser.version < 9, outerWidth = kendo._outerWidth, ns = '.kendoCalendar', CLICK = 'click' + ns, KEYDOWN_NS = 'keydown' + ns, ID = 'id', MIN = 'min', LEFT = 'left', SLIDE = 'slideIn', MONTH = 'month', CENTURY = 'century', CHANGE = 'change', NAVIGATE = 'navigate', VALUE = 'value', HOVER = 'k-state-hover', DISABLED = 'k-state-disabled', FOCUSED = 'k-state-focused', OTHERMONTH = 'k-other-month', OTHERMONTHCLASS = ' class=\"' + OTHERMONTH + '\"', OUTOFRANGE = 'k-out-of-range', TODAY = 'k-nav-today', CELLSELECTOR = 'td:has(.k-link)', CELLSELECTORVALID = 'td:has(.k-link):not(.' + DISABLED + '):not(.' + OUTOFRANGE + ')', WEEKCOLUMNSELECTOR = 'td:not(:has(.k-link))', SELECTED = 'k-state-selected', BLUR = 'blur' + ns, FOCUS = 'focus', FOCUS_WITH_NS = FOCUS + ns, MOUSEENTER = support.touch ? 'touchstart' : 'mouseenter', MOUSEENTER_WITH_NS = support.touch ? 'touchstart' + ns : 'mouseenter' + ns, MOUSELEAVE = support.touch ? 'touchend' + ns + ' touchmove' + ns : 'mouseleave' + ns, MS_PER_MINUTE = 60000, MS_PER_DAY = 86400000, PREVARROW = '_prevArrow', NEXTARROW = '_nextArrow', ARIA_DISABLED = 'aria-disabled', ARIA_SELECTED = 'aria-selected', ARIA_LABEL = 'aria-label', proxy = $.proxy, extend = $.extend, DATE = Date, views = {\n month: 0,\n year: 1,\n decade: 2,\n century: 3\n };\n var Calendar = Widget.extend({\n init: function (element, options) {\n var that = this, value, id;\n Widget.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n options = that.options;\n options.url = kendo.unescape(options.url);\n that.options.disableDates = getDisabledExpr(that.options.disableDates);\n that._templates();\n that._selectable();\n that._header();\n that._viewWrapper();\n that._footer(that.footer);\n id = element.addClass('k-widget k-calendar ' + (options.weekNumber ? ' k-week-number' : '')).on(MOUSEENTER_WITH_NS + ' ' + MOUSELEAVE, CELLSELECTOR, mousetoggle).on(KEYDOWN_NS, 'table.k-content', proxy(that._move, that)).on(CLICK, CELLSELECTOR, function (e) {\n var link = e.currentTarget.firstChild, value = toDateObject(link);\n if (link.href.indexOf('#') != -1) {\n e.preventDefault();\n }\n if (that._view.name == 'month' && that.options.disableDates(value)) {\n return;\n }\n if (that._view.name != 'month' || options.selectable == 'single') {\n that._click($(link));\n }\n }).on('mouseup' + ns, 'table.k-content, .k-footer', function () {\n that._focusView(that.options.focusOnNav !== false);\n }).attr(ID);\n if (id) {\n that._cellID = id + '_cell_selected';\n }\n if (that._isMultipleSelection() && that.options.weekNumber) {\n element.on(CLICK, WEEKCOLUMNSELECTOR, function (e) {\n var first = $(e.currentTarget).closest('tr').find(CELLSELECTORVALID).first(), last = that.selectable._lastActive = $(e.currentTarget).closest('tr').find(CELLSELECTORVALID).last();\n that.selectable.selectRange(first, last, { event: e });\n that._current = that._value = toDateObject(last.find('a'));\n that._class(FOCUSED, that._current);\n });\n }\n normalize(options);\n value = parse(options.value, options.format, options.culture);\n that._selectDates = [];\n that._index = views[options.start];\n that._current = new DATE(+restrictValue(value, options.min, options.max));\n that._addClassProxy = function () {\n that._active = true;\n if (that._cell.hasClass(DISABLED)) {\n var todayString = that._view.toDateString(getToday());\n that._cell = that._cellByDate(todayString);\n }\n that._cell.addClass(FOCUSED);\n };\n that._removeClassProxy = function () {\n that._active = false;\n that._cell.removeClass(FOCUSED);\n };\n that.value(value);\n if (that._isMultipleSelection() && options.selectDates.length > 0) {\n that.selectDates(options.selectDates);\n }\n kendo.notify(that);\n },\n options: {\n name: 'Calendar',\n value: null,\n min: new DATE(1900, 0, 1),\n max: new DATE(2099, 11, 31),\n dates: [],\n disableDates: null,\n url: '',\n culture: '',\n footer: '',\n format: '',\n month: {},\n weekNumber: false,\n selectable: 'single',\n selectDates: [],\n start: MONTH,\n depth: MONTH,\n animation: {\n horizontal: {\n effects: SLIDE,\n reverse: true,\n duration: 500,\n divisor: 2\n },\n vertical: {\n effects: 'zoomIn',\n duration: 400\n }\n },\n messages: { weekColumnHeader: '' }\n },\n events: [\n CHANGE,\n NAVIGATE\n ],\n setOptions: function (options) {\n var that = this;\n normalize(options);\n options.disableDates = getDisabledExpr(options.disableDates);\n Widget.fn.setOptions.call(that, options);\n that._templates();\n that._selectable();\n that._viewWrapper();\n that._footer(that.footer);\n that._index = views[that.options.start];\n that.navigate();\n if (options.weekNumber) {\n that.element.addClass('k-week-number');\n }\n },\n destroy: function () {\n var that = this, today = that._today;\n that.element.off(ns);\n that._title.off(ns);\n that[PREVARROW].off(ns);\n that[NEXTARROW].off(ns);\n that._destroySelectable();\n kendo.destroy(that._table);\n if (today) {\n kendo.destroy(today.off(ns));\n }\n Widget.fn.destroy.call(that);\n },\n current: function () {\n return this._current;\n },\n view: function () {\n return this._view;\n },\n focus: function (table) {\n table = table || this._table;\n this._bindTable(table);\n table.trigger('focus');\n },\n min: function (value) {\n return this._option(MIN, value);\n },\n max: function (value) {\n return this._option('max', value);\n },\n navigateToPast: function () {\n this._navigate(PREVARROW, -1);\n },\n navigateToFuture: function () {\n this._navigate(NEXTARROW, 1);\n },\n navigateUp: function () {\n var that = this, index = that._index;\n if (that._title.hasClass(DISABLED)) {\n return;\n }\n that.navigate(that._current, ++index);\n },\n navigateDown: function (value) {\n var that = this, index = that._index, depth = that.options.depth;\n if (!value) {\n return;\n }\n if (index === views[depth]) {\n if (!isEqualDate(that._value, that._current) || !isEqualDate(that._value, value)) {\n that.value(value);\n that.trigger(CHANGE);\n }\n return;\n }\n that.navigate(value, --index);\n },\n navigate: function (value, view) {\n view = isNaN(view) ? views[view] : view;\n var that = this, options = that.options, culture = options.culture, min = options.min, max = options.max, title = that._title, from = that._table, old = that._oldTable, currentValue = that._current, future = value && +value > +currentValue, vertical = view !== undefined && view !== that._index, to, currentView, compare, disabled;\n if (!value) {\n value = currentValue;\n }\n that._current = value = new DATE(+restrictValue(value, min, max));\n if (view === undefined) {\n view = that._index;\n } else {\n that._index = view;\n }\n that._view = currentView = calendar.views[view];\n compare = currentView.compare;\n disabled = view === views[CENTURY];\n title.toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n disabled = compare(value, min) < 1;\n that[PREVARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n if (that[PREVARROW].hasClass(DISABLED)) {\n that[PREVARROW].removeClass(HOVER);\n }\n disabled = compare(value, max) > -1;\n that[NEXTARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n if (that[NEXTARROW].hasClass(DISABLED)) {\n that[NEXTARROW].removeClass(HOVER);\n }\n if (from && old && old.data('animating')) {\n old.kendoStop(true, true);\n from.kendoStop(true, true);\n }\n that._oldTable = from;\n if (!from || that._changeView) {\n title.html(currentView.title(value, min, max, culture));\n that._table = to = $(currentView.content(extend({\n min: min,\n max: max,\n date: value,\n url: options.url,\n dates: options.dates,\n format: options.format,\n otherMonth: true,\n culture: culture,\n disableDates: options.disableDates,\n isWeekColumnVisible: options.weekNumber,\n messages: options.messages\n }, that[currentView.name])));\n addClassToViewContainer(to, currentView.name);\n makeUnselectable(to);\n var replace = from && from.data('start') === to.data('start');\n that._animate({\n from: from,\n to: to,\n vertical: vertical,\n future: future,\n replace: replace\n });\n that.trigger(NAVIGATE);\n that._focus(value);\n }\n if (view === views[options.depth] && that._selectDates.length > 0) {\n that._visualizeSelectedDatesInView();\n }\n if (that.options.selectable === 'single') {\n if (view === views[options.depth] && that._value && !that.options.disableDates(that._value)) {\n that._class('k-state-selected', that._value);\n }\n }\n that._class(FOCUSED, value);\n if (!from && that._cell) {\n that._cell.removeClass(FOCUSED);\n }\n that._changeView = true;\n },\n selectDates: function (dates) {\n var that = this, validSelectedDates, datesUnique;\n if (dates === undefined) {\n return that._selectDates;\n }\n datesUnique = dates.map(function (date) {\n return date.getTime();\n }).filter(function (date, position, array) {\n return array.indexOf(date) === position;\n }).map(function (time) {\n return new Date(time);\n });\n validSelectedDates = $.grep(datesUnique, function (value) {\n if (value) {\n return +that._validateValue(new Date(value.setHours(0, 0, 0, 0))) === +value;\n }\n });\n that._selectDates = validSelectedDates.length > 0 ? validSelectedDates : datesUnique.length === 0 ? datesUnique : that._selectDates;\n that._visualizeSelectedDatesInView();\n },\n value: function (value) {\n var that = this, old = that._view, view = that._view;\n if (value === undefined) {\n return that._value;\n }\n value = that._validateValue(value);\n if (value && that._isMultipleSelection()) {\n var date = new Date(+value);\n date.setHours(0, 0, 0, 0);\n that._selectDates = [date];\n that.selectable._lastActive = null;\n }\n if (old && value === null && that._cell) {\n that._cell.removeClass(SELECTED);\n } else {\n that._changeView = !value || view && view.compare(value, that._current) !== 0;\n that.navigate(value);\n }\n },\n _validateValue: function (value) {\n var that = this, options = that.options, min = options.min, max = options.max;\n if (value === null) {\n that._current = createDate(that._current.getFullYear(), that._current.getMonth(), that._current.getDate());\n }\n value = parse(value, options.format, options.culture);\n if (value !== null) {\n value = new DATE(+value);\n if (!isInRange(value, min, max)) {\n value = null;\n }\n }\n if (value === null || !that.options.disableDates(new Date(+value))) {\n that._value = value;\n } else if (that._value === undefined) {\n that._value = null;\n }\n return that._value;\n },\n _visualizeSelectedDatesInView: function () {\n var that = this;\n var selectedDates = {};\n $.each(that._selectDates, function (index, value) {\n selectedDates[kendo.calendar.views[0].toDateString(value)] = value;\n });\n that.selectable.clear();\n var cells = that._table.find(CELLSELECTOR).filter(function (index, element) {\n return selectedDates[$(element.firstChild).attr(kendo.attr(VALUE))];\n });\n if (cells.length > 0) {\n that.selectable._selectElement(cells, true);\n }\n },\n _isMultipleSelection: function () {\n var that = this;\n return that.options.selectable === 'multiple';\n },\n _selectable: function () {\n var that = this;\n if (!that._isMultipleSelection()) {\n return;\n }\n var selectable = that.options.selectable, selectableOptions = Selectable.parseOptions(selectable);\n if (selectableOptions.multiple) {\n that.element.attr('aria-multiselectable', 'true');\n }\n that.selectable = new Selectable(that.wrapper, {\n aria: true,\n inputSelectors: 'input,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up',\n multiple: selectableOptions.multiple,\n filter: 'table.k-month:eq(0) ' + CELLSELECTORVALID,\n change: proxy(that._onSelect, that),\n relatedTarget: proxy(that._onRelatedTarget, that)\n });\n },\n _onRelatedTarget: function (target) {\n var that = this;\n if (that.selectable.options.multiple && target.is(CELLSELECTORVALID)) {\n that._current = toDateObject(target.find('a'));\n that._class(FOCUSED, toDateObject(target.find('a')));\n }\n },\n _onSelect: function (e) {\n var that = this, eventArgs = e, selectableOptions = Selectable.parseOptions(that.options.selectable);\n if (!selectableOptions.multiple) {\n if ($(eventArgs.event.currentTarget).is('td') && !$(eventArgs.event.currentTarget).hasClass('k-state-selected')) {\n $(eventArgs.event.currentTarget).addClass('k-state-selected');\n } else {\n that._click($(eventArgs.event.currentTarget).find('a'));\n }\n return;\n }\n if (eventArgs.event.ctrlKey || eventArgs.event.metaKey) {\n if ($(eventArgs.event.currentTarget).is(CELLSELECTORVALID)) {\n that._toggleSelection($(eventArgs.event.currentTarget));\n } else {\n that._cellsBySelector(CELLSELECTORVALID).each(function (index, element) {\n var value = toDateObject($(element).find('a'));\n that._deselect(value);\n });\n that._addSelectedCellsToArray();\n }\n } else if (eventArgs.event.shiftKey) {\n that._rangeSelection(that._cell);\n } else if ($(eventArgs.event.currentTarget).is(CELLSELECTOR)) {\n that.value(toDateObject($(eventArgs.event.currentTarget).find('a')));\n } else {\n that._selectDates = [];\n that._addSelectedCellsToArray();\n }\n that.trigger(CHANGE);\n },\n _destroySelectable: function () {\n var that = this;\n if (that.selectable) {\n that.selectable.destroy();\n that.selectable = null;\n }\n },\n _toggleSelection: function (currentCell) {\n var that = this, date = toDateObject(currentCell.find('a'));\n if (currentCell.hasClass('k-state-selected')) {\n that._selectDates.push(date);\n } else {\n that._deselect(date);\n }\n },\n _rangeSelection: function (toDateCell, startDate) {\n var that = this, fromDate = startDate || toDateObject(that.selectable.value().first().find('a')), toDate = toDateObject(toDateCell.find('a')), daysDifference;\n if (that.selectable._lastActive || that._value) {\n fromDate = that.selectable._lastActive ? toDateObject(that.selectable._lastActive.find('a')) : new Date(+that._value);\n } else {\n that.selectable._lastActive = startDate ? that._cellByDate(that._view.toDateString(startDate), CELLSELECTORVALID) : that.selectable.value().first();\n }\n that._selectDates = [];\n daysDifference = daysBetweenTwoDates(fromDate, toDate);\n addDaysToArray(that._selectDates, daysDifference, fromDate, that.options.disableDates);\n that._visualizeSelectedDatesInView();\n },\n _cellsBySelector: function (selector) {\n var that = this;\n return that._table.find(selector);\n },\n _addSelectedCellsToArray: function () {\n var that = this;\n that.selectable.value().each(function (index, item) {\n var date = toDateObject($(item.firstChild));\n if (!that.options.disableDates(date)) {\n that._selectDates.push(date);\n }\n });\n },\n _deselect: function (date) {\n var that = this;\n var currentDateIndex = that._selectDates.map(Number).indexOf(+date);\n if (currentDateIndex != -1) {\n that._selectDates.splice(currentDateIndex, 1);\n }\n },\n _dateInView: function (date) {\n var that = this, firstDateInView = toDateObject(that._cellsBySelector(CELLSELECTORVALID + ':first').find('a')), lastDateInView = toDateObject(that._cellsBySelector(CELLSELECTORVALID + ':last').find('a'));\n return +date <= +lastDateInView && +date >= +firstDateInView;\n },\n _isNavigatable: function (currentValue, cellIndex) {\n var that = this;\n var isDisabled = that.options.disableDates;\n var cell;\n var index;\n if (that._view.name == 'month') {\n return !isDisabled(currentValue);\n } else {\n index = that.wrapper.find('.' + FOCUSED).index();\n cell = that.wrapper.find('.k-content td:eq(' + (index + cellIndex) + ')');\n return cell.is(CELLSELECTORVALID) || !isDisabled(currentValue);\n }\n },\n _move: function (e) {\n var that = this, options = that.options, key = e.keyCode, view = that._view, index = that._index, min = that.options.min, max = that.options.max, currentValue = new DATE(+that._current), isRtl = kendo.support.isRtl(that.wrapper), isDisabled = that.options.disableDates, value, prevent, method, temp;\n if (e.target === that._table[0]) {\n that._active = true;\n }\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n value = 1;\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n value = -1;\n prevent = true;\n } else if (key == keys.UP) {\n value = index === 0 ? -7 : -4;\n prevent = true;\n } else if (key == keys.DOWN) {\n value = index === 0 ? 7 : 4;\n prevent = true;\n } else if (key == keys.SPACEBAR) {\n value = 0;\n prevent = true;\n } else if (key == keys.HOME || key == keys.END) {\n method = key == keys.HOME ? 'first' : 'last';\n temp = view[method](currentValue);\n currentValue = new DATE(temp.getFullYear(), temp.getMonth(), temp.getDate(), currentValue.getHours(), currentValue.getMinutes(), currentValue.getSeconds(), currentValue.getMilliseconds());\n currentValue.setFullYear(temp.getFullYear());\n prevent = true;\n }\n if (e.ctrlKey || e.metaKey) {\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n that.navigateToFuture();\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n that.navigateToPast();\n prevent = true;\n } else if (key == keys.UP) {\n that.navigateUp();\n prevent = true;\n } else if (key == keys.DOWN) {\n that._click($(that._cell[0].firstChild));\n prevent = true;\n } else if ((key == keys.ENTER || key == keys.SPACEBAR) && that._isMultipleSelection()) {\n that._keyboardToggleSelection(e);\n var focusedDate = toDateObject($(that._cell[0]).find('a'));\n that._class(FOCUSED, focusedDate);\n }\n } else if (e.shiftKey) {\n if (value !== undefined || method) {\n if (!method) {\n view.setDate(currentValue, value);\n }\n if (!isInRange(currentValue, min, max)) {\n currentValue = restrictValue(currentValue, options.min, options.max);\n }\n if (isDisabled(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n if (that._isMultipleSelection()) {\n that._keyboardRangeSelection(e, currentValue);\n } else {\n that._focus(currentValue);\n }\n }\n } else {\n if (key == keys.ENTER || key == keys.SPACEBAR) {\n if (view.name == 'month' && that._isMultipleSelection()) {\n that.value(toDateObject($(that._cell.find('a'))));\n that.selectable._lastActive = $(that._cell[0]);\n that.trigger(CHANGE);\n } else {\n that._click($(that._cell[0].firstChild));\n }\n prevent = true;\n } else if (key == keys.PAGEUP) {\n prevent = true;\n that.navigateToPast();\n } else if (key == keys.PAGEDOWN) {\n prevent = true;\n that.navigateToFuture();\n }\n if (value || method) {\n if (!method) {\n view.setDate(currentValue, value);\n }\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n if (!isInRange(currentValue, min, max)) {\n currentValue = restrictValue(currentValue, options.min, options.max);\n }\n if (!that._isNavigatable(currentValue, value)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n if (that._isMultipleSelection()) {\n if (!that._dateInView(currentValue)) {\n that.navigate(currentValue);\n } else {\n that._current = currentValue;\n that._class(FOCUSED, currentValue);\n }\n } else {\n that._focus(currentValue);\n }\n }\n }\n if (prevent) {\n e.preventDefault();\n }\n return that._current;\n },\n _keyboardRangeSelection: function (event, currentValue) {\n var that = this, fromDate, daysDifference;\n if (!that._dateInView(currentValue)) {\n that._selectDates = [];\n fromDate = that.selectable._lastActive ? toDateObject(that.selectable._lastActive.find('a')) : currentValue;\n daysDifference = daysBetweenTwoDates(fromDate, new Date(+currentValue));\n addDaysToArray(that._selectDates, daysDifference, fromDate, that.options.disableDates);\n that.navigate(currentValue);\n that._current = currentValue;\n that.selectable._lastActive = that.selectable._lastActive || that._cellByDate(that._view.toDateString(currentValue), CELLSELECTORVALID);\n that.trigger(CHANGE);\n return;\n }\n that.selectable.options.filter = that.wrapper.find('table').length > 1 && +currentValue > +that._current ? 'table.k-month:eq(1) ' + CELLSELECTORVALID : 'table.k-month:eq(0) ' + CELLSELECTORVALID;\n that._class(FOCUSED, currentValue);\n that._current = currentValue;\n that._rangeSelection(that._cellByDate(that._view.toDateString(currentValue), CELLSELECTORVALID), currentValue);\n that.trigger(CHANGE);\n that.selectable.options.filter = 'table.k-month:eq(0) ' + CELLSELECTORVALID;\n },\n _keyboardToggleSelection: function (event) {\n var that = this;\n event.currentTarget = that._cell[0];\n that.selectable._lastActive = $(that._cell[0]);\n if ($(that._cell[0]).hasClass(SELECTED)) {\n that.selectable._unselect($(that._cell[0]));\n that.selectable.trigger(CHANGE, { event: event });\n } else {\n that.selectable.value($(that._cell[0]), { event: event });\n }\n },\n _nextNavigatable: function (currentValue, value) {\n var that = this, disabled = true, view = that._view, min = that.options.min, max = that.options.max, isDisabled = that.options.disableDates, navigatableDate = new Date(currentValue.getTime());\n view.setDate(navigatableDate, -value);\n while (disabled) {\n view.setDate(currentValue, value);\n if (!isInRange(currentValue, min, max)) {\n currentValue = navigatableDate;\n break;\n }\n disabled = isDisabled(currentValue);\n }\n return currentValue;\n },\n _animate: function (options) {\n var that = this;\n var from = options.from;\n var to = options.to;\n var active = that._active;\n var viewWrapper = that.element.children('.k-calendar-view');\n if (!from) {\n viewWrapper.append(to);\n that._bindTable(to);\n } else if (from.parent().data('animating')) {\n from.off(ns);\n from.parent().kendoStop(true, true).remove();\n from.remove();\n viewWrapper.append(to);\n that._focusView(active);\n } else if (!from.is(':visible') || that.options.animation === false || options.replace) {\n to.insertAfter(from);\n from.off(ns).remove();\n that._focusView(active);\n } else {\n that[options.vertical ? '_vertical' : '_horizontal'](from, to, options.future);\n }\n },\n _horizontal: function (from, to, future) {\n var that = this, active = that._active, horizontal = that.options.animation.horizontal, effects = horizontal.effects, viewWidth = outerWidth(from);\n if (effects && effects.indexOf(SLIDE) != -1) {\n from.add(to).css({ width: viewWidth });\n from.wrap('<div/>');\n that._focusView(active, from);\n from.parent().css({\n position: 'relative',\n width: viewWidth * 2,\n 'float': LEFT,\n 'margin-left': future ? 0 : -viewWidth\n });\n to[future ? 'insertAfter' : 'insertBefore'](from);\n extend(horizontal, {\n effects: SLIDE + ':' + (future ? 'right' : LEFT),\n complete: function () {\n from.off(ns).remove();\n that._oldTable = null;\n to.unwrap();\n that._focusView(active);\n }\n });\n from.parent().kendoStop(true, true).kendoAnimate(horizontal);\n }\n },\n _vertical: function (from, to) {\n var that = this, vertical = that.options.animation.vertical, effects = vertical.effects, active = that._active, cell, position;\n if (effects && effects.indexOf('zoom') != -1) {\n to.insertBefore(from);\n from.css({\n position: 'absolute',\n width: to.width()\n });\n if (transitionOrigin) {\n cell = that._cellByDate(that._view.toDateString(that._current));\n position = cell.position();\n position = position.left + parseInt(cell.width() / 2, 10) + 'px' + ' ' + (position.top + parseInt(cell.height() / 2, 10) + 'px');\n to.css(transitionOrigin, position);\n }\n from.kendoStop(true, true).kendoAnimate({\n effects: 'fadeOut',\n duration: 600,\n complete: function () {\n from.off(ns).remove();\n that._oldTable = null;\n that._focusView(active);\n }\n });\n to.kendoStop(true, true).kendoAnimate(vertical);\n }\n },\n _cellByDate: function (value, selector) {\n return this._table.find(selector ? selector : 'td:not(.' + OTHERMONTH + ')').filter(function () {\n return $(this.firstChild).attr(kendo.attr(VALUE)) === value;\n });\n },\n _class: function (className, date) {\n var that = this, id = that._cellID, cell = that._cell, value = that._view.toDateString(date), disabledDate;\n if (cell && cell.length) {\n cell[0].removeAttribute(ARIA_SELECTED);\n cell[0].removeAttribute(ARIA_LABEL);\n cell[0].removeAttribute(ID);\n }\n if (date && that._view.name == 'month') {\n disabledDate = that.options.disableDates(date);\n }\n that._cellsBySelector(that._isMultipleSelection() ? CELLSELECTOR : 'td:not(.' + OTHERMONTH + ')').removeClass(className);\n cell = that._cellByDate(value, that.options.selectable == 'multiple' ? CELLSELECTOR : 'td:not(.' + OTHERMONTH + ')').attr(ARIA_SELECTED, true);\n if (className === FOCUSED && !that._active && that.options.focusOnNav !== false || disabledDate) {\n className = '';\n }\n cell.addClass(className);\n if (cell[0]) {\n that._cell = cell;\n }\n if (id) {\n cell.attr(ID, id);\n that._table[0].removeAttribute('aria-activedescendant');\n that._table.attr('aria-activedescendant', id);\n }\n },\n _bindTable: function (table) {\n table.on(FOCUS_WITH_NS, this._addClassProxy).on(BLUR, this._removeClassProxy);\n },\n _click: function (link) {\n var that = this, options = that.options, currentValue = new Date(+that._current), value = toDateObject(link);\n adjustDST(value, 0);\n if (that._view.name == 'month' && that.options.disableDates(value)) {\n value = that._value;\n }\n that._view.setDate(currentValue, value);\n that.navigateDown(restrictValue(currentValue, options.min, options.max));\n },\n _focus: function (value) {\n var that = this, view = that._view;\n if (view.compare(value, that._current) !== 0) {\n that.navigate(value);\n } else {\n that._current = value;\n that._class(FOCUSED, value);\n }\n },\n _focusView: function (active, table) {\n if (active) {\n this.focus(table);\n }\n },\n _viewWrapper: function () {\n var that = this;\n var element = that.element;\n var viewWrapper = element.children('.k-calendar-view');\n if (!viewWrapper[0]) {\n viewWrapper = $('<div class=\\'k-calendar-view\\' />').insertAfter(element.find('.k-header'));\n }\n },\n _footer: function (template) {\n var that = this, today = getToday(), element = that.element, footer = element.find('.k-footer');\n if (!template) {\n that._toggle(false);\n footer.hide();\n return;\n }\n if (!footer[0]) {\n footer = $('<div class=\"k-footer\"><a href=\"#\" class=\"k-link k-nav-today\"></a></div>').appendTo(element);\n }\n that._today = footer.show().find('.k-link').html(template(today)).attr('title', kendo.toString(today, 'D', that.options.culture));\n that._toggle();\n },\n _header: function () {\n var that = this, element = that.element, links;\n if (!element.find('.k-header')[0]) {\n element.html('<div class=\"k-header\">' + '<a href=\"#\" role=\"button\" class=\"k-link k-nav-prev\" ' + ARIA_LABEL + '=\"Previous\"><span class=\"k-icon k-i-arrow-60-left\"></span></a>' + '<a href=\"#\" role=\"button\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"k-link k-nav-fast\"></a>' + '<a href=\"#\" role=\"button\" class=\"k-link k-nav-next\" ' + ARIA_LABEL + '=\"Next\"><span class=\"k-icon k-i-arrow-60-right\"></span></a>' + '</div>');\n }\n links = element.find('.k-link').on(MOUSEENTER_WITH_NS + ' ' + MOUSELEAVE + ' ' + FOCUS_WITH_NS + ' ' + BLUR, mousetoggle).on('click', function () {\n return false;\n });\n that._title = links.eq(1).on(CLICK, function () {\n that._active = that.options.focusOnNav !== false;\n that.navigateUp();\n });\n that[PREVARROW] = links.eq(0).on(CLICK, function () {\n that._active = that.options.focusOnNav !== false;\n that.navigateToPast();\n });\n that[NEXTARROW] = links.eq(2).on(CLICK, function () {\n that._active = that.options.focusOnNav !== false;\n that.navigateToFuture();\n });\n },\n _navigate: function (arrow, modifier) {\n var that = this, index = that._index + 1, currentValue = new DATE(+that._current);\n if (that._isMultipleSelection()) {\n var firstDayCurrentMonth = that._table.find('td:not(.k-other-month):not(.k-out-of-range)').has('.k-link').first();\n currentValue = toDateObject(firstDayCurrentMonth.find('a'));\n that._current = new Date(+currentValue);\n }\n arrow = that[arrow];\n if (!arrow.hasClass(DISABLED)) {\n if (index > 3) {\n currentValue.setFullYear(currentValue.getFullYear() + 100 * modifier);\n } else {\n calendar.views[index].setDate(currentValue, modifier);\n }\n that.navigate(currentValue);\n }\n },\n _option: function (option, value) {\n var that = this, options = that.options, currentValue = that._value || that._current, isBigger;\n if (value === undefined) {\n return options[option];\n }\n value = parse(value, options.format, options.culture);\n if (!value) {\n return;\n }\n options[option] = new DATE(+value);\n if (option === MIN) {\n isBigger = value > currentValue;\n } else {\n isBigger = currentValue > value;\n }\n if (isBigger || isEqualMonth(currentValue, value)) {\n if (isBigger) {\n that._value = null;\n }\n that._changeView = true;\n }\n if (!that._changeView) {\n that._changeView = !!(options.month.content || options.month.empty);\n }\n that.navigate(that._value);\n that._toggle();\n },\n _toggle: function (toggle) {\n var that = this, options = that.options, isTodayDisabled = that.options.disableDates(getToday()), link = that._today;\n if (toggle === undefined) {\n toggle = isInRange(getToday(), options.min, options.max);\n }\n if (link) {\n link.off(CLICK);\n if (toggle && !isTodayDisabled) {\n link.addClass(TODAY).removeClass(DISABLED).on(CLICK, proxy(that._todayClick, that));\n } else {\n link.removeClass(TODAY).addClass(DISABLED).on(CLICK, prevent);\n }\n }\n },\n _todayClick: function (e) {\n var that = this, depth = views[that.options.depth], disabled = that.options.disableDates, today = getToday();\n e.preventDefault();\n if (disabled(today)) {\n return;\n }\n if (that._view.compare(that._current, today) === 0 && that._index == depth) {\n that._changeView = false;\n }\n if (that._isMultipleSelection()) {\n that._selectDates = [today];\n that.selectable._lastActive = null;\n }\n that._value = today;\n that.navigate(today, depth);\n that.trigger(CHANGE);\n },\n _templates: function () {\n var that = this, options = that.options, footer = options.footer, month = options.month, content = month.content, weekNumber = month.weekNumber, empty = month.empty, footerTemplate = '#= kendo.toString(data,\"D\",\"' + options.culture + '\") #';\n that.month = {\n content: template('<td#=data.cssClass# role=\"gridcell\"><a tabindex=\"-1\" class=\"k-link#=data.linkClass#\" href=\"#=data.url#\" ' + kendo.attr(VALUE) + '=\"#=data.dateString#\" title=\"#=data.title#\">' + (content || '#=data.value#') + '</a></td>', { useWithBlock: !!content }),\n empty: template('<td role=\"gridcell\">' + (empty || ' ') + '</td>', { useWithBlock: !!empty }),\n weekNumber: template('<td class=\"k-alt\">' + (weekNumber || '#= data.weekNumber #') + '</td>', { useWithBlock: !!weekNumber })\n };\n if (footer && footer !== true) {\n footerTemplate = footer;\n }\n that.footer = footer !== false ? template(footerTemplate, { useWithBlock: false }) : null;\n }\n });\n ui.plugin(Calendar);\n var calendar = {\n firstDayOfMonth: function (date) {\n return createDate(date.getFullYear(), date.getMonth(), 1);\n },\n firstVisibleDay: function (date, calendarInfo) {\n calendarInfo = calendarInfo || kendo.culture().calendar;\n var firstDay = calendarInfo.firstDay, firstVisibleDay = new DATE(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n firstVisibleDay.setFullYear(date.getFullYear());\n while (firstVisibleDay.getDay() != firstDay) {\n calendar.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n }\n return firstVisibleDay;\n },\n setTime: function (date, time) {\n var tzOffsetBefore = date.getTimezoneOffset(), resultDATE = new DATE(date.getTime() + time), tzOffsetDiff = resultDATE.getTimezoneOffset() - tzOffsetBefore;\n date.setTime(resultDATE.getTime() + tzOffsetDiff * MS_PER_MINUTE);\n },\n views: [\n {\n name: MONTH,\n title: function (date, min, max, culture) {\n return getCalendarInfo(culture).months.names[date.getMonth()] + ' ' + date.getFullYear();\n },\n content: function (options) {\n var that = this, idx = 0, min = options.min, max = options.max, date = options.date, dates = options.dates, format = options.format, culture = options.culture, navigateUrl = options.url, showHeader = options.showHeader, otherMonth = options.otherMonth, isWeekColumnVisible = options.isWeekColumnVisible, hasUrl = navigateUrl && dates[0], currentCalendar = getCalendarInfo(culture), firstDayIdx = currentCalendar.firstDay, days = currentCalendar.days, names = shiftArray(days.names, firstDayIdx), shortNames = shiftArray(days.namesShort, firstDayIdx), start = calendar.firstVisibleDay(date, currentCalendar), firstDayOfMonth = that.first(date), lastDayOfMonth = that.last(date), toDateString = that.toDateString, today = getToday(), html = '<table tabindex=\"0\" role=\"grid\" class=\"k-content\" cellspacing=\"0\" data-start=\"' + toDateString(start) + '\">';\n if (showHeader) {\n html += '<caption class=\"k-month-header\">' + this.title(date, min, max, culture) + '</caption><thead><tr role=\"row\">';\n } else {\n html += '<thead><tr role=\"row\">';\n }\n if (isWeekColumnVisible) {\n html += '<th scope=\"col\" class=\"k-alt\">' + options.messages.weekColumnHeader + '</th>';\n }\n for (; idx < 7; idx++) {\n html += '<th scope=\"col\" title=\"' + names[idx] + '\">' + shortNames[idx] + '</th>';\n }\n adjustDST(today, 0);\n today = +today;\n return view({\n cells: 42,\n perRow: 7,\n html: html += '</tr></thead><tbody><tr role=\"row\">',\n start: start,\n isWeekColumnVisible: isWeekColumnVisible,\n weekNumber: options.weekNumber,\n min: createDate(min.getFullYear(), min.getMonth(), min.getDate()),\n max: createDate(max.getFullYear(), max.getMonth(), max.getDate()),\n otherMonth: otherMonth,\n content: options.content,\n lastDayOfMonth: lastDayOfMonth,\n empty: options.empty,\n setter: that.setDate,\n disableDates: options.disableDates,\n build: function (date, idx, disableDates) {\n var cssClass = [], day = date.getDay(), linkClass = '', url = '#';\n if (date < firstDayOfMonth || date > lastDayOfMonth) {\n cssClass.push(OTHERMONTH);\n }\n if (disableDates(date)) {\n cssClass.push(DISABLED);\n }\n if (+date === today) {\n cssClass.push('k-today');\n }\n if (day === 0 || day === 6) {\n cssClass.push('k-weekend');\n }\n if (hasUrl && inArray(+date, dates)) {\n url = navigateUrl.replace('{0}', kendo.toString(date, format, culture));\n linkClass = ' k-action-link';\n }\n return {\n date: date,\n dates: dates,\n ns: kendo.ns,\n title: kendo.toString(date, 'D', culture),\n value: date.getDate(),\n dateString: toDateString(date),\n cssClass: cssClass[0] ? ' class=\"' + cssClass.join(' ') + '\"' : '',\n linkClass: linkClass,\n url: url\n };\n },\n weekNumberBuild: function (date) {\n return {\n weekNumber: weekInYear(date, kendo.culture().calendar.firstDay),\n currentDate: date\n };\n }\n });\n },\n first: function (date) {\n return calendar.firstDayOfMonth(date);\n },\n last: function (date) {\n var last = createDate(date.getFullYear(), date.getMonth() + 1, 0), first = calendar.firstDayOfMonth(date), timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n if (timeOffset) {\n last.setHours(first.getHours() + timeOffset / 60);\n }\n return last;\n },\n compare: function (date1, date2) {\n var result, month1 = date1.getMonth(), year1 = date1.getFullYear(), month2 = date2.getMonth(), year2 = date2.getFullYear();\n if (year1 > year2) {\n result = 1;\n } else if (year1 < year2) {\n result = -1;\n } else {\n result = month1 == month2 ? 0 : month1 > month2 ? 1 : -1;\n }\n return result;\n },\n setDate: function (date, value) {\n var hours = date.getHours();\n if (value instanceof DATE) {\n date.setFullYear(value.getFullYear(), value.getMonth(), value.getDate());\n } else {\n calendar.setTime(date, value * MS_PER_DAY);\n }\n adjustDST(date, hours);\n },\n toDateString: function (date) {\n return date.getFullYear() + '/' + date.getMonth() + '/' + date.getDate();\n }\n },\n {\n name: 'year',\n title: function (date) {\n return date.getFullYear();\n },\n content: function (options) {\n var namesAbbr = getCalendarInfo(options.culture).months.namesAbbr, toDateString = this.toDateString, min = options.min, max = options.max, html = '';\n if (options.showHeader) {\n html += '<table tabindex=\"0\" role=\"grid\" class=\"k-content k-meta-view\" cellspacing=\"0\"><caption class=\"k-meta-header\">';\n html += this.title(options.date);\n html += '</caption><tbody><tr role=\"row\">';\n }\n return view({\n min: createDate(min.getFullYear(), min.getMonth(), 1),\n max: createDate(max.getFullYear(), max.getMonth(), 1),\n start: createDate(options.date.getFullYear(), 0, 1),\n html: html,\n setter: this.setDate,\n build: function (date) {\n return {\n value: namesAbbr[date.getMonth()],\n ns: kendo.ns,\n dateString: toDateString(date),\n cssClass: ''\n };\n }\n });\n },\n first: function (date) {\n return createDate(date.getFullYear(), 0, date.getDate());\n },\n last: function (date) {\n return createDate(date.getFullYear(), 11, date.getDate());\n },\n compare: function (date1, date2) {\n return compare(date1, date2);\n },\n setDate: function (date, value) {\n var month, hours = date.getHours();\n if (value instanceof DATE) {\n month = value.getMonth();\n date.setFullYear(value.getFullYear(), month, date.getDate());\n if (month !== date.getMonth()) {\n date.setDate(0);\n }\n } else {\n month = date.getMonth() + value;\n date.setMonth(month);\n if (month > 11) {\n month -= 12;\n }\n if (month > 0 && date.getMonth() != month) {\n date.setDate(0);\n }\n }\n adjustDST(date, hours);\n },\n toDateString: function (date) {\n return date.getFullYear() + '/' + date.getMonth() + '/1';\n }\n },\n {\n name: 'decade',\n title: function (date, min, max) {\n return title(date, min, max, 10);\n },\n content: function (options) {\n var year = options.date.getFullYear(), toDateString = this.toDateString, html = '';\n if (options.showHeader) {\n html += '<table tabindex=\"0\" role=\"grid\" class=\"k-content k-meta-view\" cellspacing=\"0\"><caption class=\"k-meta-header\">';\n html += this.title(options.date, options.min, options.max);\n html += '</caption><tbody><tr role=\"row\">';\n }\n return view({\n start: createDate(year - year % 10 - 1, 0, 1),\n min: createDate(options.min.getFullYear(), 0, 1),\n max: createDate(options.max.getFullYear(), 0, 1),\n otherMonth: options.otherMonth,\n html: html,\n setter: this.setDate,\n build: function (date, idx) {\n return {\n value: date.getFullYear(),\n ns: kendo.ns,\n dateString: toDateString(date),\n cssClass: idx === 0 || idx == 11 ? OTHERMONTHCLASS : ''\n };\n }\n });\n },\n first: function (date) {\n var year = date.getFullYear();\n return createDate(year - year % 10, date.getMonth(), date.getDate());\n },\n last: function (date) {\n var year = date.getFullYear();\n return createDate(year - year % 10 + 9, date.getMonth(), date.getDate());\n },\n compare: function (date1, date2) {\n return compare(date1, date2, 10);\n },\n setDate: function (date, value) {\n setDate(date, value, 1);\n },\n toDateString: function (date) {\n return date.getFullYear() + '/0/1';\n }\n },\n {\n name: CENTURY,\n title: function (date, min, max) {\n return title(date, min, max, 100);\n },\n content: function (options) {\n var year = options.date.getFullYear(), min = options.min.getFullYear(), max = options.max.getFullYear(), toDateString = this.toDateString, minYear = min, maxYear = max, html = '';\n minYear = minYear - minYear % 10;\n maxYear = maxYear - maxYear % 10;\n if (maxYear - minYear < 10) {\n maxYear = minYear + 9;\n }\n if (options.showHeader) {\n html += '<table tabindex=\"0\" role=\"grid\" class=\"k-content k-meta-view\" cellspacing=\"0\"><caption class=\"k-meta-header\">';\n html += this.title(options.date, options.min, options.max);\n html += '</caption><tbody><tr role=\"row\">';\n }\n return view({\n start: createDate(year - year % 100 - 10, 0, 1),\n min: createDate(minYear, 0, 1),\n max: createDate(maxYear, 0, 1),\n otherMonth: options.otherMonth,\n html: html,\n setter: this.setDate,\n build: function (date, idx) {\n var start = date.getFullYear(), end = start + 9;\n if (start < min) {\n start = min;\n }\n if (end > max) {\n end = max;\n }\n return {\n ns: kendo.ns,\n value: start + ' - ' + end,\n dateString: toDateString(date),\n cssClass: idx === 0 || idx == 11 ? OTHERMONTHCLASS : ''\n };\n }\n });\n },\n first: function (date) {\n var year = date.getFullYear();\n return createDate(year - year % 100, date.getMonth(), date.getDate());\n },\n last: function (date) {\n var year = date.getFullYear();\n return createDate(year - year % 100 + 99, date.getMonth(), date.getDate());\n },\n compare: function (date1, date2) {\n return compare(date1, date2, 100);\n },\n setDate: function (date, value) {\n setDate(date, value, 10);\n },\n toDateString: function (date) {\n var year = date.getFullYear();\n return year - year % 10 + '/0/1';\n }\n }\n ]\n };\n function title(date, min, max, modular) {\n var start = date.getFullYear(), minYear = min.getFullYear(), maxYear = max.getFullYear(), end;\n start = start - start % modular;\n end = start + (modular - 1);\n if (start < minYear) {\n start = minYear;\n }\n if (end > maxYear) {\n end = maxYear;\n }\n return start + '-' + end;\n }\n function view(options) {\n var idx = 0, data, min = options.min, max = options.max, start = options.start, setter = options.setter, build = options.build, weekNumberBuild = options.weekNumberBuild, length = options.cells || 12, isWeekColumnVisible = options.isWeekColumnVisible, cellsPerRow = options.perRow || 4, otherMonth = options.otherMonth, lastDayOfMonth = options.lastDayOfMonth, weekNumber = options.weekNumber || weekNumberTemplate, content = options.content || cellTemplate, empty = options.empty || emptyCellTemplate, otherMonthTemplate = options.otherMonthCellTemplate || otherMonthCellTemplate, html = options.html || '<table tabindex=\"0\" role=\"grid\" class=\"k-content k-meta-view\" cellspacing=\"0\"><tbody><tr role=\"row\">';\n if (isWeekColumnVisible) {\n html += weekNumber(weekNumberBuild(start));\n }\n for (; idx < length; idx++) {\n if (idx > 0 && idx % cellsPerRow === 0) {\n html += '</tr><tr role=\"row\">';\n if (isWeekColumnVisible) {\n html += otherMonth || +start <= +lastDayOfMonth ? weekNumber(weekNumberBuild(start)) : weekNumber({ weekNumber: ' ' });\n }\n }\n start = createDate(start.getFullYear(), start.getMonth(), start.getDate());\n adjustDST(start, 0);\n data = build(start, idx, options.disableDates);\n html += data.cssClass.indexOf(OTHERMONTH) !== -1 && !otherMonth ? otherMonthTemplate(data) : isInRange(start, min, max) ? content(data) : empty(data);\n setter(start, 1);\n }\n return html + '</tr></tbody></table>';\n }\n function compare(date1, date2, modifier) {\n var year1 = date1.getFullYear(), start = date2.getFullYear(), end = start, result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (year1 > end) {\n result = 1;\n } else if (year1 < start) {\n result = -1;\n }\n return result;\n }\n function getToday() {\n var today = new DATE();\n return new DATE(today.getFullYear(), today.getMonth(), today.getDate());\n }\n function restrictValue(value, min, max) {\n var today = getToday();\n if (value) {\n today = new DATE(+value);\n }\n if (min > today) {\n today = new DATE(+min);\n } else if (max < today) {\n today = new DATE(+max);\n }\n return today;\n }\n function isInRange(date, min, max) {\n return +date >= +min && +date <= +max;\n }\n function shiftArray(array, idx) {\n return array.slice(idx).concat(array.slice(0, idx));\n }\n function setDate(date, value, multiplier) {\n value = value instanceof DATE ? value.getFullYear() : date.getFullYear() + multiplier * value;\n date.setFullYear(value);\n }\n function daysBetweenTwoDates(startDate, endDate) {\n if (+endDate < +startDate) {\n var temp = +startDate;\n calendar.views[0].setDate(startDate, endDate);\n calendar.views[0].setDate(endDate, new Date(temp));\n }\n var fromDateUTC = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n var endDateUTC = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());\n return Math.ceil((+endDateUTC - +fromDateUTC) / kendo.date.MS_PER_DAY);\n }\n function addDaysToArray(array, numberOfDays, fromDate, disableDates) {\n for (var i = 0; i <= numberOfDays; i++) {\n var nextDay = new Date(fromDate.getTime());\n nextDay = new Date(nextDay.setDate(nextDay.getDate() + i));\n if (!disableDates(nextDay)) {\n array.push(nextDay);\n }\n }\n }\n function mousetoggle(e) {\n var disabled = $(this).hasClass('k-state-disabled');\n if (!disabled) {\n $(this).toggleClass(HOVER, MOUSEENTER.indexOf(e.type) > -1 || e.type == FOCUS);\n }\n }\n function prevent(e) {\n e.preventDefault();\n }\n function createDate(year, month, date) {\n var dateObject = new DATE(year, month, date);\n dateObject.setFullYear(year, month, date);\n return dateObject;\n }\n function getCalendarInfo(culture) {\n return getCulture(culture).calendars.standard;\n }\n function normalize(options) {\n var start = views[options.start], depth = views[options.depth], culture = getCulture(options.culture);\n options.format = extractFormat(options.format || culture.calendars.standard.patterns.d);\n if (isNaN(start)) {\n start = 0;\n options.start = MONTH;\n }\n if (depth === undefined || depth > start) {\n options.depth = MONTH;\n }\n if (options.dates === null) {\n options.dates = [];\n }\n }\n function makeUnselectable(element) {\n if (isIE8) {\n element.find('*').attr('unselectable', 'on');\n }\n }\n function addClassToViewContainer(element, currentView) {\n element.addClass('k-' + currentView);\n }\n function inArray(date, dates) {\n for (var i = 0, length = dates.length; i < length; i++) {\n if (date === +dates[i]) {\n return true;\n }\n }\n return false;\n }\n function isEqualDatePart(value1, value2) {\n if (value1) {\n return value1.getFullYear() === value2.getFullYear() && value1.getMonth() === value2.getMonth() && value1.getDate() === value2.getDate();\n }\n return false;\n }\n function isEqualMonth(value1, value2) {\n if (value1) {\n return value1.getFullYear() === value2.getFullYear() && value1.getMonth() === value2.getMonth();\n }\n return false;\n }\n function getDisabledExpr(option) {\n if (kendo.isFunction(option)) {\n return option;\n }\n if ($.isArray(option)) {\n return createDisabledExpr(option);\n }\n return $.noop;\n }\n function convertDatesArray(dates) {\n var result = [];\n for (var i = 0; i < dates.length; i++) {\n result.push(dates[i].setHours(0, 0, 0, 0));\n }\n return result;\n }\n function createDisabledExpr(dates) {\n var body, callback, disabledDates = [], days = [\n 'su',\n 'mo',\n 'tu',\n 'we',\n 'th',\n 'fr',\n 'sa'\n ], searchExpression = 'if (found) {' + ' return true ' + '} else {' + 'return false' + '}';\n if (dates[0] instanceof DATE) {\n disabledDates = convertDatesArray(dates);\n body = 'var found = date && window.kendo.jQuery.inArray(date.setHours(0, 0, 0, 0),[' + disabledDates + ']) > -1;' + searchExpression;\n } else {\n for (var i = 0; i < dates.length; i++) {\n var day = dates[i].slice(0, 2).toLowerCase();\n var index = $.inArray(day, days);\n if (index > -1) {\n disabledDates.push(index);\n }\n }\n body = 'var found = date && window.kendo.jQuery.inArray(date.getDay(),[' + disabledDates + ']) > -1;' + searchExpression;\n }\n callback = new Function('date', body);\n return callback;\n }\n function isEqualDate(oldValue, newValue) {\n if (oldValue instanceof Date && newValue instanceof Date) {\n oldValue = oldValue.getTime();\n newValue = newValue.getTime();\n }\n return oldValue === newValue;\n }\n function toDateObject(link) {\n var value = $(link).attr(kendo.attr(VALUE)).split('/');\n value = createDate(value[0], value[1], value[2]);\n return value;\n }\n calendar.isEqualDatePart = isEqualDatePart;\n calendar.isEqualDate = isEqualDate;\n calendar.makeUnselectable = makeUnselectable;\n calendar.restrictValue = restrictValue;\n calendar.isInRange = isInRange;\n calendar.addClassToViewContainer = addClassToViewContainer;\n calendar.normalize = normalize;\n calendar.viewsEnum = views;\n calendar.disabled = getDisabledExpr;\n calendar.toDateObject = toDateObject;\n calendar.getToday = getToday;\n calendar.createDate = createDate;\n kendo.calendar = calendar;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dateinput', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'dateinput',\n name: 'DateInput',\n category: 'web',\n description: 'The DateInput widget allows to edit date by typing.',\n depends: ['core']\n };\n (function ($, undefined) {\n var global = window;\n var kendo = global.kendo;\n var caret = kendo.caret;\n var ui = kendo.ui;\n var Widget = ui.Widget;\n var keys = kendo.keys;\n var ns = '.kendoDateInput';\n var proxy = $.proxy;\n var objectToString = {}.toString;\n var INPUT_EVENT_NAME = (kendo.support.propertyChangeEvent ? 'propertychange.kendoDateInput input' : 'input') + ns;\n var STATEDISABLED = 'k-state-disabled';\n var STATEDEFAULT = 'k-state-default';\n var STATEINVALID = 'k-state-invalid';\n var DISABLED = 'disabled';\n var READONLY = 'readonly';\n var CHANGE = 'change';\n var knownSymbols = 'dMyHhmftsz';\n var DateInput = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n options.format = kendo._extractFormat(options.format || kendo.getCulture(options.culture).calendars.standard.patterns.d);\n options.min = kendo.parseDate(element.attr('min')) || kendo.parseDate(options.min);\n options.max = kendo.parseDate(element.attr('max')) || kendo.parseDate(options.max);\n var insidePicker = (element.parent().attr('class') || '').indexOf('k-picker-wrap') >= 0;\n if (insidePicker) {\n that.wrapper = element.parent();\n } else {\n that.wrapper = element.wrap('<span class=\\'k-widget k-dateinput\\'></span>').parent();\n that.wrapper.addClass(element[0].className);\n that.wrapper[0].style.cssText = element[0].style.cssText;\n element.css({\n width: '100%',\n height: element[0].style.height\n });\n }\n that._inputWrapper = $(that.wrapper[0]);\n $('<span class=\\'k-icon k-i-warning\\'></span>').insertAfter(element);\n that._form();\n that.element.addClass(insidePicker ? ' ' : 'k-textbox').attr('autocomplete', 'off').on('focusout' + ns, function () {\n that._change();\n });\n try {\n element[0].setAttribute('type', 'text');\n } catch (e) {\n element[0].type = 'text';\n }\n var disabled = element.is('[disabled]') || $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n that.value(that.options.value || element.val());\n kendo.notify(that);\n },\n options: {\n name: 'DateInput',\n culture: '',\n value: '',\n format: '',\n min: new Date(1900, 0, 1),\n max: new Date(2099, 11, 31),\n messages: {\n 'year': 'year',\n 'month': 'month',\n 'day': 'day',\n 'weekday': 'day of the week',\n 'hour': 'hours',\n 'minute': 'minutes',\n 'second': 'seconds',\n 'dayperiod': 'AM/PM'\n }\n },\n events: [CHANGE],\n min: function (value) {\n if (value !== undefined) {\n this.options.min = value;\n } else {\n return this.options.min;\n }\n },\n max: function (value) {\n if (value !== undefined) {\n this.options.max = value;\n } else {\n return this.options.max;\n }\n },\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n this._unbindInput();\n this._bindInput();\n this._updateElementValue();\n },\n destroy: function () {\n var that = this;\n that.element.off(ns);\n if (that._formElement) {\n that._formElement.off('reset', that._resetHandler);\n }\n Widget.fn.destroy.call(that);\n },\n value: function (value) {\n if (value === undefined) {\n return this._dateTime.getDateObject();\n }\n if (value === null) {\n value = '';\n }\n if (objectToString.call(value) !== '[object Date]') {\n value = kendo.parseDate(value, this.options.format, this.options.culture);\n }\n if (value && !value.getTime()) {\n value = null;\n }\n this._dateTime = new customDateTime(value, this.options.format, this.options.culture, this.options.messages);\n this._updateElementValue();\n this._oldValue = value;\n },\n _updateElementValue: function () {\n var stringAndFromat = this._dateTime.toPair(this.options.format, this.options.culture, this.options.messages);\n this.element.val(stringAndFromat[0]);\n this._oldText = stringAndFromat[0];\n this._format = stringAndFromat[1];\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n _bindInput: function () {\n var that = this;\n that.element.on('focusout' + ns, function () {\n that._change();\n }).on('paste' + ns, proxy(that._paste, that)).on('keydown' + ns, proxy(that._keydown, that)).on(INPUT_EVENT_NAME, proxy(that._input, that)).on('mouseup' + ns, proxy(that._mouseUp, that)).on('DOMMouseScroll' + ns + ' mousewheel' + ns, proxy(that._scroll, that));\n },\n _unbindInput: function () {\n this.element.off('keydown' + ns).off('paste' + ns).off('focusout' + ns).off(INPUT_EVENT_NAME).off('mouseup' + ns).off('DOMMouseScroll' + ns + ' mousewheel' + ns);\n },\n _editable: function (options) {\n var that = this;\n var element = that.element;\n var disable = options.disable;\n var readonly = options.readonly;\n var wrapper = that.wrapper;\n that._unbindInput();\n if (!readonly && !disable) {\n wrapper.addClass(STATEDEFAULT).removeClass(STATEDISABLED);\n if (element && element.length) {\n element[0].removeAttribute(DISABLED);\n element[0].removeAttribute(READONLY);\n }\n that._bindInput();\n } else {\n if (disable) {\n wrapper.addClass(STATEDISABLED).removeClass(STATEDEFAULT);\n element.attr(DISABLED, disable);\n if (element && element.length) {\n element[0].removeAttribute(READONLY);\n }\n }\n if (readonly) {\n element.attr(READONLY, readonly);\n }\n }\n },\n _change: function () {\n var that = this;\n var oldValue = that._oldValue;\n var value = that.value();\n if (value && that.min() && value < that.min()) {\n that.value(that.min());\n value = that.value();\n }\n if (value && that.max() && value > that.max()) {\n that.value(that.max());\n value = that.value();\n }\n if (oldValue && value && value.getTime() !== oldValue.getTime() || oldValue && !value || !oldValue && value) {\n that._oldValue = value;\n that.trigger(CHANGE);\n that.element.trigger(CHANGE);\n }\n },\n _input: function () {\n var that = this;\n var element = that.element[0];\n var blinkInvalid = false;\n if (kendo._activeElement() !== element) {\n return;\n }\n var diff = approximateStringMatching(this._oldText, this._format, this.element[0].value, caret(this.element[0])[0]);\n var navigationOnly = diff.length === 1 && diff[0][1] === ' ';\n if (!navigationOnly) {\n for (var i = 0; i < diff.length; i++) {\n var valid = this._dateTime.parsePart(diff[i][0], diff[i][1]);\n blinkInvalid = blinkInvalid || !valid;\n }\n }\n this._updateElementValue();\n if (diff.length && diff[0][0] !== ' ') {\n this._selectSegment(diff[0][0]);\n if (!navigationOnly) {\n var difSym = diff[0][0];\n setTimeout(function () {\n that._selectSegment(difSym);\n });\n }\n }\n if (navigationOnly) {\n var newEvent = {\n keyCode: 39,\n preventDefault: function () {\n }\n };\n this._keydown(newEvent);\n }\n if (blinkInvalid) {\n clearTimeout(that._blinkInvalidTimeout);\n var stateInvalid = STATEINVALID;\n that.wrapper.addClass(STATEINVALID);\n that._blinkInvalidTimeout = setTimeout(function () {\n that.wrapper.removeClass(stateInvalid);\n }, 100);\n }\n },\n _mouseUp: function () {\n var selection = caret(this.element[0]);\n if (selection[0] === selection[1]) {\n this._selectNearestSegment();\n }\n },\n _scroll: function (e) {\n if (kendo._activeElement() !== this.element[0] || this.element.is('[readonly]')) {\n return;\n }\n e = window.event || e;\n var newEvent = {\n keyCode: 37,\n preventDefault: function () {\n }\n };\n if (e.shiftKey) {\n newEvent.keyCode = (e.wheelDelta || -e.detail) > 0 ? 37 : 39;\n } else {\n newEvent.keyCode = (e.wheelDelta || -e.detail) > 0 ? 38 : 40;\n }\n this._keydown(newEvent);\n e.returnValue = false;\n if (e.preventDefault) {\n e.preventDefault();\n }\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n },\n _form: function () {\n var that = this;\n var element = that.element;\n var formId = element.attr('form');\n var form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(element[0].value);\n });\n };\n that._formElement = form.on('reset', that._resetHandler);\n }\n },\n _paste: function (e) {\n e.preventDefault();\n },\n _keydown: function (e) {\n var key = e.keyCode;\n var selection;\n if (key == 37 || key == 39) {\n e.preventDefault();\n selection = caret(this.element[0]);\n if (selection[0] != selection[1]) {\n this._selectNearestSegment();\n }\n var dir = key == 37 ? -1 : 1;\n var index = dir == -1 ? caret(this.element[0])[0] - 1 : caret(this.element[0])[1] + 1;\n while (index >= 0 && index < this._format.length) {\n if (knownSymbols.indexOf(this._format[index]) >= 0) {\n this._selectSegment(this._format[index]);\n break;\n }\n index += dir;\n }\n }\n if (key == 38 || key == 40) {\n e.preventDefault();\n selection = caret(this.element[0]);\n var symbol = this._format[selection[0]];\n if (knownSymbols.indexOf(symbol) >= 0) {\n var interval = 1;\n if (symbol == 'm') {\n interval = this.options.interval || 1;\n }\n this._dateTime.modifyPart(symbol, key == 38 ? interval * 1 : interval * -1);\n this._updateElementValue();\n this._selectSegment(symbol);\n this.element.trigger(CHANGE);\n }\n }\n if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n var keycode = e.keyCode ? e.keyCode : e.which;\n if (keycode === 8 || keycode === 46) {\n var that = this;\n setTimeout(function () {\n that._input();\n }, 0);\n }\n }\n if (key === keys.ENTER) {\n this._change();\n }\n },\n _selectNearestSegment: function () {\n var selection = caret(this.element[0]);\n var start = selection[0];\n for (var i = start, j = start - 1; i < this._format.length || j >= 0; i++, j--) {\n if (i < this._format.length && knownSymbols.indexOf(this._format[i]) !== -1) {\n this._selectSegment(this._format[i]);\n return;\n }\n if (j >= 0 && knownSymbols.indexOf(this._format[j]) !== -1) {\n this._selectSegment(this._format[j]);\n return;\n }\n }\n },\n _selectSegment: function (symbol) {\n var begin = -1, end = 0;\n for (var i = 0; i < this._format.length; i++) {\n if (this._format[i] === symbol) {\n end = i + 1;\n if (begin === -1) {\n begin = i;\n }\n }\n }\n if (begin < 0) {\n begin = 0;\n }\n caret(this.element, begin, end);\n }\n });\n ui.plugin(DateInput);\n var customDateTime = function (initDate, initFormat, initCulture, initMessages) {\n var value = null;\n var year = true, month = true, date = true, hours = true, minutes = true, seconds = true, milliseconds = true;\n var typedMonthPart = '';\n var typedDayPeriodPart = '';\n var placeholders = {};\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000'\n ];\n function pad(number, digits, end) {\n number = number + '';\n digits = digits || 2;\n end = digits - number.length;\n if (end) {\n return zeros[digits].substring(0, end) + number;\n }\n return number;\n }\n var dateFormatRegExp = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g;\n var months = null, calendar = null, days = null, returnsFormat = false;\n var matcher = function (match) {\n var mins, sign;\n var result;\n switch (match) {\n case 'd':\n result = date ? value.getDate() : placeholders.day;\n break;\n case 'dd':\n result = date ? pad(value.getDate()) : placeholders.day;\n break;\n case 'ddd':\n result = date && month && year ? days.namesAbbr[value.getDay()] : placeholders.weekday;\n break;\n case 'dddd':\n result = date && month && year ? days.names[value.getDay()] : placeholders.weekday;\n break;\n case 'M':\n result = month ? value.getMonth() + 1 : placeholders.month;\n break;\n case 'MM':\n result = month ? pad(value.getMonth() + 1) : placeholders.month;\n break;\n case 'MMM':\n result = month ? months.namesAbbr[value.getMonth()] : placeholders.month;\n break;\n case 'MMMM':\n result = month ? months.names[value.getMonth()] : placeholders.month;\n break;\n case 'yy':\n result = year ? pad(value.getFullYear() % 100) : placeholders.year;\n break;\n case 'yyyy':\n result = year ? pad(value.getFullYear(), 4) : placeholders.year;\n break;\n case 'h':\n result = hours ? value.getHours() % 12 || 12 : placeholders.hour;\n break;\n case 'hh':\n result = hours ? pad(value.getHours() % 12 || 12) : placeholders.hour;\n break;\n case 'H':\n result = hours ? value.getHours() : placeholders.hour;\n break;\n case 'HH':\n result = hours ? pad(value.getHours()) : placeholders.hour;\n break;\n case 'm':\n result = minutes ? value.getMinutes() : placeholders.minute;\n break;\n case 'mm':\n result = minutes ? pad(value.getMinutes()) : placeholders.minute;\n break;\n case 's':\n result = seconds ? value.getSeconds() : placeholders.second;\n break;\n case 'ss':\n result = seconds ? pad(value.getSeconds()) : placeholders.second;\n break;\n case 'f':\n result = milliseconds ? Math.floor(value.getMilliseconds() / 100) : milliseconds;\n break;\n case 'ff':\n result = value.getMilliseconds();\n if (result > 99) {\n result = Math.floor(result / 10);\n }\n result = milliseconds ? pad(result) : match;\n break;\n case 'fff':\n result = milliseconds ? pad(value.getMilliseconds(), 3) : match;\n break;\n case 'tt':\n result = hours ? value.getHours() < 12 ? calendar.AM[0] : calendar.PM[0] : placeholders.dayperiod;\n break;\n case 'zzz':\n mins = value.getTimezoneOffset();\n sign = mins < 0;\n result = Math.abs(mins / 60).toString().split('.')[0];\n mins = Math.abs(mins) - result * 60;\n result = (sign ? '+' : '-') + pad(result);\n result += ':' + pad(mins);\n break;\n case 'z':\n case 'zz':\n result = value.getTimezoneOffset() / 60;\n sign = result < 0;\n result = Math.abs(result).toString().split('.')[0];\n result = (sign ? '+' : '-') + (match === 'zz' ? pad(result) : result);\n break;\n }\n result = result !== undefined ? result : match.slice(1, match.length - 1);\n if (returnsFormat) {\n result = '' + result;\n var formatResult = '';\n if (match == 'ddd') {\n match = 'EEE';\n }\n if (match == 'dddd') {\n match = 'EEEE';\n }\n for (var i = 0; i < result.length; i++) {\n formatResult += match[0];\n }\n return formatResult;\n } else {\n return result;\n }\n };\n function generateMatcher(retFormat) {\n returnsFormat = retFormat;\n return matcher;\n }\n function setExisting(symbol, val) {\n switch (symbol) {\n case 'y':\n year = val;\n break;\n case 'M':\n month = val;\n if (!val) {\n value.setMonth(0);\n typedMonthPart = '';\n }\n break;\n case 'd':\n date = val;\n break;\n case 'H':\n case 'h':\n hours = val;\n if (!val) {\n typedDayPeriodPart = '';\n }\n break;\n case 'm':\n minutes = val;\n break;\n case 's':\n seconds = val;\n break;\n default:\n return;\n }\n }\n this.setValue = function (val) {\n date = val;\n };\n this.getValue = function () {\n return date;\n };\n this.modifyPart = function (symbol, offset) {\n var newValue = new Date(value && value.getTime ? value.getTime() : value);\n switch (symbol) {\n case 'y':\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n case 'M':\n var newMonth = newValue.getMonth() + offset;\n newValue.setMonth(newMonth);\n if (newValue.getMonth() % 12 !== (newMonth + 12) % 12) {\n newValue.setDate(1);\n newValue.setMonth(newMonth);\n }\n break;\n case 'd':\n case 'E':\n newValue.setDate(newValue.getDate() + offset);\n break;\n case 'H':\n case 'h':\n newValue.setHours(newValue.getHours() + offset);\n break;\n case 'm':\n newValue.setMinutes(newValue.getMinutes() + offset);\n break;\n case 's':\n newValue.setSeconds(newValue.getSeconds() + offset);\n break;\n case 't':\n newValue.setHours((newValue.getHours() + 12) % 24);\n break;\n default:\n break;\n }\n if (newValue.getFullYear() > 0) {\n setExisting(symbol, true);\n value = newValue;\n }\n };\n this.parsePart = function (symbol, currentChar) {\n if (!currentChar) {\n setExisting(symbol, false);\n return true;\n }\n var newValue = new Date(value && value.getTime ? value.getTime() : value);\n var newHours;\n switch (symbol) {\n case 'd':\n var newDate = (date ? newValue.getDate() * 10 : 0) + parseInt(currentChar, 10);\n if (isNaN(newDate)) {\n return;\n }\n while (newDate > 31) {\n newDate = parseInt(newDate.toString().slice(1), 10);\n }\n if (newDate < 1) {\n date = false;\n } else {\n newValue.setDate(newDate);\n if (newValue.getMonth() !== value.getMonth()) {\n return;\n }\n date = true;\n }\n break;\n case 'M':\n var newMonth = (month ? (newValue.getMonth() + 1) * 10 : 0) + parseInt(currentChar, 10);\n if (!isNaN(newMonth)) {\n while (newMonth > 12) {\n newMonth = parseInt(newMonth.toString().slice(1), 10);\n }\n if (newMonth < 1) {\n month = false;\n } else {\n newValue.setMonth(newMonth - 1);\n if (newValue.getMonth() !== newMonth - 1) {\n newValue.setDate(1);\n newValue.setMonth(newMonth - 1);\n }\n month = true;\n }\n } else {\n var monthNames = calendar.months.names;\n typedMonthPart += currentChar.toLowerCase();\n while (typedMonthPart.length > 0) {\n for (var i = 0; i < monthNames.length; i++) {\n if (monthNames[i].toLowerCase().indexOf(typedMonthPart) === 0) {\n newValue.setMonth(i);\n month = true;\n value = newValue;\n return true;\n }\n }\n typedMonthPart = typedMonthPart.substring(1, typedMonthPart.length);\n }\n return false;\n }\n break;\n case 'y':\n var newYear = (year ? newValue.getFullYear() * 10 : 0) + parseInt(currentChar, 10);\n if (isNaN(newYear)) {\n return;\n }\n while (newYear > 9999) {\n newYear = parseInt(newYear.toString().slice(1), 10);\n }\n if (newYear < 1) {\n year = false;\n } else {\n newValue.setFullYear(newYear);\n year = true;\n }\n break;\n case 'h':\n newHours = (hours ? (newValue.getHours() % 12 || 12) * 10 : 0) + parseInt(currentChar, 10);\n if (isNaN(newHours)) {\n return;\n }\n while (newHours > 12) {\n newHours = parseInt(newHours.toString().slice(1), 10);\n }\n newValue.setHours(Math.floor(newValue.getHours() / 12) * 12 + newHours % 12);\n hours = true;\n break;\n case 'H':\n newHours = (hours ? newValue.getHours() * 10 : 0) + parseInt(currentChar, 10);\n if (isNaN(newHours)) {\n return;\n }\n while (newHours > 23) {\n newHours = parseInt(newHours.toString().slice(1), 10);\n }\n newValue.setHours(newHours);\n hours = true;\n break;\n case 'm':\n var newMinutes = (minutes ? newValue.getMinutes() * 10 : 0) + parseInt(currentChar, 10);\n if (isNaN(newMinutes)) {\n return;\n }\n while (newMinutes > 59) {\n newMinutes = parseInt(newMinutes.toString().slice(1), 10);\n }\n newValue.setMinutes(newMinutes);\n minutes = true;\n break;\n case 's':\n var newSeconds = (seconds ? newValue.getSeconds() * 10 : 0) + parseInt(currentChar, 10);\n if (isNaN(newSeconds)) {\n return;\n }\n while (newSeconds > 59) {\n newSeconds = parseInt(newSeconds.toString().slice(1), 10);\n }\n newValue.setSeconds(newSeconds);\n seconds = true;\n break;\n case 't':\n if (hours) {\n typedDayPeriodPart += currentChar.toLowerCase();\n while (typedDayPeriodPart.length > 0) {\n if (calendar.AM[0].toLowerCase().indexOf(typedDayPeriodPart) === 0 && newValue.getHours() >= 12 || calendar.PM[0].toLowerCase().indexOf(typedDayPeriodPart) === 0 && newValue.getHours() < 12) {\n newValue.setHours((newValue.getHours() + 12) % 24);\n value = newValue;\n return true;\n }\n typedDayPeriodPart = typedDayPeriodPart.substring(1, typedDayPeriodPart.length);\n }\n return false;\n }\n break;\n default:\n break;\n }\n value = newValue;\n return true;\n };\n this.toPair = function (format, culture, messages) {\n if (!format) {\n return [\n '',\n ''\n ];\n }\n culture = kendo.getCulture(culture);\n calendar = culture.calendars.standard;\n format = calendar.patterns[format] || format;\n days = calendar.days;\n months = calendar.months;\n placeholders = messages;\n return [\n format.replace(dateFormatRegExp, generateMatcher(false)),\n format.replace(dateFormatRegExp, generateMatcher(true))\n ];\n };\n this.getDateObject = function () {\n return year && month && date && hours && minutes && seconds && milliseconds ? new Date(value.getTime()) : null;\n };\n if (!initDate) {\n value = new Date();\n var sampleFormat = this.toPair(initFormat, initCulture, initMessages)[1];\n for (var i = 0; i < sampleFormat.length; i++) {\n setExisting(sampleFormat[i], false);\n }\n } else {\n value = new Date(initDate.getTime());\n }\n };\n function approximateStringMatching(oldText, oldFormat, newText, caret) {\n var oldTextSeparator = oldText[caret + oldText.length - newText.length];\n oldText = oldText.substring(0, caret + oldText.length - newText.length);\n newText = newText.substring(0, caret);\n var diff = [];\n var i;\n if (oldText === newText && caret > 0) {\n diff.push([\n oldFormat[caret - 1],\n newText[caret - 1]\n ]);\n return diff;\n }\n if (oldText.indexOf(newText) === 0 && (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n var deletedSymbol = '';\n for (i = newText.length; i < oldText.length; i++) {\n if (oldFormat[i] !== deletedSymbol && knownSymbols.indexOf(oldFormat[i]) >= 0) {\n deletedSymbol = oldFormat[i];\n diff.push([\n deletedSymbol,\n ''\n ]);\n }\n }\n return diff;\n }\n if (newText[newText.length - 1] === ' ' || newText[newText.length - 1] === oldTextSeparator) {\n return [[\n oldFormat[caret - 1],\n ' '\n ]];\n }\n if (newText.indexOf(oldText) === 0 || knownSymbols.indexOf(oldFormat[caret - 1]) === -1) {\n var symbol = oldFormat[0];\n for (i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n if (knownSymbols.indexOf(oldFormat[i]) >= 0) {\n symbol = oldFormat[i];\n break;\n }\n }\n return [[\n symbol,\n newText[caret - 1]\n ]];\n }\n return [[\n oldFormat[caret - 1],\n newText[caret - 1]\n ]];\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.datepicker', [\n 'kendo.calendar',\n 'kendo.popup',\n 'kendo.dateinput'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'datepicker',\n name: 'DatePicker',\n category: 'web',\n description: 'The DatePicker widget allows the user to select a date from a calendar or by direct input.',\n depends: [\n 'calendar',\n 'popup'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, parse = kendo.parseDate, keys = kendo.keys, support = kendo.support, template = kendo.template, activeElement = kendo._activeElement, DIV = '<div />', SPAN = '<span />', ns = '.kendoDatePicker', CLICK = 'click' + ns, UP = support.mouseAndTouchPresent ? kendo.applyEventMap('up', ns.slice(1)) : CLICK, OPEN = 'open', CLOSE = 'close', CHANGE = 'change', DISABLED = 'disabled', READONLY = 'readonly', DEFAULT = 'k-state-default', FOCUSED = 'k-state-focused', SELECTED = 'k-state-selected', STATEDISABLED = 'k-state-disabled', HOVER = 'k-state-hover', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, MOUSEDOWN = 'mousedown' + ns, ID = 'id', MIN = 'min', MAX = 'max', MONTH = 'month', ARIA_DISABLED = 'aria-disabled', ARIA_EXPANDED = 'aria-expanded', ARIA_HIDDEN = 'aria-hidden', calendar = kendo.calendar, isInRange = calendar.isInRange, restrictValue = calendar.restrictValue, isEqualDatePart = calendar.isEqualDatePart, extend = $.extend, proxy = $.proxy, DATE = Date;\n function normalize(options) {\n var parseFormats = options.parseFormats, format = options.format;\n calendar.normalize(options);\n parseFormats = $.isArray(parseFormats) ? parseFormats : [parseFormats];\n if (!parseFormats.length) {\n parseFormats.push('yyyy-MM-dd');\n }\n if ($.inArray(format, parseFormats) === -1) {\n parseFormats.splice(0, 0, options.format);\n }\n options.parseFormats = parseFormats;\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n var DateView = function (options) {\n var that = this, id, body = document.body, div = $(DIV).attr(ARIA_HIDDEN, 'true').addClass('k-calendar-container').appendTo(body);\n that.options = options = options || {};\n id = options.id;\n if (id) {\n id += '_dateview';\n div.attr(ID, id);\n that._dateViewID = id;\n }\n that.popup = new ui.Popup(div, extend(options.popup, options, {\n name: 'Popup',\n isRtl: kendo.support.isRtl(options.anchor)\n }));\n that.div = div;\n that.value(options.value);\n };\n DateView.prototype = {\n _calendar: function () {\n var that = this;\n var calendar = that.calendar;\n var options = that.options;\n var div;\n if (!calendar) {\n div = $(DIV).attr(ID, kendo.guid()).appendTo(that.popup.element).on(MOUSEDOWN, preventDefault).on(CLICK, 'td:has(.k-link)', proxy(that._click, that));\n that.calendar = calendar = new ui.Calendar(div);\n that._setOptions(options);\n kendo.calendar.makeUnselectable(calendar.element);\n calendar.navigate(that._value || that._current, options.start);\n that.value(that._value);\n }\n },\n _setOptions: function (options) {\n this.calendar.setOptions({\n focusOnNav: false,\n change: options.change,\n culture: options.culture,\n dates: options.dates,\n depth: options.depth,\n footer: options.footer,\n format: options.format,\n max: options.max,\n min: options.min,\n month: options.month,\n weekNumber: options.weekNumber,\n start: options.start,\n disableDates: options.disableDates\n });\n },\n setOptions: function (options) {\n var old = this.options;\n var disableDates = options.disableDates;\n if (disableDates) {\n options.disableDates = calendar.disabled(disableDates);\n }\n this.options = extend(old, options, {\n change: old.change,\n close: old.close,\n open: old.open\n });\n if (this.calendar) {\n this._setOptions(this.options);\n }\n },\n destroy: function () {\n this.popup.destroy();\n },\n open: function () {\n var that = this;\n var popupHovered;\n that._calendar();\n popupHovered = that.popup._hovered;\n that.popup._hovered = true;\n that.popup.open();\n setTimeout(function () {\n that.popup._hovered = popupHovered;\n }, 1);\n },\n close: function () {\n this.popup.close();\n },\n min: function (value) {\n this._option(MIN, value);\n },\n max: function (value) {\n this._option(MAX, value);\n },\n toggle: function () {\n var that = this;\n that[that.popup.visible() ? CLOSE : OPEN]();\n },\n move: function (e) {\n var that = this, key = e.keyCode, calendar = that.calendar, selectIsClicked = e.ctrlKey && key == keys.DOWN || key == keys.ENTER, handled = false;\n if (e.altKey) {\n if (key == keys.DOWN) {\n that.open();\n e.preventDefault();\n handled = true;\n } else if (key == keys.UP) {\n that.close();\n e.preventDefault();\n handled = true;\n }\n } else if (that.popup.visible()) {\n if (key == keys.ESC || selectIsClicked && calendar._cell.hasClass(SELECTED)) {\n that.close();\n e.preventDefault();\n return true;\n }\n if (key != keys.SPACEBAR) {\n that._current = calendar._move(e);\n }\n handled = true;\n }\n return handled;\n },\n current: function (date) {\n this._current = date;\n this.calendar._focus(date);\n },\n value: function (value) {\n var that = this, calendar = that.calendar, options = that.options, disabledDate = options.disableDates;\n if (disabledDate && disabledDate(value)) {\n value = null;\n }\n that._value = value;\n that._current = new DATE(+restrictValue(value, options.min, options.max));\n if (calendar) {\n calendar.value(value);\n }\n },\n _click: function (e) {\n if (e.currentTarget.className.indexOf(SELECTED) !== -1) {\n this.calendar.trigger('change');\n this.close();\n }\n },\n _option: function (option, value) {\n var that = this;\n var calendar = that.calendar;\n that.options[option] = value;\n if (calendar) {\n calendar[option](value);\n }\n }\n };\n DateView.normalize = normalize;\n kendo.DateView = DateView;\n var DatePicker = Widget.extend({\n init: function (element, options) {\n var that = this, disabled, div;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n options.disableDates = kendo.calendar.disabled(options.disableDates);\n options.min = parse(element.attr('min')) || parse(options.min);\n options.max = parse(element.attr('max')) || parse(options.max);\n normalize(options);\n that._initialOptions = extend({}, options);\n that._wrapper();\n that.dateView = new DateView(extend({}, options, {\n id: element.attr(ID),\n anchor: that.wrapper,\n change: function () {\n that._change(this.value());\n that.close();\n },\n close: function (e) {\n if (that.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n element.attr(ARIA_EXPANDED, false);\n div.attr(ARIA_HIDDEN, true);\n }\n },\n open: function (e) {\n var options = that.options, date;\n if (that.trigger(OPEN)) {\n e.preventDefault();\n } else {\n if (that.element.val() !== that._oldText) {\n date = parse(element.val(), options.parseFormats, options.culture);\n that.dateView[date ? 'current' : 'value'](date);\n }\n element.attr(ARIA_EXPANDED, true);\n div.attr(ARIA_HIDDEN, false);\n that._updateARIA(date);\n }\n }\n }));\n div = that.dateView.div;\n that._icon();\n try {\n element[0].setAttribute('type', 'text');\n } catch (e) {\n element[0].type = 'text';\n }\n element.addClass('k-input').attr({\n role: 'combobox',\n 'aria-expanded': false,\n 'aria-owns': that.dateView._dateViewID,\n 'autocomplete': 'off'\n });\n that._reset();\n that._template();\n disabled = element.is('[disabled]') || $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n that._createDateInput(options);\n that._old = that._update(options.value || that.element.val());\n that._oldText = element.val();\n kendo.notify(that);\n },\n events: [\n OPEN,\n CLOSE,\n CHANGE\n ],\n options: {\n name: 'DatePicker',\n value: null,\n footer: '',\n format: '',\n culture: '',\n parseFormats: [],\n min: new Date(1900, 0, 1),\n max: new Date(2099, 11, 31),\n start: MONTH,\n depth: MONTH,\n animation: {},\n month: {},\n dates: [],\n disableDates: null,\n ARIATemplate: 'Current focused date is #=kendo.toString(data.current, \"D\")#',\n dateInput: false,\n weekNumber: false\n },\n setOptions: function (options) {\n var that = this;\n var value = that._value;\n Widget.fn.setOptions.call(that, options);\n options = that.options;\n options.min = parse(options.min);\n options.max = parse(options.max);\n normalize(options);\n that.dateView.setOptions(options);\n that._createDateInput(options);\n if (!that._dateInput) {\n that.element.val(kendo.toString(value, options.format, options.culture));\n }\n if (value) {\n that._updateARIA(value);\n }\n },\n _editable: function (options) {\n var that = this, icon = that._dateIcon.off(ns), element = that.element.off(ns), wrapper = that._inputWrapper.off(ns), readonly = options.readonly, disable = options.disable;\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n if (element && element.length) {\n element[0].removeAttribute(DISABLED);\n element[0].removeAttribute(READONLY);\n }\n element.attr(ARIA_DISABLED, false).on('keydown' + ns, proxy(that._keydown, that)).on('focusout' + ns, proxy(that._blur, that)).on('focus' + ns, function () {\n that._inputWrapper.addClass(FOCUSED);\n });\n icon.on(UP, proxy(that._click, that)).on(MOUSEDOWN, preventDefault);\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n element.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable);\n }\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n if (this._dateInput) {\n this._dateInput._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n }\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n if (this._dateInput) {\n this._dateInput._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n }\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.dateView.destroy();\n that.element.off(ns);\n that._dateIcon.off(ns);\n that._inputWrapper.off(ns);\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n },\n open: function () {\n this.dateView.open();\n },\n close: function () {\n this.dateView.close();\n },\n min: function (value) {\n return this._option(MIN, value);\n },\n max: function (value) {\n return this._option(MAX, value);\n },\n value: function (value) {\n var that = this;\n if (value === undefined) {\n return that._value;\n }\n that._old = that._update(value);\n if (that._old === null) {\n that.element.val('');\n }\n that._oldText = that.element.val();\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _blur: function () {\n var that = this, value = that.element.val();\n that.close();\n if (value !== that._oldText) {\n that._change(value);\n }\n that._inputWrapper.removeClass(FOCUSED);\n },\n _click: function (e) {\n var that = this;\n that.dateView.toggle();\n that._focusElement(e.type);\n },\n _focusElement: function (eventType) {\n var element = this.element;\n if ((!support.touch || support.mouseAndTouchPresent && !(eventType || '').match(/touch/i)) && element[0] !== activeElement()) {\n element.trigger('focus');\n }\n },\n _change: function (value) {\n var that = this, oldValue = that.element.val(), dateChanged;\n value = that._update(value);\n dateChanged = !kendo.calendar.isEqualDate(that._old, value);\n var valueUpdated = dateChanged && !that._typing;\n var textFormatted = oldValue !== that.element.val();\n if (valueUpdated || textFormatted) {\n that.element.trigger(CHANGE);\n }\n if (dateChanged) {\n that._old = value;\n that._oldText = that.element.val();\n that.trigger(CHANGE);\n }\n that._typing = false;\n },\n _keydown: function (e) {\n var that = this, dateView = that.dateView, value = that.element.val(), handled = false;\n if (!dateView.popup.visible() && e.keyCode == keys.ENTER && value !== that._oldText) {\n that._change(value);\n } else {\n handled = dateView.move(e);\n that._updateARIA(dateView._current);\n if (!handled) {\n that._typing = true;\n } else if (that._dateInput && e.stopImmediatePropagation) {\n e.stopImmediatePropagation();\n }\n }\n },\n _icon: function () {\n var that = this, element = that.element, icon;\n icon = element.next('span.k-select');\n if (!icon[0]) {\n icon = $('<span unselectable=\"on\" class=\"k-select\" aria-label=\"select\"><span class=\"k-icon k-i-calendar\"></span></span>').insertAfter(element);\n }\n that._dateIcon = icon.attr({\n 'role': 'button',\n 'aria-controls': that.dateView._dateViewID\n });\n },\n _option: function (option, value) {\n var that = this, options = that.options;\n if (value === undefined) {\n return options[option];\n }\n value = parse(value, options.parseFormats, options.culture);\n if (!value) {\n return;\n }\n options[option] = new DATE(+value);\n that.dateView[option](value);\n },\n _update: function (value) {\n var that = this, options = that.options, min = options.min, max = options.max, current = that._value, date = parse(value, options.parseFormats, options.culture), isSameType = date === null && current === null || date instanceof Date && current instanceof Date, formattedValue;\n if (options.disableDates(date)) {\n date = null;\n if (!that._old && !that.element.val()) {\n value = null;\n }\n }\n if (+date === +current && isSameType) {\n formattedValue = kendo.toString(date, options.format, options.culture);\n if (formattedValue !== value) {\n that.element.val(date === null ? value : formattedValue);\n }\n return date;\n }\n if (date !== null && isEqualDatePart(date, min)) {\n date = restrictValue(date, min, max);\n } else if (!isInRange(date, min, max)) {\n date = null;\n }\n that._value = date;\n that.dateView.value(date);\n if (that._dateInput && date) {\n that._dateInput.value(date || value);\n } else {\n that.element.val(kendo.toString(date || value, options.format, options.culture));\n }\n that._updateARIA(date);\n return date;\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper;\n wrapper = element.parents('.k-datepicker');\n if (!wrapper[0]) {\n wrapper = element.wrap(SPAN).parent().addClass('k-picker-wrap k-state-default');\n wrapper = wrapper.wrap(SPAN).parent();\n }\n wrapper[0].style.cssText = element[0].style.cssText;\n element.css({\n width: '100%',\n height: element[0].style.height\n });\n that.wrapper = wrapper.addClass('k-widget k-datepicker').addClass(element[0].className);\n that._inputWrapper = $(wrapper[0].firstChild);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n that.value(element[0].defaultValue);\n that.max(that._initialOptions.max);\n that.min(that._initialOptions.min);\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _template: function () {\n this._ariaTemplate = template(this.options.ARIATemplate);\n },\n _createDateInput: function (options) {\n if (this._dateInput) {\n this._dateInput.destroy();\n this._dateInput = null;\n }\n if (options.dateInput) {\n this._dateInput = new ui.DateInput(this.element, {\n culture: options.culture,\n format: options.format,\n min: options.min,\n max: options.max\n });\n }\n },\n _updateARIA: function (date) {\n var cell;\n var that = this;\n var calendar = that.dateView.calendar;\n if (that.element && that.element.length) {\n that.element[0].removeAttribute('aria-activedescendant');\n }\n if (calendar) {\n cell = calendar._cell;\n cell.attr('aria-label', that._ariaTemplate({ current: date || calendar.current() }));\n that.element.attr('aria-activedescendant', cell.attr('id'));\n }\n }\n });\n ui.plugin(DatePicker);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.drawer', ['kendo.userevents'], f);\n}(function () {\n var __meta__ = {\n id: 'drawer',\n name: 'Drawer',\n category: 'web',\n description: 'The Kendo Drawer widget provides slide to reveal sidebar',\n depends: ['userevents']\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, SHOW = 'show', HIDE = 'hide', ITEMCLICK = 'itemClick', PUSH = 'push', OVERLAY = 'overlay', LEFT = 'left', RIGHT = 'right';\n var Drawer = kendo.ui.Widget.extend({\n init: function (element, options) {\n var that = this;\n var userEvents;\n Widget.fn.init.call(this, element, options);\n options = that.options;\n that._element(element);\n that._wrapper(element);\n that.position();\n that._mode();\n if (options.mini) {\n that._miniMode();\n }\n that._initDrawerItems();\n if (options.mini && options.mode != PUSH) {\n that._setBodyOffset();\n }\n userEvents = this.userEvents = new kendo.UserEvents(options.mode != PUSH ? $(document.body) : this.drawerContainer, {\n fastTap: true,\n allowSelection: true\n });\n var tap = function (e) {\n if ($.contains(that.drawerItemsWrapper[0], e.event.target)) {\n that._itemClick(e);\n }\n if (that.visible && !that.trigger('hide', { sender: this })) {\n that.hide();\n e.preventDefault();\n }\n };\n if (this.options.swipeToOpen) {\n userEvents.bind('start', function (e) {\n that._start(e);\n });\n userEvents.bind('move', function (e) {\n that._update(e);\n });\n userEvents.bind('end', function (e) {\n that._end(e);\n });\n userEvents.bind('tap', tap);\n } else {\n userEvents.bind('press', tap);\n }\n if (options.minHeight && options.mode == PUSH) {\n that.drawerContainer.css('min-height', options.minHeight);\n }\n },\n _element: function () {\n var that = this;\n var element = that.element;\n var options = that.options;\n var contentElement = that.contentElement = element.children().first();\n that.drawerElement = $(options.template);\n contentElement.addClass('k-drawer-content');\n element.addClass('k-widget k-drawer');\n },\n _wrapper: function () {\n var options = this.options;\n var drawerElement = this.drawerElement;\n var element = this.element;\n var contentElement = this.contentElement;\n var drawerItemsWrapper = this.drawerItemsWrapper = drawerElement.wrap('<div class=\\'k-drawer-items\\'></div>').parent();\n var drawerWrapper = this.drawerWrapper = drawerItemsWrapper.wrap('<div class=\\'k-drawer-wrapper\\'></div>').parent();\n var drawerContainer = this.drawerContainer = element.wrap('<div class=\\'k-drawer-container\\'></div>').parent();\n if (options.mini) {\n if (options.mini.width) {\n drawerWrapper.width(options.mini.width);\n }\n } else {\n drawerWrapper.width(0);\n }\n if (options.mode === PUSH) {\n drawerContainer.append(contentElement);\n } else if (options.mode === OVERLAY) {\n drawerContainer.after(contentElement);\n $(document.body).prepend(drawerContainer);\n }\n element.append(drawerWrapper);\n },\n _setBodyOffset: function () {\n var overlayMiniOffset = this.element.outerWidth();\n if (this.leftPositioned) {\n $(document.body).css('padding-left', overlayMiniOffset);\n } else {\n $(document.body).css('padding-right', overlayMiniOffset);\n }\n },\n _initDrawerItems: function () {\n var drawerItemsWrapper = this.drawerItemsWrapper;\n var drawerItems = drawerItemsWrapper.find('[data-role=\\'drawer-item\\']');\n var separatorItems = drawerItemsWrapper.find('[data-role=\\'drawer-separator\\']');\n drawerItems.addClass('k-drawer-item');\n separatorItems.addClass('k-drawer-item k-drawer-separator');\n if (this._selectedItemIndex >= 0) {\n drawerItems.removeClass('k-state-selected');\n drawerItems.eq(this._selectedItemIndex).addClass('k-state-selected');\n }\n },\n _mode: function () {\n var options = this.options;\n var drawerContainer = this.drawerContainer;\n var overlayContainer;\n if (options.mode == PUSH) {\n drawerContainer.addClass('k-drawer-' + PUSH);\n } else {\n drawerContainer.addClass('k-drawer-' + OVERLAY);\n overlayContainer = this.overlayContainer = $('<div class=\"k-overlay\"></div>');\n overlayContainer.hide();\n drawerContainer.prepend(overlayContainer);\n }\n },\n _miniMode: function () {\n var options = this.options;\n var drawerContainer = this.drawerContainer;\n var miniWidth = options.mini.width;\n var miniTemplate = this._miniTemplate = options.mini.template && $(options.mini.template);\n var drawerItemsWrapper = this.drawerItemsWrapper;\n var drawerWrapper = this.drawerWrapper;\n drawerContainer.addClass('k-drawer-mini');\n if (miniTemplate) {\n drawerItemsWrapper.html(miniTemplate);\n }\n if (miniWidth) {\n drawerWrapper.width(miniWidth);\n }\n this.minWidth = options.mini.width || this.drawerWrapper.width();\n },\n show: function () {\n var drawerWrapper = this.drawerWrapper;\n var drawerContainer = this.drawerContainer;\n var options = this.options;\n var isExpanded = drawerContainer.hasClass('k-drawer-expanded');\n var miniTemplate = this._miniTemplate;\n var drawerElement = this.drawerElement;\n var drawerItemsWrapper = this.drawerItemsWrapper;\n if (!isExpanded) {\n drawerContainer.addClass('k-drawer-expanded');\n this.visible = true;\n }\n if (miniTemplate) {\n drawerItemsWrapper.html(drawerElement);\n this._initDrawerItems();\n this._selectItem();\n }\n drawerWrapper.width(options.width);\n if (options.mode === OVERLAY) {\n this.overlayContainer.show();\n this.visible = true;\n }\n },\n hide: function () {\n var that = this;\n var drawerWrapper = that.drawerWrapper;\n var drawerContainer = that.drawerContainer;\n var options = this.options;\n var drawerItemsWrapper = this.drawerItemsWrapper;\n var miniTemplate = this._miniTemplate;\n var miniWidth = options.mini && options.mini.width;\n if (this._miniTemplate) {\n drawerItemsWrapper.html(miniTemplate);\n that._initDrawerItems();\n this._selectItem();\n }\n if (options.mini) {\n if (miniWidth) {\n drawerWrapper.width(miniWidth);\n } else {\n drawerWrapper.width('');\n }\n } else {\n drawerWrapper.width(0);\n }\n if (this.visible) {\n drawerContainer.removeClass('k-drawer-expanded');\n this.visible = false;\n }\n if (options.mode === OVERLAY) {\n this.overlayContainer.hide();\n }\n },\n position: function (value) {\n var that = this;\n var options = that.options;\n var position = value || options.position;\n var drawerContainer = that.drawerContainer;\n if (position == RIGHT) {\n drawerContainer.removeClass('k-drawer-' + LEFT);\n drawerContainer.addClass('k-drawer-' + RIGHT);\n } else {\n drawerContainer.removeClass('k-drawer-' + RIGHT);\n drawerContainer.addClass('k-drawer-' + LEFT);\n }\n this.leftPositioned = position === LEFT;\n },\n _start: function (e) {\n var that = this;\n var options = this.options;\n var drawerWrapper = this.drawerWrapper;\n var drawerItemsWrapper = this.drawerItemsWrapper;\n var userEvents = e.sender;\n if (Math.abs(e.x.velocity) < Math.abs(e.y.velocity) || kendo.triggeredByInput(e.event)) {\n userEvents.cancel();\n return;\n }\n if (this.drawerMini) {\n drawerItemsWrapper.html(that.drawerElement);\n }\n drawerWrapper.css('transition', 'none');\n if (options.mode != PUSH) {\n this.overlayContainer.show();\n }\n },\n _update: function (e) {\n var options = this.options;\n var mode = options.mode;\n if (mode == PUSH) {\n this._push(e);\n } else {\n this._overlay(e);\n }\n },\n _end: function (e) {\n var velocity = e.x.velocity;\n var options = this.options;\n var drawerWrapper = this.drawerWrapper;\n var elementWidth = drawerWrapper.width();\n var pastHalf = elementWidth > options.width / 2;\n var velocityThreshold = 0.8;\n var shouldShow;\n drawerWrapper.css('transition', 'all .3s ease-out');\n if (this.leftPositioned) {\n shouldShow = velocity > -velocityThreshold && (velocity > velocityThreshold || pastHalf);\n } else {\n shouldShow = velocity < velocityThreshold && (velocity < -velocityThreshold || pastHalf);\n }\n if (shouldShow) {\n if (this.trigger('show', { sender: this })) {\n e.preventDefault();\n this.hide();\n } else {\n this.show();\n }\n } else {\n if (this.trigger('hide', { sender: this })) {\n e.preventDefault();\n this.show();\n } else {\n this.hide();\n }\n }\n },\n _overlay: function (moveEventArgs) {\n var options = this.options;\n var minWidth = options.mini && options.mini.width || this.minWidth || 0;\n var drawerWrapper = this.drawerWrapper;\n var elementWidth = drawerWrapper.width();\n var limitedPosition;\n var updatedPosition;\n updatedPosition = elementWidth + (this.leftPositioned ? moveEventArgs.x.delta : -moveEventArgs.x.delta);\n limitedPosition = Math.min(Math.max(updatedPosition, minWidth), options.width);\n moveEventArgs.event.preventDefault();\n moveEventArgs.event.stopPropagation();\n drawerWrapper.width(limitedPosition);\n },\n _push: function (moveEventArgs) {\n var options = this.options;\n var minWidth = options.mini && options.mini.width || this.minWidth || 0;\n var drawerWrapper = this.drawerWrapper;\n var elementWidth = drawerWrapper.width();\n var limitedPosition;\n var updatedPosition;\n updatedPosition = elementWidth + (this.leftPositioned ? moveEventArgs.x.delta : -moveEventArgs.x.delta);\n limitedPosition = Math.min(Math.max(updatedPosition, minWidth), options.width);\n moveEventArgs.event.preventDefault();\n moveEventArgs.event.stopPropagation();\n drawerWrapper.width(limitedPosition);\n },\n _selectItem: function (item) {\n var selectedItemIndex;\n if (item) {\n item.addClass('k-state-selected');\n this.trigger('itemClick', {\n item: item,\n sender: this\n });\n this._selectedItemIndex = item.index();\n return;\n }\n selectedItemIndex = this._selectedItemIndex;\n if (selectedItemIndex) {\n this.drawerItemsWrapper.find('[data-role=\\'drawer-item\\']').eq(selectedItemIndex).addClass('k-state-selected');\n }\n },\n _itemClick: function (e) {\n var that = this;\n var item;\n if ($(e.event.target).find('.k-drawer-item').length > 0) {\n item = $(e.event.target).find('.k-drawer-item');\n } else if ($(e.event.target).closest('.k-drawer-item').length > 0) {\n item = $(e.event.target).closest('.k-drawer-item');\n } else if ($(e.event.target).hasClass('.k-drawer-item')) {\n item = $(e.event.target);\n }\n that.drawerItemsWrapper.find('.k-drawer-item').removeClass('k-state-selected');\n that._selectItem(item);\n },\n destroy: function () {\n var options = this.options;\n if (options.mode != PUSH) {\n if (this.leftPositioned) {\n $(document.body).css('padding-left', 0);\n } else {\n $(document.body).css('padding-right', 0);\n }\n }\n Widget.fn.destroy.call(this);\n this.userEvents.destroy();\n kendo.destroy(this.element);\n this.element = this.drawerWrapper = this.drawerElement = this.drawerContainer = this.drawerItemsWrapper = this._miniTemplate = null;\n },\n options: {\n name: 'Drawer',\n position: LEFT,\n mode: 'overlay',\n swipeToOpen: true,\n width: 280,\n mini: false,\n template: ''\n },\n events: [\n HIDE,\n SHOW,\n ITEMCLICK\n ]\n });\n kendo.ui.plugin(Drawer);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.multiviewcalendar', [\n 'kendo.core',\n 'kendo.selectable',\n 'kendo.calendar'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'multiviewcalendar',\n name: 'MultiViewCalendar',\n category: 'web',\n description: 'Multi-view calendar.',\n depends: [\n 'core',\n 'selectable',\n 'calendar'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, calendar = kendo.calendar, support = kendo.support, isInRange = calendar.isInRange, toDateObject = calendar.toDateObject, createDate = calendar.createDate, isEqualDate = calendar.isEqualDate, getToday = calendar.getToday, keys = kendo.keys, ui = kendo.ui, Widget = ui.Widget, Selectable = ui.Selectable, template = kendo.template, mobileOS = support.mobileOS, ns = '.kendoMultiViewCalendar', CLICK = 'click', KEYDOWN = 'keydown', ID = 'id', MIN = 'min', MONTH = 'month', DOT = '.', CENTURY = 'century', DECADE = 'decade', CHANGE = 'change', NAVIGATE = 'navigate', VALUE = 'value', FOCUSED = 'k-state-focused', SELECTED = 'k-state-selected', MID = 'k-range-mid', SPLITEND = 'k-range-split-end', SPLITSTART = 'k-range-split-start', START = 'k-range-start', END = 'k-range-end', HOVER = 'k-state-hover', DISABLED = 'k-state-disabled', TODAY = 'k-nav-today', OTHERMONTH = 'k-other-month', OUTOFRANGE = 'k-out-of-range', CELLSELECTOR = 'td:has(.k-link):not(.' + OUTOFRANGE + ')', CELLSELECTORVALID = 'td:has(.k-link):not(.' + DISABLED + '):not(.' + OUTOFRANGE + ')', BLUR = 'blur', FOCUS = 'focus', MOUSEENTER = support.touch ? 'touchstart' : 'mouseenter', MOUSELEAVE_NS = support.touch ? 'touchend' + ns + ' touchmove' + ns : 'mouseleave' + ns, PREVARROW = '_prevArrow', NEXTARROW = '_nextArrow', ARIA_SELECTED = 'aria-selected', INPUTSELECTOR = 'input,a,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up', ARIA_DISABLED = 'aria-disabled', ARIA_LABEL = 'aria-label', proxy = $.proxy, DATE = Date, views = {\n month: 0,\n year: 1,\n decade: 2,\n century: 3\n };\n var RangeSelectable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that.userEvents = new kendo.UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n tap: proxy(that._tap, that),\n touchAction: 'none'\n });\n },\n events: [CHANGE],\n options: {\n name: 'RangeSelectable',\n filter: '>*',\n inputSelectors: INPUTSELECTOR,\n multiple: false,\n dragToSelect: true,\n relatedTarget: $.noop\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.userEvents.destroy();\n that._lastActive = that.element = that.userEvents = that._start = that._end = null;\n },\n _allowSelection: function (target) {\n if ($(target).is(this.options.inputSelectors)) {\n this.userEvents.cancel();\n return false;\n }\n return true;\n },\n start: function (element) {\n if (element === undefined) {\n return this._start;\n }\n element.addClass(START + ' ' + SELECTED);\n this._start = element;\n },\n end: function (element) {\n if (element === undefined) {\n return this._start;\n }\n element.addClass(END + ' ' + SELECTED);\n this._end = element;\n },\n mid: function (elements) {\n var tables = this.element.find('table.k-month');\n elements.addClass(MID);\n tables.each(function () {\n var that = $(this);\n var lastCell = that.find(CELLSELECTORVALID + ':last');\n var firstCell = that.find(CELLSELECTORVALID + ':first');\n if (lastCell.hasClass(MID)) {\n lastCell.addClass(SPLITEND);\n }\n if (firstCell.hasClass(MID)) {\n firstCell.addClass(SPLITSTART);\n }\n });\n },\n clear: function (clearVariables) {\n this.element.find(CELLSELECTOR).removeClass(END + ' ' + SELECTED + ' ' + START + ' ' + MID + ' ' + SPLITEND + ' ' + SPLITSTART);\n if (clearVariables) {\n this._start = this._end = null;\n }\n },\n selectFrom: function (start) {\n var that = this;\n var items;\n var startIdx;\n items = that.element.find(CELLSELECTOR);\n startIdx = $.inArray($(start)[0], items);\n that.clear();\n that.start(start);\n items = items.filter(function (index) {\n return index > startIdx;\n });\n that.mid(items);\n },\n selectTo: function (end) {\n var that = this;\n var items;\n var endIdx;\n items = that.element.find(CELLSELECTOR);\n endIdx = $.inArray($(end)[0], items);\n that.clear();\n items = items.filter(function (index) {\n return index < endIdx;\n });\n that.mid(items);\n that.end($(end));\n },\n range: function (start, end) {\n var that = this;\n var items;\n var startIdx;\n var endIdx;\n var temp;\n if (start === undefined) {\n return {\n start: that._start,\n end: that._end\n };\n }\n items = that.element.find(CELLSELECTOR);\n startIdx = $.inArray($(start)[0], items);\n endIdx = $.inArray($(end)[0], items);\n if (startIdx > endIdx) {\n temp = end;\n end = start;\n start = temp;\n temp = startIdx;\n startIdx = endIdx;\n endIdx = temp;\n }\n that.clear();\n start.addClass(START + ' ' + SELECTED);\n that._start = start;\n items = items.filter(function (index) {\n return index > startIdx && index < endIdx;\n });\n that.mid(items);\n that.end($(end));\n },\n change: function () {\n this.trigger(CHANGE);\n },\n _tap: function (e) {\n var target = $(e.target), that = this, items, startIdx, endIdx;\n that._lastActive = target;\n if (!that._start) {\n that.start(target);\n that.trigger(CHANGE);\n return;\n }\n if (that._start && !that._end) {\n items = that.element.find(CELLSELECTOR);\n startIdx = $.inArray($(that._start)[0], items);\n endIdx = $.inArray($(target)[0], items);\n if (+toDateObject($(that._start).find('a')) > +toDateObject($(target).find('a'))) {\n that.clear();\n that.start(target);\n that.trigger(CHANGE);\n return;\n }\n items = items.filter(function (index) {\n return index > startIdx && index < endIdx;\n });\n that.mid(items);\n that.end($(target));\n that.trigger(CHANGE);\n return;\n }\n if (that._start && that._end) {\n if (target.hasClass(MID)) {\n if (!that._toggling) {\n that.range(target, that._end);\n } else {\n that.range(that._start, target);\n }\n that._toggling = !that._toggling;\n that.trigger(CHANGE);\n return;\n }\n that._toggling = false;\n that._end = null;\n that.clear();\n that.start(target);\n that.trigger(CHANGE);\n }\n }\n });\n var MultiViewCalendar = Widget.extend({\n init: function (element, options) {\n var that = this;\n var id;\n var culture;\n Widget.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n options = that.options;\n that.options.disableDates = calendar.disabled(that.options.disableDates);\n culture = kendo.getCulture(options.culture);\n options.format = kendo._extractFormat(options.format || culture.calendars.standard.patterns.d);\n that._templates();\n that._header();\n that._wrapper();\n id = element.addClass('k-widget k-calendar k-calendar-range' + (options.weekNumber ? ' k-week-number' : '')).on(KEYDOWN + ns, 'table.k-content', proxy(that._move, that)).on(BLUR + ns, 'table', proxy(that._blur, that)).on(CLICK + ns, CELLSELECTORVALID, function (e) {\n var link = e.currentTarget.firstChild;\n if (link.href.indexOf('#') != -1) {\n e.preventDefault();\n }\n that._click($(link));\n }).on(MOUSEENTER + ns, CELLSELECTORVALID, proxy(that._mouseEnter, that)).on(MOUSELEAVE_NS, CELLSELECTORVALID, function () {\n $(this).removeClass(HOVER);\n }).attr(ID);\n if (id) {\n that._cellID = id + '_cell_selected';\n }\n that._calendarWidth = that.element.width();\n that._range = options.range;\n that._initViews({\n viewName: options.start,\n value: options.value\n });\n that._selectable();\n that._footer(that.footer);\n that._selectDates = [];\n that.value(options.value);\n if (options.selectable == 'multiple') {\n that._selectDates = options.selectDates.length ? options.selectDates : that._selectDates;\n that._restoreSelection();\n }\n if (options.selectable == 'range') {\n that.selectRange(that._range);\n }\n kendo.notify(that);\n },\n options: {\n name: 'MultiViewCalendar',\n value: null,\n min: new DATE(1900, 0, 1),\n max: new DATE(2099, 11, 31),\n dates: [],\n disableDates: null,\n culture: '',\n footer: '',\n format: '',\n month: {},\n range: {\n start: null,\n end: null\n },\n weekNumber: false,\n views: 2,\n showViewHeader: false,\n selectable: 'single',\n selectDates: [],\n start: MONTH,\n depth: MONTH,\n messages: { weekColumnHeader: '' }\n },\n events: [\n CHANGE,\n NAVIGATE\n ],\n setOptions: function (options) {\n var that = this;\n calendar.normalize(options);\n options.disableDates = calendar.disabled(options.disableDates);\n Widget.fn.setOptions.call(that, options);\n that._selectable();\n that._templates();\n that._footer(that.footer);\n for (var i = 0; i < that._views.length; i++) {\n that._views[i].off(ns).remove();\n }\n that._initViews({\n viewName: options.start,\n value: options.value\n });\n that._range = options.range || {\n start: null,\n end: null\n };\n that._restoreSelection();\n },\n destroy: function () {\n var that = this;\n that._cell = null;\n that._currentView = null;\n that._current = null;\n if (that._views) {\n for (var i = 0; i < that._views.length; i++) {\n that._views[i].off(ns).remove();\n }\n }\n that.element.off(ns);\n if (that.header) {\n that.header.off(ns);\n that._title = null;\n that.header = null;\n }\n if (that.selectable) {\n that.selectable.destroy();\n that.selectable = null;\n }\n if (that.rangeSelectable) {\n that.rangeSelectable.destroy();\n that.rangeSelectable = null;\n }\n if (that._today) {\n kendo.destroy(that._today.off(ns));\n }\n that._views = null;\n Widget.fn.destroy.call(that);\n },\n current: function () {\n return this._current;\n },\n focus: function () {\n var table;\n if (this._cell) {\n this._cell.closest('table').trigger('focus');\n } else if (this._current && this._dateInViews(this._current)) {\n this._cell = this._cellByDate(this._current);\n this._cell.closest('table').trigger('focus');\n } else {\n table = this.element.find('table').first().trigger('focus');\n this._cell = table.find(CELLSELECTORVALID + ':first');\n this._current = toDateObject(this._cell.find('a'));\n }\n this._cell.addClass(FOCUSED);\n },\n min: function (value) {\n return this._option(MIN, value);\n },\n max: function (value) {\n return this._option('max', value);\n },\n view: function () {\n return this._currentView;\n },\n navigateToPast: function () {\n this._navigate(PREVARROW, -1);\n },\n navigateToFuture: function () {\n this._navigate(NEXTARROW, 1);\n },\n navigateUp: function () {\n var that = this, index = that._index;\n if (that._title.hasClass(DISABLED)) {\n return;\n }\n that.navigate(that._current, ++index);\n },\n navigateDown: function (value) {\n var that = this, index = that._index, depth = that.options.depth;\n if (!value) {\n return;\n }\n if (index === views[depth]) {\n if (!isEqualDate(that._value, that._current) || !isEqualDate(that._value, value)) {\n that.value(value);\n that.trigger(CHANGE);\n }\n return;\n }\n that.navigate(value, --index);\n },\n navigate: function (value, view) {\n view = isNaN(view) ? calendar.views[calendar.viewsEnum[view]] : calendar.views[view];\n var that = this;\n var options = that.options;\n var min = options.min;\n var max = options.max;\n if (!value) {\n that._current = value = new DATE(+calendar.restrictValue(value, min, max));\n } else {\n that._current = value;\n }\n if (view === undefined) {\n view = that._currentView;\n }\n that._currentView = view;\n for (var i = 0; i < that._views.length; i++) {\n that._views[i].off(ns).remove();\n }\n that._initViews({\n viewName: view.name,\n value: value\n });\n that._restoreSelection();\n },\n _updateHeader: function () {\n var that = this;\n var view = that._currentView;\n var title = that._title;\n var value = that._firstViewValue;\n var options = that.options;\n var visibleRange = that._visibleRange();\n var culture = options.culture;\n var min = options.min;\n var max = options.max;\n var lastDate;\n var disabled;\n var prevDisabled;\n var nextDisabled;\n if (view.name === DECADE || view.name === CENTURY) {\n lastDate = shiftDate(value, view.name, options.views - 1);\n if (!isInRange(lastDate, min, max)) {\n lastDate = max;\n }\n title.html(view.first(value).getFullYear() + ' - ' + view.last(lastDate).getFullYear());\n } else {\n title.html(view.title(value, min, max, culture) + ' - ' + view.title(shiftDate(value, view.name, options.views - 1), min, max, culture));\n }\n disabled = view.name === CENTURY;\n title.toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n prevDisabled = view.compare(visibleRange.start, that.options.min) < 1;\n nextDisabled = view.compare(visibleRange.end, that.options.max) > -1;\n if (prevDisabled && nextDisabled) {\n if (that._navContainer) {\n that._navContainer.remove();\n that._navContainer = null;\n }\n } else {\n if (!that._navContainer) {\n that._navContainer = $('<span class=\"k-calendar-nav\">' + '<a href=\"#\" role=\"button\" class=\"k-button k-button-icon k-prev-view\" ' + ARIA_LABEL + '=\"Previous\"><span class=\"k-icon k-i-arrow-60-left\"></span></a>' + '<a href=\"#\" role=\"button\" class=\"k-button k-button-icon k-next-view\" ' + ARIA_LABEL + '=\"Next\"><span class=\"k-icon k-i-arrow-60-right\"></span></a>' + '</span>').appendTo(that.header);\n that[PREVARROW] = that._navContainer.find('.k-prev-view');\n that[NEXTARROW] = that._navContainer.find('.k-next-view');\n }\n that[PREVARROW].toggleClass(DISABLED, prevDisabled).attr(ARIA_DISABLED, prevDisabled);\n if (that[PREVARROW].hasClass(DISABLED)) {\n that[PREVARROW].removeClass(HOVER);\n }\n that[NEXTARROW].toggleClass(DISABLED, nextDisabled).attr(ARIA_DISABLED, nextDisabled);\n if (that[NEXTARROW].hasClass(DISABLED)) {\n that[NEXTARROW].removeClass(HOVER);\n }\n }\n },\n _mouseEnter: function (e) {\n var that = this;\n var cell = $(e.currentTarget);\n var range;\n var items;\n var startIdx;\n var endIdx;\n cell.addClass(HOVER);\n if (that.rangeSelectable && that._currentView.name === 'month') {\n range = that.selectRange();\n if (range.start && !range.end) {\n if (that._dateInViews(that.selectRange().start)) {\n items = that.element.find(that.rangeSelectable.options.filter);\n startIdx = $.inArray($(that.rangeSelectable._start)[0], items);\n endIdx = $.inArray($(cell)[0], items);\n if (startIdx > endIdx) {\n return;\n }\n that.rangeSelectable.range(that.rangeSelectable._start, cell);\n } else if (+toDateObject(that.element.find(CELLSELECTOR + ':first').find('a')) > +range.start) {\n that.rangeSelectable.selectTo(cell);\n }\n that.rangeSelectable._end = null;\n }\n }\n },\n _move: function (e, preventFocus) {\n var that = this;\n var options = that.options;\n var key = e.keyCode;\n var index = that._index;\n var min = options.min;\n var max = options.max;\n var focusedCell = that.element.find(DOT + FOCUSED);\n var table = focusedCell.closest('table');\n var currentValue = new DATE(+(that._current || toDateObject(focusedCell.find('a'))));\n var isRtl = kendo.support.isRtl(that.wrapper);\n var navigate = false;\n var value, prevent, method, cell, lastActive, cellIndex;\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n value = 1;\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n value = -1;\n prevent = true;\n } else if (key == keys.UP) {\n value = index === 0 ? -7 : -4;\n prevent = true;\n } else if (key == keys.DOWN) {\n value = index === 0 ? 7 : 4;\n prevent = true;\n } else if (key == keys.SPACEBAR) {\n value = 0;\n prevent = true;\n } else if (key == keys.HOME) {\n prevent = true;\n cell = table.find(CELLSELECTORVALID).eq(0);\n if (cell.hasClass(FOCUSED)) {\n table = table.prev();\n if (table.length) {\n that._focusCell(table.find(CELLSELECTORVALID).eq(0));\n } else {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(PREVARROW, -1, preventFocus);\n that._focusCell(that.element.find('table:first ' + CELLSELECTORVALID + ':first'));\n }\n } else {\n that._focusCell(cell);\n }\n } else if (key == keys.END) {\n prevent = true;\n cell = table.find(CELLSELECTORVALID).last();\n if (cell.hasClass(FOCUSED)) {\n table = table.next();\n if (table.length) {\n that._focusCell(table.find(CELLSELECTORVALID).last());\n } else {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1, preventFocus);\n that._focusCell(that.element.find('table:last ' + CELLSELECTORVALID + ':last'));\n }\n } else {\n that._focusCell(cell);\n }\n }\n if (e.ctrlKey || e.metaKey) {\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1, preventFocus);\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(PREVARROW, -1, preventFocus);\n prevent = true;\n } else if (key == keys.UP) {\n navigate = !that._title.hasClass(DISABLED);\n that.navigateUp();\n that._focusCell(that._cellByDate(that._current), !preventFocus);\n prevent = true;\n } else if (key == keys.DOWN) {\n if (that._currentView.name === 'month') {\n that.value(currentValue);\n } else {\n that.navigateDown(currentValue);\n that._focusCell(that._cellByDate(that._current), !preventFocus);\n navigate = true;\n }\n prevent = true;\n } else if (key == keys.ENTER || key == keys.SPACEBAR) {\n if (options.selectable === 'multiple') {\n that._toggleSelection(e);\n }\n }\n } else if (e.shiftKey && options.selectable !== 'single') {\n if (value !== undefined || method) {\n if (!method) {\n that._currentView.setDate(currentValue, value);\n }\n if (that._currentView.name !== 'month') {\n return;\n }\n if (options.disableDates(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n if (isInRange(currentValue, min, max)) {\n if (!that._dateInViews(currentValue)) {\n if (value > 0) {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1, preventFocus);\n } else {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(PREVARROW, -1, preventFocus);\n }\n }\n cell = that._cellByDate(currentValue);\n that._current = currentValue;\n if (that.selectable) {\n that._selectRange(toDateObject((that.selectable._lastActive || focusedCell).find('a')), currentValue);\n if (!that.selectable._lastActive) {\n that.selectable._lastActive = focusedCell;\n }\n that.trigger(CHANGE);\n that._focusCell(cell);\n }\n if (that.rangeSelectable) {\n lastActive = toDateObject((that.rangeSelectable._lastActive || focusedCell).find('a'));\n if (!that._dateInViews(lastActive)) {\n if (+lastActive > +currentValue) {\n that.rangeSelectable._end = that.rangeSelectable._lastActive;\n that.rangeSelectable.selectFrom(cell);\n } else {\n that.rangeSelectable.selectTo(cell);\n }\n } else {\n if (that.rangeSelectable._end && that.rangeSelectable._end.is(DOT + FOCUSED)) {\n that.rangeSelectable._lastActive = that.rangeSelectable._start;\n } else {\n that.rangeSelectable._lastActive = that._cellByDate(lastActive);\n }\n that.rangeSelectable.range(that.rangeSelectable._lastActive, cell);\n }\n that.rangeSelectable.change();\n that._focusCell(cell);\n }\n }\n }\n } else {\n if (key == keys.ENTER || key == keys.SPACEBAR) {\n if (that._currentView.name === 'month') {\n if (that.selectable) {\n that.selectable._lastActive = that._cellByDate(currentValue);\n }\n that.value(currentValue);\n if (that.rangeSelectable) {\n that.rangeSelectable.change();\n }\n } else {\n that._click($(that._cell[0].firstChild), preventFocus);\n }\n prevent = true;\n } else if (key == keys.PAGEUP || key == keys.PAGEDOWN) {\n prevent = true;\n cellIndex = table.find(CELLSELECTORVALID).index(focusedCell);\n table = key == keys.PAGEUP ? table.prev() : table.next();\n if (!table.length) {\n if (key == keys.PAGEUP) {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that.navigateToPast();\n table = that.element.find('table:first');\n } else {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that.navigateToFuture();\n table = that.element.find('table:last');\n }\n }\n cell = table.find(CELLSELECTORVALID).eq(cellIndex);\n if (cell.length) {\n that._focusCell(cell);\n } else {\n that._focusCell(table.find(CELLSELECTORVALID).last());\n }\n }\n if (value || method) {\n if (!method) {\n that._currentView.setDate(currentValue, value);\n }\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n if (isInRange(currentValue, min, max)) {\n if (that.selectable && options.disableDates(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n if (!that._dateInViews(currentValue)) {\n if (value > 0) {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1, preventFocus);\n } else {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, -1, preventFocus);\n }\n }\n cell = that._cellByDate(currentValue);\n that._current = currentValue;\n that._focusCell(cell, !preventFocus);\n }\n }\n }\n if (navigate) {\n that.trigger(NAVIGATE);\n }\n if (prevent) {\n e.preventDefault();\n }\n return that._current;\n },\n _visualizeSelectedDatesInView: function () {\n var that = this;\n var selectedDates = {};\n var cells;\n $.each(that._selectDates, function (index, value) {\n selectedDates[kendo.calendar.views[0].toDateString(value)] = value;\n });\n that.selectable.clear();\n cells = that.element.find('table').find(CELLSELECTOR).filter(function (index, element) {\n return selectedDates[$(element.firstChild).attr(kendo.attr(VALUE))];\n });\n if (cells.length > 0) {\n that.selectable._selectElement(cells, true);\n }\n },\n _nextNavigatable: function (currentValue, value) {\n var that = this;\n var disabled = true;\n var view = that._currentView;\n var min = that.options.min;\n var max = that.options.max;\n var isDisabled = that.options.disableDates;\n var navigatableDate = new Date(currentValue.getTime());\n view.setDate(navigatableDate, -value);\n while (disabled) {\n view.setDate(currentValue, value);\n if (!isInRange(currentValue, min, max)) {\n currentValue = navigatableDate;\n break;\n }\n disabled = isDisabled(currentValue);\n }\n return currentValue;\n },\n _toggleSelection: function (event) {\n var that = this;\n that.selectable._lastActive = $(that._cell[0]);\n if ($(that._cell[0]).hasClass(SELECTED)) {\n that.selectable._unselect($(that._cell[0]));\n that.selectable.trigger(CHANGE, { event: event });\n } else {\n that.selectable.value($(that._cell[0]), { event: event });\n }\n },\n _option: function (option, value) {\n var that = this;\n var options = that.options;\n var currentValue = that._value || that._current;\n var isBigger;\n if (value === undefined) {\n return options[option];\n }\n value = kendo.parseDate(value, options.format, options.culture);\n if (!value) {\n return;\n }\n options[option] = new DATE(+value);\n if (option === MIN) {\n isBigger = value > currentValue;\n } else {\n isBigger = currentValue > value;\n }\n if (isBigger) {\n that._value = null;\n }\n that.navigate(that._value);\n that._toggle();\n },\n _cellByDate: function (value) {\n if (value instanceof Date) {\n value = this._currentView.toDateString(value);\n }\n return this.element.find('table').find('td:not(.' + OTHERMONTH + ')').filter(function () {\n return $(this.firstChild).attr(kendo.attr(VALUE)) === value;\n });\n },\n _selectable: function () {\n var that = this;\n var selectable = that.options.selectable;\n if (that.selectable) {\n that.selectable.destroy();\n that.selectable = null;\n }\n if (that.rangeSelectable) {\n that.rangeSelectable.destroy();\n that.rangeSelectable = null;\n }\n if (selectable.toLowerCase() === 'range') {\n that.rangeSelectable = new RangeSelectable(that.wrapper, {\n filter: 'table.k-month ' + CELLSELECTORVALID,\n change: proxy(that._rangeSelection, that)\n });\n } else {\n that.selectable = new Selectable(that.wrapper, {\n aria: true,\n dragToSelect: false,\n inputSelectors: 'input,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up',\n multiple: Selectable.parseOptions(selectable).multiple,\n filter: 'table.k-content ' + CELLSELECTORVALID,\n change: proxy(that._selection, that),\n relatedTarget: proxy(that._onRelatedTarget, that),\n unselect: proxy(that._unselecting, that)\n });\n }\n },\n _onRelatedTarget: function (target) {\n var that = this;\n if (that.selectable.options.multiple && target.is(CELLSELECTORVALID) && target.length > 1) {\n that._focusCell(target.first(), true);\n }\n },\n _getFirstViewDate: function (currentView) {\n var that = this;\n var options = that.options;\n var ranges = [];\n var start;\n var end;\n var current = new Date(+that._current);\n var i;\n for (i = 0; i < options.views; i++) {\n start = currentView.first(current);\n end = currentView.last(current);\n if (+end > +options.max) {\n if (+start <= +options.max) {\n ranges.push({\n start: start,\n end: new Date(+options.max)\n });\n }\n break;\n }\n ranges.push({\n start: start,\n end: end\n });\n current = new Date(+shiftDate(end, currentView.name, 1));\n }\n current = new Date(+that._current);\n for (i = 0; i < options.views; i++) {\n start = currentView.first(current);\n end = currentView.last(current);\n if (+start < +options.min) {\n if (+end >= +options.min) {\n ranges.push({\n start: new Date(+options.min),\n end: end\n });\n }\n break;\n }\n ranges.push({\n start: start,\n end: end\n });\n current = new Date(+shiftDate(start, currentView.name, -1));\n }\n start = ranges[0].start;\n for (i = 0; i < options.views + 1; i++) {\n if (!ranges[i]) {\n break;\n }\n if (+start > +ranges[i].start) {\n start = ranges[i].start;\n }\n }\n return new Date(+start);\n },\n _canRenderNextView: function (viewDate) {\n var fullYear = viewDate.getFullYear();\n var month = viewDate.getMonth();\n var date = viewDate.getDate();\n var max = this.options.max;\n var maxYear = max.getFullYear();\n var maxMonth = max.getMonth();\n if (fullYear < maxYear) {\n return true;\n }\n if (fullYear === maxYear && month < maxMonth) {\n return true;\n }\n if (fullYear === maxYear && month === maxMonth && date < max.getDate()) {\n return true;\n }\n if (fullYear === maxYear && month === maxMonth && date === max.getDate()) {\n return true;\n }\n return false;\n },\n _initViews: function (viewOptions) {\n var that = this;\n var options = that.options;\n var index = calendar.viewsEnum[viewOptions.viewName];\n var currentView = calendar.views[index];\n var viewDate;\n that._current = new DATE(+calendar.restrictValue(viewOptions.value, options.min, options.max));\n that._views = [];\n that._index = index;\n viewDate = that._getFirstViewDate(currentView);\n viewDate.setDate(1);\n that._firstViewValue = new Date(+viewDate);\n for (var i = 0; i < options.views; i++) {\n viewDate = i ? shiftDate(viewDate, currentView.name, 1) : viewDate;\n viewDate.setDate(1);\n if (!that._canRenderNextView(viewDate)) {\n break;\n }\n that._table = $(currentView.content($.extend({\n min: options.min,\n max: options.max,\n date: viewDate,\n url: options.url,\n dates: options.dates,\n format: options.format,\n culture: options.culture,\n disableDates: options.disableDates,\n showHeader: options.showViewHeader,\n isWeekColumnVisible: options.weekNumber,\n otherMonth: options.otherMonth,\n messages: options.messages\n }, that[currentView.name])));\n that._table.appendTo(that.tablesWrapper).addClass('k-' + currentView.name);\n that._views.push(that._table);\n }\n that._currentView = currentView;\n that.tablesWrapper.attr('class', 'k-calendar-view k-calendar-' + currentView.name + 'view');\n that._updateHeader();\n },\n _rangeSelection: function (e) {\n var that = this;\n var range = e.sender.range();\n var start;\n var end;\n if (range.start) {\n start = toDateObject(range.start.find('a'));\n }\n if (range.end) {\n end = toDateObject(range.end.find('a'));\n }\n that._range = {\n start: start,\n end: end\n };\n if (!that._preventChange) {\n that.trigger(CHANGE);\n }\n },\n _selection: function (e) {\n var that = this;\n var selectElements = e.sender.value();\n var domEvent = e.event;\n var currentTarget = $(domEvent && domEvent.currentTarget);\n var isCell = currentTarget.is('td');\n var currentValue;\n if (that.options.selectable === 'single') {\n that._validateValue(selectElements[0] ? toDateObject(selectElements.first().find('a')) : e.sender._lastActive ? toDateObject(e.sender._lastActive.find('a')) : that.value());\n }\n if (that.options.selectable == 'multiple') {\n if (isCell) {\n currentValue = toDateObject(currentTarget.find('a'));\n }\n if (domEvent && domEvent.ctrlKey) {\n if (isCell) {\n if (currentTarget.hasClass(SELECTED)) {\n that._selectDates.push(currentValue);\n } else {\n that._deselect(currentValue);\n }\n } else {\n that.element.find('table ' + CELLSELECTORVALID).each(function (index, element) {\n var value = toDateObject($(element).find('a'));\n that._deselect(value);\n });\n that._addSelectedCellsToArray();\n }\n } else if (domEvent && domEvent.shiftKey) {\n that._selectRange(toDateObject(e.sender._lastActive ? e.sender._lastActive.find('a') : selectElements.first().find('a')), currentValue);\n } else if (isCell) {\n that._selectDates = [];\n that._selectDates.push(currentValue);\n } else {\n that._selectDates = [];\n that._addSelectedCellsToArray();\n }\n }\n if (!that._preventChange) {\n that.trigger(CHANGE);\n }\n },\n _addSelectedCellsToArray: function () {\n var that = this;\n that.selectable.value().each(function (index, item) {\n var date = toDateObject($(item.firstChild));\n if (!that.options.disableDates(date)) {\n that._selectDates.push(date);\n }\n });\n },\n _deselect: function (date) {\n var that = this;\n var currentDateIndex = that._selectDates.map(Number).indexOf(+date);\n if (currentDateIndex != -1) {\n that._selectDates.splice(currentDateIndex, 1);\n }\n },\n _unselecting: function (e) {\n var that = this;\n var element = e.element;\n if (that.options.selectable === 'single' && !mobileOS && element.hasClass(FOCUSED)) {\n e.preventDefault();\n }\n },\n _visibleRange: function () {\n var tables = this.element.find('.k-calendar-view table');\n var firstDateInView = toDateObject(tables.first().find(CELLSELECTOR + ':first').find('a'));\n var lastDateInView = toDateObject(tables.last().find(CELLSELECTOR + ':last').find('a'));\n return {\n start: firstDateInView,\n end: lastDateInView\n };\n },\n _dateInViews: function (date) {\n var that = this;\n var tables = that.element.find('.k-calendar-view table');\n var firstDateInView = toDateObject(tables.first().find(CELLSELECTOR + ':first').find('a'));\n var lastDateInView = toDateObject(tables.last().find(CELLSELECTOR + ':last').find('a'));\n return +date <= +lastDateInView && +date >= +firstDateInView;\n },\n _fillRange: function (start, end) {\n var that = this;\n var daysDifference;\n that._selectDates = [];\n daysDifference = daysBetweenTwoDates(start, end);\n addDaysToArray(that._selectDates, daysDifference, start, that.options.disableDates);\n },\n _selectRange: function (start, end) {\n var that = this;\n var current;\n if (+end < +start) {\n current = end;\n end = start;\n start = current;\n }\n that._fillRange(start, end);\n that._visualizeSelectedDatesInView();\n },\n _header: function () {\n var that = this;\n var element = that.element;\n var buttons;\n var header = element.find('.k-calendar-header');\n if (!header.length) {\n header = $('<div class=\"k-calendar-header\">' + '<a href=\"#\" role=\"button\" class=\"k-button k-title\" aria-live=\"assertive\" aria-atomic=\"true\"></a>' + '<span class=\"k-calendar-nav\">' + '<a href=\"#\" role=\"button\" class=\"k-button k-button-icon k-prev-view\" ' + ARIA_LABEL + '=\"Previous\"><span class=\"k-icon k-i-arrow-60-left\"></span></a>' + '<a href=\"#\" role=\"button\" class=\"k-button k-button-icon k-next-view\" ' + ARIA_LABEL + '=\"Next\"><span class=\"k-icon k-i-arrow-60-right\"></span></a>' + '</span>' + '</div>').prependTo(element);\n }\n that.header = header;\n header.on(MOUSEENTER + ns + ' ' + MOUSELEAVE_NS + ' ' + FOCUS + ns + ' ' + BLUR + ns, '.k-button', mousetoggle).on('click', function () {\n return false;\n }).on(CLICK + ns, '.k-button.k-title', function () {\n that.navigateUp();\n that._focusCell(that._cellByDate(that._current), true);\n that.trigger(NAVIGATE);\n }).on(CLICK + ns, '.k-button.k-prev-view', function (e) {\n e.preventDefault();\n that.navigateToPast();\n that.trigger(NAVIGATE);\n }).on(CLICK + ns, '.k-button.k-next-view', function (e) {\n e.preventDefault();\n that.navigateToFuture();\n that.trigger(NAVIGATE);\n });\n buttons = header.find('.k-button');\n that._title = buttons.filter('.k-title');\n that._navContainer = header.find('.k-calendar-nav');\n that[PREVARROW] = buttons.filter('.k-prev-view');\n that[NEXTARROW] = buttons.filter('.k-next-view');\n },\n _wrapper: function () {\n this.tablesWrapper = $('<div class=\"k-calendar-view\" />').insertAfter(this.element[0].firstChild);\n },\n _templates: function () {\n var that = this;\n var options = that.options;\n var month = options.month;\n var content = month.content;\n var weekNumber = month.weekNumber;\n var empty = month.empty;\n that.month = {\n content: template('<td#=data.cssClass# role=\"gridcell\"><a tabindex=\"-1\" class=\"k-link#=data.linkClass#\" href=\"#=data.url#\" ' + kendo.attr(VALUE) + '=\"#=data.dateString#\" title=\"#=data.title#\">' + (content || '#=data.value#') + '</a></td>', { useWithBlock: !!content }),\n empty: template('<td role=\"gridcell\"' + (empty ? '>' : ' class=\"k-out-of-range\">') + (empty || '<a class=\\'k-link\\'></a>') + '</td>', { useWithBlock: !!empty }),\n weekNumber: template('<td class=\"k-alt\">' + (weekNumber || '#= data.weekNumber #') + '</td>', { useWithBlock: !!weekNumber })\n };\n },\n _footer: function () {\n var that = this;\n var options = that.options;\n var template = options.footer !== false ? kendo.template(that.options.footer || '#= kendo.toString(data,\"D\",\"' + options.culture + '\") #', { useWithBlock: false }) : null;\n var today = getToday();\n var element = that.element;\n var footer = element.find('.k-footer');\n if (!template) {\n that._toggle(false);\n footer.hide();\n return;\n }\n if (!footer[0]) {\n footer = $('<div class=\"k-footer\"><a href=\"#\" class=\"k-link k-nav-today\"></a></div>').appendTo(element);\n }\n that._today = footer.show().find('.k-link').html(template(today)).attr('title', kendo.toString(today, 'D', that.options.culture));\n that._toggle();\n },\n _navigate: function (arrow, modifier, preventFocus) {\n var that = this;\n var index = that._index + 1;\n var currentValue = new DATE(+that._current);\n var originaValue = new DATE(+that._current);\n var offset;\n arrow = that[arrow];\n offset = that._cellByDate(currentValue).closest('table').index();\n if (modifier > 0) {\n offset = 1 - offset;\n } else {\n offset = offset + 1;\n }\n if (!arrow || !arrow.hasClass(DISABLED)) {\n if (index > 3) {\n currentValue.setFullYear(currentValue.getFullYear() + 100 * (modifier * offset));\n } else {\n calendar.views[index].setDate(currentValue, modifier * offset);\n }\n that.navigate(currentValue);\n if (that._dateInViews(originaValue)) {\n that._focusCell(that._cellByDate(originaValue), !preventFocus);\n that._current = originaValue;\n } else {\n if (index > 3) {\n originaValue.setFullYear(originaValue.getFullYear() + 100 * modifier);\n } else {\n calendar.views[index].setDate(originaValue, modifier);\n }\n that._focusCell(that._cellByDate(originaValue), !preventFocus);\n that._current = originaValue;\n }\n }\n },\n _toggle: function (toggle) {\n var that = this;\n var options = that.options;\n var isTodayDisabled = options.selectable !== 'range' && that.options.disableDates(getToday());\n var link = that._today;\n if (toggle === undefined) {\n toggle = isInRange(getToday(), options.min, options.max);\n }\n if (link) {\n link.off(CLICK + ns);\n if (toggle && !isTodayDisabled) {\n link.addClass(TODAY).removeClass(DISABLED).on(CLICK + ns, proxy(that._todayClick, that));\n } else {\n link.removeClass(TODAY).addClass(DISABLED).on(CLICK + ns, function prevent(e) {\n e.preventDefault();\n });\n }\n }\n },\n _click: function (link, preventFocus) {\n var that = this;\n var options = that.options;\n var currentValue = new Date(+that._current);\n var value = toDateObject(link);\n kendo.date.adjustDST(value, 0);\n that._currentView.setDate(currentValue, value);\n that._current = value;\n if (that._currentView.name !== options.depth) {\n that.navigateDown(calendar.restrictValue(currentValue, options.min, options.max));\n that._focusCell(that._cellByDate(that._current), !preventFocus);\n that.trigger(NAVIGATE);\n } else {\n that._focusCell(link.closest('td'), !preventFocus);\n }\n },\n _blur: function () {\n var that = this;\n if (that._cell) {\n that._cell.removeClass(FOCUSED);\n }\n },\n _focus: function (e) {\n var that = this;\n var table = $(e.currentTarget);\n var cell = that._cell;\n if (!cell || !$.contains(table[0], cell[0])) {\n cell = table.find(CELLSELECTORVALID + ':first');\n }\n that._focusCell(cell);\n },\n _focusCell: function (cell, focusTable) {\n var that = this;\n var cellId = that._cellID;\n var table = cell.closest('table');\n if (that._cell && that._cell.length) {\n that._cell[0].removeAttribute(ARIA_SELECTED);\n that._cell[0].removeAttribute(ARIA_LABEL);\n that._cell.removeClass(FOCUSED);\n that._cell[0].removeAttribute(ID);\n that._cell.closest('table')[0].removeAttribute('aria-activedescendant');\n }\n that._cell = cell;\n if (focusTable) {\n table.trigger('focus');\n }\n if (cellId) {\n cell.attr(ID, cellId);\n table.attr('aria-activedescendant', cellId);\n }\n cell.attr(ARIA_SELECTED, true).addClass(FOCUSED);\n if (cell.length && that._currentView.name == 'month') {\n that._current = toDateObject(cell.find('a'));\n }\n },\n _todayClick: function (e) {\n var that = this;\n var disabled = that.options.disableDates;\n var today = getToday();\n var navigate = false;\n e.preventDefault();\n if (disabled(today)) {\n return;\n }\n that._value = today;\n if (that.options.selectable === 'multiple') {\n that._selectDates = [today];\n }\n if (that.options.selectable === 'range') {\n that.rangeSelectable.clear(true);\n that._range = {\n start: today,\n end: null\n };\n }\n if (that._currentView.name != 'month' || !that._dateInViews(today)) {\n navigate = true;\n }\n that.navigate(today, that.options.depth);\n if (that.options.selectable === 'single') {\n that.selectable._lastActive = null;\n }\n if (navigate) {\n that.trigger(NAVIGATE);\n }\n that.trigger(CHANGE);\n },\n _validateValue: function (value) {\n var that = this;\n var options = that.options;\n var min = options.min;\n var max = options.max;\n value = kendo.parseDate(value, options.format, options.culture);\n if (value !== null) {\n value = new DATE(+value);\n if (!isInRange(value, min, max)) {\n value = null;\n }\n }\n if (value === null || !that.options.disableDates(new Date(+value))) {\n that._value = value;\n } else if (that._value === undefined) {\n that._value = null;\n }\n return that._value;\n },\n clearSelection: function () {\n var that = this;\n if (that.selectable) {\n that.element.find(DOT + SELECTED).removeClass(SELECTED);\n }\n if (that.rangeSelectable) {\n that.rangeSelectable.clear(true);\n }\n },\n _restoreSelection: function () {\n var that = this;\n var range;\n var selectable = that.options.selectable;\n if (that._currentView.name !== that.options.depth) {\n return;\n }\n that._preventChange = true;\n if (selectable === 'range') {\n range = that.selectRange();\n if (!range || !range.start) {\n that._preventChange = false;\n return;\n }\n that.selectRange(range);\n }\n if (selectable === 'single' && that.value()) {\n that.selectable.value(that._cellByDate(that.value()));\n }\n if (selectable === 'multiple') {\n that._visualizeSelectedDatesInView();\n }\n that._preventChange = false;\n },\n value: function (value) {\n var that = this;\n var cell;\n if (value === undefined) {\n return that._value;\n }\n value = that._validateValue(value);\n that.clearSelection();\n if (value && !that._dateInViews(value)) {\n that.navigate(value);\n }\n if (value !== null && that._currentView.name === MONTH) {\n cell = that._cellByDate(value);\n if (that.selectable) {\n that.selectable.value(cell);\n }\n if (that.rangeSelectable) {\n that.rangeSelectable.start(cell);\n that.rangeSelectable._lastActive = cell;\n }\n }\n },\n selectDates: function (dates) {\n var that = this;\n var validSelectedDates;\n var datesUnique;\n if (dates === undefined) {\n return that._selectDates;\n }\n datesUnique = dates.map(function (date) {\n return date.getTime();\n }).filter(function (date, position, array) {\n return array.indexOf(date) === position;\n }).map(function (time) {\n return new Date(time);\n });\n validSelectedDates = $.grep(datesUnique, function (value) {\n if (value) {\n return +that._validateValue(new Date(value.setHours(0, 0, 0, 0))) === +value;\n }\n });\n that._selectDates = validSelectedDates.length > 0 ? validSelectedDates : datesUnique.length === 0 ? datesUnique : that._selectDates;\n that._visualizeSelectedDatesInView();\n },\n selectRange: function (range) {\n var that = this;\n var startInRange;\n var endInRange;\n var visibleRange;\n if (range === undefined) {\n return that._range;\n }\n that._range = range;\n if (!range.start) {\n return;\n }\n visibleRange = that._visibleRange();\n startInRange = that._dateInViews(range.start);\n endInRange = range.end && that._dateInViews(range.end);\n if (!startInRange && endInRange) {\n that.rangeSelectable.selectTo(that._cellByDate(range.end));\n }\n if (startInRange && endInRange) {\n that.rangeSelectable.range(that._cellByDate(range.start), that._cellByDate(range.end));\n }\n if (range.end && startInRange && !endInRange) {\n that.rangeSelectable.selectFrom(that._cellByDate(range.start));\n }\n if (!range.end && startInRange) {\n that.rangeSelectable.start(that._cellByDate(range.start));\n }\n if (+visibleRange.start > +range.start && +visibleRange.end < +range.end) {\n that.rangeSelectable.mid(that.element.find(CELLSELECTORVALID));\n }\n }\n });\n kendo.ui.plugin(MultiViewCalendar);\n function mousetoggle(e) {\n var disabled = $(this).hasClass('k-state-disabled');\n if (!disabled) {\n $(this).toggleClass(HOVER, MOUSEENTER.indexOf(e.type) > -1 || e.type == FOCUS);\n }\n }\n function addDaysToArray(array, numberOfDays, fromDate, disableDates) {\n for (var i = 0; i <= numberOfDays; i++) {\n var nextDay = new Date(fromDate.getTime());\n nextDay = new Date(nextDay.setDate(nextDay.getDate() + i));\n if (!disableDates(nextDay)) {\n array.push(nextDay);\n }\n }\n }\n function daysBetweenTwoDates(startDate, endDate) {\n if (+endDate < +startDate) {\n var temp = +startDate;\n calendar.views[0].setDate(startDate, endDate);\n calendar.views[0].setDate(endDate, new Date(temp));\n }\n var fromDateUTC = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n var endDateUTC = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());\n return Math.ceil((+endDateUTC - +fromDateUTC) / kendo.date.MS_PER_DAY);\n }\n function shiftDate(value, dimension, numberOfViews) {\n var current;\n if (dimension === 'month') {\n current = new DATE(value.getFullYear(), value.getMonth() + numberOfViews, value.getDate());\n current.setFullYear(value.getFullYear());\n if (Math.abs(current.getMonth() - value.getMonth()) > numberOfViews || numberOfViews > 10) {\n current.setMonth(value.getMonth() + numberOfViews);\n current = calendar.views[0].last(current);\n }\n return current;\n } else if (dimension === 'year') {\n current = new DATE(1, value.getMonth(), value.getDate());\n current.setFullYear(value.getFullYear() + numberOfViews);\n if (Math.abs(current.getFullYear() - value.getFullYear()) > numberOfViews) {\n current = new DATE(1, value.getMonth(), 1);\n current.setFullYear(value.getFullYear() + numberOfViews);\n current = calendar.views[1].last(current);\n }\n return current;\n } else if (dimension === 'decade') {\n current = new DATE(1, value.getMonth(), value.getDate());\n current.setFullYear(value.getFullYear() + 10 * numberOfViews);\n if (Math.abs(current.getFullYear() - value.getFullYear()) > 10 * numberOfViews) {\n current = new DATE(1, value.getMonth(), 1);\n current.setFullYear(value.getFullYear() + 10 * numberOfViews);\n current = calendar.views[2].last(current);\n }\n return current;\n } else if (dimension === 'century') {\n current = new DATE(1, value.getMonth(), value.getDate());\n current.setFullYear(value.getFullYear() + 100 * numberOfViews);\n if (Math.abs(current.getFullYear() - value.getFullYear()) > 100 * numberOfViews) {\n current = new DATE(1, value.getMonth(), 1);\n current.setFullYear(value.getFullYear() + 100 * numberOfViews);\n current = calendar.views[3].last(current);\n }\n return current;\n }\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.virtuallist', ['kendo.data'], f);\n}(function () {\n var __meta__ = {\n id: 'virtuallist',\n name: 'VirtualList',\n category: 'framework',\n depends: ['data'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, DataBoundWidget = ui.DataBoundWidget, proxy = $.proxy, percentageUnitsRegex = /^\\d+(\\.\\d+)?%$/i, WRAPPER = 'k-virtual-wrap', VIRTUALLIST = 'k-virtual-list', CONTENT = 'k-virtual-content', LIST = 'k-list', HEADER = 'k-group-header', VIRTUALITEM = 'k-virtual-item', ITEM = 'k-item', HEIGHTCONTAINER = 'k-height-container', GROUPITEM = 'k-group', SELECTED = 'k-state-selected', FOCUSED = 'k-state-focused', HOVER = 'k-state-hover', CHANGE = 'change', CLICK = 'click', LISTBOUND = 'listBound', ITEMCHANGE = 'itemChange', ACTIVATE = 'activate', DEACTIVATE = 'deactivate', VIRTUAL_LIST_NS = '.VirtualList';\n function lastFrom(array) {\n return array[array.length - 1];\n }\n function toArray(value) {\n return value instanceof Array ? value : [value];\n }\n function isPrimitive(dataItem) {\n return typeof dataItem === 'string' || typeof dataItem === 'number' || typeof dataItem === 'boolean';\n }\n function getItemCount(screenHeight, listScreens, itemHeight) {\n return Math.ceil(screenHeight * listScreens / itemHeight);\n }\n function appendChild(parent, className, tagName) {\n var element = document.createElement(tagName || 'div');\n if (className) {\n element.className = className;\n }\n parent.appendChild(element);\n return element;\n }\n function getDefaultItemHeight() {\n var mockList = $('<div class=\"k-popup\"><ul class=\"k-list\"><li class=\"k-item\"><li></ul></div>'), lineHeight;\n mockList.css({\n position: 'absolute',\n left: '-200000px',\n visibility: 'hidden'\n });\n mockList.appendTo(document.body);\n lineHeight = parseFloat(kendo.getComputedStyles(mockList.find('.k-item')[0], ['line-height'])['line-height']);\n mockList.remove();\n return lineHeight;\n }\n function bufferSizes(screenHeight, listScreens, opposite) {\n return {\n down: screenHeight * opposite,\n up: screenHeight * (listScreens - 1 - opposite)\n };\n }\n function listValidator(options, screenHeight) {\n var downThreshold = (options.listScreens - 1 - options.threshold) * screenHeight;\n var upThreshold = options.threshold * screenHeight;\n return function (list, scrollTop, lastScrollTop) {\n if (scrollTop > lastScrollTop) {\n return scrollTop - list.top < downThreshold;\n } else {\n return list.top === 0 || scrollTop - list.top > upThreshold;\n }\n };\n }\n function scrollCallback(element, callback) {\n return function (force) {\n return callback(element.scrollTop, force);\n };\n }\n function syncList(reorder) {\n return function (list, force) {\n reorder(list.items, list.index, force);\n return list;\n };\n }\n function position(element, y) {\n if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n element.style.top = y + 'px';\n } else {\n element.style.webkitTransform = 'translateY(' + y + 'px)';\n element.style.transform = 'translateY(' + y + 'px)';\n }\n }\n function map2(callback, templates) {\n return function (arr1, arr2) {\n for (var i = 0, len = arr1.length; i < len; i++) {\n callback(arr1[i], arr2[i], templates);\n if (arr2[i].item) {\n this.trigger(ITEMCHANGE, {\n item: $(arr1[i]),\n data: arr2[i].item,\n ns: kendo.ui\n });\n }\n }\n };\n }\n function reshift(items, diff) {\n var range;\n if (diff > 0) {\n range = items.splice(0, diff);\n items.push.apply(items, range);\n } else {\n range = items.splice(diff, -diff);\n items.unshift.apply(items, range);\n }\n return range;\n }\n function render(element, data, templates) {\n var itemTemplate = templates.template;\n element = $(element);\n if (!data.item) {\n itemTemplate = templates.placeholderTemplate;\n }\n if (data.index === 0 && this.header && data.group) {\n this.header.html(templates.fixedGroupTemplate(data.group));\n }\n this.angular('cleanup', function () {\n return { elements: [element] };\n });\n element.attr('data-uid', data.item ? data.item.uid : '').attr('data-offset-index', data.index);\n if (this.options.columns && this.options.columns.length && data.item) {\n element.html(renderColumns(this.options, data.item, templates));\n } else {\n element.html(itemTemplate(data.item || {}));\n }\n element.toggleClass(FOCUSED, data.current);\n element.toggleClass(SELECTED, data.selected);\n element.toggleClass('k-first', data.newGroup);\n element.toggleClass('k-last', data.isLastGroupedItem);\n element.toggleClass('k-loading-item', !data.item);\n if (data.index !== 0 && data.newGroup) {\n $('<div class=' + GROUPITEM + '></div>').appendTo(element).html(templates.groupTemplate(data.group));\n }\n if (data.top !== undefined) {\n position(element[0], data.top);\n }\n this.angular('compile', function () {\n return {\n elements: [element],\n data: [{\n dataItem: data.item,\n group: data.group,\n newGroup: data.newGroup\n }]\n };\n });\n }\n function renderColumns(options, dataItem, templates) {\n var item = '';\n for (var i = 0; i < options.columns.length; i++) {\n var currentWidth = options.columns[i].width;\n var currentWidthInt = parseInt(currentWidth, 10);\n var widthStyle = '';\n if (currentWidth) {\n widthStyle += 'style=\\'width:';\n widthStyle += currentWidthInt;\n widthStyle += percentageUnitsRegex.test(currentWidth) ? '%' : 'px';\n widthStyle += ';\\'';\n }\n item += '<span class=\\'k-cell\\' ' + widthStyle + '>';\n item += templates['column' + i](dataItem);\n item += '</span>';\n }\n return item;\n }\n function mapChangedItems(selected, itemsToMatch) {\n var itemsLength = itemsToMatch.length;\n var selectedLength = selected.length;\n var dataItem;\n var found;\n var i, j;\n var changed = [];\n var unchanged = [];\n if (selectedLength) {\n for (i = 0; i < selectedLength; i++) {\n dataItem = selected[i];\n found = false;\n for (j = 0; j < itemsLength; j++) {\n if (dataItem === itemsToMatch[j]) {\n found = true;\n changed.push({\n index: i,\n item: dataItem\n });\n break;\n }\n }\n if (!found) {\n unchanged.push(dataItem);\n }\n }\n }\n return {\n changed: changed,\n unchanged: unchanged\n };\n }\n function isActivePromise(promise) {\n return promise && promise.state() !== 'resolved';\n }\n var VirtualList = DataBoundWidget.extend({\n init: function (element, options) {\n var that = this;\n that.bound(false);\n that._fetching = false;\n Widget.fn.init.call(that, element, options);\n if (!that.options.itemHeight) {\n that.options.itemHeight = getDefaultItemHeight();\n }\n options = that.options;\n that.element.addClass(LIST + ' ' + VIRTUALLIST).attr('role', 'listbox');\n that.content = that.element.wrap('<div unselectable=\\'on\\' class=\\'' + CONTENT + '\\'></div>').parent();\n that.wrapper = that.content.wrap('<div class=\\'' + WRAPPER + '\\'></div>').parent();\n that.header = that.content.before('<div class=\\'' + HEADER + '\\'></div>').prev();\n if (options.columns && options.columns.length) {\n that.element.removeClass(LIST);\n }\n that.element.on('mouseenter' + VIRTUAL_LIST_NS, 'li:not(.k-loading-item)', function () {\n $(this).addClass(HOVER);\n }).on('mouseleave' + VIRTUAL_LIST_NS, 'li', function () {\n $(this).removeClass(HOVER);\n });\n that._values = toArray(that.options.value);\n that._selectedDataItems = [];\n that._selectedIndexes = [];\n that._rangesList = {};\n that._promisesList = [];\n that._optionID = kendo.guid();\n that._templates();\n that.setDataSource(options.dataSource);\n that.content.on('scroll' + VIRTUAL_LIST_NS, kendo.throttle(function () {\n that._renderItems();\n that._triggerListBound();\n }, options.delay));\n that._selectable();\n },\n options: {\n name: 'VirtualList',\n autoBind: true,\n delay: 100,\n height: null,\n listScreens: 4,\n threshold: 0.5,\n itemHeight: null,\n oppositeBuffer: 1,\n type: 'flat',\n selectable: false,\n value: [],\n dataValueField: null,\n template: '#:data#',\n placeholderTemplate: 'loading...',\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#',\n mapValueTo: 'index',\n valueMapper: null\n },\n events: [\n CHANGE,\n CLICK,\n LISTBOUND,\n ITEMCHANGE,\n ACTIVATE,\n DEACTIVATE\n ],\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n if (this._selectProxy && this.options.selectable === false) {\n this.element.off(CLICK, '.' + VIRTUALITEM, this._selectProxy);\n } else if (!this._selectProxy && this.options.selectable) {\n this._selectable();\n }\n this._templates();\n this.refresh();\n },\n items: function () {\n return $(this._items);\n },\n destroy: function () {\n this.wrapper.off(VIRTUAL_LIST_NS);\n this.dataSource.unbind(CHANGE, this._refreshHandler);\n Widget.fn.destroy.call(this);\n },\n setDataSource: function (source) {\n var that = this;\n var dataSource = source || {};\n var value;\n dataSource = $.isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource = kendo.data.DataSource.create(dataSource);\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n that._clean();\n that.bound(false);\n that._deferValueSet = true;\n value = that.value();\n that.value([]);\n that.mute(function () {\n that.value(value);\n });\n } else {\n that._refreshHandler = $.proxy(that.refresh, that);\n }\n that.dataSource = dataSource.bind(CHANGE, that._refreshHandler);\n that.setDSFilter(dataSource.filter());\n if (dataSource.view().length !== 0) {\n that.refresh();\n } else if (that.options.autoBind) {\n dataSource.fetch();\n }\n },\n skip: function () {\n return this.dataSource.currentRangeStart();\n },\n _triggerListBound: function () {\n var that = this;\n var skip = that.skip();\n if (that.bound() && !that._selectingValue && that._skip !== skip) {\n that._skip = skip;\n that.trigger(LISTBOUND);\n }\n },\n _getValues: function (dataItems) {\n var getter = this._valueGetter;\n return $.map(dataItems, function (dataItem) {\n return getter(dataItem);\n });\n },\n _highlightSelectedItems: function () {\n for (var i = 0; i < this._selectedDataItems.length; i++) {\n var item = this._getElementByDataItem(this._selectedDataItems[i]);\n if (item.length) {\n item.addClass(SELECTED);\n }\n }\n },\n refresh: function (e) {\n var that = this;\n var action = e && e.action;\n var isItemChange = action === 'itemchange';\n var filtered = this.isFiltered();\n var result;\n if (that._mute) {\n return;\n }\n that._deferValueSet = false;\n if (!that._fetching) {\n if (filtered) {\n that.focus(0);\n }\n that._createList();\n if (!action && that._values.length && !filtered && !that.options.skipUpdateOnBind && !that._emptySearch) {\n that._selectingValue = true;\n that.bound(true);\n that.value(that._values, true).done(function () {\n that._selectingValue = false;\n that._triggerListBound();\n });\n } else {\n that.bound(true);\n that._highlightSelectedItems();\n that._triggerListBound();\n }\n } else {\n if (that._renderItems) {\n that._renderItems(true);\n }\n that._triggerListBound();\n }\n if (isItemChange || action === 'remove') {\n result = mapChangedItems(that._selectedDataItems, e.items);\n if (result.changed.length) {\n if (isItemChange) {\n that.trigger('selectedItemChange', { items: result.changed });\n } else {\n that.value(that._getValues(result.unchanged));\n }\n }\n }\n that._fetching = false;\n },\n removeAt: function (position) {\n this._selectedIndexes.splice(position, 1);\n this._values.splice(position, 1);\n return {\n position: position,\n dataItem: this._selectedDataItems.splice(position, 1)[0]\n };\n },\n setValue: function (value) {\n this._values = toArray(value);\n },\n value: function (value, _forcePrefetch) {\n var that = this;\n if (value === undefined) {\n return that._values.slice();\n }\n if (value === null) {\n value = [];\n }\n value = toArray(value);\n if (!that._valueDeferred || that._valueDeferred.state() === 'resolved') {\n that._valueDeferred = $.Deferred();\n }\n var shouldClear = that.options.selectable === 'multiple' && that.select().length && value.length;\n if (shouldClear || !value.length) {\n that.select(-1);\n }\n that._values = value;\n if (that.bound() && !that._mute && !that._deferValueSet || _forcePrefetch) {\n that._prefetchByValue(value);\n }\n return that._valueDeferred;\n },\n _checkValuesOrder: function (value) {\n if (this._removedAddedIndexes && this._removedAddedIndexes.length === value.length) {\n var newValue = this._removedAddedIndexes.slice();\n this._removedAddedIndexes = null;\n return newValue;\n }\n return value;\n },\n _prefetchByValue: function (value) {\n var that = this, dataView = that._dataView, valueGetter = that._valueGetter, mapValueTo = that.options.mapValueTo, item, match = false, forSelection = [];\n for (var i = 0; i < value.length; i++) {\n for (var idx = 0; idx < dataView.length; idx++) {\n item = dataView[idx].item;\n if (item) {\n match = isPrimitive(item) ? value[i] === item : value[i] === valueGetter(item);\n if (match) {\n forSelection.push(dataView[idx].index);\n }\n }\n }\n }\n if (forSelection.length === value.length) {\n that._values = [];\n that.select(forSelection);\n return;\n }\n if (typeof that.options.valueMapper === 'function') {\n that.options.valueMapper({\n value: this.options.selectable === 'multiple' ? value : value[0],\n success: function (response) {\n if (mapValueTo === 'index') {\n that.mapValueToIndex(response);\n } else if (mapValueTo === 'dataItem') {\n that.mapValueToDataItem(response);\n }\n }\n });\n } else {\n if (!that.value()[0]) {\n that.select([-1]);\n } else {\n that._selectingValue = false;\n that._triggerListBound();\n }\n }\n },\n mapValueToIndex: function (indexes) {\n if (indexes === undefined || indexes === -1 || indexes === null) {\n indexes = [];\n } else {\n indexes = toArray(indexes);\n }\n if (!indexes.length) {\n indexes = [-1];\n } else {\n var removed = this._deselect([]).removed;\n if (removed.length) {\n this._triggerChange(removed, []);\n }\n }\n this.select(indexes);\n },\n mapValueToDataItem: function (dataItems) {\n var removed, added;\n if (dataItems === undefined || dataItems === null) {\n dataItems = [];\n } else {\n dataItems = toArray(dataItems);\n }\n if (!dataItems.length) {\n this.select([-1]);\n } else {\n removed = $.map(this._selectedDataItems, function (item, index) {\n return {\n index: index,\n dataItem: item\n };\n });\n added = $.map(dataItems, function (item, index) {\n return {\n index: index,\n dataItem: item\n };\n });\n this._selectedDataItems = dataItems;\n this._selectedIndexes = [];\n for (var i = 0; i < this._selectedDataItems.length; i++) {\n var item = this._getElementByDataItem(this._selectedDataItems[i]);\n this._selectedIndexes.push(this._getIndecies(item)[0]);\n item.addClass(SELECTED);\n }\n this._triggerChange(removed, added);\n if (this._valueDeferred) {\n this._valueDeferred.resolve();\n }\n }\n },\n deferredRange: function (index) {\n var dataSource = this.dataSource;\n var take = this.itemCount;\n var ranges = this._rangesList;\n var result = $.Deferred();\n var defs = [];\n var low = Math.floor(index / take) * take;\n var high = Math.ceil(index / take) * take;\n var pages = high === low ? [high] : [\n low,\n high\n ];\n $.each(pages, function (_, skip) {\n var end = skip + take;\n var existingRange = ranges[skip];\n var deferred;\n if (!existingRange || existingRange.end !== end) {\n deferred = $.Deferred();\n ranges[skip] = {\n end: end,\n deferred: deferred\n };\n dataSource._multiplePrefetch(skip, take, function () {\n deferred.resolve();\n });\n } else {\n deferred = existingRange.deferred;\n }\n defs.push(deferred);\n });\n $.when.apply($, defs).then(function () {\n result.resolve();\n });\n return result;\n },\n prefetch: function (indexes) {\n var that = this, take = this.itemCount, isEmptyList = !that._promisesList.length;\n if (!isActivePromise(that._activeDeferred)) {\n that._activeDeferred = $.Deferred();\n that._promisesList = [];\n }\n $.each(indexes, function (_, index) {\n that._promisesList.push(that.deferredRange(that._getSkip(index, take)));\n });\n if (isEmptyList) {\n $.when.apply($, that._promisesList).done(function () {\n that._promisesList = [];\n that._activeDeferred.resolve();\n });\n }\n return that._activeDeferred;\n },\n _findDataItem: function (view, index) {\n var group;\n if (this.options.type === 'group') {\n for (var i = 0; i < view.length; i++) {\n group = view[i].items;\n if (group.length <= index) {\n index = index - group.length;\n } else {\n return group[index];\n }\n }\n }\n return view[index];\n },\n _getRange: function (skip, take) {\n return this.dataSource._findRange(skip, Math.min(skip + take, this.dataSource.total()));\n },\n dataItemByIndex: function (index) {\n var that = this;\n var take = that.itemCount;\n var skip = that._getSkip(index, take);\n var view = this._getRange(skip, take);\n if (!that._getRange(skip, take).length) {\n return null;\n }\n if (that.options.type === 'group') {\n kendo.ui.progress($(that.wrapper), true);\n that.mute(function () {\n that.dataSource.range(skip, take, function () {\n kendo.ui.progress($(that.wrapper), false);\n });\n view = that.dataSource.view();\n });\n }\n return that._findDataItem(view, [index - skip]);\n },\n selectedDataItems: function () {\n return this._selectedDataItems.slice();\n },\n scrollWith: function (value) {\n this.content.scrollTop(this.content.scrollTop() + value);\n },\n scrollTo: function (y) {\n this.content.scrollTop(y);\n },\n scrollToIndex: function (index) {\n this.scrollTo(index * this.options.itemHeight);\n },\n focus: function (candidate) {\n var element, index, data, current, itemHeight = this.options.itemHeight, id = this._optionID, triggerEvent = true;\n if (candidate === undefined) {\n current = this.element.find('.' + FOCUSED);\n return current.length ? current : null;\n }\n if (typeof candidate === 'function') {\n data = this.dataSource.flatView();\n for (var idx = 0; idx < data.length; idx++) {\n if (candidate(data[idx])) {\n candidate = idx;\n break;\n }\n }\n }\n if (candidate instanceof Array) {\n candidate = lastFrom(candidate);\n }\n if (isNaN(candidate)) {\n element = $(candidate);\n index = parseInt($(element).attr('data-offset-index'), 10);\n } else {\n index = candidate;\n element = this._getElementByIndex(index);\n }\n if (index === -1) {\n this.element.find('.' + FOCUSED).removeClass(FOCUSED);\n this._focusedIndex = undefined;\n return;\n }\n if (element.length) {\n if (element.hasClass(FOCUSED)) {\n triggerEvent = false;\n }\n if (this._focusedIndex !== undefined) {\n current = this._getElementByIndex(this._focusedIndex);\n current.removeClass(FOCUSED).removeAttr('id');\n if (triggerEvent) {\n this.trigger(DEACTIVATE);\n }\n }\n this._focusedIndex = index;\n element.addClass(FOCUSED).attr('id', id);\n var position = this._getElementLocation(index);\n if (position === 'top') {\n this.scrollTo(index * itemHeight);\n } else if (position === 'bottom') {\n this.scrollTo(index * itemHeight + itemHeight - this._screenHeight);\n } else if (position === 'outScreen') {\n this.scrollTo(index * itemHeight);\n }\n if (triggerEvent) {\n this.trigger(ACTIVATE);\n }\n } else {\n this._focusedIndex = index;\n this.items().removeClass(FOCUSED);\n this.scrollToIndex(index);\n }\n },\n focusIndex: function () {\n return this._focusedIndex;\n },\n focusFirst: function () {\n this.scrollTo(0);\n this.focus(0);\n },\n focusLast: function () {\n var lastIndex = this.dataSource.total();\n this.scrollTo(this.heightContainer.offsetHeight);\n this.focus(lastIndex - 1);\n },\n focusPrev: function () {\n var index = this._focusedIndex;\n var current;\n if (!isNaN(index) && index > 0) {\n index -= 1;\n this.focus(index);\n current = this.focus();\n if (current && current.hasClass('k-loading-item')) {\n index += 1;\n this.focus(index);\n }\n return index;\n } else {\n index = this.dataSource.total() - 1;\n this.focus(index);\n return index;\n }\n },\n focusNext: function () {\n var index = this._focusedIndex;\n var lastIndex = this.dataSource.total() - 1;\n var current;\n if (!isNaN(index) && index < lastIndex) {\n index += 1;\n this.focus(index);\n current = this.focus();\n if (current && current.hasClass('k-loading-item')) {\n index -= 1;\n this.focus(index);\n }\n return index;\n } else {\n index = 0;\n this.focus(index);\n return index;\n }\n },\n _triggerChange: function (removed, added) {\n removed = removed || [];\n added = added || [];\n if (removed.length || added.length) {\n this.trigger(CHANGE, {\n removed: removed,\n added: added\n });\n }\n },\n select: function (candidate) {\n var that = this, indices, initialIndices, singleSelection = that.options.selectable !== 'multiple', prefetchStarted = isActivePromise(that._activeDeferred), filtered = this.isFiltered(), isAlreadySelected, deferred, result, removed = [];\n if (candidate === undefined) {\n return that._selectedIndexes.slice();\n }\n if (!that._selectDeferred || that._selectDeferred.state() === 'resolved') {\n that._selectDeferred = $.Deferred();\n }\n indices = that._getIndecies(candidate);\n isAlreadySelected = singleSelection && !filtered && lastFrom(indices) === lastFrom(this._selectedIndexes);\n removed = that._deselectCurrentValues(indices);\n if (removed.length || !indices.length || isAlreadySelected) {\n that._triggerChange(removed);\n if (that._valueDeferred) {\n that._valueDeferred.resolve().promise();\n }\n return that._selectDeferred.resolve().promise();\n }\n if (indices.length === 1 && indices[0] === -1) {\n indices = [];\n }\n initialIndices = indices;\n result = that._deselect(indices);\n removed = result.removed;\n indices = result.indices;\n if (singleSelection) {\n prefetchStarted = false;\n if (indices.length) {\n indices = [lastFrom(indices)];\n }\n }\n var done = function () {\n var added = that._select(indices);\n if (initialIndices.length === indices.length || singleSelection) {\n that.focus(indices);\n }\n that._triggerChange(removed, added);\n if (that._valueDeferred) {\n that._valueDeferred.resolve();\n }\n that._selectDeferred.resolve();\n };\n deferred = that.prefetch(indices);\n if (!prefetchStarted) {\n if (deferred) {\n deferred.done(done);\n } else {\n done();\n }\n }\n return that._selectDeferred.promise();\n },\n bound: function (bound) {\n if (bound === undefined) {\n return this._listCreated;\n }\n this._listCreated = bound;\n },\n mute: function (callback) {\n this._mute = true;\n proxy(callback(), this);\n this._mute = false;\n },\n setDSFilter: function (filter) {\n this._lastDSFilter = $.extend({}, filter);\n },\n isFiltered: function () {\n if (!this._lastDSFilter) {\n this.setDSFilter(this.dataSource.filter());\n }\n return !kendo.data.Query.compareFilters(this.dataSource.filter(), this._lastDSFilter);\n },\n skipUpdate: $.noop,\n _getElementByIndex: function (index) {\n return this.items().filter(function (idx, element) {\n return index === parseInt($(element).attr('data-offset-index'), 10);\n });\n },\n _getElementByDataItem: function (dataItem) {\n var dataView = this._dataView, valueGetter = this._valueGetter, element, match;\n for (var i = 0; i < dataView.length; i++) {\n match = dataView[i].item && isPrimitive(dataView[i].item) ? dataView[i].item === dataItem : dataView[i].item && dataItem && valueGetter(dataView[i].item) == valueGetter(dataItem);\n if (match) {\n element = dataView[i];\n break;\n }\n }\n return element ? this._getElementByIndex(element.index) : $();\n },\n _clean: function () {\n this.result = undefined;\n this._lastScrollTop = undefined;\n this._skip = undefined;\n $(this.heightContainer).remove();\n this.heightContainer = undefined;\n this.element.empty();\n },\n _height: function () {\n var hasData = !!this.dataSource.view().length, height = this.options.height, itemHeight = this.options.itemHeight, total = this.dataSource.total();\n if (!hasData) {\n height = 0;\n } else if (height / itemHeight > total) {\n height = total * itemHeight;\n }\n return height;\n },\n setScreenHeight: function () {\n var height = this._height();\n this.content.height(height);\n this._screenHeight = height;\n },\n screenHeight: function () {\n return this._screenHeight;\n },\n _getElementLocation: function (index) {\n var scrollTop = this.content.scrollTop(), screenHeight = this._screenHeight, itemHeight = this.options.itemHeight, yPosition = index * itemHeight, yDownPostion = yPosition + itemHeight, screenEnd = scrollTop + screenHeight, position;\n if (yPosition === scrollTop - itemHeight || yDownPostion > scrollTop && yPosition < scrollTop) {\n position = 'top';\n } else if (yPosition === screenEnd || yPosition < screenEnd && screenEnd < yDownPostion) {\n position = 'bottom';\n } else if (yPosition >= scrollTop && yPosition <= scrollTop + (screenHeight - itemHeight)) {\n position = 'inScreen';\n } else {\n position = 'outScreen';\n }\n return position;\n },\n _templates: function () {\n var options = this.options;\n var templates = {\n template: options.template,\n placeholderTemplate: options.placeholderTemplate,\n groupTemplate: options.groupTemplate,\n fixedGroupTemplate: options.fixedGroupTemplate\n };\n if (options.columns) {\n for (var i = 0; i < options.columns.length; i++) {\n var currentColumn = options.columns[i];\n var templateText = currentColumn.field ? currentColumn.field.toString() : 'text';\n templates['column' + i] = currentColumn.template || '#: ' + templateText + '#';\n }\n }\n for (var key in templates) {\n if (typeof templates[key] !== 'function') {\n templates[key] = kendo.template(templates[key] || '');\n }\n }\n this.templates = templates;\n },\n _generateItems: function (element, count) {\n var items = [], item, itemHeight = this.options.itemHeight + 'px';\n while (count-- > 0) {\n item = document.createElement('li');\n item.tabIndex = -1;\n item.className = VIRTUALITEM + ' ' + ITEM;\n item.setAttribute('role', 'option');\n item.style.height = itemHeight;\n item.style.minHeight = itemHeight;\n element.appendChild(item);\n items.push(item);\n }\n return items;\n },\n _saveInitialRanges: function () {\n var ranges = this.dataSource._ranges;\n var deferred = $.Deferred();\n deferred.resolve();\n this._rangesList = {};\n for (var i = 0; i < ranges.length; i++) {\n this._rangesList[ranges[i].start] = {\n end: ranges[i].end,\n deferred: deferred\n };\n }\n },\n _createList: function () {\n var that = this, content = that.content.get(0), options = that.options, dataSource = that.dataSource;\n if (that.bound()) {\n that._clean();\n }\n that._saveInitialRanges();\n that._buildValueGetter();\n that.setScreenHeight();\n that.itemCount = getItemCount(that._screenHeight, options.listScreens, options.itemHeight);\n if (that.itemCount > dataSource.total()) {\n that.itemCount = dataSource.total();\n }\n that._items = that._generateItems(that.element[0], that.itemCount);\n that._setHeight(options.itemHeight * dataSource.total());\n that.options.type = (dataSource.group() || []).length ? 'group' : 'flat';\n if (that.options.type === 'flat') {\n that.header.hide();\n } else {\n that.header.show();\n }\n that.getter = that._getter(function () {\n that._renderItems(true);\n });\n that._onScroll = function (scrollTop, force) {\n var getList = that._listItems(that.getter);\n return that._fixedHeader(scrollTop, getList(scrollTop, force));\n };\n that._renderItems = that._whenChanged(scrollCallback(content, that._onScroll), syncList(that._reorderList(that._items, $.proxy(render, that))));\n that._renderItems();\n that._calculateGroupPadding(that._screenHeight);\n that._calculateColumnsHeaderPadding();\n },\n _setHeight: function (height) {\n var currentHeight, heightContainer = this.heightContainer;\n if (!heightContainer) {\n heightContainer = this.heightContainer = appendChild(this.content[0], HEIGHTCONTAINER);\n } else {\n currentHeight = heightContainer.offsetHeight;\n }\n if (height !== currentHeight) {\n heightContainer.innerHTML = '';\n while (height > 0) {\n var padHeight = Math.min(height, 250000);\n appendChild(heightContainer).style.height = padHeight + 'px';\n height -= padHeight;\n }\n }\n },\n _getter: function () {\n var lastRequestedRange = null, dataSource = this.dataSource, lastRangeStart = dataSource.skip(), type = this.options.type, pageSize = this.itemCount, flatGroups = {};\n if (dataSource.pageSize() < pageSize) {\n this.mute(function () {\n dataSource.pageSize(pageSize);\n });\n }\n return function (index, rangeStart) {\n var that = this;\n if (!dataSource.inRange(rangeStart, pageSize)) {\n if (lastRequestedRange !== rangeStart) {\n lastRequestedRange = rangeStart;\n lastRangeStart = rangeStart;\n if (that._getterDeferred) {\n that._getterDeferred.reject();\n }\n that._getterDeferred = that.deferredRange(rangeStart);\n that._getterDeferred.then(function () {\n var firstItemIndex = that._indexConstraint(that.content[0].scrollTop);\n that._getterDeferred = null;\n if (rangeStart <= firstItemIndex && firstItemIndex <= rangeStart + pageSize) {\n that._fetching = true;\n dataSource.range(rangeStart, pageSize);\n }\n });\n }\n return null;\n } else {\n if (lastRangeStart !== rangeStart) {\n this.mute(function () {\n dataSource.range(rangeStart, pageSize);\n lastRangeStart = rangeStart;\n });\n }\n var result;\n if (type === 'group') {\n if (!flatGroups[rangeStart]) {\n var flatGroup = flatGroups[rangeStart] = [];\n var groups = dataSource.view();\n for (var i = 0, len = groups.length; i < len; i++) {\n var group = groups[i];\n for (var j = 0, groupLength = group.items.length; j < groupLength; j++) {\n flatGroup.push({\n item: group.items[j],\n group: group.value\n });\n }\n }\n }\n result = flatGroups[rangeStart][index - rangeStart];\n } else {\n result = dataSource.view()[index - rangeStart];\n }\n return result;\n }\n };\n },\n _fixedHeader: function (scrollTop, list) {\n var group = this.currentVisibleGroup, itemHeight = this.options.itemHeight, firstVisibleDataItemIndex = Math.floor((scrollTop - list.top) / itemHeight), firstVisibleDataItem = list.items[firstVisibleDataItemIndex];\n if (firstVisibleDataItem && firstVisibleDataItem.item) {\n var firstVisibleGroup = firstVisibleDataItem.group;\n if (firstVisibleGroup !== group) {\n var fixedGroupText = firstVisibleGroup || '';\n this.header.html(this.templates.fixedGroupTemplate(fixedGroupText));\n this.currentVisibleGroup = firstVisibleGroup;\n }\n }\n return list;\n },\n _itemMapper: function (item, index, value) {\n var listType = this.options.type, itemHeight = this.options.itemHeight, currentIndex = this._focusedIndex, selected = false, current = false, newGroup = false, group = null, match = false, valueGetter = this._valueGetter;\n if (listType === 'group') {\n if (item) {\n newGroup = index === 0 || this._currentGroup !== false && this._currentGroup !== item.group;\n this._currentGroup = item.group;\n }\n group = item ? item.group : null;\n item = item ? item.item : null;\n }\n if (this.options.mapValueTo === 'dataItem' && this._selectedDataItems.length && item) {\n for (var i = 0; i < this._selectedDataItems.length; i++) {\n match = valueGetter(this._selectedDataItems[i]) === valueGetter(item);\n if (match) {\n selected = true;\n break;\n }\n }\n } else if (!this.isFiltered() && value.length && item) {\n for (var j = 0; j < value.length; j++) {\n match = isPrimitive(item) ? value[j] === item : value[j] === valueGetter(item);\n if (match) {\n value.splice(j, 1);\n selected = true;\n break;\n }\n }\n }\n if (currentIndex === index) {\n current = true;\n }\n return {\n item: item ? item : null,\n group: group,\n newGroup: newGroup,\n selected: selected,\n current: current,\n index: index,\n top: index * itemHeight\n };\n },\n _range: function (index) {\n var itemCount = this.itemCount, value = this._values.slice(), items = [], item;\n this._view = {};\n this._currentGroup = false;\n for (var i = index, length = index + itemCount; i < length; i++) {\n item = this._itemMapper(this.getter(i, index), i, value);\n if (items[items.length - 1]) {\n items[items.length - 1].isLastGroupedItem = item.newGroup;\n }\n items.push(item);\n this._view[item.index] = item;\n }\n this._dataView = items;\n return items;\n },\n _getDataItemsCollection: function (scrollTop, lastScrollTop) {\n var items = this._range(this._listIndex(scrollTop, lastScrollTop));\n return {\n index: items.length ? items[0].index : 0,\n top: items.length ? items[0].top : 0,\n items: items\n };\n },\n _listItems: function () {\n var screenHeight = this._screenHeight, options = this.options;\n var theValidator = listValidator(options, screenHeight);\n return $.proxy(function (value, force) {\n var result = this.result, lastScrollTop = this._lastScrollTop;\n if (force || !result || !theValidator(result, value, lastScrollTop)) {\n result = this._getDataItemsCollection(value, lastScrollTop);\n }\n this._lastScrollTop = value;\n this.result = result;\n return result;\n }, this);\n },\n _whenChanged: function (getter, callback) {\n var current;\n return function (force) {\n var theNew = getter(force);\n if (theNew !== current) {\n current = theNew;\n callback(theNew, force);\n }\n };\n },\n _reorderList: function (list, reorder) {\n var that = this;\n var length = list.length;\n var currentOffset = -Infinity;\n reorder = $.proxy(map2(reorder, this.templates), this);\n return function (list2, offset, force) {\n var diff = offset - currentOffset;\n var range, range2;\n if (force || Math.abs(diff) >= length) {\n range = list;\n range2 = list2;\n } else {\n range = reshift(list, diff);\n range2 = diff > 0 ? list2.slice(-diff) : list2.slice(0, -diff);\n }\n reorder(range, range2, that.bound());\n currentOffset = offset;\n };\n },\n _bufferSizes: function () {\n var options = this.options;\n return bufferSizes(this._screenHeight, options.listScreens, options.oppositeBuffer);\n },\n _indexConstraint: function (position) {\n var itemCount = this.itemCount, itemHeight = this.options.itemHeight, total = this.dataSource.total();\n return Math.min(Math.max(total - itemCount, 0), Math.max(0, Math.floor(position / itemHeight)));\n },\n _listIndex: function (scrollTop, lastScrollTop) {\n var buffers = this._bufferSizes(), position;\n position = scrollTop - (scrollTop > lastScrollTop ? buffers.down : buffers.up);\n return this._indexConstraint(position);\n },\n _selectable: function () {\n if (this.options.selectable) {\n this._selectProxy = $.proxy(this, '_clickHandler');\n this.element.on(CLICK + VIRTUAL_LIST_NS, '.' + VIRTUALITEM, this._selectProxy);\n }\n },\n getElementIndex: function (element) {\n if (!(element instanceof jQuery)) {\n return undefined;\n }\n return parseInt(element.attr('data-offset-index'), 10);\n },\n _getIndecies: function (candidate) {\n var result = [], data;\n if (typeof candidate === 'function') {\n data = this.dataSource.flatView();\n for (var idx = 0; idx < data.length; idx++) {\n if (candidate(data[idx])) {\n result.push(idx);\n break;\n }\n }\n }\n if (typeof candidate === 'number') {\n result.push(candidate);\n }\n var elementIndex = this.getElementIndex(candidate);\n if (!isNaN(elementIndex)) {\n result.push(elementIndex);\n }\n if (candidate instanceof Array) {\n result = candidate;\n }\n return result;\n },\n _deselect: function (indices) {\n var removed = [], selectedIndex, dataItem, selectedIndexes = this._selectedIndexes, selectedDataItems = this._selectedDataItems, position = 0, selectable = this.options.selectable, removedindexesCounter = 0, valueGetter = this._valueGetter, item, match, result = null;\n indices = indices.slice();\n if (selectable === true || !indices.length) {\n for (var idx = 0; idx < selectedIndexes.length; idx++) {\n if (selectedIndexes[idx] !== undefined) {\n this._getElementByIndex(selectedIndexes[idx]).removeClass(SELECTED);\n } else if (selectedDataItems[idx]) {\n this._getElementByDataItem(selectedDataItems[idx]).removeClass(SELECTED);\n }\n removed.push({\n index: selectedIndexes[idx],\n position: idx,\n dataItem: selectedDataItems[idx]\n });\n }\n this._values = [];\n this._selectedDataItems = [];\n this._selectedIndexes = [];\n } else if (selectable === 'multiple') {\n for (var i = 0; i < indices.length; i++) {\n result = null;\n position = $.inArray(indices[i], selectedIndexes);\n dataItem = this.dataItemByIndex(indices[i]);\n if (position === -1 && dataItem) {\n for (var j = 0; j < selectedDataItems.length; j++) {\n match = isPrimitive(dataItem) ? selectedDataItems[j] === dataItem : valueGetter(selectedDataItems[j]) === valueGetter(dataItem);\n if (match) {\n item = this._getElementByIndex(indices[i]);\n result = this._deselectSingleItem(item, j, indices[i], removedindexesCounter);\n }\n }\n } else {\n selectedIndex = selectedIndexes[position];\n if (selectedIndex !== undefined) {\n item = this._getElementByIndex(selectedIndex);\n result = this._deselectSingleItem(item, position, selectedIndex, removedindexesCounter);\n }\n }\n if (result) {\n indices.splice(i, 1);\n removed.push(result);\n removedindexesCounter++;\n i--;\n }\n }\n }\n return {\n indices: indices,\n removed: removed\n };\n },\n _deselectSingleItem: function (item, position, selectedIndex, removedindexesCounter) {\n var dataItem;\n if (!item.hasClass('k-state-selected')) {\n return;\n }\n item.removeClass(SELECTED);\n this._values.splice(position, 1);\n this._selectedIndexes.splice(position, 1);\n dataItem = this._selectedDataItems.splice(position, 1)[0];\n return {\n index: selectedIndex,\n position: position + removedindexesCounter,\n dataItem: dataItem\n };\n },\n _deselectCurrentValues: function (indices) {\n var children = this.element[0].children;\n var value, index, position;\n var values = this._values;\n var removed = [];\n var idx = 0;\n var j;\n if (this.options.selectable !== 'multiple' || !this.isFiltered()) {\n return [];\n }\n if (indices[0] === -1) {\n $(children).removeClass('k-state-selected');\n removed = $.map(this._selectedDataItems.slice(0), function (dataItem, idx) {\n return {\n dataItem: dataItem,\n position: idx\n };\n });\n this._selectedIndexes = [];\n this._selectedDataItems = [];\n this._values = [];\n return removed;\n }\n for (; idx < indices.length; idx++) {\n position = -1;\n index = indices[idx];\n if (this.dataItemByIndex(index)) {\n value = this._valueGetter(this.dataItemByIndex(index));\n }\n for (j = 0; j < values.length; j++) {\n if (value == values[j]) {\n position = j;\n break;\n }\n }\n if (position > -1) {\n removed.push(this.removeAt(position));\n $(children[index]).removeClass('k-state-selected');\n }\n }\n return removed;\n },\n _getSkip: function (index, take) {\n var page = index < take ? 1 : Math.floor(index / take) + 1;\n return (page - 1) * take;\n },\n _select: function (indexes) {\n var that = this, singleSelection = this.options.selectable !== 'multiple', dataSource = this.dataSource, dataItem, oldSkip, take = this.itemCount, valueGetter = this._valueGetter, added = [];\n if (singleSelection) {\n that._selectedIndexes = [];\n that._selectedDataItems = [];\n that._values = [];\n }\n oldSkip = dataSource.skip();\n $.each(indexes, function (_, index) {\n var skip = that._getSkip(index, take);\n that.mute(function () {\n dataSource.range(skip, take);\n dataItem = that._findDataItem(dataSource.view(), [index - skip]);\n that._selectedIndexes.push(index);\n that._selectedDataItems.push(dataItem);\n that._values.push(isPrimitive(dataItem) ? dataItem : valueGetter(dataItem));\n added.push({\n index: index,\n dataItem: dataItem\n });\n that._getElementByIndex(index).addClass(SELECTED);\n dataSource.range(oldSkip, take);\n });\n });\n that._values = that._checkValuesOrder(that._values);\n return added;\n },\n _clickHandler: function (e) {\n var item = $(e.currentTarget);\n if (!e.isDefaultPrevented() && item.attr('data-uid')) {\n this.trigger(CLICK, { item: item });\n }\n },\n _buildValueGetter: function () {\n this._valueGetter = kendo.getter(this.options.dataValueField);\n },\n _calculateGroupPadding: function (height) {\n var firstItem = this.items().first(), groupHeader = this.header, padding = 0;\n if (groupHeader[0] && groupHeader[0].style.display !== 'none') {\n if (height !== 'auto') {\n padding = kendo.support.scrollbar();\n }\n padding += parseFloat(firstItem.css('border-right-width'), 10) + parseFloat(firstItem.children('.k-group').css('right'), 10);\n groupHeader.css('padding-right', padding);\n }\n },\n _calculateColumnsHeaderPadding: function () {\n if (this.options.columns && this.options.columns.length) {\n var isRtl = kendo.support.isRtl(this.wrapper);\n var scrollbar = kendo.support.scrollbar();\n var columnsHeader = this.content.parent().parent().find('.k-grid-header');\n var total = this.dataSource.total();\n columnsHeader.css(isRtl ? 'padding-left' : 'padding-right', total ? scrollbar : 0);\n }\n }\n });\n kendo.ui.VirtualList = VirtualList;\n kendo.ui.plugin(VirtualList);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.autocomplete', [\n 'kendo.list',\n 'kendo.mobile.scroller',\n 'kendo.virtuallist'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'autocomplete',\n name: 'AutoComplete',\n category: 'web',\n description: 'The AutoComplete widget provides suggestions depending on the typed text.It also allows multiple value entries.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, support = kendo.support, caret = kendo.caret, activeElement = kendo._activeElement, placeholderSupported = support.placeholder, ui = kendo.ui, List = ui.List, keys = kendo.keys, DataSource = kendo.data.DataSource, ARIA_DISABLED = 'aria-disabled', ARIA_READONLY = 'aria-readonly', CHANGE = 'change', DEFAULT = 'k-state-default', DISABLED = 'disabled', READONLY = 'readonly', FOCUSED = 'k-state-focused', SELECTED = 'k-state-selected', STATEDISABLED = 'k-state-disabled', AUTOCOMPLETEVALUE = 'off', HOVER = 'k-state-hover', ns = '.kendoAutoComplete', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, proxy = $.proxy;\n function indexOfWordAtCaret(caretIdx, text, separator) {\n return separator ? text.substring(0, caretIdx).split(separator).length - 1 : 0;\n }\n function wordAtCaret(caretIdx, text, separator) {\n return text.split(separator)[indexOfWordAtCaret(caretIdx, text, separator)];\n }\n function replaceWordAtCaret(caretIdx, text, word, separator, defaultSeparator) {\n var words = text.split(separator);\n words.splice(indexOfWordAtCaret(caretIdx, text, separator), 1, word);\n if (separator && words[words.length - 1] !== '') {\n words.push('');\n }\n return words.join(defaultSeparator);\n }\n var AutoComplete = List.extend({\n init: function (element, options) {\n var that = this, wrapper, disabled;\n that.ns = ns;\n options = $.isArray(options) ? { dataSource: options } : options;\n List.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n options.placeholder = options.placeholder || element.attr('placeholder');\n if (placeholderSupported) {\n element.attr('placeholder', options.placeholder);\n }\n that._wrapper();\n that._loader();\n that._clearButton();\n that._dataSource();\n that._ignoreCase();\n element[0].type = 'text';\n wrapper = that.wrapper;\n that._popup();\n element.addClass('k-input').on('keydown' + ns, proxy(that._keydown, that)).on('keypress' + ns, proxy(that._keypress, that)).on('input' + ns, proxy(that._search, that)).on('paste' + ns, proxy(that._search, that)).on('focus' + ns, function () {\n that._prev = that._accessor();\n that._oldText = that._prev;\n that._placeholder(false);\n wrapper.addClass(FOCUSED);\n }).on('focusout' + ns, function () {\n that._change();\n that._placeholder();\n that.close();\n wrapper.removeClass(FOCUSED);\n }).attr({\n autocomplete: AUTOCOMPLETEVALUE,\n role: 'textbox',\n 'aria-haspopup': true\n });\n that._clear.on('click' + ns + ' touchend' + ns, proxy(that._clearValue, that));\n that._enable();\n that._old = that._accessor();\n if (element[0].id) {\n element.attr('aria-owns', that.ul[0].id);\n }\n that._aria();\n that._placeholder();\n that._initList();\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n that.listView.bind('click', function (e) {\n e.preventDefault();\n });\n that._resetFocusItemHandler = $.proxy(that._resetFocusItem, that);\n kendo.notify(that);\n that._toggleCloseVisibility();\n },\n options: {\n name: 'AutoComplete',\n enabled: true,\n suggest: false,\n template: '',\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#',\n dataTextField: '',\n minLength: 1,\n enforceMinLength: false,\n delay: 200,\n height: 200,\n filter: 'startswith',\n ignoreCase: true,\n highlightFirst: false,\n separator: null,\n placeholder: '',\n animation: {},\n virtual: false,\n value: null,\n clearButton: true,\n autoWidth: false,\n popup: null\n },\n _dataSource: function () {\n var that = this;\n if (that.dataSource && that._refreshHandler) {\n that._unbindDataSource();\n } else {\n that._progressHandler = proxy(that._showBusy, that);\n that._errorHandler = proxy(that._hideBusy, that);\n }\n that.dataSource = DataSource.create(that.options.dataSource).bind('progress', that._progressHandler).bind('error', that._errorHandler);\n },\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._dataSource();\n this.listView.setDataSource(this.dataSource);\n },\n events: [\n 'open',\n 'close',\n CHANGE,\n 'select',\n 'filtering',\n 'dataBinding',\n 'dataBound'\n ],\n setOptions: function (options) {\n var listOptions = this._listOptions(options);\n List.fn.setOptions.call(this, options);\n this.listView.setOptions(listOptions);\n this._accessors();\n this._aria();\n this._clearButton();\n },\n _listOptions: function (options) {\n var listOptions = List.fn._listOptions.call(this, $.extend(options, { skipUpdateOnBind: true }));\n listOptions.dataValueField = listOptions.dataTextField;\n listOptions.selectedItemChange = null;\n return listOptions;\n },\n _editable: function (options) {\n var that = this, element = that.element, wrapper = that.wrapper.off(ns), readonly = options.readonly, disable = options.disable;\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n element.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false).attr(ARIA_READONLY, false);\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n element.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable).attr(ARIA_READONLY, readonly);\n }\n },\n close: function () {\n var that = this;\n var current = that.listView.focus();\n if (current) {\n current.removeClass(SELECTED);\n }\n that.popup.close();\n },\n destroy: function () {\n var that = this;\n that.element.off(ns);\n that._clear.off(ns);\n that.wrapper.off(ns);\n List.fn.destroy.call(that);\n },\n refresh: function () {\n this.listView.refresh();\n },\n select: function (li) {\n this._select(li);\n },\n search: function (word) {\n var that = this, options = that.options, ignoreCase = options.ignoreCase, separator = that._separator(), length, accentFoldingFiltering = that.dataSource.options.accentFoldingFiltering;\n word = word || that._accessor();\n clearTimeout(that._typingTimeout);\n if (separator) {\n word = wordAtCaret(caret(that.element)[0], word, separator);\n }\n length = word.length;\n if (!options.enforceMinLength && !length || length >= options.minLength) {\n that._open = true;\n that._mute(function () {\n this.listView.value([]);\n });\n that._filterSource({\n value: ignoreCase ? accentFoldingFiltering ? word.toLocaleLowerCase(accentFoldingFiltering) : word.toLowerCase() : word,\n operator: options.filter,\n field: options.dataTextField,\n ignoreCase: ignoreCase\n });\n that.one('close', $.proxy(that._unifySeparators, that));\n }\n that._toggleCloseVisibility();\n },\n suggest: function (word) {\n var that = this, key = that._last, value = that._accessor(), element = that.element[0], caretIdx = caret(element)[0], separator = that._separator(), words = value.split(separator), wordIndex = indexOfWordAtCaret(caretIdx, value, separator), selectionEnd = caretIdx, idx, accentFoldingFiltering = that.dataSource.options.accentFoldingFiltering;\n if (key == keys.BACKSPACE || key == keys.DELETE) {\n that._last = undefined;\n return;\n }\n word = word || '';\n if (typeof word !== 'string') {\n if (word[0]) {\n word = that.dataSource.view()[List.inArray(word[0], that.ul[0])];\n }\n word = word ? that._text(word) : '';\n }\n if (caretIdx <= 0) {\n caretIdx = (accentFoldingFiltering ? value.toLocaleLowerCase(accentFoldingFiltering) : value.toLowerCase()).indexOf(accentFoldingFiltering ? word.toLocaleLowerCase(accentFoldingFiltering) : word.toLowerCase()) + 1;\n }\n idx = value.substring(0, caretIdx).lastIndexOf(separator);\n idx = idx > -1 ? caretIdx - (idx + separator.length) : caretIdx;\n value = words[wordIndex].substring(0, idx);\n if (word) {\n word = word.toString();\n idx = (accentFoldingFiltering ? word.toLocaleLowerCase(accentFoldingFiltering) : word.toLowerCase()).indexOf(accentFoldingFiltering ? value.toLocaleLowerCase(accentFoldingFiltering) : value.toLowerCase());\n if (idx > -1) {\n word = word.substring(idx + value.length);\n selectionEnd = caretIdx + word.length;\n value += word;\n }\n if (separator && words[words.length - 1] !== '') {\n words.push('');\n }\n }\n words[wordIndex] = value;\n that._accessor(words.join(separator || ''));\n if (element === activeElement()) {\n caret(element, caretIdx, selectionEnd);\n }\n },\n value: function (value) {\n if (value !== undefined) {\n this.listView.value(value);\n this._accessor(value);\n this._old = this._accessor();\n this._oldText = this._accessor();\n } else {\n return this._accessor();\n }\n this._toggleCloseVisibility();\n },\n _click: function (e) {\n var item = e.item;\n var that = this;\n var element = that.element;\n var dataItem = that.listView.dataItemByIndex(that.listView.getElementIndex(item));\n e.preventDefault();\n that._active = true;\n if (that.trigger('select', {\n dataItem: dataItem,\n item: item\n })) {\n that.close();\n return;\n }\n that._oldText = element.val();\n that._select(item).done(function () {\n that._blur();\n caret(element, element.val().length);\n });\n },\n _clearText: $.noop,\n _resetFocusItem: function () {\n var index = this.options.highlightFirst ? 0 : -1;\n if (this.options.virtual) {\n this.listView.scrollTo(0);\n }\n this.listView.focus(index);\n },\n _listBound: function () {\n var that = this;\n var popup = that.popup;\n var options = that.options;\n var data = that.dataSource.flatView();\n var length = data.length;\n var groupsLength = that.dataSource._group.length;\n var isActive = that.element[0] === activeElement();\n var action;\n that._renderFooter();\n that._renderNoData();\n that._toggleNoData(!length);\n that._toggleHeader(!!groupsLength && !!length);\n that._resizePopup();\n popup.position();\n if (length) {\n if (options.suggest && isActive) {\n that.suggest(data[0]);\n }\n }\n if (that._open) {\n that._open = false;\n action = that._allowOpening() ? 'open' : 'close';\n if (that._typingTimeout && !isActive) {\n action = 'close';\n }\n if (length) {\n that._resetFocusItem();\n if (options.virtual) {\n that.popup.unbind('activate', that._resetFocusItemHandler).one('activate', that._resetFocusItemHandler);\n }\n }\n popup[action]();\n that._typingTimeout = undefined;\n }\n if (that._touchScroller) {\n that._touchScroller.reset();\n }\n that._hideBusy();\n that._makeUnselectable();\n that.trigger('dataBound');\n },\n _mute: function (callback) {\n this._muted = true;\n callback.call(this);\n this._muted = false;\n },\n _listChange: function () {\n var isActive = this._active || this.element[0] === activeElement();\n if (isActive && !this._muted) {\n this._selectValue(this.listView.selectedDataItems()[0]);\n }\n },\n _selectValue: function (dataItem) {\n var separator = this._separator();\n var text = '';\n if (dataItem) {\n text = this._text(dataItem);\n }\n if (text === null) {\n text = '';\n }\n if (separator) {\n text = replaceWordAtCaret(caret(this.element)[0], this._accessor(), text, separator, this._defaultSeparator());\n }\n this._prev = text;\n this._accessor(text);\n this._placeholder();\n },\n _unifySeparators: function () {\n this._accessor(this.value().split(this._separator()).join(this._defaultSeparator()));\n return this;\n },\n _preselect: function (value, text) {\n this._inputValue(text);\n this._accessor(value);\n this._old = this.oldText = this._accessor();\n this.listView.setValue(value);\n this._placeholder();\n },\n _change: function () {\n var that = this;\n var value = that._unifySeparators().value();\n var trigger = value !== List.unifyType(that._old, typeof value);\n var valueUpdated = trigger && !that._typing;\n var itemSelected = that._oldText !== value;\n that._old = value;\n that._oldText = value;\n if (valueUpdated || itemSelected) {\n that.element.trigger(CHANGE);\n }\n if (trigger) {\n that.trigger(CHANGE);\n }\n that.typing = false;\n that._toggleCloseVisibility();\n },\n _accessor: function (value) {\n var that = this, element = that.element[0];\n if (value !== undefined) {\n element.value = value === null ? '' : value;\n that._placeholder();\n } else {\n value = element.value;\n if (element.className.indexOf('k-readonly') > -1) {\n if (value === that.options.placeholder) {\n return '';\n } else {\n return value;\n }\n }\n return value;\n }\n },\n _keydown: function (e) {\n var that = this;\n var key = e.keyCode;\n var listView = that.listView;\n var visible = that.popup.visible();\n var current = listView.focus();\n that._last = key;\n if (key === keys.DOWN) {\n if (visible) {\n this._move(current ? 'focusNext' : 'focusFirst');\n } else if (that.value()) {\n that._filterSource({\n value: that.ignoreCase ? that.value().toLowerCase() : that.value(),\n operator: that.options.filter,\n field: that.options.dataTextField,\n ignoreCase: that.ignoreCase\n }).done(function () {\n if (that._allowOpening()) {\n that._resetFocusItem();\n that.popup.open();\n }\n });\n }\n e.preventDefault();\n } else if (key === keys.UP) {\n if (visible) {\n this._move(current ? 'focusPrev' : 'focusLast');\n }\n e.preventDefault();\n } else if (key === keys.HOME) {\n this._move('focusFirst');\n } else if (key === keys.END) {\n this._move('focusLast');\n } else if (key === keys.ENTER || key === keys.TAB) {\n if (key === keys.ENTER && visible) {\n e.preventDefault();\n }\n if (visible && current) {\n var dataItem = listView.dataItemByIndex(listView.getElementIndex(current));\n if (that.trigger('select', {\n dataItem: dataItem,\n item: current\n })) {\n return;\n }\n this._select(current);\n }\n this._blur();\n } else if (key === keys.ESC) {\n if (visible) {\n e.preventDefault();\n } else {\n that._clearValue();\n }\n that.close();\n } else if (that.popup.visible() && (key === keys.PAGEDOWN || key === keys.PAGEUP)) {\n e.preventDefault();\n var direction = key === keys.PAGEDOWN ? 1 : -1;\n listView.scrollWith(direction * listView.screenHeight());\n } else {\n that.popup._hovered = true;\n that._search();\n }\n },\n _keypress: function () {\n this._oldText = this.element.val();\n this._typing = true;\n },\n _move: function (action) {\n this.listView[action]();\n if (this.options.suggest) {\n this.suggest(this.listView.focus());\n }\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that._loading.hide();\n that.element.attr('aria-busy', false);\n that._busy = null;\n that._showClear();\n },\n _showBusy: function () {\n var that = this;\n if (that._busy) {\n return;\n }\n that._busy = setTimeout(function () {\n that.element.attr('aria-busy', true);\n that._loading.show();\n that._hideClear();\n }, 100);\n },\n _placeholder: function (show) {\n if (placeholderSupported) {\n return;\n }\n var that = this, element = that.element, placeholder = that.options.placeholder, value;\n if (placeholder) {\n value = element.val();\n if (show === undefined) {\n show = !value;\n }\n if (!show) {\n if (value !== placeholder) {\n placeholder = value;\n } else {\n placeholder = '';\n }\n }\n if (value === that._old && !show) {\n return;\n }\n element.toggleClass('k-readonly', show).val(placeholder);\n if (!placeholder && element[0] === document.activeElement) {\n caret(element[0], 0, 0);\n }\n }\n },\n _separator: function () {\n var separator = this.options.separator;\n if (separator instanceof Array) {\n return new RegExp(separator.join('|'), 'gi');\n }\n return separator;\n },\n _defaultSeparator: function () {\n var separator = this.options.separator;\n if (separator instanceof Array) {\n return separator[0];\n }\n return separator;\n },\n _inputValue: function () {\n return this.element.val();\n },\n _search: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = setTimeout(function () {\n if (that._prev !== that._accessor()) {\n that._prev = that._accessor();\n that.search();\n }\n }, that.options.delay);\n },\n _select: function (candidate) {\n var that = this;\n that._active = true;\n return that.listView.select(candidate).done(function () {\n that._active = false;\n });\n },\n _loader: function () {\n this._loading = $('<span class=\"k-icon k-i-loading\" style=\"display:none\"></span>').insertAfter(this.element);\n },\n _clearButton: function () {\n List.fn._clearButton.call(this);\n if (this.options.clearButton) {\n this._clear.insertAfter(this.element);\n this.wrapper.addClass('k-autocomplete-clearable');\n }\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _toggleCloseVisibility: function () {\n if (this.value()) {\n this._showClear();\n } else {\n this._hideClear();\n }\n },\n _wrapper: function () {\n var that = this, element = that.element, DOMelement = element[0], wrapper;\n wrapper = element.parent();\n if (!wrapper.is('span.k-widget')) {\n wrapper = element.wrap('<span />').parent();\n }\n wrapper.attr('tabindex', -1);\n wrapper.attr('role', 'presentation');\n wrapper[0].style.cssText = DOMelement.style.cssText;\n element.css({\n width: '',\n height: DOMelement.style.height\n });\n that._focused = that.element;\n that.wrapper = wrapper.addClass('k-widget k-autocomplete').addClass(DOMelement.className);\n that._inputWrapper = $(wrapper[0]);\n }\n });\n ui.plugin(AutoComplete);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dropdownlist', [\n 'kendo.list',\n 'kendo.mobile.scroller',\n 'kendo.virtuallist'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dropdownlist',\n name: 'DropDownList',\n category: 'web',\n description: 'The DropDownList widget displays a list of values and allows the selection of a single value from the list.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, List = ui.List, Select = ui.Select, support = kendo.support, activeElement = kendo._activeElement, ObservableObject = kendo.data.ObservableObject, keys = kendo.keys, ns = '.kendoDropDownList', nsFocusEvent = ns + 'FocusEvent', DISABLED = 'disabled', READONLY = 'readonly', CHANGE = 'change', FOCUSED = 'k-state-focused', DEFAULT = 'k-state-default', STATEDISABLED = 'k-state-disabled', ARIA_DISABLED = 'aria-disabled', CLICKEVENTS = 'click' + ns + ' touchend' + ns, HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, TABINDEX = 'tabindex', STATE_FILTER = 'filter', STATE_ACCEPT = 'accept', MSG_INVALID_OPTION_LABEL = 'The `optionLabel` option is not valid due to missing fields. Define a custom optionLabel as shown here http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#configuration-optionLabel', proxy = $.proxy;\n var DropDownList = Select.extend({\n init: function (element, options) {\n var that = this;\n var index = options && options.index;\n var optionLabel, text, disabled;\n that.ns = ns;\n options = $.isArray(options) ? { dataSource: options } : options;\n Select.fn.init.call(that, element, options);\n options = that.options;\n element = that.element.on('focus' + ns, proxy(that._focusHandler, that));\n that._focusInputHandler = $.proxy(that._focusInput, that);\n that.optionLabel = $();\n that._optionLabel();\n that._inputTemplate();\n that._reset();\n that._prev = '';\n that._word = '';\n that._wrapper();\n that._tabindex();\n that.wrapper.data(TABINDEX, that.wrapper.attr(TABINDEX));\n that._span();\n that._popup();\n that._mobile();\n that._dataSource();\n that._ignoreCase();\n that._filterHeader();\n that._aria();\n that.wrapper.attr('aria-live', 'polite');\n that._enable();\n that._attachFocusHandlers();\n that._oldIndex = that.selectedIndex = -1;\n if (index !== undefined) {\n options.index = index;\n }\n that._initialIndex = options.index;\n that.requireValueMapper(that.options);\n that._initList();\n that._cascade();\n that.one('set', function (e) {\n if (!e.sender.listView.bound() && that.hasOptionLabel()) {\n that._textAccessor(that._optionLabelText());\n }\n });\n if (options.autoBind) {\n that.dataSource.fetch();\n } else if (that.selectedIndex === -1) {\n text = options.text || '';\n if (!text) {\n optionLabel = options.optionLabel;\n if (optionLabel && options.index === 0) {\n text = optionLabel;\n } else if (that._isSelect) {\n text = element.children(':selected').text();\n }\n }\n that._textAccessor(text);\n }\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n that.listView.bind('click', function (e) {\n e.preventDefault();\n });\n kendo.notify(that);\n },\n options: {\n name: 'DropDownList',\n enabled: true,\n autoBind: true,\n index: 0,\n text: null,\n value: null,\n delay: 500,\n height: 200,\n dataTextField: '',\n dataValueField: '',\n optionLabel: '',\n cascadeFrom: '',\n cascadeFromField: '',\n cascadeFromParentField: '',\n ignoreCase: true,\n animation: {},\n filter: 'none',\n minLength: 1,\n enforceMinLength: false,\n virtual: false,\n template: null,\n valueTemplate: null,\n optionLabelTemplate: null,\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#',\n autoWidth: false,\n popup: null\n },\n events: [\n 'open',\n 'close',\n CHANGE,\n 'select',\n 'filtering',\n 'dataBinding',\n 'dataBound',\n 'cascade',\n 'set'\n ],\n setOptions: function (options) {\n Select.fn.setOptions.call(this, options);\n this.listView.setOptions(this._listOptions(options));\n this._optionLabel();\n this._inputTemplate();\n this._accessors();\n this._filterHeader();\n this._enable();\n this._aria();\n if (!this.value() && this.hasOptionLabel()) {\n this.select(0);\n }\n },\n destroy: function () {\n var that = this;\n Select.fn.destroy.call(that);\n that.wrapper.off(ns);\n that.wrapper.off(nsFocusEvent);\n that.element.off(ns);\n that._inputWrapper.off(ns);\n that._arrow.off();\n that._arrow = null;\n that._arrowIcon = null;\n that.optionLabel.off();\n if (that.filterInput) {\n that.filterInput.off(nsFocusEvent);\n }\n },\n open: function () {\n var that = this;\n var isFiltered = that.dataSource.filter() ? that.dataSource.filter().filters.length > 0 : false;\n if (that.popup.visible()) {\n return;\n }\n if (!that.listView.bound() || that._state === STATE_ACCEPT) {\n that._open = true;\n that._state = 'rebind';\n if (that.filterInput) {\n that.filterInput.val('');\n that._prev = '';\n }\n if (that.filterInput && that.options.minLength !== 1 && !isFiltered) {\n that.refresh();\n that.popup.one('activate', that._focusInputHandler);\n that.popup.open();\n that._resizeFilterInput();\n } else {\n that._filterSource();\n }\n } else if (that._allowOpening()) {\n that._focusFilter = true;\n that.popup.one('activate', that._focusInputHandler);\n that.popup._hovered = true;\n that.popup.open();\n that._resizeFilterInput();\n that._focusItem();\n }\n },\n _focusInput: function () {\n this._focusElement(this.filterInput);\n },\n _resizeFilterInput: function () {\n var filterInput = this.filterInput;\n var originalPrevent = this._prevent;\n if (!filterInput) {\n return;\n }\n var isInputActive = this.filterInput[0] === activeElement();\n var caret = kendo.caret(this.filterInput[0])[0];\n this._prevent = true;\n filterInput.css('display', 'none').css('width', this.popup.element.css('width')).css('display', 'inline-block');\n if (isInputActive) {\n filterInput.focus();\n kendo.caret(filterInput[0], caret);\n }\n this._prevent = originalPrevent;\n },\n _allowOpening: function () {\n return this.hasOptionLabel() || this.filterInput || Select.fn._allowOpening.call(this);\n },\n toggle: function (toggle) {\n this._toggle(toggle, true);\n },\n current: function (candidate) {\n var current;\n if (candidate === undefined) {\n current = this.listView.focus();\n if (!current && this.selectedIndex === 0 && this.hasOptionLabel()) {\n return this.optionLabel;\n }\n return current;\n }\n this._focus(candidate);\n },\n dataItem: function (index) {\n var that = this;\n var dataItem = null;\n if (index === null) {\n return index;\n }\n if (index === undefined) {\n dataItem = that.listView.selectedDataItems()[0];\n } else {\n if (typeof index !== 'number') {\n if (that.options.virtual) {\n return that.dataSource.getByUid($(index).data('uid'));\n }\n if (index.hasClass('k-list-optionlabel')) {\n index = -1;\n } else {\n index = $(that.items()).index(index);\n }\n } else if (that.hasOptionLabel()) {\n index -= 1;\n }\n dataItem = that.dataSource.flatView()[index];\n }\n if (!dataItem) {\n dataItem = that._optionLabelDataItem();\n }\n return dataItem;\n },\n refresh: function () {\n this.listView.refresh();\n },\n text: function (text) {\n var that = this;\n var loweredText;\n var ignoreCase = that.options.ignoreCase;\n text = text === null ? '' : text;\n if (text !== undefined) {\n if (typeof text !== 'string') {\n that._textAccessor(text);\n return;\n }\n loweredText = ignoreCase ? text.toLowerCase() : text;\n that._select(function (data) {\n data = that._text(data);\n if (ignoreCase) {\n data = (data + '').toLowerCase();\n }\n return data === loweredText;\n }).done(function () {\n that._textAccessor(that.dataItem() || text);\n });\n } else {\n return that._textAccessor();\n }\n },\n _clearFilter: function () {\n $(this.filterInput).val('');\n Select.fn._clearFilter.call(this);\n },\n value: function (value) {\n var that = this;\n var listView = that.listView;\n var dataSource = that.dataSource;\n if (value === undefined) {\n value = that._accessor() || that.listView.value()[0];\n return value === undefined || value === null ? '' : value;\n }\n that.requireValueMapper(that.options, value);\n if (value || !that.hasOptionLabel()) {\n that._initialIndex = null;\n }\n this.trigger('set', { value: value });\n if (that._request && that.options.cascadeFrom && that.listView.bound()) {\n if (that._valueSetter) {\n dataSource.unbind(CHANGE, that._valueSetter);\n }\n that._valueSetter = proxy(function () {\n that.value(value);\n }, that);\n dataSource.one(CHANGE, that._valueSetter);\n return;\n }\n if (that._isFilterEnabled() && listView.bound() && listView.isFiltered()) {\n that._clearFilter();\n } else {\n that._fetchData();\n }\n listView.value(value).done(function () {\n that._old = that._valueBeforeCascade = that._accessor();\n that._oldIndex = that.selectedIndex;\n });\n },\n hasOptionLabel: function () {\n return this.optionLabel && !!this.optionLabel[0];\n },\n _optionLabel: function () {\n var that = this;\n var options = that.options;\n var optionLabel = options.optionLabel;\n var template = options.optionLabelTemplate;\n if (!optionLabel) {\n that.optionLabel.off().remove();\n that.optionLabel = $();\n return;\n }\n if (!template) {\n template = '#:';\n if (typeof optionLabel === 'string') {\n template += 'data';\n } else {\n template += kendo.expr(options.dataTextField, 'data');\n }\n template += '#';\n }\n if (typeof template !== 'function') {\n template = kendo.template(template);\n }\n that.optionLabelTemplate = template;\n if (!that.hasOptionLabel()) {\n that.optionLabel = $('<div class=\"k-list-optionlabel\"></div>').prependTo(that.list);\n }\n that.optionLabel.html(template(optionLabel)).off().on(CLICKEVENTS, proxy(that._click, that)).on(HOVEREVENTS, that._toggleHover);\n that.angular('compile', function () {\n return {\n elements: that.optionLabel,\n data: [{ dataItem: that._optionLabelDataItem() }]\n };\n });\n },\n _optionLabelText: function () {\n var optionLabel = this.options.optionLabel;\n return typeof optionLabel === 'string' ? optionLabel : this._text(optionLabel);\n },\n _optionLabelDataItem: function () {\n var that = this;\n var optionLabel = that.options.optionLabel;\n if (that.hasOptionLabel()) {\n return $.isPlainObject(optionLabel) ? new ObservableObject(optionLabel) : that._assignInstance(that._optionLabelText(), '');\n }\n return undefined;\n },\n _buildOptions: function (data) {\n var that = this;\n if (!that._isSelect) {\n return;\n }\n var value = that.listView.value()[0];\n var optionLabel = that._optionLabelDataItem();\n var optionLabelValue = optionLabel && that._value(optionLabel);\n if (value === undefined || value === null) {\n value = '';\n }\n if (optionLabel) {\n if (optionLabelValue === undefined || optionLabelValue === null) {\n optionLabelValue = '';\n }\n optionLabel = '<option value=\"' + optionLabelValue + '\">' + that._text(optionLabel) + '</option>';\n }\n that._options(data, optionLabel, value);\n if (value !== List.unifyType(that._accessor(), typeof value)) {\n that._customOption = null;\n that._custom(value);\n }\n },\n _listBound: function () {\n var that = this;\n var initialIndex = that._initialIndex;\n var filtered = that._state === STATE_FILTER;\n var data = that.dataSource.flatView();\n var dataItem;\n that._presetValue = false;\n that._renderFooter();\n that._renderNoData();\n that._toggleNoData(!data.length);\n that._resizePopup(true);\n that.popup.position();\n that._buildOptions(data);\n that._makeUnselectable();\n if (!filtered) {\n if (that._open) {\n that.toggle(that._allowOpening());\n }\n that._open = false;\n if (!that._fetch) {\n if (data.length) {\n if (!that.listView.value().length && initialIndex > -1 && initialIndex !== null) {\n that.select(initialIndex);\n }\n that._initialIndex = null;\n dataItem = that.listView.selectedDataItems()[0];\n if (dataItem && that.text() !== that._text(dataItem)) {\n that._selectValue(dataItem);\n }\n } else if (that._textAccessor() !== that._optionLabelText()) {\n that.listView.value('');\n that._selectValue(null);\n that._oldIndex = that.selectedIndex;\n }\n }\n }\n that._hideBusy();\n that.trigger('dataBound');\n },\n _listChange: function () {\n this._selectValue(this.listView.selectedDataItems()[0]);\n if (this._presetValue || this._old && this._oldIndex === -1) {\n this._oldIndex = this.selectedIndex;\n }\n },\n _filterPaste: function () {\n this._search();\n },\n _attachFocusHandlers: function () {\n var that = this;\n var wrapper = that.wrapper;\n wrapper.on('focusin' + nsFocusEvent, proxy(that._focusinHandler, that)).on('focusout' + nsFocusEvent, proxy(that._focusoutHandler, that));\n if (that.filterInput) {\n that.filterInput.on('focusin' + nsFocusEvent, proxy(that._focusinHandler, that)).on('focusout' + nsFocusEvent, proxy(that._focusoutHandler, that));\n }\n },\n _focusHandler: function () {\n this.wrapper.focus();\n },\n _focusinHandler: function () {\n this._inputWrapper.addClass(FOCUSED);\n this._prevent = false;\n },\n _focusoutHandler: function () {\n var that = this;\n var isIFrame = window.self !== window.top;\n if (!that._prevent) {\n clearTimeout(that._typingTimeout);\n if (support.mobileOS.ios && isIFrame) {\n that._change();\n } else {\n that._blur();\n }\n that._inputWrapper.removeClass(FOCUSED);\n that._prevent = true;\n that._open = false;\n that.element.blur();\n }\n },\n _wrapperMousedown: function () {\n this._prevent = !!this.filterInput;\n },\n _wrapperClick: function (e) {\n e.preventDefault();\n this.popup.unbind('activate', this._focusInputHandler);\n this._focused = this.wrapper;\n this._prevent = false;\n this._toggle();\n },\n _editable: function (options) {\n var that = this;\n var element = that.element;\n var disable = options.disable;\n var readonly = options.readonly;\n var wrapper = that.wrapper.add(that.filterInput).off(ns);\n var dropDownWrapper = that._inputWrapper.off(HOVEREVENTS);\n if (!readonly && !disable) {\n element.removeAttr(DISABLED).removeAttr(READONLY);\n dropDownWrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n wrapper.attr(TABINDEX, wrapper.data(TABINDEX)).attr(ARIA_DISABLED, false).on('keydown' + ns, proxy(that._keydown, that)).on(kendo.support.mousedown + ns, proxy(that._wrapperMousedown, that)).on('paste' + ns, proxy(that._filterPaste, that));\n that.wrapper.on('click' + ns, proxy(that._wrapperClick, that));\n if (!that.filterInput) {\n wrapper.on('keypress' + ns, proxy(that._keypress, that));\n } else {\n wrapper.on('input' + ns, proxy(that._search, that));\n }\n } else if (disable) {\n wrapper.removeAttr(TABINDEX);\n dropDownWrapper.addClass(STATEDISABLED).removeClass(DEFAULT);\n } else {\n dropDownWrapper.addClass(DEFAULT).removeClass(STATEDISABLED);\n }\n element.attr(DISABLED, disable).attr(READONLY, readonly);\n wrapper.attr(ARIA_DISABLED, disable);\n },\n _keydown: function (e) {\n var that = this;\n var key = e.keyCode;\n var altKey = e.altKey;\n var isInputActive;\n var handled;\n var isPopupVisible = that.popup.visible();\n if (that.filterInput) {\n isInputActive = that.filterInput[0] === activeElement();\n }\n if (key === keys.LEFT) {\n key = keys.UP;\n handled = true;\n } else if (key === keys.RIGHT) {\n key = keys.DOWN;\n handled = true;\n }\n if (handled && isInputActive) {\n return;\n }\n e.keyCode = key;\n if (altKey && key === keys.UP || key === keys.ESC) {\n that._focusElement(that.wrapper);\n }\n if (that._state === STATE_FILTER && key === keys.ESC) {\n that._clearFilter();\n that._open = false;\n that._state = STATE_ACCEPT;\n }\n if (key === keys.ENTER && that._typingTimeout && that.filterInput && isPopupVisible) {\n e.preventDefault();\n return;\n }\n if (key === keys.SPACEBAR && !isInputActive) {\n that.toggle(!isPopupVisible);\n e.preventDefault();\n }\n handled = that._move(e);\n if (handled) {\n return;\n }\n if (!isPopupVisible || !that.filterInput) {\n var current = that._focus();\n if (key === keys.HOME) {\n handled = true;\n that._firstItem();\n } else if (key === keys.END) {\n handled = true;\n that._lastItem();\n }\n if (handled) {\n if (that.trigger('select', {\n dataItem: that._getElementDataItem(that._focus()),\n item: that._focus()\n })) {\n that._focus(current);\n return;\n }\n that._select(that._focus(), true).done(function () {\n if (!isPopupVisible) {\n that._blur();\n }\n });\n e.preventDefault();\n }\n }\n if (!altKey && !handled && that.filterInput) {\n that._search();\n }\n },\n _matchText: function (text, word) {\n var ignoreCase = this.options.ignoreCase;\n if (text === undefined || text === null) {\n return false;\n }\n text = text + '';\n if (ignoreCase) {\n text = text.toLowerCase();\n }\n return text.indexOf(word) === 0;\n },\n _shuffleData: function (data, splitIndex) {\n var optionDataItem = this._optionLabelDataItem();\n if (optionDataItem) {\n data = [optionDataItem].concat(data);\n }\n return data.slice(splitIndex).concat(data.slice(0, splitIndex));\n },\n _selectNext: function () {\n var that = this;\n var data = that.dataSource.flatView();\n var dataLength = data.length + (that.hasOptionLabel() ? 1 : 0);\n var isInLoop = sameCharsOnly(that._word, that._last);\n var startIndex = that.selectedIndex;\n var oldFocusedItem;\n var text;\n if (startIndex === -1) {\n startIndex = 0;\n } else {\n startIndex += isInLoop ? 1 : 0;\n startIndex = normalizeIndex(startIndex, dataLength);\n }\n data = data.toJSON ? data.toJSON() : data.slice();\n data = that._shuffleData(data, startIndex);\n for (var idx = 0; idx < dataLength; idx++) {\n text = that._text(data[idx]);\n if (isInLoop && that._matchText(text, that._last)) {\n break;\n } else if (that._matchText(text, that._word)) {\n break;\n }\n }\n if (idx !== dataLength) {\n oldFocusedItem = that._focus();\n that._select(normalizeIndex(startIndex + idx, dataLength)).done(function () {\n var done = function () {\n if (!that.popup.visible()) {\n that._change();\n }\n };\n if (that.trigger('select', {\n dataItem: that._getElementDataItem(that._focus()),\n item: that._focus()\n })) {\n that._select(oldFocusedItem).done(done);\n } else {\n done();\n }\n });\n }\n },\n _keypress: function (e) {\n var that = this;\n if (e.which === 0 || e.keyCode === kendo.keys.ENTER) {\n return;\n }\n var character = String.fromCharCode(e.charCode || e.keyCode);\n if (that.options.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === ' ') {\n e.preventDefault();\n }\n that._word += character;\n that._last = character;\n that._search();\n },\n _popupOpen: function () {\n var popup = this.popup;\n popup.wrapper = kendo.wrap(popup.element);\n if (popup.element.closest('.km-root')[0]) {\n popup.wrapper.addClass('km-popup km-widget');\n this.wrapper.addClass('km-widget');\n }\n },\n _popup: function () {\n Select.fn._popup.call(this);\n this.popup.one('open', proxy(this._popupOpen, this));\n },\n _getElementDataItem: function (element) {\n if (!element || !element[0]) {\n return null;\n }\n if (element[0] === this.optionLabel[0]) {\n return this._optionLabelDataItem();\n }\n return this.listView.dataItemByIndex(this.listView.getElementIndex(element));\n },\n _click: function (e) {\n var that = this;\n var item = e.item || $(e.currentTarget);\n e.preventDefault();\n if (that.trigger('select', {\n dataItem: that._getElementDataItem(item),\n item: item\n })) {\n that.close();\n return;\n }\n that._userTriggered = true;\n that._select(item).done(function () {\n that._focusElement(that.wrapper);\n that._blur();\n });\n },\n _focusElement: function (element) {\n var active = activeElement();\n var wrapper = this.wrapper;\n var filterInput = this.filterInput;\n var compareElement = element === filterInput ? wrapper : filterInput;\n var touchEnabled = support.mobileOS && (support.touch || support.MSPointers || support.pointers);\n if (filterInput && filterInput[0] === element[0] && touchEnabled) {\n return;\n }\n if (filterInput && (compareElement[0] === active || this._focusFilter)) {\n this._focusFilter = false;\n this._prevent = true;\n this._focused = element.focus();\n }\n },\n _searchByWord: function (word) {\n if (!word) {\n return;\n }\n var that = this;\n var ignoreCase = that.options.ignoreCase;\n if (ignoreCase) {\n word = word.toLowerCase();\n }\n that._select(function (dataItem) {\n return that._matchText(that._text(dataItem), word);\n });\n },\n _inputValue: function () {\n return this.text();\n },\n _search: function () {\n var that = this;\n var dataSource = that.dataSource;\n clearTimeout(that._typingTimeout);\n if (that._isFilterEnabled()) {\n that._typingTimeout = setTimeout(function () {\n var value = that.filterInput.val();\n if (that._prev !== value) {\n that._prev = value;\n that.search(value);\n that._resizeFilterInput();\n }\n that._typingTimeout = null;\n }, that.options.delay);\n } else {\n that._typingTimeout = setTimeout(function () {\n that._word = '';\n }, that.options.delay);\n if (!that.listView.bound()) {\n dataSource.fetch().done(function () {\n that._selectNext();\n });\n return;\n }\n that._selectNext();\n }\n },\n _get: function (candidate) {\n var data, found, idx;\n var isFunction = typeof candidate === 'function';\n var jQueryCandidate = !isFunction ? $(candidate) : $();\n if (this.hasOptionLabel()) {\n if (typeof candidate === 'number') {\n if (candidate > -1) {\n candidate -= 1;\n }\n } else if (jQueryCandidate.hasClass('k-list-optionlabel')) {\n candidate = -1;\n }\n }\n if (isFunction) {\n data = this.dataSource.flatView();\n for (idx = 0; idx < data.length; idx++) {\n if (candidate(data[idx])) {\n candidate = idx;\n found = true;\n break;\n }\n }\n if (!found) {\n candidate = -1;\n }\n }\n return candidate;\n },\n _firstItem: function () {\n if (this.hasOptionLabel()) {\n this._focus(this.optionLabel);\n } else {\n this.listView.focusFirst();\n }\n },\n _lastItem: function () {\n this._resetOptionLabel();\n this.listView.focusLast();\n },\n _nextItem: function () {\n if (this.optionLabel.hasClass('k-state-focused')) {\n this._resetOptionLabel();\n this.listView.focusFirst();\n } else {\n this.listView.focusNext();\n }\n },\n _prevItem: function () {\n if (this.optionLabel.hasClass('k-state-focused')) {\n return;\n }\n this.listView.focusPrev();\n if (!this.listView.focus()) {\n this._focus(this.optionLabel);\n }\n },\n _focusItem: function () {\n var options = this.options;\n var listView = this.listView;\n var focusedItem = listView.focus();\n var index = listView.select();\n index = index[index.length - 1];\n if (index === undefined && options.highlightFirst && !focusedItem) {\n index = 0;\n }\n if (index !== undefined) {\n listView.focus(index);\n } else {\n if (options.optionLabel && (!options.virtual || options.virtual.mapValueTo !== 'dataItem')) {\n this._focus(this.optionLabel);\n this._select(this.optionLabel);\n this.listView.content.scrollTop(0);\n } else {\n listView.scrollToIndex(0);\n }\n }\n },\n _resetOptionLabel: function (additionalClass) {\n this.optionLabel.removeClass('k-state-focused' + (additionalClass || '')).removeAttr('id');\n },\n _focus: function (candidate) {\n var listView = this.listView;\n var optionLabel = this.optionLabel;\n if (candidate === undefined) {\n candidate = listView.focus();\n if (!candidate && optionLabel.hasClass('k-state-focused')) {\n candidate = optionLabel;\n }\n return candidate;\n }\n this._resetOptionLabel();\n candidate = this._get(candidate);\n listView.focus(candidate);\n if (candidate === -1) {\n optionLabel.addClass('k-state-focused').attr('id', listView._optionID);\n this._focused.add(this.filterInput).removeAttr('aria-activedescendant').attr('aria-activedescendant', listView._optionID);\n }\n },\n _select: function (candidate, keepState) {\n var that = this;\n candidate = that._get(candidate);\n return that.listView.select(candidate).done(function () {\n if (!keepState && that._state === STATE_FILTER) {\n that._state = STATE_ACCEPT;\n }\n if (candidate === -1) {\n that._selectValue(null);\n }\n });\n },\n _selectValue: function (dataItem) {\n var that = this;\n var optionLabel = that.options.optionLabel;\n var idx = that.listView.select();\n var value = '';\n var text = '';\n idx = idx[idx.length - 1];\n if (idx === undefined) {\n idx = -1;\n }\n this._resetOptionLabel(' k-state-selected');\n if (dataItem || dataItem === 0) {\n text = dataItem;\n value = that._dataValue(dataItem);\n if (optionLabel) {\n idx += 1;\n }\n } else if (optionLabel) {\n that._focus(that.optionLabel.addClass('k-state-selected'));\n text = that._optionLabelText();\n if (typeof optionLabel === 'string') {\n value = '';\n } else {\n value = that._value(optionLabel);\n }\n idx = 0;\n }\n that.selectedIndex = idx;\n if (value === null) {\n value = '';\n }\n that._textAccessor(text);\n that._accessor(value, idx);\n that._triggerCascade();\n },\n _mobile: function () {\n var that = this, popup = that.popup, mobileOS = support.mobileOS, root = popup.element.parents('.km-root').eq(0);\n if (root.length && mobileOS) {\n popup.options.animation.open.effects = mobileOS.android || mobileOS.meego ? 'fadeIn' : mobileOS.ios || mobileOS.wp ? 'slideIn:up' : popup.options.animation.open.effects;\n }\n },\n _filterHeader: function () {\n var icon;\n if (this.filterInput) {\n this.filterInput.off(ns).parent().remove();\n this.filterInput = null;\n }\n if (this._isFilterEnabled()) {\n icon = '<span class=\"k-icon k-i-zoom\"></span>';\n this.filterInput = $('<input class=\"k-textbox\"/>').attr({\n placeholder: this.element.attr('placeholder'),\n title: this.element.attr('title'),\n role: 'listbox',\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n this.list.prepend($('<span class=\"k-list-filter\" />').append(this.filterInput.add(icon)));\n }\n },\n _span: function () {\n var that = this, wrapper = that.wrapper, SELECTOR = 'span.k-input', span;\n span = wrapper.find(SELECTOR);\n if (!span[0]) {\n wrapper.append('<span unselectable=\"on\" class=\"k-dropdown-wrap k-state-default\"><span unselectable=\"on\" class=\"k-input\"> </span><span unselectable=\"on\" class=\"k-select\" aria-label=\"select\"><span class=\"k-icon k-i-arrow-60-down\"></span></span></span>').append(that.element);\n span = wrapper.find(SELECTOR);\n }\n that.span = span;\n that._inputWrapper = $(wrapper[0].firstChild);\n that._arrow = wrapper.find('.k-select');\n that._arrowIcon = that._arrow.find('.k-icon');\n },\n _wrapper: function () {\n var that = this, element = that.element, DOMelement = element[0], wrapper;\n wrapper = element.parent();\n if (!wrapper.is('span.k-widget')) {\n wrapper = element.wrap('<span />').parent();\n wrapper[0].style.cssText = DOMelement.style.cssText;\n wrapper[0].title = DOMelement.title;\n }\n that._focused = that.wrapper = wrapper.addClass('k-widget k-dropdown').addClass(DOMelement.className).css('display', '').attr({\n accesskey: element.attr('accesskey'),\n unselectable: 'on',\n role: 'listbox',\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n element.hide().removeAttr('accesskey');\n },\n _clearSelection: function (parent) {\n this.select(parent.value() ? 0 : -1);\n },\n _inputTemplate: function () {\n var that = this, template = that.options.valueTemplate;\n if (!template) {\n template = $.proxy(kendo.template('#:this._text(data)#', { useWithBlock: false }), that);\n } else {\n template = kendo.template(template);\n }\n that.valueTemplate = template;\n if (that.hasOptionLabel() && !that.options.optionLabelTemplate) {\n try {\n that.valueTemplate(that._optionLabelDataItem());\n } catch (e) {\n throw new Error(MSG_INVALID_OPTION_LABEL);\n }\n }\n },\n _textAccessor: function (text) {\n var dataItem = null;\n var template = this.valueTemplate;\n var optionLabelText = this._optionLabelText();\n var span = this.span;\n if (text === undefined) {\n return span.text();\n }\n if ($.isPlainObject(text) || text instanceof ObservableObject) {\n dataItem = text;\n } else if (optionLabelText && optionLabelText === text) {\n dataItem = this.options.optionLabel;\n }\n if (!dataItem) {\n dataItem = this._assignInstance(text, this._accessor());\n }\n if (this.hasOptionLabel()) {\n if (dataItem === optionLabelText || this._text(dataItem) === optionLabelText) {\n template = this.optionLabelTemplate;\n if (typeof this.options.optionLabel === 'string' && !this.options.optionLabelTemplate) {\n dataItem = optionLabelText;\n }\n }\n }\n var getElements = function () {\n return {\n elements: span.get(),\n data: [{ dataItem: dataItem }]\n };\n };\n this.angular('cleanup', getElements);\n try {\n span.html(template(dataItem));\n } catch (e) {\n span.html('');\n }\n this.angular('compile', getElements);\n },\n _preselect: function (value, text) {\n if (!value && !text) {\n text = this._optionLabelText();\n }\n this._accessor(value);\n this._textAccessor(text);\n this._old = this._accessor();\n this._oldIndex = this.selectedIndex;\n this.listView.setValue(value);\n this._initialIndex = null;\n this._presetValue = true;\n },\n _assignInstance: function (text, value) {\n var dataTextField = this.options.dataTextField;\n var dataItem = {};\n if (dataTextField) {\n assign(dataItem, dataTextField.split('.'), text);\n assign(dataItem, this.options.dataValueField.split('.'), value);\n dataItem = new ObservableObject(dataItem);\n } else {\n dataItem = text;\n }\n return dataItem;\n }\n });\n function assign(instance, fields, value) {\n var idx = 0, lastIndex = fields.length - 1, field;\n for (; idx < lastIndex; ++idx) {\n field = fields[idx];\n if (!(field in instance)) {\n instance[field] = {};\n }\n instance = instance[field];\n }\n instance[fields[lastIndex]] = value;\n }\n function normalizeIndex(index, length) {\n if (index >= length) {\n index -= length;\n }\n return index;\n }\n function sameCharsOnly(word, character) {\n for (var idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n }\n ui.plugin(DropDownList);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.treeview.draganddrop', [\n 'kendo.data',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'treeview.draganddrop',\n name: 'Hierarchical Drag & Drop',\n category: 'framework',\n depends: [\n 'core',\n 'draganddrop'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo;\n var ui = kendo.ui;\n var proxy = $.proxy;\n var extend = $.extend;\n var VISIBILITY = 'visibility';\n var KSTATEHOVER = 'k-state-hover';\n var INPUTSELECTOR = 'input,a:not(.k-in),textarea,.k-multiselect-wrap,select,button,a.k-button>.k-icon,button.k-button>.k-icon,span.k-icon.k-i-arrow-60-right,span.k-icon.k-i-arrow-45-down-right';\n ui.HierarchicalDragAndDrop = kendo.Class.extend({\n init: function (element, options) {\n this.element = element;\n this.hovered = element;\n this.options = extend({\n dragstart: $.noop,\n drag: $.noop,\n drop: $.noop,\n dragend: $.noop\n }, options);\n this._draggable = new ui.Draggable(element, {\n ignore: INPUTSELECTOR,\n filter: options.filter,\n autoScroll: options.autoScroll,\n cursorOffset: {\n left: 10,\n top: kendo.support.mobileOS ? -40 / kendo.support.zoomLevel() : 10\n },\n hint: proxy(this._hint, this),\n dragstart: proxy(this.dragstart, this),\n dragcancel: proxy(this.dragcancel, this),\n drag: proxy(this.drag, this),\n dragend: proxy(this.dragend, this),\n $angular: options.$angular\n });\n },\n _hint: function (element) {\n return '<div class=\\'k-header k-drag-clue\\'>' + '<span class=\\'k-icon k-drag-status\\' />' + this.options.hintText(element) + '</div>';\n },\n _removeTouchHover: function () {\n if (kendo.support.touch && this.hovered) {\n this.hovered.find('.' + KSTATEHOVER).removeClass(KSTATEHOVER);\n this.hovered = false;\n }\n },\n _hintStatus: function (newStatus) {\n var statusElement = this._draggable.hint.find('.k-drag-status')[0];\n if (newStatus) {\n statusElement.className = 'k-icon k-drag-status ' + newStatus;\n } else {\n return $.trim(statusElement.className.replace(/(p|k)-(icon|drag-status)/g, ''));\n }\n },\n dragstart: function (e) {\n this.source = e.currentTarget.closest(this.options.itemSelector);\n if (this.options.dragstart(this.source)) {\n e.preventDefault();\n }\n if (this.options.reorderable) {\n this.dropHint = $('<div class=\\'k-icon k-i-drag-and-drop\\' />').css(VISIBILITY, 'hidden').appendTo(this.element);\n } else {\n this.dropHint = $();\n }\n },\n drag: function (e) {\n var options = this.options;\n var source = this.source;\n var target = this.dropTarget = $(kendo.eventTarget(e));\n var container = target.closest(options.allowedContainers);\n var hoveredItem, itemHeight, itemTop, itemContent, delta;\n var insertOnTop, insertOnBottom, addChild;\n var itemData, position, status;\n if (!container.length) {\n status = 'k-i-cancel';\n this._removeTouchHover();\n } else if (source[0] == target[0] || options.contains(source[0], target[0])) {\n status = 'k-i-cancel';\n } else {\n status = 'k-i-insert-middle';\n itemData = options.itemFromTarget(target);\n hoveredItem = itemData.item;\n if (hoveredItem.length) {\n this._removeTouchHover();\n itemHeight = kendo._outerHeight(hoveredItem);\n itemContent = itemData.content;\n if (options.reorderable) {\n delta = itemHeight / (itemContent.length > 0 ? 4 : 2);\n itemTop = kendo.getOffset(hoveredItem).top;\n insertOnTop = e.y.location < itemTop + delta;\n insertOnBottom = itemTop + itemHeight - delta < e.y.location;\n addChild = itemContent.length && !insertOnTop && !insertOnBottom;\n } else {\n addChild = true;\n insertOnTop = false;\n insertOnBottom = false;\n }\n this.hovered = addChild ? container : false;\n this.dropHint.css(VISIBILITY, addChild ? 'hidden' : 'visible');\n if (this._lastHover && this._lastHover[0] != itemContent[0]) {\n this._lastHover.removeClass(KSTATEHOVER);\n }\n this._lastHover = itemContent.toggleClass(KSTATEHOVER, addChild);\n if (addChild) {\n status = 'k-i-plus';\n } else {\n position = hoveredItem.position();\n position.top += insertOnTop ? 0 : itemHeight;\n this.dropHint.css(position)[insertOnTop ? 'prependTo' : 'appendTo'](options.dropHintContainer(hoveredItem));\n if (insertOnTop && itemData.first) {\n status = 'k-i-insert-up';\n }\n if (insertOnBottom && itemData.last) {\n status = 'k-i-insert-down';\n }\n }\n } else if (target[0] != this.dropHint[0]) {\n if (this._lastHover) {\n this._lastHover.removeClass(KSTATEHOVER);\n }\n if (!$.contains(this.element[0], container[0])) {\n status = 'k-i-plus';\n } else {\n status = 'k-i-cancel';\n }\n }\n }\n this.options.drag({\n originalEvent: e.originalEvent,\n source: source,\n target: target,\n pageY: e.y.location,\n pageX: e.x.location,\n status: status.substring(2),\n setStatus: function (value) {\n status = value;\n }\n });\n if (status.indexOf('k-i-insert') !== 0) {\n this.dropHint.css(VISIBILITY, 'hidden');\n }\n this._hintStatus(status);\n },\n dragcancel: function () {\n this.dropHint.remove();\n },\n dragend: function (e) {\n var position = 'over', source = this.source, destination, dropHint = this.dropHint, dropTarget = this.dropTarget, eventArgs, dropPrevented;\n if (dropHint.css(VISIBILITY) == 'visible') {\n position = this.options.dropPositionFrom(dropHint);\n destination = dropHint.closest(this.options.itemSelector);\n } else if (dropTarget) {\n destination = dropTarget.closest(this.options.itemSelector);\n if (!destination.length) {\n destination = dropTarget.closest(this.options.allowedContainers);\n }\n }\n eventArgs = {\n originalEvent: e.originalEvent,\n source: source[0],\n destination: destination[0],\n valid: this._hintStatus() != 'k-i-cancel',\n setValid: function (newValid) {\n this.valid = newValid;\n },\n dropTarget: dropTarget[0],\n position: position\n };\n dropPrevented = this.options.drop(eventArgs);\n dropHint.remove();\n this._removeTouchHover();\n if (this._lastHover) {\n this._lastHover.removeClass(KSTATEHOVER);\n }\n if (!eventArgs.valid || dropPrevented) {\n this._draggable.dropped = eventArgs.valid;\n return;\n }\n this._draggable.dropped = true;\n this.options.dragend({\n originalEvent: e.originalEvent,\n source: source,\n destination: destination,\n position: position\n });\n },\n destroy: function () {\n this._lastHover = this.hovered = null;\n this._draggable.destroy();\n }\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.treeview', [\n 'kendo.data',\n 'kendo.treeview.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'treeview',\n name: 'TreeView',\n category: 'web',\n description: 'The TreeView widget displays hierarchical data in a traditional tree structure,with support for interactive drag-and-drop operations.',\n depends: ['data'],\n features: [{\n id: 'treeview-dragging',\n name: 'Drag & Drop',\n description: 'Support for drag & drop',\n depends: ['treeview.draganddrop']\n }]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, data = kendo.data, extend = $.extend, template = kendo.template, isArray = $.isArray, Widget = ui.Widget, HierarchicalDataSource = data.HierarchicalDataSource, proxy = $.proxy, keys = kendo.keys, NS = '.kendoTreeView', TEMP_NS = '.kendoTreeViewTemp', SELECT = 'select', CHECK = 'check', NAVIGATE = 'navigate', EXPAND = 'expand', CHANGE = 'change', ERROR = 'error', CHECKED = 'checked', INDETERMINATE = 'indeterminate', COLLAPSE = 'collapse', DRAGSTART = 'dragstart', DRAG = 'drag', DROP = 'drop', DRAGEND = 'dragend', DATABOUND = 'dataBound', CLICK = 'click', UNDEFINED = 'undefined', KSTATEHOVER = 'k-state-hover', KTREEVIEW = 'k-treeview', VISIBLE = ':visible', NODE = '.k-item', STRING = 'string', ARIACHECKED = 'aria-checked', ARIASELECTED = 'aria-selected', ARIADISABLED = 'aria-disabled', DISABLED = 'k-state-disabled', TreeView, subGroup, nodeContents, nodeIcon, spriteRe, bindings = {\n text: 'dataTextField',\n url: 'dataUrlField',\n spriteCssClass: 'dataSpriteCssClassField',\n imageUrl: 'dataImageUrlField'\n }, isJQueryInstance = function (obj) {\n return obj instanceof kendo.jQuery || window.jQuery && obj instanceof window.jQuery;\n }, isDomElement = function (o) {\n return typeof HTMLElement === 'object' ? o instanceof HTMLElement : o && typeof o === 'object' && o.nodeType === 1 && typeof o.nodeName === STRING;\n };\n function contentChild(filter) {\n return function (node) {\n var result = node.children('.k-animation-container');\n if (!result.length) {\n result = node;\n }\n return result.children(filter);\n };\n }\n function templateNoWith(code) {\n return kendo.template(code, { useWithBlock: false });\n }\n subGroup = contentChild('.k-group');\n nodeContents = contentChild('.k-group,.k-content');\n nodeIcon = function (node) {\n return node.children('div').children('.k-icon');\n };\n function checkboxes(node) {\n return node.find('.k-checkbox-wrapper:first input[type=checkbox]');\n }\n function insertAction(indexOffset) {\n return function (nodeData, referenceNode) {\n referenceNode = referenceNode.closest(NODE);\n var group = referenceNode.parent(), parentNode;\n if (group.parent().is('li')) {\n parentNode = group.parent();\n }\n return this._dataSourceMove(nodeData, group, parentNode, function (dataSource, model) {\n var referenceItem = this.dataItem(referenceNode);\n var referenceNodeIndex = referenceItem ? referenceItem.parent().indexOf(referenceItem) : referenceNode.index();\n return this._insert(dataSource.data(), model, referenceNodeIndex + indexOffset);\n });\n };\n }\n spriteRe = /k-sprite/;\n function moveContents(node, container) {\n var tmp;\n while (node && node.nodeName.toLowerCase() != 'ul') {\n tmp = node;\n node = node.nextSibling;\n if (tmp.nodeType == 3) {\n tmp.nodeValue = $.trim(tmp.nodeValue);\n }\n if (spriteRe.test(tmp.className)) {\n container.insertBefore(tmp, container.firstChild);\n } else {\n container.appendChild(tmp);\n }\n }\n }\n function updateNodeHtml(node) {\n var wrapper = node.children('div'), group = node.children('ul'), toggleButton = wrapper.children('.k-icon'), checkbox = node.children('input[type=checkbox]'), innerWrapper = wrapper.children('.k-in');\n if (node.hasClass('k-treeview')) {\n return;\n }\n if (!wrapper.length) {\n wrapper = $('<div />').prependTo(node);\n }\n if (!toggleButton.length && group.length) {\n toggleButton = $('<span class=\\'k-icon\\' />').prependTo(wrapper);\n } else if (!group.length || !group.children().length) {\n toggleButton.remove();\n group.remove();\n }\n if (checkbox.length) {\n $('<span class=\\'k-checkbox-wrapper\\' />').appendTo(wrapper).append(checkbox);\n }\n if (!innerWrapper.length) {\n innerWrapper = node.children('a').eq(0).addClass('k-in k-link');\n if (!innerWrapper.length) {\n innerWrapper = $('<span class=\\'k-in\\' />');\n }\n innerWrapper.appendTo(wrapper);\n if (wrapper.length) {\n moveContents(wrapper[0].nextSibling, innerWrapper[0]);\n }\n }\n }\n TreeView = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n var that = this, inferred = false, hasDataSource = options && !!options.dataSource, list;\n if (isArray(options)) {\n options = { dataSource: options };\n }\n if (options && typeof options.loadOnDemand == UNDEFINED && isArray(options.dataSource)) {\n options.loadOnDemand = false;\n }\n Widget.prototype.init.call(that, element, options);\n element = that.element;\n options = that.options;\n that._dataSourceUids = {};\n list = element.is('ul') && element || element.hasClass(KTREEVIEW) && element.children('ul');\n inferred = !hasDataSource && list.length;\n if (inferred) {\n options.dataSource.list = list;\n }\n that._animation();\n that._accessors();\n that._templates();\n if (!element.hasClass(KTREEVIEW)) {\n that._wrapper();\n if (list) {\n that.root = element;\n that._group(that.wrapper);\n }\n } else {\n that.wrapper = element;\n that.root = element.children('ul').eq(0);\n }\n that._tabindex();\n that.wrapper.attr('role', 'tree');\n that._dataSource(inferred);\n that._attachEvents();\n that._dragging();\n if (!inferred) {\n if (options.autoBind) {\n that._progress(true);\n that.dataSource.fetch();\n }\n } else {\n that._syncHtmlAndDataSource();\n }\n if (options.checkboxes && options.checkboxes.checkChildren) {\n that.updateIndeterminate();\n }\n if (that.element[0].id) {\n that._ariaId = kendo.format('{0}_tv_active', that.element[0].id);\n }\n kendo.notify(that);\n },\n _attachEvents: function () {\n var that = this, clickableItems = '.k-in:not(.k-state-selected,.k-state-disabled)', MOUSEENTER = 'mouseenter';\n that.wrapper.on(MOUSEENTER + NS, '.k-in.k-state-selected', function (e) {\n e.preventDefault();\n }).on(MOUSEENTER + NS, clickableItems, function () {\n $(this).addClass(KSTATEHOVER);\n }).on('mouseleave' + NS, clickableItems, function () {\n $(this).removeClass(KSTATEHOVER);\n }).on(CLICK + NS, clickableItems, proxy(that._click, that)).on('dblclick' + NS, '.k-in:not(.k-state-disabled)', proxy(that._toggleButtonClick, that)).on(CLICK + NS, '.k-i-expand,.k-i-collapse', proxy(that._toggleButtonClick, that)).on('keydown' + NS, proxy(that._keydown, that)).on('keypress' + NS, proxy(that._keypress, that)).on('focus' + NS, proxy(that._focus, that)).on('blur' + NS, proxy(that._blur, that)).on('mousedown' + NS, '.k-in,.k-checkbox-wrapper :checkbox,.k-i-expand,.k-i-collapse', proxy(that._mousedown, that)).on('change' + NS, '.k-checkbox-wrapper :checkbox', proxy(that._checkboxChange, that)).on('click' + NS, '.checkbox-span', proxy(that._checkboxLabelClick, that)).on('click' + NS, '.k-request-retry', proxy(that._retryRequest, that)).on('click' + NS, '.k-link.k-state-disabled', function (e) {\n e.preventDefault();\n }).on('click' + NS, function (e) {\n var target = $(e.target);\n if (!target.is(':kendoFocusable') && !target.find('input,select,textarea,button,object').is(':kendoFocusable')) {\n that.focus();\n }\n });\n },\n _checkboxLabelClick: function (e) {\n var checkbox = $(e.target.previousSibling);\n if (checkbox.is('[disabled]')) {\n return;\n }\n checkbox.prop('checked', !checkbox.prop('checked'));\n checkbox.trigger('change');\n },\n _syncHtmlAndDataSource: function (root, dataSource) {\n root = root || this.root;\n dataSource = dataSource || this.dataSource;\n var data = dataSource.view(), uidAttr = kendo.attr('uid'), expandedAttr = kendo.attr('expanded'), checkboxesEnabled = this.options.checkboxes, items = root.children('li'), i, item, dataItem, uid, itemCheckbox;\n for (i = 0; i < items.length; i++) {\n dataItem = data[i];\n uid = dataItem.uid;\n item = items.eq(i);\n item.attr('role', 'treeitem').attr(uidAttr, uid).attr(ARIASELECTED, item.hasClass('k-state-selected'));\n dataItem.expanded = item.attr(expandedAttr) === 'true';\n if (checkboxesEnabled) {\n itemCheckbox = checkboxes(item);\n dataItem.checked = itemCheckbox.prop(CHECKED);\n itemCheckbox.attr('id', '_' + uid);\n itemCheckbox.next('.k-checkbox-label').attr('for', '_' + uid);\n }\n this._syncHtmlAndDataSource(item.children('ul'), dataItem.children);\n }\n },\n _animation: function () {\n var options = this.options, animationOptions = options.animation, hasCollapseAnimation = animationOptions.collapse && 'effects' in animationOptions.collapse, collapse = extend({}, animationOptions.expand, animationOptions.collapse);\n if (!hasCollapseAnimation) {\n collapse = extend(collapse, { reverse: true });\n }\n if (animationOptions === false) {\n animationOptions = {\n expand: { effects: {} },\n collapse: {\n hide: true,\n effects: {}\n }\n };\n }\n animationOptions.collapse = extend(collapse, { hide: true });\n options.animation = animationOptions;\n },\n _dragging: function () {\n var enabled = this.options.dragAndDrop;\n var dragging = this.dragging;\n if (enabled && !dragging) {\n var widget = this;\n this.dragging = new ui.HierarchicalDragAndDrop(this.element, {\n reorderable: true,\n $angular: this.options.$angular,\n autoScroll: this.options.autoScroll,\n filter: 'div:not(.k-state-disabled) .k-in',\n allowedContainers: '.k-treeview',\n itemSelector: '.k-treeview .k-item',\n hintText: proxy(this._hintText, this),\n contains: function (source, destination) {\n return $.contains(source, destination);\n },\n dropHintContainer: function (item) {\n return item;\n },\n itemFromTarget: function (target) {\n var item = target.closest('.k-top,.k-mid,.k-bot');\n return {\n item: item,\n content: target.closest('.k-in'),\n first: item.hasClass('k-top'),\n last: item.hasClass('k-bot')\n };\n },\n dropPositionFrom: function (dropHint) {\n return dropHint.prevAll('.k-in').length > 0 ? 'after' : 'before';\n },\n dragstart: function (source) {\n return widget.trigger(DRAGSTART, { sourceNode: source[0] });\n },\n drag: function (options) {\n widget.trigger(DRAG, {\n originalEvent: options.originalEvent,\n sourceNode: options.source[0],\n dropTarget: options.target[0],\n pageY: options.pageY,\n pageX: options.pageX,\n statusClass: options.status,\n setStatusClass: options.setStatus\n });\n },\n drop: function (options) {\n var dropTarget = $(options.dropTarget);\n var navigationTarget = dropTarget.closest('a');\n if (navigationTarget && navigationTarget.attr('href')) {\n widget._tempPreventNavigation(navigationTarget);\n }\n return widget.trigger(DROP, {\n originalEvent: options.originalEvent,\n sourceNode: options.source,\n destinationNode: options.destination,\n valid: options.valid,\n setValid: function (state) {\n this.valid = state;\n options.setValid(state);\n },\n dropTarget: options.dropTarget,\n dropPosition: options.position\n });\n },\n dragend: function (options) {\n var source = options.source;\n var destination = options.destination;\n var position = options.position;\n function triggerDragEnd(source) {\n if (widget.options.checkboxes && widget.options.checkboxes.checkChildren) {\n widget.updateIndeterminate();\n }\n widget.trigger(DRAGEND, {\n originalEvent: options.originalEvent,\n sourceNode: source && source[0],\n destinationNode: destination[0],\n dropPosition: position\n });\n }\n if (position == 'over') {\n widget.append(source, destination, triggerDragEnd);\n } else {\n if (position == 'before') {\n source = widget.insertBefore(source, destination);\n } else if (position == 'after') {\n source = widget.insertAfter(source, destination);\n }\n triggerDragEnd(source);\n }\n }\n });\n } else if (!enabled && dragging) {\n dragging.destroy();\n this.dragging = null;\n }\n },\n _tempPreventNavigation: function (node) {\n node.on(CLICK + NS + TEMP_NS, function (ev) {\n ev.preventDefault();\n node.off(CLICK + NS + TEMP_NS);\n });\n },\n _hintText: function (node) {\n return this.templates.dragClue({\n item: this.dataItem(node),\n treeview: this.options\n });\n },\n _templates: function () {\n var that = this, options = that.options, fieldAccessor = proxy(that._fieldAccessor, that);\n if (options.template && typeof options.template == STRING) {\n options.template = template(options.template);\n } else if (!options.template) {\n options.template = templateNoWith('# var text = ' + fieldAccessor('text') + '(data.item); #' + '# if (typeof data.item.encoded != \\'undefined\\' && data.item.encoded === false) {#' + '#= text #' + '# } else { #' + '#: text #' + '# } #');\n }\n that._checkboxes();\n that.templates = {\n setAttributes: function (item) {\n var result = '';\n var attributes = item.attr || {};\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr !== 'class') {\n result += attr + '=\"' + attributes[attr] + '\" ';\n }\n }\n return result;\n },\n wrapperCssClass: function (group, item) {\n var result = 'k-item', index = item.index;\n if (group.firstLevel && index === 0) {\n result += ' k-first';\n }\n if (index == group.length - 1) {\n result += ' k-last';\n }\n return result;\n },\n cssClass: function (group, item) {\n var result = '', index = item.index, groupLength = group.length - 1;\n if (group.firstLevel && index === 0) {\n result += 'k-top ';\n }\n if (index === 0 && index != groupLength) {\n result += 'k-top';\n } else if (index == groupLength) {\n result += 'k-bot';\n } else {\n result += 'k-mid';\n }\n return result;\n },\n textClass: function (item, isLink) {\n var result = 'k-in';\n if (isLink) {\n result += ' k-link';\n }\n if (item.enabled === false) {\n result += ' k-state-disabled';\n }\n if (item.selected === true) {\n result += ' k-state-selected';\n }\n return result;\n },\n toggleButtonClass: function (item) {\n var result = 'k-icon';\n if (item.expanded !== true) {\n result += ' k-i-expand';\n } else {\n result += ' k-i-collapse';\n }\n return result;\n },\n groupAttributes: function (group) {\n var attributes = '';\n if (!group.firstLevel) {\n attributes = 'role=\\'group\\'';\n }\n return attributes + (group.expanded !== true ? ' style=\\'display:none\\'' : '');\n },\n groupCssClass: function (group) {\n var cssClass = 'k-group';\n if (group.firstLevel) {\n cssClass += ' k-treeview-lines';\n }\n return cssClass;\n },\n dragClue: templateNoWith('#= data.treeview.template(data) #'),\n group: templateNoWith('<ul class=\\'#= data.r.groupCssClass(data.group) #\\'#= data.r.groupAttributes(data.group) #>' + '#= data.renderItems(data) #' + '</ul>'),\n itemContent: templateNoWith('# var imageUrl = ' + fieldAccessor('imageUrl') + '(data.item); #' + '# var spriteCssClass = ' + fieldAccessor('spriteCssClass') + '(data.item); #' + '# if (imageUrl) { #' + '<img class=\\'k-image\\' alt=\\'\\' src=\\'#= imageUrl #\\'>' + '# } #' + '# if (spriteCssClass) { #' + '<span class=\\'k-sprite #= spriteCssClass #\\' />' + '# } #' + '#= data.treeview.template(data) #'),\n itemElement: templateNoWith('# var item = data.item, r = data.r; #' + '# var url = ' + fieldAccessor('url') + '(item); #' + '<div class=\\'#= r.cssClass(data.group, item) #\\'>' + '# if (item.hasChildren) { #' + '<span class=\\'#= r.toggleButtonClass(item) #\\'/>' + '# } #' + '# if (data.treeview.checkboxes) { #' + '<span class=\\'k-checkbox-wrapper\\' role=\\'presentation\\'>' + '#= data.treeview.checkboxes.template(data) #' + '</span>' + '# } #' + '# var tag = url ? \\'a\\' : \\'span\\'; #' + '# var textAttr = url ? \\' href=\\\\\\'\\' + url + \\'\\\\\\'\\' : \\'\\'; #' + '<#=tag# class=\\'#= r.textClass(item, !!url) #\\'#= textAttr #>' + '#= r.itemContent(data) #' + '</#=tag#>' + '</div>'),\n item: templateNoWith('# var item = data.item, r = data.r; #' + '<li role=\\'treeitem\\' class=\\'#= r.wrapperCssClass(data.group, item) #\\'' + kendo.attr('uid') + '=\\'#= item.uid #\\' ' + '#= r.setAttributes(item.toJSON ? item.toJSON() : item) # ' + '# if (data.treeview.checkboxes) { #' + 'aria-checked=\\'#= item.checked ? \"true\" : \"false\" #\\' ' + '# } #' + 'aria-selected=\\'#= item.selected ? \"true\" : \"false\" #\\' ' + '#=item.enabled === false ? \"aria-disabled=\\'true\\'\" : \\'\\'#' + 'aria-expanded=\\'#= item.expanded ? \"true\" : \"false\" #\\' ' + 'data-expanded=\\'#= item.expanded ? \"true\" : \"false\" #\\' ' + '>' + '#= r.itemElement(data) #' + '</li>'),\n loading: templateNoWith('<div class=\\'k-icon k-i-loading\\' /> #: data.messages.loading #'),\n retry: templateNoWith('#: data.messages.requestFailed # ' + '<button class=\\'k-button k-request-retry\\'>#: data.messages.retry #</button>')\n };\n },\n items: function () {\n return this.element.find('.k-item > div:first-child');\n },\n setDataSource: function (dataSource) {\n var options = this.options;\n options.dataSource = dataSource;\n this._dataSourceUids = {};\n this._dataSource();\n if (options.checkboxes && options.checkboxes.checkChildren) {\n this.dataSource.one('change', $.proxy(this.updateIndeterminate, this, null));\n }\n if (this.options.autoBind) {\n this.dataSource.fetch();\n }\n },\n _bindDataSource: function () {\n this._refreshHandler = proxy(this.refresh, this);\n this._errorHandler = proxy(this._error, this);\n this.dataSource.bind(CHANGE, this._refreshHandler);\n this.dataSource.bind(ERROR, this._errorHandler);\n },\n _unbindDataSource: function () {\n var dataSource = this.dataSource;\n if (dataSource) {\n dataSource.unbind(CHANGE, this._refreshHandler);\n dataSource.unbind(ERROR, this._errorHandler);\n }\n },\n _dataSource: function (silentRead) {\n var that = this, options = that.options, dataSource = options.dataSource;\n function recursiveRead(data) {\n for (var i = 0; i < data.length; i++) {\n data[i]._initChildren();\n data[i].children.fetch();\n recursiveRead(data[i].children.view());\n }\n }\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n that._unbindDataSource();\n if (!dataSource.fields) {\n dataSource.fields = [\n { field: 'text' },\n { field: 'url' },\n { field: 'spriteCssClass' },\n { field: 'imageUrl' }\n ];\n }\n that.dataSource = dataSource = HierarchicalDataSource.create(dataSource);\n if (silentRead) {\n dataSource.fetch();\n recursiveRead(dataSource.view());\n }\n that._bindDataSource();\n },\n events: [\n DRAGSTART,\n DRAG,\n DROP,\n DRAGEND,\n DATABOUND,\n EXPAND,\n COLLAPSE,\n SELECT,\n CHANGE,\n NAVIGATE,\n CHECK\n ],\n options: {\n name: 'TreeView',\n dataSource: {},\n animation: {\n expand: {\n effects: 'expand:vertical',\n duration: 200\n },\n collapse: { duration: 100 }\n },\n messages: {\n loading: 'Loading...',\n requestFailed: 'Request failed.',\n retry: 'Retry'\n },\n dragAndDrop: false,\n checkboxes: false,\n autoBind: true,\n autoScroll: false,\n loadOnDemand: true,\n template: '',\n dataTextField: null\n },\n _accessors: function () {\n var that = this, options = that.options, i, field, textField, element = that.element;\n for (i in bindings) {\n field = options[bindings[i]];\n textField = element.attr(kendo.attr(i + '-field'));\n if (!field && textField) {\n field = textField;\n }\n if (!field) {\n field = i;\n }\n if (!isArray(field)) {\n field = [field];\n }\n options[bindings[i]] = field;\n }\n },\n _fieldAccessor: function (fieldName) {\n var fieldBindings = this.options[bindings[fieldName]], count = fieldBindings.length, result = '(function(item) {';\n if (count === 0) {\n result += 'return item[\\'' + fieldName + '\\'];';\n } else {\n result += 'var levels = [' + $.map(fieldBindings, function (x) {\n return 'function(d){ return ' + kendo.expr(x) + '}';\n }).join(',') + '];';\n result += 'return levels[Math.min(item.level(), ' + count + '-1)](item)';\n }\n result += '})';\n return result;\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._animation();\n this._dragging();\n this._templates();\n },\n _trigger: function (eventName, node) {\n return this.trigger(eventName, { node: node.closest(NODE)[0] });\n },\n _setChecked: function (datasource, value) {\n if (!datasource || !$.isFunction(datasource.view)) {\n return;\n }\n for (var i = 0, nodes = datasource.view(); i < nodes.length; i++) {\n if (nodes[i].enabled !== false) {\n this._setCheckedValue(nodes[i], value);\n }\n if (nodes[i].children) {\n this._setChecked(nodes[i].children, value);\n }\n }\n },\n _setCheckedValue: function (node, value) {\n node[CHECKED] = value;\n },\n _setIndeterminate: function (node) {\n var group = subGroup(node), siblings, length, all = true, i;\n if (!group.length) {\n return;\n }\n siblings = checkboxes(group.children());\n length = siblings.length;\n if (!length) {\n return;\n } else if (length > 1) {\n for (i = 1; i < length; i++) {\n if (siblings[i].checked != siblings[i - 1].checked || siblings[i].indeterminate || siblings[i - 1].indeterminate) {\n all = false;\n break;\n }\n }\n } else {\n all = !siblings[0].indeterminate;\n }\n node.attr(ARIACHECKED, all ? siblings[0].checked : 'mixed');\n return checkboxes(node).data(INDETERMINATE, !all).prop(INDETERMINATE, !all).prop(CHECKED, all && siblings[0].checked);\n },\n updateIndeterminate: function (node) {\n node = node || this.wrapper;\n var subnodes = subGroup(node).children();\n var i;\n var checkbox;\n var dataItem;\n if (subnodes.length) {\n for (i = 0; i < subnodes.length; i++) {\n this.updateIndeterminate(subnodes.eq(i));\n }\n if (node.is('.k-treeview')) {\n return;\n }\n checkbox = this._setIndeterminate(node);\n dataItem = this.dataItem(node);\n if (checkbox && checkbox.prop(CHECKED)) {\n dataItem.checked = true;\n } else {\n if (dataItem) {\n delete dataItem.checked;\n }\n }\n }\n },\n _bubbleIndeterminate: function (node, skipDownward) {\n if (!node.length) {\n return;\n }\n if (!skipDownward) {\n this.updateIndeterminate(node);\n }\n var parentNode = this.parent(node), checkbox;\n if (parentNode.length) {\n this._setIndeterminate(parentNode);\n checkbox = parentNode.children('div').find('.k-checkbox-wrapper input[type=checkbox]');\n this._skip = true;\n if (checkbox.prop(INDETERMINATE) === false) {\n this.dataItem(parentNode).set(CHECKED, checkbox.prop(CHECKED));\n } else {\n this.dataItem(parentNode).set(CHECKED, false);\n }\n this._skip = false;\n this._bubbleIndeterminate(parentNode, true);\n }\n },\n _checkboxChange: function (e) {\n var checkbox = $(e.target);\n var isChecked = checkbox.prop(CHECKED);\n var node = checkbox.closest(NODE);\n var dataItem = this.dataItem(node);\n if (this._preventChange) {\n return;\n }\n if (dataItem.checked != isChecked) {\n dataItem.set(CHECKED, isChecked);\n node.attr(ARIACHECKED, isChecked);\n this._trigger(CHECK, node);\n }\n },\n _toggleButtonClick: function (e) {\n var node = $(e.currentTarget).closest(NODE);\n if (node.is('[aria-disabled=\\'true\\']')) {\n return;\n }\n this.toggle(node);\n },\n _mousedown: function (e) {\n var that = this;\n var currentTarget = $(e.currentTarget);\n var node = $(e.currentTarget).closest(NODE);\n var browser = kendo.support.browser;\n if (node.is('[aria-disabled=\\'true\\']')) {\n return;\n }\n if ((browser.msie || browser.edge) && currentTarget.is(':checkbox')) {\n if (currentTarget.prop(INDETERMINATE)) {\n that._preventChange = false;\n currentTarget.prop(CHECKED, !currentTarget.prop(CHECKED));\n currentTarget.trigger(CHANGE);\n currentTarget.on(CLICK + NS, function (e) {\n e.preventDefault();\n });\n that._preventChange = true;\n } else {\n currentTarget.off(CLICK + NS);\n that._preventChange = false;\n }\n }\n that._clickTarget = node;\n that.current(node);\n },\n _focusable: function (node) {\n return node && node.length && node.is(':visible') && !node.find('.k-in:first').hasClass(DISABLED);\n },\n _focus: function () {\n var current = this.select(), clickTarget = this._clickTarget;\n if (kendo.support.touch) {\n return;\n }\n if (clickTarget && clickTarget.length) {\n current = clickTarget;\n }\n if (!this._focusable(current)) {\n current = this.current();\n }\n if (!this._focusable(current)) {\n current = this._nextVisible($());\n }\n this.current(current);\n },\n focus: function () {\n var wrapper = this.wrapper, scrollContainer = wrapper[0], containers = [], offsets = [], documentElement = document.documentElement, i;\n do {\n scrollContainer = scrollContainer.parentNode;\n if (scrollContainer.scrollHeight > scrollContainer.clientHeight) {\n containers.push(scrollContainer);\n offsets.push(scrollContainer.scrollTop);\n }\n } while (scrollContainer != documentElement);\n kendo.focusElement(wrapper);\n for (i = 0; i < containers.length; i++) {\n containers[i].scrollTop = offsets[i];\n }\n },\n _blur: function () {\n this.current().find('.k-in:first').removeClass('k-state-focused');\n },\n _enabled: function (node) {\n return !node.children('div').children('.k-in').hasClass(DISABLED);\n },\n parent: function (node) {\n var wrapperRe = /\\bk-treeview\\b/, itemRe = /\\bk-item\\b/, result, skipSelf;\n if (typeof node == STRING) {\n node = this.element.find(node);\n }\n if (!isDomElement(node)) {\n node = node[0];\n }\n skipSelf = itemRe.test(node.className);\n do {\n node = node.parentNode;\n if (itemRe.test(node.className)) {\n if (skipSelf) {\n result = node;\n } else {\n skipSelf = true;\n }\n }\n } while (!wrapperRe.test(node.className) && !result);\n return $(result);\n },\n _nextVisible: function (node) {\n var that = this, expanded = that._expanded(node), result;\n function nextParent(node) {\n while (node.length && !node.next().length) {\n node = that.parent(node);\n }\n if (node.next().length) {\n return node.next();\n } else {\n return node;\n }\n }\n if (!node.length || !node.is(':visible')) {\n result = that.root.children().eq(0);\n } else if (expanded) {\n result = subGroup(node).children().first();\n if (!result.length) {\n result = nextParent(node);\n }\n } else {\n result = nextParent(node);\n }\n return result;\n },\n _previousVisible: function (node) {\n var that = this, lastChild, result;\n if (!node.length || node.prev().length) {\n if (node.length) {\n result = node.prev();\n } else {\n result = that.root.children().last();\n }\n while (that._expanded(result)) {\n lastChild = subGroup(result).children().last();\n if (!lastChild.length) {\n break;\n }\n result = lastChild;\n }\n } else {\n result = that.parent(node) || node;\n }\n return result;\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode, target, focused = that.current(), expanded = that._expanded(focused), checkbox = focused.find('.k-checkbox-wrapper:first :checkbox'), rtl = kendo.support.isRtl(that.element);\n if (e.target != e.currentTarget) {\n return;\n }\n if (!rtl && key == keys.RIGHT || rtl && key == keys.LEFT) {\n if (expanded) {\n target = that._nextVisible(focused);\n } else if (!focused.find('.k-in:first').hasClass(DISABLED)) {\n that.expand(focused);\n }\n } else if (!rtl && key == keys.LEFT || rtl && key == keys.RIGHT) {\n if (expanded && !focused.find('.k-in:first').hasClass(DISABLED)) {\n that.collapse(focused);\n } else {\n target = that.parent(focused);\n if (!that._enabled(target)) {\n target = undefined;\n }\n }\n } else if (key == keys.DOWN) {\n target = that._nextVisible(focused);\n } else if (key == keys.UP) {\n target = that._previousVisible(focused);\n } else if (key == keys.HOME) {\n target = that._nextVisible($());\n } else if (key == keys.END) {\n target = that._previousVisible($());\n } else if (key == keys.ENTER && !focused.find('.k-in:first').hasClass(DISABLED)) {\n if (!focused.find('.k-in:first').hasClass('k-state-selected')) {\n if (!that._trigger(SELECT, focused)) {\n that.select(focused);\n }\n }\n } else if (key == keys.SPACEBAR && checkbox.length) {\n if (!focused.find('.k-in:first').hasClass(DISABLED)) {\n checkbox.prop(CHECKED, !checkbox.prop(CHECKED)).data(INDETERMINATE, false).prop(INDETERMINATE, false);\n that._checkboxChange({ target: checkbox });\n }\n target = focused;\n }\n if (target) {\n e.preventDefault();\n if (focused[0] != target[0]) {\n that._trigger(NAVIGATE, target);\n that.current(target);\n }\n }\n },\n _keypress: function (e) {\n var that = this;\n var delay = 300;\n var focusedNode = that.current().get(0);\n var matchToFocus;\n var key = e.key;\n var isPrintable = key.length === 1;\n if (!isPrintable) {\n return;\n }\n if (!that._match) {\n that._match = '';\n }\n that._match += key;\n clearTimeout(that._matchTimer);\n that._matchTimer = setTimeout(function () {\n that._match = '';\n }, delay);\n matchToFocus = focusedNode && that._matchNextByText(Array.prototype.indexOf.call(that.element.find('.k-item'), focusedNode), that._match);\n if (!matchToFocus.length) {\n matchToFocus = that._matchNextByText(-1, that._match);\n }\n if (matchToFocus.get(0) && matchToFocus.get(0) !== focusedNode) {\n that._trigger(NAVIGATE, matchToFocus);\n that.current(matchToFocus);\n }\n },\n _matchNextByText: function (startIndex, text) {\n var element = this.element;\n var textNodes = element.find('.k-in').filter(function (i, element) {\n return i > startIndex && $(element).is(':visible') && $(element).text().toLowerCase().indexOf(text) === 0;\n });\n return textNodes.eq(0).closest(NODE);\n },\n _click: function (e) {\n var that = this, node = $(e.currentTarget), contents = nodeContents(node.closest(NODE)), href = node.attr('href'), shouldNavigate;\n if (href) {\n shouldNavigate = href == '#' || href.indexOf('#' + this.element.id + '-') >= 0;\n } else {\n shouldNavigate = contents.length && !contents.children().length;\n }\n if (shouldNavigate) {\n e.preventDefault();\n }\n if (!node.hasClass('.k-state-selected') && !that._trigger(SELECT, node)) {\n that.select(node);\n }\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper, root, wrapperClasses = 'k-widget k-treeview';\n if (element.is('ul')) {\n wrapper = element.wrap('<div />').parent();\n root = element;\n } else {\n wrapper = element;\n root = wrapper.children('ul').eq(0);\n }\n that.wrapper = wrapper.addClass(wrapperClasses);\n that.root = root;\n },\n _getSelectedNode: function () {\n return this.element.find('.k-state-selected').closest(NODE);\n },\n _group: function (item) {\n var that = this, firstLevel = item.hasClass(KTREEVIEW), group = {\n firstLevel: firstLevel,\n expanded: firstLevel || that._expanded(item)\n }, groupElement = item.children('ul');\n groupElement.addClass(that.templates.groupCssClass(group)).css('display', group.expanded ? '' : 'none');\n that._nodes(groupElement, group);\n },\n _nodes: function (groupElement, groupData) {\n var that = this, nodes = groupElement.children('li'), nodeData;\n groupData = extend({ length: nodes.length }, groupData);\n nodes.each(function (i, node) {\n node = $(node);\n nodeData = {\n index: i,\n expanded: that._expanded(node)\n };\n updateNodeHtml(node);\n that._updateNodeClasses(node, groupData, nodeData);\n that._group(node);\n });\n },\n _checkboxes: function () {\n var options = this.options;\n var checkboxes = options.checkboxes;\n var defaultTemplate;\n if (checkboxes) {\n defaultTemplate = '<input type=\\'checkbox\\' tabindex=\\'-1\\' #= (item.enabled === false) ? \\'disabled\\' : \\'\\' # #= item.checked ? \\'checked\\' : \\'\\' #';\n if (checkboxes.name) {\n defaultTemplate += ' name=\\'' + checkboxes.name + '\\'';\n }\n defaultTemplate += ' id=\\'_#= item.uid #\\' class=\\'k-checkbox\\' /><span class=\\'k-checkbox-label checkbox-span\\'></span>';\n checkboxes = extend({ template: defaultTemplate }, options.checkboxes);\n if (typeof checkboxes.template == STRING) {\n checkboxes.template = template(checkboxes.template);\n }\n options.checkboxes = checkboxes;\n }\n },\n _updateNodeClasses: function (node, groupData, nodeData) {\n var wrapper = node.children('div'), group = node.children('ul'), templates = this.templates;\n if (node.hasClass('k-treeview')) {\n return;\n }\n nodeData = nodeData || {};\n nodeData.expanded = typeof nodeData.expanded != UNDEFINED ? nodeData.expanded : this._expanded(node);\n nodeData.index = typeof nodeData.index != UNDEFINED ? nodeData.index : node.index();\n nodeData.enabled = typeof nodeData.enabled != UNDEFINED ? nodeData.enabled : !wrapper.children('.k-in').hasClass('k-state-disabled');\n groupData = groupData || {};\n groupData.firstLevel = typeof groupData.firstLevel != UNDEFINED ? groupData.firstLevel : node.parent().parent().hasClass(KTREEVIEW);\n groupData.length = typeof groupData.length != UNDEFINED ? groupData.length : node.parent().children().length;\n node.removeClass('k-first k-last').addClass(templates.wrapperCssClass(groupData, nodeData));\n wrapper.removeClass('k-top k-mid k-bot').addClass(templates.cssClass(groupData, nodeData));\n var textWrap = wrapper.children('.k-in');\n var isLink = textWrap[0] && textWrap[0].nodeName.toLowerCase() == 'a';\n textWrap.removeClass('k-in k-link k-state-default k-state-disabled').addClass(templates.textClass(nodeData, isLink));\n if (group.length || node.attr('data-hasChildren') == 'true') {\n wrapper.children('.k-icon').removeClass('k-i-expand k-i-collapse').addClass(templates.toggleButtonClass(nodeData));\n group.addClass('k-group');\n }\n },\n _processNodes: function (nodes, callback) {\n var that = this;\n var items = that.element.find(nodes);\n for (var i = 0; i < items.length; i++) {\n callback.call(that, i, $(items[i]).closest(NODE));\n }\n },\n dataItem: function (node) {\n var uid = $(node).closest(NODE).attr(kendo.attr('uid')), dataSource = this.dataSource;\n return dataSource && dataSource.getByUid(uid);\n },\n _dataItem: function (node) {\n var uid = $(node).closest(NODE).attr(kendo.attr('uid')), dataSource = this.dataSource;\n return dataSource && this._dataSourceUids[uid];\n },\n _insertNode: function (nodeData, index, parentNode, insertCallback, collapsed) {\n var that = this, group = subGroup(parentNode), updatedGroupLength = group.children().length + 1, childrenData, groupData = {\n firstLevel: parentNode.hasClass(KTREEVIEW),\n expanded: !collapsed,\n length: updatedGroupLength\n }, node, i, item, nodeHtml = '', firstChild, lastChild, append = function (item, group) {\n item.appendTo(group);\n };\n for (i = 0; i < nodeData.length; i++) {\n item = nodeData[i];\n item.index = index + i;\n nodeHtml += that._renderItem({\n group: groupData,\n item: item\n });\n }\n node = $(nodeHtml);\n if (!node.length) {\n return;\n }\n that.angular('compile', function () {\n return {\n elements: node.get(),\n data: nodeData.map(function (item) {\n return { dataItem: item };\n })\n };\n });\n if (!group.length) {\n group = $(that._renderGroup({ group: groupData })).appendTo(parentNode);\n }\n insertCallback(node, group);\n if (parentNode.hasClass('k-item')) {\n updateNodeHtml(parentNode);\n that._updateNodeClasses(parentNode, groupData, { expanded: !collapsed });\n }\n firstChild = node.prev().first();\n lastChild = node.next().last();\n that._updateNodeClasses(firstChild, {}, { expanded: firstChild.attr(kendo.attr('expanded')) == 'true' });\n that._updateNodeClasses(lastChild, {}, { expanded: lastChild.attr(kendo.attr('expanded')) == 'true' });\n for (i = 0; i < nodeData.length; i++) {\n item = nodeData[i];\n if (item.hasChildren) {\n childrenData = item.children.data();\n if (childrenData.length) {\n that._insertNode(childrenData, item.index, node.eq(i), append, !item.expanded);\n }\n }\n }\n return node;\n },\n _updateNodes: function (items, field) {\n var that = this;\n var i, node, nodeWrapper, item, isChecked, isCollapsed;\n var context = {\n treeview: that.options,\n item: item\n };\n var render = field != 'expanded' && field != 'checked';\n function setCheckedState(root, state) {\n if (root.is('.k-group')) {\n root.find('.k-item:not([aria-disabled])').attr(ARIACHECKED, state);\n }\n root.find('.k-checkbox-wrapper input[type=checkbox]:not([disabled])').prop(CHECKED, state).data(INDETERMINATE, false).prop(INDETERMINATE, false);\n }\n if (field == 'selected') {\n item = items[0];\n node = that.findByUid(item.uid).find('.k-in:first').removeClass('k-state-hover').toggleClass('k-state-selected', item[field]).end();\n if (item[field]) {\n that.current(node);\n }\n node.attr(ARIASELECTED, !!item[field]);\n } else {\n var elements = $.map(items, function (item) {\n return that.findByUid(item.uid).children('div');\n });\n if (render) {\n that.angular('cleanup', function () {\n return { elements: elements };\n });\n }\n for (i = 0; i < items.length; i++) {\n context.item = item = items[i];\n nodeWrapper = elements[i];\n node = nodeWrapper.parent();\n if (render) {\n nodeWrapper.children('.k-in').html(that.templates.itemContent(context));\n }\n if (field == CHECKED) {\n isChecked = item[field];\n setCheckedState(nodeWrapper, isChecked);\n node.attr(ARIACHECKED, isChecked);\n if (that.options.checkboxes.checkChildren) {\n setCheckedState(node.children('.k-group'), isChecked);\n that._setChecked(item.children, isChecked);\n that._bubbleIndeterminate(node);\n }\n } else if (field == 'expanded') {\n that._toggle(node, item, item[field]);\n } else if (field == 'enabled') {\n node.find('.k-checkbox-wrapper input[type=checkbox]').prop('disabled', !item[field]);\n isCollapsed = !nodeContents(node).is(VISIBLE);\n node.removeAttr(ARIADISABLED);\n if (!item[field]) {\n if (item.selected) {\n item.set('selected', false);\n }\n if (item.expanded) {\n item.set('expanded', false);\n }\n isCollapsed = true;\n node.attr(ARIASELECTED, false).attr(ARIADISABLED, true);\n }\n that._updateNodeClasses(node, {}, {\n enabled: item[field],\n expanded: !isCollapsed\n });\n }\n if (nodeWrapper.length) {\n if (item._events && item._events.change) {\n item._events.change.splice(1);\n }\n this.trigger('itemChange', {\n item: nodeWrapper,\n data: item,\n ns: ui\n });\n }\n }\n if (render) {\n that.angular('compile', function () {\n return {\n elements: elements,\n data: $.map(items, function (item) {\n return [{ dataItem: item }];\n })\n };\n });\n }\n }\n },\n _appendItems: function (index, items, parentNode) {\n var group = subGroup(parentNode);\n var children = group.children();\n var collapsed = !this._expanded(parentNode);\n if (this.element === parentNode) {\n var dataItems = this.dataSource.data();\n var viewItems = this.dataSource.view();\n var rootItems = viewItems.length < dataItems.length ? viewItems : dataItems;\n index = rootItems.indexOf(items[0]);\n } else if (items.length) {\n index = items[0].parent().indexOf(items[0]);\n }\n if (typeof index == UNDEFINED) {\n index = children.length;\n }\n this._insertNode(items, index, parentNode, function (item, group) {\n if (index >= children.length) {\n item.appendTo(group);\n } else {\n item.insertBefore(children.eq(index));\n }\n }, collapsed);\n if (!collapsed) {\n this._updateNodeClasses(parentNode, {}, { expanded: !collapsed });\n subGroup(parentNode).css('display', 'block');\n }\n },\n _refreshChildren: function (parentNode, items, index) {\n var i, children, child;\n var options = this.options;\n var loadOnDemand = options.loadOnDemand;\n var checkChildren = options.checkboxes && options.checkboxes.checkChildren;\n subGroup(parentNode).empty();\n if (!items.length) {\n updateNodeHtml(parentNode);\n } else {\n this._appendItems(index, items, parentNode);\n children = subGroup(parentNode).children();\n if (loadOnDemand && checkChildren) {\n this._bubbleIndeterminate(children.last());\n }\n for (i = 0; i < children.length; i++) {\n child = children.eq(i);\n this.trigger('itemChange', {\n item: child.children('div'),\n data: items[i],\n ns: ui\n });\n }\n }\n },\n _refreshRoot: function (items) {\n var groupHtml = this._renderGroup({\n items: items,\n group: {\n firstLevel: true,\n expanded: true\n }\n });\n if (this.root.length) {\n this._angularItems('cleanup');\n var group = $(groupHtml);\n this.root.attr('class', group.attr('class')).html(group.html());\n } else {\n this.root = this.wrapper.html(groupHtml).children('ul');\n }\n var elements = this.root.children('.k-item');\n for (var i = 0; i < items.length; i++) {\n this.trigger('itemChange', {\n item: elements.eq(i),\n data: items[i],\n ns: ui\n });\n }\n this._angularItems('compile');\n },\n refresh: function (e) {\n var node = e.node;\n var action = e.action;\n var items = e.items;\n var parentNode = this.wrapper;\n var options = this.options;\n var loadOnDemand = options.loadOnDemand;\n var checkChildren = options.checkboxes && options.checkboxes.checkChildren;\n var i;\n if (this._skip) {\n return;\n }\n for (i = 0; i < items.length; i++) {\n this._dataSourceUids[items[i].uid] = items[i];\n }\n if (e.field) {\n if (!items[0] || !items[0].level) {\n return;\n }\n return this._updateNodes(items, e.field);\n }\n if (node) {\n parentNode = this.findByUid(node.uid);\n this._progress(parentNode, false);\n }\n if (checkChildren && action != 'remove') {\n var bubble = false;\n for (i = 0; i < items.length; i++) {\n if ('checked' in items[i]) {\n bubble = true;\n break;\n }\n }\n if (!bubble && node && node.checked) {\n for (i = 0; i < items.length; i++) {\n items[i].checked = true;\n }\n }\n }\n if (action == 'add') {\n this._appendItems(e.index, items, parentNode);\n } else if (action == 'remove') {\n this._remove(this.findByUid(items[0].uid), false);\n } else if (action == 'itemchange') {\n this._updateNodes(items);\n } else if (action == 'itemloaded') {\n this._refreshChildren(parentNode, items, e.index);\n } else {\n this._refreshRoot(items);\n }\n if (action != 'remove') {\n for (i = 0; i < items.length; i++) {\n if (!loadOnDemand || items[i].expanded || items[i]._loaded) {\n items[i].load();\n }\n }\n }\n this.trigger(DATABOUND, { node: node ? parentNode : undefined });\n if (this.dataSource.filter() && this.options.checkboxes.checkChildren) {\n this.updateIndeterminate(parentNode);\n }\n },\n _error: function (e) {\n var node = e.node && this.findByUid(e.node.uid);\n var retryHtml = this.templates.retry({ messages: this.options.messages });\n if (node) {\n this._progress(node, false);\n this._expanded(node, false);\n nodeIcon(node).addClass('k-i-reload');\n e.node.loaded(false);\n } else {\n this._progress(false);\n this.element.html(retryHtml);\n }\n },\n _retryRequest: function (e) {\n e.preventDefault();\n this.dataSource.fetch();\n },\n expand: function (nodes) {\n this._processNodes(nodes, function (index, item) {\n this.toggle(item, true);\n });\n },\n collapse: function (nodes) {\n this._processNodes(nodes, function (index, item) {\n this.toggle(item, false);\n });\n },\n enable: function (nodes, enable) {\n if (typeof nodes === 'boolean') {\n enable = nodes;\n nodes = this.items();\n } else {\n enable = arguments.length == 2 ? !!enable : true;\n }\n this._processNodes(nodes, function (index, item) {\n this.dataItem(item).set('enabled', enable);\n });\n },\n current: function (node) {\n var that = this, current = that._current, element = that.element, id = that._ariaId;\n if (arguments.length > 0 && node && node.length) {\n if (current) {\n if (current[0].id === id) {\n current.removeAttr('id');\n }\n current.find('.k-in:first').removeClass('k-state-focused');\n }\n current = that._current = $(node, element).closest(NODE);\n current.find('.k-in:first').addClass('k-state-focused');\n id = current[0].id || id;\n if (id) {\n that.wrapper.removeAttr('aria-activedescendant');\n current.attr('id', id);\n that.wrapper.attr('aria-activedescendant', id);\n }\n return;\n }\n if (!current) {\n current = that._nextVisible($());\n }\n return current;\n },\n select: function (node) {\n var that = this, element = that.element;\n if (!arguments.length) {\n return element.find('.k-state-selected').closest(NODE);\n }\n node = $(node, element).closest(NODE);\n element.find('.k-state-selected').each(function () {\n var dataItem = that.dataItem(this);\n if (dataItem) {\n dataItem.set('selected', false);\n delete dataItem.selected;\n } else {\n $(this).removeClass('k-state-selected');\n }\n });\n if (node.length) {\n that.dataItem(node).set('selected', true);\n that._clickTarget = node;\n }\n that.trigger(CHANGE);\n },\n _toggle: function (node, dataItem, expand) {\n var options = this.options;\n var contents = nodeContents(node);\n var direction = expand ? 'expand' : 'collapse';\n var loaded;\n if (contents.data('animating')) {\n return;\n }\n loaded = dataItem && dataItem.loaded();\n if (expand && !loaded) {\n if (options.loadOnDemand) {\n this._progress(node, true);\n }\n contents.remove();\n dataItem.load();\n } else {\n this._updateNodeClasses(node, {}, { expanded: expand });\n if (!expand) {\n contents.css('height', contents.height()).css('height');\n }\n contents.kendoStop(true, true).kendoAnimate(extend({ reset: true }, options.animation[direction], {\n complete: function () {\n if (expand) {\n contents.css('height', '');\n }\n }\n }));\n }\n },\n toggle: function (node, expand) {\n node = $(node);\n if (!nodeIcon(node).is('.k-i-expand, .k-i-collapse')) {\n return;\n }\n if (arguments.length == 1) {\n expand = !this._expanded(node);\n }\n this._expanded(node, expand);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.wrapper.off(NS);\n that.wrapper.find('.k-checkbox-wrapper :checkbox').off(NS);\n that._unbindDataSource();\n if (that.dragging) {\n that.dragging.destroy();\n }\n that._dataSourceUids = {};\n kendo.destroy(that.element);\n that.root = that.wrapper = that.element = null;\n },\n _expanded: function (node, value, force) {\n var expandedAttr = kendo.attr('expanded');\n var dataItem;\n var expanded = value;\n var direction = expanded ? 'expand' : 'collapse';\n if (arguments.length == 1) {\n dataItem = this._dataItem(node);\n return node.attr(expandedAttr) === 'true' || dataItem && dataItem.expanded;\n }\n dataItem = this.dataItem(node);\n if (nodeContents(node).data('animating')) {\n return;\n }\n if (force || !this._trigger(direction, node)) {\n if (expanded) {\n node.attr(expandedAttr, 'true');\n node.attr('aria-expanded', 'true');\n } else {\n node.removeAttr(expandedAttr);\n node.attr('aria-expanded', 'false');\n }\n if (dataItem) {\n dataItem.set('expanded', expanded);\n expanded = dataItem.expanded;\n }\n }\n },\n _progress: function (node, showProgress) {\n var element = this.element;\n var loadingText = this.templates.loading({ messages: this.options.messages });\n if (arguments.length == 1) {\n showProgress = node;\n if (showProgress) {\n element.html(loadingText);\n } else {\n element.empty();\n }\n } else {\n nodeIcon(node).toggleClass('k-i-loading', showProgress).removeClass('k-i-reload');\n }\n },\n text: function (node, text) {\n var dataItem = this.dataItem(node), fieldBindings = this.options[bindings.text], level = dataItem.level(), length = fieldBindings.length, field = fieldBindings[Math.min(level, length - 1)];\n if (text) {\n dataItem.set(field, text);\n } else {\n return dataItem[field];\n }\n },\n _objectOrSelf: function (node) {\n return $(node).closest('[data-role=treeview]').data('kendoTreeView') || this;\n },\n _dataSourceMove: function (nodeData, group, parentNode, callback) {\n var referenceDataItem, destTreeview = this._objectOrSelf(parentNode || group), destDataSource = destTreeview.dataSource;\n var loadPromise = $.Deferred().resolve().promise();\n if (parentNode && parentNode[0] != destTreeview.element[0]) {\n referenceDataItem = destTreeview.dataItem(parentNode);\n if (!referenceDataItem.loaded()) {\n destTreeview._progress(parentNode, true);\n loadPromise = referenceDataItem.load();\n }\n if (parentNode != this.root) {\n destDataSource = referenceDataItem.children;\n if (!destDataSource || !(destDataSource instanceof HierarchicalDataSource)) {\n referenceDataItem._initChildren();\n referenceDataItem.loaded(true);\n destDataSource = referenceDataItem.children;\n }\n }\n }\n nodeData = this._toObservableData(nodeData);\n return callback.call(destTreeview, destDataSource, nodeData, loadPromise);\n },\n _toObservableData: function (node) {\n var dataItem = node, dataSource, uid;\n if (isJQueryInstance(node) || isDomElement(node)) {\n dataSource = this._objectOrSelf(node).dataSource;\n uid = $(node).attr(kendo.attr('uid'));\n dataItem = dataSource.getByUid(uid);\n if (dataItem) {\n dataItem = dataSource.remove(dataItem);\n }\n }\n return dataItem;\n },\n _insert: function (data, model, index) {\n if (!(model instanceof kendo.data.ObservableArray)) {\n if (!isArray(model)) {\n model = [model];\n }\n } else {\n model = model.toJSON();\n }\n var parentNode = data.parent();\n if (parentNode && parentNode._initChildren) {\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n data.splice.apply(data, [\n index,\n 0\n ].concat(model));\n return this.findByUid(data[index].uid);\n },\n insertAfter: insertAction(1),\n insertBefore: insertAction(0),\n append: function (nodeData, parentNode, success) {\n var group = this.root;\n if (parentNode && nodeData instanceof jQuery && parentNode[0] === nodeData[0]) {\n return;\n }\n parentNode = parentNode && parentNode.length ? parentNode : null;\n if (parentNode) {\n group = subGroup(parentNode);\n }\n return this._dataSourceMove(nodeData, group, parentNode, function (dataSource, model, loadModel) {\n var inserted;\n var that = this;\n function add() {\n if (parentNode) {\n that._expanded(parentNode, true, true);\n }\n var data = dataSource.data(), index = Math.max(data.length, 0);\n return that._insert(data, model, index);\n }\n loadModel.done(function () {\n inserted = add();\n success = success || $.noop;\n success(inserted);\n });\n return inserted || null;\n });\n },\n _remove: function (node, keepData) {\n var that = this, parentNode, prevSibling, nextSibling;\n node = $(node, that.element);\n this.angular('cleanup', function () {\n return { elements: node.get() };\n });\n parentNode = node.parent().parent();\n prevSibling = node.prev();\n nextSibling = node.next();\n node[keepData ? 'detach' : 'remove']();\n if (parentNode.hasClass('k-item')) {\n updateNodeHtml(parentNode);\n that._updateNodeClasses(parentNode);\n }\n that._updateNodeClasses(prevSibling);\n that._updateNodeClasses(nextSibling);\n return node;\n },\n remove: function (node) {\n var dataItem = this.dataItem(node);\n if (dataItem) {\n this.dataSource.remove(dataItem);\n }\n },\n detach: function (node) {\n return this._remove(node, true);\n },\n findByText: function (text) {\n return $(this.element).find('.k-in').filter(function (i, element) {\n return $(element).text() == text;\n }).closest(NODE);\n },\n findByUid: function (uid) {\n var items = this.element.find('.k-item');\n var uidAttr = kendo.attr('uid');\n var result;\n for (var i = 0; i < items.length; i++) {\n if (items[i].getAttribute(uidAttr) == uid) {\n result = items[i];\n break;\n }\n }\n return $(result);\n },\n expandPath: function (path, complete) {\n var treeview = this;\n var nodeIds = path.slice(0);\n var callback = complete || $.noop;\n function proceed() {\n nodeIds.shift();\n if (nodeIds.length) {\n expand(nodeIds[0]).then(proceed);\n } else {\n callback.call(treeview);\n }\n }\n function expand(id) {\n var result = $.Deferred();\n var node = treeview.dataSource.get(id);\n if (node) {\n if (node.loaded()) {\n node.set('expanded', true);\n result.resolve();\n } else {\n treeview._progress(treeview.findByUid(node.uid), true);\n node.load().then(function () {\n node.set('expanded', true);\n result.resolve();\n });\n }\n } else {\n result.resolve();\n }\n return result.promise();\n }\n expand(nodeIds[0]).then(proceed);\n },\n _parentIds: function (node) {\n var parent = node && node.parentNode();\n var parents = [];\n while (parent && parent.parentNode) {\n parents.unshift(parent.id);\n parent = parent.parentNode();\n }\n return parents;\n },\n expandTo: function (node) {\n if (!(node instanceof kendo.data.Node)) {\n node = this.dataSource.get(node);\n }\n var parents = this._parentIds(node);\n this.expandPath(parents);\n },\n _renderItem: function (options) {\n if (!options.group) {\n options.group = {};\n }\n options.treeview = this.options;\n options.r = this.templates;\n return this.templates.item(options);\n },\n _renderGroup: function (options) {\n var that = this;\n options.renderItems = function (options) {\n var html = '', i = 0, items = options.items, len = items ? items.length : 0, group = options.group;\n group.length = len;\n for (; i < len; i++) {\n options.group = group;\n options.item = items[i];\n options.item.index = i;\n html += that._renderItem(options);\n }\n return html;\n };\n options.r = that.templates;\n return that.templates.group(options);\n }\n });\n ui.plugin(TreeView);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('dropdowntree/treeview', ['kendo.treeview'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, keys = kendo.keys, DISABLED = 'k-state-disabled', SELECT = 'select', CHECKED = 'checked', proxy = $.proxy, DATABOUND = 'dataBound', CLICK = 'click', NS = '.kendoTreeView', INDETERMINATE = 'indeterminate', NAVIGATE = 'navigate', subGroup, TreeView = ui.TreeView;\n function contentChild(filter) {\n return function (node) {\n var result = node.children('.k-animation-container');\n if (!result.length) {\n result = node;\n }\n return result.children(filter);\n };\n }\n subGroup = contentChild('.k-group');\n var Tree = TreeView.extend({\n init: function (element, options, dropdowntree) {\n var that = this;\n that.dropdowntree = dropdowntree;\n TreeView.fn.init.call(that, element, options);\n if (that.dropdowntree._isMultipleSelection()) {\n that.wrapper.on(CLICK + NS, '.k-in.k-state-selected', proxy(that._clickSelectedItem, that));\n }\n },\n _checkOnSelect: function (e) {\n if (!e.isDefaultPrevented()) {\n var dataItem = this.dataItem(e.node);\n dataItem.set('checked', !dataItem.checked);\n }\n },\n _setCheckedValue: function (node, value) {\n node.set(CHECKED, value);\n },\n _click: function (e) {\n var that = this;\n if (that.dropdowntree._isMultipleSelection()) {\n that.one('select', that._checkOnSelect);\n }\n TreeView.fn._click.call(that, e);\n },\n _clickSelectedItem: function (e) {\n var that = this, node = $(e.currentTarget);\n that.one('select', that._checkOnSelect);\n if (!that._trigger(SELECT, node)) {\n that.dataItem(node).set('selected', false);\n }\n },\n defaultrefresh: function (e) {\n var node = e.node;\n var action = e.action;\n var items = e.items;\n var parentNode = this.wrapper;\n var options = this.options;\n var loadOnDemand = options.loadOnDemand;\n var checkChildren = options.checkboxes && options.checkboxes.checkChildren;\n var i;\n if (this._skip) {\n return;\n }\n if (e.field) {\n if (!items[0] || !items[0].level) {\n return;\n }\n return this._updateNodes(items, e.field);\n }\n if (node) {\n parentNode = this.findByUid(node.uid);\n this._progress(parentNode, false);\n }\n if (checkChildren && action != 'remove') {\n var bubble = false;\n for (i = 0; i < items.length; i++) {\n if ('checked' in items[i]) {\n bubble = true;\n break;\n }\n }\n if (!bubble && node && node.checked) {\n for (i = 0; i < items.length; i++) {\n items[i].checked = true;\n }\n }\n }\n if (action == 'add') {\n this._appendItems(e.index, items, parentNode);\n } else if (action == 'remove') {\n this._remove(this.findByUid(items[0].uid), false);\n } else if (action == 'itemchange') {\n this._updateNodes(items);\n } else if (action == 'itemloaded') {\n this._refreshChildren(parentNode, items, e.index);\n } else {\n this._refreshRoot(items);\n }\n if (action != 'remove') {\n for (i = 0; i < items.length; i++) {\n if (!loadOnDemand || items[i].expanded) {\n items[i].load();\n }\n }\n }\n this.trigger(DATABOUND, { node: node ? parentNode : undefined });\n this.dropdowntree._treeViewDataBound({\n node: node ? parentNode : undefined,\n sender: this\n });\n if (this.options.checkboxes.checkChildren) {\n this.updateIndeterminate();\n }\n },\n _previousVisible: function (node) {\n var that = this, lastChild, result;\n if (!node.length || node.prev().length) {\n if (node.length) {\n result = node.prev();\n } else {\n result = that.root.children().last();\n }\n while (that._expanded(result)) {\n lastChild = subGroup(result).children().last();\n if (!lastChild.length) {\n break;\n }\n result = lastChild;\n }\n } else {\n result = that.parent(node) || node;\n if (!result.length) {\n if (that.dropdowntree.checkAll && that.dropdowntree.checkAll.is(':visible')) {\n that.dropdowntree.checkAll.find('.k-checkbox').focus();\n } else if (that.dropdowntree.filterInput) {\n that.dropdowntree.filterInput.focus();\n } else {\n that.dropdowntree.wrapper.focus();\n }\n }\n }\n return result;\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode, target, focused = that.current(), expanded = that._expanded(focused), checkbox = focused.find('.k-checkbox-wrapper:first :checkbox'), rtl = kendo.support.isRtl(that.element);\n if (e.target != e.currentTarget) {\n return;\n }\n if (!rtl && key == keys.RIGHT || rtl && key == keys.LEFT) {\n if (expanded) {\n target = that._nextVisible(focused);\n } else if (!focused.find('.k-in:first').hasClass(DISABLED)) {\n that.expand(focused);\n }\n } else if (!rtl && key == keys.LEFT || rtl && key == keys.RIGHT) {\n if (expanded && !focused.find('.k-in:first').hasClass(DISABLED)) {\n that.collapse(focused);\n } else {\n target = that.parent(focused);\n if (!that._enabled(target)) {\n target = undefined;\n }\n }\n } else if (key == keys.DOWN) {\n target = that._nextVisible(focused);\n } else if (key == keys.UP && !e.altKey) {\n target = that._previousVisible(focused);\n } else if (key == keys.HOME) {\n target = that._nextVisible($());\n } else if (key == keys.END) {\n target = that._previousVisible($());\n } else if (key == keys.ENTER && !focused.find('.k-in:first').hasClass(DISABLED)) {\n if (!focused.find('.k-in:first').hasClass('k-state-selected')) {\n if (!that._trigger(SELECT, focused)) {\n that.select(focused);\n }\n }\n } else if (key == keys.SPACEBAR && checkbox.length && !focused.find('.k-in:first').hasClass(DISABLED)) {\n checkbox.prop(CHECKED, !checkbox.prop(CHECKED)).data(INDETERMINATE, false).prop(INDETERMINATE, false);\n that._checkboxChange({ target: checkbox });\n target = focused;\n } else if (e.altKey && key === keys.UP || key === keys.ESC) {\n that._closePopup();\n }\n if (target) {\n e.preventDefault();\n if (focused[0] != target[0]) {\n that._trigger(NAVIGATE, target);\n that.current(target);\n }\n }\n },\n _closePopup: function () {\n this.dropdowntree.close();\n this.dropdowntree.wrapper.focus();\n },\n refresh: function (e) {\n this.defaultrefresh(e);\n if (this.dropdowntree.options.skipUpdateOnBind) {\n return;\n }\n if (e.action === 'itemchange') {\n if (this.dropdowntree._isMultipleSelection()) {\n if (e.field === 'checked') {\n this.dropdowntree._checkValue(e.items[0]);\n }\n } else {\n if (e.field !== 'checked' && e.field !== 'expanded' && e.items[0].selected) {\n this.dropdowntree._selectValue(e.items[0]);\n }\n }\n } else {\n this.dropdowntree.refresh(e);\n }\n }\n });\n kendo.ui._dropdowntree = Tree;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dropdowntree', [\n 'dropdowntree/treeview',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dropdowntree',\n name: 'DropDownTree',\n category: 'web',\n description: 'The DropDownTree widget displays a hierarchy of items and allows the selection of single or multiple items.',\n depends: [\n 'treeview',\n 'popup'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, TreeView = ui._dropdowntree, ObservableArray = kendo.data.ObservableArray, ObservableObject = kendo.data.ObservableObject, extend = $.extend, activeElement = kendo._activeElement, ns = '.kendoDropDownTree', keys = kendo.keys, support = kendo.support, HIDDENCLASS = 'k-hidden', WIDTH = 'width', browser = support.browser, outerWidth = kendo._outerWidth, DOT = '.', DISABLED = 'disabled', READONLY = 'readonly', STATEDISABLED = 'k-state-disabled', ARIA_DISABLED = 'aria-disabled', HOVER = 'k-state-hover', FOCUSED = 'k-state-focused', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, TABINDEX = 'tabindex', CLICK = 'click', OPEN = 'open', CLOSE = 'close', CHANGE = 'change', quotRegExp = /\"/g, proxy = $.proxy;\n var DropDownTree = kendo.ui.Widget.extend({\n init: function (element, options) {\n this.ns = ns;\n kendo.ui.Widget.fn.init.call(this, element, options);\n this._selection = this._getSelection();\n this._focusInputHandler = $.proxy(this._focusInput, this);\n this._initial = this.element.val();\n this._values = [];\n var value = this.options.value;\n if (value === null || !value.length) {\n this._noInitialValue = true;\n }\n if (!this._isNullorUndefined(value)) {\n this._valueMethodCalled = true;\n this._values = $.isArray(value) ? value.slice(0) : [value];\n }\n this._inputTemplate();\n this._accessors();\n this._setTreeViewOptions(this.options);\n this._dataSource();\n this._selection._initWrapper();\n this._placeholder(true);\n this._tabindex();\n this.wrapper.data(TABINDEX, this.wrapper.attr(TABINDEX));\n this.tree = $('<div/>').attr({\n tabIndex: -1,\n 'aria-hidden': true\n });\n this.list = $('<div class=\\'k-list-container\\'/>').append(this.tree);\n this._header();\n this._noData();\n this._footer();\n this._reset();\n this._popup();\n this.popup.one('open', proxy(this._popupOpen, this));\n this._clearButton();\n this._filterHeader();\n this._treeview();\n this._renderFooter();\n this._checkAll();\n this._enable();\n this._toggleCloseVisibility();\n if (!this.options.autoBind) {\n var text = options.text || '';\n if (!this._isNullorUndefined(options.value)) {\n this._preselect(options.value);\n } else if (text) {\n this._textAccessor(text);\n } else if (options.placeholder) {\n this._placeholder(true);\n }\n }\n var disabled = $(this.element).parents('fieldset').is(':disabled');\n if (disabled) {\n this.enable(false);\n }\n this._valueMethodCalled = false;\n kendo.notify(this);\n },\n _preselect: function (data, value) {\n this._selection._preselect(data, value);\n },\n _setTreeViewOptions: function (options) {\n var treeviewOptions = {\n autoBind: options.autoBind,\n checkboxes: options.checkboxes,\n dataImageUrlField: options.dataImageUrlField,\n dataSpriteCssClassField: options.dataSpriteCssClassField,\n dataTextField: options.dataTextField,\n dataUrlField: options.dataUrlField,\n loadOnDemand: options.loadOnDemand\n };\n this.options.treeview = $.extend({}, treeviewOptions, this.options.treeview);\n if (options.template) {\n this.options.treeview.template = options.template;\n }\n },\n _dataSource: function () {\n var rootDataSource = this.options.dataSource;\n this.dataSource = kendo.data.HierarchicalDataSource.create(rootDataSource);\n if (rootDataSource) {\n $.extend(this.options.treeview, { dataSource: this.dataSource });\n }\n },\n _popupOpen: function () {\n var popup = this.popup;\n popup.wrapper = kendo.wrap(popup.element);\n },\n _getSelection: function () {\n if (this._isMultipleSelection()) {\n return new ui.DropDownTree.MultipleSelection(this);\n } else {\n return new ui.DropDownTree.SingleSelection(this);\n }\n },\n setDataSource: function (dataSource) {\n this._noInitialValue = true;\n this._clearTextAndValue();\n this.dataSource = dataSource;\n this.treeview.setDataSource(dataSource);\n },\n _isMultipleSelection: function () {\n return this.options && (this.options.treeview.checkboxes || this.options.checkboxes);\n },\n options: {\n name: 'DropDownTree',\n animation: {},\n autoBind: true,\n autoClose: true,\n autoWidth: false,\n clearButton: true,\n dataTextField: '',\n dataValueField: '',\n dataImageUrlField: '',\n dataSpriteCssClassField: '',\n dataUrlField: '',\n delay: 500,\n enabled: true,\n enforceMinLength: false,\n filter: 'none',\n height: 200,\n ignoreCase: true,\n index: 0,\n loadOnDemand: false,\n messages: {\n 'singleTag': 'item(s) selected',\n 'clear': 'clear',\n 'deleteTag': 'delete',\n 'noData': 'No data found.'\n },\n minLength: 1,\n checkboxes: false,\n noDataTemplate: true,\n placeholder: '',\n checkAll: false,\n checkAllTemplate: 'Check all',\n tagMode: 'multiple',\n template: null,\n text: null,\n treeview: {},\n valuePrimitive: false,\n footerTemplate: '',\n headerTemplate: '',\n value: null,\n valueTemplate: null,\n popup: null\n },\n events: [\n 'open',\n 'close',\n 'dataBound',\n CHANGE,\n 'select',\n 'filtering'\n ],\n focus: function () {\n this.wrapper.focus();\n },\n dataItem: function (node) {\n return this.treeview.dataItem(node);\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n this._toggleCloseVisibility();\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n this._toggleCloseVisibility();\n },\n toggle: function (open) {\n this._toggle(open);\n },\n open: function () {\n var popup = this.popup;\n if (!this.options.autoBind && !this.dataSource.data().length) {\n this.treeview._progress(true);\n if (this._isFilterEnabled()) {\n this._search();\n } else {\n this.dataSource.fetch();\n }\n }\n if (popup.visible() || !this._allowOpening()) {\n return;\n }\n if (this._isMultipleSelection()) {\n popup.element.addClass('k-multiple-selection');\n }\n popup.element.addClass('k-popup-dropdowntree');\n popup.one('activate', this._focusInputHandler);\n popup._hovered = true;\n popup.open();\n },\n close: function () {\n this.popup.close();\n },\n search: function (word) {\n var options = this.options;\n var filter;\n clearTimeout(this._typingTimeout);\n if (!options.enforceMinLength && !word.length || word.length >= options.minLength) {\n filter = this._getFilter(word);\n if (this.trigger('filtering', { filter: filter }) || $.isArray(this.options.dataTextField)) {\n return;\n }\n this._filtering = true;\n this.treeview.dataSource.filter(filter);\n }\n },\n _getFilter: function (word) {\n return {\n field: this.options.dataTextField,\n operator: this.options.filter,\n value: word,\n ignoreCase: this.options.ignoreCase\n };\n },\n refresh: function () {\n var data = this.treeview.dataSource.flatView();\n this._renderFooter();\n this._renderNoData();\n if (this.filterInput && this.checkAll) {\n this.checkAll.toggle(!this.filterInput.val().length);\n }\n this.tree.toggle(!!data.length);\n $(this.noData).toggle(!data.length);\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._setTreeViewOptions(options);\n this._dataSource();\n if (this.options.treeview) {\n this.treeview.setOptions(this.options.treeview);\n }\n if (options.height && this.tree) {\n this.tree.css('max-height', options.height);\n }\n this._header();\n this._noData();\n this._footer();\n this._renderFooter();\n this._renderNoData();\n if (this.span && (this._isMultipleSelection() || this.span.hasClass('k-readonly'))) {\n this._placeholder(true);\n }\n this._inputTemplate();\n this._accessors();\n this._filterHeader();\n this._checkAll();\n this._enable();\n if (options && (options.enable || options.enabled)) {\n this.enable(true);\n }\n this._clearButton();\n },\n destroy: function () {\n kendo.ui.Widget.fn.destroy.call(this);\n if (this.treeview) {\n this.treeview.destroy();\n }\n this.popup.destroy();\n this.wrapper.off(ns);\n this._clear.off(ns);\n this._inputWrapper.off(ns);\n if (this.filterInput) {\n this.filterInput.off(ns);\n }\n if (this.tagList) {\n this.tagList.off(ns);\n }\n kendo.unbind(this.tagList);\n if (this.options.checkAll && this.checkAll) {\n this.checkAll.off(ns);\n }\n if (this._form) {\n this._form.off('reset', this._resetHandler);\n }\n },\n setValue: function (value) {\n value = $.isArray(value) || value instanceof ObservableArray ? value.slice(0) : [value];\n this._values = value;\n },\n items: function () {\n return this.treeview.items();\n },\n value: function (value) {\n var that = this;\n if (value) {\n if (that.filterInput && that.dataSource._filter) {\n that._filtering = true;\n that.dataSource.filter({});\n } else if (!that.dataSource.data().length) {\n that.dataSource.fetch(function () {\n that._selection._setValue(value);\n });\n return;\n }\n }\n return that._selection._setValue(value);\n },\n text: function (text) {\n var loweredText;\n var ignoreCase = this.options.ignoreCase;\n text = text === null ? '' : text;\n if (text !== undefined && !this._isMultipleSelection()) {\n if (typeof text !== 'string') {\n this._textAccessor(text);\n return;\n }\n loweredText = ignoreCase ? text : text.toLowerCase();\n this._selectItemByText(loweredText);\n this._textAccessor(loweredText);\n } else {\n return this._textAccessor();\n }\n },\n _header: function () {\n var list = this;\n var header = $(list.header);\n var template = list.options.headerTemplate;\n this._angularElement(header, 'cleanup');\n kendo.destroy(header);\n header.remove();\n if (!template) {\n list.header = null;\n return;\n }\n var headerTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n header = $(headerTemplate({}));\n list.header = header[0] ? header : null;\n list.list.prepend(header);\n this._angularElement(list.header, 'compile');\n },\n _noData: function () {\n var list = this;\n var noData = $(list.noData);\n var template = list.options.noDataTemplate === true ? list.options.messages.noData : list.options.noDataTemplate;\n list.angular('cleanup', function () {\n return { elements: noData };\n });\n kendo.destroy(noData);\n noData.remove();\n if (!template) {\n list.noData = null;\n return;\n }\n list.noData = $('<div class=\"k-nodata\" style=\"display:none\"><div></div></div>').appendTo(list.list);\n list.noDataTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n },\n _renderNoData: function () {\n var list = this;\n var noData = list.noData;\n if (!noData) {\n return;\n }\n this._angularElement(noData, 'cleanup');\n noData.children(':first').html(list.noDataTemplate({ instance: list }));\n this._angularElement(noData, 'compile');\n },\n _footer: function () {\n var list = this;\n var footer = $(list.footer);\n var template = list.options.footerTemplate;\n this._angularElement(footer, 'cleanup');\n kendo.destroy(footer);\n footer.remove();\n if (!template) {\n list.footer = null;\n return;\n }\n list.footer = $('<div class=\"k-footer\"></div>').appendTo(list.list);\n list.footerTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n },\n _renderFooter: function () {\n var list = this;\n var footer = list.footer;\n if (!footer) {\n return;\n }\n this._angularElement(footer, 'cleanup');\n footer.html(list.footerTemplate({ instance: list }));\n this._angularElement(footer, 'compile');\n },\n _enable: function () {\n var that = this, options = that.options, disabled = that.element.is('[disabled]');\n if (options.enable !== undefined) {\n options.enabled = options.enable;\n }\n if (!options.enabled || disabled) {\n that.enable(false);\n } else {\n that.readonly(that.element.is('[readonly]'));\n }\n },\n _adjustListWidth: function () {\n var that = this, list = that.list, width = list[0].style.width, wrapper = that.wrapper, computedStyle, computedWidth;\n if (!list.data(WIDTH) && width) {\n return;\n }\n computedStyle = window.getComputedStyle ? window.getComputedStyle(wrapper[0], null) : 0;\n computedWidth = parseFloat(computedStyle && computedStyle.width) || outerWidth(wrapper);\n if (computedStyle && browser.msie) {\n computedWidth += parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);\n }\n if (list.css('box-sizing') !== 'border-box') {\n width = computedWidth - (outerWidth(list) - list.width());\n } else {\n width = computedWidth;\n }\n list.css({\n fontFamily: wrapper.css('font-family'),\n width: that.options.autoWidth ? 'auto' : width,\n minWidth: width,\n whiteSpace: that.options.autoWidth ? 'nowrap' : 'normal'\n }).data(WIDTH, width);\n return true;\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(that._initial);\n });\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _popup: function () {\n var list = this;\n list.popup = new ui.Popup(list.list, extend({}, list.options.popup, {\n anchor: list.wrapper,\n open: proxy(list._openHandler, list),\n close: proxy(list._closeHandler, list),\n animation: list.options.animation,\n isRtl: support.isRtl(list.wrapper),\n autosize: list.options.autoWidth\n }));\n },\n _angularElement: function (element, action) {\n if (!element) {\n return;\n }\n this.angular(action, function () {\n return { elements: element };\n });\n },\n _allowOpening: function () {\n return this.options.noDataTemplate || this.treeview.dataSource.flatView().length;\n },\n _placeholder: function (show) {\n if (this.span) {\n this.span.toggleClass('k-readonly', show).text(show ? this.options.placeholder : '');\n }\n },\n _currentValue: function (dataItem) {\n var currentValue = this._value(dataItem);\n if (!currentValue && currentValue !== 0) {\n currentValue = dataItem;\n }\n return currentValue;\n },\n _checkValue: function (dataItem) {\n var value = '';\n var indexOfValue = -1;\n var currentValue = this.value();\n var isMultiple = this.options.tagMode === 'multiple';\n if (dataItem || dataItem === 0) {\n if (dataItem.level) {\n dataItem._level = dataItem.level();\n }\n value = this._currentValue(dataItem);\n indexOfValue = currentValue.indexOf(value);\n }\n if (dataItem.checked) {\n var alreadyAddedTag = $.grep(this._tags, function (item) {\n return item.uid === dataItem._tagUid;\n });\n if (alreadyAddedTag.length) {\n return;\n }\n var itemToAdd = new ObservableObject(dataItem.toJSON());\n dataItem._tagUid = itemToAdd.uid;\n this._tags.push(itemToAdd);\n if (this._tags.length === 1) {\n this.span.hide();\n if (!isMultiple) {\n this._multipleTags.push(itemToAdd);\n }\n }\n if (indexOfValue === -1) {\n currentValue.push(value);\n this.setValue(currentValue);\n }\n } else {\n var itemToRemove = this._tags.find(function (item) {\n return item.uid === dataItem._tagUid;\n });\n var idx = this._tags.indexOf(itemToRemove);\n if (idx !== -1) {\n this._tags.splice(idx, 1);\n } else {\n this._treeViewCheckAllCheck(dataItem);\n return;\n }\n if (this._tags.length === 0) {\n this.span.show();\n if (!isMultiple) {\n this._multipleTags.splice(0, 1);\n }\n }\n if (indexOfValue !== -1) {\n currentValue.splice(indexOfValue, 1);\n this.setValue(currentValue);\n }\n }\n this._treeViewCheckAllCheck(dataItem);\n if (!this._preventChangeTrigger && !this._valueMethodCalled && !this._noInitialValue) {\n this.trigger(CHANGE);\n }\n if (this.options.autoClose && this.popup.visible()) {\n this.close();\n this.wrapper.focus();\n }\n this.popup.position();\n this._toggleCloseVisibility();\n this._updateSelectedOptions();\n },\n _updateSelectedOptions: function () {\n if (this.element[0].tagName.toLowerCase() !== 'select') {\n return;\n }\n var selectedItems = this._tags;\n var options = '';\n var dataItem = null;\n var value = null;\n if (selectedItems.length) {\n for (var idx = 0; idx < selectedItems.length; idx++) {\n dataItem = selectedItems[idx];\n value = this._value(dataItem);\n options += this._option(value, this._text(dataItem), true);\n }\n }\n this.element.html(options);\n },\n _option: function (dataValue, dataText, selected) {\n var option = '<option';\n if (dataValue !== undefined) {\n dataValue += '';\n if (dataValue.indexOf('\"') !== -1) {\n dataValue = dataValue.replace(quotRegExp, '"');\n }\n option += ' value=\"' + dataValue + '\"';\n }\n if (selected) {\n option += ' selected';\n }\n option += '>';\n if (dataText !== undefined) {\n option += kendo.htmlEncode(dataText);\n }\n return option += '</option>';\n },\n _selectValue: function (dataItem) {\n var value = '';\n var text = '';\n if (dataItem || dataItem === 0) {\n if (dataItem.level) {\n dataItem._level = dataItem.level();\n }\n text = this._text(dataItem) || dataItem;\n value = this._currentValue(dataItem);\n }\n if (value === null) {\n value = '';\n }\n this.setValue(value);\n this._textAccessor(text, dataItem);\n this._accessor(value);\n if (!this._valueMethodCalled) {\n this.trigger(CHANGE);\n }\n this._valueMethodCalled = false;\n if (this.options.autoClose && this.popup.visible()) {\n this.close();\n this.wrapper.focus();\n }\n this.popup.position();\n this._toggleCloseVisibility();\n },\n _clearClick: function (e) {\n e.stopPropagation();\n this._clearTextAndValue();\n },\n _clearTextAndValue: function () {\n this.setValue([]);\n this._clearInput();\n this._clearText();\n this._selection._clearValue();\n this.popup.position();\n this._toggleCloseVisibility();\n },\n _clearText: function () {\n if (this.options.placeholder) {\n this._placeholder(true);\n } else {\n if (this.span) {\n this.span.html('');\n }\n }\n },\n _inputTemplate: function () {\n var template = this.options.valueTemplate;\n if (!template) {\n template = $.proxy(kendo.template('#:this._text(data)#', { useWithBlock: false }), this);\n } else {\n template = kendo.template(template);\n }\n this.valueTemplate = template;\n },\n _assignInstance: function (text, value) {\n var dataTextField = this.options.dataTextField;\n var dataItem = {};\n if (dataTextField) {\n assign(dataItem, dataTextField.split(DOT), text);\n assign(dataItem, this.options.dataValueField.split(DOT), value);\n dataItem = new ObservableObject(dataItem);\n } else {\n dataItem = text;\n }\n return dataItem;\n },\n _textAccessor: function (text, dataItem) {\n var valueTemplate = this.valueTemplate;\n var span = this.span;\n if (text === undefined) {\n return span.text();\n }\n span.removeClass('k-readonly');\n if (!dataItem && ($.isPlainObject(text) || text instanceof ObservableObject)) {\n dataItem = text;\n }\n if (!dataItem) {\n dataItem = this._assignInstance(text, this._accessor());\n }\n var getElements = function () {\n return {\n elements: span.get(),\n data: [{ dataItem: dataItem }]\n };\n };\n this.angular('cleanup', getElements);\n try {\n span.html(valueTemplate(dataItem));\n } catch (e) {\n if (span) {\n span.html('');\n }\n }\n this.angular('compile', getElements);\n },\n _accessors: function () {\n var element = this.element;\n var options = this.options;\n var getter = kendo.getter;\n var textField = element.attr(kendo.attr('text-field'));\n var valueField = element.attr(kendo.attr('value-field'));\n var getterFunction = function (field) {\n if ($.isArray(field)) {\n var count = field.length;\n var levels = $.map(field, function (x) {\n return function (d) {\n return d[x];\n };\n });\n return function (dataItem) {\n var level = dataItem._level;\n if (!level && level !== 0) {\n return;\n }\n return levels[Math.min(level, count - 1)](dataItem);\n };\n } else {\n return getter(field);\n }\n };\n if (!options.dataTextField && textField) {\n options.dataTextField = textField;\n }\n if (!options.dataValueField && valueField) {\n options.dataValueField = valueField;\n }\n options.dataTextField = options.dataTextField || 'text';\n options.dataValueField = options.dataValueField || 'value';\n this._text = getterFunction(options.dataTextField);\n this._value = getterFunction(options.dataValueField);\n },\n _accessor: function (value, idx) {\n return this._accessorInput(value, idx);\n },\n _accessorInput: function (value) {\n var element = this.element[0];\n if (value === undefined) {\n return element.value;\n } else {\n if (value === null) {\n value = '';\n }\n element.value = value;\n }\n },\n _clearInput: function () {\n var element = this.element[0];\n element.value = '';\n },\n _clearButton: function () {\n var clearTitle = this.options.messages.clear;\n if (!this._clear) {\n this._clear = $('<span unselectable=\"on\" class=\"k-icon k-clear-value k-i-close\" title=\"' + clearTitle + '\"></span>').attr({\n 'role': 'button',\n 'tabIndex': -1\n });\n }\n if (this.options.clearButton) {\n this._clear.insertAfter(this.span);\n this.wrapper.addClass('k-dropdowntree-clearable');\n } else {\n if (!this.options.clearButton) {\n this._clear.remove();\n }\n }\n },\n _toggleCloseVisibility: function () {\n var isReadOnly = this.element.attr(READONLY);\n var hasValue = this.value() && !this._isMultipleSelection() || this.value().length;\n var valueDoesNotEqualPlaceHolder = this.element.val() && this.element.val() !== this.options.placeholder;\n if (!isReadOnly && (hasValue || valueDoesNotEqualPlaceHolder)) {\n this._showClear();\n } else {\n this._hideClear();\n }\n },\n _showClear: function () {\n if (this._clear) {\n this._clear.removeClass(HIDDENCLASS);\n }\n },\n _hideClear: function () {\n if (this._clear) {\n this._clear.addClass(HIDDENCLASS);\n }\n },\n _openHandler: function (e) {\n this._adjustListWidth();\n if (this.trigger(OPEN)) {\n e.preventDefault();\n } else {\n this.wrapper.attr('aria-expanded', true);\n this.tree.attr('aria-hidden', false).attr('role', 'tree');\n }\n },\n _closeHandler: function (e) {\n if (this.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n this.wrapper.attr('aria-expanded', false);\n this.tree.attr('aria-hidden', true);\n }\n },\n _treeview: function () {\n var that = this;\n if (that.options.height) {\n that.tree.css('max-height', that.options.height);\n }\n that.tree.attr('id', kendo.guid());\n that.treeview = new TreeView(that.tree, extend({}, that.options.treeview), that);\n that.dataSource = that.treeview.dataSource;\n that.treeview.bind('select', function (e) {\n that.trigger('select', e);\n });\n },\n _treeViewDataBound: function (e) {\n if (e.node && this._prev && this._prev.length) {\n e.sender.expand(e.node);\n }\n if (this._filtering) {\n if (!e.node) {\n this._filtering = false;\n }\n if (!this._isMultipleSelection()) {\n this._deselectItem(e);\n }\n return;\n }\n if (!this.treeview) {\n this.treeview = e.sender;\n }\n if (!e.node) {\n var rootItems = e.sender.dataSource.data();\n this._checkLoadedItems(rootItems);\n if (this._noInitialValue) {\n this._noInitialValue = false;\n }\n } else {\n var rootItem = e.sender.dataItem(e.node);\n if (rootItem) {\n var subItems = rootItem.children.data();\n this._checkLoadedItems(subItems);\n }\n }\n this.trigger('dataBound', e);\n },\n _deselectItem: function (e) {\n var items = [];\n if (!e.node) {\n items = e.sender.dataSource.data();\n } else {\n var rootItem = e.sender.dataItem(e.node);\n if (rootItem) {\n items = rootItem.children.data();\n }\n }\n for (var i = 0; i < items.length; i++) {\n if (items[i].selected && !this._valueComparer(items[i], this.value())) {\n items[i].set('selected', false);\n }\n }\n },\n _checkLoadedItems: function (items) {\n var value = this.value();\n if (!items) {\n return;\n }\n for (var idx = 0; idx < items.length; idx++) {\n this._selection._checkLoadedItem(items[idx], value);\n }\n },\n _treeViewCheckAllCheck: function (dataItem) {\n if (this.options.checkAll && this.checkAll) {\n this._getAllChecked();\n if (dataItem.checked) {\n this._checkCheckAll();\n } else {\n this._uncheckCheckAll();\n }\n }\n },\n _checkCheckAll: function () {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n if (this._allItemsAreChecked) {\n checkAllCheckbox.prop('checked', true).prop('indeterminate', false);\n } else {\n checkAllCheckbox.prop('indeterminate', true);\n }\n },\n _uncheckCheckAll: function () {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n if (this._allItemsAreUnchecked) {\n checkAllCheckbox.prop('checked', false).prop('indeterminate', false);\n } else {\n checkAllCheckbox.prop('indeterminate', true);\n }\n },\n _filterHeader: function () {\n var icon;\n if (this.filterInput) {\n this.filterInput.off(ns).parent().remove();\n this.filterInput = null;\n }\n if (this._isFilterEnabled()) {\n this._disableCheckChildren();\n icon = '<span class=\"k-icon k-i-zoom\"></span>';\n this.filterInput = $('<input class=\"k-textbox\"/>').attr({\n placeholder: this.element.attr('placeholder'),\n title: this.element.attr('title'),\n role: 'listbox',\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n this.filterInput.on('input', proxy(this._filterChange, this));\n $('<span class=\"k-list-filter\" />').insertBefore(this.tree).append(this.filterInput.add(icon));\n }\n },\n _filterChange: function () {\n if (this.filterInput) {\n this._search();\n }\n },\n _disableCheckChildren: function () {\n if (this._isMultipleSelection() && this.options.treeview.checkboxes && this.options.treeview.checkboxes.checkChildren) {\n this.options.treeview.checkboxes.checkChildren = false;\n }\n },\n _checkAll: function () {\n if (this.checkAll) {\n this.checkAll.find('.k-checkbox-label, .k-checkbox').off(ns);\n this.checkAll.remove();\n this.checkAll = null;\n }\n if (this._isMultipleSelection() && this.options.checkAll) {\n this.checkAll = $('<div class=\"k-check-all\"><input type=\"checkbox\" class=\"k-checkbox\"/><span class=\"k-checkbox-label\">Check All</span></div>').insertBefore(this.tree);\n this.checkAll.find('.k-checkbox-label').html(kendo.template(this.options.checkAllTemplate)({ instance: this }));\n this.checkAll.find('.k-checkbox-label').on(CLICK + ns, proxy(this._clickCheckAll, this));\n this.checkAll.find('.k-checkbox').on('change' + ns, proxy(this._changeCheckAll, this)).on('keydown' + ns, proxy(this._keydownCheckAll, this));\n this._disabledCheckedItems = [];\n this._disabledUnCheckedItems = [];\n this._getAllChecked();\n if (!this._allItemsAreUnchecked) {\n this._checkCheckAll();\n }\n }\n },\n _changeCheckAll: function () {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n var isChecked = checkAllCheckbox.prop('checked');\n if (!browser.msie && !browser.edge) {\n this._updateCheckAll(isChecked);\n }\n },\n _updateCheckAll: function (isChecked) {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n this._toggleCheckAllItems(isChecked);\n checkAllCheckbox.prop('checked', isChecked);\n if (this._disabledCheckedItems.length && this._disabledUnCheckedItems.length) {\n checkAllCheckbox.prop('indeterminate', true);\n } else if (this._disabledCheckedItems.length) {\n checkAllCheckbox.prop('indeterminate', !isChecked);\n } else if (this._disabledUnCheckedItems.length) {\n checkAllCheckbox.prop('indeterminate', isChecked);\n } else {\n checkAllCheckbox.prop('indeterminate', false);\n }\n this._disabledCheckedItems = [];\n this._disabledUnCheckedItems = [];\n },\n _keydownCheckAll: function (e) {\n var key = e.keyCode;\n var altKey = e.altKey;\n if (altKey && key === keys.UP || key === keys.ESC) {\n this.close();\n this.wrapper.focus();\n e.preventDefault();\n return;\n }\n if (key === keys.UP) {\n if (this.filterInput) {\n this.filterInput.focus();\n } else {\n this.wrapper.focus();\n }\n e.preventDefault();\n }\n if (key === keys.DOWN) {\n if (this.tree && this.tree.is(':visible')) {\n this.tree.focus();\n }\n e.preventDefault();\n }\n if (key === keys.SPACEBAR && (browser.msie || browser.edge)) {\n this._clickCheckAll();\n e.preventDefault();\n }\n },\n _clickCheckAll: function () {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n var isChecked = checkAllCheckbox.prop('checked');\n this._updateCheckAll(!isChecked);\n checkAllCheckbox.focus();\n },\n _dfs: function (items, action, prop) {\n for (var idx = 0; idx < items.length; idx++) {\n if (!this[action](items[idx], prop)) {\n break;\n }\n this._traverceChildren(items[idx], action, prop);\n }\n },\n _uncheckItemByUid: function (uid) {\n this._dfs(this.dataSource.data(), '_uncheckItemEqualsUid', uid);\n },\n _uncheckItemEqualsUid: function (item, uid) {\n if (item.enabled !== false && item._tagUid == uid) {\n item.set('checked', false);\n return false;\n }\n return true;\n },\n _selectItemByText: function (text) {\n this._dfs(this.dataSource.data(), '_itemEqualsText', text);\n },\n _itemEqualsText: function (item, text) {\n if (item.enabled !== false && this._text(item) === text) {\n this.treeview.select(this.treeview.findByUid(item.uid));\n this._selectValue(item);\n return false;\n }\n return true;\n },\n _selectItemByValue: function (value) {\n this._dfs(this.dataSource.data(), '_itemEqualsValue', value);\n },\n _itemEqualsValue: function (item, value) {\n if (item.enabled !== false && this._valueComparer(item, value)) {\n this.treeview.select(this.treeview.findByUid(item.uid));\n return false;\n }\n return true;\n },\n _checkItemByValue: function (value) {\n var items = this.treeview.dataItems();\n for (var idx = 0; idx < value.length; idx++) {\n this._dfs(items, '_checkItemEqualsValue', value[idx]);\n }\n },\n _checkItemEqualsValue: function (item, value) {\n if (item.enabled !== false && this._valueComparer(item, value)) {\n item.set('checked', true);\n return false;\n }\n return true;\n },\n _valueComparer: function (item, value) {\n var itemValue = this._value(item);\n var itemText;\n if (!this._isNullorUndefined(itemValue)) {\n if (this._isNullorUndefined(value)) {\n return false;\n }\n var newValue = this._value(value);\n if (newValue) {\n return itemValue == newValue;\n } else {\n return itemValue == value;\n }\n }\n itemText = this._text(item);\n if (itemText) {\n if (this._text(value)) {\n return itemText == this._text(value);\n } else {\n return itemText == value;\n }\n }\n return false;\n },\n _isNullorUndefined: function (value) {\n return value === undefined || value === null;\n },\n _getAllChecked: function () {\n this._allCheckedItems = [];\n this._allItemsAreChecked = true;\n this._allItemsAreUnchecked = true;\n this._dfs(this.dataSource.data(), '_getAllCheckedItems');\n return this._allCheckedItems;\n },\n _getAllCheckedItems: function (item) {\n if (this._allItemsAreChecked) {\n this._allItemsAreChecked = item.checked;\n }\n if (this._allItemsAreUnchecked) {\n this._allItemsAreUnchecked = !item.checked;\n }\n if (item.checked) {\n this._allCheckedItems.push(item);\n }\n return true;\n },\n _traverceChildren: function (item, action, prop) {\n var childrenField = item._childrenOptions && item._childrenOptions.schema ? item._childrenOptions.schema.data : null;\n var subItems = item[childrenField] || item.items || item.children;\n if (!subItems) {\n return;\n }\n this._dfs(subItems, action, prop);\n },\n _toggleCheckAllItems: function (checked) {\n this._dfs(this.dataSource.data(), '_checkAllCheckItem', checked);\n },\n _checkAllCheckItem: function (item, checked) {\n if (item.enabled === false) {\n if (item.checked) {\n this._disabledCheckedItems.push(item);\n } else {\n this._disabledUnCheckedItems.push(item);\n }\n } else {\n item.set('checked', checked);\n }\n return true;\n },\n _isFilterEnabled: function () {\n var filter = this.options.filter;\n return filter && filter !== 'none';\n },\n _editable: function (options) {\n var that = this;\n var element = that.element;\n var disable = options.disable;\n var readonly = options.readonly;\n var wrapper = that.wrapper.add(that.filterInput).off(ns);\n var dropDownWrapper = that._inputWrapper.off(HOVEREVENTS);\n if (that._isMultipleSelection()) {\n that.tagList.off(CLICK + ns);\n }\n if (!readonly && !disable) {\n element.removeAttr(DISABLED).removeAttr(READONLY);\n dropDownWrapper.removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n that._clear.on('click' + ns, proxy(that._clearClick, that));\n wrapper.attr(TABINDEX, wrapper.data(TABINDEX)).attr(ARIA_DISABLED, false).on('keydown' + ns, proxy(that._keydown, that)).on('focusin' + ns, proxy(that._focusinHandler, that)).on('focusout' + ns, proxy(that._focusoutHandler, that));\n that.wrapper.on(CLICK + ns, proxy(that._wrapperClick, that));\n if (this._isMultipleSelection()) {\n that.tagList.on(CLICK + ns, 'li.k-button', function (e) {\n $(e.currentTarget).addClass(FOCUSED);\n });\n that.tagList.on(CLICK + ns, '.k-select', function (e) {\n that._removeTagClick(e);\n });\n }\n } else if (disable) {\n wrapper.removeAttr(TABINDEX);\n dropDownWrapper.addClass(STATEDISABLED);\n } else {\n wrapper.attr(TABINDEX, wrapper.data(TABINDEX));\n dropDownWrapper.removeClass(STATEDISABLED);\n wrapper.on('focusin' + ns, proxy(that._focusinHandler, that)).on('focusout' + ns, proxy(that._focusoutHandler, that));\n }\n element.attr(DISABLED, disable).attr(READONLY, readonly);\n wrapper.attr(ARIA_DISABLED, disable);\n },\n _focusinHandler: function () {\n this._inputWrapper.addClass(FOCUSED);\n this._prevent = false;\n },\n _focusoutHandler: function () {\n var that = this;\n if (this._isMultipleSelection()) {\n this.tagList.find(DOT + FOCUSED).removeClass(FOCUSED);\n }\n if (!that._prevent) {\n this._inputWrapper.removeClass(FOCUSED);\n that._prevent = true;\n that.element.blur();\n }\n },\n _toggle: function (open) {\n open = open !== undefined ? open : !this.popup.visible();\n this[open ? OPEN : CLOSE]();\n },\n _wrapperClick: function (e) {\n e.preventDefault();\n this.popup.unbind('activate', this._focusInputHandler);\n this._focused = this.wrapper;\n this._prevent = false;\n this._toggle();\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _focusInput: function () {\n if (this.filterInput) {\n this.filterInput.focus();\n } else if (this.checkAll) {\n this.checkAll.find('.k-checkbox').focus();\n } else if (this.tree.is(':visible')) {\n this.tree.focus();\n }\n },\n _keydown: function (e) {\n var key = e.keyCode;\n var altKey = e.altKey;\n var isFilterInputActive;\n var isWrapperActive;\n var focused, tagItem;\n var isPopupVisible = this.popup.visible();\n if (this.filterInput) {\n isFilterInputActive = this.filterInput[0] === activeElement();\n }\n if (this.wrapper) {\n isWrapperActive = this.wrapper[0] === activeElement();\n }\n if (isWrapperActive) {\n if (key === keys.ESC) {\n this._clearTextAndValue();\n e.preventDefault();\n return;\n }\n if (this._isMultipleSelection()) {\n if (key === keys.LEFT) {\n this._focusPrevTag();\n e.preventDefault();\n return;\n }\n if (key === keys.RIGHT) {\n this._focusNextTag();\n e.preventDefault();\n return;\n }\n if (key === keys.HOME) {\n this._focusFirstTag();\n e.preventDefault();\n return;\n }\n if (key === keys.END) {\n this._focusLastTag();\n e.preventDefault();\n return;\n }\n if (key === keys.DELETE) {\n focused = this.tagList.find(DOT + FOCUSED).first();\n if (focused.length) {\n tagItem = this._tags[focused.index()];\n this._removeTag(tagItem);\n }\n e.preventDefault();\n return;\n }\n if (key === keys.BACKSPACE) {\n focused = this.tagList.find(DOT + FOCUSED).first();\n if (focused.length) {\n tagItem = this._tags[focused.index()];\n this._removeTag(tagItem);\n } else {\n focused = this._focusLastTag();\n if (focused.length) {\n tagItem = this._tags[focused.index()];\n this._removeTag(tagItem);\n }\n }\n e.preventDefault();\n return;\n }\n }\n }\n if (isFilterInputActive) {\n if (key === keys.ESC) {\n this._clearFilter();\n }\n if (key === keys.UP && !altKey) {\n this.wrapper.focus();\n e.preventDefault();\n }\n if (browser.msie && browser.version < 10) {\n if (key === keys.BACKSPACE || key === keys.DELETE) {\n this._search();\n }\n }\n }\n if (altKey && key === keys.UP || key === keys.ESC) {\n this.wrapper.focus();\n this.close();\n e.preventDefault();\n return;\n }\n if (key === keys.ENTER && this._typingTimeout && this.filterInput && isPopupVisible) {\n e.preventDefault();\n return;\n }\n if (key === keys.SPACEBAR && !isFilterInputActive) {\n this._toggle(!isPopupVisible);\n e.preventDefault();\n }\n if (altKey && key === keys.DOWN && !isPopupVisible) {\n this.open();\n e.preventDefault();\n }\n if (key === keys.DOWN && isPopupVisible) {\n if (this.filterInput && !isFilterInputActive) {\n this.filterInput.focus();\n } else if (this.checkAll && this.checkAll.is(':visible')) {\n this.checkAll.find('input').focus();\n } else if (this.tree.is(':visible')) {\n this.tree.focus();\n }\n e.preventDefault();\n }\n },\n _focusPrevTag: function () {\n var focused = this.tagList.find(DOT + FOCUSED);\n if (focused.length) {\n var activedescendant = this.wrapper.attr('aria-activedescendant');\n focused.first().removeClass(FOCUSED).removeAttr('id').prev().addClass(FOCUSED).attr('id', activedescendant);\n this.wrapper.attr('aria-activedescendant', activedescendant);\n } else {\n this._focusLastTag();\n }\n },\n _focusNextTag: function () {\n var focused = this.tagList.find(DOT + FOCUSED);\n if (focused.length) {\n var activedescendant = this.wrapper.attr('aria-activedescendant');\n focused.first().removeClass(FOCUSED).removeAttr('id').next().addClass(FOCUSED).attr('id', activedescendant);\n this.wrapper.attr('aria-activedescendant', activedescendant);\n } else {\n this._focusFirstTag();\n }\n },\n _focusFirstTag: function () {\n var activedescendant = this.wrapper.attr('aria-activedescendant');\n this._clearDisabledTag();\n var firstTag = this.tagList.children('li').first().addClass(FOCUSED).attr('id', activedescendant);\n this.wrapper.attr('aria-activedescendant', activedescendant);\n return firstTag;\n },\n _focusLastTag: function () {\n var activedescendant = this.wrapper.attr('aria-activedescendant');\n this._clearDisabledTag();\n var lastTag = this.tagList.children('li').last().addClass(FOCUSED).attr('id', activedescendant);\n this.wrapper.attr('aria-activedescendant', activedescendant);\n return lastTag;\n },\n _clearDisabledTag: function () {\n this.tagList.find(DOT + FOCUSED).removeClass(FOCUSED).removeAttr('id');\n },\n _search: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = setTimeout(function () {\n var value = that.filterInput.val();\n if (that._prev !== value) {\n that._prev = value;\n that.search(value);\n }\n that._typingTimeout = null;\n }, that.options.delay);\n },\n _clearFilter: function () {\n if (this.filterInput.val().length) {\n this.filterInput.val('');\n this._prev = '';\n this._filtering = true;\n this.treeview.dataSource.filter({});\n }\n },\n _removeTagClick: function (e) {\n e.stopPropagation();\n var tagItem = this._tags[$(e.currentTarget.parentElement).index()];\n this._removeTag(tagItem);\n },\n _removeTag: function (tagItem) {\n if (!tagItem) {\n return;\n }\n var uid = tagItem.uid;\n this._uncheckItemByUid(uid);\n }\n });\n function assign(instance, fields, value) {\n var idx = 0, lastIndex = fields.length - 1, field;\n for (; idx < lastIndex; ++idx) {\n field = fields[idx];\n if (!(field in instance)) {\n instance[field] = {};\n }\n instance = instance[field];\n }\n instance[fields[lastIndex]] = value;\n }\n ui.plugin(DropDownTree);\n var SingleSelection = kendo.Class.extend({\n init: function (view) {\n this._dropdowntree = view;\n },\n _initWrapper: function () {\n this._wrapper();\n this._span();\n },\n _preselect: function (data) {\n var dropdowntree = this._dropdowntree;\n dropdowntree._selectValue(data);\n },\n _wrapper: function () {\n var dropdowntree = this._dropdowntree, element = dropdowntree.element, DOMelement = element[0], wrapper;\n wrapper = element.parent();\n if (!wrapper.is('span.k-widget')) {\n wrapper = element.wrap('<span />').parent();\n wrapper[0].style.cssText = DOMelement.style.cssText;\n wrapper[0].title = DOMelement.title;\n }\n dropdowntree._focused = dropdowntree.wrapper = wrapper.addClass('k-widget k-dropdowntree').addClass(DOMelement.className).css('display', '').attr({\n accesskey: element.attr('accesskey'),\n unselectable: 'on',\n role: 'listbox',\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n element.hide().removeAttr('accesskey');\n },\n _span: function () {\n var dropdowntree = this._dropdowntree, wrapper = dropdowntree.wrapper, SELECTOR = 'span.k-input', span;\n span = wrapper.find(SELECTOR);\n if (!span[0]) {\n wrapper.append('<span unselectable=\"on\" class=\"k-dropdown-wrap k-state-default\"><span unselectable=\"on\" class=\"k-input\"> </span><span unselectable=\"on\" class=\"k-select\" aria-label=\"select\"><span class=\"k-icon k-i-arrow-60-down\"></span></span></span>').append(dropdowntree.element);\n span = wrapper.find(SELECTOR);\n }\n dropdowntree.span = span;\n dropdowntree._inputWrapper = $(wrapper[0].firstChild);\n dropdowntree._arrow = wrapper.find('.k-select');\n dropdowntree._arrowIcon = dropdowntree._arrow.find('.k-icon');\n },\n _setValue: function (value) {\n var dropdowntree = this._dropdowntree;\n var currentValue;\n if (value === undefined || value === null) {\n currentValue = dropdowntree._values.slice()[0];\n value = typeof currentValue === 'object' ? currentValue : dropdowntree._accessor() || currentValue;\n return value === undefined || value === null ? '' : value;\n }\n dropdowntree._valueMethodCalled = true;\n if (value.length === 0) {\n dropdowntree._clearTextAndValue();\n dropdowntree._valueMethodCalled = false;\n return;\n }\n dropdowntree._selectItemByValue(value);\n dropdowntree._toggleCloseVisibility();\n },\n _clearValue: function () {\n var dropdowntree = this._dropdowntree;\n var selectedNode = dropdowntree.treeview.select();\n if (dropdowntree.treeview.dataItem(selectedNode)) {\n dropdowntree.treeview.dataItem(selectedNode).set('selected', false);\n if (!dropdowntree._valueMethodCalled) {\n dropdowntree.trigger(CHANGE);\n }\n }\n },\n _checkLoadedItem: function (tempItem, value) {\n var dropdowntree = this._dropdowntree;\n if (!dropdowntree._isNullorUndefined(value) && value !== '' && dropdowntree._valueComparer(tempItem, value) || !value && tempItem.selected) {\n dropdowntree.treeview.select(dropdowntree.treeview.findByUid(tempItem.uid));\n }\n }\n });\n var MultipleSelection = kendo.Class.extend({\n init: function (view) {\n this._dropdowntree = view;\n },\n _initWrapper: function () {\n var dropdowntree = this._dropdowntree;\n this._tagTemplate();\n dropdowntree.element.attr('multiple', 'multiple').hide();\n this._wrapper();\n dropdowntree._tags = new ObservableArray([]);\n dropdowntree._multipleTags = new ObservableArray([]);\n this._tagList();\n dropdowntree.span = $('<span unselectable=\"on\" class=\"k-input\"> </span>').insertAfter(dropdowntree.tagList);\n dropdowntree._inputWrapper = $(dropdowntree.wrapper[0].firstChild);\n },\n _preselect: function (data, value) {\n var dropdowntree = this._dropdowntree;\n var valueToSelect = value || dropdowntree.options.value;\n if (!$.isArray(data) && !(data instanceof kendo.data.ObservableArray)) {\n data = [data];\n }\n if ($.isPlainObject(data[0]) || data[0] instanceof kendo.data.ObservableObject || !dropdowntree.options.dataValueField) {\n dropdowntree.dataSource.data(data);\n dropdowntree.value(valueToSelect);\n }\n },\n _tagTemplate: function () {\n var dropdowntree = this._dropdowntree;\n var options = dropdowntree.options;\n var tagTemplate = options.valueTemplate;\n var isMultiple = options.tagMode === 'multiple';\n var singleTag = options.messages.singleTag;\n tagTemplate = tagTemplate ? kendo.template(tagTemplate) : dropdowntree.valueTemplate;\n dropdowntree.valueTemplate = function (data) {\n if (isMultiple) {\n return '<li class=\"k-button ' + (data.enabled === false ? 'k-state-disabled' : '') + '\" unselectable=\"on\" role=\"option\" ' + (data.enabled === false ? 'aria-disabled=\"true\"' : '') + '>' + '<span unselectable=\"on\">' + tagTemplate(data) + '</span>' + '<span title=\"' + dropdowntree.options.messages.deleteTag + '\" aria-label=\"' + dropdowntree.options.messages.deleteTag + '\" class=\"k-select\">' + '<span class=\"k-icon k-i-close\"></span>' + '</span>' + '</li>';\n }\n return '<li class=\"k-button\" unselectable=\"on\" role=\"option\">' + '<span unselectable=\"on\" data-bind=\"text: tags.length\"></span>' + '<span unselectable=\"on\"> ' + singleTag + '</span>' + '</li>';\n };\n },\n _wrapper: function () {\n var dropdowntree = this._dropdowntree, element = dropdowntree.element, wrapper = element.parent('span.k-dropdowntree');\n if (!wrapper[0]) {\n wrapper = element.wrap('<div class=\"k-widget k-dropdowntree\" unselectable=\"on\" />').parent();\n wrapper[0].style.cssText = element[0].style.cssText;\n wrapper[0].title = element[0].title;\n $('<div class=\"k-multiselect-wrap k-floatwrap\" unselectable=\"on\" />').insertBefore(element);\n }\n dropdowntree.wrapper = wrapper.addClass(element[0].className).css('display', '').attr({\n role: 'listbox',\n 'aria-activedescendant': kendo.guid(),\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n dropdowntree._innerWrapper = $(wrapper[0].firstChild);\n },\n _tagList: function () {\n var dropdowntree = this._dropdowntree, tagList = dropdowntree._innerWrapper.children('ul');\n if (!tagList[0]) {\n var isMultiple = dropdowntree.options.tagMode === 'multiple';\n var tagCollection = isMultiple ? 'tags' : 'multipleTag';\n tagList = $('<ul role=\"listbox\" unselectable=\"on\" data-template=\"tagTemplate\" data-bind=\"source: ' + tagCollection + '\" class=\"k-reset\"/>').appendTo(dropdowntree._innerWrapper);\n }\n dropdowntree.tagList = tagList;\n dropdowntree.tagList.attr('id', kendo.guid() + '_tagList');\n dropdowntree.wrapper.attr('aria-owns', dropdowntree.tagList.attr('id'));\n var viewModel = kendo.observable({\n multipleTag: dropdowntree._multipleTags,\n tags: dropdowntree._tags,\n tagTemplate: dropdowntree.valueTemplate\n });\n kendo.bind(dropdowntree.tagList, viewModel);\n dropdowntree.tagList.attr('data-stop', true);\n },\n _setValue: function (value) {\n var dropdowntree = this._dropdowntree;\n var oldValues = dropdowntree._values;\n if (value === undefined || value === null) {\n return dropdowntree._values.slice();\n }\n dropdowntree.setValue(value);\n dropdowntree._valueMethodCalled = true;\n if (value.length) {\n this._removeValues(oldValues, value);\n dropdowntree._checkItemByValue(value);\n } else {\n dropdowntree._clearTextAndValue();\n }\n dropdowntree._valueMethodCalled = false;\n dropdowntree._toggleCloseVisibility();\n },\n _removeValues: function (oldValues, value) {\n var dropdowntree = this._dropdowntree;\n var removedValues = this._getNewValues(oldValues, value);\n for (var idx = 0; idx < removedValues.length; idx++) {\n for (var j = 0; j < dropdowntree._tags.length; j++) {\n if (dropdowntree._valueComparer(dropdowntree._tags[j], removedValues[idx])) {\n dropdowntree._uncheckItemByUid(dropdowntree._tags[j].uid);\n }\n }\n }\n },\n _getNewValues: function (oldValues, value) {\n var removedValues = [];\n for (var idx = 0; idx < oldValues.length; idx++) {\n if (value.indexOf(oldValues[idx]) === -1) {\n removedValues.push(oldValues[idx]);\n }\n }\n return removedValues;\n },\n _clearValue: function () {\n var dropdowntree = this._dropdowntree;\n var tagsArray = dropdowntree._tags.slice();\n for (var idx = 0; idx < tagsArray.length; idx++) {\n var uid = tagsArray[idx].uid;\n dropdowntree._preventChangeTrigger = true;\n dropdowntree._uncheckItemByUid(uid);\n }\n if (tagsArray.length) {\n dropdowntree._preventChangeTrigger = false;\n if (!dropdowntree._valueMethodCalled) {\n dropdowntree.trigger(CHANGE);\n }\n }\n },\n _checkLoadedItem: function (tempItem, value) {\n var dropdowntree = this._dropdowntree;\n if (dropdowntree._noInitialValue && tempItem.checked) {\n dropdowntree._checkValue(tempItem);\n return;\n }\n if (value.length && (value.indexOf(dropdowntree._currentValue(tempItem)) !== -1 || value.indexOf(tempItem)) !== -1 && !this._findTag(dropdowntree._currentValue(tempItem))) {\n if (tempItem.checked) {\n dropdowntree._checkValue(tempItem);\n } else {\n tempItem.set('checked', true);\n }\n }\n },\n _findTag: function (tempItemValue) {\n var dropdowntree = this._dropdowntree;\n return dropdowntree._tags.find(function (item) {\n return dropdowntree._valueComparer(item, tempItemValue);\n });\n }\n });\n kendo.ui.DropDownTree.SingleSelection = SingleSelection;\n kendo.ui.DropDownTree.MultipleSelection = MultipleSelection;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.combobox', [\n 'kendo.list',\n 'kendo.mobile.scroller',\n 'kendo.virtuallist'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'combobox',\n name: 'ComboBox',\n category: 'web',\n description: 'The ComboBox widget allows the selection from pre-defined values or entering a new value.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, List = ui.List, Select = ui.Select, caret = kendo.caret, support = kendo.support, placeholderSupported = support.placeholder, activeElement = kendo._activeElement, keys = kendo.keys, ns = '.kendoComboBox', nsFocusEvent = ns + 'FocusEvent', CLICK = 'click' + ns, MOUSEDOWN = 'mousedown' + ns, DISABLED = 'disabled', READONLY = 'readonly', CHANGE = 'change', LOADING = 'k-i-loading', DEFAULT = 'k-state-default', FOCUSED = 'k-state-focused', STATEDISABLED = 'k-state-disabled', ARIA_DISABLED = 'aria-disabled', AUTOCOMPLETEVALUE = 'off', STATE_FILTER = 'filter', STATE_ACCEPT = 'accept', STATE_REBIND = 'rebind', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, proxy = $.proxy, newLineRegEx = /(\\r\\n|\\n|\\r)/gm;\n var ComboBox = Select.extend({\n init: function (element, options) {\n var that = this, text, disabled;\n that.ns = ns;\n options = $.isArray(options) ? { dataSource: options } : options;\n Select.fn.init.call(that, element, options);\n options = that.options;\n element = that.element.on('focus' + ns, proxy(that._focusHandler, that));\n options.placeholder = options.placeholder || element.attr('placeholder');\n that._reset();\n that._wrapper();\n that._input();\n that._clearButton();\n that._tabindex(that.input);\n that._popup();\n that._dataSource();\n that._ignoreCase();\n that._enable();\n that._attachFocusEvents();\n that._oldIndex = that.selectedIndex = -1;\n that._aria();\n that._initialIndex = options.index;\n that.requireValueMapper(that.options);\n that._initList();\n that._cascade();\n if (options.autoBind) {\n that._filterSource();\n } else {\n text = options.text;\n if (!text && that._isSelect) {\n text = element.children(':selected').text();\n }\n if (text) {\n that._setText(text);\n }\n }\n if (!text) {\n that._placeholder();\n }\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n kendo.notify(that);\n that._toggleCloseVisibility();\n },\n options: {\n name: 'ComboBox',\n enabled: true,\n index: -1,\n text: null,\n value: null,\n autoBind: true,\n delay: 200,\n dataTextField: '',\n dataValueField: '',\n minLength: 1,\n enforceMinLength: false,\n height: 200,\n highlightFirst: true,\n filter: 'none',\n placeholder: '',\n suggest: false,\n cascadeFrom: '',\n cascadeFromField: '',\n cascadeFromParentField: '',\n ignoreCase: true,\n animation: {},\n virtual: false,\n template: null,\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#',\n clearButton: true,\n syncValueAndText: true,\n autoWidth: false,\n popup: null\n },\n events: [\n 'open',\n 'close',\n CHANGE,\n 'select',\n 'filtering',\n 'dataBinding',\n 'dataBound',\n 'cascade',\n 'set'\n ],\n setOptions: function (options) {\n var listOptions = this._listOptions(options);\n Select.fn.setOptions.call(this, options);\n this.listView.setOptions(listOptions);\n this._accessors();\n this._aria();\n this._clearButton();\n },\n destroy: function () {\n var that = this;\n that.input.off(ns);\n that.input.off(nsFocusEvent);\n that.element.off(ns);\n that._inputWrapper.off(ns);\n clearTimeout(that._pasteTimeout);\n that._arrow.off(CLICK + ' ' + MOUSEDOWN);\n that._clear.off(CLICK + ' ' + MOUSEDOWN);\n Select.fn.destroy.call(that);\n },\n _change: function () {\n var that = this;\n var text = that.text();\n var hasText = text && text !== that._oldText && text !== that.options.placeholder;\n var index = that.selectedIndex;\n var isCustom = index === -1;\n if (!that.options.syncValueAndText && !that.value() && isCustom && hasText) {\n that._old = '';\n that._oldIndex = index;\n that._oldText = text;\n if (!that._typing) {\n that.element.trigger(CHANGE);\n }\n that.trigger(CHANGE);\n that._typing = false;\n return;\n }\n Select.fn._change.call(that);\n that._toggleCloseVisibility();\n },\n _attachFocusEvents: function () {\n var that = this;\n that.input.on('focus' + nsFocusEvent, proxy(that._inputFocus, that)).on('focusout' + nsFocusEvent, proxy(that._inputFocusout, that));\n },\n _focusHandler: function () {\n this.input.focus();\n },\n _arrowClick: function () {\n this._toggle();\n },\n _inputFocus: function () {\n this._inputWrapper.addClass(FOCUSED);\n this._placeholder(false);\n },\n _inputFocusout: function () {\n var that = this;\n var value = that.value();\n that._userTriggered = true;\n that._inputWrapper.removeClass(FOCUSED);\n clearTimeout(that._typingTimeout);\n that._typingTimeout = null;\n that.text(that.text());\n var item = that._focus();\n var dataItem = this.listView.dataItemByIndex(this.listView.getElementIndex(item));\n if (value !== that.value() && that.trigger('select', {\n dataItem: dataItem,\n item: item\n })) {\n that.value(value);\n return;\n }\n that._placeholder();\n that._blur();\n that.element.blur();\n },\n _inputPaste: function () {\n var that = this;\n clearTimeout(that._pasteTimeout);\n that._pasteTimeout = null;\n that._pasteTimeout = setTimeout(function () {\n that.search();\n });\n },\n _editable: function (options) {\n var that = this, disable = options.disable, readonly = options.readonly, wrapper = that._inputWrapper.off(ns), input = that.element.add(that.input.off(ns)), arrow = that._arrow.off(CLICK + ' ' + MOUSEDOWN), clear = that._clear;\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n input.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false);\n arrow.on(CLICK, proxy(that._arrowClick, that)).on(MOUSEDOWN, function (e) {\n e.preventDefault();\n });\n clear.on(CLICK + ' touchend' + ns, proxy(that._clearValue, that)).on(MOUSEDOWN, function (e) {\n e.preventDefault();\n });\n that.input.on('keydown' + ns, proxy(that._keydown, that)).on('input' + ns, proxy(that._search, that)).on('paste' + ns, proxy(that._inputPaste, that));\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n input.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable);\n }\n that._toggleCloseVisibility();\n },\n open: function () {\n var that = this;\n var state = that._state;\n var isFiltered = that.dataSource.filter() ? that.dataSource.filter().filters.length > 0 : false;\n var reinitialized = !that.ul.find(that.listView.focus()).length;\n if (that.popup.visible()) {\n return;\n }\n if (!that.listView.bound() && state !== STATE_FILTER || state === STATE_ACCEPT) {\n that._open = true;\n that._state = STATE_REBIND;\n if (that.options.minLength !== 1 && !isFiltered || isFiltered && that.value() && that.selectedIndex === -1) {\n that.refresh();\n that._openPopup();\n if (!this.options.virtual) {\n that.listView.bound(false);\n }\n } else {\n that._filterSource();\n }\n } else if (that._allowOpening()) {\n that.popup._hovered = true;\n that._openPopup();\n if (that.options.virtual) {\n that._focusItem();\n } else if (reinitialized && that.options.highlightFirst) {\n that.listView.focus(0);\n }\n }\n },\n _scrollToFocusedItem: function () {\n var listView = this.listView;\n listView.scrollToIndex(listView.getElementIndex(listView.focus()));\n },\n _openPopup: function () {\n this.popup.one('activate', proxy(this._scrollToFocusedItem, this));\n this.popup.open();\n },\n _updateSelectionState: function () {\n var that = this;\n var text = that.options.text;\n var value = that.options.value;\n if (that.listView.isFiltered()) {\n return;\n }\n if (that.selectedIndex === -1) {\n if (text === undefined || text === null) {\n text = value;\n }\n that._accessor(value);\n that.input.val(text || that.input.val());\n that._placeholder();\n } else if (that._oldIndex === -1) {\n that._oldIndex = that.selectedIndex;\n }\n },\n _buildOptions: function (data) {\n var that = this;\n if (!that._isSelect) {\n return;\n }\n var custom = that._customOption;\n if (that._state === STATE_REBIND) {\n that._state = '';\n }\n that._customOption = undefined;\n that._options(data, '', that.value());\n if (custom && custom[0].selected && !that.listView._emptySearch) {\n that._custom(custom.val());\n }\n },\n _updateSelection: function () {\n var that = this;\n var listView = that.listView;\n var initialIndex = that._initialIndex;\n var hasInitialIndex = initialIndex !== null && initialIndex > -1;\n var filtered = that._state === STATE_FILTER;\n if (filtered) {\n $(listView.focus()).removeClass('k-state-selected');\n return;\n }\n if (that._fetch) {\n return;\n }\n if (!listView.value().length) {\n if (hasInitialIndex) {\n that.select(initialIndex);\n } else if (that._accessor()) {\n listView.value(that._accessor());\n }\n }\n that._initialIndex = null;\n var dataItem = listView.selectedDataItems()[0];\n if (!dataItem) {\n return;\n }\n if (that._value(dataItem) !== that.value()) {\n that._custom(that._value(dataItem));\n } else if (that._value(dataItem) !== that.element[0].value) {\n that._accessor(that._value(dataItem));\n }\n if (that.text() && that.text() !== that._text(dataItem)) {\n that._selectValue(dataItem);\n }\n },\n _updateItemFocus: function () {\n var listView = this.listView;\n if (!this.options.highlightFirst) {\n listView.focus(-1);\n } else if (!listView.focus() && !listView.focusIndex()) {\n listView.focus(0);\n }\n },\n _listBound: function () {\n var that = this;\n var isActive = that.input[0] === activeElement();\n var data = that.dataSource.flatView();\n var skip = that.listView.skip();\n var length = data.length;\n var groupsLength = that.dataSource._group ? that.dataSource._group.length : 0;\n var isFirstPage = skip === undefined || skip === 0;\n that._presetValue = false;\n that._renderFooter();\n that._renderNoData();\n that._toggleNoData(!length);\n that._toggleHeader(!!groupsLength && !!length);\n that._resizePopup();\n that.popup.position();\n that._buildOptions(data);\n that._makeUnselectable();\n that._updateSelection();\n if (data.length && isFirstPage) {\n that._updateItemFocus();\n if (that.options.suggest && isActive && that.input.val()) {\n that.suggest(data[0]);\n }\n }\n if (that._open) {\n that._open = false;\n if (that._typingTimeout && !isActive) {\n that.popup.close();\n } else {\n that.toggle(that._allowOpening());\n }\n that._typingTimeout = null;\n }\n that._hideBusy();\n that.trigger('dataBound');\n },\n _listChange: function () {\n this._selectValue(this.listView.selectedDataItems()[0]);\n if (this._presetValue) {\n this._oldIndex = this.selectedIndex;\n }\n },\n _get: function (candidate) {\n var data, found, idx;\n if (typeof candidate === 'function') {\n data = this.dataSource.flatView();\n for (idx = 0; idx < data.length; idx++) {\n if (candidate(data[idx])) {\n candidate = idx;\n found = true;\n break;\n }\n }\n if (!found) {\n candidate = -1;\n }\n }\n return candidate;\n },\n _select: function (candidate, keepState) {\n var that = this;\n candidate = that._get(candidate);\n if (candidate === -1) {\n that.input[0].value = '';\n that._accessor('');\n }\n return that.listView.select(candidate).done(function () {\n if (!keepState && that._state === STATE_FILTER) {\n that._state = STATE_ACCEPT;\n }\n that._toggleCloseVisibility();\n });\n },\n _selectValue: function (dataItem) {\n var idx = this.listView.select();\n var value = '';\n var text = '';\n idx = idx[idx.length - 1];\n if (idx === undefined) {\n idx = -1;\n }\n this.selectedIndex = idx;\n if (this.listView.isFiltered() && idx !== -1) {\n this._valueBeforeCascade = this._old;\n }\n if (idx === -1 && !dataItem) {\n if (this.options.syncValueAndText) {\n if (this.options.dataTextField === this.options.dataValueField) {\n text = this._accessor();\n } else {\n text = this.input[0].value;\n }\n value = text;\n } else {\n text = this.text();\n }\n this.listView.focus(-1);\n } else {\n if (dataItem || dataItem === 0) {\n value = this._dataValue(dataItem);\n text = this._text(dataItem);\n }\n if (value === null) {\n value = '';\n }\n }\n this._setDomInputValue(text);\n this._accessor(value !== undefined ? value : text, idx);\n this._placeholder();\n this._triggerCascade();\n },\n _setDomInputValue: function (text) {\n var that = this;\n var currentCaret = caret(this.input);\n var caretStart;\n if (currentCaret && currentCaret.length) {\n caretStart = currentCaret[0];\n }\n this._prev = this.input[0].value = text;\n if (caretStart && this.selectedIndex === -1) {\n var mobile = support.mobileOS;\n if (mobile.wp || mobile.android) {\n setTimeout(function () {\n that.input[0].setSelectionRange(caretStart, caretStart);\n }, 0);\n } else {\n this.input[0].setSelectionRange(caretStart, caretStart);\n }\n }\n },\n refresh: function () {\n this.listView.refresh();\n },\n _toggleCloseVisibility: function () {\n var preventShow = this.element.is(':disabled') || this.element.is('[readonly]');\n if (this.text() && !preventShow) {\n this._showClear();\n } else {\n this._hideClear();\n }\n },\n suggest: function (word) {\n var that = this;\n var element = that.input[0];\n var value = that.text();\n var caretIdx = caret(element)[0];\n var key = that._last;\n var idx;\n var accentFoldingFiltering = that.dataSource.options.accentFoldingFiltering;\n if (key == keys.BACKSPACE || key == keys.DELETE) {\n that._last = undefined;\n return;\n }\n word = word || '';\n if (typeof word !== 'string') {\n if (word[0]) {\n word = that.dataSource.view()[List.inArray(word[0], that.ul[0])];\n }\n word = word ? that._text(word) : '';\n }\n if (caretIdx <= 0) {\n caretIdx = (accentFoldingFiltering ? value.toLocaleLowerCase(accentFoldingFiltering) : value.toLowerCase()).indexOf(accentFoldingFiltering ? word.toLocaleLowerCase(accentFoldingFiltering) : word.toLowerCase()) + 1;\n }\n if (word) {\n word = word.toString();\n idx = (accentFoldingFiltering ? word.toLocaleLowerCase(accentFoldingFiltering) : word.toLowerCase()).indexOf(accentFoldingFiltering ? value.toLocaleLowerCase(accentFoldingFiltering) : value.toLowerCase());\n if (idx > -1) {\n value += word.substring(idx + value.length);\n }\n } else {\n value = value.substring(0, caretIdx);\n }\n if (value.length !== caretIdx || !word) {\n element.value = value;\n if (element === activeElement()) {\n caret(element, caretIdx, value.length);\n }\n }\n },\n text: function (text) {\n text = text === null ? '' : text;\n var that = this;\n var input = that.input[0];\n var ignoreCase = that.options.ignoreCase;\n var loweredText = text;\n var dataItem;\n var value;\n if (text === undefined) {\n return input.value;\n }\n if (that.options.autoBind === false && !that.listView.bound()) {\n that._setText(text);\n return;\n }\n dataItem = that.dataItem();\n if (dataItem && that._text(dataItem).replace && that._text(dataItem).replace(newLineRegEx, '') === text) {\n value = that._value(dataItem);\n if (value === List.unifyType(that._old, typeof value)) {\n that._triggerCascade();\n return;\n }\n }\n if (ignoreCase) {\n loweredText = loweredText.toLowerCase();\n }\n if (that.dataItem() && that._text(that.dataItem()) === text) {\n return;\n }\n that._select(function (data) {\n data = that._text(data);\n if (ignoreCase) {\n data = (data + '').toLowerCase();\n }\n return data === loweredText;\n }).done(function () {\n if (that.selectedIndex < 0) {\n input.value = text;\n if (that.options.syncValueAndText) {\n that._accessor(text);\n }\n that._cascadeTriggered = true;\n that._triggerCascade();\n }\n that._prev = input.value;\n });\n that._toggleCloseVisibility();\n },\n toggle: function (toggle) {\n this._toggle(toggle, true);\n },\n value: function (value) {\n var that = this;\n var options = that.options;\n var listView = that.listView;\n if (value === undefined) {\n value = that._accessor() || that.listView.value()[0];\n return value === undefined || value === null ? '' : value;\n }\n that.requireValueMapper(that.options, value);\n that.trigger('set', { value: value });\n if (value === options.value && that.input.val() === options.text) {\n return;\n }\n that._accessor(value);\n if (that._isFilterEnabled() && listView.bound() && listView.isFiltered()) {\n that._clearFilter();\n } else {\n that._fetchData();\n }\n listView.value(value).done(function () {\n if (that.selectedIndex === -1 && (!listView._selectedDataItems || !listView._selectedDataItems.length)) {\n that._accessor(value);\n that.input.val(value);\n that._placeholder(true);\n }\n that._old = that._valueBeforeCascade = that._accessor();\n that._oldIndex = that.selectedIndex;\n that._prev = that.input.val();\n if (that._state === STATE_FILTER) {\n that._state = STATE_ACCEPT;\n }\n that._toggleCloseVisibility();\n });\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that._arrowIcon.removeClass(LOADING);\n that._focused.attr('aria-busy', false);\n that._busy = null;\n that._toggleCloseVisibility();\n },\n _click: function (e) {\n var that = this;\n var item = e.item;\n var dataItem = that.listView.dataItemByIndex(that.listView.getElementIndex(item));\n var shouldTrigger = true;\n e.preventDefault();\n if (dataItem) {\n shouldTrigger = that._value(dataItem) !== List.unifyType(that.value(), typeof that._value(dataItem));\n if (!shouldTrigger) {\n that.input.val(that._text(dataItem));\n }\n }\n if (shouldTrigger && that.trigger('select', {\n dataItem: dataItem,\n item: item\n })) {\n that.close();\n return;\n }\n that._userTriggered = true;\n that._select(item).done(function () {\n that._blur();\n });\n },\n _syncValueAndText: function () {\n return this.options.syncValueAndText;\n },\n _inputValue: function () {\n return this.text();\n },\n _searchByWord: function (word) {\n var that = this;\n var options = that.options;\n var dataSource = that.dataSource;\n var ignoreCase = options.ignoreCase;\n var predicate = function (dataItem) {\n var text = that._text(dataItem);\n if (text !== undefined) {\n text = text + '';\n if (text !== '' && word === '') {\n return false;\n }\n if (ignoreCase) {\n text = text.toLowerCase();\n }\n return text.indexOf(word) === 0;\n }\n };\n if (ignoreCase) {\n word = word.toLowerCase();\n }\n if (!that.ul[0].firstChild) {\n dataSource.one(CHANGE, function () {\n if (dataSource.view()[0]) {\n that.search(word);\n }\n }).fetch();\n return;\n }\n this.listView.focus(this._get(predicate));\n var current = this.listView.focus();\n if (current) {\n if (options.suggest) {\n that.suggest(current);\n }\n this.open();\n }\n if (this.options.highlightFirst && !word) {\n this.listView.focusFirst();\n }\n },\n _input: function () {\n var that = this, element = that.element.removeClass('k-input')[0], accessKey = element.accessKey, wrapper = that.wrapper, SELECTOR = 'input.k-input', name = element.name || '', input, maxLength;\n if (name) {\n name = 'name=\"' + name + '_input\" ';\n }\n input = wrapper.find(SELECTOR);\n if (!input[0]) {\n wrapper.append('<span tabindex=\"-1\" unselectable=\"on\" class=\"k-dropdown-wrap k-state-default\"><input ' + name + 'class=\"k-input\" type=\"text\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\"/><span unselectable=\"on\" class=\"k-select\" aria-label=\"select\"><span class=\"k-icon k-i-arrow-60-down\"></span></span></span>').append(that.element);\n input = wrapper.find(SELECTOR);\n }\n input[0].style.cssText = element.style.cssText;\n input[0].title = element.title;\n maxLength = parseInt(this.element.prop('maxlength') || this.element.attr('maxlength'), 10);\n if (maxLength > -1) {\n input[0].maxLength = maxLength;\n }\n input.addClass(element.className).css({\n width: '',\n height: element.style.height\n }).attr({\n 'role': 'combobox',\n 'aria-expanded': false\n }).show();\n if (placeholderSupported) {\n input.attr('placeholder', that.options.placeholder);\n }\n if (accessKey) {\n element.accessKey = '';\n input[0].accessKey = accessKey;\n }\n that._focused = that.input = input;\n that._inputWrapper = $(wrapper[0].firstChild);\n that._arrow = wrapper.find('.k-select').attr({\n 'role': 'button',\n 'tabIndex': -1\n });\n that._arrowIcon = that._arrow.find('.k-icon');\n if (element.id) {\n that._arrow.attr('aria-controls', that.ul[0].id);\n }\n },\n _clearButton: function () {\n List.fn._clearButton.call(this);\n if (this.options.clearButton) {\n this._clear.insertAfter(this.input);\n this.wrapper.addClass('k-combobox-clearable');\n }\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode;\n that._last = key;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = null;\n if (key === keys.HOME) {\n that._firstItem();\n } else if (key === keys.END) {\n that._lastItem();\n } else if (key === keys.ENTER || key === keys.TAB && that.popup.visible()) {\n var current = that.listView.focus();\n var dataItem = that.dataItem();\n var shouldTrigger = true;\n if (!that.popup.visible() && (!dataItem || that.text() !== that._text(dataItem))) {\n current = null;\n }\n if (current) {\n if (that.popup.visible()) {\n e.preventDefault();\n }\n dataItem = that.listView.dataItemByIndex(that.listView.getElementIndex(current));\n if (dataItem) {\n shouldTrigger = that._value(dataItem) !== List.unifyType(that.value(), typeof that._value(dataItem));\n }\n if (shouldTrigger && that.trigger('select', {\n dataItem: dataItem,\n item: current\n })) {\n return;\n }\n that._userTriggered = true;\n that._select(current).done(function () {\n that._blur();\n that._valueBeforeCascade = that._old = that.value();\n });\n } else {\n if (that._syncValueAndText() || that._isSelect) {\n that._accessor(that.input.val());\n }\n that.listView.value(that.input.val());\n that._blur();\n }\n } else if (key != keys.TAB && !that._move(e)) {\n that._search();\n } else if (key === keys.ESC && !that.popup.visible() && that.text()) {\n that._clearValue();\n }\n },\n _placeholder: function (show) {\n if (placeholderSupported) {\n return;\n }\n var that = this, input = that.input, placeholder = that.options.placeholder, value;\n if (placeholder) {\n value = that.value();\n if (show === undefined) {\n show = !value;\n }\n input.toggleClass('k-readonly', show);\n if (!show) {\n if (!value) {\n placeholder = '';\n } else {\n return;\n }\n }\n input.val(placeholder);\n if (!placeholder && input[0] === activeElement()) {\n caret(input[0], 0, 0);\n }\n }\n },\n _search: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = setTimeout(function () {\n var value = that.text();\n if (that._prev !== value) {\n that._prev = value;\n if (that.options.filter === 'none' && that.options.virtual) {\n that.listView.select(-1);\n }\n that.search(value);\n that._toggleCloseVisibility();\n }\n that._typingTimeout = null;\n }, that.options.delay);\n },\n _setText: function (text) {\n this.input.val(text);\n this._prev = text;\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper = element.parent();\n if (!wrapper.is('span.k-widget')) {\n wrapper = element.hide().wrap('<span />').parent();\n wrapper[0].style.cssText = element[0].style.cssText;\n }\n that.wrapper = wrapper.addClass('k-widget k-combobox').addClass(element[0].className).css('display', '');\n },\n _clearSelection: function (parent, isFiltered) {\n var that = this;\n var hasValue = parent.value();\n var custom = hasValue && parent.selectedIndex === -1;\n if (this.selectedIndex == -1 && this.value()) {\n return;\n }\n if (isFiltered || !hasValue || custom) {\n that.options.value = '';\n that.value('');\n that._selectedValue = null;\n }\n },\n _preselect: function (value, text) {\n this.input.val(text);\n this._accessor(value);\n this._old = this._accessor();\n this._oldIndex = this.selectedIndex;\n this.listView.setValue(value);\n this._placeholder();\n this._initialIndex = null;\n this._presetValue = true;\n this._toggleCloseVisibility();\n }\n });\n ui.plugin(ComboBox);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.multiselect', [\n 'kendo.list',\n 'kendo.mobile.scroller',\n 'kendo.virtuallist'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'multiselect',\n name: 'MultiSelect',\n category: 'web',\n description: 'The MultiSelect widget allows the selection from pre-defined values.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, List = ui.List, keys = $.extend({ A: 65 }, kendo.keys), activeElement = kendo._activeElement, ObservableArray = kendo.data.ObservableArray, proxy = $.proxy, ID = 'id', LI = 'li', ACCEPT = 'accept', FILTER = 'filter', REBIND = 'rebind', OPEN = 'open', CLOSE = 'close', CHANGE = 'change', PROGRESS = 'progress', SELECT = 'select', DESELECT = 'deselect', ARIA_DISABLED = 'aria-disabled', FOCUSEDCLASS = 'k-state-focused', SELECTEDCLASS = 'k-state-selected', HIDDENCLASS = 'k-hidden', HOVERCLASS = 'k-state-hover', STATEDISABLED = 'k-state-disabled', NOCLICKCLASS = 'k-no-click', DISABLED = 'disabled', READONLY = 'readonly', AUTOCOMPLETEVALUE = 'off', ns = '.kendoMultiSelect', CLICK = 'click' + ns, KEYDOWN = 'keydown' + ns, MOUSEENTER = 'mouseenter' + ns, MOUSELEAVE = 'mouseleave' + ns, HOVEREVENTS = MOUSEENTER + ' ' + MOUSELEAVE, quotRegExp = /\"/g, isArray = $.isArray, styles = [\n 'font-family',\n 'font-size',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'letter-spacing',\n 'text-transform',\n 'line-height'\n ];\n var MultiSelect = List.extend({\n init: function (element, options) {\n var that = this, id, disabled;\n that.ns = ns;\n List.fn.init.call(that, element, options);\n that._optionsMap = {};\n that._customOptions = {};\n that._wrapper();\n that._tagList();\n that._input();\n that._textContainer();\n that._loader();\n that._clearButton();\n that._tabindex(that.input);\n element = that.element.attr('multiple', 'multiple').hide();\n options = that.options;\n if (!options.placeholder) {\n options.placeholder = element.data('placeholder');\n }\n id = element.attr(ID);\n if (id) {\n that._tagID = id + '_tag_active';\n id = id + '_taglist';\n that.tagList.attr(ID, id);\n that.input.attr('aria-describedby', id);\n }\n that._initialOpen = true;\n that._ariaLabel();\n that._ariaSetLive();\n that._dataSource();\n that._ignoreCase();\n that._popup();\n that._tagTemplate();\n that.requireValueMapper(that.options);\n that._initList();\n that._reset();\n that._enable();\n that._placeholder();\n if (options.autoBind) {\n that.dataSource.fetch();\n } else if (options.value) {\n that._preselect(options.value);\n }\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n that._ariaSetSize(that.value().length);\n kendo.notify(that);\n that._toggleCloseVisibility();\n },\n options: {\n name: 'MultiSelect',\n tagMode: 'multiple',\n enabled: true,\n autoBind: true,\n autoClose: true,\n highlightFirst: true,\n dataTextField: '',\n dataValueField: '',\n filter: 'startswith',\n ignoreCase: true,\n minLength: 1,\n messages: {\n 'singleTag': 'item(s) selected',\n 'clear': 'clear',\n 'deleteTag': 'delete',\n 'noData': 'No data found.'\n },\n enforceMinLength: false,\n delay: 100,\n value: null,\n maxSelectedItems: null,\n placeholder: '',\n height: 200,\n animation: {},\n virtual: false,\n itemTemplate: '',\n tagTemplate: '',\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#',\n clearButton: true,\n autoWidth: false,\n popup: null\n },\n events: [\n OPEN,\n CLOSE,\n CHANGE,\n SELECT,\n DESELECT,\n 'filtering',\n 'dataBinding',\n 'dataBound'\n ],\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._state = '';\n this._dataSource();\n this.persistTagList = false;\n this.listView.setDataSource(this.dataSource);\n if (this.options.autoBind) {\n this.dataSource.fetch();\n }\n },\n setOptions: function (options) {\n var listOptions = this._listOptions(options);\n List.fn.setOptions.call(this, options);\n this.listView.setOptions(listOptions);\n this._accessors();\n this._aria(this.tagList.attr(ID));\n this._tagTemplate();\n this._placeholder();\n this._clearButton();\n },\n currentTag: function (candidate) {\n var that = this;\n if (candidate !== undefined) {\n if (that._currentTag) {\n that._currentTag.removeClass(FOCUSEDCLASS).removeAttr(ID);\n that._currentTag.find('.k-select').attr('aria-hidden', true);\n that.input.removeAttr('aria-activedescendant');\n }\n if (candidate) {\n candidate.addClass(FOCUSEDCLASS).attr(ID, that._tagID);\n candidate.find('.k-select').removeAttr('aria-hidden');\n that.input.attr('aria-activedescendant', that._tagID);\n }\n that._currentTag = candidate;\n } else {\n return that._currentTag;\n }\n },\n dataItems: function () {\n return this.listView.selectedDataItems();\n },\n destroy: function () {\n var that = this, ns = that.ns;\n clearTimeout(that._busy);\n clearTimeout(that._typingTimeout);\n that.wrapper.off(ns);\n that.tagList.off(ns);\n that.input.off(ns);\n that._clear.off(ns);\n List.fn.destroy.call(that);\n },\n _activateItem: function () {\n if (this.popup.visible()) {\n List.fn._activateItem.call(this);\n }\n this.currentTag(null);\n },\n _listOptions: function (options) {\n var that = this;\n var listOptions = List.fn._listOptions.call(that, $.extend(options, {\n selectedItemChange: proxy(that._selectedItemChange, that),\n selectable: 'multiple'\n }));\n var itemTemplate = this.options.itemTemplate || this.options.template;\n var template = listOptions.itemTemplate || itemTemplate || listOptions.template;\n if (!template) {\n template = '#:' + kendo.expr(listOptions.dataTextField, 'data') + '#';\n }\n listOptions.template = template;\n return listOptions;\n },\n _setListValue: function () {\n List.fn._setListValue.call(this, this._initialValues.slice(0));\n },\n _listChange: function (e) {\n var data = this.dataSource.flatView();\n var optionsMap = this._optionsMap;\n var valueGetter = this._value;\n if (this._state === REBIND) {\n this._state = '';\n }\n for (var i = 0; i < e.added.length; i++) {\n if (optionsMap[valueGetter(e.added[i].dataItem)] === undefined) {\n this._render(data);\n break;\n }\n }\n this._selectValue(e.added, e.removed);\n },\n _selectedItemChange: function (e) {\n var items = e.items;\n var context;\n var idx;\n for (idx = 0; idx < items.length; idx++) {\n context = items[idx];\n this.tagList.children().eq(context.index).children('span:first').html(this.tagTextTemplate(context.item));\n }\n },\n _wrapperMousedown: function (e) {\n var that = this;\n var notInput = e.target.nodeName.toLowerCase() !== 'input';\n var target = $(e.target);\n var closeButton = target.hasClass('k-select') || target.hasClass('k-icon');\n if (closeButton) {\n closeButton = !target.closest('.k-select').children('.k-i-arrow-60-down').length;\n }\n if (notInput && !(closeButton && kendo.support.mobileOS) && e.cancelable) {\n e.preventDefault();\n }\n if (!closeButton) {\n if (that.input[0] !== activeElement() && notInput) {\n that.input.focus();\n }\n if (that.options.minLength === 1) {\n that.open();\n }\n }\n },\n _inputFocus: function () {\n this._placeholder(false);\n this.wrapper.addClass(FOCUSEDCLASS);\n },\n _inputFocusout: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that.wrapper.removeClass(FOCUSEDCLASS);\n that._placeholder(!that.listView.selectedDataItems()[0], true);\n that.close();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n that.listView.skipUpdate(true);\n }\n if (that.listView.bound() && that.listView.isFiltered()) {\n that.persistTagList = true;\n that._clearFilter();\n }\n that.element.blur();\n },\n _removeTag: function (tag, shouldTrigger) {\n var that = this;\n var state = that._state;\n var position = tag.index();\n var listView = that.listView;\n var value = listView.value()[position];\n var dataItem = that.listView.selectedDataItems()[position];\n var customIndex = that._customOptions[value];\n var listViewChildren = listView.element[0].children;\n var option;\n var listViewChild;\n if (that.trigger(DESELECT, {\n dataItem: dataItem,\n item: tag\n })) {\n that._close();\n return;\n }\n if (customIndex === undefined && (state === ACCEPT || state === FILTER)) {\n customIndex = that._optionsMap[value];\n }\n var done = function () {\n that.currentTag(null);\n if (shouldTrigger) {\n that._change();\n }\n that._close();\n };\n if (customIndex === undefined && listView.select().length) {\n that.persistTagList = false;\n listView.select(listView.select()[position]).done(done);\n } else {\n option = that.element[0].children[customIndex];\n if (option) {\n option.selected = false;\n }\n listView.removeAt(position);\n listViewChild = listViewChildren[customIndex];\n if (listViewChild) {\n listViewChildren[customIndex].classList.remove('k-state-selected');\n }\n if (that.options.tagMode !== 'single') {\n tag.remove();\n } else {\n that._updateTagListHTML();\n }\n done();\n }\n },\n _tagListClick: function (e) {\n var target = $(e.currentTarget);\n if (!target.children('.k-i-arrow-60-down').length) {\n this._removeTag(target.closest(LI), true);\n }\n },\n _clearClick: function () {\n var that = this;\n if (that.options.tagMode === 'single') {\n that._clearSingleTagValue();\n } else {\n that.tagList.children().each(function (index, tag) {\n that._removeTag($(tag), false);\n });\n }\n that.input.val('');\n that._search();\n that._change();\n that.focus();\n that._hideClear();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n }\n },\n _clearSingleTagValue: function () {\n var that = this;\n var persistTagList = that.persistTagList;\n if (persistTagList) {\n that.persistTagList = false;\n }\n that.listView.value([]);\n that.persistTagList = persistTagList;\n },\n _editable: function (options) {\n var that = this, disable = options.disable, readonly = options.readonly, wrapper = that.wrapper.off(ns), tagList = that.tagList.off(ns), input = that.element.add(that.input.off(ns));\n if (!readonly && !disable) {\n wrapper.removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover).on('mousedown' + ns + ' touchend' + ns, proxy(that._wrapperMousedown, that));\n that.input.on(KEYDOWN, proxy(that._keydown, that)).on('paste' + ns, proxy(that._search, that)).on('input' + ns, proxy(that._search, that)).on('focus' + ns, proxy(that._inputFocus, that)).on('focusout' + ns, proxy(that._inputFocusout, that));\n that._clear.on(CLICK + ns + ' touchend' + ns, proxy(that._clearClick, that));\n input.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false);\n tagList.on(MOUSEENTER, LI, function () {\n $(this).addClass(HOVERCLASS);\n }).on(MOUSELEAVE, LI, function () {\n $(this).removeClass(HOVERCLASS);\n }).on(CLICK, 'li.k-button .k-select', proxy(that._tagListClick, that));\n } else {\n wrapper.toggleClass(STATEDISABLED, disable).toggleClass(NOCLICKCLASS, readonly);\n input.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable);\n }\n },\n _close: function () {\n var that = this;\n if (that.options.autoClose) {\n that.close();\n } else {\n that.popup.position();\n }\n },\n _filterSource: function (filter, force) {\n if (!force) {\n force = this._retrieveData;\n }\n this._retrieveData = false;\n List.fn._filterSource.call(this, filter, force);\n },\n close: function () {\n this._activeItem = null;\n this.input.removeAttr('aria-activedescendant');\n this.popup.close();\n },\n open: function () {\n var that = this;\n if (that._request) {\n that._retrieveData = false;\n }\n if (that._retrieveData || !that.listView.bound() || that._state === ACCEPT) {\n that._open = true;\n that._state = REBIND;\n that.listView.skipUpdate(true);\n that.persistTagList = that._initialOpen && !that.listView.bound() ? false : true;\n that._filterSource();\n that._focusItem();\n } else if (that._allowOpening()) {\n if (that._initialOpen && !that.options.autoBind && !that.options.virtual && that.options.value && !$.isPlainObject(that.options.value[0])) {\n that.value(that._initialValues);\n }\n that.popup._hovered = true;\n that._initialOpen = false;\n that.popup.open();\n that._focusItem();\n }\n },\n toggle: function (toggle) {\n toggle = toggle !== undefined ? toggle : !this.popup.visible();\n this[toggle ? OPEN : CLOSE]();\n },\n refresh: function () {\n this.listView.refresh();\n },\n _listBound: function () {\n var that = this;\n var data = that.dataSource.flatView();\n var skip = that.listView.skip();\n that._render(data);\n that._renderFooter();\n that._renderNoData();\n that._toggleNoData(!data.length);\n that._resizePopup();\n if (that._open) {\n that._open = false;\n that.toggle(that._allowOpening());\n }\n that.popup.position();\n if (that.options.highlightFirst && (skip === undefined || skip === 0)) {\n that.listView.focusFirst();\n }\n if (that._touchScroller) {\n that._touchScroller.reset();\n }\n that._hideBusy();\n that._makeUnselectable();\n that.trigger('dataBound');\n },\n _inputValue: function () {\n var that = this;\n var inputValue = that.input.val();\n if (that.options.placeholder === inputValue) {\n inputValue = '';\n }\n return inputValue;\n },\n value: function (value) {\n var that = this;\n var listView = that.listView;\n var oldValue = listView.value().slice();\n var maxSelectedItems = that.options.maxSelectedItems;\n var clearFilters = listView.bound() && listView.isFiltered();\n if (value === undefined) {\n return oldValue;\n }\n that.persistTagList = false;\n that.requireValueMapper(that.options, value);\n value = that._normalizeValues(value);\n if (maxSelectedItems !== null && value.length > maxSelectedItems) {\n value = value.slice(0, maxSelectedItems);\n }\n if (clearFilters) {\n that._clearFilter();\n }\n listView.value(value);\n that._old = that._valueBeforeCascade = value.slice();\n if (!clearFilters) {\n that._fetchData();\n }\n that._ariaSetSize(that.value().length);\n that._toggleCloseVisibility();\n },\n _preselect: function (data, value) {\n var that = this;\n if (!isArray(data) && !(data instanceof kendo.data.ObservableArray)) {\n data = [data];\n }\n if ($.isPlainObject(data[0]) || data[0] instanceof kendo.data.ObservableObject || !that.options.dataValueField) {\n that.dataSource.data(data);\n that.value(value || that._initialValues);\n that._retrieveData = true;\n }\n },\n _setOption: function (value, selected) {\n var option = this.element[0].children[this._optionsMap[value]];\n if (option) {\n option.selected = selected;\n }\n },\n _fetchData: function () {\n var that = this;\n var hasItems = !!that.dataSource.view().length;\n var isEmptyArray = that.listView.value().length === 0;\n if (isEmptyArray || that._request) {\n return;\n }\n if (that._retrieveData || !that._fetch && !hasItems) {\n that._fetch = true;\n that._retrieveData = false;\n that.dataSource.read().done(function () {\n that._fetch = false;\n });\n }\n },\n _isBound: function () {\n return this.listView.bound() && !this._retrieveData;\n },\n _dataSource: function () {\n var that = this, element = that.element, options = that.options, dataSource = options.dataSource || {};\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource.select = element;\n dataSource.fields = [\n { field: options.dataTextField },\n { field: options.dataValueField }\n ];\n if (that.dataSource && that._refreshHandler) {\n that._unbindDataSource();\n } else {\n that._progressHandler = proxy(that._showBusy, that);\n that._errorHandler = proxy(that._hideBusy, that);\n }\n that.dataSource = kendo.data.DataSource.create(dataSource).bind(PROGRESS, that._progressHandler).bind('error', that._errorHandler);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(that._initialValues);\n that._placeholder();\n });\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _initValue: function () {\n var value = this.options.value || this.element.val();\n this._old = this._initialValues = this._normalizeValues(value);\n },\n _normalizeValues: function (value) {\n var that = this;\n if (value === null) {\n value = [];\n } else if (value && $.isPlainObject(value)) {\n value = [that._value(value)];\n } else if (value && $.isPlainObject(value[0])) {\n value = $.map(value, function (dataItem) {\n return that._value(dataItem);\n });\n } else if (!isArray(value) && !(value instanceof ObservableArray)) {\n value = [value];\n } else if (isArray(value)) {\n value = value.slice();\n }\n return value;\n },\n _change: function () {\n var that = this, value = that.value();\n if (!compare(value, that._old)) {\n that._old = value.slice();\n that.trigger(CHANGE);\n that.element.trigger(CHANGE);\n }\n that.popup.position();\n that._ariaSetSize(value.length);\n that._toggleCloseVisibility();\n },\n _click: function (e) {\n var that = this;\n var item = e.item;\n e.preventDefault();\n that._select(item).done(function () {\n that._activeItem = item;\n that._change();\n that._close();\n });\n },\n _getActiveItem: function () {\n return this._activeItem || $(this.listView.items()[this._getSelectedIndices().length - 1]) || this.listView.focus();\n },\n _getSelectedIndices: function () {\n return this.listView._selectedIndices || this.listView._selectedIndexes;\n },\n _keydown: function (e) {\n var that = this;\n var key = e.keyCode;\n var tag = that._currentTag;\n var listView = that.listView;\n var hasValue = that.input.val();\n var isRtl = kendo.support.isRtl(that.wrapper);\n var visible = that.popup.visible();\n var dir = 0;\n var activeItemIdx;\n if (key !== keys.ENTER) {\n this._multipleSelection = false;\n }\n if (key === keys.DOWN) {\n e.preventDefault();\n if (!visible) {\n that.open();\n if (!listView.focus()) {\n listView.focusFirst();\n }\n return;\n }\n if (listView.focus()) {\n if (!that._activeItem && e.shiftKey) {\n that._activeItem = listView.focus();\n dir = -1;\n }\n activeItemIdx = listView.getElementIndex(that._getActiveItem().first());\n listView.focusNext();\n if (!listView.focus()) {\n listView.focusLast();\n } else {\n if (e.shiftKey) {\n this._multipleSelection = true;\n that._selectRange(activeItemIdx, listView.getElementIndex(listView.focus().first()) + dir);\n }\n }\n } else {\n listView.focusFirst();\n }\n } else if (key === keys.UP) {\n if (visible) {\n if (!that._activeItem && e.shiftKey) {\n that._activeItem = listView.focus();\n dir = 1;\n }\n activeItemIdx = listView.getElementIndex(that._getActiveItem().first());\n listView.focusPrev();\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.shiftKey) {\n this._multipleSelection = true;\n that._selectRange(activeItemIdx, listView.getElementIndex(listView.focus().first()) + dir);\n }\n }\n }\n e.preventDefault();\n } else if (key === keys.LEFT && !isRtl || key === keys.RIGHT && isRtl) {\n if (!hasValue) {\n tag = tag ? tag.prev() : $(that.tagList[0].lastChild);\n if (tag[0]) {\n that.currentTag(tag);\n }\n }\n } else if (key === keys.RIGHT && !isRtl || key === keys.LEFT && isRtl) {\n if (!hasValue && tag) {\n tag = tag.next();\n that.currentTag(tag[0] ? tag : null);\n }\n } else if (e.ctrlKey && !e.altKey && key === keys.A && visible && !that.options.virtual) {\n this._multipleSelection = true;\n if (this._getSelectedIndices().length === listView.items().length) {\n that._activeItem = null;\n }\n if (listView.items().length) {\n that._selectRange(0, listView.items().length - 1);\n }\n } else if (key === keys.ENTER && visible) {\n if (!listView.focus()) {\n return;\n }\n e.preventDefault();\n if (this._multipleSelection) {\n this._multipleSelection = false;\n if (listView.focus().hasClass(SELECTEDCLASS)) {\n that._close();\n return;\n }\n }\n that._select(listView.focus()).done(function () {\n that._change();\n that._close();\n });\n } else if (key === keys.SPACEBAR && e.ctrlKey && visible) {\n if (that._activeItem && listView.focus() && listView.focus()[0] === that._activeItem[0]) {\n that._activeItem = null;\n }\n if (!$(listView.focus()).hasClass(SELECTEDCLASS)) {\n that._activeItem = listView.focus();\n }\n that._select(listView.focus()).done(function () {\n that._change();\n });\n e.preventDefault();\n } else if (key === keys.SPACEBAR && e.shiftKey && visible) {\n var activeIndex = listView.getElementIndex(that._getActiveItem());\n var currentIndex = listView.getElementIndex(listView.focus());\n if (activeIndex !== undefined && currentIndex !== undefined) {\n that._selectRange(activeIndex, currentIndex);\n }\n e.preventDefault();\n } else if (key === keys.ESC) {\n if (visible) {\n e.preventDefault();\n } else {\n that.tagList.children().each(function (index, tag) {\n that._removeTag($(tag), false);\n });\n that._change();\n }\n that.close();\n } else if (key === keys.HOME) {\n if (visible) {\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.ctrlKey && e.shiftKey && !that.options.virtual) {\n that._selectRange(listView.getElementIndex(listView.focus()[0]), 0);\n }\n listView.focusFirst();\n }\n } else if (!hasValue) {\n tag = that.tagList[0].firstChild;\n if (tag) {\n that.currentTag($(tag));\n }\n }\n } else if (key === keys.END) {\n if (visible) {\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.ctrlKey && e.shiftKey && !that.options.virtual) {\n that._selectRange(listView.getElementIndex(listView.focus()[0]), listView.element.children().length - 1);\n }\n listView.focusLast();\n }\n } else if (!hasValue) {\n tag = that.tagList[0].lastChild;\n if (tag) {\n that.currentTag($(tag));\n }\n }\n } else if ((key === keys.DELETE || key === keys.BACKSPACE) && !hasValue) {\n that._state = ACCEPT;\n if (that.options.tagMode === 'single') {\n that._clearSingleTagValue();\n that._change();\n that._close();\n return;\n }\n if (key === keys.BACKSPACE && !tag) {\n tag = $(that.tagList[0].lastChild);\n }\n if (tag && tag[0]) {\n that._removeTag(tag, true);\n }\n } else if (that.popup.visible() && (key === keys.PAGEDOWN || key === keys.PAGEUP)) {\n e.preventDefault();\n var direction = key === keys.PAGEDOWN ? 1 : -1;\n listView.scrollWith(direction * listView.screenHeight());\n } else {\n clearTimeout(that._typingTimeout);\n setTimeout(function () {\n that._scale();\n });\n that._search();\n }\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that.input.attr('aria-busy', false);\n that._loading.addClass(HIDDENCLASS);\n that._request = false;\n that._busy = null;\n that._toggleCloseVisibility();\n },\n _showBusyHandler: function () {\n this.input.attr('aria-busy', true);\n this._loading.removeClass(HIDDENCLASS);\n this._hideClear();\n },\n _showBusy: function () {\n var that = this;\n that._request = true;\n if (that._busy) {\n return;\n }\n that._busy = setTimeout(proxy(that._showBusyHandler, that), 100);\n },\n _placeholder: function (show, skipCaret) {\n var that = this;\n var input = that.input;\n var active = activeElement();\n var placeholder = that.options.placeholder;\n var inputValue = input.val();\n var isActive = input[0] === active;\n var caretPos = inputValue.length;\n if (!isActive || that.options.autoClose || inputValue === placeholder) {\n caretPos = 0;\n inputValue = '';\n }\n if (show === undefined) {\n show = false;\n if (input[0] !== active) {\n show = !that.listView.selectedDataItems()[0];\n }\n }\n that._prev = inputValue;\n input.toggleClass('k-readonly', show).val(show ? placeholder : inputValue);\n if (isActive && !skipCaret) {\n kendo.caret(input[0], caretPos, caretPos);\n }\n that._scale();\n },\n _scale: function () {\n var that = this, wrapper = that.wrapper.find('.k-multiselect-wrap'), wrapperWidth = wrapper.width(), span = that._span.text(that.input.val()), textWidth;\n if (!wrapper.is(':visible')) {\n span.appendTo(document.documentElement);\n wrapperWidth = textWidth = span.width() + 25;\n span.appendTo(wrapper);\n } else {\n textWidth = span.width() + 25;\n }\n that.input.width(textWidth > wrapperWidth ? wrapperWidth : textWidth);\n },\n _option: function (dataValue, dataText, selected) {\n var option = '<option';\n if (dataValue !== undefined) {\n dataValue += '';\n if (dataValue.indexOf('\"') !== -1) {\n dataValue = dataValue.replace(quotRegExp, '"');\n }\n option += ' value=\"' + dataValue + '\"';\n }\n if (selected) {\n option += ' selected';\n }\n option += '>';\n if (dataText !== undefined) {\n option += kendo.htmlEncode(dataText);\n }\n return option += '</option>';\n },\n _render: function (data) {\n var selectedItems = this.listView.selectedDataItems();\n var values = this.listView.value();\n var length = data.length;\n var selectedIndex;\n var options = '';\n var dataItem;\n var value;\n var idx;\n if (values.length !== selectedItems.length) {\n selectedItems = this._buildSelectedItems(values);\n }\n var custom = {};\n var optionsMap = {};\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n value = this._value(dataItem);\n selectedIndex = this._selectedItemIndex(value, selectedItems);\n if (selectedIndex !== -1) {\n selectedItems.splice(selectedIndex, 1);\n }\n optionsMap[value] = idx;\n options += this._option(value, this._text(dataItem), selectedIndex !== -1);\n }\n if (selectedItems.length) {\n for (idx = 0; idx < selectedItems.length; idx++) {\n dataItem = selectedItems[idx];\n value = this._value(dataItem);\n custom[value] = length;\n optionsMap[value] = length;\n length += 1;\n options += this._option(value, this._text(dataItem), true);\n }\n }\n this._customOptions = custom;\n this._optionsMap = optionsMap;\n this.element.html(options);\n },\n _buildSelectedItems: function (values) {\n var valueField = this.options.dataValueField;\n var textField = this.options.dataTextField;\n var result = [];\n var item;\n for (var idx = 0; idx < values.length; idx++) {\n item = {};\n item[valueField] = values[idx];\n item[textField] = values[idx];\n result.push(item);\n }\n return result;\n },\n _selectedItemIndex: function (value, selectedItems) {\n var valueGetter = this._value;\n var idx = 0;\n for (; idx < selectedItems.length; idx++) {\n if (value === valueGetter(selectedItems[idx])) {\n return idx;\n }\n }\n return -1;\n },\n _search: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = setTimeout(function () {\n var value = that._inputValue();\n if (that._prev !== value) {\n that._prev = value;\n that.search(value);\n that._toggleCloseVisibility();\n }\n }, that.options.delay);\n },\n _toggleCloseVisibility: function () {\n if (this.value().length || this.input.val() && this.input.val() !== this.options.placeholder) {\n this._showClear();\n } else {\n this._hideClear();\n }\n },\n _allowOpening: function () {\n return this._allowSelection() && List.fn._allowOpening.call(this);\n },\n _allowSelection: function () {\n var max = this.options.maxSelectedItems;\n return max === null || max > this.listView.value().length;\n },\n _angularTagItems: function (cmd) {\n var that = this;\n that.angular(cmd, function () {\n return {\n elements: that.tagList[0].children,\n data: $.map(that.dataItems(), function (dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n },\n updatePersistTagList: function (added, removed) {\n if (this.persistTagList.added && this.persistTagList.added.length === removed.length && this.persistTagList.removed && this.persistTagList.removed.length === added.length) {\n this.persistTagList = false;\n } else {\n this.listView._removedAddedIndexes = this._old.slice();\n this.persistTagList = {\n added: added,\n removed: removed\n };\n }\n },\n _selectValue: function (added, removed) {\n var that = this;\n var total = that.dataSource.total();\n var tagList = that.tagList;\n var getter = that._value;\n var removedItem;\n var addedItem;\n var idx;\n if (this.persistTagList) {\n this.updatePersistTagList(added, removed);\n return;\n }\n that._angularTagItems('cleanup');\n if (that.options.tagMode === 'multiple') {\n for (idx = removed.length - 1; idx > -1; idx--) {\n removedItem = removed[idx];\n if (tagList.children().length) {\n tagList[0].removeChild(tagList[0].children[removedItem.position]);\n that._setOption(getter(removedItem.dataItem), false);\n }\n }\n for (idx = 0; idx < added.length; idx++) {\n addedItem = added[idx];\n tagList.append(that.tagTemplate(addedItem.dataItem));\n that._setOption(getter(addedItem.dataItem), true);\n }\n } else {\n if (!that._maxTotal || that._maxTotal < total) {\n that._maxTotal = total;\n }\n this._updateTagListHTML();\n for (idx = removed.length - 1; idx > -1; idx--) {\n that._setOption(getter(removed[idx].dataItem), false);\n }\n for (idx = 0; idx < added.length; idx++) {\n that._setOption(getter(added[idx].dataItem), true);\n }\n }\n that._angularTagItems('compile');\n that._placeholder();\n },\n _updateTagListHTML: function () {\n var that = this;\n var values = that.value();\n var total = that.dataSource.total();\n var tagList = that.tagList;\n tagList.html('');\n if (values.length) {\n tagList.append(that.tagTemplate({\n values: values,\n dataItems: that.dataItems(),\n maxTotal: that._maxTotal,\n currentTotal: total\n }));\n }\n },\n _select: function (candidate) {\n var resolved = $.Deferred().resolve();\n if (!candidate) {\n return resolved;\n }\n var that = this;\n var listView = that.listView;\n var dataItem = listView.dataItemByIndex(listView.getElementIndex(candidate));\n var isSelected = candidate.hasClass('k-state-selected');\n if (that._state === REBIND) {\n that._state = '';\n }\n if (!that._allowSelection() && !isSelected) {\n return resolved;\n }\n if (that.trigger(isSelected ? DESELECT : SELECT, {\n dataItem: dataItem,\n item: candidate\n })) {\n that._close();\n return resolved;\n }\n that.persistTagList = false;\n return listView.select(candidate).done(function () {\n that._placeholder();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n listView.skipUpdate(true);\n }\n });\n },\n _selectRange: function (startIndex, endIndex) {\n var that = this;\n var listView = this.listView;\n var maxSelectedItems = this.options.maxSelectedItems;\n var indices = this._getSelectedIndices().slice();\n var indicesToSelect = [];\n var i;\n var selectIndices = function (indices) {\n listView.select(indices).done(function () {\n indices.forEach(function (index) {\n var dataItem = listView.dataItemByIndex(index);\n var candidate = listView.element.children()[index];\n var isSelected = $(candidate).hasClass('k-state-selected');\n that.trigger(isSelected ? SELECT : DESELECT, {\n dataItem: dataItem,\n item: $(candidate)\n });\n });\n that._change();\n });\n };\n if (indices.length - 1 === endIndex - startIndex) {\n return selectIndices(indices);\n }\n if (startIndex < endIndex) {\n for (i = startIndex; i <= endIndex; i++) {\n indicesToSelect.push(i);\n }\n } else {\n for (i = startIndex; i >= endIndex; i--) {\n indicesToSelect.push(i);\n }\n }\n if (maxSelectedItems !== null && indicesToSelect.length > maxSelectedItems) {\n indicesToSelect = indicesToSelect.slice(0, maxSelectedItems);\n }\n for (i = 0; i < indicesToSelect.length; i++) {\n var index = indicesToSelect[i];\n if (this._getSelectedIndices().indexOf(index) == -1) {\n indices.push(index);\n } else {\n indices.splice(indices.indexOf(index), 1);\n }\n }\n if (!indices.length) {\n return;\n }\n that.persistTagList = false;\n return selectIndices(indices);\n },\n _input: function () {\n var that = this;\n var element = that.element;\n var accessKey = element[0].accessKey;\n var input = that._innerWrapper.children('input.k-input');\n if (!input[0]) {\n input = $('<input class=\"k-input\" style=\"width: 25px\" />').appendTo(that._innerWrapper);\n }\n element.removeAttr('accesskey');\n that._focused = that.input = input.attr({\n 'accesskey': accessKey,\n 'autocomplete': AUTOCOMPLETEVALUE,\n 'role': 'listbox',\n 'title': element[0].title,\n 'aria-expanded': false,\n 'aria-haspopup': 'listbox',\n 'aria-autocomplete': 'list'\n });\n },\n _tagList: function () {\n var that = this, tagList = that._innerWrapper.children('ul');\n if (!tagList[0]) {\n tagList = $('<ul unselectable=\"on\" class=\"k-reset\"/>').appendTo(that._innerWrapper);\n }\n that.tagList = tagList;\n },\n _tagTemplate: function () {\n var that = this;\n var options = that.options;\n var tagTemplate = options.tagTemplate;\n var hasDataSource = options.dataSource;\n var isMultiple = options.tagMode === 'multiple';\n var singleTag = options.messages.singleTag;\n var defaultTemplate;\n if (that.element[0].length && !hasDataSource) {\n options.dataTextField = options.dataTextField || 'text';\n options.dataValueField = options.dataValueField || 'value';\n }\n defaultTemplate = isMultiple ? kendo.template('#:' + kendo.expr(options.dataTextField, 'data') + '#', { useWithBlock: false }) : kendo.template('#:values.length# ' + singleTag);\n that.tagTextTemplate = tagTemplate = tagTemplate ? kendo.template(tagTemplate) : defaultTemplate;\n that.tagTemplate = function (data) {\n return '<li role=\"option\" aria-selected=\"true\" class=\"k-button\" unselectable=\"on\"><span unselectable=\"on\">' + tagTemplate(data) + '</span>' + '<span aria-hidden=\"true\" unselectable=\"on\" aria-label=\"' + (isMultiple ? 'delete\" title=\"' + that.options.messages.deleteTag + '\" aria-label=\"' + that.options.messages.deleteTag : 'open') + '\" class=\"k-select\"><span class=\"k-icon ' + (isMultiple ? 'k-i-close' : 'k-i-arrow-60-down') + '\">' + '</span></span></li>';\n };\n },\n _loader: function () {\n this._loading = $('<span class=\"k-icon k-i-loading ' + HIDDENCLASS + '\"></span>').insertAfter(this.input);\n },\n _clearButton: function () {\n List.fn._clearButton.call(this);\n if (this.options.clearButton) {\n this._clear.insertAfter(this.input);\n this.wrapper.addClass('k-multiselect-clearable');\n }\n },\n _textContainer: function () {\n var computedStyles = kendo.getComputedStyles(this.input[0], styles);\n computedStyles.position = 'absolute';\n computedStyles.visibility = 'hidden';\n computedStyles.top = -3333;\n computedStyles.left = -3333;\n this._span = $('<span/>').css(computedStyles).appendTo(this.wrapper);\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper = element.parent('span.k-multiselect');\n if (!wrapper[0]) {\n wrapper = element.wrap('<div class=\"k-widget k-multiselect\" unselectable=\"on\" />').parent();\n wrapper[0].style.cssText = element[0].style.cssText;\n wrapper[0].title = element[0].title;\n $('<div class=\"k-multiselect-wrap k-floatwrap\" role=\"listbox\" unselectable=\"on\" />').insertBefore(element);\n }\n that.wrapper = wrapper.addClass(element[0].className).css('display', '');\n that._innerWrapper = $(wrapper[0].firstChild);\n },\n _ariaSetSize: function (value) {\n var that = this;\n var selectedItems = that.tagList.children();\n if (value && selectedItems.length) {\n selectedItems.attr('aria-setsize', value);\n }\n },\n _ariaSetLive: function () {\n var that = this;\n that.ul.attr('aria-live', !that._isFilterEnabled() ? 'off' : 'polite');\n }\n });\n function compare(a, b) {\n var length;\n if (a === null && b !== null || a !== null && b === null) {\n return false;\n }\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n while (length--) {\n if (a[length] !== b[length]) {\n return false;\n }\n }\n return true;\n }\n ui.plugin(MultiSelect);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.multicolumncombobox', ['kendo.combobox'], f);\n}(function () {\n var __meta__ = {\n id: 'multicolumncombobox',\n name: 'MultiColumnComboBox',\n category: 'web',\n description: 'The MultiColumnComboBox widget allows the selection from pre-defined values or entering a new value where the list popup is rendered in table layout.',\n depends: ['combobox'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, ComboBox = ui.ComboBox, percentageUnitsRegex = /^\\d+(\\.\\d+)?%$/i, MCCOMBOBOX = 'k-dropdowngrid', POPUPCLASS = 'k-dropdowngrid-popup k-popup-flush';\n var MultiColumnComboBox = ComboBox.extend({\n init: function (element, options) {\n ComboBox.fn.init.call(this, element, options);\n this.list.addClass(POPUPCLASS);\n if (this._allColumnsWidthsAreSet(this.options)) {\n this.list.width(this._calculateDropDownWidth(this.options));\n } else if (this.options.dropDownWidth) {\n this.list.width(this.options.dropDownWidth);\n }\n },\n options: {\n name: 'MultiColumnComboBox',\n ns: '.kendoMultiColumnComboBox',\n columns: [],\n dropDownWidth: null,\n filterFields: []\n },\n setOptions: function (options) {\n ComboBox.fn.setOptions.call(this, options);\n if (this._allColumnsWidthsAreSet(options)) {\n this.list.width(this._calculateDropDownWidth(options));\n } else if (this.options.dropDownWidth) {\n this.list.width(this.options.dropDownWidth);\n }\n },\n _allColumnsWidthsAreSet: function (options) {\n var columns = options.columns;\n if (!columns || !columns.length) {\n return false;\n }\n for (var i = 0; i < columns.length; i++) {\n var currentWidth = columns[i].width;\n if (!currentWidth || isNaN(parseInt(currentWidth, 10)) || percentageUnitsRegex.test(currentWidth)) {\n return false;\n }\n }\n return true;\n },\n _calculateDropDownWidth: function (options) {\n var columns = options.columns;\n var totalWidth = kendo.support.scrollbar();\n for (var i = 0; i < columns.length; i++) {\n var currentWidth = columns[i].width;\n totalWidth = totalWidth + parseInt(currentWidth, 10);\n }\n return totalWidth;\n },\n _wrapper: function () {\n ComboBox.fn._wrapper.call(this);\n this.wrapper.addClass(MCCOMBOBOX);\n }\n });\n ui.plugin(MultiColumnComboBox);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.slider', ['kendo.draganddrop'], f);\n}(function () {\n var __meta__ = {\n id: 'slider',\n name: 'Slider',\n category: 'web',\n description: 'The Slider widget provides a rich input for selecting values or ranges of values.',\n depends: ['draganddrop']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, Draggable = kendo.ui.Draggable, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, extend = $.extend, format = kendo.format, parse = kendo.parseFloat, proxy = $.proxy, isArray = $.isArray, math = Math, support = kendo.support, pointers = support.pointers, msPointers = support.msPointers, CHANGE = 'change', SLIDE = 'slide', NS = '.slider', MOUSE_DOWN = 'touchstart' + NS + ' mousedown' + NS, TRACK_MOUSE_DOWN = pointers ? 'pointerdown' + NS : msPointers ? 'MSPointerDown' + NS : MOUSE_DOWN, MOUSE_UP = 'touchend' + NS + ' mouseup' + NS, TRACK_MOUSE_UP = pointers ? 'pointerup' : msPointers ? 'MSPointerUp' + NS : MOUSE_UP, MOVE_SELECTION = 'moveSelection', KEY_DOWN = 'keydown' + NS, CLICK = 'click' + NS, MOUSE_OVER = 'mouseover' + NS, FOCUS = 'focus' + NS, BLUR = 'blur' + NS, DRAG_HANDLE = '.k-draghandle', TRACK_SELECTOR = '.k-slider-track', TICK_SELECTOR = '.k-tick', STATE_SELECTED = 'k-state-selected', STATE_FOCUSED = 'k-state-focused', STATE_DEFAULT = 'k-state-default', STATE_DISABLED = 'k-state-disabled', DISABLED = 'disabled', UNDEFINED = 'undefined', TABINDEX = 'tabindex', getTouches = kendo.getTouches;\n var SliderBase = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n that._isHorizontal = options.orientation == 'horizontal';\n that._isRtl = that._isHorizontal && kendo.support.isRtl(element);\n that._position = that._isHorizontal ? 'left' : 'bottom';\n that._sizeFn = that._isHorizontal ? 'width' : 'height';\n that._outerSize = that._isHorizontal ? outerWidth : outerHeight;\n options.tooltip.format = options.tooltip.enabled ? options.tooltip.format || '{0}' : '{0}';\n if (options.smallStep <= 0) {\n throw new Error('Kendo UI Slider smallStep must be a positive number.');\n }\n that._createHtml();\n that.wrapper = that.element.closest('.k-slider');\n that._trackDiv = that.wrapper.find(TRACK_SELECTOR);\n that._setTrackDivWidth();\n that._maxSelection = that._trackDiv[that._sizeFn]();\n that._sliderItemsInit();\n that._reset();\n that._tabindex(that.wrapper.find(DRAG_HANDLE));\n that[options.enabled ? 'enable' : 'disable']();\n var rtlDirectionSign = kendo.support.isRtl(that.wrapper) ? -1 : 1;\n that._keyMap = {\n 37: step(-1 * rtlDirectionSign * options.smallStep),\n 40: step(-options.smallStep),\n 39: step(+1 * rtlDirectionSign * options.smallStep),\n 38: step(+options.smallStep),\n 35: setValue(options.max),\n 36: setValue(options.min),\n 33: step(+options.largeStep),\n 34: step(-options.largeStep)\n };\n kendo.notify(that);\n },\n events: [\n CHANGE,\n SLIDE\n ],\n options: {\n enabled: true,\n min: 0,\n max: 10,\n smallStep: 1,\n largeStep: 5,\n orientation: 'horizontal',\n tickPlacement: 'both',\n tooltip: {\n enabled: true,\n format: '{0}'\n }\n },\n _distance: function () {\n return round(this.options.max - this.options.min);\n },\n _resize: function () {\n this._setTrackDivWidth();\n this.wrapper.find('.k-slider-items').remove();\n this._maxSelection = this._trackDiv[this._sizeFn]();\n this._sliderItemsInit();\n this._refresh();\n if (this.options.enabled) {\n this.enable(true);\n }\n },\n _sliderItemsInit: function () {\n var that = this, options = that.options;\n var sizeBetweenTicks = that._maxSelection / ((options.max - options.min) / options.smallStep);\n var pixelWidths = that._calculateItemsWidth(math.floor(that._distance() / options.smallStep));\n if (options.tickPlacement != 'none' && sizeBetweenTicks >= 2) {\n $(this.element).parent().find('.k-slider-items').remove();\n that._trackDiv.before(createSliderItems(options, that._distance()));\n that._setItemsWidth(pixelWidths);\n that._setItemsTitle();\n }\n that._calculateSteps(pixelWidths);\n if (options.tickPlacement != 'none' && sizeBetweenTicks >= 2 && options.largeStep >= options.smallStep) {\n that._setItemsLargeTick();\n }\n },\n getSize: function () {\n return kendo.dimensions(this.wrapper);\n },\n _setTrackDivWidth: function () {\n var that = this, trackDivPosition = parseFloat(that._trackDiv.css(that._isRtl ? 'right' : that._position), 10) * 2;\n that._trackDiv[that._sizeFn](that.wrapper[that._sizeFn]() - 2 - trackDivPosition);\n },\n _setItemsWidth: function (pixelWidths) {\n var that = this, options = that.options, first = 0, last = pixelWidths.length - 1, items = that.wrapper.find(TICK_SELECTOR), i, paddingTop = 0, bordersWidth = 2, count = items.length, selection = 0;\n for (i = 0; i < count - 2; i++) {\n $(items[i + 1])[that._sizeFn](pixelWidths[i]);\n }\n if (that._isHorizontal) {\n $(items[first]).addClass('k-first')[that._sizeFn](pixelWidths[last - 1]);\n $(items[last]).addClass('k-last')[that._sizeFn](pixelWidths[last]);\n } else {\n $(items[last]).addClass('k-first')[that._sizeFn](pixelWidths[last]);\n $(items[first]).addClass('k-last')[that._sizeFn](pixelWidths[last - 1]);\n }\n if (that._distance() % options.smallStep !== 0 && !that._isHorizontal) {\n for (i = 0; i < pixelWidths.length; i++) {\n selection += pixelWidths[i];\n }\n paddingTop = that._maxSelection - selection;\n paddingTop += parseFloat(that._trackDiv.css(that._position), 10) + bordersWidth;\n that.wrapper.find('.k-slider-items').css('padding-top', paddingTop);\n }\n },\n _setItemsTitle: function () {\n var that = this, options = that.options, items = that.wrapper.find(TICK_SELECTOR), titleNumber = options.min, count = items.length, i = that._isHorizontal && !that._isRtl ? 0 : count - 1, limit = that._isHorizontal && !that._isRtl ? count : -1, increment = that._isHorizontal && !that._isRtl ? 1 : -1;\n for (; i - limit !== 0; i += increment) {\n $(items[i]).attr('title', format(options.tooltip.format, round(titleNumber)));\n titleNumber += options.smallStep;\n }\n },\n _setItemsLargeTick: function () {\n var that = this, options = that.options, items = that.wrapper.find(TICK_SELECTOR), i = 0, item, value;\n if (removeFraction(options.largeStep) % removeFraction(options.smallStep) === 0 || that._distance() / options.largeStep >= 3) {\n if (!that._isHorizontal && !that._isRtl) {\n items = $.makeArray(items).reverse();\n }\n for (i = 0; i < items.length; i++) {\n item = $(items[i]);\n value = that._values[i];\n var valueWithoutFraction = round(removeFraction(value - this.options.min));\n if (valueWithoutFraction % removeFraction(options.smallStep) === 0 && valueWithoutFraction % removeFraction(options.largeStep) === 0) {\n item.addClass('k-tick-large').html('<span class=\\'k-label\\'>' + item.attr('title') + '</span>');\n if (i !== 0 && i !== items.length - 1) {\n item.css('line-height', item[that._sizeFn]() + 'px');\n }\n }\n }\n }\n },\n _calculateItemsWidth: function (itemsCount) {\n var that = this, options = that.options, trackDivSize = parseFloat(that._trackDiv.css(that._sizeFn)) + 1, distance = that._distance(), pixelStep = trackDivSize / distance, itemWidth, pixelWidths, i;\n if (distance / options.smallStep - math.floor(distance / options.smallStep) > 0) {\n trackDivSize -= distance % options.smallStep * pixelStep;\n }\n itemWidth = trackDivSize / itemsCount;\n pixelWidths = [];\n for (i = 0; i < itemsCount - 1; i++) {\n pixelWidths[i] = itemWidth;\n }\n pixelWidths[itemsCount - 1] = pixelWidths[itemsCount] = itemWidth / 2;\n return that._roundWidths(pixelWidths);\n },\n _roundWidths: function (pixelWidthsArray) {\n var balance = 0, count = pixelWidthsArray.length, i;\n for (i = 0; i < count; i++) {\n balance += pixelWidthsArray[i] - math.floor(pixelWidthsArray[i]);\n pixelWidthsArray[i] = math.floor(pixelWidthsArray[i]);\n }\n balance = math.round(balance);\n return this._addAdditionalSize(balance, pixelWidthsArray);\n },\n _addAdditionalSize: function (additionalSize, pixelWidthsArray) {\n if (additionalSize === 0) {\n return pixelWidthsArray;\n }\n var step = parseFloat(pixelWidthsArray.length - 1) / parseFloat(additionalSize == 1 ? additionalSize : additionalSize - 1), i;\n for (i = 0; i < additionalSize; i++) {\n pixelWidthsArray[parseInt(math.round(step * i), 10)] += 1;\n }\n return pixelWidthsArray;\n },\n _calculateSteps: function (pixelWidths) {\n var that = this, options = that.options, val = options.min, selection = 0, distance = that._distance(), itemsCount = math.ceil(distance / options.smallStep), i = 1, lastItem;\n itemsCount += distance / options.smallStep % 1 === 0 ? 1 : 0;\n pixelWidths.splice(0, 0, pixelWidths[itemsCount - 2] * 2);\n pixelWidths.splice(itemsCount - 1, 1, pixelWidths.pop() * 2);\n that._pixelSteps = [selection];\n that._values = [val];\n if (itemsCount === 0) {\n return;\n }\n while (i < itemsCount) {\n selection += (pixelWidths[i - 1] + pixelWidths[i]) / 2;\n that._pixelSteps[i] = selection;\n val += options.smallStep;\n that._values[i] = round(val);\n i++;\n }\n lastItem = distance % options.smallStep === 0 ? itemsCount - 1 : itemsCount;\n that._pixelSteps[lastItem] = that._maxSelection;\n that._values[lastItem] = options.max;\n if (that._isRtl) {\n that._pixelSteps.reverse();\n that._values.reverse();\n }\n },\n _getValueFromPosition: function (mousePosition, dragableArea) {\n var that = this, options = that.options, step = math.max(options.smallStep * (that._maxSelection / that._distance()), 0), position = 0, halfStep = step / 2, i;\n if (that._isHorizontal) {\n position = mousePosition - dragableArea.startPoint;\n if (that._isRtl) {\n position = that._maxSelection - position;\n }\n } else {\n position = dragableArea.startPoint - mousePosition;\n }\n if (that._maxSelection - (parseInt(that._maxSelection % step, 10) - 3) / 2 < position) {\n return options.max;\n }\n for (i = 0; i < that._pixelSteps.length; i++) {\n if (math.abs(that._pixelSteps[i] - position) - 1 <= halfStep) {\n return round(that._values[i]);\n }\n }\n },\n _getFormattedValue: function (val, drag) {\n var that = this, html = '', tooltip = that.options.tooltip, tooltipTemplate, selectionStart, selectionEnd;\n if (isArray(val)) {\n selectionStart = val[0];\n selectionEnd = val[1];\n } else if (drag && drag.type) {\n selectionStart = drag.selectionStart;\n selectionEnd = drag.selectionEnd;\n }\n if (drag) {\n tooltipTemplate = drag.tooltipTemplate;\n }\n if (!tooltipTemplate && tooltip.template) {\n tooltipTemplate = kendo.template(tooltip.template);\n }\n if (isArray(val) || drag && drag.type) {\n if (tooltipTemplate) {\n html = tooltipTemplate({\n selectionStart: selectionStart,\n selectionEnd: selectionEnd\n });\n } else {\n selectionStart = format(tooltip.format, selectionStart);\n selectionEnd = format(tooltip.format, selectionEnd);\n html = selectionStart + ' - ' + selectionEnd;\n }\n } else {\n if (drag) {\n drag.val = val;\n }\n if (tooltipTemplate) {\n html = tooltipTemplate({ value: val });\n } else {\n html = format(tooltip.format, val);\n }\n }\n return html;\n },\n _getDraggableArea: function () {\n var that = this, offset = kendo.getOffset(that._trackDiv);\n return {\n startPoint: that._isHorizontal ? offset.left : offset.top + that._maxSelection,\n endPoint: that._isHorizontal ? offset.left + that._maxSelection : offset.top\n };\n },\n _createHtml: function () {\n var that = this, element = that.element, options = that.options, inputs = element.find('input');\n if (inputs.length == 2) {\n inputs.eq(0).prop('value', formatValue(options.selectionStart));\n inputs.eq(1).prop('value', formatValue(options.selectionEnd));\n } else {\n element.prop('value', formatValue(options.value));\n }\n element.wrap(createWrapper(options, element, that._isHorizontal)).hide();\n if (options.showButtons) {\n element.before(createButton(options, 'increase', that._isHorizontal, that._isRtl)).before(createButton(options, 'decrease', that._isHorizontal, that._isRtl));\n }\n element.before(createTrack(options, element));\n },\n _focus: function (e) {\n var that = this, target = e.target, val = that.value(), drag = that._drag;\n if (!drag) {\n if (target == that.wrapper.find(DRAG_HANDLE).eq(0)[0]) {\n drag = that._firstHandleDrag;\n that._activeHandle = 0;\n } else {\n drag = that._lastHandleDrag;\n that._activeHandle = 1;\n }\n val = val[that._activeHandle];\n }\n $(target).addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n if (drag) {\n that._activeHandleDrag = drag;\n drag.selectionStart = that.options.selectionStart;\n drag.selectionEnd = that.options.selectionEnd;\n drag._updateTooltip(val);\n }\n },\n _focusWithMouse: function (target) {\n target = $(target);\n var that = this, idx = target.is(DRAG_HANDLE) ? target.index() : 0;\n window.setTimeout(function () {\n that.wrapper.find(DRAG_HANDLE)[idx == 2 ? 1 : 0].focus();\n }, 1);\n that._setTooltipTimeout();\n },\n _blur: function (e) {\n var that = this, drag = that._activeHandleDrag;\n $(e.target).removeClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n if (drag) {\n drag._removeTooltip();\n delete that._activeHandleDrag;\n delete that._activeHandle;\n }\n },\n _setTooltipTimeout: function () {\n var that = this;\n that._tooltipTimeout = window.setTimeout(function () {\n var drag = that._drag || that._activeHandleDrag;\n if (drag) {\n drag._removeTooltip();\n }\n }, 300);\n },\n _clearTooltipTimeout: function () {\n var that = this;\n window.clearTimeout(this._tooltipTimeout);\n var drag = that._drag || that._activeHandleDrag;\n if (drag && drag.tooltipDiv) {\n drag.tooltipDiv.stop(true, false).css('opacity', 1);\n }\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._form = form.on('reset', proxy(that._formResetHandler, that));\n }\n },\n min: function (value) {\n if (!value) {\n return this.options.min;\n }\n this.setOptions({ 'min': value });\n },\n max: function (value) {\n if (!value) {\n return this.options.max;\n }\n this.setOptions({ 'max': value });\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._sliderItemsInit();\n this._refresh();\n },\n destroy: function () {\n if (this._form) {\n this._form.off('reset', this._formResetHandler);\n }\n Widget.fn.destroy.call(this);\n }\n });\n function createWrapper(options, element, isHorizontal) {\n var orientationCssClass = isHorizontal ? ' k-slider-horizontal' : ' k-slider-vertical', style = options.style ? options.style : element.attr('style'), cssClasses = element.attr('class') ? ' ' + element.attr('class') : '', tickPlacementCssClass = '';\n if (options.tickPlacement == 'bottomRight') {\n tickPlacementCssClass = ' k-slider-bottomright';\n } else if (options.tickPlacement == 'topLeft') {\n tickPlacementCssClass = ' k-slider-topleft';\n }\n style = style ? ' style=\\'' + style + '\\'' : '';\n return '<div class=\\'k-widget k-slider' + orientationCssClass + cssClasses + '\\'' + style + '>' + '<div class=\\'k-slider-wrap' + (options.showButtons ? ' k-slider-buttons' : '') + tickPlacementCssClass + '\\'></div></div>';\n }\n function createButton(options, type, isHorizontal, isRtl) {\n var buttonCssClass = '';\n if (isHorizontal) {\n if (!isRtl && type == 'increase' || isRtl && type != 'increase') {\n buttonCssClass = 'k-i-arrow-60-right';\n } else {\n buttonCssClass = 'k-i-arrow-60-left';\n }\n } else {\n if (type == 'increase') {\n buttonCssClass = 'k-i-arrow-60-up';\n } else {\n buttonCssClass = 'k-i-arrow-60-down';\n }\n }\n return '<a class=\\'k-button k-button-' + type + '\\' ' + 'title=\\'' + options[type + 'ButtonTitle'] + '\\' ' + 'aria-label=\\'' + options[type + 'ButtonTitle'] + '\\'>' + '<span class=\\'k-icon ' + buttonCssClass + '\\'></span></a>';\n }\n function createSliderItems(options, distance) {\n var result = '<ul class=\\'k-reset k-slider-items\\'>', count = math.floor(round(distance / options.smallStep)) + 1, i;\n for (i = 0; i < count; i++) {\n result += '<li class=\\'k-tick\\' role=\\'presentation\\'> </li>';\n }\n result += '</ul>';\n return result;\n }\n function createTrack(options, element) {\n var dragHandleCount = element.is('input') ? 1 : 2, firstDragHandleTitle = dragHandleCount == 2 ? options.leftDragHandleTitle : options.dragHandleTitle;\n return '<div class=\\'k-slider-track\\'><div class=\\'k-slider-selection\\'><!-- --></div>' + '<a href=\\'#\\' class=\\'k-draghandle\\' title=\\'' + firstDragHandleTitle + '\\' role=\\'slider\\' aria-valuemin=\\'' + options.min + '\\' aria-valuemax=\\'' + options.max + '\\' aria-valuenow=\\'' + (dragHandleCount > 1 ? options.selectionStart || options.min : options.value || options.min) + '\\'></a>' + (dragHandleCount > 1 ? '<a href=\\'#\\' class=\\'k-draghandle\\' title=\\'' + options.rightDragHandleTitle + '\\'role=\\'slider\\' aria-valuemin=\\'' + options.min + '\\' aria-valuemax=\\'' + options.max + '\\' aria-valuenow=\\'' + (options.selectionEnd || options.max) + '\\'></a>' : '') + '</div>';\n }\n function step(stepValue) {\n return function (value) {\n return value + stepValue;\n };\n }\n function setValue(value) {\n return function () {\n return value;\n };\n }\n function formatValue(value) {\n return (value + '').replace('.', kendo.cultures.current.numberFormat['.']);\n }\n function calculatePrecision(value) {\n var number = value.toString();\n var precision = 0;\n number = number.split('.');\n if (number[1]) {\n precision = number[1].length;\n }\n precision = precision > 10 ? 10 : precision;\n return precision;\n }\n function round(value) {\n var precision, power;\n value = parseFloat(value, 10);\n precision = calculatePrecision(value);\n power = math.pow(10, precision || 0);\n return math.round(value * power) / power;\n }\n function parseAttr(element, name) {\n var value = parse(element.getAttribute(name));\n if (value === null) {\n value = undefined;\n }\n return value;\n }\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n function removeFraction(value) {\n return value * 10000;\n }\n var Slider = SliderBase.extend({\n init: function (element, options) {\n var that = this, dragHandle;\n element.type = 'text';\n options = extend({}, {\n value: parseAttr(element, 'value'),\n min: parseAttr(element, 'min'),\n max: parseAttr(element, 'max'),\n smallStep: parseAttr(element, 'step')\n }, options);\n element = $(element);\n if (options && options.enabled === undefined) {\n options.enabled = !element.is('[disabled]');\n }\n SliderBase.fn.init.call(that, element, options);\n options = that.options;\n if (!defined(options.value) || options.value === null) {\n options.value = options.min;\n element.prop('value', formatValue(options.min));\n }\n options.value = math.max(math.min(options.value, options.max), options.min);\n dragHandle = that.wrapper.find(DRAG_HANDLE);\n this._selection = new Slider.Selection(dragHandle, that, options);\n that._drag = new Slider.Drag(dragHandle, '', that, options);\n },\n options: {\n name: 'Slider',\n showButtons: true,\n increaseButtonTitle: 'Increase',\n decreaseButtonTitle: 'Decrease',\n dragHandleTitle: 'drag',\n tooltip: { format: '{0:#,#.##}' },\n value: null\n },\n enable: function (enable) {\n var that = this, options = that.options, clickHandler, move;\n that.disable();\n if (enable === false) {\n return;\n }\n that.wrapper.removeClass(STATE_DISABLED).addClass(STATE_DEFAULT);\n that.wrapper.find('input').removeAttr(DISABLED);\n clickHandler = function (e) {\n var touch = getTouches(e)[0];\n if (!touch) {\n return;\n }\n var mousePosition = that._isHorizontal ? touch.location.pageX : touch.location.pageY, dragableArea = that._getDraggableArea(), target = $(e.target);\n if (target.hasClass('k-draghandle')) {\n target.addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n return;\n }\n that._update(that._getValueFromPosition(mousePosition, dragableArea));\n that._focusWithMouse(e.target);\n that._drag.dragstart(e);\n e.preventDefault();\n };\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).on(TRACK_MOUSE_DOWN, clickHandler).end().on(TRACK_MOUSE_DOWN, function () {\n $(document.documentElement).one('selectstart', kendo.preventDefault);\n }).on(TRACK_MOUSE_UP, function () {\n that._drag._end();\n });\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, 0).on(MOUSE_UP, function () {\n that._setTooltipTimeout();\n }).on(CLICK, function (e) {\n that._focusWithMouse(e.target);\n e.preventDefault();\n }).on(FOCUS, proxy(that._focus, that)).on(BLUR, proxy(that._blur, that));\n move = proxy(function (sign) {\n var newVal = that._nextValueByIndex(that._valueIndex + sign * 1);\n that._setValueInRange(newVal);\n that._drag._updateTooltip(newVal);\n }, that);\n if (options.showButtons) {\n var mouseDownHandler = proxy(function (e, sign) {\n this._clearTooltipTimeout();\n if (e.which === 1 || support.touch && e.which === 0) {\n move(sign);\n this.timeout = setTimeout(proxy(function () {\n this.timer = setInterval(function () {\n move(sign);\n }, 60);\n }, this), 200);\n }\n }, that);\n that.wrapper.find('.k-button').on(MOUSE_UP, proxy(function (e) {\n this._clearTimer();\n that._focusWithMouse(e.target);\n }, that)).on(MOUSE_OVER, function (e) {\n $(e.currentTarget).addClass('k-state-hover');\n }).on('mouseout' + NS, proxy(function (e) {\n $(e.currentTarget).removeClass('k-state-hover');\n this._clearTimer();\n }, that)).eq(0).on(MOUSE_DOWN, proxy(function (e) {\n mouseDownHandler(e, 1);\n }, that)).click(false).end().eq(1).on(MOUSE_DOWN, proxy(function (e) {\n mouseDownHandler(e, -1);\n }, that)).click(kendo.preventDefault);\n }\n that.wrapper.find(DRAG_HANDLE).off(KEY_DOWN, false).on(KEY_DOWN, proxy(this._keydown, that));\n options.enabled = true;\n },\n disable: function () {\n var that = this;\n that.wrapper.removeClass(STATE_DEFAULT).addClass(STATE_DISABLED);\n $(that.element).prop(DISABLED, DISABLED);\n that.wrapper.find('.k-button').off(MOUSE_DOWN).on(MOUSE_DOWN, function (e) {\n e.preventDefault();\n $(this).addClass('k-state-active');\n }).off(MOUSE_UP).on(MOUSE_UP, function (e) {\n e.preventDefault();\n $(this).removeClass('k-state-active');\n }).off('mouseleave' + NS).on('mouseleave' + NS, kendo.preventDefault).off(MOUSE_OVER).on(MOUSE_OVER, kendo.preventDefault);\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(TRACK_MOUSE_DOWN).off(TRACK_MOUSE_UP);\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, -1).off(MOUSE_UP).off(KEY_DOWN).off(CLICK).off(FOCUS).off(BLUR);\n that.options.enabled = false;\n },\n _update: function (val) {\n var that = this, change = that.value() != val;\n that.value(val);\n if (change) {\n that.trigger(CHANGE, { value: that.options.value });\n }\n },\n value: function (value) {\n var that = this, options = that.options;\n value = round(value);\n if (isNaN(value)) {\n return options.value;\n }\n if (value >= options.min && value <= options.max) {\n if (options.value != value) {\n that.element.prop('value', formatValue(value));\n options.value = value;\n that._refreshAriaAttr(value);\n that._refresh();\n }\n }\n },\n _refresh: function () {\n this.trigger(MOVE_SELECTION, { value: this.options.value });\n },\n _refreshAriaAttr: function (value) {\n var that = this, drag = that._drag, formattedValue;\n if (drag && drag._tooltipDiv) {\n formattedValue = drag._tooltipDiv.text();\n } else {\n formattedValue = that._getFormattedValue(value, null);\n }\n this.wrapper.find(DRAG_HANDLE).attr('aria-valuenow', value).attr('aria-valuetext', formattedValue);\n },\n _clearTimer: function () {\n clearTimeout(this.timeout);\n clearInterval(this.timer);\n },\n _keydown: function (e) {\n var that = this;\n if (e.keyCode in that._keyMap) {\n that._clearTooltipTimeout();\n that._setValueInRange(that._keyMap[e.keyCode](that.options.value));\n that._drag._updateTooltip(that.value());\n e.preventDefault();\n }\n },\n _setValueInRange: function (val) {\n var that = this, options = that.options;\n val = round(val);\n if (isNaN(val)) {\n that._update(options.min);\n return;\n }\n val = math.max(math.min(val, options.max), options.min);\n that._update(val);\n },\n _nextValueByIndex: function (index) {\n var count = this._values.length;\n if (this._isRtl) {\n index = count - 1 - index;\n }\n return this._values[math.max(0, math.min(index, count - 1))];\n },\n _formResetHandler: function () {\n var that = this, min = that.options.min;\n setTimeout(function () {\n var value = that.element[0].value;\n that.value(value === '' || isNaN(value) ? min : value);\n });\n },\n destroy: function () {\n var that = this;\n SliderBase.fn.destroy.call(that);\n that.wrapper.off(NS).find('.k-button').off(NS).end().find(DRAG_HANDLE).off(NS).end().find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(NS).end();\n that._drag.draggable.destroy();\n that._drag._removeTooltip(true);\n }\n });\n Slider.Selection = function (dragHandle, that, options) {\n function moveSelection(val) {\n var selectionValue = val - options.min, index = that._valueIndex = math.ceil(round(selectionValue / options.smallStep)), selection = parseInt(that._pixelSteps[index], 10), selectionDiv = that._trackDiv.find('.k-slider-selection'), halfDragHanndle = parseInt(that._outerSize(dragHandle) / 2, 10), rtlCorrection = that._isRtl ? 2 : 0;\n selectionDiv[that._sizeFn](that._isRtl ? that._maxSelection - selection : selection);\n dragHandle.css(that._position, selection - halfDragHanndle - rtlCorrection);\n }\n moveSelection(options.value);\n that.bind([\n SLIDE,\n MOVE_SELECTION\n ], function (e) {\n moveSelection(parseFloat(e.value, 10));\n });\n that.bind(CHANGE, function (e) {\n moveSelection(parseFloat(e.sender.value(), 10));\n });\n };\n Slider.Drag = function (element, type, owner, options) {\n var that = this;\n that.owner = owner;\n that.options = options;\n that.element = element;\n that.type = type;\n that.draggable = new Draggable(element, {\n distance: 0,\n dragstart: proxy(that._dragstart, that),\n drag: proxy(that.drag, that),\n dragend: proxy(that.dragend, that),\n dragcancel: proxy(that.dragcancel, that)\n });\n element.click(false);\n element.on('dragstart', function (e) {\n e.preventDefault();\n });\n };\n Slider.Drag.prototype = {\n dragstart: function (e) {\n this.owner._activeDragHandle = this;\n this.draggable.userEvents.cancel();\n this._dragstart(e);\n this.dragend();\n },\n _dragstart: function (e) {\n var that = this, owner = that.owner, options = that.options;\n if (!options.enabled) {\n e.preventDefault();\n return;\n }\n this.owner._activeDragHandle = this;\n owner.element.off(MOUSE_OVER);\n owner.wrapper.find('.' + STATE_FOCUSED).removeClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n that.element.addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n $(document.documentElement).css('cursor', 'pointer');\n that.dragableArea = owner._getDraggableArea();\n that.step = math.max(options.smallStep * (owner._maxSelection / owner._distance()), 0);\n if (that.type) {\n that.selectionStart = options.selectionStart;\n that.selectionEnd = options.selectionEnd;\n owner._setZIndex(that.type);\n } else {\n that.oldVal = that.val = options.value;\n }\n that._removeTooltip(true);\n that._createTooltip();\n },\n _createTooltip: function () {\n var that = this, owner = that.owner, tooltip = that.options.tooltip, html = '', wnd = $(window), tooltipTemplate, colloutCssClass;\n if (!tooltip.enabled) {\n return;\n }\n if (tooltip.template) {\n tooltipTemplate = that.tooltipTemplate = kendo.template(tooltip.template);\n }\n $('.k-slider-tooltip').remove();\n that.tooltipDiv = $('<div class=\\'k-widget k-tooltip k-slider-tooltip\\'><!-- --></div>').appendTo(document.body);\n html = owner._getFormattedValue(that.val || owner.value(), that);\n if (!that.type) {\n colloutCssClass = 'k-callout-' + (owner._isHorizontal ? 's' : 'e');\n that.tooltipInnerDiv = '<div class=\\'k-callout ' + colloutCssClass + '\\'><!-- --></div>';\n html += that.tooltipInnerDiv;\n }\n that.tooltipDiv.html(html);\n that._scrollOffset = {\n top: wnd.scrollTop(),\n left: wnd.scrollLeft()\n };\n that.moveTooltip();\n },\n drag: function (e) {\n var that = this, owner = that.owner, x = e.x.location, y = e.y.location, startPoint = that.dragableArea.startPoint, endPoint = that.dragableArea.endPoint, slideParams;\n e.preventDefault();\n if (owner._isHorizontal) {\n if (owner._isRtl) {\n that.val = that.constrainValue(x, startPoint, endPoint, x < endPoint);\n } else {\n that.val = that.constrainValue(x, startPoint, endPoint, x >= endPoint);\n }\n } else {\n that.val = that.constrainValue(y, endPoint, startPoint, y <= endPoint);\n }\n if (that.oldVal != that.val) {\n that.oldVal = that.val;\n if (that.type) {\n if (that.type == 'firstHandle') {\n if (that.val < that.selectionEnd) {\n that.selectionStart = that.val;\n } else {\n that.selectionStart = that.selectionEnd = that.val;\n }\n } else {\n if (that.val > that.selectionStart) {\n that.selectionEnd = that.val;\n } else {\n that.selectionStart = that.selectionEnd = that.val;\n }\n }\n slideParams = {\n values: [\n that.selectionStart,\n that.selectionEnd\n ],\n value: [\n that.selectionStart,\n that.selectionEnd\n ]\n };\n } else {\n slideParams = { value: that.val };\n }\n owner.trigger(SLIDE, slideParams);\n }\n that._updateTooltip(that.val);\n },\n _updateTooltip: function (val) {\n var that = this, options = that.options, tooltip = options.tooltip, html = '';\n if (!tooltip.enabled) {\n return;\n }\n if (!that.tooltipDiv) {\n that._createTooltip();\n }\n html = that.owner._getFormattedValue(round(val), that);\n if (!that.type) {\n html += that.tooltipInnerDiv;\n }\n that.tooltipDiv.html(html);\n that.moveTooltip();\n },\n dragcancel: function () {\n this.owner._refresh();\n $(document.documentElement).css('cursor', '');\n return this._end();\n },\n dragend: function () {\n var that = this, owner = that.owner;\n $(document.documentElement).css('cursor', '');\n if (that.type) {\n owner._update(that.selectionStart, that.selectionEnd);\n } else {\n owner._update(that.val);\n that.draggable.userEvents._disposeAll();\n }\n that.draggable.userEvents.cancel();\n return that._end();\n },\n _end: function () {\n var that = this, owner = that.owner;\n owner._focusWithMouse(that.element);\n owner.element.on(MOUSE_OVER);\n return false;\n },\n _removeTooltip: function (noAnimation) {\n var that = this, owner = that.owner;\n if (that.tooltipDiv && owner.options.tooltip.enabled && owner.options.enabled) {\n if (noAnimation) {\n that.tooltipDiv.remove();\n that.tooltipDiv = null;\n } else {\n that.tooltipDiv.fadeOut('slow', function () {\n $(this).remove();\n that.tooltipDiv = null;\n });\n }\n }\n },\n moveTooltip: function () {\n var that = this, owner = that.owner, top = 0, left = 0, element = that.element, offset = kendo.getOffset(element), margin = 8, viewport = $(window), callout = that.tooltipDiv.find('.k-callout'), width = outerWidth(that.tooltipDiv), height = outerHeight(that.tooltipDiv), dragHandles, sdhOffset, diff, anchorSize;\n if (that.type) {\n dragHandles = owner.wrapper.find(DRAG_HANDLE);\n offset = kendo.getOffset(dragHandles.eq(0));\n sdhOffset = kendo.getOffset(dragHandles.eq(1));\n if (owner._isHorizontal) {\n top = sdhOffset.top;\n left = offset.left + (sdhOffset.left - offset.left) / 2;\n } else {\n top = offset.top + (sdhOffset.top - offset.top) / 2;\n left = sdhOffset.left;\n }\n anchorSize = outerWidth(dragHandles.eq(0)) + 2 * margin;\n } else {\n top = offset.top;\n left = offset.left;\n anchorSize = outerWidth(element) + 2 * margin;\n }\n if (owner._isHorizontal) {\n left -= parseInt((width - owner._outerSize(element)) / 2, 10);\n top -= height + margin + (callout.length ? callout.height() : 0);\n } else {\n top -= parseInt((height - owner._outerSize(element)) / 2, 10);\n left -= width + margin + (callout.length ? callout.width() : 0);\n }\n if (owner._isHorizontal) {\n diff = that._flip(top, height, anchorSize, outerHeight(viewport) + that._scrollOffset.top);\n top += diff;\n left += that._fit(left, width, outerWidth(viewport) + that._scrollOffset.left);\n } else {\n diff = that._flip(left, width, anchorSize, outerWidth(viewport) + that._scrollOffset.left);\n top += that._fit(top, height, outerHeight(viewport) + that._scrollOffset.top);\n left += diff;\n }\n if (diff > 0 && callout) {\n callout.removeClass();\n callout.addClass('k-callout k-callout-' + (owner._isHorizontal ? 'n' : 'w'));\n }\n that.tooltipDiv.css({\n top: top,\n left: left\n });\n },\n _fit: function (position, size, viewPortEnd) {\n var output = 0;\n if (position + size > viewPortEnd) {\n output = viewPortEnd - (position + size);\n }\n if (position < 0) {\n output = -position;\n }\n return output;\n },\n _flip: function (offset, size, anchorSize, viewPortEnd) {\n var output = 0;\n if (offset + size > viewPortEnd) {\n output += -(anchorSize + size);\n }\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n return output;\n },\n constrainValue: function (position, min, max, maxOverflow) {\n var that = this, val = 0;\n if (min < position && position < max) {\n val = that.owner._getValueFromPosition(position, that.dragableArea);\n } else {\n if (maxOverflow) {\n val = that.options.max;\n } else {\n val = that.options.min;\n }\n }\n return val;\n }\n };\n kendo.ui.plugin(Slider);\n var RangeSlider = SliderBase.extend({\n init: function (element, options) {\n var that = this, inputs = $(element).find('input'), firstInput = inputs.eq(0)[0], secondInput = inputs.eq(1)[0];\n firstInput.type = 'text';\n secondInput.type = 'text';\n if (options && options.showButtons) {\n if (window.console) {\n window.console.warn('showbuttons option is not supported for the range slider, ignoring');\n }\n options.showButtons = false;\n }\n options = extend({}, {\n selectionStart: parseAttr(firstInput, 'value'),\n min: parseAttr(firstInput, 'min'),\n max: parseAttr(firstInput, 'max'),\n smallStep: parseAttr(firstInput, 'step')\n }, {\n selectionEnd: parseAttr(secondInput, 'value'),\n min: parseAttr(secondInput, 'min'),\n max: parseAttr(secondInput, 'max'),\n smallStep: parseAttr(secondInput, 'step')\n }, options);\n if (options && options.enabled === undefined) {\n options.enabled = !inputs.is('[disabled]');\n }\n SliderBase.fn.init.call(that, element, options);\n options = that.options;\n if (!defined(options.selectionStart) || options.selectionStart === null) {\n options.selectionStart = options.min;\n inputs.eq(0).prop('value', formatValue(options.min));\n }\n if (!defined(options.selectionEnd) || options.selectionEnd === null) {\n options.selectionEnd = options.max;\n inputs.eq(1).prop('value', formatValue(options.max));\n }\n var dragHandles = that.wrapper.find(DRAG_HANDLE);\n this._selection = new RangeSlider.Selection(dragHandles, that, options);\n that._firstHandleDrag = new Slider.Drag(dragHandles.eq(0), 'firstHandle', that, options);\n that._lastHandleDrag = new Slider.Drag(dragHandles.eq(1), 'lastHandle', that, options);\n },\n options: {\n name: 'RangeSlider',\n leftDragHandleTitle: 'drag',\n rightDragHandleTitle: 'drag',\n tooltip: { format: '{0:#,#.##}' },\n selectionStart: null,\n selectionEnd: null\n },\n enable: function (enable) {\n var that = this, options = that.options, clickHandler;\n that.disable();\n if (enable === false) {\n return;\n }\n that.wrapper.removeClass(STATE_DISABLED).addClass(STATE_DEFAULT);\n that.wrapper.find('input').removeAttr(DISABLED);\n clickHandler = function (e) {\n var touch = getTouches(e)[0];\n if (!touch) {\n return;\n }\n var mousePosition = that._isHorizontal ? touch.location.pageX : touch.location.pageY, dragableArea = that._getDraggableArea(), val = that._getValueFromPosition(mousePosition, dragableArea), target = $(e.target), from, to, drag;\n if (target.hasClass('k-draghandle')) {\n that.wrapper.find('.' + STATE_FOCUSED).removeClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n target.addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n return;\n }\n if (val < options.selectionStart) {\n from = val;\n to = options.selectionEnd;\n drag = that._firstHandleDrag;\n } else if (val > that.selectionEnd) {\n from = options.selectionStart;\n to = val;\n drag = that._lastHandleDrag;\n } else {\n if (val - options.selectionStart <= options.selectionEnd - val) {\n from = val;\n to = options.selectionEnd;\n drag = that._firstHandleDrag;\n } else {\n from = options.selectionStart;\n to = val;\n drag = that._lastHandleDrag;\n }\n }\n drag.dragstart(e);\n that._setValueInRange(from, to);\n that._focusWithMouse(drag.element);\n };\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).on(TRACK_MOUSE_DOWN, clickHandler).end().on(TRACK_MOUSE_DOWN, function () {\n $(document.documentElement).one('selectstart', kendo.preventDefault);\n }).on(TRACK_MOUSE_UP, function () {\n if (that._activeDragHandle) {\n that._activeDragHandle._end();\n }\n });\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, 0).on(MOUSE_UP, function () {\n that._setTooltipTimeout();\n }).on(CLICK, function (e) {\n that._focusWithMouse(e.target);\n e.preventDefault();\n }).on(FOCUS, proxy(that._focus, that)).on(BLUR, proxy(that._blur, that));\n that.wrapper.find(DRAG_HANDLE).off(KEY_DOWN, kendo.preventDefault).eq(0).on(KEY_DOWN, proxy(function (e) {\n this._keydown(e, 'firstHandle');\n }, that)).end().eq(1).on(KEY_DOWN, proxy(function (e) {\n this._keydown(e, 'lastHandle');\n }, that));\n that.options.enabled = true;\n },\n disable: function () {\n var that = this;\n that.wrapper.removeClass(STATE_DEFAULT).addClass(STATE_DISABLED);\n that.wrapper.find('input').prop(DISABLED, DISABLED);\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(TRACK_MOUSE_DOWN).off(TRACK_MOUSE_UP);\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, -1).off(MOUSE_UP).off(KEY_DOWN).off(CLICK).off(FOCUS).off(BLUR);\n that.options.enabled = false;\n },\n _keydown: function (e, handle) {\n var that = this, selectionStartValue = that.options.selectionStart, selectionEndValue = that.options.selectionEnd, dragSelectionStart, dragSelectionEnd, activeHandleDrag;\n if (e.keyCode in that._keyMap) {\n that._clearTooltipTimeout();\n if (handle == 'firstHandle') {\n activeHandleDrag = that._activeHandleDrag = that._firstHandleDrag;\n selectionStartValue = that._keyMap[e.keyCode](selectionStartValue);\n if (selectionStartValue > selectionEndValue) {\n selectionEndValue = selectionStartValue;\n }\n } else {\n activeHandleDrag = that._activeHandleDrag = that._lastHandleDrag;\n selectionEndValue = that._keyMap[e.keyCode](selectionEndValue);\n if (selectionStartValue > selectionEndValue) {\n selectionStartValue = selectionEndValue;\n }\n }\n that._setValueInRange(round(selectionStartValue), round(selectionEndValue));\n dragSelectionStart = Math.max(selectionStartValue, that.options.selectionStart);\n dragSelectionEnd = Math.min(selectionEndValue, that.options.selectionEnd);\n activeHandleDrag.selectionEnd = Math.max(dragSelectionEnd, that.options.selectionStart);\n activeHandleDrag.selectionStart = Math.min(dragSelectionStart, that.options.selectionEnd);\n activeHandleDrag._updateTooltip(that.value()[that._activeHandle]);\n e.preventDefault();\n }\n },\n _update: function (selectionStart, selectionEnd) {\n var that = this, values = that.value();\n var change = values[0] != selectionStart || values[1] != selectionEnd;\n that.value([\n selectionStart,\n selectionEnd\n ]);\n if (change) {\n that.trigger(CHANGE, {\n values: [\n selectionStart,\n selectionEnd\n ],\n value: [\n selectionStart,\n selectionEnd\n ]\n });\n }\n },\n value: function (value) {\n if (value && value.length) {\n return this._value(value[0], value[1]);\n } else {\n return this._value();\n }\n },\n _value: function (start, end) {\n var that = this, options = that.options, selectionStart = options.selectionStart, selectionEnd = options.selectionEnd;\n if (isNaN(start) && isNaN(end)) {\n return [\n selectionStart,\n selectionEnd\n ];\n } else {\n start = round(start);\n end = round(end);\n }\n if (start >= options.min && start <= options.max && end >= options.min && end <= options.max && start <= end) {\n if (selectionStart != start || selectionEnd != end) {\n that.element.find('input').eq(0).prop('value', formatValue(start)).end().eq(1).prop('value', formatValue(end));\n options.selectionStart = start;\n options.selectionEnd = end;\n that._refresh();\n that._refreshAriaAttr(start, end);\n }\n }\n },\n values: function (start, end) {\n if (isArray(start)) {\n return this._value(start[0], start[1]);\n } else {\n return this._value(start, end);\n }\n },\n _refresh: function () {\n var that = this, options = that.options;\n that.trigger(MOVE_SELECTION, {\n values: [\n options.selectionStart,\n options.selectionEnd\n ],\n value: [\n options.selectionStart,\n options.selectionEnd\n ]\n });\n if (options.selectionStart == options.max && options.selectionEnd == options.max) {\n that._setZIndex('firstHandle');\n }\n },\n _refreshAriaAttr: function (start, end) {\n var that = this, dragHandles = that.wrapper.find(DRAG_HANDLE), drag = that._activeHandleDrag, formattedValue;\n formattedValue = that._getFormattedValue([\n start,\n end\n ], drag);\n dragHandles.eq(0).attr('aria-valuenow', start);\n dragHandles.eq(1).attr('aria-valuenow', end);\n dragHandles.attr('aria-valuetext', formattedValue);\n },\n _setValueInRange: function (selectionStart, selectionEnd) {\n var options = this.options;\n selectionStart = math.max(math.min(selectionStart, options.max), options.min);\n selectionEnd = math.max(math.min(selectionEnd, options.max), options.min);\n if (selectionStart == options.max && selectionEnd == options.max) {\n this._setZIndex('firstHandle');\n }\n this._update(math.min(selectionStart, selectionEnd), math.max(selectionStart, selectionEnd));\n },\n _setZIndex: function (type) {\n this.wrapper.find(DRAG_HANDLE).each(function (index) {\n $(this).css('z-index', type == 'firstHandle' ? 1 - index : index);\n });\n },\n _formResetHandler: function () {\n var that = this, options = that.options;\n setTimeout(function () {\n var inputs = that.element.find('input');\n var start = inputs[0].value;\n var end = inputs[1].value;\n that.values(start === '' || isNaN(start) ? options.min : start, end === '' || isNaN(end) ? options.max : end);\n });\n },\n destroy: function () {\n var that = this;\n SliderBase.fn.destroy.call(that);\n that.wrapper.off(NS).find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(NS).end().find(DRAG_HANDLE).off(NS);\n that._firstHandleDrag.draggable.destroy();\n that._lastHandleDrag.draggable.destroy();\n }\n });\n RangeSlider.Selection = function (dragHandles, that, options) {\n function moveSelection(value) {\n value = value || [];\n var selectionStartValue = value[0] - options.min, selectionEndValue = value[1] - options.min, selectionStartIndex = math.ceil(round(selectionStartValue / options.smallStep)), selectionEndIndex = math.ceil(round(selectionEndValue / options.smallStep)), selectionStart = that._pixelSteps[selectionStartIndex], selectionEnd = that._pixelSteps[selectionEndIndex], halfHandle = parseInt(that._outerSize(dragHandles.eq(0)) / 2, 10), rtlCorrection = that._isRtl ? 2 : 0;\n dragHandles.eq(0).css(that._position, selectionStart - halfHandle - rtlCorrection).end().eq(1).css(that._position, selectionEnd - halfHandle - rtlCorrection);\n makeSelection(selectionStart, selectionEnd);\n }\n function makeSelection(selectionStart, selectionEnd) {\n var selection, selectionPosition, selectionDiv = that._trackDiv.find('.k-slider-selection');\n selection = math.abs(selectionStart - selectionEnd);\n selectionDiv[that._sizeFn](selection);\n if (that._isRtl) {\n selectionPosition = math.max(selectionStart, selectionEnd);\n selectionDiv.css('right', that._maxSelection - selectionPosition - 1);\n } else {\n selectionPosition = math.min(selectionStart, selectionEnd);\n selectionDiv.css(that._position, selectionPosition - 1);\n }\n }\n moveSelection(that.value());\n that.bind([\n CHANGE,\n SLIDE,\n MOVE_SELECTION\n ], function (e) {\n moveSelection(e.values);\n });\n };\n kendo.ui.plugin(RangeSlider);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.colorpicker', [\n 'kendo.core',\n 'kendo.color',\n 'kendo.popup',\n 'kendo.slider',\n 'kendo.userevents',\n 'kendo.button'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'colorpicker',\n name: 'Color tools',\n category: 'web',\n description: 'Color selection widgets',\n depends: [\n 'core',\n 'color',\n 'popup',\n 'slider',\n 'userevents',\n 'button'\n ]\n };\n (function ($, parseInt, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, parseColor = kendo.parseColor, Color = kendo.Color, KEYS = kendo.keys, BACKGROUNDCOLOR = 'background-color', ITEMSELECTEDCLASS = 'k-state-selected', SIMPLEPALETTE = '000000,7f7f7f,880015,ed1c24,ff7f27,fff200,22b14c,00a2e8,3f48cc,a349a4,ffffff,c3c3c3,b97a57,ffaec9,ffc90e,efe4b0,b5e61d,99d9ea,7092be,c8bfe7', WEBPALETTE = 'FFFFFF,FFCCFF,FF99FF,FF66FF,FF33FF,FF00FF,CCFFFF,CCCCFF,CC99FF,CC66FF,CC33FF,CC00FF,99FFFF,99CCFF,9999FF,9966FF,9933FF,9900FF,FFFFCC,FFCCCC,FF99CC,FF66CC,FF33CC,FF00CC,CCFFCC,CCCCCC,CC99CC,CC66CC,CC33CC,CC00CC,99FFCC,99CCCC,9999CC,9966CC,9933CC,9900CC,FFFF99,FFCC99,FF9999,FF6699,FF3399,FF0099,CCFF99,CCCC99,CC9999,CC6699,CC3399,CC0099,99FF99,99CC99,999999,996699,993399,990099,FFFF66,FFCC66,FF9966,FF6666,FF3366,FF0066,CCFF66,CCCC66,CC9966,CC6666,CC3366,CC0066,99FF66,99CC66,999966,996666,993366,990066,FFFF33,FFCC33,FF9933,FF6633,FF3333,FF0033,CCFF33,CCCC33,CC9933,CC6633,CC3333,CC0033,99FF33,99CC33,999933,996633,993333,990033,FFFF00,FFCC00,FF9900,FF6600,FF3300,FF0000,CCFF00,CCCC00,CC9900,CC6600,CC3300,CC0000,99FF00,99CC00,999900,996600,993300,990000,66FFFF,66CCFF,6699FF,6666FF,6633FF,6600FF,33FFFF,33CCFF,3399FF,3366FF,3333FF,3300FF,00FFFF,00CCFF,0099FF,0066FF,0033FF,0000FF,66FFCC,66CCCC,6699CC,6666CC,6633CC,6600CC,33FFCC,33CCCC,3399CC,3366CC,3333CC,3300CC,00FFCC,00CCCC,0099CC,0066CC,0033CC,0000CC,66FF99,66CC99,669999,666699,663399,660099,33FF99,33CC99,339999,336699,333399,330099,00FF99,00CC99,009999,006699,003399,000099,66FF66,66CC66,669966,666666,663366,660066,33FF66,33CC66,339966,336666,333366,330066,00FF66,00CC66,009966,006666,003366,000066,66FF33,66CC33,669933,666633,663333,660033,33FF33,33CC33,339933,336633,333333,330033,00FF33,00CC33,009933,006633,003333,000033,66FF00,66CC00,669900,666600,663300,660000,33FF00,33CC00,339900,336600,333300,330000,00FF00,00CC00,009900,006600,003300,000000', WHITE = '#ffffff', MESSAGES = {\n apply: 'Apply',\n cancel: 'Cancel',\n noColor: 'no color',\n clearColor: 'Clear color',\n previewInput: 'Color Hexadecimal Code'\n }, NS = '.kendoColorTools', CLICK_NS = 'click' + NS, KEYDOWN_NS = 'keydown' + NS, browser = kendo.support.browser, isIE8 = browser.msie && browser.version < 9;\n var ColorSelector = Widget.extend({\n init: function (element, options) {\n var that = this, ariaId;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n that._value = options.value = parseColor(options.value);\n that._tabIndex = element.attr('tabIndex') || 0;\n ariaId = that._ariaId = options.ariaId;\n if (ariaId) {\n element.attr('aria-labelledby', ariaId);\n }\n if (options._standalone) {\n that._triggerSelect = that._triggerChange;\n }\n },\n options: {\n name: 'ColorSelector',\n value: null,\n _standalone: true\n },\n events: [\n 'change',\n 'select',\n 'cancel'\n ],\n color: function (value) {\n if (value !== undefined) {\n this._value = parseColor(value);\n this._updateUI(this._value);\n }\n return this._value;\n },\n value: function (color) {\n color = this.color(color);\n if (color) {\n if (this.options.opacity) {\n color = color.toCssRgba();\n } else {\n color = color.toCss();\n }\n }\n return color || null;\n },\n enable: function (enable) {\n if (arguments.length === 0) {\n enable = true;\n }\n $('.k-disabled-overlay', this.wrapper).remove();\n if (!enable) {\n this.wrapper.append('<div class=\\'k-disabled-overlay\\'></div>');\n }\n this._onEnable(enable);\n },\n _select: function (color, nohooks) {\n var prev = this._value;\n color = this.color(color);\n if (!nohooks) {\n this.element.trigger('change');\n if (!color.equals(prev)) {\n this.trigger('change', { value: this.value() });\n } else if (!this._standalone) {\n this.trigger('cancel');\n }\n }\n },\n _triggerSelect: function (color) {\n triggerEvent(this, 'select', color);\n },\n _triggerChange: function (color) {\n triggerEvent(this, 'change', color);\n },\n destroy: function () {\n if (this.element) {\n this.element.off(NS);\n }\n if (this.wrapper) {\n this.wrapper.off(NS).find('*').off(NS);\n }\n this.wrapper = null;\n Widget.fn.destroy.call(this);\n },\n _updateUI: $.noop,\n _selectOnHide: function () {\n return null;\n },\n _cancel: function () {\n this.trigger('cancel');\n }\n });\n function triggerEvent(self, type, color) {\n color = parseColor(color);\n if (color && !color.equals(self.color())) {\n if (type == 'change') {\n self._value = color;\n }\n if (color.a != 1) {\n color = color.toCssRgba();\n } else {\n color = color.toCss();\n }\n self.trigger(type, { value: color });\n }\n }\n var ColorPalette = ColorSelector.extend({\n init: function (element, options) {\n var that = this;\n ColorSelector.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n options = that.options;\n var colors = options.palette;\n if (colors == 'websafe') {\n colors = WEBPALETTE;\n options.columns = 18;\n } else if (colors == 'basic') {\n colors = SIMPLEPALETTE;\n }\n if (typeof colors == 'string') {\n colors = colors.split(',');\n }\n if ($.isArray(colors)) {\n colors = $.map(colors, function (x) {\n return parseColor(x);\n });\n }\n that._selectedID = (options.ariaId || kendo.guid()) + '_selected';\n element.addClass('k-widget k-colorpalette').attr('role', 'grid').attr('aria-readonly', 'true').append($(that._template({\n colors: colors,\n columns: options.columns,\n tileSize: options.tileSize,\n value: that._value,\n id: options.ariaId\n }))).on(CLICK_NS, '.k-item', function (ev) {\n that._select($(ev.currentTarget).css(BACKGROUNDCOLOR));\n }).attr('tabIndex', that._tabIndex).on(KEYDOWN_NS, bind(that._keydown, that));\n var tileSize = options.tileSize, width, height;\n if (tileSize) {\n if (/number|string/.test(typeof tileSize)) {\n width = height = parseFloat(tileSize);\n } else if (typeof tileSize == 'object') {\n width = parseFloat(tileSize.width);\n height = parseFloat(tileSize.height);\n } else {\n throw new Error('Unsupported value for the \\'tileSize\\' argument');\n }\n element.find('.k-item').css({\n width: width,\n height: height\n });\n }\n },\n focus: function () {\n if (this.wrapper && !this.wrapper.is('[unselectable=\\'on\\']')) {\n this.wrapper.focus();\n }\n },\n options: {\n name: 'ColorPalette',\n columns: 10,\n tileSize: null,\n palette: 'basic'\n },\n _onEnable: function (enable) {\n if (enable) {\n this.wrapper.attr('tabIndex', this._tabIndex);\n } else {\n this.wrapper.removeAttr('tabIndex');\n }\n },\n _keydown: function (e) {\n var selected, wrapper = this.wrapper, items = wrapper.find('.k-item'), current = items.filter('.' + ITEMSELECTEDCLASS).get(0), keyCode = e.keyCode;\n if (keyCode == KEYS.LEFT) {\n selected = relative(items, current, -1);\n } else if (keyCode == KEYS.RIGHT) {\n selected = relative(items, current, 1);\n } else if (keyCode == KEYS.DOWN) {\n selected = relative(items, current, this.options.columns);\n } else if (keyCode == KEYS.UP) {\n selected = relative(items, current, -this.options.columns);\n } else if (keyCode == KEYS.ENTER) {\n preventDefault(e);\n if (current) {\n this._select($(current).css(BACKGROUNDCOLOR));\n }\n } else if (keyCode == KEYS.ESC) {\n this._cancel();\n }\n if (selected) {\n preventDefault(e);\n this._current(selected);\n try {\n var color = parseColor(selected.css(BACKGROUNDCOLOR));\n this._triggerSelect(color);\n } catch (ex) {\n }\n }\n },\n _current: function (item) {\n this.wrapper.find('.' + ITEMSELECTEDCLASS).removeClass(ITEMSELECTEDCLASS).attr('aria-selected', false).removeAttr('id');\n $(item).addClass(ITEMSELECTEDCLASS).attr('aria-selected', true).attr('id', this._selectedID);\n this.element.removeAttr('aria-activedescendant').attr('aria-activedescendant', this._selectedID);\n },\n _updateUI: function (color) {\n var item = null;\n this.wrapper.find('.k-item').each(function () {\n var c = parseColor($(this).css(BACKGROUNDCOLOR));\n if (c && c.equals(color)) {\n item = this;\n return false;\n }\n });\n this._current(item);\n },\n _template: kendo.template('<table class=\"k-palette k-reset\" role=\"presentation\"><tr role=\"row\">' + '# for (var i = 0; i < colors.length; ++i) { #' + '# var selected = colors[i].equals(value); #' + '# if (i && i % columns == 0) { # </tr><tr role=\"row\"> # } #' + '<td role=\"gridcell\" unselectable=\"on\" style=\"background-color:#= colors[i].toCss() #\"' + '#= selected ? \" aria-selected=true\" : \"\" # ' + '#=(id && i === 0) ? \"id=\\\\\"\"+id+\"\\\\\" \" : \"\" # ' + 'class=\"k-item#= selected ? \" ' + ITEMSELECTEDCLASS + '\" : \"\" #\" ' + 'aria-label=\"#= colors[i].toCss() #\"></td>' + '# } #' + '</tr></table>')\n });\n var FlatColorPicker = ColorSelector.extend({\n init: function (element, options) {\n var that = this;\n ColorSelector.fn.init.call(that, element, options);\n options = that.options;\n options.messages = options.options ? $.extend(that.options.messages, options.options.messages) : that.options.messages;\n element = that.element;\n that.wrapper = element.addClass('k-widget k-flatcolorpicker').append(that._template(options));\n that._hueElements = $('.k-hsv-rectangle, .k-alpha-slider .k-slider-track', element);\n that._selectedColor = $('.k-selected-color-display', element);\n that._colorAsText = $('input.k-color-value', element);\n that._sliders();\n that._hsvArea();\n that._updateUI(that._value || parseColor('#f00'));\n element.find('input.k-color-value').on(KEYDOWN_NS, function (ev) {\n var input = this;\n if (ev.keyCode == KEYS.ENTER) {\n try {\n var color = parseColor(input.value);\n var val = that.color();\n that._select(color, color.equals(val));\n } catch (ex) {\n $(input).addClass('k-state-error');\n }\n } else if (that.options.autoupdate) {\n setTimeout(function () {\n var color = parseColor(input.value, true);\n if (color) {\n that._updateUI(color, true);\n }\n }, 10);\n }\n }).end().on(CLICK_NS, '.k-controls button.apply', function () {\n if (that.options._clearedColor) {\n that.trigger('change');\n } else {\n that._select(that._getHSV());\n }\n }).on(CLICK_NS, '.k-controls button.cancel', function () {\n that._updateUI(that.color());\n that._cancel();\n });\n if (isIE8) {\n that._applyIEFilter();\n }\n },\n destroy: function () {\n this._hueSlider.destroy();\n if (this._opacitySlider) {\n this._opacitySlider.destroy();\n }\n this._hueSlider = this._opacitySlider = this._hsvRect = this._hsvHandle = this._hueElements = this._selectedColor = this._colorAsText = null;\n ColorSelector.fn.destroy.call(this);\n },\n options: {\n name: 'FlatColorPicker',\n opacity: false,\n buttons: false,\n input: true,\n preview: true,\n clearButton: false,\n autoupdate: true,\n messages: MESSAGES\n },\n _applyIEFilter: function () {\n var track = this.element.find('.k-hue-slider .k-slider-track')[0], url = track.currentStyle.backgroundImage;\n url = url.replace(/^url\\([\\'\\\"]?|[\\'\\\"]?\\)$/g, '');\n track.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\\'' + url + '\\', sizingMethod=\\'scale\\')';\n },\n _sliders: function () {\n var that = this, element = that.element, hueSlider = element.find('.k-hue-slider'), opacitySlider = element.find('.k-alpha-slider');\n function hueChange(e) {\n that._updateUI(that._getHSV(e.value, null, null, null));\n }\n hueSlider.attr('aria-label', 'hue saturation');\n that._hueSlider = hueSlider.kendoSlider({\n min: 0,\n max: 360,\n tickPlacement: 'none',\n showButtons: false,\n slide: hueChange,\n change: hueChange\n }).data('kendoSlider');\n function opacityChange(e) {\n that._updateUI(that._getHSV(null, null, null, e.value / 100));\n }\n opacitySlider.attr('aria-label', 'opacity');\n that._opacitySlider = opacitySlider.kendoSlider({\n min: 0,\n max: 100,\n tickPlacement: 'none',\n showButtons: false,\n slide: opacityChange,\n change: opacityChange\n }).data('kendoSlider');\n },\n _hsvArea: function () {\n var that = this, element = that.element, hsvRect = element.find('.k-hsv-rectangle'), hsvHandle = hsvRect.find('.k-draghandle').attr('tabIndex', 0).on(KEYDOWN_NS, bind(that._keydown, that));\n function update(x, y) {\n var offset = this.offset, dx = x - offset.left, dy = y - offset.top, rw = this.width, rh = this.height;\n dx = dx < 0 ? 0 : dx > rw ? rw : dx;\n dy = dy < 0 ? 0 : dy > rh ? rh : dy;\n that._svChange(dx / rw, 1 - dy / rh);\n }\n that._hsvEvents = new kendo.UserEvents(hsvRect, {\n global: true,\n press: function (e) {\n this.offset = kendo.getOffset(hsvRect);\n this.width = hsvRect.width();\n this.height = hsvRect.height();\n hsvHandle.focus();\n update.call(this, e.x.location, e.y.location);\n },\n start: function () {\n hsvRect.addClass('k-dragging');\n hsvHandle.focus();\n },\n move: function (e) {\n e.preventDefault();\n update.call(this, e.x.location, e.y.location);\n },\n end: function () {\n hsvRect.removeClass('k-dragging');\n }\n });\n that._hsvRect = hsvRect;\n that._hsvHandle = hsvHandle;\n },\n _onEnable: function (enable) {\n this._hueSlider.enable(enable);\n if (this._opacitySlider) {\n this._opacitySlider.enable(enable);\n }\n this.wrapper.find('input').attr('disabled', !enable);\n var handle = this._hsvRect.find('.k-draghandle');\n if (enable) {\n handle.attr('tabIndex', this._tabIndex);\n } else {\n handle.removeAttr('tabIndex');\n }\n },\n _keydown: function (ev) {\n var that = this;\n function move(prop, d) {\n var c = that._getHSV();\n c[prop] += d * (ev.shiftKey ? 0.01 : 0.05);\n if (c[prop] < 0) {\n c[prop] = 0;\n }\n if (c[prop] > 1) {\n c[prop] = 1;\n }\n that._updateUI(c);\n preventDefault(ev);\n }\n function hue(d) {\n var c = that._getHSV();\n c.h += d * (ev.shiftKey ? 1 : 5);\n if (c.h < 0) {\n c.h = 0;\n }\n if (c.h > 359) {\n c.h = 359;\n }\n that._updateUI(c);\n preventDefault(ev);\n }\n switch (ev.keyCode) {\n case KEYS.LEFT:\n if (ev.ctrlKey) {\n hue(-1);\n } else {\n move('s', -1);\n }\n break;\n case KEYS.RIGHT:\n if (ev.ctrlKey) {\n hue(1);\n } else {\n move('s', 1);\n }\n break;\n case KEYS.UP:\n move(ev.ctrlKey && that._opacitySlider ? 'a' : 'v', 1);\n break;\n case KEYS.DOWN:\n move(ev.ctrlKey && that._opacitySlider ? 'a' : 'v', -1);\n break;\n case KEYS.ENTER:\n that._select(that._getHSV());\n break;\n case KEYS.F2:\n that.wrapper.find('input.k-color-value').focus().select();\n break;\n case KEYS.ESC:\n that._cancel();\n break;\n }\n },\n focus: function () {\n this._hsvHandle.focus();\n },\n _getHSV: function (h, s, v, a) {\n var rect = this._hsvRect, width = rect.width(), height = rect.height(), handlePosition = this._hsvHandle.position();\n if (h == null) {\n h = this._hueSlider.value();\n }\n if (s == null) {\n s = handlePosition.left / width;\n }\n if (v == null) {\n v = 1 - handlePosition.top / height;\n }\n if (a == null) {\n a = this._opacitySlider ? this._opacitySlider.value() / 100 : 1;\n }\n return Color.fromHSV(h, s, v, a);\n },\n _svChange: function (s, v) {\n var color = this._getHSV(null, s, v, null);\n this._updateUI(color);\n },\n _updateUI: function (color, dontChangeInput) {\n var that = this, rect = that._hsvRect;\n if (!color) {\n return;\n }\n this._colorAsText.attr('title', that.options.messages.previewInput);\n this._colorAsText.removeClass('k-state-error');\n that._selectedColor.css(BACKGROUNDCOLOR, color.toDisplay());\n if (!dontChangeInput) {\n that._colorAsText.val(that._opacitySlider ? color.toCssRgba() : color.toCss());\n }\n that._triggerSelect(color);\n color = color.toHSV();\n that._hsvHandle.css({\n left: color.s * rect.width() + 'px',\n top: (1 - color.v) * rect.height() + 'px'\n });\n that._hueElements.css(BACKGROUNDCOLOR, Color.fromHSV(color.h, 1, 1, 1).toCss());\n that._hueSlider.value(color.h);\n if (that._opacitySlider) {\n that._opacitySlider.value(100 * color.a);\n }\n },\n _selectOnHide: function () {\n return this.options.buttons ? null : this._getHSV();\n },\n _template: kendo.template('# if (preview) { #' + '<div class=\"k-selected-color\"><div class=\"k-selected-color-display\"><div class=\"k-color-input\"><input class=\"k-color-value\" ' + '# if (clearButton && !_standalone) { #' + 'placeholder=\"#: messages.noColor #\" ' + '# } #' + '#= !data.input ? \\'style=\"visibility: hidden;\"\\' : \"\" #>' + '# if (clearButton && !_standalone) { #' + '<span class=\"k-clear-color k-button k-bare\" title=\"#: messages.clearColor #\"></span>' + '# } #' + '</div></div></div>' + '# } #' + '# if (clearButton && !_standalone && !preview) { #' + '<div class=\"k-clear-color-container\"><span class=\"k-clear-color k-button k-bare\">#: messages.clearColor #</span></div>' + '# } #' + '<div class=\"k-hsv-rectangle\"><div class=\"k-hsv-gradient\"></div><div class=\"k-draghandle\"></div></div>' + '<div class=\"k-sliders-wrap k-vbox\">' + '<input class=\"k-hue-slider\" />' + '# if (opacity) { #' + '<input class=\"k-alpha-slider k-transparency-slider\" />' + '# } #' + '</div>' + '# if (buttons) { #' + '<div unselectable=\"on\" class=\"k-controls\"><button class=\"k-button k-primary apply\">#: messages.apply #</button> <button class=\"k-button cancel\">#: messages.cancel #</button></div>' + '# } #')\n });\n function relative(array, element, delta) {\n array = Array.prototype.slice.call(array);\n var n = array.length;\n var pos = array.indexOf(element);\n if (pos < 0) {\n return delta < 0 ? array[n - 1] : array[0];\n }\n pos += delta;\n if (pos < 0) {\n pos += n;\n } else {\n pos %= n;\n }\n return array[pos];\n }\n var ColorPicker = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element;\n var value = element.attr('value') || element.val();\n if (value) {\n value = parseColor(value, true);\n } else {\n value = parseColor(options.value, true);\n }\n that._value = options.value = value;\n var content = that.wrapper = $(that._template(options));\n element.hide().after(content);\n if (element.is('input')) {\n element.appendTo(content);\n var label = element.closest('label');\n var id = element.attr('id');\n if (id) {\n label = label.add('label[for=\"' + id + '\"]');\n }\n label.click(function (ev) {\n that.open();\n ev.preventDefault();\n });\n }\n that._tabIndex = element.attr('tabIndex') || 0;\n that.enable(!element.attr('disabled'));\n var accesskey = element.attr('accesskey');\n if (accesskey) {\n element.attr('accesskey', null);\n content.attr('accesskey', accesskey);\n }\n that.bind('activate', function (ev) {\n if (!ev.isDefaultPrevented()) {\n that.toggle();\n }\n });\n that._updateUI(value);\n },\n destroy: function () {\n this.wrapper.off(NS).find('*').off(NS);\n if (this._popup) {\n this._selector.destroy();\n this._popup.destroy();\n }\n this._selector = this._popup = this.wrapper = null;\n Widget.fn.destroy.call(this);\n },\n enable: function (enable) {\n var that = this, wrapper = that.wrapper, innerWrapper = wrapper.children('.k-picker-wrap'), arrow = innerWrapper.find('.k-select');\n if (arguments.length === 0) {\n enable = true;\n }\n that.element.attr('disabled', !enable);\n wrapper.attr('aria-disabled', !enable);\n arrow.off(NS).on('mousedown' + NS, preventDefault);\n wrapper.addClass('k-state-disabled').removeAttr('tabIndex').add('*', wrapper).off(NS);\n if (enable) {\n wrapper.removeClass('k-state-disabled').attr('tabIndex', that._tabIndex).on('mouseenter' + NS, function () {\n innerWrapper.addClass('k-state-hover');\n }).on('mouseleave' + NS, function () {\n innerWrapper.removeClass('k-state-hover');\n }).on('focus' + NS, function () {\n innerWrapper.addClass('k-state-focused');\n }).on('blur' + NS, function () {\n innerWrapper.removeClass('k-state-focused');\n }).on(KEYDOWN_NS, bind(that._keydown, that)).on(CLICK_NS, '.k-select', bind(that.toggle, that)).on(CLICK_NS, that.options.toolIcon ? '.k-tool-icon' : '.k-selected-color', function () {\n that.trigger('activate');\n });\n } else {\n that.close();\n }\n },\n _template: kendo.template('<span role=\"textbox\" aria-haspopup=\"true\" class=\"k-widget k-colorpicker\">' + '<span class=\"k-picker-wrap k-state-default\">' + '# if (toolIcon) { #' + '<span class=\"k-icon k-tool-icon #= toolIcon #\">' + '<span class=\"k-selected-color\"></span>' + '</span>' + '# } else { #' + '<span class=\"k-selected-color\"><span class=\"k-icon k-i-line\" style=\"display: none;\"></span></span>' + '# } #' + '<span class=\"k-select\" unselectable=\"on\" aria-label=\"select\">' + '<span class=\"k-icon k-i-arrow-60-down\"></span>' + '</span>' + '</span>' + '</span>'),\n options: {\n name: 'ColorPicker',\n palette: null,\n columns: 10,\n toolIcon: null,\n value: null,\n messages: MESSAGES,\n opacity: false,\n buttons: true,\n preview: true,\n clearButton: false,\n ARIATemplate: 'Current selected color is #=data || \"\"#'\n },\n events: [\n 'activate',\n 'change',\n 'select',\n 'open',\n 'close'\n ],\n open: function () {\n if (!this.element.prop('disabled')) {\n this._getPopup().open();\n }\n },\n close: function () {\n var selOptions = this._selector && this._selector.options || {};\n selOptions._closing = true;\n this._getPopup().close();\n delete selOptions._closing;\n },\n toggle: function () {\n if (!this.element.prop('disabled')) {\n this._getPopup().toggle();\n }\n },\n _noColorIcon: function () {\n return this.wrapper.find('.k-picker-wrap > .k-selected-color > .k-icon.k-i-line');\n },\n color: ColorSelector.fn.color,\n value: ColorSelector.fn.value,\n _select: ColorSelector.fn._select,\n _triggerSelect: ColorSelector.fn._triggerSelect,\n _isInputTypeColor: function () {\n var el = this.element[0];\n return /^input$/i.test(el.tagName) && /^color$/i.test(el.type);\n },\n _updateUI: function (value) {\n var formattedValue = '';\n if (value) {\n if (this._isInputTypeColor() || value.a == 1) {\n formattedValue = value.toCss();\n } else {\n formattedValue = value.toCssRgba();\n }\n this.element.val(formattedValue);\n }\n if (!this._ariaTemplate) {\n this._ariaTemplate = kendo.template(this.options.ARIATemplate);\n }\n this.wrapper.attr('aria-label', this._ariaTemplate(formattedValue));\n this._triggerSelect(value);\n this.wrapper.find('.k-selected-color').css(BACKGROUNDCOLOR, value ? value.toDisplay() : WHITE);\n this._noColorIcon()[formattedValue ? 'hide' : 'show']();\n },\n _keydown: function (ev) {\n var key = ev.keyCode;\n if (this._getPopup().visible()) {\n if (key == KEYS.ESC) {\n this._selector._cancel();\n } else {\n this._selector._keydown(ev);\n }\n preventDefault(ev);\n } else if (key == KEYS.ENTER || key == KEYS.DOWN) {\n this.open();\n preventDefault(ev);\n }\n },\n _getPopup: function () {\n var that = this, popup = that._popup;\n if (!popup) {\n var options = that.options;\n var selectorType;\n if (options.palette) {\n selectorType = ColorPalette;\n } else {\n selectorType = FlatColorPicker;\n }\n options._standalone = false;\n delete options.select;\n delete options.change;\n delete options.cancel;\n var id = kendo.guid();\n var selector = that._selector = new selectorType($('<div id=\"' + id + '\"/>').appendTo(document.body), options);\n that.wrapper.attr('aria-owns', id);\n that._popup = popup = selector.wrapper.kendoPopup({\n anchor: that.wrapper,\n adjustSize: {\n width: 5,\n height: 0\n }\n }).data('kendoPopup');\n selector.element.find('.k-clear-color').kendoButton({\n icon: 'reset-color',\n click: function (e) {\n selector.options._clearedColor = true;\n that.value(null);\n that.element.val(null);\n that._updateUI(null);\n selector._colorAsText.val('');\n selector._hsvHandle.css({\n top: '0px',\n left: '0px'\n });\n selector._selectedColor.css(BACKGROUNDCOLOR, WHITE);\n that.trigger('change', { value: that.value() });\n e.preventDefault();\n }\n });\n selector.bind({\n select: function (ev) {\n that._updateUI(parseColor(ev.value));\n delete selector.options._clearedColor;\n },\n change: function () {\n if (!selector.options._clearedColor) {\n that._select(selector.color());\n }\n that.close();\n },\n cancel: function () {\n if (selector.options._clearedColor && !that.value() && selector.value()) {\n that._select(selector.color(), true);\n }\n that.close();\n }\n });\n popup.bind({\n close: function (ev) {\n if (that.trigger('close')) {\n ev.preventDefault();\n return;\n }\n that.wrapper.children('.k-picker-wrap').removeClass('k-state-focused');\n var color = selector._selectOnHide();\n var selectorColor = selector.value();\n var value = that.value();\n var options = selector.options;\n if (!color) {\n setTimeout(function () {\n if (that.wrapper && !that.wrapper.is('[unselectable=\\'on\\']')) {\n that.wrapper.focus();\n }\n });\n if (!options._closing && options._clearedColor && !value && selectorColor) {\n that._select(selectorColor, true);\n } else {\n that._updateUI(that.color());\n }\n } else if (!(options._clearedColor && !value)) {\n that._select(color);\n }\n },\n open: function (ev) {\n if (that.trigger('open')) {\n ev.preventDefault();\n } else {\n that.wrapper.children('.k-picker-wrap').addClass('k-state-focused');\n }\n },\n activate: function () {\n selector._select(that.color(), true);\n selector.focus();\n that.wrapper.children('.k-picker-wrap').addClass('k-state-focused');\n }\n });\n }\n return popup;\n }\n });\n function preventDefault(ev) {\n ev.preventDefault();\n }\n function bind(callback, obj) {\n return function () {\n return callback.apply(obj, arguments);\n };\n }\n ui.plugin(ColorPalette);\n ui.plugin(FlatColorPicker);\n ui.plugin(ColorPicker);\n }(jQuery, parseInt));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.numerictextbox', [\n 'kendo.core',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'numerictextbox',\n name: 'NumericTextBox',\n category: 'web',\n description: 'The NumericTextBox widget can format and display numeric, percentage or currency textbox.',\n depends: [\n 'core',\n 'userevents'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, caret = kendo.caret, keys = kendo.keys, ui = kendo.ui, Widget = ui.Widget, activeElement = kendo._activeElement, extractFormat = kendo._extractFormat, parse = kendo.parseFloat, placeholderSupported = kendo.support.placeholder, getCulture = kendo.getCulture, CHANGE = 'change', DISABLED = 'disabled', READONLY = 'readonly', INPUT = 'k-input', SPIN = 'spin', ns = '.kendoNumericTextBox', TOUCHEND = 'touchend', MOUSELEAVE = 'mouseleave' + ns, HOVEREVENTS = 'mouseenter' + ns + ' ' + MOUSELEAVE, DEFAULT = 'k-state-default', FOCUSED = 'k-state-focused', HOVER = 'k-state-hover', FOCUS = 'focus', POINT = '.', CLASS_ICON = 'k-icon', SELECTED = 'k-state-selected', STATEDISABLED = 'k-state-disabled', STATE_INVALID = 'k-state-invalid', ARIA_DISABLED = 'aria-disabled', INTEGER_REGEXP = /^(-)?(\\d*)$/, NULL = null, proxy = $.proxy, extend = $.extend;\n var NumericTextBox = Widget.extend({\n init: function (element, options) {\n var that = this, isStep = options && options.step !== undefined, min, max, step, value, disabled;\n var inputType;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element.on('focusout' + ns, proxy(that._focusout, that)).attr('role', 'spinbutton');\n options.placeholder = options.placeholder || element.attr('placeholder');\n min = that.min(element.attr('min'));\n max = that.max(element.attr('max'));\n step = that._parse(element.attr('step'));\n if (options.min === NULL && min !== NULL) {\n options.min = min;\n }\n if (options.max === NULL && max !== NULL) {\n options.max = max;\n }\n if (!isStep && step !== NULL) {\n options.step = step;\n }\n that._initialOptions = extend({}, options);\n inputType = element.attr('type');\n that._reset();\n that._wrapper();\n that._arrows();\n that._validation();\n that._input();\n if (!kendo.support.mobileOS) {\n that._text.on(FOCUS + ns, proxy(that._click, that));\n } else {\n that._text.on(TOUCHEND + ns + ' ' + FOCUS + ns, function () {\n if (kendo.support.browser.edge) {\n that._text.one(FOCUS + ns, function () {\n that._toggleText(false);\n element.focus();\n });\n } else {\n that._toggleText(false);\n element.focus();\n }\n });\n }\n element.attr('aria-valuemin', options.min !== NULL ? options.min * options.factor : options.min).attr('aria-valuemax', options.max !== NULL ? options.max * options.factor : options.max);\n options.format = extractFormat(options.format);\n value = options.value;\n if (value == NULL) {\n if (inputType == 'number') {\n value = parseFloat(element.val());\n } else {\n value = element.val();\n }\n }\n that.value(value);\n disabled = element.is('[disabled]') || $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n that.angular('compile', function () {\n return { elements: that._text.get() };\n });\n kendo.notify(that);\n },\n options: {\n name: 'NumericTextBox',\n decimals: NULL,\n restrictDecimals: false,\n min: NULL,\n max: NULL,\n value: NULL,\n step: 1,\n round: true,\n culture: '',\n format: 'n',\n spinners: true,\n placeholder: '',\n factor: 1,\n upArrowText: 'Increase value',\n downArrowText: 'Decrease value'\n },\n events: [\n CHANGE,\n SPIN\n ],\n _editable: function (options) {\n var that = this, element = that.element, disable = options.disable, readonly = options.readonly, text = that._text.add(element), wrapper = that._inputWrapper.off(HOVEREVENTS);\n that._toggleText(true);\n that._upArrowEventHandler.unbind('press');\n that._downArrowEventHandler.unbind('press');\n element.off('keydown' + ns).off('keypress' + ns).off('keyup' + ns).off('paste' + ns);\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n text.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false);\n that._upArrowEventHandler.bind('press', function (e) {\n e.preventDefault();\n that._spin(1);\n that._upArrow.addClass(SELECTED);\n });\n that._downArrowEventHandler.bind('press', function (e) {\n e.preventDefault();\n that._spin(-1);\n that._downArrow.addClass(SELECTED);\n });\n that.element.on('keydown' + ns, proxy(that._keydown, that)).on('keypress' + ns, proxy(that._keypress, that)).on('keyup' + ns, proxy(that._keyup, that)).on('paste' + ns, proxy(that._paste, that));\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n text.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable);\n }\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n that._arrowsWrap.toggle(that.options.spinners);\n that._inputWrapper.toggleClass('k-expand-padding', !that.options.spinners);\n that._text.prop('placeholder', that.options.placeholder);\n that._placeholder(that.options.placeholder);\n that.element.attr({\n 'aria-valuemin': that.options.min !== NULL ? that.options.min * that.options.factor : that.options.min,\n 'aria-valuemax': that.options.max !== NULL ? that.options.max * that.options.factor : that.options.max\n });\n that.options.format = extractFormat(that.options.format);\n if (options.value !== undefined) {\n that.value(options.value);\n }\n },\n destroy: function () {\n var that = this;\n that.element.add(that._text).add(that._upArrow).add(that._downArrow).add(that._inputWrapper).off(ns);\n that._upArrowEventHandler.destroy();\n that._downArrowEventHandler.destroy();\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n Widget.fn.destroy.call(that);\n },\n min: function (value) {\n return this._option('min', value);\n },\n max: function (value) {\n return this._option('max', value);\n },\n step: function (value) {\n return this._option('step', value);\n },\n value: function (value) {\n var that = this, adjusted;\n if (value === undefined) {\n return that._value;\n }\n value = that._parse(value);\n adjusted = that._adjust(value);\n if (value !== adjusted) {\n return;\n }\n that._update(value);\n that._old = that._value;\n },\n focus: function () {\n this._focusin();\n },\n _adjust: function (value) {\n var that = this, options = that.options, min = options.min, max = options.max;\n if (value === NULL) {\n return value;\n }\n if (min !== NULL && value < min) {\n value = min;\n } else if (max !== NULL && value > max) {\n value = max;\n }\n return value;\n },\n _arrows: function () {\n var that = this, arrows, _release = function () {\n clearTimeout(that._spinning);\n arrows.removeClass(SELECTED);\n }, options = that.options, spinners = options.spinners, element = that.element;\n arrows = element.siblings('.' + CLASS_ICON);\n if (!arrows[0]) {\n arrows = $(buttonHtml('increase', options.upArrowText) + buttonHtml('decrease', options.downArrowText)).insertAfter(element);\n that._arrowsWrap = arrows.wrapAll('<span class=\"k-select\"/>').parent();\n }\n if (!spinners) {\n arrows.parent().toggle(spinners);\n that._inputWrapper.addClass('k-expand-padding');\n }\n that._upArrow = arrows.eq(0);\n that._upArrowEventHandler = new kendo.UserEvents(that._upArrow, { release: _release });\n that._downArrow = arrows.eq(1);\n that._downArrowEventHandler = new kendo.UserEvents(that._downArrow, { release: _release });\n },\n _validation: function () {\n var that = this;\n var element = that.element;\n that._validationIcon = $('<span class=\\'' + CLASS_ICON + ' k-i-warning\\'></span>').hide().insertAfter(element);\n },\n _blur: function () {\n var that = this;\n that._toggleText(true);\n that._change(that.element.val());\n },\n _click: function (e) {\n var that = this;\n clearTimeout(that._focusing);\n that._focusing = setTimeout(function () {\n var input = e.target, idx = caret(input)[0], value = input.value.substring(0, idx), format = that._format(that.options.format), group = format[','], result, groupRegExp, extractRegExp, caretPosition = 0;\n if (group) {\n groupRegExp = new RegExp('\\\\' + group, 'g');\n extractRegExp = new RegExp('(^(-)$)|(^(-)?([\\\\d\\\\' + group + ']+)(\\\\' + format[POINT] + ')?(\\\\d+)?)');\n }\n if (extractRegExp) {\n result = extractRegExp.exec(value);\n }\n if (result) {\n caretPosition = result[0].replace(groupRegExp, '').length;\n if (value.indexOf('(') != -1 && that._value < 0) {\n caretPosition++;\n }\n }\n that._focusin();\n caret(that.element[0], caretPosition);\n });\n },\n _change: function (value) {\n var that = this, factor = that.options.factor;\n if (factor && factor !== 1) {\n value = kendo.parseFloat(value);\n if (value !== null) {\n value = value / factor;\n }\n }\n that._update(value);\n value = that._value;\n if (that._old != value) {\n that._old = value;\n if (!that._typing) {\n that.element.trigger(CHANGE);\n }\n that.trigger(CHANGE);\n }\n that._typing = false;\n },\n _culture: function (culture) {\n return culture || getCulture(this.options.culture);\n },\n _focusin: function () {\n var that = this;\n that._inputWrapper.addClass(FOCUSED);\n that._toggleText(false);\n that.element[0].focus();\n },\n _focusout: function () {\n var that = this;\n clearTimeout(that._focusing);\n that._inputWrapper.removeClass(FOCUSED).removeClass(HOVER);\n that._blur();\n that._removeInvalidState();\n },\n _format: function (format, culture) {\n var numberFormat = this._culture(culture).numberFormat;\n format = format.toLowerCase();\n if (format.indexOf('c') > -1) {\n numberFormat = numberFormat.currency;\n } else if (format.indexOf('p') > -1) {\n numberFormat = numberFormat.percent;\n }\n return numberFormat;\n },\n _input: function () {\n var that = this, options = that.options, CLASSNAME = 'k-formatted-value', element = that.element.addClass(INPUT).show()[0], accessKey = element.accessKey, wrapper = that.wrapper, text;\n text = wrapper.find(POINT + CLASSNAME);\n if (!text[0]) {\n text = $('<input type=\"text\"/>').insertBefore(element).addClass(CLASSNAME);\n }\n try {\n element.setAttribute('type', 'text');\n } catch (e) {\n element.type = 'text';\n }\n text[0].title = element.title;\n text[0].tabIndex = element.tabIndex;\n text[0].style.cssText = element.style.cssText;\n text.prop('placeholder', options.placeholder);\n if (accessKey) {\n text.attr('accesskey', accessKey);\n element.accessKey = '';\n }\n that._text = text.addClass(element.className).attr({\n 'role': 'spinbutton',\n 'aria-valuemin': options.min !== NULL ? options.min * options.factor : options.min,\n 'aria-valuemax': options.max !== NULL ? options.max * options.factor : options.max,\n 'autocomplete': 'off'\n });\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode;\n that._key = key;\n if (key == keys.DOWN) {\n that._step(-1);\n } else if (key == keys.UP) {\n that._step(1);\n } else if (key == keys.ENTER) {\n that._change(that.element.val());\n } else if (key != keys.TAB) {\n that._typing = true;\n }\n },\n _keypress: function (e) {\n if (e.which === 0 || e.metaKey || e.ctrlKey || e.keyCode === keys.BACKSPACE || e.keyCode === keys.ENTER) {\n return;\n }\n var that = this;\n var min = that.options.min;\n var element = that.element;\n var selection = caret(element);\n var selectionStart = selection[0];\n var selectionEnd = selection[1];\n var character = String.fromCharCode(e.which);\n var numberFormat = that._format(that.options.format);\n var isNumPadDecimal = that._key === keys.NUMPAD_DOT;\n var value = element.val();\n var isValid;\n if (isNumPadDecimal) {\n character = numberFormat[POINT];\n }\n value = value.substring(0, selectionStart) + character + value.substring(selectionEnd);\n isValid = that._numericRegex(numberFormat).test(value);\n if (isValid && isNumPadDecimal) {\n element.val(value);\n caret(element, selectionStart + character.length);\n e.preventDefault();\n } else if (min !== null && min >= 0 && value.charAt(0) === '-' || !isValid) {\n that._addInvalidState();\n e.preventDefault();\n }\n that._key = 0;\n },\n _keyup: function () {\n this._removeInvalidState();\n },\n _addInvalidState: function () {\n var that = this;\n that._inputWrapper.addClass(STATE_INVALID);\n that._validationIcon.show();\n },\n _removeInvalidState: function () {\n var that = this;\n that._inputWrapper.removeClass(STATE_INVALID);\n that._validationIcon.hide();\n },\n _numericRegex: function (numberFormat) {\n var that = this;\n var separator = numberFormat[POINT];\n var precision = that.options.decimals;\n var fractionRule = '*';\n if (separator === POINT) {\n separator = '\\\\' + separator;\n }\n if (precision === NULL) {\n precision = numberFormat.decimals;\n }\n if (precision === 0 && that.options.restrictDecimals) {\n return INTEGER_REGEXP;\n }\n if (that.options.restrictDecimals) {\n fractionRule = '{0,' + precision + '}';\n }\n if (that._separator !== separator) {\n that._separator = separator;\n that._floatRegExp = new RegExp('^(-)?(((\\\\d+(' + separator + '\\\\d' + fractionRule + ')?)|(' + separator + '\\\\d' + fractionRule + ')))?$');\n }\n return that._floatRegExp;\n },\n _paste: function (e) {\n var that = this;\n var element = e.target;\n var value = element.value;\n var numberFormat = that._format(that.options.format);\n setTimeout(function () {\n var result = that._parse(element.value);\n if (result === NULL) {\n that._update(value);\n } else {\n element.value = result.toString().replace(POINT, numberFormat[POINT]);\n if (that._adjust(result) !== result || !that._numericRegex(numberFormat).test(element.value)) {\n that._update(value);\n }\n }\n });\n },\n _option: function (option, value) {\n var that = this, element = that.element, options = that.options;\n if (value === undefined) {\n return options[option];\n }\n value = that._parse(value);\n if (!value && option === 'step') {\n return;\n }\n options[option] = value;\n element.add(that._text).attr('aria-value' + option, value);\n element.attr(option, value);\n },\n _spin: function (step, timeout) {\n var that = this;\n timeout = timeout || 500;\n clearTimeout(that._spinning);\n that._spinning = setTimeout(function () {\n that._spin(step, 50);\n }, timeout);\n that._step(step);\n },\n _step: function (step) {\n var that = this, element = that.element, originalValue = that._value, value = that._parse(element.val()) || 0, precision = that.options.decimals || 2;\n if (activeElement() != element[0]) {\n that._focusin();\n }\n if (that.options.factor && value) {\n value = value / that.options.factor;\n }\n value = +(value + that.options.step * step).toFixed(precision);\n value = that._adjust(value);\n that._update(value);\n that._typing = false;\n if (originalValue !== value) {\n that.trigger(SPIN);\n }\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _toggleText: function (toggle) {\n var that = this;\n that._text.toggle(toggle);\n that.element.toggle(!toggle);\n },\n _parse: function (value, culture) {\n return parse(value, this._culture(culture), this.options.format);\n },\n _round: function (value, precision) {\n var rounder = this.options.round ? kendo._round : truncate;\n return rounder(value, precision);\n },\n _update: function (value) {\n var that = this, options = that.options, factor = options.factor, format = options.format, decimals = options.decimals, culture = that._culture(), numberFormat = that._format(format, culture), isNotNull;\n if (decimals === NULL) {\n decimals = numberFormat.decimals;\n }\n value = that._parse(value, culture);\n isNotNull = value !== NULL;\n if (isNotNull) {\n value = parseFloat(that._round(value, decimals), 10);\n }\n that._value = value = that._adjust(value);\n that._placeholder(kendo.toString(value, format, culture));\n if (isNotNull) {\n if (factor) {\n value = parseFloat(that._round(value * factor, decimals), 10);\n }\n value = value.toString();\n if (value.indexOf('e') !== -1) {\n value = that._round(+value, decimals);\n }\n value = value.replace(POINT, numberFormat[POINT]);\n } else {\n value = null;\n }\n that.element.val(value);\n that.element.add(that._text).attr('aria-valuenow', value);\n },\n _placeholder: function (value) {\n var input = this._text;\n input.val(value);\n if (!placeholderSupported && !value) {\n input.val(this.options.placeholder);\n }\n input.attr('title', this.element.attr('title') || input.val());\n },\n _wrapper: function () {\n var that = this, element = that.element, DOMElement = element[0], wrapper;\n wrapper = element.parents('.k-numerictextbox');\n if (!wrapper.is('span.k-numerictextbox')) {\n wrapper = element.hide().wrap('<span class=\"k-numeric-wrap k-state-default\" />').parent();\n wrapper = wrapper.wrap('<span/>').parent();\n }\n wrapper[0].style.cssText = DOMElement.style.cssText;\n DOMElement.style.width = '';\n that.wrapper = wrapper.addClass('k-widget k-numerictextbox').addClass(DOMElement.className).css('display', '');\n that._inputWrapper = $(wrapper[0].firstChild);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(element[0].value);\n that.max(that._initialOptions.max);\n that.min(that._initialOptions.min);\n });\n };\n that._form = form.on('reset', that._resetHandler);\n }\n }\n });\n function buttonHtml(direction, text) {\n var className = 'k-i-arrow-' + (direction === 'increase' ? '60-up' : '60-down');\n return '<span unselectable=\"on\" class=\"k-link k-link-' + direction + '\" aria-label=\"' + text + '\" title=\"' + text + '\">' + '<span unselectable=\"on\" class=\"' + CLASS_ICON + ' ' + className + '\"></span>' + '</span>';\n }\n function truncate(value, precision) {\n var parts = parseFloat(value, 10).toString().split(POINT);\n if (parts[1]) {\n parts[1] = parts[1].substring(0, precision);\n }\n return parts.join(POINT);\n }\n ui.plugin(NumericTextBox);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.filtermenu', [\n 'kendo.datepicker',\n 'kendo.numerictextbox',\n 'kendo.dropdownlist',\n 'kendo.binder'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'filtermenu',\n name: 'Filtering Menu',\n category: 'framework',\n depends: [\n 'datepicker',\n 'numerictextbox',\n 'dropdownlist',\n 'binder'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, proxy = $.proxy, support = kendo.support, AUTOCOMPLETEVALUE = support.browser.chrome ? 'disabled' : 'off', POPUP = 'kendoPopup', INIT = 'init', OPEN = 'open', REFRESH = 'refresh', CHANGE = 'change', NS = '.kendoFilterMenu', EQ = 'Is equal to', NEQ = 'Is not equal to', roles = {\n 'number': 'numerictextbox',\n 'date': 'datepicker'\n }, mobileRoles = {\n 'string': 'text',\n 'number': 'number',\n 'date': 'date'\n }, isFunction = kendo.isFunction, Widget = ui.Widget;\n var booleanTemplate = '<div class=\"k-filter-menu-container\">' + '<div class=\"k-filter-help-text\">#=messages.info#</div>' + '<label>' + '<input type=\"radio\" data-#=ns#bind=\"checked: filters[0].value\" value=\"true\" name=\"filters[0].value\"/>' + '#=messages.isTrue#' + '</label>' + '<label>' + '<input type=\"radio\" data-#=ns#bind=\"checked: filters[0].value\" value=\"false\" name=\"filters[0].value\"/>' + '#=messages.isFalse#' + '</label>' + '<div class=\"k-action-buttons\">' + '<button type=\"submit\" title=\"#=messages.filter#\" class=\"k-button k-primary\">#=messages.filter#</button>' + '<button type=\"reset\" title=\"#=messages.clear#\" class=\"k-button\">#=messages.clear#</button>' + '</div>' + '</div>';\n var customBooleanTemplate = '<div class=\"k-filter-menu-container\">' + '<div class=\"k-filter-help-text\">#=messages.info#</div>' + '<label>' + '<input class=\"k-textbox\" data-#=ns#bind=\"value: filters[0].value\" name=\"filters[0].value\"/>' + '</label>' + '<div class=\"k-action-buttons\">' + '<button type=\"submit\" title=\"#=messages.filter#\" class=\"k-button k-primary\">#=messages.filter#</button>' + '<button type=\"reset\" title=\"#=messages.clear#\" class=\"k-button\">#=messages.clear#</button>' + '</div>' + '</div>';\n var defaultTemplate = '<div class=\"k-filter-menu-container\">' + '<div class=\"k-filter-help-text\">#=messages.info#</div>' + '<select title=\"#=messages.operator#\" data-#=ns#bind=\"value: filters[0].operator\" data-#=ns#role=\"dropdownlist\">' + '#for(var op in operators){#' + '<option value=\"#=op#\">#=operators[op]#</option>' + '#}#' + '</select>' + '#if(values){#' + '<select title=\"#=messages.value#\" data-#=ns#bind=\"value:filters[0].value\" data-#=ns#text-field=\"text\" data-#=ns#value-field=\"value\" data-#=ns#source=\\'#=kendo.stringify(values).replace(/\\'/g,\"&\\\\#39;\")#\\' data-#=ns#role=\"dropdownlist\" data-#=ns#option-label=\"#=messages.selectValue#\" data-#=ns#value-primitive=\"true\">' + '</select>' + '#}else{#' + '<input title=\"#=messages.value#\" data-#=ns#bind=\"value:filters[0].value\" class=\"k-textbox\" type=\"text\" #=role ? \"data-\" + ns + \"role=\\'\" + role + \"\\'\" : \"\"# />' + '#}#' + '#if(extra){#' + '<select title=\"#=messages.logic#\" class=\"k-filter-and\" data-#=ns#bind=\"value: logic\" data-#=ns#role=\"dropdownlist\">' + '<option value=\"and\">#=messages.and#</option>' + '<option value=\"or\">#=messages.or#</option>' + '</select>' + '<select title=\"#=messages.additionalOperator#\" data-#=ns#bind=\"value: filters[1].operator\" data-#=ns#role=\"dropdownlist\">' + '#for(var op in operators){#' + '<option value=\"#=op#\">#=operators[op]#</option>' + '#}#' + '</select>' + '#if(values){#' + '<select title=\"#=messages.additionalValue#\" data-#=ns#bind=\"value:filters[1].value\" data-#=ns#text-field=\"text\" data-#=ns#value-field=\"value\" data-#=ns#source=\\'#=kendo.stringify(values).replace(/\\'/g,\"&\\\\#39;\")#\\' data-#=ns#role=\"dropdownlist\" data-#=ns#option-label=\"#=messages.selectValue#\" data-#=ns#value-primitive=\"true\">' + '</select>' + '#}else{#' + '<input title=\"#=messages.additionalValue#\" data-#=ns#bind=\"value: filters[1].value\" class=\"k-textbox\" type=\"text\" #=role ? \"data-\" + ns + \"role=\\'\" + role + \"\\'\" : \"\"#/>' + '#}#' + '#}#' + '<div class=\"k-action-buttons\">' + '<button type=\"submit\" title=\"#=messages.filter#\" class=\"k-button k-primary\">#=messages.filter#</button>' + '<button type=\"reset\" title=\"#=messages.clear#\" class=\"k-button\">#=messages.clear#</button>' + '</div>' + '</div>';\n var defaultMobileTemplate = '<div data-#=ns#role=\"view\" class=\"k-grid-filter-menu\">' + '<div data-#=ns#role=\"header\" class=\"k-header\">' + '<a href=\"\\\\#\" class=\"k-header-cancel k-link\" title=\"#=messages.cancel#\" ' + 'aria-label=\"#=messages.cancel#\"><span class=\"k-icon k-i-arrow-chevron-left\"></span></a>' + '#=messages.filter# #=messages.into# #=title#' + '<a href=\"\\\\#\" class=\"k-header-done k-link\" title=\"#=messages.done#\" ' + 'aria-label=\"#=messages.done#\"><span class=\"k-icon k-i-check\"></span></a>' + '</div>' + '<form title=\"#=messages.title#\" class=\"k-filter-menu k-mobile-list\">' + '<ul>' + '<li>' + '<span class=\"k-filter-help-text\">#=messages.info#</span>' + '<ul>' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-filter-operator-text\">#=messages.operator#</span>' + '<select id=\"operator_#=filterMenuGuid#\" title=\"#=messages.operator#\" class=\"k-filter-operator\" data-#=ns#bind=\"value: filters[0].operator\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" >' + '#for(var op in operators){#' + '<option value=\"#=op#\">#=operators[op]#</option>' + '#}#' + '</select>' + '</label>' + '</li>' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-filter-input-text\">#=messages.value#</span>' + '#if(values){#' + '<select id=\"value_#=filterMenuGuid#\" title=\"#=messages.value#\" data-#=ns#bind=\"value:filters[0].value\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" >' + '<option value=\"\">#=messages.selectValue#</option>' + '#for(var val in values){#' + '<option value=\"#=values[val].value#\">#=values[val].text#</option>' + '#}#' + '</select>' + '#}else{#' + '<input id=\"value_#=filterMenuGuid#\" title=\"#=messages.value#\" data-#=ns#bind=\"value:filters[0].value\" class=\"k-value-input\" type=\"#=inputType#\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" />' + '#}#' + '</label>' + '</li>' + '</ul>' + '#if(extra){#' + '<ul>' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-filter-logic-and-text\">#=messages.and#</span>' + '<input id=\"and_#=filterMenuGuid#\" title=\"#=messages.and#\" type=\"radio\" name=\"logic\" class=\"k-radio\" data-#=ns#bind=\"checked: logic\" value=\"and\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" />' + '<span class=\"k-radio-label\"></span>' + '</label>' + '</li>' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-filter-logic-or-text\">#=messages.or#</span>' + '<input id=\"or_#=filterMenuGuid#\" title=\"#=messages.or#\" type=\"radio\" name=\"logic\" class=\"k-radio\" data-#=ns#bind=\"checked: logic\" value=\"or\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" />' + '<span class=\"k-radio-label\"></label>' + '</label>' + '</li>' + '</ul>' + '<ul>' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-filter-operator-text\">#=messages.additionalOperator#</span>' + '<select id=\"additionalOperator_#=filterMenuGuid#\" title=\"#=messages.additionalOperator#\" class=\"k-filter-operator\" data-#=ns#bind=\"value: filters[1].operator\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" >' + '#for(var op in operators){#' + '<option value=\"#=op#\">#=operators[op]#</option>' + '#}#' + '</select>' + '</label>' + '</li>' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-filter-input-text\">#=messages.additionalValue#</span>' + '#if(values){#' + '<select id=\"additionalValue_#=filterMenuGuid#\" title=\"#=messages.additionalValue#\" data-#=ns#bind=\"value:filters[1].value\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" >' + '<option value=\"\">#=messages.selectValue#</option>' + '#for(var val in values){#' + '<option value=\"#=values[val].value#\">#=values[val].text#</option>' + '#}#' + '</select>' + '#}else{#' + '<input id=\"additionalValue_#=filterMenuGuid#\" title=\"#=messages.additionalValue#\" data-#=ns#bind=\"value:filters[1].value\" class=\"k-value-input\" type=\"#=inputType#\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" />' + '#}#' + '</label>' + '</li>' + '</ul>' + '#}#' + '</li>' + '<li class=\"k-item k-clear-wrap\">' + '<span class=\"k-label k-clear\" title=\"#=messages.clear#\" ' + 'aria-label=\"#=messages.clear#\">#=messages.clear#</span>' + '</li>' + '</ul>' + '</form>' + '</div>';\n var booleanMobileTemplate = '<div data-#=ns#role=\"view\" class=\"k-grid-filter-menu\">' + '<div data-#=ns#role=\"header\" class=\"k-header\">' + '<a href=\"\\\\#\" class=\"k-header-cancel k-link\" title=\"#=messages.cancel#\" ' + 'aria-label=\"#=messages.cancel#\"><span class=\"k-icon k-i-arrow-chevron-left\"></span></a>' + '#=messages.filter# #=messages.into# #=title#' + '<a href=\"\\\\#\" class=\"k-header-done k-link\" title=\"#=messages.done#\" ' + 'aria-label=\"#=messages.done#\"><span class=\"k-icon k-i-check\"></span></a>' + '</div>' + '<form title=\"#=messages.title#\" class=\"k-filter-menu k-mobile-list\">' + '<ul>' + '<li>' + '<span class=\"k-filter-help-text\">#=messages.info#</span>' + '<ul class=\"k-multicheck-bool-wrap\">' + '<li class=\"k-item\"><label class=\"k-label\">' + '<input id=\"true_#=filterMenuGuid#\" title=\"#=messages.isTrue#\" class=\"k-check\" type=\"radio\" data-#=ns#bind=\"checked: filters[0].value\" value=\"true\" name=\"filters[0].value\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" />' + '<span class=\"k-item-title\">#=messages.isTrue#</span>' + '</label></li>' + '<li class=\"k-item\"><label class=\"k-label\">' + '<input id=\"false_#=filterMenuGuid#\" title=\"#=messages.isFalse#\" class=\"k-check\" type=\"radio\" data-#=ns#bind=\"checked: filters[0].value\" value=\"false\" name=\"filters[0].value\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" />' + '<span for=\"false_#=filterMenuGuid#\" class=\"k-item-title\">#=messages.isFalse#</span>' + '</label></li>' + '</ul>' + '</li>' + '<li class=\"k-item k-clear-wrap\">' + '<span class=\"k-label k-clear\" title=\"#=messages.clear#\" ' + 'aria-label=\"#=messages.clear#\">#=messages.clear#</span>' + '</li>' + '</ul>' + '</form>' + '</div>';\n function removeFiltersForField(expression, field) {\n if (expression.filters) {\n expression.filters = $.grep(expression.filters, function (filter) {\n removeFiltersForField(filter, field);\n if (filter.filters) {\n return filter.filters.length;\n } else {\n return filter.field != field;\n }\n });\n }\n }\n function convertItems(items) {\n var idx, length, item, value, text, result;\n if (items && items.length) {\n result = [];\n for (idx = 0, length = items.length; idx < length; idx++) {\n item = items[idx];\n text = item.text !== '' ? item.text || item.value || item : item.text;\n value = item.value == null ? item.text || item : item.value;\n result[idx] = {\n text: text,\n value: value\n };\n }\n }\n return result;\n }\n function clearFilter(filters, field) {\n return $.grep(filters, function (expr) {\n if (expr.filters) {\n expr.filters = $.grep(expr.filters, function (nested) {\n return nested.field != field;\n });\n return expr.filters.length;\n }\n return expr.field != field;\n });\n }\n var FilterMenu = Widget.extend({\n init: function (element, options) {\n var that = this, type = 'string', operators, initial, link, field;\n Widget.fn.init.call(that, element, options);\n operators = that.operators = options.operators || {};\n element = that.element;\n options = that.options;\n if (!options.appendToElement) {\n link = element.addClass('k-with-icon k-filterable').find('.k-grid-filter');\n if (!link[0]) {\n link = element.prepend('<a class=\"k-grid-filter\" href=\"#\" title=\"' + options.messages.filter + '\" aria-label=\"' + options.messages.filter + '\"><span class=\"k-icon k-i-filter\"></span></a>').find('.k-grid-filter');\n }\n link.attr('tabindex', -1).on('click' + NS, proxy(that._click, that));\n }\n that.link = link || $();\n that.dataSource = DataSource.create(options.dataSource);\n that.field = options.field || element.attr(kendo.attr('field'));\n that.model = that.dataSource.reader.model;\n that._parse = function (value) {\n return value != null ? value + '' : value;\n };\n if (that.model && that.model.fields) {\n field = that.model.fields[that.field];\n if (field) {\n type = field.type || 'string';\n if (field.parse) {\n that._parse = proxy(field.parse, field);\n }\n }\n }\n if (options.values) {\n type = 'enums';\n }\n that.type = type;\n operators = operators[type] || options.operators[type];\n for (initial in operators) {\n break;\n }\n that._defaultFilter = function () {\n return {\n field: that.field,\n operator: initial || 'eq',\n value: ''\n };\n };\n that._refreshHandler = proxy(that.refresh, that);\n that.dataSource.bind(CHANGE, that._refreshHandler);\n if (options.appendToElement) {\n that._init();\n } else {\n that.refresh();\n }\n },\n _init: function () {\n var that = this, ui = that.options.ui, setUI = isFunction(ui), role;\n that.pane = that.options.pane;\n if (that.pane) {\n that._isMobile = true;\n }\n if (!setUI) {\n role = ui || roles[that.type];\n }\n if (that._isMobile) {\n that._createMobileForm(role);\n } else {\n that._createForm(role);\n }\n that.form.on('submit' + NS, proxy(that._submit, that)).on('reset' + NS, proxy(that._reset, that));\n if (setUI) {\n that.form.find('.k-textbox').removeClass('k-textbox').each(function () {\n ui($(this));\n });\n }\n that.form.find('[' + kendo.attr('role') + '=numerictextbox]').removeClass('k-textbox').end().find('[' + kendo.attr('role') + '=datetimepicker]').removeClass('k-textbox').end().find('[' + kendo.attr('role') + '=timepicker]').removeClass('k-textbox').end().find('[' + kendo.attr('role') + '=datepicker]').removeClass('k-textbox');\n that.refresh();\n that.trigger(INIT, {\n field: that.field,\n container: that.form\n });\n kendo.cycleForm(that.form);\n },\n _createForm: function (role) {\n var that = this, options = that.options, operators = that.operators || {}, type = that.type, hasCustomTemplate = isFunction(that.options.ui);\n operators = operators[type] || options.operators[type];\n that.form = $('<form title=\"' + that.options.messages.title + '\" class=\"k-filter-menu\"/>').html(kendo.template(type === 'boolean' ? hasCustomTemplate ? customBooleanTemplate : booleanTemplate : defaultTemplate)({\n field: that.field,\n format: options.format,\n ns: kendo.ns,\n messages: options.messages,\n extra: options.extra,\n operators: operators,\n type: type,\n role: role,\n values: convertItems(options.values)\n }));\n if (!options.appendToElement) {\n that.popup = that.form[POPUP]({\n anchor: that.link,\n open: proxy(that._open, that),\n activate: proxy(that._activate, that),\n close: function () {\n if (that.options.closeCallback) {\n that.options.closeCallback(that.element);\n }\n }\n }).data(POPUP);\n } else {\n that.element.append(that.form);\n that.popup = that.element.closest('.k-popup').data(POPUP);\n }\n that.form.on('keydown' + NS, proxy(that._keydown, that));\n },\n _createMobileForm: function (role) {\n var that = this, options = that.options, operators = that.operators || {}, filterMenuGuid = kendo.guid(), type = that.type;\n operators = operators[type] || options.operators[type];\n that.form = $('<div />').html(kendo.template(type === 'boolean' ? booleanMobileTemplate : defaultMobileTemplate)({\n field: that.field,\n title: options.title || that.field,\n format: options.format,\n ns: kendo.ns,\n messages: options.messages,\n extra: options.extra,\n operators: operators,\n filterMenuGuid: filterMenuGuid,\n type: type,\n role: role,\n inputType: mobileRoles[type],\n values: convertItems(options.values)\n }));\n that.view = that.pane.append(that.form.html());\n that.form = that.view.element.find('form');\n that.view.element.on('click', '.k-header-done', function (e) {\n that.form.submit();\n e.preventDefault();\n }).on('click', '.k-header-cancel', function (e) {\n that._closeForm();\n e.preventDefault();\n }).on('click', '.k-clear', function (e) {\n that._mobileClear();\n e.preventDefault();\n });\n that.view.bind('showStart', function () {\n that.refresh();\n });\n },\n refresh: function () {\n var that = this, expression = that.dataSource.filter() || {\n filters: [],\n logic: 'and'\n };\n var defaultFilters = [that._defaultFilter()];\n var defaultOperator = that._defaultFilter().operator;\n if (that.options.extra || defaultOperator !== 'isnull' && defaultOperator !== 'isnullorempty' && defaultOperator !== 'isnotnullorempty' && defaultOperator !== 'isnotnull' && defaultOperator !== 'isempty' && defaultOperator !== 'isnotempty') {\n defaultFilters.push(that._defaultFilter());\n }\n that.filterModel = kendo.observable({\n logic: 'and',\n filters: defaultFilters\n });\n if (that.form) {\n kendo.bind(that.form.children().first(), that.filterModel);\n }\n if (that._bind(expression)) {\n that.link.addClass('k-state-active');\n } else {\n that.link.removeClass('k-state-active');\n }\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n if (that.form) {\n kendo.unbind(that.form);\n kendo.destroy(that.form);\n that.form.unbind(NS);\n if (that.popup) {\n that.popup.destroy();\n that.popup = null;\n }\n that.form = null;\n }\n if (that.view) {\n that.view.purge();\n that.view = null;\n }\n that.link.unbind(NS);\n if (that._refreshHandler) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n that.dataSource = null;\n }\n that.element = that.link = that._refreshHandler = that.filterModel = null;\n },\n _bind: function (expression) {\n var that = this, filters = expression.filters, idx, length, found = false, current = 0, filterModel = that.filterModel, currentFilter, filter;\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n if (filter.field == that.field) {\n filterModel.set('logic', expression.logic);\n currentFilter = filterModel.filters[current];\n if (!currentFilter) {\n filterModel.filters.push({ field: that.field });\n currentFilter = filterModel.filters[current];\n }\n currentFilter.set('value', that._parse(filter.value));\n currentFilter.set('operator', filter.operator);\n current++;\n found = true;\n } else if (filter.filters) {\n found = found || that._bind(filter);\n }\n }\n return found;\n },\n _stripFilters: function (filters) {\n return $.grep(filters, function (filter) {\n return filter.value !== '' && filter.value != null || (filter.operator === 'isnull' || filter.operator === 'isnotnull' || filter.operator === 'isempty' || filter.operator === 'isnotempty' || filter.operator == 'isnullorempty' || filter.operator == 'isnotnullorempty');\n });\n },\n _merge: function (expression) {\n var that = this, logic = expression.logic || 'and', filters = this._stripFilters(expression.filters), filter, result = that.dataSource.filter() || {\n filters: [],\n logic: 'and'\n }, idx, length;\n removeFiltersForField(result, that.field);\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n filter.value = that._parse(filter.value);\n }\n if (filters.length) {\n if (result.filters.length) {\n expression.filters = filters;\n if (result.logic !== 'and') {\n result.filters = [{\n logic: result.logic,\n filters: result.filters\n }];\n result.logic = 'and';\n }\n if (filters.length > 1) {\n result.filters.push(expression);\n } else {\n result.filters.push(filters[0]);\n }\n } else {\n result.filters = filters;\n result.logic = logic;\n }\n }\n return result;\n },\n filter: function (expression) {\n var filters = this._stripFilters(expression.filters);\n if (filters.length && this.trigger('change', {\n filter: {\n logic: expression.logic,\n filters: filters\n },\n field: this.field\n })) {\n return;\n }\n expression = this._merge(expression);\n if (expression.filters.length) {\n this.dataSource.filter(expression);\n }\n },\n clear: function () {\n var that = this, expression = that.dataSource.filter() || { filters: [] };\n if (this.trigger('change', {\n filter: null,\n field: that.field\n })) {\n return;\n }\n that._removeFilter(expression);\n },\n _mobileClear: function () {\n var that = this;\n var viewElement = that.view.element;\n if (that.type === 'boolean') {\n var booleanRadioButton = viewElement.find('.k-check:checked');\n var booleanRadioButtonValue = booleanRadioButton.val();\n booleanRadioButton.val('');\n booleanRadioButton.trigger('change');\n booleanRadioButton.val(booleanRadioButtonValue);\n booleanRadioButton.prop('checked', false);\n } else {\n var operatorSelects = viewElement.find('select');\n operatorSelects.each(function (i, e) {\n var input = $(e);\n input.val(input.find('option:first').val());\n input.trigger('change');\n });\n if (that.type === 'string' || that.type === 'date' || that.type === 'number') {\n var valueInputs = viewElement.find('.k-value-input');\n valueInputs.each(function (i, e) {\n var input = $(e);\n input.val('');\n input.trigger('change');\n });\n }\n if (that.options.extra) {\n var andLogicRadio = viewElement.find('[name=logic]').first();\n andLogicRadio.prop('checked', true);\n andLogicRadio.trigger('change');\n }\n }\n },\n _removeFilter: function (expression) {\n var that = this;\n expression.filters = $.grep(expression.filters, function (filter) {\n if (filter.filters) {\n filter.filters = clearFilter(filter.filters, that.field);\n return filter.filters.length;\n }\n return filter.field != that.field;\n });\n if (!expression.filters.length) {\n expression = null;\n }\n that.dataSource.filter(expression);\n },\n _submit: function (e) {\n e.preventDefault();\n e.stopPropagation();\n var expression = this.filterModel.toJSON();\n var containsFilters = $.grep(expression.filters, function (filter) {\n return filter.value !== '' && filter.value !== null;\n });\n if (this._checkForNullOrEmptyFilter(expression) || containsFilters && containsFilters.length) {\n this.filter(expression);\n } else {\n var currentExpression = this.dataSource.filter();\n if (currentExpression) {\n currentExpression.filters.push(expression);\n expression = currentExpression;\n }\n this._removeFilter(expression);\n }\n this._closeForm();\n },\n _checkForNullOrEmptyFilter: function (expression) {\n if (!expression || !expression.filters || !expression.filters.length) {\n return false;\n }\n var firstNullOrEmpty = false;\n var secondNullOrEmpty = false;\n var operator;\n if (expression.filters[0]) {\n operator = expression.filters[0].operator;\n firstNullOrEmpty = operator == 'isnull' || operator == 'isnotnull' || operator == 'isnotempty' || operator == 'isempty' || operator == 'isnullorempty' || operator == 'isnotnullorempty';\n }\n if (expression.filters[1]) {\n operator = expression.filters[1].operator;\n secondNullOrEmpty = operator == 'isnull' || operator == 'isnotnull' || operator == 'isnotempty' || operator == 'isempty' || operator == 'isnullorempty' || operator == 'isnotnullorempty';\n }\n return !this.options.extra && firstNullOrEmpty || this.options.extra && (firstNullOrEmpty || secondNullOrEmpty);\n },\n _reset: function () {\n this.clear();\n if (this.options.search && this.container) {\n this.container.find('label').parent().show();\n }\n this._closeForm();\n },\n _closeForm: function () {\n if (this._isMobile) {\n this.pane.navigate('', this.options.animations.right);\n } else {\n this.popup.close();\n }\n },\n _click: function (e) {\n e.preventDefault();\n e.stopPropagation();\n if (!this.popup && !this.pane) {\n this._init();\n }\n if (this._isMobile) {\n this.pane.navigate(this.view, this.options.animations.left);\n } else {\n this.popup.toggle();\n }\n },\n _open: function () {\n var popup;\n $('.k-filter-menu').not(this.form).each(function () {\n popup = $(this).data(POPUP);\n if (popup) {\n popup.close();\n }\n });\n },\n _activate: function () {\n this.form.find(':kendoFocusable:first').focus();\n this.trigger(OPEN, {\n field: this.field,\n container: this.form\n });\n },\n _keydown: function (e) {\n if (e.keyCode == kendo.keys.ESC) {\n this.popup.close();\n }\n },\n events: [\n INIT,\n 'change',\n OPEN\n ],\n options: {\n name: 'FilterMenu',\n extra: true,\n appendToElement: false,\n type: 'string',\n operators: {\n string: {\n eq: EQ,\n neq: NEQ,\n startswith: 'Starts with',\n contains: 'Contains',\n doesnotcontain: 'Does not contain',\n endswith: 'Ends with',\n isnull: 'Is null',\n isnotnull: 'Is not null',\n isempty: 'Is empty',\n isnotempty: 'Is not empty',\n isnullorempty: 'Has no value',\n isnotnullorempty: 'Has value'\n },\n number: {\n eq: EQ,\n neq: NEQ,\n gte: 'Is greater than or equal to',\n gt: 'Is greater than',\n lte: 'Is less than or equal to',\n lt: 'Is less than',\n isnull: 'Is null',\n isnotnull: 'Is not null'\n },\n date: {\n eq: EQ,\n neq: NEQ,\n gte: 'Is after or equal to',\n gt: 'Is after',\n lte: 'Is before or equal to',\n lt: 'Is before',\n isnull: 'Is null',\n isnotnull: 'Is not null'\n },\n enums: {\n eq: EQ,\n neq: NEQ,\n isnull: 'Is null',\n isnotnull: 'Is not null'\n }\n },\n messages: {\n info: 'Show items with value that:',\n title: 'Show items with value that:',\n isTrue: 'is true',\n isFalse: 'is false',\n filter: 'Filter',\n clear: 'Clear',\n and: 'And',\n or: 'Or',\n selectValue: '-Select value-',\n operator: 'Operator',\n value: 'Value',\n additionalValue: 'Additional value',\n additionalOperator: 'Additional operator',\n logic: 'Filters logic',\n cancel: 'Cancel',\n done: 'Done',\n into: 'in'\n },\n animations: {\n left: 'slide',\n right: 'slide:right'\n }\n }\n });\n var multiCheckNS = '.kendoFilterMultiCheck';\n function filterValuesForField(expression, field) {\n if (expression.filters) {\n expression.filters = $.grep(expression.filters, function (filter) {\n filterValuesForField(filter, field);\n if (filter.filters) {\n return filter.filters.length;\n } else {\n return filter.field == field && filter.operator == 'eq';\n }\n });\n }\n }\n function flatFilterValues(expression) {\n if (expression.logic == 'and' && expression.filters.length > 1) {\n return [];\n }\n if (expression.filters) {\n return $.map(expression.filters, function (filter) {\n return flatFilterValues(filter);\n });\n } else if (expression.value !== undefined) {\n return [expression.value];\n } else {\n return [];\n }\n }\n function distinct(items, field) {\n var getter = kendo.getter(field, true), result = [], index = 0, seen = {};\n while (index < items.length) {\n var item = items[index++], text = getter(item);\n if (text !== undefined && !seen.hasOwnProperty(text)) {\n result.push(item);\n seen[text] = true;\n }\n }\n return result;\n }\n function removeDuplicates(dataSelector, dataTextField) {\n return function (e) {\n var items = dataSelector(e);\n return distinct(items, dataTextField);\n };\n }\n var DataSource = kendo.data.DataSource;\n var multiCkeckMobileTemplate = '<div data-#=ns#role=\"view\" class=\"k-grid-filter-menu\">' + '<div data-#=ns#role=\"header\" class=\"k-header\">' + '<a href=\"\\\\#\" class=\"k-header-cancel k-link\" title=\"#=messages.cancel#\" ' + 'aria-label=\"#=messages.cancel#\"><span class=\"k-icon k-i-arrow-chevron-left\"></span></a>' + '#=messages.filter# #=messages.into# #=title#' + '<a href=\"\\\\#\" class=\"k-header-done k-link\" title=\"#=messages.done#\" ' + 'aria-label=\"#=messages.done#\"><span class=\"k-icon k-i-check\"></span></a>' + '</div>' + '<form class=\"k-filter-menu k-mobile-list\">' + '<ul>' + '#if(search){#' + '<li class=\"k-textbox k-space-right\">' + '<input placeholder=\"#=messages.search#\" title=\"#=messages.search#\" autocomplete=\"' + AUTOCOMPLETEVALUE + '\" />' + '<span class=\"k-icon k-i-zoom\" />' + '</li>' + '#}#' + '<li class=\"k-filter-tools\">' + '<span style=\"#=checkAll ? \"\" : \"visibility: hidden;\" #\" class=\"k-label k-select-all\" title=\"#=messages.checkAll#\" ' + 'aria-label=\"#=messages.checkAll#\">#=messages.checkAll#</span>' + '<span class=\"k-label k-clear-all\" title=\"#=messages.clearAll#\" ' + 'aria-label=\"#=messages.clearAll#\">#=messages.clearAll#</span>' + '</li>' + '#if(messages.selectedItemsFormat){#' + '<li>' + '<div class=\"k-filter-selected-items\"></div>' + '</li>' + '#}#' + '<li>' + '<ul class=\"k-multicheck-wrap\"></ul>' + '</li>' + '</ul>' + '</form>' + '</div>';\n var FilterMultiCheck = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n options = this.options;\n this.element = $(element);\n var field = this.field = this.options.field || this.element.attr(kendo.attr('field'));\n var checkSource = options.checkSource;\n if (this._foreignKeyValues()) {\n this.checkSource = DataSource.create(options.values);\n this.checkSource.fetch();\n } else if (options.forceUnique) {\n checkSource = $.extend(true, {}, options.dataSource.options);\n delete checkSource.pageSize;\n this.checkSource = DataSource.create(checkSource);\n this.checkSource.reader.data = removeDuplicates(this.checkSource.reader.data, this.field);\n } else {\n this.checkSource = DataSource.create(checkSource);\n }\n this.dataSource = options.dataSource;\n this.model = this.dataSource.reader.model;\n this._parse = function (value) {\n return value + '';\n };\n if (this.model && this.model.fields) {\n field = this.model.fields[this.field];\n if (field) {\n if (field.type == 'number') {\n this._parse = function (value) {\n if (typeof value === 'string' && value.toLowerCase() === 'null') {\n return null;\n }\n return parseFloat(value);\n };\n } else if (field.parse) {\n this._parse = proxy(field.parse, field);\n }\n this.type = field.type || 'string';\n }\n }\n if (!options.appendToElement) {\n this._createLink();\n } else {\n this._init();\n }\n this._refreshHandler = proxy(this.refresh, this);\n this.dataSource.bind(CHANGE, this._refreshHandler);\n },\n _createLink: function () {\n var element = this.element;\n var link = element.addClass('k-with-icon k-filterable').find('.k-grid-filter');\n if (!link[0]) {\n link = element.prepend('<a class=\"k-grid-filter\" href=\"#\" title=\"' + this.options.messages.filter + '\" aria-label=\"' + this.options.messages.filter + '\"><span class=\"k-icon k-i-filter\"/></a>').find('.k-grid-filter');\n }\n this._link = link.attr('tabindex', -1).on('click' + NS, proxy(this._click, this));\n },\n _init: function () {\n var that = this;\n var forceUnique = this.options.forceUnique;\n var options = this.options;\n this.pane = options.pane;\n if (this.pane) {\n this._isMobile = true;\n }\n this._createForm();\n if (this._foreignKeyValues()) {\n this.refresh();\n } else if (forceUnique && !this.checkSource.options.serverPaging && this.dataSource.data().length) {\n this.checkSource.data(distinct(this.dataSource.data(), this.field));\n this.refresh();\n } else {\n this._attachProgress();\n this.checkSource.fetch(function () {\n that.refresh.call(that);\n });\n }\n if (!this.options.forceUnique) {\n this.checkChangeHandler = function () {\n that.container.empty();\n that.refresh();\n };\n this.checkSource.bind(CHANGE, this.checkChangeHandler);\n }\n this.form.on('keydown' + multiCheckNS, proxy(this._keydown, this)).on('submit' + multiCheckNS, proxy(this._filter, this)).on('reset' + multiCheckNS, proxy(this._reset, this));\n this.trigger(INIT, {\n field: this.field,\n container: this.form\n });\n },\n _attachProgress: function () {\n var that = this;\n this._progressHandler = function () {\n ui.progress(that.container, true);\n };\n this._progressHideHandler = function () {\n ui.progress(that.container, false);\n };\n this.checkSource.bind('progress', this._progressHandler).bind('change', this._progressHideHandler);\n },\n _input: function () {\n var that = this;\n that._clearTypingTimeout();\n that._typingTimeout = setTimeout(function () {\n that.search();\n }, 100);\n },\n _clearTypingTimeout: function () {\n if (this._typingTimeout) {\n clearTimeout(this._typingTimeout);\n this._typingTimeout = null;\n }\n },\n search: function () {\n var ignoreCase = this.options.ignoreCase;\n var searchString = this.searchTextBox[0].value;\n var labels = this.container.find('label');\n if (ignoreCase) {\n searchString = searchString.toLowerCase();\n }\n var i = 0;\n if (this.options.checkAll && labels.length) {\n if (!this._isMobile) {\n labels[0].parentNode.style.display = searchString ? 'none' : '';\n i++;\n } else {\n this.view.element.find('.k-select-all')[0].style.visibility = searchString ? 'hidden' : '';\n }\n }\n while (i < labels.length) {\n var label = labels[i];\n var labelText = label.textContent || label.innerText;\n if (ignoreCase) {\n labelText = labelText.toLowerCase();\n }\n label.parentNode.style.display = labelText.indexOf(searchString) >= 0 ? '' : 'none';\n i++;\n }\n },\n _activate: function () {\n this.form.find(':kendoFocusable:first').focus();\n this.trigger(OPEN, {\n field: this.field,\n container: this.form\n });\n },\n _createForm: function () {\n var options = this.options;\n var html = '';\n var that = this;\n if (!this._isMobile) {\n html += '<div class=\\'k-filter-menu-container\\'>';\n if (options.search) {\n html += '<div class=\\'k-textbox k-space-right\\'>' + '<input placeholder=\\'' + options.messages.search + '\\'/>' + '<span class=\\'k-icon k-i-zoom\\' />' + '</div>';\n }\n html += '<ul class=\\'k-reset k-multicheck-wrap\\'></ul>';\n if (options.messages.selectedItemsFormat) {\n html += '<div class=\\'k-filter-selected-items\\'>' + kendo.format(options.messages.selectedItemsFormat, 0) + '</div>';\n }\n html += '<div class=\\'k-action-buttons\\'>';\n html += '<button type=\\'submit\\' class=\\'k-button k-primary\\'>' + options.messages.filter + '</button>';\n html += '<button type=\\'reset\\' class=\\'k-button\\'>' + options.messages.clear + '</button>';\n html += '</div>';\n html += '</div>';\n this.form = $('<form class=\"k-filter-menu\"/>').html(html);\n this.container = this.form.find('.k-multicheck-wrap');\n }\n if (this._isMobile) {\n that.form = $('<div />').html(kendo.template(multiCkeckMobileTemplate)({\n field: that.field,\n title: options.title || that.field,\n ns: kendo.ns,\n messages: options.messages,\n search: options.search,\n checkAll: options.checkAll\n }));\n that.view = that.pane.append(that.form.html());\n that.form = that.view.element.find('form');\n var element = this.view.element;\n this.container = element.find('.k-multicheck-wrap');\n element.on('click', '.k-header-done', function (e) {\n that.form.submit();\n e.preventDefault();\n }).on('click', '.k-header-cancel', function (e) {\n that._closeForm();\n e.preventDefault();\n }).on('click', '.k-clear-all', function (e) {\n that._mobileCheckAll(false);\n e.preventDefault();\n }).on('click', '.k-select-all', function (e) {\n that._mobileCheckAll(true);\n e.preventDefault();\n });\n that.view.bind('showStart', function () {\n that.refresh();\n });\n } else {\n if (!options.appendToElement) {\n that.popup = that.form.kendoPopup({\n anchor: that._link,\n open: proxy(that._open, that),\n activate: proxy(that._activate, that),\n close: function () {\n if (that.options.closeCallback) {\n that.options.closeCallback(that.element);\n }\n }\n }).data(POPUP);\n } else {\n this.popup = this.element.closest('.k-popup').data(POPUP);\n this.element.append(this.form);\n }\n }\n if (options.search) {\n this.searchTextBox = this.form.find('.k-textbox > input');\n this.searchTextBox.on('input', proxy(this._input, this));\n }\n },\n createCheckAllItem: function () {\n var options = this.options;\n var template = kendo.template(options.itemTemplate({\n field: 'all',\n mobile: this._isMobile\n }));\n var checkAllContainer = $(template({ all: options.messages.checkAll }));\n this.container.prepend(checkAllContainer);\n this.checkBoxAll = checkAllContainer.find(':checkbox').eq(0).addClass('k-check-all');\n this.checkAllHandler = proxy(this.checkAll, this);\n this.checkBoxAll.on(CHANGE + multiCheckNS, this.checkAllHandler);\n },\n updateCheckAllState: function () {\n if (this.options.messages.selectedItemsFormat) {\n this.form.find('.k-filter-selected-items').text(kendo.format(this.options.messages.selectedItemsFormat, this.container.find(':checked:not(.k-check-all)').length));\n }\n if (this.checkBoxAll) {\n var state = this.container.find(':checkbox:not(.k-check-all)').length == this.container.find(':checked:not(.k-check-all)').length;\n this.checkBoxAll.prop('checked', state);\n }\n },\n refresh: function (e) {\n var forceUnique = this.options.forceUnique;\n var dataSource = this.dataSource;\n var filters = this.getFilterArray();\n if (this._link) {\n this._link.toggleClass('k-state-active', filters.length !== 0);\n }\n if (this.form) {\n if (e && forceUnique && e.sender === dataSource && !dataSource.options.serverPaging && (e.action == 'itemchange' || e.action == 'add' || e.action == 'remove' || dataSource.options.autoSync && e.action === 'sync') && !this._foreignKeyValues()) {\n this.checkSource.data(distinct(this.dataSource.data(), this.field));\n this.container.empty();\n }\n if (this.container.is(':empty')) {\n this.createCheckBoxes();\n }\n this.checkValues(filters);\n this.trigger(REFRESH);\n }\n },\n getFilterArray: function () {\n var expression = $.extend(true, {}, {\n filters: [],\n logic: 'and'\n }, this.dataSource.filter());\n filterValuesForField(expression, this.field);\n var flatValues = flatFilterValues(expression);\n return flatValues;\n },\n createCheckBoxes: function () {\n var options = this.options;\n var data;\n var templateOptions = {\n field: this.field,\n format: options.format,\n mobile: this._isMobile,\n type: this.type\n };\n if (!this.options.forceUnique) {\n data = this.checkSource.view();\n } else if (this._foreignKeyValues()) {\n data = this.checkSource.data();\n templateOptions.valueField = 'value';\n templateOptions.field = 'text';\n } else {\n data = this.checkSource.data();\n }\n var template = kendo.template(options.itemTemplate(templateOptions));\n var itemsHtml = kendo.render(template, data);\n if (options.checkAll && !this._isMobile) {\n this.createCheckAllItem();\n }\n this.container.on(CHANGE + multiCheckNS, ':checkbox', proxy(this.updateCheckAllState, this));\n this.container.append(itemsHtml);\n },\n checkAll: function () {\n var state = this.checkBoxAll.is(':checked');\n this.container.find(':checkbox').prop('checked', state);\n },\n checkValues: function (values) {\n var that = this;\n $($.grep(this.container.find(':checkbox').prop('checked', false), function (ele) {\n var found = false;\n if ($(ele).is('.k-check-all')) {\n return;\n }\n var checkBoxVal = that._parse($(ele).val());\n for (var i = 0; i < values.length; i++) {\n if (that.type == 'date') {\n if (values[i] && checkBoxVal) {\n found = values[i].getTime() == checkBoxVal.getTime();\n } else if (values[i] === null && checkBoxVal === null) {\n found = true;\n } else {\n found = false;\n }\n } else {\n found = values[i] == checkBoxVal;\n }\n if (found) {\n return found;\n }\n }\n })).prop('checked', true);\n this.updateCheckAllState();\n },\n _mobileCheckAll: function (state) {\n var that = this;\n var checkboxes = that.container.find(':checkbox');\n checkboxes.each(function (i, e) {\n var checkbox = $(e);\n checkbox.prop('checked', state);\n checkbox.trigger('change');\n });\n },\n _filter: function (e) {\n e.preventDefault();\n e.stopPropagation();\n var expression = { logic: 'or' };\n var that = this;\n expression.filters = $.map(this.form.find(':checkbox:checked:not(.k-check-all)'), function (item) {\n return {\n value: $(item).val(),\n operator: 'eq',\n field: that.field\n };\n });\n if (expression.filters.length && this.trigger('change', {\n filter: expression,\n field: that.field\n })) {\n return;\n }\n expression = this._merge(expression);\n if (expression.filters.length) {\n this.dataSource.filter(expression);\n } else {\n this.clear();\n }\n this._closeForm();\n },\n _stripFilters: function (filters) {\n return $.grep(filters, function (filter) {\n return filter.value != null;\n });\n },\n _foreignKeyValues: function () {\n var options = this.options;\n return options.values && !options.checkSource;\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n if (that.form) {\n kendo.unbind(that.form);\n kendo.destroy(that.form);\n that.form.unbind(multiCheckNS);\n if (that.popup) {\n that.popup.destroy();\n that.popup = null;\n }\n that.form = null;\n if (that.container) {\n that.container.unbind(multiCheckNS);\n that.container = null;\n }\n if (that.checkBoxAll) {\n that.checkBoxAll.unbind(multiCheckNS);\n }\n }\n if (that.view) {\n that.view.purge();\n that.view = null;\n }\n if (that._link) {\n that._link.unbind(NS);\n }\n if (that._refreshHandler) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n that.dataSource = null;\n }\n if (that.checkChangeHandler) {\n that.checkSource.unbind(CHANGE, that.checkChangeHandler);\n }\n if (that._progressHandler) {\n that.checkSource.unbind('progress', that._progressHandler);\n }\n if (that._progressHideHandler) {\n that.checkSource.unbind('change', that._progressHideHandler);\n }\n this._clearTypingTimeout();\n this.searchTextBox = null;\n that.element = that.checkSource = that.container = that.checkBoxAll = that._link = that._refreshHandler = that.checkAllHandler = null;\n },\n options: {\n name: 'FilterMultiCheck',\n itemTemplate: function (options) {\n var field = options.field;\n var format = options.format;\n var valueField = options.valueField;\n var mobile = options.mobile;\n var valueFormat = '';\n if (valueField === undefined) {\n valueField = field;\n }\n if (options.type == 'date') {\n valueFormat = ':yyyy-MM-ddTHH:mm:sszzz';\n }\n return '<li class=\\'k-item\\'>' + '<label class=\\'k-label\\'>' + '<input type=\\'checkbox\\' class=\\'' + (mobile ? 'k-check' : '') + '\\' value=\\'#:kendo.format(\\'{0' + valueFormat + '}\\',' + valueField + ')#\\'/>' + '<span class=\\'k-item-title\\'>#:kendo.format(\\'' + (format ? format : '{0}') + '\\', ' + field + ')#</span>' + '</label>' + '</li>';\n },\n checkAll: true,\n search: false,\n ignoreCase: true,\n appendToElement: false,\n messages: {\n checkAll: 'Select All',\n clearAll: 'Clear All',\n clear: 'Clear',\n filter: 'Filter',\n search: 'Search',\n cancel: 'Cancel',\n selectedItemsFormat: '{0} items selected',\n done: 'Done',\n into: 'in'\n },\n forceUnique: true,\n animations: {\n left: 'slide',\n right: 'slide:right'\n }\n },\n events: [\n INIT,\n REFRESH,\n 'change',\n OPEN\n ]\n });\n $.extend(FilterMultiCheck.fn, {\n _click: FilterMenu.fn._click,\n _keydown: FilterMenu.fn._keydown,\n _reset: FilterMenu.fn._reset,\n _closeForm: FilterMenu.fn._closeForm,\n _removeFilter: FilterMenu.fn._removeFilter,\n clear: FilterMenu.fn.clear,\n _merge: FilterMenu.fn._merge\n });\n ui.plugin(FilterMenu);\n ui.plugin(FilterMultiCheck);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.menu', [\n 'kendo.popup',\n 'kendo.data'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'menu',\n name: 'Menu',\n category: 'web',\n description: 'The Menu widget displays hierarchical data as a multi-level menu.',\n depends: [\n 'popup',\n 'data',\n 'data.odata'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, activeElement = kendo._activeElement, touch = kendo.support.touch && kendo.support.mobileOS, isArray = $.isArray, HierarchicalDataSource = kendo.data.HierarchicalDataSource, MOUSEDOWN = 'mousedown', CLICK = 'click', DELAY = 30, SCROLLSPEED = 50, extend = $.extend, proxy = $.proxy, each = $.each, template = kendo.template, keys = kendo.keys, Widget = ui.Widget, excludedNodesRegExp = /^(ul|a|div)$/i, NS = '.kendoMenu', IMG = 'img', OPEN = 'open', MENU = 'k-menu', LINK = 'k-link k-menu-link', LINK_SELECTOR = '.k-link', ICON_SELECTOR = '.k-menu-expand-arrow', LAST = 'k-last', CLOSE = 'close', TIMER = 'timer', FIRST = 'k-first', IMAGE = 'k-image', SELECT = 'select', ZINDEX = 'zIndex', ACTIVATE = 'activate', DEACTIVATE = 'deactivate', POINTERDOWN = 'touchstart' + NS + ' MSPointerDown' + NS + ' pointerdown' + NS, pointers = kendo.support.pointers, msPointers = kendo.support.msPointers, allPointers = msPointers || pointers, CHANGE = 'change', ERROR = 'error', TOUCHSTART = kendo.support.touch ? 'touchstart' : '', MOUSEENTER = pointers ? 'pointerover' : msPointers ? 'MSPointerOver' : 'mouseenter', MOUSELEAVE = pointers ? 'pointerout' : msPointers ? 'MSPointerOut' : 'mouseleave', MOUSEWHEEL = 'DOMMouseScroll' + NS + ' mousewheel' + NS, RESIZE = kendo.support.resize + NS, SCROLLWIDTH = 'scrollWidth', SCROLLHEIGHT = 'scrollHeight', OFFSETWIDTH = 'offsetWidth', OFFSETHEIGHT = 'offsetHeight', POPUP_ID_ATTR = 'group', POPUP_OPENER_ATTR = 'groupparent', DOCUMENT_ELEMENT = $(document.documentElement), KENDOPOPUP = 'kendoPopup', DEFAULTSTATE = 'k-state-default', HOVERSTATE = 'k-state-hover', FOCUSEDSTATE = 'k-state-focused', DISABLEDSTATE = 'k-state-disabled', SELECTEDSTATE = 'k-state-selected', menuSelector = '.k-menu', groupSelector = '.k-menu-group', animationContainerSelector = '.k-animation-container', popupSelector = groupSelector + ',' + animationContainerSelector, allItemsSelector = ':not(.k-list) > .k-item', disabledSelector = '.k-item.k-state-disabled', itemSelector = '.k-item', availableItemsSelector = '.k-item:not(.k-state-disabled)', linkSelector = '.k-item:not(.k-state-disabled) > .k-link', exclusionSelector = ':not(.k-item.k-separator)', nextSelector = itemSelector + exclusionSelector + ':eq(0)', lastSelector = itemSelector + exclusionSelector + ':last', templateSelector = 'div:not(.k-animation-container,.k-list-container)', scrollButtonSelector = '.k-menu-scroll-button', touchPointerTypes = {\n '2': 1,\n 'touch': 1\n }, STRING = 'string', DATABOUND = 'dataBound', bindings = {\n text: 'dataTextField',\n url: 'dataUrlField',\n spriteCssClass: 'dataSpriteCssClassField',\n imageUrl: 'dataImageUrlField',\n imageAttr: 'dataImageAttrField',\n content: 'dataContentField'\n }, rendering = {\n wrapperCssClass: function (group, item) {\n var result = 'k-item', index = item.index;\n if (item.enabled === false) {\n result += ' k-state-disabled';\n } else {\n result += ' k-state-default';\n }\n if (group.firstLevel && index === 0) {\n result += ' k-first';\n }\n if (index == group.length - 1) {\n result += ' k-last';\n }\n if (item.cssClass) {\n result += ' ' + item.cssClass;\n }\n if (item.attr && item.attr.hasOwnProperty('class')) {\n result += ' ' + item.attr['class'];\n }\n if (item.selected) {\n result += ' ' + SELECTEDSTATE;\n }\n return result;\n },\n itemCssAttributes: function (item) {\n var result = '';\n var attributes = item.attr || {};\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr !== 'class') {\n result += attr + '=\"' + attributes[attr] + '\" ';\n }\n }\n return result;\n },\n imageCssAttributes: function (imgAttributes) {\n var result = '';\n var attributes = imgAttributes && imgAttributes.toJSON ? imgAttributes.toJSON() : {};\n if (!attributes['class']) {\n attributes['class'] = IMAGE;\n } else {\n attributes['class'] += ' ' + IMAGE;\n }\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr)) {\n result += attr + '=\"' + attributes[attr] + '\" ';\n }\n }\n return result;\n },\n contentCssAttributes: function (item) {\n var result = '';\n var attributes = item.contentAttr || {};\n var defaultClasses = 'k-content k-group k-menu-group';\n if (!attributes['class']) {\n attributes['class'] = defaultClasses;\n } else {\n attributes['class'] += ' ' + defaultClasses;\n }\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr)) {\n result += attr + '=\"' + attributes[attr] + '\" ';\n }\n }\n return result;\n },\n textClass: function () {\n return LINK;\n },\n arrowClass: function (item, group) {\n var result = 'k-icon';\n if (group.horizontal) {\n result += ' k-i-arrow-60-down';\n } else {\n result += ' k-i-arrow-60-right';\n }\n return result;\n },\n groupAttributes: function (group) {\n return group.expanded !== true ? ' style=\\'display:none\\'' : '';\n },\n groupCssClass: function () {\n return 'k-group k-menu-group';\n },\n content: function (item) {\n return item.content ? item.content : ' ';\n }\n };\n function getEffectDirection(direction, root) {\n direction = direction.split(' ')[!root + 0] || direction;\n return direction.replace('top', 'up').replace('bottom', 'down');\n }\n function parseDirection(direction, root, isRtl) {\n direction = direction.split(' ')[!root + 0] || direction;\n var output = {\n origin: [\n 'bottom',\n isRtl ? 'right' : 'left'\n ],\n position: [\n 'top',\n isRtl ? 'right' : 'left'\n ]\n }, horizontal = /left|right/.test(direction);\n if (horizontal) {\n output.origin = [\n 'top',\n direction\n ];\n output.position[1] = kendo.directions[direction].reverse;\n } else {\n output.origin[0] = direction;\n output.position[0] = kendo.directions[direction].reverse;\n }\n output.origin = output.origin.join(' ');\n output.position = output.position.join(' ');\n return output;\n }\n function contains(parent, child) {\n try {\n return $.contains(parent, child);\n } catch (e) {\n return false;\n }\n }\n function updateItemClasses(item) {\n item = $(item);\n item.addClass('k-item').children(IMG).addClass(IMAGE);\n item.children('a').addClass(LINK).children(IMG).addClass(IMAGE);\n item.filter(':not([disabled])').addClass(DEFAULTSTATE);\n item.filter('.k-separator').empty().append(' ');\n item.filter('li[disabled]').addClass(DISABLEDSTATE).removeAttr('disabled').attr('aria-disabled', true);\n if (!item.filter('[role]').length) {\n item.attr('role', 'menuitem');\n }\n if (!item.children(LINK_SELECTOR).length) {\n item.contents().filter(function () {\n return !this.nodeName.match(excludedNodesRegExp) && !(this.nodeType == 3 && !$.trim(this.nodeValue));\n }).wrapAll('<span class=\\'' + LINK + '\\'/>');\n }\n updateArrow(item);\n updateFirstLast(item);\n }\n function updateArrow(item) {\n item = $(item);\n item.find('> .k-link > [class*=k-i-arrow-60]:not(.k-sprite)').remove();\n item.filter(':has(.k-menu-group)').children('.k-link:not(:has([class*=k-i-arrow]:not(.k-sprite)))').each(function () {\n var item = $(this), arrowCssClass = getArrowCssClass(item);\n item.append('<span class=\\'k-icon' + arrowCssClass + ' k-menu-expand-arrow\\'/>');\n });\n }\n function getArrowCssClass(item) {\n var arrowCssClass, parent = item.parent().parent(), isRtl = kendo.support.isRtl(parent);\n if (parent.hasClass(MENU + '-horizontal')) {\n arrowCssClass = ' k-i-arrow-60-down';\n } else {\n if (isRtl) {\n arrowCssClass = ' k-i-arrow-60-left';\n } else {\n arrowCssClass = ' k-i-arrow-60-right';\n }\n }\n return arrowCssClass;\n }\n function updateFirstLast(item) {\n item = $(item);\n item.filter('.k-first:not(:first-child)').removeClass(FIRST);\n item.filter('.k-last:not(:last-child)').removeClass(LAST);\n item.filter(':first-child').addClass(FIRST);\n item.filter(':last-child').addClass(LAST);\n }\n function updateHasAriaPopup(parents) {\n if (parents && parents.length) {\n for (var index in parents) {\n var parentLi = parents.eq(index);\n if (parentLi.find('ul').length) {\n parentLi.attr('aria-haspopup', true);\n } else {\n parentLi.removeAttr('aria-haspopup');\n }\n }\n }\n }\n function getParentLiItems(group) {\n if (!group.hasClass(MENU)) {\n return group.parentsUntil('.' + MENU, 'li');\n }\n }\n function storeItemSelectEventHandler(element, options) {\n var selectHandler = getItemSelectEventHandler(options);\n if (selectHandler) {\n setItemData(element, selectHandler);\n }\n if (options.items) {\n $(element).children('ul').children('li').each(function (i) {\n storeItemSelectEventHandler(this, options.items[i]);\n });\n }\n }\n function setItemData(element, selectHandler) {\n $(element).children('.k-link').data({ selectHandler: selectHandler });\n }\n function getItemSelectEventHandler(options) {\n var selectHandler = options.select, isFunction = kendo.isFunction;\n if (selectHandler && isFunction(selectHandler)) {\n return selectHandler;\n }\n return null;\n }\n function popupOpenerSelector(id) {\n return id ? 'li[data-groupparent=\\'' + id + '\\']' : 'li[data-groupparent]';\n }\n function popupGroupSelector(id) {\n return id ? 'ul[data-group=\\'' + id + '\\']' : 'ul[data-group]';\n }\n function getChildPopups(currentPopup, overflowWrapper) {\n var childPopupOpener = currentPopup.find(popupOpenerSelector());\n var result = [];\n childPopupOpener.each(function (i, opener) {\n opener = $(opener);\n var popupId = opener.data(POPUP_OPENER_ATTR);\n var popup = currentPopup;\n while (popupId) {\n popup = overflowWrapper.find(popupGroupSelector(popupId) + ':visible');\n if (popup.length) {\n result.push(popup);\n }\n opener = popup.find(popupOpenerSelector());\n popupId = opener.data(POPUP_OPENER_ATTR);\n }\n });\n return result;\n }\n function popupParentItem(popupElement, overflowWrapper) {\n var popupId = popupElement.data(POPUP_ID_ATTR);\n return popupId ? overflowWrapper.find(popupOpenerSelector(popupId)) : $([]);\n }\n function itemPopup(item, overflowWrapper) {\n var popupId = item.data(POPUP_OPENER_ATTR);\n return popupId ? overflowWrapper.children(animationContainerSelector).children(popupGroupSelector(popupId)) : $([]);\n }\n function overflowMenuParents(current, overflowWrapper) {\n var parents = [];\n var getParents = function (item) {\n while (item.parentNode && !overflowWrapper.is(item.parentNode)) {\n parents.push(item.parentNode);\n item = item.parentNode;\n }\n };\n var elem = current[0] || current;\n getParents(elem);\n var last = parents[parents.length - 1];\n while ($(last).is(animationContainerSelector)) {\n var popupElement = $(last).children('ul');\n elem = popupParentItem(popupElement, overflowWrapper)[0];\n if (!elem) {\n break;\n }\n parents.push(elem);\n getParents(elem);\n last = parents[parents.length - 1];\n }\n return parents;\n }\n function mousewheelDelta(e) {\n var delta = 0;\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n }\n if (e.detail) {\n delta = Math.round(e.detail / 3);\n }\n return delta;\n }\n function parentsScroll(current, scrollDirection) {\n var scroll = 0;\n var parent = current.parentNode;\n while (parent && !isNaN(parent[scrollDirection])) {\n scroll += parent[scrollDirection];\n parent = parent.parentNode;\n }\n return scroll;\n }\n function isPointerTouch(e) {\n return allPointers && e.originalEvent && e.originalEvent.pointerType in touchPointerTypes;\n }\n function isTouch(e) {\n var ev = e.originalEvent;\n return touch && /touch/i.test(ev.type || '');\n }\n function removeSpacesBetweenItems(ul) {\n ul.contents().filter(function () {\n return this.nodeName != 'LI';\n }).remove();\n }\n var Menu = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n options = that.options;\n that._accessors();\n that._templates();\n that._dataSource();\n that._updateClasses();\n that._animations(options);\n that.nextItemZIndex = 100;\n that._tabindex();\n that._initOverflow(options);\n that._attachMenuEventsHandlers();\n if (options.openOnClick) {\n that.clicked = false;\n }\n element.attr('role', 'menubar');\n if (element[0].id) {\n that._ariaId = kendo.format('{0}_mn_active', element[0].id);\n }\n kendo.notify(that);\n },\n events: [\n OPEN,\n CLOSE,\n ACTIVATE,\n DEACTIVATE,\n SELECT,\n DATABOUND\n ],\n options: {\n name: 'Menu',\n animation: {\n open: { duration: 200 },\n close: { duration: 100 }\n },\n orientation: 'horizontal',\n direction: 'default',\n openOnClick: false,\n closeOnClick: true,\n hoverDelay: 100,\n scrollable: false,\n popupCollision: undefined\n },\n _initData: function () {\n var that = this;\n if (that.dataSource) {\n that.angular('cleanup', function () {\n return { elements: that.element.children() };\n });\n that.element.empty();\n that.append(that.dataSource.view(), that.element);\n that.angular('compile', function () {\n return { elements: that.element.children() };\n });\n }\n },\n _attachMenuEventsHandlers: function () {\n var that = this;\n var element = that.element;\n var options = that.options;\n var overflowWrapper = that._overflowWrapper();\n (overflowWrapper || element).on(POINTERDOWN, itemSelector, proxy(that._focusHandler, that)).on(CLICK + NS, disabledSelector, false).on(CLICK + NS, itemSelector, proxy(that._click, that)).on(POINTERDOWN + ' ' + MOUSEDOWN + NS, '.k-content', proxy(that._preventClose, that)).on(MOUSEENTER + NS, availableItemsSelector, proxy(that._mouseenter, that)).on(MOUSELEAVE + NS, availableItemsSelector, proxy(that._mouseleave, that)).on(MOUSEDOWN + NS, availableItemsSelector, proxy(that._mousedown, that)).on(TOUCHSTART + NS + ' ' + MOUSEENTER + NS + ' ' + MOUSELEAVE + NS + ' ' + MOUSEDOWN + NS + ' ' + CLICK + NS, linkSelector, proxy(that._toggleHover, that));\n element.on('keydown' + NS, proxy(that._keydown, that)).on('focus' + NS, proxy(that._focus, that)).on('focus' + NS, '.k-content', proxy(that._focus, that)).on('blur' + NS, proxy(that._removeHoverItem, that)).on('blur' + NS, '[tabindex]', proxy(that._checkActiveElement, that));\n if (overflowWrapper) {\n overflowWrapper.on(MOUSELEAVE + NS, popupSelector, proxy(that._mouseleavePopup, that)).on(MOUSEENTER + NS, popupSelector, proxy(that._mouseenterPopup, that));\n }\n if (options.openOnClick) {\n that._documentClickHandler = proxy(that._documentClick, that);\n $(document).click(that._documentClickHandler);\n }\n },\n _detachMenuEventsHandlers: function () {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n if (overflowWrapper) {\n overflowWrapper.off(NS);\n }\n that.element.off(NS);\n if (that._documentClickHandler) {\n $(document).unbind('click', that._documentClickHandler);\n }\n },\n _initOverflow: function (options) {\n var that = this;\n var isHorizontal = options.orientation == 'horizontal';\n var backwardBtn, forwardBtn;\n if (options.scrollable) {\n that._openedPopups = {};\n that._scrollWrapper = that.element.wrap('<div class=\\'k-menu-scroll-wrapper ' + options.orientation + '\\'></div>').parent();\n if (isHorizontal) {\n removeSpacesBetweenItems(that.element);\n }\n backwardBtn = $(that.templates.scrollButton({ direction: isHorizontal ? 'left' : 'up' }));\n forwardBtn = $(that.templates.scrollButton({ direction: isHorizontal ? 'right' : 'down' }));\n backwardBtn.add(forwardBtn).appendTo(that._scrollWrapper);\n that._initScrolling(that.element, backwardBtn, forwardBtn, isHorizontal);\n var initialWidth = that.element.outerWidth();\n var initialCssWidth = that.element[0].style.width;\n initialCssWidth = initialCssWidth === 'auto' ? '' : initialCssWidth;\n if (isHorizontal) {\n $(window).on(RESIZE, kendo.throttle(function () {\n that._setOverflowWrapperWidth(initialWidth, initialCssWidth);\n that._toggleScrollButtons(that.element, backwardBtn, forwardBtn, isHorizontal);\n }, 100));\n }\n that._setOverflowWrapperWidth(initialWidth, initialCssWidth);\n that._toggleScrollButtons(that.element, backwardBtn, forwardBtn, isHorizontal);\n }\n },\n _overflowWrapper: function () {\n return this._scrollWrapper || this._popupsWrapper;\n },\n _setOverflowWrapperWidth: function (initialWidth, initialCssWidth) {\n var that = this;\n var wrapperCssWidth = that._scrollWrapper.css('width');\n that._scrollWrapper.css({ width: '' });\n var wrapperWidth = that._scrollWrapper.outerWidth();\n that._scrollWrapper.css({ width: wrapperCssWidth });\n var menuWidth = that.element.outerWidth();\n var borders = that.element[0].offsetWidth - that.element[0].clientWidth;\n if (menuWidth != wrapperWidth && wrapperWidth > 0) {\n var width = initialCssWidth ? Math.min(initialWidth, wrapperWidth) : wrapperWidth;\n that.element.width(width - borders);\n that._scrollWrapper.width(width);\n }\n },\n _reinitOverflow: function (options) {\n var that = this;\n var overflowChanged = options.scrollable && !that.options.scrollable || !options.scrollable && that.options.scrollable || options.scrollable && that.options.scrollable && options.scrollable.distance != that.options.scrollable.distance || options.orientation != that.options.orientation;\n if (overflowChanged) {\n that._detachMenuEventsHandlers();\n that._destroyOverflow();\n that._initOverflow(options);\n that._attachMenuEventsHandlers();\n }\n },\n _destroyOverflow: function () {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n if (overflowWrapper) {\n overflowWrapper.off(NS);\n overflowWrapper.find(scrollButtonSelector).off(NS).remove();\n overflowWrapper.children(animationContainerSelector).each(function (i, popupWrapper) {\n var ul = $(popupWrapper).children(groupSelector);\n ul.off(MOUSEWHEEL);\n var popupParentLi = popupParentItem(ul, overflowWrapper);\n if (popupParentLi.length) {\n popupParentLi.append(popupWrapper);\n }\n });\n overflowWrapper.find(popupOpenerSelector()).removeAttr('data-groupparent');\n overflowWrapper.find(popupGroupSelector()).removeAttr('data-group');\n that.element.off(MOUSEWHEEL);\n $(window).off(RESIZE);\n overflowWrapper.contents().unwrap();\n that._scrollWrapper = that._popupsWrapper = that._openedPopups = undefined;\n }\n },\n _initScrolling: function (scrollElement, backwardBtn, forwardBtn, isHorizontal) {\n var that = this;\n var scrollable = that.options.scrollable;\n var distance = $.isNumeric(scrollable.distance) ? scrollable.distance : SCROLLSPEED;\n var mouseWheelDistance = distance / 2;\n var backward = '-=' + distance;\n var forward = '+=' + distance;\n var backwardDouble = '-=' + distance * 2;\n var forwardDouble = '+=' + distance * 2;\n var scrolling = false;\n var touchEvents = false;\n var scroll = function (value) {\n var scrollValue = isHorizontal ? { 'scrollLeft': value } : { 'scrollTop': value };\n scrollElement.finish().animate(scrollValue, 'fast', 'linear', function () {\n if (scrolling) {\n scroll(value);\n }\n });\n that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n };\n var mouseenterHandler = function (e) {\n if (!scrolling && !touchEvents) {\n scroll(e.data.direction);\n scrolling = true;\n }\n };\n var mousedownHandler = function (e) {\n var scrollValue = isHorizontal ? { 'scrollLeft': e.data.direction } : { 'scrollTop': e.data.direction };\n touchEvents = isTouch(e) || isPointerTouch(e);\n scrollElement.stop().animate(scrollValue, 'fast', 'linear', function () {\n if (!touchEvents) {\n $(e.currentTarget).trigger(MOUSEENTER);\n } else {\n that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n scrolling = true;\n }\n });\n scrolling = false;\n e.stopPropagation();\n e.preventDefault();\n };\n backwardBtn.on(MOUSEENTER + NS, { direction: backward }, mouseenterHandler).on(kendo.eventMap.down + NS, { direction: backwardDouble }, mousedownHandler);\n forwardBtn.on(MOUSEENTER + NS, { direction: forward }, mouseenterHandler).on(kendo.eventMap.down + NS, { direction: forwardDouble }, mousedownHandler);\n backwardBtn.add(forwardBtn).on(MOUSELEAVE + NS, function () {\n scrollElement.stop();\n scrolling = false;\n that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n });\n scrollElement.on(MOUSEWHEEL, function (e) {\n if (!e.ctrlKey && !e.shiftKey && !e.altKey) {\n var wheelDelta = mousewheelDelta(e.originalEvent);\n var scrollSpeed = Math.abs(wheelDelta) * mouseWheelDistance;\n var value = (wheelDelta > 0 ? '+=' : '-=') + scrollSpeed;\n var scrollValue = isHorizontal ? { 'scrollLeft': value } : { 'scrollTop': value };\n that._closeChildPopups(scrollElement);\n scrollElement.finish().animate(scrollValue, 'fast', 'linear', function () {\n that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n });\n e.preventDefault();\n }\n });\n },\n _toggleScrollButtons: function (scrollElement, backwardBtn, forwardBtn, horizontal) {\n var currentScroll = horizontal ? scrollElement.scrollLeft() : scrollElement.scrollTop();\n var scrollSize = horizontal ? SCROLLWIDTH : SCROLLHEIGHT;\n var offset = horizontal ? OFFSETWIDTH : OFFSETHEIGHT;\n backwardBtn.toggle(currentScroll !== 0);\n forwardBtn.toggle(currentScroll < scrollElement[0][scrollSize] - scrollElement[0][offset] - 1);\n },\n setOptions: function (options) {\n var animation = this.options.animation;\n this._animations(options);\n options.animation = extend(true, animation, options.animation);\n if ('dataSource' in options) {\n this._dataSource(options);\n }\n this._updateClasses();\n this._reinitOverflow(options);\n Widget.fn.setOptions.call(this, options);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that._detachMenuEventsHandlers();\n that._destroyOverflow();\n kendo.destroy(that.element);\n },\n enable: function (element, enable) {\n this._toggleDisabled(element, enable !== false);\n return this;\n },\n disable: function (element) {\n this._toggleDisabled(element, false);\n return this;\n },\n attemptGetItem: function (candidate) {\n candidate = candidate || this.element;\n var item = this.element.find(candidate);\n var overflowWrapper = this._overflowWrapper();\n if (item.length || candidate === this.element) {\n return item;\n } else if (overflowWrapper) {\n return overflowWrapper.find(candidate);\n } else {\n return $();\n }\n },\n append: function (item, referenceItem) {\n referenceItem = this.attemptGetItem(referenceItem);\n var inserted = this._insert(item, referenceItem, referenceItem.length ? referenceItem.find('> .k-menu-group, > .k-animation-container > .k-menu-group') : null);\n each(inserted.items, function (i) {\n inserted.group.append(this);\n updateArrow(this);\n storeItemSelectEventHandler(this, item[i] || item);\n });\n updateArrow(referenceItem);\n updateFirstLast(inserted.group.find('.k-first, .k-last').add(inserted.items));\n updateHasAriaPopup(getParentLiItems(inserted.group));\n return this;\n },\n insertBefore: function (item, referenceItem) {\n referenceItem = this.attemptGetItem(referenceItem);\n var inserted = this._insert(item, referenceItem, referenceItem.parent());\n each(inserted.items, function (i) {\n referenceItem.before(this);\n updateArrow(this);\n updateFirstLast(this);\n storeItemSelectEventHandler(this, item[i] || item);\n });\n updateFirstLast(referenceItem);\n return this;\n },\n insertAfter: function (item, referenceItem) {\n referenceItem = this.attemptGetItem(referenceItem);\n var inserted = this._insert(item, referenceItem, referenceItem.parent());\n each(inserted.items, function (i) {\n referenceItem.after(this);\n updateArrow(this);\n updateFirstLast(this);\n storeItemSelectEventHandler(this, item[i] || item);\n });\n updateFirstLast(referenceItem);\n return this;\n },\n _insert: function (item, referenceItem, parent) {\n var that = this, items, groups;\n if (!referenceItem || !referenceItem.length) {\n parent = that.element;\n }\n var plain = $.isPlainObject(item) || item instanceof kendo.data.ObservableObject, groupData = {\n firstLevel: parent.hasClass(MENU),\n horizontal: parent.hasClass(MENU + '-horizontal'),\n expanded: true,\n length: parent.children().length\n };\n if (referenceItem && !parent.length) {\n parent = $(that.renderGroup({\n group: groupData,\n options: that.options\n })).appendTo(referenceItem);\n }\n if (plain || isArray(item) || item instanceof kendo.data.ObservableArray) {\n items = $($.map(plain ? [item] : item, function (value, idx) {\n if (typeof value === 'string') {\n return $(value).get();\n } else {\n return $(that.renderItem({\n group: groupData,\n item: extend(value, { index: idx })\n })).get();\n }\n }));\n } else {\n if (typeof item == 'string' && item.charAt(0) != '<') {\n items = that.element.find(item);\n } else {\n items = $(item);\n }\n groups = items.find('> ul').addClass('k-menu-group').attr('role', 'menu');\n items = items.filter('li');\n items.add(groups.find('> li')).each(function () {\n updateItemClasses(this);\n });\n }\n return {\n items: items,\n group: parent\n };\n },\n remove: function (element) {\n element = this.attemptGetItem(element);\n var that = this, parent = element.parentsUntil(that.element, allItemsSelector), group = element.parent('ul:not(.k-menu)');\n element.remove();\n if (group && !group.children(allItemsSelector).length) {\n var parentItems = getParentLiItems(group);\n var container = group.parent(animationContainerSelector);\n if (container.length) {\n container.remove();\n } else {\n group.remove();\n }\n updateHasAriaPopup(parentItems);\n }\n if (parent.length) {\n parent = parent.eq(0);\n updateArrow(parent);\n updateFirstLast(parent);\n }\n return that;\n },\n _openAfterLoad: function (element, dataItem) {\n var that = this;\n if (dataItem.loaded()) {\n that.open(element);\n that._loading = false;\n } else {\n dataItem.one(CHANGE, function () {\n element.find(ICON_SELECTOR).removeClass('k-i-loading');\n if (that._loading) {\n that.open(element);\n that._loading = false;\n }\n });\n }\n },\n open: function (element) {\n var that = this;\n var options = that.options;\n var horizontal = options.orientation == 'horizontal';\n var direction = options.direction;\n var isRtl = kendo.support.isRtl(that.wrapper);\n var overflowWrapper = that._overflowWrapper();\n element = (overflowWrapper || that.element).find(element);\n var dataItem = that.dataSource && that.dataSource.getByUid(element.data(kendo.ns + 'uid'));\n if (dataItem && dataItem.hasChildren && !dataItem.loaded() && !that._loading) {\n that._loading = true;\n element.find(ICON_SELECTOR).addClass('k-i-loading');\n dataItem.load();\n that._openAfterLoad(element, dataItem);\n return;\n }\n if (/^(top|bottom|default)$/.test(direction)) {\n if (isRtl) {\n direction = horizontal ? (direction + ' left').replace('default', 'bottom') : 'left';\n } else {\n direction = horizontal ? (direction + ' right').replace('default', 'bottom') : 'right';\n }\n }\n var visiblePopups = '>.k-popup:visible,>.k-animation-container>.k-popup:visible';\n var closePopup = function () {\n var popup = $(this).data(KENDOPOPUP);\n if (popup) {\n that.close($(this).closest('li.k-item'), true);\n }\n };\n element.siblings().find(visiblePopups).each(closePopup);\n if (overflowWrapper) {\n element.find(visiblePopups).each(closePopup);\n }\n if (that.options.openOnClick) {\n that.clicked = true;\n }\n element.each(function () {\n var li = $(this);\n clearTimeout(li.data(TIMER));\n li.data(TIMER, setTimeout(function () {\n var ul = li.find('.k-menu-group:first:hidden');\n var popup;\n var overflowPopup;\n if (!ul[0] && overflowWrapper) {\n overflowPopup = that._getPopup(li);\n ul = overflowPopup && overflowPopup.element;\n }\n if (ul.is(':visible')) {\n return;\n }\n if (ul[0] && that._triggerEvent({\n item: li[0],\n type: OPEN\n }) === false) {\n if (!ul.find('.k-menu-group')[0] && ul.children('.k-item').length > 1) {\n var windowHeight = $(window).height(), setScrolling = function () {\n ul.css({\n maxHeight: windowHeight - (kendo._outerHeight(ul) - ul.height()) - kendo.getShadows(ul).bottom,\n overflow: 'auto'\n });\n };\n if (kendo.support.browser.msie && kendo.support.browser.version <= 7) {\n setTimeout(setScrolling, 0);\n } else {\n setScrolling();\n }\n } else {\n ul.css({\n maxHeight: '',\n overflow: ''\n });\n }\n li.data(ZINDEX, li.css(ZINDEX));\n var nextZindex = that.nextItemZIndex++;\n li.css(ZINDEX, nextZindex);\n if (that.options.scrollable) {\n li.parent().siblings(scrollButtonSelector).css({ zIndex: ++nextZindex });\n }\n popup = ul.data(KENDOPOPUP);\n var root = li.parent().hasClass(MENU), parentHorizontal = root && horizontal, directions = parseDirection(direction, root, isRtl), effects = options.animation.open.effects, openEffects = effects !== undefined ? effects : 'slideIn:' + getEffectDirection(direction, root);\n if (!popup) {\n popup = ul.kendoPopup({\n activate: function () {\n that._triggerEvent({\n item: this.wrapper.parent(),\n type: ACTIVATE\n });\n },\n deactivate: function (e) {\n that._closing = false;\n e.sender.element.removeData('targetTransform').css({ opacity: '' });\n that._triggerEvent({\n item: this.wrapper.parent(),\n type: DEACTIVATE\n });\n },\n origin: directions.origin,\n position: directions.position,\n collision: options.popupCollision !== undefined ? options.popupCollision : parentHorizontal ? 'fit' : 'fit flip',\n anchor: li,\n appendTo: overflowWrapper || li,\n animation: {\n open: extend(true, { effects: openEffects }, options.animation.open),\n close: options.animation.close\n },\n open: proxy(that._popupOpen, that),\n close: function (e) {\n that._closing = true;\n var li = e.sender.wrapper.parent();\n if (overflowWrapper) {\n var popupId = e.sender.element.data(POPUP_ID_ATTR);\n if (popupId) {\n li = (overflowWrapper || that.element).find(popupOpenerSelector(popupId));\n }\n e.sender.wrapper.children(scrollButtonSelector).hide();\n }\n if (!that._triggerEvent({\n item: li[0],\n type: CLOSE\n })) {\n li.css(ZINDEX, li.data(ZINDEX));\n li.removeData(ZINDEX);\n if (that.options.scrollable) {\n li.parent().siblings(scrollButtonSelector).css({ zIndex: '' });\n }\n if (touch || allPointers || kendo.support.mouseAndTouchPresent) {\n li.removeClass(HOVERSTATE);\n that._removeHoverItem();\n }\n } else {\n e.preventDefault();\n }\n }\n }).data(KENDOPOPUP);\n } else {\n popup = ul.data(KENDOPOPUP);\n popup.options.origin = directions.origin;\n popup.options.position = directions.position;\n popup.options.animation.open.effects = openEffects;\n }\n ul.removeAttr('aria-hidden');\n that._configurePopupOverflow(popup, li);\n popup._hovered = true;\n popup.open();\n that._initPopupScrolling(popup);\n }\n }, that.options.hoverDelay));\n });\n return that;\n },\n _configurePopupOverflow: function (popup, popupOpener) {\n var that = this;\n if (that.options.scrollable) {\n that._wrapPopupElement(popup);\n if (!popupOpener.attr('data-groupparent')) {\n var groupId = new Date().getTime();\n popupOpener.attr('data-groupparent', groupId);\n popup.element.attr('data-group', groupId);\n }\n }\n },\n _wrapPopupElement: function (popup) {\n if (!popup.element.parent().is(animationContainerSelector)) {\n popup.wrapper = kendo.wrap(popup.element, popup.options.autosize).css({\n overflow: 'hidden',\n display: 'block',\n position: 'absolute'\n });\n }\n },\n _initPopupScrolling: function (popup, isHorizontal, skipMouseEvents) {\n var that = this;\n if (that.options.scrollable && popup.element[0].scrollHeight > popup.element[0].offsetHeight) {\n that._initPopupScrollButtons(popup, isHorizontal, skipMouseEvents);\n }\n },\n _initPopupScrollButtons: function (popup, isHorizontal, skipMouseEvents) {\n var that = this;\n var scrollButtons = popup.wrapper.children(scrollButtonSelector);\n var animation = that.options.animation;\n var timeout = (animation && animation.open && animation.open.duration || 0) + DELAY;\n setTimeout(function () {\n if (!scrollButtons.length) {\n var backwardBtn = $(that.templates.scrollButton({ direction: isHorizontal ? 'left' : 'up' }));\n var forwardBtn = $(that.templates.scrollButton({ direction: isHorizontal ? 'right' : 'down' }));\n scrollButtons = backwardBtn.add(forwardBtn).appendTo(popup.wrapper);\n that._initScrolling(popup.element, backwardBtn, forwardBtn, isHorizontal);\n if (!skipMouseEvents) {\n scrollButtons.on(MOUSEENTER + NS, function () {\n var overflowWrapper = that._overflowWrapper();\n $(getChildPopups(popup.element, overflowWrapper)).each(function (i, p) {\n var popupOpener = overflowWrapper.find(popupOpenerSelector(p.data(POPUP_ID_ATTR)));\n that.close(popupOpener);\n });\n }).on(MOUSELEAVE + NS, function () {\n setTimeout(function () {\n if ($.isEmptyObject(that._openedPopups)) {\n that._closeParentPopups(popup.element);\n }\n }, DELAY);\n });\n }\n }\n that._toggleScrollButtons(popup.element, scrollButtons.first(), scrollButtons.last(), isHorizontal);\n }, timeout);\n },\n _popupOpen: function (e) {\n if (!this._keyTriggered) {\n e.sender.element.children('.' + FOCUSEDSTATE).removeClass(FOCUSEDSTATE);\n }\n if (this.options.scrollable) {\n this._setPopupHeight(e.sender);\n }\n },\n _setPopupHeight: function (popup, isFixed) {\n var popupElement = popup.element;\n var popups = popupElement.add(popupElement.parent(animationContainerSelector));\n popups.height(popupElement.hasClass(MENU) && this._initialHeight || '');\n var location = popup._location(isFixed);\n var windowHeight = $(window).height();\n var popupOuterHeight = location.height;\n var popupOffsetTop = isFixed ? 0 : Math.max(location.top, 0);\n var scrollTop = isFixed ? 0 : parentsScroll(this._overflowWrapper()[0], 'scrollTop');\n var bottomScrollbar = window.innerHeight - windowHeight;\n var maxHeight = windowHeight - kendo.getShadows(popupElement).bottom + bottomScrollbar;\n var canFit = maxHeight + scrollTop > popupOuterHeight + popupOffsetTop;\n if (!canFit) {\n var height = Math.min(maxHeight, maxHeight - popupOffsetTop + scrollTop);\n popups.css({\n overflow: 'hidden',\n height: height + 'px'\n });\n }\n },\n close: function (items, dontClearClose) {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n var element = overflowWrapper || that.element;\n items = element.find(items);\n if (!items.length) {\n items = element.find('>.k-item');\n }\n var hasChildPopupsHovered = function (currentPopup) {\n var result = false;\n if ($.isEmptyObject(that._openedPopups)) {\n return result;\n }\n $(getChildPopups(currentPopup, overflowWrapper)).each(function (i, popup) {\n result = !!that._openedPopups[popup.data(POPUP_ID_ATTR).toString()];\n return !result;\n });\n return result;\n };\n var isPopupMouseLeaved = function (opener) {\n var groupId = opener.data(POPUP_OPENER_ATTR);\n return !overflowWrapper || !groupId || !that._openedPopups[groupId.toString()];\n };\n items.each(function () {\n var li = $(this);\n if (!dontClearClose && that._isRootItem(li)) {\n that.clicked = false;\n }\n clearTimeout(li.data(TIMER));\n li.data(TIMER, setTimeout(function () {\n var popup = that._getPopup(li);\n if (popup && (isPopupMouseLeaved(li) || that._forceClose)) {\n if (!that._forceClose && hasChildPopupsHovered(popup.element)) {\n return;\n }\n popup.close();\n popup.element.attr('aria-hidden', true);\n if (overflowWrapper) {\n if (that._forceClose && items.last().is(li[0])) {\n delete that._forceClose;\n }\n }\n }\n }, that.options.hoverDelay));\n });\n return that;\n },\n _getPopup: function (li) {\n var that = this;\n var popup = li.find('.k-menu-group:not(.k-list-container):not(.k-calendar-container):first:visible').data(KENDOPOPUP);\n var overflowWrapper = that._overflowWrapper();\n if (!popup && overflowWrapper) {\n var groupId = li.data(POPUP_OPENER_ATTR);\n if (groupId) {\n var popupElement = overflowWrapper.find(popupGroupSelector(groupId));\n popup = popupElement.data(KENDOPOPUP);\n }\n }\n return popup;\n },\n _toggleDisabled: function (items, enable) {\n this.element.find(items).each(function () {\n $(this).toggleClass(DEFAULTSTATE, enable).toggleClass(DISABLEDSTATE, !enable).attr('aria-disabled', !enable);\n });\n },\n _toggleHover: function (e) {\n var target = $(kendo.eventTarget(e) || e.target).closest(allItemsSelector), isEnter = e.type == MOUSEENTER || MOUSEDOWN.indexOf(e.type) !== -1;\n target.siblings().removeClass(HOVERSTATE);\n if (!target.parents('li.' + DISABLEDSTATE).length) {\n target.toggleClass(HOVERSTATE, isEnter || e.type == 'mousedown' || e.type == 'pointerover' || e.type == TOUCHSTART);\n }\n this._removeHoverItem();\n },\n _preventClose: function () {\n if (!this.options.closeOnClick) {\n this._closurePrevented = true;\n }\n },\n _checkActiveElement: function (e) {\n var that = this, hoverItem = $(e ? e.currentTarget : this._hoverItem()), target = that._findRootParent(hoverItem)[0];\n if (!this._closurePrevented) {\n setTimeout(function () {\n if (!document.hasFocus() || !contains(target, kendo._activeElement()) && e && !contains(target, e.currentTarget)) {\n that.close(target);\n }\n }, 0);\n }\n this._closurePrevented = false;\n },\n _removeHoverItem: function () {\n var oldHoverItem = this._hoverItem();\n if (oldHoverItem && oldHoverItem.hasClass(FOCUSEDSTATE)) {\n oldHoverItem.removeClass(FOCUSEDSTATE);\n this._oldHoverItem = null;\n }\n },\n _updateClasses: function () {\n var element = this.element, nonContentGroupsSelector = '.k-menu-init div ul', items;\n element.removeClass('k-menu-horizontal k-menu-vertical');\n element.addClass('k-widget k-reset k-header k-menu-init ' + MENU).addClass(MENU + '-' + this.options.orientation);\n element.find('li > ul').filter(function () {\n return !kendo.support.matchesSelector.call(this, nonContentGroupsSelector);\n }).addClass('k-group k-menu-group').attr('role', 'menu').attr('aria-hidden', element.is(':visible')).parent('li').attr('aria-haspopup', 'true').end().find('li > div').addClass('k-content').attr('tabindex', '-1');\n items = element.find('> li,.k-menu-group > li');\n element.removeClass('k-menu-init');\n items.each(function () {\n updateItemClasses(this);\n });\n },\n _mouseenter: function (e) {\n var that = this;\n var element = $(e.currentTarget);\n var hasChildren = that._itemHasChildren(element);\n var popupId = element.data(POPUP_OPENER_ATTR) || element.parent().data(POPUP_ID_ATTR);\n var pointerTouch = isPointerTouch(e);\n if (popupId) {\n that._openedPopups[popupId.toString()] = true;\n }\n if (that._closing || e.delegateTarget != element.parents(menuSelector)[0] && e.delegateTarget != element.parents('.k-menu-scroll-wrapper,.k-popups-wrapper')[0]) {\n return;\n }\n that._keyTriggered = false;\n if (that.options.openOnClick.rootMenuItems && that._isRootItem(element.closest(allItemsSelector)) || that.options.openOnClick.subMenuItems && !that._isRootItem(element.closest(allItemsSelector))) {\n return;\n }\n if ((that.options.openOnClick === false || that.options.openOnClick.rootMenuItems === false && that._isRootItem(element.closest(allItemsSelector)) || that.options.openOnClick.subMenuItems === false && !that._isRootItem(element.closest(allItemsSelector)) || that.clicked) && !touch && !(pointerTouch && that._isRootItem(element.closest(allItemsSelector)))) {\n if (!contains(e.currentTarget, e.relatedTarget) && hasChildren) {\n that.open(element);\n }\n }\n if (that.options.openOnClick === true && that.clicked || touch) {\n element.siblings().each(proxy(function (_, sibling) {\n that.close(sibling, true);\n }, that));\n }\n },\n _mousedown: function (e) {\n var that = this;\n var element = $(e.currentTarget);\n if (that.options.openOnClick.subMenuItems && !that._isRootItem(element) || touch) {\n element.siblings().each(proxy(function (_, sibling) {\n that.close(sibling, true);\n }, that));\n }\n },\n _mouseleave: function (e) {\n var that = this;\n var element = $(e.currentTarget);\n var popupOpener = element.data(POPUP_OPENER_ATTR);\n var hasChildren = element.children(animationContainerSelector).length || element.children(groupSelector).length || popupOpener;\n var $window = $(window);\n if (popupOpener) {\n delete that._openedPopups[popupOpener.toString()];\n }\n if (element.parentsUntil(animationContainerSelector, '.k-list-container,.k-calendar-container')[0]) {\n e.stopImmediatePropagation();\n return;\n }\n if ((that.options.openOnClick === false || !that.options.openOnClick.rootMenuItems && that._isRootItem(element) || !that.options.openOnClick.subMenuItems && !that._isRootItem(element)) && !touch && !isPointerTouch(e) && !contains(e.currentTarget, e.relatedTarget || e.target) && hasChildren && !contains(e.currentTarget, kendo._activeElement())) {\n that.close(element, true);\n that._loading = false;\n return;\n }\n if (kendo.support.browser.msie && !e.toElement && !e.relatedTarget && !isPointerTouch(e) || e.clientX < 0 || e.clientY < 0 || e.clientY > $window.height() || e.clientX > $window.width()) {\n that.close(element);\n }\n },\n _mouseenterPopup: function (e) {\n var that = this;\n var popupElement = $(e.currentTarget);\n if (popupElement.parent().is(animationContainerSelector)) {\n return;\n }\n popupElement = popupElement.children('ul');\n var popupId = popupElement.data(POPUP_ID_ATTR);\n if (popupId) {\n that._openedPopups[popupId.toString()] = true;\n }\n },\n _mouseleavePopup: function (e) {\n var that = this;\n var popupElement = $(e.currentTarget);\n if (!isPointerTouch(e) && popupElement.is(animationContainerSelector)) {\n that._closePopups(popupElement.children('ul'));\n }\n },\n _closePopups: function (rootPopup) {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n var popupId = rootPopup.data(POPUP_ID_ATTR);\n if (popupId) {\n delete that._openedPopups[popupId.toString()];\n var groupParent = overflowWrapper.find(popupOpenerSelector(popupId));\n setTimeout(function () {\n if (that.options.openOnClick) {\n that._closeChildPopups(rootPopup);\n } else {\n if ($.isEmptyObject(that._openedPopups)) {\n var innerPopup = that._innerPopup(rootPopup);\n that._closeParentPopups(innerPopup);\n } else {\n that.close(groupParent, true);\n }\n }\n }, 0);\n }\n },\n _closeChildPopups: function (current) {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n $(getChildPopups(current, overflowWrapper)).each(function () {\n var popupOpener = overflowWrapper.find(popupOpenerSelector(this.data(POPUP_ID_ATTR)));\n that.close(popupOpener, true);\n });\n },\n _innerPopup: function (current) {\n var overflowWrapper = this._overflowWrapper();\n var popups = getChildPopups(current, overflowWrapper);\n return popups[popups.length - 1] || current;\n },\n _closeParentPopups: function (current) {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n var popupId = current.data(POPUP_ID_ATTR);\n var popupOpener = overflowWrapper.find(popupOpenerSelector(popupId));\n popupId = popupOpener.parent().data(POPUP_ID_ATTR);\n that.close(popupOpener, true);\n while (popupId && !that._openedPopups[popupId]) {\n if (popupOpener.parent().is(menuSelector)) {\n break;\n }\n popupOpener = overflowWrapper.find(popupOpenerSelector(popupId));\n that.close(popupOpener, true);\n popupId = popupOpener.parent().data(POPUP_ID_ATTR);\n }\n },\n _click: function (e) {\n var that = this, openHandle, options = that.options, target = $(kendo.eventTarget(e)), targetElement = target[0], nodeName = target[0] ? target[0].nodeName.toUpperCase() : '', formNode = nodeName == 'INPUT' || nodeName == 'SELECT' || nodeName == 'BUTTON' || nodeName == 'LABEL', link = target.closest(LINK_SELECTOR), element = target.closest(allItemsSelector), itemElement = element[0], href = link.attr('href'), childGroup, childGroupVisible, targetHref = target.attr('href'), sampleHref = $('<a href=\\'#\\' />').attr('href'), isLink = !!href && href !== sampleHref, isLocalLink = isLink && !!href.match(/^#/), isTargetLink = !!targetHref && targetHref !== sampleHref, overflowWrapper = that._overflowWrapper(), shouldCloseTheRootItem;\n while (targetElement && targetElement.parentNode != itemElement) {\n targetElement = targetElement.parentNode;\n }\n if ($(targetElement).is(templateSelector)) {\n return;\n }\n if (element.hasClass(DISABLEDSTATE)) {\n e.preventDefault();\n return;\n }\n if (!e.handled && that._triggerSelect(target, itemElement) && !formNode) {\n e.preventDefault();\n }\n e.handled = true;\n childGroup = element.children(popupSelector);\n if (overflowWrapper) {\n var childPopupId = element.data(POPUP_OPENER_ATTR);\n if (childPopupId) {\n childGroup = overflowWrapper.find(popupGroupSelector(childPopupId));\n }\n }\n childGroupVisible = childGroup.is(':visible');\n shouldCloseTheRootItem = options.openOnClick && childGroupVisible && that._isRootItem(element);\n if (options.closeOnClick && (!isLink || isLocalLink) && (!childGroup.length || shouldCloseTheRootItem)) {\n element.removeClass(HOVERSTATE).css('height');\n that._oldHoverItem = that._findRootParent(element);\n var item = that._parentsUntil(link, that.element, allItemsSelector);\n that._forceClose = !!overflowWrapper;\n that.close(item);\n that.clicked = false;\n if ('MSPointerUp'.indexOf(e.type) != -1) {\n e.preventDefault();\n }\n return;\n }\n if (isLink && e.enterKey) {\n link[0].click();\n }\n if ((!that._isRootItem(element) || options.openOnClick === false) && !options.openOnClick.subMenuItems && !kendo.support.touch && !(isPointerTouch(e) && that._isRootItem(element.closest(allItemsSelector)))) {\n return;\n }\n if (!isLink && !formNode && !isTargetLink) {\n e.preventDefault();\n }\n that.clicked = true;\n openHandle = childGroup.is(':visible') ? CLOSE : OPEN;\n if (!options.closeOnClick && openHandle == CLOSE) {\n return;\n }\n that[openHandle](element);\n },\n _parentsUntil: function (context, top, selector) {\n var overflowWrapper = this._overflowWrapper();\n if (!overflowWrapper) {\n return context.parentsUntil(top, selector);\n } else {\n var parents = overflowMenuParents(context, overflowWrapper);\n var result = [];\n $(parents).each(function () {\n var parent = $(this);\n if (parent.is(top)) {\n return false;\n }\n if (parent.is(selector)) {\n result.push(this);\n }\n });\n return $(result);\n }\n },\n _triggerSelect: function (target, itemElement) {\n target = target.is('.k-link') ? target : target.closest('.k-link');\n var selectHandler = target.data('selectHandler'), itemSelectEventData;\n if (selectHandler) {\n itemSelectEventData = this._getEventData(target);\n selectHandler.call(this, itemSelectEventData);\n }\n var isSelectItemDefaultPrevented = itemSelectEventData && itemSelectEventData.isDefaultPrevented();\n var isSelectDefaultPrevented = this._triggerEvent({\n item: itemElement,\n type: SELECT\n });\n return isSelectItemDefaultPrevented || isSelectDefaultPrevented;\n },\n _getEventData: function (target) {\n var eventData = {\n sender: this,\n target: target,\n _defaultPrevented: false,\n preventDefault: function () {\n this._defaultPrevented = true;\n },\n isDefaultPrevented: function () {\n return this._defaultPrevented;\n }\n };\n return eventData;\n },\n _documentClick: function (e) {\n var that = this;\n if (contains((that._overflowWrapper() || that.element)[0], e.target)) {\n return;\n }\n that.clicked = false;\n },\n _focus: function (e) {\n var that = this, target = e.target, hoverItem = that._hoverItem(), active = activeElement();\n if (target != that.wrapper[0] && !$(target).is(':kendoFocusable')) {\n e.stopPropagation();\n $(target).closest('.k-content').closest('.k-menu-group').closest('.k-item').addClass(FOCUSEDSTATE);\n that.wrapper.focus();\n return;\n }\n if (active === e.currentTarget) {\n if (hoverItem.length) {\n that._moveHover([], hoverItem);\n } else if (!that._oldHoverItem) {\n that._moveHover([], that.wrapper.children().first());\n }\n }\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode, hoverItem = that._oldHoverItem, target, belongsToVertical, hasChildren, isRtl = kendo.support.isRtl(that.wrapper);\n if (e.target != e.currentTarget && key != keys.ESC) {\n return;\n }\n if (!hoverItem) {\n hoverItem = that._oldHoverItem = that._hoverItem();\n }\n belongsToVertical = that._itemBelongsToVertival(hoverItem);\n hasChildren = that._itemHasChildren(hoverItem);\n that._keyTriggered = true;\n if (key == keys.RIGHT) {\n target = that[isRtl ? '_itemLeft' : '_itemRight'](hoverItem, belongsToVertical, hasChildren);\n } else if (key == keys.LEFT) {\n target = that[isRtl ? '_itemRight' : '_itemLeft'](hoverItem, belongsToVertical, hasChildren);\n } else if (key == keys.DOWN) {\n target = that._itemDown(hoverItem, belongsToVertical, hasChildren);\n } else if (key == keys.UP) {\n target = that._itemUp(hoverItem, belongsToVertical, hasChildren);\n } else if (key == keys.HOME) {\n that._moveHover(hoverItem, hoverItem.parent().children().first());\n e.preventDefault();\n } else if (key == keys.END) {\n that._moveHover(hoverItem, hoverItem.parent().children().last());\n e.preventDefault();\n } else if (key == keys.ESC) {\n target = that._itemEsc(hoverItem, belongsToVertical);\n } else if (key == keys.ENTER || key == keys.SPACEBAR) {\n target = hoverItem.children('.k-link');\n if (target.length > 0) {\n that._click({\n target: target[0],\n preventDefault: function () {\n },\n enterKey: true\n });\n if (hasChildren && !hoverItem.hasClass(DISABLEDSTATE)) {\n that.open(hoverItem);\n that._moveHover(hoverItem, that._childPopupElement(hoverItem).children().first());\n } else {\n that._moveHover(hoverItem, that._findRootParent(hoverItem));\n }\n }\n } else if (key == keys.TAB) {\n target = that._findRootParent(hoverItem);\n that._moveHover(hoverItem, target);\n that._checkActiveElement();\n return;\n }\n if (target && target[0]) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n _hoverItem: function () {\n return this.wrapper.find('.k-item.k-state-hover,.k-item.k-state-focused').filter(':visible');\n },\n _itemBelongsToVertival: function (item) {\n var menuIsVertical = this.wrapper.hasClass('k-menu-vertical');\n if (!item.length) {\n return menuIsVertical;\n }\n return item.parent().hasClass('k-menu-group') || menuIsVertical;\n },\n _itemHasChildren: function (item) {\n if (!item || !item.length || !item[0].nodeType) {\n return false;\n }\n return item.children('.k-menu-group, div.k-animation-container').length > 0 || !!item.data(POPUP_OPENER_ATTR) && !!this._overflowWrapper().children(popupGroupSelector(item.data(POPUP_OPENER_ATTR)));\n },\n _moveHover: function (item, nextItem) {\n var that = this, id = that._ariaId;\n if (item.length && nextItem.length) {\n item.removeClass(FOCUSEDSTATE);\n }\n if (nextItem.length) {\n if (nextItem[0].id) {\n id = nextItem[0].id;\n }\n nextItem.addClass(FOCUSEDSTATE);\n that._oldHoverItem = nextItem;\n if (id) {\n that.element.removeAttr('aria-activedescendant');\n $('#' + id).removeAttr('id');\n nextItem.attr('id', id);\n that.element.attr('aria-activedescendant', id);\n }\n that._scrollToItem(nextItem);\n }\n },\n _findRootParent: function (item) {\n if (this._isRootItem(item)) {\n return item;\n } else {\n return this._parentsUntil(item, menuSelector, 'li.k-item').last();\n }\n },\n _isRootItem: function (item) {\n return item.parent().hasClass(MENU);\n },\n _itemRight: function (item, belongsToVertical, hasChildren) {\n var that = this, nextItem, parentItem, overflowWrapper;\n if (!belongsToVertical) {\n nextItem = item.nextAll(nextSelector);\n if (!nextItem.length) {\n nextItem = item.prevAll(lastSelector);\n }\n that.close(item);\n } else if (hasChildren && !item.hasClass(DISABLEDSTATE)) {\n that.open(item);\n nextItem = that._childPopupElement(item).children().first();\n } else if (that.options.orientation == 'horizontal') {\n parentItem = that._findRootParent(item);\n overflowWrapper = that._overflowWrapper();\n if (overflowWrapper) {\n var rootPopup = itemPopup(parentItem, overflowWrapper);\n that._closeChildPopups(rootPopup);\n }\n that.close(parentItem);\n nextItem = parentItem.nextAll(nextSelector);\n }\n if (nextItem && !nextItem.length) {\n nextItem = that.wrapper.children('.k-item').first();\n } else if (!nextItem) {\n nextItem = [];\n }\n that._moveHover(item, nextItem);\n return nextItem;\n },\n _itemLeft: function (item, belongsToVertical) {\n var that = this, nextItem, overflowWrapper;\n if (!belongsToVertical) {\n nextItem = item.prevAll(nextSelector);\n if (!nextItem.length) {\n nextItem = item.nextAll(lastSelector);\n }\n that.close(item);\n } else {\n nextItem = item.parent().closest('.k-item');\n overflowWrapper = that._overflowWrapper();\n if (!nextItem.length && overflowWrapper) {\n nextItem = popupParentItem(item.parent(), overflowWrapper);\n }\n that.close(nextItem);\n if (that._isRootItem(nextItem) && that.options.orientation == 'horizontal') {\n nextItem = nextItem.prevAll(nextSelector);\n }\n }\n if (!nextItem.length) {\n nextItem = that.wrapper.children('.k-item').last();\n }\n that._moveHover(item, nextItem);\n return nextItem;\n },\n _itemDown: function (item, belongsToVertical, hasChildren) {\n var that = this, nextItem;\n if (!belongsToVertical) {\n if (!hasChildren || item.hasClass(DISABLEDSTATE)) {\n return;\n } else {\n that.open(item);\n nextItem = that._childPopupElement(item).children().first();\n }\n } else {\n nextItem = item.nextAll(nextSelector);\n }\n if (!nextItem.length && item.length) {\n nextItem = item.parent().children().first();\n } else if (!item.length) {\n nextItem = that.wrapper.children('.k-item').first();\n }\n that._moveHover(item, nextItem);\n return nextItem;\n },\n _itemUp: function (item, belongsToVertical) {\n var that = this, nextItem;\n if (!belongsToVertical) {\n return;\n } else {\n nextItem = item.prevAll(nextSelector);\n }\n if (!nextItem.length && item.length) {\n nextItem = item.parent().children().last();\n } else if (!item.length) {\n nextItem = that.wrapper.children('.k-item').last();\n }\n that._moveHover(item, nextItem);\n return nextItem;\n },\n _scrollToItem: function (item) {\n var that = this;\n if (that.options.scrollable && item && item.length) {\n var ul = item.parent();\n var isHorizontal = ul.hasClass(MENU) ? that.options.orientation == 'horizontal' : false;\n var scrollDir = isHorizontal ? 'scrollLeft' : 'scrollTop';\n var getSize = isHorizontal ? kendo._outerWidth : kendo._outerHeight;\n var currentScrollOffset = ul[scrollDir]();\n var itemSize = getSize(item);\n var itemOffset = item[0][isHorizontal ? 'offsetLeft' : 'offsetTop'];\n var ulSize = getSize(ul);\n var scrollButtons = ul.siblings(scrollButtonSelector);\n var scrollButtonSize = scrollButtons.length ? getSize(scrollButtons.first()) : 0;\n var itemPosition;\n if (currentScrollOffset + ulSize < itemOffset + itemSize + scrollButtonSize) {\n itemPosition = itemOffset + itemSize - ulSize + scrollButtonSize;\n } else if (currentScrollOffset > itemOffset - scrollButtonSize) {\n itemPosition = itemOffset - scrollButtonSize;\n }\n if (!isNaN(itemPosition)) {\n var scrolling = {};\n scrolling[scrollDir] = itemPosition;\n ul.finish().animate(scrolling, 'fast', 'linear', function () {\n that._toggleScrollButtons(ul, scrollButtons.first(), scrollButtons.last(), isHorizontal);\n });\n }\n }\n },\n _itemEsc: function (item, belongsToVertical) {\n var that = this, nextItem;\n if (!belongsToVertical) {\n return item;\n } else {\n nextItem = item.parent().closest('.k-item');\n that.close(nextItem);\n that._moveHover(item, nextItem);\n }\n return nextItem;\n },\n _childPopupElement: function (item) {\n var popupElement = item.find('.k-menu-group');\n var wrapper = this._overflowWrapper();\n if (!popupElement.length && wrapper) {\n popupElement = itemPopup(item, wrapper);\n }\n return popupElement;\n },\n _triggerEvent: function (e) {\n var that = this;\n return that.trigger(e.type, {\n type: e.type,\n item: e.item\n });\n },\n _focusHandler: function (e) {\n var that = this, item = $(kendo.eventTarget(e)).closest(allItemsSelector);\n if (item.hasClass(DISABLEDSTATE)) {\n return;\n }\n setTimeout(function () {\n that._moveHover([], item);\n if (item.children('.k-content')[0]) {\n item.parent().closest('.k-item').removeClass(FOCUSEDSTATE);\n }\n }, 200);\n },\n _animations: function (options) {\n if (options && 'animation' in options && !options.animation) {\n options.animation = {\n open: { effects: {} },\n close: {\n hide: true,\n effects: {}\n }\n };\n }\n },\n _dataSource: function (options) {\n var that = this, dataSource = options ? options.dataSource : that.options.dataSource;\n if (!dataSource) {\n return;\n }\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n that._unbindDataSource();\n if (!dataSource.fields) {\n dataSource.fields = [\n { field: 'uid' },\n { field: 'text' },\n { field: 'url' },\n { field: 'cssClass' },\n { field: 'spriteCssClass' },\n { field: 'imageUrl' },\n { field: 'imageAttr' },\n { field: 'attr' },\n { field: 'contentAttr' },\n { field: 'content' },\n { field: 'encoded' },\n { field: 'items' },\n { field: 'select' }\n ];\n }\n that.dataSource = HierarchicalDataSource.create(dataSource);\n that._bindDataSource();\n that.dataSource.fetch();\n },\n _bindDataSource: function () {\n this._refreshHandler = proxy(this.refresh, this);\n this._errorHandler = proxy(this._error, this);\n this.dataSource.bind(CHANGE, this._refreshHandler);\n this.dataSource.bind(ERROR, this._errorHandler);\n },\n _unbindDataSource: function () {\n var dataSource = this.dataSource;\n if (dataSource) {\n dataSource.unbind(CHANGE, this._refreshHandler);\n dataSource.unbind(ERROR, this._errorHandler);\n }\n },\n _error: function () {\n },\n findByUid: function (uid) {\n var wrapperElement = this._overflowWrapper() || this.element;\n return wrapperElement.find('[' + kendo.attr('uid') + '=' + uid + ']');\n },\n refresh: function (ev) {\n var that = this;\n var node = ev.node;\n var action = ev.action;\n var parentElement = node ? that.findByUid(node.uid) : that.element;\n var itemsToUpdate = ev.items;\n var index = ev.index;\n var updateProxy = $.proxy(that._updateItem, that);\n var removeProxy = $.proxy(that._removeItem, that);\n if (action == 'add') {\n that._appendItems(itemsToUpdate, index, parentElement);\n } else if (action == 'remove') {\n itemsToUpdate.forEach(removeProxy);\n } else if (action == 'itemchange') {\n itemsToUpdate.forEach(updateProxy);\n } else if (action === 'itemloaded') {\n that.append(ev.items, parentElement);\n } else {\n this._initData();\n }\n this.trigger(DATABOUND, {\n item: parentElement,\n dataItem: node\n });\n },\n _appendItems: function (items, index, parent) {\n var that = this;\n var referenceItem = parent.find(itemSelector).eq(index);\n if (referenceItem.length) {\n that.insertBefore(items, referenceItem);\n } else {\n that.append(items, parent);\n }\n },\n _removeItem: function (item) {\n var that = this;\n var element = that.findByUid(item.uid);\n that.remove(element);\n },\n _updateItem: function (item) {\n var that = this;\n var element = that.findByUid(item.uid);\n var nextElement = element.next();\n var parentNode = item.parentNode();\n that.remove(element);\n if (nextElement.length) {\n that.insertBefore(item, nextElement);\n } else {\n that.append(item, parentNode && that.findByUid(parentNode.uid));\n }\n },\n _accessors: function () {\n var that = this, options = that.options, i, field, textField, element = that.element;\n for (i in bindings) {\n field = options[bindings[i]];\n textField = element.attr(kendo.attr(i + '-field'));\n if (!field && textField) {\n field = textField;\n }\n if (!field) {\n field = i;\n }\n if (!isArray(field)) {\n field = [field];\n }\n options[bindings[i]] = field;\n }\n },\n _fieldAccessor: function (fieldName) {\n var fieldBindings = this.options[bindings[fieldName]] || [], count = fieldBindings.length, result = '(function(item) {';\n if (count === 0) {\n result += 'return item[\\'' + fieldName + '\\'];';\n } else {\n result += 'var levels = [' + $.map(fieldBindings, function (x) {\n return 'function(d){ return ' + kendo.expr(x) + '}';\n }).join(',') + '];';\n result += 'if(item.level){return levels[Math.min(item.level(), ' + count + '-1)](item);}else';\n result += '{return levels[' + count + '-1](item)}';\n }\n result += '})';\n return result;\n },\n _templates: function () {\n var that = this, options = that.options, fieldAccessor = proxy(that._fieldAccessor, that);\n if (options.template && typeof options.template == STRING) {\n options.template = template(options.template);\n } else if (!options.template) {\n options.template = template('# var text = ' + fieldAccessor('text') + '(data.item); #' + '# if (typeof data.item.encoded != \\'undefined\\' && data.item.encoded === false) {#' + '#= text #' + '# } else { #' + '#: text #' + '# } #');\n }\n that.templates = {\n content: template('#var contentHtml = ' + fieldAccessor('content') + '(item);#' + '<div #= contentCssAttributes(item.toJSON ? item.toJSON() : item) # tabindex=\\'-1\\'>#= contentHtml || \\'\\' #</div>'),\n group: template('<ul class=\\'#= groupCssClass(group) #\\'#= groupAttributes(group) # role=\\'menu\\' aria-hidden=\\'true\\'>' + '#= renderItems(data) #' + '</ul>'),\n itemWrapper: template('# var url = ' + fieldAccessor('url') + '(item); #' + '# var imageUrl = ' + fieldAccessor('imageUrl') + '(item); #' + '# var imgAttributes = ' + fieldAccessor('imageAttr') + '(item);#' + '# var tag = url ? \\'a\\' : \\'span\\' #' + '<#= tag # class=\\'#= textClass(item) #\\' #if(url){#href=\\'#= url #\\'#}#>' + '# if (imageUrl) { #' + '<img #= imageCssAttributes(imgAttributes) # alt=\\'\\' src=\\'#= imageUrl #\\' />' + '# } #' + '#= sprite(item) ##= data.menu.options.template(data) #' + '#= arrow(data) #' + '</#= tag #>'),\n item: template('#var contentHtml = ' + fieldAccessor('content') + '(item);#' + '<li class=\\'#= wrapperCssClass(group, item) #\\' #= itemCssAttributes(item.toJSON ? item.toJSON() : item) # role=\\'menuitem\\' #=item.items ? \"aria-haspopup=\\'true\\'\": \"\"#' + '#=item.enabled === false ? \"aria-disabled=\\'true\\'\" : \\'\\'#' + kendo.attr('uid') + '=\\'#= item.uid #\\' >' + '#= itemWrapper(data) #' + '#if (item.hasChildren || item.items) { #' + '#= subGroup({ items: item.items, menu: menu, group: { expanded: item.expanded } }) #' + '# } else if (item.content || item.contentUrl || contentHtml) { #' + '#= renderContent(data) #' + '# } #' + '</li>'),\n scrollButton: template('<span class=\\'k-button k-button-icon k-menu-scroll-button k-scroll-#= direction #\\' unselectable=\\'on\\'>' + '<span class=\\'k-icon k-i-arrow-60-#= direction #\\'></span></span>'),\n arrow: template('<span class=\\'#= arrowClass(item, group) #\\'></span>'),\n sprite: template('# var spriteCssClass = ' + fieldAccessor('spriteCssClass') + '(data); if(spriteCssClass) {#<span class=\\'k-sprite #= spriteCssClass #\\'></span>#}#'),\n empty: template('')\n };\n },\n renderItem: function (options) {\n var that = this;\n options = extend({\n menu: that,\n group: {}\n }, options);\n var empty = that.templates.empty, item = options.item;\n return that.templates.item(extend(options, {\n sprite: that.templates.sprite,\n itemWrapper: that.templates.itemWrapper,\n renderContent: that.renderContent,\n arrow: item.items || item.content || item[that.options.dataContentField[0]] ? that.templates.arrow : empty,\n subGroup: that.renderGroup\n }, rendering));\n },\n renderGroup: function (options) {\n var that = this;\n var templates = that.templates || options.menu.templates;\n return templates.group(extend({\n renderItems: function (options) {\n var html = '', i = 0, items = options.items, len = items ? items.length : 0, group = extend({ length: len }, options.group);\n for (; i < len; i++) {\n html += options.menu.renderItem(extend(options, {\n group: group,\n item: extend({ index: i }, items[i])\n }));\n }\n return html;\n }\n }, options, rendering));\n },\n renderContent: function (options) {\n return options.menu.templates.content(extend(options, rendering));\n }\n });\n var ContextMenu = Menu.extend({\n init: function (element, options) {\n var that = this;\n Menu.fn.init.call(that, element, options);\n that._marker = kendo.guid().substring(0, 8);\n that.target = $(that.options.target);\n that._popup();\n that._wire();\n },\n _initOverflow: function (options) {\n var that = this;\n if (options.scrollable && !that._overflowWrapper()) {\n that._openedPopups = {};\n that._popupsWrapper = (that.element.parent().is(animationContainerSelector) ? that.element.parent() : that.element).wrap('<div class=\\'k-popups-wrapper ' + options.orientation + '\\'></div>').parent();\n if (that.options.orientation == 'horizontal') {\n removeSpacesBetweenItems(that.element);\n }\n if (options.appendTo) {\n options.appendTo.append(that._popupsWrapper);\n }\n that._initialHeight = that.element[0].style.height;\n that._initialWidth = that.element[0].style.width;\n }\n },\n options: {\n name: 'ContextMenu',\n filter: null,\n showOn: 'contextmenu',\n orientation: 'vertical',\n alignToAnchor: false,\n copyAnchorStyles: true,\n target: 'body'\n },\n events: [\n OPEN,\n CLOSE,\n ACTIVATE,\n DEACTIVATE,\n SELECT\n ],\n setOptions: function (options) {\n var that = this;\n Menu.fn.setOptions.call(that, options);\n that.target.off(that.showOn + NS + that._marker, that._showProxy);\n if (that.userEvents) {\n that.userEvents.destroy();\n }\n that.target = $(that.options.target);\n if (options.orientation && that.popup.wrapper[0]) {\n that.popup.element.unwrap();\n }\n that._wire();\n Menu.fn.setOptions.call(this, options);\n },\n destroy: function () {\n var that = this;\n that.target.off(that.options.showOn + NS + that._marker);\n DOCUMENT_ELEMENT.off(kendo.support.mousedown + NS + that._marker, that._closeProxy);\n if (that.userEvents) {\n that.userEvents.destroy();\n }\n Menu.fn.destroy.call(that);\n },\n open: function (x, y) {\n var that = this;\n x = $(x)[0];\n if (contains(that.element[0], $(x)[0]) || that._itemHasChildren($(x))) {\n Menu.fn.open.call(that, x);\n } else {\n if (that._triggerEvent({\n item: that.element,\n type: OPEN\n }) === false) {\n if (that.popup.visible() && that.options.filter) {\n that.popup.close(true);\n that.popup.element.kendoStop(true);\n }\n if (y !== undefined) {\n var overflowWrapper = that._overflowWrapper();\n if (overflowWrapper) {\n var offset = overflowWrapper.offset();\n x -= offset.left;\n y -= offset.top;\n }\n that.popup.wrapper.hide();\n that._configurePopupScrolling(x, y);\n that.popup.open(x, y);\n } else {\n that.popup.options.anchor = (x ? x : that.popup.anchor) || that.target;\n that.popup.element.kendoStop(true);\n that._configurePopupScrolling();\n that.popup.open();\n }\n DOCUMENT_ELEMENT.off(that.popup.downEvent, that.popup._mousedownProxy);\n DOCUMENT_ELEMENT.on(kendo.support.mousedown + NS + that._marker, that._closeProxy);\n }\n }\n return that;\n },\n _configurePopupScrolling: function (x, y) {\n var that = this;\n var popup = that.popup;\n var isHorizontal = that.options.orientation == 'horizontal';\n if (that.options.scrollable) {\n that._wrapPopupElement(popup);\n popup.element.parent().css({\n position: '',\n height: ''\n });\n popup.element.css({\n visibility: 'hidden',\n display: '',\n position: ''\n });\n if (isHorizontal) {\n that._setPopupWidth(popup, isNaN(x) ? undefined : {\n isFixed: true,\n x: x,\n y: y\n });\n } else {\n that._setPopupHeight(popup, isNaN(x) ? undefined : {\n isFixed: true,\n x: x,\n y: y\n });\n }\n popup.element.css({\n visibility: '',\n display: 'none',\n position: 'absolute'\n });\n that._initPopupScrollButtons(popup, isHorizontal, true);\n popup.element.siblings(scrollButtonSelector).hide();\n }\n },\n _setPopupWidth: function (popup, isFixed) {\n var popupElement = popup.element;\n var popups = popupElement.add(popupElement.parent(animationContainerSelector));\n popups.width(this._initialWidth || '');\n var location = popup._location(isFixed);\n var windowWidth = $(window).width();\n var popupOuterWidth = location.width;\n var popupOffsetLeft = Math.max(location.left, 0);\n var scrollLeft = isFixed ? 0 : parentsScroll(this._overflowWrapper()[0], 'scrollLeft');\n var shadow = kendo.getShadows(popupElement);\n var maxWidth = windowWidth - shadow.left - shadow.right;\n var canFit = maxWidth + scrollLeft > popupOuterWidth + popupOffsetLeft;\n if (!canFit) {\n popups.css({\n overflow: 'hidden',\n width: maxWidth - popupOffsetLeft + scrollLeft + 'px'\n });\n }\n },\n close: function () {\n var that = this;\n if (contains(that.element[0], $(arguments[0])[0]) || that._itemHasChildren(arguments[0])) {\n Menu.fn.close.call(that, arguments[0]);\n } else {\n if (that.popup.visible()) {\n if (that._triggerEvent({\n item: that.element,\n type: CLOSE\n }) === false) {\n that.popup.close();\n DOCUMENT_ELEMENT.off(kendo.support.mousedown + NS + that._marker, that._closeProxy);\n that.unbind(SELECT, that._closeTimeoutProxy);\n }\n }\n }\n },\n _showHandler: function (e) {\n var ev = e, offset, that = this, options = that.options, target = kendo.support.mobileOS ? $(ev.target) : $(ev.currentTarget);\n if (e.event) {\n ev = e.event;\n ev.pageX = e.x.location;\n ev.pageY = e.y.location;\n }\n if (contains(that.element[0], e.relatedTarget || e.target)) {\n return;\n }\n that._eventOrigin = ev;\n ev.preventDefault();\n ev.stopImmediatePropagation();\n that.element.find('.' + FOCUSEDSTATE).removeClass(FOCUSEDSTATE);\n if (options.filter && target.is(options.filter) || !options.filter) {\n if (options.alignToAnchor) {\n that.popup.options.anchor = ev.currentTarget;\n that.open(ev.currentTarget);\n } else {\n that.popup.options.anchor = ev.currentTarget;\n if (that._targetChild) {\n offset = that.target.offset();\n that.open(ev.pageX - offset.left, ev.pageY - offset.top);\n } else {\n that.open(ev.pageX, ev.pageY);\n }\n }\n }\n },\n _closeHandler: function (e) {\n var that = this, target = $(e.relatedTarget || e.target), sameTarget = target.closest(that.target.selector)[0] == that.target[0], item = target.closest(itemSelector), children = that._itemHasChildren(item), overflowWrapper = that._overflowWrapper(), containment = contains(that.element[0], target[0]) || overflowWrapper && contains(overflowWrapper[0], target[0]);\n that._eventOrigin = e;\n var normalClick = e.which !== 3;\n if (that.popup.visible() && (normalClick && sameTarget || !sameTarget) && (that.options.closeOnClick && !children && containment || !containment)) {\n if (containment) {\n this.unbind(SELECT, this._closeTimeoutProxy);\n that.bind(SELECT, that._closeTimeoutProxy);\n } else {\n that.close();\n }\n }\n },\n _wire: function () {\n var that = this, options = that.options, target = that.target;\n that._showProxy = proxy(that._showHandler, that);\n that._closeProxy = proxy(that._closeHandler, that);\n that._closeTimeoutProxy = proxy(that.close, that);\n if (target[0]) {\n if (kendo.support.mobileOS && options.showOn == 'contextmenu') {\n that.userEvents = new kendo.UserEvents(target, {\n filter: options.filter,\n allowSelection: false\n });\n target.on(options.showOn + NS + that._marker, false);\n that.userEvents.bind('hold', that._showProxy);\n } else {\n if (options.filter) {\n target.on(options.showOn + NS + that._marker, options.filter, that._showProxy);\n } else {\n target.on(options.showOn + NS + that._marker, that._showProxy);\n }\n }\n }\n },\n _triggerEvent: function (e) {\n var that = this, anchor = $(that.popup.options.anchor)[0], origin = that._eventOrigin;\n that._eventOrigin = undefined;\n return that.trigger(e.type, extend({\n type: e.type,\n item: e.item || this.element[0],\n target: anchor\n }, origin ? { event: origin } : {}));\n },\n _popup: function () {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n that._triggerProxy = proxy(that._triggerEvent, that);\n that.popup = that.element.addClass('k-context-menu').kendoPopup({\n autosize: that.options.orientation === 'horizontal',\n anchor: that.target || 'body',\n copyAnchorStyles: that.options.copyAnchorStyles,\n collision: that.options.popupCollision || 'fit',\n animation: that.options.animation,\n activate: that._triggerProxy,\n deactivate: that._triggerProxy,\n appendTo: overflowWrapper || that.options.appendTo,\n close: !overflowWrapper ? $.noop : function (e) {\n $(getChildPopups(e.sender.element, overflowWrapper)).each(function (i, p) {\n var popup = p.data(KENDOPOPUP);\n if (popup) {\n popup.close(true);\n }\n });\n }\n }).data(KENDOPOPUP);\n that._targetChild = contains(that.target[0], that.popup.element[0]);\n }\n });\n ui.plugin(Menu);\n ui.plugin(ContextMenu);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.columnmenu', [\n 'kendo.popup',\n 'kendo.filtermenu',\n 'kendo.menu'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'columnmenu',\n name: 'Column Menu',\n category: 'framework',\n depends: [\n 'popup',\n 'filtermenu',\n 'menu'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, proxy = $.proxy, extend = $.extend, grep = $.grep, map = $.map, inArray = $.inArray, ACTIVE = 'k-state-selected', ASC = 'asc', DESC = 'desc', CHANGE = 'change', INIT = 'init', OPEN = 'open', SELECT = 'select', POPUP = 'kendoPopup', FILTERMENU = 'kendoFilterMenu', MENU = 'kendoMenu', NS = '.kendoColumnMenu', Widget = ui.Widget;\n function trim(text) {\n return $.trim(text).replace(/ /gi, '');\n }\n function toHash(arr, key) {\n var result = {};\n var idx, len, current;\n for (idx = 0, len = arr.length; idx < len; idx++) {\n current = arr[idx];\n result[current[key]] = current;\n }\n return result;\n }\n function leafColumns(columns) {\n var result = [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n continue;\n }\n result = result.concat(leafColumns(columns[idx].columns));\n }\n return result;\n }\n function attrEquals(attrName, attrValue) {\n return '[' + kendo.attr(attrName) + '=\\'' + (attrValue || '').replace(/'/g, '\"') + '\\']';\n }\n function insertElementAt(index, element, container) {\n if (index > 0) {\n element.insertAfter(container.children().eq(index - 1));\n } else {\n container.prepend(element);\n }\n }\n var ColumnMenu = Widget.extend({\n init: function (element, options) {\n var that = this, link;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n that.owner = options.owner;\n that.dataSource = options.dataSource;\n that.field = element.attr(kendo.attr('field'));\n that.title = element.attr(kendo.attr('title'));\n link = element.find('.k-header-column-menu');\n if (!link[0]) {\n link = element.addClass('k-with-icon').prepend('<a class=\"k-header-column-menu\" href=\"#\" title=\"' + options.messages.settings + '\" aria-label=\"' + options.messages.settings + '\"><span class=\"k-icon k-i-more-vertical\"></span></a>').find('.k-header-column-menu');\n }\n that.link = link.attr('tabindex', -1).on('click' + NS, proxy(that._click, that));\n that.wrapper = $('<div class=\"k-column-menu\"/>');\n that._refreshHandler = proxy(that.refresh, that);\n that.dataSource.bind(CHANGE, that._refreshHandler);\n },\n _init: function () {\n var that = this;\n that.pane = that.options.pane;\n if (that.pane) {\n that._isMobile = true;\n }\n if (that._isMobile) {\n that._createMobileMenu();\n } else {\n that._createMenu();\n }\n that.owner._muteAngularRebind(function () {\n that._angularItems('compile');\n });\n that._sort();\n that._columns();\n that._filter();\n that._lockColumns();\n that.trigger(INIT, {\n field: that.field,\n container: that.wrapper\n });\n },\n events: [\n INIT,\n OPEN,\n 'sort',\n 'filtering'\n ],\n options: {\n name: 'ColumnMenu',\n messages: {\n sortAscending: 'Sort Ascending',\n sortDescending: 'Sort Descending',\n filter: 'Filter',\n column: 'Column',\n columns: 'Columns',\n columnVisibility: 'Column Visibility',\n clear: 'Clear',\n cancel: 'Cancel',\n done: 'Done',\n settings: 'Edit Column Settings',\n lock: 'Lock',\n unlock: 'Unlock'\n },\n filter: '',\n columns: true,\n sortable: true,\n filterable: true,\n animations: { left: 'slide' }\n },\n _createMenu: function () {\n var that = this, options = that.options;\n that.wrapper.html(kendo.template(template)({\n uid: kendo.guid(),\n ns: kendo.ns,\n messages: options.messages,\n sortable: options.sortable,\n filterable: options.filterable,\n columns: that._ownerColumns(),\n showColumns: options.columns,\n lockedColumns: options.lockedColumns\n }));\n that.popup = that.wrapper[POPUP]({\n anchor: that.link,\n open: proxy(that._open, that),\n activate: proxy(that._activate, that),\n deactivate: proxy(that._deactivate, that),\n close: function () {\n that.menu._closing = true;\n if (that.options.closeCallback) {\n that.options.closeCallback(that.element);\n }\n }\n }).data(POPUP);\n that.menu = that.wrapper.children()[MENU]({\n orientation: 'vertical',\n closeOnClick: false,\n open: function () {\n that._updateMenuItems();\n }\n }).data(MENU);\n },\n _deactivate: function () {\n this.menu._closing = false;\n },\n _createMobileMenu: function () {\n var that = this, options = that.options;\n var html = kendo.template(mobileTemplate)({\n ns: kendo.ns,\n field: that.field,\n title: that.title || that.field,\n messages: options.messages,\n sortable: options.sortable,\n filterable: options.filterable,\n columns: that._ownerColumns(),\n showColumns: options.columns,\n lockedColumns: options.lockedColumns\n });\n that.view = that.pane.append(html);\n that.view.state = { columns: {} };\n that.wrapper = that.view.element.find('.k-column-menu');\n that.menu = new MobileMenu(that.wrapper.children(), {\n pane: that.pane,\n columnMenu: that\n });\n that.menu.element.on('transitionend' + NS, function (e) {\n e.stopPropagation();\n });\n var viewElement = that.view.wrapper && that.view.wrapper[0] ? that.view.wrapper : that.view.element;\n viewElement.on('click', '.k-header-done', function (e) {\n e.preventDefault();\n that.menu._applyChanges();\n that.menu._cancelChanges(false);\n that.close();\n });\n viewElement.on('click', '.k-header-cancel', function (e) {\n e.preventDefault();\n that.menu._cancelChanges(true);\n that.close();\n });\n that.view.bind('showStart', function () {\n var view = that.view || { columns: {} };\n if (that.options.lockedColumns) {\n that._updateLockedColumns();\n }\n if (view.element.find('.k-sort-asc.k-state-selected').length) {\n view.state.initialSort = 'asc';\n } else if (view.element.find('.k-sort-desc.k-state-selected').length) {\n view.state.initialSort = 'desc';\n }\n });\n },\n _angularItems: function (action) {\n var that = this;\n that.angular(action, function () {\n var items = that.wrapper.find('.k-columns-item input[' + kendo.attr('field') + ']').map(function () {\n return $(this).closest('li');\n });\n var data = map(that._ownerColumns(), function (col) {\n return { column: col._originalObject };\n });\n return {\n elements: items,\n data: data\n };\n });\n },\n destroy: function () {\n var that = this;\n that._angularItems('cleanup');\n Widget.fn.destroy.call(that);\n if (that.filterMenu) {\n that.filterMenu.destroy();\n }\n if (that._refreshHandler) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n }\n if (that.options.columns && that.owner) {\n if (that._updateColumnsMenuHandler) {\n that.owner.unbind('columnShow', that._updateColumnsMenuHandler);\n that.owner.unbind('columnHide', that._updateColumnsMenuHandler);\n }\n if (that._updateColumnsLockedStateHandler) {\n that.owner.unbind('columnLock', that._updateColumnsLockedStateHandler);\n that.owner.unbind('columnUnlock', that._updateColumnsLockedStateHandler);\n }\n }\n if (that.menu) {\n that.menu.element.off(NS);\n that.menu.destroy();\n }\n that.wrapper.off(NS);\n if (that.popup) {\n that.popup.destroy();\n }\n if (that.view) {\n that.view.purge();\n }\n that.link.off(NS);\n that.owner = null;\n that.wrapper = null;\n that.element = null;\n },\n close: function () {\n this.menu.close();\n if (this.popup) {\n this.popup.close();\n this.popup.element.off('keydown' + NS);\n }\n },\n _click: function (e) {\n var that = this;\n e.preventDefault();\n e.stopPropagation();\n var options = this.options;\n if (options.filter && this.element.is(!options.filter)) {\n return;\n }\n if (!this.popup && !this.pane) {\n this._init();\n } else {\n that._updateMenuItems();\n }\n if (this._isMobile) {\n this.pane.navigate(this.view, this.options.animations.left);\n } else {\n this.popup.toggle();\n }\n },\n _updateMenuItems: function () {\n var that = this;\n that._setMenuItemsVisibility();\n that._reorderMenuItems();\n },\n _setMenuItemsVisibility: function () {\n var that = this;\n that._eachRenderedMenuItem(function (index, column, renderedListElement) {\n if (column.matchesMedia === false) {\n renderedListElement.hide();\n } else {\n renderedListElement.show();\n }\n });\n },\n _reorderMenuItems: function () {\n var that = this;\n that._eachRenderedMenuItem(function (index, column, renderedListElement, renderedList) {\n if (renderedListElement[0] && renderedListElement.index() !== index) {\n insertElementAt(index, renderedListElement, renderedList);\n }\n });\n },\n _eachRenderedMenuItem: function (callback) {\n var that = this;\n var renderedListElement;\n var duplcateColumns;\n var duplicateColumnIndex;\n var fieldValue;\n var currentColumn;\n var columns = grep(leafColumns(that.owner.columns), function (col) {\n var result = true, title = trim(col.title || '');\n if (col.menu === false || !col.field && !title.length) {\n result = false;\n }\n return result;\n }).map(function (col) {\n return {\n field: col.field,\n title: col.title,\n matchesMedia: col.matchesMedia\n };\n });\n var renderedList = that._isMobile && that.view ? $(that.view.element).find('.k-columns-item').children('ul') : $(that.wrapper).find('.k-menu-group').first();\n var filterByTitle = function (containerElement, tagName, index) {\n return containerElement.find(tagName).filter(function () {\n return filterCallback(columns[index], $(this).text());\n });\n };\n var filterCallback = function (column, text) {\n return matchTitle(column, text);\n };\n var matchTitle = function (column, titleAttr) {\n return column.title ? titleAttr === column.title : titleAttr === column.field;\n };\n var duplicateColumns = function (index) {\n return grep(columns, function (col) {\n return JSON.stringify(columns[index]) == JSON.stringify(col);\n });\n };\n for (var i = 0; i < columns.length; i++) {\n currentColumn = columns[i];\n duplcateColumns = duplicateColumns(i);\n duplicateColumnIndex = $.inArray(currentColumn, duplcateColumns);\n renderedListElement = filterByTitle(renderedList, 'span', i);\n renderedListElement = this._isMobile ? renderedListElement.next() : renderedListElement;\n fieldValue = currentColumn.field ? currentColumn.field : currentColumn.title;\n renderedListElement = renderedListElement.find(attrEquals('field', fieldValue)).closest('li').eq(duplicateColumnIndex);\n callback(i, currentColumn, renderedListElement, renderedList);\n }\n },\n _open: function () {\n var that = this;\n $('.k-column-menu').not(that.wrapper).each(function () {\n $(this).data(POPUP).close();\n });\n that.popup.element.on('keydown' + NS, function (e) {\n if (e.keyCode == kendo.keys.ESC) {\n that.close();\n }\n });\n if (that.options.lockedColumns) {\n that._updateLockedColumns();\n }\n },\n _activate: function () {\n this.menu.element.focus();\n this.trigger(OPEN, {\n field: this.field,\n container: this.wrapper\n });\n },\n _ownerColumns: function () {\n var columns = leafColumns(this.owner.columns), menuColumns = grep(columns, function (col) {\n var result = true, title = trim(col.title || '');\n if (col.menu === false || !col.field && !title.length) {\n result = false;\n }\n return result;\n });\n return map(menuColumns, function (col) {\n return {\n originalField: col.field,\n field: col.field || col.title,\n title: col.title || col.field,\n hidden: col.hidden,\n matchesMedia: col.matchesMedia,\n index: inArray(col, columns),\n locked: !!col.locked,\n _originalObject: col\n };\n });\n },\n _sort: function () {\n var that = this;\n if (that.options.sortable) {\n that.refresh();\n that.menu.bind(SELECT, function (e) {\n var item = $(e.item), dir;\n if (item.hasClass('k-sort-asc')) {\n dir = ASC;\n } else if (item.hasClass('k-sort-desc')) {\n dir = DESC;\n }\n if (!dir) {\n return;\n }\n item.parent().find('.k-sort-' + (dir == ASC ? DESC : ASC)).removeClass(ACTIVE);\n that._sortDataSource(item, dir);\n if (!that._isMobile) {\n that.close();\n }\n });\n }\n },\n _sortDataSource: function (item, dir) {\n var that = this, sortable = that.options.sortable, compare = sortable.compare === null ? undefined : sortable.compare, dataSource = that.dataSource, idx, length, sort = dataSource.sort() || [];\n var removeClass = item.hasClass(ACTIVE) && sortable && sortable.allowUnsort !== false;\n dir = !removeClass ? dir : undefined;\n if (that.trigger('sort', {\n sort: {\n field: that.field,\n dir: dir,\n compare: compare\n }\n })) {\n return;\n }\n if (removeClass) {\n item.removeClass(ACTIVE);\n } else {\n item.addClass(ACTIVE);\n }\n if (sortable.mode === 'multiple') {\n for (idx = 0, length = sort.length; idx < length; idx++) {\n if (sort[idx].field === that.field) {\n sort.splice(idx, 1);\n break;\n }\n }\n sort.push({\n field: that.field,\n dir: dir,\n compare: compare\n });\n } else {\n sort = [{\n field: that.field,\n dir: dir,\n compare: compare\n }];\n }\n dataSource.sort(sort);\n },\n _columns: function () {\n var that = this;\n if (that.options.columns) {\n that._updateColumnsMenu();\n that._updateColumnsMenuHandler = proxy(that._updateColumnsMenu, that);\n that.owner.bind([\n 'columnHide',\n 'columnShow'\n ], that._updateColumnsMenuHandler);\n that._updateColumnsLockedStateHandler = proxy(that._updateColumnsLockedState, that);\n that.owner.bind([\n 'columnUnlock',\n 'columnLock'\n ], that._updateColumnsLockedStateHandler);\n that.menu.bind(SELECT, function (e) {\n var item = $(e.item), input, column, columns = grep(leafColumns(that.owner.columns), function (col) {\n var result = true, title = trim(col.title || '');\n if (col.menu === false || !col.field && !title.length) {\n result = false;\n }\n return result;\n });\n if (that._isMobile) {\n e.preventDefault();\n }\n if (!item.parent().closest('li.k-columns-item')[0]) {\n return;\n }\n input = item.find(':checkbox');\n if (input.attr('disabled')) {\n return;\n }\n column = columns[item.index()];\n if (column.hidden === true) {\n that.owner.showColumn(column);\n } else {\n that.owner.hideColumn(column);\n }\n });\n }\n },\n _updateColumnsMenu: function () {\n var idx, length, current, checked, locked;\n var fieldAttr = kendo.attr('field'), lockedAttr = kendo.attr('locked'), columnsInMenu = grep(leafColumns(this.owner.columns), function (col) {\n var result = true, title = trim(col.title || '');\n if (col.menu === false || !col.field && !title.length) {\n result = false;\n }\n return result;\n }), visibleFields = grep(this._ownerColumns(), function (field) {\n return !field.hidden && field.matchesMedia !== false;\n }), visibleDataFields = grep(visibleFields, function (field) {\n return field.originalField;\n }), lockedCount = grep(visibleDataFields, function (col) {\n return col.locked === true;\n }).length, nonLockedCount = grep(visibleDataFields, function (col) {\n return col.locked !== true;\n }).length, columnsNotInMenu = grep(this.owner.columns, function (col) {\n return col.menu === false;\n }), hiddenColumnsNotInMenu = grep(columnsNotInMenu, function (col) {\n return col.hidden;\n });\n this.wrapper.find('[role=\\'menuitemcheckbox\\']').attr('aria-checked', false);\n var checkboxes = this.wrapper.find('.k-columns-item input[' + fieldAttr + ']').prop('disabled', false).prop('checked', false);\n var switchWidget;\n for (idx = 0, length = checkboxes.length; idx < length; idx++) {\n current = checkboxes.eq(idx);\n locked = current.attr(lockedAttr) === 'true';\n checked = false;\n switchWidget = current.data('kendoSwitch');\n checked = !columnsInMenu[idx].hidden && columnsInMenu[idx].matchesMedia !== false;\n current.prop('checked', checked);\n if (switchWidget) {\n switchWidget.enable(true);\n switchWidget.check(checked);\n }\n current.closest('[role=\\'menuitemcheckbox\\']').attr('aria-checked', checked);\n if (checked) {\n if (lockedCount == 1 && locked) {\n current.prop('disabled', true);\n if (switchWidget) {\n switchWidget.enable(false);\n }\n }\n if ((columnsNotInMenu.length === 0 || columnsNotInMenu.length === hiddenColumnsNotInMenu.length) && nonLockedCount == 1 && !locked) {\n current.prop('disabled', true);\n if (switchWidget) {\n switchWidget.enable(false);\n }\n }\n }\n }\n },\n _updateColumnsLockedState: function () {\n var idx, length, current, column;\n var fieldAttr = kendo.attr('field');\n var lockedAttr = kendo.attr('locked');\n var columns = toHash(this._ownerColumns(), 'field');\n var checkboxes = this.wrapper.find('.k-columns-item input[type=checkbox]');\n for (idx = 0, length = checkboxes.length; idx < length; idx++) {\n current = checkboxes.eq(idx);\n column = columns[current.attr(fieldAttr)];\n if (column) {\n current.attr(lockedAttr, column.locked);\n }\n }\n this._updateColumnsMenu();\n },\n _filter: function () {\n var that = this, widget = FILTERMENU, options = that.options;\n if (options.filterable !== false) {\n if (options.filterable.multi) {\n widget = 'kendoFilterMultiCheck';\n if (options.filterable.dataSource) {\n options.filterable.checkSource = options.filterable.dataSource;\n delete options.filterable.dataSource;\n }\n }\n that.filterMenu = that.wrapper.find('.k-filterable')[widget](extend(true, {}, {\n appendToElement: true,\n dataSource: options.dataSource,\n values: options.values,\n field: that.field,\n title: that.title,\n change: function (e) {\n if (that.trigger('filtering', {\n filter: e.filter,\n field: e.field\n })) {\n e.preventDefault();\n }\n }\n }, options.filterable)).data(widget);\n if (that._isMobile) {\n that.menu.bind(SELECT, function (e) {\n var item = $(e.item);\n if (item.hasClass('k-filter-item')) {\n that.pane.navigate(that.filterMenu.view, that.options.animations.left);\n }\n });\n }\n }\n },\n _lockColumns: function () {\n var that = this;\n that.menu.bind(SELECT, function (e) {\n var item = $(e.item);\n if (item.hasClass('k-lock')) {\n that.owner.lockColumn(that.field);\n if (!that._isMobile) {\n that.close();\n }\n } else if (item.hasClass('k-unlock')) {\n that.owner.unlockColumn(that.field);\n if (!that._isMobile) {\n that.close();\n }\n }\n });\n },\n _updateLockedColumns: function () {\n var field = this.field;\n var columns = this.owner.columns;\n var column = grep(columns, function (column) {\n return column.field == field || column.title == field;\n })[0];\n if (!column) {\n return;\n }\n var locked = column.locked === true;\n var length = grep(columns, function (column) {\n return !column.hidden && (column.locked && locked || !column.locked && !locked);\n }).length;\n var lockItem = this.wrapper.find('.k-lock').removeClass('k-state-disabled');\n var unlockItem = this.wrapper.find('.k-unlock').removeClass('k-state-disabled');\n if (locked || length == 1) {\n lockItem.addClass('k-state-disabled');\n }\n if (!locked || length == 1) {\n unlockItem.addClass('k-state-disabled');\n }\n this._updateColumnsLockedState();\n },\n refresh: function () {\n var that = this, sort = that.options.dataSource.sort() || [], descriptor, field = that.field, idx, length;\n that.wrapper.find('.k-sort-asc, .k-sort-desc').removeClass(ACTIVE);\n for (idx = 0, length = sort.length; idx < length; idx++) {\n descriptor = sort[idx];\n if (field == descriptor.field) {\n that.wrapper.find('.k-sort-' + descriptor.dir).addClass(ACTIVE);\n }\n }\n that.link[that._filterExist(that.dataSource.filter()) ? 'addClass' : 'removeClass']('k-state-active');\n },\n _filterExist: function (filters) {\n var found = false;\n var filter;\n if (!filters) {\n return;\n }\n filters = filters.filters;\n for (var idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n if (filter.field == this.field) {\n found = true;\n } else if (filter.filters) {\n found = found || this._filterExist(filter);\n }\n }\n return found;\n }\n });\n var template = '<ul id=\"#=uid#\">' + '#if(sortable){#' + '<li class=\"k-item k-sort-asc\"><span class=\"k-link\"><span class=\"k-icon k-i-sort-asc-sm\"></span>${messages.sortAscending}</span></li>' + '<li class=\"k-item k-sort-desc\"><span class=\"k-link\"><span class=\"k-icon k-i-sort-desc-sm\"></span>${messages.sortDescending}</span></li>' + '#if(showColumns || filterable){#' + '<li class=\"k-separator\" role=\"presentation\"></li>' + '#}#' + '#}#' + '#if(showColumns){#' + '<li class=\"k-item k-columns-item\" aria-haspopup=\"true\"><span class=\"k-link\"><span class=\"k-icon k-i-columns\"></span>${messages.columns}</span><ul>' + '#for (var idx = 0; idx < columns.length; idx++) {#' + '<li role=\"menuitemcheckbox\" aria-checked=\"false\" #=columns[idx].matchesMedia === false ? \"style=\\'display:none;\\'\" : \"\"#><input type=\"checkbox\" title=\"#=columns[idx].title#\" data-#=ns#field=\"#=columns[idx].field.replace(/\"/g,\"&\\\\#34;\")#\" data-#=ns#index=\"#=columns[idx].index#\" data-#=ns#locked=\"#=columns[idx].locked#\"/>#=columns[idx].title#</li>' + '#}#' + '</ul></li>' + '#if(filterable || lockedColumns){#' + '<li class=\"k-separator\" role=\"presentation\"></li>' + '#}#' + '#}#' + '#if(filterable){#' + '<li class=\"k-item k-filter-item\" aria-haspopup=\"true\"><span class=\"k-link\"><span class=\"k-icon k-i-filter\"></span>${messages.filter}</span><ul>' + '<li><div class=\"k-filterable\"></div></li>' + '</ul></li>' + '#if(lockedColumns){#' + '<li class=\"k-separator\" role=\"presentation\"></li>' + '#}#' + '#}#' + '#if(lockedColumns){#' + '<li class=\"k-item k-lock\"><span class=\"k-link\"><span class=\"k-icon k-i-lock\"></span>${messages.lock}</span></li>' + '<li class=\"k-item k-unlock\"><span class=\"k-link\"><span class=\"k-icon k-i-unlock\"></span>${messages.unlock}</span></li>' + '#}#' + '</ul>';\n var mobileTemplate = '<div data-#=ns#role=\"view\" class=\"k-grid-column-menu\">' + '<div data-#=ns#role=\"header\" class=\"k-header\">' + '<a href=\"\\\\#\" class=\"k-header-cancel k-link\" title=\"#=messages.cancel#\" ' + 'aria-label=\"#=messages.cancel#\"><span class=\"k-icon k-i-arrow-chevron-left\"></span></a>' + '${messages.settings}' + '<a href=\"\\\\#\" class=\"k-header-done k-link\" title=\"#=messages.done#\" ' + 'aria-label=\"#=messages.done#\"><span class=\"k-icon k-i-check\"></span></a>' + '</div>' + '<div class=\"k-column-menu k-mobile-list\">' + '<ul>' + '<li>' + '<span class=\"k-list-title\">#=messages.column#: ${title}</span>' + '<ul>' + '#if(sortable){#' + '<li id=\"#=kendo.guid()#\" class=\"k-item k-sort-asc\"><span class=\"k-link\"><span class=\"k-icon k-i-sort-asc-sm\"></span><span class=\"k-item-title\">${messages.sortAscending}</span></span></li>' + '<li id=\"#=kendo.guid()#\" class=\"k-item k-sort-desc\"><span class=\"k-link\"><span class=\"k-icon k-i-sort-desc-sm\"></span><span class=\"k-item-title\">${messages.sortDescending}</span></span></li>' + '#}#' + '#if(lockedColumns){#' + '<li id=\"#=kendo.guid()#\" class=\"k-item k-lock\"><span class=\"k-link\"><span class=\"k-icon k-i-lock\"></span><span class=\"k-item-title\">${messages.lock}</span></span></li>' + '<li id=\"#=kendo.guid()#\" class=\"k-item k-unlock\"><span class=\"k-link\"><span class=\"k-icon k-i-unlock\"></span><span class=\"k-item-title\">${messages.unlock}</span></span></li>' + '#}#' + '#if(filterable){#' + '<li id=\"#=kendo.guid()#\" class=\"k-item k-filter-item\">' + '<span class=\"k-link k-filterable\">' + '<span class=\"k-icon k-i-filter\"></span>' + '<span class=\"k-item-title\">${messages.filter}</span></span>' + '</li>' + '#}#' + '</ul>' + '</li>' + '#if(showColumns){#' + '<li class=\"k-columns-item\"><span class=\"k-list-title\">${messages.columnVisibility}</span>' + '<ul>' + '#for (var idx = 0; idx < columns.length; idx++) {#' + '<li id=\"#=kendo.guid()#\" class=\"k-item\">' + '<span class=\"k-item-title\">' + '#=columns[idx].title#' + '</span>' + '<input type=\"checkbox\" title=\"#=columns[idx].title#\" ' + ' data-#=ns#field=\"#=columns[idx].field.replace(/\"/g,\"&\\\\#34;\")#\"' + ' data-#=ns#index=\"#=columns[idx].index#\"' + ' data-#=ns#locked=\"#=columns[idx].locked#\"/>' + '</li>' + '#}#' + '</ul>' + '</li>' + '#}#' + '<li class=\"k-item k-clear-wrap\">' + '<span class=\"k-label k-clear\" title=\"#=messages.clear#\" ' + 'aria-label=\"#=messages.clear#\">#=messages.clear#</span>' + '</li>' + '</ul>' + '</div>' + '</div>';\n var MobileMenu = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that._createCheckBoxes();\n that.element.on('click' + NS, 'li.k-item:not(.k-separator):not(.k-state-disabled):not(:has(.k-switch))', '_click');\n },\n events: [SELECT],\n _click: function (e) {\n var that = this;\n if (!$(e.target).is('[type=checkbox]')) {\n e.preventDefault();\n }\n if ($(e.target).hasClass('k-clear')) {\n that._cancelChanges(true);\n return;\n }\n if ($(e.target).hasClass('k-filterable')) {\n that._cancelChanges(true);\n that.trigger(SELECT, { item: e.currentTarget });\n return;\n }\n that._updateSelectedItems(e.currentTarget);\n },\n _updateSelectedItems: function (el) {\n var that = this;\n var item = $(el);\n var state = that.options.columnMenu.view.state || { columns: {} };\n var id = item.prop('id');\n if (item.hasClass('k-filter-item')) {\n return;\n }\n if (state[id]) {\n state[id] = false;\n } else {\n state[id] = true;\n }\n if (item.hasClass('k-sort-asc') || item.hasClass('k-sort-desc')) {\n var dir;\n var otherItem;\n var otherItemId;\n if (item.hasClass('k-sort-asc')) {\n dir = 'asc';\n otherItem = that.element.find('.k-sort-desc');\n } else {\n dir = 'desc';\n otherItem = that.element.find('.k-sort-asc');\n }\n otherItemId = otherItem.prop('id');\n if (dir === state.initialSort && !item.hasClass('k-state-selected')) {\n state[id] = false;\n }\n if (state[otherItemId]) {\n state[otherItemId] = false;\n }\n otherItem.removeClass(ACTIVE);\n }\n if (item.hasClass(ACTIVE)) {\n item.removeClass(ACTIVE);\n } else {\n item.addClass(ACTIVE);\n }\n },\n _cancelChanges: function (force) {\n var that = this;\n var menu = that.options.columnMenu;\n var view = menu.view;\n var state = view.state || { columns: {} };\n var columns = state.columns;\n that.element.find('.' + ACTIVE).removeClass(ACTIVE);\n menu.refresh();\n if (force) {\n var selectedItems = [];\n for (var key in columns) {\n if (columns.hasOwnProperty(key)) {\n if (columns[key] === true) {\n var item = view.element.find('#' + key);\n selectedItems.push(item[0]);\n }\n }\n }\n for (var i = selectedItems.length - 1; i >= 0; i--) {\n that.trigger(SELECT, { item: selectedItems[i] });\n }\n if (menu.options.lockedColumns) {\n menu._updateLockedColumns();\n }\n }\n that.options.columnMenu.view.state = { columns: {} };\n },\n _applyChanges: function () {\n var that = this;\n var view = that.options.columnMenu.view;\n var state = view.state || { columns: {} };\n for (var key in state) {\n if (state.hasOwnProperty(key)) {\n if (key !== 'initialSort' && key !== 'columns' && state[key] === true) {\n var item = view.element.find('#' + key);\n if (item.hasClass(ACTIVE)) {\n item.removeClass(ACTIVE);\n } else {\n item.addClass(ACTIVE);\n }\n that.trigger(SELECT, { item: item[0] });\n }\n }\n }\n },\n _createCheckBoxes: function () {\n var that = this;\n that.element.find('.k-columns-item').find('[type=\\'checkbox\\']').kendoSwitch({\n messages: {\n checked: '',\n unchecked: ''\n },\n change: function (e) {\n var item = e.sender.element.closest('.k-item');\n var state = that.options.columnMenu.view.state || { columns: {} };\n var id = item.prop('id');\n if (state.columns[id]) {\n state.columns[id] = false;\n } else {\n state.columns[id] = true;\n }\n that.trigger(SELECT, { item: item });\n }\n });\n },\n _destroyCheckBoxes: function () {\n var that = this;\n var elements = that.element.find('.k-columns-item').find('[type=\\'checkbox\\']');\n var switchWidget;\n for (var i = 0; i < elements.length; i++) {\n switchWidget = elements.eq(i).data('kendoSwitch');\n if (switchWidget) {\n switchWidget.destroy();\n }\n }\n },\n close: function () {\n this.options.pane.navigate('');\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.element.off(NS);\n that._destroyCheckBoxes();\n }\n });\n ui.plugin(ColumnMenu);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.columnsorter', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'columnsorter',\n name: 'Column Sorter',\n category: 'framework',\n depends: ['core'],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo;\n var ui = kendo.ui;\n var Widget = ui.Widget;\n var DIR = 'dir';\n var ASC = 'asc';\n var SINGLE = 'single';\n var FIELD = 'field';\n var DESC = 'desc';\n var sorterNS = '.kendoColumnSorter';\n var TLINK = '.k-link';\n var ARIASORT = 'aria-sort';\n var proxy = $.proxy;\n var ColumnSorter = Widget.extend({\n init: function (element, options) {\n var that = this, link;\n Widget.fn.init.call(that, element, options);\n that._refreshHandler = proxy(that.refresh, that);\n that.dataSource = that.options.dataSource.bind('change', that._refreshHandler);\n that.directions = that.options.initialDirection === ASC ? [\n ASC,\n DESC\n ] : [\n DESC,\n ASC\n ];\n link = that.element.find(TLINK);\n if (!link[0]) {\n link = that.element.wrapInner('<a class=\"k-link\" href=\"#\"/>').find(TLINK);\n }\n that.link = link;\n that.element.on('click' + sorterNS, proxy(that._click, that));\n },\n options: {\n name: 'ColumnSorter',\n mode: SINGLE,\n allowUnsort: true,\n compare: null,\n filter: '',\n initialDirection: ASC,\n showIndexes: false\n },\n events: ['change'],\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.element.off(sorterNS);\n that.dataSource.unbind('change', that._refreshHandler);\n that._refreshHandler = that.element = that.link = that.dataSource = null;\n },\n refresh: function () {\n var that = this, sort = that.dataSource.sort() || [], idx, length, descriptor, dir, element = that.element, field = element.attr(kendo.attr(FIELD)), headerIndex, sortOrder, leafCells;\n element.removeAttr(kendo.attr(DIR));\n element.removeAttr(ARIASORT);\n for (idx = 0, length = sort.length; idx < length; idx++) {\n descriptor = sort[idx];\n if (field == descriptor.field) {\n element.attr(kendo.attr(DIR), descriptor.dir);\n sortOrder = idx + 1;\n }\n }\n dir = element.attr(kendo.attr(DIR));\n if (element.is('th')) {\n var table = element.closest('table');\n if (table.parent().hasClass('k-grid-header-wrap')) {\n table = table.closest('.k-grid').find('.k-grid-content > table');\n } else if (table.parent().hasClass('k-grid-header-locked')) {\n table = table.closest('.k-grid').find('.k-grid-content-locked > table');\n } else if (!table.parent().hasClass('k-grid')) {\n table = null;\n }\n if (table) {\n if (element.attr(kendo.attr('index'))) {\n leafCells = leafDataCells(element.closest('.k-grid-header'));\n headerIndex = leafCells.index(element);\n } else {\n headerIndex = element.parent().children(':visible').index(element);\n }\n element.toggleClass('k-sorted', dir !== undefined);\n table.children('colgroup').children(':not(.k-group-col):not(.k-hierarchy-col)').eq(headerIndex).toggleClass('k-sorted', dir !== undefined);\n }\n }\n element.find('.k-i-sort-asc-sm,.k-i-sort-desc-sm,.k-sort-order').remove();\n if (dir === ASC) {\n $('<span class=\"k-icon k-i-sort-asc-sm\" />').appendTo(that.link);\n element.attr(ARIASORT, 'ascending');\n } else if (dir === DESC) {\n $('<span class=\"k-icon k-i-sort-desc-sm\" />').appendTo(that.link);\n element.attr(ARIASORT, 'descending');\n }\n if (that.options.showIndexes && sort.length > 1 && sortOrder) {\n $('<span class=\"k-sort-order\" />').html(sortOrder).appendTo(that.link);\n }\n },\n _toggleSortDirection: function (dir) {\n var directions = this.directions;\n if (dir === directions[directions.length - 1] && this.options.allowUnsort) {\n return undefined;\n }\n return directions[0] === dir ? directions[1] : directions[0];\n },\n _click: function (e) {\n var that = this, element = that.element, field = element.attr(kendo.attr(FIELD)), dir = element.attr(kendo.attr(DIR)), options = that.options, compare = that.options.compare === null ? undefined : that.options.compare, sort = that.dataSource.sort() || [], idx, length;\n e.preventDefault();\n if (options.filter && !element.is(options.filter)) {\n return;\n }\n dir = this._toggleSortDirection(dir);\n if (this.trigger('change', {\n sort: {\n field: field,\n dir: dir,\n compare: compare\n }\n })) {\n return;\n }\n if (options.mode === SINGLE) {\n sort = [{\n field: field,\n dir: dir,\n compare: compare\n }];\n } else if (options.mode === 'multiple') {\n for (idx = 0, length = sort.length; idx < length; idx++) {\n if (sort[idx].field === field) {\n sort.splice(idx, 1);\n break;\n }\n }\n sort.push({\n field: field,\n dir: dir,\n compare: compare\n });\n }\n if (this.dataSource.options.endless) {\n this.dataSource.options.endless = null;\n element.closest('.k-grid').getKendoGrid()._endlessPageSize = that.dataSource.options.pageSize;\n this.dataSource.pageSize(that.dataSource.options.pageSize);\n }\n this.dataSource.sort(sort);\n }\n });\n function leafDataCells(container) {\n var rows = container.find('tr:not(.k-filter-row)');\n var filter = function () {\n var el = $(this);\n return !el.hasClass('k-group-cell') && !el.hasClass('k-hierarchy-cell');\n };\n var cells = $();\n if (rows.length > 1) {\n cells = rows.find('th:visible').filter(filter).filter(function () {\n return this.rowSpan > 1;\n });\n }\n cells = cells.add(rows.last().find('th:visible').filter(filter));\n var indexAttr = kendo.attr('index');\n cells.sort(function (a, b) {\n a = $(a);\n b = $(b);\n var indexA = a.attr(indexAttr);\n var indexB = b.attr(indexAttr);\n if (indexA === undefined) {\n indexA = $(a).index();\n }\n if (indexB === undefined) {\n indexB = $(b).index();\n }\n indexA = parseInt(indexA, 10);\n indexB = parseInt(indexB, 10);\n return indexA > indexB ? 1 : indexA < indexB ? -1 : 0;\n });\n return cells;\n }\n ui.plugin(ColumnSorter);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.editable', [\n 'kendo.datepicker',\n 'kendo.numerictextbox',\n 'kendo.validator',\n 'kendo.binder'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'editable',\n name: 'Editable',\n category: 'framework',\n depends: [\n 'datepicker',\n 'numerictextbox',\n 'validator',\n 'binder'\n ],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, extend = $.extend, oldIE = kendo.support.browser.msie && kendo.support.browser.version < 9, isFunction = kendo.isFunction, isPlainObject = $.isPlainObject, inArray = $.inArray, POINT = '.', support = kendo.support, AUTOCOMPLETEVALUE = support.browser.chrome ? 'disabled' : 'off', nameSpecialCharRegExp = /(\"|\\%|'|\\[|\\]|\\$|\\.|\\,|\\:|\\;|\\+|\\*|\\&|\\!|\\#|\\(|\\)|<|>|\\=|\\?|\\@|\\^|\\{|\\}|\\~|\\/|\\||`)/g, ERRORTEMPLATE = '<div class=\"k-widget k-tooltip k-tooltip-validation\" style=\"margin:0.5em\"><span class=\"k-icon k-i-warning\"> </span>' + '#=message#<div class=\"k-callout k-callout-n\"></div></div>', CHANGE = 'change';\n var EQUAL_SET = 'equalSet';\n var specialRules = [\n 'url',\n 'email',\n 'number',\n 'date',\n 'boolean'\n ];\n function fieldType(field) {\n field = field != null ? field : '';\n return field.type || $.type(field) || 'string';\n }\n function convertToValueBinding(container) {\n container.find(':input:not(:button, .k-combobox .k-input, [' + kendo.attr('role') + '=listbox], [' + kendo.attr('role') + '=upload], [' + kendo.attr('skip') + '], [type=file])').each(function () {\n var bindAttr = kendo.attr('bind'), binding = this.getAttribute(bindAttr) || '', bindingName = this.type === 'checkbox' || this.type === 'radio' ? 'checked:' : 'value:', fieldName = this.name;\n if (binding.indexOf(bindingName) === -1 && fieldName) {\n binding += (binding.length ? ',' : '') + bindingName + fieldName;\n $(this).attr(bindAttr, binding);\n }\n });\n }\n function createAttributes(options) {\n var field = (options.model.fields || options.model)[options.field], type = fieldType(field), validation = field ? field.validation : {}, ruleName, DATATYPE = kendo.attr('type'), BINDING = kendo.attr('bind'), rule, attr = {\n name: options.field,\n title: options.title ? options.title : options.field\n };\n for (ruleName in validation) {\n rule = validation[ruleName];\n if (inArray(ruleName, specialRules) >= 0) {\n attr[DATATYPE] = ruleName;\n } else if (!isFunction(rule)) {\n var culture = kendo.getCulture();\n if (typeof rule === 'number' && culture.name.length) {\n var numberFormat = culture.numberFormat;\n var stringRule = rule.toString().replace(POINT, numberFormat[POINT]);\n attr[ruleName] = stringRule;\n } else {\n attr[ruleName] = isPlainObject(rule) ? rule.value || ruleName : rule;\n }\n }\n attr[kendo.attr(ruleName + '-msg')] = rule.message;\n attr.autocomplete = AUTOCOMPLETEVALUE;\n }\n if (inArray(type, specialRules) >= 0) {\n attr[DATATYPE] = type;\n }\n attr[BINDING] = (type === 'boolean' ? 'checked:' : 'value:') + options.field;\n return attr;\n }\n function addIdAttribute(container, attr) {\n var id = container.attr('id');\n if (id) {\n attr.id = id;\n container.removeAttr('id');\n }\n return attr;\n }\n function convertItems(items) {\n var idx, length, item, value, text, result;\n if (items && items.length) {\n result = [];\n for (idx = 0, length = items.length; idx < length; idx++) {\n item = items[idx];\n text = item.text || item.value || item;\n value = item.value == null ? item.text || item : item.value;\n result[idx] = {\n text: text,\n value: value\n };\n }\n }\n return result;\n }\n var editors = {\n 'number': function (container, options) {\n var attr = createAttributes(options);\n $('<input type=\"text\"/>').attr(attr).appendTo(container).kendoNumericTextBox({ format: options.format });\n $('<span ' + kendo.attr('for') + '=\"' + options.field + '\" class=\"k-invalid-msg\"/>').hide().appendTo(container);\n },\n 'date': function (container, options) {\n var attr = createAttributes(options), format = options.format;\n if (format) {\n format = kendo._extractFormat(format);\n }\n attr[kendo.attr('format')] = format;\n $('<input type=\"text\"/>').attr(attr).appendTo(container).kendoDatePicker({ format: options.format });\n $('<span ' + kendo.attr('for') + '=\"' + options.field + '\" class=\"k-invalid-msg\"/>').hide().appendTo(container);\n },\n 'string': function (container, options) {\n var attr = createAttributes(options);\n $('<input type=\"text\" class=\"k-textbox\"/>').attr(attr).appendTo(container);\n },\n 'boolean': function (container, options) {\n var attr = createAttributes(options);\n $('<input type=\"checkbox\" />').attr(attr).appendTo(container);\n },\n 'values': function (container, options) {\n var attr = createAttributes(options);\n var items = kendo.stringify(convertItems(options.values));\n $('<select ' + kendo.attr('text-field') + '=\"text\"' + kendo.attr('value-field') + '=\"value\"' + kendo.attr('source') + '=\\'' + (items ? items.replace(/\\'/g, ''') : items) + '\\'' + kendo.attr('role') + '=\"dropdownlist\"/>').attr(attr).appendTo(container);\n $('<span ' + kendo.attr('for') + '=\"' + options.field + '\" class=\"k-invalid-msg\"/>').hide().appendTo(container);\n }\n };\n var mobileEditors = {\n 'number': function (container, options) {\n var attr = createAttributes(options);\n attr = addIdAttribute(container, attr);\n $('<input type=\"number\"/>').attr(attr).appendTo(container);\n },\n 'date': function (container, options) {\n var attr = createAttributes(options);\n attr = addIdAttribute(container, attr);\n $('<input type=\"date\"/>').attr(attr).appendTo(container);\n },\n 'string': function (container, options) {\n var attr = createAttributes(options);\n attr = addIdAttribute(container, attr);\n $('<input type=\"text\" />').attr(attr).appendTo(container);\n },\n 'boolean': function (container, options) {\n var attr = createAttributes(options);\n attr = addIdAttribute(container, attr);\n $('<input type=\"checkbox\" />').attr(attr).appendTo(container);\n },\n 'values': function (container, options) {\n var attr = createAttributes(options);\n var items = options.values;\n var select = $('<select />');\n attr = addIdAttribute(container, attr);\n for (var index in items) {\n $('<option value=\"' + items[index].value + '\">' + items[index].text + '</option>').appendTo(select);\n }\n select.attr(attr).appendTo(container);\n }\n };\n function addValidationRules(modelField, rules) {\n var validation = modelField ? modelField.validation || {} : {}, rule, descriptor;\n for (rule in validation) {\n descriptor = validation[rule];\n if (isPlainObject(descriptor) && descriptor.value) {\n descriptor = descriptor.value;\n }\n if (isFunction(descriptor)) {\n rules[rule] = descriptor;\n }\n }\n }\n var Editable = Widget.extend({\n init: function (element, options) {\n var that = this;\n if (options.target) {\n options.$angular = options.target.options.$angular;\n if (options.target.pane) {\n that._isMobile = true;\n }\n }\n Widget.fn.init.call(that, element, options);\n that._validateProxy = $.proxy(that._validate, that);\n that.refresh();\n },\n events: [CHANGE],\n options: {\n name: 'Editable',\n editors: editors,\n mobileEditors: mobileEditors,\n clearContainer: true,\n errorTemplate: ERRORTEMPLATE,\n skipFocus: false\n },\n editor: function (field, modelField) {\n var that = this, editors = that._isMobile ? mobileEditors : that.options.editors, isObject = isPlainObject(field), fieldName = isObject ? field.field : field, model = that.options.model || {}, isValuesEditor = isObject && field.values, type = isValuesEditor ? 'values' : fieldType(modelField), isCustomEditor = isObject && field.editor, editor = isCustomEditor ? field.editor : editors[type], container = that.element.find('[' + kendo.attr('container-for') + '=' + fieldName.replace(nameSpecialCharRegExp, '\\\\$1') + ']');\n editor = editor ? editor : editors.string;\n if (isCustomEditor && typeof field.editor === 'string') {\n editor = function (container) {\n container.append(field.editor);\n };\n }\n container = container.length ? container : that.element;\n editor(container, extend(true, {}, isObject ? field : { field: fieldName }, { model: model }));\n },\n _validate: function (e) {\n var that = this, input, value = e.value, preventChangeTrigger = that._validationEventInProgress, values = {}, bindAttribute = kendo.attr('bind'), fieldName = e.field.replace(nameSpecialCharRegExp, '\\\\$1'), bindingRegex = new RegExp('(value|checked)\\\\s*:\\\\s*' + fieldName + '\\\\s*(,|$)');\n values[e.field] = e.value;\n input = $(':input[' + bindAttribute + '*=\"' + fieldName + '\"]', that.element).filter('[' + kendo.attr('validate') + '!=\\'false\\']').filter(function () {\n return bindingRegex.test($(this).attr(bindAttribute));\n });\n if (input.length > 1) {\n input = input.filter(function () {\n var element = $(this);\n return !element.is(':radio') || element.val() == value;\n });\n }\n try {\n that._validationEventInProgress = true;\n if (!that.validatable.validateInput(input) || !preventChangeTrigger && that.trigger(CHANGE, { values: values })) {\n e.preventDefault();\n }\n } finally {\n that._validationEventInProgress = false;\n }\n },\n end: function () {\n return this.validatable.validate();\n },\n destroy: function () {\n var that = this;\n that.angular('cleanup', function () {\n return { elements: that.element };\n });\n Widget.fn.destroy.call(that);\n that.options.model.unbind('set', that._validateProxy);\n that.options.model.unbind(EQUAL_SET, that._validateProxy);\n kendo.unbind(that.element);\n if (that.validatable) {\n that.validatable.destroy();\n }\n kendo.destroy(that.element);\n that.element.removeData('kendoValidator');\n if (that.element.is('[' + kendo.attr('role') + '=editable]')) {\n that.element.removeAttr(kendo.attr('role'));\n }\n },\n refresh: function () {\n var that = this, idx, length, fields = that.options.fields || [], container = that.options.clearContainer ? that.element.empty() : that.element, model = that.options.model || {}, rules = {}, field, isObject, fieldName, modelField, modelFields;\n if (!$.isArray(fields)) {\n fields = [fields];\n }\n for (idx = 0, length = fields.length; idx < length; idx++) {\n field = fields[idx];\n isObject = isPlainObject(field);\n fieldName = isObject ? field.field : field;\n modelField = (model.fields || model)[fieldName];\n addValidationRules(modelField, rules);\n that.editor(field, modelField);\n }\n if (that.options.target) {\n that.angular('compile', function () {\n return {\n elements: container,\n data: container.map(function () {\n return { dataItem: model };\n })\n };\n });\n }\n if (!length) {\n modelFields = model.fields || model;\n for (fieldName in modelFields) {\n addValidationRules(modelFields[fieldName], rules);\n }\n }\n convertToValueBinding(container);\n if (that.validatable) {\n that.validatable.destroy();\n }\n kendo.bind(container, that.options.model);\n that.options.model.unbind('set', that._validateProxy);\n that.options.model.bind('set', that._validateProxy);\n that.options.model.unbind(EQUAL_SET, that._validateProxy);\n that.options.model.bind(EQUAL_SET, that._validateProxy);\n that.validatable = new kendo.ui.Validator(container, {\n validateOnBlur: false,\n errorTemplate: that.options.errorTemplate || undefined,\n rules: rules\n });\n if (!that.options.skipFocus) {\n var focusable = container.find(':kendoFocusable').eq(0).focus();\n if (oldIE) {\n focusable.focus();\n }\n }\n }\n });\n ui.plugin(Editable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.window', [\n 'kendo.draganddrop',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'window',\n name: 'Window',\n category: 'web',\n description: 'The Window widget displays content in a modal or non-modal HTML window.',\n depends: [\n 'draganddrop',\n 'popup'\n ],\n features: [{\n id: 'window-fx',\n name: 'Animation',\n description: 'Support for animation',\n depends: ['fx']\n }]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, TabKeyTrap = kendo.ui.Popup.TabKeyTrap, Draggable = kendo.ui.Draggable, isPlainObject = $.isPlainObject, activeElement = kendo._activeElement, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, proxy = $.proxy, extend = $.extend, each = $.each, template = kendo.template, BODY = 'body', templates, NS = '.kendoWindow', MODAL_NS = '.kendoWindowModal', KWINDOW = '.k-window', KWINDOWTITLE = '.k-window-title', KWINDOWTITLEBAR = KWINDOWTITLE + 'bar', KWINDOWCONTENT = '.k-window-content', KDIALOGCONTENT = '.k-dialog-content', KWINDOWRESIZEHANDLES = '.k-resize-handle', KOVERLAY = '.k-overlay', KCONTENTFRAME = 'k-content-frame', LOADING = 'k-i-loading', KHOVERSTATE = 'k-state-hover', KFOCUSEDSTATE = 'k-state-focused', MAXIMIZEDSTATE = 'k-window-maximized', VISIBLE = ':visible', HIDDEN = 'hidden', CURSOR = 'cursor', OPEN = 'open', ACTIVATE = 'activate', DEACTIVATE = 'deactivate', CLOSE = 'close', REFRESH = 'refresh', MINIMIZE = 'minimize', MAXIMIZE = 'maximize', RESIZESTART = 'resizeStart', RESIZE = 'resize', RESIZEEND = 'resizeEnd', DRAGSTART = 'dragstart', DRAGEND = 'dragend', ERROR = 'error', OVERFLOW = 'overflow', DATADOCOVERFLOWRULE = 'original-overflow-rule', ZINDEX = 'zIndex', MINIMIZE_MAXIMIZE = '.k-window-actions .k-i-window-minimize,.k-window-actions .k-i-window-maximize', KPIN = '.k-i-pin', KUNPIN = '.k-i-unpin', PIN_UNPIN = KPIN + ',' + KUNPIN, TITLEBAR_BUTTONS = '.k-window-titlebar .k-window-action', REFRESHICON = '.k-window-titlebar .k-i-refresh', WINDOWEVENTSHANDLED = 'WindowEventsHandled', zero = /^0[a-z]*$/i, isLocalUrl = kendo.isLocalUrl, SIZE = {\n small: 'k-window-sm',\n medium: 'k-window-md',\n large: 'k-window-lg'\n };\n function defined(x) {\n return typeof x != 'undefined';\n }\n function toInt(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n function constrain(value, low, high) {\n var normalizedValue;\n if (value && isNaN(value) && value.toString().indexOf('px') < 0) {\n normalizedValue = value;\n } else {\n normalizedValue = Math.max(Math.min(parseInt(value, 10), high === Infinity ? high : parseInt(high, 10)), low === -Infinity ? low : parseInt(low, 10));\n }\n return normalizedValue;\n }\n function executableScript() {\n return !this.type || this.type.toLowerCase().indexOf('script') >= 0;\n }\n function getPosition(elem) {\n var result = {\n top: elem.offsetTop,\n left: elem.offsetLeft\n }, parent = elem.offsetParent;\n while (parent) {\n result.top += parent.offsetTop;\n result.left += parent.offsetLeft;\n var parentOverflowX = $(parent).css('overflowX');\n var parentOverflowY = $(parent).css('overflowY');\n if (parentOverflowY === 'auto' || parentOverflowY === 'scroll') {\n result.top -= parent.scrollTop;\n }\n if (parentOverflowX === 'auto' || parentOverflowX === 'scroll') {\n result.left -= parent.scrollLeft;\n }\n parent = parent.offsetParent;\n }\n return result;\n }\n var Window = Widget.extend({\n init: function (element, options) {\n var that = this, wrapper, offset = {}, visibility, display, position, isVisible = false, content, windowContent, windowFrame, globalWindow, suppressActions = options && options.actions && !options.actions.length, id;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n position = options.position;\n element = that.element;\n content = options.content;\n globalWindow = $(window);\n if (suppressActions) {\n options.actions = [];\n }\n that.appendTo = $(options.appendTo);\n that.containment = options.draggable.containment ? $(options.draggable.containment).first() : null;\n if (content && !isPlainObject(content)) {\n content = options.content = { url: content };\n }\n element.find('script').filter(executableScript).remove();\n if (!element.parent().is(that.appendTo) && !that.containment && (position.top === undefined || position.left === undefined)) {\n if (element.is(VISIBLE)) {\n offset = element.offset();\n isVisible = true;\n } else {\n visibility = element.css('visibility');\n display = element.css('display');\n element.css({\n visibility: HIDDEN,\n display: ''\n });\n offset = element.offset();\n element.css({\n visibility: visibility,\n display: display\n });\n }\n if (position.top === undefined) {\n position.top = offset.top;\n }\n if (position.left === undefined) {\n position.left = offset.left;\n }\n }\n if (!defined(options.visible) || options.visible === null) {\n options.visible = element.is(VISIBLE);\n }\n wrapper = that.wrapper = element.closest(KWINDOW);\n if (!element.is('.k-content') || !wrapper[0]) {\n element.addClass('k-window-content k-content');\n that._createWindow(element, options);\n wrapper = that.wrapper = element.closest(KWINDOW);\n that.title(that.options.title);\n that._dimensions();\n }\n that.minTop = that.minLeft = -Infinity;\n that.maxTop = that.maxLeft = Infinity;\n that._position();\n if (content) {\n that.refresh(content);\n }\n if (options.visible) {\n that.toFront();\n }\n windowContent = wrapper.children(KWINDOWCONTENT);\n that._tabindex(windowContent);\n if (options.visible && options.modal) {\n that._overlay(wrapper.is(VISIBLE)).css({ opacity: 0.5 });\n }\n wrapper.on('mouseenter' + NS, TITLEBAR_BUTTONS, proxy(that._buttonEnter, that)).on('mouseleave' + NS, TITLEBAR_BUTTONS, proxy(that._buttonLeave, that)).on('click' + NS, '> ' + TITLEBAR_BUTTONS, proxy(that._windowActionHandler, that)).on('keydown' + NS, proxy(that._keydown, that)).on('focus' + NS, proxy(that._focus, that)).on('blur' + NS, proxy(that._blur, that));\n windowContent.on('keydown' + NS, proxy(that._keydown, that)).on('focus' + NS, proxy(that._focus, that)).on('blur' + NS, proxy(that._blur, that));\n windowFrame = windowContent.find('.' + KCONTENTFRAME)[0];\n if (windowFrame && !globalWindow.data(WINDOWEVENTSHANDLED)) {\n globalWindow.on('blur' + NS, function () {\n var element = $(document.activeElement).parent(KWINDOWCONTENT);\n if (element.length) {\n var windowInstance = kendo.widgetInstance(element);\n windowInstance._focus();\n }\n });\n globalWindow.on('focus' + NS, function () {\n $(KWINDOWCONTENT).not(KDIALOGCONTENT).each(function (i, element) {\n kendo.widgetInstance($(element))._blur();\n });\n });\n globalWindow.data(WINDOWEVENTSHANDLED, true);\n }\n this._resizable();\n this._draggable();\n if (options.pinned && this.wrapper.is(':visible')) {\n that.pin();\n }\n id = element.attr('id');\n if (id) {\n id = id + '_wnd_title';\n wrapper.children(KWINDOWTITLEBAR).children(KWINDOWTITLE).attr('id', id);\n windowContent.attr({\n 'role': 'dialog',\n 'aria-labelledby': id\n });\n }\n wrapper.add(wrapper.children('.k-resize-handle,' + KWINDOWTITLEBAR)).on('mousedown' + NS, proxy(that.toFront, that));\n that.touchScroller = kendo.touchScroller(element);\n that._resizeHandler = proxy(that._onDocumentResize, that);\n that._marker = kendo.guid().substring(0, 8);\n $(window).on('resize' + NS + that._marker, that._resizeHandler);\n if (options.visible) {\n that.trigger(OPEN);\n that.trigger(ACTIVATE);\n }\n kendo.notify(that);\n if (this.options.modal) {\n this._tabKeyTrap = new TabKeyTrap(wrapper);\n this._tabKeyTrap.trap();\n this._tabKeyTrap.shouldTrap = function () {\n return windowContent.data('isFront');\n };\n }\n },\n _buttonEnter: function (e) {\n $(e.currentTarget).addClass(KHOVERSTATE);\n },\n _buttonLeave: function (e) {\n $(e.currentTarget).removeClass(KHOVERSTATE);\n },\n _focus: function () {\n this.wrapper.addClass(KFOCUSEDSTATE);\n },\n _blur: function () {\n this.wrapper.removeClass(KFOCUSEDSTATE);\n },\n _dimensions: function () {\n var wrapper = this.wrapper;\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var maxHeight = options.maxHeight;\n var sizeClass = options.size;\n var dimensions = [\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight'\n ];\n var contentBoxSizing = wrapper.css('box-sizing') == 'content-box';\n var lrBorderWidth = contentBoxSizing ? toInt(wrapper, 'border-left-width') + toInt(wrapper, 'border-right-width') : 0;\n var tbBorderWidth = contentBoxSizing ? toInt(wrapper, 'border-top-width') + toInt(wrapper, 'border-bottom-width') : 0;\n var paddingTop = contentBoxSizing ? toInt(wrapper, 'padding-top') : 0;\n if (this.containment && !this._isPinned) {\n this._updateBoundaries();\n options.maxHeight = Math.min(this.containment.height - (tbBorderWidth + paddingTop), maxHeight);\n options.maxWidth = Math.min(this.containment.width - lrBorderWidth, options.maxWidth);\n }\n for (var i = 0; i < dimensions.length; i++) {\n var value = options[dimensions[i]] || '';\n if (value != Infinity) {\n wrapper.css(dimensions[i], value);\n }\n }\n if (maxHeight != Infinity) {\n this.element.css('maxHeight', maxHeight);\n }\n if (width) {\n wrapper.width(constrain(width, options.minWidth, options.maxWidth));\n } else {\n wrapper.width('');\n }\n if (height) {\n wrapper.height(constrain(height, options.minHeight, options.maxHeight));\n } else {\n wrapper.height('');\n }\n if (!options.visible) {\n wrapper.hide();\n }\n if (sizeClass && SIZE[sizeClass]) {\n wrapper.addClass(SIZE[sizeClass]);\n }\n },\n _position: function () {\n var wrapper = this.wrapper, position = this.options.position;\n this._updateBoundaries();\n if (this.containment) {\n position.top = Math.min(this.minTop + (position.top || 0), this.maxTop);\n position.left = Math.min(this.minLeft + (position.left || 0), this.maxLeft);\n }\n if (position.top === 0) {\n position.top = position.top.toString();\n }\n if (position.left === 0) {\n position.left = position.left.toString();\n }\n wrapper.css({\n top: position.top || '',\n left: position.left || ''\n });\n },\n _updateBoundaries: function () {\n var containment = this.containment;\n if (!containment) {\n return null;\n }\n containment.width = containment.innerWidth();\n containment.height = containment.innerHeight();\n if (parseInt(containment.width, 10) > containment[0].clientWidth) {\n containment.width -= kendo.support.scrollbar();\n }\n if (parseInt(containment.height, 10) > containment[0].clientHeight) {\n containment.height -= kendo.support.scrollbar();\n }\n containment.position = getPosition(containment[0]);\n if (this._isPinned) {\n this.minTop = this.minLeft = -Infinity;\n this.maxTop = this.maxLeft = Infinity;\n } else {\n this.minTop = containment.scrollTop();\n this.minLeft = containment.scrollLeft();\n this.maxLeft = this.minLeft + containment.width - outerWidth(this.wrapper, true);\n this.maxTop = this.minTop + containment.height - outerHeight(this.wrapper, true);\n }\n },\n _animationOptions: function (id) {\n var animation = this.options.animation;\n var basicAnimation = {\n open: { effects: {} },\n close: {\n hide: true,\n effects: {}\n }\n };\n return animation && animation[id] || basicAnimation[id];\n },\n _resize: function () {\n kendo.resize(this.element.children());\n },\n _resizable: function () {\n var resizable = this.options.resizable;\n var wrapper = this.wrapper;\n if (this.resizing) {\n wrapper.off('dblclick' + NS).children(KWINDOWRESIZEHANDLES).remove();\n this.resizing.destroy();\n this.resizing = null;\n }\n if (resizable) {\n wrapper.on('dblclick' + NS, KWINDOWTITLEBAR, proxy(function (e) {\n if (!$(e.target).closest('.k-window-action').length) {\n this.toggleMaximization();\n }\n }, this));\n each('n e s w se sw ne nw'.split(' '), function (index, handler) {\n wrapper.append(templates.resizeHandle(handler));\n });\n this.resizing = new WindowResizing(this);\n }\n wrapper = null;\n },\n _draggable: function () {\n var draggable = this.options.draggable;\n if (this.dragging) {\n this.dragging.destroy();\n this.dragging = null;\n }\n if (draggable) {\n this.dragging = new WindowDragging(this, draggable.dragHandle || KWINDOWTITLEBAR);\n }\n },\n _actions: function () {\n var options = this.options;\n var actions = options.actions;\n var pinned = options.pinned;\n var titlebar = this.wrapper.children(KWINDOWTITLEBAR);\n var container = titlebar.find('.k-window-actions');\n var windowSpecificCommands = [\n 'maximize',\n 'minimize'\n ];\n actions = $.map(actions, function (action) {\n action = pinned && action.toLowerCase() === 'pin' ? 'unpin' : action;\n return { name: windowSpecificCommands.indexOf(action.toLowerCase()) > -1 ? 'window-' + action : action };\n });\n container.html(kendo.render(templates.action, actions));\n },\n setOptions: function (options) {\n var that = this;\n var sizeClass = that.options.size;\n var cachedOptions = JSON.parse(JSON.stringify(options));\n extend(options.position, that.options.position);\n extend(options.position, cachedOptions.position);\n Widget.fn.setOptions.call(that, options);\n var scrollable = that.options.scrollable !== false;\n that.restore();\n if (typeof options.title !== 'undefined') {\n that.title(options.title);\n }\n that.wrapper.removeClass(SIZE[sizeClass]);\n that._dimensions();\n that._position();\n that._resizable();\n that._draggable();\n that._actions();\n if (typeof options.modal !== 'undefined') {\n var visible = that.options.visible !== false;\n that._enableDocumentScrolling();\n that._overlay(options.modal && visible);\n }\n that.element.css(OVERFLOW, scrollable ? '' : 'hidden');\n },\n events: [\n OPEN,\n ACTIVATE,\n DEACTIVATE,\n CLOSE,\n MINIMIZE,\n MAXIMIZE,\n REFRESH,\n RESIZESTART,\n RESIZE,\n RESIZEEND,\n DRAGSTART,\n DRAGEND,\n ERROR\n ],\n options: {\n name: 'Window',\n animation: {\n open: {\n effects: {\n zoom: { direction: 'in' },\n fade: { direction: 'in' }\n },\n duration: 350\n },\n close: {\n effects: {\n zoom: {\n direction: 'out',\n properties: { scale: 0.7 }\n },\n fade: { direction: 'out' }\n },\n duration: 350,\n hide: true\n }\n },\n title: '',\n actions: ['Close'],\n autoFocus: true,\n modal: false,\n size: 'auto',\n resizable: true,\n draggable: true,\n minWidth: 90,\n minHeight: 50,\n maxWidth: Infinity,\n maxHeight: Infinity,\n pinned: false,\n scrollable: true,\n position: {},\n content: null,\n visible: null,\n height: null,\n width: null,\n appendTo: 'body',\n isMaximized: false,\n isMinimized: false\n },\n _closable: function () {\n return $.inArray('close', $.map(this.options.actions, function (x) {\n return x.toLowerCase();\n })) > -1;\n },\n _keydown: function (e) {\n var that = this, options = that.options, keys = kendo.keys, keyCode = e.keyCode, wrapper = that.wrapper, offset, handled, distance = 10, isMaximized = options.isMaximized, isMinimized = options.isMinimized, newWidth, newHeight, w, h;\n if (keyCode == keys.ESC && that._closable()) {\n e.stopPropagation();\n that._close(false);\n }\n if (e.target != e.currentTarget || that._closing) {\n return;\n }\n if (e.altKey && keyCode == 82) {\n that.refresh();\n }\n if (e.altKey && keyCode == 80) {\n if (that.options.pinned) {\n that.unpin();\n } else {\n that.pin();\n }\n }\n if (e.altKey && keyCode == keys.UP) {\n if (isMinimized) {\n that.restore();\n that.element.focus();\n } else if (!isMaximized) {\n that.maximize();\n that.element.focus();\n }\n } else if (e.altKey && keyCode == keys.DOWN) {\n if (!isMinimized && !isMaximized) {\n that.minimize();\n that.wrapper.focus();\n } else if (isMaximized) {\n that.restore();\n that.element.focus();\n }\n }\n offset = kendo.getOffset(wrapper);\n if (that.containment && !that._isPinned) {\n offset = that.options.position;\n }\n if (options.draggable && !e.ctrlKey && !e.altKey && !isMaximized) {\n that._updateBoundaries();\n if (keyCode == keys.UP) {\n offset.top = constrain(offset.top - distance, that.minTop, that.maxTop);\n handled = wrapper.css('top', offset.top);\n } else if (keyCode == keys.DOWN) {\n offset.top = constrain(offset.top + distance, that.minTop, that.maxTop);\n handled = wrapper.css('top', offset.top);\n } else if (keyCode == keys.LEFT) {\n offset.left = constrain(offset.left - distance, that.minLeft, that.maxLeft);\n handled = wrapper.css('left', offset.left);\n } else if (keyCode == keys.RIGHT) {\n offset.left = constrain(offset.left + distance, that.minLeft, that.maxLeft);\n handled = wrapper.css('left', offset.left);\n }\n }\n if (options.resizable && e.ctrlKey && !isMaximized && !isMinimized) {\n if (keyCode == keys.UP) {\n handled = true;\n newHeight = wrapper.height() - distance;\n } else if (keyCode == keys.DOWN) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newHeight = Math.min(wrapper.height() + distance, that.containment.height - offset.top - toInt(wrapper, 'padding-top') - toInt(wrapper, 'borderBottomWidth') - toInt(wrapper, 'borderTopWidth'));\n } else {\n newHeight = wrapper.height() + distance;\n }\n }\n if (keyCode == keys.LEFT) {\n handled = true;\n newWidth = wrapper.width() - distance;\n } else if (keyCode == keys.RIGHT) {\n handled = true;\n if (that.containment && !that._isPinned) {\n newWidth = Math.min(wrapper.width() + distance, that.containment.width - offset.left - toInt(wrapper, 'borderLeftWidth') - toInt(wrapper, 'borderRightWidth'));\n } else {\n newWidth = wrapper.width() + distance;\n }\n }\n if (handled) {\n w = constrain(newWidth, options.minWidth, options.maxWidth);\n h = constrain(newHeight, options.minHeight, options.maxHeight);\n if (!isNaN(w)) {\n wrapper.width(w);\n that.options.width = w + 'px';\n }\n if (!isNaN(h)) {\n wrapper.height(h);\n that.options.height = h + 'px';\n }\n that.resize();\n }\n }\n if (handled) {\n e.preventDefault();\n }\n },\n _overlay: function (visible) {\n var overlay = this.containment ? this.containment.children(KOVERLAY) : this.appendTo.children(KOVERLAY), wrapper = this.wrapper;\n if (!overlay.length) {\n overlay = $('<div class=\\'k-overlay\\' />');\n }\n overlay.insertBefore(wrapper[0]).toggle(visible).css(ZINDEX, parseInt(wrapper.css(ZINDEX), 10) - 1);\n if (this.options.modal.preventScroll && !this.containment) {\n this._stopDocumentScrolling();\n }\n return overlay;\n },\n _actionForIcon: function (icon) {\n var iconClass = /\\bk-i(-\\w+)+\\b/.exec(icon[0].className)[0];\n return {\n 'k-i-close': '_close',\n 'k-i-window-maximize': 'maximize',\n 'k-i-window-minimize': 'minimize',\n 'k-i-window-restore': 'restore',\n 'k-i-refresh': 'refresh',\n 'k-i-pin': 'pin',\n 'k-i-unpin': 'unpin'\n }[iconClass];\n },\n _windowActionHandler: function (e) {\n if (this._closing) {\n return;\n }\n var icon = $(e.target).closest('.k-window-action').find('.k-icon');\n var action = this._actionForIcon(icon);\n if (action) {\n e.preventDefault();\n this[action]();\n return false;\n }\n },\n _modals: function () {\n var that = this;\n var zStack = $(KWINDOW).filter(function () {\n var dom = $(this);\n var object = that._object(dom);\n var options = object && object.options;\n return options && options.modal && options.visible && options.appendTo === that.options.appendTo && dom.is(VISIBLE);\n }).sort(function (a, b) {\n return +$(a).css('zIndex') - +$(b).css('zIndex');\n });\n that = null;\n return zStack;\n },\n _object: function (element) {\n var content = element.children(KWINDOWCONTENT);\n var widget = kendo.widgetInstance(content);\n if (widget) {\n return widget;\n }\n return undefined;\n },\n center: function () {\n var that = this, position = that.options.position, wrapper = that.wrapper, documentWindow = $(window), scrollTop = 0, scrollLeft = 0, newTop, newLeft;\n if (that.options.isMaximized) {\n return that;\n }\n if (that.options.pinned && !that._isPinned) {\n that.pin();\n }\n if (!that.options.pinned) {\n scrollTop = documentWindow.scrollTop();\n scrollLeft = documentWindow.scrollLeft();\n }\n if (this.containment && !that.options.pinned) {\n newTop = this.minTop + (this.maxTop - this.minTop) / 2;\n newLeft = this.minLeft + (this.maxLeft - this.minLeft) / 2;\n } else {\n that._scrollIsAppended = true;\n newLeft = scrollLeft + Math.max(0, (documentWindow.width() - wrapper.width()) / 2);\n newTop = scrollTop + Math.max(0, (documentWindow.height() - wrapper.height() - toInt(wrapper, 'paddingTop')) / 2);\n }\n wrapper.css({\n left: newLeft,\n top: newTop\n });\n position.top = newTop;\n position.left = newLeft;\n return that;\n },\n title: function (title) {\n var that = this, value, encoded = true, wrapper = that.wrapper, titleBar = wrapper.children(KWINDOWTITLEBAR), titleElement = titleBar.children(KWINDOWTITLE), titleBarHeight, display, visibility;\n if (!arguments.length) {\n return titleElement.html();\n }\n if ($.isPlainObject(title)) {\n value = typeof title.text !== 'undefined' ? title.text : '';\n encoded = title.encoded !== false;\n } else {\n value = title;\n }\n if (value === false) {\n wrapper.addClass('k-window-titleless');\n titleBar.remove();\n } else {\n if (!titleBar.length) {\n wrapper.prepend(templates.titlebar({ title: encoded ? kendo.htmlEncode(value) : value }));\n that._actions();\n titleBar = wrapper.children(KWINDOWTITLEBAR);\n } else {\n titleElement.html(encoded ? kendo.htmlEncode(value) : value);\n }\n visibility = wrapper.css('visibility');\n display = wrapper.css('display');\n if (visibility === HIDDEN) {\n wrapper.css({ display: '' });\n titleBarHeight = parseInt(outerHeight(titleBar), 10);\n wrapper.css({ display: display });\n } else {\n wrapper.css({\n visibility: HIDDEN,\n display: ''\n });\n titleBarHeight = parseInt(outerHeight(titleBar), 10);\n wrapper.css({\n visibility: visibility,\n display: display\n });\n }\n wrapper.css('padding-top', titleBarHeight);\n titleBar.css('margin-top', -titleBarHeight);\n }\n that.options.title = value;\n return that;\n },\n content: function (html, data) {\n var content = this.wrapper.children(KWINDOWCONTENT), scrollContainer = content.children('.km-scroll-container');\n content = scrollContainer[0] ? scrollContainer : content;\n if (!defined(html)) {\n return content.html();\n }\n this.angular('cleanup', function () {\n return { elements: content.children() };\n });\n kendo.destroy(this.element.children());\n content.empty().html(html);\n this.angular('compile', function () {\n var a = [];\n for (var i = content.length; --i >= 0;) {\n a.push({ dataItem: data });\n }\n return {\n elements: content.children(),\n data: a\n };\n });\n return this;\n },\n open: function () {\n var that = this, wrapper = that.wrapper, options = that.options, showOptions = this._animationOptions('open'), contentElement = wrapper.children(KWINDOWCONTENT), overlay, otherModalsVisible, containmentContext = this.containment && !that._isPinned, doc = containmentContext ? this.containment : $(document);\n if (!that.trigger(OPEN)) {\n if (that._closing) {\n wrapper.kendoStop(true, true);\n }\n that._closing = false;\n that.toFront();\n if (options.autoFocus) {\n that.element.focus();\n }\n options.visible = true;\n if (options.modal) {\n otherModalsVisible = !!that._modals().length;\n overlay = that._overlay(otherModalsVisible);\n overlay.kendoStop(true, true);\n if (showOptions.duration && kendo.effects.Fade && !otherModalsVisible) {\n var overlayFx = kendo.fx(overlay).fadeIn();\n overlayFx.duration(showOptions.duration || 0);\n overlayFx.endValue(0.5);\n overlayFx.play();\n } else {\n overlay.css('opacity', 0.5);\n }\n overlay.show();\n $(window).on('focus' + MODAL_NS, function () {\n if (contentElement.data('isFront') && !$(document.activeElement).closest(contentElement).length) {\n that.element.focus();\n }\n });\n }\n if (!wrapper.is(VISIBLE)) {\n contentElement.css(OVERFLOW, HIDDEN);\n wrapper.show().kendoStop().kendoAnimate({\n effects: showOptions.effects,\n duration: showOptions.duration,\n complete: proxy(this._activate, this)\n });\n }\n }\n if (options.isMaximized) {\n that._containerScrollTop = doc.scrollTop();\n that._containerScrollLeft = doc.scrollLeft();\n that._stopDocumentScrolling();\n }\n if (this.options.pinned && !this._isPinned) {\n this.pin();\n }\n return that;\n },\n _activate: function () {\n var scrollable = this.options.scrollable !== false;\n if (this.options.autoFocus) {\n this.element.focus();\n }\n this.element.css(OVERFLOW, scrollable ? '' : 'hidden');\n kendo.resize(this.element.children());\n this.trigger(ACTIVATE);\n },\n _removeOverlay: function (suppressAnimation) {\n var modals = this._modals();\n var options = this.options;\n var hideOverlay = options.modal && !modals.length;\n var overlay = options.modal ? this._overlay(true) : $(undefined);\n var hideOptions = this._animationOptions('close');\n if (hideOverlay) {\n if (!suppressAnimation && hideOptions.duration && kendo.effects.Fade) {\n var overlayFx = kendo.fx(overlay).fadeOut();\n overlayFx.duration(hideOptions.duration || 0);\n overlayFx.startValue(0.5);\n overlayFx.play();\n } else {\n this._overlay(false).remove();\n }\n if (options.modal.preventScroll) {\n this._enableDocumentScrolling();\n }\n } else if (modals.length) {\n this._object(modals.last())._overlay(true);\n if (options.modal.preventScroll) {\n this._stopDocumentScrolling();\n }\n }\n },\n _close: function (systemTriggered) {\n var that = this, wrapper = that.wrapper, options = that.options, showOptions = this._animationOptions('open'), hideOptions = this._animationOptions('close'), containmentContext = this.containment && !that._isPinned, doc = containmentContext ? this.containment : $(document), defaultPrevented;\n if (that._closing) {\n return;\n }\n defaultPrevented = that.trigger(CLOSE, { userTriggered: !systemTriggered });\n that._closing = !defaultPrevented;\n if (wrapper.is(VISIBLE) && !defaultPrevented) {\n options.visible = false;\n $(KWINDOW).each(function (i, element) {\n var contentElement = $(element).children(KWINDOWCONTENT);\n if (element != wrapper && contentElement.find('> .' + KCONTENTFRAME).length > 0) {\n contentElement.children(KOVERLAY).remove();\n }\n });\n this._removeOverlay();\n wrapper.kendoStop().kendoAnimate({\n effects: hideOptions.effects || showOptions.effects,\n reverse: hideOptions.reverse === true,\n duration: hideOptions.duration,\n complete: proxy(this._deactivate, this)\n });\n $(window).off(MODAL_NS);\n }\n if (that.options.isMaximized) {\n that._enableDocumentScrolling();\n if (that._containerScrollTop && that._containerScrollTop > 0) {\n doc.scrollTop(that._containerScrollTop);\n }\n if (that._containerScrollLeft && that._containerScrollLeft > 0) {\n doc.scrollLeft(that._containerScrollLeft);\n }\n }\n },\n _deactivate: function () {\n var that = this;\n that.wrapper.hide().css('opacity', '');\n that.trigger(DEACTIVATE);\n if (that.options.modal) {\n var lastModal = that._object(that._modals().last());\n if (lastModal) {\n lastModal.toFront();\n }\n }\n },\n close: function () {\n this._close(true);\n return this;\n },\n _actionable: function (element) {\n return $(element).is(TITLEBAR_BUTTONS + ',' + TITLEBAR_BUTTONS + ' .k-icon,:input,a');\n },\n _shouldFocus: function (target) {\n var active = activeElement(), element = this.element;\n return this.options.autoFocus && !$(active).is(element) && !this._actionable(target) && (!element.find(active).length || !element.find(target).length);\n },\n toFront: function (e) {\n var that = this, wrapper = that.wrapper, currentWindow = wrapper[0], containmentContext = that.containment && !that._isPinned, zIndex = +wrapper.css(ZINDEX), originalZIndex = zIndex, target = e && e.target || null;\n $(KWINDOW).each(function (i, element) {\n var windowObject = $(element), zIndexNew = windowObject.css(ZINDEX), contentElement = windowObject.children(KWINDOWCONTENT);\n if (!isNaN(zIndexNew)) {\n zIndex = Math.max(+zIndexNew, zIndex);\n }\n contentElement.data('isFront', element == currentWindow);\n if (element != currentWindow && contentElement.find('> .' + KCONTENTFRAME).length > 0) {\n contentElement.append(templates.overlay);\n }\n });\n if (!wrapper[0].style.zIndex || originalZIndex < zIndex) {\n wrapper.css(ZINDEX, zIndex + 2);\n }\n that.element.find('> .k-overlay').remove();\n if (that._shouldFocus(target)) {\n if (that.isMinimized()) {\n that.wrapper.focus();\n } else if ($(target).is(KOVERLAY)) {\n setTimeout(function () {\n that.element.focus();\n });\n } else {\n that.element.focus();\n }\n var scrollTop = containmentContext ? that.containment.scrollTop() : $(window).scrollTop(), windowTop = parseInt(wrapper.position().top, 10);\n if (!that.options.pinned && windowTop > 0 && windowTop < scrollTop) {\n if (scrollTop > 0) {\n $(window).scrollTop(windowTop);\n } else {\n wrapper.css('top', scrollTop);\n }\n }\n }\n wrapper = null;\n return that;\n },\n toggleMaximization: function () {\n if (this._closing) {\n return this;\n }\n return this[this.options.isMaximized ? 'restore' : 'maximize']();\n },\n restore: function () {\n var that = this;\n var options = that.options;\n var minHeight = options.minHeight;\n var restoreOptions = that.restoreOptions;\n var shouldRestrictTop;\n var container = that.containment && !that._isPinned ? that.containment : $(document);\n if (!options.isMaximized && !options.isMinimized) {\n return that;\n }\n if (minHeight && minHeight != Infinity) {\n that.wrapper.css('min-height', minHeight);\n }\n if (restoreOptions && !options.isMaximized) {\n restoreOptions.height = constrain(restoreOptions.height, that.options.minHeight, that.options.maxHeight);\n shouldRestrictTop = options.position.top + parseInt(restoreOptions.height, 10) > that.maxTop;\n if (shouldRestrictTop) {\n options.position.top = constrain(options.position.top, that.minTop, that.maxTop - parseInt(restoreOptions.height, 10));\n extend(restoreOptions, {\n left: options.position.left,\n top: options.position.top\n });\n }\n }\n that.wrapper.css({\n position: options.pinned ? 'fixed' : 'absolute',\n left: restoreOptions.left,\n top: restoreOptions.top,\n width: restoreOptions.width,\n height: restoreOptions.height\n }).removeClass(MAXIMIZEDSTATE).find('.k-window-content,.k-resize-handle').show().end().find('.k-window-titlebar .k-i-window-restore').parent().remove().end().end().find(MINIMIZE_MAXIMIZE).parent().show().end().end().find(PIN_UNPIN).parent().show();\n if (options.isMaximized) {\n that.wrapper.find('.k-i-window-maximize').parent().focus();\n } else if (options.isMinimized) {\n that.wrapper.find('.k-i-window-minimize').parent().focus();\n }\n that.options.width = restoreOptions.width;\n that.options.height = restoreOptions.height;\n if (!that.options.modal.preventScroll) {\n that._enableDocumentScrolling();\n }\n if (that._containerScrollTop && that._containerScrollTop > 0) {\n container.scrollTop(that._containerScrollTop);\n }\n if (that._containerScrollLeft && that._containerScrollLeft > 0) {\n container.scrollLeft(that._containerScrollLeft);\n }\n options.isMaximized = options.isMinimized = false;\n that.wrapper.removeAttr('tabindex');\n that.wrapper.removeAttr('aria-labelled-by');\n that.resize();\n return that;\n },\n _sizingAction: function (actionId, callback) {\n var that = this, wrapper = that.wrapper, style = wrapper[0].style, options = that.options;\n if (options.isMaximized || options.isMinimized) {\n return that;\n }\n that.restoreOptions = {\n width: style.width,\n height: style.height\n };\n wrapper.children(KWINDOWRESIZEHANDLES).hide().end().children(KWINDOWTITLEBAR).find(MINIMIZE_MAXIMIZE).parent().hide().eq(0).before(templates.action({ name: 'window-restore' }));\n callback.call(that);\n that.wrapper.children(KWINDOWTITLEBAR).find(PIN_UNPIN).parent().toggle(actionId !== 'maximize');\n that.trigger(actionId);\n wrapper.find('.k-i-window-restore').parent().focus();\n return that;\n },\n maximize: function () {\n this._sizingAction('maximize', function () {\n var that = this, wrapper = that.wrapper, containmentContext = this.containment && !that._isPinned, position = wrapper.position(), doc = $(document);\n extend(that.restoreOptions, {\n left: position.left + (containmentContext ? this.containment.scrollLeft() : 0),\n top: position.top + (containmentContext ? this.containment.scrollTop() : 0)\n });\n this._containerScrollTop = containmentContext ? this.containment.scrollTop() : doc.scrollTop();\n this._containerScrollLeft = containmentContext ? this.containment.scrollLeft() : doc.scrollLeft();\n that._stopDocumentScrolling();\n wrapper.css({\n top: containmentContext ? this.containment.scrollTop() : 0,\n left: containmentContext ? this.containment.scrollLeft() : 0,\n position: containmentContext ? 'absolute' : 'fixed'\n }).addClass(MAXIMIZEDSTATE);\n that.options.isMaximized = true;\n that._onDocumentResize();\n });\n return this;\n },\n _stopDocumentScrolling: function () {\n var that = this;\n var containment = that.containment;\n if (containment && !that._isPinned) {\n that._storeOverflowRule(containment);\n containment.css(OVERFLOW, HIDDEN);\n that.wrapper.css({\n maxWidth: containment.innerWidth(),\n maxHeight: containment.innerHeight()\n });\n return;\n }\n var $body = $('body');\n that._storeOverflowRule($body);\n $body.css(OVERFLOW, HIDDEN);\n var $html = $('html');\n that._storeOverflowRule($html);\n $html.css(OVERFLOW, HIDDEN);\n },\n _enableDocumentScrolling: function () {\n var that = this;\n var containment = that.containment;\n if (containment && !that._isPinned) {\n that._restoreOverflowRule(containment);\n that.wrapper.css({\n maxWidth: containment.width,\n maxHeight: containment.height\n });\n return;\n }\n that._restoreOverflowRule($(document.body));\n that._restoreOverflowRule($('html'));\n },\n _storeOverflowRule: function ($element) {\n if (this._isOverflowStored($element)) {\n return;\n }\n var overflowRule = $element.get(0).style.overflow;\n if (typeof overflowRule === 'string') {\n $element.data(DATADOCOVERFLOWRULE, overflowRule);\n }\n },\n _isOverflowStored: function ($element) {\n return typeof $element.data(DATADOCOVERFLOWRULE) === 'string';\n },\n _restoreOverflowRule: function ($element) {\n var overflowRule = $element.data(DATADOCOVERFLOWRULE);\n if (overflowRule !== null && overflowRule !== undefined) {\n $element.css(OVERFLOW, overflowRule);\n $element.removeData(DATADOCOVERFLOWRULE);\n } else {\n $element.css(OVERFLOW, '');\n }\n },\n isMaximized: function () {\n return this.options.isMaximized;\n },\n minimize: function () {\n this._sizingAction('minimize', function () {\n var that = this;\n that.wrapper.css({\n height: '',\n minHeight: ''\n });\n that.element.hide();\n that.options.isMinimized = true;\n });\n this.wrapper.attr('tabindex', 0);\n this.wrapper.attr('aria-labelled-by', this.element.attr('aria-labelled-by'));\n this._updateBoundaries();\n return this;\n },\n isMinimized: function () {\n return this.options.isMinimized;\n },\n pin: function () {\n var that = this, win = $(window), wrapper = that.wrapper, options = that.options, position = options.position, top = this.containment ? getPosition(wrapper[0]).top + toInt(this.containment, 'borderTopWidth') : toInt(wrapper, 'top'), left = this.containment ? getPosition(wrapper[0]).left + toInt(this.containment, 'borderLeftWidth') : toInt(wrapper, 'left');\n if (!that.options.isMaximized) {\n position.top = top;\n position.left = left;\n if (that._scrollIsAppended && (!this.containment || this.containment.css('position') !== 'fixed')) {\n position.top -= win.scrollTop();\n position.left -= win.scrollLeft();\n that._scrollIsAppended = false;\n }\n wrapper.css(extend(position, { position: 'fixed' }));\n wrapper.children(KWINDOWTITLEBAR).find(KPIN).addClass('k-i-unpin').removeClass('k-i-pin');\n that._isPinned = true;\n that.options.pinned = true;\n if (this.containment) {\n options.maxWidth = options.maxHeight = Infinity;\n wrapper.css({\n maxWidth: '',\n maxHeight: ''\n });\n }\n }\n },\n unpin: function () {\n var that = this, win = $(window), wrapper = that.wrapper, options = that.options, position = that.options.position, containment = that.containment, top = parseInt(wrapper.css('top'), 10) + win.scrollTop(), left = parseInt(wrapper.css('left'), 10) + win.scrollLeft();\n if (!that.options.isMaximized) {\n that._isPinned = false;\n that._scrollIsAppended = true;\n that.options.pinned = false;\n if (containment) {\n that._updateBoundaries();\n options.maxWidth = Math.min(containment.width, options.maxWidth);\n options.maxHeight = Math.min(containment.height - toInt(wrapper, 'padding-top'), options.maxHeight);\n wrapper.css({\n maxWidth: options.maxWidth,\n maxHeight: options.maxHeight\n });\n if (top < containment.position.top) {\n top = that.minTop;\n } else if (top > containment.position.top + containment.height) {\n top = that.maxTop;\n } else {\n top = top + containment.scrollTop() - (containment.position.top + toInt(containment, 'border-top-width'));\n }\n if (left < containment.position.left) {\n left = that.minLeft;\n } else if (left > containment.position.left + containment.width) {\n left = that.maxLeft;\n } else {\n left = left + containment.scrollLeft() - (containment.position.left + toInt(containment, 'border-left-width'));\n }\n }\n position.top = constrain(top, that.minTop, that.maxTop);\n position.left = constrain(left, that.minLeft, that.maxLeft);\n wrapper.css(extend(position, { position: '' }));\n wrapper.children(KWINDOWTITLEBAR).find(KUNPIN).addClass('k-i-pin').removeClass('k-i-unpin');\n }\n },\n _onDocumentResize: function () {\n var that = this, wrapper = that.wrapper, wnd = $(window), zoomLevel = kendo.support.zoomLevel(), contentBoxSizing = wrapper.css('box-sizing') == 'content-box', w, h;\n if (!that.options.isMaximized) {\n return;\n }\n var lrBorderWidth = contentBoxSizing ? toInt(wrapper, 'border-left-width') + toInt(wrapper, 'border-right-width') : 0;\n var tbBorderWidth = contentBoxSizing ? toInt(wrapper, 'border-top-width') + toInt(wrapper, 'border-bottom-width') : 0;\n var paddingTop = contentBoxSizing ? toInt(wrapper, 'padding-top') : 0;\n if (that.containment && !that._isPinned) {\n w = that.containment.innerWidth() - lrBorderWidth;\n h = that.containment.innerHeight() - (tbBorderWidth + paddingTop);\n } else {\n w = wnd.width() / zoomLevel - lrBorderWidth;\n h = wnd.height() / zoomLevel - (tbBorderWidth + paddingTop);\n }\n wrapper.css({\n width: w,\n height: h\n });\n that.options.width = w;\n that.options.height = h;\n that.resize();\n },\n refresh: function (options) {\n var that = this, initOptions = that.options, element = $(that.element), iframe, showIframe, url;\n if (!isPlainObject(options)) {\n options = { url: options };\n }\n options = extend({}, initOptions.content, options);\n showIframe = defined(initOptions.iframe) ? initOptions.iframe : options.iframe;\n url = options.url;\n if (url) {\n if (!defined(showIframe)) {\n showIframe = !isLocalUrl(url);\n }\n if (!showIframe) {\n that._ajaxRequest(options);\n } else {\n iframe = element.find('.' + KCONTENTFRAME)[0];\n if (iframe) {\n iframe.src = url || iframe.src;\n } else {\n element.html(templates.contentFrame(extend({}, initOptions, { content: options })));\n }\n element.find('.' + KCONTENTFRAME).unbind('load' + NS).on('load' + NS, proxy(this._triggerRefresh, this));\n }\n } else {\n if (options.template) {\n that.content(template(options.template)({}));\n }\n that.trigger(REFRESH);\n }\n element.toggleClass('k-window-iframecontent', !!showIframe);\n return that;\n },\n _triggerRefresh: function () {\n this.trigger(REFRESH);\n },\n _ajaxComplete: function () {\n clearTimeout(this._loadingIconTimeout);\n this.wrapper.find(REFRESHICON).removeClass(LOADING);\n },\n _ajaxError: function (xhr, status) {\n this.trigger(ERROR, {\n status: status,\n xhr: xhr\n });\n },\n _ajaxSuccess: function (contentTemplate) {\n return function (data) {\n var html = data;\n if (contentTemplate) {\n html = template(contentTemplate)(data || {});\n }\n this.content(html, data);\n this.element.prop('scrollTop', 0);\n this.trigger(REFRESH);\n };\n },\n _showLoading: function () {\n this.wrapper.find(REFRESHICON).addClass(LOADING);\n },\n _ajaxRequest: function (options) {\n this._loadingIconTimeout = setTimeout(proxy(this._showLoading, this), 100);\n $.ajax(extend({\n type: 'GET',\n dataType: 'html',\n cache: false,\n error: proxy(this._ajaxError, this),\n complete: proxy(this._ajaxComplete, this),\n success: proxy(this._ajaxSuccess(options.template), this)\n }, options));\n },\n _destroy: function () {\n if (this.resizing) {\n this.resizing.destroy();\n }\n if (this.dragging) {\n this.dragging.destroy();\n }\n this.wrapper.off(NS).children(KWINDOWCONTENT).off(NS).end().find('.k-resize-handle,.k-window-titlebar').off(NS);\n $(window).off('resize' + NS + this._marker);\n $(window).off(MODAL_NS);\n $(window).off(NS);\n clearTimeout(this._loadingIconTimeout);\n Widget.fn.destroy.call(this);\n this.unbind(undefined);\n kendo.destroy(this.wrapper);\n this._removeOverlay(true);\n },\n destroy: function () {\n this._destroy();\n this.wrapper.empty().remove();\n this.wrapper = this.appendTo = this.element = $();\n },\n _createWindow: function () {\n var contentHtml = this.element, options = this.options, iframeSrcAttributes, wrapper, isRtl = kendo.support.isRtl(contentHtml);\n if (options.scrollable === false) {\n contentHtml.css('overflow', 'hidden');\n }\n wrapper = $(templates.wrapper(options));\n iframeSrcAttributes = contentHtml.find('iframe:not(.k-content)').map(function () {\n var src = this.getAttribute('src');\n this.src = '';\n return src;\n });\n wrapper.toggleClass('k-rtl', isRtl).append(contentHtml).find('iframe:not(.k-content)').each(function (index) {\n this.src = iframeSrcAttributes[index];\n });\n if (this.containment) {\n this.containment.prepend(wrapper);\n } else if (this.appendTo) {\n wrapper.appendTo(this.appendTo);\n }\n wrapper.find('.k-window-title').css(isRtl ? 'left' : 'right', outerWidth(wrapper.find('.k-window-actions')) + 10);\n contentHtml.css('visibility', '').show();\n contentHtml.find('[data-role=editor]').each(function () {\n var editor = $(this).data('kendoEditor');\n if (editor) {\n editor.refresh();\n }\n });\n wrapper = contentHtml = null;\n }\n });\n templates = {\n wrapper: template('<div class=\\'k-widget k-window\\' />'),\n action: template('<a role=\\'button\\' href=\\'\\\\#\\' class=\\'k-button k-bare k-button-icon k-window-action\\' aria-label=\\'#= name #\\'>' + '<span class=\\'k-icon k-i-#= name.toLowerCase() #\\'></span>' + '</a>'),\n titlebar: template('<div class=\\'k-window-titlebar k-header\\'>' + '<span class=\\'k-window-title\\'>#= title #</span>' + '<div class=\\'k-window-actions\\' />' + '</div>'),\n overlay: '<div class=\\'k-overlay\\' />',\n contentFrame: template('<iframe frameborder=\\'0\\' title=\\'#= title #\\' class=\\'' + KCONTENTFRAME + '\\' ' + 'src=\\'#= content.url #\\'>' + 'This page requires frames in order to show content' + '</iframe>'),\n resizeHandle: template('<div class=\\'k-resize-handle k-resize-#= data #\\'></div>')\n };\n function WindowResizing(wnd) {\n var that = this;\n that.owner = wnd;\n that._preventDragging = false;\n that._draggable = new Draggable(wnd.wrapper, {\n filter: '>' + KWINDOWRESIZEHANDLES,\n group: wnd.wrapper.id + '-resizing',\n dragstart: proxy(that.dragstart, that),\n drag: proxy(that.drag, that),\n dragend: proxy(that.dragend, that)\n });\n that._draggable.userEvents.bind('press', proxy(that.addOverlay, that));\n that._draggable.userEvents.bind('release', proxy(that.removeOverlay, that));\n }\n WindowResizing.prototype = {\n addOverlay: function () {\n this.owner.wrapper.append(templates.overlay);\n },\n removeOverlay: function () {\n this.owner.wrapper.find(KOVERLAY).remove();\n },\n dragstart: function (e) {\n var that = this;\n var wnd = that.owner;\n var wrapper = wnd.wrapper;\n that._preventDragging = wnd.trigger(RESIZESTART);\n if (that._preventDragging) {\n return;\n }\n that.elementPadding = parseInt(wrapper.css('padding-top'), 10);\n that.initialPosition = kendo.getOffset(wrapper, 'position');\n that.resizeDirection = e.currentTarget.prop('className').replace('k-resize-handle k-resize-', '');\n that.initialSize = {\n width: wrapper.width(),\n height: wrapper.height()\n };\n wnd._updateBoundaries();\n that.containerOffset = wnd.containment ? wnd.containment.position : kendo.getOffset(wnd.appendTo, 'position');\n var offsetParent = wrapper.offsetParent();\n if (offsetParent.is('html')) {\n that.containerOffset.top = that.containerOffset.left = 0;\n } else {\n var marginTop = offsetParent.css('margin-top');\n var marginLeft = offsetParent.css('margin-left');\n var hasMargin = !zero.test(marginTop) || !zero.test(marginLeft);\n if (hasMargin) {\n var wrapperPosition = getPosition(wrapper[0]);\n var relativeElMarginLeft = wrapperPosition.left - that.containerOffset.left - that.initialPosition.left;\n var relativeElMarginTop = wrapperPosition.top - that.containerOffset.top - that.initialPosition.top;\n that._relativeElMarginLeft = relativeElMarginLeft > 1 ? relativeElMarginLeft : 0;\n that._relativeElMarginTop = relativeElMarginTop > 1 ? relativeElMarginTop : 0;\n that.initialPosition.left += that._relativeElMarginLeft;\n that.initialPosition.top += that._relativeElMarginTop;\n }\n }\n wrapper.children(KWINDOWRESIZEHANDLES).not(e.currentTarget).hide();\n $(BODY).css(CURSOR, e.currentTarget.css(CURSOR));\n },\n drag: function (e) {\n if (this._preventDragging) {\n return;\n }\n var that = this, wnd = that.owner, wrapper = wnd.wrapper, options = wnd.options, position = options.position, direction = that.resizeDirection, containerOffset = that.containerOffset, initialPosition = that.initialPosition, initialSize = that.initialSize, containmentContext = wnd.containment && !wnd._isPinned, rtl = kendo.support.isRtl(wnd.containment), leftRtlOffset = containmentContext && rtl && wnd.containment.innerWidth() > wnd.containment.width ? kendo.support.scrollbar() : 0, scrollOffset = containmentContext ? {\n top: wnd.containment.scrollTop(),\n left: wnd.containment.scrollLeft()\n } : {\n top: 0,\n left: 0\n }, newWidth, newHeight, windowBottom, windowRight, x = Math.max(e.x.location, 0), y = Math.max(e.y.location, 0);\n if (direction.indexOf('e') >= 0) {\n if (wnd.containment && x - initialSize.width >= wnd.maxLeft - scrollOffset.left + containerOffset.left + leftRtlOffset) {\n newWidth = wnd.maxLeft + leftRtlOffset - initialPosition.left + initialSize.width - scrollOffset.left;\n } else {\n newWidth = x - initialPosition.left - containerOffset.left;\n }\n wrapper.width(constrain(newWidth, options.minWidth, options.maxWidth));\n } else if (direction.indexOf('w') >= 0) {\n windowRight = initialPosition.left + initialSize.width + containerOffset.left;\n newWidth = constrain(windowRight - x, options.minWidth, options.maxWidth);\n position.left = windowRight - newWidth - containerOffset.left - leftRtlOffset - (that._relativeElMarginLeft || 0) + scrollOffset.left;\n if (wnd.containment && position.left <= wnd.minLeft) {\n position.left = wnd.minLeft;\n newWidth = constrain(windowRight - leftRtlOffset - position.left - containerOffset.left + scrollOffset.left, options.minWidth, options.maxWidth);\n }\n wrapper.css({\n left: position.left,\n width: newWidth\n });\n }\n var newWindowTop = y;\n if (wnd.options.pinned) {\n newWindowTop -= $(window).scrollTop();\n }\n if (direction.indexOf('s') >= 0) {\n newHeight = newWindowTop - initialPosition.top - that.elementPadding - containerOffset.top;\n if (newWindowTop - initialSize.height - that.elementPadding >= wnd.maxTop + containerOffset.top - scrollOffset.top) {\n newHeight = wnd.maxTop - initialPosition.top + initialSize.height - scrollOffset.top;\n }\n wrapper.height(constrain(newHeight, options.minHeight, options.maxHeight));\n } else if (direction.indexOf('n') >= 0) {\n windowBottom = initialPosition.top + initialSize.height + containerOffset.top;\n newHeight = constrain(windowBottom - newWindowTop, options.minHeight, options.maxHeight);\n position.top = windowBottom - newHeight - containerOffset.top - (that._relativeElMarginTop || 0) + scrollOffset.top;\n if (position.top <= wnd.minTop && wnd.containment) {\n position.top = wnd.minTop;\n newHeight = constrain(windowBottom - position.top - containerOffset.top + scrollOffset.top, options.minHeight, options.maxHeight);\n }\n wrapper.css({\n top: position.top,\n height: newHeight\n });\n }\n if (newWidth) {\n wnd.options.width = newWidth + 'px';\n }\n if (newHeight) {\n wnd.options.height = newHeight + 'px';\n }\n wnd.resize();\n },\n dragend: function (e) {\n if (this._preventDragging) {\n return;\n }\n var that = this, wnd = that.owner, wrapper = wnd.wrapper;\n wrapper.children(KWINDOWRESIZEHANDLES).not(e.currentTarget).show();\n $(BODY).css(CURSOR, '');\n if (wnd.touchScroller) {\n wnd.touchScroller.reset();\n }\n if (e.keyCode == 27) {\n wrapper.css(that.initialPosition).css(that.initialSize);\n }\n wnd.trigger(RESIZEEND);\n return false;\n },\n destroy: function () {\n if (this._draggable) {\n this._draggable.destroy();\n }\n this._draggable = this.owner = null;\n }\n };\n function WindowDragging(wnd, dragHandle) {\n var that = this;\n that.owner = wnd;\n that._preventDragging = false;\n that._draggable = new Draggable(wnd.wrapper, {\n filter: dragHandle,\n group: wnd.wrapper.id + '-moving',\n dragstart: proxy(that.dragstart, that),\n drag: proxy(that.drag, that),\n dragend: proxy(that.dragend, that),\n dragcancel: proxy(that.dragcancel, that)\n });\n that._draggable.userEvents.stopPropagation = false;\n }\n WindowDragging.prototype = {\n dragstart: function (e) {\n var wnd = this.owner, draggable = wnd.options.draggable, element = wnd.element, actions = element.find('.k-window-actions'), containerOffset = kendo.getOffset(wnd.appendTo);\n this._preventDragging = wnd.trigger(DRAGSTART) || !draggable;\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n wnd.initialWindowPosition = kendo.getOffset(wnd.wrapper, 'position');\n wnd.initialPointerPosition = {\n left: wnd.options.position.left,\n top: wnd.options.position.top\n };\n wnd.startPosition = {\n left: e.x.client - wnd.initialWindowPosition.left,\n top: e.y.client - wnd.initialWindowPosition.top\n };\n wnd._updateBoundaries();\n if (!wnd.containment) {\n if (actions.length > 0) {\n wnd.minLeft = outerWidth(actions) + parseInt(actions.css('right'), 10) - outerWidth(element);\n } else {\n wnd.minLeft = 20 - outerWidth(element);\n }\n wnd.minLeft -= containerOffset.left;\n wnd.minTop = -containerOffset.top;\n }\n wnd.wrapper.append(templates.overlay).children(KWINDOWRESIZEHANDLES).hide();\n $(BODY).css(CURSOR, e.currentTarget.css(CURSOR));\n },\n drag: function (e) {\n var wnd = this.owner;\n var position = wnd.options.position;\n var axis = wnd.options.draggable.axis;\n var left;\n var top;\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n if (!axis || axis.toLowerCase() === 'x') {\n left = e.x.client - wnd.startPosition.left;\n if (wnd.containment && !wnd._isPinned) {\n left += wnd.containment.scrollLeft();\n }\n position.left = constrain(left, wnd.minLeft, wnd.maxLeft);\n }\n if (!axis || axis.toLowerCase() === 'y') {\n top = e.y.client - wnd.startPosition.top;\n if (wnd.containment && !wnd._isPinned) {\n top += wnd.containment.scrollTop();\n }\n position.top = constrain(top, wnd.minTop, wnd.maxTop);\n }\n if (kendo.support.transforms) {\n $(wnd.wrapper).css('transform', 'translate(' + (position.left - wnd.initialPointerPosition.left) + 'px, ' + (position.top - wnd.initialPointerPosition.top) + 'px)');\n } else {\n $(wnd.wrapper).css(position);\n }\n },\n _finishDrag: function () {\n var wnd = this.owner;\n wnd.wrapper.children(KWINDOWRESIZEHANDLES).toggle(!wnd.options.isMinimized).end().find(KOVERLAY).remove();\n $(BODY).css(CURSOR, '');\n },\n dragcancel: function (e) {\n if (this._preventDragging) {\n return;\n }\n this._finishDrag();\n e.currentTarget.closest(KWINDOW).css(this.owner.initialWindowPosition);\n },\n dragend: function () {\n var wnd = this.owner;\n if (this._preventDragging || wnd.isMaximized()) {\n return;\n }\n $(wnd.wrapper).css(wnd.options.position).css('transform', '');\n this._finishDrag();\n wnd.trigger(DRAGEND);\n return false;\n },\n destroy: function () {\n if (this._draggable) {\n this._draggable.destroy();\n }\n this._draggable = this.owner = null;\n }\n };\n kendo.ui.plugin(Window);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.pane', ['kendo.view'], f);\n}(function () {\n var __meta__ = {\n id: 'pane',\n name: 'Pane',\n category: 'web',\n description: 'Pane',\n depends: ['view'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, roleSelector = kendo.roleSelector, ui = kendo.ui, Widget = ui.Widget, ViewEngine = kendo.ViewEngine, View = kendo.View, extend = $.extend, NAVIGATE = 'navigate', VIEW_SHOW = 'viewShow', SAME_VIEW_REQUESTED = 'sameViewRequested', OS = kendo.support.mobileOS, SKIP_TRANSITION_ON_BACK_BUTTON = OS.ios && !OS.appMode && OS.flatVersion >= 700, BACK = '#:back';\n var DOT = '.';\n var classNames = {\n pane: 'k-pane',\n paneWrapper: 'k-pane-wrapper',\n collapsiblePane: 'k-collapsible-pane',\n vertical: 'k-vertical'\n };\n var Pane = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element;\n element.addClass(classNames.pane);\n if (that.options.collapsible) {\n element.addClass(classNames.collapsiblePane);\n }\n this.history = [];\n this.historyCallback = function (url, params, backButtonPressed) {\n var transition = that.transition;\n that.transition = null;\n if (SKIP_TRANSITION_ON_BACK_BUTTON && backButtonPressed) {\n transition = 'none';\n }\n return that.viewEngine.showView(url, transition, params);\n };\n this._historyNavigate = function (url) {\n if (url === BACK) {\n if (that.history.length === 1) {\n return;\n }\n that.history.pop();\n url = that.history[that.history.length - 1];\n } else {\n if (url instanceof View) {\n url = '';\n }\n that.history.push(url);\n }\n that.historyCallback(url, kendo.parseQueryStringParams(url));\n };\n this._historyReplace = function (url) {\n var params = kendo.parseQueryStringParams(url);\n that.history[that.history.length - 1] = url;\n that.historyCallback(url, params);\n };\n that.viewEngine = new ViewEngine(extend({}, {\n container: element,\n transition: options.transition,\n modelScope: options.modelScope,\n rootNeeded: !options.initial,\n serverNavigation: options.serverNavigation,\n remoteViewURLPrefix: options.root || '',\n layout: options.layout,\n $angular: options.$angular,\n showStart: function () {\n that.closeActiveDialogs();\n },\n after: function () {\n },\n viewShow: function (e) {\n that.trigger(VIEW_SHOW, e);\n },\n loadStart: function () {\n },\n loadComplete: function () {\n },\n sameViewRequested: function () {\n that.trigger(SAME_VIEW_REQUESTED);\n },\n viewTypeDetermined: function (e) {\n if (!e.remote || !that.options.serverNavigation) {\n that.trigger(NAVIGATE, { url: e.url });\n }\n }\n }, this.options.viewEngine));\n this._setPortraitWidth();\n kendo.onResize(function () {\n that._setPortraitWidth();\n });\n },\n closeActiveDialogs: function () {\n var dialogs = this.element.find(roleSelector('actionsheet popover modalview')).filter(':visible');\n dialogs.each(function () {\n kendo.widgetInstance($(this), ui).close();\n });\n },\n navigateToInitial: function () {\n var initial = this.options.initial;\n if (initial) {\n this.navigate(initial);\n }\n return initial;\n },\n options: {\n name: 'Pane',\n portraitWidth: '',\n transition: '',\n layout: '',\n collapsible: false,\n initial: null,\n modelScope: window\n },\n events: [\n NAVIGATE,\n VIEW_SHOW,\n SAME_VIEW_REQUESTED\n ],\n append: function (html) {\n return this.viewEngine.append(html);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n if (that.viewEngine) {\n that.viewEngine.destroy();\n }\n },\n navigate: function (url, transition) {\n if (url instanceof View) {\n url = url.id;\n }\n this.transition = transition;\n this._historyNavigate(url);\n },\n replace: function (url, transition) {\n if (url instanceof View) {\n url = url.id;\n }\n this.transition = transition;\n this._historyReplace(url);\n },\n view: function () {\n return this.viewEngine.view();\n },\n _setPortraitWidth: function () {\n var width, portraitWidth = this.options.portraitWidth;\n if (portraitWidth) {\n width = kendo.mobile.application.element.is(DOT + classNames.vertical) ? portraitWidth : 'auto';\n this.element.css('width', width);\n }\n }\n });\n Pane.wrap = function (element, options) {\n if (!element.is(roleSelector('view'))) {\n element = element.wrap('<div data-' + kendo.ns + 'role=\"view\" data-stretch=\"true\"></div>').parent();\n }\n var paneContainer = element.wrap('<div class=\"' + classNames.paneWrapper + ' k-widget\"><div></div></div>').parent();\n var pane = new Pane(paneContainer, options);\n pane.navigate('');\n return pane;\n };\n kendo.Pane = Pane;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.progressbar', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'progressbar',\n name: 'ProgressBar',\n category: 'web',\n description: 'The ProgressBar offers rich functionality for displaying and tracking progress',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, HORIZONTAL = 'horizontal', VERTICAL = 'vertical', DEFAULTMIN = 0, DEFAULTMAX = 100, DEFAULTVALUE = 0, DEFAULTCHUNKCOUNT = 5, KPROGRESSBAR = 'k-progressbar', KPROGRESSBARREVERSE = 'k-progressbar-reverse', KPROGRESSBARINDETERMINATE = 'k-progressbar-indeterminate', KPROGRESSBARCOMPLETE = 'k-complete', KPROGRESSWRAPPER = 'k-state-selected', KPROGRESSSTATUS = 'k-progress-status', LABEL_POSITION_END = 'k-progress-end', KCOMPLETEDCHUNK = 'k-state-selected', KUPCOMINGCHUNK = 'k-state-default', STATEDISABLED = 'k-state-disabled', PROGRESSTYPE = {\n VALUE: 'value',\n PERCENT: 'percent',\n CHUNK: 'chunk'\n }, CHANGE = 'change', COMPLETE = 'complete', BOOLEAN = 'boolean', math = Math, extend = $.extend, proxy = $.proxy, HUNDREDPERCENT = 100, DEFAULTANIMATIONDURATION = 400, PRECISION = 3, templates = { progressStatus: '<span class=\\'k-progress-status-wrap ' + LABEL_POSITION_END + '\\'><span class=\\'k-progress-status\\'></span></span>' };\n var ProgressBar = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(this, element, options);\n options = that.options;\n that._progressProperty = options.orientation === HORIZONTAL ? 'width' : 'height';\n that._fields();\n options.value = that._validateValue(options.value);\n that._validateType(options.type);\n that._wrapper();\n that._progressAnimation();\n if (options.value !== options.min && options.value !== false) {\n that._updateProgress();\n }\n },\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n if (options.hasOwnProperty('reverse')) {\n that.wrapper.toggleClass('k-progressbar-reverse', options.reverse);\n }\n if (options.hasOwnProperty('enable')) {\n that.enable(options.enable);\n }\n that._progressAnimation();\n that._validateValue();\n that._updateProgress();\n },\n events: [\n CHANGE,\n COMPLETE\n ],\n options: {\n name: 'ProgressBar',\n orientation: HORIZONTAL,\n reverse: false,\n min: DEFAULTMIN,\n max: DEFAULTMAX,\n value: DEFAULTVALUE,\n enable: true,\n type: PROGRESSTYPE.VALUE,\n chunkCount: DEFAULTCHUNKCOUNT,\n showStatus: true,\n animation: {}\n },\n _fields: function () {\n var that = this;\n that._isStarted = false;\n that.progressWrapper = that.progressStatus = $();\n },\n _validateType: function (currentType) {\n var isValid = false;\n $.each(PROGRESSTYPE, function (k, type) {\n if (type === currentType) {\n isValid = true;\n return false;\n }\n });\n if (!isValid) {\n throw new Error(kendo.format('Invalid ProgressBar type \\'{0}\\'', currentType));\n }\n },\n _wrapper: function () {\n var that = this;\n var container = that.wrapper = that.element;\n var options = that.options;\n var orientation = options.orientation;\n var initialStatusValue;\n container.addClass('k-widget ' + KPROGRESSBAR);\n container.addClass(KPROGRESSBAR + '-' + (orientation === HORIZONTAL ? HORIZONTAL : VERTICAL));\n if (options.enable === false) {\n container.addClass(STATEDISABLED);\n }\n if (options.reverse) {\n container.addClass(KPROGRESSBARREVERSE);\n }\n if (options.value === false) {\n container.addClass(KPROGRESSBARINDETERMINATE);\n }\n if (options.type === PROGRESSTYPE.CHUNK) {\n that._addChunkProgressWrapper();\n } else {\n if (options.showStatus) {\n that.progressStatus = that.wrapper.prepend(templates.progressStatus).find('.' + KPROGRESSSTATUS);\n initialStatusValue = options.value !== false ? options.value : options.min;\n if (options.type === PROGRESSTYPE.VALUE) {\n that.progressStatus.text(initialStatusValue);\n } else {\n that.progressStatus.text(that._calculatePercentage(initialStatusValue).toFixed() + '%');\n }\n }\n }\n },\n value: function (value) {\n return this._value(value);\n },\n _value: function (value) {\n var that = this;\n var options = that.options;\n var validated;\n if (value === undefined) {\n return options.value;\n } else {\n if (typeof value !== BOOLEAN) {\n value = that._roundValue(value);\n if (!isNaN(value)) {\n validated = that._validateValue(value);\n if (validated !== options.value) {\n that.wrapper.removeClass(KPROGRESSBARINDETERMINATE);\n options.value = validated;\n that._isStarted = true;\n that._updateProgress();\n }\n }\n } else if (!value) {\n that.wrapper.addClass(KPROGRESSBARINDETERMINATE);\n options.value = false;\n }\n }\n },\n _roundValue: function (value) {\n value = parseFloat(value);\n var power = math.pow(10, PRECISION);\n return math.floor(value * power) / power;\n },\n _validateValue: function (value) {\n var that = this;\n var options = that.options;\n if (value !== false) {\n if (value <= options.min || value === true) {\n return options.min;\n } else if (value >= options.max) {\n return options.max;\n }\n } else if (value === false) {\n return false;\n }\n if (isNaN(that._roundValue(value))) {\n return options.min;\n }\n return value;\n },\n _updateProgress: function () {\n var that = this;\n var options = that.options;\n var percentage = that._calculatePercentage();\n if (options.type === PROGRESSTYPE.CHUNK) {\n that._updateChunks(percentage);\n that._onProgressUpdateAlways(options.value);\n } else {\n that._updateProgressWrapper(percentage);\n }\n },\n _updateChunks: function (percentage) {\n var that = this;\n var options = that.options;\n var chunkCount = options.chunkCount;\n var percentagesPerChunk = parseInt(HUNDREDPERCENT / chunkCount * 100, 10) / 100;\n var percentageParsed = parseInt(percentage * 100, 10) / 100;\n var completedChunksCount = math.floor(percentageParsed / percentagesPerChunk);\n var completedChunks;\n if (options.orientation === HORIZONTAL && !options.reverse || options.orientation === VERTICAL && options.reverse) {\n completedChunks = that.wrapper.find('li.k-item:lt(' + completedChunksCount + ')');\n } else {\n completedChunks = that.wrapper.find('li.k-item:gt(-' + (completedChunksCount + 1) + ')');\n }\n that.wrapper.find('.' + KCOMPLETEDCHUNK).removeClass(KCOMPLETEDCHUNK).addClass(KUPCOMINGCHUNK);\n completedChunks.removeClass(KUPCOMINGCHUNK).addClass(KCOMPLETEDCHUNK);\n },\n _updateProgressWrapper: function (percentage) {\n var that = this;\n var options = that.options;\n var progressWrapper = that.wrapper.find('.' + KPROGRESSWRAPPER);\n var animationDuration = that._isStarted ? that._animation.duration : 0;\n var animationCssOptions = {};\n if (progressWrapper.length === 0) {\n that._addRegularProgressWrapper();\n }\n animationCssOptions[that._progressProperty] = percentage + '%';\n that.progressWrapper.animate(animationCssOptions, {\n duration: animationDuration,\n start: proxy(that._onProgressAnimateStart, that),\n progress: proxy(that._onProgressAnimate, that),\n complete: proxy(that._onProgressAnimateComplete, that, options.value),\n always: proxy(that._onProgressUpdateAlways, that, options.value)\n });\n },\n _onProgressAnimateStart: function () {\n this.progressWrapper.show();\n },\n _onProgressAnimate: function (e) {\n var that = this;\n var options = that.options;\n var progressInPercent = parseFloat(e.elem.style[that._progressProperty], 10);\n var progressStatusWrapSize;\n if (options.showStatus) {\n progressStatusWrapSize = 10000 / parseFloat(that.progressWrapper[0].style[that._progressProperty]);\n that.progressWrapper.find('.k-progress-status-wrap').css(that._progressProperty, progressStatusWrapSize + '%');\n }\n if (options.type !== PROGRESSTYPE.CHUNK && progressInPercent <= 98) {\n that.progressWrapper.removeClass(KPROGRESSBARCOMPLETE);\n }\n },\n _onProgressAnimateComplete: function (currentValue) {\n var that = this;\n var options = that.options;\n var progressWrapperSize = parseFloat(that.progressWrapper[0].style[that._progressProperty]);\n var progressValue;\n if (options.type !== PROGRESSTYPE.CHUNK && progressWrapperSize > 98) {\n that.progressWrapper.addClass(KPROGRESSBARCOMPLETE);\n }\n if (options.showStatus) {\n if (options.type === PROGRESSTYPE.VALUE) {\n progressValue = currentValue;\n } else if (options.type == PROGRESSTYPE.PERCENT) {\n progressValue = that._calculatePercentage(currentValue).toFixed() + '%';\n } else {\n progressValue = math.floor(that._calculatePercentage(currentValue)) + '%';\n }\n that.progressStatus.text(progressValue);\n }\n if (currentValue === options.min) {\n that.progressWrapper.hide();\n }\n },\n _onProgressUpdateAlways: function (currentValue) {\n var that = this;\n var options = that.options;\n if (that._isStarted) {\n that.trigger(CHANGE, { value: currentValue });\n }\n if (currentValue === options.max && that._isStarted) {\n that.trigger(COMPLETE, { value: options.max });\n }\n },\n enable: function (enable) {\n var that = this;\n var options = that.options;\n options.enable = typeof enable === 'undefined' ? true : enable;\n that.wrapper.toggleClass(STATEDISABLED, !options.enable);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n },\n _addChunkProgressWrapper: function () {\n var that = this;\n var options = that.options;\n var container = that.wrapper;\n var chunkSize = HUNDREDPERCENT / options.chunkCount;\n var html = '';\n if (options.chunkCount <= 1) {\n options.chunkCount = 1;\n }\n html += '<ul class=\\'k-reset\\'>';\n for (var i = options.chunkCount - 1; i >= 0; i--) {\n html += '<li class=\\'k-item k-state-default\\'></li>';\n }\n html += '</ul>';\n container.append(html).find('.k-item').css(that._progressProperty, chunkSize + '%').first().addClass('k-first').end().last().addClass('k-last');\n that._normalizeChunkSize();\n },\n _normalizeChunkSize: function () {\n var that = this;\n var options = that.options;\n var lastChunk = that.wrapper.find('.k-item:last');\n var currentSize = parseFloat(lastChunk[0].style[that._progressProperty]);\n var difference = HUNDREDPERCENT - options.chunkCount * currentSize;\n if (difference > 0) {\n lastChunk.css(that._progressProperty, currentSize + difference + '%');\n }\n },\n _addRegularProgressWrapper: function () {\n var that = this;\n that.progressWrapper = $('<div class=\\'' + KPROGRESSWRAPPER + '\\'></div>').appendTo(that.wrapper);\n if (that.options.showStatus) {\n that.progressWrapper.append(templates.progressStatus);\n that.progressStatus = that.wrapper.find('.' + KPROGRESSSTATUS);\n }\n },\n _calculateChunkSize: function () {\n var that = this;\n var chunkCount = that.options.chunkCount;\n var chunkContainer = that.wrapper.find('ul.k-reset');\n return (parseInt(chunkContainer.css(that._progressProperty), 10) - (chunkCount - 1)) / chunkCount;\n },\n _calculatePercentage: function (currentValue) {\n var that = this;\n var options = that.options;\n var value = currentValue !== undefined ? currentValue : options.value;\n var min = options.min;\n var max = options.max;\n that._onePercent = math.abs((max - min) / 100);\n return math.abs((value - min) / that._onePercent);\n },\n _progressAnimation: function () {\n var that = this;\n var options = that.options;\n var animation = options.animation;\n if (animation === false) {\n that._animation = { duration: 0 };\n } else {\n that._animation = extend({ duration: DEFAULTANIMATIONDURATION }, options.animation);\n }\n }\n });\n kendo.ui.plugin(ProgressBar);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('pdf/pako', ['kendo.core'], f);\n}(function () {\n (function () {\n kendo.pdf = kendo.pdf || {};\n kendo.pdf.supportsDeflate = function () {\n return window.pako && typeof window.pako.deflate == 'function';\n };\n kendo.pdf.deflate = function (data) {\n return window.pako.deflate(data);\n };\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('pdf/core', [\n 'pdf/pako',\n 'kendo.core',\n 'kendo.color',\n 'kendo.drawing'\n ], f);\n}(function () {\n (function (kendo) {\n window.kendo.pdf = window.kendo.pdf || {};\n var support = kendo.support;\n var supportBrowser = support.browser;\n var kendoPdf = kendo.pdf;\n var drawing = kendo.drawing;\n var util = drawing.util;\n var kendoGeometry = kendo.geometry;\n var HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && kendo.support.browser && (!kendo.support.browser.msie || kendo.support.browser.version > 9);\n var BASE64 = function () {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n return {\n decode: function (str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, ''), i = 0, n = input.length, output = [];\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n var chr1 = enc1 << 2 | enc2 >>> 4;\n var chr2 = (enc2 & 15) << 4 | enc3 >>> 2;\n var chr3 = (enc3 & 3) << 6 | enc4;\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n return output;\n },\n encode: function (bytes) {\n var i = 0, n = bytes.length;\n var output = '';\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n var enc1 = chr1 >>> 2;\n var enc2 = (chr1 & 3) << 4 | chr2 >>> 4;\n var enc3 = (chr2 & 15) << 2 | chr3 >>> 6;\n var enc4 = chr3 & 63;\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n }();\n function BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n var ensure = HAS_TYPED_ARRAYS ? function (len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function () {\n };\n var get = HAS_TYPED_ARRAYS ? function () {\n return new Uint8Array(data.buffer, 0, length);\n } : function () {\n return data;\n };\n var write = HAS_TYPED_ARRAYS ? function (bytes) {\n if (typeof bytes == 'string') {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function (bytes) {\n if (typeof bytes == 'string') {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n var slice = HAS_TYPED_ARRAYS ? function (start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function (start, length) {\n return data.slice(start, start + length);\n };\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 255;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return readByte() << 8 | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 32768 ? w - 65536 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 65536 : w);\n }\n function readLong() {\n return readShort() * 65536 + readShort();\n }\n function writeLong(w) {\n writeShort(w >>> 16 & 65535);\n writeShort(w & 65535);\n }\n function readLong_() {\n var w = readLong();\n return w >= 2147483648 ? w - 4294967296 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 4294967296 : w);\n }\n function readFixed() {\n return readLong() / 65536;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 65536));\n }\n function readFixed_() {\n return readLong_() / 65536;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 65536));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n var stream = {\n eof: eof,\n readByte: readByte,\n writeByte: writeByte,\n readShort: readShort,\n writeShort: writeShort,\n readLong: readLong,\n writeLong: writeLong,\n readFixed: readFixed,\n writeFixed: writeFixed,\n readShort_: readShort_,\n writeShort_: writeShort_,\n readLong_: readLong_,\n writeLong_: writeLong_,\n readFixed_: readFixed_,\n writeFixed_: writeFixed_,\n read: read,\n write: write,\n readString: readString,\n writeString: writeString,\n times: times,\n get: get,\n slice: slice,\n offset: function (pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n skip: function (nbytes) {\n offset += nbytes;\n },\n toString: function () {\n throw new Error('FIX CALLER. BinaryStream is no longer convertible to string!');\n },\n length: function () {\n return length;\n },\n saveExcursion: function (f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n writeBase64: function (base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function () {\n return BASE64.encode(get());\n }\n };\n return stream;\n }\n function ucs2decode(string) {\n var output = [], counter = 0, length = string.length, value, extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 55296 && value <= 56319 && counter < length) {\n extra = string.charCodeAt(counter++);\n if ((extra & 64512) == 56320) {\n output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function ucs2encode(array) {\n return array.map(function (value) {\n var output = '';\n if (value > 65535) {\n value -= 65536;\n output += String.fromCharCode(value >>> 10 & 1023 | 55296);\n value = 56320 | value & 1023;\n }\n output += String.fromCharCode(value);\n return output;\n }).join('');\n }\n function atobUint8Array(base64) {\n var data = window.atob(base64);\n var result = new Uint8Array(data.length);\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n return result;\n }\n function createUint8Array(data) {\n var result = new Uint8Array(data.length);\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n return result;\n }\n function base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n return createUint8Array(BASE64.decode(base64));\n }\n function hasOwnProperty$1(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n function sortedKeys(obj) {\n return Object.keys(obj).sort(function (a, b) {\n return a - b;\n }).map(parseFloat);\n }\n function Directory(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag: data.readString(4),\n checksum: data.readLong(),\n offset: data.readLong(),\n length: data.readLong()\n };\n tables[entry.tag] = entry;\n }\n }\n Directory.prototype = {\n readTable: function (name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error('Table ' + name + ' not found in directory');\n }\n return this[name] = def.table = new Ctor(this, def);\n },\n render: function (tables) {\n var this$1 = this;\n var tableCount = Object.keys(tables).length;\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n for (var tag in tables) {\n if (hasOwnProperty$1(tables, tag)) {\n var table = tables[tag];\n out.writeString(tag);\n out.writeLong(this$1.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n tableData.write(table);\n if (tag == 'head') {\n headOffset = offset;\n }\n offset += table.length;\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 2981146554 - sum;\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n },\n checksum: function (data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 4294967295;\n }\n };\n function deftable(methods) {\n function Ctor(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n }\n Ctor.prototype.raw = function () {\n return this.rawData.slice(this.offset, this.length);\n };\n for (var i in methods) {\n if (hasOwnProperty$1(methods, i)) {\n Ctor[i] = Ctor.prototype[i] = methods[i];\n }\n }\n return Ctor;\n }\n var HeadTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n },\n render: function (indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0);\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat);\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n }\n });\n var LocaTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function () {\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n },\n offsetOf: function (id) {\n return this.offsets[id];\n },\n lengthOf: function (id) {\n return this.offsets[id + 1] - this.offsets[id];\n },\n render: function (offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 65535;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n }\n });\n var HheaTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n data.skip(4 * 2);\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n },\n render: function (ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n out.write([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]);\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n }\n });\n var MaxpTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n },\n render: function (glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n }\n });\n var HmtxTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function () {\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n },\n forGlyph: function (id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n },\n render: function (glyphIds) {\n var this$1 = this;\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this$1.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n }\n });\n var GlyfTable = function () {\n function SimpleGlyph(raw) {\n this.raw = raw;\n }\n SimpleGlyph.prototype = {\n compound: false,\n render: function () {\n return this.raw.get();\n }\n };\n var ARG_1_AND_2_ARE_WORDS = 1;\n var WE_HAVE_A_SCALE = 8;\n var MORE_COMPONENTS = 32;\n var WE_HAVE_AN_X_AND_Y_SCALE = 64;\n var WE_HAVE_A_TWO_BY_TWO = 128;\n function CompoundGlyph(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) {\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n }\n CompoundGlyph.prototype = {\n compound: true,\n render: function (old2new) {\n var this$1 = this;\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this$1.glyphIds[i];\n out.offset(this$1.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n }\n };\n return deftable({\n parse: function () {\n this.cache = {};\n },\n glyphFor: function (id) {\n var cache = this.cache;\n if (hasOwnProperty$1(cache, id)) {\n return cache[id];\n }\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n if (length === 0) {\n return cache[id] = null;\n }\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n var glyph = cache[id] = numberOfContours == -1 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n return glyph;\n },\n render: function (glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n }\n });\n }();\n var NameTable = function () {\n function NameEntry(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n }\n return deftable({\n parse: function (data) {\n data.offset(this.offset);\n data.readShort();\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function () {\n return {\n platformID: data.readShort(),\n platformSpecificID: data.readShort(),\n languageID: data.readShort(),\n nameID: data.readShort(),\n length: data.readShort(),\n offset: data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, '');\n },\n render: function (psName) {\n var this$1 = this;\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty$1(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n out.writeShort(0);\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount);\n for (i in strings) {\n if (hasOwnProperty$1(strings, i)) {\n var list = i == 6 ? [new NameEntry(psName, this$1.postscriptEntry)] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n strTable.writeString(str.text);\n }\n }\n }\n out.write(strTable.get());\n return out.get();\n }\n });\n }();\n var PostTable = function () {\n var POSTSCRIPT_GLYPHS = '.notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat'.split(/\\s+/g);\n return deftable({\n parse: function (data) {\n var this$1 = this;\n data.offset(this.offset);\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n var numberOfGlyphs;\n switch (this.format) {\n case 65536:\n case 196608:\n break;\n case 131072:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this$1.names.push(data.readString(data.readByte()));\n }\n break;\n case 151552:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n case 262144:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n },\n glyphFor: function (code) {\n switch (this.format) {\n case 65536:\n return POSTSCRIPT_GLYPHS[code] || '.notdef';\n case 131072:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || '.notdef';\n case 151552:\n case 196608:\n return '.notdef';\n case 262144:\n return this.map[code] || 65535;\n }\n },\n render: function (mapping) {\n var this$1 = this;\n if (this.format == 196608) {\n return this.raw();\n }\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(131072);\n out.offset(32);\n var indexes = [];\n var strings = [];\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this$1.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n out.writeShort(mapping.length);\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n return out.get();\n }\n });\n }();\n var CmapTable = function () {\n function CmapEntry(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n data.saveExcursion(function () {\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n data.skip(6);\n var endCode = data.times(segCount, data.readShort);\n data.skip(2);\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 65535;\n }\n }\n break;\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n case 12:\n data.readShort();\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n default:\n if (window.console) {\n window.console.error('Unhandled CMAP format: ' + self.format);\n }\n }\n });\n }\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(65535);\n startCodes.push(65535);\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 65535) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 32768) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n var out = BinaryStream();\n out.writeShort(3);\n out.writeShort(1);\n out.writeLong(12);\n out.writeShort(4);\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2);\n out.writeShort(0);\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n endCodes.forEach(out.writeShort);\n out.writeShort(0);\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n return out.get();\n }\n return deftable({\n parse: function (data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function () {\n return new CmapEntry(data, offset, self.codeMap);\n });\n },\n render: function (ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0);\n out.writeShort(1);\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n }\n });\n }();\n var OS2Table = deftable({\n parse: function (data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n },\n render: function () {\n return this.raw();\n }\n });\n var subsetTag = 100000;\n function nextSubsetTag() {\n var ret = '', n = String(subsetTag);\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n }\n function Subfont(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + '+' + this.font.psName;\n }\n Subfont.prototype = {\n use: function (ch) {\n var self = this;\n if (typeof ch == 'string') {\n return ucs2decode(ch).reduce(function (ret, code) {\n return ret + String.fromCharCode(self.use(code));\n }, '');\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n },\n encodeText: function (text) {\n return this.use(text);\n },\n glyphIds: function () {\n return sortedKeys(this.ogid2ngid);\n },\n glyphsFor: function (glyphIds, result) {\n var this$1 = this;\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this$1.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this$1.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n },\n render: function () {\n var this$1 = this;\n var glyphs = this.glyphsFor(this.glyphIds());\n for (var old_gid in glyphs) {\n if (hasOwnProperty$1(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this$1.ogid2ngid[old_gid] == null) {\n var new_gid = this$1.nextGid++;\n this$1.ogid2ngid[old_gid] = new_gid;\n this$1.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function (id) {\n return this.ngid2ogid[id];\n }, this);\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n this.lastChar = this.next - 1;\n var tables = {\n 'cmap': CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n 'glyf': glyf.table,\n 'loca': loca.table,\n 'hmtx': font.hmtx.render(old_gid_ids),\n 'hhea': font.hhea.render(old_gid_ids),\n 'maxp': font.maxp.render(old_gid_ids),\n 'post': font.post.render(old_gid_ids),\n 'name': font.name.render(this.psName),\n 'head': font.head.render(loca.format),\n 'OS/2': font.os2.render()\n };\n return this.font.directory.render(tables);\n },\n cidToGidMap: function () {\n var this$1 = this;\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this$1.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this$1.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n }\n };\n function TTFFont(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == 'ttcf') {\n var offset;\n var parse = function () {\n data.offset(offset);\n self.parse();\n };\n if (!name) {\n throw new Error('Must specify a name for TTC files');\n }\n data.readLong();\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n if (self.psName == name) {\n return;\n }\n }\n throw new Error('Font ' + name + ' not found in collection');\n } else {\n data.offset(0);\n self.parse();\n }\n }\n TTFFont.prototype = {\n parse: function () {\n var dir = this.directory = new Directory(this.contents);\n this.head = dir.readTable('head', HeadTable);\n this.loca = dir.readTable('loca', LocaTable);\n this.hhea = dir.readTable('hhea', HheaTable);\n this.maxp = dir.readTable('maxp', MaxpTable);\n this.hmtx = dir.readTable('hmtx', HmtxTable);\n this.glyf = dir.readTable('glyf', GlyfTable);\n this.name = dir.readTable('name', NameTable);\n this.post = dir.readTable('post', PostTable);\n this.cmap = dir.readTable('cmap', CmapTable);\n this.os2 = dir.readTable('OS/2', OS2Table);\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n },\n widthOfGlyph: function (glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n },\n makeSubset: function () {\n return new Subfont(this);\n }\n };\n var browser = kendo.support.browser;\n var NL = '\\n';\n var RESOURCE_COUNTER = 0;\n var PAPER_SIZE = {\n a0: [\n 2383.94,\n 3370.39\n ],\n a1: [\n 1683.78,\n 2383.94\n ],\n a2: [\n 1190.55,\n 1683.78\n ],\n a3: [\n 841.89,\n 1190.55\n ],\n a4: [\n 595.28,\n 841.89\n ],\n a5: [\n 419.53,\n 595.28\n ],\n a6: [\n 297.64,\n 419.53\n ],\n a7: [\n 209.76,\n 297.64\n ],\n a8: [\n 147.4,\n 209.76\n ],\n a9: [\n 104.88,\n 147.4\n ],\n a10: [\n 73.7,\n 104.88\n ],\n b0: [\n 2834.65,\n 4008.19\n ],\n b1: [\n 2004.09,\n 2834.65\n ],\n b2: [\n 1417.32,\n 2004.09\n ],\n b3: [\n 1000.63,\n 1417.32\n ],\n b4: [\n 708.66,\n 1000.63\n ],\n b5: [\n 498.9,\n 708.66\n ],\n b6: [\n 354.33,\n 498.9\n ],\n b7: [\n 249.45,\n 354.33\n ],\n b8: [\n 175.75,\n 249.45\n ],\n b9: [\n 124.72,\n 175.75\n ],\n b10: [\n 87.87,\n 124.72\n ],\n c0: [\n 2599.37,\n 3676.54\n ],\n c1: [\n 1836.85,\n 2599.37\n ],\n c2: [\n 1298.27,\n 1836.85\n ],\n c3: [\n 918.43,\n 1298.27\n ],\n c4: [\n 649.13,\n 918.43\n ],\n c5: [\n 459.21,\n 649.13\n ],\n c6: [\n 323.15,\n 459.21\n ],\n c7: [\n 229.61,\n 323.15\n ],\n c8: [\n 161.57,\n 229.61\n ],\n c9: [\n 113.39,\n 161.57\n ],\n c10: [\n 79.37,\n 113.39\n ],\n executive: [\n 521.86,\n 756\n ],\n folio: [\n 612,\n 936\n ],\n legal: [\n 612,\n 1008\n ],\n letter: [\n 612,\n 792\n ],\n tabloid: [\n 792,\n 1224\n ]\n };\n function makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n var arguments$1 = arguments;\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments$1[i];\n if (x === undefined) {\n throw new Error('Cannot output undefined to PDF');\n } else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n } else if (isArray(x)) {\n renderArray(x, out);\n } else if (isDate(x)) {\n renderDate(x, out);\n } else if (typeof x == 'number') {\n if (isNaN(x)) {\n throw new Error('Cannot output NaN to PDF');\n }\n var num = x.toFixed(7);\n if (num.indexOf('.') >= 0) {\n num = num.replace(/\\.?0+$/, '');\n }\n if (num == '-0') {\n num = '0';\n }\n output.writeString(num);\n } else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n } else if (typeof x.get == 'function') {\n output.write(x.get());\n } else if (typeof x == 'object') {\n if (!x) {\n output.writeString('null');\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function (data) {\n output.write(data);\n };\n out.withIndent = function (f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function () {\n out(NL, pad('', indentLevel * 2, ' '));\n out.apply(null, arguments);\n };\n out.offset = function () {\n return output.offset();\n };\n out.toString = function () {\n throw new Error('FIX CALLER');\n };\n out.get = function () {\n return output.get();\n };\n out.stream = function () {\n return output;\n };\n return out;\n }\n function wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n value.beforeRender = function () {\n };\n value.render = function (out) {\n out(id, ' 0 R');\n };\n value.renderFull = function (out) {\n value._offset = out.offset();\n out(id, ' 0 obj ');\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(' endobj');\n };\n }\n function getPaperOptions(getOption) {\n if (typeof getOption != 'function') {\n var options = getOption;\n getOption = function (key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption('paperSize', PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == 'string') {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error('Unknown paper size');\n }\n }\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n if (getOption('landscape', false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n var margin = getOption('margin');\n if (margin) {\n if (typeof margin == 'string' || typeof margin == 'number') {\n margin = unitsToPoints(margin, 0);\n margin = {\n left: margin,\n top: margin,\n right: margin,\n bottom: margin\n };\n } else {\n margin = {\n left: unitsToPoints(margin.left, 0),\n top: unitsToPoints(margin.top, 0),\n right: unitsToPoints(margin.right, 0),\n bottom: unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption('addMargin')) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return {\n paperSize: paperSize,\n margin: margin\n };\n }\n function PDFDocument(options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n function getOption(name, defval) {\n return options && options[name] != null ? options[name] : defval;\n }\n self.getOption = getOption;\n self.attach = function (value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n self.pages = [];\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {};\n self.GRAD_OPC_FUNCTIONS = {};\n self.GRAD_COL = {};\n self.GRAD_OPC = {};\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n if (getOption('autoPrint')) {\n var nameTree = {};\n nameTree.JavaScript = new PDFDictionary({\n Names: [\n new PDFString('JS'),\n self.attach(new PDFDictionary({\n S: _('JavaScript'),\n JS: new PDFString('print(true);')\n }))\n ]\n });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n catalog.setPages(pageTree);\n var info = self.attach(new PDFDictionary({\n Producer: new PDFString(getOption('producer', 'Kendo UI PDF Generator')),\n Title: new PDFString(getOption('title', '')),\n Author: new PDFString(getOption('author', '')),\n Subject: new PDFString(getOption('subject', '')),\n Keywords: new PDFString(getOption('keywords', '')),\n Creator: new PDFString(getOption('creator', 'Kendo UI PDF Generator')),\n CreationDate: getOption('date', new Date())\n }));\n self.addPage = function (options) {\n var paperOptions = getPaperOptions(function (name, defval) {\n return options && options[name] != null ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents: self.attach(content),\n Parent: pageTree,\n MediaBox: [\n 0,\n 0,\n paperSize[0],\n paperSize[1]\n ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n if (margin) {\n page.translate(margin.left, margin.top);\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n self.pages.push(page);\n return page;\n };\n self.render = function () {\n var i;\n out('%PDF-1.4', NL, '%ÂÁÚÏÎ', NL, NL);\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n var xrefOffset = out.offset();\n out('xref', NL, 0, ' ', objects.length + 1, NL);\n out('0000000000 65535 f ', NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), ' 00000 n ', NL);\n }\n out(NL);\n out('trailer', NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL);\n out('startxref', NL, xrefOffset, NL);\n out('%%EOF', NL);\n return out.stream().offset(0);\n };\n }\n var FONT_CACHE = {\n 'Times-Roman': true,\n 'Times-Bold': true,\n 'Times-Italic': true,\n 'Times-BoldItalic': true,\n 'Helvetica': true,\n 'Helvetica-Bold': true,\n 'Helvetica-Oblique': true,\n 'Helvetica-BoldOblique': true,\n 'Courier': true,\n 'Courier-Bold': true,\n 'Courier-Oblique': true,\n 'Courier-BoldOblique': true,\n 'Symbol': true,\n 'ZapfDingbats': true\n };\n function loadBinary(url, cont) {\n var m;\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error('Cannot load URL: %s', url);\n } else {\n window.console.log('Cannot load URL: %s', url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = 'arraybuffer';\n }\n req.onload = function () {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray());\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n }\n function loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function (data) {\n if (data == null) {\n throw new Error('Cannot load font from ' + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n }\n var IMAGE_CACHE = {};\n function clearImageCache() {\n IMAGE_CACHE = {};\n }\n function loadImage(url, size, cont) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!/^data:/i.test(url)) {\n img.crossOrigin = 'Anonymous';\n }\n if (HAS_TYPED_ARRAYS && !/^data:/i.test(url)) {\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n blob = xhr.response;\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n };\n xhr.onerror = _onerror;\n xhr.open('GET', url, true);\n xhr.responseType = 'blob';\n xhr.send();\n } else {\n _load(url);\n }\n }\n function _load(url) {\n img.src = url;\n if (img.complete && !browser.msie) {\n _onload();\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n function _trycanvas() {\n if (!size) {\n size = {\n width: img.width,\n height: img.height\n };\n }\n var canvas = document.createElement('canvas');\n canvas.width = size.width;\n canvas.height = size.height;\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0, size.width, size.height);\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n _onerror();\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n if (hasAlpha) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n var data = canvas.toDataURL('image/jpeg');\n data = data.substr(data.indexOf(';base64,') + 8);\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n cont(IMAGE_CACHE[url] = img);\n }\n function _onerror() {\n cont(IMAGE_CACHE[url] = 'ERROR');\n }\n function _onload() {\n if (size) {\n if (size.width >= img.width || size.height >= img.height) {\n size = null;\n }\n }\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n var reader = new FileReader();\n reader.onload = function () {\n try {\n var img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n _trycanvas();\n }\n };\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n }\n function manyLoader(loadOne) {\n return function (urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n }\n var loadFonts = manyLoader(loadFont);\n var loadImages = function (images, callback) {\n var urls = Object.keys(images), n = urls.length;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n urls.forEach(function (url) {\n loadImage(url, images[url], next);\n });\n };\n PDFDocument.prototype = {\n loadFonts: loadFonts,\n loadImages: loadImages,\n getFont: function (url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error('Font ' + url + ' has not been loaded');\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n },\n getImage: function (url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error('Image ' + url + ' has not been loaded');\n }\n if (img === 'ERROR') {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n },\n getOpacityGS: function (opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? 'S' : 'F';\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = { Type: _('ExtGState') };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _('GS' + ++RESOURCE_COUNTER);\n cache[id] = gs;\n }\n return gs;\n },\n dict: function (props) {\n return new PDFDictionary(props);\n },\n name: function (str) {\n return _(str);\n },\n stream: function (props, content) {\n return new PDFStream(content, props);\n }\n };\n function pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n }\n function zeropad(n, len) {\n return pad(String(n), len, '0');\n }\n function hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n var isArray = Array.isArray || function (obj) {\n return obj instanceof Array;\n };\n function isDate(obj) {\n return obj instanceof Date;\n }\n function renderArray(a, out) {\n out('[');\n if (a.length > 0) {\n out.withIndent(function () {\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(' ', a[i]);\n }\n }\n });\n }\n out(' ]');\n }\n function renderDate(date, out) {\n out('(D:', zeropad(date.getUTCFullYear(), 4), zeropad(date.getUTCMonth() + 1, 2), zeropad(date.getUTCDate(), 2), zeropad(date.getUTCHours(), 2), zeropad(date.getUTCMinutes(), 2), zeropad(date.getUTCSeconds(), 2), 'Z)');\n }\n function mm2pt(mm) {\n return mm * (72 / 25.4);\n }\n function cm2pt(cm) {\n return mm2pt(cm * 10);\n }\n function in2pt(inch) {\n return inch * 72;\n }\n function unitsToPoints(x, def) {\n if (typeof x == 'number') {\n return x;\n }\n if (typeof x == 'string') {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == 'pt') {\n return num;\n }\n return {\n 'mm': mm2pt,\n 'cm': cm2pt,\n 'in': in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error('Can\\'t parse unit: ' + x);\n }\n function PDFValue() {\n }\n PDFValue.prototype.beforeRender = function () {\n };\n function defclass(Ctor, proto, Base) {\n if (!Base) {\n Base = PDFValue;\n }\n Ctor.prototype = new Base();\n for (var i in proto) {\n if (hasOwnProperty(proto, i)) {\n Ctor.prototype[i] = proto[i];\n }\n }\n return Ctor;\n }\n var PDFString = defclass(function PDFString(value) {\n this.value = value;\n }, {\n render: function (out) {\n var txt = '', val = this.value;\n for (var i = 0; i < val.length; ++i) {\n txt += String.fromCharCode(val.charCodeAt(i) & 255);\n }\n out('(', txt.replace(/([\\(\\)\\\\])/g, '\\\\$1'), ')');\n },\n toString: function () {\n return this.value;\n }\n });\n var PDFHexString = defclass(function PDFHexString(value) {\n this.value = value;\n }, {\n render: function (out) {\n var this$1 = this;\n out('<');\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this$1.value.charCodeAt(i).toString(16), 4));\n }\n out('>');\n }\n }, PDFString);\n var PDFName = defclass(function PDFName(name) {\n this.name = name;\n }, {\n render: function (out) {\n out('/' + this.escape());\n },\n escape: function () {\n return this.name.replace(/[^\\x21-\\x7E]/g, function (c) {\n return '#' + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n },\n toString: function () {\n return this.name;\n }\n });\n var PDFName_cache = {};\n PDFName.get = _;\n function _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n return PDFName_cache[name] = new PDFName(name);\n }\n var PDFDictionary = defclass(function PDFDictionary(props) {\n this.props = props;\n }, {\n render: function (out) {\n var props = this.props, empty = true;\n out('<<');\n out.withIndent(function () {\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), ' ', props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out('>>');\n }\n });\n var PDFStream = defclass(function PDFStream(data, props, compress) {\n if (typeof data == 'string') {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n }, {\n render: function (out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && kendoPdf.supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [props.Filter];\n }\n props.Filter.unshift(_('FlateDecode'));\n data = kendoPdf.deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), ' stream', NL);\n out.writeData(data);\n out(NL, 'endstream');\n }\n });\n var PDFCatalog = defclass(function PDFCatalog() {\n this.props = { Type: _('Catalog') };\n }, {\n setPages: function (pagesObj) {\n this.props.Pages = pagesObj;\n }\n }, PDFDictionary);\n var PDFPageTree = defclass(function PDFPageTree() {\n this.props = {\n Type: _('Pages'),\n Kids: [],\n Count: 0\n };\n }, {\n addPage: function (pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n }\n }, PDFDictionary);\n var SOF_CODES = [\n 192,\n 193,\n 194,\n 195,\n 197,\n 198,\n 199,\n 201,\n 202,\n 203,\n 205,\n 206,\n 207\n ];\n function PDFJpegImage(data) {\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n if (soi != 65496) {\n throw new Error('Invalid JPEG image');\n }\n while (!data.eof()) {\n var ff = data.readByte();\n if (ff != 255) {\n throw new Error('Invalid JPEG image');\n }\n var marker = data.readByte();\n var length = data.readShort();\n if (SOF_CODES.indexOf(marker) >= 0) {\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n data.skip(length - 2);\n }\n if (colorSpace == null) {\n throw new Error('Invalid JPEG image');\n }\n var props = {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: bitsPerComponent,\n Filter: _('DCTDecode')\n };\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _('DeviceGray');\n break;\n case 3:\n props.ColorSpace = _('DeviceRGB');\n break;\n case 4:\n props.ColorSpace = _('DeviceCMYK');\n props.Decode = [\n 1,\n 0,\n 1,\n 0,\n 1,\n 0,\n 1,\n 0\n ];\n break;\n }\n this.asStream = function () {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _('I' + ++RESOURCE_COUNTER);\n return stream;\n };\n }\n function PDFRawImage(width, height, rgb, alpha) {\n this.asStream = function (pdf) {\n var mask = new PDFStream(alpha, {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _('DeviceGray')\n }, true);\n var stream = new PDFStream(rgb, {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _('DeviceRGB'),\n SMask: pdf.attach(mask)\n }, true);\n stream._resourceName = _('I' + ++RESOURCE_COUNTER);\n return stream;\n };\n }\n var PDFStandardFont = defclass(function PDFStandardFont(name) {\n this.props = {\n Type: _('Font'),\n Subtype: _('Type1'),\n BaseFont: _(name)\n };\n this._resourceName = _('F' + ++RESOURCE_COUNTER);\n }, {\n encodeText: function (str) {\n return new PDFString(String(str));\n }\n }, PDFDictionary);\n var PDFFont = defclass(function PDFFont(pdf, font, props) {\n props = this.props = props || {};\n props.Type = _('Font');\n props.Subtype = _('Type0');\n props.Encoding = _('Identity-H');\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _('F' + ++RESOURCE_COUNTER);\n var head = font.head;\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n this.flags = (font.post.isFixedPitch ? 1 : 0) | (this.isSerif ? 1 << 1 : 0) | (this.isScript ? 1 << 3 : 0) | (this.italicAngle !== 0 ? 1 << 6 : 0) | 1 << 5;\n }, {\n encodeText: function (text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n },\n getTextWidth: function (fontSize, text) {\n var this$1 = this;\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this$1._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n },\n beforeRender: function () {\n var self = this;\n var sub = self._sub;\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), { Length1: data.length }, true);\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type: _('FontDescriptor'),\n FontName: _(self._sub.psName),\n FontBBox: self.bbox,\n Flags: self.flags,\n StemV: self.stemV,\n ItalicAngle: self.italicAngle,\n Ascent: self.ascent,\n Descent: self.descent,\n CapHeight: self.capHeight,\n XHeight: self.xHeight,\n FontFile2: self._pdf.attach(fontStream)\n }));\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk) {\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n }(firstChar));\n var descendant = new PDFDictionary({\n Type: _('Font'),\n Subtype: _('CIDFontType2'),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry: new PDFString('Adobe'),\n Ordering: new PDFString('Identity'),\n Supplement: 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [self._pdf.attach(descendant)];\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n },\n _makeCidToGidMap: function () {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n }\n }, PDFDictionary);\n var PDFToUnicodeCmap = defclass(function PDFUnicodeCMap(firstChar, lastChar, map) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }, {\n render: function (out) {\n out.indent('/CIDInit /ProcSet findresource begin');\n out.indent('12 dict begin');\n out.indent('begincmap');\n out.indent('/CIDSystemInfo <<');\n out.indent(' /Registry (Adobe)');\n out.indent(' /Ordering (UCS)');\n out.indent(' /Supplement 0');\n out.indent('>> def');\n out.indent('/CMapName /Adobe-Identity-UCS def');\n out.indent('/CMapType 2 def');\n out.indent('1 begincodespacerange');\n out.indent(' <0000><ffff>');\n out.indent('endcodespacerange');\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, ' beginbfchar');\n out.withIndent(function () {\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([unicode]);\n out.indent('<', zeropad(code.toString(16), 4), '>', '<');\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out('>');\n }\n });\n out.indent('endbfchar');\n out.indent('endcmap');\n out.indent('CMapName currentdict /CMap defineresource pop');\n out.indent('end');\n out.indent('end');\n }\n });\n function makeHash(a) {\n return a.map(function (x) {\n return isArray(x) ? makeHash(x) : typeof x == 'number' ? (Math.round(x * 1000) / 1000).toFixed(3) : x;\n }).join(' ');\n }\n function cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([\n r1,\n g1,\n b1,\n r2,\n g2,\n b2\n ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [\n 0,\n 1\n ],\n Range: [\n 0,\n 1,\n 0,\n 1,\n 0,\n 1\n ],\n N: 1,\n C0: [\n r1,\n g1,\n b1\n ],\n C1: [\n r2,\n g2,\n b2\n ]\n }));\n }\n return func;\n }\n function cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([\n a1,\n a2\n ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [\n 0,\n 1\n ],\n Range: [\n 0,\n 1\n ],\n N: 1,\n C0: [a1],\n C1: [a2]\n }));\n }\n return func;\n }\n function makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(pdf, prevColor.r, prevColor.g, prevColor.b, curColor.r, curColor.g, curColor.b));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(pdf, prevColor.a, curColor.a));\n }\n }\n offsets.pop();\n return {\n hasAlpha: hasAlpha,\n colors: assemble(colors),\n opacities: hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [\n 0,\n 1\n ],\n Bounds: offsets,\n Encode: encode\n };\n }\n }\n function cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n if (!box) {\n var a = [isRadial].concat(coords);\n stops.forEach(function (x) {\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _('Shading'),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _('DeviceRGB'),\n Coords: coords,\n Domain: [\n 0,\n 1\n ],\n Function: funcs,\n Extend: [\n true,\n true\n ]\n });\n pdf.attach(shading);\n shading._resourceName = 'S' + ++RESOURCE_COUNTER;\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n }\n function cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n if (!box) {\n var a = [isRadial].concat(coords);\n stops.forEach(function (x) {\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _('ExtGState'),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _('Mask'),\n S: _('Luminosity'),\n G: pdf.attach(new PDFStream('/a0 gs /s0 sh', {\n Type: _('XObject'),\n Subtype: _('Form'),\n FormType: 1,\n BBox: box ? [\n box.left,\n box.top + box.height,\n box.left + box.width,\n box.top\n ] : [\n 0,\n 1,\n 1,\n 0\n ],\n Group: {\n Type: _('Group'),\n S: _('Transparency'),\n CS: _('DeviceGray'),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: {\n CA: 1,\n ca: 1\n }\n },\n Shading: {\n s0: {\n ColorSpace: _('DeviceGray'),\n Coords: coords,\n Domain: [\n 0,\n 1\n ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [\n true,\n true\n ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = 'O' + ++RESOURCE_COUNTER;\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n }\n function cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == 'radial';\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x,\n gradient.start.y,\n gradient.start.r,\n gradient.end.x,\n gradient.end.y,\n gradient.end.r\n ] : [\n gradient.start.x,\n gradient.start.y,\n gradient.end.x,\n gradient.end.y\n ];\n var shading = cacheColorGradient(pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box);\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n }\n var PDFPage = defclass(function PDFPage(pdf, props) {\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [\n 1,\n 0,\n 0,\n 1,\n 0,\n 0\n ];\n this._annotations = [];\n this._font = null;\n this._fontSize = null;\n this._contextStack = [];\n props = this.props = props || {};\n props.Type = _('Page');\n props.ProcSet = [\n _('PDF'),\n _('Text'),\n _('ImageB'),\n _('ImageC'),\n _('ImageI')\n ];\n props.Resources = new PDFDictionary({\n Font: new PDFDictionary(this._fontResources),\n ExtGState: new PDFDictionary(this._gsResources),\n XObject: new PDFDictionary(this._xResources),\n Pattern: new PDFDictionary(this._patResources),\n Shading: new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n }, {\n _out: function () {\n this._content.data.apply(null, arguments);\n },\n transform: function (a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, ' ', b, ' ', c, ' ', d, ' ', e, ' ', f, ' cm');\n this._out(NL);\n }\n },\n translate: function (dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n },\n scale: function (sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n },\n rotate: function (angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n },\n beginText: function () {\n this._textMode = true;\n this._out('BT', NL);\n },\n endText: function () {\n this._textMode = false;\n this._out('ET', NL);\n },\n _requireTextMode: function () {\n if (!this._textMode) {\n throw new Error('Text mode required; call page.beginText() first');\n }\n },\n _requireFont: function () {\n if (!this._font) {\n throw new Error('No font selected; call page.setFont() first');\n }\n },\n setFont: function (font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, ' ', size, ' Tf', NL);\n },\n setTextLeading: function (size) {\n this._requireTextMode();\n this._out(size, ' TL', NL);\n },\n setTextRenderingMode: function (mode) {\n this._requireTextMode();\n this._out(mode, ' Tr', NL);\n },\n showText: function (text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, ' Tz ');\n }\n this._out(this._font.encodeText(text), ' Tj', NL);\n },\n showTextNL: function (text) {\n this._requireFont();\n this._out(this._font.encodeText(text), ' \\'', NL);\n },\n addLink: function (uri, box) {\n var ll = this._toPage({\n x: box.left,\n y: box.bottom\n });\n var ur = this._toPage({\n x: box.right,\n y: box.top\n });\n this._annotations.push(new PDFDictionary({\n Type: _('Annot'),\n Subtype: _('Link'),\n Rect: [\n ll.x,\n ll.y,\n ur.x,\n ur.y\n ],\n Border: [\n 0,\n 0,\n 0\n ],\n A: new PDFDictionary({\n Type: _('Action'),\n S: _('URI'),\n URI: new PDFString(uri)\n })\n }));\n },\n setStrokeColor: function (r, g, b) {\n this._out(r, ' ', g, ' ', b, ' RG', NL);\n },\n setOpacity: function (opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n },\n setStrokeOpacity: function (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, ' gs', NL);\n }\n },\n setFillColor: function (r, g, b) {\n this._out(r, ' ', g, ' ', b, ' rg', NL);\n },\n setFillOpacity: function (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, ' gs', NL);\n }\n },\n gradient: function (gradient, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out('/' + oname + ' gs ');\n }\n this._out('/' + sname + ' sh', NL);\n this.restore();\n },\n setDashPattern: function (dashArray, dashPhase) {\n this._out(dashArray, ' ', dashPhase, ' d', NL);\n },\n setLineWidth: function (width) {\n this._out(width, ' w', NL);\n },\n setLineCap: function (lineCap) {\n this._out(lineCap, ' J', NL);\n },\n setLineJoin: function (lineJoin) {\n this._out(lineJoin, ' j', NL);\n },\n setMitterLimit: function (mitterLimit) {\n this._out(mitterLimit, ' M', NL);\n },\n save: function () {\n this._contextStack.push(this._context());\n this._out('q', NL);\n },\n restore: function () {\n this._out('Q', NL);\n this._context(this._contextStack.pop());\n },\n moveTo: function (x, y) {\n this._out(x, ' ', y, ' m', NL);\n },\n lineTo: function (x, y) {\n this._out(x, ' ', y, ' l', NL);\n },\n bezier: function (x1, y1, x2, y2, x3, y3) {\n this._out(x1, ' ', y1, ' ', x2, ' ', y2, ' ', x3, ' ', y3, ' c', NL);\n },\n bezier1: function (x1, y1, x3, y3) {\n this._out(x1, ' ', y1, ' ', x3, ' ', y3, ' y', NL);\n },\n bezier2: function (x2, y2, x3, y3) {\n this._out(x2, ' ', y2, ' ', x3, ' ', y3, ' v', NL);\n },\n close: function () {\n this._out('h', NL);\n },\n rect: function (x, y, w, h) {\n this._out(x, ' ', y, ' ', w, ' ', h, ' re', NL);\n },\n ellipse: function (x, y, rx, ry) {\n function _X(v) {\n return x + v;\n }\n function _Y(v) {\n return y + v;\n }\n var k = 0.5522847498307936;\n this.moveTo(_X(0), _Y(ry));\n this.bezier(_X(rx * k), _Y(ry), _X(rx), _Y(ry * k), _X(rx), _Y(0));\n this.bezier(_X(rx), _Y(-ry * k), _X(rx * k), _Y(-ry), _X(0), _Y(-ry));\n this.bezier(_X(-rx * k), _Y(-ry), _X(-rx), _Y(-ry * k), _X(-rx), _Y(0));\n this.bezier(_X(-rx), _Y(ry * k), _X(-rx * k), _Y(ry), _X(0), _Y(ry));\n },\n circle: function (x, y, r) {\n this.ellipse(x, y, r, r);\n },\n stroke: function () {\n this._out('S', NL);\n },\n nop: function () {\n this._out('n', NL);\n },\n clip: function () {\n this._out('W n', NL);\n },\n clipStroke: function () {\n this._out('W S', NL);\n },\n closeStroke: function () {\n this._out('s', NL);\n },\n fill: function () {\n this._out('f', NL);\n },\n fillStroke: function () {\n this._out('B', NL);\n },\n drawImage: function (url) {\n var img = this._pdf.getImage(url);\n if (img) {\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, ' Do', NL);\n }\n },\n comment: function (txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function (line) {\n self._out('% ', line, NL);\n });\n },\n _context: function (val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n },\n _toPage: function (p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a * p.x + c * p.y + e,\n y: b * p.x + d * p.y + f\n };\n }\n }, PDFDictionary);\n function unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, '$2');\n }\n function parseFontDef(fontdef) {\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return {\n fontSize: 12,\n fontFamily: 'sans-serif'\n };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic: m[2] && m[2].toLowerCase() == 'italic',\n variant: m[4],\n bold: m[6] && /bold|700/i.test(m[6]),\n fontSize: fontSize,\n lineHeight: m[12] ? m[12] == 'normal' ? fontSize : parseInt(m[12], 10) : null,\n fontFamily: m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n }\n function getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += '|bold';\n }\n if (style.italic) {\n name += '|italic';\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == 'function') {\n url = url();\n }\n if (!url) {\n url = 'Times-Roman';\n }\n return url;\n }\n var FONT_MAPPINGS = {\n 'serif': 'Times-Roman',\n 'serif|bold': 'Times-Bold',\n 'serif|italic': 'Times-Italic',\n 'serif|bold|italic': 'Times-BoldItalic',\n 'sans-serif': 'Helvetica',\n 'sans-serif|bold': 'Helvetica-Bold',\n 'sans-serif|italic': 'Helvetica-Oblique',\n 'sans-serif|bold|italic': 'Helvetica-BoldOblique',\n 'monospace': 'Courier',\n 'monospace|bold': 'Courier-Bold',\n 'monospace|italic': 'Courier-Oblique',\n 'monospace|bold|italic': 'Courier-BoldOblique',\n 'zapfdingbats': 'ZapfDingbats',\n 'zapfdingbats|bold': 'ZapfDingbats',\n 'zapfdingbats|italic': 'ZapfDingbats',\n 'zapfdingbats|bold|italic': 'ZapfDingbats'\n };\n function fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function () {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + '|bold'] = function () {\n return FONT_MAPPINGS[name + '|bold'];\n };\n FONT_MAPPINGS[alias + '|italic'] = function () {\n return FONT_MAPPINGS[name + '|italic'];\n };\n FONT_MAPPINGS[alias + '|bold|italic'] = function () {\n return FONT_MAPPINGS[name + '|bold|italic'];\n };\n }\n fontAlias('Times New Roman', 'serif');\n fontAlias('Courier New', 'monospace');\n fontAlias('Arial', 'sans-serif');\n fontAlias('Helvetica', 'sans-serif');\n fontAlias('Verdana', 'sans-serif');\n fontAlias('Tahoma', 'sans-serif');\n fontAlias('Georgia', 'sans-serif');\n fontAlias('Monaco', 'monospace');\n fontAlias('Andale Mono', 'monospace');\n function defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n switch (name) {\n case 'dejavu sans':\n FONT_MAPPINGS['sans-serif'] = url;\n break;\n case 'dejavu sans|bold':\n FONT_MAPPINGS['sans-serif|bold'] = url;\n break;\n case 'dejavu sans|italic':\n FONT_MAPPINGS['sans-serif|italic'] = url;\n break;\n case 'dejavu sans|bold|italic':\n FONT_MAPPINGS['sans-serif|bold|italic'] = url;\n break;\n case 'dejavu serif':\n FONT_MAPPINGS['serif'] = url;\n break;\n case 'dejavu serif|bold':\n FONT_MAPPINGS['serif|bold'] = url;\n break;\n case 'dejavu serif|italic':\n FONT_MAPPINGS['serif|italic'] = url;\n break;\n case 'dejavu serif|bold|italic':\n FONT_MAPPINGS['serif|bold|italic'] = url;\n break;\n case 'dejavu mono':\n FONT_MAPPINGS['monospace'] = url;\n break;\n case 'dejavu mono|bold':\n FONT_MAPPINGS['monospace|bold'] = url;\n break;\n case 'dejavu mono|italic':\n FONT_MAPPINGS['monospace|italic'] = url;\n break;\n case 'dejavu mono|bold|italic':\n FONT_MAPPINGS['monospace|bold|italic'] = url;\n break;\n }\n }\n }\n function mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1 * a2 + b1 * c2,\n a1 * b2 + b1 * d2,\n c1 * a2 + d1 * c2,\n c1 * b2 + d1 * d2,\n e1 * a2 + f1 * c2 + e2,\n e1 * b2 + f1 * d2 + f2\n ];\n }\n function isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n }\n var TEXT_RENDERING_MODE = {\n fill: 0,\n stroke: 1,\n fillAndStroke: 2,\n invisible: 3,\n fillAndClip: 4,\n strokeAndClip: 5,\n fillStrokeClip: 6,\n clip: 7\n };\n var TEXT_RENDERING_MODE$1 = TEXT_RENDERING_MODE;\n var DASH_PATTERNS = {\n dash: [4],\n dashDot: [\n 4,\n 2,\n 1,\n 2\n ],\n dot: [\n 1,\n 2\n ],\n longDash: [\n 8,\n 2\n ],\n longDashDot: [\n 8,\n 2,\n 1,\n 2\n ],\n longDashDotDot: [\n 8,\n 2,\n 1,\n 2,\n 1,\n 2\n ],\n solid: []\n };\n var LINE_CAP = {\n butt: 0,\n round: 1,\n square: 2\n };\n var LINE_JOIN = {\n miter: 0,\n round: 1,\n bevel: 2\n };\n function render(group, callback) {\n var fonts = [], images = {}, options = group.options;\n function getOption(name, defval, hash) {\n if (!hash) {\n hash = options;\n }\n if (hash.pdf && hash.pdf[name] != null) {\n return hash.pdf[name];\n }\n return defval;\n }\n var multiPage = getOption('multiPage');\n var imgDPI = getOption('imgDPI');\n if (imgDPI) {\n clearImageCache();\n }\n group.traverse(function (element) {\n dispatch({\n Image: function (element) {\n var url = element.src();\n if (imgDPI) {\n var box = element.bbox().size;\n var prev = images[url];\n box = {\n width: Math.ceil(box.width * imgDPI / 72),\n height: Math.ceil(box.height * imgDPI / 72)\n };\n if (prev) {\n box.width = Math.max(prev.width, box.width);\n box.height = Math.max(prev.height, box.height);\n }\n images[url] = box;\n } else {\n images[url] = null;\n }\n },\n Text: function (element) {\n var style = parseFontDef(element.options.font);\n var url = getFontURL(style);\n if (fonts.indexOf(url) < 0) {\n fonts.push(url);\n }\n }\n }, element);\n });\n function doIt() {\n if (--count > 0) {\n return;\n }\n var pdf = new PDFDocument({\n producer: getOption('producer'),\n title: getOption('title'),\n author: getOption('author'),\n subject: getOption('subject'),\n keywords: getOption('keywords'),\n creator: getOption('creator'),\n date: getOption('date'),\n autoPrint: getOption('autoPrint')\n });\n function drawPage(group) {\n var options = group.options;\n var tmp = optimize(group);\n var bbox = tmp.bbox;\n group = tmp.root;\n var paperSize = getOption('paperSize', getOption('paperSize', 'auto'), options), addMargin = false;\n if (paperSize == 'auto') {\n if (bbox) {\n var size = bbox.getSize();\n paperSize = [\n size.width,\n size.height\n ];\n addMargin = true;\n var origin = bbox.getOrigin();\n tmp = new drawing.Group();\n tmp.transform(new kendoGeometry.Matrix(1, 0, 0, 1, -origin.x, -origin.y));\n tmp.append(group);\n group = tmp;\n } else {\n paperSize = 'A4';\n }\n }\n var page;\n page = pdf.addPage({\n paperSize: paperSize,\n margin: getOption('margin', getOption('margin'), options),\n addMargin: addMargin,\n landscape: getOption('landscape', getOption('landscape', false), options)\n });\n drawElement(group, page, pdf);\n }\n if (multiPage) {\n group.children.forEach(drawPage);\n } else {\n drawPage(group);\n }\n callback(pdf.render(), pdf);\n }\n var count = 2;\n loadFonts(fonts, doIt);\n loadImages(images, doIt);\n }\n function toDataURL(group, callback) {\n render(group, function (data) {\n callback('data:application/pdf;base64,' + data.base64());\n });\n }\n function toBlob(group, callback) {\n render(group, function (data) {\n callback(new window.Blob([data.get()], { type: 'application/pdf' }));\n });\n }\n function saveAs$1(group, filename, proxy, callback) {\n if (window.Blob && !supportBrowser.safari) {\n toBlob(group, function (blob) {\n kendo.saveAs({\n dataURI: blob,\n fileName: filename\n });\n if (callback) {\n callback(blob);\n }\n });\n } else {\n toDataURL(group, function (dataURL) {\n kendo.saveAs({\n dataURI: dataURL,\n fileName: filename,\n proxyURL: proxy\n });\n if (callback) {\n callback(dataURL);\n }\n });\n }\n }\n function dispatch(handlers, element) {\n var handler = handlers[element.nodeType];\n if (handler) {\n return handler.call.apply(handler, arguments);\n }\n return element;\n }\n function drawElement(element, page, pdf) {\n if (element.options._pdfDebug) {\n page.comment('BEGIN: ' + element.options._pdfDebug);\n }\n var transform = element.transform();\n var opacity = element.opacity();\n page.save();\n if (opacity != null && opacity < 1) {\n page.setOpacity(opacity);\n }\n setStrokeOptions(element, page, pdf);\n setFillOptions(element, page, pdf);\n if (transform) {\n var m = transform.matrix();\n page.transform(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n setClipping(element, page, pdf);\n dispatch({\n Path: drawPath,\n MultiPath: drawMultiPath,\n Circle: drawCircle,\n Arc: drawArc,\n Text: drawText,\n Image: drawImage,\n Group: drawGroup,\n Rect: drawRect\n }, element, page, pdf);\n page.restore();\n if (element.options._pdfDebug) {\n page.comment('END: ' + element.options._pdfDebug);\n }\n }\n function setStrokeOptions(element, page) {\n var stroke = element.stroke && element.stroke();\n if (!stroke) {\n return;\n }\n var color = stroke.color;\n if (color) {\n color = parseColor$1(color);\n if (color == null) {\n return;\n }\n page.setStrokeColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setStrokeOpacity(color.a);\n }\n }\n var width = stroke.width;\n if (width != null) {\n if (width === 0) {\n return;\n }\n page.setLineWidth(width);\n }\n var dashType = stroke.dashType;\n if (dashType) {\n page.setDashPattern(DASH_PATTERNS[dashType], 0);\n }\n var lineCap = stroke.lineCap;\n if (lineCap) {\n page.setLineCap(LINE_CAP[lineCap]);\n }\n var lineJoin = stroke.lineJoin;\n if (lineJoin) {\n page.setLineJoin(LINE_JOIN[lineJoin]);\n }\n var opacity = stroke.opacity;\n if (opacity != null) {\n page.setStrokeOpacity(opacity);\n }\n }\n function setFillOptions(element, page) {\n var fill = element.fill && element.fill();\n if (!fill) {\n return;\n }\n if (fill instanceof drawing.Gradient) {\n return;\n }\n var color = fill.color;\n if (color) {\n color = parseColor$1(color);\n if (color == null) {\n return;\n }\n page.setFillColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setFillOpacity(color.a);\n }\n }\n var opacity = fill.opacity;\n if (opacity != null) {\n page.setFillOpacity(opacity);\n }\n }\n function setClipping(element, page, pdf) {\n var clip = element.clip();\n if (clip) {\n _drawPath(clip, page, pdf);\n page.clip();\n }\n }\n function shouldDraw(thing) {\n return thing && (thing instanceof drawing.Gradient || thing.color && !/^(none|transparent)$/i.test(thing.color) && (thing.width == null || thing.width > 0) && (thing.opacity == null || thing.opacity > 0));\n }\n function maybeGradient(element, page, pdf, stroke) {\n var fill = element.fill();\n if (fill instanceof drawing.Gradient) {\n if (stroke) {\n page.clipStroke();\n } else {\n page.clip();\n }\n var isRadial = fill instanceof drawing.RadialGradient;\n var start, end;\n if (isRadial) {\n start = {\n x: fill.center().x,\n y: fill.center().y,\n r: 0\n };\n end = {\n x: fill.center().x,\n y: fill.center().y,\n r: fill.radius()\n };\n } else {\n start = {\n x: fill.start().x,\n y: fill.start().y\n };\n end = {\n x: fill.end().x,\n y: fill.end().y\n };\n }\n var stops = fill.stops.elements().map(function (stop) {\n var offset = stop.offset();\n if (/%$/.test(offset)) {\n offset = parseFloat(offset) / 100;\n } else {\n offset = parseFloat(offset);\n }\n var color = parseColor$1(stop.color());\n color.a *= stop.opacity();\n return {\n offset: offset,\n color: color\n };\n });\n stops.unshift(stops[0]);\n stops.push(stops[stops.length - 1]);\n var gradient = {\n userSpace: fill.userSpace(),\n type: isRadial ? 'radial' : 'linear',\n start: start,\n end: end,\n stops: stops\n };\n var box = element.rawBBox();\n var tl = box.topLeft(), size = box.getSize();\n box = {\n left: tl.x,\n top: tl.y,\n width: size.width,\n height: size.height\n };\n page.gradient(gradient, box);\n return true;\n }\n }\n function maybeFillStroke(element, page, pdf) {\n if (shouldDraw(element.fill()) && shouldDraw(element.stroke())) {\n if (!maybeGradient(element, page, pdf, true)) {\n page.fillStroke();\n }\n } else if (shouldDraw(element.fill())) {\n if (!maybeGradient(element, page, pdf, false)) {\n page.fill();\n }\n } else if (shouldDraw(element.stroke())) {\n page.stroke();\n } else {\n page.nop();\n }\n }\n function maybeDrawRect(path, page) {\n var segments = path.segments;\n if (segments.length == 4 && path.options.closed) {\n var a = [];\n for (var i = 0; i < segments.length; ++i) {\n if (segments[i].controlIn()) {\n return false;\n }\n a[i] = segments[i].anchor();\n }\n var isRect = a[0].y == a[1].y && a[1].x == a[2].x && a[2].y == a[3].y && a[3].x == a[0].x || a[0].x == a[1].x && a[1].y == a[2].y && a[2].x == a[3].x && a[3].y == a[0].y;\n if (isRect) {\n page.rect(a[0].x, a[0].y, a[2].x - a[0].x, a[2].y - a[0].y);\n return true;\n }\n }\n }\n function _drawPath(element, page, pdf) {\n var segments = element.segments;\n if (segments.length === 0) {\n return;\n }\n if (!maybeDrawRect(element, page, pdf)) {\n for (var prev, i = 0; i < segments.length; ++i) {\n var seg = segments[i];\n var anchor = seg.anchor();\n if (!prev) {\n page.moveTo(anchor.x, anchor.y);\n } else {\n var prevOut = prev.controlOut();\n var controlIn = seg.controlIn();\n if (prevOut && controlIn) {\n page.bezier(prevOut.x, prevOut.y, controlIn.x, controlIn.y, anchor.x, anchor.y);\n } else {\n page.lineTo(anchor.x, anchor.y);\n }\n }\n prev = seg;\n }\n if (element.options.closed) {\n page.close();\n }\n }\n }\n function drawPath(element, page, pdf) {\n _drawPath(element, page, pdf);\n maybeFillStroke(element, page, pdf);\n }\n function drawMultiPath(element, page, pdf) {\n var paths = element.paths;\n for (var i = 0; i < paths.length; ++i) {\n _drawPath(paths[i], page, pdf);\n }\n maybeFillStroke(element, page, pdf);\n }\n function drawCircle(element, page, pdf) {\n var g = element.geometry();\n page.circle(g.center.x, g.center.y, g.radius);\n maybeFillStroke(element, page, pdf);\n }\n function drawArc(element, page, pdf) {\n var points = element.geometry().curvePoints();\n page.moveTo(points[0].x, points[0].y);\n for (var i = 1; i < points.length;) {\n page.bezier(points[i].x, points[i++].y, points[i].x, points[i++].y, points[i].x, points[i++].y);\n }\n maybeFillStroke(element, page, pdf);\n }\n function drawText(element, page) {\n var style = parseFontDef(element.options.font);\n var pos = element._position;\n var mode;\n if (element.fill() && element.stroke()) {\n mode = TEXT_RENDERING_MODE$1.fillAndStroke;\n } else if (element.fill()) {\n mode = TEXT_RENDERING_MODE$1.fill;\n } else if (element.stroke()) {\n mode = TEXT_RENDERING_MODE$1.stroke;\n }\n page.transform(1, 0, 0, -1, pos.x, pos.y + style.fontSize);\n page.beginText();\n page.setFont(getFontURL(style), style.fontSize);\n page.setTextRenderingMode(mode);\n page.showText(element.content(), element._pdfRect ? element._pdfRect.width() : null);\n page.endText();\n }\n function drawGroup(element, page, pdf) {\n if (element._pdfLink) {\n page.addLink(element._pdfLink.url, element._pdfLink);\n }\n var children = element.children;\n for (var i = 0; i < children.length; ++i) {\n drawElement(children[i], page, pdf);\n }\n }\n function drawImage(element, page) {\n var url = element.src();\n if (!url) {\n return;\n }\n var rect = element.rect();\n var tl = rect.getOrigin();\n var sz = rect.getSize();\n page.transform(sz.width, 0, 0, -sz.height, tl.x, tl.y + sz.height);\n page.drawImage(url);\n }\n function drawRect(element, page, pdf) {\n var geometry = element.geometry();\n page.rect(geometry.origin.x, geometry.origin.y, geometry.size.width, geometry.size.height);\n maybeFillStroke(element, page, pdf);\n }\n function parseColor$1(value) {\n var color = kendo.parseColor(value, true);\n return color ? color.toRGB() : null;\n }\n function optimize(root) {\n var clipbox = false;\n var matrix = kendoGeometry.Matrix.unit();\n var currentBox = null;\n var changed;\n do {\n changed = false;\n root = opt(root);\n } while (root && changed);\n return {\n root: root,\n bbox: currentBox\n };\n function change(newShape) {\n changed = true;\n return newShape;\n }\n function visible(shape) {\n return shape.visible() && shape.opacity() > 0 && (shouldDraw(shape.fill()) || shouldDraw(shape.stroke()));\n }\n function optArray(a) {\n var b = [];\n for (var i = 0; i < a.length; ++i) {\n var el = opt(a[i]);\n if (el != null) {\n b.push(el);\n }\n }\n return b;\n }\n function withClipping(shape, f) {\n var saveclipbox = clipbox;\n var savematrix = matrix;\n if (shape.transform()) {\n matrix = matrix.multiplyCopy(shape.transform().matrix());\n }\n var clip = shape.clip();\n if (clip) {\n clip = clip.bbox();\n if (clip) {\n clip = clip.bbox(matrix);\n clipbox = clipbox ? kendoGeometry.Rect.intersect(clipbox, clip) : clip;\n }\n }\n try {\n return f();\n } finally {\n clipbox = saveclipbox;\n matrix = savematrix;\n }\n }\n function inClipbox(shape) {\n if (clipbox == null) {\n return false;\n }\n var box = shape.rawBBox().bbox(matrix);\n if (clipbox && box) {\n box = kendoGeometry.Rect.intersect(box, clipbox);\n }\n return box;\n }\n function opt(shape) {\n return withClipping(shape, function () {\n if (!(shape instanceof drawing.Group || shape instanceof drawing.MultiPath)) {\n var box = inClipbox(shape);\n if (!box) {\n return change(null);\n }\n currentBox = currentBox ? kendoGeometry.Rect.union(currentBox, box) : box;\n }\n return dispatch({\n Path: function (shape) {\n if (shape.segments.length === 0 || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n MultiPath: function (shape) {\n if (!visible(shape)) {\n return change(null);\n }\n var el = new drawing.MultiPath(shape.options);\n el.paths = optArray(shape.paths);\n if (el.paths.length === 0) {\n return change(null);\n }\n return el;\n },\n Circle: function (shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Arc: function (shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Text: function (shape) {\n if (!/\\S/.test(shape.content()) || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Image: function (shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n return shape;\n },\n Group: function (shape) {\n var el = new drawing.Group(shape.options);\n el.children = optArray(shape.children);\n el._pdfLink = shape._pdfLink;\n if (shape !== root && el.children.length === 0 && !shape._pdfLink) {\n return change(null);\n }\n return el;\n },\n Rect: function (shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n }\n }, shape);\n });\n }\n }\n function exportPDF(group, options) {\n var promise = util.createPromise();\n for (var i in options) {\n if (i == 'margin' && group.options.pdf && group.options.pdf._ignoreMargin) {\n continue;\n }\n group.options.set('pdf.' + i, options[i]);\n }\n toDataURL(group, promise.resolve);\n return promise;\n }\n function exportPDFToBlob(group, options) {\n var promise = util.createPromise();\n for (var i in options) {\n if (i == 'margin' && group.options.pdf && group.options.pdf._ignoreMargin) {\n continue;\n }\n group.options.set('pdf.' + i, options[i]);\n }\n if (window.Blob && !supportBrowser.safari) {\n toBlob(group, promise.resolve);\n } else {\n toDataURL(group, promise.resolve);\n }\n return promise;\n }\n kendo.deepExtend(kendo.pdf, {\n Document: PDFDocument,\n BinaryStream: BinaryStream,\n defineFont: defineFont,\n parseFontDef: parseFontDef,\n getFontURL: getFontURL,\n loadFonts: loadFonts,\n loadImages: loadImages,\n getPaperOptions: getPaperOptions,\n clearImageCache: clearImageCache,\n TEXT_RENDERING_MODE: TEXT_RENDERING_MODE,\n exportPDF: exportPDF,\n exportPDFToBlob: exportPDFToBlob,\n saveAs: saveAs$1,\n toDataURL: toDataURL,\n toBlob: toBlob,\n render: render\n });\n kendo.drawing.exportPDF = kendo.pdf.exportPDF;\n kendo.drawing.pdf = kendo.pdf;\n }(kendo));\n return kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('pdf/mixins', ['pdf/core'], f);\n}(function () {\n (function ($, undefined) {\n kendo.PDFMixin = {\n extend: function (proto) {\n proto.events.push('pdfExport');\n proto.options.pdf = this.options;\n proto.saveAsPDF = this.saveAsPDF;\n proto._drawPDF = this._drawPDF;\n proto._drawPDFShadow = this._drawPDFShadow;\n },\n options: {\n fileName: 'Export.pdf',\n proxyURL: '',\n paperSize: 'auto',\n allPages: false,\n landscape: false,\n margin: null,\n title: null,\n author: null,\n subject: null,\n keywords: null,\n creator: 'Kendo UI PDF Generator v.' + kendo.version,\n date: null\n },\n saveAsPDF: function () {\n var progress = new $.Deferred();\n var promise = progress.promise();\n var args = { promise: promise };\n if (this.trigger('pdfExport', args)) {\n return;\n }\n var options = this.options.pdf;\n options.multiPage = options.multiPage || options.allPages;\n this._drawPDF(progress).then(function (root) {\n return kendo.drawing.exportPDF(root, options);\n }).done(function (dataURI) {\n kendo.saveAs({\n dataURI: dataURI,\n fileName: options.fileName,\n proxyURL: options.proxyURL,\n forceProxy: options.forceProxy,\n proxyTarget: options.proxyTarget\n });\n progress.resolve();\n }).fail(function (err) {\n progress.reject(err);\n });\n return promise;\n },\n _drawPDF: function (progress) {\n var promise = new $.Deferred();\n kendo.drawing.drawDOM(this.wrapper).done(function (group) {\n var args = {\n page: group,\n pageNumber: 1,\n progress: 1,\n totalPages: 1\n };\n progress.notify(args);\n promise.resolve(args.page);\n }).fail(function (err) {\n promise.reject(err);\n });\n return promise;\n },\n _drawPDFShadow: function (settings, drawOptions) {\n settings = settings || {};\n var wrapper = this.wrapper;\n var shadow = $('<div class=\\'k-pdf-export-shadow\\'>');\n if (settings.width) {\n shadow.css({\n width: settings.width,\n overflow: 'visible'\n });\n }\n wrapper.before(shadow);\n shadow.append(settings.content || wrapper.clone(true, true));\n var defer = $.Deferred();\n setTimeout(function () {\n var promise = kendo.drawing.drawDOM(shadow, drawOptions);\n promise.always(function () {\n shadow.remove();\n }).then(function () {\n defer.resolve.apply(defer, arguments);\n }).fail(function () {\n defer.reject.apply(defer, arguments);\n }).progress(function () {\n defer.progress.apply(defer, arguments);\n });\n }, 15);\n return defer.promise();\n }\n };\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.pdf', [\n 'kendo.core',\n 'kendo.drawing',\n 'pdf/core',\n 'pdf/mixins'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'pdf',\n name: 'PDF export',\n description: 'PDF Generation framework',\n mixin: true,\n category: 'framework',\n depends: [\n 'core',\n 'drawing'\n ]\n };\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dialog', [\n 'kendo.core',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dialog',\n name: 'Dialog',\n category: 'web',\n description: 'The dialog widget is a modal popup that brings information to the user.',\n depends: [\n 'core',\n 'popup'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, TabKeyTrap = kendo.ui.Popup.TabKeyTrap, proxy = $.proxy, template = kendo.template, keys = kendo.keys, isFunction = $.isFunction, NS = 'kendoWindow', KDIALOG = '.k-dialog', KWINDOW = '.k-window', KICONCLOSE = '.k-dialog-close', KCONTENTCLASS = 'k-content k-window-content k-dialog-content', KCONTENTSELECTOR = '.k-window-content', KCONTENT = '.k-content', KSCROLL = 'k-scroll', KTITLELESS = 'k-dialog-titleless', KDIALOGTITLE = '.k-dialog-title', KDIALOGTITLEBAR = KDIALOGTITLE + 'bar', KBUTTONGROUP = '.k-dialog-buttongroup', KBUTTON = '.k-button', KALERT = 'k-alert', KCONFIRM = 'k-confirm', KPROMPT = 'k-prompt', KTEXTBOX = '.k-textbox', KOVERLAY = '.k-overlay', VISIBLE = ':visible', ZINDEX = 'zIndex', BODY = 'body', INITOPEN = 'initOpen', TOUCHSTART = 'touchstart', TOUCHMOVE = 'touchmove', OPEN = 'open', CLOSE = 'close', SHOW = 'show', HIDE = 'hide', WIDTH = 'width', SIZE = {\n small: 'k-window-sm',\n medium: 'k-window-md',\n large: 'k-window-lg'\n }, HIDDEN = 'hidden', OVERFLOW = 'overflow', DATADOCOVERFLOWRULE = 'original-overflow-rule', DATAHTMLTAPYRULE = 'tap-y', HUNDREDPERCENT = 100, CSSFLEXBOX = kendo.support.cssFlexbox, messages = {\n okText: 'OK',\n cancel: 'Cancel',\n promptInput: 'Input'\n }, ceil = Math.ceil, templates, overlaySelector = ':not(link,meta,script,style)';\n function defined(x) {\n return typeof x != 'undefined';\n }\n function constrain(value, low, high) {\n return Math.max(Math.min(parseInt(value, 10), high === Infinity ? high : parseInt(high, 10)), parseInt(low, 10));\n }\n function buttonKeyTrigger(e) {\n return e.keyCode == keys.ENTER || e.keyCode == keys.SPACEBAR;\n }\n var DialogBase = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that._init(that.element, that.options);\n kendo.notify(that);\n },\n _init: function (element, options) {\n var that = this, wrapper;\n that._centerCallback = proxy(that._center, that);\n that.appendTo = $(BODY);\n if (!defined(options.visible) || options.visible === null) {\n options.visible = element.is(VISIBLE);\n }\n if (that.wrapperTemplate === undefined) {\n that.wrapperTemplate = templates.wrapper;\n }\n that._createDialog();\n wrapper = that.wrapper = element.closest(KDIALOG);\n if (options._defaultFocus === undefined) {\n that._defaultFocus = element[0];\n }\n that._tabindex(element);\n that._dimensions();\n this._tabKeyTrap = new TabKeyTrap(wrapper);\n if (!that.options.visible) {\n that.wrapper.hide();\n } else {\n that._triggerOpen();\n }\n },\n setOptions: function (options) {\n var that = this;\n var sizeClass = that.options.size;\n options = $.extend(that.options, options);\n Widget.fn.setOptions.call(that, options);\n if (options.title !== undefined) {\n that.title(options.title);\n }\n if (options.content) {\n kendo.destroy(that.element.children());\n that.element.html(options.content);\n }\n if (options.actions) {\n that.wrapper.children(KBUTTONGROUP).remove();\n that._createActionbar(that.wrapper);\n }\n that.wrapper.show();\n that._closable(that.wrapper);\n that.wrapper.removeClass(SIZE[sizeClass]);\n that._dimensions();\n if (!options.visible) {\n that.wrapper.hide();\n } else {\n that._triggerOpen();\n }\n if (typeof options.modal !== 'undefined') {\n var visible = that.options.visible !== false;\n that._enableDocumentScrolling();\n that._overlay(options.modal && visible);\n }\n },\n _dimensions: function () {\n var that = this, wrapper = that.wrapper, options = that.options, width = options.width, height = options.height, sizeClass = options.size, dimensions = [\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight'\n ];\n for (var i = 0; i < dimensions.length; i++) {\n var value = options[dimensions[i]];\n if (value && value != Infinity) {\n wrapper.css(dimensions[i], value);\n }\n }\n this._setElementMaxHeight();\n if (width) {\n if (width.toString().indexOf('%') > 0) {\n wrapper.width(width);\n } else {\n wrapper.outerWidth(constrain(width, options.minWidth, options.maxWidth));\n }\n }\n if (height) {\n if (height.toString().indexOf('%') > 0) {\n wrapper.height(height);\n } else {\n wrapper.outerHeight(constrain(height, options.minHeight, options.maxHeight));\n }\n this._setElementHeight();\n }\n if (sizeClass && SIZE[sizeClass]) {\n wrapper.addClass(SIZE[sizeClass]);\n }\n },\n _setElementMaxHeight: function () {\n var that = this, element = that.element, maxHeight = that.options.maxHeight, paddingBox, elementMaxHeight;\n if (maxHeight != Infinity) {\n paddingBox = that._paddingBox(element);\n elementMaxHeight = parseFloat(maxHeight, 10) - that._uiHeight() - paddingBox.vertical;\n if (elementMaxHeight > 0) {\n element.css({ maxHeight: ceil(elementMaxHeight) + 'px' });\n }\n }\n },\n _paddingBox: function (element) {\n var paddingTop = parseFloat(element.css('padding-top'), 10), paddingLeft = parseFloat(element.css('padding-left'), 10), paddingBottom = parseFloat(element.css('padding-bottom'), 10), paddingRight = parseFloat(element.css('padding-right'), 10);\n return {\n vertical: paddingTop + paddingBottom,\n horizontal: paddingLeft + paddingRight\n };\n },\n _setElementHeight: function () {\n var that = this, element = that.element, height = that.options.height, paddingBox = that._paddingBox(element), elementHeight = parseFloat(height, 10) - that._uiHeight() - paddingBox.vertical;\n if (elementHeight < 0) {\n elementHeight = 0;\n }\n element.css({ height: ceil(elementHeight) + 'px' });\n this._applyScrollClassName(element);\n },\n _applyScrollClassName: function (element) {\n var hasScroll = element.get(0).scrollHeight > element.outerHeight();\n if (hasScroll) {\n element.addClass(KSCROLL);\n } else {\n element.removeClass(KSCROLL);\n }\n },\n _uiHeight: function () {\n var that = this, wrapper = that.wrapper, actionbar = wrapper.children(KBUTTONGROUP), actionbarHeight = actionbar[0] && actionbar[0].offsetHeight || 0, titlebar = wrapper.children(KDIALOGTITLEBAR), titlebarHeight = titlebar[0] && titlebar[0].offsetHeight || 0;\n return actionbarHeight + titlebarHeight;\n },\n _overlay: function (visible) {\n var overlay = this.appendTo.children(KOVERLAY), wrapper = this.wrapper;\n if (!overlay.length) {\n overlay = $(templates.overlay);\n }\n overlay.insertBefore(wrapper[0]).toggle(visible).css(ZINDEX, parseInt(wrapper.css(ZINDEX), 10) - 1);\n if (visible) {\n this._waiAriaOverlay();\n } else {\n this._removeWaiAriaOverlay();\n }\n if (this.options.modal.preventScroll) {\n this._stopDocumentScrolling();\n }\n return overlay;\n },\n _waiAriaOverlay: function () {\n var node = this.wrapper;\n this._overlayedNodes = node.prevAll(overlaySelector).add(node.nextAll(overlaySelector)).each(function () {\n var jthis = $(this);\n jthis.data('ariaHidden', jthis.attr('aria-hidden'));\n jthis.attr('aria-hidden', 'true');\n });\n },\n _removeWaiAriaOverlay: function () {\n return this._overlayedNodes && this._overlayedNodes.each(function () {\n var node = $(this);\n var hiddenValue = node.data('ariaHidden');\n if (hiddenValue) {\n node.attr('aria-hidden', hiddenValue);\n } else {\n node.removeAttr('aria-hidden');\n }\n });\n },\n _closeClick: function (e) {\n e.preventDefault();\n this.close(false);\n },\n _closeKeyHandler: function (e) {\n if (buttonKeyTrigger(e) || e.keyCode == keys.ESC) {\n this.close(false);\n }\n },\n _keydown: function (e) {\n var that = this, options = that.options, keyCode = e.keyCode;\n if (keyCode == keys.ESC && !that._closing && options.closable) {\n that.close(false);\n }\n },\n _createDialog: function () {\n var that = this, content = that.element, options = that.options, isRtl = kendo.support.isRtl(content), titlebar = $(templates.titlebar(options)), titleId = (content.id || kendo.guid()) + '_title', wrapper = $(that.wrapperTemplate(options));\n wrapper.toggleClass('k-rtl', isRtl);\n content.addClass(KCONTENTCLASS);\n that.appendTo.append(wrapper);\n if (options.title !== false) {\n wrapper.append(titlebar);\n titlebar.attr('id', titleId);\n wrapper.attr('aria-labelledby', titleId);\n } else {\n wrapper.addClass(KTITLELESS);\n }\n that._closable(wrapper);\n wrapper.append(content);\n if (options.content) {\n kendo.destroy(content.children());\n content.html(options.content);\n }\n if (options.actions.length) {\n that._createActionbar(wrapper);\n }\n },\n _closable: function (wrapper) {\n var that = this;\n var options = that.options;\n var titlebar = wrapper.children(KDIALOGTITLEBAR);\n var titlebarActions = titlebar.find('.k-window-actions');\n var closeAction = titlebarActions.length ? titlebarActions.find('.k-dialog-close') : wrapper.find('.k-dialog-close');\n closeAction.remove();\n if (options.closable !== false) {\n if (options.title !== false && titlebarActions.length) {\n titlebarActions.append(templates.close(options));\n } else {\n wrapper.prepend(templates.close(options));\n }\n wrapper.autoApplyNS(NS);\n that.element.autoApplyNS(NS);\n wrapper.find(KICONCLOSE).on('click', proxy(that._closeClick, that)).on('keydown', proxy(that._closeKeyHandler, that));\n that.element.on('keydown', proxy(that._keydown, that));\n }\n },\n _createActionbar: function (wrapper) {\n var isStretchedLayout = this.options.buttonLayout === 'stretched';\n var buttonLayout = isStretchedLayout ? 'stretched' : 'normal';\n var actionbar = $(templates.actionbar({ buttonLayout: buttonLayout }));\n this._addButtons(actionbar);\n if (isStretchedLayout && !CSSFLEXBOX) {\n this._normalizeButtonSize(actionbar);\n }\n wrapper.append(actionbar);\n },\n _addButtons: function (actionbar) {\n var that = this, o = that.options, actionClick = proxy(that._actionClick, that), actionKeyHandler = proxy(that._actionKeyHandler, that), actions = that.options.actions, length = actions.length, buttonSize = Math.round(HUNDREDPERCENT / length), action, text;\n for (var i = 0; i < length; i++) {\n action = actions[i];\n text = that._mergeTextWithOptions(action);\n var btn = $(templates.action(action)).autoApplyNS(NS).html(text).appendTo(actionbar).data('action', action.action).on('click', actionClick).on('keydown', actionKeyHandler);\n if (o.buttonLayout === 'stretched' && !CSSFLEXBOX) {\n if (i == length - 1) {\n buttonSize = HUNDREDPERCENT - i * buttonSize;\n }\n btn.css(WIDTH, buttonSize + '%');\n }\n }\n },\n _mergeTextWithOptions: function (action) {\n var text = action.text;\n return text ? template(text)(this.options) : '';\n },\n _normalizeButtonSize: function (actionbar) {\n var that = this, options = that.options, lastButton = actionbar.children(KBUTTON + ':last'), currentSize = parseFloat(lastButton[0] ? lastButton[0].style[WIDTH] : 0), difference = HUNDREDPERCENT - options.actions.length * currentSize;\n if (difference > 0) {\n lastButton.css(WIDTH, currentSize + difference + '%');\n }\n },\n _tabindex: function (target) {\n var that = this;\n var wrapper = that.wrapper;\n var closeBtn = wrapper.find(KICONCLOSE);\n var actionButtons = wrapper.find(KBUTTONGROUP + ' ' + KBUTTON);\n Widget.fn._tabindex.call(this, target);\n var tabIndex = target.attr('tabindex');\n closeBtn.attr('tabIndex', tabIndex);\n actionButtons.attr('tabIndex', tabIndex);\n },\n _actionClick: function (e) {\n if (this.wrapper.is(VISIBLE)) {\n this._runActionBtn(e.currentTarget);\n }\n },\n _actionKeyHandler: function (e) {\n if (buttonKeyTrigger(e)) {\n this._runActionBtn(e.currentTarget);\n } else if (e.keyCode == keys.ESC) {\n this.close(false);\n }\n },\n _runActionBtn: function (target) {\n var that = this;\n if (that._closing) {\n return;\n }\n var action = $(target).data('action'), preventClose = isFunction(action) && action({ sender: that }) === false;\n if (!preventClose) {\n that.close(false);\n }\n },\n _triggerOpen: function () {\n var that = this;\n var options = that.options;\n var wrapper = that.wrapper;\n that.toFront();\n that._triggerInitOpen();\n that.trigger(OPEN);\n if (options.modal) {\n that._overlay(wrapper.is(VISIBLE)).css({ opacity: 0.5 });\n that._focusDialog();\n }\n },\n open: function () {\n var that = this, wrapper = that.wrapper, showOptions = this._animationOptions(OPEN), options = that.options, overlay, otherModalsVisible;\n this._triggerInitOpen();\n if (!that.trigger(OPEN)) {\n if (that._closing) {\n wrapper.kendoStop(true, true);\n }\n that._closing = false;\n that.toFront();\n options.visible = true;\n if (options.modal) {\n otherModalsVisible = !!that._modals().length;\n overlay = that._overlay(otherModalsVisible);\n overlay.kendoStop(true, true);\n if (showOptions.duration && kendo.effects.Fade && !otherModalsVisible) {\n var overlayFx = kendo.fx(overlay).fadeIn();\n overlayFx.duration(showOptions.duration || 0);\n overlayFx.endValue(0.5);\n overlayFx.play();\n } else {\n overlay.css('opacity', 0.5);\n }\n overlay.show();\n }\n wrapper.show().kendoStop().kendoAnimate({\n effects: showOptions.effects,\n duration: showOptions.duration,\n complete: proxy(that._openAnimationEnd, that)\n });\n wrapper.show();\n }\n return that;\n },\n _animationOptions: function (id) {\n var animation = this.options.animation;\n var basicAnimation = {\n open: { effects: {} },\n close: {\n hide: true,\n effects: {}\n }\n };\n return animation && animation[id] || basicAnimation[id];\n },\n _openAnimationEnd: function () {\n if (this.options.modal) {\n this._focusDialog();\n }\n this.trigger(SHOW);\n },\n _triggerInitOpen: function () {\n if (!defined(this._initOpenTriggered)) {\n this._initOpenTriggered = true;\n this.trigger(INITOPEN);\n }\n },\n toFront: function () {\n var that = this, wrapper = that.wrapper, zIndex = +wrapper.css(ZINDEX), originalZIndex = zIndex;\n that.center();\n $(KWINDOW).each(function (i, element) {\n var windowObject = $(element), zIndexNew = windowObject.css(ZINDEX);\n if (!isNaN(zIndexNew)) {\n zIndex = Math.max(+zIndexNew, zIndex);\n }\n });\n if (!wrapper[0].style.zIndex || originalZIndex < zIndex) {\n wrapper.css(ZINDEX, zIndex + 2);\n }\n that.element.find('> .k-overlay').remove();\n wrapper = null;\n return that;\n },\n close: function (systemTriggered) {\n if (!arguments.length) {\n systemTriggered = true;\n }\n this._close(systemTriggered);\n this._stopCenterOnResize();\n return this;\n },\n _close: function (systemTriggered) {\n var that = this, wrapper = that.wrapper, options = that.options, showOptions = this._animationOptions('open'), hideOptions = this._animationOptions('close');\n if (wrapper.is(VISIBLE) && !that.trigger(CLOSE, { userTriggered: !systemTriggered })) {\n if (that._closing) {\n return;\n }\n that._closing = true;\n options.visible = false;\n this._removeOverlay();\n wrapper.kendoStop().kendoAnimate({\n effects: hideOptions.effects || showOptions.effects,\n reverse: hideOptions.reverse === true,\n duration: hideOptions.duration,\n complete: proxy(this._closeAnimationEnd, this)\n });\n }\n return that;\n },\n center: function () {\n this._center();\n this._centerOnResize();\n },\n _center: function () {\n var that = this, wrapper = that.wrapper, documentWindow = $(window), scrollTop = 0, scrollLeft = 0, newLeft = scrollLeft + Math.max(0, (documentWindow.width() - wrapper.width()) / 2), newTop = scrollTop + Math.max(0, (documentWindow.height() - wrapper.height() - parseInt(wrapper.css('paddingTop'), 10)) / 2);\n wrapper.css({\n left: newLeft,\n top: newTop\n });\n return that;\n },\n _centerOnResize: function () {\n if (this._trackResize) {\n return;\n }\n kendo.onResize(this._centerCallback);\n this._trackResize = true;\n },\n _stopCenterOnResize: function () {\n kendo.unbindResize(this._centerCallback);\n this._trackResize = false;\n },\n _removeOverlay: function () {\n var modals = this._modals();\n var options = this.options;\n var hideOverlay = options.modal && !modals.length;\n if (hideOverlay) {\n this._overlay(false).remove();\n if (options.modal.preventScroll) {\n this._enableDocumentScrolling();\n }\n } else if (modals.length) {\n this._object(modals.last())._overlay(true);\n if (options.modal.preventScroll) {\n this._stopDocumentScrolling();\n }\n }\n },\n _stopDocumentScrolling: function () {\n var that = this;\n var $body = $('body');\n that._storeOverflowRule($body);\n $body.css(OVERFLOW, HIDDEN);\n var $html = $('html');\n var html = $html[0];\n that._storeOverflowRule($html);\n $html.css(OVERFLOW, HIDDEN);\n if (kendo.support.mobileOS.ios) {\n html.addEventListener(TOUCHSTART, that._touchStart, { passive: false });\n html.addEventListener(TOUCHMOVE, that._touchMove, { passive: false });\n }\n },\n _touchStart: function (e) {\n $(this).data(DATAHTMLTAPYRULE, e.changedTouches[0].pageY);\n },\n _touchMove: function (e) {\n var target = e.target;\n var $target = $(e.target);\n var upScroll = e.changedTouches[0].pageY - $(this).data(DATAHTMLTAPYRULE) > 0;\n var preventYScroll = $target.is(KCONTENTSELECTOR) && (upScroll && $target.scrollTop() === 0) || !upScroll && $target.scrollTop() === target.scrollHeight - target.clientHeight;\n if (!$target.is(KCONTENTSELECTOR) || preventYScroll) {\n e.preventDefault();\n }\n },\n _enableDocumentScrolling: function () {\n var that = this;\n var $body = $(document.body);\n var $html = $('html');\n var html = $html[0];\n that._restoreOverflowRule($body);\n that._restoreOverflowRule($html);\n if (kendo.support.mobileOS.ios) {\n $html.removeData(DATAHTMLTAPYRULE);\n html.removeEventListener(TOUCHSTART, that._touchStart, { passive: false });\n html.removeEventListener(TOUCHMOVE, that._touchMove, { passive: false });\n }\n },\n _storeOverflowRule: function ($element) {\n if (this._isOverflowStored($element)) {\n return;\n }\n var overflowRule = $element.get(0).style.overflow;\n if (typeof overflowRule === 'string') {\n $element.data(DATADOCOVERFLOWRULE, overflowRule);\n }\n },\n _isOverflowStored: function ($element) {\n return typeof $element.data(DATADOCOVERFLOWRULE) === 'string';\n },\n _restoreOverflowRule: function ($element) {\n var overflowRule = $element.data(DATADOCOVERFLOWRULE);\n if (overflowRule !== null && overflowRule !== undefined) {\n $element.css(OVERFLOW, overflowRule);\n $element.removeData(DATADOCOVERFLOWRULE);\n } else {\n $element.css(OVERFLOW, '');\n }\n },\n _closeAnimationEnd: function () {\n var that = this;\n that._closing = false;\n that.wrapper.hide().css('opacity', '');\n that.trigger(HIDE);\n if (that.options.modal) {\n var lastModal = that._object(that._modals().last());\n if (lastModal) {\n lastModal.toFront();\n }\n }\n },\n _modals: function () {\n var that = this;\n var zStack = $(KWINDOW).filter(function () {\n var dom = $(this);\n var object = that._object(dom);\n var options = object && object.options;\n return options && options.modal && that.options.appendTo == options.appendTo && options.visible && dom.is(VISIBLE);\n }).sort(function (a, b) {\n return +$(a).css('zIndex') - +$(b).css('zIndex');\n });\n that = null;\n return zStack;\n },\n _object: function (element) {\n var content = element.children(KCONTENT);\n var widget = kendo.widgetInstance(content);\n if (widget) {\n return widget;\n }\n return undefined;\n },\n destroy: function () {\n var that = this;\n that._destroy();\n Widget.fn.destroy.call(that);\n that.wrapper.remove();\n that.wrapper = that.element = $();\n },\n _destroy: function () {\n var that = this;\n var ns = '.' + NS;\n that.wrapper.off(ns);\n that.element.off(ns);\n that.wrapper.find(KICONCLOSE + ',' + KBUTTONGROUP + ' > ' + KBUTTON).off(ns);\n that._stopCenterOnResize();\n },\n title: function (html) {\n var that = this, wrapper = that.wrapper, options = that.options, titlebar = wrapper.children(KDIALOGTITLEBAR), title = titlebar.children(KDIALOGTITLE), encodedHtml = kendo.htmlEncode(html);\n if (!arguments.length) {\n return title.html();\n }\n if (html === false) {\n titlebar.remove();\n wrapper.addClass(KTITLELESS);\n } else {\n if (!titlebar.length) {\n titlebar = $(templates.titlebar(options)).prependTo(wrapper);\n title = titlebar.children(KDIALOGTITLE);\n wrapper.removeClass(KTITLELESS);\n }\n title.html(encodedHtml);\n }\n that.options.title = encodedHtml;\n return that;\n },\n content: function (html, data) {\n var that = this, content = that.wrapper.children(KCONTENT);\n if (!defined(html)) {\n return content.html();\n }\n this.angular('cleanup', function () {\n return { elements: content.children() };\n });\n kendo.destroy(content.children());\n content.html(html);\n this.angular('compile', function () {\n var a = [];\n for (var i = content.length; --i >= 0;) {\n a.push({ dataItem: data });\n }\n return {\n elements: content.children(),\n data: a\n };\n });\n that.options.content = html;\n return that;\n },\n _focusDialog: function () {\n if (this._defaultFocus) {\n this._focus(this._defaultFocus);\n }\n this._tabKeyTrap.trap();\n },\n _focus: function (node) {\n if (node) {\n node.focus();\n }\n },\n events: [\n INITOPEN,\n OPEN,\n CLOSE,\n SHOW,\n HIDE\n ],\n options: {\n title: '',\n buttonLayout: 'stretched',\n actions: [],\n modal: true,\n size: 'auto',\n width: null,\n height: null,\n minWidth: 0,\n minHeight: 0,\n maxWidth: Infinity,\n maxHeight: Infinity,\n content: null,\n visible: null,\n appendTo: BODY,\n closable: true\n }\n });\n var Dialog = DialogBase.extend({\n options: {\n name: 'Dialog',\n messages: { close: 'Close' }\n }\n });\n kendo.ui.plugin(Dialog);\n var PopupBox = DialogBase.extend({\n _init: function (element, options) {\n var that = this;\n that.wrapperTemplate = templates.alertWrapper;\n options._defaultFocus = null;\n that._ensureContentId(element);\n DialogBase.fn._init.call(that, element, options);\n that.bind(HIDE, proxy(that.destroy, that));\n that._ariaDescribedBy();\n that._initFocus();\n },\n _ensureContentId: function (element) {\n var node = $(element);\n if (!node.attr('id')) {\n node.attr('id', kendo.guid() + '_k-popup');\n }\n },\n _ariaDescribedBy: function () {\n this.wrapper.attr('aria-describedby', this.element.attr('id'));\n },\n _initFocus: function () {\n var o = this.options;\n this._defaultFocus = this._chooseEntryFocus();\n if (this._defaultFocus && o.visible && o.modal) {\n this._focusDialog();\n }\n },\n _chooseEntryFocus: function () {\n return this.wrapper.find(KBUTTONGROUP + ' > ' + KBUTTON)[0];\n },\n options: {\n title: window.location.host,\n closable: false,\n messages: messages\n }\n });\n var Alert = PopupBox.extend({\n _init: function (element, options) {\n var that = this;\n PopupBox.fn._init.call(that, element, options);\n that.wrapper.addClass(KALERT);\n },\n options: {\n name: 'Alert',\n modal: true,\n actions: [{ text: '#: messages.okText #' }]\n }\n });\n kendo.ui.plugin(Alert);\n var kendoAlert = function (text) {\n return $(templates.alert).kendoAlert({ content: text }).data('kendoAlert').open();\n };\n var Confirm = PopupBox.extend({\n _init: function (element, options) {\n var that = this;\n PopupBox.fn._init.call(that, element, options);\n that.wrapper.addClass(KCONFIRM);\n that.result = $.Deferred();\n },\n options: {\n name: 'Confirm',\n modal: true,\n actions: [\n {\n text: '#: messages.okText #',\n primary: true,\n action: function (e) {\n e.sender.result.resolve();\n }\n },\n {\n text: '#: messages.cancel #',\n action: function (e) {\n e.sender.result.reject();\n }\n }\n ]\n }\n });\n kendo.ui.plugin(Confirm);\n var kendoConfirm = function (text) {\n var confirmDialog = $(templates.confirm).kendoConfirm({ content: text }).data('kendoConfirm').open();\n return confirmDialog.result;\n };\n var Prompt = PopupBox.extend({\n _init: function (element, options) {\n var that = this;\n PopupBox.fn._init.call(that, element, options);\n that.wrapper.addClass(KPROMPT);\n that._createPrompt();\n that.result = $.Deferred();\n },\n _createPrompt: function () {\n var value = this.options.value, promptContainer = $(templates.promptInputContainer(this.options)).insertAfter(this.element);\n if (value) {\n promptContainer.children(KTEXTBOX).val(value);\n }\n this._defaultFocus = this._chooseEntryFocus();\n this._focusDialog();\n },\n _chooseEntryFocus: function () {\n return this.wrapper.find(KTEXTBOX)[0];\n },\n options: {\n name: 'Prompt',\n modal: true,\n value: '',\n actions: [\n {\n text: '#: messages.okText #',\n primary: true,\n action: function (e) {\n var sender = e.sender, value = sender.wrapper.find(KTEXTBOX).val();\n sender.result.resolve(value);\n }\n },\n {\n text: '#: messages.cancel #',\n action: function (e) {\n var sender = e.sender, value = sender.wrapper.find(KTEXTBOX).val();\n e.sender.result.reject(value);\n }\n }\n ]\n }\n });\n kendo.ui.plugin(Prompt);\n var kendoPrompt = function (text, value) {\n var promptDialog = $(templates.prompt).kendoPrompt({\n content: text,\n value: value\n }).data('kendoPrompt').open();\n return promptDialog.result;\n };\n templates = {\n wrapper: template('<div class=\\'k-widget k-window k-dialog\\' role=\\'dialog\\' />'),\n action: template('<button type=\\'button\\' class=\\'k-button# if (data.primary) { # k-primary# } role=\\'button\\' #\\'></button>'),\n titlebar: template('<div class=\\'k-window-titlebar k-dialog-titlebar k-header\\'>' + '<span class=\\'k-window-title k-dialog-title\\'>#: title #</span>' + '<div class=\\'k-window-actions k-dialog-actions\\' />' + '</div>'),\n close: template('<a role=\\'button\\' href=\\'\\\\#\\' class=\\'k-button k-bare k-button-icon k-window-action k-dialog-action k-dialog-close\\' title=\\'#: messages.close #\\' aria-label=\\'#: messages.close #\\' tabindex=\\'-1\\'><span class=\\'k-icon k-i-close\\'></span></a>'),\n actionbar: template('<div class=\\'k-dialog-buttongroup k-dialog-button-layout-#: buttonLayout #\\' role=\\'toolbar\\' />'),\n overlay: '<div class=\\'k-overlay\\' />',\n alertWrapper: template('<div class=\\'k-widget k-window k-dialog\\' role=\\'alertdialog\\' />'),\n alert: '<div />',\n confirm: '<div />',\n prompt: '<div />',\n promptInputContainer: template('<div class=\\'k-prompt-container\\'><input type=\\'text\\' class=\\'k-textbox\\' title=\\'#: messages.promptInput #\\' aria-label=\\'#: messages.promptInput #\\' /></div>')\n };\n kendo.alert = kendoAlert;\n kendo.confirm = kendoConfirm;\n kendo.prompt = kendoPrompt;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.grid', [\n 'kendo.data',\n 'kendo.columnsorter',\n 'kendo.editable',\n 'kendo.window',\n 'kendo.filtermenu',\n 'kendo.columnmenu',\n 'kendo.groupable',\n 'kendo.pager',\n 'kendo.selectable',\n 'kendo.sortable',\n 'kendo.reorderable',\n 'kendo.resizable',\n 'kendo.ooxml',\n 'kendo.excel',\n 'kendo.pane',\n 'kendo.progressbar',\n 'kendo.pdf',\n 'kendo.dialog',\n 'kendo.pane',\n 'kendo.switch'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'grid',\n name: 'Grid',\n category: 'web',\n description: 'The Grid widget displays tabular data and offers rich support for interacting with data,including paging, sorting, grouping, and selection.',\n depends: [\n 'data',\n 'columnsorter',\n 'sortable'\n ],\n features: [\n {\n id: 'grid-editing',\n name: 'Editing',\n description: 'Support for record editing',\n depends: [\n 'editable',\n 'window'\n ]\n },\n {\n id: 'grid-filtering',\n name: 'Filtering',\n description: 'Support for record filtering',\n depends: ['filtermenu']\n },\n {\n id: 'grid-columnmenu',\n name: 'Column menu',\n description: 'Support for header column menu',\n depends: ['columnmenu']\n },\n {\n id: 'grid-grouping',\n name: 'Grouping',\n description: 'Support for grid grouping',\n depends: ['groupable']\n },\n {\n id: 'grid-filtercell',\n name: 'Row filter',\n description: 'Support for grid header filtering',\n depends: ['filtercell']\n },\n {\n id: 'grid-paging',\n name: 'Paging',\n description: 'Support for grid paging',\n depends: ['pager']\n },\n {\n id: 'grid-selection',\n name: 'Selection',\n description: 'Support for row selection',\n depends: ['selectable']\n },\n {\n id: 'grid-column-reorder',\n name: 'Column reordering',\n description: 'Support for column reordering',\n depends: ['reorderable']\n },\n {\n id: 'grid-column-resize',\n name: 'Column resizing',\n description: 'Support for column resizing',\n depends: ['resizable']\n },\n {\n id: 'grid-mobile',\n name: 'Grid adaptive rendering',\n description: 'Support for adaptive rendering',\n depends: [\n 'dialog',\n 'pane',\n 'switch'\n ]\n },\n {\n id: 'grid-excel-export',\n name: 'Excel export',\n description: 'Export grid data as Excel spreadsheet',\n depends: ['excel']\n },\n {\n id: 'grid-pdf-export',\n name: 'PDF export',\n description: 'Export grid data as PDF',\n depends: [\n 'pdf',\n 'drawing',\n 'progressbar'\n ]\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, DataSource = kendo.data.DataSource, ObservableObject = kendo.data.ObservableObject, tbodySupportsInnerHtml = kendo.support.tbodyInnerHtml, activeElement = kendo._activeElement, Widget = ui.Widget, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, keys = kendo.keys, isPlainObject = $.isPlainObject, extend = $.extend, map = $.map, grep = $.grep, isArray = $.isArray, inArray = $.inArray, push = Array.prototype.push, proxy = $.proxy, isFunction = kendo.isFunction, isEmptyObject = $.isEmptyObject, contains = $.contains, math = Math, DOT = '.', PROGRESS = 'progress', ERROR = 'error', HIERARCHY_CELL_CLASS = 'k-hierarchy-cell', DATA_CELL = ':not(.k-group-cell):not(.k-hierarchy-cell:not(:has(.k-icon.k-i-collapse,.k-icon.k-i-expand))):visible', SELECTION_CELL_SELECTOR = 'tbody>tr:not(.k-grouping-row):not(.k-detail-row):not(.k-group-footer) > td:not(.k-group-cell):not(.k-hierarchy-cell)', NAVROW = 'tr:not(.k-footer-template):visible', NAVCELL = ':not(.k-group-cell):not(.k-detail-cell):not(.k-hierarchy-cell):visible', ITEMROW = 'tr:not(.k-grouping-row):not(.k-detail-row):not(.k-footer-template):not(.k-group-footer):visible', FIRSTITEMROW = ITEMROW + ':first', LASTITEMROW = ITEMROW + ':last', FIRSTNAVITEM = NAVROW + ':first>' + NAVCELL + ':first', HEADERCELLS = 'th.k-header:not(.k-group-cell):not(.k-hierarchy-cell)', NS = '.kendoGrid', CONTENTRLOCKEDCONTAINER = 'k-grid-content-locked', GROUPCELLCLASS = 'k-group-cell', EDIT = 'edit', BEFOREEDIT = 'beforeEdit', SAVE = 'save', REMOVE = 'remove', DETAILINIT = 'detailInit', FILTERMENUINIT = 'filterMenuInit', COLUMNMENUINIT = 'columnMenuInit', FILTERMENUOPEN = 'filterMenuOpen', COLUMNMENUOPEN = 'columnMenuOpen', CELLCLOSE = 'cellClose', CHANGE = 'change', COLUMNHIDE = 'columnHide', COLUMNSHOW = 'columnShow', SAVECHANGES = 'saveChanges', DATABOUND = 'dataBound', DETAILEXPAND = 'detailExpand', DETAILCOLLAPSE = 'detailCollapse', ITEM_CHANGE = 'itemchange', PAGE = 'page', PAGING = 'paging', SCROLL = 'scroll', SYNC = 'sync', FOCUSED = 'k-state-focused', FOCUSABLE = ':kendoFocusable', SELECTED = 'k-state-selected', CHECKBOX = 'k-checkbox', CHECKBOXINPUT = 'input[data-role=\\'checkbox\\'].' + CHECKBOX, NORECORDSCLASS = 'k-grid-norecords', LINK_CLASS = 'k-link', ICON_CLASS = 'k-icon', ORDER_CLASS = 'k-sort-order', HEADER_COLUMN_MENU_CLASS = 'k-header-column-menu', FILTER_MENU_CLASS = 'k-grid-filter', RESIZE = 'resize', COLUMNRESIZE = 'columnResize', COLUMNREORDER = 'columnReorder', COLUMNLOCK = 'columnLock', COLUMNUNLOCK = 'columnUnlock', NAVIGATE = 'navigate', CLICK = 'click', MOUSEDOWN = 'mousedown', HEIGHT = 'height', TABINDEX = 'tabIndex', FUNCTION = 'function', STRING = 'string', BOTTOM = 'bottom', CONTAINER_FOR = 'container-for', FIELD = 'field', INPUT = 'input', INCELL = 'incell', INLINE = 'inline', UNIQUE_ID = 'uid', MINCOLSPANVALUE = 1, COLSPAN = 'colSpan', OVERFLOW = 'overflow', HIDDEN = 'hidden', GROUP_SORT = 'group-sort', DELETECONFIRM = 'Are you sure you want to delete this record?', NORECORDS = 'No records available.', CONFIRMDELETE = 'Delete', CANCELDELETE = 'Cancel', COLLAPSE = 'Collapse', EXPAND = 'Expand', ARIALABEL = 'aria-label', formatRegExp = /(\\}|\\#)/gi, templateHashRegExp = /#/gi, whitespaceRegExp = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]', nonDataCellsRegExp = new RegExp('(^|' + whitespaceRegExp + ')' + '(k-group-cell|k-hierarchy-cell)' + '(' + whitespaceRegExp + '|$)'), filterRowRegExp = new RegExp('(^|' + whitespaceRegExp + ')' + '(k-filter-row)' + '(' + whitespaceRegExp + '|$)'), COMMANDBUTTONTMPL = '# if (iconClass) {#' + '<a role=\"button\" class=\"k-button k-button-icontext #=className#\" #=attr# href=\"\\\\#\"><span class=\"#=iconClass#\"></span>#=text#</a>' + '# } else { #' + '<a role=\"button\" class=\"k-button k-button-icontext #=className#\" #=attr# href=\"\\\\#\">#=text#</a>' + '# } #', SELECTCOLUMNTMPL = '# var checkboxGuid = kendo.guid(); #' + '<input class=\"' + CHECKBOX + '\" data-role=\"checkbox\" id=\"#= checkboxGuid #\" aria-label=\"Select row\" aria-checked=\"false\" type=\"checkbox\">' + '<label for=\"#= checkboxGuid #\" class=\"k-checkbox-label k-no-text\">&\\\\#8203;</label>', SELECTCOLUMNHEADERTMPL = '# var checkboxGuid = kendo.guid(); #' + '<input class=\"' + CHECKBOX + '\" data-role=\"checkbox\" aria-label=\"Select all rows\" aria-checked=\"false\" type=\"checkbox\" id=\"#= checkboxGuid #\">' + '<label for=\"#= checkboxGuid #\" class=\"k-checkbox-label k-no-text\">##&\\\\#8203;##</label>', isRtl = false, browser = kendo.support.browser, isIE7 = browser.msie && browser.version == 7, isIE8 = browser.msie && browser.version == 8;\n var isIE11 = browser.msie && browser.version === 11;\n var isMac = /Mac OS/.test(navigator.userAgent);\n var classNames = {\n content: 'k-content',\n widget: 'k-widget',\n scrollContainer: 'k-scroll-container'\n };\n var VirtualScrollable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that._refreshHandler = proxy(that.refresh, that);\n that.setDataSource(options.dataSource);\n that.wrap();\n },\n setDataSource: function (dataSource) {\n var that = this;\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n }\n that.dataSource = dataSource;\n that.dataSource.bind(CHANGE, that._refreshHandler);\n that.dataSource.options.useRanges = true;\n },\n options: {\n name: 'VirtualScrollable',\n itemHeight: $.noop,\n prefetch: true,\n maxScrollHeight: 250000\n },\n events: [\n PAGING,\n PAGE,\n SCROLL\n ],\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n that.wrapper.add(that.verticalScrollbar).off(NS);\n clearTimeout(that._timeout);\n if (that._scrollingTimeout) {\n clearTimeout(that._scrollingTimeout);\n }\n if (that.drag) {\n that.drag.destroy();\n that.drag = null;\n }\n that.wrapper = that.element = that.verticalScrollbar = null;\n that._refreshHandler = null;\n },\n wrap: function () {\n var that = this, scrollbar = kendo.support.scrollbar() + 1, element = that.element, wrapper;\n element.css({\n width: 'auto',\n overflow: 'hidden'\n }).css(isRtl ? 'padding-left' : 'padding-right', scrollbar);\n that.content = element.children().first();\n wrapper = that.wrapper = that.content.wrap('<div class=\"k-virtual-scrollable-wrap\"/>').parent().bind('DOMMouseScroll' + NS + ' mousewheel' + NS, proxy(that._wheelScroll, that));\n that._wrapper();\n if (kendo.support.kineticScrollNeeded) {\n that.drag = new kendo.UserEvents(that.wrapper, {\n global: true,\n allowSelection: true,\n start: function (e) {\n e.sender.capture();\n },\n move: function (e) {\n that.verticalScrollbar.scrollTop(that.verticalScrollbar.scrollTop() - e.y.delta);\n wrapper.scrollLeft(wrapper.scrollLeft() - e.x.delta);\n e.preventDefault();\n }\n });\n }\n that.verticalScrollbar = $('<div class=\"k-scrollbar k-scrollbar-vertical\" />').css({ width: scrollbar }).appendTo(element).bind('scroll' + NS, proxy(that._scroll, that));\n },\n _wrapper: function () {\n var that = this;\n if (isIE11) {\n that.wrapper.css({ 'overflow-y': SCROLL });\n that.element.css(isRtl ? 'padding-left' : 'padding-right', 0);\n }\n },\n _wheelScroll: function (e) {\n if (e.ctrlKey) {\n return;\n }\n var scrollbar = this.verticalScrollbar, scrollTop = scrollbar.scrollTop(), delta = kendo.wheelDeltaY(e);\n if (delta && !(delta > 0 && scrollTop === 0) && !(delta < 0 && scrollTop + scrollbar[0].clientHeight == scrollbar[0].scrollHeight)) {\n e.preventDefault();\n this.verticalScrollbar.scrollTop(scrollTop + -delta);\n }\n },\n _scroll: function (e) {\n var that = this, delayLoading = !that.options.prefetch, scrollTop = e.currentTarget.scrollTop, dataSource = that.dataSource, rowHeight = that.itemHeight, skip = dataSource.skip() || 0, start = that._rangeStart || skip, height = that.element.innerHeight(), isScrollingUp = !!(that._scrollbarTop && that._scrollbarTop > scrollTop), firstItemIndex = math.max(math.floor(scrollTop / rowHeight), 0), lastItemOffset = isScrollingUp ? math.ceil(height / rowHeight) : math.floor(height / rowHeight), lastItemIndex = math.max(firstItemIndex + lastItemOffset, 0);\n if (that._preventScroll) {\n that._preventScroll = false;\n return;\n }\n that._scrollTop = scrollTop - start * rowHeight;\n that._scrollbarTop = scrollTop;\n that._scrolling = delayLoading;\n if (!that._fetch(firstItemIndex, lastItemIndex, isScrollingUp)) {\n that.wrapper[0].scrollTop = that._scrollTop;\n }\n that.trigger(SCROLL);\n if (delayLoading) {\n if (that._scrollingTimeout) {\n clearTimeout(that._scrollingTimeout);\n }\n that._scrollingTimeout = setTimeout(function () {\n that._scrolling = false;\n that._page(that._rangeStart, that.dataSource.take());\n }, 100);\n }\n },\n scrollToTop: function () {\n this._scrollTo(0);\n },\n scrollToBottom: function () {\n var scrollbar = this.verticalScrollbar;\n this._scrollTo(scrollbar[0].scrollHeight - scrollbar.height());\n },\n _scrollWrapperToTop: function () {\n this.wrapper.scrollTop(0);\n },\n _scrollWrapperToBottom: function () {\n this.wrapper.scrollTop(this.wrapper[0].scrollHeight);\n },\n _scrollWrapperOnColumnResize: function () {\n var that = this;\n var wrapper = this.wrapper;\n var initialScrollTop = wrapper.scrollTop();\n if (wrapper[0].scrollWidth > wrapper[0].clientWidth) {\n if (!that._wrapperScrolled && initialScrollTop || that._isScrolledToBottom()) {\n wrapper.scrollTop(initialScrollTop + kendo.support.scrollbar());\n that._scrollTop = wrapper.scrollTop();\n that._wrapperScrolled = true;\n }\n } else if (that._wrapperScrolled) {\n if (!that._isWrapperScrolledToBottom()) {\n wrapper.scrollTop(initialScrollTop - kendo.support.scrollbar());\n that._scrollTop = wrapper.scrollTop();\n }\n that._wrapperScrolled = false;\n }\n },\n _scrollTo: function (scrollTop) {\n var that = this;\n var scrollbar = that.verticalScrollbar;\n if (scrollbar.scrollTop() !== scrollTop) {\n that._preventScroll = true;\n }\n that.wrapper.scrollTop(scrollTop);\n that._scrollTop = that.wrapper.scrollTop();\n scrollbar.scrollTop(scrollTop);\n that._scrollbarTop = scrollbar.scrollTop();\n },\n _isScrolledToTop: function () {\n return this.verticalScrollbar.scrollTop() === 0;\n },\n _isScrolledToBottom: function () {\n var scrollbar = this.verticalScrollbar;\n var scrollTop = scrollbar.scrollTop();\n return scrollTop > 0 && scrollTop >= parseInt(scrollbar[0].scrollHeight - scrollbar.height(), 10);\n },\n _isWrapperScrolledToBottom: function () {\n var wrapper = this.wrapper;\n return wrapper.scrollTop() >= parseInt(wrapper[0].scrollHeight - wrapper.height(), 10);\n },\n itemIndex: function (rowIndex) {\n var rangeStart = this._rangeStart || this.dataSource.skip() || 0;\n return rangeStart + rowIndex;\n },\n _isElementVisible: function (element) {\n return this._isElementVisibleInWrapper(element);\n },\n _isElementVisibleInWrapper: function (element) {\n var that = this;\n var wrapper = that.wrapper;\n var offsetTop;\n var halfHeight;\n element = $(element);\n if (element[0] && contains(wrapper[0], element[0])) {\n offsetTop = element.offset().top - wrapper.offset().top;\n halfHeight = element.outerHeight() / 2;\n if ((offsetTop >= 0 || math.abs(offsetTop) <= halfHeight) && math.floor(offsetTop + halfHeight) <= wrapper.height()) {\n return true;\n }\n }\n return false;\n },\n position: function (index) {\n var rangeStart = this._rangeStart || this.dataSource.skip() || 0;\n var pageSize = this.dataSource.pageSize();\n var result;\n if (index > rangeStart) {\n result = index - rangeStart + 1;\n } else {\n result = rangeStart - index - 1;\n }\n return result > pageSize ? pageSize : result;\n },\n scrollIntoView: function (row) {\n var container = this.wrapper[0];\n var containerHeight = container.clientHeight;\n var containerScroll = !this._isScrolledToBottom() ? this._scrollTop || container.scrollTop : container.scrollTop;\n var elementOffset = row[0].offsetTop;\n var elementHeight = row[0].offsetHeight;\n if (containerScroll > elementOffset) {\n this.verticalScrollbar[0].scrollTop -= containerHeight / 2;\n } else if (elementOffset + elementHeight >= containerScroll + containerHeight) {\n this.verticalScrollbar[0].scrollTop += containerHeight / 2;\n }\n },\n _fetch: function (firstItemIndex, lastItemIndex, scrollingUp) {\n var that = this, dataSource = that.dataSource, itemHeight = that.itemHeight, take = dataSource.take(), rangeStart = that._rangeStart || dataSource.skip() || 0, currentSkip = math.floor(firstItemIndex / take) * take, fetching = false, prefetchAt = 0.33;\n var scrollbar = that.verticalScrollbar;\n var webkitCorrection = browser.webkit ? 1 : 0;\n if (firstItemIndex < rangeStart) {\n fetching = true;\n rangeStart = math.max(0, lastItemIndex - take);\n that._scrollTop = scrollbar.scrollTop() - rangeStart * itemHeight;\n that._page(rangeStart, take);\n } else if (lastItemIndex >= rangeStart + take && !scrollingUp) {\n fetching = true;\n rangeStart = math.min(firstItemIndex, dataSource.total() - take);\n if (scrollbar.scrollTop() >= scrollbar[0].scrollHeight - scrollbar[0].offsetHeight - webkitCorrection) {\n that._scrollTop = that.wrapper[0].scrollHeight - that.wrapper[0].offsetHeight;\n } else {\n that._scrollTop = itemHeight;\n }\n that._page(rangeStart, take);\n } else if (!that._fetching && that.options.prefetch) {\n if (firstItemIndex < currentSkip + take - take * prefetchAt && firstItemIndex > take) {\n dataSource.prefetch(currentSkip - take, take, $.noop);\n }\n if (lastItemIndex > currentSkip + take * prefetchAt) {\n dataSource.prefetch(currentSkip + take, take, $.noop);\n }\n }\n return fetching;\n },\n fetching: function () {\n return this._fetching;\n },\n _page: function (skip, take, callback) {\n var that = this, delayLoading = !that.options.prefetch, dataSource = that.dataSource;\n callback = isFunction(callback) ? callback : $.noop;\n if (that.trigger(PAGING, {\n skip: skip,\n take: take\n })) {\n return;\n }\n clearTimeout(that._timeout);\n that._fetching = true;\n that._rangeStart = skip;\n if (dataSource.inRange(skip, take)) {\n kendo.ui.progress($(that.wrapper).parent(), true);\n dataSource.range(skip, take, function () {\n kendo.ui.progress($(that.wrapper).parent(), false);\n callback();\n that.trigger(PAGE);\n });\n } else {\n if (!delayLoading) {\n kendo.ui.progress(that.wrapper.parent(), true);\n }\n that._timeout = setTimeout(function () {\n if (!that._scrolling) {\n if (delayLoading) {\n kendo.ui.progress(that.wrapper.parent(), true);\n }\n dataSource.range(skip, take, function () {\n kendo.ui.progress(that.wrapper.parent(), false);\n callback();\n that.trigger(PAGE);\n });\n }\n }, 100);\n }\n },\n repaintScrollbar: function (shouldScrollWrapper) {\n var that = this, html = '', maxHeight = that.options.maxScrollHeight, dataSource = that.dataSource, scrollbar = !kendo.support.kineticScrollNeeded ? kendo.support.scrollbar() : 0, wrapperElement = that.wrapper[0], totalHeight, idx, itemHeight;\n var wasScrolledToBottom = that._isScrolledToBottom();\n itemHeight = that.itemHeight = that.options.itemHeight() || 0;\n var addScrollBarHeight = wrapperElement.scrollWidth > wrapperElement.offsetWidth ? scrollbar : 0;\n totalHeight = dataSource.total() * itemHeight + addScrollBarHeight;\n for (idx = 0; idx < math.floor(totalHeight / maxHeight); idx++) {\n html += '<div style=\"width:1px;height:' + maxHeight + 'px\"></div>';\n }\n if (totalHeight % maxHeight) {\n html += '<div style=\"width:1px;height:' + totalHeight % maxHeight + 'px\"></div>';\n }\n that.verticalScrollbar.html(html);\n if (wasScrolledToBottom && !that._isScrolledToBottom()) {\n that.scrollToBottom();\n }\n if (typeof that._scrollTop !== 'undefined' && !!shouldScrollWrapper) {\n wrapperElement.scrollTop = that._scrollTop;\n that._scrollWrapperOnColumnResize();\n }\n },\n refresh: function (e) {\n var that = this, dataSource = that.dataSource, rangeStart = that._rangeStart;\n var action = (e || {}).action;\n var shouldScrollWrapper = that._isScrolledToBottom() || !action || action !== ITEM_CHANGE && action !== REMOVE && action !== SYNC;\n kendo.ui.progress(that.wrapper.parent(), false);\n clearTimeout(that._timeout);\n that.repaintScrollbar(shouldScrollWrapper);\n if (that.drag) {\n that.drag.cancel();\n }\n if (typeof rangeStart !== 'undefined' && !that._fetching) {\n if (!action || action !== SYNC && action !== ITEM_CHANGE) {\n that._rangeStart = dataSource.skip();\n }\n if (dataSource.page() === 1 && (!action || action !== SYNC && action !== ITEM_CHANGE)) {\n that.verticalScrollbar[0].scrollTop = 0;\n }\n }\n that._fetching = false;\n }\n });\n function attrEquals(attrName, attrValue) {\n return '[' + kendo.attr(attrName) + '=' + attrValue + ']';\n }\n function groupCells(count) {\n return new Array(count + 1).join('<td class=\"k-group-cell\"> </td>');\n }\n function stringifyAttributes(attributes) {\n var attr, result = ' ';\n if (attributes) {\n if (typeof attributes === STRING) {\n return attributes;\n }\n for (attr in attributes) {\n if (attributes[attr] !== '') {\n result += attr + '=\"' + attributes[attr] + '\"';\n }\n }\n }\n return result;\n }\n var defaultCommands = {\n create: {\n text: 'Add new record',\n className: 'k-grid-add',\n iconClass: 'k-icon k-i-plus'\n },\n cancel: {\n text: 'Cancel changes',\n className: 'k-grid-cancel-changes',\n iconClass: 'k-icon k-i-cancel'\n },\n save: {\n text: 'Save changes',\n className: 'k-grid-save-changes',\n iconClass: 'k-icon k-i-check'\n },\n destroy: {\n text: 'Delete',\n className: 'k-grid-delete',\n iconClass: 'k-icon k-i-close'\n },\n edit: {\n text: 'Edit',\n className: 'k-grid-edit',\n iconClass: 'k-icon k-i-edit'\n },\n update: {\n text: 'Update',\n className: 'k-primary k-grid-update',\n iconClass: 'k-icon k-i-check'\n },\n canceledit: {\n text: 'Cancel',\n className: 'k-grid-cancel',\n iconClass: 'k-icon k-i-cancel'\n },\n excel: {\n text: 'Export to Excel',\n className: 'k-grid-excel',\n iconClass: 'k-icon k-i-file-excel'\n },\n pdf: {\n text: 'Export to PDF',\n className: 'k-grid-pdf',\n iconClass: 'k-icon k-i-file-pdf'\n }\n };\n function cursor(context, value) {\n $('th, th .k-grid-filter, th .k-link', context).add(document.body).css('cursor', value);\n }\n function reorder(selector, source, dest, before, count) {\n var sourceIndex = source;\n source = $();\n count = count || 1;\n for (var idx = 0; idx < count; idx++) {\n source = source.add(selector.eq(sourceIndex + idx));\n }\n if (typeof dest == 'number') {\n source[before ? 'insertBefore' : 'insertAfter'](selector.eq(dest));\n } else {\n source.appendTo(dest);\n }\n }\n function elements(lockedContent, content, filter) {\n return $(lockedContent).add(content).find(filter);\n }\n function attachCustomCommandEvent(context, container, commands) {\n var idx, length, command, commandName;\n commands = !isArray(commands) ? [commands] : commands;\n for (idx = 0, length = commands.length; idx < length; idx++) {\n command = commands[idx];\n if (isPlainObject(command) && command.click) {\n commandName = command.name || command.text;\n container.on(CLICK + NS, 'a.k-grid-' + (commandName || '').replace(/\\s/g, ''), { commandName: commandName }, proxy(command.click, context));\n }\n }\n }\n function normalizeColumns(columns, encoded, hide, parentIds) {\n return map(columns, function (column) {\n column = typeof column === STRING ? { field: column } : column;\n var hidden;\n column.parentIds = parentIds;\n if (!isVisible(column) || hide) {\n column.attributes = addHiddenStyle(column.attributes);\n column.footerAttributes = addHiddenStyle(column.footerAttributes);\n column.headerAttributes = addHiddenStyle(column.headerAttributes);\n hidden = true;\n }\n var uid = kendo.guid();\n column.headerAttributes = extend({ headers: parentIds }, column.headerAttributes);\n if (!column.headerAttributes.id) {\n column.headerAttributes = extend({ id: uid }, column.headerAttributes);\n } else {\n uid = column.headerAttributes.id;\n }\n if (column.columns) {\n column.columns = normalizeColumns(column.columns, encoded, hidden, parentIds ? parentIds + ' ' + uid : uid);\n }\n return extend({\n encoded: encoded,\n hidden: hidden\n }, column);\n });\n }\n function columnParent(column, columns) {\n var parents = [];\n columnParents(column, columns, parents);\n return parents[parents.length - 1];\n }\n function columnParents(column, columns, parents) {\n parents = parents || [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (column === columns[idx]) {\n return true;\n } else if (columns[idx].columns) {\n var inserted = parents.length;\n parents.push(columns[idx]);\n if (!columnParents(column, columns[idx].columns, parents)) {\n parents.splice(inserted, parents.length - inserted);\n } else {\n return true;\n }\n }\n }\n return false;\n }\n function setColumnVisibility(column, visible) {\n setVisibility(column, visible, visible);\n }\n function setVisibility(column, visible, show) {\n var method = show ? removeHiddenStyle : addHiddenStyle;\n column.hidden = !visible;\n column.attributes = method(column.attributes);\n column.footerAttributes = method(column.footerAttributes);\n column.headerAttributes = method(column.headerAttributes);\n }\n function setColumnMediaVisibility(column, visible) {\n setColumnMatchesMedia(column);\n var hideByMedia = column._hideByMedia;\n setVisibility(column, visible, hideByMedia ? column.matchesMedia : visible);\n }\n function setColumnMatchesMedia(column) {\n column.matchesMedia = columnMatchesMedia(column);\n }\n function columnMatchesMedia(column) {\n return column && (isUndefined(column.media) || !isUndefined(column.media) && kendo.matchesMedia(column.media));\n }\n function isCellVisible() {\n return this.style.display !== 'none';\n }\n function isElementVisible(element) {\n return $(element)[0].style.display !== 'none';\n }\n function isVisible(column) {\n return visibleColumns([column]).length > 0;\n }\n function visibleColumns(columns) {\n return grep(columns, function (column) {\n var result = !column.hidden && column.matchesMedia !== false;\n if (result && column.columns) {\n result = visibleColumns(column.columns).length > 0;\n }\n return result;\n });\n }\n function columnsWithMedia(columns) {\n var result = [];\n var column;\n for (var i = 0; i < columns.length; i++) {\n column = columns[i];\n if (!isUndefined(column.media)) {\n if (!isUndefined(column.minScreenWidth)) {\n throw new Error('Using \\'media\\' and \\'minScreenWidth\\' options at the same time is not supported.');\n }\n result.push(column);\n }\n if (column.columns) {\n result = result.concat(columnsWithMedia(column.columns));\n }\n }\n return result;\n }\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n function toJQuery(elements) {\n return $(elements).map(function () {\n return this.toArray();\n });\n }\n function updateCellRowSpan(cell, columns, sourceLockedColumnsCount) {\n var lockedColumnDepth = depth(lockedColumns(columns));\n var nonLockedColumnDepth = depth(nonLockedColumns(columns));\n var rowSpan = cell.rowSpan;\n if (sourceLockedColumnsCount) {\n if (lockedColumnDepth > nonLockedColumnDepth) {\n cell.rowSpan = rowSpan - (lockedColumnDepth - nonLockedColumnDepth) || 1;\n } else {\n cell.rowSpan = rowSpan + (nonLockedColumnDepth - lockedColumnDepth);\n }\n } else {\n if (lockedColumnDepth > nonLockedColumnDepth) {\n cell.rowSpan = rowSpan + (lockedColumnDepth - nonLockedColumnDepth);\n } else {\n cell.rowSpan = rowSpan - (nonLockedColumnDepth - lockedColumnDepth) || 1;\n }\n }\n }\n function moveCellsBetweenContainers(sources, target, leafs, columns, container, destination, groups, action) {\n var sourcesDepth = depth(sources);\n var targetDepth = depth([target]);\n if (sourcesDepth > targetDepth) {\n var groupCells = new Array(groups + 1).join('<th class=\"k-group-cell k-header\" scope=\"col\"> </th>');\n var rows = destination.children(':not(.k-filter-row)');\n $(new Array(sourcesDepth - targetDepth + 1).join('<tr>' + groupCells + '</tr>')).insertAfter(rows.last());\n }\n addRowSpanValue(destination, sourcesDepth - targetDepth);\n moveCells(leafs, columns, container, destination, action);\n }\n function updateCellIndex(thead, columns, offset) {\n offset = offset || 0;\n var position;\n var cell;\n var allColumns = columns;\n columns = leafColumns(columns);\n var cells = {};\n var rows = thead.find('>tr:not(.k-filter-row)');\n var filter = function () {\n var el = $(this);\n return !el.hasClass('k-group-cell') && !el.hasClass('k-hierarchy-cell');\n };\n for (var idx = 0, length = columns.length; idx < length; idx++) {\n position = columnPosition(columns[idx], allColumns);\n if (!cells[position.row]) {\n cells[position.row] = rows.eq(position.row).find('.k-header').filter(filter);\n }\n cell = cells[position.row].eq(position.cell);\n cell.attr(kendo.attr('index'), offset + idx);\n }\n return columns.length;\n }\n function depth(columns) {\n var result = 1;\n var max = 0;\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n var temp = depth(columns[idx].columns);\n if (temp > max) {\n max = temp;\n }\n }\n }\n return result + max;\n }\n function moveCells(leafs, columns, container, destination, action) {\n var sourcePosition = columnVisiblePosition(leafs[0], columns);\n var ths = container.find('>tr:not(.k-filter-row):eq(' + sourcePosition.row + ')>th.k-header');\n var t = $();\n var sourceIndex = sourcePosition.cell;\n var idx;\n for (idx = 0; idx < leafs.length; idx++) {\n t = t.add(ths.eq(sourceIndex + idx));\n }\n destination.find('>tr:not(.k-filter-row)').eq(sourcePosition.row)[action](t);\n var children = [];\n for (idx = 0; idx < leafs.length; idx++) {\n if (leafs[idx].columns) {\n children = children.concat(leafs[idx].columns);\n }\n }\n if (children.length) {\n moveCells(children, columns, container, destination, action);\n }\n }\n function columnPosition(column, columns, row, cellCounts) {\n var result;\n var idx;\n row = row || 0;\n cellCounts = cellCounts || {};\n cellCounts[row] = cellCounts[row] || 0;\n for (idx = 0; idx < columns.length; idx++) {\n if (columns[idx] == column) {\n result = {\n cell: cellCounts[row],\n row: row\n };\n break;\n } else if (columns[idx].columns) {\n result = columnPosition(column, columns[idx].columns, row + 1, cellCounts);\n if (result) {\n break;\n }\n }\n cellCounts[row]++;\n }\n return result;\n }\n function findParentColumnWithChildren(columns, index, source, rtl) {\n var target;\n var locked = !!source.locked;\n var targetLocked;\n do {\n target = columns[index];\n index += rtl ? 1 : -1;\n targetLocked = !!target.locked;\n } while (target && index > -1 && index < columns.length && target != source && !target.columns && targetLocked === locked);\n return target;\n }\n function findReorderTarget(columns, target, source, before, masterColumns) {\n if (target.columns) {\n target = target.columns;\n return target[before ? 0 : target.length - 1];\n } else {\n var parent = columnParent(target, columns);\n var parentColumns;\n if (parent) {\n parentColumns = parent.columns;\n } else {\n parentColumns = columns;\n }\n var index = inArray(target, parentColumns);\n if (index === 0 && before) {\n index++;\n } else if (index == parentColumns.length - 1 && !before || !source.locked && !target.columns && !before) {\n index--;\n } else if (index > 0 || index === 0 && !before) {\n index++;\n }\n var sourceIndex = inArray(source, parentColumns);\n target = findParentColumnWithChildren(parentColumns, index, source, sourceIndex > index);\n var targetIndex = inArray(target, masterColumns);\n if (target.columns && (!targetIndex || targetIndex === parentColumns.length - 1)) {\n return null;\n }\n if (target && target != source && target.columns) {\n return findReorderTarget(columns, target, source, before, masterColumns);\n }\n }\n return null;\n }\n function columnVisiblePosition(column, columns, row, cellCounts) {\n var result;\n var idx;\n row = row || 0;\n cellCounts = cellCounts || {};\n cellCounts[row] = cellCounts[row] || 0;\n for (idx = 0; idx < columns.length; idx++) {\n if (columns[idx] == column) {\n result = {\n cell: cellCounts[row],\n row: row\n };\n break;\n } else if (columns[idx].columns) {\n result = columnVisiblePosition(column, columns[idx].columns, row + 1, cellCounts);\n if (result) {\n break;\n }\n }\n if (!columns[idx].hidden) {\n cellCounts[row]++;\n }\n }\n return result;\n }\n function flatColumnsInDomOrder(columns) {\n var result = flatColumns(lockedColumns(columns));\n return result.concat(flatColumns(nonLockedColumns(columns)));\n }\n function targetParentContainerIndex(flatColumns, columns, sourceIndex, targetIndex) {\n var column = flatColumns[sourceIndex];\n var target = flatColumns[targetIndex];\n var parent = columnParent(column, columns);\n columns = parent ? parent.columns : columns;\n return inArray(target, columns);\n }\n function flatColumns(columns) {\n var result = [];\n var children = [];\n for (var idx = 0; idx < columns.length; idx++) {\n result.push(columns[idx]);\n if (columns[idx].columns) {\n children = children.concat(columns[idx].columns);\n }\n }\n if (children.length) {\n result = result.concat(flatColumns(children));\n }\n return result;\n }\n function hiddenLeafColumnsCount(columns) {\n var counter = 0;\n var column;\n for (var idx = 0; idx < columns.length; idx++) {\n column = columns[idx];\n if (column.columns) {\n counter += hiddenLeafColumnsCount(column.columns);\n } else if (column.hidden) {\n counter++;\n }\n }\n return counter;\n }\n function columnsWidth(cols) {\n var colWidth, width = 0;\n for (var idx = 0, length = cols.length; idx < length; idx++) {\n colWidth = cols[idx].style.width;\n if (colWidth && colWidth.indexOf('%') == -1) {\n width += parseInt(colWidth, 10);\n }\n }\n return width;\n }\n function removeRowSpanValue(container, count) {\n var cells = container.find('tr:not(.k-filter-row) th:not(.k-group-cell,.k-hierarchy-cell)');\n var rowSpan;\n for (var idx = 0; idx < cells.length; idx++) {\n rowSpan = cells[idx].rowSpan;\n if (rowSpan > 1) {\n cells[idx].rowSpan = rowSpan - count || 1;\n }\n }\n }\n function addRowSpanValue(container, count) {\n var cells = container.find('tr:not(.k-filter-row) th:not(.k-group-cell,.k-hierarchy-cell)');\n for (var idx = 0; idx < cells.length; idx++) {\n cells[idx].rowSpan += count;\n }\n }\n function removeEmptyRows(container) {\n var rows = container.find('tr:not(.k-filter-row)');\n var emptyRowsCount = rows.filter(function () {\n return !$(this).children().length;\n }).remove().length;\n var cells = rows.find('th:not(.k-group-cell,.k-hierarchy-cell)');\n for (var idx = 0; idx < cells.length; idx++) {\n if (cells[idx].rowSpan > 1) {\n cells[idx].rowSpan -= emptyRowsCount;\n }\n }\n return rows.length - emptyRowsCount;\n }\n function mapColumnToCellRows(columns, cells, rows, rowIndex, offset) {\n var idx, row, length, children = [];\n for (idx = 0, length = columns.length; idx < length; idx++) {\n row = rows[rowIndex] || [];\n row.push(cells.eq(offset + idx));\n rows[rowIndex] = row;\n if (columns[idx].columns) {\n children = children.concat(columns[idx].columns);\n }\n }\n if (children.length) {\n mapColumnToCellRows(children, cells, rows, rowIndex + 1, offset + columns.length);\n }\n }\n function lockedColumns(columns) {\n return grep(columns, function (column) {\n return column.locked;\n });\n }\n function nonLockedColumns(columns) {\n return grep(columns, function (column) {\n return !column.locked;\n });\n }\n function visibleNonLockedColumns(columns) {\n return grep(columns, function (column) {\n return !column.locked && isVisible(column);\n });\n }\n function visibleLockedColumns(columns) {\n return grep(columns, function (column) {\n return column.locked && isVisible(column);\n });\n }\n function visibleLeafColumns(columns) {\n var result = [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].hidden) {\n continue;\n }\n if (columns[idx].columns) {\n result = result.concat(visibleLeafColumns(columns[idx].columns));\n } else {\n result.push(columns[idx]);\n }\n }\n return result;\n }\n function childColumns(columns) {\n var result = [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n result = result.concat(columns[idx].columns);\n }\n }\n return result;\n }\n function leafColumns(columns) {\n var result = [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n continue;\n }\n result = result.concat(leafColumns(columns[idx].columns));\n }\n return result;\n }\n function getColumnsFields(columns) {\n var result = [];\n columns = leafColumns(columns);\n for (var idx = 0; idx < columns.length; idx++) {\n if (typeof columns[idx] === 'string') {\n result.push(columns[idx]);\n } else if (columns[idx].field) {\n result.push(columns[idx].field);\n }\n }\n return result;\n }\n function leafDataCells(container) {\n var rows = container.find('>tr:not(.k-filter-row)');\n var filter = function () {\n var el = $(this);\n return !el.hasClass('k-group-cell') && !el.hasClass('k-hierarchy-cell');\n };\n var cells = $();\n if (rows.length > 1) {\n cells = rows.find('th').filter(filter).filter(function () {\n return this.rowSpan > 1;\n });\n }\n cells = cells.add(rows.last().find('th').filter(filter));\n var indexAttr = kendo.attr('index');\n cells.sort(function (a, b) {\n a = $(a);\n b = $(b);\n var indexA = a.attr(indexAttr);\n var indexB = b.attr(indexAttr);\n if (indexA === undefined) {\n indexA = $(a).index();\n }\n if (indexB === undefined) {\n indexB = $(b).index();\n }\n indexA = parseInt(indexA, 10);\n indexB = parseInt(indexB, 10);\n return indexA > indexB ? 1 : indexA < indexB ? -1 : 0;\n });\n return cells;\n }\n function parentColumnsCells(cell) {\n var container = cell.closest('table');\n var result = $().add(cell);\n var row = cell.closest('tr');\n var headerRows = container.find('tr:not(.k-filter-row)');\n var level = headerRows.index(row);\n if (level > 0) {\n var parent = headerRows.eq(level - 1);\n var parentCellsWithChildren = parent.find('th:not(.k-group-cell,.k-hierarchy-cell)').filter(function () {\n return !$(this).attr('rowspan');\n });\n var offset = 0;\n var index = row.find('th:not(.k-group-cell,.k-hierarchy-cell)').index(cell);\n var prevCells = cell.prevAll(':not(.k-group-cell,.k-hierarchy-cell)').filter(function () {\n return this.colSpan > 1;\n });\n for (var idx = 0; idx < prevCells.length; idx++) {\n offset += prevCells[idx].colSpan || 1;\n }\n index += Math.max(offset - 1, 0);\n offset = 0;\n for (idx = 0; idx < parentCellsWithChildren.length; idx++) {\n var parentCell = parentCellsWithChildren.eq(idx);\n if (parentCell.attr('data-colspan')) {\n offset += parentCell[0].getAttribute('data-colspan');\n } else {\n offset += 1;\n }\n if (index >= idx && index < offset) {\n result = parentColumnsCells(parentCell).add(result);\n break;\n }\n }\n }\n return result;\n }\n function childColumnsCells(cell) {\n var container = cell.closest('thead');\n var result = $().add(cell);\n var row = cell.closest('tr');\n var headerRows = container.find('tr:not(.k-filter-row)');\n var level = headerRows.index(row) + cell[0].rowSpan;\n var colSpanAttr = kendo.attr('colspan');\n if (level <= headerRows.length - 1) {\n var child = row.next();\n var prevCells = cell.prevAll(':not(.k-group-cell,.k-hierarchy-cell)');\n var idx;\n prevCells = prevCells.filter(function () {\n return !this.rowSpan || this.rowSpan === 1;\n });\n var offset = 0;\n for (idx = 0; idx < prevCells.length; idx++) {\n offset += parseInt(prevCells.eq(idx).attr(colSpanAttr), 10) || 1;\n }\n var cells = child.find('th:not(.k-group-cell,.k-hierarchy-cell)');\n var colSpan = parseInt(cell.attr(colSpanAttr), 10) || 1;\n idx = 0;\n while (idx < colSpan) {\n child = cells.eq(idx + offset);\n result = result.add(childColumnsCells(child));\n var value = parseInt(child.attr(colSpanAttr), 10);\n if (value > 1) {\n colSpan -= value - 1;\n }\n idx++;\n }\n }\n return result;\n }\n function appendContent(tbody, table, html, empty) {\n var placeholder, tmp = tbody;\n if (empty) {\n tbody.empty();\n }\n if (tbodySupportsInnerHtml) {\n tbody[0].innerHTML = html;\n } else {\n placeholder = document.createElement('div');\n placeholder.innerHTML = '<table><tbody>' + html + '</tbody></table>';\n tbody = placeholder.firstChild.firstChild;\n table[0].replaceChild(tbody, tmp[0]);\n tbody = $(tbody);\n }\n return tbody;\n }\n function addHiddenStyle(attr) {\n attr = attr || {};\n var style = attr.style;\n if (!style) {\n style = 'display:none';\n } else {\n style = style.replace(/display:[^;]*/i, 'display:none');\n if (!style.match(/display:/i)) {\n style = style.replace(/(.*)?/i, 'display:none;$1');\n }\n }\n return extend({}, attr, { style: style });\n }\n function removeHiddenStyle(attr) {\n attr = attr || {};\n var style = attr.style;\n if (style) {\n attr.style = style.replace(/(display\\s*:\\s*none\\s*;?)*/gi, '');\n }\n return attr;\n }\n function normalizeCols(table, visibleColumns, hasDetails, groups) {\n var colgroup = table.find('>colgroup'), width, cols = map(visibleColumns, function (column) {\n width = column.width;\n if (width && parseInt(width, 10) !== 0) {\n return kendo.format('<col style=\"width:{0}\"/>', typeof width === STRING ? width : width + 'px');\n }\n return '<col />';\n });\n if (hasDetails || colgroup.find('.k-hierarchy-col').length) {\n cols.splice(0, 0, '<col class=\"k-hierarchy-col\" />');\n }\n if (colgroup.length) {\n colgroup.remove();\n }\n colgroup = $(new Array(groups + 1).join('<col class=\"k-group-col\">') + cols.join(''));\n if (!colgroup.is('colgroup')) {\n colgroup = $('<colgroup/>').append(colgroup);\n }\n table.prepend(colgroup);\n if (browser.msie && browser.version == 8) {\n table.css('display', 'inline-table');\n window.setTimeout(function () {\n table.css('display', '');\n }, 1);\n }\n }\n function normalizeHeaderCells(container, columns) {\n var lastIndex = 0;\n var idx, len;\n var th = container.find('th:not(.k-group-cell)');\n for (idx = 0, len = columns.length; idx < len; idx++) {\n if (columns[idx].locked) {\n th.eq(idx).insertBefore(th.eq(lastIndex));\n th = container.find('th:not(.k-group-cell)');\n lastIndex++;\n }\n }\n }\n function convertToObject(array) {\n var result = {}, item, idx, length;\n for (idx = 0, length = array.length; idx < length; idx++) {\n item = array[idx];\n result[item.value] = item.text;\n }\n return result;\n }\n function formatGroupValue(value, format, columnValues, encoded) {\n var isForeignKey = columnValues && columnValues.length && isPlainObject(columnValues[0]) && 'value' in columnValues[0], groupValue = isForeignKey ? convertToObject(columnValues)[value] : value;\n groupValue = groupValue != null ? groupValue : '';\n return format ? kendo.format(format, groupValue) : encoded === false ? groupValue : kendo.htmlEncode(groupValue);\n }\n function setCellVisibility(cells, index, visible) {\n var pad = 0, state, cell = cells[pad];\n while (cell) {\n state = visible ? true : cell.style.display !== 'none';\n if (state && !nonDataCellsRegExp.test(cell.className) && --index < 0) {\n cell.style.display = visible ? '' : 'none';\n break;\n }\n cell = cells[++pad];\n }\n }\n function hideColumnCells(rows, columnIndex) {\n var idx = 0, length = rows.length, cell, row;\n for (; idx < length; idx += 1) {\n row = rows.eq(idx);\n if (row.is('.k-grouping-row,.k-detail-row')) {\n cell = row.children(':not(.k-group-cell):first,.k-detail-cell').last();\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) - 1);\n } else {\n if (row.hasClass('k-grid-edit-row') && (cell = row.children('.k-edit-container')[0])) {\n cell = $(cell);\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) - 1);\n cell.find('col').eq(columnIndex).remove();\n row = cell.find('tr:first');\n }\n setCellVisibility(row[0].cells, columnIndex, false);\n }\n }\n }\n function groupRows(data) {\n var result = [];\n var item;\n for (var idx = 0; idx < data.length; idx++) {\n item = data[idx];\n if (!('field' in item && 'value' in item && 'items' in item)) {\n break;\n }\n result.push(item);\n if (item.hasSubgroups) {\n result = result.concat(groupRows(item.items));\n }\n }\n return result;\n }\n function groupFooters(data) {\n var result = [];\n var item;\n for (var idx = 0; idx < data.length; idx++) {\n item = data[idx];\n if (!('field' in item && 'value' in item && 'items' in item)) {\n break;\n }\n if (item.hasSubgroups) {\n result = result.concat(groupFooters(item.items));\n }\n result.push(item.aggregates);\n }\n return result;\n }\n function showColumnCells(rows, columnIndex) {\n var idx = 0, length = rows.length, cell, row, columns;\n for (; idx < length; idx += 1) {\n row = rows.eq(idx);\n if (row.is('.k-grouping-row,.k-detail-row')) {\n cell = row.children(':not(.k-group-cell):first,.k-detail-cell').last();\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) + 1);\n } else {\n if (row.hasClass('k-grid-edit-row') && (cell = row.children('.k-edit-container')[0])) {\n cell = $(cell);\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) + 1);\n normalizeCols(cell.find('>form>table'), visibleColumns(columns), false, 0);\n row = cell.find('tr:first');\n }\n setCellVisibility(row[0].cells, columnIndex, true);\n }\n }\n }\n function updateColspan(toAdd, toRemove, num) {\n num = num || 1;\n var item, idx, length;\n for (idx = 0, length = toAdd.length; idx < length; idx++) {\n item = toAdd.eq(idx).children().last();\n item.attr('colspan', parseInt(item.attr('colspan'), 10) + num);\n item = toRemove.eq(idx).children().last();\n item.attr('colspan', parseInt(item.attr('colspan'), 10) - num);\n }\n }\n function tableWidth(table) {\n var idx, length, width = 0;\n var cols = table.find('>colgroup>col');\n for (idx = 0, length = cols.length; idx < length; idx += 1) {\n width += parseInt(cols[idx].style.width, 10);\n }\n return width;\n }\n var Grid = kendo.ui.DataBoundWidget.extend({\n init: function (element, options, events) {\n var that = this;\n options = isArray(options) ? { dataSource: options } : options;\n Widget.fn.init.call(that, element, options);\n if (events) {\n that._events = events;\n }\n isRtl = kendo.support.isRtl(element);\n that._element();\n that._aria();\n that._columns($.extend(true, [], that.options.columns));\n that._dataSource();\n that._tbody();\n that._pageable();\n that._thead();\n that._groupable();\n that._toolbar();\n that._setContentHeight();\n that._templates();\n that._navigatable();\n that._selectable();\n that._clipboard();\n that._details();\n that._editable();\n that._attachCustomCommandsEvent();\n that._adaptiveColumns();\n that._minScreenSupport();\n if (that.options.autoBind) {\n that.dataSource.fetch();\n } else {\n that._group = that._groups() > 0;\n that._footer();\n }\n if (that.lockedContent) {\n that.wrapper.addClass('k-grid-lockedcolumns');\n that._resizeHandler = function () {\n that.resize();\n };\n $(window).on('resize' + NS, that._resizeHandler);\n }\n kendo.notify(that);\n },\n events: [\n CHANGE,\n 'dataBinding',\n 'cancel',\n DATABOUND,\n DETAILEXPAND,\n DETAILCOLLAPSE,\n DETAILINIT,\n FILTERMENUINIT,\n FILTERMENUOPEN,\n COLUMNMENUINIT,\n COLUMNMENUOPEN,\n EDIT,\n BEFOREEDIT,\n SAVE,\n REMOVE,\n SAVECHANGES,\n CELLCLOSE,\n COLUMNRESIZE,\n COLUMNREORDER,\n COLUMNSHOW,\n COLUMNHIDE,\n COLUMNLOCK,\n COLUMNUNLOCK,\n NAVIGATE,\n 'page',\n 'sort',\n 'filter',\n 'group',\n 'groupExpand',\n 'groupCollapse'\n ],\n setDataSource: function (dataSource) {\n var that = this;\n var scrollable = that.options.scrollable;\n var scrollableContent;\n that.options.dataSource = dataSource;\n that._dataSource();\n that._pageable();\n that._thead();\n if (scrollable) {\n if (scrollable.virtual) {\n scrollableContent = that.content.find('>.k-virtual-scrollable-wrap');\n scrollableContent.scrollLeft(leftMostPosition(scrollableContent, isRtl));\n } else {\n scrollableContent = that.tbody;\n that.content.scrollLeft(leftMostPosition(scrollableContent, isRtl));\n }\n }\n if (that.options.groupable) {\n that._groupable();\n }\n if (that.virtualScrollable) {\n that.virtualScrollable.setDataSource(that.options.dataSource);\n }\n if (that.options.navigatable) {\n that._navigatable();\n }\n if (that.options.selectable) {\n that._selectable();\n }\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n },\n options: {\n name: 'Grid',\n columns: [],\n toolbar: null,\n autoBind: true,\n filterable: false,\n scrollable: true,\n sortable: false,\n selectable: false,\n allowCopy: false,\n navigatable: false,\n pageable: false,\n persistSelection: false,\n editable: false,\n groupable: false,\n rowTemplate: '',\n altRowTemplate: '',\n search: false,\n noRecords: false,\n dataSource: {},\n height: null,\n resizable: false,\n reorderable: false,\n columnMenu: false,\n detailTemplate: null,\n columnResizeHandleWidth: 3,\n mobile: '',\n messages: {\n editable: {\n cancelDelete: CANCELDELETE,\n confirmation: DELETECONFIRM,\n confirmDelete: CONFIRMDELETE\n },\n commands: {\n create: defaultCommands.create.text,\n cancel: defaultCommands.cancel.text,\n save: defaultCommands.save.text,\n destroy: defaultCommands.destroy.text,\n edit: defaultCommands.edit.text,\n update: defaultCommands.update.text,\n canceledit: defaultCommands.canceledit.text,\n excel: defaultCommands.excel.text,\n pdf: defaultCommands.pdf.text\n },\n search: 'Search...',\n noRecords: NORECORDS,\n expandCollapseColumnHeader: '',\n groupHeader: 'Press ctrl + space to group',\n ungroupHeader: 'Press ctrl + space to ungroup'\n }\n },\n destroy: function () {\n var that = this, element;\n that._angularItems('cleanup');\n that._destroyColumnAttachments();\n Widget.fn.destroy.call(that);\n if (this._navigatableTables) {\n this._navigatableTables.off(NS);\n this._navigatableTables = null;\n }\n if (that._resizeHandler) {\n $(window).off('resize' + NS, that._resizeHandler);\n }\n if (that.pager && that.pager.element) {\n that.pager.destroy();\n }\n if (that.timer) {\n clearTimeout(that.timer);\n }\n if (that._progressTimeOut) {\n clearTimeout(that._progressTimeOut);\n }\n if (that._collapseGroupsTimeOut) {\n clearTimeout(that._collapseGroupsTimeOut);\n }\n if (that._endlessFetchTimeOut) {\n clearTimeout(that._endlessFetchTimeOut);\n }\n that.pager = null;\n that._destroyGroupable();\n if (that.options.reorderable) {\n that.wrapper.data('kendoReorderable').destroy();\n }\n if (that.selectable && that.selectable.element) {\n that.selectable.destroy();\n that.clearArea();\n that._selectedIds = null;\n if (that.copyHandler) {\n that.wrapper.off('keydown', that.copyHandler);\n that.unbind(that.copyHandler);\n }\n if (that.updateClipBoardState) {\n that.unbind(that.updateClipBoardState);\n that.updateClipBoardState = null;\n }\n if (that.clearAreaHandler) {\n that.wrapper.off('keyup', that.clearAreaHandler);\n }\n }\n that.selectable = null;\n if (that.resizable) {\n that.resizable.destroy();\n if (that._resizeUserEvents) {\n if (that._resizeHandleDocumentClickHandler) {\n $(document).off('click', that._resizeHandleDocumentClickHandler);\n }\n that._resizeUserEvents.destroy();\n that._resizeUserEvents = null;\n }\n that.resizable = null;\n }\n that._destroyVirtualScrollable();\n that._destroyEditable();\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler).unbind(PROGRESS, that._progressHandler).unbind(ERROR, that._errorHandler);\n that._refreshHandler = that._progressHandler = that._errorHandler = null;\n }\n element = that.element.add(that.wrapper).add(that.table).add(that.thead).add(that.wrapper.find('>.k-grid-toolbar'));\n if (that.content) {\n element = element.add(that.content).add(that.content.find('>.k-virtual-scrollable-wrap'));\n }\n if (that.lockedHeader) {\n that._removeLockedContainers();\n }\n if (that.pane) {\n that.pane.destroy();\n }\n if (that._isMobile) {\n that.wrapper.off('transitionend' + NS);\n that.wrapper.off('contextmenu' + NS);\n }\n if (that.minScreenResizeHandler) {\n $(window).off('resize', that.minScreenResizeHandler);\n }\n that._detachColumnMediaResizeHandler();\n if (that._draggableInstance && that._draggableInstance.element) {\n that._draggableInstance.destroy();\n }\n that._draggableInstance = null;\n element.off(NS);\n kendo.destroy(that.wrapper);\n that.rowTemplate = that.altRowTemplate = that.lockedRowTemplate = that.lockedAltRowTemplate = that.detailTemplate = that.footerTemplate = that.groupFooterTemplate = that.lockedGroupFooterTemplate = that.noRecordsTemplate = null;\n that.scrollables = that.thead = that.tbody = that.element = that.table = that.content = that.footer = that.wrapper = that.lockedTable = that.lockedContent = that.lockedHeader = that.lockedFooter = that._groupableClickHandler = that._groupRows = that._setContentWidthHandler = null;\n },\n getOptions: function () {\n var options = this.options;\n options.dataSource = null;\n var result = extend(true, {}, this.options);\n result.columns = kendo.deepExtend([], this.columns);\n var dataSource = this.dataSource;\n var initialData = dataSource.options.data && dataSource._data;\n dataSource.options.data = null;\n result.dataSource = $.extend(true, {}, dataSource.options);\n dataSource.options.data = initialData;\n result.dataSource.data = initialData;\n result.dataSource.page = dataSource.page();\n result.dataSource.filter = $.extend(true, {}, dataSource.filter());\n result.dataSource.pageSize = dataSource.pageSize();\n result.dataSource.sort = dataSource.sort();\n result.dataSource.group = dataSource.group();\n result.dataSource.aggregate = dataSource.aggregate();\n if (result.dataSource.transport) {\n result.dataSource.transport.dataSource = null;\n }\n if (result.pageable && result.pageable.pageSize) {\n result.pageable.pageSize = dataSource.pageSize();\n }\n result.$angular = undefined;\n return result;\n },\n setOptions: function (options) {\n var currentOptions = this.getOptions();\n kendo.deepExtend(currentOptions, options);\n if (!options.dataSource) {\n currentOptions.dataSource = this.dataSource;\n }\n var wrapper = this.wrapper;\n var events = this._events;\n var element = this.element;\n this.destroy();\n this.options = null;\n if (this._isMobile) {\n var mobileWrapper = wrapper.closest(kendo.roleSelector('pane')).parent();\n mobileWrapper.after(wrapper);\n mobileWrapper.remove();\n wrapper.removeClass('k-grid-mobile');\n }\n if (wrapper[0] !== element[0]) {\n wrapper.before(element);\n wrapper.remove();\n }\n element.empty();\n this.init(element, currentOptions, events);\n this._setEvents(currentOptions);\n },\n items: function () {\n if (this.lockedContent) {\n return this._items(this.tbody).add(this._items(this.lockedTable.children('tbody')));\n } else {\n return this._items(this.tbody);\n }\n },\n _items: function (container) {\n return container.children().filter(function () {\n var tr = $(this);\n return !tr.hasClass('k-grouping-row') && !tr.hasClass('k-detail-row') && !tr.hasClass('k-group-footer');\n });\n },\n dataItems: function () {\n var dataItems = kendo.ui.DataBoundWidget.fn.dataItems.call(this);\n if (this.lockedContent) {\n var n = dataItems.length, tmp = new Array(2 * n);\n for (var i = n; --i >= 0;) {\n tmp[i] = tmp[i + n] = dataItems[i];\n }\n dataItems = tmp;\n }\n return dataItems;\n },\n _destroyColumnAttachments: function () {\n var that = this;\n that.resizeHandle = null;\n if (!that.thead) {\n return;\n }\n this.angular('cleanup', function () {\n return { elements: that.thead.get() };\n });\n that.thead.add(that.lockedHeader).find('th').each(function () {\n var th = $(this), filterMenu = th.data('kendoFilterMenu'), sortable = th.data('kendoColumnSorter'), columnMenu = th.data('kendoColumnMenu');\n if (filterMenu) {\n filterMenu.destroy();\n }\n if (sortable) {\n sortable.destroy();\n }\n if (columnMenu) {\n columnMenu.destroy();\n }\n });\n },\n _attachCustomCommandsEvent: function () {\n var that = this, columns = leafColumns(that.columns || []), command, idx, length;\n for (idx = 0, length = columns.length; idx < length; idx++) {\n command = columns[idx].command;\n if (command) {\n attachCustomCommandEvent(that, that.wrapper, command);\n }\n }\n },\n _aria: function () {\n var id = this.element.attr('id') || 'aria';\n if (id) {\n this._cellId = id + '_active_cell';\n }\n },\n _element: function () {\n var that = this, table = that.element;\n if (!table.is('table')) {\n if (that.options.scrollable) {\n table = that.element.find('> .k-grid-content > table');\n } else {\n table = that.element.children('table');\n }\n if (!table.length) {\n table = $('<table />').appendTo(that.element);\n }\n }\n if (isIE7) {\n table.attr('cellspacing', 0);\n }\n that.table = table.attr('role', that._hasDetails() ? 'treegrid' : 'grid');\n that._wrapper();\n },\n _createResizeHandle: function (container, th) {\n var that = this;\n var indicatorWidth = that.options.columnResizeHandleWidth;\n var scrollable = that.options.scrollable;\n var resizeHandle = that.resizeHandle;\n var left;\n var top;\n if (resizeHandle && that.lockedContent && resizeHandle.data('th')[0] !== th[0]) {\n resizeHandle.off(NS).remove();\n resizeHandle = null;\n }\n if (!resizeHandle) {\n resizeHandle = that.resizeHandle = $('<div class=\"k-resize-handle\"><div class=\"k-resize-handle-inner\"></div></div>');\n container.append(resizeHandle);\n }\n left = th.offset().left + container.scrollLeft() - parseFloat(th.css('marginLeft')) - (container.offset().left + parseFloat(container.css('borderLeftWidth')));\n if (!isRtl) {\n left += th[0].offsetWidth;\n } else {\n if (scrollable) {\n var headerWrap = th.closest('.k-grid-header-wrap, .k-grid-header-locked'), ieCorrection = browser.msie ? headerWrap.scrollLeft() : 0, webkitCorrection = browser.webkit ? headerWrap[0].scrollWidth - headerWrap[0].offsetWidth - headerWrap.scrollLeft() : 0, firefoxCorrection = browser.mozilla ? headerWrap[0].scrollWidth - headerWrap[0].offsetWidth - (headerWrap[0].scrollWidth - headerWrap[0].offsetWidth - headerWrap.scrollLeft()) : 0;\n left -= webkitCorrection - firefoxCorrection + ieCorrection;\n }\n }\n top = th.offset().top - parseFloat(th.css('marginTop')) - (container.offset().top + parseFloat(container.css('borderTopWidth')));\n resizeHandle.css({\n top: top,\n left: left - indicatorWidth * 3 / 2,\n height: outerHeight(th),\n width: indicatorWidth * 3\n }).data('th', th).show();\n resizeHandle.off('dblclick' + NS).on('dblclick' + NS, function () {\n that._autoFitLeafColumn(th.data('index'));\n });\n },\n _positionColumnResizeHandle: function () {\n var that = this, lockedHead = that.lockedHeader ? that.lockedHeader.find('thead:first') : $();\n that.thead.add(lockedHead).on('mousemove' + NS, 'tr:not(.k-filter-row) > th', function (e) {\n var button = typeof e.buttons !== 'undefined' ? e.buttons : e.which || e.button;\n var th = $(this);\n if (th.hasClass('k-group-cell') || th.hasClass('k-hierarchy-cell')) {\n return;\n }\n if (typeof button !== 'undefined' && button !== 0) {\n return;\n }\n if (th[0].hasAttribute(kendo.attr(COLSPAN))) {\n return;\n }\n that._createResizeHandle(th.closest('div'), th);\n });\n },\n _resizeHandleDocumentClick: function (e) {\n if ($(e.target).closest('.k-column-active').length) {\n return;\n }\n $(document).off(e);\n this._resetResizeHandleHeader();\n this._hideResizeHandle();\n },\n _resetResizeHandleHeader: function () {\n var th;\n if (!this.resizeHandle) {\n return;\n }\n th = $(this.resizeHandle).data('th');\n if (th) {\n th.find(DOT + LINK_CLASS).find(DOT + ICON_CLASS).show();\n th.find(DOT + ORDER_CLASS).show();\n th.find(DOT + HEADER_COLUMN_MENU_CLASS).show();\n th.find(DOT + FILTER_MENU_CLASS).show();\n }\n },\n _hideResizeHandle: function () {\n if (this.resizeHandle) {\n this.resizeHandle.data('th').removeClass('k-column-active');\n if (this.lockedContent && !this._isMobile) {\n this.resizeHandle.off(NS).remove();\n this.resizeHandle = null;\n } else {\n this.resizeHandle.hide();\n }\n }\n },\n _positionColumnResizeHandleTouch: function () {\n var that = this, lockedHead = that.lockedHeader ? that.lockedHeader.find('thead:first') : $();\n that._resizeUserEvents = new kendo.UserEvents(lockedHead.add(that.thead), {\n filter: 'th:not(.k-group-cell):not(.k-hierarchy-cell)',\n threshold: 10,\n minHold: 500,\n hold: function (e) {\n var th = $(e.target);\n e.preventDefault();\n if (that.resizeHandle) {\n that.resizeHandle.data('th').removeClass('k-column-active');\n that._resetResizeHandleHeader();\n }\n th.addClass('k-column-active');\n th.find(DOT + LINK_CLASS).find(DOT + ICON_CLASS).hide();\n th.find(DOT + ORDER_CLASS).hide();\n th.find(DOT + HEADER_COLUMN_MENU_CLASS).hide();\n th.find(DOT + FILTER_MENU_CLASS).hide();\n that._createResizeHandle(th.closest('div'), th);\n if (!that._resizeHandleDocumentClickHandler) {\n that._resizeHandleDocumentClickHandler = proxy(that._resizeHandleDocumentClick, that);\n }\n $(document).on('click', that._resizeHandleDocumentClickHandler);\n }\n });\n },\n resizeColumn: function (column, columnWidth) {\n var that = this;\n var isLocked = !!column.locked;\n var isHidden = !!column.hidden;\n var options = this.options;\n var scrollbar = !kendo.support.mobileOS ? kendo.support.scrollbar() : 0;\n var index = isLocked ? inArray(column, visibleLockedColumns(that.columns)) : inArray(column, visibleNonLockedColumns(that.columns));\n var contentTable = isLocked ? that.lockedTable : that.table;\n var footer = that.footer || $();\n var header = isLocked ? that.lockedHeader.find('table') : that.thead.closest('table');\n var columnMinWidth = column.minResizableWidth || 10;\n var gridWidth = isLocked ? outerWidth(contentTable.find('tbody')) : outerWidth(that.tbody);\n var col;\n if (isHidden) {\n column.width = columnWidth > columnMinWidth ? columnWidth : columnMinWidth;\n return;\n }\n if (that.footer && that.lockedContent) {\n footer = isLocked ? that.footer.children('.k-grid-footer-locked') : that.footer.children('.k-grid-footer-wrap');\n }\n if (options.scrollable) {\n col = header.find('col:not(.k-group-col,.k-hierarchy-col):eq(' + index + ')').add(contentTable.children('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')')).add(footer.find('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')'));\n } else {\n col = contentTable.find('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')');\n }\n if (options.scrollable) {\n var constrain = false;\n var totalWidth = that.wrapper.width() - scrollbar;\n var width = columnWidth = columnWidth > columnMinWidth ? columnWidth : columnMinWidth;\n if (isLocked && gridWidth - columnWidth + width > totalWidth) {\n width = columnWidth + (totalWidth - gridWidth - scrollbar * 2);\n if (width < 0) {\n width = columnWidth;\n }\n constrain = true;\n }\n if (width > 10 && width >= columnMinWidth) {\n col.css('width', width);\n if (gridWidth) {\n if (constrain) {\n width = totalWidth - scrollbar * 2;\n } else {\n width = gridWidth + (columnWidth - column.width);\n }\n contentTable.add(header).add(footer).css('width', width);\n if (!isLocked) {\n that._footerWidth = width;\n }\n }\n }\n that._scrollVirtualWrapperOnColumnResize();\n } else if (columnWidth > 10 && columnWidth >= columnMinWidth) {\n col.css('width', columnWidth);\n }\n column.width = columnWidth;\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n },\n _resizable: function () {\n var that = this, options = that.options, container, columnStart, columnWidth, columnMinWidth, gridWidth, isMobile = this._isMobile, scrollbar = !kendo.support.mobileOS ? kendo.support.scrollbar() : 0, isLocked, col, th;\n if (options.resizable) {\n container = options.scrollable ? that.wrapper.find('.k-grid-header-wrap:first') : that.wrapper;\n if (isMobile) {\n that._positionColumnResizeHandleTouch(container);\n } else {\n that._positionColumnResizeHandle(container);\n }\n if (that.resizable) {\n that.resizable.destroy();\n }\n that.resizable = new ui.Resizable(container.add(that.lockedHeader), {\n handle: (!!options.scrollable ? '' : '>') + '.k-resize-handle',\n hint: function (handle) {\n return $('<div class=\"k-grid-resize-indicator\" />').css({ height: outerHeight(handle.data('th')) + that.tbody.attr('clientHeight') });\n },\n start: function (e) {\n th = $(e.currentTarget).data('th');\n if (isMobile) {\n that._hideResizeHandle();\n }\n var header = th.closest('table'), index = $.inArray(th[0], leafDataCells(th.closest('thead')).filter(':visible'));\n isLocked = header.parent().hasClass('k-grid-header-locked');\n var contentTable = isLocked ? that.lockedTable : that.table, footer = that.footer || $();\n if (that.footer && that.lockedContent) {\n footer = isLocked ? that.footer.children('.k-grid-footer-locked') : that.footer.children('.k-grid-footer-wrap');\n }\n cursor(that.wrapper, 'col-resize');\n if (options.scrollable) {\n col = header.find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')').add(contentTable.children('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')')).add(footer.find('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')'));\n } else {\n col = contentTable.children('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')');\n }\n var columns = $.map(that.columns, function (a) {\n return !a.hidden && (isLocked && a.locked || !isLocked && !a.locked) ? a : null;\n });\n columnStart = e.x.location;\n columnWidth = outerWidth(th);\n columnMinWidth = leafColumns(columns)[index].minResizableWidth || 10;\n gridWidth = isLocked ? outerWidth(contentTable.children('tbody')) : outerWidth(that.tbody);\n if (browser.webkit) {\n that.wrapper.addClass('k-grid-column-resizing');\n }\n },\n resize: function (e) {\n var rtlMultiplier = isRtl ? -1 : 1, currentWidth = columnWidth + e.x.location * rtlMultiplier - columnStart * rtlMultiplier;\n if (options.scrollable) {\n var footer;\n if (isLocked && that.lockedFooter) {\n footer = that.lockedFooter.children('table');\n } else if (that.footer) {\n footer = that.footer.find('>.k-grid-footer-wrap>table');\n }\n if (!footer || !footer[0]) {\n footer = $();\n }\n var header = th.closest('table');\n var contentTable = isLocked ? that.lockedTable : that.table;\n var constrain = false;\n var totalWidth = that.wrapper.width() - scrollbar;\n var width = currentWidth;\n if (isLocked && gridWidth - columnWidth + width > totalWidth) {\n width = columnWidth + (totalWidth - gridWidth - scrollbar * 2);\n if (width < 0) {\n width = currentWidth;\n }\n constrain = true;\n }\n if (width > 10 && width >= columnMinWidth) {\n col.css('width', width);\n if (gridWidth) {\n if (constrain) {\n width = totalWidth - scrollbar * 2;\n } else {\n width = gridWidth + e.x.location * rtlMultiplier - columnStart * rtlMultiplier;\n }\n contentTable.add(header).add(footer).css('width', width);\n if (!isLocked) {\n that._footerWidth = width;\n }\n }\n }\n that._scrollVirtualWrapperOnColumnResize();\n } else if (currentWidth > 10 && currentWidth >= columnMinWidth) {\n col.css('width', currentWidth);\n }\n },\n resizeend: function () {\n var newWidth = outerWidth(th), column, header;\n cursor(that.wrapper, '');\n if (browser.webkit) {\n that.wrapper.removeClass('k-grid-column-resizing');\n }\n if (columnWidth != newWidth) {\n header = that.lockedHeader ? that.lockedHeader.find('thead:first tr:first').add(that.thead.find('tr:first')) : th.parent();\n var index = th.attr(kendo.attr('index'));\n if (!index) {\n index = header.find('th:not(.k-group-cell):not(.k-hierarchy-cell)').index(th);\n }\n column = leafColumns(that.columns)[index];\n column.width = newWidth;\n that.trigger(COLUMNRESIZE, {\n column: column,\n oldWidth: columnWidth,\n newWidth: newWidth\n });\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n }\n that._resetResizeHandleHeader();\n that._hideResizeHandle();\n th = null;\n }\n });\n }\n },\n _draggable: function () {\n var that = this;\n if (that.options.reorderable) {\n if (that._draggableInstance) {\n that._draggableInstance.destroy();\n }\n var header = that.wrapper.children('.k-grid-header');\n that._draggableInstance = that.wrapper.kendoDraggable({\n group: kendo.guid(),\n autoScroll: true,\n filter: that.content ? '.k-grid-header:first ' + HEADERCELLS : 'table:first>.k-grid-header ' + HEADERCELLS,\n dragstart: function () {\n header.children('.k-grid-header-wrap').unbind('scroll' + NS + 'scrolling').bind('scroll' + NS + 'scrolling', function (e) {\n if (that.virtualScrollable) {\n that.content.find('>.k-virtual-scrollable-wrap').scrollLeft(this.scrollLeft);\n } else {\n that.scrollables.not(e.currentTarget).scrollLeft(this.scrollLeft);\n }\n });\n },\n dragend: function () {\n that._resetResizeHandleHeader();\n header.children('.k-grid-header-wrap').unbind('scroll' + NS + 'scrolling');\n },\n drag: function () {\n that._hideResizeHandle();\n },\n hint: function (target) {\n var title = target.attr(kendo.attr('title'));\n if (title) {\n title = kendo.htmlEncode(title);\n }\n return $('<div class=\"k-header k-reorder-clue k-drag-clue\" />').html(title || target.attr(kendo.attr('field')) || target.text()).prepend('<span class=\"k-icon k-drag-status k-i-cancel\" />');\n }\n }).data('kendoDraggable');\n }\n },\n _reorderable: function () {\n var that = this;\n if (that.options.reorderable) {\n if (that.wrapper.data('kendoReorderable')) {\n that.wrapper.data('kendoReorderable').destroy();\n }\n that.wrapper.kendoReorderable({\n draggable: that._draggableInstance,\n dragOverContainers: function (sourceIndex, targetIndex) {\n var columns = flatColumnsInDomOrder(that.columns);\n return columns[sourceIndex].lockable !== false && targetParentContainerIndex(columns, that.columns, sourceIndex, targetIndex) > -1;\n },\n inSameContainer: function (e) {\n return $(e.source).parent()[0] === $(e.target).parent()[0] && targetParentContainerIndex(flatColumnsInDomOrder(that.columns), that.columns, e.sourceIndex, e.targetIndex) > -1;\n },\n change: function (e) {\n var columns = flatColumnsInDomOrder(that.columns);\n var column = columns[e.oldIndex];\n var newIndex = targetParentContainerIndex(columns, that.columns, e.oldIndex, e.newIndex);\n that.trigger(COLUMNREORDER, {\n newIndex: newIndex,\n oldIndex: inArray(column, columns),\n column: column\n });\n that.reorderColumn(newIndex, column, e.position === 'before');\n }\n });\n }\n },\n _reorderHeader: function (sources, target, before, container) {\n var that = this;\n var sourcePosition = columnPosition(sources[0], that.columns);\n var destPosition = columnPosition(target, that.columns);\n var action;\n var ths;\n var leafs = [];\n for (var idx = 0; idx < sources.length; idx++) {\n if (sources[idx].columns) {\n leafs = leafs.concat(sources[idx].columns);\n }\n }\n if (container) {\n ths = elements(container, container, 'tr:eq(' + sourcePosition.row + ')>th.k-header:not(.k-group-cell,.k-hierarchy-cell)');\n } else {\n ths = elements(that.lockedHeader, that.thead, 'tr:eq(' + sourcePosition.row + ')>th.k-header:not(.k-group-cell,.k-hierarchy-cell)');\n }\n var sourceLockedColumns = lockedColumns(sources).length;\n var targetLockedColumns = lockedColumns([target]).length;\n if (leafs.length) {\n if (sourceLockedColumns > 0 && targetLockedColumns === 0) {\n action = 'prepend';\n moveCellsBetweenContainers(sources, target, leafs, that.columns, that.lockedHeader.find('thead'), that.thead, this._groups(), action);\n } else if (sourceLockedColumns === 0 && targetLockedColumns > 0) {\n action = destPosition.cell === 0 && sources[0].columns && !target.columns && !that._group ? 'prepend' : 'append';\n moveCellsBetweenContainers(sources, target, leafs, nonLockedColumns(that.columns), that.thead, that.lockedHeader.find('thead'), this._groups(), action);\n }\n if (target.columns || sourcePosition.cell - destPosition.cell > 1 || destPosition.cell - sourcePosition.cell > 1) {\n target = findReorderTarget(that.columns, target, sources[0], before, that.columns);\n if (target) {\n if (sourceLockedColumns > 0 && targetLockedColumns === 0) {\n that._reorderHeader(leafs, target, before, that.thead);\n } else if (sourceLockedColumns === 0 && targetLockedColumns > 0) {\n that._reorderHeader(leafs, target, before, that.lockedHead);\n } else {\n that._reorderHeader(leafs, target, before);\n }\n }\n }\n } else if (sourceLockedColumns !== targetLockedColumns) {\n updateCellRowSpan(ths[sourcePosition.cell], that.columns, sourceLockedColumns);\n }\n reorder(ths, sourcePosition.cell, destPosition.cell, before, sources.length);\n },\n _reorderContent: function (sources, destination, before) {\n var that = this;\n var lockedRows = $();\n var source = sources[0];\n var visibleSources = visibleColumns(sources);\n var sourceIndex = inArray(source, leafColumns(that.columns));\n var destIndex = inArray(destination, leafColumns(that.columns));\n var colSourceIndex = inArray(visibleSources[0], visibleLeafColumns(that.columns));\n var colDest = inArray(destination, visibleLeafColumns(that.columns));\n var lockedCount = lockedColumns(that.columns).length;\n var isLocked = !!destination.locked;\n var footer = that.footer || that.wrapper.find('.k-grid-footer');\n var headerCol, footerCol, beforeVisibleColumn;\n headerCol = footerCol = colDest;\n if (destination.hidden) {\n var columnsArray = isLocked ? lockedColumns(that.columns) : nonLockedColumns(that.columns);\n if (visibleColumns(columnsArray).length > 0) {\n headerCol = footerCol = colDest = this._findClosestVisibleColumnIndex(columnsArray, destIndex);\n beforeVisibleColumn = visibleColumns(columnsArray.slice(destIndex)).length > 0;\n } else {\n if (isLocked) {\n colDest = that.lockedTable.find('colgroup');\n headerCol = that.lockedHeader.find('colgroup');\n footerCol = $(that.lockedFooter).find('>table>colgroup');\n } else {\n colDest = that.tbody.prev();\n headerCol = that.thead.prev();\n footerCol = footer.find('.k-grid-footer-wrap').find('>table>colgroup');\n }\n }\n }\n if (that._hasFilterRow()) {\n reorder(that.wrapper.find('.k-filter-row th:not(.k-group-cell,.k-hierarchy-cell)'), sourceIndex, destIndex, before, sources.length);\n }\n if (colSourceIndex >= 0) {\n reorder(elements(that.lockedHeader, that.thead.prev(), 'col:not(.k-group-col,.k-hierarchy-col)'), colSourceIndex, headerCol, beforeVisibleColumn ? beforeVisibleColumn : before, visibleSources.length);\n }\n if (that.options.scrollable) {\n if (colSourceIndex >= 0) {\n reorder(elements(that.lockedTable, that.tbody.prev(), 'col:not(.k-group-col,.k-hierarchy-col)'), colSourceIndex, colDest, beforeVisibleColumn ? beforeVisibleColumn : before, visibleSources.length);\n }\n }\n if (footer && footer.length) {\n if (colSourceIndex >= 0) {\n reorder(elements(that.lockedFooter, footer.find('.k-grid-footer-wrap'), '>table>colgroup>col:not(.k-group-col,.k-hierarchy-col)'), colSourceIndex, footerCol, beforeVisibleColumn ? beforeVisibleColumn : before, visibleSources.length);\n }\n reorder(footer.find('.k-footer-template>td:not(.k-group-cell,.k-hierarchy-cell)'), sourceIndex, destIndex, before, sources.length);\n }\n var rows = that.tbody.children(':not(.k-grouping-row,.k-detail-row)');\n if (that.lockedTable) {\n if (lockedCount > destIndex) {\n if (lockedCount <= sourceIndex) {\n updateColspan(that.lockedTable.find('>tbody>tr.k-grouping-row'), that.table.find('>tbody>tr.k-grouping-row'), sources.length);\n }\n } else if (lockedCount > sourceIndex) {\n updateColspan(that.table.find('>tbody>tr.k-grouping-row'), that.lockedTable.find('>tbody>tr.k-grouping-row'), sources.length);\n }\n lockedRows = that.lockedTable.find('>tbody>tr:not(.k-grouping-row,.k-detail-row)');\n }\n for (var idx = 0, length = rows.length; idx < length; idx += 1) {\n reorder(elements(lockedRows[idx], rows[idx], '>td:not(.k-group-cell,.k-hierarchy-cell)'), sourceIndex, destIndex, before, sources.length);\n }\n },\n _findClosestVisibleColumnIndex: function (columns, columnIndex) {\n var columnsArray = visibleColumns(columns.slice(columnIndex)).length > 0 ? columns.slice(columnIndex) : columns.slice(0, columnIndex + 1).reverse(), closestVisibleColumn = visibleColumns(columnsArray)[0];\n return inArray(closestVisibleColumn, visibleColumns(this.columns));\n },\n _autoFitLeafColumn: function (leafIndex) {\n this.autoFitColumn(leafColumns(this.columns)[leafIndex]);\n },\n autoFitColumn: function (column) {\n var that = this, options = that.options, columns = that.columns, index, th, headerTable, isLocked, visibleLocked = that.lockedHeader ? leafDataCells(that.lockedHeader.find('>table>thead')).filter(isCellVisible).length : 0, col, minWidth, contentDiv, scrollLeft, notGroupOrHierarchyCol = 'col:not(.k-group-col):not(.k-hierarchy-col)', notGroupOrHierarchyVisibleCell = 'td:visible:not(.k-group-cell):not(.k-hierarchy-cell)';\n if (typeof column == 'number') {\n column = columns[column];\n } else if (isPlainObject(column)) {\n column = grep(flatColumns(columns), function (item) {\n return item === column;\n })[0];\n } else {\n column = grep(flatColumns(columns), function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || !isVisible(column)) {\n return;\n }\n minWidth = column.minResizableWidth;\n index = inArray(column, leafColumns(columns));\n isLocked = column.locked;\n if (isLocked) {\n headerTable = that.lockedHeader.children('table');\n } else {\n headerTable = that.thead.parent();\n }\n th = headerTable.find('[data-index=\\'' + index + '\\']');\n var contentTable = isLocked ? that.lockedTable : that.table, footer = that.footer || $();\n if (that.footer && that.lockedContent) {\n footer = isLocked ? that.footer.children('.k-grid-footer-locked') : that.footer.children('.k-grid-footer-wrap');\n }\n var footerTable = footer.find('table').first();\n if (that.lockedHeader && !isLocked) {\n index -= visibleLocked;\n }\n for (var j = 0; j < columns.length; j++) {\n if (columns[j] === column) {\n break;\n } else {\n if (columns[j].hidden) {\n index--;\n }\n }\n }\n if (options.scrollable) {\n col = headerTable.find(notGroupOrHierarchyCol).eq(index).add(contentTable.children('colgroup').find(notGroupOrHierarchyCol).eq(index)).add(footerTable.find('colgroup').find(notGroupOrHierarchyCol).eq(index));\n if (!isLocked) {\n contentDiv = contentTable.parent();\n scrollLeft = contentDiv.scrollLeft();\n }\n } else {\n col = contentTable.children('colgroup').find(notGroupOrHierarchyCol).eq(index);\n }\n var tables = headerTable.add(contentTable).add(footerTable);\n var oldColumnWidth = outerWidth(th);\n col.width('');\n tables.css('table-layout', 'fixed');\n col.width('auto');\n tables.addClass('k-autofitting');\n tables.css('table-layout', '');\n var newColumnWidth = Math.ceil(Math.max(outerWidth(th), outerWidth(contentTable.find('tr:not(.k-grouping-row)').eq(0).children(notGroupOrHierarchyVisibleCell).eq(index)), outerWidth(footerTable.find('tr').eq(0).children(notGroupOrHierarchyVisibleCell).eq(index)))) + 1;\n if (minWidth && minWidth > newColumnWidth) {\n newColumnWidth = minWidth;\n }\n col.width(newColumnWidth);\n column.width = newColumnWidth;\n if (options.scrollable) {\n var cols = headerTable.find('col'), colWidth, totalWidth = 0;\n for (var idx = 0, length = cols.length; idx < length; idx += 1) {\n colWidth = cols[idx].style.width;\n if (colWidth && colWidth.indexOf('%') == -1) {\n totalWidth += parseInt(colWidth, 10);\n } else if (cols.eq(idx).hasClass('k-group-col')) {\n totalWidth += parseInt(cols.eq(idx).width(), 10);\n } else {\n totalWidth = 0;\n break;\n }\n }\n if (totalWidth) {\n tables.each(function () {\n this.style.width = totalWidth + 'px';\n });\n }\n }\n if (browser.msie && browser.version == 8) {\n tables.css('display', 'inline-table');\n setTimeout(function () {\n tables.css('display', 'table');\n }, 1);\n }\n tables.removeClass('k-autofitting');\n if (scrollLeft) {\n contentDiv.scrollLeft(scrollLeft);\n }\n that.trigger(COLUMNRESIZE, {\n column: column,\n oldWidth: oldColumnWidth,\n newWidth: newColumnWidth\n });\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n },\n reorderColumn: function (destIndex, column, before) {\n var that = this, parent = columnParent(column, that.columns), columns = parent ? parent.columns : that.columns, sourceIndex = inArray(column, columns), destColumn = columns[destIndex], lockChanged, isLocked = !!destColumn.locked, lockedCount = lockedColumns(that.columns).length, groupHeaderColumnTemplateColumns = grep(leafColumns(that.columns), function (column) {\n return column.groupHeaderColumnTemplate;\n });\n if (sourceIndex === destIndex) {\n return;\n }\n if (!column.locked && isLocked && nonLockedColumns(that.columns).length == 1) {\n return;\n }\n if (column.locked && !isLocked && lockedCount == 1) {\n return;\n }\n that._hideResizeHandle();\n if (before === undefined) {\n before = destIndex < sourceIndex;\n }\n var sourceColumns = [column];\n that._reorderHeader(sourceColumns, destColumn, before);\n if (that.lockedHeader) {\n removeEmptyRows(that.thead);\n removeEmptyRows(that.lockedHeader);\n }\n if (destColumn.columns) {\n destColumn = leafColumns(destColumn.columns);\n destColumn = destColumn[before ? 0 : destColumn.length - 1];\n }\n if (column.columns) {\n sourceColumns = leafColumns(column.columns);\n }\n that._reorderContent(sourceColumns, destColumn, before);\n lockChanged = !!column.locked;\n lockChanged = lockChanged != isLocked;\n column.locked = isLocked;\n columns.splice(before ? destIndex : destIndex + 1, 0, column);\n columns.splice(sourceIndex < destIndex ? sourceIndex : sourceIndex + 1, 1);\n that._updateLockedCols();\n that._updateCols();\n that._templates();\n that._updateColumnCellIndex();\n that._updateColumnSorters();\n if (groupHeaderColumnTemplateColumns.length > 0) {\n that._renderGroupRows();\n }\n that._updateTablesWidth();\n that._applyLockedContainersWidth();\n that._syncLockedHeaderHeight();\n that._syncLockedContentHeight();\n that._updateFirstColumnClass();\n if (!lockChanged) {\n return;\n }\n if (isLocked) {\n that.trigger(COLUMNLOCK, { column: column });\n } else {\n that.trigger(COLUMNUNLOCK, { column: column });\n }\n },\n _updateColumnCellIndex: function () {\n var header;\n var offset = 0;\n if (this.lockedHeader) {\n header = this.lockedHeader.find('thead');\n offset = updateCellIndex(header, lockedColumns(this.columns));\n }\n updateCellIndex(this.thead, nonLockedColumns(this.columns), offset);\n },\n lockColumn: function (column) {\n var columns = this.columns;\n if (typeof column == 'number') {\n column = columns[column];\n } else {\n column = grep(columns, function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || column.locked || column.hidden) {\n return;\n }\n var index = lockedColumns(columns).length - 1;\n this.reorderColumn(index, column, false);\n },\n unlockColumn: function (column) {\n var columns = this.columns;\n if (typeof column == 'number') {\n column = columns[column];\n } else {\n column = grep(columns, function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || !column.locked || column.hidden) {\n return;\n }\n var index = lockedColumns(columns).length;\n this.reorderColumn(index, column, true);\n },\n cellIndex: function (td) {\n var lockedColumnOffset = 0;\n if (this.lockedTable && !$.contains(this.lockedTable[0], td[0])) {\n lockedColumnOffset = leafColumns(lockedColumns(this.columns)).length;\n }\n return $(td).parent().children('td:not(.k-group-cell,.k-hierarchy-cell)').index(td) + lockedColumnOffset;\n },\n _modelForContainer: function (container) {\n container = $(container);\n if (!container.is('tr') && this._editMode() !== 'popup') {\n container = container.closest('tr');\n }\n var id = container.attr(kendo.attr('uid'));\n return this.dataSource.getByUid(id);\n },\n _editable: function () {\n var that = this, selectable = that.selectable && that.selectable.options.multiple, editable = that.options.editable, handler = function () {\n var target = activeElement(), cell = that._editContainer;\n if (cell && cell[0] && !$.contains(cell[0], target) && cell[0] !== target && !$(target).closest('.k-animation-container').length) {\n if (that.editable.end()) {\n that.closeCell();\n } else {\n that._scrollVirtualWrapper();\n }\n }\n };\n if (editable) {\n this.wrapper.addClass('k-editable');\n var mode = that._editMode();\n if (mode === 'incell') {\n that.table.add(that.lockedTable).on('mousedown' + NS, NAVROW + '>' + NAVCELL, function (e) {\n var target = $(e.target);\n if (that._editMode() === 'incell' && target.hasClass('k-checkbox-label') && target.prev().attr(kendo.attr('bind'))) {\n e.preventDefault();\n }\n });\n if (editable.update !== false) {\n if (isMac) {\n that.wrapper.on(CLICK + NS, '.k-edit-cell > input[type=\\'checkbox\\']', function (e) {\n $(e.target).focus();\n }).on(CLICK + NS, '.k-edit-cell', function (e) {\n if (!$(e.target).is('input')) {\n $(e.currentTarget).find('input[type=\\'checkbox\\']').focus();\n }\n }).on(MOUSEDOWN + NS, 'tr:not(.k-grouping-row) > td', function (e) {\n var editContainer = that._editContainer;\n if (editContainer && editContainer[0] && ($.contains(editContainer[0], e.target) || editContainer[0] === e.target)) {\n that._mousedownOnEditCell = true;\n } else {\n that._mousedownOnEditCell = false;\n }\n });\n }\n that.wrapper.on(kendo.support.touch ? 'touchstart' + NS : CLICK + NS, 'tr:not(.k-grouping-row) > td', function (e) {\n var td = $(this), isLockedCell = that.lockedTable && td.closest('table')[0] === that.lockedTable[0];\n that._mousedownOnEditCell = false;\n if (td.hasClass('k-hierarchy-cell') || td.hasClass('k-detail-cell') || td.hasClass('k-group-cell') || td.hasClass('k-edit-cell') || td.has('a.k-grid-delete').length || td.has('button.k-grid-delete').length || td.closest('tbody')[0] !== that.tbody[0] && !isLockedCell || $(e.target).is(':input')) {\n return;\n }\n if (that.editable) {\n if (that.editable.end()) {\n if (selectable) {\n $(activeElement()).blur();\n }\n that.closeCell();\n that.editCell(td);\n } else {\n that._scrollVirtualWrapper();\n }\n } else {\n that.editCell(td);\n }\n }).on('focusin' + NS, function () {\n if (!$.contains(this, activeElement())) {\n clearTimeout(that.timer);\n that.timer = null;\n }\n }).on('focusout' + NS, function (e) {\n var shouldCloseCell = true;\n if (isMac && that._mousedownOnEditCell) {\n shouldCloseCell = false;\n }\n that._mousedownOnEditCell = false;\n if (shouldCloseCell) {\n that.timer = setTimeout(function () {\n handler(e);\n }, 1);\n }\n });\n }\n } else {\n if (editable.update !== false) {\n that.wrapper.on(CLICK + NS, 'tbody>tr:not(.k-detail-row,.k-grouping-row):visible a.k-grid-edit', function (e) {\n e.preventDefault();\n that.editRow($(this).closest('tr'));\n });\n if (that._isVirtualInlineEditable()) {\n that.wrapper.on('focusout' + NS, 'tr:not(.k-grouping-row) > td', function () {\n if (that.editable && !that.editable.end()) {\n that._scrollVirtualWrapper();\n }\n });\n }\n }\n }\n if (editable.destroy !== false) {\n that.wrapper.on(CLICK + NS, 'tbody>tr:not(.k-detail-row,.k-grouping-row):visible .k-grid-delete', function (e) {\n e.preventDefault();\n e.stopPropagation();\n that.removeRow($(this).closest('tr'));\n });\n } else {\n that.wrapper.on(CLICK + NS, 'tbody>tr:not(.k-detail-row,.k-grouping-row):visible button.k-grid-delete', function (e) {\n e.stopPropagation();\n if (!that._confirmation()) {\n e.preventDefault();\n }\n });\n }\n }\n },\n editCell: function (cell) {\n cell = $(cell);\n var that = this, column = leafColumns(that.columns)[that.cellIndex(cell)], model = that._modelForContainer(cell);\n that.closeCell();\n if (model && isColumnEditable(column, model) && !column.command) {\n if (that.trigger(BEFOREEDIT, { model: model })) {\n return;\n }\n that._attachModelChange(model);\n that._editContainer = cell;\n if (that._shouldClearEditableState) {\n that._clearEditableState();\n }\n that.editable = cell.addClass('k-edit-cell').kendoEditable({\n fields: {\n field: column.field,\n format: column.format,\n editor: column.editor,\n values: column.values\n },\n model: model,\n target: that,\n change: function (e) {\n if (that.trigger(SAVE, {\n values: e.values,\n container: cell,\n model: model\n })) {\n e.preventDefault();\n }\n },\n skipFocus: that._isVirtualIncellEditable() && that._editableState ? true : false\n }).data('kendoEditable');\n var tr = cell.parent().addClass('k-grid-edit-row');\n if (that.lockedContent) {\n adjustRowHeight(tr[0], that._relatedRow(tr).addClass('k-grid-edit-row')[0]);\n that._syncLockedScroll();\n }\n that.trigger(EDIT, {\n container: cell,\n model: model\n });\n }\n },\n _adjustLockedHorizontalScrollBar: function () {\n var table = this.table, content = table.parent();\n var scrollbar = table[0].offsetWidth > content[0].clientWidth ? kendo.support.scrollbar() : 0;\n this.lockedContent.height(content[0].offsetHeight - scrollbar);\n },\n _syncLockedScroll: function () {\n this.lockedContent[0].scrollTop = this.content[0].scrollTop;\n if (this.virtualScrollable) {\n this.lockedContent[0].scrollTop = this.wrapper.find('.k-virtual-scrollable-wrap')[0].scrollTop;\n }\n },\n _syncLockedContentHeight: function () {\n if (this.lockedTable) {\n if (!this.touchScroller) {\n this._adjustLockedHorizontalScrollBar();\n }\n this._adjustRowsHeight(this.table, this.lockedTable);\n }\n },\n _syncLockedHeaderHeight: function () {\n if (this.lockedHeader) {\n var lockedTable = this.lockedHeader.children('table');\n var table = this.thead.parent();\n this._adjustRowsHeight(lockedTable, table);\n syncTableHeight(lockedTable, table);\n }\n },\n _syncLockedFooterHeight: function () {\n if (this.lockedFooter && this.footer && this.footer.length) {\n this._adjustRowsHeight(this.lockedFooter.children('table'), this.footer.find('.k-grid-footer-wrap > table'));\n }\n },\n _destroyEditable: function () {\n var that = this;\n var destroy = function () {\n if (that.editable) {\n var container = that.editView ? that.editView.element : that._editContainer;\n if (container) {\n container.off(CLICK + NS, 'a.k-grid-cancel', that._editCancelClickHandler);\n container.off(CLICK + NS, 'a.k-grid-update', that._editUpdateClickHandler);\n }\n that._detachModelChange();\n that.editable.destroy();\n that.editable = null;\n that._editContainer = null;\n that._destroyEditView();\n that._editableIsClosing = null;\n }\n };\n if (that.editable) {\n if (that._editMode() === 'popup' && !that._isMobile) {\n if (that._editableIsClosing) {\n that._editContainer.data('kendoWindow').bind('deactivate', destroy);\n } else {\n that._editableIsClosing = true;\n that._editContainer.data('kendoWindow').bind('deactivate', destroy).close();\n }\n } else {\n destroy();\n }\n }\n if (that._confirmDialog) {\n that._confirmDialog.close();\n that._confirmDialog.destroy();\n that._confirmDialog = null;\n }\n },\n _destroyEditView: function () {\n if (this.editView) {\n this.editView.purge();\n this.editView = null;\n this.pane.navigate('');\n }\n },\n _attachModelChange: function (model) {\n var that = this;\n that._modelChangeHandler = function (e) {\n that._modelChange({\n field: e.field,\n model: this\n });\n };\n model.bind('change', that._modelChangeHandler);\n },\n _detachModelChange: function () {\n var that = this, container = that._editContainer, model = that._modelForContainer(container);\n if (model) {\n model.unbind(CHANGE, that._modelChangeHandler);\n }\n },\n closeCell: function (isCancel) {\n var that = this, cell = that._editContainer, column, tr, model;\n if (!cell) {\n return;\n }\n model = that._modelForContainer(cell);\n if (isCancel && that.trigger('cancel', {\n container: cell,\n model: model\n })) {\n return;\n }\n that.trigger(CELLCLOSE, {\n type: isCancel ? 'cancel' : 'save',\n model: model,\n container: cell\n });\n cell.removeClass('k-edit-cell');\n column = leafColumns(that.columns)[that.cellIndex(cell)];\n tr = cell.parent().removeClass('k-grid-edit-row');\n if (that.lockedContent) {\n that._relatedRow(tr).removeClass('k-grid-edit-row');\n }\n that._destroyEditable();\n that._displayCell(cell, column, model);\n if (that._shouldClearEditableState) {\n that._clearEditableState();\n }\n that.trigger('itemChange', {\n item: tr,\n data: model,\n ns: ui\n });\n if (that.lockedContent) {\n adjustRowHeight(tr.css('height', '')[0], that._relatedRow(tr).css('height', '')[0]);\n }\n },\n _displayCell: function (cell, column, dataItem) {\n var that = this, state = {\n storage: {},\n count: 0\n }, settings = extend({}, kendo.Template, that.options.templateSettings), tmpl = kendo.template(that._cellTmpl(column, state), settings);\n if (state.count > 0) {\n tmpl = proxy(tmpl, state.storage);\n }\n cell.empty().html(tmpl(dataItem));\n that.angular('compile', function () {\n return {\n elements: cell,\n data: [{ dataItem: dataItem }]\n };\n });\n },\n removeRow: function (row) {\n if (!this._confirmation(row)) {\n return;\n }\n this._removeRow(row);\n },\n _removeRow: function (row) {\n var that = this, model, modelId, key, schema, mode = that._editMode();\n if (mode !== 'incell') {\n that.cancelRow();\n }\n row = $(row);\n if (that.lockedContent) {\n row = row.add(that._relatedRow(row));\n }\n row = row.hide();\n model = that._modelForContainer(row);\n if (model && !that.trigger(REMOVE, {\n row: row,\n model: model\n })) {\n schema = that.dataSource.options.schema;\n if (that._selectedIds && schema && schema.model) {\n modelId = isFunction(that.dataSource.options.schema.model) ? that.dataSource.options.schema.model.fn.idField : that.dataSource.options.schema.model.id;\n key = model[modelId];\n delete that._selectedIds[key];\n }\n that.dataSource.remove(model);\n if (mode === 'inline' || mode === 'popup') {\n that.dataSource.sync();\n }\n } else if (mode === 'incell') {\n that._destroyEditable();\n }\n },\n _editMode: function () {\n var mode = 'incell', editable = this.options.editable;\n if (editable !== true) {\n if (typeof editable == 'string') {\n mode = editable;\n } else {\n mode = editable.mode || mode;\n }\n }\n return mode;\n },\n editRow: function (row) {\n var model;\n var that = this;\n if (row instanceof ObservableObject) {\n model = row;\n } else {\n row = $(row);\n model = that._modelForContainer(row);\n }\n var mode = that._editMode();\n var container;\n that.cancelRow();\n if (model) {\n row = that.tbody.children('[' + kendo.attr('uid') + '=' + model.uid + ']');\n that._attachModelChange(model);\n if (mode === 'popup') {\n that._createPopupEditor(model);\n } else if (mode === 'inline') {\n that._createInlineEditor(row, model);\n } else if (mode === 'incell') {\n $(row).children(DATA_CELL).each(function () {\n var cell = $(this);\n var column = leafColumns(that.columns)[that.cellIndex(cell)];\n model = that._modelForContainer(cell);\n if (model && (!model.editable || model.editable(column.field)) && column.field && !column.selectable) {\n that.editCell(cell);\n return false;\n }\n });\n }\n container = that.editView ? that.editView.element : that._editContainer;\n if (container) {\n if (!this._editCancelClickHandler) {\n this._editCancelClickHandler = proxy(this._editCancelClick, this);\n }\n container.on(CLICK + NS, 'a.k-grid-cancel', this._editCancelClickHandler);\n if (!this._editUpdateClickHandler) {\n this._editUpdateClickHandler = proxy(this._editUpdateClick, this);\n }\n container.on(CLICK + NS, 'a.k-grid-update', this._editUpdateClickHandler);\n }\n }\n },\n _editUpdateClick: function (e) {\n e.preventDefault();\n e.stopPropagation();\n this.saveRow();\n },\n _editCancelClick: function (e) {\n var that = this;\n var navigatable = that.options.navigatable;\n var model = that.editable.options.model;\n var container = that.editView ? that.editView.element : that._editContainer;\n e.preventDefault();\n e.stopPropagation();\n if (that.trigger('cancel', {\n container: container,\n model: model\n })) {\n return;\n }\n var currentIndex = that.items().index($(that.current()).parent());\n that.cancelRow();\n if (navigatable) {\n that._setCurrent(that.items().eq(currentIndex).children().filter(NAVCELL).first());\n focusTable(that.table, true);\n }\n },\n _createPopupEditor: function (model) {\n var that = this;\n var html = '<div ' + kendo.attr('uid') + '=\"' + model.uid + '\" class=\"k-popup-edit-form' + (that._isMobile ? ' k-mobile-list' : '') + '\"><' + (that._isMobile ? 'ul' : 'div') + ' class=\"k-edit-form-container\">';\n var column;\n var command;\n var fields = [];\n var idx;\n var length;\n var tmpl;\n var updateText;\n var cancelText;\n var updateIconClass;\n var cancelIconClass;\n var tempCommand;\n var columns = leafColumns(that.columns);\n var attr;\n var editMenuGuid = kendo.guid();\n var editable = that.options.editable;\n var template = editable.template;\n var options = isPlainObject(editable) ? editable.window : {};\n var settings = extend({}, kendo.Template, that.options.templateSettings);\n var state;\n if (that.trigger(BEFOREEDIT, { model: model })) {\n return;\n }\n options = options || {};\n if (template) {\n if (typeof template === STRING) {\n template = kendo.unescape(template);\n }\n html += kendo.template(template, settings)(model);\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (column.command) {\n tempCommand = getCommand(column.command, 'edit');\n if (tempCommand) {\n command = tempCommand;\n }\n }\n }\n } else {\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (column.selectable) {\n continue;\n }\n if (!column.command) {\n if (!that._isMobile) {\n html += '<div class=\"k-edit-label\"><label for=\"' + column.field + '\">' + (column.title || column.field || '') + '</label></div>';\n if (isColumnEditable(column, model)) {\n fields.push({\n field: column.field,\n title: column.title,\n format: column.format,\n editor: column.editor,\n values: column.values\n });\n html += '<div ' + kendo.attr('container-for') + '=\"' + column.field + '\" class=\"k-edit-field\"></div>';\n } else {\n state = {\n storage: {},\n count: 0\n };\n tmpl = kendo.template(that._cellTmpl(column, state), settings);\n if (state.count > 0) {\n tmpl = proxy(tmpl, state.storage);\n }\n html += '<div class=\"k-edit-field\">' + tmpl(model) + '</div>';\n }\n } else {\n html += '<li class=\"k-item\">';\n if (isColumnEditable(column, model)) {\n fields.push({\n field: column.field,\n title: column.title,\n format: column.format,\n editor: column.editor,\n values: column.values\n });\n html += '<label class=\"k-label\"><span class=\"k-item-title\">' + (column.title || column.field || '') + '</span>';\n html += '<div id=\"' + column.field + '_' + editMenuGuid + '\" ' + kendo.attr('container-for') + '=\"' + column.field + '\"></div>';\n } else {\n state = {\n storage: {},\n count: 0\n };\n tmpl = kendo.template(that._cellTmpl(column, state), settings);\n if (state.count > 0) {\n tmpl = proxy(tmpl, state.storage);\n }\n html += '<label class=\"k-label k-no-click\"><span class=\"k-item-title\">' + (column.title || column.field || '') + '</span>';\n html += '<span class=\"k-no-editor\">' + tmpl(model) + '</span>';\n }\n html += '</label></li>';\n }\n } else if (column.command) {\n tempCommand = getCommand(column.command, 'edit');\n if (tempCommand) {\n command = tempCommand;\n }\n }\n }\n }\n if (command) {\n if (isPlainObject(command)) {\n if (isPlainObject(command.text)) {\n updateText = command.text.update;\n cancelText = command.text.cancel;\n }\n if (isPlainObject(command.iconClass)) {\n updateIconClass = command.iconClass.update;\n cancelIconClass = command.iconClass.cancel;\n }\n if (command.attr) {\n attr = command.attr;\n }\n }\n }\n var container;\n if (!that._isMobile) {\n html += '<div class=\"k-edit-buttons k-state-default\">';\n html += that._createButton({\n name: 'update',\n text: updateText,\n attr: attr,\n iconClass: updateIconClass\n }) + that._createButton({\n name: 'canceledit',\n text: cancelText,\n attr: attr,\n iconClass: cancelIconClass\n });\n html += '</div></div></div>';\n container = that._editContainer = $(html).appendTo(that.wrapper).eq(0).kendoWindow(extend({\n modal: true,\n resizable: false,\n draggable: true,\n title: that.options.messages.commands.edit || 'Edit',\n visible: false,\n close: function (e) {\n if (e.userTriggered) {\n e.sender.element.focus();\n if (that.trigger('cancel', {\n container: container,\n model: model\n })) {\n e.preventDefault();\n return;\n }\n var currentIndex = that.items().index($(that.current()).parent());\n that._editableIsClosing = true;\n that.cancelRow();\n if (that.options.navigatable) {\n that._setCurrent(that.items().eq(currentIndex).children().filter(NAVCELL).first());\n focusTable(that.table, true);\n }\n }\n }\n }, options));\n } else {\n html += '</ul></div>';\n that.editView = that.pane.append('<div data-' + kendo.ns + 'role=\"view\" class=\"k-grid-edit-form\">' + '<div data-' + kendo.ns + 'role=\"header\" class=\"k-header\">' + '<a href=\"\\\\#\" class=\"k-header-cancel k-link k-grid-cancel\" title=\"#=messages.cancel#\" ' + 'aria-label=\"#=messages.cancel#\"><span class=\"k-icon k-i-arrow-chevron-left\"></span></a>' + (that.options.messages.commands.edit || 'Edit') + '<a href=\"\\\\#\" class=\"k-header-done k-link k-grid-update\" title=\"#=messages.done#\" ' + 'aria-label=\"#=messages.done#\"><span class=\"k-icon k-i-check\"></span></a>' + '</div>' + '<div data-' + kendo.ns + 'role=\"content\" class=\"' + classNames.content + '\">' + html + '</div>' + '</div>');\n container = that._editContainer = that.editView.element.find('.k-popup-edit-form');\n }\n that.editable = that._editContainer.kendoEditable({\n fields: fields,\n model: model,\n clearContainer: false,\n target: that\n }).data('kendoEditable');\n that._openPopUpEditor();\n that.trigger(EDIT, {\n container: container,\n model: model\n });\n },\n _openPopUpEditor: function () {\n var that = this;\n var windowEditor = that._editContainer ? that._editContainer.data('kendoWindow') : null;\n var windowOptions = (that.options.editable || {}).window || {};\n if (!this._isMobile) {\n if (windowEditor) {\n if (!windowOptions.position) {\n windowEditor.center();\n }\n windowEditor.open();\n }\n } else {\n this.pane.navigate(this.editView, this._editAnimation);\n }\n },\n _createInlineEditor: function (row, model) {\n var that = this;\n var column;\n var cell;\n var command;\n var fields = [];\n if (that.trigger(BEFOREEDIT, { model: model })) {\n return;\n }\n if (that.lockedContent) {\n row = row.add(that._relatedRow(row));\n }\n row.children(':not(.k-group-cell,.k-hierarchy-cell)').each(function () {\n cell = $(this);\n column = leafColumns(that.columns)[that.cellIndex(cell)];\n if (!column.command && isColumnEditable(column, model)) {\n fields.push({\n field: column.field,\n title: column.title,\n format: column.format,\n editor: column.editor,\n values: column.values\n });\n cell.attr(kendo.attr('container-for'), column.field);\n cell.empty();\n } else if (column.command) {\n command = getCommand(column.command, 'edit');\n if (command) {\n cell.empty();\n var updateText, cancelText, updateIconClass, cancelIconClass, attr;\n if (isPlainObject(command)) {\n if (isPlainObject(command.text)) {\n updateText = command.text.update;\n cancelText = command.text.cancel;\n }\n if (isPlainObject(command.iconClass)) {\n updateIconClass = command.iconClass.update;\n cancelIconClass = command.iconClass.cancel;\n }\n if (command.attr) {\n attr = command.attr;\n }\n }\n $(that._createButton({\n name: 'update',\n text: updateText,\n attr: attr,\n iconClass: updateIconClass\n }) + that._createButton({\n name: 'canceledit',\n text: cancelText,\n attr: attr,\n iconClass: cancelIconClass\n })).appendTo(cell);\n }\n }\n });\n that._editContainer = row;\n that._editContainer.addClass('k-grid-edit-row');\n if (that._shouldClearEditableState) {\n that._clearEditableState();\n }\n that.editable = new kendo.ui.Editable(that._editContainer, {\n target: that,\n fields: fields,\n model: model,\n skipFocus: that._isVirtualInlineEditable() && that._editableState && that._editableState.field ? true : false,\n clearContainer: false\n });\n if (row.length > 1) {\n adjustRowHeight(row[0], row[1]);\n that._applyLockedContainersWidth();\n }\n that.trigger(EDIT, {\n container: row,\n model: model\n });\n },\n cancelRow: function (notify) {\n var that = this, container = that._editContainer, model;\n if (container) {\n model = that._modelForContainer(container);\n if (!model || notify && that.trigger('cancel', {\n container: container,\n model: model\n })) {\n return;\n }\n that._destroyEditable();\n that.dataSource.cancelChanges(model);\n that._clearEditableState();\n if (that._editMode() !== 'popup') {\n that._displayRow(container);\n } else {\n that._displayRow(that.tbody.find('[' + kendo.attr('uid') + '=' + model.uid + ']'));\n }\n }\n },\n saveRow: function () {\n var that = this;\n var container = this._editContainer;\n var model = this._modelForContainer(container);\n var deferred = $.Deferred();\n var valid;\n if (!container || !this.editable) {\n return deferred.resolve().promise();\n }\n valid = that.editable && that.editable.end();\n if (!valid || this.trigger(SAVE, {\n container: container,\n model: model\n })) {\n if (!valid) {\n that._scrollVirtualWrapper();\n }\n return deferred.reject().promise();\n }\n that._clearEditableState();\n return this.dataSource.sync();\n },\n _displayRow: function (row) {\n var that = this, model = that._modelForContainer(row), related, newRow, nextRow, isSelected = row.hasClass('k-state-selected'), isAlt = row.hasClass('k-alt');\n if (model) {\n if (that.lockedContent) {\n related = $((isAlt ? that.lockedAltRowTemplate : that.lockedRowTemplate)(model));\n that._relatedRow(row.last()).replaceWith(related);\n }\n that.angular('cleanup', function () {\n return { elements: row.get() };\n });\n newRow = $((isAlt ? that.altRowTemplate : that.rowTemplate)(model));\n if (!row.is(':visible')) {\n newRow.hide();\n }\n row.replaceWith(newRow);\n that.trigger('itemChange', {\n item: newRow,\n data: model,\n ns: ui\n });\n if (related && related.length) {\n that.trigger('itemChange', {\n item: related,\n data: model,\n ns: ui\n });\n }\n var angularElements = newRow;\n var angularData = [{ dataItem: model }];\n if (related && related.length) {\n angularElements = newRow.add(related);\n angularData.push({ dataItem: model });\n }\n that.angular('compile', function () {\n return {\n elements: angularElements.get(),\n data: angularData\n };\n });\n if (isSelected && (that.options.selectable || that._checkBoxSelection)) {\n that.select(newRow.add(related));\n }\n if (related) {\n adjustRowHeight(newRow[0], related[0]);\n }\n nextRow = newRow.next();\n if (nextRow.hasClass('k-detail-row') && nextRow.is(':visible')) {\n newRow.find('.k-hierarchy-cell .k-icon').removeClass('k-i-expand').addClass('k-i-collapse');\n }\n }\n },\n _showMessage: function (messages, row) {\n var that = this;\n if (!that._isMobile) {\n return window.confirm(messages.title);\n }\n var confirmDialog = that._confirmDialog = new kendo.ui.Confirm($('<div />').appendTo(document.body), {\n modal: { preventScroll: true },\n closable: false,\n title: false,\n content: messages.title,\n messages: {\n okText: messages.confirmDelete,\n cancel: messages.cancelDelete\n },\n open: function () {\n that.content.data(OVERFLOW, that.content.css(OVERFLOW));\n that.content.css(OVERFLOW, HIDDEN);\n },\n close: function () {\n that.content.css(OVERFLOW, that.content.data(OVERFLOW));\n }\n });\n confirmDialog.result.done(function () {\n that._removeRow(row);\n }).fail(function () {\n var confirmDialog = that._confirmDialog;\n if (confirmDialog) {\n confirmDialog.close();\n confirmDialog.destroy();\n }\n });\n return false;\n },\n _confirmation: function (row) {\n var that = this, editable = that.options.editable, confirmation = editable === true || typeof editable === STRING ? that.options.messages.editable.confirmation : editable.confirmation;\n if (isPlainObject(editable) && typeof editable.mode === STRING && typeof confirmation !== FUNCTION && typeof confirmation !== STRING && confirmation !== false) {\n confirmation = that.options.messages.editable.confirmation;\n }\n if (confirmation !== false && confirmation != null) {\n if (typeof confirmation === FUNCTION) {\n confirmation = confirmation(that._modelForContainer(row));\n }\n return that._showMessage({\n confirmDelete: editable.confirmDelete || that.options.messages.editable.confirmDelete,\n cancelDelete: editable.cancelDelete || that.options.messages.editable.cancelDelete,\n title: confirmation === true ? that.options.messages.editable.confirmation : confirmation\n }, row);\n }\n return true;\n },\n cancelChanges: function () {\n var that = this;\n that.dataSource.cancelChanges();\n if (that._isVirtualEditable()) {\n that._virtualPageToTop(function () {\n that.virtualScrollable.scrollToTop();\n });\n }\n },\n saveChanges: function () {\n var that = this;\n var valid = that.editable && that.editable.end();\n if ((valid || !that.editable) && !that.trigger(SAVECHANGES)) {\n that.dataSource.sync();\n } else if (!valid) {\n that._scrollVirtualWrapper();\n }\n },\n addRow: function () {\n var that = this, index, dataSource = that.dataSource, mode = that._editMode(), createAt = that.options.editable.createAt || '', pageSize = dataSource.pageSize(), view = dataSource.view() || [];\n var createAtBottom = createAt.toLowerCase() === BOTTOM;\n var model;\n var virtualEditable = that._isVirtualEditable();\n if (that.editable && that.editable.end() || !that.editable) {\n if (mode != 'incell') {\n that.cancelRow();\n }\n index = dataSource.indexOf(view[0]);\n if (createAtBottom) {\n index += view.length;\n if (pageSize && !dataSource.options.serverPaging && pageSize <= view.length) {\n index -= 1;\n }\n }\n if (index < 0) {\n if (dataSource.page() > dataSource.totalPages()) {\n index = (dataSource.page() - 1) * pageSize;\n } else {\n index = 0;\n }\n }\n if (that.options.navigatable && mode == 'incell') {\n that._removeCurrent();\n }\n if (virtualEditable) {\n that._virtualAddRow();\n } else {\n model = dataSource.insert(index, {});\n that._editModel(model);\n }\n } else {\n that._scrollVirtualWrapper();\n }\n },\n _editModel: function (model) {\n var that = this;\n var createAt = that.options.editable.createAt || '';\n var mode = that._editMode();\n if (model) {\n var id = model.uid, table = that.lockedContent ? that.lockedTable : that.table, row = table.find('tr[' + kendo.attr('uid') + '=' + id + ']'), cell = row.children('td:not(.k-group-cell,.k-hierarchy-cell)').eq(that._firstEditableColumnIndex(row));\n if (mode === 'inline' && row.length) {\n that.editRow(row);\n } else if (mode === 'popup') {\n that.editRow(model);\n } else if (cell.length) {\n that.editCell(cell);\n }\n if (createAt.toLowerCase() == 'bottom' && that.lockedContent) {\n that.lockedContent[0].scrollTop = that.content[0].scrollTop = that.table[0].offsetHeight;\n }\n }\n },\n _virtualAddRow: function () {\n var that = this;\n var createAtBottom = (that.options.editable.createAt || '').toLowerCase() === BOTTOM;\n that._clearEditableState();\n if (createAtBottom) {\n that._virtualAddRowAtBottom();\n } else {\n that._virtualAddRowAtTop();\n }\n },\n _virtualAddRowAtTop: function () {\n var that = this;\n var dataSource = that.dataSource;\n var virtualScrollable = that.virtualScrollable;\n var model;\n if (dataSource.page() === 1) {\n model = dataSource.insert(0, {});\n that._editModel(model);\n virtualScrollable.scrollToTop();\n } else {\n that._virtualPageToTop(function () {\n model = dataSource.insert(0, {});\n that._editModel(model);\n virtualScrollable.scrollToTop();\n });\n }\n },\n _virtualAddRowAtBottom: function () {\n var that = this;\n var dataSource = that.dataSource;\n var virtualScrollable = that.virtualScrollable;\n var index = dataSource.total();\n var model;\n if (dataSource.at(index - 1) instanceof ObservableObject) {\n model = dataSource.insert(index, {});\n that._virtualPageToBottom(function () {\n that._editModel(model);\n virtualScrollable.scrollToBottom();\n });\n } else {\n that._virtualPageToBottom(function () {\n model = dataSource.insert(index, {});\n that._editModel(model);\n virtualScrollable.scrollToBottom();\n });\n }\n },\n _virtualPageToTop: function (callback) {\n var that = this;\n that._virtualPage(0, that.dataSource.take(), function () {\n callback();\n });\n },\n _virtualPageToBottom: function (callback) {\n var that = this;\n var dataSource = that.dataSource;\n var take = dataSource.take();\n var total = dataSource.total();\n var skip = total > take ? total - take : 0;\n that._virtualPage(skip, take, function () {\n callback();\n });\n },\n _virtualPage: function (skip, take, callback) {\n var that = this;\n if (that._isVirtualEditable()) {\n that.virtualScrollable._preventScroll = true;\n that.virtualScrollable._page(skip, take, callback);\n }\n },\n _firstEditableColumnIndex: function (container) {\n var that = this, column, columns = leafColumns(that.columns), idx, length, model = that._modelForContainer(container);\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (model && (!model.editable || model.editable(column.field)) && !column.command && column.field && column.hidden !== true) {\n return idx;\n }\n }\n return -1;\n },\n _toolbar: function () {\n var that = this, wrapper = that.wrapper, toolbar = that.options.toolbar, editable = that.options.editable, container;\n if (toolbar) {\n container = that.wrapper.find('.k-grid-toolbar');\n if (!container.length) {\n if (!isFunction(toolbar)) {\n toolbar = typeof toolbar === STRING ? toolbar : that._toolbarTmpl(toolbar).replace(templateHashRegExp, '\\\\#');\n toolbar = proxy(kendo.template(toolbar), that);\n }\n container = $('<div class=\"k-header k-grid-toolbar\" />').html(toolbar({})).prependTo(wrapper);\n that.angular('compile', function () {\n return { elements: container.get() };\n });\n }\n if (editable && editable.create !== false) {\n container.on(CLICK + NS, '.k-grid-add', function (e) {\n e.preventDefault();\n that.addRow();\n }).on(CLICK + NS, '.k-grid-cancel-changes', function (e) {\n e.preventDefault();\n that.cancelChanges();\n }).on(CLICK + NS, '.k-grid-save-changes', function (e) {\n e.preventDefault();\n that.saveChanges();\n });\n }\n container.on(CLICK + NS, '.k-grid-excel', function (e) {\n e.preventDefault();\n that.saveAsExcel();\n });\n container.on(CLICK + NS, '.k-grid-pdf', function (e) {\n e.preventDefault();\n that.saveAsPDF();\n });\n container.on(INPUT + NS, '.k-grid-search input', function (e) {\n var input = e.currentTarget;\n clearTimeout(that._searchTimeOut);\n that._searchTimeOut = setTimeout(function () {\n that._searchTimeOut = null;\n var options = that.options;\n var searchFields = options.search ? options.search.fields : null;\n var expression = {\n filters: [],\n logic: 'or'\n };\n var value = input.value;\n if (!searchFields) {\n searchFields = getColumnsFields(options.columns);\n }\n if (that.dataSource.options.endless) {\n that.dataSource.options.endless = null;\n that._endlessPageSize = that.dataSource.options.pageSize;\n }\n if (value) {\n for (var i = 0; i < searchFields.length; i++) {\n expression.filters.push({\n field: searchFields[i],\n operator: 'contains',\n value: value\n });\n }\n } else {\n expression = {};\n }\n that.dataSource.filter(expression);\n }, 300);\n });\n }\n },\n _toolbarTmpl: function (commands) {\n var that = this, idx, length, html = '', command;\n if (isArray(commands)) {\n for (idx = 0, length = commands.length; idx < length; idx++) {\n command = typeof commands[idx] === 'string' ? commands[idx].toLowerCase() : (commands[idx].name || '').toLowerCase();\n if (command === 'search') {\n html += '<span class=\\'k-textbox k-grid-search k-display-flex\\'>';\n html += '<input autocomplete=\\'off\\' placeholder=\\'' + that.options.messages.search + '\\' title=\\'' + that.options.messages.search + '\\' class=\\'k-input\\' />';\n html += '<span class=\\'k-input-icon\\'><span class=\\'k-icon k-i-search\\'></span></span>';\n html += '</span>';\n } else {\n html += that._createButton(commands[idx]);\n }\n }\n }\n return html;\n },\n _createButton: function (command) {\n var template = command.template || COMMANDBUTTONTMPL, commandName = typeof command === STRING ? command : command.name || command.text, className = defaultCommands[commandName] ? defaultCommands[commandName].className : 'k-grid-' + (commandName || '').replace(/\\s/g, ''), options = {\n className: className,\n text: commandName,\n attr: '',\n iconClass: ''\n }, messages = this.options.messages.commands, attributeClassMatch;\n if (!commandName && !(isPlainObject(command) && command.template)) {\n throw new Error('Custom commands should have name specified');\n }\n if (isPlainObject(command)) {\n command = extend(true, {}, command);\n if (command.className && inArray(options.className, command.className.split(' ')) < 0) {\n command.className += ' ' + options.className;\n } else if (command.className === undefined) {\n command.className = options.className;\n }\n if (commandName === 'edit') {\n command = extend(true, {}, command);\n command.text = isPlainObject(command.text) ? command.text.edit : command.text;\n command.iconClass = isPlainObject(command.iconClass) ? command.iconClass.edit : command.iconClass;\n }\n if (command.attr) {\n if (isPlainObject(command.attr)) {\n command.attr = stringifyAttributes(command.attr);\n }\n if (typeof command.attr === STRING) {\n attributeClassMatch = command.attr.match(/class=\"(.+?)\"/);\n if (attributeClassMatch && inArray(attributeClassMatch[1], command.className.split(' ')) < 0) {\n command.className += ' ' + attributeClassMatch[1];\n }\n }\n }\n options = extend(true, options, defaultCommands[commandName], { text: messages[commandName] }, command);\n } else {\n options = extend(true, options, defaultCommands[commandName], { text: messages[commandName] });\n }\n return kendo.template(template)(options);\n },\n _hasFooters: function () {\n return !!this.footerTemplate || !!this.groupFooterTemplate || this.footer && this.footer.length > 0 || this.wrapper.find('.k-grid-footer').length > 0;\n },\n _groupable: function () {\n var that = this;\n if (that._groupableClickHandler) {\n that.table.add(that.lockedTable).off(CLICK + NS, that._groupableClickHandler);\n } else {\n that._groupableClickHandler = function (e) {\n var element = $(this), groupRow = element.closest('tr');\n var group = that._groupRows ? that._groupRows[that.wrapper.find('.k-grouping-row').index(groupRow)] : {};\n if (element.hasClass('k-i-collapse')) {\n if (!that.trigger('groupCollapse', {\n group: group,\n element: groupRow\n })) {\n that.collapseGroup(groupRow);\n }\n } else {\n if (!that.trigger('groupExpand', {\n group: group,\n element: groupRow\n })) {\n that.expandGroup(groupRow);\n }\n }\n e.preventDefault();\n e.stopPropagation();\n };\n }\n if (that._isLocked()) {\n that.lockedTable.on(CLICK + NS, '.k-grouping-row .k-i-expand, .k-grouping-row .k-i-collapse', that._groupableClickHandler);\n } else {\n that.table.on(CLICK + NS, '.k-grouping-row .k-i-expand, .k-grouping-row .k-i-collapse', that._groupableClickHandler);\n }\n that._attachGroupable();\n },\n _attachGroupable: function () {\n var that = this, wrapper = that.wrapper, groupable = that.options.groupable, draggables = HEADERCELLS + '[' + kendo.attr('field') + ']', filter = that.content ? '.k-grid-header:first ' + draggables : 'table:first>.k-grid-header ' + draggables;\n if (groupable && groupable.enabled !== false) {\n if (!wrapper.has('div.k-grouping-header')[0]) {\n $('<div> </div>').addClass('k-grouping-header').prependTo(wrapper);\n }\n if (that.groupable) {\n that._destroyGroupable();\n }\n that.groupable = new ui.Groupable(wrapper, extend({}, groupable, {\n draggable: that._draggableInstance,\n groupContainer: '>div.k-grouping-header',\n dataSource: that.dataSource,\n draggableElements: filter,\n filter: filter,\n allowDrag: that.options.reorderable,\n change: function (e) {\n if (that.trigger('group', { groups: e.groups })) {\n e.preventDefault();\n } else {\n that._clearEditableState();\n if (that.dataSource.options.endless) {\n that.dataSource.options.endless = null;\n that._endlessPageSize = that.dataSource.options.pageSize;\n that.dataSource._skip = 0;\n that.dataSource._pageSize = that.dataSource._take = that._endlessPageSize;\n that.dataSource._page = 1;\n }\n }\n }\n }));\n that._addGroupableOptionsToHeader();\n }\n },\n _addGroupableOptionsToHeader: function () {\n var that = this;\n var columns = flatColumns(that.columns);\n var columnFieldMap = {};\n var field = '';\n var headerCells = that._headerCells();\n var cellFieldAttr = '';\n var headerCell;\n var columnOptions;\n var i;\n for (i = 0; i < columns.length; i++) {\n field = columns[i].field;\n columnFieldMap[columns[i].field] = columns[i];\n }\n for (i = 0; i < headerCells.length; i++) {\n headerCell = headerCells.eq(i);\n cellFieldAttr = headerCell.attr(kendo.attr(FIELD));\n columnOptions = columnFieldMap[cellFieldAttr];\n if (columnOptions && columnOptions.groupable && columnOptions.groupable.sort) {\n headerCell.data(GROUP_SORT, columnOptions.groupable.sort);\n }\n }\n },\n _destroyGroupable: function () {\n var that = this;\n if (that.groupable && that.groupable.element) {\n that.groupable.element.kendoGroupable('destroy');\n }\n that.groupable = null;\n that._removeGroupableOptionsFromHeader();\n },\n _removeGroupableOptionsFromHeader: function () {\n var that = this;\n var headerCells = that._headerCells();\n for (var i = 0; i < headerCells.length; i++) {\n headerCells.eq(i).removeData(GROUP_SORT);\n }\n },\n _continuousItems: function (filter, cell) {\n if (!this.lockedContent) {\n return;\n }\n var that = this;\n var elements = that.table.add(that.lockedTable);\n var lockedItems = $(filter, elements[0]);\n var nonLockedItems = $(filter, elements[1]);\n var columns = cell ? lockedColumns(that.columns).length : 1;\n var nonLockedColumns = cell ? that.columns.length - columns : 1;\n var result = [];\n for (var idx = 0; idx < lockedItems.length; idx += columns) {\n push.apply(result, lockedItems.slice(idx, idx + columns));\n push.apply(result, nonLockedItems.splice(0, nonLockedColumns));\n }\n return result;\n },\n _selectable: function () {\n var that = this, multi, cell, notString = [], isLocked = that._isLocked(), selectable = that.options.selectable;\n if (selectable) {\n if (that.selectable) {\n that.selectable.destroy();\n }\n that._selectedIds = {};\n selectable = kendo.ui.Selectable.parseOptions(selectable);\n multi = selectable.multiple;\n cell = selectable.cell;\n if (that._hasDetails()) {\n notString[notString.length] = '.k-detail-row';\n }\n if (that.options.groupable || that._hasFooters() || that._groups()) {\n notString[notString.length] = '.k-grouping-row,.k-group-footer';\n }\n notString = notString.join(',');\n if (notString !== '') {\n notString = ':not(' + notString + ')';\n }\n var elements = that.table;\n if (isLocked) {\n elements = elements.add(that.lockedTable);\n }\n var filter = '>' + (cell ? SELECTION_CELL_SELECTOR : 'tbody>tr' + notString);\n that.selectable = new kendo.ui.Selectable(elements, {\n filter: filter,\n aria: true,\n multiple: multi,\n change: function () {\n var selectedValues;\n if (!cell) {\n that._persistSelectedRows();\n }\n if (that._checkBoxSelection) {\n selectedValues = that.selectable.value();\n that._uncheckCheckBoxes();\n that._checkRows(selectedValues);\n if (selectedValues.length && selectedValues.length === that.items().length) {\n that._toggleHeaderCheckState(true);\n } else {\n that._toggleHeaderCheckState(false);\n }\n }\n that.trigger(CHANGE);\n },\n useAllItems: isLocked && multi && cell,\n relatedTarget: function (items) {\n if (cell || !isLocked) {\n return;\n }\n var related;\n var result = $();\n for (var idx = 0, length = items.length; idx < length; idx++) {\n related = that._relatedRow(items[idx]);\n if (inArray(related[0], items) < 0) {\n result = result.add(related);\n }\n }\n return result;\n },\n continuousItems: function () {\n return that._continuousItems(filter, cell);\n }\n });\n if (that.options.navigatable) {\n elements.on('keydown' + NS, function (e) {\n var current = that.current();\n var target = e.target;\n if (e.keyCode === keys.SPACEBAR && !e.shiftKey && $.inArray(target, elements) > -1 && !current.is('.k-edit-cell,.k-header') && current.parent().is(':not(.k-grouping-row,.k-detail-row,.k-group-footer)')) {\n e.preventDefault();\n e.stopPropagation();\n current = cell ? current : current.parent();\n if (isLocked && !cell) {\n current = current.add(that._relatedRow(current));\n }\n if (multi) {\n if (!e.ctrlKey) {\n that.selectable.clear();\n } else {\n if (current.hasClass(SELECTED)) {\n that._deselectCheckRows(current);\n return;\n }\n }\n } else {\n that.selectable.clear();\n }\n if (!cell) {\n that.selectable._lastActive = current;\n }\n that.selectable.value(current);\n } else if (!cell && ($(target).is('td') || $(target).is('table') && inArray(target, this._navigatableTables)) && (e.shiftKey && e.keyCode == keys.LEFT || e.shiftKey && e.keyCode == keys.RIGHT || e.shiftKey && e.keyCode == keys.UP || e.shiftKey && e.keyCode == keys.DOWN || e.keyCode === keys.SPACEBAR && e.shiftKey)) {\n e.preventDefault();\n e.stopPropagation();\n current = current.parent();\n if (isLocked) {\n current = current.add(that._relatedRow(current));\n }\n if (multi) {\n if (!that.selectable._lastActive) {\n that.selectable._lastActive = current;\n }\n that.selectable.selectRange(that.selectable._firstSelectee(), current);\n } else {\n that.selectable.clear();\n that.selectable.value(current);\n }\n }\n });\n }\n }\n },\n _clipboard: function () {\n var options = this.options;\n var selectable = options.selectable;\n if (selectable && options.allowCopy) {\n var grid = this;\n if (!options.navigatable) {\n grid.table.add(grid.lockedTable).attr('tabindex', 0).on('mousedown' + NS + ' keydown' + NS, '.k-detail-cell', function (e) {\n if (e.target !== e.currentTarget) {\n e.stopImmediatePropagation();\n }\n }).on('mousedown' + NS, NAVROW + '>' + NAVCELL, proxy(tableClick, grid));\n }\n grid.copyHandler = proxy(grid.copySelection, grid);\n grid.updateClipBoardState = function () {\n if (grid.areaClipBoard) {\n grid.areaClipBoard.val(grid.getTSV()).focus().select();\n }\n };\n grid.bind('change', grid.updateClipBoardState);\n grid.wrapper.on('keydown', grid.copyHandler);\n grid.clearAreaHandler = proxy(grid.clearArea, grid);\n grid.wrapper.on('keyup', grid.clearAreaHandler);\n }\n },\n copySelection: function (e) {\n if (e instanceof jQuery.Event && !(e.ctrlKey || e.metaKey) || $(e.target).is('input:visible,textarea:visible') || window.getSelection && window.getSelection().toString() || document.selection && document.selection.createRange().text) {\n return;\n }\n if (!this.areaClipBoard) {\n this.areaClipBoard = $('<textarea />').css({\n position: 'fixed',\n top: '50%',\n left: '50%',\n opacity: 0,\n width: 0,\n height: 0\n }).appendTo(this.wrapper);\n }\n this.areaClipBoard.val(this.getTSV()).focus().select();\n },\n getTSV: function () {\n var grid = this;\n var selected = grid.select();\n var delimeter = '\\t';\n var allowCopy = grid.options.allowCopy;\n var onlyVisible = true;\n if ($.isPlainObject(allowCopy) && allowCopy.delimeter) {\n delimeter = allowCopy.delimeter;\n }\n var text = '';\n if (selected.length) {\n if (selected.eq(0).is('tr')) {\n selected = selected.find('td:not(.k-group-cell)');\n }\n if (onlyVisible) {\n selected.filter(':visible');\n }\n var result = [];\n var cellsOffset = this.columns.length;\n var lockedCols = grid._isLocked() && lockedColumns(grid.columns).length;\n var inLockedArea = true;\n $.each(selected, function (idx, cell) {\n cell = $(cell);\n var tr = cell.closest('tr');\n var rowIndex = tr.index();\n var cellIndex = cell.index();\n if (onlyVisible) {\n cellIndex -= cell.prevAll(':hidden').length;\n }\n if (lockedCols && inLockedArea) {\n inLockedArea = $.contains(grid.lockedTable[0], cell[0]);\n }\n if (grid._groups() && inLockedArea) {\n cellIndex -= grid._groups();\n }\n cellIndex = inLockedArea ? cellIndex : cellIndex + lockedCols;\n if (cellsOffset > cellIndex) {\n cellsOffset = cellIndex;\n }\n var cellText = cell.text();\n if (!result[rowIndex]) {\n result[rowIndex] = [];\n }\n result[rowIndex][cellIndex] = cellText;\n });\n var rowsOffset = result.length;\n result = $.each(result, function (idx, val) {\n if (val) {\n result[idx] = val.slice(cellsOffset);\n if (rowsOffset > idx) {\n rowsOffset = idx;\n }\n }\n });\n $.each(result.slice(rowsOffset), function (idx, val) {\n if (val) {\n text += val.join(delimeter) + '\\r\\n';\n } else {\n text += '\\r\\n';\n }\n });\n }\n return text;\n },\n clearArea: function (e) {\n var table;\n if (this.areaClipBoard && e && e.target === this.areaClipBoard[0]) {\n if (this.options.navigatable) {\n table = $(this.current()).closest('table');\n } else {\n table = this.table;\n }\n focusTable(table, true);\n }\n if (this.areaClipBoard) {\n this.areaClipBoard.remove();\n this.areaClipBoard = null;\n }\n },\n _adaptiveColumns: function () {\n var that = this;\n if (that._anyColumnHasMediaQuery()) {\n that._setColumnsMediaVisibility(that.columns);\n that._attachColumnMediaResizeHandler();\n }\n },\n _anyColumnHasMediaQuery: function () {\n return this._columnsWithMediaQuery().length;\n },\n _columnsWithMediaQuery: function () {\n return columnsWithMedia(this.columns);\n },\n _attachColumnMediaResizeHandler: function () {\n var that = this;\n that._detachColumnMediaResizeHandler();\n that._columnMediaResizeHandler = proxy(that._onColumnMediaResize, that);\n $(window).on(RESIZE + NS, that._columnMediaResizeHandler);\n },\n _detachColumnMediaResizeHandler: function () {\n var that = this;\n if (that._columnMediaResizeHandler) {\n $(window).off(RESIZE + NS, that._columnMediaResizeHandler);\n }\n },\n _onColumnMediaResize: function () {\n var that = this;\n that._setColumnsMediaVisibility(that.columns);\n that._setContentMediaWidth();\n },\n _setColumnsMediaVisibility: function (columns) {\n var cols = columns || [];\n for (var i = 0; i < cols.length; i++) {\n this._setColumnMediaVisibility(cols[i]);\n }\n },\n _setColumnMediaVisibility: function (column) {\n var that = this;\n if (isUndefined(column.media)) {\n that._setColumnsMediaVisibility(column.columns);\n } else {\n if (columnMatchesMedia(column)) {\n that._showColumnByMedia(column);\n if (!column.hidden) {\n that._setColumnsMediaVisibility(column.columns);\n }\n } else {\n that._hideColumnByMedia(column);\n }\n }\n },\n _showColumnByMedia: function (column) {\n if (!column.hidden) {\n this.showColumn(column);\n }\n setColumnMatchesMedia(column);\n },\n _hideColumnByMedia: function (column) {\n var initiallyHidden = column.hidden;\n if (!initiallyHidden) {\n column._hideByMedia = true;\n this.hideColumn(column);\n column._hideByMedia = false;\n column.hidden = initiallyHidden;\n }\n setColumnMatchesMedia(column);\n },\n _setContentMediaWidth: function () {\n var that = this;\n var options = that.options;\n var isLocked = that._isLocked();\n var footer;\n if (options.scrollable && options.resizable) {\n if (isLocked && that.lockedFooter) {\n footer = that.lockedFooter.children('table');\n } else if (that.footer) {\n footer = that.footer.find('>.k-grid-footer-wrap>table');\n }\n if (!footer || !footer[0]) {\n footer = $();\n }\n var header = isLocked ? that.wrapper.find('.k-grid-header-locked').find('table') : that.wrapper.find('.k-grid-header').find('table');\n var contentTable = isLocked ? that.lockedTable : that.table;\n var headerColumns = header.find('th');\n var headerColgroup = header.find('colgroup');\n var headerColumnsCount = headerColumns.length;\n var visibleHeaderColumnsCount = headerColumns.filter(isCellVisible).length;\n var hiddenHeaderColumnsCount = headerColumns.length - visibleHeaderColumnsCount;\n var totalHeaderWidth = 0;\n if (header[0].style.width !== '' && parseFloat(header[0].style.width) !== totalHeaderWidth) {\n var currentHeaderWidth = header.css('width');\n for (var i = 0; i < headerColumnsCount; i++) {\n if (isElementVisible(headerColumns[i])) {\n var columnWidth;\n var cellIndex = Math.max(i, i - hiddenHeaderColumnsCount);\n var colgroupChild = headerColgroup.children()[cellIndex];\n var columnStyleWidth = colgroupChild ? colgroupChild.style.width : '';\n if (columnStyleWidth !== '') {\n columnWidth = parseFloat(columnStyleWidth);\n } else {\n header.css('width', 'auto');\n columnWidth = outerWidth(headerColumns.eq(i));\n header.css('width', currentHeaderWidth);\n }\n totalHeaderWidth += columnWidth;\n }\n }\n contentTable.css('width', totalHeaderWidth - 1);\n header.css('width', totalHeaderWidth);\n footer.css('width', totalHeaderWidth);\n }\n }\n },\n _minScreenSupport: function () {\n var any = this.hideMinScreenCols();\n if (any) {\n this.minScreenResizeHandler = proxy(this.hideMinScreenCols, this);\n $(window).on('resize', this.minScreenResizeHandler);\n }\n },\n hideMinScreenCols: function () {\n var cols = this.columns, screenWidth = window.innerWidth > 0 ? window.innerWidth : screen.width;\n return this._iterateMinScreenCols(cols, screenWidth);\n },\n _iterateMinScreenCols: function (cols, screenWidth) {\n var any = false;\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n var minWidth = col.minScreenWidth;\n if (minWidth !== undefined && minWidth !== null) {\n any = true;\n if (minWidth > screenWidth) {\n this.hideColumn(col);\n } else {\n this.showColumn(col);\n }\n }\n if (!col.hidden && col.columns) {\n any = this._iterateMinScreenCols(col.columns, screenWidth) || any;\n }\n }\n return any;\n },\n _relatedRow: function (row) {\n var lockedTable = this.lockedTable;\n row = $(row);\n if (!lockedTable) {\n return row;\n }\n var table = row.closest(this.table.add(this.lockedTable));\n var index = table.find('>tbody>tr').index(row);\n table = table[0] === this.table[0] ? lockedTable : this.table;\n return table.find('>tbody>tr').eq(index);\n },\n _relatedCell: function (cell) {\n var lockedTable = this.lockedTable;\n cell = $(cell);\n if (!lockedTable) {\n return cell;\n }\n var table = cell.closest(this.table.add(this.lockedTable));\n var index = table.find('>tbody>tr>td').index(cell);\n table = table[0] === this.table[0] ? lockedTable : this.table;\n return table.find('>tbody>tr>td').index(index);\n },\n clearSelection: function () {\n var that = this;\n if (that.selectable && !that._checkBoxSelection) {\n that.selectable.clear();\n }\n if (that._checkBoxSelection) {\n that._deselectCheckRows(that.select());\n return;\n }\n if (that.options.persistSelection) {\n that._persistSelectedRows();\n } else {\n that._selectedIds = {};\n }\n that.trigger(CHANGE);\n },\n select: function (items) {\n var that = this, selectable = that.selectable, selectableoptions = kendo.ui.Selectable.parseOptions(this.options.selectable), cell = selectableoptions.cell;\n items = that.table.add(that.lockedTable).find(items);\n if (items.length) {\n if (selectable && !selectable.options.multiple) {\n selectable.clear();\n items = items.first();\n }\n if (that._isLocked()) {\n items = items.add(items.map(function () {\n if (cell) {\n return that._relatedCell(this);\n } else {\n return that._relatedRow(this);\n }\n }));\n }\n if (selectable && !that._checkBoxSelection) {\n selectable.value(items);\n } else {\n that._checkRows(items);\n if (that.select().length === that.items().length) {\n that._toggleHeaderCheckState(true);\n }\n if (!cell) {\n that._persistSelectedRows();\n }\n that.trigger(CHANGE);\n }\n return;\n }\n return selectable ? selectable.value() : that.items().filter('.' + SELECTED);\n },\n _toggleHeaderCheckState: function (checked) {\n var that = this;\n if (checked) {\n that.thead.add(that.lockedHeader).find('tr ' + CHECKBOXINPUT).prop('checked', true).attr('aria-checked', true).attr('aria-label', 'Deselect all rows');\n } else {\n that.thead.add(that.lockedHeader).find('tr ' + CHECKBOXINPUT).prop('checked', false).attr('aria-checked', false).attr('aria-label', 'Select all rows');\n }\n },\n _uncheckCheckBoxes: function () {\n var that = this;\n var tables = that.table.add(that.lockedTable);\n tables.find('tbody ' + CHECKBOXINPUT).attr('aria-checked', false).prop('checked', false).attr('aria-label', 'Select row');\n },\n _deselectCheckRows: function (items) {\n var that = this;\n items = that.table.add(that.lockedTable).find(items);\n if (that._isLocked()) {\n items = items.add(items.map(function () {\n return that._relatedRow(this);\n }));\n }\n items.each(function () {\n $(this).removeClass(SELECTED).find(CHECKBOXINPUT).attr('aria-checked', false).prop('checked', false).attr('aria-label', 'Select row');\n });\n that._toggleHeaderCheckState(false);\n that._persistSelectedRows();\n that.trigger(CHANGE);\n },\n _checkRows: function (items) {\n items.each(function () {\n $(this).addClass(SELECTED).find(CHECKBOXINPUT).prop('checked', true).attr('aria-label', 'Deselect row').attr('aria-checked', true);\n });\n },\n _persistSelectedRows: function () {\n var that = this, key, dataItem, allRows = that.items(), dataSourceOptions = that.dataSource.options, schema = dataSourceOptions.schema, modelId, selectedViewIds = {};\n if (!schema || !schema.model || !that._data) {\n return;\n }\n modelId = isFunction(schema.model) ? schema.model.fn.idField : schema.model.id;\n if (!modelId) {\n return;\n }\n that.select().each(function () {\n dataItem = that.dataItem(this);\n selectedViewIds[dataItem[modelId]] = true;\n });\n for (var i = 0; i < allRows.length; i++) {\n dataItem = that.dataItem(allRows[i]);\n key = dataItem[modelId];\n if (selectedViewIds[key]) {\n that._selectedIds[key] = true;\n } else {\n delete that._selectedIds[key];\n }\n }\n },\n selectedKeyNames: function () {\n var that = this, ids = [];\n for (var property in that._selectedIds) {\n ids.push(property);\n }\n ids.sort();\n return ids;\n },\n _updateCurrentAttr: function (current, next) {\n var headerId = $(current).data('headerId');\n $(current).removeClass(FOCUSED).closest('table').removeAttr('aria-activedescendant');\n if (headerId) {\n headerId = headerId.replace(this._cellId, '');\n $(current).attr('id', headerId);\n } else {\n $(current).removeAttr('id');\n }\n next.data('headerId', next.attr('id')).attr('id', this._cellId).addClass(FOCUSED).closest('table').attr('aria-activedescendant', this._cellId);\n this._current = next;\n },\n _scrollCurrent: function () {\n var current = this._current;\n var scrollable = this.options.scrollable;\n if (!current || !scrollable) {\n return;\n }\n var row = current.parent();\n var tableContainer = row.closest('table').parent();\n var isInLockedContainer = tableContainer.is('.k-grid-content-locked,.k-grid-header-locked');\n var isInContent = tableContainer.is('.k-grid-content-locked,.k-grid-content,.k-virtual-scrollable-wrap');\n var scrollableContainer = $(this.content).find('>.k-virtual-scrollable-wrap').addBack().last()[0];\n if (isInContent) {\n if (scrollable.virtual) {\n var rowIndex = Math.max(inArray(row[0], this._items(row.parent())), 0);\n this._rowVirtualIndex = this.virtualScrollable.itemIndex(rowIndex);\n this.virtualScrollable.scrollIntoView(row);\n } else {\n this._scrollTo(this._relatedRow(row)[0], scrollableContainer);\n }\n }\n if (this.lockedContent) {\n this.lockedContent[0].scrollTop = scrollableContainer.scrollTop;\n }\n if (!isInLockedContainer) {\n this._scrollTo(current[0], scrollableContainer);\n }\n },\n current: function (next) {\n return this._setCurrent(next, true);\n },\n _setCurrent: function (next, preventTrigger, preventScroll) {\n var current = this._current;\n next = $(next);\n if (next.length) {\n if (!current || current[0] !== next[0]) {\n this._updateCurrentAttr(current, next);\n if (!preventScroll) {\n this._scrollCurrent();\n }\n if (!preventTrigger) {\n this.trigger(NAVIGATE, { element: next });\n }\n }\n }\n if (next && next.length) {\n this._lastCellIndex = next.parent().children(DATA_CELL).index(next);\n }\n return this._current;\n },\n _removeCurrent: function () {\n if (this._current) {\n this._current.removeClass(FOCUSED);\n this._current = null;\n }\n },\n _scrollTo: function (element, container) {\n var elementToLowercase = element.tagName.toLowerCase();\n var isHorizontal = elementToLowercase === 'td' || elementToLowercase === 'th';\n var elementOffset = element[isHorizontal ? 'offsetLeft' : 'offsetTop'];\n var elementOffsetDir = element[isHorizontal ? 'offsetWidth' : 'offsetHeight'];\n var containerScroll = container[isHorizontal ? 'scrollLeft' : 'scrollTop'];\n var containerOffsetDir = container[isHorizontal ? 'clientWidth' : 'clientHeight'];\n var bottomDistance = elementOffset + elementOffsetDir;\n var result = 0;\n var ieCorrection = 0;\n var firefoxCorrection = 0;\n if (isRtl && isHorizontal) {\n var table = $(element).closest('table')[0];\n if (browser.msie) {\n ieCorrection = table.offsetLeft;\n } else if (browser.mozilla) {\n firefoxCorrection = table.offsetLeft - kendo.support.scrollbar();\n }\n }\n containerScroll = Math.abs(containerScroll + ieCorrection - firefoxCorrection);\n if (containerScroll > elementOffset) {\n result = elementOffset;\n } else if (bottomDistance > containerScroll + containerOffsetDir) {\n if (elementOffsetDir <= containerOffsetDir) {\n result = bottomDistance - containerOffsetDir;\n } else {\n result = elementOffset;\n }\n } else {\n result = containerScroll;\n }\n result = Math.abs(result + ieCorrection) + firefoxCorrection;\n container[isHorizontal ? 'scrollLeft' : 'scrollTop'] = result;\n },\n _navigatable: function () {\n var that = this;\n if (!that.options.navigatable) {\n return;\n }\n var dataTables = that.table.add(that.lockedTable);\n var headerTables = that.thead.parent().add($('>table', that.lockedHeader));\n var tables = dataTables;\n if (that.options.scrollable) {\n tables = tables.add(headerTables);\n headerTables.attr(TABINDEX, -1);\n }\n this._navigatableTables = tables;\n tables.off('mousedown' + NS + ' focus' + NS + ' focusout' + NS + ' keydown' + NS);\n headerTables.on('keydown' + NS, proxy(that._openHeaderMenu, that)).find('a.k-link').attr('tabIndex', -1);\n dataTables.attr(TABINDEX, math.max(dataTables.attr(TABINDEX) || 0, 0)).on('keydown' + NS, '.k-detail-cell', function (e) {\n if (e.target !== e.currentTarget) {\n e.stopImmediatePropagation();\n }\n });\n tables.on(kendo.support.touch ? 'touchstart' + NS : 'mousedown' + NS, NAVROW + '>' + NAVCELL, proxy(tableClick, that)).on('focus' + NS, proxy(that._tableFocus, that)).on('focusout' + NS, proxy(that._tableBlur, that)).on('keydown' + NS, proxy(that._tableKeyDown, that));\n },\n _openHeaderMenu: function (e) {\n if (e.altKey && e.keyCode == keys.DOWN) {\n this.current().find('.k-grid-filter, .k-header-column-menu').click();\n e.stopImmediatePropagation();\n }\n },\n _setTabIndex: function (table) {\n this._navigatableTables.attr(TABINDEX, -1);\n table.attr(TABINDEX, 0);\n },\n _tableFocus: function (e) {\n var current = this.current();\n var table = $(e.currentTarget);\n if (current && current.is(':visible')) {\n current.addClass(FOCUSED);\n } else {\n this._setCurrent(table.find(FIRSTNAVITEM));\n }\n this._setTabIndex(table);\n },\n _tableBlur: function () {\n var current = this.current();\n if (current) {\n current.removeClass(FOCUSED);\n }\n },\n _tableKeyDown: function (e) {\n var current = this.current();\n var requestInProgress = this.virtualScrollable && this.virtualScrollable.fetching();\n var target = $(e.target);\n var canHandle = !e.isDefaultPrevented() && !target.is(':button,a,:input,a>.k-icon');\n if (requestInProgress) {\n e.preventDefault();\n return;\n }\n current = current ? current : $(this.lockedTable).add(this.options.scrollable ? this.table : this.tbody).find(FIRSTNAVITEM);\n if (!current.length) {\n return;\n }\n var handled = false;\n if (canHandle && e.keyCode == keys.UP) {\n handled = this._moveUp(current, e.shiftKey);\n }\n if (canHandle && e.keyCode == keys.DOWN) {\n handled = this._moveDown(current, e.shiftKey);\n }\n if (canHandle && e.keyCode == (isRtl ? keys.LEFT : keys.RIGHT)) {\n handled = this._moveRight(current, e.altKey, e.shiftKey, e.ctrlKey, e.currentTarget);\n }\n if (canHandle && e.keyCode == (isRtl ? keys.RIGHT : keys.LEFT)) {\n handled = this._moveLeft(current, e.altKey, e.shiftKey, e.ctrlKey, e.currentTarget);\n }\n if (canHandle && e.keyCode == keys.PAGEDOWN) {\n handled = this._handlePageDown();\n }\n if (canHandle && e.keyCode == keys.PAGEUP) {\n handled = this._handlePageUp();\n }\n if (canHandle && e.keyCode == keys.HOME) {\n handled = this._handleHome(current, e.ctrlKey);\n }\n if (canHandle && e.keyCode == keys.END) {\n handled = this._handleEnd(current, e.ctrlKey);\n }\n if (canHandle && e.keyCode == keys.SPACEBAR) {\n handled = this._handleSpaceKey(current, e.ctrlKey);\n }\n if (e.keyCode == keys.ENTER || e.keyCode == keys.F2) {\n handled = this._handleEnterKey(current, e.currentTarget, target);\n }\n if (e.keyCode == keys.ESC) {\n handled = this._handleEscKey(current, e.currentTarget);\n }\n if (e.keyCode == keys.TAB) {\n handled = this._handleTabKey(current, e.currentTarget, e.shiftKey);\n }\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n _moveLeft: function (current, altKey, shiftKey, ctrlKey, currentTable) {\n var next, index;\n var row = current.parent();\n var container = row.parent();\n if (altKey) {\n this.collapseRow(row);\n } else if (ctrlKey && current.is('.k-header') && this.options.reorderable) {\n this._moveColumn(current, true);\n } else {\n index = container.find(NAVROW).index(row);\n next = this._prevHorizontalCell(container, current, index);\n if (!next[0]) {\n if (shiftKey) {\n if (this.lockedTable) {\n next = this._relatedRow(row);\n if ($.contains(this.lockedTable[0], row[0])) {\n next = next.prevAll(ITEMROW + ':first');\n }\n next = next.children(DATA_CELL + ':last');\n } else {\n next = this._tabNext(current, currentTable, true);\n }\n } else {\n container = this._horizontalContainer(container);\n next = this._prevHorizontalCell(container, current, index);\n if (next[0] !== current[0]) {\n focusTable(container.parent(), true);\n }\n }\n }\n this._setCurrent(next);\n }\n return true;\n },\n _moveRight: function (current, altKey, shiftKey, ctrlKey, currentTable) {\n var next, index;\n var row = current.parent();\n var container = row.parent();\n if (altKey) {\n this.expandRow(row);\n } else if (ctrlKey && current.is('.k-header') && this.options.reorderable) {\n this._moveColumn(current, false);\n } else {\n index = container.find(NAVROW).index(row);\n next = this._nextHorizontalCell(container, current, index);\n if (!next[0]) {\n if (shiftKey) {\n if (this.lockedTable) {\n next = this._relatedRow(row);\n if ($.contains(this.table[0], row[0])) {\n next = next.nextAll(ITEMROW + ':first');\n }\n next = next.children(DATA_CELL + ':first');\n } else {\n next = this._tabNext(current, currentTable, false);\n }\n } else {\n container = this._horizontalContainer(container, true);\n next = this._nextHorizontalCell(container, current, index);\n if (next[0] !== current[0]) {\n focusTable(container.parent(), true);\n }\n }\n }\n this._setCurrent(next);\n }\n return true;\n },\n _moveUp: function (current, shiftKey) {\n var container = current.parent().parent();\n var next;\n if (shiftKey) {\n next = current.parent();\n next = next.prevAll(ITEMROW + ':first');\n next = current.parent().is(ITEMROW) ? next.children().eq(current.index()) : next.children(DATA_CELL + ':last');\n } else {\n next = this._prevVerticalCell(container, current);\n if (!next[0]) {\n this._lastCellIndex = 0;\n container = this._verticalContainer(container, true);\n next = this._prevVerticalCell(container, current);\n if (next[0]) {\n focusTable(container.parent(), true);\n }\n }\n }\n var tmp = this._lastCellIndex || 0;\n this._setCurrent(next);\n this._lastCellIndex = tmp;\n return true;\n },\n _moveDown: function (current, shiftKey) {\n var container = current.parent().parent();\n var next;\n if (shiftKey) {\n next = current.parent();\n next = next.nextAll(ITEMROW + ':first');\n next = current.parent().is(ITEMROW) ? next.children().eq(current.index()) : next.children(DATA_CELL + ':first');\n } else {\n next = this._nextVerticalCell(container, current);\n if (!next[0]) {\n this._lastCellIndex = 0;\n container = this._verticalContainer(container);\n next = this._nextVerticalCell(container, current);\n if (next[0]) {\n focusTable(container.parent(), true);\n }\n }\n }\n var tmp = this._lastCellIndex || 0;\n this._setCurrent(next);\n this._lastCellIndex = tmp;\n return true;\n },\n _moveColumn: function (current, isLeft) {\n var elements = this.wrapper.data().kendoReorderable.element.find(this._draggableInstance.options.filter + ':visible');\n var columns = visibleColumns(flatColumnsInDomOrder(this.columns));\n var oldIndex = elements.index($(current));\n var offset = isLeft ? -1 : 1;\n var column = columns[oldIndex];\n var newIndex = targetParentContainerIndex(columns, this.columns, oldIndex, oldIndex + offset);\n if (newIndex >= 0) {\n this.reorderColumn(newIndex, column, isLeft);\n }\n },\n _handleHome: function (current, ctrl) {\n var row = current.parent();\n var rowContainer = row.parent();\n var isInLockedTable = this.lockedTable && this.lockedTable.children('tbody')[0] === rowContainer[0];\n var isInBody = rowContainer[0] === this.tbody[0];\n var prev;\n if (ctrl) {\n if (this.lockedTable) {\n prev = this.lockedTable.find(FIRSTITEMROW + '>' + NAVCELL + ':first');\n } else {\n prev = this.table.find(FIRSTITEMROW + '>' + NAVCELL + ':first');\n }\n } else if (isInBody || isInLockedTable) {\n if (isInBody && this.lockedTable) {\n row = this._relatedRow(row);\n }\n prev = row.children(DATA_CELL + ':first');\n }\n if (prev && prev.length) {\n this._setCurrent(prev);\n return true;\n }\n },\n _handleEnd: function (current, ctrl) {\n var row = current.parent();\n var rowContainer = row.parent();\n var isInLockedTable = this.lockedTable && this.lockedTable.children('tbody')[0] === rowContainer[0];\n var isInBody = rowContainer[0] === this.tbody[0];\n var next;\n if (ctrl) {\n next = this.table.find(LASTITEMROW + '>' + NAVCELL + ':last');\n } else if (isInBody || isInLockedTable) {\n if (!isInBody && this.lockedTable) {\n row = this._relatedRow(row);\n }\n next = row.children(DATA_CELL + ':last');\n }\n if (next && next.length) {\n this._setCurrent(next);\n return true;\n }\n },\n _handlePageDown: function () {\n if (!this.options.pageable) {\n return false;\n }\n this.dataSource.page(this.dataSource.page() + 1);\n return true;\n },\n _handlePageUp: function () {\n if (!this.options.pageable) {\n return false;\n }\n this.dataSource.page(this.dataSource.page() - 1);\n return true;\n },\n _handleTabKey: function (current, currentTable, shiftKey) {\n var isInCell = this.options.editable && this._editMode() == 'incell';\n var cell;\n if (!isInCell || current.is('th')) {\n return false;\n }\n cell = $(activeElement()).closest('.k-edit-cell');\n if (cell[0] && cell[0] !== current[0]) {\n current = cell;\n }\n cell = this._tabNext(current, currentTable, shiftKey);\n if (cell.length) {\n this._handleEditing(current, cell, cell.closest('table'));\n return true;\n }\n return false;\n },\n _handleEscKey: function (current, currentTable) {\n var active = activeElement();\n var isInCell = this._editMode() == 'incell';\n if (!isInEdit(current)) {\n if (current.has(active).length) {\n focusTable(currentTable, true);\n return true;\n }\n return false;\n }\n if (isInCell) {\n this.closeCell(true);\n } else {\n var currentIndex = $(current).parent().index();\n if (active) {\n active.blur();\n }\n this.cancelRow(true);\n if (currentIndex >= 0) {\n this._setCurrent(this.items().eq(currentIndex).children(NAVCELL).first());\n }\n }\n if (browser.msie && browser.version < 9) {\n document.body.focus();\n }\n focusTable(currentTable, true);\n return true;\n },\n _toggleCurrent: function (current, editable) {\n var row = current.parent();\n if (row.is('.k-grouping-row')) {\n row.find('.k-icon:first').click();\n return true;\n }\n if (!editable && row.is('.k-master-row')) {\n row.find('.k-icon:first').click();\n return true;\n }\n return false;\n },\n _handleSpaceKey: function (current, ctrlKey) {\n var that = this;\n if (!ctrlKey || !that.groupable || !current.hasClass('k-header')) {\n return;\n }\n var descriptors = that.groupable.descriptors();\n var field = current.attr(kendo.attr('field'));\n var aggregates = that.groupable.aggregates();\n var label = current.attr(kendo.attr('title')) || field;\n if (that.groupable._canDrag(current)) {\n descriptors.push({\n field: field,\n dir: 'asc',\n aggregates: aggregates || []\n });\n label += ' ' + that.options.messages.ungroupHeader;\n } else {\n descriptors = $.grep(descriptors, function (item) {\n return item.field !== field;\n });\n label += ' ' + that.options.messages.groupHeader;\n }\n current.attr('aria-label', label);\n that.dataSource.group(descriptors);\n return true;\n },\n _handleEnterKey: function (current, currentTable, target) {\n var editable = this.options.editable && this.options.editable.update !== false;\n var container = target.closest('[role=gridcell]');\n var link;\n if (!target.is('table') && !$.contains(current[0], target[0])) {\n current = container;\n }\n if (current.is('th')) {\n link = current.find('.k-link');\n if (link.length) {\n link.click();\n } else {\n current.find(CHECKBOXINPUT).focus();\n }\n return true;\n }\n if (this._toggleCurrent(current, editable)) {\n return true;\n }\n var focusable = current.find(':kendoFocusable:first');\n if (focusable[0] && !current.hasClass('k-edit-cell') && current.hasClass('k-state-focused')) {\n focusable.focus();\n return true;\n }\n if (editable && !target.is(':button,.k-button,textarea')) {\n if (!container[0]) {\n container = current;\n }\n this._handleEditing(container, false, currentTable);\n return true;\n }\n return false;\n },\n _nextHorizontalCell: function (table, current, originalIndex) {\n var cells = current.nextAll(DATA_CELL);\n if (!cells.length) {\n var rows = table.find(NAVROW);\n var rowIndex = rows.index(current.parent());\n if (rowIndex == -1) {\n if (current.hasClass('k-header')) {\n var headerRows = [];\n mapColumnToCellRows([lockedColumns(this.columns)[0]], childColumnsCells(rows.eq(0).children(':visible').first()), headerRows, 0, 0);\n if (headerRows[originalIndex]) {\n return headerRows[originalIndex][0];\n }\n return current;\n }\n if (current.parent().hasClass('k-filter-row')) {\n return rows.last().children(DATA_CELL).first();\n }\n return rows.eq(originalIndex).children(DATA_CELL).first();\n }\n }\n return cells.first();\n },\n _prevHorizontalCell: function (table, current, originalIndex) {\n var cells = current.prevAll(DATA_CELL);\n if (!cells.length) {\n var rows = table.find(NAVROW);\n var rowIndex = rows.index(current.parent());\n if (rowIndex == -1) {\n if (current.hasClass('k-header')) {\n var headerRows = [];\n var columns = lockedColumns(this.columns);\n mapColumnToCellRows([columns[columns.length - 1]], childColumnsCells(rows.eq(0).children().last()), headerRows, 0, 0);\n if (headerRows[originalIndex]) {\n return headerRows[originalIndex][0];\n }\n return current;\n }\n if (current.parent().hasClass('k-filter-row')) {\n return rows.last().children(DATA_CELL).last();\n }\n return rows.eq(originalIndex).children(DATA_CELL).last();\n }\n }\n return cells.first();\n },\n _currentDataIndex: function (table, current) {\n var index = current.attr('data-index');\n if (!index) {\n return undefined;\n }\n var lockedColumnsCount = lockedColumns(this.columns).length;\n if (lockedColumnsCount && !table.closest('div').hasClass('k-grid-content-locked')[0]) {\n return index - lockedColumnsCount;\n }\n return index;\n },\n _prevVerticalCell: function (container, current) {\n var cells;\n var row = current.parent();\n var rows = container.children(NAVROW);\n var rowIndex = rows.index(row);\n var index = this._currentDataIndex(container, current);\n if (index || current.hasClass('k-header')) {\n cells = parentColumnsCells(current);\n return cells.eq(cells.length - 2);\n }\n index = Math.max(row.children(DATA_CELL).index(current), this._lastCellIndex || 0);\n if (row.hasClass('k-filter-row')) {\n return leafDataCells(container).filter(isCellVisible).eq(index);\n }\n if (rowIndex == -1) {\n row = container.find('tr.k-filter-row:visible');\n if (!row[0]) {\n if ((this._hasDetails() || current.parent().find('.k-hierarchy-cell').length) && index) {\n index--;\n }\n return leafDataCells(container).filter(isCellVisible).eq(index);\n }\n } else {\n row = rowIndex === 0 ? $() : rows.eq(rowIndex - 1);\n }\n cells = row.children(DATA_CELL);\n if (cells.length > index) {\n return cells.eq(index);\n }\n return cells.eq(0);\n },\n _nextVerticalCell: function (container, current) {\n var cells;\n var row = current.parent();\n var rows = container.children(NAVROW);\n var rowIndex = rows.index(row);\n var index = this._currentDataIndex(container, current);\n if (rowIndex != -1 && index === undefined && current.hasClass('k-header')) {\n return childColumnsCells(current).eq(1);\n }\n index = index ? parseInt(index, 10) : row.children(DATA_CELL).index(current);\n index = Math.max(index, this._lastCellIndex || 0);\n if (rowIndex == -1) {\n row = rows.eq(0);\n if (this._hasDetails() || row.find('.k-hierarchy-cell').length) {\n index++;\n }\n } else {\n row = rows.eq(rowIndex + current[0].rowSpan);\n }\n var tmpIndex = index;\n if (this._currentDataIndex(container, current) !== undefined) {\n var currentRowCells = row.children(':not(.k-group-cell):not(.k-hierarchy-cell)');\n var hiddenColumns = currentRowCells.filter(':hidden');\n for (var idx = 0, length = hiddenColumns.length; idx < length; idx++) {\n if (currentRowCells.index(hiddenColumns[idx]) < index) {\n tmpIndex--;\n }\n }\n }\n index = tmpIndex;\n cells = row.children(DATA_CELL);\n if (cells.length > index) {\n return cells.eq(index);\n }\n return cells.eq(0);\n },\n _verticalContainer: function (container, up) {\n var table = container.parent();\n var length = this._navigatableTables.length;\n var step = Math.floor(length / 2);\n var index = inArray(table[0], this._navigatableTables);\n if (up) {\n step *= -1;\n }\n index += step;\n if (index >= 0 || index < length) {\n table = this._navigatableTables.eq(index);\n }\n return table.find(up ? '>thead' : '>tbody');\n },\n _horizontalContainer: function (container, right) {\n var length = this._navigatableTables.length;\n if (length <= 2) {\n return container;\n }\n var table = container.parent();\n var index = inArray(table[0], this._navigatableTables);\n index += right ? 1 : -1;\n if (right && (index == 2 || index == length)) {\n return container;\n }\n if (!right && (index == 1 || index < 0)) {\n return container;\n }\n return this._navigatableTables.eq(index).find('thead, tbody');\n },\n _tabNext: function (current, currentTable, back) {\n var switchRow = true;\n var next = back ? current.prevAll(DATA_CELL + ':first') : current.nextAll(':visible:first');\n if (!next.length) {\n next = current.parent();\n if (this.lockedTable) {\n switchRow = back && currentTable == this.lockedTable[0] || !back && currentTable == this.table[0];\n next = this._relatedRow(next);\n }\n if (switchRow) {\n next = next[back ? 'prevAll' : 'nextAll']('tr:not(.k-grouping-row):not(.k-detail-row):visible:first');\n }\n next = next.children(DATA_CELL + (back ? ':last' : ':first'));\n }\n return next;\n },\n _handleEditing: function (current, next, table) {\n var that = this, active = $(activeElement()), mode = that._editMode(), isIE = browser.msie, oldIE = isIE && browser.version < 9, editContainer = that._editContainer, focusable, editable = that.options.editable && that.options.editable.update !== false, isEdited;\n table = $(table);\n if (mode == 'incell') {\n isEdited = current.hasClass('k-edit-cell');\n } else {\n isEdited = current.parent().hasClass('k-grid-edit-row');\n }\n if (that.editable) {\n if ($.contains(editContainer[0], active[0])) {\n if (browser.opera || oldIE) {\n active.blur().change().triggerHandler('blur');\n } else {\n active.blur();\n if (isIE) {\n active.blur();\n }\n }\n }\n if (!that.editable) {\n focusTable(table);\n return;\n }\n if (that.editable.end()) {\n if (mode == 'incell') {\n that.closeCell();\n } else {\n that.saveRow();\n isEdited = true;\n }\n } else {\n if (mode == 'incell') {\n that._setCurrent(editContainer);\n } else {\n that._setCurrent(editContainer.children().filter(DATA_CELL).first());\n }\n focusable = editContainer.find(':kendoFocusable:first')[0];\n if (focusable) {\n focusable.focus();\n }\n return;\n }\n }\n if (next) {\n that._setCurrent(next);\n }\n if (oldIE) {\n document.body.focus();\n }\n focusTable(table, true);\n if (!editable) {\n return;\n }\n if (!isEdited && !next || next) {\n if (mode === INCELL) {\n if (!$(that.current()).hasClass(HIERARCHY_CELL_CLASS)) {\n that.editCell(that.current());\n }\n } else {\n that.editRow(that.current().parent());\n }\n }\n },\n _wrapper: function () {\n var that = this, table = that.table, height = that.options.height, wrapper = that.element;\n if (!wrapper.is('div')) {\n wrapper = wrapper.wrap('<div/>').parent();\n }\n that.wrapper = wrapper.addClass('k-grid k-widget k-display-block');\n if (height) {\n that.wrapper.css(HEIGHT, height);\n table.css(HEIGHT, 'auto');\n }\n that._initMobile();\n },\n _initMobile: function () {\n var options = this.options;\n var that = this;\n this._isMobile = options.mobile === true && kendo.support.mobileOS || options.mobile === 'phone' || options.mobile === 'tablet';\n if (this._isMobile) {\n var html = this.wrapper.addClass('k-grid-mobile').wrap('<div data-' + kendo.ns + 'stretch=\"true\" data-' + kendo.ns + 'role=\"view\" ' + 'data-' + kendo.ns + 'init-widgets=\"false\"></div>').parent();\n this.pane = this._createPane(html);\n this.view = this.pane.view();\n if (options.height) {\n this.pane.element.parent().css(HEIGHT, options.height);\n } else {\n this.pane.element.parent().css(HEIGHT, this.wrapper[0].style.height);\n }\n this._editAnimation = 'slide';\n that.wrapper.on('transitionend' + NS, function (e) {\n e.stopPropagation();\n });\n that.wrapper.on('contextmenu' + NS, 'th a', function (e) {\n e.preventDefault();\n return false;\n });\n this.view.bind('showStart', function () {\n if (that._isLocked()) {\n that._updateTablesWidth();\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n that._syncLockedFooterHeight();\n }\n });\n }\n },\n _createPane: function (html) {\n var pane = kendo.Pane.wrap(html, {\n viewEngine: {\n viewOptions: {\n renderOnInit: true,\n wrap: false,\n wrapInSections: true,\n detachOnHide: false,\n detachOnDestroy: false\n }\n }\n });\n return pane;\n },\n _tbody: function () {\n var that = this, table = that.table, tbody;\n tbody = table.find('>tbody');\n if (!tbody.length) {\n tbody = $('<tbody/>').appendTo(table);\n }\n that.tbody = tbody.attr('role', 'rowgroup');\n },\n _scrollable: function () {\n var that = this, header, table, options = that.options, scrollable = options.scrollable, hasVirtualScroll = scrollable !== true && scrollable.virtual && !that.virtualScrollable, scrollbar = !kendo.support.kineticScrollNeeded || hasVirtualScroll ? kendo.support.scrollbar() : 0, headerWrap;\n if (scrollable) {\n header = that.wrapper.children('.k-grid-header');\n if (!header[0]) {\n header = $('<div class=\"k-grid-header\" />').insertBefore(that.table);\n }\n header.css(isRtl ? 'padding-left' : 'padding-right', scrollable.virtual ? scrollbar + 1 : scrollbar);\n table = $('<table role=\"grid\" />');\n if (isIE7) {\n table.attr('cellspacing', 0);\n }\n table.width(that.table[0].style.width);\n table.append(that.thead);\n header.empty().append($('<div class=\"k-grid-header-wrap k-auto-scrollable\" />').append(table));\n that.content = that.table.parent();\n if (that.content.is('.k-virtual-scrollable-wrap, ' + DOT + classNames.scrollContainer)) {\n that.content = that.content.parent();\n }\n if (!that.content.is('.k-grid-content, .k-virtual-scrollable-wrap')) {\n that.content = that.table.wrap('<div class=\"k-grid-content k-auto-scrollable\" />').parent();\n }\n if (hasVirtualScroll) {\n that._createVirtualScrollable();\n }\n headerWrap = header.children('.k-grid-header-wrap');\n that.scrollables = headerWrap.add(that.content);\n var footer = that.wrapper.find('.k-grid-footer');\n if (footer.length) {\n that.scrollables = that.scrollables.add(footer.children('.k-grid-footer-wrap'));\n }\n headerWrap.unbind('scroll' + NS).bind('scroll' + NS, function (e) {\n if (that._scrollLeft !== this.scrollLeft) {\n that.scrollables.not(e.currentTarget).scrollLeft(this.scrollLeft);\n }\n });\n if (scrollable.virtual) {\n that.content.find('>.k-virtual-scrollable-wrap').unbind('scroll' + NS).bind('scroll' + NS, function () {\n that.scrollables.scrollLeft(this.scrollLeft);\n if (that.lockedContent) {\n that.lockedContent[0].scrollTop = this.scrollTop;\n }\n });\n } else {\n var endless = scrollable.endless;\n var originalPageSize = that.dataSource.options.pageSize;\n if (endless) {\n that._endlessPageSize = originalPageSize;\n }\n that.content.unbind('scroll' + NS).bind('scroll' + NS, function (e) {\n that._scrollLeft = this.scrollLeft;\n that.scrollables.not(e.currentTarget).scrollLeft(that._scrollLeft);\n if (that.lockedContent && e.currentTarget == that.content[0]) {\n that.lockedContent[0].scrollTop = this.scrollTop;\n }\n if (endless) {\n if (this.scrollTop + this.clientHeight - this.scrollHeight >= -10 && !that._endlessFetchInProgress && that._endlessPageSize < that.dataSource.total()) {\n that._skipRerenderItemsCount = that._endlessPageSize;\n that._endlessPageSize = that._endlessPageSize + originalPageSize;\n that.dataSource.options.endless = true;\n that._endlessFetchInProgress = true;\n that.dataSource.pageSize(that._endlessPageSize);\n }\n }\n });\n var touchScroller = that.content.data('kendoTouchScroller');\n if (touchScroller) {\n touchScroller.destroy();\n }\n touchScroller = kendo.touchScroller(that.content);\n if (touchScroller && touchScroller.movable) {\n that.touchScroller = touchScroller;\n touchScroller.movable.bind('change', function (e) {\n that.scrollables.scrollLeft(-e.sender.x);\n if (that.lockedContent) {\n that.lockedContent.scrollTop(-e.sender.y);\n }\n });\n that.one(DATABOUND, function (e) {\n e.sender.wrapper.addClass('k-grid-backface');\n });\n }\n }\n }\n },\n _createVirtualScrollable: function () {\n var that = this;\n if (that.virtualScrollable) {\n that.virtualScrollable.destroy();\n }\n that.virtualScrollable = new VirtualScrollable(that.content, {\n dataSource: that.dataSource,\n itemHeight: function () {\n return that._averageRowHeight();\n },\n page: function () {\n that._restoreEditableState();\n },\n scroll: function () {\n that._focusEditable();\n }\n });\n that.virtualScrollable.bind(PAGING, proxy(that._onVirtualPaging, that));\n },\n _onVirtualPaging: function () {\n var that = this;\n that._cacheEditableState();\n if (that._isVirtualIncellEditable()) {\n that._shouldClearEditableState = false;\n that.closeCell();\n that._shouldClearEditableState = true;\n }\n },\n _isVirtualEditable: function () {\n return this._isVirtualIncellEditable() || this._isVirtualInlineEditable() || this._isVirtualPopupEditable();\n },\n _isVirtualInlineEditable: function () {\n return this.virtualScrollable && this._editMode() === INLINE;\n },\n _isVirtualIncellEditable: function () {\n return this.virtualScrollable && this._editMode() === INCELL;\n },\n _isVirtualPopupEditable: function () {\n return this.virtualScrollable && this._editMode() === 'popup';\n },\n _scrollVirtualWrapper: function () {\n var that = this;\n var scrollable = that.virtualScrollable;\n if (that._isVirtualInlineEditable() || that._isVirtualIncellEditable()) {\n if (scrollable._isScrolledToBottom()) {\n scrollable._scrollWrapperToBottom();\n } else if (scrollable._isScrolledToTop()) {\n scrollable._scrollWrapperToTop();\n }\n }\n },\n _scrollVirtualWrapperOnColumnResize: function () {\n var virtualScrollable = this.virtualScrollable;\n if (virtualScrollable) {\n virtualScrollable._scrollWrapperOnColumnResize();\n }\n },\n _restoreEditableState: function () {\n var that = this;\n var editableState = that._editableState || {};\n var editedModel = editableState.model;\n var dataSource = that.dataSource;\n var inlineMode = that._isVirtualInlineEditable();\n var incellMode = that._isVirtualIncellEditable();\n var row;\n var cell;\n if ((inlineMode || incellMode) && editedModel && dataSource._getByUid(editedModel.uid, dataSource.view())) {\n if (inlineMode) {\n that._shouldClearEditableState = false;\n that.editRow(editedModel);\n that._focusEditable();\n } else if (incellMode) {\n row = that.tbody.children(attrEquals(UNIQUE_ID, editedModel.uid));\n cell = $(row).children(attrEquals(FIELD, editableState.field));\n if (cell[0]) {\n that._shouldClearEditableState = false;\n that.editCell(cell);\n that._focusEditable();\n }\n }\n }\n that._shouldClearEditableState = true;\n },\n _focusEditable: function () {\n var that = this;\n var editedField = (that._editableState || {}).field;\n var editContainer = that._editContainer;\n if (editContainer && !contains(editContainer[0], activeElement()) && that._canFocusEditable()) {\n if (that._isVirtualInlineEditable()) {\n editContainer.find(attrEquals(CONTAINER_FOR, editedField)).find(FOCUSABLE).eq(0).focus();\n } else if (that._isVirtualIncellEditable()) {\n editContainer.find(FOCUSABLE).eq(0).focus();\n }\n }\n },\n _canFocusEditable: function () {\n var that = this;\n return (that._isVirtualIncellEditable() || that._isVirtualInlineEditable()) && that.virtualScrollable._isElementVisible(that._editContainer);\n },\n _cacheEditableState: function () {\n var that = this;\n var editContainer = that._editContainer;\n var editedModel = editContainer ? that._modelForContainer(editContainer) : null;\n var inlineMode = that._isVirtualInlineEditable();\n var incellMode = that._isVirtualIncellEditable();\n var active;\n var widget;\n if ((inlineMode || incellMode) && editedModel) {\n that._clearEditableState();\n active = $(activeElement());\n if (editContainer && active[0] && contains(editContainer[0], active[0])) {\n active.change();\n widget = kendo.widgetInstance(active, kendo.ui);\n if (widget && isFunction(widget.value) && active.is(INPUT)) {\n widget.value(active.val());\n widget.trigger(CHANGE);\n }\n }\n if (inlineMode) {\n that._editableState = {\n model: editedModel,\n field: active.closest('[' + kendo.attr(CONTAINER_FOR) + ']').attr(kendo.attr(CONTAINER_FOR))\n };\n } else if (incellMode) {\n that._editableState = {\n model: editedModel,\n field: editContainer.attr(kendo.attr(FIELD))\n };\n }\n }\n },\n _clearEditableState: function () {\n var that = this;\n if (that.virtualScrollable) {\n that._editableState = null;\n }\n },\n _destroyVirtualScrollable: function () {\n var that = this;\n that._clearEditableState();\n if (that.virtualScrollable && that.virtualScrollable.element) {\n that.virtualScrollable.destroy();\n }\n that.virtualScrollable = null;\n },\n _renderNoRecordsContent: function () {\n var that = this;\n if (that.options.noRecords) {\n var noRecordsElement = that.table.parent().children('.' + NORECORDSCLASS);\n if (noRecordsElement.length) {\n that.angular('cleanup', function () {\n return { elements: noRecordsElement.get() };\n });\n noRecordsElement.remove();\n }\n if (!that.dataSource || !that.dataSource.view().length) {\n noRecordsElement = $(that.noRecordsTemplate({})).insertAfter(that.table);\n that.angular('compile', function () {\n return {\n elements: noRecordsElement.get(),\n data: [{}]\n };\n });\n }\n }\n },\n _setContentWidth: function (scrollLeft) {\n var that = this, hiddenDivClass = 'k-grid-content-expander', hiddenDiv = '<div class=\"' + hiddenDivClass + '\"></div>', resizable = that.resizable, expander;\n if (that.options.scrollable && that.wrapper.is(':visible')) {\n expander = that.table.parent().children('.' + hiddenDivClass);\n that._setContentWidthHandler = proxy(that._setContentWidth, that);\n if (!that.dataSource || !that.dataSource.view().length) {\n if (!expander[0]) {\n expander = $(hiddenDiv).appendTo(that.table.parent());\n if (resizable) {\n resizable.bind('resize', that._setContentWidthHandler);\n }\n }\n if (that.thead) {\n expander.width(that.thead.width());\n if (!isNaN(parseFloat(scrollLeft, 10))) {\n that.content.scrollLeft(scrollLeft);\n }\n }\n } else if (expander[0]) {\n expander.remove();\n if (resizable) {\n resizable.unbind('resize', that._setContentWidthHandler);\n }\n }\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n if (that.lockedHeader && that.table[0].clientWidth === 0) {\n that.table[0].style.width = '1px';\n }\n }\n },\n _applyLockedContainersWidth: function () {\n if (this.options.scrollable && this.lockedHeader) {\n var headerTable = this.thead.parent(), headerWrap = headerTable.parent(), contentWidth = this.wrapper[0].clientWidth, groups = this._groups(), scrollbar = kendo.support.scrollbar(), cols = this.lockedHeader.find('>table>colgroup>col:not(.k-group-col, .k-hierarchy-col)'), nonLockedCols = headerTable.find('>colgroup>col:not(.k-group-col, .k-hierarchy-col)'), width = columnsWidth(cols), nonLockedColsWidth = columnsWidth(nonLockedCols), footerWrap;\n if (groups > 0) {\n width += outerWidth(this.lockedHeader.find('.k-group-cell:first')) * groups;\n }\n if (width >= contentWidth) {\n width = contentWidth - 3 * scrollbar;\n }\n this.lockedHeader.add(this.lockedContent).width(width);\n headerWrap[0].style.width = headerWrap.parent().width() - width - 2 + 'px';\n headerTable.add(this.table).width(nonLockedColsWidth);\n if (this.virtualScrollable && !isIE11) {\n contentWidth -= scrollbar;\n }\n this.content[0].style.width = contentWidth - width - 2 + 'px';\n if (this.lockedFooter && this.lockedFooter.length) {\n this.lockedFooter.width(width);\n footerWrap = this.footer.find('.k-grid-footer-wrap');\n footerWrap[0].style.width = headerWrap[0].clientWidth + 'px';\n footerWrap.children().first().width(nonLockedColsWidth);\n }\n }\n },\n _setContentHeight: function () {\n var that = this, options = that.options, height, header = that.wrapper.children('.k-grid-header'), scrollbar = kendo.support.scrollbar();\n var scrollableHeight = (options.scrollable || {}).height;\n if (options.scrollable && that.wrapper.is(':visible')) {\n if (scrollableHeight && that.content[0].style.height === '') {\n that.content[0].style.height = scrollableHeight;\n }\n height = that.wrapper.innerHeight();\n height -= outerHeight(header);\n if (that.pager && that.pager.element.is(':visible')) {\n height -= outerHeight(that.pager.element);\n }\n if (options.groupable) {\n height -= outerHeight(that.wrapper.children('.k-grouping-header'));\n }\n if (options.toolbar) {\n height -= outerHeight(that.wrapper.children('.k-grid-toolbar'));\n }\n if (that.footerTemplate) {\n height -= outerHeight(that.wrapper.children('.k-grid-footer'));\n }\n var isGridHeightSet = function (el) {\n var initialHeight, newHeight;\n if (el[0].style.height) {\n return true;\n } else {\n initialHeight = el.height();\n }\n el.height('auto');\n newHeight = el.height();\n if (initialHeight != newHeight) {\n el.height('');\n return true;\n }\n el.height('');\n return false;\n };\n if (isGridHeightSet(that.wrapper)) {\n if (height > scrollbar * 2) {\n if (that.lockedContent) {\n scrollbar = that.table[0].offsetWidth > that.table.parent()[0].clientWidth ? scrollbar : 0;\n that.lockedContent.height(height - scrollbar);\n }\n that.content.height(height);\n } else {\n that.content.height(scrollbar * 2 + 1);\n }\n }\n }\n },\n _averageRowHeight: function () {\n var that = this, itemsCount = that._items(that.tbody).length, rowHeight = that._rowHeight;\n if (itemsCount === 0) {\n return rowHeight;\n }\n if (!that._rowHeight) {\n that._rowHeight = rowHeight = outerHeight(that.table) / itemsCount;\n that._sum = rowHeight;\n that._measures = 1;\n }\n var currentRowHeight = outerHeight(that.table) / itemsCount;\n if (rowHeight !== currentRowHeight) {\n that._measures++;\n that._sum += currentRowHeight;\n that._rowHeight = that._sum / that._measures;\n }\n return rowHeight;\n },\n _dataSource: function () {\n var that = this, options = that.options, pageable, dataSource = options.dataSource;\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n if (isPlainObject(dataSource)) {\n extend(dataSource, {\n table: that.table,\n fields: that.columns\n });\n pageable = options.pageable;\n if (isPlainObject(pageable) && pageable.pageSize !== undefined) {\n dataSource.pageSize = pageable.pageSize;\n }\n }\n if (that.dataSource && that._refreshHandler) {\n that.dataSource.unbind(CHANGE, that._refreshHandler).unbind(PROGRESS, that._progressHandler).unbind(ERROR, that._errorHandler);\n } else {\n that._refreshHandler = proxy(that.refresh, that);\n that._progressHandler = proxy(that._requestStart, that);\n that._errorHandler = proxy(that._error, that);\n }\n that.dataSource = DataSource.create(dataSource).bind(CHANGE, that._refreshHandler).bind(PROGRESS, that._progressHandler).bind(ERROR, that._errorHandler);\n },\n _error: function () {\n this._progress(false);\n },\n _requestStart: function () {\n this._progress(true);\n },\n _modelChange: function (e) {\n var that = this, tbody = that.tbody, model = e.model, row = that.tbody.find('tr[' + kendo.attr('uid') + '=' + model.uid + ']'), relatedRow, cell, column, isAlt = row.hasClass('k-alt'), tmp, idx = that._items(tbody).index(row), isLocked = that.lockedContent, selectable, selectableRow, childCells, originalCells, length;\n if (isLocked) {\n relatedRow = that._relatedRow(row);\n }\n if (row.add(relatedRow).children('.k-edit-cell').length && !that.options.rowTemplate) {\n row.add(relatedRow).children(':not(.k-group-cell,.k-hierarchy-cell)').each(function () {\n cell = $(this);\n column = leafColumns(that.columns)[that.cellIndex(cell)];\n if (column.field === e.field) {\n if (!cell.hasClass('k-edit-cell')) {\n that._displayCell(cell, column, model);\n } else {\n cell.addClass('k-dirty-cell');\n }\n }\n });\n } else if (!row.hasClass('k-grid-edit-row')) {\n selectableRow = $().add(row);\n if (isLocked) {\n tmp = (isAlt ? that.lockedAltRowTemplate : that.lockedRowTemplate)(model);\n selectableRow = selectableRow.add(relatedRow);\n relatedRow.replaceWith(tmp);\n }\n that.angular('cleanup', function () {\n return { elements: selectableRow.get() };\n });\n tmp = (isAlt ? that.altRowTemplate : that.rowTemplate)(model);\n row.replaceWith(tmp);\n tmp = that._items(tbody).eq(idx);\n var angularData = [{ dataItem: model }];\n if (isLocked) {\n row = row.add(relatedRow);\n relatedRow = that._relatedRow(tmp)[0];\n adjustRowHeight(tmp[0], relatedRow);\n tmp = tmp.add(relatedRow);\n angularData.push({ dataItem: model });\n }\n that.angular('compile', function () {\n return {\n elements: tmp.get(),\n data: angularData\n };\n });\n selectable = that.options.selectable;\n if ((selectable || that._checkBoxSelection) && row.hasClass('k-state-selected')) {\n that.select(tmp);\n }\n originalCells = selectableRow.children(':not(.k-group-cell,.k-hierarchy-cell)');\n childCells = tmp.children(':not(.k-group-cell,.k-hierarchy-cell)');\n for (idx = 0, length = that.columns.length; idx < length; idx++) {\n column = that.columns[idx];\n cell = childCells.eq(idx);\n if (selectable && originalCells.eq(idx).hasClass('k-state-selected')) {\n cell.addClass('k-state-selected');\n }\n }\n that.trigger('itemChange', {\n item: tmp,\n data: model,\n ns: ui\n });\n }\n },\n _pageable: function () {\n var that = this, wrapper, pageable = that.options.pageable;\n if (pageable) {\n wrapper = that.wrapper.children('div.k-grid-pager');\n if (!wrapper.length) {\n wrapper = $('<div class=\"k-pager-wrap k-grid-pager\"/>').appendTo(that.wrapper);\n }\n if (that.pager) {\n that.pager.destroy();\n }\n if (typeof pageable === 'object' && pageable instanceof kendo.ui.Pager) {\n that.pager = pageable;\n } else {\n that.pager = new kendo.ui.Pager(wrapper, extend({}, pageable, { dataSource: that.dataSource }));\n }\n that.pager.bind('pageChange', function (e) {\n if (that.trigger('page', { page: e.index })) {\n e.preventDefault();\n }\n });\n }\n },\n _footer: function () {\n var that = this, aggregates = that.dataSource.aggregates(), html = '', footerTemplate = that.footerTemplate, options = that.options, footerWrap, footer = that.footer || that.wrapper.find('.k-grid-footer');\n if (footerTemplate) {\n html = $(that._wrapFooter(footerTemplate(aggregates)));\n if (footer.length) {\n var tmp = html;\n that.angular('cleanup', function () {\n return { elements: footer.get() };\n });\n footer.replaceWith(tmp);\n footer = that.footer = tmp;\n } else {\n if (options.scrollable) {\n footer = that.footer = options.pageable ? html.insertBefore(that.wrapper.children('div.k-grid-pager')) : html.appendTo(that.wrapper);\n } else {\n footer = that.footer = html.insertBefore(that.tbody);\n }\n }\n that.angular('compile', function () {\n return {\n elements: footer.find('td:not(.k-group-cell, .k-hierarchy-cell)').get(),\n data: map(that.columns, function (col) {\n return {\n column: col,\n aggregate: aggregates[col.field]\n };\n })\n };\n });\n } else if (footer && !that.footer) {\n that.footer = footer;\n }\n if (footer.length) {\n if (options.scrollable) {\n footerWrap = footer.attr('tabindex', -1).children('.k-grid-footer-wrap');\n that.scrollables = $(that.scrollables.filter(function () {\n return !$(this).is('.k-grid-footer-wrap');\n }).toArray()).add(footerWrap);\n }\n if (that._footerWidth) {\n footer.find('table').css('width', that._footerWidth);\n }\n if (footerWrap) {\n var offset = that.content.scrollLeft();\n if (options.scrollable !== true && options.scrollable.virtual) {\n offset = that.wrapper.find('.k-virtual-scrollable-wrap').scrollLeft();\n }\n footerWrap.scrollLeft(offset);\n }\n }\n if (that.lockedContent) {\n that._appendLockedColumnFooter();\n that._applyLockedContainersWidth();\n that._syncLockedFooterHeight();\n }\n },\n _wrapFooter: function (footerRow) {\n var that = this, html = '', scrollbar = !kendo.support.mobileOS ? kendo.support.scrollbar() : 0;\n if (that.options.scrollable) {\n html = $('<div class=\"k-grid-footer\"><div class=\"k-grid-footer-wrap\"><table' + (isIE7 ? ' cellspacing=\"0\"' : '') + '><tbody>' + footerRow + '</tbody></table></div></div>');\n that._appendCols(html.find('table'));\n html.css(isRtl ? 'padding-left' : 'padding-right', scrollbar);\n return html;\n }\n return '<tfoot class=\"k-grid-footer\">' + footerRow + '</tfoot>';\n },\n _columnMenu: function () {\n var that = this, menu, columns = leafColumns(that.columns), column, options = that.options, columnMenu = options.columnMenu, menuOptions, sortable, filterable, cells, hasMultiColumnHeaders = grep(that.columns, function (item) {\n return item.columns !== undefined;\n }).length > 0, isMobile = this._isMobile, initCallback = function (e) {\n that.trigger(COLUMNMENUINIT, {\n field: e.field,\n container: e.container\n });\n }, openCallback = function (e) {\n that.trigger(COLUMNMENUOPEN, {\n field: e.field,\n container: e.container\n });\n }, closeCallback = function (element) {\n focusTable(element.closest('table'), true);\n }, sortHandler = function (e) {\n if (that.trigger('sort', { sort: e.sort })) {\n e.preventDefault();\n } else {\n that._clearEditableState();\n if (that.dataSource.options.endless) {\n that.dataSource.options.endless = null;\n that._endlessPageSize = that.dataSource.options.pageSize;\n that.dataSource.pageSize(that.dataSource.options.pageSize);\n }\n }\n }, filterHandler = function (e) {\n if (that.trigger('filter', {\n filter: e.filter,\n field: e.field\n })) {\n e.preventDefault();\n } else {\n that._clearEditableState();\n if (that.dataSource.options.endless) {\n that.dataSource.options.endless = null;\n that._endlessPageSize = that.dataSource.options.pageSize;\n that.dataSource.pageSize(that.dataSource.options.pageSize);\n }\n }\n }, $angular = options.$angular;\n if (columnMenu) {\n if (typeof columnMenu == 'boolean') {\n columnMenu = {};\n }\n that._setColumnsMediaVisibility(columns);\n cells = leafDataCells(that.thead);\n for (var idx = 0, length = cells.length; idx < length; idx++) {\n column = columns[idx];\n var cell = cells.eq(idx);\n if (!column.command && (column.field || cell.attr('data-' + kendo.ns + 'field'))) {\n menu = cell.data('kendoColumnMenu');\n if (menu) {\n menu.destroy();\n }\n sortable = column.sortable !== false && columnMenu.sortable !== false && options.sortable !== false ? extend({}, options.sortable, { compare: (column.sortable || {}).compare }) : false;\n filterable = options.filterable && column.filterable !== false && columnMenu.filterable !== false ? extend({ pane: that.pane }, options.filterable, column.filterable) : false;\n if (column.filterable && column.filterable.dataSource) {\n filterable.forceUnique = false;\n filterable.checkSource = column.filterable.dataSource;\n }\n if (filterable) {\n filterable.format = column.format;\n }\n menuOptions = {\n dataSource: that.dataSource,\n values: column.values,\n columns: columnMenu.columns,\n sortable: sortable,\n filterable: filterable,\n messages: columnMenu.messages,\n owner: that,\n closeCallback: closeCallback,\n init: initCallback,\n open: openCallback,\n pane: that.pane,\n sort: sortHandler,\n filtering: filterHandler,\n filter: isMobile ? ':not(.k-column-active)' : '',\n lockedColumns: !hasMultiColumnHeaders && column.lockable !== false && lockedColumns(columns).length > 0\n };\n if ($angular) {\n menuOptions.$angular = $angular;\n }\n cell.kendoColumnMenu(menuOptions);\n }\n }\n }\n },\n _headerCells: function () {\n return $(this.thead).find('th').filter(function () {\n var th = $(this);\n return !th.hasClass('k-group-cell') && !th.hasClass('k-hierarchy-cell');\n });\n },\n _filterable: function () {\n var that = this, columns = leafColumns(that.columns), filterMenu, cells, cell, filterInit = function (e) {\n that.trigger(FILTERMENUINIT, {\n field: e.field,\n container: e.container\n });\n }, closeCallback = function (element) {\n focusTable(element.closest('table'), true);\n }, filterHandler = function (e) {\n if (that.trigger('filter', {\n filter: e.filter,\n field: e.field\n })) {\n e.preventDefault();\n } else {\n that._clearEditableState();\n if (that.dataSource.options.endless) {\n that.dataSource.options.endless = null;\n that._endlessPageSize = that.dataSource.options.pageSize;\n that.dataSource.pageSize(that.dataSource.options.pageSize);\n }\n }\n }, filterOpen = function (e) {\n that.trigger(FILTERMENUOPEN, {\n field: e.field,\n container: e.container\n });\n }, filterable = that.options.filterable;\n if (filterable && typeof filterable.mode == STRING && filterable.mode.indexOf('menu') == -1) {\n filterable = false;\n }\n if (filterable && !that.options.columnMenu) {\n cells = leafDataCells(that.thead);\n for (var idx = 0, length = cells.length; idx < length; idx++) {\n cell = cells.eq(idx);\n if (columns[idx].filterable !== false && !columns[idx].command && (columns[idx].field || cell.attr('data-' + kendo.ns + 'field'))) {\n filterMenu = cell.data('kendoFilterMenu');\n if (filterMenu) {\n filterMenu.destroy();\n }\n filterMenu = cell.data('kendoFilterMultiCheck');\n if (filterMenu) {\n filterMenu.destroy();\n }\n var columnFilterable = columns[idx].filterable;\n var options = extend({}, filterable, columnFilterable, {\n dataSource: that.dataSource,\n values: columns[idx].values,\n format: columns[idx].format,\n closeCallback: closeCallback,\n title: columns[idx].title || columns[idx].field,\n init: filterInit,\n open: filterOpen,\n pane: that.pane,\n change: filterHandler\n });\n if (columnFilterable && columnFilterable.messages) {\n options.messages = extend(true, {}, filterable.messages, columnFilterable.messages);\n }\n if (columnFilterable && columnFilterable.dataSource) {\n options.forceUnique = false;\n options.checkSource = columnFilterable.dataSource;\n }\n if (columnFilterable && columnFilterable.multi) {\n cell.kendoFilterMultiCheck(options);\n } else {\n cell.kendoFilterMenu(options);\n }\n }\n }\n }\n },\n _filterRow: function () {\n var that = this;\n if (!that._hasFilterRow()) {\n return;\n }\n var settings;\n var $angular = that.options.$angular;\n var columns = leafColumns(that.columns), filterable = that.options.filterable, rowheader = that.thead.find('.k-filter-row'), filterHandler = function (e) {\n if (that.trigger('filter', {\n filter: e.filter,\n field: e.field\n })) {\n e.preventDefault();\n } else {\n that._clearEditableState();\n if (that.dataSource.options.endless) {\n that.dataSource.options.endless = null;\n that._endlessPageSize = that.dataSource.options.pageSize;\n that.dataSource.pageSize(that.dataSource.options.pageSize);\n }\n }\n };\n this._updateHeader(this.dataSource.group().length);\n for (var i = 0; i < columns.length; i++) {\n var suggestDataSource, col = columns[i], operators = that.options.filterable.operators, customDataSource = false, th = $('<th/>'), field = col.field;\n if (col.hidden) {\n th.hide();\n }\n rowheader.append(th);\n if (field && col.filterable !== false) {\n var cellOptions = col.filterable && col.filterable.cell || {};\n suggestDataSource = that.options.dataSource;\n if (suggestDataSource instanceof DataSource) {\n suggestDataSource = that.options.dataSource.options;\n }\n var messages = extend(true, {}, filterable.messages);\n if (col.filterable) {\n extend(true, messages, col.filterable.messages);\n }\n if (cellOptions.enabled === false) {\n th.html(' ');\n continue;\n }\n if (cellOptions.dataSource) {\n suggestDataSource = cellOptions.dataSource;\n customDataSource = true;\n }\n if (col.filterable && col.filterable.operators) {\n operators = col.filterable.operators;\n }\n settings = {\n column: col,\n dataSource: that.dataSource,\n suggestDataSource: suggestDataSource,\n customDataSource: customDataSource,\n field: field,\n messages: messages,\n values: col.values,\n template: cellOptions.template,\n delay: cellOptions.delay,\n inputWidth: cellOptions.inputWidth,\n suggestionOperator: cellOptions.suggestionOperator,\n minLength: cellOptions.minLength,\n dataTextField: cellOptions.dataTextField,\n operator: cellOptions.operator,\n operators: operators,\n showOperators: cellOptions.showOperators,\n change: filterHandler\n };\n if ($angular) {\n settings.$angular = $angular;\n }\n $('<span/>').attr(kendo.attr('field'), field).appendTo(th).kendoFilterCell(settings);\n } else {\n th.html(' ');\n }\n }\n },\n _sortable: function () {\n var that = this, columns = leafColumns(that.columns), column, sorterInstance, cell, sortable = that.options.sortable, sortHandler = function (e) {\n if (that.trigger('sort', { sort: e.sort })) {\n e.preventDefault();\n } else {\n that._clearEditableState();\n }\n };\n if (sortable) {\n var cells = leafDataCells(that.thead);\n for (var idx = 0, length = cells.length; idx < length; idx++) {\n column = columns[idx];\n if (column.sortable !== false && !column.command && column.field) {\n cell = cells.eq(idx);\n sorterInstance = cell.data('kendoColumnSorter');\n if (sorterInstance) {\n sorterInstance.destroy();\n }\n cell.attr('data-' + kendo.ns + 'field', column.field).kendoColumnSorter(extend({}, sortable, column.sortable, {\n dataSource: that.dataSource,\n aria: true,\n filter: ':not(.k-column-active)',\n change: sortHandler\n }));\n }\n }\n cells = null;\n }\n },\n _columns: function (columns) {\n var that = this, table = that.table, encoded, cols = table.find('col'), lockedCols, headerRows = that.element.find('thead tr'), dataSource = that.options.dataSource;\n columns = columns.length ? columns : map(table.find('th'), function (th, idx) {\n th = $(th);\n var sortable = th.attr(kendo.attr('sortable')), filterable = th.attr(kendo.attr('filterable')), type = th.attr(kendo.attr('type')), groupable = th.attr(kendo.attr('groupable')), field = th.attr(kendo.attr('field')), title = th.attr(kendo.attr('title')), menu = th.attr(kendo.attr('menu'));\n if (!field) {\n field = th.text().replace(/\\s|[^A-z0-9]/g, '');\n }\n return {\n field: field,\n type: type,\n title: title,\n sortable: sortable !== 'false',\n filterable: filterable !== 'false',\n groupable: groupable !== 'false',\n menu: menu,\n template: th.attr(kendo.attr('template')),\n width: cols.eq(idx).css('width')\n };\n });\n encoded = !(that.table.find('tbody tr').length > 0 && (!dataSource || !dataSource.transport));\n if (that.options.scrollable) {\n var initialColumns = columns;\n lockedCols = lockedColumns(columns);\n columns = nonLockedColumns(columns);\n if (lockedCols.length > 0 && columns.length === 0) {\n throw new Error('There should be at least one non locked column');\n }\n normalizeHeaderCells(that.element.find('tr:has(th):first'), initialColumns);\n columns = lockedCols.concat(columns);\n }\n if (headerRows.length && columns.length) {\n that._updateColumnIDs(columns, headerRows.first());\n }\n that.columns = normalizeColumns(columns, encoded);\n if ($.grep(leafColumns(that.columns), function (col) {\n return col.selectable;\n }).length) {\n that._selectedIds = {};\n that._checkBoxSelection = true;\n that.wrapper.on(CLICK + NS, 'tbody > tr ' + CHECKBOXINPUT, proxy(that._checkboxClick, that));\n that.wrapper.on(CLICK + NS, 'thead > tr ' + CHECKBOXINPUT, proxy(that._headerCheckboxClick, that));\n }\n },\n _updateColumnIDs: function (columns, tr) {\n if (!columns.length) {\n return;\n }\n var ths = tr.find('th');\n var id;\n for (var i = 0; i < columns.length; i++) {\n id = ths.eq(i).attr('id');\n if (id) {\n columns[i].headerAttributes = extend(columns[i].headerAttributes, { id: id });\n }\n }\n this._updateColumnIDs(childColumns(columns), tr.next());\n },\n _headerCheckboxClick: function (e) {\n var that = this, checkBox = $(e.target), checked = checkBox.prop('checked'), parentGrid = checkBox.closest('.k-grid.k-widget').getKendoGrid();\n if (that !== parentGrid) {\n return;\n }\n if (checked) {\n that.select(parentGrid.items());\n } else {\n that.clearSelection();\n }\n },\n _checkboxClick: function (e) {\n var that = this, row = $(e.target).closest('tr'), isSelecting = !row.hasClass(SELECTED);\n if (that !== row.closest('.k-grid.k-widget').getKendoGrid()) {\n return;\n }\n if (isSelecting) {\n that.select(row);\n } else {\n that._deselectCheckRows(row);\n }\n },\n _groups: function () {\n var group = this.dataSource.group();\n return group ? group.length : 0;\n },\n _tmpl: function (rowTemplate, columns, alt, skipGroupCells) {\n var that = this, settings = extend({}, kendo.Template, that.options.templateSettings), paramName = settings.paramName, idx, length = columns.length, template, state = {\n storage: {},\n count: 0\n }, column, type, hasDetails = that._hasDetails(), className = [], groups = that._groups(), navigatable = that.options.navigatable;\n var fieldAttr = kendo.attr('field');\n var field;\n var dirtyCellTemplate = '';\n if (!rowTemplate) {\n rowTemplate = '<tr';\n if (alt) {\n className.push('k-alt');\n }\n if (hasDetails) {\n className.push('k-master-row');\n }\n if (className.length) {\n rowTemplate += ' class=\"' + className.join(' ') + '\"';\n }\n if (length) {\n rowTemplate += ' ' + kendo.attr('uid') + '=\"#=' + kendo.expr('uid', settings.paramName) + '#\"';\n }\n rowTemplate += ' role=\\'row\\'>';\n if (groups > 0 && !skipGroupCells) {\n rowTemplate += groupCells(groups);\n }\n if (hasDetails) {\n rowTemplate += '<td class=\"k-hierarchy-cell\" aria-expanded=\"false\"><a class=\"k-icon k-i-expand\" href=\"\\\\#\" ' + ARIALABEL + '=\"' + EXPAND + '\" tabindex=\"-1\"></a></td>';\n }\n for (idx = 0; idx < length; idx++) {\n column = columns[idx];\n template = column.template;\n type = typeof template;\n field = column.field;\n if (that._editMode() === INCELL && field) {\n column.attributes = column.attributes || {};\n if (that.virtualScrollable) {\n column.attributes[fieldAttr] = field;\n }\n dirtyCellTemplate = that._dirtyCellTemplate(field, paramName);\n column.attributes['class'] = column.attributes['class'] || '';\n if (column.attributes['class'].indexOf(dirtyCellTemplate) < 0) {\n column.attributes['class'] += dirtyCellTemplate;\n }\n }\n if (column.command) {\n column.attributes = column.attributes || {};\n if (typeof column.attributes['class'] !== 'undefined') {\n column.attributes['class'] += ' k-command-cell';\n } else {\n column.attributes['class'] = 'k-command-cell';\n }\n }\n rowTemplate += '<td' + stringifyAttributes(column.attributes);\n if (navigatable) {\n rowTemplate += ' aria-describedby=\\'' + column.headerAttributes.id + '\\'';\n }\n rowTemplate += ' role=\\'gridcell\\'>';\n rowTemplate += that._cellTmpl(column, state);\n rowTemplate += '</td>';\n }\n rowTemplate += '</tr>';\n }\n rowTemplate = kendo.template(rowTemplate, settings);\n if (state.count > 0) {\n return proxy(rowTemplate, state.storage);\n }\n return rowTemplate;\n },\n _dirtyCellTemplate: function (field, paramName) {\n var dirtyField;\n if (field && paramName) {\n dirtyField = field.charAt(0) === '[' ? kendo.expr(field, paramName + '.dirtyFields') : paramName + '.dirtyFields[\\'' + field + '\\']';\n return '#= ' + paramName + ' && ' + paramName + '.dirty && ' + paramName + '.dirtyFields && ' + dirtyField + ' ? \\' k-dirty-cell\\' : \\'\\' #';\n }\n return '';\n },\n _headerCellText: function (column) {\n var that = this, settings = extend({}, kendo.Template, that.options.templateSettings), template = column.headerTemplate, type = typeof template, text = column.title || column.field || '';\n if (type === FUNCTION) {\n text = kendo.template(template, settings)({});\n } else if (type === STRING) {\n text = template;\n }\n return text;\n },\n _cellTmpl: function (column, state) {\n var that = this, settings = extend({}, kendo.Template, that.options.templateSettings), template = column.template, paramName = settings.paramName, field = column.field, html = '', idx, length, format = column.format, type = typeof template, columnValues = column.values;\n if (column.command) {\n if (isArray(column.command)) {\n for (idx = 0, length = column.command.length; idx < length; idx++) {\n if (column.command[idx].visible) {\n html += kendo.format('#= {0}(data)? \\'{1}\\':\\'\\' #', column.command[idx].visible, that._createButton(column.command[idx]).replace(templateHashRegExp, '\\\\#').replace(/'/gi, '\\\\\\''));\n } else {\n html += that._createButton(column.command[idx]).replace(templateHashRegExp, '\\\\#');\n }\n }\n return html;\n }\n return that._createButton(column.command).replace(templateHashRegExp, '\\\\#');\n }\n if (column.selectable) {\n return SELECTCOLUMNTMPL;\n }\n html += that._dirtyIndicatorTemplate(field, paramName);\n if (type === FUNCTION) {\n state.storage['tmpl' + state.count] = template;\n html += '#=this.tmpl' + state.count + '(' + paramName + ')#';\n state.count++;\n } else if (type === STRING) {\n html += template;\n } else if (columnValues && columnValues.length && isPlainObject(columnValues[0]) && 'value' in columnValues[0] && field) {\n html += '#var v =' + kendo.stringify(convertToObject(columnValues)).replace(templateHashRegExp, '\\\\#') + '#';\n html += '#var f = v[';\n if (!settings.useWithBlock) {\n html += paramName + '.';\n }\n html += field + ']#';\n html += '${f != null ? f : \\'\\'}';\n } else {\n html += column.encoded ? '#:' : '#=';\n if (format) {\n html += 'kendo.format(\"' + format.replace(formatRegExp, '\\\\$1') + '\",';\n }\n if (field) {\n field = kendo.expr(field, paramName);\n html += field + '==null?\\'\\':' + field;\n } else {\n html += '\\'\\'';\n }\n if (format) {\n html += ')';\n }\n html += '#';\n }\n return html;\n },\n _dirtyIndicatorTemplate: function (field, paramName) {\n var dirtyField;\n if (field && paramName) {\n dirtyField = field.charAt(0) === '[' ? kendo.expr(field, paramName + '.dirtyFields') : paramName + '.dirtyFields[\\'' + field + '\\']';\n return '#= ' + paramName + ' && ' + paramName + '.dirty && ' + paramName + '.dirtyFields && ' + dirtyField + ' ? \\'<span class=\"k-dirty\"></span>\\' : \\'\\' #';\n }\n return '';\n },\n _templates: function () {\n var that = this, options = that.options, dataSource = that.dataSource, groups = dataSource.group(), footer = that.footer || that.wrapper.find('.k-grid-footer'), aggregates = dataSource.aggregate(), columnLeafs = leafColumns(that.columns), columnsLocked = leafColumns(lockedColumns(that.columns)), columns = options.scrollable ? leafColumns(nonLockedColumns(that.columns)) : columnLeafs, groupHeaderColumnTemplateLockedColumns = grep(visibleColumns(columnsLocked), function (column, index) {\n return column.groupHeaderColumnTemplate && index !== 0;\n }), groupHeaderColumnTemplateNonLockedColumns = grep(visibleColumns(columns), function (column) {\n return column.groupHeaderColumnTemplate;\n });\n if (options.scrollable && columnsLocked.length) {\n if (options.rowTemplate || options.altRowTemplate) {\n throw new Error('Having both row template and locked columns is not supported');\n }\n that.rowTemplate = that._tmpl(options.rowTemplate, columns, false, true);\n that.altRowTemplate = that._tmpl(options.altRowTemplate || options.rowTemplate, columns, true, true);\n that.lockedRowTemplate = that._tmpl(options.rowTemplate, columnsLocked);\n that.lockedAltRowTemplate = that._tmpl(options.altRowTemplate || options.rowTemplate, columnsLocked, true);\n } else {\n that.rowTemplate = that._tmpl(options.rowTemplate, columns);\n that.altRowTemplate = that._tmpl(options.altRowTemplate || options.rowTemplate, columns, true);\n }\n if (that._hasDetails()) {\n that.detailTemplate = that._detailTmpl(options.detailTemplate || '');\n }\n if (that._group && !isEmptyObject(aggregates) || !isEmptyObject(aggregates) && !footer.length || grep(columnLeafs, function (column) {\n return column.footerTemplate;\n }).length) {\n that.footerTemplate = that._footerTmpl(columnLeafs, aggregates, 'footerTemplate', 'k-footer-template');\n }\n if (groups && grep(columnLeafs, function (column) {\n return column.groupFooterTemplate;\n }).length) {\n aggregates = $.map(groups, function (g) {\n return g.aggregates;\n });\n that.groupFooterTemplate = that._footerTmpl(columns, aggregates, 'groupFooterTemplate', 'k-group-footer', columnsLocked.length);\n if (options.scrollable && columnsLocked.length) {\n that.lockedGroupFooterTemplate = that._footerTmpl(columnsLocked, aggregates, 'groupFooterTemplate', 'k-group-footer');\n }\n }\n if (groups && (groupHeaderColumnTemplateLockedColumns.length || groupHeaderColumnTemplateNonLockedColumns.length)) {\n aggregates = $.map(groups, function (g) {\n return g.aggregates;\n });\n that.groupHeaderColumnTemplate = that._groupHeaderTmpl(visibleColumns(columns), aggregates, 'groupHeaderColumnTemplate', 'k-grouping-row', columnsLocked.length, groupHeaderColumnTemplateNonLockedColumns);\n if (options.scrollable && columnsLocked.length) {\n that.lockedGroupHeaderColumnTemplate = that._groupHeaderTmpl(visibleColumns(columnsLocked), aggregates, 'groupHeaderColumnTemplate', 'k-grouping-row', 0, groupHeaderColumnTemplateLockedColumns);\n }\n } else {\n that.groupHeaderColumnTemplate = null;\n that.lockedGroupHeaderColumnTemplate = null;\n }\n if (that.options.noRecords) {\n that.noRecordsTemplate = that._noRecordsTmpl();\n }\n },\n _noRecordsTmpl: function () {\n var wrapper = '<div class=\"{0}\">{1}</div>';\n var defaultTemplate = '<div class=\"k-grid-norecords-template\"{1}>{0}</div>';\n var scrollableNoGridHeightStyles = this.options.scrollable && !this.wrapper[0].style.height ? ' style=\"margin:0 auto;position:static;\"' : '';\n var state = {\n storage: {},\n count: 0\n };\n var settings = $.extend({}, kendo.Template, this.options.templateSettings);\n var paramName = settings.paramName;\n var template;\n var html = '';\n var type;\n var tmpl;\n if (this.options.noRecords.template) {\n template = this.options.noRecords.template;\n } else {\n template = kendo.format(defaultTemplate, this.options.messages.noRecords, scrollableNoGridHeightStyles);\n }\n type = typeof template;\n if (type === 'function') {\n state.storage['tmpl' + state.count] = template;\n html += '#=this.tmpl' + state.count + '(' + paramName + ')#';\n state.count++;\n } else if (type === 'string') {\n html += template;\n }\n tmpl = kendo.template(kendo.format(wrapper, NORECORDSCLASS, html), settings);\n if (state.count > 0) {\n tmpl = $.proxy(tmpl, state.storage);\n }\n return tmpl;\n },\n _footerTmpl: function (columns, aggregates, templateName, rowClass, skipGroupCells) {\n var that = this, settings = extend({}, kendo.Template, that.options.templateSettings), paramName = settings.paramName, html = '', idx, length, template, type, storage = {}, count = 0, scope = {}, groups = that._groups(), fieldsMap = that.dataSource._emptyAggregates(aggregates), column;\n html += '<tr class=\"' + rowClass + '\">';\n if (groups > 0 && !skipGroupCells) {\n html += groupCells(groups);\n }\n if (that._hasDetails()) {\n html += '<td class=\"k-hierarchy-cell\"> </td>';\n }\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n template = column[templateName];\n type = typeof template;\n html += '<td' + stringifyAttributes(column.footerAttributes) + '>';\n if (template) {\n if (type !== FUNCTION) {\n scope = fieldsMap[column.field] ? extend({}, settings, { paramName: paramName + '[\\'' + column.field + '\\']' }) : {};\n template = kendo.template(template, scope);\n }\n storage['tmpl' + count] = template;\n html += '#=this.tmpl' + count + '(' + paramName + ')#';\n count++;\n } else {\n html += ' ';\n }\n html += '</td>';\n }\n html += '</tr>';\n html = kendo.template(html, settings);\n if (count > 0) {\n return proxy(html, storage);\n }\n return html;\n },\n _groupHeaderTmpl: function (columns, aggregates, templateName, rowClass, skipGroupCells, groupHeaderColumnTemplateColumns) {\n var that = this, settings = extend({}, kendo.Template, that.options.templateSettings), paramName = settings.paramName, html = '', idx, length, template, type, storage = {}, count = 0, scope = {}, fieldsMap = that.dataSource._emptyAggregates(aggregates), column, headerTemplateIndex = groupHeaderColumnTemplateColumns.length ? inArray(groupHeaderColumnTemplateColumns[0], columns) : -1;\n html += '<tr role=\"row\" class=\"' + rowClass + '\">';\n if (!skipGroupCells) {\n html += '# for (var i = 0; i < data.groupCells; i++) { #' + '<td class=\"k-group-cell\">' + ' ' + '</td>' + '# } #';\n }\n if (that._hasDetails()) {\n html += '<td class=\"k-hierarchy-cell\"> </td>';\n }\n if (headerTemplateIndex < 0) {\n html += !skipGroupCells ? groupCellBuilder(columns.length) : '';\n return;\n }\n if (headerTemplateIndex < MINCOLSPANVALUE && groupHeaderColumnTemplateColumns.length <= 1 && !skipGroupCells) {\n html += !skipGroupCells ? groupCellBuilder(columns.length) : '';\n return kendo.template(html, settings);\n }\n if (headerTemplateIndex < MINCOLSPANVALUE) {\n headerTemplateIndex = !skipGroupCells ? 1 : 0;\n html += !skipGroupCells ? groupCellBuilder(headerTemplateIndex) : '';\n } else {\n html += !skipGroupCells ? groupCellBuilder(headerTemplateIndex) : groupCellLockedContentBuilder(headerTemplateIndex);\n }\n for (idx = headerTemplateIndex, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n template = column[templateName];\n type = typeof template;\n html += '<td>';\n if (template) {\n if (type !== FUNCTION) {\n scope = fieldsMap[column.field] ? extend({}, settings, { paramName: paramName + '[\\'' + column.field + '\\']' }) : {};\n template = kendo.template(template, scope);\n }\n storage['tmpl' + count] = template;\n html += '#=this.tmpl' + count + '(' + paramName + ')#';\n count++;\n } else {\n html += ' ';\n }\n html += '</td>';\n }\n html += '</tr>';\n html = kendo.template(html, settings);\n if (count > 0) {\n return proxy(html, storage);\n }\n return html;\n },\n _detailTmpl: function (template) {\n var that = this, html = '', settings = extend({}, kendo.Template, that.options.templateSettings), paramName = settings.paramName, templateFunctionStorage = {}, templateFunctionCount = 0, groups = that._groups(), colspan = visibleColumns(leafColumns(that.columns)).length, type = typeof template;\n html += '<tr class=\"k-detail-row\">';\n if (groups > 0) {\n html += groupCells(groups);\n }\n html += '<td class=\"k-hierarchy-cell\"></td><td class=\"k-detail-cell\"' + (colspan ? ' colspan=\"' + colspan + '\"' : '') + '>';\n if (type === FUNCTION) {\n templateFunctionStorage['tmpl' + templateFunctionCount] = template;\n html += '#=this.tmpl' + templateFunctionCount + '(' + paramName + ')#';\n templateFunctionCount++;\n } else {\n html += template;\n }\n html += '</td></tr>';\n html = kendo.template(html, settings);\n if (templateFunctionCount > 0) {\n return proxy(html, templateFunctionStorage);\n }\n return html;\n },\n _hasDetails: function () {\n var that = this;\n return that.options.detailTemplate !== null || (that._events[DETAILINIT] || []).length;\n },\n _hasFilterRow: function () {\n var filterable = this.options.filterable;\n var hasFiltering = filterable && typeof filterable.mode == STRING && filterable.mode.indexOf('row') != -1;\n var columns = this.columns;\n var columnsWithoutFiltering = $.grep(columns, function (col) {\n return col.filterable === false;\n });\n if (columns.length && columnsWithoutFiltering.length == columns.length) {\n hasFiltering = false;\n }\n return hasFiltering;\n },\n _details: function () {\n var that = this;\n if (that.options.scrollable && that._hasDetails() && lockedColumns(that.columns).length) {\n throw new Error('Having both detail template and locked columns is not supported');\n }\n that.table.on(CLICK + NS, '.k-hierarchy-cell .k-i-expand, .k-hierarchy-cell .k-i-collapse', function (e) {\n var button = $(this), cell = button.closest('td.k-hierarchy-cell'), expanding = button.hasClass('k-i-expand'), masterRow = button.closest('tr.k-master-row'), detailRow, detailTemplate = that.detailTemplate, data, hasDetails = that._hasDetails(), ariaLabelText = expanding ? COLLAPSE : EXPAND, ariaExpandText = expanding ? true : false;\n button.toggleClass('k-i-expand', !expanding).toggleClass('k-i-collapse', expanding).attr(ARIALABEL, ariaLabelText);\n cell.attr('aria-expanded', ariaExpandText);\n detailRow = masterRow.next();\n if (hasDetails && !detailRow.hasClass('k-detail-row')) {\n data = that.dataItem(masterRow);\n detailRow = $(detailTemplate(data)).addClass(masterRow.hasClass('k-alt') ? 'k-alt' : '').insertAfter(masterRow);\n that.angular('compile', function () {\n return {\n elements: detailRow.get(),\n data: [{ dataItem: data }]\n };\n });\n that.trigger(DETAILINIT, {\n masterRow: masterRow,\n detailRow: detailRow,\n data: data,\n detailCell: detailRow.find('.k-detail-cell')\n });\n }\n that.trigger(expanding ? DETAILEXPAND : DETAILCOLLAPSE, {\n masterRow: masterRow,\n detailRow: detailRow\n });\n detailRow.toggle(expanding);\n e.preventDefault();\n return false;\n });\n },\n dataItem: function (tr) {\n tr = $(tr)[0];\n if (!tr) {\n return null;\n }\n var rows = this.tbody.children(), classesRegEx = /k-grouping-row|k-detail-row|k-group-footer/, idx = tr.sectionRowIndex, j, correctIdx;\n correctIdx = idx;\n for (j = 0; j < idx; j++) {\n if (classesRegEx.test(rows[j].className)) {\n correctIdx--;\n }\n }\n return this._data[correctIdx];\n },\n expandRow: function (tr) {\n $(tr).find('> td .k-i-expand').click();\n },\n collapseRow: function (tr) {\n $(tr).find('> td .k-i-collapse').click();\n },\n _createHeaderCells: function (columns, rowSpan) {\n var that = this, idx, th, text, html = '', length, title, messages = that.options.messages, leafs = leafColumns(that.columns), groups = that.dataSource.group(), field;\n for (idx = 0, length = columns.length; idx < length; idx++) {\n th = columns[idx].column || columns[idx];\n text = that._headerCellText(th);\n field = '';\n var index = inArray(th, leafs);\n if (th.selectable) {\n html += '<th scope=\\'col\\'' + stringifyAttributes(th.headerAttributes);\n if (rowSpan && !columns[idx].colSpan) {\n html += ' rowspan=\\'' + rowSpan + '\\'';\n }\n if (index > -1) {\n html += kendo.attr('index') + '=\\'' + index + '\\'';\n }\n text = th.headerTemplate ? text : kendo.template(SELECTCOLUMNHEADERTMPL)({});\n html += '>' + text + '</th>';\n } else if (th.command) {\n html += '<th scope=\\'col\\'' + stringifyAttributes(th.headerAttributes);\n if (rowSpan && !columns[idx].colSpan) {\n html += ' rowspan=\\'' + rowSpan + '\\'';\n }\n if (index > -1) {\n html += kendo.attr('index') + '=\\'' + index + '\\'';\n }\n html += '>' + text + '</th>';\n } else {\n if (th.field) {\n field = kendo.attr('field') + '=\\'' + th.field + '\\' ';\n }\n html += '<th scope=\\'col\\' role=\\'columnheader\\' ' + field;\n html += ' aria-haspopup=\\'true\\'';\n if (rowSpan && !columns[idx].colSpan) {\n html += ' rowspan=\\'' + rowSpan + '\\'';\n }\n if (columns[idx].colSpan > 1) {\n html += 'colspan=\"' + (columns[idx].colSpan - hiddenLeafColumnsCount(th.columns)) + '\" ';\n html += kendo.attr('colspan') + '=\\'' + columns[idx].colSpan + '\\'';\n } else if (columns[idx].colSpan === 1) {\n html += kendo.attr('colspan') + '=\\'' + columns[idx].colSpan + '\\'';\n }\n if (th.title) {\n title = th.title.replace('\"', '"').replace(/'/g, '\\'');\n html += kendo.attr('title') + '=\"' + title + '\" ';\n }\n if (th.groupable !== undefined) {\n html += kendo.attr('groupable') + '=\\'' + th.groupable + '\\' ';\n }\n if (isColumnGroupable(that, th)) {\n html += 'aria-label=\\'' + (title || th.field) + ' ';\n html += isGroupedBy(groups, th.field) ? messages.ungroupHeader : messages.groupHeader;\n html += '\\' ';\n }\n if (th.aggregates && th.aggregates.length) {\n html += kendo.attr('aggregates') + '=\\'' + th.aggregates + '\\'';\n }\n if (index > -1) {\n html += kendo.attr('index') + '=\\'' + index + '\\'';\n }\n html += stringifyAttributes(th.headerAttributes);\n html += '>' + text + '</th>';\n }\n }\n return html;\n },\n _appendLockedColumnContent: function () {\n var columns = this.columns, idx, colgroup = this.table.find('colgroup'), cols = colgroup.find('col:not(.k-group-col,.k-hierarchy-col)'), length, lockedCols = $(), skipHiddenCount = 0, container, colSpan, spanIdx, colOffset = 0;\n for (idx = 0, length = columns.length; idx < length; idx++) {\n if (columns[idx].locked) {\n if (isVisible(columns[idx])) {\n colSpan = 1;\n if (columns[idx].columns) {\n colSpan = leafColumns(columns[idx].columns).length - hiddenLeafColumnsCount(columns[idx].columns);\n }\n colSpan = colSpan || 1;\n for (spanIdx = 0; spanIdx < colSpan; spanIdx++) {\n lockedCols = lockedCols.add(cols.eq(idx + colOffset + spanIdx - skipHiddenCount));\n }\n colOffset += colSpan - 1;\n } else {\n skipHiddenCount++;\n }\n }\n }\n container = $('<div class=\"k-grid-content-locked\"><table' + (isIE7 ? ' cellspacing=\"0\"' : '') + '><colgroup/><tbody></tbody></table></div>');\n colgroup.detach();\n container.find('colgroup').append(lockedCols);\n colgroup.insertBefore(this.table.find('tbody'));\n this.lockedContent = container.insertBefore(this.content);\n this.lockedTable = container.children('table');\n },\n _appendLockedColumnFooter: function () {\n var that = this;\n var footer = that.footer;\n var cells = footer.find('.k-footer-template>td');\n var cols = footer.find('.k-grid-footer-wrap>table>colgroup>col');\n var html = $('<div class=\"k-grid-footer-locked\"><table><colgroup /><tbody><tr class=\"k-footer-template\"></tr></tbody></table></div>');\n var idx, length;\n var groups = that._groups();\n var lockedCells = $(), lockedCols = $();\n lockedCells = lockedCells.add(cells.filter('.k-group-cell'));\n for (idx = 0, length = leafColumns(lockedColumns(that.columns)).length; idx < length; idx++) {\n lockedCells = lockedCells.add(cells.eq(idx + groups));\n }\n lockedCols = lockedCols.add(cols.filter('.k-group-col'));\n for (idx = 0, length = visibleColumns(leafColumns(visibleLockedColumns(that.columns))).length; idx < length; idx++) {\n lockedCols = lockedCols.add(cols.eq(idx + groups));\n }\n lockedCells.appendTo(html.find('tr'));\n lockedCols.appendTo(html.find('colgroup'));\n that.lockedFooter = html.prependTo(footer);\n },\n _appendLockedColumnHeader: function (container) {\n var that = this, columns = this.columns, idx, html, length, colgroup, tr, trFilter, table, header, filtercellCells, rows = [], skipHiddenCount = 0, cols = $(), hasFilterRow = that._hasFilterRow(), filterCellOffset = 0, filterCells = $(), cell, leafColumnsCount = 0, cells = $();\n colgroup = that.thead.prev().find('col:not(.k-group-col,.k-hierarchy-col)');\n header = that.thead.find('tr:first .k-header:not(.k-group-cell,.k-hierarchy-cell)');\n filtercellCells = that.thead.find('.k-filter-row').find('th:not(.k-group-cell,.k-hierarchy-cell)');\n var colOffset = 0;\n for (idx = 0, length = columns.length; idx < length; idx++) {\n if (columns[idx].locked) {\n cell = header.eq(idx);\n leafColumnsCount = leafColumns(columns[idx].columns || []).length;\n if (isVisible(columns[idx])) {\n var colSpan = null;\n if (columns[idx].columns) {\n colSpan = leafColumnsCount - hiddenLeafColumnsCount(columns[idx].columns);\n }\n colSpan = colSpan || 1;\n for (var spanIdx = 0; spanIdx < colSpan; spanIdx++) {\n cols = cols.add(colgroup.eq(idx + colOffset + spanIdx - skipHiddenCount));\n }\n colOffset += colSpan - 1;\n }\n mapColumnToCellRows([columns[idx]], childColumnsCells(cell), rows, 0, 0);\n leafColumnsCount = leafColumnsCount || 1;\n for (var j = 0; j < leafColumnsCount; j++) {\n filterCells = filterCells.add(filtercellCells.eq(filterCellOffset + j));\n }\n filterCellOffset += leafColumnsCount;\n }\n if (columns[idx].columns) {\n skipHiddenCount += hiddenLeafColumnsCount(columns[idx].columns);\n }\n if (!isVisible(columns[idx])) {\n skipHiddenCount++;\n }\n }\n if (rows.length) {\n html = '<div class=\"k-grid-header-locked\" style=\"width:1px\"><table' + (isIE7 ? ' cellspacing=\"0\"' : '') + '><colgroup/><thead>';\n html += new Array(rows.length + 1).join('<tr></tr>');\n html += (hasFilterRow ? '<tr class=\"k-filter-row\" />' : '') + '</thead></table></div>';\n table = $(html);\n colgroup = table.find('colgroup');\n colgroup.append(that.thead.prev().find('col.k-group-col').add(cols));\n tr = table.find('thead tr:not(.k-filter-row)');\n for (idx = 0, length = rows.length; idx < length; idx++) {\n cells = toJQuery(rows[idx]);\n tr.eq(idx).append(that.thead.find('tr:eq(' + idx + ') .k-group-cell').add(cells));\n }\n var count = removeEmptyRows(this.thead);\n if (rows.length < count) {\n removeRowSpanValue(table, count - rows.length);\n }\n trFilter = table.find('.k-filter-row');\n trFilter.append(that.thead.find('.k-filter-row .k-group-cell').add(filterCells));\n this.lockedHeader = table.prependTo(container);\n this.thead.find('.k-group-cell').remove();\n return true;\n }\n return false;\n },\n _removeLockedContainers: function () {\n var elements = this.lockedHeader.add(this.lockedContent).add(this.lockedFooter);\n kendo.destroy(elements);\n elements.off(NS).remove();\n this.lockedHeader = this.lockedContent = this.lockedFooter = null;\n this.selectable = null;\n },\n _thead: function () {\n var that = this, columns = that.columns, hasDetails = that._hasDetails() && columns.length, hasFilterRow = that._hasFilterRow(), idx, html = '', thead = that.table.find('>thead'), hasTHead = that.element.find('thead:first').length > 0, headerContent = that.options.messages.expandCollapseColumnHeader, tr;\n if (!thead.length) {\n thead = $('<thead/>').insertBefore(that.tbody);\n }\n if (that.lockedHeader && that.thead) {\n tr = that.thead.find('tr:has(th):not(.k-filter-row)').html('');\n tr.remove();\n tr = $();\n that._removeLockedContainers();\n } else if (hasTHead) {\n tr = that.element.find('thead:first tr:has(th):not(.k-filter-row)');\n } else {\n tr = that.element.find('tr:has(th):first');\n }\n if (!tr.length) {\n tr = thead.children().first();\n if (!tr.length) {\n var rows = [{\n rowSpan: 1,\n cells: [],\n index: 0\n }];\n that._prepareColumns(rows, columns);\n for (idx = 0; idx < rows.length; idx++) {\n html += '<tr>';\n if (hasDetails) {\n html += '<th class=\"k-hierarchy-cell\" scope=\"col\">' + headerContent + '</th>';\n }\n html += that._createHeaderCells(rows[idx].cells, rows[idx].rowSpan);\n html += '</tr>';\n }\n tr = $(html);\n }\n } else {\n for (idx = 0; idx < columns.length; idx++) {\n var columnIndex = inArray(columns[idx], leafColumns(columns));\n var cell = leafDataCells(tr.parent()).filter('th:not(.k-group-cell):not(.k-hierarchy-cell)').eq(columnIndex);\n if (columns[idx].hidden && columnIndex >= 0) {\n cell[0].style.display = 'none';\n }\n }\n that._updateHeadersAttr(childColumns(columns));\n }\n if (hasFilterRow) {\n var filterRow = $('<tr/>');\n filterRow.addClass('k-filter-row');\n if (hasDetails || tr.find('.k-hierarchy-cell').length) {\n filterRow.prepend('<th class=\"k-hierarchy-cell\" scope=\"col\"> </th>');\n }\n var existingFilterRow = (that.thead || thead).find('.k-filter-row');\n if (existingFilterRow.length) {\n kendo.destroy(existingFilterRow);\n existingFilterRow.remove();\n }\n thead.append(filterRow);\n }\n if (!tr.children().length) {\n html = '';\n if (hasDetails) {\n html += '<th class=\"k-hierarchy-cell\" scope=\"col\"> </th>';\n }\n html += that._createHeaderCells(columns);\n tr.html(html);\n } else if (hasDetails && !tr.find('.k-hierarchy-cell')[0]) {\n tr.prepend('<th class=\"k-hierarchy-cell\" scope=\"col\">' + (headerContent ? headerContent : ' ') + '</th>');\n }\n tr.attr('role', 'row').find('th').addClass('k-header');\n if (!that.options.scrollable) {\n thead.addClass('k-grid-header');\n }\n tr.find('script').remove().end().prependTo(thead);\n if (that.thead) {\n that._destroyColumnAttachments();\n }\n this.angular('cleanup', function () {\n return { elements: thead.find('th' + NAVCELL).get() };\n });\n this.angular('compile', function () {\n return {\n elements: thead.find(HEADERCELLS).get(),\n data: map(columns, function (col) {\n return { column: col };\n })\n };\n });\n that.thead = thead.attr('role', 'rowgroup');\n that._sortable();\n that._filterable();\n that._filterRow();\n that._scrollable();\n that._columnMenu();\n var syncHeight;\n var hasLockedColumns = this.options.scrollable && lockedColumns(this.columns).length;\n if (hasLockedColumns) {\n syncHeight = that._appendLockedColumnHeader(that.thead.closest('.k-grid-header'));\n that._appendLockedColumnContent();\n that.lockedContent.bind('DOMMouseScroll' + NS + ' mousewheel' + NS, proxy(that._wheelScroll, that));\n that._updateLockedCols();\n }\n that._updateCols();\n that._updateColumnCellIndex();\n that._updateFirstColumnClass();\n that._resizable();\n that._draggable();\n that._reorderable();\n that._updateHeader(that._groups());\n if (hasLockedColumns) {\n if (syncHeight) {\n that._syncLockedHeaderHeight();\n }\n that._applyLockedContainersWidth();\n }\n if (that.groupable) {\n that._attachGroupable();\n }\n },\n _retrieveFirstColumn: function (columns, rows) {\n var result = $();\n if (rows.length && columns[0]) {\n var column = columns[0];\n while (column.columns && column.columns.length) {\n column = column.columns[0];\n rows = rows.filter(':not(:first())');\n }\n result = result.add(rows);\n }\n return result;\n },\n _updateFirstColumnClass: function () {\n var that = this, columns = that.columns || [], hasDetails = that._hasDetails() && columns.length;\n if (!hasDetails && !that._groups()) {\n var tr = that.thead.find('>tr:not(.k-filter-row):not(:first)');\n columns = nonLockedColumns(columns);\n var rows = that._retrieveFirstColumn(columns, tr);\n if (that._isLocked()) {\n tr = that.lockedHeader.find('thead>tr:not(.k-filter-row):not(:first)');\n columns = lockedColumns(that.columns);\n rows = rows.add(that._retrieveFirstColumn(columns, tr));\n }\n rows.each(function () {\n var ths = $(this).find('th');\n ths.removeClass('k-first');\n ths.eq(0).addClass('k-first');\n });\n }\n },\n _prepareColumns: function (rows, columns, parentCell, parentRow) {\n var row = parentRow || rows[rows.length - 1];\n var childRow = rows[row.index + 1];\n var totalColSpan = 0;\n for (var idx = 0; idx < columns.length; idx++) {\n var cell = {\n column: columns[idx],\n colSpan: 0\n };\n row.cells.push(cell);\n if (columns[idx].columns && columns[idx].columns.length) {\n if (!childRow) {\n childRow = {\n rowSpan: 0,\n cells: [],\n index: rows.length\n };\n rows.push(childRow);\n }\n cell.colSpan = columns[idx].columns.length;\n this._prepareColumns(rows, columns[idx].columns, cell, childRow);\n totalColSpan += cell.colSpan - 1;\n row.rowSpan = rows.length - row.index;\n }\n }\n if (parentCell) {\n parentCell.colSpan += totalColSpan;\n }\n },\n _wheelScroll: function (e) {\n if (e.ctrlKey) {\n return;\n }\n var content = this.content;\n if (this.options.scrollable.virtual) {\n content = this.virtualScrollable.verticalScrollbar;\n }\n var scrollTop = content.scrollTop(), delta = kendo.wheelDeltaY(e);\n if (delta) {\n if (content[0].scrollHeight > content[0].clientHeight && (content[0].scrollTop < content[0].scrollHeight - content[0].clientHeight && delta < 0 || content[0].scrollTop > 0 && delta > 0)) {\n e.preventDefault();\n }\n content.scrollTop(scrollTop + -delta);\n }\n },\n _isLocked: function () {\n return this.lockedHeader != null;\n },\n _updateHeaderCols: function () {\n var table = this.thead.parent().add(this.table);\n if (this._isLocked()) {\n normalizeCols(table, visibleLeafColumns(visibleNonLockedColumns(this.columns)), this._hasDetails(), 0);\n } else {\n normalizeCols(table, visibleLeafColumns(visibleColumns(this.columns)), this._hasDetails(), 0);\n }\n },\n _updateColumnSorters: function () {\n var that = this;\n var cells = leafDataCells(that.thead);\n var columns = leafColumns(that.columns);\n var column;\n var cell;\n var sorterInstance;\n if (!that.options.sortable) {\n return;\n }\n for (var idx = 0, length = cells.length; idx < length; idx++) {\n column = columns[idx];\n if (column.sortable !== false && !column.command && column.field) {\n cell = cells.eq(idx);\n sorterInstance = cell.data('kendoColumnSorter');\n if (sorterInstance) {\n sorterInstance.refresh();\n }\n }\n }\n },\n _updateHeadersAttr: function (columns) {\n if (!columns.length) {\n return;\n }\n var that = this;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].headerAttributes) {\n var th = that.element.find('[id=\\'' + columns[i].headerAttributes.id + '\\']');\n th.attr('headers', columns[i].headerAttributes.headers);\n }\n }\n that._updateHeadersAttr(childColumns(columns));\n },\n _updateCols: function (table) {\n table = table || this.thead.parent().add(this.table);\n this._appendCols(table, this._isLocked());\n },\n _updateLockedCols: function (table) {\n if (this._isLocked()) {\n table = table || this.lockedHeader.find('table').add(this.lockedTable);\n normalizeCols(table, visibleLeafColumns(visibleLockedColumns(this.columns)), this._hasDetails(), this._groups());\n }\n },\n _appendCols: function (table, locked) {\n if (locked) {\n normalizeCols(table, visibleLeafColumns(visibleNonLockedColumns(this.columns)), this._hasDetails(), 0);\n } else {\n normalizeCols(table, visibleLeafColumns(visibleColumns(this.columns)), this._hasDetails(), this._groups());\n }\n },\n _autoColumns: function (schema) {\n if (schema && schema.toJSON) {\n var that = this, field, encoded;\n schema = schema.toJSON();\n encoded = !(that.table.find('tbody tr').length > 0 && (!that.dataSource || !that.dataSource.transport));\n for (field in schema) {\n that.columns.push({\n field: field,\n encoded: encoded,\n headerAttributes: { id: kendo.guid() }\n });\n }\n that._thead();\n that._templates();\n }\n },\n _rowsHtml: function (data, templates) {\n var that = this, html = '', idx, rowTemplate = templates.rowTemplate, altRowTemplate = templates.altRowTemplate, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (that._skipRerenderItemsCount > 0) {\n that._skipRerenderItemsCount--;\n } else {\n if (idx % 2) {\n html += altRowTemplate(data[idx]);\n } else {\n html += rowTemplate(data[idx]);\n }\n }\n that._data.push(data[idx]);\n }\n return html;\n },\n _groupData: function (group, skipFooter, firstColumn) {\n var that = this, footerDefaults = that._groupAggregatesDefaultObject || {}, groupItems = group.items, aggregates = extend({}, footerDefaults, group.aggregates), headerData = extend({}, {\n field: group.field,\n value: group.value,\n items: groupItems,\n aggregates: aggregates\n }, group.aggregates[firstColumn ? firstColumn.field : group.field]), footerData = {};\n if (!skipFooter) {\n for (var aggregate in aggregates) {\n footerData[aggregate] = extend({}, aggregates[aggregate], {\n group: {\n field: group.field,\n value: group.value,\n items: groupItems\n }\n });\n }\n }\n return extend({}, footerData, headerData);\n },\n _groupRowHtml: function (group, colspan, level, groupHeaderBuilder, templates, skipColspan, skipLastGroup) {\n var that = this, html = '', idx, length, field = group.field, column = grep(leafColumns(that.columns), function (column) {\n return column.field == field;\n })[0] || {}, firstColumn = visibleColumns(that.columns)[0], firstVisibleColumnGroupHeaderTemplate = firstColumn ? firstColumn.groupHeaderColumnTemplate : null, template = column.groupHeaderTemplate ? column.groupHeaderTemplate : firstVisibleColumnGroupHeaderTemplate, text = (column.title || field) + ': ' + formatGroupValue(group.value, column.format, column.values, column.encoded), groupItems = group.items, groups = that._groups(), groupFooterTemplate = templates.groupFooterTemplate, groupHeaderColumnTemplate = templates.groupHeaderColumnTemplate, groupData;\n if (templates.groupFooterTemplate || templates.groupHeaderColumnTemplate || column.groupHeaderTemplate) {\n groupData = that._groupData(group, false, !column.groupHeaderTemplate && visibleColumns(that.columns)[0].groupHeaderColumnTemplate ? visibleColumns(that.columns)[0] : false);\n }\n if (template && !skipColspan) {\n text = typeof template === FUNCTION ? template(groupData) : kendo.template(template)(groupData);\n }\n if (!that._skipRerenderItemsCount) {\n if (groupHeaderColumnTemplate) {\n html += groupHeaderColumnTemplate(extend({}, groupData, {\n groupCells: level,\n colspan: groups - level,\n text: text\n }));\n } else {\n html += groupHeaderBuilder(colspan, level, text);\n }\n } else {\n groupHeaderBuilder(colspan, level, text);\n }\n if (group.hasSubgroups) {\n for (idx = 0, length = groupItems.length; idx < length; idx++) {\n html += that._groupRowHtml(groupItems[idx], skipColspan ? colspan : colspan - 1, level + 1, groupHeaderBuilder, templates, skipColspan, skipLastGroup && idx === groupItems.length - 1);\n }\n } else {\n html += that._rowsHtml(groupItems, templates);\n }\n if (groupFooterTemplate) {\n if (skipLastGroup) {\n if (!inArray(group.value, that._skippedGroups)) {\n that._skippedGroups.push(group.value);\n }\n } else {\n if (that._skippedGroups.length && that._skippedGroups[0] === group.value) {\n that._skippedGroups.shift();\n }\n if (!that._skipRerenderItemsCount) {\n html += groupFooterTemplate(groupData);\n }\n }\n }\n return html;\n },\n collapseGroup: function (group) {\n var level, that = this, groupToCollapse = group, groupable = this.options.groupable, showFooter = groupable.showFooter, footerCount = showFooter ? 0 : 1, offset, relatedGroup = $(), idx, length, tr;\n group = $(group);\n if (this._isLocked()) {\n if (!group.closest('div').hasClass('k-grid-content-locked')) {\n relatedGroup = group.nextAll('tr');\n group = this.lockedTable.find('>tbody>tr:eq(' + group.index() + ')');\n } else {\n relatedGroup = this.tbody.children('tr:eq(' + group.index() + ')').nextAll('tr');\n }\n }\n level = group.find('.k-group-cell').length;\n group.find('.k-i-collapse').addClass('k-i-expand').removeClass('k-i-collapse');\n group.find('td[aria-expanded=\\'true\\']:first').attr('aria-expanded', false).find('a').attr(ARIALABEL, EXPAND);\n group = group.nextAll('tr');\n var toHide = [];\n for (idx = 0, length = group.length; idx < length; idx++) {\n tr = group.eq(idx);\n offset = tr.find('.k-group-cell').length;\n if (tr.hasClass('k-grouping-row')) {\n footerCount++;\n } else if (tr.hasClass('k-group-footer')) {\n footerCount--;\n }\n if (offset <= level || tr.hasClass('k-group-footer') && footerCount < 0) {\n break;\n }\n if (relatedGroup.length) {\n toHide.push(relatedGroup[idx]);\n }\n toHide.push(tr[0]);\n }\n $(toHide).hide();\n if (this.options.scrollable.endless && this.content) {\n clearTimeout(that._collapseGroupsTimeOut);\n that._collapseGroupsTimeOut = setTimeout(function () {\n that.content.scroll();\n that._groupToCollapse = groupToCollapse;\n });\n }\n },\n expandGroup: function (group) {\n group = $(group);\n var that = this, showFooter = that.options.groupable.showFooter, level, tr, offset, relatedGroup = $(), idx, length, footersVisibility = [], groupsCount = 1;\n if (this._isLocked()) {\n if (!group.closest('div').hasClass('k-grid-content-locked')) {\n relatedGroup = group.nextAll('tr');\n group = this.lockedTable.find('>tbody>tr:eq(' + group.index() + ')');\n } else {\n relatedGroup = this.tbody.children('tr:eq(' + group.index() + ')').nextAll('tr');\n }\n }\n level = group.find('.k-group-cell').length;\n group.find('.k-i-expand').addClass('k-i-collapse').removeClass('k-i-expand');\n group.find('td[aria-expanded=\\'false\\']:first').attr('aria-expanded', true).find('a').attr(ARIALABEL, COLLAPSE);\n group = group.nextAll('tr');\n for (idx = 0, length = group.length; idx < length; idx++) {\n tr = group.eq(idx);\n offset = tr.find('.k-group-cell').length;\n if (offset <= level) {\n break;\n }\n if (offset == level + 1 && !tr.hasClass('k-detail-row')) {\n tr.show();\n relatedGroup.eq(idx).show();\n if (tr.hasClass('k-grouping-row') && tr.find('.k-icon').hasClass('k-i-collapse')) {\n that.expandGroup(tr);\n }\n if (tr.hasClass('k-master-row') && tr.find('.k-icon').hasClass('k-i-collapse')) {\n tr.next().show();\n relatedGroup.eq(idx + 1).show();\n }\n }\n if (tr.hasClass('k-grouping-row')) {\n if (showFooter) {\n footersVisibility.push(tr.is(':visible'));\n }\n groupsCount++;\n }\n if (tr.hasClass('k-group-footer')) {\n if (showFooter) {\n var toggleVisibility = footersVisibility.pop();\n tr.toggle(toggleVisibility);\n relatedGroup.eq(idx).toggle(toggleVisibility);\n }\n if (groupsCount == 1) {\n tr.show();\n relatedGroup.eq(idx).show();\n } else {\n groupsCount--;\n }\n }\n }\n if (level === 0 && that.options.scrollable.endless && this._isLocked()) {\n that._syncLockedContentHeight();\n }\n },\n _updateHeader: function (groups) {\n var that = this, container = that._isLocked() ? that.lockedHeader.find('thead') : that.thead, filterCells = container.find('tr.k-filter-row').find('th.k-group-cell').length, length = container.find('tr:first').find('th.k-group-cell').length, rows = container.children('tr:not(:first)').filter(function () {\n return !$(this).children(':visible').length;\n });\n if (groups > length) {\n $(new Array(groups - length + 1).join('<th class=\"k-group-cell k-header\" scope=\"col\">' + that.options.messages.expandCollapseColumnHeader + '</th>')).prependTo(container.children('tr:not(.k-filter-row)'));\n if (that.element.is(':visible')) {\n rows.find('th.k-group-cell').hide();\n }\n } else if (groups < length) {\n container.find('tr').each(function () {\n $(this).find('th.k-group-cell').filter(':eq(' + groups + '),' + ':gt(' + groups + ')').remove();\n });\n }\n if (groups > filterCells) {\n $(new Array(groups - filterCells + 1).join('<th class=\"k-group-cell k-header\" scope=\"col\"> </th>')).prependTo(container.find('.k-filter-row'));\n }\n },\n _firstDataItem: function (data, grouped) {\n if (data && grouped) {\n if (data.hasSubgroups) {\n data = this._firstDataItem(data.items[0], grouped);\n } else {\n data = data.items[0];\n }\n }\n return data;\n },\n _updateTablesWidth: function () {\n var that = this, tables;\n if (!that._isLocked()) {\n return;\n }\n tables = $('>.k-grid-footer>.k-grid-footer-wrap>table', that.wrapper).add(that.thead.parent()).add(that.table);\n that._footerWidth = tableWidth(tables.eq(0));\n tables.width(that._footerWidth);\n tables = $('>.k-grid-footer>.k-grid-footer-locked>table', that.wrapper).add(that.lockedHeader.find('>table')).add(that.lockedTable);\n tables.width(tableWidth(tables.eq(0)));\n },\n hideColumn: function (column) {\n var that = this, cell, tables, idx, cols, colWidth, position, width = 0, headerCellIndex, length, footer = that.footer || that.wrapper.find('.k-grid-footer'), columns = that.columns, visibleLocked = that.lockedHeader ? leafDataCells(that.lockedHeader.find('>table>thead')).filter(isCellVisible).length : 0, columnIndex, groupHeaderColumnTemplateColumns = grep(leafColumns(that.columns), function (column) {\n return column.groupHeaderColumnTemplate;\n });\n if (typeof column == 'number') {\n column = columns[column];\n } else if (isPlainObject(column)) {\n column = grep(flatColumns(columns), function (item) {\n return item === column;\n })[0];\n } else {\n column = grep(flatColumns(columns), function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || !isVisible(column)) {\n return;\n }\n var setColumnVisibility = that._columnVisibilitySetter(column);\n if (column.columns && column.columns.length) {\n position = columnVisiblePosition(column, columns);\n setColumnVisibility(column, false);\n setCellVisibility(elements($('>table>thead', that.lockedHeader), that.thead, '>tr:eq(' + position.row + ')>th'), position.cell, false);\n for (idx = 0; idx < column.columns.length; idx++) {\n this.hideColumn(column.columns[idx]);\n }\n that.trigger(COLUMNHIDE, { column: column });\n return;\n }\n columnIndex = inArray(column, visibleColumns(leafColumns(columns)));\n setColumnVisibility(column, false);\n that._setParentsVisibility(column, false);\n that._templates();\n that._updateCols();\n that._updateLockedCols();\n var container = that.thead;\n headerCellIndex = columnIndex;\n if (that.lockedHeader && visibleLocked > columnIndex) {\n container = that.lockedHeader.find('>table>thead');\n } else {\n headerCellIndex -= visibleLocked;\n }\n cell = leafDataCells(container).filter(isCellVisible).eq(headerCellIndex);\n cell[0].style.display = 'none';\n setCellVisibility(elements($('>table>thead', that.lockedHeader), that.thead, '>tr.k-filter-row>th'), columnIndex, false);\n if (footer[0]) {\n that._updateCols(footer.find('>.k-grid-footer-wrap>table'));\n that._updateLockedCols(footer.find('>.k-grid-footer-locked>table'));\n setCellVisibility(footer.find('.k-footer-template>td'), columnIndex, false);\n }\n if (that.lockedTable && visibleLocked > columnIndex) {\n hideColumnCells(that.lockedTable.find('>tbody>tr'), columnIndex);\n } else {\n hideColumnCells(that.tbody.children(), columnIndex - visibleLocked);\n }\n if (that.lockedTable) {\n that._updateTablesWidth();\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n that._syncLockedFooterHeight();\n } else {\n cols = that.thead.prev().find('col');\n for (idx = 0, length = cols.length; idx < length; idx += 1) {\n colWidth = cols[idx].style.width;\n if (colWidth && colWidth.indexOf('%') == -1) {\n width += parseInt(colWidth, 10);\n } else {\n width = 0;\n break;\n }\n }\n tables = $('>.k-grid-header table:first,>.k-grid-footer table:first', that.wrapper).add(that.table);\n that._footerWidth = null;\n if (width) {\n tables.each(function () {\n this.style.width = width + 'px';\n });\n that._footerWidth = width;\n that._setContentWidth();\n }\n if (browser.msie && browser.version == 8) {\n tables.css('display', 'inline-table');\n setTimeout(function () {\n tables.css('display', 'table');\n }, 1);\n }\n }\n that._updateFirstColumnClass();\n if (groupHeaderColumnTemplateColumns.length > 0) {\n that._renderGroupRows();\n }\n that.trigger(COLUMNHIDE, { column: column });\n },\n _setParentsVisibility: function (column, visible) {\n var that = this;\n var columns = that.columns;\n var idx;\n var parents = [];\n var parent;\n var position;\n var cell;\n var colSpan;\n var setColumnVisibility = that._columnVisibilitySetter(column);\n var predicate = visible ? function (p) {\n return visibleColumns(p.columns).length && p.hidden;\n } : function (p) {\n return !visibleColumns(p.columns).length && !p.hidden;\n };\n if (columnParents(column, columns, parents) && parents.length) {\n for (idx = parents.length - 1; idx >= 0; idx--) {\n parent = parents[idx];\n position = columnPosition(parent, columns);\n cell = elements($('>table>thead', this.lockedHeader), this.thead, '>tr:eq(' + position.row + ')>th:not(.k-group-cell):not(.k-hierarchy-cell)').eq(position.cell);\n if (predicate(parent)) {\n setColumnVisibility(parent, visible);\n cell[0].style.display = visible ? '' : 'none';\n }\n if (cell.filter('[' + kendo.attr('colspan') + ']').length) {\n colSpan = parseInt(cell.attr(kendo.attr('colspan')), 10);\n cell[0].colSpan = colSpan - hiddenLeafColumnsCount(parent.columns) || 1;\n }\n }\n }\n },\n showColumn: function (column) {\n var that = this, idx, length, cell, tables, width, headerCellIndex, position, colWidth, cols, columns = that.columns, footer = that.footer || that.wrapper.find('.k-grid-footer'), lockedColumnsCount = that.lockedHeader ? leafDataCells(that.lockedHeader.find('>table>thead')).length : 0, columnIndex, originalColumn, columnLeafIndex, groupHeaderColumnTemplateColumns = grep(leafColumns(that.columns), function (column) {\n return column.groupHeaderColumnTemplate;\n });\n if (typeof column == 'number') {\n columnIndex = column;\n column = columns[column];\n } else if (isPlainObject(column)) {\n $.each(flatColumns(columns), function (index, item) {\n if (item === column) {\n column = item;\n columnIndex = index;\n return false;\n }\n });\n } else {\n $.each(flatColumns(columns), function (index, item) {\n if (item.field === column) {\n column = item;\n columnIndex = index;\n return false;\n }\n });\n }\n if (!column || isVisible(column)) {\n return;\n }\n var setColumnVisibility = that._columnVisibilitySetter(column);\n if (column.columns && column.columns.length) {\n position = columnPosition(column, columns);\n originalColumn = flatColumns(that.options.columns)[columnIndex];\n setColumnVisibility(column, true);\n setCellVisibility(elements($('>table>thead', that.lockedHeader), that.thead, '>tr:eq(' + position.row + ')>th'), position.cell, true);\n for (idx = 0; idx < column.columns.length; idx++) {\n if (!originalColumn.columns[idx].hidden) {\n this.showColumn(column.columns[idx]);\n }\n }\n that.trigger(COLUMNSHOW, { column: column });\n return;\n }\n columnLeafIndex = inArray(column, leafColumns(columns));\n setColumnVisibility(column, true);\n that._setParentsVisibility(column, true);\n that._templates();\n that._updateCols();\n that._updateLockedCols();\n var container = that.thead;\n headerCellIndex = columnLeafIndex;\n if (that.lockedHeader && lockedColumnsCount > columnLeafIndex) {\n container = that.lockedHeader.find('>table>thead');\n } else {\n headerCellIndex -= lockedColumnsCount;\n }\n cell = leafDataCells(container).eq(headerCellIndex);\n cell[0].style.display = '';\n setCellVisibility(elements($('>table>thead', that.lockedHeader), that.thead, '>tr.k-filter-row>th'), columnLeafIndex, true);\n if (footer[0]) {\n that._updateCols(footer.find('>.k-grid-footer-wrap>table'));\n that._updateLockedCols(footer.find('>.k-grid-footer-locked>table'));\n setCellVisibility(footer.find('.k-footer-template>td'), columnLeafIndex, true);\n }\n if (that.lockedTable && lockedColumnsCount > columnLeafIndex) {\n showColumnCells(that.lockedTable.find('>tbody>tr'), columnLeafIndex);\n } else {\n showColumnCells(that.tbody.children(), columnLeafIndex - lockedColumnsCount);\n }\n if (that.lockedTable) {\n that._updateTablesWidth();\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n } else {\n tables = $('>.k-grid-header table:first,>.k-grid-footer table:first', that.wrapper).add(that.table);\n if (!column.width) {\n tables.width('');\n } else {\n width = 0;\n cols = that.thead.prev().find('col');\n for (idx = 0, length = cols.length; idx < length; idx += 1) {\n colWidth = cols[idx].style.width;\n if (colWidth.indexOf('%') > -1) {\n width = 0;\n break;\n }\n width += parseInt(colWidth, 10);\n }\n that._footerWidth = null;\n if (width) {\n tables.each(function () {\n this.style.width = width + 'px';\n });\n that._footerWidth = width;\n that._setContentWidth();\n }\n }\n }\n that._updateFirstColumnClass();\n if (groupHeaderColumnTemplateColumns.length > 0) {\n that._renderGroupRows();\n }\n that.trigger(COLUMNSHOW, { column: column });\n },\n _columnVisibilitySetter: function (column) {\n var col = column || {};\n if (isUndefined(col.media)) {\n return setColumnVisibility;\n } else {\n return setColumnMediaVisibility;\n }\n },\n _progress: function (toggle) {\n var element = this.element;\n var endless = this.options.scrollable && this.options.scrollable.endless;\n if (this._editContainer && this._editMode() === 'popup') {\n element = this._editContainer;\n } else if (this.lockedContent || endless) {\n element = this.wrapper;\n } else if (this.element.is('table')) {\n element = this.element.parent();\n } else if (this.content && this.content.length) {\n element = this.content;\n }\n if (endless && toggle) {\n kendo.ui.progress(element, toggle, {\n height: this.content.height(),\n top: this.content[0].offsetTop,\n opacity: true\n });\n } else {\n kendo.ui.progress(element, toggle);\n }\n },\n _resize: function (size, force) {\n this._syncLockedContentHeight();\n this._syncLockedHeaderHeight();\n if (this.content) {\n this._setContentWidth();\n this._setContentHeight();\n }\n if (this.lockedTable) {\n this._syncLockedScroll();\n }\n if (this.virtualScrollable && (force || this._rowHeight)) {\n if (force) {\n this._rowHeight = null;\n }\n this.virtualScrollable.repaintScrollbar();\n }\n if (this.pager && this.pager.element) {\n this.pager.resize(force);\n }\n },\n _isActiveInTable: function () {\n var active = activeElement();\n if (!active) {\n return false;\n }\n return this.table[0] === active || $.contains(this.table[0], active) || this._isLocked() && (this.lockedTable[0] === active || $.contains(this.lockedTable[0], active));\n },\n refresh: function (e) {\n var that = this, data = that.dataSource.view(), navigatable = that.options.navigatable, currentIndex, current = $(that.current()), isCurrentInHeader = false, groups = (that.dataSource.group() || []).length, colspan = groups + visibleLeafColumns(visibleColumns(that.columns)).length, contentScrollLeft, cachedItemsToSkip;\n if (e && e.action === 'itemchange' && (that.editable || that.options.scrollable.endless)) {\n if (this._editMode() != 'popup' || this._editMode() === 'popup' && !that._editableIsClosing) {\n return;\n }\n }\n if (e && e.action === 'remove' && that.editable && that.editable.options.model && inArray(that.editable.options.model, e.items) > -1) {\n that.editable.options.model.unbind(CHANGE, that._modelChangeHandler);\n }\n e = e || {};\n if (that.trigger('dataBinding', {\n action: e.action || 'rebind',\n index: e.index,\n items: e.items\n })) {\n return;\n }\n if (e.action === SYNC && that._isVirtualEditable()) {\n that._destroyEditable();\n that._clearEditableState();\n }\n that._angularItems('cleanup');\n if (!that._endlessFetchInProgress) {\n if (navigatable && (that._isActiveInTable() || that._editContainer && that._editContainer.data('kendoWindow'))) {\n isCurrentInHeader = current.is('th');\n currentIndex = isCurrentInHeader ? current.parent().children(':not(.k-group-cell)').index(current[0]) : Math.max(that.cellIndex(current), 0);\n }\n that._destroyEditable();\n }\n if (that.options.scrollable && that.options.scrollable.endless) {\n clearTimeout(that._progressTimeOut);\n that._progressTimeOut = setTimeout(function () {\n if (!that._endlessFetchInProgress) {\n that._progress(false);\n }\n }, 100);\n } else {\n that._progress(false);\n }\n that._hideResizeHandle();\n that._data = [];\n if (!that.columns.length) {\n that._autoColumns(that._firstDataItem(data[0], groups));\n colspan = groups + that.columns.length;\n }\n that._group = groups > 0 || that._group;\n if (that._group) {\n that._templates();\n that._updateCols();\n that._updateLockedCols();\n that._updateHeader(groups);\n that._group = groups > 0;\n that._groupRows = groupRows(data);\n }\n if (that.content) {\n contentScrollLeft = that.content.scrollLeft();\n }\n cachedItemsToSkip = that._skipRerenderItemsCount;\n that._renderContent(data, colspan, groups);\n if (that.options.scrollable && that.options.scrollable.endless && this.lockedContent) {\n that._skipRerenderItemsCount = cachedItemsToSkip;\n }\n that._renderLockedContent(data, colspan, groups);\n that._footer();\n that._renderNoRecordsContent();\n that._togglePagerVisibility();\n that._setContentHeight();\n that._setContentWidth(that.content && contentScrollLeft);\n if (that.lockedTable) {\n if (that.options.scrollable.virtual) {\n that.content.find('>.k-virtual-scrollable-wrap').trigger('scroll');\n } else if (that.touchScroller) {\n that.touchScroller.movable.trigger('change');\n } else {\n that.wrapper.one('scroll', function (e) {\n e.stopPropagation();\n });\n that.content.trigger('scroll');\n }\n }\n if (!that._endlessFetchInProgress) {\n that._restoreCurrent(currentIndex, isCurrentInHeader);\n }\n if (that.touchScroller) {\n that.touchScroller.contentResized();\n }\n if (that.selectable) {\n that.selectable.resetTouchEvents();\n }\n that._muteAngularRebind(function () {\n that._angularItems('compile');\n });\n if (that._checkBoxSelection) {\n that._toggleHeaderCheckState(false);\n }\n if (that.options.persistSelection && (that.selectable && !kendo.ui.Selectable.parseOptions(that.options.selectable).cell || that._checkBoxSelection) && that.items().length) {\n that._restoreSelection();\n } else {\n that._selectedIds = {};\n }\n that.trigger(DATABOUND);\n },\n _restoreCurrent: function (currentIndex, isCurrentInHeader) {\n if (currentIndex === undefined || currentIndex < 0) {\n return;\n }\n this._removeCurrent();\n if (isCurrentInHeader) {\n this._setCurrent(this.thead.find('th:not(.k-group-cell)').eq(currentIndex));\n } else {\n var rowIndex = 0;\n if (this._rowVirtualIndex) {\n rowIndex = this.virtualScrollable.position(this._rowVirtualIndex);\n } else {\n currentIndex = 0;\n }\n var row = $();\n if (this.lockedTable) {\n row = this.lockedTable.find('>tbody>tr').eq(rowIndex);\n }\n row = row.add(this.tbody.children().eq(rowIndex));\n var td = row.find('>td:not(.k-group-cell):not(.k-hierarchy-cell)').eq(currentIndex);\n this._setCurrent(td);\n }\n if (this._current) {\n focusTable(this._current.closest('table')[0], true);\n }\n },\n _restoreSelection: function () {\n var that = this, allRows = that.items(), selectedRows, id = isFunction(that.dataSource.options.schema.model) ? that.dataSource.options.schema.model.fn.idField : that.dataSource.options.schema.model.id;\n selectedRows = grep(allRows, function (row) {\n var dataItemKey = that.dataItem(row)[id];\n if (that._selectedIds[dataItemKey]) {\n return row;\n }\n });\n that.select(selectedRows);\n },\n _angularItems: function (cmd) {\n kendo.ui.DataBoundWidget.fn._angularItems.call(this, cmd);\n if (cmd === 'cleanup' && (!this.dataSource || !this.dataSource.options.endless)) {\n this._cleanupDetailItems();\n }\n this._angularGroupItems(cmd);\n this._angularGroupFooterItems(cmd);\n },\n _cleanupDetailItems: function () {\n var that = this;\n if (that._hasDetails()) {\n that.angular('cleanup', function () {\n return { elements: that.tbody.children('.k-detail-row') };\n });\n that.tbody.find('.k-detail-cell').empty();\n }\n },\n _angularGroupItems: function (cmd) {\n var that = this, container = that.tbody;\n if (that.lockedContent) {\n container = that.lockedTable.find('tbody');\n }\n if (that._group) {\n that.angular(cmd, function () {\n return {\n elements: container.children('.k-grouping-row'),\n data: $.map(groupRows(that.dataSource.view()), function (dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n }\n },\n _angularGroupFooterItems: function (cmd) {\n var that = this, container = that.tbody;\n if (that.lockedContent) {\n container = that.element;\n }\n if (that._group && that.groupFooterTemplate) {\n that.angular(cmd, function () {\n return {\n elements: container.find('.k-group-footer'),\n data: $.map(groupFooters(that.dataSource.view()), function (dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n }\n },\n _renderContent: function (data, colspan, groups) {\n var that = this, idx, length, html = '', isLocked = that.lockedContent != null, endlessAppend = null, skipLastGroup, flatViewLength, scrollable = that.options.scrollable, templates = {\n rowTemplate: that.rowTemplate,\n altRowTemplate: that.altRowTemplate,\n groupFooterTemplate: that.groupFooterTemplate,\n groupHeaderColumnTemplate: that.groupHeaderColumnTemplate\n };\n if (scrollable && scrollable.endless && !that.dataSource.options.endless) {\n that._skipRerenderItemsCount = 0;\n if (that.content) {\n that.content[0].scrollTop = 0;\n }\n }\n endlessAppend = that._skipRerenderItemsCount > 0;\n colspan = isLocked ? colspan - visibleLeafColumns(visibleLockedColumns(that.columns)).length : colspan;\n if (groups > 0) {\n colspan = isLocked ? colspan - groups : colspan;\n if (that.detailTemplate) {\n colspan++;\n }\n if (that.groupFooterTemplate) {\n that._groupAggregatesDefaultObject = that.dataSource.aggregates();\n }\n if (that.options.scrollable.endless) {\n flatViewLength = that.dataSource.flatView().length;\n }\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (!that._skippedGroups) {\n that._skippedGroups = [];\n }\n skipLastGroup = flatViewLength && idx === data.length - 1 && flatViewLength !== that.dataSource.total();\n html += that._groupRowHtml(data[idx], colspan, 0, isLocked ? groupRowLockedContentBuilder : groupRowBuilder, templates, isLocked, skipLastGroup);\n }\n } else {\n html += that._rowsHtml(data, templates);\n }\n if (endlessAppend) {\n that.tbody.append(html);\n clearTimeout(that._endlessFetchTimeOut);\n that._endlessFetchTimeOut = setTimeout(function () {\n if (that._groupToCollapse) {\n that.collapseGroup(that._groupToCollapse);\n that._groupToCollapse = null;\n }\n });\n that._endlessFetchInProgress = null;\n } else {\n that.tbody = appendContent(that.tbody, that.table, html, this.options.$angular);\n }\n },\n _renderGroupRows: function () {\n var that = this, data = that._groupRows, groupRows = that.wrapper.find('.k-grouping-row'), groups = that._groups(), groupRowBuilderFunc, isLocked = that.lockedContent != null, columns, colspan, group, field, column, template, text, groupHeaderData, tableContainer, isInLockedContainer, prevElement, newGroupRowElement, currentRow, level, groupHeaderColumnTemplate, firstColumnGroupData;\n groupRows.each(function (index, row) {\n currentRow = $(row);\n tableContainer = currentRow.closest('table').parent();\n isInLockedContainer = tableContainer.is('.' + CONTENTRLOCKEDCONTAINER);\n columns = isInLockedContainer ? visibleLeafColumns(visibleColumns(lockedColumns(that.columns))) : visibleLeafColumns(visibleColumns(nonLockedColumns(that.columns)));\n level = currentRow.find('.' + GROUPCELLCLASS).length;\n if (isLocked) {\n groupRowBuilderFunc = isInLockedContainer ? groupRowBuilder : groupRowLockedContentBuilder;\n colspan = isInLockedContainer ? columns.length + groups - level : columns.length;\n } else {\n groupRowBuilderFunc = groupRowBuilder;\n colspan = columns.length + groups - level;\n }\n group = index >= data.length ? data[index - data.length] : data[index];\n field = group.field;\n column = grep(leafColumns(that.columns), function (column) {\n return column.field == field;\n })[0] || {};\n firstColumnGroupData = !column.groupHeaderTemplate && visibleColumns(that.columns)[0].groupHeaderColumnTemplate ? visibleColumns(that.columns)[0] : false;\n template = column.groupHeaderTemplate ? column.groupHeaderTemplate : visibleColumns(that.columns)[0].groupHeaderColumnTemplate;\n text = (column.title || field) + ': ' + formatGroupValue(group.value, column.format, column.values, column.encoded);\n groups = groups;\n groupHeaderData = that._groupData(group, false, firstColumnGroupData);\n groupHeaderColumnTemplate = isInLockedContainer ? that.lockedGroupHeaderColumnTemplate : that.groupHeaderColumnTemplate;\n if (template) {\n text = typeof template === FUNCTION ? template(groupHeaderData) : kendo.template(template)(groupHeaderData);\n }\n prevElement = currentRow.prev().length ? currentRow.prev() : currentRow.parent();\n newGroupRowElement = $(groupHeaderColumnTemplate ? groupHeaderColumnTemplate(extend({}, groupHeaderData, {\n groupCells: level,\n colspan: groups - level,\n text: text\n })) : groupRowBuilderFunc(colspan, level, text));\n if (prevElement.is('tbody')) {\n prevElement.prepend(newGroupRowElement);\n } else {\n prevElement.after(newGroupRowElement);\n }\n currentRow.remove();\n });\n },\n _renderLockedContent: function (data, colspan, groups) {\n var html = '', idx, length, endlessAppend = null, templates = {\n rowTemplate: this.lockedRowTemplate,\n altRowTemplate: this.lockedAltRowTemplate,\n groupFooterTemplate: this.lockedGroupFooterTemplate,\n groupHeaderColumnTemplate: this.lockedGroupHeaderColumnTemplate\n };\n if (this.lockedContent) {\n var table = this.lockedTable;\n endlessAppend = this._skipRerenderItemsCount > 0;\n if (groups > 0) {\n colspan = colspan - visibleColumns(leafColumns(nonLockedColumns(this.columns))).length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n html += this._groupRowHtml(data[idx], colspan, 0, groupRowBuilder, templates, false, this.options.scrollable.endless && idx === data.length - 1);\n }\n } else {\n html = this._rowsHtml(data, templates);\n }\n if (endlessAppend) {\n table.children('tbody').append(html);\n } else {\n appendContent(table.children('tbody'), table, html, this.options.$angular);\n }\n this._syncLockedContentHeight();\n }\n },\n _togglePagerVisibility: function () {\n if (this.options.pageable.alwaysVisible === false) {\n this.wrapper.find('.k-grid-pager').toggle(this.dataSource.total() >= this.dataSource.pageSize());\n }\n },\n _adjustRowsHeight: function (table1, table2) {\n var rows = table1[0].rows, length = rows.length, idx, rows2 = table2[0].rows, containers = table1.add(table2), containersLength = containers.length, heights = [];\n for (idx = 0; idx < length; idx++) {\n if (!rows2[idx]) {\n break;\n }\n if (rows[idx].style.height) {\n rows[idx].style.height = rows2[idx].style.height = '';\n }\n }\n for (idx = 0; idx < length; idx++) {\n if (!rows2[idx]) {\n break;\n }\n var offsetHeight1 = rows[idx].offsetHeight;\n var offsetHeight2 = rows2[idx].offsetHeight;\n var height = 0;\n if (offsetHeight1 > offsetHeight2) {\n height = offsetHeight1;\n } else if (offsetHeight1 < offsetHeight2) {\n height = offsetHeight2;\n }\n heights.push(height);\n }\n for (idx = 0; idx < containersLength; idx++) {\n containers[idx].style.display = 'none';\n }\n for (idx = 0; idx < length; idx++) {\n if (heights[idx]) {\n rows[idx].style.height = rows2[idx].style.height = heights[idx] + 1 + 'px';\n }\n }\n for (idx = 0; idx < containersLength; idx++) {\n containers[idx].style.display = '';\n }\n }\n });\n if (kendo.ExcelMixin) {\n kendo.ExcelMixin.extend(Grid.prototype);\n }\n if (kendo.PDFMixin) {\n kendo.PDFMixin.extend(Grid.prototype);\n Grid.prototype._drawPDF_autoPageBreak = function (progress) {\n var grid = this;\n var result = new $.Deferred();\n var dataSource = grid.dataSource;\n var allPages = grid.options.pdf.allPages;\n var origBody = grid.wrapper.find('table[role$=\"grid\"] > tbody');\n var cont = $('<div>').css({\n position: 'absolute',\n left: -10000,\n top: -10000\n });\n var clone = grid.wrapper.clone().css({\n height: 'auto',\n width: 'auto'\n }).appendTo(cont);\n clone.find('.k-grid-content').css({\n height: 'auto',\n width: 'auto',\n overflow: 'visible'\n });\n clone.find('table[role$=\"grid\"], .k-grid-footer table').css({\n height: 'auto',\n width: '100%',\n overflow: 'visible'\n });\n clone.find('.k-grid-pager, .k-grid-toolbar, .k-grouping-header').remove();\n clone.find('.k-grid-header, .k-grid-footer, .k-auto-scrollable').css({ paddingRight: 0 });\n this._initPDFProgress(progress);\n var body = clone.find('table[role$=\"grid\"] > tbody').empty();\n var startingPage = dataSource.page();\n function resolve() {\n if (allPages && startingPage !== undefined) {\n dataSource.one('change', draw);\n dataSource.page(startingPage);\n } else {\n grid.refresh();\n draw();\n }\n }\n function draw() {\n cont.appendTo(document.body);\n var options = $.extend({}, grid.options.pdf, {\n _destructive: true,\n progress: function (p) {\n progress.notify({\n page: p.page,\n pageNumber: p.pageNum,\n progress: 0.5 + p.pageNum / p.totalPages / 2,\n totalPages: p.totalPages\n });\n }\n });\n kendo.drawing.drawDOM(clone, options).always(function () {\n cont.remove();\n }).then(function (group) {\n result.resolve(group);\n }).fail(function (err) {\n result.reject(err);\n });\n }\n function renderPage() {\n var pageNum = dataSource.page();\n var totalPages = allPages ? dataSource.totalPages() : 1;\n body.append(origBody.find('tr'));\n if (pageNum < totalPages) {\n dataSource.page(pageNum + 1);\n } else {\n dataSource.unbind('change', renderPage);\n resolve();\n }\n }\n if (allPages) {\n dataSource.bind('change', renderPage);\n dataSource.page(1);\n } else {\n renderPage();\n }\n return result.promise();\n };\n Grid.prototype._drawPDF = function (progress) {\n var grid = this;\n if (grid.options.pdf.paperSize && grid.options.pdf.paperSize != 'auto') {\n return grid._drawPDF_autoPageBreak(progress);\n }\n var result = new $.Deferred();\n var dataSource = grid.dataSource;\n var allPages = grid.options.pdf.allPages;\n this._initPDFProgress(progress);\n var doc = new kendo.drawing.Group();\n var startingPage = dataSource.page();\n function resolve() {\n if (allPages && startingPage !== undefined) {\n dataSource.unbind('change', exportPage);\n dataSource.one('change', function () {\n result.resolve(doc);\n });\n dataSource.page(startingPage);\n } else {\n result.resolve(doc);\n }\n }\n function exportPage() {\n grid._drawPDFShadow({ width: grid.wrapper.width() }, { avoidLinks: grid.options.pdf.avoidLinks }).done(function (group) {\n var pageNum = dataSource.page();\n var totalPages = allPages ? dataSource.totalPages() : 1;\n var args = {\n page: group,\n pageNumber: pageNum,\n progress: pageNum / totalPages,\n totalPages: totalPages\n };\n progress.notify(args);\n doc.append(args.page);\n if (pageNum < totalPages) {\n dataSource.page(pageNum + 1);\n } else {\n resolve();\n }\n }).fail(function (err) {\n result.reject(err);\n });\n }\n if (allPages) {\n dataSource.bind('change', exportPage);\n dataSource.page(1);\n } else {\n exportPage();\n }\n return result.promise();\n };\n Grid.prototype._initPDFProgress = function (deferred) {\n var loading = $('<div class=\\'k-loading-pdf-mask\\'><div class=\\'k-loading-color\\'/></div>');\n loading.prepend(this.wrapper.clone().css({\n position: 'absolute',\n top: 0,\n left: 0\n }));\n this.wrapper.append(loading);\n var pb = $('<div class=\\'k-loading-pdf-progress\\'>').appendTo(loading).kendoProgressBar({\n type: 'chunk',\n chunkCount: 10,\n min: 0,\n max: 1,\n value: 0\n }).data('kendoProgressBar');\n deferred.progress(function (e) {\n pb.value(e.progress);\n }).always(function () {\n kendo.destroy(loading);\n loading.remove();\n });\n };\n }\n function syncTableHeight(table1, table2) {\n table1 = table1[0];\n table2 = table2[0];\n if (table1.rows.length !== table2.rows.length) {\n var lockedHeigth = table1.offsetHeight;\n var tableHeigth = table2.offsetHeight;\n var row;\n var diff;\n if (lockedHeigth > tableHeigth) {\n row = table2.rows[table2.rows.length - 1];\n if (filterRowRegExp.test(row.className)) {\n row = table2.rows[table2.rows.length - 2];\n }\n diff = lockedHeigth - tableHeigth;\n } else {\n row = table1.rows[table1.rows.length - 1];\n if (filterRowRegExp.test(row.className)) {\n row = table1.rows[table1.rows.length - 2];\n }\n diff = tableHeigth - lockedHeigth;\n }\n row.style.height = row.offsetHeight + diff + 'px';\n }\n }\n function adjustRowHeight(row1, row2) {\n var height;\n var offsetHeight1 = row1.offsetHeight;\n var offsetHeight2 = row2.offsetHeight;\n if (offsetHeight1 > offsetHeight2) {\n height = offsetHeight1 + 'px';\n } else if (offsetHeight1 < offsetHeight2) {\n height = offsetHeight2 + 'px';\n }\n if (height) {\n row1.style.height = row2.style.height = height;\n }\n }\n function getCommand(commands, name) {\n var idx, length, command;\n if (typeof commands === STRING && commands === name) {\n return commands;\n }\n if (isPlainObject(commands) && commands.name === name) {\n return commands;\n }\n if (isArray(commands)) {\n for (idx = 0, length = commands.length; idx < length; idx++) {\n command = commands[idx];\n if (typeof command === STRING && command === name || command.name === name) {\n return command;\n }\n }\n }\n return null;\n }\n function focusTable(table, direct) {\n if (direct === true) {\n table = $(table);\n var scrollLeft = table.parent().scrollLeft();\n kendo.focusElement(table);\n table.parent().scrollLeft(scrollLeft);\n } else {\n $(table).one('focusin', function (e) {\n e.preventDefault();\n }).focus();\n }\n }\n function isColumnGroupable(grid, column) {\n return grid.options.groupable && (column.groupable || column.groupable === undefined);\n }\n function isGroupedBy(groups, field) {\n return !!$.grep(groups, function (item) {\n return item.field === field;\n }).length;\n }\n function isColumnEditable(column, model) {\n if (!column.field || column.selectable) {\n return false;\n }\n if (model.editable && !model.editable(column.field)) {\n return false;\n }\n if (column.editable && !column.editable(model)) {\n return false;\n }\n return true;\n }\n function isInputElement(element) {\n return $(element).is(':button,a,:input,a>.k-icon,textarea,span.k-select,span.k-icon,span.k-link,label.k-checkbox-label,.k-input,.k-multiselect-wrap,.k-picker-wrap,.k-picker-wrap>.k-selected-color,.k-tool-icon,.k-dropdown');\n }\n function tableClick(e) {\n var currentTarget = $(e.currentTarget), isHeader = currentTarget.is('th'), table = this.table.add(this.lockedTable), headerTable = this.thead.parent().add($('>table', this.lockedHeader)), isInput = isInputElement(e.target), preventScroll = $(e.target).is('.k-checkbox-label, .k-checkbox'), target = $(e.target), currentTable = currentTarget.closest('table')[0];\n if (isInput && currentTarget.find(kendo.roleSelector('filtercell')).length) {\n this._setCurrent(currentTarget);\n return;\n }\n if (currentTable !== table[0] && currentTable !== table[1] && currentTable !== headerTable[0] && currentTable !== headerTable[1]) {\n return;\n }\n if (target.is('a.k-i-expand, a.k-i-collapse')) {\n return;\n }\n if (this.options.navigatable) {\n this._setCurrent(currentTarget, false, preventScroll);\n }\n if (isHeader || !isInput) {\n setTimeout(function () {\n if (!(isIE8 && $(kendo._activeElement()).hasClass('k-widget'))) {\n if ($(kendo._activeElement()).is(CHECKBOXINPUT) || !isInputElement(kendo._activeElement()) || !$.contains(currentTable, kendo._activeElement())) {\n focusTable(currentTable, true);\n }\n }\n });\n }\n if (isHeader && !kendo.support.touch) {\n e.preventDefault();\n }\n }\n function leftMostPosition(element, rtl) {\n if (!rtl) {\n return 0;\n }\n var result = 0;\n if (kendo.support.browser.webkit) {\n result = element.width();\n }\n return result;\n }\n function isInEdit(cell) {\n return cell && (cell.hasClass('k-edit-cell') || cell.parent().hasClass('k-grid-edit-row'));\n }\n function groupCellBuilder(headerTemplateIndex) {\n return '<td colspan=\"#=data.colspan +' + headerTemplateIndex + '#\">' + '<p class=\"k-reset\">' + '<a class=\"k-icon k-i-collapse\" href=\"\\\\#\" tabindex=\"-1\" ' + ARIALABEL + '=\"' + COLLAPSE + '\"></a>#=data.text#' + '</p></td>';\n }\n function groupCellLockedContentBuilder(headerTemplateIndex) {\n return '<td colspan=\"' + headerTemplateIndex + '\">' + '<p class=\"k-reset\"> </p></td>';\n }\n function groupRowBuilder(colspan, level, text) {\n return '<tr role=\"row\" class=\"k-grouping-row\">' + groupCells(level) + '<td colspan=\"' + colspan + '\" aria-expanded=\"true\">' + '<p class=\"k-reset\">' + '<a class=\"k-icon k-i-collapse\" href=\"#\" tabindex=\"-1\" ' + ARIALABEL + '=\"' + COLLAPSE + '\"></a>' + text + '</p></td></tr>';\n }\n function groupRowLockedContentBuilder(colspan) {\n return '<tr role=\"row\" class=\"k-grouping-row\">' + '<td colspan=\"' + colspan + '\" aria-expanded=\"true\">' + '<p class=\"k-reset\"> </p></td></tr>';\n }\n ui.plugin(Grid);\n ui.plugin(VirtualScrollable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.listview', [\n 'kendo.data',\n 'kendo.editable',\n 'kendo.selectable'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'listview',\n name: 'ListView',\n category: 'web',\n description: 'The ListView widget offers rich support for interacting with data.',\n depends: ['data'],\n features: [\n {\n id: 'listview-editing',\n name: 'Editing',\n description: 'Support for record editing',\n depends: ['editable']\n },\n {\n id: 'listview-selection',\n name: 'Selection',\n description: 'Support for selection',\n depends: ['selectable']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, CHANGE = 'change', CANCEL = 'cancel', DATABOUND = 'dataBound', DATABINDING = 'dataBinding', Widget = kendo.ui.Widget, keys = kendo.keys, FOCUSSELECTOR = '>*:not(.k-loading-mask)', PROGRESS = 'progress', ERROR = 'error', FOCUSED = 'k-state-focused', SELECTED = 'k-state-selected', KEDITITEM = 'k-edit-item', EDIT = 'edit', REMOVE = 'remove', SAVE = 'save', MOUSEDOWN = 'mousedown', CLICK = 'click', TOUCHSTART = 'touchstart', NS = '.kendoListView', proxy = $.proxy, activeElement = kendo._activeElement, progress = kendo.ui.progress, DataSource = kendo.data.DataSource;\n var ListView = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n var that = this;\n options = $.isArray(options) ? { dataSource: options } : options;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n that.wrapper = element = that.element;\n if (element[0].id) {\n that._itemId = element[0].id + '_lv_active';\n }\n that._element();\n that._dataSource();\n that._templates();\n that._navigatable();\n that._selectable();\n that._pageable();\n that._crudHandlers();\n that._scrollable();\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n kendo.notify(that);\n },\n events: [\n CHANGE,\n CANCEL,\n DATABINDING,\n DATABOUND,\n EDIT,\n REMOVE,\n SAVE\n ],\n options: {\n name: 'ListView',\n autoBind: true,\n selectable: false,\n navigatable: false,\n height: null,\n template: '',\n altTemplate: '',\n editTemplate: ''\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._templates();\n if (this.selectable) {\n this.selectable.destroy();\n this.selectable = null;\n }\n this._selectable();\n },\n _templates: function () {\n var options = this.options;\n this.template = kendo.template(options.template || '');\n this.altTemplate = kendo.template(options.altTemplate || options.template);\n this.editTemplate = kendo.template(options.editTemplate || '');\n },\n _item: function (action) {\n return this.element.children()[action]();\n },\n items: function () {\n return this.element.children();\n },\n dataItem: function (element) {\n var attr = kendo.attr('uid');\n var uid = $(element).closest('[' + attr + ']').attr(attr);\n return this.dataSource.getByUid(uid);\n },\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._dataSource();\n if (this.options.autoBind) {\n dataSource.fetch();\n }\n },\n _unbindDataSource: function () {\n var that = this;\n that.dataSource.unbind(CHANGE, that._refreshHandler).unbind(PROGRESS, that._progressHandler).unbind(ERROR, that._errorHandler);\n },\n _dataSource: function () {\n var that = this;\n if (that.dataSource && that._refreshHandler) {\n that._unbindDataSource();\n } else {\n that._refreshHandler = proxy(that.refresh, that);\n that._progressHandler = proxy(that._progress, that);\n that._errorHandler = proxy(that._error, that);\n }\n that.dataSource = DataSource.create(that.options.dataSource).bind(CHANGE, that._refreshHandler).bind(PROGRESS, that._progressHandler).bind(ERROR, that._errorHandler);\n },\n _progress: function (toggle) {\n var element = this.element;\n progress(element, toggle, { opacity: true });\n },\n _error: function () {\n progress(this.element, false);\n },\n _element: function () {\n var height = this.options.height;\n this.element.addClass('k-widget k-listview').attr('role', 'listbox');\n if (height) {\n this.element.css('height', height);\n }\n },\n refresh: function (e) {\n var that = this, view = that.dataSource.view(), data, items, item, html = '', idx, length, template = that.template, altTemplate = that.altTemplate, active = activeElement(), endlessAppend = that._endlessFetchInProgress, index = endlessAppend ? that._skipRerenderItemsCount : 0, scrollable = that.options.scrollable;\n e = e || {};\n if (e.action === 'itemchange') {\n if (!that._hasBindingTarget() && !that.editable) {\n data = e.items[0];\n item = that.items().filter('[' + kendo.attr('uid') + '=' + data.uid + ']');\n if (item.length > 0) {\n idx = item.index();\n that.angular('cleanup', function () {\n return { elements: [item] };\n });\n item.replaceWith(template(data));\n item = that.items().eq(idx);\n item.attr(kendo.attr('uid'), data.uid);\n that.angular('compile', function () {\n return {\n elements: [item],\n data: [{ dataItem: data }]\n };\n });\n that.trigger('itemChange', {\n item: item,\n data: data\n });\n }\n }\n return;\n }\n if (that.trigger(DATABINDING, {\n action: e.action || 'rebind',\n items: e.items,\n index: e.index\n })) {\n return;\n }\n that._angularItems('cleanup');\n if (!endlessAppend) {\n that._destroyEditable();\n }\n for (idx = index, length = view.length; idx < length; idx++) {\n if (idx % 2) {\n html += altTemplate(view[idx]);\n } else {\n html += template(view[idx]);\n }\n }\n if (endlessAppend) {\n that.element.append(html);\n } else {\n that.element.html(html);\n }\n items = that.items().not('.k-loading-mask');\n for (idx = index, length = view.length; idx < length; idx++) {\n items.eq(idx).attr(kendo.attr('uid'), view[idx].uid).attr('role', 'option').attr('aria-selected', 'false');\n }\n if (that.element[0] === active && that.options.navigatable) {\n if (that._focusNext) {\n that.current(that.current().next());\n } else {\n if (!scrollable) {\n that.current(items.eq(0));\n }\n }\n }\n that._angularItems('compile');\n that._progress(false);\n that._endlessFetchInProgress = null;\n that.trigger(DATABOUND, {\n action: e.action || 'rebind',\n items: e.items,\n index: e.index\n });\n },\n _pageable: function () {\n var that = this, pageable = that.options.pageable, settings, pagerId;\n if ($.isPlainObject(pageable)) {\n pagerId = pageable.pagerId;\n settings = $.extend({}, pageable, {\n dataSource: that.dataSource,\n pagerId: null\n });\n that.pager = new kendo.ui.Pager($('#' + pagerId), settings);\n }\n },\n _selectable: function () {\n var that = this, multi, current, selectable = that.options.selectable, navigatable = that.options.navigatable;\n if (selectable) {\n multi = kendo.ui.Selectable.parseOptions(selectable).multiple;\n that.selectable = new kendo.ui.Selectable(that.element, {\n aria: true,\n multiple: multi,\n filter: FOCUSSELECTOR,\n change: function () {\n that.trigger(CHANGE);\n }\n });\n if (navigatable) {\n that.element.on('keydown' + NS, function (e) {\n if (e.keyCode === keys.SPACEBAR) {\n current = that.current();\n if (e.target == e.currentTarget) {\n e.preventDefault();\n }\n if (multi) {\n if (!e.ctrlKey) {\n that.selectable.clear();\n } else {\n if (current && current.hasClass(SELECTED)) {\n current.removeClass(SELECTED);\n return;\n }\n }\n } else {\n that.selectable.clear();\n }\n that.selectable.value(current);\n }\n });\n }\n }\n },\n _scrollable: function () {\n var that = this;\n var scrollable = that.options.scrollable;\n if (scrollable) {\n that.element.css({\n 'overflow-y': 'scroll',\n 'position': 'relative',\n '-webkit-overflow-scrolling': 'touch'\n });\n if (scrollable === 'endless') {\n var originalPageSize = that._endlessPageSize = that.dataSource.options.pageSize;\n that.element.off('scroll' + NS).on('scroll' + NS, function () {\n if (this.scrollTop + this.clientHeight - this.scrollHeight >= -15 && !that._endlessFetchInProgress && that._endlessPageSize < that.dataSource.total()) {\n that._skipRerenderItemsCount = that._endlessPageSize;\n that._endlessPageSize = that._skipRerenderItemsCount + originalPageSize;\n that.dataSource.options.endless = true;\n that._endlessFetchInProgress = true;\n that.dataSource.pageSize(that._endlessPageSize);\n }\n });\n }\n }\n },\n current: function (candidate) {\n var that = this, element = that.element, current = that._current, id = that._itemId;\n if (candidate === undefined) {\n return current;\n }\n if (current && current[0]) {\n if (current[0].id === id) {\n current.removeAttr('id');\n }\n current.removeClass(FOCUSED);\n element.removeAttr('aria-activedescendant');\n }\n if (candidate && candidate[0]) {\n id = candidate[0].id || id;\n that._scrollTo(candidate[0]);\n element.attr('aria-activedescendant', id);\n candidate.addClass(FOCUSED).attr('id', id);\n }\n that._current = candidate;\n },\n _scrollTo: function (element) {\n var that = this, container, UseJQueryoffset = false, SCROLL = 'scroll';\n if (that.wrapper.css('overflow') == 'auto' || that.wrapper.css('overflow') == SCROLL || that.wrapper.css('overflow-y') == SCROLL) {\n container = that.wrapper[0];\n } else {\n container = window;\n UseJQueryoffset = true;\n }\n var scrollDirectionFunc = function (direction, dimension) {\n var elementOffset = UseJQueryoffset ? $(element).offset()[direction.toLowerCase()] : element['offset' + direction], elementDimension = element['client' + dimension], containerScrollAmount = $(container)[SCROLL + direction](), containerDimension = $(container)[dimension.toLowerCase()]();\n if (elementOffset + elementDimension > containerScrollAmount + containerDimension) {\n $(container)[SCROLL + direction](elementOffset + elementDimension - containerDimension);\n } else if (elementOffset < containerScrollAmount) {\n $(container)[SCROLL + direction](elementOffset);\n }\n };\n scrollDirectionFunc('Top', 'Height');\n scrollDirectionFunc('Left', 'Width');\n },\n _navigatable: function () {\n var that = this, navigatable = that.options.navigatable, element = that.element, clickCallback = function (e) {\n that.current($(e.currentTarget));\n if (!$(e.target).is(':button,a,:input,a>.k-icon,textarea')) {\n kendo.focusElement(element);\n }\n };\n if (navigatable) {\n that._tabindex();\n element.on('focus' + NS, function () {\n var current = that._current;\n if (!current || !current.is(':visible')) {\n current = that._item('first');\n }\n that.current(current);\n }).on('focusout' + NS, function () {\n if (that._current) {\n that._current.removeClass(FOCUSED);\n }\n }).on('keydown' + NS, function (e) {\n var key = e.keyCode, current = that.current(), target = $(e.target), canHandle = !target.is(':button,textarea,a,a>.t-icon,input'), isTextBox = target.is(':text,:password'), preventDefault = kendo.preventDefault, editItem = element.find('.' + KEDITITEM), active = activeElement(), idx, scrollable = that.options.scrollable;\n if (!canHandle && !isTextBox && keys.ESC != key || isTextBox && keys.ESC != key && keys.ENTER != key) {\n return;\n }\n if (keys.UP === key || keys.LEFT === key) {\n if (current && current[0]) {\n current = current.prev();\n }\n if (current && current[0]) {\n that.current(current);\n } else if (!scrollable) {\n that.current(that._item('last'));\n }\n preventDefault(e);\n } else if (keys.DOWN === key || keys.RIGHT === key) {\n if (scrollable) {\n if (that.options.scrollable === 'endless' && !current.next().length) {\n that.element[0].scrollTop = that.element[0].scrollHeight;\n that._focusNext = true;\n } else {\n current = current.next();\n if (current && current[0]) {\n that.current(current);\n }\n }\n } else {\n current = current.next();\n that.current(!current || !current[0] ? that._item('first') : current);\n }\n preventDefault(e);\n } else if (keys.PAGEUP === key) {\n that.current(null);\n that.dataSource.page(that.dataSource.page() - 1);\n preventDefault(e);\n } else if (keys.PAGEDOWN === key) {\n that.current(null);\n that.dataSource.page(that.dataSource.page() + 1);\n preventDefault(e);\n } else if (keys.HOME === key) {\n that.current(that._item('first'));\n preventDefault(e);\n } else if (keys.END === key) {\n that.current(that._item('last'));\n preventDefault(e);\n } else if (keys.ENTER === key) {\n if (editItem.length !== 0 && (canHandle || isTextBox)) {\n idx = that.items().index(editItem);\n if (active) {\n active.blur();\n }\n that.save();\n var focusAgain = function () {\n that.element.trigger('focus');\n that.current(that.items().eq(idx));\n };\n that.one('dataBound', focusAgain);\n } else if (that.options.editTemplate !== '') {\n that.edit(current);\n }\n } else if (keys.ESC === key) {\n editItem = element.find('.' + KEDITITEM);\n if (editItem.length === 0) {\n return;\n }\n idx = that.items().index(editItem);\n that.cancel();\n that.element.trigger('focus');\n that.current(that.items().eq(idx));\n }\n });\n element.on(MOUSEDOWN + NS + ' ' + TOUCHSTART + NS, FOCUSSELECTOR, proxy(clickCallback, that));\n }\n },\n clearSelection: function () {\n var that = this;\n that.selectable.clear();\n that.trigger(CHANGE);\n },\n select: function (items) {\n var that = this, selectable = that.selectable;\n items = $(items);\n if (items.length) {\n if (!selectable.options.multiple) {\n selectable.clear();\n items = items.first();\n }\n selectable.value(items);\n return;\n }\n return selectable.value();\n },\n _destroyEditable: function () {\n var that = this;\n if (that.editable) {\n that.editable.destroy();\n delete that.editable;\n }\n },\n _modelFromElement: function (element) {\n var uid = element.attr(kendo.attr('uid'));\n return this.dataSource.getByUid(uid);\n },\n _closeEditable: function () {\n var that = this, editable = that.editable, data, item, index, template = that.template;\n if (editable) {\n if (editable.element.index() % 2) {\n template = that.altTemplate;\n }\n that.angular('cleanup', function () {\n return { elements: [editable.element] };\n });\n data = that._modelFromElement(editable.element);\n that._destroyEditable();\n index = editable.element.index();\n editable.element.replaceWith(template(data));\n item = that.items().eq(index);\n item.attr(kendo.attr('uid'), data.uid);\n if (that._hasBindingTarget()) {\n kendo.bind(item, data);\n }\n that.angular('compile', function () {\n return {\n elements: [item],\n data: [{ dataItem: data }]\n };\n });\n }\n return true;\n },\n edit: function (item) {\n var that = this, data = that._modelFromElement(item), container, uid = data.uid, index;\n that.cancel();\n item = that.items().filter('[' + kendo.attr('uid') + '=' + uid + ']');\n index = item.index();\n item.replaceWith(that.editTemplate(data));\n container = that.items().eq(index).addClass(KEDITITEM).attr(kendo.attr('uid'), data.uid);\n that.editable = container.kendoEditable({\n model: data,\n clearContainer: false,\n errorTemplate: false,\n target: that\n }).data('kendoEditable');\n that.trigger(EDIT, {\n model: data,\n item: container\n });\n },\n save: function () {\n var that = this, editable = that.editable, model;\n if (!editable) {\n return;\n }\n var container = editable.element;\n model = that._modelFromElement(container);\n if (editable.end() && !that.trigger(SAVE, {\n model: model,\n item: container\n })) {\n that._closeEditable();\n that.dataSource.sync();\n }\n },\n remove: function (item) {\n var that = this, dataSource = that.dataSource, data = that._modelFromElement(item);\n if (that.editable) {\n dataSource.cancelChanges(that._modelFromElement(that.editable.element));\n that._closeEditable();\n }\n if (!that.trigger(REMOVE, {\n model: data,\n item: item\n })) {\n item.hide();\n dataSource.remove(data);\n dataSource.sync();\n }\n },\n add: function () {\n var that = this, dataItem, dataSource = that.dataSource, index = dataSource.indexOf((dataSource.view() || [])[0]);\n if (index < 0) {\n index = 0;\n }\n that.cancel();\n dataItem = dataSource.insert(index, {});\n that.edit(that.element.find('[data-uid=\\'' + dataItem.uid + '\\']'));\n },\n cancel: function () {\n var that = this, dataSource = that.dataSource;\n if (that.editable) {\n var container = that.editable.element;\n var model = that._modelFromElement(container);\n if (!that.trigger(CANCEL, {\n model: model,\n container: container\n })) {\n dataSource.cancelChanges(model);\n that._closeEditable();\n }\n }\n },\n _crudHandlers: function () {\n var that = this, mousedownNs = MOUSEDOWN + NS, touchstartNs = TOUCHSTART + NS, clickNs = CLICK + NS;\n that.element.on(mousedownNs + ' ' + touchstartNs, '.k-edit-button', function (e) {\n e.preventDefault();\n var item = $(this).closest('[' + kendo.attr('uid') + ']');\n setTimeout(function () {\n that.edit(item);\n });\n });\n that.element.on(mousedownNs + ' ' + touchstartNs, '.k-delete-button', function (e) {\n e.preventDefault();\n var item = $(this).closest('[' + kendo.attr('uid') + ']');\n setTimeout(function () {\n that.remove(item);\n });\n });\n that.element.on(clickNs, '.k-update-button', function (e) {\n that.save();\n e.preventDefault();\n });\n that.element.on(clickNs, '.k-cancel-button', function (e) {\n that.cancel();\n e.preventDefault();\n });\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that._unbindDataSource();\n that._destroyEditable();\n that.element.off(NS);\n that._endlessFetchInProgress = that._endlessPageSize = that._skipRerenderItemsCount = that._focusNext = null;\n if (that.pager) {\n that.pager.destroy();\n }\n kendo.destroy(that.element);\n }\n });\n kendo.ui.plugin(ListView);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.listbox', [\n 'kendo.draganddrop',\n 'kendo.data',\n 'kendo.selectable'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'listbox',\n name: 'ListBox',\n category: 'web',\n depends: [\n 'draganddrop',\n 'data',\n 'selectable'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo;\n var kendoAttr = kendo.attr;\n var data = kendo.data;\n var keys = kendo.keys;\n var kendoTemplate = kendo.template;\n var Widget = kendo.ui.Widget;\n var DataSource = data.DataSource;\n var Selectable = kendo.ui.Selectable;\n var DataBoundWidget = kendo.ui.DataBoundWidget;\n var Class = kendo.Class;\n var extend = $.extend;\n var noop = $.noop;\n var proxy = $.proxy;\n var DASH = '-';\n var DOT = '.';\n var SPACE = ' ';\n var HASH = '#';\n var KENDO_LISTBOX = 'kendoListBox';\n var NS = DOT + KENDO_LISTBOX;\n var DISABLED_STATE_CLASS = 'k-state-disabled';\n var SELECTED_STATE_CLASS = 'k-state-selected';\n var ENABLED_ITEM_SELECTOR = '.k-item:not(.k-state-disabled)';\n var ENABLED_ITEMS_SELECTOR = '.k-list:not(.k-state-disabled) >' + ENABLED_ITEM_SELECTOR;\n var TOOLBAR_CLASS = 'k-listbox-toolbar';\n var TOOL_SELECTOR = 'li > a.k-button:not(.k-state-disabled)';\n var FOCUSED_CLASS = 'k-state-focused';\n var DRAG_CLUE_CLASS = 'k-drag-clue';\n var DROP_HINT_CLASS = 'k-drop-hint';\n var LIST_CLASS = 'k-reset k-list';\n var LIST_SELECTOR = '.k-reset.k-list';\n var RESET = 'k-reset';\n var CLICK = 'click' + NS;\n var KEYDOWN = 'keydown' + NS;\n var BLUR = 'blur' + NS;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n var CHANGE = 'change';\n var DATABOUND = 'dataBound';\n var ADD = 'add';\n var REMOVE = 'remove';\n var REORDER = 'reorder';\n var MOVE_UP = 'moveUp';\n var MOVE_DOWN = 'moveDown';\n var TRANSFER_TO = 'transferTo';\n var TRANSFER_FROM = 'transferFrom';\n var TRANSFER_ALL_TO = 'transferAllTo';\n var TRANSFER_ALL_FROM = 'transferAllFrom';\n var DRAGGEDCLASS = 'k-ghost';\n var UNIQUE_ID = 'uid';\n var TABINDEX = 'tabindex';\n var COMMAND = 'command';\n var MOVE_UP_OFFSET = -1;\n var MOVE_DOWN_OFFSET = 1;\n var DRAGSTART = 'dragstart';\n var DRAG = 'drag';\n var DROP = 'drop';\n var DRAGEND = 'dragend';\n var DEFAULT_FILTER = 'ul.k-reset.k-list>li.k-item';\n var RIGHT = 'right';\n var BOTTOM = 'bottom';\n var TOOLBAR_POSITION_CLASS_NAMES = [\n TOOLBAR_CLASS + DASH + 'left',\n TOOLBAR_CLASS + DASH + RIGHT,\n TOOLBAR_CLASS + DASH + 'top',\n TOOLBAR_CLASS + DASH + BOTTOM\n ];\n function getSortedDomIndices(items) {\n var indices = $.map(items, function (item) {\n return $(item).index();\n });\n return indices;\n }\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n function defaultHint(element) {\n return element.clone().removeClass(DRAGGEDCLASS).removeClass(FOCUSED_CLASS).addClass(kendo.format('{0} {1} {2}', SELECTED_STATE_CLASS, RESET, DRAG_CLUE_CLASS)).width(element.width());\n }\n function defaultPlaceholder() {\n return $('<li>').addClass(DROP_HINT_CLASS);\n }\n var ListBox = DataBoundWidget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that._wrapper();\n that._list();\n element = that.element.attr('multiple', 'multiple').hide();\n if (element[0] && !that.options.dataSource) {\n that.options.dataTextField = that.options.dataTextField || 'text';\n that.options.dataValueField = that.options.dataValueField || 'value';\n }\n that._templates();\n that._selectable();\n that._dataSource();\n that._createToolbar();\n that._createDraggable();\n that._createNavigatable();\n },\n destroy: function () {\n var that = this;\n DataBoundWidget.fn.destroy.call(that);\n if (!isNaN(that._listTabIndex)) {\n that._getList().off();\n that._listTabIndex = null;\n }\n that._unbindDataSource();\n that._destroySelectable();\n that._destroyToolbar();\n that.wrapper.off(NS);\n if (that._target) {\n that._target = null;\n }\n if (that._draggable) {\n that._draggable.destroy();\n that.placeholder = null;\n }\n kendo.destroy(that.element);\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._templates();\n this._dataSource();\n },\n events: [\n CHANGE,\n DATABOUND,\n ADD,\n REMOVE,\n REORDER,\n DRAGSTART,\n DRAG,\n DROP,\n DRAGEND\n ],\n options: {\n name: 'ListBox',\n autoBind: true,\n template: '',\n dataTextField: '',\n dataValueField: '',\n selectable: 'single',\n draggable: null,\n dropSources: [],\n connectWith: '',\n navigatable: true,\n toolbar: {\n position: RIGHT,\n tools: []\n },\n messages: {\n tools: {\n remove: 'Delete',\n moveUp: 'Move Up',\n moveDown: 'Move Down',\n transferTo: 'Transfer To',\n transferFrom: 'Transfer From',\n transferAllTo: 'Transfer All To',\n transferAllFrom: 'Transfer All From'\n }\n }\n },\n add: function (dataItems) {\n var that = this;\n var items = dataItems && dataItems.length ? dataItems : [dataItems];\n var itemsLength = items.length;\n var i;\n that._unbindDataSource();\n for (i = 0; i < itemsLength; i++) {\n that._addItem(items[i]);\n }\n that._bindDataSource();\n that._syncElement();\n },\n _addItem: function (dataItem) {\n var that = this;\n var item = that.templates.itemTemplate({\n item: dataItem,\n r: that.templates.itemContent\n });\n $(item).attr(kendoAttr(UNIQUE_ID), dataItem.uid).appendTo(that._getList());\n if (typeof dataItem === typeof '') {\n that.dataSource._data.push(dataItem);\n } else {\n that.dataSource.add(dataItem);\n }\n },\n _addItemAt: function (dataItem, index) {\n var that = this;\n var item = that.templates.itemTemplate({\n item: dataItem,\n r: that.templates.itemContent\n });\n that._unbindDataSource();\n if (typeof dataItem === typeof '') {\n that._insertElementAt(item, index);\n that.dataSource._data.push(dataItem);\n } else {\n that._insertElementAt($(item).attr(kendoAttr(UNIQUE_ID), dataItem.uid), index);\n that.dataSource.add(dataItem);\n }\n that._bindDataSource();\n that._syncElement();\n },\n _insertElementAt: function (item, index) {\n var that = this;\n var list = that._getList();\n if (index > 0) {\n $(item).insertAfter(list.children().eq(index - 1));\n } else {\n $(list).prepend(item);\n }\n },\n _createNavigatable: function () {\n var that = this;\n var options = that.options;\n if (options.navigatable) {\n that._getList().on(CLICK, ENABLED_ITEM_SELECTOR, proxy(that._click, that)).on(KEYDOWN, proxy(that._keyDown, that)).on(BLUR, proxy(that._blur, that));\n }\n },\n _getTabIndex: function () {\n var that = this;\n var tabindex;\n if (!isNaN(that._listTabIndex)) {\n return that._listTabIndex;\n }\n tabindex = that.element.attr(TABINDEX);\n that._listTabIndex = !isNaN(tabindex) ? tabindex : 0;\n that.element.removeAttr(TABINDEX);\n return that._listTabIndex;\n },\n _blur: function () {\n if (this._target) {\n this._target.removeClass(FOCUSED_CLASS);\n this._getList().removeAttr('aria-activedescendant');\n }\n this._target = null;\n },\n _click: function (e) {\n var that = this;\n var target = $(e.currentTarget);\n var oldTarget = that._target;\n var isInput = isInputElement(e.target);\n if (oldTarget) {\n oldTarget.removeClass(FOCUSED_CLASS);\n }\n that._target = target;\n target.addClass(FOCUSED_CLASS);\n that._getList().attr('aria-activedescendant', target.attr('id'));\n if (that._getList()[0] !== kendo._activeElement() && !isInput) {\n that.focus();\n }\n },\n _getNavigatableItem: function (key) {\n var that = this;\n var current;\n if (!that._target) {\n current = that.items().filter(ENABLED_ITEM_SELECTOR).first();\n } else {\n current = that._target;\n }\n if (key === keys.UP && that._target) {\n current = that._target.prevAll(ENABLED_ITEM_SELECTOR).first();\n }\n if (key === keys.DOWN && that._target) {\n current = that._target.nextAll(ENABLED_ITEM_SELECTOR).first();\n }\n return current.length ? current : null;\n },\n _scrollIntoView: function (item) {\n if (!item) {\n return;\n }\n if (item[0]) {\n item = item[0];\n }\n var list = this._getList().parent()[0];\n var itemOffsetTop = item.offsetTop;\n var contentScrollTop = list.scrollTop;\n var contentOffsetHeight = list.clientHeight;\n var bottomDistance = itemOffsetTop + item.offsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n } else if (bottomDistance > contentScrollTop + contentOffsetHeight) {\n contentScrollTop = bottomDistance - contentOffsetHeight;\n }\n list.scrollTop = contentScrollTop;\n },\n _keyDown: function (e) {\n var that = this;\n var key = e.keyCode;\n var current = that._getNavigatableItem(key);\n var shouldPreventDefault;\n if (that._target) {\n that._target.removeClass(FOCUSED_CLASS);\n }\n if (!(e.shiftKey && !e.ctrlKey && (key === keys.DOWN || key === keys.UP))) {\n that._shiftSelecting = false;\n }\n if (key == keys.DELETE) {\n that._executeCommand(REMOVE);\n if (that._target) {\n that._target.removeClass(FOCUSED_CLASS);\n that._getList().removeAttr('aria-activedescendant');\n that._target = null;\n }\n shouldPreventDefault = true;\n } else if (key === keys.DOWN || key === keys.UP) {\n if (!current) {\n e.preventDefault();\n return;\n }\n if (e.shiftKey && !e.ctrlKey) {\n if (!that._shiftSelecting) {\n that.clearSelection();\n that._shiftSelecting = true;\n }\n if (that._target && current.hasClass('k-state-selected')) {\n that._target.removeClass(SELECTED_STATE_CLASS);\n that.trigger(CHANGE);\n } else if (that.options.selectable == 'single') {\n that.select(current);\n } else {\n that.select(current.add(that._target));\n }\n } else if (e.shiftKey && e.ctrlKey) {\n that._executeCommand(key === keys.DOWN ? MOVE_DOWN : MOVE_UP);\n that._scrollIntoView(that._target);\n e.preventDefault();\n return;\n } else if (!e.shiftKey && !e.ctrlKey) {\n if (that.options.selectable === 'multiple') {\n that.clearSelection();\n }\n that.select(current);\n }\n that._target = current;\n if (that._target) {\n that._target.addClass(FOCUSED_CLASS);\n that._scrollIntoView(that._target);\n that._getList().attr('aria-activedescendant', that._target.attr('id'));\n } else {\n that._getList().removeAttr('aria-activedescendant');\n }\n shouldPreventDefault = true;\n } else if (key == keys.SPACEBAR) {\n if (e.ctrlKey && that._target) {\n if (that._target.hasClass(SELECTED_STATE_CLASS)) {\n that._target.removeClass(SELECTED_STATE_CLASS);\n that.trigger(CHANGE);\n } else {\n that.select(that._target);\n }\n } else {\n that.clearSelection();\n that.select(that._target);\n }\n shouldPreventDefault = true;\n } else if (e.ctrlKey && key == keys.RIGHT) {\n if (e.shiftKey) {\n that._executeCommand(TRANSFER_ALL_TO);\n } else {\n that._executeCommand(TRANSFER_TO);\n }\n that._target = that.select().length ? that.select() : null;\n shouldPreventDefault = true;\n } else if (e.ctrlKey && key == keys.LEFT) {\n if (e.shiftKey) {\n that._executeCommand(TRANSFER_ALL_FROM);\n } else {\n that._executeCommand(TRANSFER_FROM);\n }\n shouldPreventDefault = true;\n }\n if (shouldPreventDefault) {\n e.preventDefault();\n }\n },\n focus: function () {\n kendo.focusElement(this._getList());\n },\n _createDraggable: function () {\n var that = this;\n var draggable = that.options.draggable;\n var hint;\n if (draggable) {\n hint = draggable.hint;\n if (!that.options.selectable) {\n throw new Error('Dragging requires selection to be enabled');\n }\n if (!hint) {\n hint = defaultHint;\n }\n that._draggable = new kendo.ui.Draggable(that.wrapper, {\n filter: draggable.filter ? draggable.filter : DEFAULT_FILTER,\n hint: kendo.isFunction(hint) ? hint : $(hint),\n dragstart: proxy(that._dragstart, that),\n dragcancel: proxy(that._clear, that),\n drag: proxy(that._drag, that),\n dragend: proxy(that._dragend, that)\n });\n }\n },\n _dragstart: function (e) {\n var that = this;\n var draggedElement = that.draggedElement = e.currentTarget;\n var placeholder = that.options.draggable.placeholder;\n var dataItem = that.dataItem(draggedElement);\n var eventData = {\n dataItems: dataItem,\n items: $(draggedElement),\n draggableEvent: e\n };\n if (that.options.draggable.enabled === false) {\n e.preventDefault();\n return;\n }\n if (!placeholder) {\n placeholder = defaultPlaceholder;\n }\n that.placeholder = kendo.isFunction(placeholder) ? $(placeholder.call(that, draggedElement)) : $(placeholder);\n if (draggedElement.is(DOT + DISABLED_STATE_CLASS)) {\n e.preventDefault();\n } else {\n if (that.trigger(DRAGSTART, eventData)) {\n e.preventDefault();\n } else {\n that.clearSelection();\n that.select(draggedElement);\n draggedElement.addClass(DRAGGEDCLASS);\n }\n }\n },\n _clear: function () {\n this.draggedElement.removeClass(DRAGGEDCLASS);\n this.placeholder.remove();\n },\n _findElementUnderCursor: function (e) {\n var elementUnderCursor = kendo.elementUnderCursor(e);\n var draggable = e.sender;\n if ($.contains(draggable.hint[0], elementUnderCursor) || draggable.hint[0] === elementUnderCursor) {\n draggable.hint.hide();\n elementUnderCursor = kendo.elementUnderCursor(e);\n draggable.hint.show();\n }\n return elementUnderCursor;\n },\n _findTarget: function (e) {\n var that = this;\n var element = that._findElementUnderCursor(e);\n var elementNode = $(element);\n var list = that._getList();\n var items;\n var node;\n if ($.contains(list[0], element)) {\n items = that.items();\n element = elementNode.is('li') ? element : elementNode.closest('li')[0];\n node = items.filter(element)[0] || items.has(element)[0];\n if (node) {\n node = $(node);\n return !node.hasClass(DISABLED_STATE_CLASS) ? {\n element: node,\n listBox: that\n } : null;\n } else {\n return null;\n }\n } else if (list[0] == element || list.parent()[0] == element) {\n return {\n element: $(list),\n appendToBottom: true,\n listBox: that\n };\n } else {\n return that._searchConnectedListBox(elementNode);\n }\n },\n _getElementCenter: function (element) {\n var center = element.length ? kendo.getOffset(element) : null;\n if (center) {\n center.top += outerHeight(element) / 2;\n center.left += outerWidth(element) / 2;\n }\n return center;\n },\n _searchConnectedListBox: function (element) {\n var connectedListBox;\n var items;\n var node;\n var originalElement = element;\n var closestContainer;\n if (element.hasClass('k-list-scroller k-selectable')) {\n closestContainer = element;\n } else {\n closestContainer = element.closest('.k-list-scroller.k-selectable');\n }\n if (closestContainer.length) {\n connectedListBox = closestContainer.parent().find('[data-role=\\'listbox\\']').getKendoListBox();\n } else {\n return null;\n }\n if (connectedListBox && $.inArray(this.element[0].id, connectedListBox.options.dropSources) !== -1) {\n items = connectedListBox.items();\n element = element.is('li') ? element[0] : element.closest('li')[0];\n node = items.filter(element)[0] || items.has(element)[0];\n if (node) {\n node = $(node);\n return !node.hasClass(DISABLED_STATE_CLASS) ? {\n element: node,\n listBox: connectedListBox\n } : null;\n } else if (!items.length || originalElement.hasClass('k-list-scroller k-selectable') || originalElement.hasClass('k-reset k-list')) {\n return {\n element: connectedListBox._getList(),\n listBox: connectedListBox,\n appendToBottom: true\n };\n } else {\n return null;\n }\n }\n return null;\n },\n _drag: function (e) {\n var that = this;\n var draggedElement = that.draggedElement;\n var target = that._findTarget(e);\n var cursorOffset = {\n left: e.x.location,\n top: e.y.location\n };\n var dataItem = that.dataItem(draggedElement);\n var eventData = {\n dataItems: [dataItem],\n items: $(draggedElement),\n draggableEvent: e\n };\n var targetCenter;\n var offsetDelta;\n var direction;\n if (that.trigger(DRAG, eventData)) {\n e.preventDefault();\n return;\n }\n if (target) {\n targetCenter = this._getElementCenter(target.element);\n offsetDelta = {\n left: Math.round(cursorOffset.left - targetCenter.left),\n top: Math.round(cursorOffset.top - targetCenter.top)\n };\n if (target.appendToBottom) {\n that._movePlaceholder(target, null, draggedElement);\n return;\n }\n if (offsetDelta.top < 0) {\n direction = 'prev';\n } else if (offsetDelta.top > 0) {\n direction = 'next';\n }\n if (direction) {\n if (target.element[0] != that.placeholder[0]) {\n that._movePlaceholder(target, direction, draggedElement);\n }\n }\n } else if (that.placeholder.parent().length) {\n that.placeholder.remove();\n }\n },\n _movePlaceholder: function (target, direction, draggedElement) {\n var that = this;\n var placeholder = that.placeholder;\n var draggableOptions = target.listBox.options.draggable;\n if (placeholder.parent().length) {\n that.placeholder.remove();\n if (draggableOptions && draggableOptions.placeholder) {\n that.placeholder = kendo.isFunction(draggableOptions.placeholder) ? $(draggableOptions.placeholder.call(that, draggedElement)) : $(draggableOptions.placeholder);\n } else {\n that.placeholder = $(defaultPlaceholder.call(that, draggedElement));\n }\n }\n if (!direction) {\n target.element.append(that.placeholder);\n } else if (direction === 'prev') {\n target.element.before(that.placeholder);\n } else if (direction === 'next') {\n target.element.after(that.placeholder);\n }\n },\n _dragend: function (e) {\n var that = this;\n var draggedItem = that.draggedElement;\n var items = that.items();\n var placeholderIndex = items.not(that.draggedElement).index(that.placeholder);\n var draggedIndex = items.not(that.placeholder).index(that.draggedElement);\n var dataItem = that.dataItem(draggedItem);\n var eventData = {\n dataItems: [dataItem],\n items: $(draggedItem)\n };\n var connectedListBox = that.placeholder.closest('.k-widget.k-listbox').find('[data-role=\\'listbox\\']').getKendoListBox();\n if (that.trigger(DROP, extend({}, eventData, { draggableEvent: e }))) {\n e.preventDefault();\n this._clear();\n return;\n }\n if (placeholderIndex >= 0) {\n if (placeholderIndex !== draggedIndex && !that.trigger(REORDER, extend({}, eventData, { offset: placeholderIndex - draggedIndex }))) {\n draggedItem.removeClass(DRAGGEDCLASS);\n that.reorder(draggedItem, placeholderIndex);\n }\n } else if (connectedListBox) {\n if (!that.trigger(REMOVE, eventData)) {\n that.remove($(draggedItem));\n }\n if (!connectedListBox.trigger(ADD, eventData)) {\n connectedListBox._addItemAt(dataItem, connectedListBox.items().index(that.placeholder));\n }\n }\n that._clear();\n that._draggable.dropped = true;\n that.trigger(DRAGEND, extend({}, eventData, { draggableEvent: e }));\n that._updateToolbar();\n that._updateAllToolbars();\n },\n reorder: function (item, index) {\n var that = this;\n var dataSource = that.dataSource;\n var dataItem = that.dataItem(item);\n var dataItemAtIndex = dataSource.at(index);\n var itemAtIndex = that.items()[index];\n var listItem = $(item);\n if (dataItem && itemAtIndex && dataItemAtIndex) {\n that._removeElement(listItem);\n that._insertElementAt(listItem, index);\n that._updateToolbar();\n }\n },\n remove: function (items) {\n var that = this;\n var listItems = that._getItems(items);\n var itemsLength = listItems.length;\n var i;\n that._unbindDataSource();\n for (i = 0; i < itemsLength; i++) {\n that._removeItem($(listItems[i]));\n }\n that._bindDataSource();\n that._syncElement();\n that._updateToolbar();\n that._updateAllToolbars();\n },\n _removeItem: function (item) {\n var that = this;\n var dataSource = that.dataSource;\n var dataItem = that.dataItem(item);\n if (!dataItem || !dataSource) {\n return;\n }\n if (typeof dataItem === typeof '') {\n var data = dataSource._data;\n for (var i = 0; i < data.length; i++) {\n if (dataItem === data[i]) {\n data[i] = data[data.length - 1];\n data.pop();\n break;\n }\n }\n } else {\n dataSource.remove(dataItem);\n }\n that._removeElement(item);\n },\n _removeElement: function (item) {\n kendo.destroy(item);\n $(item).off().remove();\n },\n dataItem: function (element) {\n var uniqueIdAttr = kendoAttr(UNIQUE_ID);\n var uid = $(element).attr(uniqueIdAttr) || $(element).closest('[' + uniqueIdAttr + ']').attr(uniqueIdAttr);\n if (uid) {\n return this.dataSource.getByUid(uid);\n } else {\n return $(element).html();\n }\n },\n _dataItems: function (items) {\n var dataItems = [];\n var listItems = $(items);\n var itemsLength = listItems.length;\n var i;\n for (i = 0; i < itemsLength; i++) {\n dataItems.push(this.dataItem(listItems.eq(i)));\n }\n return dataItems;\n },\n items: function () {\n var list = this._getList();\n return list.children();\n },\n select: function (items) {\n var that = this;\n var selectable = that.selectable;\n var enabledItems;\n if (isUndefined(items)) {\n return selectable.value();\n }\n enabledItems = that.items().filter(items).filter(ENABLED_ITEMS_SELECTOR);\n if (!selectable.options.multiple) {\n selectable.clear();\n enabledItems = enabledItems.first();\n }\n return selectable.value(enabledItems);\n },\n clearSelection: function () {\n var that = this;\n var selectable = that.selectable;\n if (selectable) {\n selectable.clear();\n }\n },\n enable: function (items, enable) {\n var that = this;\n var enabled = isUndefined(enable) ? true : !!enable;\n var listItems = that._getItems(items);\n var itemsLength = listItems.length;\n var i;\n for (i = 0; i < itemsLength; i++) {\n that._enableItem($(listItems[i]), enabled);\n }\n that._updateAllToolbars();\n },\n _enableItem: function (item, enable) {\n var that = this;\n var dataItem = that.dataItem(item);\n if (dataItem) {\n if (enable) {\n $(item).removeClass(DISABLED_STATE_CLASS);\n } else {\n $(item).addClass(DISABLED_STATE_CLASS).removeClass(SELECTED_STATE_CLASS);\n }\n }\n },\n setDataSource: function (dataSource) {\n var that = this;\n that.options.dataSource = dataSource;\n that._dataSource();\n },\n _dataSource: function () {\n var that = this;\n var options = that.options;\n var dataSource = options.dataSource || {};\n dataSource = $.isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource.select = that.element;\n dataSource.fields = [\n { field: options.dataTextField },\n { field: options.dataValueField }\n ];\n that._unbindDataSource();\n that.dataSource = DataSource.create(dataSource);\n that._bindDataSource();\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n },\n _bindDataSource: function () {\n var that = this;\n var dataSource = that.dataSource;\n that._dataChangeHandler = proxy(that.refresh, that);\n if (dataSource) {\n dataSource.bind(CHANGE, that._dataChangeHandler);\n }\n },\n _unbindDataSource: function () {\n var that = this;\n var dataSource = that.dataSource;\n if (dataSource) {\n dataSource.unbind(CHANGE, that._dataChangeHandler);\n }\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper = element.parent('div.k-listbox');\n if (!wrapper[0]) {\n wrapper = element.wrap('<div class=\"k-widget k-listbox\" unselectable=\"on\" />').parent();\n wrapper[0].style.cssText = element[0].style.cssText;\n wrapper[0].title = element[0].title;\n $('<div class=\"k-list-scroller\" />').insertBefore(element);\n }\n that.wrapper = wrapper.addClass(element[0].className).css('display', '');\n that._innerWrapper = $(wrapper[0].firstChild);\n },\n _list: function () {\n var that = this;\n $('<ul class=\\'' + LIST_CLASS + '\\' role=\\'listbox\\'></ul>').appendTo(that._innerWrapper);\n if (that.options.navigatable) {\n that._getList().attr(TABINDEX, that._getTabIndex());\n }\n },\n _templates: function () {\n var that = this;\n var options = this.options;\n var template;\n if (options.template && typeof options.template == 'string') {\n template = kendo.template(options.template);\n } else if (!options.template) {\n template = kendo.template('${' + kendo.expr(options.dataTextField, 'data') + '}', { useWithBlock: false });\n } else {\n template = options.template;\n }\n that.templates = {\n itemTemplate: kendo.template('# var item = data.item, r = data.r; # <li class=\\'k-item\\' role=\\'option\\' aria-selected=\\'false\\'>#=r(item)#</li>', { useWithBlock: false }),\n itemContent: template,\n toolbar: '<div class=\\'' + TOOLBAR_CLASS + '\\'></div>'\n };\n },\n refresh: function () {\n var that = this;\n var view = that.dataSource.view();\n var template = that.templates.itemTemplate;\n var html = '';\n for (var idx = 0; idx < view.length; idx++) {\n html += template({\n item: view[idx],\n r: that.templates.itemContent\n });\n }\n that._getList().html(html);\n that._setItemIds();\n that._createToolbar();\n that._syncElement();\n that._updateToolbar();\n that._updateAllToolbars();\n that.trigger(DATABOUND);\n },\n _syncElement: function () {\n var options = '';\n var view = this.dataSource.view();\n for (var idx = 0; idx < view.length; idx++) {\n options += this._option(view[idx][this.options.dataValueField] || view[idx], view[idx][this.options.dataTextField] || view[idx], true);\n }\n this.element.html(options);\n },\n _option: function (dataValue, dataText) {\n var option = '<option';\n if (dataValue !== undefined) {\n dataValue += '';\n if (dataValue.indexOf('\"') !== -1) {\n dataValue = dataValue.replace(/\"/g, '"');\n }\n option += ' value=\"' + dataValue + '\"';\n }\n option += ' selected>';\n if (dataText !== undefined) {\n option += kendo.htmlEncode(dataText);\n }\n return option += '</option>';\n },\n _setItemIds: function () {\n var that = this;\n var items = that.items();\n var view = that.dataSource.view();\n var viewLength = view.length;\n var i;\n for (i = 0; i < viewLength; i++) {\n items.eq(i).attr(kendoAttr(UNIQUE_ID), view[i].uid).attr('id', view[i].uid);\n }\n },\n _selectable: function () {\n var that = this;\n var selectable = that.options.selectable;\n var selectableOptions = Selectable.parseOptions(selectable);\n if (selectableOptions.multiple) {\n that.element.attr('aria-multiselectable', 'true');\n }\n that.selectable = new Selectable(that._innerWrapper, {\n aria: true,\n multiple: selectableOptions.multiple,\n filter: ENABLED_ITEM_SELECTOR,\n change: proxy(that._onSelect, that)\n });\n },\n _onSelect: function () {\n var that = this;\n that._updateToolbar();\n that._updateAllToolbars();\n that.trigger(CHANGE);\n },\n _destroySelectable: function () {\n var that = this;\n if (that.selectable && that.selectable.element) {\n that.selectable.destroy();\n that.selectable = null;\n }\n },\n _getList: function () {\n return this.wrapper.find(LIST_SELECTOR);\n },\n _getItems: function (items) {\n return this.items().filter(items);\n },\n _createToolbar: function () {\n var that = this;\n var toolbarOptions = that.options.toolbar;\n var position = toolbarOptions.position || RIGHT;\n var toolbarInsertion = position === BOTTOM ? 'insertAfter' : 'insertBefore';\n var tools = toolbarOptions.tools || [];\n var messages = that.options.messages;\n that._destroyToolbar();\n that.wrapper.removeClass(TOOLBAR_POSITION_CLASS_NAMES.join(SPACE));\n if (tools.length && tools.length > 0) {\n var toolbarElement = $(that.templates.toolbar)[toolbarInsertion](that._innerWrapper);\n that.toolbar = new ToolBar(toolbarElement, extend({}, toolbarOptions, {\n listBox: that,\n messages: messages\n }));\n that.wrapper.addClass(TOOLBAR_CLASS + DASH + position);\n }\n },\n _destroyToolbar: function () {\n var that = this;\n if (that.toolbar) {\n that.toolbar.destroy();\n that.toolbar = null;\n }\n },\n _executeCommand: function (commandName) {\n var that = this;\n var command = CommandFactory.current.create(commandName, { listBox: that });\n if (command) {\n command.execute();\n that._updateToolbar();\n that._updateAllToolbars();\n }\n },\n _updateToolbar: function () {\n var toolbar = this.toolbar;\n if (toolbar) {\n toolbar._updateToolStates();\n }\n },\n _updateAllToolbars: function () {\n var listBoxElements = $('select[data-role=\\'listbox\\']');\n var elementsLength = listBoxElements.length;\n var listBox;\n var i;\n for (i = 0; i < elementsLength; i++) {\n listBox = $(listBoxElements[i]).data(KENDO_LISTBOX);\n if (listBox) {\n listBox._updateToolbar();\n }\n }\n }\n });\n kendo.ui.plugin(ListBox);\n var CommandFactory = Class.extend({\n init: function () {\n this._commands = [];\n },\n register: function (commandName, commandType) {\n this._commands.push({\n commandName: commandName,\n commandType: commandType\n });\n },\n create: function (commandName, options) {\n var commands = this._commands;\n var itemsLength = commands.length;\n var name = commandName ? commandName.toLowerCase() : '';\n var match;\n var command;\n var i;\n for (i = 0; i < itemsLength; i++) {\n command = commands[i];\n if (command.commandName.toLowerCase() === name) {\n match = command;\n break;\n }\n }\n if (match) {\n return new match.commandType(options);\n }\n }\n });\n CommandFactory.current = new CommandFactory();\n var ListBoxCommand = Class.extend({\n init: function (options) {\n var that = this;\n that.options = extend({}, that.options, options);\n that.listBox = that.options.listBox;\n },\n options: { listBox: null },\n getItems: function () {\n return $(this.listBox.select());\n },\n execute: noop,\n canExecute: noop\n });\n var RemoveItemsCommand = ListBoxCommand.extend({\n execute: function () {\n var that = this;\n var listBox = that.listBox;\n var items = that.getItems();\n if (!listBox.trigger(REMOVE, {\n dataItems: listBox._dataItems(items),\n items: items\n })) {\n listBox.remove(items);\n }\n },\n canExecute: function () {\n return this.listBox.select().length > 0;\n }\n });\n CommandFactory.current.register(REMOVE, RemoveItemsCommand);\n var MoveItemsCommand = ListBoxCommand.extend({\n execute: function () {\n var that = this;\n if (that.canExecute()) {\n that.moveItems();\n }\n },\n canExecute: noop,\n moveItems: function () {\n var that = this;\n var listBox = that.listBox;\n var options = that.options;\n var items = that.getItems();\n var offset = options.offset;\n var indecesInDom = getSortedDomIndices(items);\n var movedItems = $.makeArray(items.sort(that.itemComparer));\n var moveAction = options.moveAction;\n var movedItem;\n if (!listBox.trigger(REORDER, {\n dataItems: listBox._dataItems(movedItems),\n items: $(movedItems),\n offset: offset\n })) {\n while (movedItems.length > 0 && indecesInDom.length > 0) {\n movedItem = movedItems[moveAction]();\n listBox.reorder(movedItem, indecesInDom[moveAction]() + offset);\n }\n }\n },\n options: {\n offset: 0,\n moveAction: 'pop'\n },\n itemComparer: function (item1, item2) {\n var indexItem1 = $(item1).index();\n var indexItem2 = $(item2).index();\n if (indexItem1 === indexItem2) {\n return 0;\n } else {\n return indexItem1 > indexItem2 ? 1 : -1;\n }\n }\n });\n var MoveUpItemsCommand = MoveItemsCommand.extend({\n options: {\n offset: MOVE_UP_OFFSET,\n moveAction: 'shift'\n },\n canExecute: function () {\n var items = this.getItems();\n var domIndices = getSortedDomIndices(items);\n return domIndices.length > 0 && domIndices[0] > 0;\n }\n });\n CommandFactory.current.register(MOVE_UP, MoveUpItemsCommand);\n var MoveDownItemsCommand = MoveItemsCommand.extend({\n options: {\n offset: MOVE_DOWN_OFFSET,\n moveAction: 'pop'\n },\n canExecute: function () {\n var that = this;\n var items = that.getItems();\n var domIndices = getSortedDomIndices(items);\n return domIndices.length > 0 && $(domIndices).last()[0] < that.listBox.items().length - 1;\n }\n });\n CommandFactory.current.register(MOVE_DOWN, MoveDownItemsCommand);\n var TransferItemsCommand = ListBoxCommand.extend({\n options: { filter: ENABLED_ITEM_SELECTOR },\n execute: function () {\n var that = this;\n var sourceListBox = that.getSourceListBox();\n var items = that.getItems().filter(that.options.filter);\n var dataItems = sourceListBox ? sourceListBox._dataItems(items) : [];\n var destinationListBox = that.getDestinationListBox();\n var updatedSelection = that.getUpdatedSelection(items);\n if (destinationListBox && items.length > 0) {\n if (!destinationListBox.trigger(ADD, {\n dataItems: dataItems,\n items: items\n })) {\n destinationListBox.add(dataItems);\n }\n if (!sourceListBox.trigger(REMOVE, {\n dataItems: dataItems,\n items: items\n })) {\n sourceListBox.remove(items);\n that.updateSelection(updatedSelection);\n }\n }\n },\n getUpdatedSelection: function (items) {\n var that = this;\n var itemFilter = that.options.filter;\n var sourceListBox = that.getSourceListBox();\n var lastEnabledItem = sourceListBox ? sourceListBox.items().filter(itemFilter).last() : null;\n var containsLastItem = $(items).filter(lastEnabledItem).length > 0;\n var itemToSelect = containsLastItem ? $(items).prevAll(itemFilter)[0] : $(items).nextAll(itemFilter)[0];\n if ($(items).length === 1 && itemToSelect) {\n return itemToSelect;\n } else {\n return null;\n }\n },\n updateSelection: function (item) {\n var sourceListBox = this.getSourceListBox();\n if (sourceListBox && item) {\n $(sourceListBox.select($(item)));\n sourceListBox._scrollIntoView(item);\n }\n },\n getSourceListBox: noop,\n getDestinationListBox: noop\n });\n var TransferItemsToCommand = TransferItemsCommand.extend({\n canExecute: function () {\n var sourceListBox = this.getSourceListBox();\n return sourceListBox ? sourceListBox.select().length > 0 : false;\n },\n getSourceListBox: function () {\n return this.listBox;\n },\n getDestinationListBox: function () {\n var sourceListBox = this.getSourceListBox();\n return sourceListBox && sourceListBox.options.connectWith ? $(HASH + sourceListBox.options.connectWith).data(KENDO_LISTBOX) : null;\n },\n getItems: function () {\n var sourceListBox = this.getSourceListBox();\n return sourceListBox ? $(sourceListBox.select()) : $();\n }\n });\n CommandFactory.current.register(TRANSFER_TO, TransferItemsToCommand);\n var TransferItemsFromCommand = TransferItemsCommand.extend({\n canExecute: function () {\n var sourceListBox = this.getSourceListBox();\n return sourceListBox ? sourceListBox.select().length > 0 : false;\n },\n getSourceListBox: function () {\n var destinationListBox = this.getDestinationListBox();\n return destinationListBox && destinationListBox.options.connectWith ? $(HASH + destinationListBox.options.connectWith).data(KENDO_LISTBOX) : null;\n },\n getDestinationListBox: function () {\n return this.listBox;\n },\n getItems: function () {\n var sourceListBox = this.getSourceListBox();\n return sourceListBox ? $(sourceListBox.select()) : $();\n }\n });\n CommandFactory.current.register(TRANSFER_FROM, TransferItemsFromCommand);\n var TransferAllItemsToCommand = TransferItemsToCommand.extend({\n canExecute: function () {\n var sourceListBox = this.getSourceListBox();\n return sourceListBox ? sourceListBox.items().filter(ENABLED_ITEM_SELECTOR).length > 0 : false;\n },\n getItems: function () {\n var sourceListBox = this.getSourceListBox();\n return sourceListBox ? sourceListBox.items() : $();\n },\n getUpdatedSelection: noop,\n updateSelection: noop\n });\n CommandFactory.current.register(TRANSFER_ALL_TO, TransferAllItemsToCommand);\n var TransferAllItemsFromCommand = TransferItemsFromCommand.extend({\n canExecute: function () {\n var sourceListBox = this.getSourceListBox();\n return sourceListBox ? sourceListBox.items().filter(ENABLED_ITEM_SELECTOR).length > 0 : false;\n },\n getItems: function () {\n var sourceListBox = this.getSourceListBox();\n return sourceListBox ? sourceListBox.items() : $();\n },\n getUpdatedSelection: noop,\n updateSelection: noop\n });\n CommandFactory.current.register(TRANSFER_ALL_FROM, TransferAllItemsFromCommand);\n var ToolBar = Class.extend({\n init: function (element, options) {\n var that = this;\n that.element = $(element).addClass(TOOLBAR_CLASS);\n that.options = extend({}, that.options, options);\n that.listBox = that.options.listBox;\n that._initTemplates();\n that._createTools();\n that._updateToolStates();\n that._attachEventHandlers();\n },\n destroy: function () {\n var that = this;\n that._detachEventHandlers();\n kendo.destroy(that.element);\n that.element.remove();\n that.element = null;\n },\n options: {\n position: RIGHT,\n tools: []\n },\n _initTemplates: function () {\n this.templates = { tool: kendoTemplate('<li>' + '<a href=\\'\\\\\\\\#\\' class=\\'k-button k-button-icon\\' data-command=\\'#= command #\\' title=\\'#= text #\\' aria-label=\\'#= text #\\' role=\\'button\\'>' + '<span class=\\'k-icon #= iconClass #\\'></span>' + '</a>' + '</li>') };\n },\n _createTools: function () {\n var that = this;\n var tools = that.options.tools;\n var toolsLength = tools.length;\n var toolsMessages = that.options.messages.tools;\n var toolList = that._createToolList();\n var tool;\n var i;\n for (i = 0; i < toolsLength; i++) {\n tool = extend({}, ToolBar.defaultTools[tools[i]], { text: toolsMessages[tools[i]] });\n if (tool) {\n toolList.append($(that.templates.tool(tool)));\n }\n }\n that.element.append(toolList);\n },\n _createToolList: function () {\n return $('<ul class=\\'k-reset\\' />');\n },\n _attachEventHandlers: function () {\n var that = this;\n that.element.on(CLICK, TOOL_SELECTOR, proxy(that._onToolClick, that));\n },\n _detachEventHandlers: function () {\n this.element.off(NS).find('*').off(NS);\n },\n _onToolClick: function (e) {\n e.preventDefault();\n this._executeToolCommand($(e.currentTarget).data(COMMAND));\n },\n _executeToolCommand: function (command) {\n var that = this;\n var listBox = that.listBox;\n if (listBox) {\n listBox._executeCommand(command);\n }\n },\n _updateToolStates: function () {\n var that = this;\n var tools = that.options.tools;\n var toolsLength = tools.length;\n var i;\n for (i = 0; i < toolsLength; i++) {\n that._updateToolState(tools[i]);\n }\n },\n _updateToolState: function (toolName) {\n var that = this;\n var command = CommandFactory.current.create(toolName, { listBox: that.listBox });\n var toolElement = that.element.find('[data-command=\\'' + toolName + '\\']')[0];\n if (toolElement && command && command.canExecute) {\n if (command.canExecute()) {\n $(toolElement).removeClass(DISABLED_STATE_CLASS).removeAttr(TABINDEX);\n } else {\n $(toolElement).addClass(DISABLED_STATE_CLASS).attr(TABINDEX, '-1');\n }\n }\n }\n });\n ToolBar.defaultTools = {\n remove: {\n command: REMOVE,\n iconClass: 'k-i-x'\n },\n moveUp: {\n command: MOVE_UP,\n iconClass: 'k-i-arrow-60-up'\n },\n moveDown: {\n command: MOVE_DOWN,\n iconClass: 'k-i-arrow-60-down'\n },\n transferTo: {\n command: TRANSFER_TO,\n iconClass: 'k-i-arrow-60-right'\n },\n transferFrom: {\n command: TRANSFER_FROM,\n iconClass: 'k-i-arrow-60-left'\n },\n transferAllTo: {\n command: TRANSFER_ALL_TO,\n iconClass: 'k-i-arrow-double-60-right'\n },\n transferAllFrom: {\n command: TRANSFER_ALL_FROM,\n iconClass: 'k-i-arrow-double-60-left'\n }\n };\n extend(ListBox, { ToolBar: ToolBar });\n function isInputElement(element) {\n return $(element).is(':button,a,:input,a>.k-icon,textarea,span.k-select,span.k-icon,span.k-link,label.k-checkbox-label,.k-input,.k-multiselect-wrap,.k-picker-wrap,.k-picker-wrap>.k-selected-color,.k-tool-icon,.k-dropdown');\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.upload', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'upload',\n name: 'Upload',\n category: 'web',\n description: 'The Upload widget uses progressive enhancement to deliver the best possible uploading experience to users.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, antiForgeryTokens = kendo.antiForgeryTokens, logToConsole = kendo.logToConsole, rFileExtension = /\\.([^\\.]+)$/, NS = '.kendoUpload', SELECT = 'select', UPLOAD = 'upload', SUCCESS = 'success', ERROR = 'error', COMPLETE = 'complete', CANCEL = 'cancel', CLEAR = 'clear', PAUSE = 'pause', RESUME = 'resume', PROGRESS = 'progress', REMOVE = 'remove', VALIDATIONERRORS = 'validationErrors', INVALIDMAXFILESIZE = 'invalidMaxFileSize', INVALIDMINFILESIZE = 'invalidMinFileSize', INVALIDFILEEXTENSION = 'invalidFileExtension', PROGRESSHIDEDELAY = 1000, PROGRESSHIDEDURATION = 2000;\n var headerStatusIcon = {\n loading: 'k-i-loading',\n warning: 'k-i-warning',\n success: 'k-i-check'\n };\n var Upload = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that.name = element.name;\n that.multiple = that.options.multiple;\n that.directory = that.options.directory;\n that.localization = that.options.localization;\n var activeInput = that.element;\n that.wrapper = activeInput.closest('.k-upload');\n if (that.wrapper.length === 0) {\n that.wrapper = that._wrapInput(activeInput);\n }\n that._activeInput(activeInput);\n that.toggle(that.options.enabled);\n var ns = that._ns = NS + '-' + kendo.guid();\n activeInput.closest('form').on('submit' + ns, $.proxy(that._onParentFormSubmit, that)).on('reset' + ns, $.proxy(that._onParentFormReset, that));\n if (that.options.async.saveUrl) {\n that._module = that._supportsFormData() ? new formDataUploadModule(that) : new iframeUploadModule(that);\n that._async = true;\n var initialFiles = that.options.files;\n if (initialFiles.length > 0) {\n that._renderInitialFiles(initialFiles);\n }\n } else {\n that._module = new syncUploadModule(that);\n }\n if (that._supportsDrop()) {\n if (that.options.dropZone !== '') {\n that._setupCustomDropZone();\n } else {\n that._setupDropZone();\n }\n }\n that.wrapper.on('click', '.k-upload-action', $.proxy(that._onFileAction, that)).on('click', '.k-clear-selected', $.proxy(that._onClearSelected, that)).on('click', '.k-upload-selected', $.proxy(that._onUploadSelected, that));\n if (that.element.val()) {\n that._onInputChange({ target: that.element });\n }\n },\n events: [\n SELECT,\n UPLOAD,\n SUCCESS,\n ERROR,\n COMPLETE,\n CANCEL,\n CLEAR,\n PROGRESS,\n REMOVE,\n PAUSE,\n RESUME\n ],\n options: {\n name: 'Upload',\n enabled: true,\n multiple: true,\n directory: false,\n showFileList: true,\n template: '',\n files: [],\n async: {\n autoRetryAfter: 0,\n bufferChunkSize: 10000000,\n maxAutoRetries: 1,\n removeVerb: 'POST',\n autoUpload: true,\n withCredentials: true,\n accept: '*/*; q=0.5, application/json',\n useArrayBuffer: false\n },\n localization: {\n 'select': 'Select files...',\n 'cancel': 'Cancel',\n 'retry': 'Retry',\n 'remove': 'Remove',\n 'pause': 'Pause',\n 'resume': 'Resume',\n 'clearSelectedFiles': 'Clear',\n 'uploadSelectedFiles': 'Upload',\n 'dropFilesHere': 'Drop files here to upload',\n 'invalidFiles': 'Invalid file(s). Please check file upload requirements.',\n 'statusUploading': 'uploading',\n 'statusUploaded': 'uploaded',\n 'statusWarning': 'warning',\n 'statusFailed': 'failed',\n 'headerStatusUploading': 'Uploading...',\n 'headerStatusPaused': 'Paused',\n 'headerStatusUploaded': 'Done',\n 'invalidMaxFileSize': 'File size too large.',\n 'invalidMinFileSize': 'File size too small.',\n 'invalidFileExtension': 'File type not allowed.'\n },\n validation: {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n },\n dropZone: ''\n },\n setOptions: function (options) {\n var that = this, activeInput = that.element;\n Widget.fn.setOptions.call(that, options);\n that.multiple = that.options.multiple;\n that.directory = that.options.directory;\n activeInput.attr('multiple', that._supportsMultiple() ? that.multiple : false);\n if (that.directory) {\n activeInput.attr('webkitdirectory', that.directory);\n activeInput.attr('directory', that.directory);\n }\n that.toggle(that.options.enabled);\n },\n enable: function (enable) {\n enable = typeof enable === 'undefined' ? true : enable;\n this.toggle(enable);\n },\n disable: function () {\n this.toggle(false);\n },\n toggle: function (enable) {\n enable = typeof enable === 'undefined' ? enable : !enable;\n this.wrapper.toggleClass('k-state-disabled', enable);\n this.element.prop('disabled', enable);\n },\n focus: function () {\n this.element.focus();\n },\n destroy: function () {\n var that = this;\n var customDropZone = $(that.options.dropZone);\n $(document).add($('.k-dropzone', that.wrapper)).add(that.wrapper.closest('form')).off(that._ns);\n if (customDropZone.length > 0) {\n customDropZone.off(that._ns);\n }\n $(that.element).off(NS);\n Widget.fn.destroy.call(that);\n },\n pause: function (fileEntry) {\n this._module.onPause({ target: $(fileEntry, this.wrapper) });\n var pauseIcon = fileEntry.find('.k-i-pause-sm');\n pauseIcon.removeClass('k-i-pause-sm').addClass('k-i-play-sm').attr('title', this.localization.resume);\n $(pauseIcon).parent().attr('aria-label', this.localization.resume);\n },\n resume: function (fileEntry) {\n this._module.onResume({ target: $(fileEntry, this.wrapper) });\n var playIcon = fileEntry.find('.k-i-play-sm');\n playIcon.removeClass('k-i-play-sm').addClass('k-i-pause-sm').attr('title', this.localization.pause);\n $(playIcon).parent().attr('aria-label', this.localization.pause);\n },\n upload: function () {\n var that = this;\n that._module.onSaveSelected();\n },\n getFiles: function () {\n var that = this;\n var filesData;\n var allFiles = [];\n var listItems = that.wrapper.find('.k-file');\n for (var i = 0; i < listItems.length; i++) {\n filesData = $(listItems[i]).data('fileNames');\n if (filesData) {\n for (var j = 0; j < filesData.length; j++) {\n allFiles.push(filesData[j]);\n }\n }\n }\n return allFiles;\n },\n clearAllFiles: function () {\n var that = this;\n var files = that.wrapper.find('.k-file');\n files.each(function (index, file) {\n that._removeFileByDomElement(file, false);\n });\n },\n removeAllFiles: function () {\n var that = this;\n var files = that.wrapper.find('.k-file');\n files.each(function (index, file) {\n that._removeFileByDomElement(file, true);\n });\n },\n removeFileByUid: function (uid) {\n this._removeFileByUid(uid, true);\n },\n clearFileByUid: function (uid) {\n this._removeFileByUid(uid, false);\n },\n _removeFileByUid: function (uid, shouldSendRemoveRequest) {\n var that = this;\n var fileEntry;\n if (typeof uid !== 'string') {\n return;\n }\n fileEntry = $('.k-file[' + kendo.attr('uid') + '=\"' + uid + '\"]', that.wrapper);\n if (fileEntry.length > 0) {\n that._removeFileByDomElement(fileEntry, shouldSendRemoveRequest);\n }\n },\n clearFile: function (callback) {\n this._removeFile(callback, false);\n },\n removeFile: function (callback) {\n this._removeFile(callback, true);\n },\n _removeFile: function (callback, shouldSendRemoveRequest) {\n var that = this;\n var files = that.wrapper.find('.k-file');\n var fileData;\n if (typeof callback === 'function') {\n files.each(function (index, file) {\n fileData = $(file).data('fileNames');\n if (callback(fileData)) {\n that._removeFileByDomElement(file, shouldSendRemoveRequest);\n }\n });\n }\n },\n _removeFileByDomElement: function (fileEntry, shouldSendRemoveRequest) {\n var that = this;\n var fileData = { target: $(fileEntry, that.wrapper) };\n var allFiles;\n if (that.options.async.saveUrl) {\n if ($(fileEntry).hasClass('k-file-progress')) {\n that._module.onCancel(fileData);\n } else {\n that._module.onRemove(fileData, {}, shouldSendRemoveRequest);\n }\n allFiles = $('.k-file', that.wrapper);\n if (allFiles.length === 0) {\n that._hideHeaderUploadstatus();\n } else {\n that._updateHeaderUploadStatus();\n }\n } else {\n that._module.onRemove(fileData, {}, shouldSendRemoveRequest);\n }\n },\n _addInput: function (sourceInput) {\n if (!sourceInput[0].nodeType) {\n return;\n }\n var that = this, input = sourceInput.clone().val('');\n input.insertAfter(that.element).data('kendo' + that.options.prefix + that.options.name, that);\n $(that.element).hide().attr('tabindex', '-1').removeAttr('id').off(NS);\n that._activeInput(input);\n that.element.focus();\n },\n _activeInput: function (input) {\n var that = this, wrapper = that.wrapper;\n that.element = input;\n if (that.directory) {\n input.attr('webkitdirectory', that.directory);\n input.attr('directory', that.directory);\n }\n input.attr('multiple', that._supportsMultiple() ? that.multiple : false).attr('autocomplete', 'off').on('click' + NS, function (e) {\n if (wrapper.hasClass('k-state-disabled')) {\n e.preventDefault();\n }\n }).on('focus' + NS, function () {\n $(this).parent().addClass('k-state-focused');\n }).on('blur' + NS, function () {\n $(this).parent().removeClass('k-state-focused');\n }).on('change' + NS, $.proxy(that._onInputChange, that)).on('keydown' + NS, $.proxy(that._onInputKeyDown, that));\n },\n _onInputKeyDown: function (e) {\n var that = this;\n var firstButton = that.wrapper.find('.k-upload-action:visible:first');\n if (e.keyCode === kendo.keys.TAB && firstButton.length > 0 && !e.shiftKey) {\n e.preventDefault();\n firstButton.focus();\n }\n },\n _onInputChange: function (e) {\n var that = this;\n var input = $(e.target);\n var files = assignGuidToFiles(that._inputFiles(input), that._isAsyncNonBatch());\n validateFiles(files, that.options.validation);\n var prevented = that.trigger(SELECT, { files: files });\n if (prevented) {\n that._addInput(input);\n input.remove();\n } else {\n that._module.onSelect({ target: input }, files);\n }\n },\n _readDirectory: function (item) {\n var deferred = new $.Deferred();\n var dirReader = item.createReader();\n var allFolderFiles = [];\n var readEntries = function () {\n dirReader.readEntries(function (entries) {\n if (!entries.length) {\n deferred.resolve(allFolderFiles);\n } else {\n allFolderFiles = allFolderFiles.concat(entries);\n readEntries();\n }\n }, deferred.reject);\n };\n readEntries();\n return deferred.promise();\n },\n _readFile: function (item) {\n var that = this;\n var fullpath = item.fullPath;\n item.file(function (file) {\n file.relativePath = fullpath.slice(1);\n that.droppedFolderFiles.push(file);\n that.droppedFolderCounter--;\n if (that.droppedFolderCounter === 0) {\n setTimeout(function () {\n if (that.droppedFolderCounter === 0) {\n if (that.droppedFolderFiles.length) {\n that._proceedDroppedItems(that.droppedFolderFiles);\n that.droppedFolderFiles = [];\n }\n }\n }, 0);\n }\n }, function () {\n logToConsole('File error.');\n });\n },\n _traverseFileTree: function (item, skipCounter) {\n var that = this;\n if (!skipCounter) {\n that.droppedFolderCounter--;\n }\n this._readDirectory(item).then(function (items) {\n that.droppedFolderCounter += items.length;\n for (var i = 0; i < items.length; i++) {\n if (items[i].isFile) {\n that._readFile(items[i]);\n } else if (items[i].isDirectory) {\n that._traverseFileTree(items[i]);\n }\n }\n });\n },\n _onDrop: function (e) {\n var dt = e.originalEvent.dataTransfer;\n var that = this;\n var droppedFiles = dt.files;\n var length;\n stopEvent(e);\n if (that.options.directoryDrop && dt.items) {\n length = dt.items.length;\n that.droppedFolderCounter = 0;\n that.droppedFolderFiles = [];\n for (var i = 0; i < length; i++) {\n if (dt.items[i].webkitGetAsEntry) {\n var entry = dt.items[i].webkitGetAsEntry();\n if (entry.isDirectory) {\n that._traverseFileTree(entry, true);\n } else if (entry.isFile) {\n that.droppedFolderFiles.push(dt.files[i]);\n }\n } else {\n that._proceedDroppedItems(droppedFiles);\n }\n }\n } else {\n that._proceedDroppedItems(droppedFiles);\n }\n },\n _proceedDroppedItems: function (droppedFiles) {\n var that = this;\n var files = assignGuidToFiles(getAllFileInfo(droppedFiles), that._isAsyncNonBatch());\n if (droppedFiles.length > 0 && !that.wrapper.hasClass('k-state-disabled')) {\n if (!that.multiple && files.length > 1) {\n files.splice(1, files.length - 1);\n }\n validateFiles(files, that.options.validation);\n var prevented = that.trigger(SELECT, { files: files });\n if (!prevented) {\n that._module.onSelect({ target: $('.k-dropzone', that.wrapper) }, files);\n }\n }\n },\n _filesContainValidationErrors: function (files) {\n var hasErrors = false;\n $(files).each(function (index, file) {\n if (file[VALIDATIONERRORS] && file[VALIDATIONERRORS].length > 0) {\n hasErrors = true;\n return false;\n }\n });\n return hasErrors;\n },\n _isAsyncNonBatch: function () {\n return this._async && !this.options.async.batch || false;\n },\n _renderInitialFiles: function (files) {\n var that = this;\n var idx = 0;\n files = assignGuidToFiles(files, true);\n for (idx = 0; idx < files.length; idx++) {\n var currentFile = files[idx];\n var fileEntry = that._enqueueFile(currentFile.name, { fileNames: [currentFile] });\n fileEntry.addClass('k-file-success').data('files', [files[idx]]);\n if (that._supportsRemove()) {\n that._fileAction(fileEntry, REMOVE);\n }\n }\n },\n _prepareTemplateData: function (name, data) {\n var filesData = data.fileNames, templateData = {}, totalSize = 0, idx = 0;\n for (idx = 0; idx < filesData.length; idx++) {\n totalSize += filesData[idx].size;\n }\n templateData.name = name;\n templateData.size = totalSize;\n templateData.files = data.fileNames;\n return templateData;\n },\n _prepareDefaultSingleFileEntryTemplate: function (data) {\n var that = this;\n var file = data.fileNames[0];\n var fileSize = getTotalFilesSizeMessage(data.fileNames);\n var errors = file[VALIDATIONERRORS];\n var template = '';\n if (errors && errors.length > 0) {\n template += '<li class=\\'k-file k-file-invalid\\'><span class=\\'k-progress\\'></span>' + '<span class=\\'k-file-invalid-extension-wrapper\\'>' + '<span class=\\'k-file-invalid-icon\\'>!</span>' + '<span class=\\'k-file-state\\'></span>' + '</span>' + '<span class=\\'k-file-name-size-wrapper\\'>' + '<span class=\\'k-file-name k-file-name-invalid\\' title=\\'' + file.name + '\\'>' + file.name + '</span>' + '<span class=\\'k-file-validation-message\\'>' + that.localization[errors[0]] + '</span>' + '</span>';\n } else {\n template += '<li class=\\'k-file\\'><span class=\\'k-progress\\'></span>' + '<span class=\\'k-file-extension-wrapper\\'>' + '<span class=\\'k-file-extension\\'>' + file.extension.substring(1) + '</span>' + '<span class=\\'k-file-state\\'></span>' + '</span>' + '<span class=\\'k-file-name-size-wrapper\\'><span class=\\'k-file-name\\' title=\\'' + file.name + '\\'>' + file.name + '</span>' + '<span class=\\'k-file-size\\'>' + fileSize + '</span></span>';\n }\n template += '<strong class=\\'k-upload-status\\'></strong>';\n return $(template);\n },\n _prepareDefaultMultipleFileEntriesTemplate: function (data) {\n var that = this;\n var files = data.fileNames;\n var filesHaveValidationErrors = that._filesContainValidationErrors(files);\n var totalFileSize = getTotalFilesSizeMessage(files);\n var template = '';\n var i, currentFile;\n if (filesHaveValidationErrors) {\n template += '<li class=\\'k-file k-file-invalid\\'><span class=\\'k-progress\\'></span>' + '<span class=\\'k-multiple-files-invalid-extension-wrapper\\'>' + '<span class=\\'k-file-invalid-icon\\'>!</span>';\n } else {\n template += '<li class=\\'k-file\\'><span class=\\'k-progress\\'></span>' + '<span class=\\'k-multiple-files-extension-wrapper\\'>';\n }\n template += '<span class=\\'k-file-state\\'></span></span>';\n files.sort(function (a, b) {\n if (a[VALIDATIONERRORS]) {\n return -1;\n }\n if (b[VALIDATIONERRORS]) {\n return 1;\n }\n return 0;\n });\n template += '<span class=\\'k-file-name-size-wrapper\\'>';\n for (i = 0; i < files.length; i++) {\n currentFile = files[i];\n if (currentFile[VALIDATIONERRORS] && currentFile[VALIDATIONERRORS].length > 0) {\n template += '<span class=\\'k-file-name k-file-name-invalid\\' title=\\'' + currentFile.name + '\\'>' + currentFile.name + '</span>';\n } else {\n template += '<span class=\\'k-file-name\\' title=\\'' + currentFile.name + '\\'>' + currentFile.name + '</span>';\n }\n }\n if (filesHaveValidationErrors) {\n template += '<span class=\\'k-file-validation-message\\'>' + that.localization.invalidFiles + '</span>';\n } else {\n template += '<span class=\\'k-file-information\\'>Total: ' + files.length + ' files, ' + totalFileSize + '</span>';\n }\n template += '</span><strong class=\\'k-upload-status\\'></strong>';\n return $(template);\n },\n _enqueueFile: function (name, data) {\n var that = this;\n var existingFileEntries;\n var fileEntry;\n var fileUid = data.fileNames[0].uid;\n var fileList = $('.k-upload-files', that.wrapper);\n var options = that.options;\n var template = options.template;\n var templateData;\n var removeEventArgs;\n if (fileList.length === 0) {\n fileList = $('<ul class=\\'k-upload-files k-reset\\'></ul>').appendTo(that.wrapper);\n if (!that.options.showFileList) {\n fileList.hide();\n }\n that.wrapper.removeClass('k-upload-empty');\n }\n existingFileEntries = $('.k-file', fileList);\n if (!template) {\n if (data.fileNames.length === 1) {\n fileEntry = that._prepareDefaultSingleFileEntryTemplate(data);\n } else {\n fileEntry = that._prepareDefaultMultipleFileEntriesTemplate(data);\n }\n } else {\n templateData = that._prepareTemplateData(name, data);\n template = kendo.template(template);\n fileEntry = $('<li class=\\'k-file\\'>' + template(templateData) + '</li>');\n fileEntry.find('.k-upload-action').addClass('k-button');\n that.angular('compile', function () {\n return {\n elements: fileEntry,\n data: [templateData]\n };\n });\n }\n fileEntry.attr(kendo.attr('uid'), fileUid).appendTo(fileList).data(data);\n if (!that._async) {\n $('.k-progress', fileEntry).width('100%');\n }\n if (!that.multiple && existingFileEntries.length > 0) {\n removeEventArgs = {\n files: existingFileEntries.data('fileNames'),\n headers: {}\n };\n if (!that.trigger(REMOVE, removeEventArgs)) {\n that._module.onRemove({ target: $(existingFileEntries, that.wrapper) }, removeEventArgs);\n }\n }\n return fileEntry;\n },\n _removeFileEntry: function (fileEntry) {\n var that = this;\n var fileList = fileEntry.closest('.k-upload-files');\n var allFiles, allCompletedFiles, allInvalidFiles;\n fileEntry.remove();\n allFiles = $('.k-file', fileList);\n allCompletedFiles = $('.k-file-success, .k-file-error', fileList);\n allInvalidFiles = $('.k-file-invalid', fileList);\n if (allCompletedFiles.length === allFiles.length || allInvalidFiles.length === allFiles.length) {\n this._hideUploadButton();\n }\n if (allFiles.length === 0) {\n fileList.remove();\n that.wrapper.addClass('k-upload-empty');\n that._hideHeaderUploadstatus();\n } else {\n that._updateHeaderUploadStatus();\n }\n },\n _fileAction: function (fileElement, actionKey, skipClear) {\n var classDictionary = {\n remove: 'k-i-x',\n cancel: 'k-i-cancel',\n retry: 'k-i-retry',\n pause: 'k-i-pause-sm'\n };\n var iconsClassDictionary = {\n remove: 'k-i-close',\n cancel: 'k-i-close',\n retry: 'k-i-reload-sm',\n pause: 'k-i-pause-sm'\n };\n var firstActionButton;\n if (!classDictionary.hasOwnProperty(actionKey)) {\n return;\n }\n if (!skipClear) {\n this._clearFileAction(fileElement);\n }\n if (!this.options.template) {\n if (!skipClear) {\n fileElement.find('.k-upload-status .k-upload-action').remove();\n }\n fileElement.find('.k-upload-status').append(this._renderAction(classDictionary[actionKey], this.localization[actionKey], iconsClassDictionary[actionKey]));\n } else {\n firstActionButton = fileElement.find('.k-upload-action').first();\n if (!firstActionButton.find('.k-icon').length) {\n firstActionButton.addClass('k-button').append('<span class=\\'k-icon ' + iconsClassDictionary[actionKey] + ' ' + classDictionary[actionKey] + '\\' title=\\'' + this.localization[actionKey] + '\\'' + 'aria-label=\\'' + this.localization[actionKey] + '\\'></span>').show();\n } else if (firstActionButton.next('.k-upload-action').length) {\n firstActionButton.next('.k-upload-action').addClass('k-button').append('<span class=\\'k-icon ' + iconsClassDictionary[actionKey] + ' ' + classDictionary[actionKey] + '\\' title=\\'' + this.localization[actionKey] + '\\'' + 'aria-label=\\'' + this.localization[actionKey] + '\\'></span>').show();\n }\n }\n },\n _fileState: function (fileEntry, stateKey) {\n var localization = this.localization, states = {\n uploading: { text: localization.statusUploading },\n uploaded: { text: localization.statusUploaded },\n failed: { text: localization.statusFailed }\n }, currentState = states[stateKey];\n if (currentState) {\n $('span.k-file-state', fileEntry).text(currentState.text);\n }\n },\n _renderAction: function (actionClass, actionText, iconClass) {\n if (actionClass !== '') {\n return $('<button type=\\'button\\' class=\\'k-button k-upload-action\\' aria-label=\\'' + actionText + '\\'>' + '<span class=\\'k-icon ' + iconClass + ' ' + actionClass + '\\' title=\\'' + actionText + '\\'></span>' + '</button>').on('focus', function () {\n $(this).addClass('k-state-focused');\n }).on('blur', function () {\n $(this).removeClass('k-state-focused');\n });\n } else {\n return $('<button type=\\'button\\' class=\\'k-button\\'>' + actionText + '</button>');\n }\n },\n _clearFileAction: function (fileElement) {\n $('.k-upload-action', fileElement).empty().hide();\n },\n _onFileAction: function (e) {\n var that = this;\n if (!that.wrapper.hasClass('k-state-disabled')) {\n var button = $(e.target).closest('.k-upload-action');\n var icon = button.find('.k-icon');\n var fileEntry = button.closest('.k-file');\n var files = fileEntry.data('fileNames');\n var hasValidationErrors = that._filesContainValidationErrors(files);\n var eventArgs = {\n files: files,\n headers: {}\n };\n that._retryClicked = false;\n if (icon.hasClass('k-i-x')) {\n if (!that.trigger(REMOVE, eventArgs)) {\n that._module.onRemove({ target: $(fileEntry, that.wrapper) }, eventArgs, !hasValidationErrors);\n }\n } else if (icon.hasClass('k-i-cancel')) {\n that.trigger(CANCEL, eventArgs);\n that._module.onCancel({ target: $(fileEntry, that.wrapper) });\n that._checkAllComplete();\n that._updateHeaderUploadStatus();\n } else if (icon.hasClass('k-i-pause-sm')) {\n that.trigger(PAUSE, eventArgs);\n that.pause(fileEntry);\n that._updateHeaderUploadStatus();\n } else if (icon.hasClass('k-i-play-sm')) {\n that.trigger(RESUME, eventArgs);\n that.resume(fileEntry);\n } else if (icon.hasClass('k-i-retry')) {\n $('.k-i-warning', fileEntry).remove();\n $('.k-progress', fileEntry).finish().show();\n that._module.onRetry({ target: $(fileEntry, that.wrapper) });\n that._retryClicked = true;\n }\n }\n return false;\n },\n _onUploadSelected: function () {\n var that = this;\n var wrapper = that.wrapper;\n if (!wrapper.hasClass('k-state-disabled')) {\n this._module.onSaveSelected();\n }\n return false;\n },\n _onClearSelected: function () {\n var that = this;\n var wrapper = that.wrapper;\n var clearEventArgs = {};\n if (!wrapper.hasClass('k-state-disabled') && !that.trigger(CLEAR, clearEventArgs)) {\n that.clearAllFiles();\n }\n return false;\n },\n _onFileProgress: function (e, percentComplete) {\n var progressPct;\n var warningPct;\n if (percentComplete > 100) {\n percentComplete = 100;\n }\n if (!this.options.template) {\n progressPct = $('.k-upload-pct', e.target);\n warningPct = $('.k-i-warning', e.target);\n if (warningPct.length) {\n warningPct.removeClass('k-i-warning').removeClass('k-icon').addClass('k-upload-pct');\n } else if (progressPct.length === 0) {\n $('.k-upload-status', e.target).prepend('<span class=\\'k-upload-pct\\'></span>');\n }\n if (percentComplete !== 100) {\n $('.k-upload-pct', e.target).text(percentComplete + '%');\n } else {\n $('.k-upload-pct', e.target).remove();\n }\n $('.k-progress', e.target).width(percentComplete + '%');\n } else {\n $('.k-progress', e.target).width(percentComplete + '%');\n }\n this.trigger(PROGRESS, {\n files: getFileEntry(e).data('fileNames'),\n percentComplete: percentComplete\n });\n },\n _onUploadSuccess: function (e, response, xhr) {\n var that = this;\n var fileEntry = getFileEntry(e);\n var prevented = that.trigger(SUCCESS, {\n files: fileEntry.data('fileNames'),\n response: response,\n operation: 'upload',\n XMLHttpRequest: xhr\n });\n if (prevented) {\n that._setUploadErrorState(fileEntry);\n } else {\n that._fileState(fileEntry, 'uploaded');\n fileEntry.removeClass('k-file-progress').addClass('k-file-success');\n that._updateHeaderUploadStatus();\n if (that._supportsRemove()) {\n that._fileAction(fileEntry, REMOVE);\n } else {\n that._clearFileAction(fileEntry);\n }\n }\n that._hideUploadProgress(fileEntry);\n that._checkAllComplete();\n },\n _onUploadError: function (e, xhr) {\n var that = this;\n var module = that._module;\n var fileEntry = getFileEntry(e);\n var fileUid = fileEntry.data('uid');\n that._setUploadErrorState(fileEntry);\n that.trigger(ERROR, {\n operation: 'upload',\n files: fileEntry.data('fileNames'),\n XMLHttpRequest: xhr\n });\n logToConsole('Server response: ' + xhr.responseText);\n if (!that.options.async.chunkSize) {\n that._hideUploadProgress(fileEntry);\n } else {\n if (module._decreasePosition) {\n module._decreasePosition(fileUid);\n }\n }\n that._checkAllComplete();\n if (this.options.async.autoRetryAfter) {\n this._autoRetryAfter(fileEntry);\n }\n },\n _autoRetryAfter: function (fileEntry) {\n var that = this;\n var retries = this._module.retries;\n if (!retries) {\n return;\n }\n if (!retries[fileEntry.data('uid')]) {\n retries[fileEntry.data('uid')] = 1;\n }\n if (retries[fileEntry.data('uid')] <= this.options.async.maxAutoRetries) {\n retries[fileEntry.data('uid')]++;\n setTimeout(function () {\n that._module.performUpload(fileEntry);\n }, this.options.async.autoRetryAfter);\n }\n },\n _setUploadErrorState: function (fileEntry) {\n var that = this;\n var uploadPercentage;\n that._fileState(fileEntry, 'failed');\n fileEntry.removeClass('k-file-progress').addClass('k-file-error');\n that._updateUploadProgress(fileEntry);\n uploadPercentage = $('.k-upload-pct', fileEntry);\n if (uploadPercentage.length > 0) {\n if (!uploadPercentage.parent().find('.k-i-warning').length) {\n uploadPercentage.removeClass('k-upload-pct').addClass('k-icon k-i-warning');\n }\n uploadPercentage.empty();\n } else {\n $('.k-upload-status', fileEntry).prepend('<span class=\\'k-icon k-i-warning\\'></span>');\n }\n this._updateHeaderUploadStatus();\n this._fileAction(fileEntry, 'retry');\n this._fileAction(fileEntry, REMOVE, true);\n if (that._retryClicked) {\n fileEntry.find('.k-i-retry').parent().focus();\n }\n },\n _updateUploadProgress: function (fileEntry) {\n var that = this;\n if (!that.options.async.chunkSize) {\n $('.k-progress', fileEntry).width('100%');\n } else {\n var fileUid = fileEntry.data('uid');\n if (that._module.metaData) {\n var fileMetaData = that._module.metaData[fileUid];\n if (fileMetaData) {\n var percentComplete = fileMetaData.totalChunks ? Math.round(fileMetaData.chunkIndex / fileMetaData.totalChunks * 100) : 100;\n that._onFileProgress({ target: $(fileEntry, that.wrapper) }, percentComplete);\n }\n }\n }\n },\n _hideUploadProgress: function (fileEntry) {\n $('.k-progress', fileEntry).delay(PROGRESSHIDEDELAY).fadeOut(PROGRESSHIDEDURATION, function () {\n $(this).css('width', '0%');\n });\n },\n _showUploadButton: function () {\n var that = this;\n var uploadButton = $('.k-upload-selected', that.wrapper);\n var clearButton = $('.k-clear-selected', that.wrapper);\n if (uploadButton.length === 0) {\n uploadButton = that._renderAction('', this.localization.uploadSelectedFiles).addClass('k-upload-selected');\n clearButton = that._renderAction('', this.localization.clearSelectedFiles).addClass('k-clear-selected');\n }\n this.wrapper.append(clearButton, uploadButton);\n },\n _hideUploadButton: function () {\n $('.k-upload-selected, .k-clear-selected', this.wrapper).remove();\n },\n _showHeaderUploadStatus: function (isUploading) {\n var that = this;\n var localization = that.localization;\n var dropZone = $('.k-dropzone', that.wrapper);\n var headerUploadStatus = $('.k-upload-status-total', that.wrapper);\n if (headerUploadStatus.length !== 0) {\n headerUploadStatus.remove();\n }\n headerUploadStatus = '<strong class=\"k-upload-status k-upload-status-total\"><span class=\"k-icon\"></span></strong>';\n if (isUploading) {\n headerUploadStatus = $(headerUploadStatus).append(localization.headerStatusUploading);\n headerUploadStatus.find('.k-icon').addClass(headerStatusIcon.loading);\n } else {\n headerUploadStatus = $(headerUploadStatus).append(localization.headerStatusUploaded);\n headerUploadStatus.find('.k-icon').addClass(headerStatusIcon.warning);\n }\n if (dropZone.length > 0) {\n dropZone.append(headerUploadStatus);\n } else {\n $('.k-upload-button', that.wrapper).after(headerUploadStatus);\n }\n },\n _updateHeaderUploadStatus: function () {\n var that = this;\n var headerUploadStatus = $('.k-upload-status-total', this.wrapper);\n var currentlyUploading = $('.k-file', that.wrapper).not('.k-file-success, .k-file-error, .k-file-invalid');\n var currentlyInvalid = $('.k-file-invalid', that.wrapper);\n var currentlyFailed = $('.k-file-error', that.wrapper);\n var currentlyPaused = $('.k-file', that.wrapper).find('.k-i-play-sm');\n var failedUploads, headerUploadStatusIcon;\n if (currentlyPaused.length && (currentlyPaused.length === currentlyUploading.length || !that.options.async.concurrent)) {\n headerUploadStatusIcon = $('.k-icon', headerUploadStatus).removeClass().addClass('k-icon').addClass('k-i-pause-sm');\n headerUploadStatus.html(headerUploadStatusIcon).append(that.localization.headerStatusPaused);\n } else if (currentlyUploading.length === 0 || currentlyInvalid.length > 0 || currentlyFailed.length > 0) {\n failedUploads = $('.k-file.k-file-error, .k-file.k-file-invalid', that.wrapper);\n headerUploadStatus = $('.k-upload-status-total', that.wrapper);\n headerUploadStatusIcon = $('.k-icon', headerUploadStatus).removeClass().addClass('k-icon').addClass(failedUploads.length !== 0 ? headerStatusIcon.warning : headerStatusIcon.success);\n headerUploadStatus.html(headerUploadStatusIcon).append(that.localization.headerStatusUploaded);\n }\n },\n _hideHeaderUploadstatus: function () {\n $('.k-upload-status-total', this.wrapper).remove();\n },\n _onParentFormSubmit: function () {\n var upload = this, element = upload.element;\n if (typeof this._module.onAbort !== 'undefined') {\n this._module.onAbort();\n }\n if (!element.value) {\n var input = $(element);\n input.attr('disabled', 'disabled');\n window.setTimeout(function () {\n input.removeAttr('disabled');\n }, 0);\n }\n },\n _onParentFormReset: function () {\n $('.k-upload-files', this.wrapper).remove();\n },\n _supportsFormData: function () {\n return typeof FormData != 'undefined';\n },\n _supportsMultiple: function () {\n var windows = this._userAgent().indexOf('Windows') > -1;\n return !kendo.support.browser.opera && !(kendo.support.browser.safari && windows);\n },\n _supportsDrop: function () {\n var userAgent = this._userAgent().toLowerCase();\n var isChrome = /chrome/.test(userAgent);\n var isSafari = !isChrome && /safari/.test(userAgent);\n var isWindowsSafari = isSafari && /windows/.test(userAgent);\n return !isWindowsSafari && this._supportsFormData() && this.options.async.saveUrl;\n },\n _userAgent: function () {\n return navigator.userAgent;\n },\n _setupDropZone: function () {\n var that = this;\n $('.k-upload-button', that.wrapper).wrap('<div class=\\'k-dropzone\\'></div>');\n var ns = that._ns;\n var dropZone = $('.k-dropzone', that.wrapper).append($('<em>' + that.localization.dropFilesHere + '</em>')).on('dragenter' + ns, stopEvent).on('dragover' + ns, function (e) {\n e.preventDefault();\n }).on('drop' + ns, $.proxy(that._onDrop, that));\n bindDragEventWrappers(dropZone, ns, function () {\n if (!dropZone.closest('.k-upload').hasClass('k-state-disabled')) {\n dropZone.addClass('k-dropzone-hovered');\n }\n }, function () {\n dropZone.removeClass('k-dropzone-hovered');\n });\n that._bindDocumentDragEventWrappers(dropZone);\n },\n _setupCustomDropZone: function () {\n var that = this;\n var dropZone = $(that.options.dropZone);\n $('.k-upload-button', that.wrapper).wrap('<div class=\\'k-dropzone\\'></div>').after($('<em>' + that.localization.dropFilesHere + '</em>'));\n var ns = that._ns;\n dropZone.on('dragenter' + ns, stopEvent).on('dragover' + ns, function (e) {\n e.preventDefault();\n }).on('drop' + ns, $.proxy(that._onDrop, that));\n bindDragEventWrappers(dropZone, ns, function (e) {\n if (!that.wrapper.hasClass('k-state-disabled')) {\n dropZone.removeClass('k-dropzone-hovered');\n $(e.target).addClass('k-dropzone-hovered');\n }\n }, function () {\n dropZone.removeClass('k-dropzone-hovered');\n dropZone.find('.k-dropzone-hovered').removeClass('k-dropzone-hovered');\n });\n that._bindDocumentDragEventWrappers(dropZone);\n },\n _bindDocumentDragEventWrappers: function (dropZone) {\n var that = this;\n var ns = that._ns;\n bindDragEventWrappers($(document), ns, function () {\n if (!that.wrapper.hasClass('k-state-disabled')) {\n dropZone.addClass('k-dropzone-active');\n dropZone.closest('.k-upload').removeClass('k-upload-empty');\n }\n }, function () {\n dropZone.removeClass('k-dropzone-active');\n if ($('li.k-file', dropZone.closest('.k-upload')).length === 0) {\n dropZone.closest('.k-upload').addClass('k-upload-empty');\n }\n });\n },\n _supportsRemove: function () {\n return !!this.options.async.removeUrl;\n },\n _submitRemove: function (fileNames, eventArgs, onSuccess, onError) {\n var upload = this, removeField = upload.options.async.removeField || 'fileNames', params = $.extend(eventArgs.data, antiForgeryTokens());\n params[removeField] = fileNames;\n jQuery.ajax({\n type: this.options.async.removeVerb,\n dataType: 'json',\n dataFilter: normalizeJSON,\n url: this.options.async.removeUrl,\n traditional: true,\n data: params,\n headers: eventArgs.headers,\n success: onSuccess,\n error: onError,\n xhrFields: { withCredentials: this.options.async.withCredentials }\n });\n },\n _wrapInput: function (input) {\n var that = this;\n var options = that.options;\n input.wrap('<div class=\\'k-widget k-upload k-header\\'><div class=\\'k-button k-upload-button\\' aria-label=\\'' + this.localization.select + '\\'></div></div>');\n if (!options.async.saveUrl) {\n input.closest('.k-upload').addClass('k-upload-sync');\n }\n input.closest('.k-upload').addClass('k-upload-empty');\n input.closest('.k-button').append('<span>' + this.localization.select + '</span>');\n return input.closest('.k-upload');\n },\n _checkAllComplete: function () {\n if ($('.k-file.k-file-progress', this.wrapper).length === 0) {\n this.trigger(COMPLETE);\n }\n },\n _inputFiles: function (sourceInput) {\n return inputFiles(sourceInput);\n }\n });\n var syncUploadModule = function (upload) {\n this.name = 'syncUploadModule';\n this.element = upload.wrapper;\n this.upload = upload;\n this.element.closest('form').attr('enctype', 'multipart/form-data').attr('encoding', 'multipart/form-data');\n };\n syncUploadModule.prototype = {\n onSelect: function (e, files) {\n var upload = this.upload;\n var sourceInput = $(e.target);\n var filesContainErrors = upload._filesContainValidationErrors(files);\n upload._addInput(sourceInput);\n var fileData = { 'fileNames': files };\n if (filesContainErrors) {\n sourceInput.remove();\n } else {\n fileData.relatedInput = sourceInput;\n }\n var file = upload._enqueueFile(getFileName(sourceInput), fileData);\n if (filesContainErrors) {\n upload._hideUploadProgress(file);\n }\n upload._fileAction(file, REMOVE);\n },\n onRemove: function (e) {\n var fileEntry = getFileEntry(e);\n var relatedInput = fileEntry.data('relatedInput');\n if (relatedInput) {\n relatedInput.remove();\n }\n this.upload._removeFileEntry(fileEntry);\n }\n };\n var iframeUploadModule = function (upload) {\n this.name = 'iframeUploadModule';\n this.element = upload.wrapper;\n this.upload = upload;\n this.iframes = [];\n };\n Upload._frameId = 0;\n iframeUploadModule.prototype = {\n onSelect: function (e, files) {\n var upload = this.upload;\n var sourceInput = $(e.target);\n var hasValidationErrors = upload._filesContainValidationErrors(files);\n var fileEntry = this.prepareUpload(sourceInput, files, hasValidationErrors);\n if (upload.options.async.autoUpload) {\n if (!hasValidationErrors) {\n this.performUpload(fileEntry);\n } else {\n upload._fileAction(fileEntry, REMOVE);\n upload._showHeaderUploadStatus(false);\n }\n } else {\n upload._fileAction(fileEntry, REMOVE);\n if (!hasValidationErrors) {\n upload._showUploadButton();\n } else {\n upload._updateHeaderUploadStatus();\n }\n }\n if (hasValidationErrors) {\n upload._hideUploadProgress(fileEntry);\n }\n },\n prepareUpload: function (sourceInput, files, hasValidationErrors) {\n var upload = this.upload;\n var activeInput = $(upload.element);\n var name = upload.options.async.saveField || sourceInput.attr('name');\n var fileEntry, fileData, iframe, form;\n upload._addInput(sourceInput);\n sourceInput.attr('name', name);\n if (!hasValidationErrors) {\n iframe = this.createFrame(upload.name + '_' + Upload._frameId++);\n this.registerFrame(iframe);\n form = this.createForm(upload.options.async.saveUrl, iframe.attr('name')).append(activeInput);\n fileData = {\n 'frame': iframe,\n 'relatedInput': activeInput,\n 'fileNames': files\n };\n } else {\n sourceInput.remove();\n fileData = { 'fileNames': files };\n }\n fileEntry = upload._enqueueFile(getFileName(sourceInput), fileData);\n if (iframe) {\n iframe.data({\n 'form': form,\n 'file': fileEntry\n });\n }\n return fileEntry;\n },\n performUpload: function (fileEntry) {\n var e = { files: fileEntry.data('fileNames') };\n var iframe = fileEntry.data('frame');\n var upload = this.upload;\n if (!upload.trigger(UPLOAD, e)) {\n upload._hideUploadButton();\n upload._showHeaderUploadStatus(true);\n iframe.appendTo(document.body);\n var form = iframe.data('form').attr('action', upload.options.async.saveUrl).appendTo(document.body);\n e.data = $.extend({}, e.data, antiForgeryTokens());\n for (var key in e.data) {\n var dataInput = form.find('input[name=\\'' + key + '\\']');\n if (dataInput.length === 0) {\n dataInput = $('<input>', {\n type: 'hidden',\n name: key\n }).prependTo(form);\n }\n dataInput.val(e.data[key]);\n }\n upload._fileAction(fileEntry, CANCEL);\n upload._fileState(fileEntry, 'uploading');\n $(fileEntry).removeClass('k-file-error').addClass('k-file-progress');\n iframe.one('load', $.proxy(this.onIframeLoad, this));\n form[0].submit();\n } else {\n upload._removeFileEntry(iframe.data('file'));\n this.cleanupFrame(iframe);\n this.unregisterFrame(iframe);\n }\n },\n onSaveSelected: function () {\n var module = this;\n var upload = module.upload;\n $('.k-file', this.element).each(function () {\n var fileEntry = $(this);\n var started = isFileUploadStarted(fileEntry);\n var hasValidationErrors = upload._filesContainValidationErrors(fileEntry.data('fileNames'));\n if (!started && !hasValidationErrors) {\n module.performUpload(fileEntry);\n }\n });\n },\n onIframeLoad: function (e) {\n var iframe = $(e.target), responseText;\n try {\n responseText = iframe.contents().text();\n } catch (ex) {\n responseText = 'Error trying to get server response: ' + ex;\n }\n this.processResponse(iframe, responseText);\n },\n processResponse: function (iframe, responseText) {\n var fileEntry = iframe.data('file'), module = this, fakeXHR = { responseText: responseText };\n tryParseJSON(responseText, function (jsonResult) {\n $.extend(fakeXHR, {\n statusText: 'OK',\n status: '200'\n });\n module.upload._onFileProgress({ target: $(fileEntry, module.upload.wrapper) }, 100);\n module.upload._onUploadSuccess({ target: $(fileEntry, module.upload.wrapper) }, jsonResult, fakeXHR);\n module.cleanupFrame(iframe);\n module.unregisterFrame(iframe);\n }, function () {\n $.extend(fakeXHR, {\n statusText: 'error',\n status: '500'\n });\n module.upload._onUploadError({ target: $(fileEntry, module.upload.wrapper) }, fakeXHR);\n });\n },\n onCancel: function (e) {\n var iframe = $(e.target).data('frame');\n this.stopFrameSubmit(iframe);\n this.cleanupFrame(iframe);\n this.unregisterFrame(iframe);\n this.upload._removeFileEntry(iframe.data('file'));\n },\n onRetry: function (e) {\n var fileEntry = getFileEntry(e);\n this.performUpload(fileEntry);\n },\n onRemove: function (e, eventArgs, shouldSendRemoveRequest) {\n var module = this;\n var upload = module.upload;\n var fileEntry = getFileEntry(e);\n var iframe = fileEntry.data('frame');\n if (iframe) {\n module.unregisterFrame(iframe);\n upload._removeFileEntry(fileEntry);\n module.cleanupFrame(iframe);\n } else {\n if (fileEntry.hasClass('k-file-success')) {\n removeUploadedFile(fileEntry, upload, eventArgs, shouldSendRemoveRequest);\n } else {\n upload._removeFileEntry(fileEntry);\n }\n }\n },\n onAbort: function () {\n var element = this.element, module = this;\n $.each(this.iframes, function () {\n $('input', this.data('form')).appendTo(element);\n module.stopFrameSubmit(this[0]);\n this.data('form').remove();\n this.remove();\n });\n this.iframes = [];\n },\n createFrame: function (id) {\n return $('<iframe' + ' name=\\'' + id + '\\'' + ' id=\\'' + id + '\\'' + ' style=\\'display:none;\\' />');\n },\n createForm: function (action, target) {\n return $('<form enctype=\\'multipart/form-data\\' method=\\'POST\\'' + ' action=\\'' + action + '\\'' + ' target=\\'' + target + '\\'' + '/>');\n },\n stopFrameSubmit: function (frame) {\n if (typeof frame.stop != 'undefined') {\n frame.stop();\n } else if (frame.document) {\n frame.document.execCommand('Stop');\n }\n },\n registerFrame: function (frame) {\n this.iframes.push(frame);\n },\n unregisterFrame: function (frame) {\n this.iframes = $.grep(this.iframes, function (value) {\n return value.attr('name') != frame.attr('name');\n });\n },\n cleanupFrame: function (frame) {\n var form = frame.data('form');\n frame.data('file').data('frame', null);\n setTimeout(function () {\n form.remove();\n frame.remove();\n }, 1);\n }\n };\n var formDataUploadModule = function (upload) {\n this.name = 'formDataUploadModule';\n this.element = upload.wrapper;\n this.upload = upload;\n this.position = {};\n this.metaData = {};\n this.cancelled = {};\n this.resume = {};\n this.paused = {};\n this.retries = {};\n };\n formDataUploadModule.prototype = {\n onSelect: function (e, files) {\n var upload = this.upload;\n var module = this;\n var sourceElement = $(e.target);\n var fileEntries = this.prepareUpload(sourceElement, files);\n var hasValidationErrors;\n var prev;\n $.each(fileEntries, function (index) {\n hasValidationErrors = upload._filesContainValidationErrors($(this.data('fileNames')));\n if (upload.options.async.autoUpload) {\n if (!hasValidationErrors) {\n if (upload.options.async.chunkSize) {\n module.prepareChunk(this);\n prev = this.prev();\n if (upload.options.async.concurrent || index === 0 && !prev.length || index === 0 && prev.hasClass('k-file-success')) {\n module.performUpload(this);\n }\n } else {\n module.performUpload(this);\n }\n } else {\n upload._fileAction(this, REMOVE);\n upload._showHeaderUploadStatus(false);\n }\n } else {\n upload._fileAction(this, REMOVE);\n if (!hasValidationErrors) {\n upload._showUploadButton();\n this.addClass('k-toupload');\n } else {\n upload._updateHeaderUploadStatus();\n }\n }\n if (hasValidationErrors) {\n upload._hideUploadProgress(this);\n }\n });\n },\n prepareUpload: function (sourceElement, files) {\n var fileEntries = this.enqueueFiles(files);\n if (sourceElement.is('input')) {\n $.each(fileEntries, function () {\n $(this).data('relatedInput', sourceElement);\n });\n sourceElement.data('relatedFileEntries', fileEntries);\n this.upload._addInput(sourceElement);\n }\n return fileEntries;\n },\n enqueueFiles: function (files) {\n var upload = this.upload;\n var name;\n var i;\n var filesLength = files.length;\n var currentFile;\n var fileEntry;\n var fileEntries = [];\n if (upload.options.async.batch === true) {\n name = $.map(files, function (file) {\n return file.name;\n }).join(', ');\n if (upload.directory || upload.options.directoryDrop) {\n $(files).each(function () {\n if (this.rawFile.webkitRelativePath || this.rawFile.relativePath) {\n this.name = this.rawFile.webkitRelativePath || this.rawFile.relativePath;\n }\n });\n }\n fileEntry = upload._enqueueFile(name, { fileNames: files });\n fileEntry.data('files', files);\n fileEntries.push(fileEntry);\n } else {\n for (i = 0; i < filesLength; i++) {\n currentFile = files[i];\n name = currentFile.name;\n if (upload.directory || upload.options.directoryDrop) {\n if (currentFile.rawFile.webkitRelativePath || currentFile.rawFile.relativePath) {\n currentFile.name = currentFile.rawFile.webkitRelativePath || currentFile.rawFile.relativePath;\n }\n }\n fileEntry = upload._enqueueFile(name, { fileNames: [currentFile] });\n fileEntry.data('files', [currentFile]);\n fileEntries.push(fileEntry);\n }\n }\n return fileEntries;\n },\n performUpload: function (fileEntry) {\n var upload = this.upload, formData = this.createFormData(), xhr = this.createXHR(), e = {\n files: fileEntry.data('fileNames'),\n XMLHttpRequest: xhr\n }, files;\n if (!upload.trigger(UPLOAD, e)) {\n if (fileEntry.find('.k-i-cancel').length === 0) {\n if (upload.options.async.chunkSize) {\n upload._fileAction(fileEntry, PAUSE);\n }\n upload._fileAction(fileEntry, CANCEL, upload.options.async.chunkSize);\n }\n if (!upload.wrapper.find('.k-toupload').length) {\n upload._hideUploadButton();\n }\n upload._showHeaderUploadStatus(true);\n if (e.formData) {\n formData = e.formData;\n } else {\n e.data = $.extend({}, e.data, antiForgeryTokens());\n for (var key in e.data) {\n formData.append(key, e.data[key]);\n }\n files = fileEntry.data('files');\n if (files) {\n this.populateFormData(formData, files);\n }\n }\n upload._fileState(fileEntry, 'uploading');\n $(fileEntry).removeClass('k-file-error').addClass('k-file-progress');\n if (upload.options.async.useArrayBuffer && window.FileReader) {\n this._readFile(upload.options.async.saveUrl, formData, fileEntry, xhr);\n } else {\n this.postFormData(upload.options.async.saveUrl, formData, fileEntry, xhr);\n }\n } else {\n this.removeFileEntry(fileEntry);\n }\n },\n _readFile: function (saveUrl, formData, fileEntry, xhr) {\n var that = this;\n var upload = that.upload;\n var file = fileEntry.data('files')[0];\n var reader = new FileReader();\n reader.onload = function (e) {\n try {\n if (!that.fileArrayBuffer) {\n that.fileArrayBuffer = e.target.result;\n } else {\n that.fileArrayBuffer = that._appendBuffer(that.fileArrayBuffer, e.target.result);\n }\n } catch (err) {\n upload._onUploadError({ target: $(fileEntry, upload.wrapper) }, xhr);\n return;\n }\n if (that.position[file.uid] > file.size) {\n that.postFormData(upload.options.async.saveUrl, that.fileArrayBuffer, fileEntry, xhr);\n that.fileArrayBuffer = null;\n } else {\n that._readFile(saveUrl, formData, fileEntry, xhr);\n }\n };\n reader.onerror = function () {\n upload._onUploadError({ target: $(fileEntry, upload.wrapper) }, xhr);\n };\n reader.readAsArrayBuffer(that._getCurrentChunk(file.rawFile, file.uid));\n },\n _appendBuffer: function (buffer1, buffer2) {\n var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n tmp.set(new Uint8Array(buffer1), 0);\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n return tmp.buffer;\n },\n onSaveSelected: function () {\n var module = this;\n var upload = module.upload;\n $('.k-toupload', this.element).filter(function () {\n var fileEntry = $(this);\n var started = isFileUploadStarted(fileEntry);\n var hasValidationErrors = upload._filesContainValidationErrors(fileEntry.data('fileNames'));\n return !started && !hasValidationErrors;\n }).each(function (index) {\n var fileEntry = $(this);\n var prevEntry = fileEntry.prev();\n fileEntry.removeClass('k-toupload');\n if (upload.options.async.chunkSize) {\n module.prepareChunk(fileEntry);\n if (upload.options.async.concurrent || index === 0 && !prevEntry.length || (index === 0 && prevEntry.hasClass('k-file-success') || prevEntry.hasClass('k-file-error'))) {\n module.performUpload(fileEntry);\n }\n } else {\n module.performUpload(fileEntry);\n }\n });\n },\n onCancel: function (e) {\n var fileEntry = getFileEntry(e);\n if (this.upload.options.async.chunkSize) {\n this.cancelled[fileEntry.data('uid')] = true;\n }\n this.stopUploadRequest(fileEntry);\n this.removeFileEntry(fileEntry);\n },\n onPause: function (e) {\n var fileEntry = getFileEntry(e);\n var fileUid = fileEntry.data('uid');\n var async = this.upload.options.async;\n if (async.chunkSize) {\n this.retries[fileUid] = async.maxAutoRetries + 1;\n this.paused[fileUid] = true;\n this.resume[fileUid] = false;\n }\n },\n onResume: function (e) {\n var fileEntry = getFileEntry(e);\n var fileUid = fileEntry.data('uid');\n if (this.upload.options.async.chunkSize) {\n delete this.paused[fileUid];\n this.resume[fileUid] = true;\n this.retries[fileEntry.data('uid')] = 1;\n this._increaseChunkIndex(fileUid);\n this.performUpload(fileEntry);\n }\n },\n onRetry: function (e) {\n var fileEntry = getFileEntry(e);\n var async = this.upload.options.async;\n if (async.chunkSize) {\n this.retries[fileEntry.data('uid')] = async.maxAutoRetries + 1;\n delete this.paused[fileEntry.data('uid')];\n }\n this.performUpload(fileEntry);\n },\n onRemove: function (e, eventArgs, shouldSendRemoveRequest) {\n var module = this;\n var upload = module.upload;\n var fileEntry = getFileEntry(e);\n var async = this.upload.options.async;\n if (async.chunkSize) {\n this.retries[fileEntry.data('uid')] = async.maxAutoRetries + 1;\n }\n if (fileEntry.hasClass('k-file-success')) {\n removeUploadedFile(fileEntry, upload, eventArgs, shouldSendRemoveRequest);\n } else {\n module.removeFileEntry(fileEntry);\n }\n },\n createXHR: function () {\n return new XMLHttpRequest();\n },\n postFormData: function (url, data, fileEntry, xhr) {\n var module = this;\n fileEntry.data('request', xhr);\n xhr.addEventListener('load', function (e) {\n module.onRequestSuccess.call(module, e, fileEntry);\n }, false);\n xhr.addEventListener(ERROR, function (e) {\n module.onRequestError.call(module, e, fileEntry);\n }, false);\n xhr.upload.addEventListener('progress', function (e) {\n module.onRequestProgress.call(module, e, fileEntry);\n }, false);\n xhr.open('POST', url, true);\n xhr.withCredentials = this.upload.options.async.withCredentials;\n var accept = this.upload.options.async.accept;\n if (accept) {\n xhr.setRequestHeader('Accept', accept);\n }\n xhr.send(data);\n },\n createFormData: function () {\n return new FormData();\n },\n populateFormData: function (data, files) {\n var chunk;\n var i;\n var length = files.length;\n var uid;\n var upload = this.upload;\n if (upload.options.async.chunkSize) {\n uid = files[0].uid;\n chunk = this._getCurrentChunk(files[0].rawFile, uid);\n data.append(upload.options.async.saveField || upload.name, chunk);\n var serializedMetaData = JSON.stringify(this.metaData[uid]);\n data.append('metadata', serializedMetaData);\n } else {\n for (i = 0; i < length; i++) {\n data.append(upload.options.async.saveField || upload.name, files[i].rawFile);\n }\n }\n return data;\n },\n onRequestSuccess: function (e, fileEntry) {\n var xhr = e.target, module = this;\n function raiseError() {\n module.upload._onUploadError({ target: $(fileEntry, module.upload.wrapper) }, xhr);\n }\n function parseSuccess(jsonResult) {\n var batch = module.upload.options.async.batch;\n var chunkSize = module.upload.options.async.chunkSize;\n var concurrent = module.upload.options.async.concurrent;\n var fileUid = jsonResult.fileUid;\n if (module.paused[fileUid] || module.cancelled[fileUid]) {\n return;\n }\n delete module.retries[fileUid];\n if (chunkSize && !batch && !jsonResult.uploaded) {\n module._increaseChunkIndex(fileUid);\n module.performUpload(fileEntry);\n } else if (chunkSize && !batch && !concurrent && fileEntry.next().length && !fileEntry.next().hasClass('k-toupload')) {\n module.upload._onFileProgress({ target: $(fileEntry, module.upload.wrapper) }, 100);\n module._resetChunkIndex(fileUid);\n module.upload._onUploadSuccess({ target: $(fileEntry, module.upload.wrapper) }, jsonResult, xhr);\n module.performUpload(fileEntry.next());\n } else {\n module.upload._onFileProgress({ target: $(fileEntry, module.upload.wrapper) }, 100);\n module.upload._onUploadSuccess({ target: $(fileEntry, module.upload.wrapper) }, jsonResult, xhr);\n module.cleanupFileEntry(fileEntry);\n }\n }\n if (xhr.status >= 200 && xhr.status <= 299) {\n tryParseJSON(xhr.responseText, parseSuccess, raiseError);\n } else {\n raiseError();\n }\n },\n onRequestError: function (e, fileEntry) {\n var xhr = e.target;\n this.upload._onUploadError({ target: $(fileEntry, this.upload.wrapper) }, xhr);\n },\n cleanupFileEntry: function (fileEntry) {\n var relatedInput = fileEntry.data('relatedInput'), uploadComplete = true;\n if (relatedInput) {\n $.each(relatedInput.data('relatedFileEntries') || [], function () {\n if (this.parent().length > 0 && this[0] != fileEntry[0]) {\n uploadComplete = uploadComplete && this.hasClass('k-file-success');\n }\n });\n if (uploadComplete) {\n relatedInput.remove();\n }\n }\n },\n removeFileEntry: function (fileEntry) {\n var chunkSize = this.upload.options.async.chunkSize;\n var concurrent = this.upload.options.async.concurrent;\n var isUploadButtonVisible = this.upload.wrapper.find('.k-upload-selected').length > 0;\n this.cleanupFileEntry(fileEntry);\n if (chunkSize && !concurrent && !isUploadButtonVisible) {\n if (fileEntry.next().length) {\n this.performUpload(fileEntry.next());\n }\n }\n this.upload._removeFileEntry(fileEntry);\n },\n onRequestProgress: function (e, fileEntry) {\n var percentComplete = Math.round(e.loaded * 100 / e.total);\n var fileUid = fileEntry.data('uid');\n var fileMetaData;\n if (this.upload.options.async.chunkSize) {\n fileMetaData = this.metaData[fileUid];\n percentComplete = fileMetaData && fileMetaData.totalChunks ? Math.round(fileMetaData.chunkIndex / fileMetaData.totalChunks * 100) : 100;\n }\n this.upload._onFileProgress({ target: $(fileEntry, this.upload.wrapper) }, percentComplete);\n },\n stopUploadRequest: function (fileEntry) {\n fileEntry.data('request').abort();\n },\n prepareChunk: function (fileEntry) {\n var file = fileEntry.data('files')[0];\n var rawFile = file.rawFile;\n var uid = file.uid;\n var chunkSize = this.upload.options.async.chunkSize;\n this.position[uid] = 0;\n this.metaData[uid] = {\n chunkIndex: 0,\n contentType: rawFile.type,\n fileName: rawFile.name,\n relativePath: file.name,\n totalFileSize: rawFile.size,\n totalChunks: Math.ceil(rawFile.size / chunkSize),\n uploadUid: uid\n };\n },\n _decreaseChunkIndex: function (uid) {\n this.metaData[uid].chunkIndex--;\n },\n _increaseChunkIndex: function (uid) {\n this.metaData[uid].chunkIndex++;\n },\n _resetChunkIndex: function (uid) {\n this.metaData[uid].chunkIndex = 0;\n },\n _decreasePosition: function (uid) {\n this.position[uid] -= this.upload.options.async.chunkSize;\n },\n _getCurrentChunk: function (file, uid) {\n var oldPosition = this.position[uid];\n var methodToInvoke;\n var async = this.upload.options.async;\n var chunkSize = async.chunkSize || async.bufferChunkSize;\n if (!this.position[uid]) {\n this.position[uid] = 0;\n }\n this.position[uid] += chunkSize;\n if (!!(methodToInvoke = this._getChunker(file))) {\n return file[methodToInvoke](oldPosition, this.position[uid]);\n } else {\n return file;\n }\n },\n _getChunker: function (file) {\n if (file.slice) {\n return 'slice';\n } else if (file.mozSlice) {\n return 'mozSlice';\n } else if (file.webkitSlice) {\n return 'webkitSlice';\n } else {\n return null;\n }\n }\n };\n function getFileName(input) {\n return $.map(inputFiles(input), function (file) {\n return file.name;\n }).join(', ');\n }\n function inputFiles($input) {\n var input = $input[0];\n if (input.files) {\n return getAllFileInfo(input.files);\n } else {\n return [{\n name: stripPath(input.value),\n extension: getFileExtension(input.value),\n size: null\n }];\n }\n }\n function getAllFileInfo(rawFiles) {\n return $.map(rawFiles, function (file) {\n return getFileInfo(file);\n });\n }\n function getFileInfo(rawFile) {\n var fileName = rawFile.name || rawFile.fileName;\n return {\n name: kendo.htmlEncode(fileName),\n extension: getFileExtension(fileName),\n size: typeof rawFile.size == 'number' ? rawFile.size : rawFile.fileSize,\n rawFile: rawFile\n };\n }\n function getFileExtension(fileName) {\n var matches = fileName.match(rFileExtension);\n return matches ? matches[0] : '';\n }\n function stripPath(name) {\n var slashIndex = name.lastIndexOf('\\\\');\n return slashIndex != -1 ? name.substr(slashIndex + 1) : name;\n }\n function assignGuidToFiles(files, unique) {\n var uid = kendo.guid();\n return $.map(files, function (file) {\n file.uid = unique ? kendo.guid() : uid;\n return file;\n });\n }\n function validateFiles(files, validationInfo) {\n var allowedExtensions = parseAllowedExtensions(validationInfo.allowedExtensions);\n var maxFileSize = validationInfo.maxFileSize;\n var minFileSize = validationInfo.minFileSize;\n for (var i = 0; i < files.length; i++) {\n validateFileExtension(files[i], allowedExtensions);\n validateFileSize(files[i], minFileSize, maxFileSize);\n }\n }\n function parseAllowedExtensions(extensions) {\n var allowedExtensions = $.map(extensions, function (ext) {\n var parsedExt = ext.substring(0, 1) === '.' ? ext : '.' + ext;\n return parsedExt.toLowerCase();\n });\n return allowedExtensions;\n }\n function validateFileExtension(file, allowedExtensions) {\n if (allowedExtensions.length > 0) {\n if (allowedExtensions.indexOf(file.extension.toLowerCase()) < 0) {\n file.validationErrors = file.validationErrors || [];\n if ($.inArray(INVALIDFILEEXTENSION, file.validationErrors) === -1) {\n file.validationErrors.push(INVALIDFILEEXTENSION);\n }\n }\n }\n }\n function validateFileSize(file, minFileSize, maxFileSize) {\n if (minFileSize !== 0 && file.size < minFileSize) {\n file.validationErrors = file.validationErrors || [];\n if ($.inArray(INVALIDMINFILESIZE, file.validationErrors) === -1) {\n file.validationErrors.push(INVALIDMINFILESIZE);\n }\n }\n if (maxFileSize !== 0 && file.size > maxFileSize) {\n file.validationErrors = file.validationErrors || [];\n if ($.inArray(INVALIDMAXFILESIZE, file.validationErrors) === -1) {\n file.validationErrors.push(INVALIDMAXFILESIZE);\n }\n }\n }\n function getTotalFilesSizeMessage(files) {\n var totalSize = 0;\n if (typeof files[0].size == 'number') {\n for (var i = 0; i < files.length; i++) {\n if (files[i].size) {\n totalSize += files[i].size;\n }\n }\n } else {\n return '';\n }\n totalSize /= 1024;\n if (totalSize < 1024) {\n return totalSize.toFixed(2) + ' KB';\n } else {\n return (totalSize / 1024).toFixed(2) + ' MB';\n }\n }\n function shouldRemoveFileEntry(upload) {\n return !upload.multiple && $('.k-file', upload.wrapper).length > 1;\n }\n function removeUploadedFile(fileEntry, upload, eventArgs, shouldSendRemoveRequest) {\n if (!upload._supportsRemove()) {\n if (shouldRemoveFileEntry(upload) || !shouldSendRemoveRequest) {\n upload._removeFileEntry(fileEntry);\n }\n return;\n }\n var files = fileEntry.data('fileNames');\n var fileNames = $.map(files, function (file) {\n return file.name;\n });\n if (shouldSendRemoveRequest === false) {\n upload._removeFileEntry(fileEntry);\n return;\n }\n upload._submitRemove(fileNames, eventArgs, function onSuccess(data, textStatus, xhr) {\n var prevented = upload.trigger(SUCCESS, {\n operation: 'remove',\n files: files,\n response: data,\n XMLHttpRequest: xhr\n });\n if (!prevented) {\n upload._removeFileEntry(fileEntry);\n }\n }, function onError(xhr) {\n if (shouldRemoveFileEntry(upload)) {\n upload._removeFileEntry(fileEntry);\n }\n upload.trigger(ERROR, {\n operation: 'remove',\n files: files,\n XMLHttpRequest: xhr\n });\n logToConsole('Server response: ' + xhr.responseText);\n });\n }\n function tryParseJSON(input, onSuccess, onError) {\n var success = false, json = '';\n try {\n json = $.parseJSON(normalizeJSON(input));\n success = true;\n } catch (e) {\n onError();\n }\n if (success) {\n onSuccess(json);\n }\n }\n function normalizeJSON(input) {\n if (typeof input === 'undefined' || input === '') {\n input = '{}';\n }\n return input;\n }\n function stopEvent(e) {\n e.stopPropagation();\n e.preventDefault();\n }\n function bindDragEventWrappers(element, namespace, onDragEnter, onDragLeave) {\n var hideInterval, lastDrag;\n element.on('dragenter' + namespace, function (e) {\n onDragEnter(e);\n lastDrag = new Date();\n if (!hideInterval) {\n hideInterval = setInterval(function () {\n var sinceLastDrag = new Date() - lastDrag;\n if (sinceLastDrag > 100) {\n onDragLeave();\n clearInterval(hideInterval);\n hideInterval = null;\n }\n }, 100);\n }\n }).on('dragover' + namespace, function () {\n lastDrag = new Date();\n });\n }\n function isFileUploadStarted(fileEntry) {\n return fileEntry.is('.k-file-progress, .k-file-success, .k-file-error');\n }\n function getFileEntry(e) {\n return $(e.target).closest('.k-file');\n }\n kendo.ui.plugin(Upload);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.filebrowser', [\n 'kendo.listview',\n 'kendo.dropdownlist',\n 'kendo.upload'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'filebrowser',\n name: 'FileBrowser',\n category: 'web',\n description: '',\n hidden: true,\n depends: [\n 'selectable',\n 'listview',\n 'dropdownlist',\n 'upload'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, isPlainObject = $.isPlainObject, proxy = $.proxy, extend = $.extend, placeholderSupported = kendo.support.placeholder, browser = kendo.support.browser, isFunction = kendo.isFunction, trimSlashesRegExp = /(^\\/|\\/$)/g, CHANGE = 'change', APPLY = 'apply', ERROR = 'error', CLICK = 'click', NS = '.kendoFileBrowser', BREADCRUBMSNS = '.kendoBreadcrumbs', SEARCHBOXNS = '.kendoSearchBox', NAMEFIELD = 'name', SIZEFIELD = 'size', TYPEFIELD = 'type', DEFAULTSORTORDER = {\n field: TYPEFIELD,\n dir: 'asc'\n }, EMPTYTILE = kendo.template('<li class=\"k-tile-empty\"><strong>${text}</strong></li>'), TOOLBARTMPL = '<div class=\"k-widget k-filebrowser-toolbar k-header k-floatwrap\">' + '<div class=\"k-toolbar-wrap\">' + '# if (showUpload) { # ' + '<div class=\"k-widget k-upload\"><div class=\"k-button k-button-icontext k-upload-button\">' + '<span class=\"k-icon k-i-plus\"></span>#=messages.uploadFile#<input type=\"file\" name=\"file\" /></div></div>' + '# } #' + '# if (showCreate) { #' + '<button type=\"button\" class=\"k-button k-button-icon\"><span class=\"k-icon k-i-folder-add\" /></button>' + '# } #' + '# if (showDelete) { #' + '<button type=\"button\" class=\"k-button k-button-icon k-state-disabled\"><span class=\"k-icon k-i-close\" /></button> ' + '# } #' + '</div>' + '<div class=\"k-tiles-arrange\">' + '<label>#=messages.orderBy#: <select /></label>' + '</div>' + '</div>';\n extend(true, kendo.data, {\n schemas: {\n 'filebrowser': {\n data: function (data) {\n return data.items || data || [];\n },\n model: {\n id: 'name',\n fields: {\n name: 'name',\n size: 'size',\n type: 'type'\n }\n }\n }\n }\n });\n extend(true, kendo.data, {\n transports: {\n 'filebrowser': kendo.data.RemoteTransport.extend({\n init: function (options) {\n kendo.data.RemoteTransport.fn.init.call(this, $.extend(true, {}, this.options, options));\n },\n _call: function (type, options) {\n options.data = $.extend({}, options.data, { path: this.options.path() });\n if (isFunction(this.options[type])) {\n this.options[type].call(this, options);\n } else {\n kendo.data.RemoteTransport.fn[type].call(this, options);\n }\n },\n read: function (options) {\n this._call('read', options);\n },\n create: function (options) {\n this._call('create', options);\n },\n destroy: function (options) {\n this._call('destroy', options);\n },\n update: function () {\n },\n options: {\n read: { type: 'POST' },\n update: { type: 'POST' },\n create: { type: 'POST' },\n destroy: { type: 'POST' }\n }\n })\n }\n });\n function bindDragEventWrappers(element, onDragEnter, onDragLeave) {\n var hideInterval, lastDrag;\n element.on('dragenter' + NS, function () {\n onDragEnter();\n lastDrag = new Date();\n if (!hideInterval) {\n hideInterval = setInterval(function () {\n var sinceLastDrag = new Date() - lastDrag;\n if (sinceLastDrag > 100) {\n onDragLeave();\n clearInterval(hideInterval);\n hideInterval = null;\n }\n }, 100);\n }\n }).on('dragover' + NS, function () {\n lastDrag = new Date();\n });\n }\n var offsetTop;\n if (browser.msie && browser.version < 8) {\n offsetTop = function (element) {\n return element.offsetTop;\n };\n } else {\n offsetTop = function (element) {\n return element.offsetTop - $(element).height();\n };\n }\n function concatPaths(path, name) {\n if (path === undefined || !path.match(/\\/$/)) {\n path = (path || '') + '/';\n }\n return path + name;\n }\n function sizeFormatter(value) {\n if (!value) {\n return '';\n }\n var suffix = ' bytes';\n if (value >= 1073741824) {\n suffix = ' GB';\n value /= 1073741824;\n } else if (value >= 1048576) {\n suffix = ' MB';\n value /= 1048576;\n } else if (value >= 1024) {\n suffix = ' KB';\n value /= 1024;\n }\n return Math.round(value * 100) / 100 + suffix;\n }\n function fieldName(fields, name) {\n var descriptor = fields[name];\n if (isPlainObject(descriptor)) {\n return descriptor.from || descriptor.field || name;\n }\n return descriptor;\n }\n var FileBrowser = Widget.extend({\n init: function (element, options) {\n var that = this;\n options = options || {};\n Widget.fn.init.call(that, element, options);\n that.element.addClass('k-filebrowser');\n that.element.on(CLICK + NS, '.k-filebrowser-toolbar button:not(.k-state-disabled):has(.k-i-close)', proxy(that._deleteClick, that)).on(CLICK + NS, '.k-filebrowser-toolbar button:not(.k-state-disabled):has(.k-i-folder-add)', proxy(that._addClick, that)).on('keydown' + NS, 'li.k-state-selected input', proxy(that._directoryKeyDown, that)).on('blur' + NS, 'li.k-state-selected input', proxy(that._directoryBlur, that));\n that._dataSource();\n that.refresh();\n that.path(that.options.path);\n },\n options: {\n name: 'FileBrowser',\n messages: {\n uploadFile: 'Upload',\n orderBy: 'Arrange by',\n orderByName: 'Name',\n orderBySize: 'Size',\n directoryNotFound: 'A directory with this name was not found.',\n emptyFolder: 'Empty Folder',\n deleteFile: 'Are you sure you want to delete \"{0}\"?',\n invalidFileType: 'The selected file \"{0}\" is not valid. Supported file types are {1}.',\n overwriteFile: 'A file with name \"{0}\" already exists in the current directory. Do you want to overwrite it?',\n dropFilesHere: 'drop file here to upload',\n search: 'Search'\n },\n transport: {},\n path: '/',\n fileTypes: '*.*'\n },\n events: [\n ERROR,\n CHANGE,\n APPLY\n ],\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.dataSource.unbind(ERROR, that._errorHandler);\n that.element.add(that.list).add(that.toolbar).off(NS);\n kendo.destroy(that.element);\n },\n value: function () {\n var that = this, selected = that._selectedItem(), path, fileUrl = that.options.transport.fileUrl;\n if (selected && selected.get(TYPEFIELD) === 'f') {\n path = concatPaths(that.path(), selected.get(NAMEFIELD)).replace(trimSlashesRegExp, '');\n if (fileUrl) {\n path = isFunction(fileUrl) ? fileUrl(path) : kendo.format(fileUrl, encodeURIComponent(path));\n }\n return path;\n }\n },\n _selectedItem: function () {\n var listView = this.listView, selected = listView.select();\n if (selected.length) {\n return this.dataSource.getByUid(selected.attr(kendo.attr('uid')));\n }\n },\n _toolbar: function () {\n var that = this, template = kendo.template(TOOLBARTMPL), messages = that.options.messages, arrangeBy = [\n {\n text: messages.orderByName,\n value: 'name'\n },\n {\n text: messages.orderBySize,\n value: 'size'\n }\n ];\n that.toolbar = $(template({\n messages: messages,\n showUpload: that.options.transport.uploadUrl,\n showCreate: that.options.transport.create,\n showDelete: that.options.transport.destroy\n })).appendTo(that.element).find('.k-upload input').kendoUpload({\n multiple: false,\n localization: { dropFilesHere: messages.dropFilesHere },\n async: {\n saveUrl: that.options.transport.uploadUrl,\n autoUpload: true\n },\n upload: proxy(that._fileUpload, that),\n error: function (e) {\n that._error({\n xhr: e.XMLHttpRequest,\n status: 'error'\n });\n }\n }).end();\n that.upload = that.toolbar.find('.k-upload input').data('kendoUpload');\n that.arrangeBy = that.toolbar.find('.k-tiles-arrange select').kendoDropDownList({\n dataSource: arrangeBy,\n dataTextField: 'text',\n dataValueField: 'value',\n change: function () {\n that.orderBy(this.value());\n }\n }).data('kendoDropDownList');\n that._attachDropzoneEvents();\n },\n _attachDropzoneEvents: function () {\n var that = this;\n if (that.options.transport.uploadUrl) {\n bindDragEventWrappers($(document.documentElement), $.proxy(that._dropEnter, that), $.proxy(that._dropLeave, that));\n that._scrollHandler = proxy(that._positionDropzone, that);\n }\n },\n _dropEnter: function () {\n this._positionDropzone();\n $(document).on('scroll' + NS, this._scrollHandler);\n },\n _dropLeave: function () {\n this._removeDropzone();\n $(document).off('scroll' + NS, this._scrollHandler);\n },\n _positionDropzone: function () {\n var that = this, element = that.element, offset = element.offset();\n that.toolbar.find('.k-dropzone').addClass('k-filebrowser-dropzone').offset(offset).css({\n width: element[0].clientWidth,\n height: element[0].clientHeight,\n lineHeight: element[0].clientHeight + 'px'\n });\n },\n _removeDropzone: function () {\n this.toolbar.find('.k-dropzone').removeClass('k-filebrowser-dropzone').css({\n width: '',\n height: '',\n lineHeight: '',\n top: '',\n left: ''\n });\n },\n _deleteClick: function () {\n var that = this, item = that.listView.select(), message = kendo.format(that.options.messages.deleteFile, item.find('strong').text());\n if (item.length && that._showMessage(message, 'confirm')) {\n that.listView.remove(item);\n }\n },\n _addClick: function () {\n this.createDirectory();\n },\n _getFieldName: function (name) {\n return fieldName(this.dataSource.reader.model.fields, name);\n },\n _fileUpload: function (e) {\n var that = this, options = that.options, fileTypes = options.fileTypes, filterRegExp = new RegExp(('(' + fileTypes.split(',').join(')|(') + ')').replace(/\\*\\./g, '.*.'), 'i'), fileName = e.files[0].name, fileSize = e.files[0].size, fileNameField = NAMEFIELD, sizeField = SIZEFIELD, file;\n if (filterRegExp.test(fileName)) {\n e.data = { path: that.path() };\n file = that._createFile(fileName, fileSize);\n if (!file) {\n e.preventDefault();\n } else {\n that.upload.one('success', function (e) {\n var model = that._insertFileToList(file);\n if (model._override) {\n model.set(fileNameField, e.response[that._getFieldName(fileNameField)]);\n model.set(sizeField, e.response[that._getFieldName(sizeField)]);\n that.listView.dataSource.pushUpdate(model);\n }\n that._tiles = that.listView.items().filter('[' + kendo.attr('type') + '=f]');\n });\n }\n } else {\n e.preventDefault();\n that._showMessage(kendo.format(options.messages.invalidFileType, fileName, fileTypes));\n }\n },\n _findFile: function (name) {\n var data = this.dataSource.data(), idx, result, typeField = TYPEFIELD, nameField = NAMEFIELD, length;\n name = name.toLowerCase();\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].get(typeField) === 'f' && data[idx].get(nameField).toLowerCase() === name) {\n result = data[idx];\n break;\n }\n }\n return result;\n },\n _createFile: function (fileName, fileSize) {\n var that = this, model = {}, typeField = TYPEFIELD, file = that._findFile(fileName);\n if (file) {\n if (!that._showMessage(kendo.format(that.options.messages.overwriteFile, fileName), 'confirm')) {\n return null;\n } else {\n file._override = true;\n return file;\n }\n }\n model[typeField] = 'f';\n model[NAMEFIELD] = fileName;\n model[SIZEFIELD] = fileSize;\n return model;\n },\n _insertFileToList: function (model) {\n var index;\n if (model._override) {\n return model;\n }\n var dataSource = this.dataSource;\n var view = dataSource.view();\n for (var i = 0, length = view.length; i < length; i++) {\n if (view[i].get(TYPEFIELD) === 'f') {\n index = i;\n break;\n }\n }\n return dataSource.insert(++index, model);\n },\n createDirectory: function () {\n var that = this, idx, length, lastDirectoryIdx = 0, typeField = TYPEFIELD, nameField = NAMEFIELD, view = that.dataSource.data(), name = that._nameDirectory(), model = new that.dataSource.reader.model();\n for (idx = 0, length = view.length; idx < length; idx++) {\n if (view[idx].get(typeField) === 'd') {\n lastDirectoryIdx = idx;\n }\n }\n model.set(typeField, 'd');\n model.set(nameField, name);\n that.listView.one('dataBound', function () {\n var selected = that.listView.items().filter('[' + kendo.attr('uid') + '=' + model.uid + ']');\n if (selected.length) {\n this.edit(selected);\n }\n this.element.scrollTop(selected.attr('offsetTop') - this.element[0].offsetHeight);\n setTimeout(function () {\n that.listView.element.find('.k-edit-item input').select();\n });\n }).one('save', function (e) {\n var value = e.model.get(nameField);\n if (!value) {\n e.model.set(nameField, name);\n } else {\n e.model.set(nameField, that._nameExists(value, model.uid) ? that._nameDirectory() : value);\n }\n });\n that.dataSource.insert(++lastDirectoryIdx, model);\n },\n _directoryKeyDown: function (e) {\n if (e.keyCode == 13) {\n e.currentTarget.blur();\n }\n },\n _directoryBlur: function () {\n this.listView.save();\n },\n _nameExists: function (name, uid) {\n var data = this.dataSource.data(), typeField = TYPEFIELD, nameField = NAMEFIELD, idx, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].get(typeField) === 'd' && data[idx].get(nameField).toLowerCase() === name.toLowerCase() && data[idx].uid !== uid) {\n return true;\n }\n }\n return false;\n },\n _nameDirectory: function () {\n var name = 'New folder', data = this.dataSource.data(), directoryNames = [], typeField = TYPEFIELD, nameField = NAMEFIELD, candidate, idx, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].get(typeField) === 'd' && data[idx].get(nameField).toLowerCase().indexOf(name.toLowerCase()) > -1) {\n directoryNames.push(data[idx].get(nameField));\n }\n }\n if ($.inArray(name, directoryNames) > -1) {\n idx = 2;\n do {\n candidate = name + ' (' + idx + ')';\n idx++;\n } while ($.inArray(candidate, directoryNames) > -1);\n name = candidate;\n }\n return name;\n },\n orderBy: function (field) {\n this.dataSource.sort([\n {\n field: TYPEFIELD,\n dir: 'asc'\n },\n {\n field: field,\n dir: 'asc'\n }\n ]);\n },\n search: function (name) {\n this.dataSource.filter({\n field: NAMEFIELD,\n operator: 'contains',\n value: name\n });\n },\n _content: function () {\n var that = this;\n that.list = $('<ul class=\"k-reset k-floats k-tiles\" />').appendTo(that.element).on('dblclick' + NS, 'li', proxy(that._dblClick, that));\n that.listView = new kendo.ui.ListView(that.list, {\n dataSource: that.dataSource,\n template: that._itemTmpl(),\n editTemplate: that._editTmpl(),\n selectable: true,\n autoBind: false,\n dataBinding: function (e) {\n that.toolbar.find('.k-i-close').parent().addClass('k-state-disabled');\n if (e.action === 'remove' || e.action === 'sync') {\n e.preventDefault();\n kendo.ui.progress(that.listView.element, false);\n }\n },\n dataBound: function () {\n if (that.dataSource.view().length) {\n that._tiles = this.items().filter('[' + kendo.attr('type') + '=f]');\n } else {\n this.wrapper.append(EMPTYTILE({ text: that.options.messages.emptyFolder }));\n }\n },\n change: proxy(that._listViewChange, that)\n });\n },\n _dblClick: function (e) {\n var that = this, li = $(e.currentTarget);\n if (li.hasClass('k-edit-item')) {\n that._directoryBlur();\n }\n if (li.filter('[' + kendo.attr('type') + '=d]').length) {\n var folder = that.dataSource.getByUid(li.attr(kendo.attr('uid')));\n if (folder) {\n that.path(concatPaths(that.path(), folder.get(NAMEFIELD)));\n that.breadcrumbs.value(that.path());\n }\n } else if (li.filter('[' + kendo.attr('type') + '=f]').length) {\n that.trigger(APPLY);\n }\n },\n _listViewChange: function () {\n var selected = this._selectedItem();\n if (selected) {\n this.toolbar.find('.k-i-close').parent().removeClass('k-state-disabled');\n this.trigger(CHANGE, { selected: selected });\n }\n },\n _dataSource: function () {\n var that = this, options = that.options, transport = options.transport, typeSortOrder = extend({}, DEFAULTSORTORDER), nameSortOrder = {\n field: NAMEFIELD,\n dir: 'asc'\n }, schema, dataSource = {\n type: transport.type || 'filebrowser',\n sort: [\n typeSortOrder,\n nameSortOrder\n ]\n };\n if (isPlainObject(transport)) {\n transport.path = proxy(that.path, that);\n dataSource.transport = transport;\n }\n if (isPlainObject(options.schema)) {\n dataSource.schema = options.schema;\n } else if (transport.type && isPlainObject(kendo.data.schemas[transport.type])) {\n schema = kendo.data.schemas[transport.type];\n }\n if (that.dataSource && that._errorHandler) {\n that.dataSource.unbind(ERROR, that._errorHandler);\n } else {\n that._errorHandler = proxy(that._error, that);\n }\n that.dataSource = kendo.data.DataSource.create(dataSource).bind(ERROR, that._errorHandler);\n },\n _navigation: function () {\n var that = this, navigation = $('<div class=\"k-floatwrap\"><input/><input/></div>').appendTo(this.element);\n that.breadcrumbs = navigation.find('input:first').kendoBreadcrumbs({\n value: that.options.path,\n change: function () {\n that.path(this.value());\n }\n }).data('kendoBreadcrumbs');\n that.searchBox = navigation.parent().find('input:last').kendoSearchBox({\n label: that.options.messages.search,\n change: function () {\n that.search(this.value());\n }\n }).data('kendoSearchBox');\n },\n _error: function (e) {\n var that = this, status;\n if (!that.trigger(ERROR, e)) {\n status = e.xhr.status;\n if (e.status == 'error') {\n if (status == '404') {\n that._showMessage(that.options.messages.directoryNotFound);\n } else if (status != '0') {\n that._showMessage('Error! The requested URL returned ' + status + ' - ' + e.xhr.statusText);\n }\n } else if (status == 'timeout') {\n that._showMessage('Error! Server timeout.');\n }\n var dataSource = that.dataSource;\n if (dataSource.hasChanges()) {\n dataSource.cancelChanges();\n }\n }\n },\n _showMessage: function (message, type) {\n return window[type || 'alert'](message);\n },\n refresh: function () {\n var that = this;\n that._navigation();\n that._toolbar();\n that._content();\n },\n _editTmpl: function () {\n var html = '<li class=\"k-tile k-state-selected\" ' + kendo.attr('uid') + '=\"#=uid#\" ';\n html += kendo.attr('type') + '=\"${' + TYPEFIELD + '}\">';\n html += '#if(' + TYPEFIELD + ' == \"d\") { #';\n html += '<div class=\"k-thumb\"><span class=\"k-icon k-i-folder\"></span></div>';\n html += '#}else{#';\n html += '<div class=\"k-thumb\"><span class=\"k-icon k-i-loading\"></span></div>';\n html += '#}#';\n html += '#if(' + TYPEFIELD + ' == \"d\") { #';\n html += '<input class=\"k-input\" ' + kendo.attr('bind') + '=\"value:' + NAMEFIELD + '\"/>';\n html += '#}#';\n html += '</li>';\n return proxy(kendo.template(html), { sizeFormatter: sizeFormatter });\n },\n _itemTmpl: function () {\n var html = '<li class=\"k-tile\" ' + kendo.attr('uid') + '=\"#=uid#\" ';\n html += kendo.attr('type') + '=\"${' + TYPEFIELD + '}\">';\n html += '#if(' + TYPEFIELD + ' == \"d\") { #';\n html += '<div class=\"k-thumb\"><span class=\"k-icon k-i-folder\"></span></div>';\n html += '#}else{#';\n html += '<div class=\"k-thumb\"><span class=\"k-icon k-i-file\"></span></div>';\n html += '#}#';\n html += '<strong>${' + NAMEFIELD + '}</strong>';\n html += '#if(' + TYPEFIELD + ' == \"f\") { # <span class=\"k-filesize\">${this.sizeFormatter(' + SIZEFIELD + ')}</span> #}#';\n html += '</li>';\n return proxy(kendo.template(html), { sizeFormatter: sizeFormatter });\n },\n path: function (value) {\n var that = this, path = that._path || '';\n if (value !== undefined) {\n that._path = value.replace(trimSlashesRegExp, '') + '/';\n that.dataSource.read({ path: that._path });\n return;\n }\n if (path) {\n path = path.replace(trimSlashesRegExp, '');\n }\n return path === '/' || path === '' ? '' : path + '/';\n }\n });\n var SearchBox = Widget.extend({\n init: function (element, options) {\n var that = this;\n options = options || {};\n Widget.fn.init.call(that, element, options);\n if (placeholderSupported) {\n that.element.attr('placeholder', that.options.label);\n }\n that._wrapper();\n that.element.on('keydown' + SEARCHBOXNS, proxy(that._keydown, that)).on('change' + SEARCHBOXNS, proxy(that._updateValue, that));\n that.wrapper.on(CLICK + SEARCHBOXNS, 'a', proxy(that._click, that));\n if (!placeholderSupported) {\n that.element.on('focus' + SEARCHBOXNS, proxy(that._focus, that)).on('blur' + SEARCHBOXNS, proxy(that._blur, that));\n }\n },\n options: {\n name: 'SearchBox',\n label: 'Search',\n value: ''\n },\n events: [CHANGE],\n destroy: function () {\n var that = this;\n that.wrapper.add(that.element).add(that.label).off(SEARCHBOXNS);\n Widget.fn.destroy.call(that);\n },\n _keydown: function (e) {\n if (e.keyCode === 13) {\n this._updateValue();\n }\n },\n _click: function (e) {\n e.preventDefault();\n this._updateValue();\n },\n _updateValue: function () {\n var that = this, value = that.element.val();\n if (value !== that.value()) {\n that.value(value);\n that.trigger(CHANGE);\n }\n },\n _blur: function () {\n this._updateValue();\n this._toggleLabel();\n },\n _toggleLabel: function () {\n if (!placeholderSupported) {\n this.label.toggle(!this.element.val());\n }\n },\n _focus: function () {\n this.label.hide();\n },\n _wrapper: function () {\n var element = this.element, wrapper = element.parents('.k-search-wrap');\n element[0].style.width = '';\n element.addClass('k-input');\n if (!wrapper.length) {\n wrapper = element.wrap($('<div class=\"k-widget k-search-wrap k-textbox\"/>')).parent();\n if (!placeholderSupported) {\n $('<label style=\"display:block\">' + this.options.label + '</label>').insertBefore(element);\n }\n $('<a href=\"#\" class=\"k-icon k-i-zoom k-search\"/>').appendTo(wrapper);\n }\n this.wrapper = wrapper;\n this.label = wrapper.find('>label');\n },\n value: function (value) {\n var that = this;\n if (value !== undefined) {\n that.options.value = value;\n that.element.val(value);\n that._toggleLabel();\n return;\n }\n return that.options.value;\n }\n });\n var Breadcrumbs = Widget.extend({\n init: function (element, options) {\n var that = this;\n options = options || {};\n Widget.fn.init.call(that, element, options);\n that._wrapper();\n that.wrapper.on('focus' + BREADCRUBMSNS, 'input', proxy(that._focus, that)).on('blur' + BREADCRUBMSNS, 'input', proxy(that._blur, that)).on('keydown' + BREADCRUBMSNS, 'input', proxy(that._keydown, that)).on(CLICK + BREADCRUBMSNS, 'a.k-i-arrow-60-up:first', proxy(that._rootClick, that)).on(CLICK + BREADCRUBMSNS, 'a:not(.k-i-arrow-60-up)', proxy(that._click, that));\n that.value(that.options.value);\n },\n options: {\n name: 'Breadcrumbs',\n gap: 50\n },\n events: [CHANGE],\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.wrapper.add(that.wrapper.find('input')).add(that.wrapper.find('a')).off(BREADCRUBMSNS);\n },\n _update: function (val) {\n val = (val || '').charAt(0) === '/' ? val : '/' + (val || '');\n if (val !== this.value()) {\n this.value(val);\n this.trigger(CHANGE);\n }\n },\n _click: function (e) {\n e.preventDefault();\n this._update(this._path($(e.target).prevAll('a:not(.k-i-arrow-60-up)').addBack()));\n },\n _rootClick: function (e) {\n e.preventDefault();\n this._update('');\n },\n _focus: function () {\n var that = this, element = that.element;\n that.overlay.hide();\n that.element.val(that.value());\n setTimeout(function () {\n element.select();\n });\n },\n _blur: function () {\n if (this.overlay.is(':visible')) {\n return;\n }\n var that = this, element = that.element, val = element.val().replace(/\\/{2,}/g, '/');\n that.overlay.show();\n element.val('');\n that._update(val);\n },\n _keydown: function (e) {\n var that = this;\n if (e.keyCode === 13) {\n that._blur();\n setTimeout(function () {\n that.overlay.find('a:first').focus();\n });\n }\n },\n _wrapper: function () {\n var element = this.element, wrapper = element.parents('.k-breadcrumbs'), overlay;\n element[0].style.width = '';\n element.addClass('k-input');\n if (!wrapper.length) {\n wrapper = element.wrap($('<div class=\"k-widget k-breadcrumbs k-textbox\"/>')).parent();\n }\n overlay = wrapper.find('.k-breadcrumbs-wrap');\n if (!overlay.length) {\n overlay = $('<div class=\"k-breadcrumbs-wrap\"/>').appendTo(wrapper);\n }\n this.wrapper = wrapper;\n this.overlay = overlay;\n },\n refresh: function () {\n var html = '', value = this.value(), segments, segment, idx, length;\n if (value === undefined || !value.match(/^\\//)) {\n value = '/' + (value || '');\n }\n segments = value.split('/');\n for (idx = 0, length = segments.length; idx < length; idx++) {\n segment = segments[idx];\n if (segment) {\n if (!html) {\n html += '<a href=\"#\" class=\"k-icon k-i-arrow-60-up\" title=\"Go to parent folder\"></a>';\n }\n html += '<a class=\"k-link\" href=\"#\">' + segments[idx] + '</a>';\n html += '<span class=\"k-icon k-i-arrow-60-right\" title=\"Go to child folder\"></span>';\n }\n }\n this.overlay.empty().append($(html));\n this._adjustSectionWidth();\n },\n _adjustSectionWidth: function () {\n var that = this, wrapper = that.wrapper, width = wrapper.width() - that.options.gap, links = that.overlay.find('a'), a;\n links.each(function (index) {\n a = $(this);\n if (a.parent().width() > width) {\n if (index == links.length - 1) {\n a.width(width);\n } else {\n a.prev().addBack().hide();\n }\n }\n });\n },\n value: function (val) {\n if (val !== undefined) {\n this._value = val.replace(/\\/{2,}/g, '/');\n this.refresh();\n return;\n }\n return this._value;\n },\n _path: function (trail) {\n return '/' + $.map(trail, function (b) {\n return $(b).text();\n }).join('/');\n }\n });\n kendo.ui.plugin(FileBrowser);\n kendo.ui.plugin(Breadcrumbs);\n kendo.ui.plugin(SearchBox);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.imagebrowser', ['kendo.filebrowser'], f);\n}(function () {\n var __meta__ = {\n id: 'imagebrowser',\n name: 'ImageBrowser',\n category: 'web',\n description: '',\n hidden: true,\n depends: ['filebrowser']\n };\n (function ($, undefined) {\n var kendo = window.kendo, FileBrowser = kendo.ui.FileBrowser, isPlainObject = $.isPlainObject, proxy = $.proxy, extend = $.extend, browser = kendo.support.browser, isFunction = kendo.isFunction, trimSlashesRegExp = /(^\\/|\\/$)/g, ERROR = 'error', NS = '.kendoImageBrowser', NAMEFIELD = 'name', SIZEFIELD = 'size', TYPEFIELD = 'type', DEFAULTSORTORDER = {\n field: TYPEFIELD,\n dir: 'asc'\n }, EMPTYTILE = kendo.template('<li class=\"k-tile-empty\"><strong>${text}</strong></li>');\n extend(true, kendo.data, {\n schemas: {\n 'imagebrowser': {\n data: function (data) {\n return data.items || data || [];\n },\n model: {\n id: 'name',\n fields: {\n name: 'name',\n size: 'size',\n type: 'type'\n }\n }\n }\n }\n });\n extend(true, kendo.data, {\n transports: {\n 'imagebrowser': kendo.data.RemoteTransport.extend({\n init: function (options) {\n kendo.data.RemoteTransport.fn.init.call(this, $.extend(true, {}, this.options, options));\n },\n _call: function (type, options) {\n options.data = $.extend({}, options.data, { path: this.options.path() });\n if (isFunction(this.options[type])) {\n this.options[type].call(this, options);\n } else {\n kendo.data.RemoteTransport.fn[type].call(this, options);\n }\n },\n read: function (options) {\n this._call('read', options);\n },\n create: function (options) {\n this._call('create', options);\n },\n destroy: function (options) {\n this._call('destroy', options);\n },\n update: function () {\n },\n options: {\n read: { type: 'POST' },\n update: { type: 'POST' },\n create: { type: 'POST' },\n destroy: { type: 'POST' }\n }\n })\n }\n });\n var offsetTop;\n if (browser.msie && browser.version < 8) {\n offsetTop = function (element) {\n return element.offsetTop;\n };\n } else {\n offsetTop = function (element) {\n return element.offsetTop - $(element).height();\n };\n }\n function concatPaths(path, name) {\n if (path === undefined || !path.match(/\\/$/)) {\n path = (path || '') + '/';\n }\n return path + name;\n }\n function sizeFormatter(value) {\n if (!value) {\n return '';\n }\n var suffix = ' bytes';\n if (value >= 1073741824) {\n suffix = ' GB';\n value /= 1073741824;\n } else if (value >= 1048576) {\n suffix = ' MB';\n value /= 1048576;\n } else if (value >= 1024) {\n suffix = ' KB';\n value /= 1024;\n }\n return Math.round(value * 100) / 100 + suffix;\n }\n var ImageBrowser = FileBrowser.extend({\n init: function (element, options) {\n var that = this;\n options = options || {};\n FileBrowser.fn.init.call(that, element, options);\n that.element.addClass('k-imagebrowser');\n },\n options: {\n name: 'ImageBrowser',\n fileTypes: '*.png,*.gif,*.jpg,*.jpeg'\n },\n value: function () {\n var that = this, selected = that._selectedItem(), path, imageUrl = that.options.transport.imageUrl;\n if (selected && selected.get(TYPEFIELD) === 'f') {\n path = concatPaths(that.path(), selected.get(NAMEFIELD)).replace(trimSlashesRegExp, '');\n if (imageUrl) {\n path = isFunction(imageUrl) ? imageUrl(path) : kendo.format(imageUrl, encodeURIComponent(path));\n }\n return path;\n }\n },\n _fileUpload: function (e) {\n var that = this, options = that.options, fileTypes = options.fileTypes, filterRegExp = new RegExp(('(' + fileTypes.split(',').join(')|(') + ')').replace(/\\*\\./g, '.*.'), 'i'), fileName = e.files[0].name, fileSize = e.files[0].size, fileNameField = NAMEFIELD, sizeField = SIZEFIELD, file;\n if (filterRegExp.test(fileName)) {\n e.data = { path: that.path() };\n file = that._createFile(fileName, fileSize);\n if (!file) {\n e.preventDefault();\n } else {\n file._uploading = true;\n that.upload.one('error', function () {\n file = undefined;\n });\n that.upload.one('success', function (e) {\n if (file) {\n delete file._uploading;\n var model = that._insertFileToList(file);\n if (model._override) {\n model.set(fileNameField, e.response[that._getFieldName(fileNameField)]);\n model.set(sizeField, e.response[that._getFieldName(sizeField)]);\n that.listView.dataSource.pushUpdate(model);\n }\n that._tiles = that.listView.items().filter('[' + kendo.attr('type') + '=f]');\n that._scroll();\n }\n });\n }\n } else {\n e.preventDefault();\n that._showMessage(kendo.format(options.messages.invalidFileType, fileName, fileTypes));\n }\n },\n _content: function () {\n var that = this;\n that.list = $('<ul class=\"k-reset k-floats k-tiles\" />').appendTo(that.element).on('scroll' + NS, proxy(that._scroll, that)).on('dblclick' + NS, 'li', proxy(that._dblClick, that));\n that.listView = new kendo.ui.ListView(that.list, {\n dataSource: that.dataSource,\n template: that._itemTmpl(),\n editTemplate: that._editTmpl(),\n selectable: true,\n autoBind: false,\n dataBinding: function (e) {\n that.toolbar.find('.k-i-close').parent().addClass('k-state-disabled');\n if (e.action === 'remove' || e.action === 'sync') {\n e.preventDefault();\n kendo.ui.progress(that.listView.element, false);\n }\n },\n dataBound: function () {\n if (that.dataSource.view().length) {\n that._tiles = this.items().filter('[' + kendo.attr('type') + '=f]');\n that._scroll();\n } else {\n this.wrapper.append(EMPTYTILE({ text: that.options.messages.emptyFolder }));\n }\n },\n change: proxy(that._listViewChange, that)\n });\n },\n _dataSource: function () {\n var that = this, options = that.options, transport = options.transport, typeSortOrder = extend({}, DEFAULTSORTORDER), nameSortOrder = {\n field: NAMEFIELD,\n dir: 'asc'\n }, schema, dataSource = {\n type: transport.type || 'imagebrowser',\n sort: [\n typeSortOrder,\n nameSortOrder\n ]\n };\n if (isPlainObject(transport)) {\n transport.path = proxy(that.path, that);\n dataSource.transport = transport;\n }\n if (isPlainObject(options.schema)) {\n dataSource.schema = options.schema;\n } else if (transport.type && isPlainObject(kendo.data.schemas[transport.type])) {\n schema = kendo.data.schemas[transport.type];\n }\n if (that.dataSource && that._errorHandler) {\n that.dataSource.unbind(ERROR, that._errorHandler);\n } else {\n that._errorHandler = proxy(that._error, that);\n }\n that.dataSource = kendo.data.DataSource.create(dataSource).bind(ERROR, that._errorHandler);\n },\n _loadImage: function (li) {\n var that = this, element = $(li), dataItem = that.dataSource.getByUid(element.attr(kendo.attr('uid'))), name = dataItem.get(NAMEFIELD), thumbnailUrl = that.options.transport.thumbnailUrl, img = $('<img />', { alt: name }), urlJoin = '?';\n if (dataItem._uploading) {\n return;\n }\n img.hide().on('load' + NS, function () {\n $(this).prev().remove().end().addClass('k-image').fadeIn();\n });\n element.find('.k-i-loading').after(img);\n if (isFunction(thumbnailUrl)) {\n thumbnailUrl = thumbnailUrl(that.path(), encodeURIComponent(name));\n } else {\n if (thumbnailUrl.indexOf('?') >= 0) {\n urlJoin = '&';\n }\n thumbnailUrl = thumbnailUrl + urlJoin + 'path=' + encodeURIComponent(that.path() + name);\n if (dataItem._override) {\n thumbnailUrl += '&_=' + new Date().getTime();\n delete dataItem._override;\n }\n }\n img.attr('src', thumbnailUrl);\n li.loaded = true;\n },\n _scroll: function () {\n var that = this;\n if (that.options.transport && that.options.transport.thumbnailUrl) {\n clearTimeout(that._timeout);\n that._timeout = setTimeout(function () {\n var height = kendo._outerHeight(that.list), viewTop = that.list.scrollTop(), viewBottom = viewTop + height;\n that._tiles.each(function () {\n var top = offsetTop(this), bottom = top + this.offsetHeight;\n if (top >= viewTop && top < viewBottom || bottom >= viewTop && bottom < viewBottom) {\n that._loadImage(this);\n }\n if (top > viewBottom) {\n return false;\n }\n });\n that._tiles = that._tiles.filter(function () {\n return !this.loaded;\n });\n }, 250);\n }\n },\n _itemTmpl: function () {\n var that = this, html = '<li class=\"k-tile\" ' + kendo.attr('uid') + '=\"#=uid#\" ';\n html += kendo.attr('type') + '=\"${' + TYPEFIELD + '}\">';\n html += '#if(' + TYPEFIELD + ' == \"d\") { #';\n html += '<div class=\"k-thumb\"><span class=\"k-icon k-i-folder\"></span></div>';\n html += '#}else{#';\n if (that.options.transport && that.options.transport.thumbnailUrl) {\n html += '<div class=\"k-thumb\"><span class=\"k-icon k-i-loading\"></span></div>';\n } else {\n html += '<div class=\"k-thumb\"><span class=\"k-icon k-i-file\"></span></div>';\n }\n html += '#}#';\n html += '<strong>${' + NAMEFIELD + '}</strong>';\n html += '#if(' + TYPEFIELD + ' == \"f\") { # <span class=\"k-filesize\">${this.sizeFormatter(' + SIZEFIELD + ')}</span> #}#';\n html += '</li>';\n return proxy(kendo.template(html), { sizeFormatter: sizeFormatter });\n }\n });\n kendo.ui.plugin(ImageBrowser);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/undoredostack', ['kendo.core'], f);\n}(function () {\n (function (kendo) {\n var UndoRedoStack = kendo.Observable.extend({\n init: function (options) {\n kendo.Observable.fn.init.call(this, options);\n this.clear();\n },\n events: [\n 'undo',\n 'redo'\n ],\n push: function (command) {\n this.stack = this.stack.slice(0, this.currentCommandIndex + 1);\n this.currentCommandIndex = this.stack.push(command) - 1;\n },\n undo: function () {\n if (this.canUndo()) {\n var command = this.stack[this.currentCommandIndex--];\n command.undo();\n this.trigger('undo', { command: command });\n }\n },\n redo: function () {\n if (this.canRedo()) {\n var command = this.stack[++this.currentCommandIndex];\n command.redo();\n this.trigger('redo', { command: command });\n }\n },\n clear: function () {\n this.stack = [];\n this.currentCommandIndex = -1;\n },\n canUndo: function () {\n return this.currentCommandIndex >= 0;\n },\n canRedo: function () {\n return this.currentCommandIndex != this.stack.length - 1;\n }\n });\n kendo.deepExtend(kendo, { util: { UndoRedoStack: UndoRedoStack } });\n }(kendo));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/main', [\n 'util/undoredostack',\n 'kendo.combobox',\n 'kendo.dropdownlist',\n 'kendo.window',\n 'kendo.colorpicker'\n ], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, Class = kendo.Class, Widget = kendo.ui.Widget, os = kendo.support.mobileOS, browser = kendo.support.browser, extend = $.extend, proxy = $.proxy, deepExtend = kendo.deepExtend, keys = kendo.keys;\n var SELECT = 'select';\n var SELECT_OVERLAY_SELECTOR = 'select.k-select-overlay';\n var PLACEHOLDER_CLASS = 'k-placeholder';\n var PLACEHOLDER_TAG_ID = 'placeholder';\n var REFRESH_INTERVAL = 200;\n var DEFAULT_LANGUAGE = 'en';\n var ToolTemplate = Class.extend({\n init: function (options) {\n this.options = options;\n },\n getHtml: function () {\n var options = this.options;\n return kendo.template(options.template, { useWithBlock: false })(options);\n }\n });\n var EditorUtils = {\n editorWrapperTemplate: '<table cellspacing=\"4\" cellpadding=\"0\" class=\"k-widget k-editor k-header\" role=\"presentation\"><tbody>' + '<tr role=\"presentation\"><td class=\"k-editor-toolbar-wrap\" role=\"presentation\"><ul class=\"k-editor-toolbar\" role=\"toolbar\" /></td></tr>' + '<tr><td class=\"k-editable-area\" /></tr>' + '</tbody></table>',\n buttonTemplate: '# var iconCssClass= \"k-icon k-i-\" + kendo.toHyphens(data.cssClass.replace(\"k-\", \"\"));#' + '<a tabindex=\"0\" role=\"button\" class=\"k-tool\"' + '#= data.popup ? \" data-popup\" : \"\" #' + ' unselectable=\"on\" title=\"#= data.title #\" aria-label=\"#= data.title #\"><span unselectable=\"on\" class=\"k-tool-icon #= iconCssClass #\"></span></a>',\n tableWizardButtonTemplate: '# var iconCssClass= \"k-icon k-i-\" + kendo.toHyphens(data.cssClass.replace(\"k-\", \"\"));#' + '<a tabindex=\"0\" role=\"button\" class=\"k-tool\"' + '#= data.popup ? \" data-popup\" : \"\" #' + ' unselectable=\"on\" title=\"#= data.title #\"><span unselectable=\"on\" class=\"k-tool-icon #= iconCssClass #\"></span><span class=\"k-tool-text\">#= data.title #</span></a>',\n colorPickerTemplate: '<div class=\"k-colorpicker k-icon k-i-#= data.cssClass.replace(\"k-\", \"\") #\" />',\n comboBoxTemplate: '<select title=\"#= data.title #\" aria-label=\"#= data.title #\" class=\"#= data.cssClass #\" />',\n dropDownListTemplate: '<span class=\"k-editor-dropdown\"><select title=\"#= data.title #\" aria-label=\"#= data.title #\" class=\"#= data.cssClass #\" /></span>',\n separatorTemplate: '<span class=\"k-separator\" />',\n overflowAnchorTemplate: '<a tabindex=\"0\" role=\"button\" class=\"k-tool k-overflow-anchor\" data-popup' + ' unselectable=\"on\" title=\"#= data.title #\" aria-label=\"#= data.title #\" aria-haspopup=\"true\" aria-expanded=\"false\">' + '<span unselectable=\"on\" class=\"k-icon k-i-more-vertical\"></span></a>',\n formatByName: function (name, format) {\n for (var i = 0; i < format.length; i++) {\n if ($.inArray(name, format[i].tags) >= 0) {\n return format[i];\n }\n }\n },\n getToolCssClass: function (name) {\n var toolCssClassNames = {\n superscript: 'sup-script',\n subscript: 'sub-script',\n justifyLeft: 'align-left',\n justifyCenter: 'align-center',\n justifyRight: 'align-right',\n justifyFull: 'align-justify',\n insertUnorderedList: 'list-unordered',\n insertOrderedList: 'list-ordered',\n 'import': 'login',\n indent: 'indent-increase',\n outdent: 'indent-decrease',\n createLink: 'link-horizontal',\n unlink: 'unlink-horizontal',\n insertImage: 'image',\n insertFile: 'file-add',\n viewHtml: 'html',\n foreColor: 'foreground-color',\n backColor: 'paint',\n createTable: 'table-insert',\n addColumnLeft: 'table-column-insert-left',\n addColumnRight: 'table-column-insert-right',\n addRowAbove: 'table-row-insert-above',\n addRowBelow: 'table-row-insert-below',\n deleteRow: 'table-row-delete',\n deleteColumn: 'table-column-delete',\n tableWizard: 'table-properties',\n tableWizardInsert: 'table-wizard',\n cleanFormatting: 'clear-css'\n };\n var cssClass = toolCssClassNames[name];\n if (cssClass) {\n return cssClass;\n }\n return name;\n },\n registerTool: function (toolName, tool) {\n var toolOptions = tool.options;\n if (toolOptions && toolOptions.template) {\n toolOptions.template.options.cssClass = 'k-' + EditorUtils.getToolCssClass(toolName);\n }\n if (!tool.name) {\n tool.options.name = toolName;\n tool.name = toolName.toLowerCase();\n }\n Editor.defaultTools[toolName] = tool;\n },\n registerFormat: function (formatName, format) {\n Editor.fn.options.formats[formatName] = format;\n },\n cacheComments: function (content, comments) {\n for (var index in comments) {\n content = content.replace(comments[index], '{' + index + '}');\n }\n return content;\n },\n retrieveComments: function (content, comments) {\n for (var index in comments) {\n content = content.replace('{' + index + '}', comments[index]);\n }\n return content;\n }\n };\n var messages = {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strikethrough: 'Strikethrough',\n superscript: 'Superscript',\n subscript: 'Subscript',\n justifyCenter: 'Center text',\n justifyLeft: 'Align text left',\n justifyRight: 'Align text right',\n justifyFull: 'Justify',\n insertUnorderedList: 'Insert unordered list',\n insertOrderedList: 'Insert ordered list',\n indent: 'Indent',\n outdent: 'Outdent',\n createLink: 'Insert hyperlink',\n unlink: 'Remove hyperlink',\n insertImage: 'Insert image',\n insertFile: 'Insert file',\n insertHtml: 'Insert HTML',\n viewHtml: 'View HTML',\n fontName: 'Select font family',\n fontNameInherit: '(inherited font)',\n fontSize: 'Select font size',\n fontSizeInherit: '(inherited size)',\n formatBlock: 'Format',\n formatting: 'Format',\n foreColor: 'Color',\n backColor: 'Background color',\n style: 'Styles',\n emptyFolder: 'Empty Folder',\n editAreaTitle: 'Editable area. Press F10 for toolbar.',\n uploadFile: 'Upload',\n overflowAnchor: 'More tools',\n orderBy: 'Arrange by:',\n orderBySize: 'Size',\n orderByName: 'Name',\n invalidFileType: 'The selected file \"{0}\" is not valid. Supported file types are {1}.',\n deleteFile: 'Are you sure you want to delete \"{0}\"?',\n overwriteFile: 'A file with name \"{0}\" already exists in the current directory. Do you want to overwrite it?',\n directoryNotFound: 'A directory with this name was not found.',\n imageWebAddress: 'Web address',\n imageAltText: 'Alternate text',\n imageWidth: 'Width (px)',\n imageHeight: 'Height (px)',\n fileWebAddress: 'Web address',\n fileTitle: 'Title',\n fileText: 'Text',\n linkWebAddress: 'Web address',\n linkText: 'Text',\n linkToolTip: 'ToolTip',\n linkOpenInNewWindow: 'Open link in new window',\n dialogUpdate: 'Update',\n dialogInsert: 'Insert',\n dialogOk: 'Ok',\n dialogCancel: 'Cancel',\n cleanFormatting: 'Clean formatting',\n createTable: 'Create a table',\n createTableHint: 'Create a {0} x {1} table',\n addColumnLeft: 'Add column on the left',\n addColumnRight: 'Add column on the right',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n deleteRow: 'Delete row',\n deleteColumn: 'Delete column',\n tableWizard: 'Table Wizard',\n tableTab: 'Table',\n cellTab: 'Cell',\n accessibilityTab: 'Accessibility',\n caption: 'Caption',\n summary: 'Summary',\n width: 'Width',\n height: 'Height',\n units: 'Units',\n cellSpacing: 'Cell Spacing',\n cellPadding: 'Cell Padding',\n cellMargin: 'Cell Margin',\n alignment: 'Alignment',\n background: 'Background',\n cssClass: 'CSS Class',\n id: 'ID',\n border: 'Border',\n borderStyle: 'Border Style',\n collapseBorders: 'Collapse borders',\n wrapText: 'Wrap text',\n associateCellsWithHeaders: 'Associate cells with headers',\n alignLeft: 'Align Left',\n alignCenter: 'Align Center',\n alignRight: 'Align Right',\n alignLeftTop: 'Align Left Top',\n alignCenterTop: 'Align Center Top',\n alignRightTop: 'Align Right Top',\n alignLeftMiddle: 'Align Left Middle',\n alignCenterMiddle: 'Align Center Middle',\n alignRightMiddle: 'Align Right Middle',\n alignLeftBottom: 'Align Left Bottom',\n alignCenterBottom: 'Align Center Bottom',\n alignRightBottom: 'Align Right Bottom',\n alignRemove: 'Remove Alignment',\n columns: 'Columns',\n rows: 'Rows',\n selectAllCells: 'Select All Cells',\n exportAs: 'Export As',\n 'import': 'Import',\n print: 'Print'\n };\n var supportedBrowser = !os || os.ios && os.flatVersion >= 500 || !os.ios && typeof document.documentElement.contentEditable != 'undefined';\n var toolGroups = {\n basic: [\n 'bold',\n 'italic',\n 'underline'\n ],\n alignment: [\n 'justifyLeft',\n 'justifyCenter',\n 'justifyRight'\n ],\n lists: [\n 'insertUnorderedList',\n 'insertOrderedList'\n ],\n indenting: [\n 'indent',\n 'outdent'\n ],\n links: [\n 'createLink',\n 'unlink'\n ],\n tables: [\n 'tableWizard',\n 'createTable',\n 'addColumnLeft',\n 'addColumnRight',\n 'addRowAbove',\n 'addRowBelow',\n 'deleteRow',\n 'deleteColumn'\n ]\n };\n var Editor = Widget.extend({\n init: function (element, options) {\n var that = this, value, editorNS = kendo.ui.editor, toolbarContainer, toolbarOptions, type, comments;\n var domElement;\n var dom = editorNS.Dom;\n if (!supportedBrowser) {\n return;\n }\n Widget.fn.init.call(that, element, options);\n that.options = deepExtend({}, that.options, options);\n that.options.tools = that.options.tools.slice();\n element = that.element;\n domElement = element[0];\n type = dom.name(domElement);\n this._registerHandler(element.closest('form'), 'submit', proxy(that.update, that, undefined));\n toolbarOptions = extend({}, that.options);\n toolbarOptions.editor = that;\n if (type == 'textarea') {\n that._wrapTextarea();\n toolbarContainer = that.wrapper.find('.k-editor-toolbar');\n if (domElement.id) {\n toolbarContainer.attr('aria-controls', domElement.id);\n }\n } else {\n that.element.attr('contenteditable', true).addClass('k-widget k-editor k-editor-inline');\n toolbarOptions.popup = true;\n toolbarContainer = $('<ul class=\"k-editor-toolbar\" role=\"toolbar\" />').insertBefore(element);\n }\n that.toolbar = new editorNS.Toolbar(toolbarContainer[0], toolbarOptions);\n that.toolbar.bindTo(that);\n if (type == 'textarea') {\n setTimeout(function () {\n var heightStyle = that.wrapper[0].style.height;\n var expectedHeight = parseInt(heightStyle, 10);\n var actualHeight = that.wrapper.height();\n if (heightStyle.indexOf('px') > 0 && !isNaN(expectedHeight) && actualHeight > expectedHeight) {\n that.wrapper.height(expectedHeight - (actualHeight - expectedHeight));\n }\n });\n }\n that._resizable();\n that._initializeContentElement(that);\n that.keyboard = new editorNS.Keyboard([\n new editorNS.BackspaceHandler(that),\n new editorNS.TypingHandler(that),\n new editorNS.SystemHandler(that),\n new editorNS.SelectAllHandler(that)\n ]);\n that.clipboard = new editorNS.Clipboard(this);\n that.undoRedoStack = new kendo.util.UndoRedoStack();\n if (options && options.value) {\n value = options.value;\n } else if (that.textarea) {\n value = domElement.value;\n if (that.options.encoded && $.trim(domElement.defaultValue).length) {\n value = domElement.defaultValue;\n }\n comments = dom.getAllComments($('<div></div>').html(value)[0]);\n value = EditorUtils.cacheComments(value, comments);\n value = value.replace(/[\\r\\n\\v\\f\\t ]+/gi, ' ');\n value = EditorUtils.retrieveComments(value, comments);\n } else {\n value = domElement.innerHTML;\n }\n that.value(value || '\\uFEFF');\n this._registerHandler(document, {\n 'mousedown': function () {\n that._endTyping();\n },\n 'mouseup': function (e) {\n that._mouseup(e);\n }\n });\n that._initializeImmutables();\n that.toolbar.resize();\n kendo.notify(that);\n },\n setOptions: function (options) {\n var editor = this;\n Widget.fn.setOptions.call(editor, options);\n if (options.tools) {\n editor.toolbar.bindTo(editor);\n }\n this._initializePlaceholder();\n },\n _togglePlaceholder: function (show) {\n var that = this, body = that.body, $body = $(body), placeholder = that.options.placeholder;\n if (!that.textarea || !placeholder) {\n return;\n }\n $body.attr('aria-label', function () {\n return show ? placeholder : '';\n });\n $body.toggleClass(PLACEHOLDER_CLASS, show);\n },\n _endTyping: function () {\n var keyboard = this.keyboard;\n try {\n if (keyboard.isTypingInProgress()) {\n keyboard.endTyping(true);\n this.saveSelection();\n }\n } catch (e) {\n }\n },\n _selectionChange: function () {\n this._selectionStarted = false;\n this.saveSelection();\n this.trigger('select', {});\n },\n _resizable: function () {\n var resizable = this.options.resizable;\n var isResizable = $.isPlainObject(resizable) ? resizable.content === undefined || resizable.content === true : resizable;\n if (isResizable && this.textarea) {\n var draggableElement = $('<div class=\\'k-resize-handle\\'><span class=\\'k-icon k-i-arrow-45-down-right\\' /></div>').insertAfter(this.textarea);\n this.wrapper.addClass('k-resizable');\n this.wrapper.kendoResizable(extend({}, this.options.resizable, {\n draggableElement: draggableElement,\n start: function (e) {\n var editor = this.editor = $(e.currentTarget).closest('.k-editor');\n this.initialSize = editor.height();\n editor.find('td:last').append('<div class=\\'k-overlay\\' />');\n },\n resize: function (e) {\n var delta = e.y.initialDelta;\n var newSize = this.initialSize + delta;\n var min = this.options.min || 0;\n var max = this.options.max || Infinity;\n newSize = Math.min(max, Math.max(min, newSize));\n this.editor.height(newSize);\n },\n resizeend: function () {\n this.editor.find('.k-overlay').remove();\n this.editor = null;\n }\n }));\n if (kendo.support.mobileOS.ios) {\n var resizableWidget = this.wrapper.getKendoResizable();\n resizableWidget.draggable.options.ignore = SELECT_OVERLAY_SELECTOR;\n }\n }\n },\n _initializeTableResizing: function () {\n var editor = this;\n kendo.ui.editor.TableResizing.create(editor);\n editor._showTableResizeHandlesProxy = proxy(editor._showTableResizeHandles, editor);\n editor.bind(SELECT, editor._showTableResizeHandlesProxy);\n },\n _destroyTableResizing: function () {\n var editor = this;\n var tableResizing = editor.tableResizing;\n if (tableResizing) {\n tableResizing.destroy();\n editor.tableResizing = null;\n }\n if (editor._showTableResizeHandlesProxy) {\n editor.unbind(SELECT, editor._showTableResizeHandlesProxy);\n }\n },\n _showTableResizeHandles: function () {\n var editor = this;\n var tableResizing = editor.tableResizing;\n if (tableResizing) {\n tableResizing.showResizeHandles();\n }\n },\n _initializeColumnResizing: function () {\n kendo.ui.editor.ColumnResizing.create(this);\n },\n _destroyColumnResizing: function () {\n var editor = this;\n if (editor.columnResizing) {\n editor.columnResizing.destroy();\n editor.columnResizing = null;\n }\n },\n _initializeRowResizing: function () {\n kendo.ui.editor.RowResizing.create(this);\n },\n _destroyRowResizing: function () {\n var editor = this;\n if (editor.rowResizing) {\n editor.rowResizing.destroy();\n editor.rowResizing = null;\n }\n },\n _wrapTextarea: function () {\n var that = this, textarea = that.element, w = textarea[0].style.width, h = textarea[0].style.height, template = EditorUtils.editorWrapperTemplate, editorWrap = $(template).insertBefore(textarea).width(w).height(h), editArea = editorWrap.find('.k-editable-area');\n textarea.attr('autocomplete', 'off').appendTo(editArea).addClass('k-content k-raw-content').css('display', 'none');\n that.textarea = textarea;\n that.wrapper = editorWrap;\n },\n _createContentElement: function (stylesheets) {\n var editor = this;\n var iframe, wnd, doc;\n var textarea = editor.textarea;\n var specifiedDomain = editor.options.domain;\n var domain = specifiedDomain || document.domain;\n var domainScript = '';\n var src = 'javascript:\"\"';\n var lang = '';\n textarea.hide();\n iframe = $('<iframe />', {\n title: editor.options.messages.editAreaTitle,\n frameBorder: '0'\n })[0];\n $(iframe).css('display', '').addClass('k-content').attr('tabindex', textarea[0].tabIndex).insertBefore(textarea);\n if (specifiedDomain || domain != location.hostname) {\n domainScript = '<script>document.domain=\"' + domain + '\"</script>';\n src = 'javascript:document.write(\\'' + domainScript + '\\')';\n iframe.src = src;\n }\n wnd = iframe.contentWindow || iframe;\n doc = wnd.document || iframe.contentDocument;\n $(iframe).one('load', function () {\n editor.toolbar.decorateFrom(doc.body);\n });\n lang = document.getElementsByTagName('html')[0].getAttribute('lang') || DEFAULT_LANGUAGE;\n doc.open();\n doc.write('<!DOCTYPE html><html lag=\\'' + lang + '\\'><head>' + '<meta charset=\\'utf-8\\' />' + '<title>Kendo UI Editor content</title>' + '<style>' + 'html{padding:0;margin:0;height:100%;min-height:100%;cursor:text;}' + 'body{padding:0;margin:0;}' + 'body{box-sizing:border-box;font-size:12px;font-family:Verdana,Geneva,sans-serif;margin-top:-1px;padding:5px .4em 0;' + 'word-wrap: break-word;-webkit-nbsp-mode: space;-webkit-line-break: after-white-space;' + (kendo.support.isRtl(textarea) ? 'direction:rtl;' : '') + (os.ios ? 'word-break:keep-all;' : '') + '}' + 'h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em}h3{font-size:1.16em}h4{font-size:1em}h5{font-size:.83em}h6{font-size:.7em}' + 'p{margin:0 0 1em;}.k-marker{display:none;}.k-paste-container,.Apple-style-span{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}' + 'ul,ol{padding-left:2.5em}' + 'span{-ms-high-contrast-adjust:none;}' + 'a{color:#00a}' + 'code{font-size:1.23em}' + 'telerik\\\\3Ascript{display: none;}' + '.k-table{width:100%;border-spacing:0;margin: 0 0 1em;}' + '.k-table td{min-width:1px;padding:.2em .3em;}' + '.k-table,.k-table td{outline:0;border: 1px dotted #ccc;}' + '.k-table p{margin:0;padding:0;}' + '.k-column-resize-handle-wrapper {position: absolute; height: 10px; width:10px; cursor: col-resize; z-index: 2;}' + '.k-column-resize-handle {width: 100%; height: 100%;}' + '.k-column-resize-handle > .k-column-resize-marker {width:2px; height:100%; margin:0 auto; background-color:#00b0ff; display:none; opacity:0.8;}' + '.k-row-resize-handle-wrapper {position: absolute; cursor: row-resize; z-index:2; width: 10px; height: 10px;}' + '.k-row-resize-handle {display: table; width: 100%; height: 100%;}' + '.k-row-resize-marker-wrapper{display: table-cell; height:100%; width:100%; margin:0; padding:0; vertical-align: middle;}' + '.k-row-resize-marker{margin: 0; padding:0; width:100%; height:2px; background-color: #00b0ff; opacity:0.8; display:none;}' + '.k-table-resize-handle-wrapper {position: absolute; background-color: #fff; border: 1px solid #000; z-index: 100; width: 5px; height: 5px;}' + '.k-table-resize-handle {width: 100%; height: 100%;}' + '.k-table-resize-handle.k-resize-east{cursor:e-resize;}' + '.k-table-resize-handle.k-resize-north{cursor:n-resize;}' + '.k-table-resize-handle.k-resize-northeast{cursor:ne-resize;}' + '.k-table-resize-handle.k-resize-northwest{cursor:nw-resize;}' + '.k-table-resize-handle.k-resize-south{cursor:s-resize;}' + '.k-table-resize-handle.k-resize-southeast{cursor:se-resize;}' + '.k-table-resize-handle.k-resize-southwest{cursor:sw-resize;}' + '.k-table-resize-handle.k-resize-west{cursor:w-resize;}' + '.k-table.k-table-resizing{opacity:0.6;}' + '.k-placeholder{color:grey}' + 'k\\\\:script{display:none;}' + '</style>' + domainScript + $.map(stylesheets, function (href) {\n return '<link rel=\\'stylesheet\\' href=\\'' + href + '\\'>';\n }).join('') + '</head><body autocorrect=\\'off\\' contenteditable=\\'true\\'></body></html>');\n doc.close();\n return wnd;\n },\n _blur: function () {\n var textarea = this.textarea;\n var old = textarea ? textarea.val() : this._oldValue;\n var value = this.options.encoded ? this.encodedValue() : this.value();\n this.update();\n if (textarea) {\n textarea.trigger('blur');\n }\n if (value != old) {\n this.trigger('change');\n if (textarea) {\n textarea.trigger('change');\n }\n }\n },\n _spellCorrect: function (editor) {\n var beforeCorrection;\n var falseTrigger = false;\n this._registerHandler(editor.body, {\n 'contextmenu': function () {\n editor.one('select', function () {\n beforeCorrection = null;\n });\n editor._spellCorrectTimeout = setTimeout(function () {\n beforeCorrection = new kendo.ui.editor.RestorePoint(editor.getRange(), editor.body);\n falseTrigger = false;\n }, 10);\n },\n 'input': function () {\n if (!beforeCorrection) {\n return;\n }\n if (kendo.support.browser.mozilla && !falseTrigger) {\n falseTrigger = true;\n return;\n }\n kendo.ui.editor._finishUpdate(editor, beforeCorrection);\n }\n });\n },\n _registerHandler: function (element, type, handler) {\n var editor = this;\n var NS = '.kendoEditor';\n var eventNames;\n var i;\n element = $(element);\n if (!this._handlers) {\n this._handlers = [];\n }\n if (element.length) {\n if ($.isPlainObject(type)) {\n for (var t in type) {\n if (type.hasOwnProperty(t)) {\n this._registerHandler(element, t, type[t]);\n }\n }\n } else {\n eventNames = kendo.applyEventMap(type).split(' ');\n for (i = 0; i < eventNames.length; i++) {\n editor._handlers.push({\n element: element,\n type: eventNames[i] + NS,\n handler: handler\n });\n element.on(eventNames[i] + NS, handler);\n }\n }\n }\n },\n _deregisterHandlers: function () {\n var handlers = this._handlers;\n for (var i = 0; i < handlers.length; i++) {\n var h = handlers[i];\n h.element.off(h.type, h.handler);\n }\n this._handlers = [];\n },\n _initializeContentElement: function () {\n var editor = this;\n var doc;\n var blurTrigger;\n var mousedownTrigger;\n if (editor.textarea) {\n editor.window = editor._createContentElement(editor.options.stylesheets);\n doc = editor.document = editor.window.contentDocument || editor.window.document;\n if (!doc.body) {\n var body = doc.createElement('body');\n body.setAttribute('contenteditable', 'true');\n body.setAttribute('autocorrect', 'off');\n doc.getElementsByTagName('html')[0].appendChild(body);\n var interval = setInterval(function () {\n if ($(editor.document).find('body').length > 1) {\n $(editor.document).find('body:last').remove();\n window.clearInterval(interval);\n }\n }, 10);\n }\n editor.body = doc.body;\n blurTrigger = editor.window;\n mousedownTrigger = doc;\n this._registerHandler(doc, 'mouseup', proxy(this._mouseup, this));\n } else {\n editor.window = window;\n doc = editor.document = document;\n editor.body = editor.element[0];\n blurTrigger = editor.body;\n mousedownTrigger = editor.body;\n editor.toolbar.decorateFrom(editor.body);\n }\n this._registerHandler(blurTrigger, 'blur', proxy(this._blur, this));\n editor._registerHandler(mousedownTrigger, 'down', proxy(editor._mousedown, editor));\n try {\n doc.execCommand('enableInlineTableEditing', null, false);\n } catch (e) {\n }\n if (kendo.support.touch) {\n this._registerHandler(doc, {\n 'keydown': function () {\n if (kendo._activeElement() != doc.body) {\n editor.window.focus();\n }\n }\n });\n }\n this._initializePlaceholder();\n this._spellCorrect(editor);\n this._registerHandler(editor.body, {\n 'keydown': function (e) {\n var range;\n if ((e.keyCode === keys.BACKSPACE || e.keyCode === keys.DELETE) && editor.body.getAttribute('contenteditable') !== 'true') {\n return false;\n }\n if (e.keyCode === keys.F10) {\n setTimeout(proxy(editor.toolbar.focus, editor.toolbar), 100);\n editor.toolbar.preventPopupHide = true;\n e.preventDefault();\n return;\n } else if (e.keyCode == keys.LEFT || e.keyCode == keys.RIGHT) {\n range = editor.getRange();\n var left = e.keyCode == keys.LEFT;\n var container = range[left ? 'startContainer' : 'endContainer'];\n var offset = range[left ? 'startOffset' : 'endOffset'];\n var direction = left ? -1 : 1;\n var next = offset + direction;\n var nextChar = left ? next : offset;\n if (container.nodeType == 3 && container.nodeValue[nextChar] == '\\uFEFF') {\n range.setStart(container, next);\n range.collapse(true);\n editor.selectRange(range);\n }\n }\n var tools = editor.toolbar.tools;\n var toolName = editor.keyboard.toolFromShortcut(tools, e);\n var toolOptions = toolName ? tools[toolName].options : {};\n if (toolName && !toolOptions.keyPressCommand) {\n e.preventDefault();\n if (!/^(undo|redo)$/.test(toolName)) {\n editor.keyboard.endTyping(true);\n }\n editor.trigger('keydown', e);\n editor.exec(toolName);\n editor._runPostContentKeyCommands(e);\n return false;\n }\n editor.keyboard.clearTimeout();\n editor.keyboard.keydown(e);\n },\n 'keypress': function (e) {\n setTimeout(function () {\n editor._runPostContentKeyCommands(e);\n editor._showTableResizeHandles();\n }, 0);\n },\n 'keyup': function (e) {\n var selectionCodes = [\n keys.BACKSPACE,\n keys.TAB,\n keys.PAGEUP,\n keys.PAGEDOWN,\n keys.END,\n keys.HOME,\n keys.LEFT,\n keys.UP,\n keys.RIGHT,\n keys.DOWN,\n keys.INSERT,\n keys.DELETE\n ];\n if ($.inArray(e.keyCode, selectionCodes) > -1 || e.keyCode == 65 && e.ctrlKey && !e.altKey && !e.shiftKey) {\n window.clearTimeout(this._refreshInterval);\n this._refreshInterval = window.setTimeout(function () {\n editor._selectionChange();\n }, REFRESH_INTERVAL);\n }\n editor.keyboard.keyup(e);\n },\n 'click': function (e) {\n var dom = kendo.ui.editor.Dom, range;\n if (dom.name(e.target) === 'img') {\n range = editor.createRange();\n range.selectNode(e.target);\n editor.selectRange(range);\n }\n },\n 'cut copy paste drop dragover': function (e) {\n editor.clipboard['on' + e.type](e);\n },\n 'focusin': function () {\n if (editor.body.hasAttribute('contenteditable')) {\n $(this).addClass('k-state-active');\n editor.toolbar.show();\n editor._togglePlaceholder(false);\n }\n },\n 'focusout': function () {\n setTimeout(function () {\n var active = kendo._activeElement();\n var body = editor.body;\n var toolbar = editor.toolbar;\n if (toolbar.options.popup) {\n var toolbarContainerElement = toolbar.window.element.get(0);\n if (toolbarContainerElement && !($.contains(toolbarContainerElement, active) || toolbarContainerElement == active)) {\n toolbar.preventPopupHide = false;\n }\n }\n if (active != body && !$.contains(body, active) && !$(active).is('.k-editortoolbar-dragHandle') && !toolbar.focused()) {\n $(body).removeClass('k-state-active');\n toolbar.hide();\n }\n editor._togglePlaceholder(!editor.value().trim());\n }, 10);\n }\n });\n editor._initializeColumnResizing();\n editor._initializeRowResizing();\n editor._initializeTableResizing();\n },\n _initializePlaceholder: function () {\n var that = this, placeholder = that.options.placeholder, style, $head;\n if (!that.textarea || !placeholder) {\n return;\n }\n style = '<style id=\\'' + PLACEHOLDER_TAG_ID + '\\'>.' + PLACEHOLDER_CLASS + ':before { content: \\'' + placeholder + '\\'; }' + '</style>';\n $head = $(that.document.head);\n $head.find('#' + PLACEHOLDER_TAG_ID).remove();\n $head.append(style);\n that._togglePlaceholder(!that.value().trim());\n },\n _initializeImmutables: function () {\n var that = this, editorNS = kendo.ui.editor;\n if (that.options.immutables) {\n that.immutables = new editorNS.Immutables(that);\n }\n },\n _mousedown: function (e) {\n var editor = this;\n editor._selectionStarted = true;\n if ($(editor.body).parents('.k-window').length) {\n e.stopPropagation();\n }\n if (browser.gecko) {\n return;\n }\n var target = $(e.target).closest('a[href]');\n if ((e.which == 2 || e.which == 1 && e.ctrlKey) && target && target.is('a[href]')) {\n window.open(target.attr('href'), '_new');\n }\n if (e.target.tagName && e.target.tagName.toLowerCase() === 'html') {\n setTimeout(function () {\n editor.body.focus();\n }, 0);\n }\n },\n _mouseup: function (e) {\n var that = this;\n if (kendo.support.mobileOS.ios && e && $(e.target).is(SELECT_OVERLAY_SELECTOR)) {\n return;\n }\n if (that._selectionStarted) {\n setTimeout(function () {\n that._selectionChange();\n }, 1);\n }\n },\n _runPostContentKeyCommands: function (e) {\n var range = this.getRange();\n var tools = this.keyboard.toolsFromShortcut(this.toolbar.tools, e);\n for (var i = 0; i < tools.length; i++) {\n var tool = tools[i];\n var o = tool.options;\n if (!o.keyPressCommand) {\n continue;\n }\n var cmd = new o.command({ range: range });\n if (cmd.changesContent()) {\n this.keyboard.endTyping(true);\n this.exec(tool.name);\n }\n }\n },\n refresh: function () {\n var that = this;\n if (that.textarea) {\n that._destroyResizings();\n var value = that.value();\n that.textarea.val(value);\n that.wrapper.find('iframe').remove();\n that._initializeContentElement(that);\n that.value(value);\n }\n },\n events: [\n 'select',\n 'change',\n 'execute',\n 'error',\n 'paste',\n 'keydown',\n 'keyup'\n ],\n options: {\n name: 'Editor',\n messages: messages,\n placeholder: '',\n formats: {},\n encoded: true,\n domain: null,\n resizable: false,\n deserialization: { custom: null },\n serialization: {\n entities: true,\n semantic: true,\n scripts: false\n },\n pasteCleanup: {\n all: false,\n css: false,\n custom: null,\n keepNewLines: false,\n msAllFormatting: false,\n msConvertLists: true,\n msTags: true,\n none: false,\n span: false\n },\n stylesheets: [],\n dialogOptions: {\n modal: true,\n resizable: false,\n draggable: true,\n animation: false\n },\n imageBrowser: null,\n fileBrowser: null,\n fontName: [\n {\n text: 'Arial',\n value: 'Arial, Helvetica, sans-serif'\n },\n {\n text: 'Courier New',\n value: '\"Courier New\", Courier, monospace'\n },\n {\n text: 'Georgia',\n value: 'Georgia, serif'\n },\n {\n text: 'Impact',\n value: 'Impact, Charcoal, sans-serif'\n },\n {\n text: 'Lucida Console',\n value: '\"Lucida Console\", Monaco, monospace'\n },\n {\n text: 'Tahoma',\n value: 'Tahoma, Geneva, sans-serif'\n },\n {\n text: 'Times New Roman',\n value: '\"Times New Roman\", Times, serif'\n },\n {\n text: 'Trebuchet MS',\n value: '\"Trebuchet MS\", Helvetica, sans-serif'\n },\n {\n text: 'Verdana',\n value: 'Verdana, Geneva, sans-serif'\n }\n ],\n fontSize: [\n {\n text: '1 (8pt)',\n value: 'xx-small'\n },\n {\n text: '2 (10pt)',\n value: 'x-small'\n },\n {\n text: '3 (12pt)',\n value: 'small'\n },\n {\n text: '4 (14pt)',\n value: 'medium'\n },\n {\n text: '5 (18pt)',\n value: 'large'\n },\n {\n text: '6 (24pt)',\n value: 'x-large'\n },\n {\n text: '7 (36pt)',\n value: 'xx-large'\n }\n ],\n formatBlock: [\n {\n text: 'Paragraph',\n value: 'p'\n },\n {\n text: 'Quotation',\n value: 'blockquote'\n },\n {\n text: 'Heading 1',\n value: 'h1'\n },\n {\n text: 'Heading 2',\n value: 'h2'\n },\n {\n text: 'Heading 3',\n value: 'h3'\n },\n {\n text: 'Heading 4',\n value: 'h4'\n },\n {\n text: 'Heading 5',\n value: 'h5'\n },\n {\n text: 'Heading 6',\n value: 'h6'\n }\n ],\n tools: [].concat.call(['formatting'], toolGroups.basic, toolGroups.alignment, toolGroups.lists, toolGroups.indenting, toolGroups.links, ['insertImage'], toolGroups.tables)\n },\n destroy: function () {\n var editor = this;\n Widget.fn.destroy.call(this);\n this._endTyping(true);\n this._deregisterHandlers();\n clearTimeout(this._spellCorrectTimeout);\n this._focusOutside();\n this.toolbar.destroy();\n editor._destroyUploadWidget();\n editor._destroyResizings();\n kendo.destroy(this.wrapper);\n },\n _destroyResizings: function () {\n var editor = this;\n editor._destroyTableResizing();\n kendo.ui.editor.TableResizing.dispose(editor);\n editor._destroyRowResizing();\n kendo.ui.editor.RowResizing.dispose(editor);\n editor._destroyColumnResizing();\n kendo.ui.editor.ColumnResizing.dispose(editor);\n },\n _focusOutside: function () {\n if (kendo.support.browser.msie && this.textarea) {\n var tempInput = $('<input style=\\'position:fixed;left:1px;top:1px;width:1px;height:1px;font-size:0;border:0;opacity:0\\' />').appendTo(document.body).focus();\n tempInput.blur().remove();\n }\n },\n _destroyUploadWidget: function () {\n var editor = this;\n if (editor._uploadWidget) {\n editor._uploadWidget.destroy();\n editor._uploadWidget = null;\n }\n },\n state: function (toolName) {\n var tool = Editor.defaultTools[toolName];\n var finder = tool && (tool.options.finder || tool.finder);\n var RangeUtils = kendo.ui.editor.RangeUtils;\n var range, textNodes;\n if (finder) {\n range = this.getRange();\n textNodes = RangeUtils.textNodes(range);\n if (!textNodes.length && range.collapsed) {\n textNodes = [range.startContainer];\n }\n return finder.getFormat ? finder.getFormat(textNodes) : finder.isFormatted(textNodes);\n }\n return false;\n },\n value: function (html) {\n var body = this.body, editorNS = kendo.ui.editor, options = this.options, currentHtml = editorNS.Serializer.domToXhtml(body, options.serialization);\n if (html === undefined) {\n return currentHtml;\n }\n if (html == currentHtml) {\n return;\n }\n editorNS.Serializer.htmlToDom(html, body, options.deserialization);\n this.selectionRestorePoint = null;\n this.update();\n this.toolbar.refreshTools();\n },\n saveSelection: function (range) {\n range = range || this.getRange();\n var container = range.commonAncestorContainer, body = this.body;\n if (container == body || $.contains(body, container)) {\n this.selectionRestorePoint = new kendo.ui.editor.RestorePoint(range, body);\n }\n },\n _focusBody: function () {\n var body = this.body;\n var iframe = this.wrapper && this.wrapper.find('iframe')[0];\n var documentElement = this.document.documentElement;\n var activeElement = kendo._activeElement();\n var scrollTop;\n if (!iframe && body.scrollHeight > body.clientHeight) {\n scrollTop = body.scrollTop;\n body.focus();\n body.scrollTop = scrollTop;\n } else if (activeElement != body && activeElement != iframe) {\n scrollTop = documentElement.scrollTop;\n body.focus();\n documentElement.scrollTop = scrollTop;\n }\n },\n restoreSelection: function () {\n this._focusBody();\n if (this.selectionRestorePoint) {\n this.selectRange(this.selectionRestorePoint.toRange());\n }\n },\n focus: function () {\n this.restoreSelection();\n },\n update: function (value) {\n value = value || this.options.encoded ? this.encodedValue() : this.value();\n if (this.textarea) {\n this.textarea.val(value);\n this._togglePlaceholder(!value.trim());\n } else {\n this._oldValue = value;\n }\n },\n encodedValue: function () {\n return kendo.ui.editor.Dom.encode(this.value());\n },\n createRange: function (document) {\n return kendo.ui.editor.RangeUtils.createRange(document || this.document);\n },\n getSelection: function () {\n return kendo.ui.editor.SelectionUtils.selectionFromDocument(this.document);\n },\n selectRange: function (range) {\n this._focusBody();\n var selection = this.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n this.saveSelection(range);\n },\n getRange: function () {\n var selection = this.getSelection(), range = selection && selection.rangeCount > 0 ? selection.getRangeAt(0) : this.createRange(), doc = this.document;\n if (range.startContainer == doc && range.endContainer == doc && !range.startOffset && !range.endOffset) {\n range.setStart(this.body, 0);\n range.collapse(true);\n }\n return range;\n },\n _containsRange: function (range) {\n var dom = kendo.ui.editor.Dom;\n var body = this.body;\n return range && dom.isAncestorOrSelf(body, range.startContainer) && dom.isAncestorOrSelf(body, range.endContainer);\n },\n _deleteSavedRange: function () {\n if ('_range' in this) {\n delete this._range;\n }\n },\n selectedHtml: function () {\n return kendo.ui.editor.Serializer.domToXhtml(this.getRange().cloneContents());\n },\n paste: function (html, options) {\n this.focus();\n var command = new kendo.ui.editor.InsertHtmlCommand($.extend({\n range: this.getRange(),\n html: html\n }, options));\n command.editor = this;\n command.exec();\n },\n exec: function (name, params) {\n var that = this;\n var command = null;\n var range, tool, prevented;\n if (!name) {\n throw new Error('kendoEditor.exec(): `name` parameter cannot be empty');\n }\n if (that.body.getAttribute('contenteditable') !== 'true' && name !== 'print' && name !== 'pdf' && name !== 'exportAs') {\n return false;\n }\n name = name.toLowerCase();\n if (!that.keyboard.isTypingInProgress()) {\n that._focusBody();\n that.selectRange(that._range || that.getRange());\n }\n tool = that.toolbar.toolById(name);\n if (!tool) {\n for (var id in Editor.defaultTools) {\n if (id.toLowerCase() == name) {\n tool = Editor.defaultTools[id];\n break;\n }\n }\n }\n if (tool) {\n range = that.getRange();\n if (tool.command) {\n command = tool.command(extend({\n range: range,\n body: that.body,\n immutables: !!that.immutables\n }, params));\n }\n prevented = that.trigger('execute', {\n name: name,\n command: command\n });\n if (prevented) {\n return;\n }\n if (/^(undo|redo)$/i.test(name)) {\n that.undoRedoStack[name]();\n } else if (command) {\n that.execCommand(command);\n if (command.async) {\n command.change = proxy(that._selectionChange, that);\n return;\n }\n }\n that._selectionChange();\n }\n },\n execCommand: function (command) {\n if (!command.managesUndoRedo) {\n this.undoRedoStack.push(command);\n }\n command.editor = this;\n command.exec();\n }\n });\n Editor.defaultTools = {\n undo: {\n options: {\n key: 'Z',\n ctrl: true\n }\n },\n redo: {\n options: {\n key: 'Y',\n ctrl: true\n }\n }\n };\n kendo.ui.plugin(Editor);\n var Tool = Class.extend({\n init: function (options) {\n this.options = options;\n },\n initialize: function (ui, options) {\n ui.attr({\n unselectable: 'on',\n title: options.title,\n 'aria-label': options.title\n });\n },\n command: function (commandArguments) {\n return new this.options.command(commandArguments);\n },\n update: $.noop\n });\n Tool.exec = function (editor, name, value) {\n editor.exec(name, { value: value });\n };\n EditorUtils.registerTool('separator', new Tool({ template: new ToolTemplate({ template: EditorUtils.separatorTemplate }) }));\n var bomFill = browser.msie && browser.version < 9 ? '\\uFEFF' : '';\n var emptyElementContent = '\\uFEFF';\n var emptyTableCellContent = emptyElementContent;\n if (browser.msie || browser.edge) {\n emptyTableCellContent = emptyElementContent = ' ';\n }\n extend(kendo.ui, {\n editor: {\n ToolTemplate: ToolTemplate,\n EditorUtils: EditorUtils,\n Tool: Tool,\n _bomFill: bomFill,\n emptyElementContent: emptyElementContent,\n emptyTableCellContent: emptyTableCellContent\n }\n });\n if (kendo.PDFMixin) {\n kendo.PDFMixin.extend(Editor.prototype);\n Editor.prototype._drawPDF = function () {\n return kendo.drawing.drawDOM(this.body, this.options.pdf);\n };\n Editor.prototype.saveAsPDF = function () {\n var progress = new $.Deferred();\n var promise = progress.promise();\n var args = { promise: promise };\n if (this.trigger('pdfExport', args)) {\n return;\n }\n var options = this.options.pdf;\n this._drawPDF(progress).then(function (root) {\n return kendo.drawing.exportPDF(root, options);\n }).done(function (dataURI) {\n kendo.saveAs({\n dataURI: dataURI,\n fileName: options.fileName,\n proxyURL: options.proxyURL,\n proxyTarget: options.proxyTarget,\n forceProxy: options.forceProxy\n });\n progress.resolve();\n }).fail(function (err) {\n progress.reject(err);\n });\n return promise;\n };\n }\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/dom', ['editor/main'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, map = $.map, extend = $.extend, browser = kendo.support.browser, STYLE = 'style', FLOAT = 'float', CSSFLOAT = 'cssFloat', STYLEFLOAT = 'styleFloat', CLASS = 'class', KMARKER = 'k-marker';\n function makeMap(items) {\n var obj = {}, i, len;\n for (i = 0, len = items.length; i < len; i++) {\n obj[items[i]] = true;\n }\n return obj;\n }\n var empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed'.split(',')), nonListBlockElements = 'p,div,h1,h2,h3,h4,h5,h6,address,applet,blockquote,button,center,dd,dir,dl,dt,fieldset,form,frameset,hr,iframe,isindex,map,menu,noframes,noscript,object,pre,script,table,tbody,td,tfoot,th,thead,tr,header,article,nav,footer,section,aside,main,figure,figcaption'.split(','), blockElements = nonListBlockElements.concat([\n 'ul',\n 'ol',\n 'li'\n ]), block = makeMap(blockElements), selfClosing = makeMap('area,base,br,col,command,embed,hr,img,input,keygen,link,menuitem,meta,param,source,track,wbr'.split(',')), inlineElements = 'span,em,a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,strike,strong,sub,sup,textarea,tt,u,var,data,time,mark,ruby'.split(','), inline = makeMap(inlineElements), fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'.split(','));\n var normalize = function (node) {\n if (node.nodeType == 1) {\n node.normalize();\n }\n };\n if (browser.msie && browser.version >= 8) {\n normalize = function (parent) {\n if (parent.nodeType == 1 && parent.firstChild) {\n var prev = parent.firstChild, node = prev;\n while (true) {\n node = node.nextSibling;\n if (!node) {\n break;\n }\n if (node.nodeType == 3 && prev.nodeType == 3) {\n node.nodeValue = prev.nodeValue + node.nodeValue;\n Dom.remove(prev);\n }\n prev = node;\n }\n }\n };\n }\n var whitespace = /^\\s+$/, emptyspace = /^[\\n\\r\\t]+$/, rgb = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i, bom = /\\ufeff/g, whitespaceOrBom = /^(\\s+|\\ufeff)$/, persistedScrollTop, cssAttributes = ('color,padding-left,padding-right,padding-top,padding-bottom,' + 'background-color,background-attachment,background-image,background-position,background-repeat,' + 'border-top-style,border-top-width,border-top-color,' + 'border-bottom-style,border-bottom-width,border-bottom-color,' + 'border-left-style,border-left-width,border-left-color,' + 'border-right-style,border-right-width,border-right-color,' + 'font-family,font-size,font-style,font-variant,font-weight,line-height').split(','), htmlRe = /[<>\\&]/g, entityRe = /[\\u00A0-\\u2666<>\\&]/g, entityTable = {\n 34: 'quot',\n 38: 'amp',\n 39: 'apos',\n 60: 'lt',\n 62: 'gt',\n 160: 'nbsp',\n 161: 'iexcl',\n 162: 'cent',\n 163: 'pound',\n 164: 'curren',\n 165: 'yen',\n 166: 'brvbar',\n 167: 'sect',\n 168: 'uml',\n 169: 'copy',\n 170: 'ordf',\n 171: 'laquo',\n 172: 'not',\n 173: 'shy',\n 174: 'reg',\n 175: 'macr',\n 176: 'deg',\n 177: 'plusmn',\n 178: 'sup2',\n 179: 'sup3',\n 180: 'acute',\n 181: 'micro',\n 182: 'para',\n 183: 'middot',\n 184: 'cedil',\n 185: 'sup1',\n 186: 'ordm',\n 187: 'raquo',\n 188: 'frac14',\n 189: 'frac12',\n 190: 'frac34',\n 191: 'iquest',\n 192: 'Agrave',\n 193: 'Aacute',\n 194: 'Acirc',\n 195: 'Atilde',\n 196: 'Auml',\n 197: 'Aring',\n 198: 'AElig',\n 199: 'Ccedil',\n 200: 'Egrave',\n 201: 'Eacute',\n 202: 'Ecirc',\n 203: 'Euml',\n 204: 'Igrave',\n 205: 'Iacute',\n 206: 'Icirc',\n 207: 'Iuml',\n 208: 'ETH',\n 209: 'Ntilde',\n 210: 'Ograve',\n 211: 'Oacute',\n 212: 'Ocirc',\n 213: 'Otilde',\n 214: 'Ouml',\n 215: 'times',\n 216: 'Oslash',\n 217: 'Ugrave',\n 218: 'Uacute',\n 219: 'Ucirc',\n 220: 'Uuml',\n 221: 'Yacute',\n 222: 'THORN',\n 223: 'szlig',\n 224: 'agrave',\n 225: 'aacute',\n 226: 'acirc',\n 227: 'atilde',\n 228: 'auml',\n 229: 'aring',\n 230: 'aelig',\n 231: 'ccedil',\n 232: 'egrave',\n 233: 'eacute',\n 234: 'ecirc',\n 235: 'euml',\n 236: 'igrave',\n 237: 'iacute',\n 238: 'icirc',\n 239: 'iuml',\n 240: 'eth',\n 241: 'ntilde',\n 242: 'ograve',\n 243: 'oacute',\n 244: 'ocirc',\n 245: 'otilde',\n 246: 'ouml',\n 247: 'divide',\n 248: 'oslash',\n 249: 'ugrave',\n 250: 'uacute',\n 251: 'ucirc',\n 252: 'uuml',\n 253: 'yacute',\n 254: 'thorn',\n 255: 'yuml',\n 402: 'fnof',\n 913: 'Alpha',\n 914: 'Beta',\n 915: 'Gamma',\n 916: 'Delta',\n 917: 'Epsilon',\n 918: 'Zeta',\n 919: 'Eta',\n 920: 'Theta',\n 921: 'Iota',\n 922: 'Kappa',\n 923: 'Lambda',\n 924: 'Mu',\n 925: 'Nu',\n 926: 'Xi',\n 927: 'Omicron',\n 928: 'Pi',\n 929: 'Rho',\n 931: 'Sigma',\n 932: 'Tau',\n 933: 'Upsilon',\n 934: 'Phi',\n 935: 'Chi',\n 936: 'Psi',\n 937: 'Omega',\n 945: 'alpha',\n 946: 'beta',\n 947: 'gamma',\n 948: 'delta',\n 949: 'epsilon',\n 950: 'zeta',\n 951: 'eta',\n 952: 'theta',\n 953: 'iota',\n 954: 'kappa',\n 955: 'lambda',\n 956: 'mu',\n 957: 'nu',\n 958: 'xi',\n 959: 'omicron',\n 960: 'pi',\n 961: 'rho',\n 962: 'sigmaf',\n 963: 'sigma',\n 964: 'tau',\n 965: 'upsilon',\n 966: 'phi',\n 967: 'chi',\n 968: 'psi',\n 969: 'omega',\n 977: 'thetasym',\n 978: 'upsih',\n 982: 'piv',\n 8226: 'bull',\n 8230: 'hellip',\n 8242: 'prime',\n 8243: 'Prime',\n 8254: 'oline',\n 8260: 'frasl',\n 8472: 'weierp',\n 8465: 'image',\n 8476: 'real',\n 8482: 'trade',\n 8501: 'alefsym',\n 8592: 'larr',\n 8593: 'uarr',\n 8594: 'rarr',\n 8595: 'darr',\n 8596: 'harr',\n 8629: 'crarr',\n 8656: 'lArr',\n 8657: 'uArr',\n 8658: 'rArr',\n 8659: 'dArr',\n 8660: 'hArr',\n 8704: 'forall',\n 8706: 'part',\n 8707: 'exist',\n 8709: 'empty',\n 8711: 'nabla',\n 8712: 'isin',\n 8713: 'notin',\n 8715: 'ni',\n 8719: 'prod',\n 8721: 'sum',\n 8722: 'minus',\n 8727: 'lowast',\n 8730: 'radic',\n 8733: 'prop',\n 8734: 'infin',\n 8736: 'ang',\n 8743: 'and',\n 8744: 'or',\n 8745: 'cap',\n 8746: 'cup',\n 8747: 'int',\n 8756: 'there4',\n 8764: 'sim',\n 8773: 'cong',\n 8776: 'asymp',\n 8800: 'ne',\n 8801: 'equiv',\n 8804: 'le',\n 8805: 'ge',\n 8834: 'sub',\n 8835: 'sup',\n 8836: 'nsub',\n 8838: 'sube',\n 8839: 'supe',\n 8853: 'oplus',\n 8855: 'otimes',\n 8869: 'perp',\n 8901: 'sdot',\n 8968: 'lceil',\n 8969: 'rceil',\n 8970: 'lfloor',\n 8971: 'rfloor',\n 9001: 'lang',\n 9002: 'rang',\n 9674: 'loz',\n 9824: 'spades',\n 9827: 'clubs',\n 9829: 'hearts',\n 9830: 'diams',\n 338: 'OElig',\n 339: 'oelig',\n 352: 'Scaron',\n 353: 'scaron',\n 376: 'Yuml',\n 710: 'circ',\n 732: 'tilde',\n 8194: 'ensp',\n 8195: 'emsp',\n 8201: 'thinsp',\n 8204: 'zwnj',\n 8205: 'zwj',\n 8206: 'lrm',\n 8207: 'rlm',\n 8211: 'ndash',\n 8212: 'mdash',\n 8216: 'lsquo',\n 8217: 'rsquo',\n 8218: 'sbquo',\n 8220: 'ldquo',\n 8221: 'rdquo',\n 8222: 'bdquo',\n 8224: 'dagger',\n 8225: 'Dagger',\n 8240: 'permil',\n 8249: 'lsaquo',\n 8250: 'rsaquo',\n 8364: 'euro'\n };\n var Dom = {\n block: block,\n inline: inline,\n findNodeIndex: function (node, skipText) {\n var i = 0;\n if (!node) {\n return -1;\n }\n while (true) {\n node = node.previousSibling;\n if (!node) {\n break;\n }\n if (!(skipText && node.nodeType == 3)) {\n i++;\n }\n }\n return i;\n },\n isDataNode: function (node) {\n return node && node.nodeValue !== null && node.data !== null;\n },\n isAncestorOf: function (parent, node) {\n try {\n return !Dom.isDataNode(parent) && ($.contains(parent, Dom.isDataNode(node) ? node.parentNode : node) || node.parentNode == parent);\n } catch (e) {\n return false;\n }\n },\n isAncestorOrSelf: function (root, node) {\n return Dom.isAncestorOf(root, node) || root == node;\n },\n findClosestAncestor: function (root, node) {\n if (Dom.isAncestorOf(root, node)) {\n while (node && node.parentNode != root) {\n node = node.parentNode;\n }\n }\n return node;\n },\n getAllComments: function (rootElem) {\n var comments = [];\n var iterator = document.createNodeIterator(rootElem, NodeFilter.SHOW_COMMENT, function () {\n return NodeFilter.FILTER_ACCEPT;\n }, false);\n var curNode = iterator.nextNode();\n while (curNode) {\n comments.push(curNode.nodeValue);\n curNode = iterator.nextNode();\n }\n return comments;\n },\n getNodeLength: function (node) {\n return Dom.isDataNode(node) ? node.length : node.childNodes.length;\n },\n splitDataNode: function (node, offset) {\n var newNode = node.cloneNode(false);\n var denormalizedText = '';\n var iterator = node.nextSibling;\n var temp;\n while (iterator && iterator.nodeType == 3 && iterator.nodeValue) {\n denormalizedText += iterator.nodeValue;\n temp = iterator;\n iterator = iterator.nextSibling;\n Dom.remove(temp);\n }\n node.deleteData(offset, node.length);\n newNode.deleteData(0, offset);\n newNode.nodeValue += denormalizedText;\n Dom.insertAfter(newNode, node);\n },\n attrEquals: function (node, attributes) {\n for (var key in attributes) {\n var value = node[key];\n if (key == FLOAT) {\n value = node[kendo.support.cssFloat ? CSSFLOAT : STYLEFLOAT];\n }\n if (typeof value == 'object') {\n if (!Dom.attrEquals(value, attributes[key])) {\n return false;\n }\n } else if (value != attributes[key]) {\n return false;\n }\n }\n return true;\n },\n blockParentOrBody: function (node) {\n return Dom.parentOfType(node, blockElements) || node.ownerDocument.body;\n },\n blockParents: function (nodes) {\n var blocks = [], i, len;\n for (i = 0, len = nodes.length; i < len; i++) {\n var block = Dom.parentOfType(nodes[i], Dom.blockElements);\n if (block && $.inArray(block, blocks) < 0) {\n blocks.push(block);\n }\n }\n return blocks;\n },\n windowFromDocument: function (document) {\n return document.defaultView || document.parentWindow;\n },\n normalize: normalize,\n blockElements: blockElements,\n nonListBlockElements: nonListBlockElements,\n inlineElements: inlineElements,\n empty: empty,\n fillAttrs: fillAttrs,\n nodeTypes: {\n ELEMENT_NODE: 1,\n ATTRIBUTE_NODE: 2,\n TEXT_NODE: 3,\n CDATA_SECTION_NODE: 4,\n ENTITY_REFERENCE_NODE: 5,\n ENTITY_NODE: 6,\n PROCESSING_INSTRUCTION_NODE: 7,\n COMMENT_NODE: 8,\n DOCUMENT_NODE: 9,\n DOCUMENT_TYPE_NODE: 10,\n DOCUMENT_FRAGMENT_NODE: 11,\n NOTATION_NODE: 12\n },\n toHex: function (color) {\n var matches = rgb.exec(color);\n if (!matches) {\n return color;\n }\n return '#' + map(matches.slice(1), function (x) {\n x = parseInt(x, 10).toString(16);\n return x.length > 1 ? x : '0' + x;\n }).join('');\n },\n encode: function (value, options) {\n var encodableChars = !options || options.entities ? entityRe : htmlRe;\n return value.replace(encodableChars, function (c) {\n var charCode = c.charCodeAt(0);\n var entity = entityTable[charCode];\n return entity ? '&' + entity + ';' : c;\n });\n },\n isBom: function (node) {\n return node && node.nodeType === 3 && /^[\\ufeff]+$/.test(node.nodeValue);\n },\n stripBom: function (text) {\n return (text || '').replace(bom, '');\n },\n stripBomNode: function (node) {\n if (Dom.isBom(node)) {\n node.parentNode.removeChild(node);\n }\n },\n insignificant: function (node) {\n var attr = node.attributes;\n return node.className == 'k-marker' || Dom.is(node, 'br') && (node.className == 'k-br' || attr._moz_dirty || attr._moz_editor_bogus_node);\n },\n tableCell: function (node) {\n return Dom.is(node, 'td') || Dom.is(node, 'th');\n },\n significantNodes: function (nodes) {\n return $.grep(nodes, function (child) {\n var name = Dom.name(child);\n if (name == 'br') {\n return false;\n } else if (Dom.insignificant(child)) {\n return false;\n } else if (Dom.emptyTextNode(child)) {\n return false;\n } else if (child.nodeType == 1 && !empty[name] && Dom.emptyNode(child)) {\n return false;\n }\n return true;\n });\n },\n emptyTextNode: function (node) {\n return node && node.nodeType == 3 && whitespaceOrBom.test(node.nodeValue);\n },\n emptyNode: function (node) {\n return node.nodeType == 1 && !Dom.significantNodes(node.childNodes).length;\n },\n name: function (node) {\n return node.nodeName.toLowerCase();\n },\n significantChildNodes: function (node) {\n return $.grep(node.childNodes, function (child) {\n return child.nodeType != 3 || !Dom.isWhitespace(child);\n });\n },\n lastTextNode: function (node) {\n var result = null;\n if (node.nodeType == 3) {\n return node;\n }\n for (var child = node.lastChild; child; child = child.previousSibling) {\n result = Dom.lastTextNode(child);\n if (result) {\n return result;\n }\n }\n return result;\n },\n is: function (node, nodeName) {\n return node && Dom.name(node) == nodeName;\n },\n isMarker: function (node) {\n return node.className == KMARKER;\n },\n isWhitespace: function (node) {\n return whitespace.test(node.nodeValue);\n },\n allWhitespaceContent: function (node) {\n var child = node.firstChild;\n while (child && Dom.isWhitespace(child)) {\n child = child.nextSibling;\n }\n return !child;\n },\n isEmptyspace: function (node) {\n return emptyspace.test(node.nodeValue);\n },\n htmlIndentSpace: function (node) {\n if (!(Dom.isDataNode(node) && Dom.isWhitespace(node))) {\n return false;\n }\n if (emptyspace.test(node.nodeValue)) {\n return true;\n }\n var sibling = function (el, direction) {\n while (el[direction]) {\n el = el[direction];\n if (Dom.significantNodes([el]).length > 0) {\n return el;\n }\n }\n };\n var parent = node.parentNode;\n var prev = sibling(node, 'previousSibling');\n var next = sibling(node, 'nextSibling');\n if (bom.test(node.nodeValue)) {\n return !!(prev || next);\n }\n if ($(parent).is('tr,tbody,thead,tfoot,table,ol,ul')) {\n return true;\n }\n if (Dom.isBlock(parent) || Dom.is(parent, 'body')) {\n var isPrevBlock = prev && Dom.isBlock(prev);\n var isNextBlock = next && Dom.isBlock(next);\n if (!next && isPrevBlock || !prev && isNextBlock || isPrevBlock && isNextBlock) {\n return true;\n }\n }\n return false;\n },\n isBlock: function (node) {\n return block[Dom.name(node)];\n },\n isSelfClosing: function (node) {\n return selfClosing[Dom.name(node)];\n },\n isEmpty: function (node) {\n return empty[Dom.name(node)];\n },\n isInline: function (node) {\n return inline[Dom.name(node)];\n },\n isBr: function (node) {\n return Dom.name(node) == 'br';\n },\n list: function (node) {\n var name = node ? Dom.name(node) : '';\n return name == 'ul' || name == 'ol' || name == 'dl';\n },\n scrollContainer: function (doc) {\n var wnd = Dom.windowFromDocument(doc), scrollContainer = (wnd.contentWindow || wnd).document || wnd.ownerDocument || wnd;\n if (scrollContainer.compatMode == 'BackCompat') {\n scrollContainer = scrollContainer.body;\n } else {\n scrollContainer = scrollContainer.scrollingElement || scrollContainer.documentElement;\n }\n return scrollContainer;\n },\n scrollTo: function (node, toStart) {\n var doc = node.ownerDocument;\n var wnd = Dom.windowFromDocument(doc);\n var windowHeight = wnd.innerHeight;\n var scrollContainer = Dom.scrollContainer(doc);\n var element, elementTop, elementHeight, marker;\n if (Dom.isDataNode(node)) {\n if (toStart) {\n marker = Dom.create(doc, 'span', { 'innerHTML': '' });\n Dom.insertBefore(marker, node);\n element = $(marker);\n } else {\n element = $(node.parentNode);\n }\n } else {\n element = $(node);\n }\n elementTop = element.offset().top;\n elementHeight = element[0].offsetHeight;\n if (toStart || !elementHeight) {\n elementHeight = parseInt(element.css('line-height'), 10) || Math.ceil(1.2 * parseInt(element.css('font-size'), 10)) || 15;\n }\n if (marker) {\n Dom.remove(marker);\n }\n if (elementHeight + elementTop > scrollContainer.scrollTop + windowHeight) {\n scrollContainer.scrollTop = elementHeight + elementTop - windowHeight;\n }\n },\n persistScrollTop: function (doc) {\n persistedScrollTop = Dom.scrollContainer(doc).scrollTop;\n },\n offset: function (target, offsetParent) {\n var result = {\n top: target.offsetTop,\n left: target.offsetLeft\n };\n var parent = target.offsetParent;\n while (parent && (!offsetParent || Dom.isAncestorOf(offsetParent, parent))) {\n result.top += parent.offsetTop;\n result.left += parent.offsetLeft;\n parent = parent.offsetParent;\n }\n return result;\n },\n restoreScrollTop: function (doc) {\n if (typeof persistedScrollTop == 'number') {\n Dom.scrollContainer(doc).scrollTop = persistedScrollTop;\n persistedScrollTop = undefined;\n }\n },\n insertAt: function (parent, newElement, position) {\n parent.insertBefore(newElement, parent.childNodes[position] || null);\n },\n insertBefore: function (newElement, referenceElement) {\n if (referenceElement.parentNode) {\n return referenceElement.parentNode.insertBefore(newElement, referenceElement);\n } else {\n return referenceElement;\n }\n },\n insertAfter: function (newElement, referenceElement) {\n return referenceElement.parentNode.insertBefore(newElement, referenceElement.nextSibling);\n },\n remove: function (node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n },\n removeChildren: function (node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n },\n removeTextSiblings: function (node) {\n var parentNode = node.parentNode;\n while (node.nextSibling && node.nextSibling.nodeType == 3) {\n parentNode.removeChild(node.nextSibling);\n }\n while (node.previousSibling && node.previousSibling.nodeType == 3) {\n parentNode.removeChild(node.previousSibling);\n }\n },\n trim: function (parent) {\n for (var i = parent.childNodes.length - 1; i >= 0; i--) {\n var node = parent.childNodes[i];\n if (Dom.isDataNode(node)) {\n if (!Dom.stripBom(node.nodeValue).length) {\n Dom.remove(node);\n }\n } else if (node.className != KMARKER) {\n Dom.trim(node);\n if (!Dom.isEmpty(node) && node.childNodes.length === 0 || Dom.isBlock(node) && Dom.allWhitespaceContent(node)) {\n Dom.remove(node);\n }\n }\n }\n return parent;\n },\n closest: function (node, tag) {\n while (node && Dom.name(node) != tag) {\n node = node.parentNode;\n }\n return node;\n },\n closestBy: function (node, condition, rootCondition) {\n while (node && !condition(node)) {\n if (rootCondition && rootCondition(node)) {\n return null;\n }\n node = node.parentNode;\n }\n return node;\n },\n sibling: function (node, direction) {\n do {\n node = node[direction];\n } while (node && node.nodeType != 1);\n return node;\n },\n next: function (node) {\n return Dom.sibling(node, 'nextSibling');\n },\n prev: function (node) {\n return Dom.sibling(node, 'previousSibling');\n },\n parentOfType: function (node, tags) {\n do {\n node = node.parentNode;\n } while (node && !Dom.ofType(node, tags));\n return node;\n },\n ofType: function (node, tags) {\n return $.inArray(Dom.name(node), tags) >= 0;\n },\n changeTag: function (referenceElement, tagName, skipAttributes) {\n var newElement = Dom.create(referenceElement.ownerDocument, tagName), attributes = referenceElement.attributes, i, len, name, value, attribute;\n if (!skipAttributes) {\n for (i = 0, len = attributes.length; i < len; i++) {\n attribute = attributes[i];\n if (attribute.specified) {\n name = attribute.nodeName;\n value = attribute.nodeValue;\n if (name == CLASS) {\n newElement.className = value;\n } else if (name == STYLE) {\n newElement.style.cssText = referenceElement.style.cssText;\n } else {\n newElement.setAttribute(name, value);\n }\n }\n }\n }\n while (referenceElement.firstChild) {\n newElement.appendChild(referenceElement.firstChild);\n }\n Dom.insertBefore(newElement, referenceElement);\n Dom.remove(referenceElement);\n return newElement;\n },\n editableParent: function (node) {\n while (node && (node.nodeType == 3 || node.contentEditable !== 'true')) {\n node = node.parentNode;\n }\n return node;\n },\n wrap: function (node, wrapper) {\n Dom.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n return wrapper;\n },\n unwrap: function (node) {\n var parent = node.parentNode;\n while (node.firstChild) {\n parent.insertBefore(node.firstChild, node);\n }\n parent.removeChild(node);\n },\n wrapper: function (node) {\n var wrapper = Dom.closestBy(node, function (el) {\n return el.parentNode && Dom.significantNodes(el.parentNode.childNodes).length > 1;\n });\n return $(wrapper).is('body,.k-editor') ? undefined : wrapper;\n },\n create: function (document, tagName, attributes) {\n return Dom.attr(document.createElement(tagName), attributes);\n },\n createEmptyNode: function (document, tagName, attributes) {\n var node = Dom.attr(document.createElement(tagName), attributes);\n node.innerHTML = '\\uFEFF';\n return node;\n },\n attr: function (element, attributes) {\n attributes = extend({}, attributes);\n if (attributes && STYLE in attributes) {\n Dom.style(element, attributes.style);\n delete attributes.style;\n }\n for (var attr in attributes) {\n if (attributes[attr] === null) {\n element.removeAttribute(attr);\n delete attributes[attr];\n } else if (attr == 'className') {\n element[attr] = attributes[attr];\n }\n }\n return extend(element, attributes);\n },\n mergeAttributes: function (origin, target) {\n if (!origin.attributes.length) {\n return;\n }\n $.each(origin.attributes, function () {\n if (this.name !== 'contenteditable') {\n $(target).attr(this.name, this.value);\n }\n });\n },\n style: function (node, value) {\n $(node).css(value || {});\n },\n unstyle: function (node, value) {\n for (var key in value) {\n if (key == FLOAT) {\n key = kendo.support.cssFloat ? CSSFLOAT : STYLEFLOAT;\n }\n node.style[key] = '';\n }\n if (node.style.cssText === '') {\n node.removeAttribute(STYLE);\n }\n },\n inlineStyle: function (body, name, attributes) {\n var span = $(Dom.create(body.ownerDocument, name, attributes)), style;\n body.appendChild(span[0]);\n style = map(cssAttributes, function (value) {\n if (browser.msie && value == 'line-height' && span.css(value) == '1px') {\n return 'line-height:1.5';\n } else {\n return value + ':' + span.css(value);\n }\n }).join(';');\n span.remove();\n return style;\n },\n getEffectiveBackground: function (element) {\n var backgroundStyle = element.css('background-color') || '';\n if (backgroundStyle.indexOf('rgba(0, 0, 0, 0') < 0 && backgroundStyle !== 'transparent') {\n return backgroundStyle;\n } else if (element[0].tagName.toLowerCase() === 'html') {\n return 'Window';\n } else {\n return Dom.getEffectiveBackground(element.parent());\n }\n },\n innerText: function (node) {\n var text = node.innerHTML;\n text = text.replace(/<!--(.|\\s)*?-->/gi, '');\n text = text.replace(/<\\/?[^>]+?\\/?>/gm, '');\n return text;\n },\n removeClass: function (node, classNames) {\n var className = ' ' + node.className + ' ', classes = classNames.split(' '), i, len;\n for (i = 0, len = classes.length; i < len; i++) {\n className = className.replace(' ' + classes[i] + ' ', ' ');\n }\n className = $.trim(className);\n if (className.length) {\n node.className = className;\n } else {\n node.removeAttribute(CLASS);\n }\n },\n commonAncestor: function () {\n var count = arguments.length, paths = [], minPathLength = Infinity, output = null, i, ancestors, node, first, j;\n if (!count) {\n return null;\n }\n if (count == 1) {\n return arguments[0];\n }\n for (i = 0; i < count; i++) {\n ancestors = [];\n node = arguments[i];\n while (node) {\n ancestors.push(node);\n node = node.parentNode;\n }\n paths.push(ancestors.reverse());\n minPathLength = Math.min(minPathLength, ancestors.length);\n }\n if (count == 1) {\n return paths[0][0];\n }\n for (i = 0; i < minPathLength; i++) {\n first = paths[0][i];\n for (j = 1; j < count; j++) {\n if (first != paths[j][i]) {\n return output;\n }\n }\n output = first;\n }\n return output;\n },\n closestSplittableParent: function (nodes) {\n var result;\n if (nodes.length == 1) {\n result = Dom.parentOfType(nodes[0], [\n 'ul',\n 'ol'\n ]);\n } else {\n result = Dom.commonAncestor.apply(null, nodes);\n }\n if (!result) {\n result = Dom.parentOfType(nodes[0], [\n 'p',\n 'td'\n ]) || nodes[0].ownerDocument.body;\n }\n if (Dom.isInline(result)) {\n result = Dom.blockParentOrBody(result);\n }\n var editableParents = map(nodes, Dom.editableParent);\n var editableAncestor = Dom.commonAncestor(editableParents)[0];\n if ($.contains(result, editableAncestor)) {\n result = editableAncestor;\n }\n return result;\n },\n closestEditable: function (node, types) {\n var closest;\n var editable = Dom.editableParent(node);\n if (Dom.ofType(node, types)) {\n closest = node;\n } else {\n closest = Dom.parentOfType(node, types);\n }\n if (closest && editable && $.contains(closest, editable)) {\n closest = editable;\n } else if (!closest && editable) {\n closest = editable;\n }\n return closest;\n },\n closestEditableOfType: function (node, types) {\n var editable = Dom.closestEditable(node, types);\n if (editable && Dom.ofType(editable, types) && !$(editable).is('.k-editor')) {\n return editable;\n }\n },\n filter: function (tagName, nodes, invert) {\n var filterFn = function (node) {\n return Dom.name(node) == tagName;\n };\n return Dom.filterBy(nodes, filterFn, invert);\n },\n filterBy: function (nodes, condition, invert) {\n var i = 0;\n var len = nodes.length;\n var result = [];\n var match;\n for (; i < len; i++) {\n match = condition(nodes[i]);\n if (match && !invert || !match && invert) {\n result.push(nodes[i]);\n }\n }\n return result;\n },\n ensureTrailingBreaks: function (node) {\n var elements = $(node).find('p,td,th');\n var length = elements.length;\n var i = 0;\n if (length) {\n for (; i < length; i++) {\n Dom.ensureTrailingBreak(elements[i]);\n }\n } else {\n Dom.ensureTrailingBreak(node);\n }\n },\n removeTrailingBreak: function (node) {\n $(node).find('br[type=_moz],.k-br').remove();\n },\n ensureTrailingBreak: function (node) {\n Dom.removeTrailingBreak(node);\n var lastChild = node.lastChild;\n var name = lastChild && Dom.name(lastChild);\n var br;\n if (!name || name != 'br' && name != 'img' || name == 'br' && lastChild.className != 'k-br') {\n br = node.ownerDocument.createElement('br');\n br.className = 'k-br';\n node.appendChild(br);\n }\n }\n };\n kendo.ui.editor.Dom = Dom;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/serializer', ['editor/dom'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo;\n var Editor = kendo.ui.editor;\n var dom = Editor.Dom;\n var extend = $.extend;\n var fontSizeMappings = 'xx-small,x-small,small,medium,large,x-large,xx-large'.split(',');\n var quoteRe = /\"/g;\n var brRe = /<br[^>]*>/i;\n var pixelRe = /^\\d+(\\.\\d*)?(px)?$/i;\n var emptyPRe = /<p>(?: )?<\\/p>/i;\n var cssDeclaration = /(\\*?[-#\\/\\*\\\\\\w]+(?:\\[[0-9a-z_-]+\\])?)\\s*:\\s*((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/g;\n var sizzleAttr = /^sizzle-\\d+/i;\n var scriptAttr = /^k-script-/i;\n var onerrorRe = /\\s*onerror\\s*=\\s*(?:'|\")?([^'\">\\s]*)(?:'|\")?/i;\n var br = '<br class=\"k-br\">';\n var div = document.createElement('div');\n div.innerHTML = ' <hr>';\n var supportsLeadingWhitespace = div.firstChild.nodeType === 3;\n div = null;\n var isFunction = $.isFunction;\n var TD = 'td';\n var Serializer = {\n toEditableHtml: function (html) {\n return (html || '').replace(/<!\\[CDATA\\[(.*)?\\]\\]>/g, '<!--[CDATA[$1]]-->').replace(/<(\\/?)script([^>]*)>/gi, '<$1k:script$2>').replace(/<img([^>]*)>/gi, function (match) {\n return match.replace(onerrorRe, '');\n }).replace(/(<\\/?img[^>]*>)[\\r\\n\\v\\f\\t ]+/gi, '$1').replace(/^<(table|blockquote)/i, br + '<$1').replace(/^[\\s]*( |\\u00a0)/i, '$1').replace(/<\\/(table|blockquote)>$/i, '</$1>' + br);\n },\n _toEditableImmutables: function (body) {\n var immutable = Editor.Immutables.immutable, emptyTextNode = dom.emptyTextNode, first = body.firstChild, last = body.lastChild;\n while (emptyTextNode(first)) {\n first = first.nextSibling;\n }\n while (emptyTextNode(last)) {\n last = last.previousSibling;\n }\n if (first && immutable(first)) {\n $(br).prependTo(body);\n }\n if (last && immutable(last)) {\n $(br).appendTo(body);\n }\n },\n _fillEmptyElements: function (body) {\n $(body).find('p,td').each(function () {\n var p = $(this);\n if (/^\\s*$/g.test(p.text()) && !p.find('img,input').length) {\n var node = this;\n while (node.firstChild && node.firstChild.nodeType != 3) {\n node = node.firstChild;\n }\n if (node.nodeType == 1 && !dom.empty[dom.name(node)]) {\n if (dom.is(node, 'td')) {\n node.innerHTML = kendo.ui.editor.emptyTableCellContent;\n } else {\n node.innerHTML = kendo.ui.editor.emptyElementContent;\n }\n }\n }\n });\n },\n _removeSystemElements: function (body) {\n $('.k-paste-container', body).remove();\n },\n _resetOrderedLists: function (root) {\n var ols = root.getElementsByTagName('ol'), i, ol, originalStart;\n for (i = 0; i < ols.length; i++) {\n ol = ols[i];\n originalStart = ol.getAttribute('start');\n ol.setAttribute('start', 1);\n if (originalStart) {\n ol.setAttribute('start', originalStart);\n } else {\n ol.removeAttribute(originalStart);\n }\n }\n },\n _preventScriptExecution: function (root) {\n $(root).find('*').each(function () {\n var attributes = this.attributes;\n var attribute, i, l, name;\n var attributesToRemove = [];\n for (i = 0, l = attributes.length; i < l; i++) {\n attribute = attributes[i];\n name = attribute.nodeName;\n if (attribute.specified && /^on/i.test(name)) {\n this.setAttribute('k-script-' + name, attribute.value);\n attributesToRemove.push(name);\n }\n }\n for (i = 0, l = attributesToRemove.length; i < l; i++) {\n this.removeAttribute(attributesToRemove[i]);\n }\n });\n },\n htmlToDom: function (html, root, options) {\n var browser = kendo.support.browser;\n var msie = browser.msie;\n var legacyIE = msie && browser.version < 9;\n var originalSrc = 'originalsrc';\n var originalHref = 'originalhref';\n var o = options || {};\n var immutables = o.immutables;\n html = Serializer.toEditableHtml(html);\n if (legacyIE) {\n html = '<br/>' + html;\n html = html.replace(/href\\s*=\\s*(?:'|\")?([^'\">\\s]*)(?:'|\")?/, originalHref + '=\"$1\"');\n html = html.replace(/src\\s*=\\s*(?:'|\")?([^'\">\\s]*)(?:'|\")?/, originalSrc + '=\"$1\"');\n }\n if (isFunction(o.custom)) {\n html = o.custom(html) || html;\n }\n root.innerHTML = html;\n if (immutables) {\n immutables.deserialize(root);\n }\n if (legacyIE) {\n dom.remove(root.firstChild);\n $(root).find('k\\\\:script,script,link,img,a').each(function () {\n var node = this;\n if (node[originalHref]) {\n node.setAttribute('href', node[originalHref]);\n node.removeAttribute(originalHref);\n }\n if (node[originalSrc]) {\n node.setAttribute('src', node[originalSrc]);\n node.removeAttribute(originalSrc);\n }\n });\n } else if (msie) {\n dom.normalize(root);\n Serializer._resetOrderedLists(root);\n }\n Serializer._preventScriptExecution(root);\n Serializer._fillEmptyElements(root);\n Serializer._removeSystemElements(root);\n Serializer._toEditableImmutables(root);\n $('table', root).addClass('k-table');\n return root;\n },\n domToXhtml: function (root, options) {\n var result = [];\n var immutables = options && options.immutables;\n function semanticFilter(attributes) {\n return $.grep(attributes, function (attr) {\n return attr.name != 'style';\n });\n }\n function mapStart(node, tag) {\n result.push('<' + tag);\n attr(node);\n result.push('>');\n }\n var tagMap = {\n iframe: {\n start: function (node) {\n mapStart(node, 'iframe');\n },\n end: function () {\n result.push('</iframe>');\n }\n },\n 'k:script': {\n start: function (node) {\n mapStart(node, 'script');\n },\n end: function () {\n result.push('</script>');\n },\n skipEncoding: true\n },\n span: {\n semantic: true,\n start: function (node) {\n var style = node.style;\n var attributes = specifiedAttributes(node);\n var semanticAttributes = semanticFilter(attributes);\n if (semanticAttributes.length) {\n result.push('<span');\n attr(node, semanticAttributes);\n result.push('>');\n }\n if (style.textDecoration == 'underline') {\n result.push('<u>');\n }\n var font = [];\n if (style.color) {\n font.push('color=\"' + dom.toHex(style.color) + '\"');\n }\n if (style.fontFamily) {\n font.push('face=\"' + style.fontFamily + '\"');\n }\n if (style.fontSize) {\n var size = $.inArray(style.fontSize, fontSizeMappings);\n font.push('size=\"' + size + '\"');\n }\n if (font.length) {\n result.push('<font ' + font.join(' ') + '>');\n }\n },\n end: function (node) {\n var style = node.style;\n if (style.color || style.fontFamily || style.fontSize) {\n result.push('</font>');\n }\n if (style.textDecoration == 'underline') {\n result.push('</u>');\n }\n if (semanticFilter(specifiedAttributes(node)).length) {\n result.push('</span>');\n }\n }\n },\n strong: {\n semantic: true,\n start: function (node) {\n mapStart(node, 'b');\n },\n end: function () {\n result.push('</b>');\n }\n },\n em: {\n semantic: true,\n start: function (node) {\n mapStart(node, 'i');\n },\n end: function () {\n result.push('</i>');\n }\n },\n b: {\n semantic: false,\n start: function (node) {\n mapStart(node, 'strong');\n },\n end: function () {\n result.push('</strong>');\n }\n },\n i: {\n semantic: false,\n start: function (node) {\n mapStart(node, 'em');\n },\n end: function () {\n result.push('</em>');\n }\n },\n u: {\n semantic: false,\n start: function (node) {\n result.push('<span');\n var attributes = specifiedAttributes(node);\n var style = $(attributes).filter(function (i, item) {\n return item.name == 'style';\n })[0];\n var styleObj = {\n nodeName: 'style',\n value: 'text-decoration:underline;'\n };\n if (style) {\n styleObj.value = style.value;\n if (!/text-decoration/i.test(styleObj.value)) {\n styleObj.value = 'text-decoration:underline;' + styleObj.value;\n }\n attributes.splice($.inArray(style, attributes), 1);\n }\n attributes.push(styleObj);\n attr(node, attributes);\n result.push('>');\n },\n end: function () {\n result.push('</span>');\n }\n },\n font: {\n semantic: false,\n start: function (node) {\n result.push('<span style=\"');\n var color = node.getAttribute('color');\n var size = fontSizeMappings[node.getAttribute('size')];\n var face = node.getAttribute('face');\n if (color) {\n result.push('color:');\n result.push(dom.toHex(color));\n result.push(';');\n }\n if (face) {\n result.push('font-family:');\n result.push(face);\n result.push(';');\n }\n if (size) {\n result.push('font-size:');\n result.push(size);\n result.push(';');\n }\n result.push('\">');\n },\n end: function () {\n result.push('</span>');\n }\n }\n };\n tagMap.script = tagMap['k:script'];\n options = options || {};\n if (typeof options.semantic == 'undefined') {\n options.semantic = true;\n }\n function cssProperties(cssText) {\n var trim = $.trim;\n var css = trim(cssText);\n var match;\n var property, value;\n var properties = [];\n cssDeclaration.lastIndex = 0;\n while (true) {\n match = cssDeclaration.exec(css);\n if (!match) {\n break;\n }\n property = trim(match[1].toLowerCase());\n value = trim(match[2]);\n if (property == 'font-size-adjust' || property == 'font-stretch') {\n continue;\n }\n if (property.indexOf('color') >= 0) {\n value = dom.toHex(value);\n } else if (property.indexOf('font') >= 0) {\n value = value.replace(quoteRe, '\\'');\n } else if (/\\burl\\(/g.test(value)) {\n value = value.replace(quoteRe, '');\n }\n properties.push({\n property: property,\n value: value\n });\n }\n return properties;\n }\n function styleAttr(cssText) {\n var properties = cssProperties(cssText);\n var i;\n for (i = 0; i < properties.length; i++) {\n result.push(properties[i].property);\n result.push(':');\n result.push(properties[i].value);\n result.push(';');\n }\n }\n function specifiedAttributes(node) {\n var result = [];\n var attributes = node.attributes;\n var attribute, i, l;\n var name, value, specified;\n for (i = 0, l = attributes.length; i < l; i++) {\n attribute = attributes[i];\n name = attribute.nodeName;\n value = attribute.value;\n specified = attribute.specified;\n if (name == 'value' && 'value' in node && node.value) {\n specified = true;\n } else if (name == 'type' && value == 'text') {\n specified = true;\n } else if (name == 'class' && !value) {\n specified = false;\n } else if (sizzleAttr.test(name)) {\n specified = false;\n } else if (name == 'complete') {\n specified = false;\n } else if (name == 'altHtml') {\n specified = false;\n } else if (name == 'start' && dom.is(node, 'ul')) {\n specified = false;\n } else if (name == 'start' && dom.is(node, 'ol') && value == '1') {\n specified = false;\n } else if (name.indexOf('_moz') >= 0) {\n specified = false;\n } else if (scriptAttr.test(name)) {\n specified = !!options.scripts;\n } else if (name == 'data-role' && value == 'resizable' && (dom.is(node, 'tr') || dom.is(node, 'td'))) {\n specified = false;\n }\n if (specified) {\n result.push(attribute);\n }\n }\n return result;\n }\n function attr(node, attributes) {\n var i, l, attribute, name, value;\n attributes = attributes || specifiedAttributes(node);\n if (dom.is(node, 'img')) {\n var width = node.style.width, height = node.style.height, $node = $(node);\n if (width && pixelRe.test(width)) {\n $node.attr('width', parseInt(width, 10));\n dom.unstyle(node, { width: undefined });\n }\n if (height && pixelRe.test(height)) {\n $node.attr('height', parseInt(height, 10));\n dom.unstyle(node, { height: undefined });\n }\n }\n if (!attributes.length) {\n return;\n }\n for (i = 0, l = attributes.length; i < l; i++) {\n attribute = attributes[i];\n name = attribute.nodeName;\n value = attribute.value;\n if (name == 'class' && value == 'k-table') {\n continue;\n }\n name = name.replace(scriptAttr, '');\n result.push(' ');\n result.push(name);\n result.push('=\"');\n if (name == 'style') {\n styleAttr(value || node.style.cssText);\n } else if (name == 'src' || name == 'href') {\n result.push(kendo.htmlEncode(node.getAttribute(name, 2)));\n } else {\n result.push(dom.fillAttrs[name] ? name : value);\n }\n result.push('\"');\n }\n }\n function children(node, skip, skipEncoding) {\n for (var childNode = node.firstChild; childNode; childNode = childNode.nextSibling) {\n child(childNode, skip, skipEncoding);\n }\n }\n function text(node) {\n return node.nodeValue.replace(/\\ufeff/g, '');\n }\n function isEmptyBomNode(node) {\n if (dom.isBom(node)) {\n do {\n node = node.parentNode;\n if (dom.is(node, TD) && node.childNodes.length === 1) {\n return true;\n }\n if (node.childNodes.length !== 1) {\n return false;\n }\n } while (!dom.isBlock(node));\n return true;\n }\n return false;\n }\n function child(node, skip, skipEncoding) {\n var nodeType = node.nodeType, tagName, mapper, parent, value, previous, jqNode;\n if (immutables && Editor.Immutables.immutable(node)) {\n result.push(immutables.serialize(node));\n } else if (nodeType == 1) {\n tagName = dom.name(node);\n jqNode = $(node);\n if (jqNode.hasClass('k-table-resize-handle-wrapper') || jqNode.hasClass('k-column-resize-handle-wrapper') || jqNode.hasClass('k-row-resize-handle-wrapper')) {\n return;\n }\n if (!tagName || dom.insignificant(node)) {\n return;\n }\n if (!options.scripts && (tagName == 'script' || tagName == 'k:script')) {\n return;\n }\n mapper = tagMap[tagName];\n if (mapper) {\n if (typeof mapper.semantic == 'undefined' || options.semantic ^ mapper.semantic) {\n mapper.start(node);\n children(node, false, mapper.skipEncoding);\n mapper.end(node);\n return;\n }\n }\n result.push('<');\n result.push(tagName);\n attr(node);\n if (dom.empty[tagName]) {\n result.push(' />');\n } else {\n result.push('>');\n children(node, skip || dom.is(node, 'pre'));\n result.push('</');\n result.push(tagName);\n result.push('>');\n }\n } else if (nodeType == 3) {\n if (isEmptyBomNode(node)) {\n result.push(' ');\n return;\n }\n value = text(node);\n if (!skip && supportsLeadingWhitespace) {\n parent = node.parentNode;\n previous = node.previousSibling;\n if (!previous) {\n previous = (dom.isInline(parent) ? parent : node).previousSibling;\n }\n if (!previous || previous.innerHTML === '' || dom.isBlock(previous)) {\n value = value.replace(/^[\\r\\n\\v\\f\\t ]+/, '');\n }\n value = value.replace(/ +/, ' ');\n }\n result.push(skipEncoding ? value : dom.encode(value, options));\n } else if (nodeType == 4) {\n result.push('<![CDATA[');\n result.push(node.data);\n result.push(']]>');\n } else if (nodeType == 8) {\n if (node.data.indexOf('[CDATA[') < 0) {\n result.push('<!--');\n result.push(node.data);\n result.push('-->');\n } else {\n result.push('<!');\n result.push(node.data);\n result.push('>');\n }\n }\n }\n function textOnly(root) {\n var childrenCount = root.childNodes.length;\n var textChild = childrenCount && root.firstChild.nodeType == 3;\n return textChild && (childrenCount == 1 || childrenCount == 2 && dom.insignificant(root.lastChild));\n }\n function runCustom() {\n if ($.isFunction(options.custom)) {\n result = options.custom(result) || result;\n }\n }\n if (textOnly(root)) {\n result = dom.encode(text(root.firstChild).replace(/[\\r\\n\\v\\f\\t ]+/, ' '), options);\n runCustom();\n return result;\n }\n children(root);\n result = result.join('');\n runCustom();\n if (result.replace(brRe, '').replace(emptyPRe, '') === '') {\n return '';\n }\n return result;\n }\n };\n extend(Editor, { Serializer: Serializer });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/components', ['editor/serializer'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, DropDownList = kendo.ui.DropDownList, dom = kendo.ui.editor.Dom;\n var SelectBox = DropDownList.extend({\n init: function (element, options) {\n var that = this;\n DropDownList.fn.init.call(that, element, options);\n if (kendo.support.mobileOS.ios) {\n this._initSelectOverlay();\n this.bind('dataBound', $.proxy(this._initSelectOverlay, this));\n }\n that.text(that.options.title);\n that.element.attr('title', that.options.title);\n that.wrapper.attr('title', that.options.title);\n that.bind('open', function () {\n if (that.options.autoSize) {\n var list = that.list, listWidth;\n list.css({\n whiteSpace: 'nowrap',\n width: 'auto'\n });\n listWidth = list.width();\n if (listWidth > 0) {\n listWidth += 20;\n } else {\n listWidth = that._listWidth;\n }\n list.css('width', listWidth + kendo.support.scrollbar());\n that._listWidth = listWidth;\n }\n });\n },\n options: {\n name: 'SelectBox',\n index: -1\n },\n _initSelectOverlay: function () {\n var selectBox = this;\n var value = selectBox.value();\n var view = this.dataSource.view();\n var item;\n var html = '';\n var encode = kendo.htmlEncode;\n for (var i = 0; i < view.length; i++) {\n item = view[i];\n html += '<option value=\\'' + encode(item.value) + '\\'';\n if (item.value == value) {\n html += ' selected';\n }\n html += '>' + encode(item.text) + '</option>';\n }\n var select = $('<select class=\\'k-select-overlay\\'>' + html + '</select>');\n var wrapper = $(this.element).closest('.k-widget');\n wrapper.next('.k-select-overlay').remove();\n select.insertAfter(wrapper);\n select.on('change', function () {\n selectBox.value(this.value);\n selectBox.trigger('change');\n });\n },\n value: function (value) {\n var that = this, result = DropDownList.fn.value.call(that, value);\n if (value === undefined) {\n return result;\n }\n if (!DropDownList.fn.value.call(that)) {\n that.text(that.options.title);\n }\n },\n decorate: function (body) {\n var that = this, dataSource = that.dataSource, items = dataSource.data(), i, tag, className, style;\n if (body) {\n that.list.css('background-color', dom.getEffectiveBackground($(body)));\n }\n for (i = 0; i < items.length; i++) {\n tag = items[i].tag || 'span';\n className = items[i].className;\n style = dom.inlineStyle(body, tag, { className: className });\n style = style.replace(/\"/g, '\\'');\n items[i].style = style + ';display:inline-block';\n }\n dataSource.trigger('change');\n }\n });\n kendo.ui.plugin(SelectBox);\n kendo.ui.editor.SelectBox = SelectBox;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/range', ['editor/components'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, Class = kendo.Class, extend = $.extend, Editor = kendo.ui.editor, browser = kendo.support.browser, dom = Editor.Dom, findNodeIndex = dom.findNodeIndex, isDataNode = dom.isDataNode, findClosestAncestor = dom.findClosestAncestor, getNodeLength = dom.getNodeLength, normalize = dom.normalize;\n var SelectionUtils = {\n selectionFromWindow: function (window) {\n if (!('getSelection' in window)) {\n return new W3CSelection(window.document);\n }\n return window.getSelection();\n },\n selectionFromRange: function (range) {\n var rangeDocument = RangeUtils.documentFromRange(range);\n return SelectionUtils.selectionFromDocument(rangeDocument);\n },\n selectionFromDocument: function (document) {\n return SelectionUtils.selectionFromWindow(dom.windowFromDocument(document));\n }\n };\n var W3CRange = Class.extend({\n init: function (doc) {\n $.extend(this, {\n ownerDocument: doc,\n startContainer: doc,\n endContainer: doc,\n commonAncestorContainer: doc,\n startOffset: 0,\n endOffset: 0,\n collapsed: true\n });\n },\n setStart: function (node, offset) {\n this.startContainer = node;\n this.startOffset = offset;\n updateRangeProperties(this);\n fixIvalidRange(this, true);\n },\n setEnd: function (node, offset) {\n this.endContainer = node;\n this.endOffset = offset;\n updateRangeProperties(this);\n fixIvalidRange(this, false);\n },\n setStartBefore: function (node) {\n this.setStart(node.parentNode, findNodeIndex(node));\n },\n setStartAfter: function (node) {\n this.setStart(node.parentNode, findNodeIndex(node) + 1);\n },\n setEndBefore: function (node) {\n this.setEnd(node.parentNode, findNodeIndex(node));\n },\n setEndAfter: function (node) {\n this.setEnd(node.parentNode, findNodeIndex(node) + 1);\n },\n selectNode: function (node) {\n this.setStartBefore(node);\n this.setEndAfter(node);\n },\n selectNodeContents: function (node) {\n this.setStart(node, 0);\n this.setEnd(node, node[node.nodeType === 1 ? 'childNodes' : 'nodeValue'].length);\n },\n collapse: function (toStart) {\n var that = this;\n if (toStart) {\n that.setEnd(that.startContainer, that.startOffset);\n } else {\n that.setStart(that.endContainer, that.endOffset);\n }\n },\n deleteContents: function () {\n var that = this, range = that.cloneRange();\n if (that.startContainer != that.commonAncestorContainer) {\n that.setStartAfter(findClosestAncestor(that.commonAncestorContainer, that.startContainer));\n }\n that.collapse(true);\n (function deleteSubtree(iterator) {\n while (iterator.next()) {\n if (iterator.hasPartialSubtree()) {\n deleteSubtree(iterator.getSubtreeIterator());\n } else {\n iterator.remove();\n }\n }\n }(new RangeIterator(range)));\n },\n cloneContents: function () {\n var document = RangeUtils.documentFromRange(this);\n return function cloneSubtree(iterator) {\n var node, frag = document.createDocumentFragment();\n while (node = iterator.next()) {\n node = node.cloneNode(!iterator.hasPartialSubtree());\n if (iterator.hasPartialSubtree()) {\n node.appendChild(cloneSubtree(iterator.getSubtreeIterator()));\n }\n frag.appendChild(node);\n }\n return frag;\n }(new RangeIterator(this));\n },\n extractContents: function () {\n var that = this, range = that.cloneRange();\n if (that.startContainer != that.commonAncestorContainer) {\n that.setStartAfter(findClosestAncestor(that.commonAncestorContainer, that.startContainer));\n }\n that.collapse(true);\n var document = RangeUtils.documentFromRange(that);\n return function extractSubtree(iterator) {\n var node, frag = document.createDocumentFragment();\n while (node = iterator.next()) {\n if (iterator.hasPartialSubtree()) {\n node = node.cloneNode(false);\n node.appendChild(extractSubtree(iterator.getSubtreeIterator()));\n } else {\n iterator.remove(that.originalRange);\n }\n frag.appendChild(node);\n }\n return frag;\n }(new RangeIterator(range));\n },\n insertNode: function (node) {\n var that = this;\n if (isDataNode(that.startContainer)) {\n if (that.startOffset != that.startContainer.nodeValue.length) {\n dom.splitDataNode(that.startContainer, that.startOffset);\n }\n dom.insertAfter(node, that.startContainer);\n } else {\n dom.insertAt(that.startContainer, node, that.startOffset);\n }\n that.setStart(that.startContainer, that.startOffset);\n },\n cloneRange: function () {\n return $.extend(new W3CRange(this.ownerDocument), {\n startContainer: this.startContainer,\n endContainer: this.endContainer,\n commonAncestorContainer: this.commonAncestorContainer,\n startOffset: this.startOffset,\n endOffset: this.endOffset,\n collapsed: this.collapsed,\n originalRange: this\n });\n },\n toString: function () {\n var startNodeName = this.startContainer.nodeName, endNodeName = this.endContainer.nodeName;\n return [\n startNodeName == '#text' ? this.startContainer.nodeValue : startNodeName,\n '(',\n this.startOffset,\n ') : ',\n endNodeName == '#text' ? this.endContainer.nodeValue : endNodeName,\n '(',\n this.endOffset,\n ')'\n ].join('');\n }\n });\n W3CRange.fromNode = function (node) {\n return new W3CRange(node.ownerDocument);\n };\n function compareBoundaries(start, end, startOffset, endOffset) {\n if (start == end) {\n return endOffset - startOffset;\n }\n var container = end;\n while (container && container.parentNode != start) {\n container = container.parentNode;\n }\n if (container) {\n return findNodeIndex(container) - startOffset;\n }\n container = start;\n while (container && container.parentNode != end) {\n container = container.parentNode;\n }\n if (container) {\n return endOffset - findNodeIndex(container) - 1;\n }\n var root = dom.commonAncestor(start, end);\n var startAncestor = start;\n while (startAncestor && startAncestor.parentNode != root) {\n startAncestor = startAncestor.parentNode;\n }\n if (!startAncestor) {\n startAncestor = root;\n }\n var endAncestor = end;\n while (endAncestor && endAncestor.parentNode != root) {\n endAncestor = endAncestor.parentNode;\n }\n if (!endAncestor) {\n endAncestor = root;\n }\n if (startAncestor == endAncestor) {\n return 0;\n }\n return findNodeIndex(endAncestor) - findNodeIndex(startAncestor);\n }\n function fixIvalidRange(range, toStart) {\n function isInvalidRange(range) {\n try {\n return compareBoundaries(range.startContainer, range.endContainer, range.startOffset, range.endOffset) < 0;\n } catch (ex) {\n return true;\n }\n }\n if (isInvalidRange(range)) {\n if (toStart) {\n range.commonAncestorContainer = range.endContainer = range.startContainer;\n range.endOffset = range.startOffset;\n } else {\n range.commonAncestorContainer = range.startContainer = range.endContainer;\n range.startOffset = range.endOffset;\n }\n range.collapsed = true;\n }\n }\n function updateRangeProperties(range) {\n range.collapsed = range.startContainer == range.endContainer && range.startOffset == range.endOffset;\n var node = range.startContainer;\n while (node && node != range.endContainer && !dom.isAncestorOf(node, range.endContainer)) {\n node = node.parentNode;\n }\n range.commonAncestorContainer = node;\n }\n var RangeIterator = Class.extend({\n init: function (range) {\n $.extend(this, {\n range: range,\n _current: null,\n _next: null,\n _end: null\n });\n if (range.collapsed) {\n return;\n }\n var root = range.commonAncestorContainer;\n this._next = range.startContainer == root && !isDataNode(range.startContainer) ? range.startContainer.childNodes[range.startOffset] : findClosestAncestor(root, range.startContainer);\n this._end = range.endContainer == root && !isDataNode(range.endContainer) ? range.endContainer.childNodes[range.endOffset] : findClosestAncestor(root, range.endContainer).nextSibling;\n },\n hasNext: function () {\n return !!this._next;\n },\n next: function () {\n var that = this, current = that._current = that._next;\n that._next = that._current && that._current.nextSibling != that._end ? that._current.nextSibling : null;\n if (isDataNode(that._current)) {\n if (that.range.endContainer == that._current) {\n current = current.cloneNode(true);\n current.deleteData(that.range.endOffset, current.length - that.range.endOffset);\n }\n if (that.range.startContainer == that._current) {\n current = current.cloneNode(true);\n current.deleteData(0, that.range.startOffset);\n }\n }\n return current;\n },\n traverse: function (callback) {\n var that = this, current;\n function next() {\n that._current = that._next;\n that._next = that._current && that._current.nextSibling != that._end ? that._current.nextSibling : null;\n return that._current;\n }\n while (current = next()) {\n if (that.hasPartialSubtree()) {\n that.getSubtreeIterator().traverse(callback);\n } else {\n callback(current);\n }\n }\n return current;\n },\n remove: function (originalRange) {\n var that = this, inStartContainer = that.range.startContainer == that._current, inEndContainer = that.range.endContainer == that._current, start, end, delta;\n if (isDataNode(that._current) && (inStartContainer || inEndContainer)) {\n start = inStartContainer ? that.range.startOffset : 0;\n end = inEndContainer ? that.range.endOffset : that._current.length;\n delta = end - start;\n if (originalRange && (inStartContainer || inEndContainer)) {\n if (that._current == originalRange.startContainer && start <= originalRange.startOffset) {\n originalRange.startOffset -= delta;\n }\n if (that._current == originalRange.endContainer && end <= originalRange.endOffset) {\n originalRange.endOffset -= delta;\n }\n }\n that._current.deleteData(start, delta);\n } else {\n var parent = that._current.parentNode;\n if (originalRange && (that.range.startContainer == parent || that.range.endContainer == parent)) {\n var nodeIndex = findNodeIndex(that._current);\n if (parent == originalRange.startContainer && nodeIndex <= originalRange.startOffset) {\n originalRange.startOffset -= 1;\n }\n if (parent == originalRange.endContainer && nodeIndex < originalRange.endOffset) {\n originalRange.endOffset -= 1;\n }\n }\n dom.remove(that._current);\n }\n },\n hasPartialSubtree: function () {\n return !isDataNode(this._current) && (dom.isAncestorOrSelf(this._current, this.range.startContainer) || dom.isAncestorOrSelf(this._current, this.range.endContainer));\n },\n getSubtreeIterator: function () {\n return new RangeIterator(this.getSubRange());\n },\n getSubRange: function () {\n var that = this, subRange = that.range.cloneRange();\n subRange.selectNodeContents(that._current);\n if (dom.isAncestorOrSelf(that._current, that.range.startContainer)) {\n subRange.setStart(that.range.startContainer, that.range.startOffset);\n }\n if (dom.isAncestorOrSelf(that._current, that.range.endContainer)) {\n subRange.setEnd(that.range.endContainer, that.range.endOffset);\n }\n return subRange;\n }\n });\n var W3CSelection = Class.extend({\n init: function (doc) {\n this.ownerDocument = doc;\n this.rangeCount = 1;\n },\n addRange: function (range) {\n var textRange = this.ownerDocument.body.createTextRange();\n adoptContainer(textRange, range, false);\n adoptContainer(textRange, range, true);\n textRange.select();\n },\n removeAllRanges: function () {\n var selection = this.ownerDocument.selection;\n if (selection.type != 'None') {\n selection.empty();\n }\n },\n getRangeAt: function () {\n var textRange, range = new W3CRange(this.ownerDocument), selection = this.ownerDocument.selection, element, commonAncestor;\n try {\n textRange = selection.createRange();\n element = textRange.item ? textRange.item(0) : textRange.parentElement();\n if (element.ownerDocument != this.ownerDocument) {\n return range;\n }\n } catch (ex) {\n return range;\n }\n if (selection.type == 'Control') {\n range.selectNode(textRange.item(0));\n } else {\n commonAncestor = textRangeContainer(textRange);\n adoptEndPoint(textRange, range, commonAncestor, true);\n adoptEndPoint(textRange, range, commonAncestor, false);\n if (range.startContainer.nodeType == 9) {\n range.setStart(range.endContainer, range.startOffset);\n }\n if (range.endContainer.nodeType == 9) {\n range.setEnd(range.startContainer, range.endOffset);\n }\n if (textRange.compareEndPoints('StartToEnd', textRange) === 0) {\n range.collapse(false);\n }\n var startContainer = range.startContainer, endContainer = range.endContainer, body = this.ownerDocument.body;\n if (!range.collapsed && range.startOffset === 0 && range.endOffset == getNodeLength(range.endContainer) && !(startContainer == endContainer && isDataNode(startContainer) && startContainer.parentNode == body)) {\n var movedStart = false, movedEnd = false;\n while (findNodeIndex(startContainer) === 0 && startContainer == startContainer.parentNode.firstChild && startContainer != body) {\n startContainer = startContainer.parentNode;\n movedStart = true;\n }\n while (findNodeIndex(endContainer) == getNodeLength(endContainer.parentNode) - 1 && endContainer == endContainer.parentNode.lastChild && endContainer != body) {\n endContainer = endContainer.parentNode;\n movedEnd = true;\n }\n if (startContainer == body && endContainer == body && movedStart && movedEnd) {\n range.setStart(startContainer, 0);\n range.setEnd(endContainer, getNodeLength(body));\n }\n }\n }\n return range;\n }\n });\n function textRangeContainer(textRange) {\n var left = textRange.duplicate(), right = textRange.duplicate();\n left.collapse(true);\n right.collapse(false);\n return dom.commonAncestor(textRange.parentElement(), left.parentElement(), right.parentElement());\n }\n function adoptContainer(textRange, range, start) {\n var container = range[start ? 'startContainer' : 'endContainer'], offset = range[start ? 'startOffset' : 'endOffset'], textOffset = 0, isData = isDataNode(container), anchorNode = isData ? container : container.childNodes[offset] || null, anchorParent = isData ? container.parentNode : container, doc = range.ownerDocument, cursor = doc.body.createTextRange(), cursorNode;\n if (container.nodeType == 3 || container.nodeType == 4) {\n textOffset = offset;\n }\n if (!anchorParent) {\n anchorParent = doc.body;\n }\n if (anchorParent.nodeName.toLowerCase() == 'img') {\n cursor.moveToElementText(anchorParent);\n cursor.collapse(false);\n textRange.setEndPoint(start ? 'StartToStart' : 'EndToStart', cursor);\n } else {\n cursorNode = anchorParent.insertBefore(dom.create(doc, 'a'), anchorNode);\n cursor.moveToElementText(cursorNode);\n dom.remove(cursorNode);\n cursor[start ? 'moveStart' : 'moveEnd']('character', textOffset);\n cursor.collapse(false);\n textRange.setEndPoint(start ? 'StartToStart' : 'EndToStart', cursor);\n }\n }\n function adoptEndPoint(textRange, range, commonAncestor, start) {\n var cursorNode = dom.create(range.ownerDocument, 'a'), cursor = textRange.duplicate(), comparison = start ? 'StartToStart' : 'StartToEnd', result, parent, target, previous, next, args, index, appended = false;\n cursorNode.innerHTML = '\\uFEFF';\n cursor.collapse(start);\n parent = cursor.parentElement();\n if (!dom.isAncestorOrSelf(commonAncestor, parent)) {\n parent = commonAncestor;\n }\n do {\n if (appended) {\n parent.insertBefore(cursorNode, cursorNode.previousSibling);\n } else {\n parent.appendChild(cursorNode);\n appended = true;\n }\n cursor.moveToElementText(cursorNode);\n } while ((result = cursor.compareEndPoints(comparison, textRange)) > 0 && cursorNode.previousSibling);\n target = cursorNode.nextSibling;\n if (result == -1 && isDataNode(target)) {\n cursor.setEndPoint(start ? 'EndToStart' : 'EndToEnd', textRange);\n dom.remove(cursorNode);\n args = [\n target,\n cursor.text.length\n ];\n } else {\n previous = !start && cursorNode.previousSibling;\n next = start && cursorNode.nextSibling;\n if (isDataNode(next)) {\n args = [\n next,\n 0\n ];\n } else if (isDataNode(previous)) {\n args = [\n previous,\n previous.length\n ];\n } else {\n index = findNodeIndex(cursorNode);\n if (parent.nextSibling && index == parent.childNodes.length - 1) {\n args = [\n parent.nextSibling,\n 0\n ];\n } else {\n args = [\n parent,\n index\n ];\n }\n }\n dom.remove(cursorNode);\n }\n range[start ? 'setStart' : 'setEnd'].apply(range, args);\n }\n var RangeEnumerator = Class.extend({\n init: function (range) {\n this.enumerate = function () {\n var nodes = [];\n function visit(node) {\n if (dom.is(node, 'img') || node.nodeType == 3 && (!dom.isEmptyspace(node) || node.nodeValue == '\\uFEFF')) {\n nodes.push(node);\n } else {\n node = node.firstChild;\n while (node) {\n visit(node);\n node = node.nextSibling;\n }\n }\n }\n new RangeIterator(range).traverse(visit);\n return nodes;\n };\n }\n });\n var ImmutablesRangeIterator = RangeIterator.extend({\n hasPartialSubtree: function () {\n var immutable = Editor.Immutables && Editor.Immutables.immutable;\n return immutable && !immutable(this._current) && RangeIterator.fn.hasPartialSubtree.call(this);\n },\n getSubtreeIterator: function () {\n return new ImmutablesRangeIterator(this.getSubRange());\n }\n });\n var ImmutablesRangeEnumerator = Class.extend({\n init: function (range) {\n this.enumerate = function () {\n var nodes = [];\n var immutable = Editor.Immutables && Editor.Immutables.immutable;\n function visit(node) {\n if (immutable && !immutable(node)) {\n if (dom.is(node, 'img') || node.nodeType == 3 && (!dom.isEmptyspace(node) || node.nodeValue == '\\uFEFF')) {\n nodes.push(node);\n } else {\n node = node.firstChild;\n while (node) {\n visit(node);\n node = node.nextSibling;\n }\n }\n }\n }\n new ImmutablesRangeIterator(range).traverse(visit);\n return nodes;\n };\n }\n });\n var RestorePoint = Class.extend({\n init: function (range, body, options) {\n var that = this;\n that.range = range;\n that.rootNode = RangeUtils.documentFromRange(range);\n that.body = body || that.getEditable(range);\n if (dom.name(that.body) != 'body') {\n that.rootNode = that.body;\n }\n that.startContainer = that.nodeToPath(range.startContainer);\n that.endContainer = that.nodeToPath(range.endContainer);\n that.startOffset = that.offset(range.startContainer, range.startOffset);\n that.endOffset = that.offset(range.endContainer, range.endOffset);\n that.immutables = options && options.immutables;\n if (that.immutables) {\n that.serializedImmutables = Editor.Immutables.removeImmutables(that.body);\n }\n that.html = that.body.innerHTML;\n if (that.immutables && !that.serializedImmutables.empty) {\n Editor.Immutables.restoreImmutables(that.body, that.serializedImmutables);\n }\n },\n index: function (node) {\n var result = 0, lastType = node.nodeType;\n while (node = node.previousSibling) {\n var nodeType = node.nodeType;\n if (nodeType != 3 || lastType != nodeType) {\n result++;\n }\n lastType = nodeType;\n }\n return result;\n },\n getEditable: function (range) {\n var root = range.commonAncestorContainer;\n while (root && (root.nodeType == 3 || root.attributes && (!root.attributes.contentEditable || root.attributes.contentEditable.nodeValue.toLowerCase() == 'false'))) {\n root = root.parentNode;\n }\n return root;\n },\n restoreHtml: function () {\n var that = this;\n dom.removeChildren(that.body);\n that.body.innerHTML = that.html;\n if (that.immutables && !that.serializedImmutables.empty) {\n Editor.Immutables.restoreImmutables(that.body, that.serializedImmutables);\n }\n },\n offset: function (node, value) {\n if (node.nodeType == 3) {\n while ((node = node.previousSibling) && node.nodeType == 3) {\n value += node.nodeValue.length;\n }\n }\n return value;\n },\n nodeToPath: function (node) {\n var path = [];\n while (node != this.rootNode) {\n path.push(this.index(node));\n node = node.parentNode;\n }\n return path;\n },\n toRangePoint: function (range, start, path, denormalizedOffset) {\n var node = this.rootNode, length = path.length, offset = denormalizedOffset;\n while (length--) {\n node = node.childNodes[path[length]];\n }\n while (node && node.nodeType == 3 && node.nodeValue.length < offset) {\n offset -= node.nodeValue.length;\n node = node.nextSibling;\n }\n if (node && offset >= 0) {\n range[start ? 'setStart' : 'setEnd'](node, offset);\n }\n },\n toRange: function () {\n var that = this, result = that.range.cloneRange();\n that.toRangePoint(result, true, that.startContainer, that.startOffset);\n that.toRangePoint(result, false, that.endContainer, that.endOffset);\n return result;\n }\n });\n var Marker = Class.extend({\n init: function () {\n this.caret = null;\n },\n addCaret: function (range) {\n var that = this;\n var caret = that.caret = dom.create(RangeUtils.documentFromRange(range), 'span', { className: 'k-marker' });\n range.insertNode(caret);\n dom.stripBomNode(caret.previousSibling);\n dom.stripBomNode(caret.nextSibling);\n range.selectNode(caret);\n return caret;\n },\n removeCaret: function (range) {\n var that = this, previous = that.caret.previousSibling, startOffset = 0;\n if (previous) {\n startOffset = isDataNode(previous) ? previous.nodeValue.length : findNodeIndex(previous);\n }\n var container = that.caret.parentNode;\n var containerIndex = previous ? findNodeIndex(previous) : 0;\n dom.remove(that.caret);\n normalize(container);\n var node = container.childNodes[containerIndex];\n if (isDataNode(node)) {\n range.setStart(node, startOffset);\n } else if (node) {\n var textNode = dom.lastTextNode(node);\n if (textNode) {\n range.setStart(textNode, textNode.nodeValue.length);\n } else {\n range[previous ? 'setStartAfter' : 'setStartBefore'](node);\n }\n } else {\n if (!browser.msie && !container.innerHTML) {\n container.innerHTML = '<br _moz_dirty=\"\" />';\n }\n range.selectNodeContents(container);\n }\n range.collapse(true);\n },\n add: function (range, expand) {\n var that = this;\n var collapsed = range.collapsed && !RangeUtils.isExpandable(range);\n var doc = RangeUtils.documentFromRange(range);\n if (expand && range.collapsed) {\n that.addCaret(range);\n range = RangeUtils.expand(range);\n }\n var rangeBoundary = range.cloneRange();\n rangeBoundary.collapse(false);\n that.end = dom.create(doc, 'span', { className: 'k-marker' });\n rangeBoundary.insertNode(that.end);\n rangeBoundary = range.cloneRange();\n rangeBoundary.collapse(true);\n that.start = that.end.cloneNode(true);\n rangeBoundary.insertNode(that.start);\n that._removeDeadMarkers(that.start, that.end);\n if (collapsed) {\n var bom = doc.createTextNode('\\uFEFF');\n dom.insertAfter(bom.cloneNode(), that.start);\n dom.insertBefore(bom, that.end);\n }\n normalize(range.commonAncestorContainer);\n range.setStartBefore(that.start);\n range.setEndAfter(that.end);\n return range;\n },\n _removeDeadMarkers: function (start, end) {\n if (start.previousSibling && start.previousSibling.nodeValue == '\\uFEFF') {\n dom.remove(start.previousSibling);\n }\n if (end.nextSibling && end.nextSibling.nodeValue == '\\uFEFF') {\n dom.remove(end.nextSibling);\n }\n },\n _normalizedIndex: function (node) {\n var index = findNodeIndex(node);\n var pointer = node;\n while (pointer.previousSibling) {\n if (pointer.nodeType == 3 && pointer.previousSibling.nodeType == 3) {\n index--;\n }\n pointer = pointer.previousSibling;\n }\n return index;\n },\n remove: function (range) {\n var that = this, start = that.start, end = that.end, shouldNormalizeStart, shouldNormalizeEnd, shouldNormalize;\n normalize(range.commonAncestorContainer);\n while (!start.nextSibling && start.parentNode) {\n start = start.parentNode;\n }\n while (!end.previousSibling && end.parentNode) {\n end = end.parentNode;\n }\n shouldNormalizeStart = start.previousSibling && start.previousSibling.nodeType == 3 && (start.nextSibling && start.nextSibling.nodeType == 3);\n shouldNormalizeEnd = end.previousSibling && end.previousSibling.nodeType == 3 && (end.nextSibling && end.nextSibling.nodeType == 3);\n shouldNormalize = shouldNormalizeStart && shouldNormalizeEnd;\n start = start.nextSibling;\n end = end.previousSibling;\n var isBomSelected = start === end && dom.isBom(start);\n if (isBomSelected && start.length > 1) {\n start.nodeValue = start.nodeValue.charAt(0);\n }\n var collapsed = isBomSelected;\n var collapsedToStart = false;\n if (start == that.end) {\n collapsedToStart = !!that.start.previousSibling;\n start = end = that.start.previousSibling || that.end.nextSibling;\n collapsed = true;\n }\n dom.remove(that.start);\n dom.remove(that.end);\n if (!start || !end) {\n range.selectNodeContents(range.commonAncestorContainer);\n range.collapse(true);\n return;\n }\n var startOffset = collapsed ? isDataNode(start) ? start.nodeValue.length : start.childNodes.length : 0;\n var endOffset = isDataNode(end) ? end.nodeValue.length : end.childNodes.length;\n if (start.nodeType == 3) {\n while (start.previousSibling && start.previousSibling.nodeType == 3) {\n start = start.previousSibling;\n startOffset += start.nodeValue.length;\n }\n }\n if (end.nodeType == 3) {\n while (end.previousSibling && end.previousSibling.nodeType == 3) {\n end = end.previousSibling;\n endOffset += end.nodeValue.length;\n }\n }\n var startParent = start.parentNode;\n var endParent = end.parentNode;\n var startIndex = this._normalizedIndex(start);\n var endIndex = this._normalizedIndex(end);\n normalize(startParent);\n if (start.nodeType == 3) {\n start = startParent.childNodes[startIndex];\n }\n normalize(endParent);\n if (end.nodeType == 3) {\n end = endParent.childNodes[endIndex];\n }\n if (collapsed) {\n if (start.nodeType == 3) {\n range.setStart(start, startOffset);\n } else {\n range[collapsedToStart ? 'setStartAfter' : 'setStartBefore'](start);\n }\n range.collapse(true);\n } else {\n if (start.nodeType == 3) {\n range.setStart(start, startOffset);\n } else {\n range.setStartBefore(start);\n }\n if (end.nodeType == 3) {\n range.setEnd(end, endOffset);\n } else {\n range.setEndAfter(end);\n }\n }\n if (that.caret) {\n that.removeCaret(range);\n }\n }\n });\n var boundary = /[\\u0009-\\u000d]|\\u0020|\\u00a0|\\ufeff|\\.|,|;|:|!|\\(|\\)|\\?/;\n var RangeUtils = {\n nodes: function (range) {\n var nodes = RangeUtils.textNodes(range);\n if (!nodes.length) {\n range.selectNodeContents(range.commonAncestorContainer);\n nodes = RangeUtils.textNodes(range);\n if (!nodes.length) {\n nodes = dom.significantChildNodes(range.commonAncestorContainer);\n }\n }\n return nodes;\n },\n textNodes: function (range) {\n return new RangeEnumerator(range).enumerate();\n },\n editableTextNodes: function (range) {\n var nodes = [], immutableParent = Editor.Immutables && Editor.Immutables.immutableParent;\n if (immutableParent && !immutableParent(range.commonAncestorContainer)) {\n nodes = new ImmutablesRangeEnumerator(range).enumerate();\n }\n return nodes;\n },\n documentFromRange: function (range) {\n var startContainer = range.startContainer;\n return startContainer.nodeType == 9 ? startContainer : startContainer.ownerDocument;\n },\n createRange: function (document) {\n if (browser.msie && browser.version < 9) {\n return new W3CRange(document);\n }\n return document.createRange();\n },\n selectRange: function (range) {\n var image = RangeUtils.image(range);\n if (image) {\n range.setStartAfter(image);\n range.setEndAfter(image);\n }\n var selection = SelectionUtils.selectionFromRange(range);\n selection.removeAllRanges();\n selection.addRange(range);\n },\n stringify: function (range) {\n return kendo.format('{0}:{1} - {2}:{3}', dom.name(range.startContainer), range.startOffset, dom.name(range.endContainer), range.endOffset);\n },\n split: function (range, node, trim) {\n function partition(start) {\n var partitionRange = range.cloneRange();\n partitionRange.collapse(start);\n partitionRange[start ? 'setStartBefore' : 'setEndAfter'](node);\n var contents = partitionRange.extractContents();\n if (trim) {\n contents = dom.trim(contents);\n }\n dom[start ? 'insertBefore' : 'insertAfter'](contents, node);\n }\n partition(true);\n partition(false);\n },\n mapAll: function (range, map) {\n var nodes = [];\n new RangeIterator(range).traverse(function (node) {\n var mapped = map(node);\n if (mapped && $.inArray(mapped, nodes) < 0) {\n nodes.push(mapped);\n }\n });\n return nodes;\n },\n getAll: function (range, predicate) {\n var selector = predicate;\n if (typeof predicate == 'string') {\n predicate = function (node) {\n return dom.is(node, selector);\n };\n }\n return RangeUtils.mapAll(range, function (node) {\n if (predicate(node)) {\n return node;\n }\n });\n },\n getMarkers: function (range) {\n return RangeUtils.getAll(range, function (node) {\n return node.className == 'k-marker';\n });\n },\n image: function (range) {\n var nodes = RangeUtils.getAll(range, 'img');\n if (nodes.length == 1) {\n return nodes[0];\n }\n },\n isStartOf: function (originalRange, node) {\n if (originalRange.startOffset !== 0) {\n return false;\n }\n var range = originalRange.cloneRange();\n while (range.startOffset === 0 && range.startContainer != node) {\n var index = dom.findNodeIndex(range.startContainer);\n var parent = range.startContainer.parentNode;\n while (index > 0 && parent[index - 1] && dom.insignificant(parent[index - 1])) {\n index--;\n }\n range.setStart(parent, index);\n }\n return range.startOffset === 0 && range.startContainer == node;\n },\n isEndOf: function (originalRange, node) {\n var range = originalRange.cloneRange();\n range.collapse(false);\n var start = range.startContainer;\n if (dom.isDataNode(start) && range.startOffset == dom.getNodeLength(start)) {\n range.setStart(start.parentNode, dom.findNodeIndex(start) + 1);\n range.collapse(true);\n }\n range.setEnd(node, dom.getNodeLength(node));\n var nodes = [];\n function visit(node) {\n if (!dom.insignificant(node) && !(dom.isDataNode(node) && /^[\\ufeff]*$/.test(node.nodeValue))) {\n nodes.push(node);\n }\n }\n new RangeIterator(range).traverse(visit);\n return !nodes.length;\n },\n wrapSelectedElements: function (range) {\n var startEditable = dom.editableParent(range.startContainer);\n var endEditable = dom.editableParent(range.endContainer);\n while (range.startOffset === 0 && range.startContainer != startEditable) {\n range.setStart(range.startContainer.parentNode, dom.findNodeIndex(range.startContainer));\n }\n function isEnd(offset, container) {\n var length = dom.getNodeLength(container);\n if (offset == length) {\n return true;\n }\n for (var i = offset; i < length; i++) {\n if (!dom.insignificant(container.childNodes[i])) {\n return false;\n }\n }\n return true;\n }\n while (isEnd(range.endOffset, range.endContainer) && range.endContainer != endEditable) {\n range.setEnd(range.endContainer.parentNode, dom.findNodeIndex(range.endContainer) + 1);\n }\n return range;\n },\n expand: function (range) {\n var result = range.cloneRange();\n var startContainer = result.startContainer.childNodes[result.startOffset === 0 ? 0 : result.startOffset - 1];\n var endContainer = result.endContainer.childNodes[result.endOffset];\n if (!isDataNode(startContainer) || !isDataNode(endContainer)) {\n return result;\n }\n var beforeCaret = startContainer.nodeValue;\n var afterCaret = endContainer.nodeValue;\n if (!beforeCaret || !afterCaret) {\n return result;\n }\n var startOffset = beforeCaret.split('').reverse().join('').search(boundary);\n var endOffset = afterCaret.search(boundary);\n if (!startOffset || !endOffset) {\n return result;\n }\n endOffset = endOffset == -1 ? afterCaret.length : endOffset;\n startOffset = startOffset == -1 ? 0 : beforeCaret.length - startOffset;\n result.setStart(startContainer, startOffset);\n result.setEnd(endContainer, endOffset);\n return result;\n },\n isExpandable: function (range) {\n var node = range.startContainer;\n var rangeDocument = RangeUtils.documentFromRange(range);\n if (node == rangeDocument || node == rangeDocument.body) {\n return false;\n }\n var result = range.cloneRange();\n var value = node.nodeValue;\n if (!value) {\n return false;\n }\n var beforeCaret = value.substring(0, result.startOffset);\n var afterCaret = value.substring(result.startOffset);\n var startOffset = 0, endOffset = 0;\n if (beforeCaret) {\n startOffset = beforeCaret.split('').reverse().join('').search(boundary);\n }\n if (afterCaret) {\n endOffset = afterCaret.search(boundary);\n }\n return startOffset && endOffset;\n }\n };\n extend(Editor, {\n SelectionUtils: SelectionUtils,\n W3CRange: W3CRange,\n RangeIterator: RangeIterator,\n W3CSelection: W3CSelection,\n RangeEnumerator: RangeEnumerator,\n RestorePoint: RestorePoint,\n Marker: Marker,\n RangeUtils: RangeUtils\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/immutables', ['editor/range'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, Class = kendo.Class, Editor = kendo.ui.editor, dom = Editor.Dom, template = kendo.template, RangeUtils = Editor.RangeUtils, complexBlocks = [\n 'ul',\n 'ol',\n 'tbody',\n 'thead',\n 'table'\n ], toolsToBeUpdated = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'superscript',\n 'subscript',\n 'forecolor',\n 'backcolor',\n 'fontname',\n 'fontsize',\n 'createlink',\n 'unlink',\n 'autolink',\n 'addcolumnleft',\n 'addcolumnright',\n 'addrowabove',\n 'addrowbelow',\n 'deleterow',\n 'deletecolumn',\n 'mergecells',\n 'formatting',\n 'cleanformatting'\n ], IMMUTABALE = 'k-immutable', IMMUTABALE_MARKER_SELECTOR = '[' + IMMUTABALE + ']', IMMUTABLE_SELECTOR = '[contenteditable=\\'false\\']';\n var rootCondition = function (node) {\n return $(node).is('body,.k-editor');\n };\n var immutable = function (node) {\n return node.getAttribute && node.getAttribute('contenteditable') == 'false';\n };\n var immutableParent = function (node) {\n return dom.closestBy(node, immutable, rootCondition);\n };\n var expandImmutablesIn = function (range) {\n var startImmutableParent = immutableParent(range.startContainer);\n var endImmutableParent = immutableParent(range.endContainer);\n if (startImmutableParent || endImmutableParent) {\n if (startImmutableParent) {\n range.setStartBefore(startImmutableParent);\n }\n if (endImmutableParent) {\n range.setEndAfter(endImmutableParent);\n }\n }\n };\n var immutablesContext = function (range) {\n if (immutableParent(range.commonAncestorContainer)) {\n return true;\n } else if (immutableParent(range.startContainer) || immutableParent(range.endContainer)) {\n var editableNodes = RangeUtils.editableTextNodes(range);\n if (editableNodes.length === 0) {\n return true;\n }\n }\n return false;\n };\n var randomId = function (length) {\n var result = '';\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n for (var i = length || 10; i > 0; --i) {\n result += chars.charAt(Math.round(Math.random() * (chars.length - 1)));\n }\n return result;\n };\n var removeImmutables = function (root) {\n var serializedImmutables = { empty: true }, nodeName, id, serialized;\n $(root).find(IMMUTABLE_SELECTOR).each(function (i, node) {\n nodeName = dom.name(node);\n id = randomId();\n serialized = '<' + nodeName + ' ' + IMMUTABALE + '=\\'' + id + '\\'></' + nodeName + '>';\n serializedImmutables[id] = {\n node: node,\n style: $(node).attr('style')\n };\n serializedImmutables.empty = false;\n $(node).replaceWith(serialized);\n });\n return serializedImmutables;\n };\n var restoreImmutables = function (root, serializedImmutables) {\n var id, immutable;\n $(root).find(IMMUTABALE_MARKER_SELECTOR).each(function (i, node) {\n id = node.getAttribute(IMMUTABALE);\n immutable = serializedImmutables[id];\n $(node).replaceWith(immutable.node);\n if (immutable.style != $(immutable.node).attr('style')) {\n $(immutable.node).removeAttr('style').attr('style', immutable.style);\n }\n });\n };\n var deletingKey = function (keyCode) {\n var keys = kendo.keys;\n return keyCode === keys.BACKSPACE || keyCode == keys.DELETE;\n };\n var updateToolOptions = function (tool) {\n var options = tool ? tool.options : undefined;\n if (options && options.finder) {\n options.finder._initOptions({ immutables: true });\n }\n };\n var Immutables = Class.extend({\n init: function (editor) {\n this.editor = editor;\n this.serializedImmutables = {};\n this.options = $.extend({}, editor && editor.options && editor.options.immutables);\n var tools = editor.toolbar.tools;\n updateToolOptions(tools.justifyLeft);\n updateToolOptions(tools.justifyCenter);\n updateToolOptions(tools.justifyRight);\n updateToolOptions(tools.justifyFull);\n },\n serialize: function (node) {\n var result = this._toHtml(node), id;\n if (result.indexOf(IMMUTABALE) === -1) {\n id = this.randomId();\n result = result.replace(/>/, ' ' + IMMUTABALE + '=\"' + id + '\">');\n } else {\n id = result.match(/k-immutable\\s*=\\s*['\"](.*)['\"]/)[1];\n }\n this.serializedImmutables[id] = node;\n return result;\n },\n _toHtml: function (node) {\n var serialization = this.options.serialization;\n var serializationType = typeof serialization;\n var nodeName;\n switch (serializationType) {\n case 'string':\n return template(serialization)(node);\n case 'function':\n return serialization(node);\n default:\n nodeName = dom.name(node);\n return '<' + nodeName + '></' + nodeName + '>';\n }\n },\n deserialize: function (node) {\n var that = this;\n var deserialization = this.options.deserialization;\n $(IMMUTABALE_MARKER_SELECTOR, node).each(function () {\n var id = this.getAttribute(IMMUTABALE);\n var immutable = that.serializedImmutables[id];\n if (kendo.isFunction(deserialization)) {\n deserialization(this, immutable);\n }\n $(this).replaceWith(immutable);\n });\n that.serializedImmutables = {};\n },\n randomId: function (length) {\n return randomId(length);\n },\n keydown: function (e, range) {\n var isDeleting = deletingKey(e.keyCode);\n var shouldCancelEvent = isDeleting && this._cancelDeleting(e, range) || !isDeleting && this._cancelTyping(e, range);\n if (shouldCancelEvent) {\n e.preventDefault();\n return true;\n }\n },\n _cancelTyping: function (e, range) {\n var editor = this.editor;\n var keyboard = editor.keyboard;\n return range.collapsed && !keyboard.typingInProgress && keyboard.isTypingKey(e) && immutablesContext(range);\n },\n _cancelDeleting: function (e, range) {\n var keys = kendo.keys;\n var backspace = e.keyCode === keys.BACKSPACE;\n var del = e.keyCode == keys.DELETE;\n if (!backspace && !del) {\n return false;\n }\n var cancelDeleting = false;\n if (range.collapsed) {\n if (immutablesContext(range)) {\n return true;\n }\n var immutable = this.nextImmutable(range, del);\n if (immutable && backspace) {\n var closestSelectionLi = dom.closest(range.commonAncestorContainer, 'li');\n if (closestSelectionLi) {\n var closestImmutableLi = dom.closest(immutable, 'li');\n if (closestImmutableLi && closestImmutableLi !== closestSelectionLi) {\n return cancelDeleting;\n }\n }\n }\n if (immutable && !dom.tableCell(immutable)) {\n if (dom.parentOfType(immutable, complexBlocks) === dom.parentOfType(range.commonAncestorContainer, complexBlocks)) {\n while (immutable && immutable.parentNode.childNodes.length == 1) {\n immutable = immutable.parentNode;\n }\n if (dom.tableCell(immutable)) {\n return cancelDeleting;\n }\n this._removeImmutable(immutable, range);\n }\n cancelDeleting = true;\n }\n }\n return cancelDeleting;\n },\n nextImmutable: function (range, forwards) {\n var commonContainer = range.commonAncestorContainer;\n if (dom.isBom(commonContainer) || (forwards && RangeUtils.isEndOf(range, commonContainer) || !forwards && RangeUtils.isStartOf(range, commonContainer))) {\n var next = this._nextNode(commonContainer, forwards);\n if (next && dom.isBlock(next) && !immutableParent(next)) {\n while (next && next.children && next.children[forwards ? 0 : next.children.length - 1]) {\n next = next.children[forwards ? 0 : next.children.length - 1];\n }\n }\n return immutableParent(next);\n }\n },\n _removeImmutable: function (immutable, range) {\n var editor = this.editor;\n var startRestorePoint = new Editor.RestorePoint(range, editor.body);\n dom.remove(immutable);\n Editor._finishUpdate(editor, startRestorePoint);\n },\n _nextNode: function (node, forwards) {\n var sibling = forwards ? 'nextSibling' : 'previousSibling';\n var current = node, next;\n while (current && !next) {\n next = current[sibling];\n if (next && dom.isDataNode(next) && /^\\s|[\\ufeff]$/.test(next.nodeValue)) {\n current = next;\n next = current[sibling];\n }\n if (!next) {\n current = current.parentNode;\n }\n }\n return next;\n }\n });\n Immutables.immutable = immutable;\n Immutables.immutableParent = immutableParent;\n Immutables.expandImmutablesIn = expandImmutablesIn;\n Immutables.immutablesContext = immutablesContext;\n Immutables.toolsToBeUpdated = toolsToBeUpdated;\n Immutables.removeImmutables = removeImmutables;\n Immutables.restoreImmutables = restoreImmutables;\n Editor.Immutables = Immutables;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/command', ['editor/immutables'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, Class = kendo.Class, editorNS = kendo.ui.editor, dom = editorNS.Dom, RestorePoint = editorNS.RestorePoint, Marker = editorNS.Marker, extend = $.extend;\n function finishUpdate(editor, startRestorePoint) {\n var endRestorePoint = editor.selectionRestorePoint = new RestorePoint(editor.getRange(), editor.body);\n var command = new GenericCommand(startRestorePoint, endRestorePoint);\n command.editor = editor;\n editor.undoRedoStack.push(command);\n return endRestorePoint;\n }\n var Command = Class.extend({\n init: function (options) {\n this.options = options;\n this.restorePoint = new RestorePoint(options.range, options.body, { immutables: options.immutables });\n this.marker = new Marker();\n this.formatter = options.formatter;\n },\n getRange: function () {\n return this.restorePoint.toRange();\n },\n lockRange: function (expand) {\n return this.marker.add(this.getRange(), expand);\n },\n releaseRange: function (range) {\n this.marker.remove(range);\n this.editor.selectRange(range);\n },\n undo: function () {\n var point = this.restorePoint;\n point.restoreHtml();\n this.editor.selectRange(point.toRange());\n },\n redo: function () {\n this.exec();\n },\n createDialog: function (content, options) {\n var editor = this.editor;\n return $(content).appendTo(document.body).kendoWindow(extend({}, editor.options.dialogOptions, options)).closest('.k-window').toggleClass('k-rtl', kendo.support.isRtl(editor.wrapper)).end();\n },\n exec: function () {\n var range = this.lockRange(true);\n this.formatter.editor = this.editor;\n this.formatter.toggle(range);\n this.releaseRange(range);\n },\n immutables: function () {\n return this.editor && this.editor.options.immutables;\n },\n expandImmutablesIn: function (range) {\n if (this.immutables()) {\n kendo.ui.editor.Immutables.expandImmutablesIn(range);\n this.restorePoint = new RestorePoint(range, this.editor.body);\n }\n }\n });\n var GenericCommand = Class.extend({\n init: function (startRestorePoint, endRestorePoint) {\n this.body = startRestorePoint.body;\n this.startRestorePoint = startRestorePoint;\n this.endRestorePoint = endRestorePoint;\n },\n redo: function () {\n dom.removeChildren(this.body);\n this.body.innerHTML = this.endRestorePoint.html;\n this.editor.selectRange(this.endRestorePoint.toRange());\n },\n undo: function () {\n dom.removeChildren(this.body);\n this.body.innerHTML = this.startRestorePoint.html;\n this.editor.selectRange(this.startRestorePoint.toRange());\n }\n });\n extend(editorNS, {\n _finishUpdate: finishUpdate,\n Command: Command,\n GenericCommand: GenericCommand\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/toolbar', ['editor/range'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo;\n var ui = kendo.ui;\n var editorNS = ui.editor;\n var Widget = ui.Widget;\n var extend = $.extend;\n var proxy = $.proxy;\n var keys = kendo.keys;\n var NS = '.kendoEditor';\n var EditorUtils = editorNS.EditorUtils;\n var ToolTemplate = editorNS.ToolTemplate;\n var Tool = editorNS.Tool;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n var OVERFLOWANCHOR = 'overflowAnchor';\n var focusable = '.k-tool-group:visible a.k-tool:not(.k-state-disabled),' + '.k-tool.k-overflow-anchor:visible,' + '.k-tool-group:visible .k-widget.k-colorpicker,' + '.k-tool-group:visible .k-selectbox,' + '.k-tool-group:visible .k-dropdown,' + '.k-tool-group:visible .k-combobox .k-input';\n var toolNamesByCssClass = {\n 'k-i-sup-script': 'superscript',\n 'k-i-sub-script': 'subscript',\n 'k-i-align-left': 'justifyLeft',\n 'k-i-align-center': 'justifyCenter',\n 'k-i-align-right': 'justifyRight',\n 'k-i-align-justify': 'justifyFull',\n 'k-i-list-unordered': 'insertUnorderedList',\n 'k-i-list-ordered': 'insertOrderedList',\n 'k-i-login': 'import',\n 'k-i-indent-increase': 'indent',\n 'k-i-indent-decrease': 'outdent',\n 'k-i-link-horizontal': 'createLink',\n 'k-i-unlink-horizontal': 'unlink',\n 'k-i-image': 'insertImage',\n 'k-i-file-add': 'insertFile',\n 'k-i-html': 'viewHtml',\n 'k-i-foreground-color': 'foreColor',\n 'k-i-paint': 'backColor',\n 'k-i-table-insert': 'createTable',\n 'k-i-table-column-insert-left': 'addColumnLeft',\n 'k-i-table-column-insert-right': 'addColumnRight',\n 'k-i-table-row-insert-above': 'addRowAbove',\n 'k-i-table-row-insert-below': 'addRowBelow',\n 'k-i-table-row-delete': 'deleteRow',\n 'k-i-table-column-delete': 'deleteColumn',\n 'k-i-table-properties': 'tableWizard',\n 'k-i-table-wizard': 'tableWizardInsert',\n 'k-i-clear-css': 'cleanFormatting'\n };\n var OverflowAnchorTool = Tool.extend({\n initialize: function (ui, options) {\n ui.attr({ unselectable: 'on' });\n var toolbar = options.editor.toolbar;\n ui.attr('aria-controls', options.editor.element.attr('id')).on('click', $.proxy(function () {\n this.overflowPopup.toggle();\n }, toolbar));\n },\n options: { name: OVERFLOWANCHOR },\n command: $.noop,\n update: $.noop,\n destroy: $.noop\n });\n EditorUtils.registerTool(OVERFLOWANCHOR, new OverflowAnchorTool({\n key: '',\n ctrl: true,\n template: new ToolTemplate({ template: EditorUtils.overflowAnchorTemplate })\n }));\n var Toolbar = Widget.extend({\n init: function (element, options) {\n var that = this;\n options = extend({}, options, { name: 'EditorToolbar' });\n Widget.fn.init.call(that, element, options);\n if (options.popup) {\n that._initPopup();\n }\n if (options.resizable && options.resizable.toolbar) {\n that._resizeHandler = kendo.onResize(function () {\n that.resize(true);\n });\n that.element.addClass('k-toolbar-resizable');\n }\n },\n events: ['execute'],\n groups: {\n basic: [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough'\n ],\n scripts: [\n 'subscript',\n 'superscript'\n ],\n alignment: [\n 'justifyLeft',\n 'justifyCenter',\n 'justifyRight',\n 'justifyFull'\n ],\n links: [\n 'insertImage',\n 'insertFile',\n 'createLink',\n 'unlink'\n ],\n lists: [\n 'insertUnorderedList',\n 'insertOrderedList',\n 'indent',\n 'outdent'\n ],\n tables: [\n 'createTable',\n 'addColumnLeft',\n 'addColumnRight',\n 'addRowAbove',\n 'addRowBelow',\n 'deleteRow',\n 'deleteColumn'\n ],\n advanced: [\n 'viewHtml',\n 'cleanFormatting',\n 'print',\n 'pdf',\n 'exportAs',\n 'import'\n ],\n fonts: [\n 'fontName',\n 'fontSize'\n ],\n colors: [\n 'foreColor',\n 'backColor'\n ]\n },\n overflowFlaseTools: [\n 'formatting',\n 'fontName',\n 'fontSize',\n 'foreColor',\n 'backColor',\n 'insertHtml'\n ],\n _initPopup: function () {\n var that = this;\n this.window = $(this.element).wrap('<div class=\\'editorToolbarWindow k-header\\' />').parent().prepend('<button class=\\'k-button k-bare k-editortoolbar-dragHandle\\'><span class=\\'k-icon k-i-handler-drag\\' /></button>').kendoWindow({\n title: false,\n resizable: false,\n draggable: { dragHandle: '.k-editortoolbar-dragHandle' },\n animation: {\n open: { effects: 'fade:in' },\n close: { effects: 'fade:out' }\n },\n minHeight: 42,\n visible: false,\n autoFocus: false,\n actions: [],\n dragend: function () {\n this._moved = true;\n }\n }).on('mousedown', function (e) {\n if (!$(e.target).is('.k-icon')) {\n that.preventPopupHide = true;\n }\n }).on('focusout', function () {\n that.options.editor.element.focusout();\n }).data('kendoWindow');\n },\n _toggleOverflowStyles: function (element, show) {\n element.find('> li').toggleClass('k-item k-state-default', show).find('.k-tool:not(.k-state-disabled),.k-overflow-button').toggleClass('k-overflow-button k-button', show);\n },\n _initOverflowPopup: function (ui) {\n var that = this;\n var popupTemplate = '<ul class=\\'k-editor-overflow-popup k-overflow-container k-list-container\\'></ul>';\n that.overflowPopup = $(popupTemplate).appendTo('body').kendoPopup({\n anchor: ui,\n origin: 'bottom right',\n position: 'top right',\n copyAnchorStyles: false,\n open: function (e) {\n if (this.element.is(':empty')) {\n e.preventDefault();\n }\n that._toggleOverflowStyles(this.element, true);\n ui.attr('aria-expanded', true);\n },\n close: function () {\n ui.attr('aria-expanded', false);\n },\n activate: proxy(that.focusOverflowPopup, that)\n }).data('kendoPopup');\n },\n items: function () {\n var isResizable = this.options.resizable && this.options.resizable.toolbar, popup, result;\n result = this.element.children().find('> *, select');\n if (isResizable) {\n popup = this.overflowPopup;\n result = result.add(popup.element.children().find('> *'));\n }\n return result;\n },\n focused: function () {\n return this.element.find('.k-state-focused').length > 0 || this.preventPopupHide || this.overflowPopup && this.overflowPopup.visible();\n },\n toolById: function (name) {\n var id, tools = this.tools;\n for (id in tools) {\n if (id.toLowerCase() == name) {\n return tools[id];\n }\n }\n },\n toolGroupFor: function (toolName) {\n var i, groups = this.groups;\n if (this.isCustomTool(toolName)) {\n return 'custom';\n }\n for (i in groups) {\n if ($.inArray(toolName, groups[i]) >= 0) {\n return i;\n }\n }\n },\n bindTo: function (editor) {\n var that = this, window = that.window;\n if (that._editor) {\n that._editor.unbind('select', proxy(that.resize, that));\n }\n that._editor = editor;\n if (that.options.resizable && that.options.resizable.toolbar) {\n editor.options.tools.push(OVERFLOWANCHOR);\n }\n that.tools = that.expandTools(editor.options.tools);\n that.render();\n that.element.find('.k-combobox .k-input').keydown(function (e) {\n var combobox = $(this).closest('.k-combobox').data('kendoComboBox'), key = e.keyCode;\n if (key == keys.RIGHT || key == keys.LEFT) {\n combobox.close();\n } else if (key == keys.DOWN) {\n if (!combobox.dropDown.isOpened()) {\n e.stopImmediatePropagation();\n combobox.open();\n }\n }\n });\n that._attachEvents();\n that.items().each(function initializeTool() {\n var toolName = that._toolName(this), tool = toolName !== 'moreVertical' ? that.tools[toolName] : that.tools.overflowAnchor, options = tool && tool.options, messages = editor.options.messages, description = options && options.tooltip || messages[toolName], ui = $(this);\n if (!tool || !tool.initialize) {\n return;\n }\n if (toolName == 'fontSize' || toolName == 'fontName') {\n var inheritText = messages[toolName + 'Inherit'];\n ui.find('input').val(inheritText).end().find('span.k-input').text(inheritText).end();\n }\n tool.initialize(ui, {\n title: that._appendShortcutSequence(description, tool),\n editor: that._editor\n });\n ui.closest('.k-widget', that.element).addClass('k-editor-widget');\n ui.closest('.k-colorpicker', that.element).next('.k-colorpicker').addClass('k-editor-widget');\n });\n editor.bind('select', proxy(that.resize, that));\n that.update();\n if (window) {\n window.wrapper.css({\n top: '',\n left: '',\n width: ''\n });\n }\n },\n show: function () {\n var that = this, window = that.window, editorOptions = that.options.editor, wrapper, editorElement, editorOffset, browser = kendo.support.browser;\n if (window) {\n wrapper = window.wrapper;\n editorElement = editorOptions.element;\n if (!wrapper.is(':visible') || !that.window.options.visible) {\n if (!wrapper[0].style.width) {\n wrapper.width(this._getWindowWidth());\n }\n if (!window._moved) {\n editorOffset = editorElement.offset();\n wrapper.css({\n top: Math.max(0, parseInt(editorOffset.top, 10) - outerHeight(wrapper) - parseInt(that.window.element.css('padding-bottom'), 10)),\n left: Math.max(0, parseInt(editorOffset.left, 10))\n });\n }\n if ((browser.msie || browser.edge) && that._overlaps(editorElement)) {\n setTimeout(function () {\n window.open();\n }, 0);\n } else {\n window.open();\n }\n }\n }\n },\n _getWindowWidth: function () {\n var that = this, wrapper = that.window.wrapper, editorElement = that.options.editor.element;\n return outerWidth(editorElement) - parseInt(wrapper.css('border-left-width'), 10) - parseInt(wrapper.css('border-right-width'), 10);\n },\n _overlaps: function (box) {\n var toolbarWrapper = this.window.wrapper, toolbarWrapperOffset = toolbarWrapper.offset(), toolbarWrapperLeft = toolbarWrapperOffset.left, toolbarWrapperTop = toolbarWrapperOffset.top, boxOffset = box.offset(), boxOffsetLeft = boxOffset.left, boxOffsetTop = boxOffset.top;\n return !(boxOffsetLeft + box.width() < toolbarWrapperLeft || boxOffsetLeft > toolbarWrapperLeft + toolbarWrapper.width() || boxOffsetTop + box.height() < toolbarWrapperTop || boxOffsetTop > toolbarWrapperTop + toolbarWrapper.height());\n },\n hide: function () {\n if (this.window) {\n this.window.close();\n }\n },\n focus: function () {\n var TABINDEX = 'tabIndex';\n var element = this.element;\n var tabIndex = this._editor.element.attr(TABINDEX);\n element.attr(TABINDEX, tabIndex || 0).focus().find(focusable).first().focus();\n if (!tabIndex && tabIndex !== 0) {\n element.removeAttr(TABINDEX);\n }\n },\n focusOverflowPopup: function () {\n var TABINDEX = 'tabIndex';\n var element = this.overflowPopup.element;\n var tabIndex = this._editor.element.attr(TABINDEX);\n element.closest('.k-animation-container').addClass('k-overflow-wrapper');\n element.attr(TABINDEX, tabIndex || 0).find(focusable).first().focus();\n if (!tabIndex && tabIndex !== 0) {\n element.removeAttr(TABINDEX);\n }\n },\n _appendShortcutSequence: function (localizedText, tool) {\n if (!tool.key) {\n return localizedText;\n }\n var res = localizedText + ' (';\n if (tool.ctrl) {\n res += 'Ctrl + ';\n }\n if (tool.shift) {\n res += 'Shift + ';\n }\n if (tool.alt) {\n res += 'Alt + ';\n }\n res += tool.key + ')';\n return res;\n },\n _nativeTools: [\n 'insertLineBreak',\n 'insertParagraph',\n 'redo',\n 'undo',\n 'autoLink'\n ],\n tools: {},\n isCustomTool: function (toolName) {\n return !(toolName in kendo.ui.Editor.defaultTools);\n },\n expandTools: function (tools) {\n var currentTool, i, nativeTools = this._nativeTools, options, defaultTools = kendo.deepExtend({}, kendo.ui.Editor.defaultTools), result = {}, name;\n for (i = 0; i < tools.length; i++) {\n currentTool = tools[i];\n name = currentTool.name;\n if ($.isPlainObject(currentTool)) {\n if (name && defaultTools[name]) {\n result[name] = extend({}, defaultTools[name]);\n extend(result[name].options, currentTool);\n } else {\n options = extend({\n cssClass: 'k-i-gear',\n type: 'button',\n title: ''\n }, currentTool);\n if (!options.name) {\n options.name = 'custom';\n }\n options.cssClass = 'k-' + options.name;\n if (!options.template && options.type == 'button') {\n options.template = editorNS.EditorUtils.buttonTemplate;\n options.title = options.title || options.tooltip;\n }\n result[name] = { options: options };\n }\n } else if (defaultTools[currentTool]) {\n result[currentTool] = defaultTools[currentTool];\n }\n }\n for (i = 0; i < nativeTools.length; i++) {\n if (!result[nativeTools[i]]) {\n result[nativeTools[i]] = defaultTools[nativeTools[i]];\n }\n }\n return result;\n },\n render: function () {\n var that = this, tools = that.tools, options, template, toolElement, toolName, editorElement = that._editor.element, element = that.element.empty(), groupName, newGroupName, toolConfig = that._editor.options.tools, browser = kendo.support.browser, group, i, groupPosition = 0, resizable = that.options.resizable && that.options.resizable.toolbar, overflowFlaseTools = this.overflowFlaseTools;\n function stringify(template) {\n var result;\n if (template.getHtml) {\n result = template.getHtml();\n } else {\n if (!$.isFunction(template)) {\n template = kendo.template(template);\n }\n result = template(options);\n }\n return $.trim(result);\n }\n function endGroup() {\n if (group.children().length) {\n if (resizable) {\n group.data('position', groupPosition);\n groupPosition++;\n }\n group.appendTo(element);\n }\n }\n function startGroup(toolName) {\n if (toolName !== OVERFLOWANCHOR) {\n group = $('<li class=\\'k-tool-group\\' role=\\'presentation\\' />');\n group.data('overflow', $.inArray(toolName, overflowFlaseTools) === -1 ? true : false);\n } else {\n group = $('<li class=\\'k-overflow-tools\\' />');\n }\n }\n element.empty();\n if (toolConfig.length) {\n toolName = toolConfig[0].name || toolConfig[0];\n }\n startGroup(toolName, overflowFlaseTools);\n for (i = 0; i < toolConfig.length; i++) {\n toolName = toolConfig[i].name || toolConfig[i];\n options = tools[toolName] && tools[toolName].options;\n if (!options && $.isPlainObject(toolName)) {\n options = toolName;\n }\n template = options && options.template;\n if (toolName == 'break') {\n endGroup();\n $('<li class=\\'k-row-break\\' />').appendTo(that.element);\n startGroup(toolName, overflowFlaseTools);\n }\n if (!template) {\n continue;\n }\n newGroupName = that.toolGroupFor(toolName);\n if (groupName != newGroupName || toolName == OVERFLOWANCHOR) {\n endGroup();\n startGroup(toolName, overflowFlaseTools);\n groupName = newGroupName;\n }\n if (toolName == OVERFLOWANCHOR) {\n template.options.title = that.options.messages.overflowAnchor;\n }\n template = stringify(template);\n toolElement = $(template).appendTo(group);\n if (newGroupName == 'custom') {\n endGroup();\n startGroup(toolName, overflowFlaseTools);\n }\n if (options.exec && toolElement.hasClass('k-tool')) {\n toolElement.click(proxy(options.exec, editorElement[0]));\n }\n }\n endGroup();\n $(that.element).children(':has(> .k-tool)').addClass('k-button-group');\n if (that.options.popup && browser.msie && browser.version < 9) {\n that.window.wrapper.find('*').attr('unselectable', 'on');\n }\n that.updateGroups();\n if (resizable) {\n that._initOverflowPopup(that.element.find('.k-overflow-anchor'));\n }\n that.angular('compile', function () {\n return { elements: that.element };\n });\n },\n updateGroups: function () {\n $(this.element).children().each(function () {\n $(this).addClass('k-state-disabled');\n $(this).children().filter(function () {\n return !$(this).hasClass('k-state-disabled');\n }).removeClass('k-group-end').first().addClass('k-group-start').end().last().addClass('k-group-end').end().parent().removeClass('k-state-disabled').css('display', '');\n });\n },\n decorateFrom: function (body) {\n this.items().filter('.k-decorated').each(function () {\n var selectBox = $(this).data('kendoSelectBox');\n if (selectBox) {\n selectBox.decorate(body);\n }\n });\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n var id, tools = this.tools;\n for (id in tools) {\n if (tools[id].destroy) {\n tools[id].destroy();\n }\n }\n if (this.window) {\n this.window.destroy();\n }\n if (this._resizeHandler) {\n kendo.unbindResize(this._resizeHandler);\n }\n if (this.overflowPopup) {\n this.overflowPopup.destroy();\n }\n },\n _attachEvents: function () {\n var that = this, popupElement = that.overflowPopup ? that.overflowPopup.element : $([]);\n that.attachToolsEvents(that.element.add(popupElement));\n },\n attachToolsEvents: function (element) {\n var that = this, buttons = '[role=button].k-tool', enabledButtons = buttons + ':not(.k-state-disabled)', disabledButtons = buttons + '.k-state-disabled', dropdown = '.k-dropdown', colorpicker = '.k-colorpicker', editorTools = [\n buttons,\n dropdown,\n colorpicker\n ].join(',');\n element.off(NS).on('mouseenter' + NS, enabledButtons, function () {\n $(this).addClass('k-state-hover');\n }).on('mouseleave' + NS, enabledButtons, function () {\n $(this).removeClass('k-state-hover');\n }).on('mousedown' + NS, editorTools, function (e) {\n e.preventDefault();\n }).on('keydown' + NS, focusable, function (e) {\n var current = this;\n var resizable = that.options.resizable && that.options.resizable.toolbar;\n var direction = kendo.support.isRtl(that.element) ? -1 : 1;\n var focusableItems;\n var focusElement, currentContainer, keyCode = e.keyCode;\n function move(direction, container, constrain) {\n var tools = container.find(focusable);\n var index = tools.index(current) + direction;\n if (constrain) {\n index = Math.max(0, Math.min(tools.length - 1, index));\n }\n return tools[index];\n }\n if (keyCode == keys.RIGHT || keyCode == keys.LEFT) {\n if (!$(current).is('.k-dropdown')) {\n focusElement = move(keyCode == keys.RIGHT ? 1 * direction : -1 * direction, that.element, true);\n } else {\n focusElement = $(current);\n }\n } else if (resizable && (keyCode == keys.UP || keyCode == keys.DOWN)) {\n focusElement = move(keyCode == keys.DOWN ? 1 : -1, that.overflowPopup.element, true);\n } else if (keyCode == keys.HOME) {\n focusElement = that.element.find(focusable)[0];\n e.preventDefault();\n } else if (keyCode == keys.END) {\n focusableItems = that.element.find(focusable).filter(function () {\n return $(this).css('visibility') !== 'hidden';\n });\n focusElement = focusableItems[focusableItems.length - 1];\n e.preventDefault();\n } else if (keyCode == keys.ESC) {\n if (that.overflowPopup && that.overflowPopup.visible()) {\n that.overflowPopup.close();\n }\n focusElement = that._editor;\n } else if (keyCode == keys.TAB && !(e.ctrlKey || e.altKey)) {\n if (resizable) {\n currentContainer = $(current.parentElement).hasClass('k-overflow-tool-group') ? that.overflowPopup.element : that.element;\n } else {\n currentContainer = that.element;\n }\n if (e.shiftKey) {\n focusElement = move(-1, currentContainer);\n } else {\n focusElement = move(1, currentContainer);\n if (!focusElement || $(focusElement).closest('.k-overflow-tools').css('visibility') === 'hidden') {\n focusElement = that._editor;\n }\n }\n }\n if (focusElement) {\n e.preventDefault();\n focusElement.focus();\n }\n if ((keyCode === keys.ENTER || keyCode === keys.SPACEBAR) && $(current).is('a') && !$(current).attr('href')) {\n that._executeToolCommand(current, e);\n }\n }).on('click' + NS, enabledButtons, function (e) {\n that._executeToolCommand(this, e);\n }).on('click' + NS, disabledButtons, function (e) {\n e.preventDefault();\n });\n },\n _executeToolCommand: function (toolElement, e) {\n var that = this;\n var button = $(toolElement);\n e.preventDefault();\n e.stopPropagation();\n button.removeClass('k-state-hover');\n if (!button.is('[data-popup]')) {\n that._editor.exec(that._toolName(toolElement));\n }\n },\n _toolName: function (element) {\n if (!element) {\n return;\n }\n var className = element.className;\n if (/k-tool\\b/i.test(className)) {\n className = element.firstChild.className;\n }\n var tool = $.grep(className.split(' '), function (x) {\n return !/^k-(widget|tool|tool-icon|icon|state-hover|header|combobox|dropdown|selectbox|colorpicker)$/i.test(x);\n });\n if (tool[0]) {\n var toolname = tool[0];\n if (toolNamesByCssClass[toolname]) {\n toolname = toolNamesByCssClass[toolname];\n }\n if (toolname.indexOf('k-i-') >= 0) {\n return kendo.toCamelCase(toolname.substring(toolname.indexOf('k-i-') + 4));\n } else {\n return toolname.substring(toolname.lastIndexOf('-') + 1);\n }\n }\n return 'custom';\n },\n refreshTools: function () {\n var that = this, editor = that._editor, range = editor.getRange(), nodes = editorNS.RangeUtils.textNodes(range), immutables = editor.options.immutables, immutablesContext = that._immutablesContext(range);\n nodes = editorNS.Dom.filterBy(nodes, editorNS.Dom.htmlIndentSpace, true);\n if (!nodes.length) {\n nodes = [range.startContainer];\n }\n that.items().each(function () {\n var tool = that.tools[that._toolName(this)];\n if (tool) {\n var ui = $(this);\n if (tool.update) {\n tool.update(ui, nodes);\n }\n if (immutables) {\n that._updateImmutablesState(tool, ui, immutablesContext);\n }\n }\n });\n this.update();\n },\n _immutablesContext: function (range) {\n if (this._editor.options.immutables) {\n if (range.collapsed) {\n return editorNS.Immutables.immutablesContext(range);\n } else {\n return editorNS.RangeUtils.editableTextNodes(range).length === 0;\n }\n }\n },\n _updateImmutablesState: function (tool, ui, immutablesContext) {\n var name = tool.name;\n var uiElement = ui;\n var trackImmutables = tool.options.trackImmutables;\n if (trackImmutables === undefined) {\n trackImmutables = $.inArray(name, editorNS.Immutables.toolsToBeUpdated) > -1;\n }\n if (trackImmutables) {\n var display = immutablesContext ? 'none' : '';\n if (!ui.is('.k-tool')) {\n var uiData = ui.data();\n for (var key in uiData) {\n if (key.match(/^kendo[A-Z][a-zA-Z]*/)) {\n var widget = uiData[key];\n uiElement = widget.wrapper;\n break;\n }\n }\n }\n uiElement.css('display', display);\n var groupUi = uiElement.closest('li');\n if (groupUi.children(':visible').length === 0) {\n groupUi.css('display', display);\n }\n }\n },\n update: function () {\n this.updateGroups();\n },\n _resize: function (e) {\n var containerWidth = e.width;\n var resizable = this.options.resizable && this.options.resizable.toolbar;\n var popup = this.overflowPopup;\n var editorElement = this.options.editor.element;\n var toolbarWindow = this.window;\n this.refreshTools();\n if (!resizable) {\n return;\n }\n if (toolbarWindow) {\n toolbarWindow.wrapper.width(this._getWindowWidth());\n if (!toolbarWindow._moved) {\n toolbarWindow.wrapper.css({ left: Math.max(0, parseInt(editorElement.offset().left, 10)) });\n }\n }\n if (popup.visible()) {\n popup.close(true);\n }\n this._refreshWidths();\n this._shrink(containerWidth);\n this._stretch(containerWidth);\n this._toggleOverflowStyles(this.element, false);\n this._toggleOverflowStyles(this.overflowPopup.element, true);\n this.element.children('li.k-overflow-tools').css('visibility', popup.element.is(':empty') ? 'hidden' : 'visible');\n },\n _refreshWidths: function () {\n this.element.children('li').each(function (idx, element) {\n var group = $(element);\n group.data('outerWidth', outerWidth(group, true));\n });\n },\n _shrink: function (width) {\n var group, visibleGroups;\n if (width < this._groupsWidth()) {\n visibleGroups = this._visibleGroups().filter(':not(.k-overflow-tools)');\n for (var i = visibleGroups.length - 1; i >= 0; i--) {\n group = visibleGroups.eq(i);\n if (width > this._groupsWidth()) {\n break;\n } else {\n this._hideGroup(group);\n }\n }\n }\n },\n _stretch: function (width) {\n var group, hiddenGroups;\n if (width > this._groupsWidth()) {\n hiddenGroups = this._hiddenGroups();\n for (var i = 0; i < hiddenGroups.length; i++) {\n group = hiddenGroups.eq(i);\n if (width < this._groupsWidth() || !this._showGroup(group, width)) {\n break;\n }\n }\n }\n },\n _hiddenGroups: function () {\n var popup = this.overflowPopup;\n var hiddenGroups = this.element.children('li.k-tool-group').filter(':hidden');\n hiddenGroups = hiddenGroups.add(popup.element.children('li'));\n hiddenGroups.sort(function (a, b) {\n return $(a).data('position') > $(b).data('position') ? 1 : -1;\n });\n return hiddenGroups;\n },\n _visibleGroups: function () {\n return this.element.children('li.k-tool-group, li.k-overflow-tools').filter(':visible');\n },\n _groupsWidth: function () {\n var width = 0;\n this._visibleGroups().each(function () {\n width += $(this).data('outerWidth');\n });\n return Math.ceil(width);\n },\n _hideGroup: function (group) {\n if (group.data('overflow')) {\n var popup = this.overflowPopup;\n group.detach().prependTo(popup.element).addClass('k-overflow-tool-group');\n } else {\n group.hide();\n }\n },\n _showGroup: function (group, width) {\n var position, previous;\n if (group.length && width > this._groupsWidth() + group.data('outerWidth') && !group.hasClass('k-state-disabled')) {\n if (group.hasClass('k-overflow-tool-group')) {\n position = group.data('position');\n if (position === 0) {\n group.detach().prependTo(this.element);\n } else {\n previous = this.element.children().filter(function (idx, element) {\n return $(element).data('position') === position - 1;\n });\n group.detach().insertAfter(previous);\n }\n group.removeClass('k-overflow-tool-group');\n } else {\n group.show();\n }\n return true;\n }\n return false;\n }\n });\n $.extend(editorNS, { Toolbar: Toolbar });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/viewhtml', ['editor/command'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, Editor = kendo.ui.editor, EditorUtils = Editor.EditorUtils, Command = Editor.Command, Tool = Editor.Tool, ToolTemplate = Editor.ToolTemplate, dom = Editor.Dom;\n var ViewHtmlCommand = Command.extend({\n init: function (options) {\n var cmd = this;\n cmd.options = options;\n Command.fn.init.call(cmd, options);\n cmd.attributes = null;\n cmd.async = true;\n },\n exec: function () {\n var that = this, editor = that.editor, options = editor.options, messages = editor.options.messages, dialog = $(kendo.template(ViewHtmlCommand.template)(messages)).appendTo(document.body), textarea = '.k-editor-textarea', content, comments;\n options.serialization.immutables = editor.immutables;\n comments = dom.getAllComments(editor.body);\n content = EditorUtils.cacheComments(editor.value(), comments);\n content = ViewHtmlCommand.indent(content);\n content = EditorUtils.retrieveComments(content, comments);\n options.serialization.immutables = undefined;\n function apply(e) {\n options.deserialization.immutables = editor.immutables;\n editor.value(dialog.find(textarea).val());\n options.deserialization.immutables = undefined;\n close(e);\n if (that.change) {\n that.change();\n }\n editor.trigger('change');\n }\n function close(e) {\n e.preventDefault();\n dialog.data('kendoWindow').destroy();\n if (editor.immutables) {\n editor.immutables.serializedImmutables = {};\n }\n editor.focus();\n }\n this.createDialog(dialog, {\n title: messages.viewHtml,\n close: close,\n visible: false\n }).find(textarea).val(content).end().find('.k-dialog-update').click(apply).end().find('.k-dialog-close').click(close).end().data('kendoWindow').center().open();\n dialog.find(textarea).focus();\n }\n });\n extend(ViewHtmlCommand, {\n template: '<div class=\\'k-editor-dialog k-popup-edit-form k-viewhtml-dialog\\'>' + '<div class=\\'k-edit-form-container\\'></div>' + '<textarea class=\\'k-editor-textarea k-input\\'></textarea>' + '<div class=\\'k-edit-buttons k-state-default\\'>' + '<button class=\\'k-dialog-update k-button k-primary\\'>#: dialogUpdate #</button>' + '<button class=\\'k-dialog-close k-button\\'>#: dialogCancel #</button>' + '</div>' + '</div>' + '</div>',\n indent: function (content) {\n return content.replace(/<\\/(p|li|ul|ol|h[1-6]|table|tr|td|th)>/gi, '</$1>\\n').replace(/<(ul|ol)([^>]*)><li/gi, '<$1$2>\\n<li').replace(/<br \\/>/gi, '<br />\\n').replace(/\\n$/, '');\n }\n });\n kendo.ui.editor.ViewHtmlCommand = ViewHtmlCommand;\n Editor.EditorUtils.registerTool('viewHtml', new Tool({\n command: ViewHtmlCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'View HTML'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/format', ['editor/command'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, extend = $.extend, Editor = kendo.ui.editor, Tool = Editor.Tool, Command = Editor.Command, EditorUtils = Editor.EditorUtils;\n var FormatCommand = Command.extend({\n init: function (options) {\n options.formatter = options.formatter();\n var finder = options.formatter.finder;\n if (finder && EditorUtils.formatByName('immutable', finder.format)) {\n finder._initOptions({ immutables: options.immutables });\n }\n Command.fn.init.call(this, options);\n }\n });\n var FormatTool = Tool.extend({\n init: function (options) {\n Tool.fn.init.call(this, options);\n },\n command: function (commandArguments) {\n var that = this;\n return new FormatCommand(extend(commandArguments, { formatter: that.options.formatter }));\n },\n update: function (ui, nodes) {\n var isFormatted = this.options.finder.isFormatted(nodes);\n ui.toggleClass('k-state-selected', isFormatted);\n ui.attr('aria-pressed', isFormatted);\n }\n });\n $.extend(Editor, {\n FormatCommand: FormatCommand,\n FormatTool: FormatTool\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/inlineformat', ['editor/plugins/format'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, Class = kendo.Class, Editor = kendo.ui.editor, formats = kendo.ui.Editor.fn.options.formats, EditorUtils = Editor.EditorUtils, Tool = Editor.Tool, ToolTemplate = Editor.ToolTemplate, FormatTool = Editor.FormatTool, dom = Editor.Dom, RangeUtils = Editor.RangeUtils, extend = $.extend, registerTool = Editor.EditorUtils.registerTool, registerFormat = Editor.EditorUtils.registerFormat, MOUSEDOWN_NS = 'mousedown.kendoEditor', KEYDOWN_NS = 'keydown.kendoEditor', KMARKER = 'k-marker';\n var InlineFormatFinder = Class.extend({\n init: function (format) {\n this.format = format;\n },\n numberOfSiblings: function (referenceNode) {\n var textNodesCount = 0, elementNodesCount = 0, markerCount = 0, parentNode = referenceNode.parentNode, node;\n for (node = parentNode.firstChild; node; node = node.nextSibling) {\n if (node != referenceNode) {\n if (node.className == KMARKER) {\n markerCount++;\n } else if (node.nodeType == 3) {\n textNodesCount++;\n } else {\n elementNodesCount++;\n }\n }\n }\n if (markerCount > 1 && parentNode.firstChild.className == KMARKER && parentNode.lastChild.className == KMARKER) {\n return 0;\n } else {\n return elementNodesCount + textNodesCount;\n }\n },\n findSuitable: function (sourceNode, skip) {\n if (!skip && this.numberOfSiblings(sourceNode) > 0) {\n return null;\n }\n var node = sourceNode.parentNode;\n var tags = this.format[0].tags;\n while (!dom.ofType(node, tags)) {\n if (this.numberOfSiblings(node) > 0) {\n return null;\n }\n node = node.parentNode;\n }\n return node;\n },\n findFormat: function (sourceNode) {\n var format = this.format, attrEquals = dom.attrEquals, i, len, node, tags, attributes;\n for (i = 0, len = format.length; i < len; i++) {\n node = sourceNode;\n tags = format[i].tags;\n attributes = format[i].attr;\n if (node && dom.ofType(node, tags) && attrEquals(node, attributes)) {\n return node;\n }\n while (node) {\n node = dom.parentOfType(node, tags);\n if (node && attrEquals(node, attributes)) {\n return node;\n }\n }\n }\n return null;\n },\n isFormatted: function (nodes) {\n var i, len;\n for (i = 0, len = nodes.length; i < len; i++) {\n if (this.findFormat(nodes[i])) {\n return true;\n }\n }\n return false;\n }\n });\n var InlineFormatter = Class.extend({\n init: function (format, values) {\n this.finder = new InlineFormatFinder(format);\n this.attributes = extend({}, format[0].attr, values);\n this.tag = format[0].tags[0];\n },\n wrap: function (node) {\n return dom.wrap(node, dom.create(node.ownerDocument, this.tag, this.attributes));\n },\n activate: function (range, nodes) {\n if (this.finder.isFormatted(nodes)) {\n this.split(range);\n this.remove(nodes);\n } else {\n this.apply(nodes);\n }\n },\n toggle: function (range) {\n var textNodes = this.immutables() ? RangeUtils.editableTextNodes : RangeUtils.textNodes;\n var nodes = textNodes(range);\n if (nodes.length > 0) {\n this.activate(range, nodes);\n }\n },\n immutables: function () {\n return this.editor && this.editor.options.immutables;\n },\n apply: function (nodes) {\n var formatNodes = [];\n var i, l, node, formatNode;\n if (nodes.length > 1) {\n for (i = 0, l = nodes.length; i < l; i++) {\n node = nodes[i];\n formatNode = this.format(node, true);\n formatNodes.push(formatNode);\n }\n } else {\n node = nodes[0];\n formatNode = this.format(node, false);\n }\n this.consolidate(formatNodes);\n },\n format: function (node, outerMostInline) {\n var formatNode = this.finder.findSuitable(node);\n var attributes = this.attributes;\n var styleAttr = attributes ? attributes.style || {} : {};\n if (formatNode) {\n if (dom.is(formatNode, 'font')) {\n if (styleAttr.color) {\n formatNode.removeAttribute('color');\n }\n if (styleAttr.fontName) {\n formatNode.removeAttribute('face');\n }\n if (styleAttr.fontSize) {\n formatNode.removeAttribute('size');\n }\n }\n dom.attr(formatNode, attributes);\n } else {\n while (!dom.isBlock(node.parentNode) && node.parentNode.childNodes.length == 1 && node.parentNode.contentEditable !== 'true' && outerMostInline) {\n node = node.parentNode;\n }\n formatNode = this.wrap(node);\n }\n return formatNode;\n },\n remove: function (nodes) {\n var i, l, formatNode;\n for (i = 0, l = nodes.length; i < l; i++) {\n formatNode = this.finder.findFormat(nodes[i]);\n if (formatNode) {\n if (this.attributes && this.attributes.style) {\n dom.unstyle(formatNode, this.attributes.style);\n if (!formatNode.style.cssText && !formatNode.attributes['class']) {\n dom.unwrap(formatNode);\n }\n } else {\n dom.unwrap(formatNode);\n }\n }\n }\n },\n split: function (range) {\n var nodes = RangeUtils.textNodes(range);\n var l = nodes.length;\n var i, formatNode;\n if (l > 0) {\n for (i = 0; i < l; i++) {\n formatNode = this.finder.findFormat(nodes[i]);\n if (formatNode) {\n RangeUtils.split(range, formatNode, true);\n }\n }\n }\n },\n consolidate: function (nodes) {\n var node, last;\n while (nodes.length > 1) {\n node = nodes.pop();\n last = nodes[nodes.length - 1];\n if (node.previousSibling && node.previousSibling.className == KMARKER) {\n last.appendChild(node.previousSibling);\n }\n if (node.tagName == last.tagName && node.previousSibling == last && node.style.cssText == last.style.cssText && node.className === last.className) {\n while (node.firstChild) {\n last.appendChild(node.firstChild);\n }\n dom.remove(node);\n }\n }\n }\n });\n var GreedyInlineFormatFinder = InlineFormatFinder.extend({\n init: function (format, greedyProperty) {\n this.format = format;\n this.greedyProperty = greedyProperty;\n InlineFormatFinder.fn.init.call(this, format);\n },\n getInlineCssValue: function (node) {\n var attributes = node.attributes;\n var trim = $.trim;\n var i, l, attribute, name, attributeValue, css, pair, cssIndex, len;\n var propertyAndValue, property, value;\n if (!attributes) {\n return;\n }\n for (i = 0, l = attributes.length; i < l; i++) {\n attribute = attributes[i];\n name = attribute.nodeName;\n attributeValue = attribute.nodeValue;\n if (attribute.specified && name == 'style') {\n css = trim(attributeValue || node.style.cssText).split(';');\n for (cssIndex = 0, len = css.length; cssIndex < len; cssIndex++) {\n pair = css[cssIndex];\n if (pair.length) {\n propertyAndValue = pair.split(':');\n property = trim(propertyAndValue[0].toLowerCase());\n value = trim(propertyAndValue[1]);\n if (property != this.greedyProperty) {\n continue;\n }\n return property.indexOf('color') >= 0 ? dom.toHex(value) : value;\n }\n }\n }\n }\n },\n getFormatInner: function (node) {\n var $node = $(dom.isDataNode(node) ? node.parentNode : node);\n var parents = $node.parentsUntil('[contentEditable]').addBack().toArray().reverse();\n var i, len, value;\n for (i = 0, len = parents.length; i < len; i++) {\n value = this.greedyProperty == 'className' ? parents[i].className : this.getInlineCssValue(parents[i]);\n if (value) {\n return value;\n }\n }\n return 'inherit';\n },\n getFormat: function (nodes) {\n var result = this.getFormatInner(nodes[0]), i, len;\n for (i = 1, len = nodes.length; i < len; i++) {\n if (result != this.getFormatInner(nodes[i])) {\n return '';\n }\n }\n return result;\n },\n isFormatted: function (nodes) {\n return this.getFormat(nodes) !== '';\n }\n });\n var GreedyInlineFormatter = InlineFormatter.extend({\n init: function (format, values, greedyProperty) {\n InlineFormatter.fn.init.call(this, format, values);\n this.values = values;\n this.finder = new GreedyInlineFormatFinder(format, greedyProperty);\n if (greedyProperty) {\n this.greedyProperty = kendo.toCamelCase(greedyProperty);\n }\n },\n activate: function (range, nodes) {\n var greedyProperty = this.greedyProperty;\n var action = 'apply';\n this.split(range);\n if (greedyProperty && this.values.style[greedyProperty] == 'inherit') {\n action = 'remove';\n }\n this[action](nodes);\n }\n });\n var InlineFormatTool = FormatTool.extend({\n init: function (options) {\n FormatTool.fn.init.call(this, extend(options, {\n finder: new InlineFormatFinder(options.format),\n formatter: function () {\n return new InlineFormatter(options.format);\n }\n }));\n }\n });\n var DelayedExecutionTool = Tool.extend({\n update: function (ui, nodes) {\n var list = ui.data(this.type);\n list.close();\n list.value(this.finder.getFormat(nodes));\n }\n });\n var FontTool = DelayedExecutionTool.extend({\n init: function (options) {\n Tool.fn.init.call(this, options);\n this.type = kendo.support.browser.msie || kendo.support.touch ? 'kendoDropDownList' : 'kendoComboBox';\n this.format = [{\n tags: [\n 'span',\n 'font'\n ]\n }];\n this.finder = new GreedyInlineFormatFinder(this.format, options.cssAttr);\n },\n command: function (commandArguments) {\n var options = this.options, format = this.format, style = {};\n return new Editor.FormatCommand(extend(commandArguments, {\n formatter: function () {\n style[options.domAttr] = commandArguments.value;\n return new GreedyInlineFormatter(format, { style: style }, options.cssAttr);\n }\n }));\n },\n initialize: function (ui, initOptions) {\n var editor = initOptions.editor, options = this.options, toolName = options.name, dataSource, range, defaultValue = [];\n if (options.defaultValue) {\n defaultValue = [{\n text: editor.options.messages[options.defaultValue[0].text],\n value: options.defaultValue[0].value\n }];\n }\n dataSource = defaultValue.concat(options.items ? options.items : editor.options[toolName] || []);\n ui.attr({ title: initOptions.title });\n ui[this.type]({\n dataTextField: 'text',\n dataValueField: 'value',\n dataSource: dataSource,\n change: function () {\n editor._range = range;\n Tool.exec(editor, toolName, this.value());\n },\n close: function () {\n setTimeout(function () {\n editor._deleteSavedRange();\n }, 0);\n },\n highlightFirst: false\n });\n ui.closest('.k-widget').removeClass('k-' + toolName).find('*').addBack().attr('unselectable', 'on');\n var widget = ui.data(this.type);\n widget.value('inherit');\n widget.wrapper.on(MOUSEDOWN_NS, '.k-select,.k-input', function () {\n var newRange = editor.getRange();\n range = editor._containsRange(newRange) ? newRange : range;\n }).on(KEYDOWN_NS, function (e) {\n if (e.keyCode === kendo.keys.ENTER) {\n editor._deleteSavedRange();\n e.preventDefault();\n }\n });\n }\n });\n var ColorTool = Tool.extend({\n init: function (options) {\n Tool.fn.init.call(this, options);\n this.format = [{\n tags: [\n 'span',\n 'font'\n ]\n }];\n this.finder = new GreedyInlineFormatFinder(this.format, options.cssAttr);\n },\n options: { palette: 'websafe' },\n update: function () {\n this._widget.close();\n },\n command: function (commandArguments) {\n var options = this.options, format = this.format, style = {};\n return new Editor.FormatCommand(extend(commandArguments, {\n formatter: function () {\n style[options.domAttr] = commandArguments.value;\n return new GreedyInlineFormatter(format, { style: style }, options.cssAttr);\n }\n }));\n },\n initialize: function (ui, initOptions) {\n var that = this, editor = initOptions.editor, toolName = this.name, options = extend({}, ColorTool.fn.options, this.options), palette = options.palette, columns = options.columns;\n ui = this._widget = new kendo.ui.ColorPicker(ui, {\n toolIcon: 'k-icon k-i-' + EditorUtils.getToolCssClass(options.name),\n palette: palette,\n columns: columns,\n change: function () {\n var color = ui.value();\n if (kendo.support.browser.msie && that.storedRange && that._inputFocused) {\n editor.selectRange(that.storedRange);\n }\n if (color) {\n Tool.exec(editor, toolName, color);\n }\n delete that.storedRange;\n delete that._inputFocused;\n editor.focus();\n },\n open: function (e) {\n var picker = e.sender;\n that.storedRange = editor.getRange();\n picker._popup.element.on(MOUSEDOWN_NS, function (e) {\n if (!$(e.target).is('input.k-color-value')) {\n e.preventDefault();\n }\n });\n if (!picker._popup.element.is('[unselectable=\\'on\\']')) {\n picker._popup.element.attr({ unselectable: 'on' }).find('*:not(input)').attr('unselectable', 'on').end().find('input').on('focus', function () {\n that._inputFocused = true;\n });\n }\n },\n close: function (e) {\n e.sender._popup.element.off(MOUSEDOWN_NS);\n if (kendo.support.browser.msie && that.storedRange && that._inputFocused) {\n editor.selectRange(that.storedRange);\n }\n },\n activate: function (e) {\n e.preventDefault();\n if (e.sender._value.toCssRgba() === 'rgba(255, 255, 255, 0)') {\n return;\n }\n ui.trigger('change');\n }\n });\n ui.wrapper.attr({\n title: initOptions.title,\n unselectable: 'on'\n }).find('*:not(input)').attr('unselectable', 'on');\n ui.value('transparent');\n }\n });\n extend(Editor, {\n InlineFormatFinder: InlineFormatFinder,\n InlineFormatter: InlineFormatter,\n DelayedExecutionTool: DelayedExecutionTool,\n GreedyInlineFormatFinder: GreedyInlineFormatFinder,\n GreedyInlineFormatter: GreedyInlineFormatter,\n InlineFormatTool: InlineFormatTool,\n FontTool: FontTool,\n ColorTool: ColorTool\n });\n registerFormat('bold', [\n {\n tags: [\n 'strong',\n 'b'\n ]\n },\n {\n tags: ['span'],\n attr: { style: { fontWeight: 'bold' } }\n }\n ]);\n registerTool('bold', new InlineFormatTool({\n key: 'B',\n ctrl: true,\n format: formats.bold,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Bold'\n })\n }));\n registerFormat('italic', [\n {\n tags: [\n 'em',\n 'i'\n ]\n },\n {\n tags: ['span'],\n attr: { style: { fontStyle: 'italic' } }\n }\n ]);\n registerTool('italic', new InlineFormatTool({\n key: 'I',\n ctrl: true,\n format: formats.italic,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Italic'\n })\n }));\n registerFormat('underline', [\n {\n tags: ['span'],\n attr: { style: { textDecoration: 'underline' } }\n },\n { tags: ['u'] }\n ]);\n registerTool('underline', new InlineFormatTool({\n key: 'U',\n ctrl: true,\n format: formats.underline,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Underline'\n })\n }));\n registerFormat('strikethrough', [\n {\n tags: [\n 'del',\n 'strike'\n ]\n },\n {\n tags: ['span'],\n attr: { style: { textDecoration: 'line-through' } }\n }\n ]);\n registerTool('strikethrough', new InlineFormatTool({\n format: formats.strikethrough,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Strikethrough'\n })\n }));\n registerFormat('superscript', [{ tags: ['sup'] }]);\n registerTool('superscript', new InlineFormatTool({\n format: formats.superscript,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Superscript'\n })\n }));\n registerFormat('subscript', [{ tags: ['sub'] }]);\n registerTool('subscript', new InlineFormatTool({\n format: formats.subscript,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Subscript'\n })\n }));\n registerTool('foreColor', new ColorTool({\n cssAttr: 'color',\n domAttr: 'color',\n name: 'foreColor',\n template: new ToolTemplate({\n template: EditorUtils.colorPickerTemplate,\n title: 'Color'\n })\n }));\n registerTool('backColor', new ColorTool({\n cssAttr: 'background-color',\n domAttr: 'backgroundColor',\n name: 'backColor',\n template: new ToolTemplate({\n template: EditorUtils.colorPickerTemplate,\n title: 'Background Color'\n })\n }));\n registerTool('fontName', new FontTool({\n cssAttr: 'font-family',\n domAttr: 'fontFamily',\n name: 'fontName',\n defaultValue: [{\n text: 'fontNameInherit',\n value: 'inherit'\n }],\n template: new ToolTemplate({\n template: EditorUtils.comboBoxTemplate,\n title: 'Font Name'\n })\n }));\n registerTool('fontSize', new FontTool({\n cssAttr: 'font-size',\n domAttr: 'fontSize',\n name: 'fontSize',\n defaultValue: [{\n text: 'fontSizeInherit',\n value: 'inherit'\n }],\n template: new ToolTemplate({\n template: EditorUtils.comboBoxTemplate,\n title: 'Font Size'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/link', ['editor/plugins/inlineformat'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, Class = kendo.Class, extend = $.extend, proxy = $.proxy, Editor = kendo.ui.editor, dom = Editor.Dom, RangeUtils = Editor.RangeUtils, EditorUtils = Editor.EditorUtils, Command = Editor.Command, Tool = Editor.Tool, ToolTemplate = Editor.ToolTemplate, InlineFormatter = Editor.InlineFormatter, InlineFormatFinder = Editor.InlineFormatFinder, textNodes = RangeUtils.textNodes, editableTextNodes = RangeUtils.editableTextNodes, registerTool = Editor.EditorUtils.registerTool, keys = kendo.keys;\n var HTTP_PROTOCOL = 'http://';\n var protocolRegExp = /^\\w*:\\/\\//;\n var endLinkCharsRegExp = /[\\w\\/\\$\\-_\\*\\?]/i;\n var LinkFormatFinder = Class.extend({\n findSuitable: function (sourceNode) {\n return dom.parentOfType(sourceNode, ['a']);\n }\n });\n var LinkFormatter = Class.extend({\n init: function () {\n this.finder = new LinkFormatFinder();\n },\n apply: function (range, attributes) {\n var nodes = this.immutables ? editableTextNodes(range) : textNodes(range);\n var markers, doc, formatter, a, parent;\n if (attributes.innerText) {\n doc = RangeUtils.documentFromRange(range);\n markers = RangeUtils.getMarkers(range);\n range.deleteContents();\n a = dom.create(doc, 'a', attributes);\n range.insertNode(a);\n parent = a.parentNode;\n if (dom.name(parent) == 'a') {\n dom.insertAfter(a, parent);\n }\n if (dom.emptyNode(parent)) {\n dom.remove(parent);\n }\n var ref = a;\n for (var i = 0; i < markers.length; i++) {\n dom.insertAfter(markers[i], ref);\n ref = markers[i];\n }\n if (markers.length) {\n dom.insertBefore(doc.createTextNode('\\uFEFF'), markers[1] || markers[0]);\n dom.insertAfter(doc.createTextNode('\\uFEFF'), markers[1] || markers[0]);\n range.setStartBefore(markers[0]);\n range.setEndAfter(markers[markers.length - 1]);\n }\n } else {\n formatter = new InlineFormatter([{ tags: ['a'] }], attributes);\n formatter.finder = this.finder;\n formatter.apply(nodes);\n }\n }\n });\n var UnlinkCommand = Command.extend({\n init: function (options) {\n var that = this;\n options.formatter = {\n toggle: function (range) {\n var nodes = that.immutables() ? editableTextNodes(range) : textNodes(range);\n new InlineFormatter([{ tags: ['a'] }]).remove(nodes);\n }\n };\n this.options = options;\n Command.fn.init.call(this, options);\n }\n });\n var LinkCommand = Command.extend({\n init: function (options) {\n var that;\n this.options = options;\n Command.fn.init.call(this, options);\n this.formatter = new LinkFormatter();\n if (!options.url) {\n this.attributes = null;\n this.async = true;\n } else {\n this.exec = function () {\n this.formatter.immutables = that && that.immutables();\n this.formatter.apply(options.range, {\n href: options.url,\n innerText: options.text || options.url,\n target: options.target\n });\n };\n }\n },\n _dialogTemplate: function () {\n return kendo.template('<div class=\"k-editor-dialog k-popup-edit-form\">' + '<div class=\"k-edit-form-container\">' + '<div class=\\'k-edit-label\\'>' + '<label for=\\'k-editor-link-url\\'>#: messages.linkWebAddress #</label>' + '</div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\\'text\\' class=\\'k-textbox\\' id=\\'k-editor-link-url\\'>' + '</div>' + '<div class=\\'k-edit-label k-editor-link-text-row\\'>' + '<label for=\\'k-editor-link-text\\'>#: messages.linkText #</label>' + '</div>' + '<div class=\\'k-edit-field k-editor-link-text-row\\'>' + '<input type=\\'text\\' class=\\'k-textbox\\' id=\\'k-editor-link-text\\'>' + '</div>' + '<div class=\\'k-edit-label\\'>' + '<label for=\\'k-editor-link-title\\'>#: messages.linkToolTip #</label>' + '</div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\\'text\\' class=\\'k-textbox\\' id=\\'k-editor-link-title\\'>' + '</div>' + '<div class=\\'k-edit-label\\'></div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\\'checkbox\\' class=\\'k-checkbox\\' id=\\'k-editor-link-target\\'>' + '<label for=\\'k-editor-link-target\\' class=\\'k-checkbox-label\\'>#: messages.linkOpenInNewWindow #</label>' + '</div>' + '<div class=\\'k-edit-buttons k-state-default\\'>' + '<button class=\"k-dialog-insert k-button k-primary\">#: messages.dialogInsert #</button>' + '<button class=\"k-dialog-close k-button\">#: messages.dialogCancel #</button>' + '</div>' + '</div>' + '</div>')({ messages: this.editor.options.messages });\n },\n exec: function () {\n var messages = this.editor.options.messages;\n this._initialText = '';\n this._range = this.lockRange(true);\n this.formatter.immutables = this.immutables();\n var nodes = textNodes(this._range);\n var a = nodes.length ? this.formatter.finder.findSuitable(nodes[0]) : null;\n var img = nodes.length && dom.name(nodes[0]) == 'img';\n var dialog = this.createDialog(this._dialogTemplate(), {\n title: messages.createLink,\n close: proxy(this._close, this),\n visible: false\n });\n if (a) {\n this._range.selectNodeContents(a);\n nodes = textNodes(this._range);\n }\n this._initialText = this.linkText(nodes);\n dialog.find('.k-dialog-insert').click(proxy(this._apply, this)).end().find('.k-dialog-close').click(proxy(this._close, this)).end().find('.k-edit-field input').keydown(proxy(this._keydown, this)).end().find('#k-editor-link-url').val(this.linkUrl(a)).end().find('#k-editor-link-text').val(this._initialText).end().find('#k-editor-link-title').val(a ? a.title : '').end().find('#k-editor-link-target').attr('checked', a ? a.target == '_blank' : false).end().find('.k-editor-link-text-row').toggle(!img);\n this._dialog = dialog.data('kendoWindow').center().open();\n $('#k-editor-link-url', dialog).focus().select();\n },\n _keydown: function (e) {\n var keys = kendo.keys;\n if (e.keyCode == keys.ENTER) {\n this._apply(e);\n } else if (e.keyCode == keys.ESC) {\n this._close(e);\n }\n },\n _apply: function (e) {\n var element = this._dialog.element;\n var href = $('#k-editor-link-url', element).val();\n var title, text, target;\n var textInput = $('#k-editor-link-text', element);\n if (href && href != HTTP_PROTOCOL) {\n if (href.indexOf('@') > 0 && !/^(\\w+:)|(\\/\\/)/i.test(href)) {\n href = 'mailto:' + href;\n }\n this.attributes = { href: href };\n title = $('#k-editor-link-title', element).val();\n if (title) {\n this.attributes.title = title;\n }\n if (textInput.is(':visible')) {\n text = textInput.val();\n if (!text && !this._initialText) {\n this.attributes.innerText = href;\n } else if (text && text !== this._initialText) {\n this.attributes.innerText = dom.stripBom(text);\n }\n }\n target = $('#k-editor-link-target', element).is(':checked');\n this.attributes.target = target ? '_blank' : null;\n this.formatter.apply(this._range, this.attributes);\n }\n this._close(e);\n if (this.change) {\n this.change();\n }\n },\n _close: function (e) {\n e.preventDefault();\n this._dialog.destroy();\n dom.windowFromDocument(RangeUtils.documentFromRange(this._range)).focus();\n this.releaseRange(this._range);\n },\n linkUrl: function (anchor) {\n if (anchor) {\n return anchor.getAttribute('href', 2);\n }\n return HTTP_PROTOCOL;\n },\n linkText: function (nodes) {\n var text = '';\n var i;\n for (i = 0; i < nodes.length; i++) {\n text += nodes[i].nodeValue;\n }\n return dom.stripBom(text || '');\n },\n redo: function () {\n var range = this.lockRange(true);\n this.formatter.apply(range, this.attributes);\n this.releaseRange(range);\n }\n });\n var AutoLinkCommand = Command.extend({\n init: function (options) {\n Command.fn.init.call(this, options);\n this.formatter = new LinkFormatter();\n },\n exec: function () {\n var detectedLink = this.detectLink();\n if (!detectedLink) {\n return;\n }\n var range = this.getRange();\n var linkMarker = new kendo.ui.editor.Marker();\n var linkRange = range.cloneRange();\n linkRange.setStart(detectedLink.start.node, detectedLink.start.offset);\n linkRange.setEnd(detectedLink.end.node, detectedLink.end.offset);\n range = this.lockRange();\n linkMarker.add(linkRange);\n this.formatter.apply(linkRange, { href: this._ensureWebProtocol(detectedLink.text) });\n linkMarker.remove(linkRange);\n this.releaseRange(range);\n },\n detectLink: function () {\n var range = this.getRange();\n var startNode = range.startContainer;\n var startOffset = range.startOffset;\n var prev = startNode.previousSibling;\n if (!prev && (dom.isBom(startNode) && !startNode.nextSibling || !startOffset && dom.isDataNode(startNode))) {\n startNode = startNode.parentNode;\n startOffset = 0;\n }\n var traverser = new LeftDomTextTraverser({\n node: startNode,\n offset: startOffset,\n cancelAtNode: function (node) {\n return node && dom.name(node) === 'a';\n }\n });\n var detection = new DomTextLinkDetection(traverser);\n return detection.detectLink();\n },\n changesContent: function () {\n return !!this.detectLink();\n },\n _ensureWebProtocol: function (linkText) {\n var hasProtocol = this._hasProtocolPrefix(linkText);\n return hasProtocol ? linkText : this._prefixWithWebProtocol(linkText);\n },\n _hasProtocolPrefix: function (linkText) {\n return protocolRegExp.test(linkText);\n },\n _prefixWithWebProtocol: function (linkText) {\n return HTTP_PROTOCOL + linkText;\n }\n });\n var UnlinkTool = Tool.extend({\n init: function (options) {\n this.options = options;\n this.finder = new InlineFormatFinder([{ tags: ['a'] }]);\n Tool.fn.init.call(this, $.extend(options, { command: UnlinkCommand }));\n },\n initialize: function (ui, options) {\n Tool.fn.initialize.call(this, ui, options);\n ui.addClass('k-state-disabled');\n },\n update: function (ui, nodes) {\n ui.toggleClass('k-state-disabled', !this.finder.isFormatted(nodes)).removeClass('k-state-hover');\n }\n });\n var DomTextLinkDetection = Class.extend({\n init: function (traverser) {\n this.traverser = traverser;\n this.start = DomPos();\n this.end = DomPos();\n this.text = '';\n },\n detectLink: function () {\n var node = this.traverser.node;\n var offset = this.traverser.offset;\n if (dom.isDataNode(node)) {\n var text = node.data.substring(0, offset);\n if (/\\s{2}$/.test(dom.stripBom(text))) {\n return;\n }\n } else if (offset === 0) {\n var p = dom.closestEditableOfType(node, dom.blockElements);\n if (p && p.previousSibling) {\n this.traverser.init({ node: p.previousSibling });\n }\n }\n this.traverser.traverse($.proxy(this._detectEnd, this));\n if (!this.end.blank()) {\n this.traverser = this.traverser.clone(this.end);\n this.traverser.traverse($.proxy(this._detectStart, this));\n if (!this._isLinkDetected()) {\n var puntuationOptions = this.traverser.extendOptions(this.start);\n var puntuationTraverser = new RightDomTextTraverser(puntuationOptions);\n puntuationTraverser.traverse($.proxy(this._skipStartPuntuation, this));\n if (!this._isLinkDetected()) {\n this.start = DomPos();\n }\n }\n }\n if (this.start.blank()) {\n return null;\n } else {\n return {\n start: this.start,\n end: this.end,\n text: this.text\n };\n }\n },\n _isLinkDetected: function () {\n return protocolRegExp.test(this.text) || /^w{3}\\./i.test(this.text);\n },\n _detectEnd: function (text, node) {\n var i = lastIndexOfRegExp(text, endLinkCharsRegExp);\n if (i > -1) {\n this.end.node = node;\n this.end.offset = i + 1;\n return false;\n }\n },\n _detectStart: function (text, node) {\n var i = lastIndexOfRegExp(text, /\\s/);\n var ii = i + 1;\n this.text = text.substring(ii) + this.text;\n this.start.node = node;\n this.start.offset = ii;\n if (i > -1) {\n return false;\n }\n },\n _skipStartPuntuation: function (text, node, offset) {\n var i = indexOfRegExp(text, /\\w/);\n var ii = i;\n if (i === -1) {\n ii = text.length;\n }\n this.text = this.text.substring(ii);\n this.start.node = node;\n this.start.offset = ii + (offset | 0);\n if (i > -1) {\n return false;\n }\n }\n });\n function lastIndexOfRegExp(str, search) {\n var i = str.length;\n while (i-- && !search.test(str[i])) {\n }\n return i;\n }\n function indexOfRegExp(str, search) {\n var r = search.exec(str);\n return r ? r.index : -1;\n }\n var DomPos = function () {\n return {\n node: null,\n offset: null,\n blank: function () {\n return this.node === null && this.offset === null;\n }\n };\n };\n var DomTextTraverser = Class.extend({\n init: function (options) {\n this.node = options.node;\n this.offset = options.offset === undefined ? dom.isDataNode(this.node) && this.node.length || 0 : options.offset;\n this.cancelAtNode = options.cancelAtNode || this.cancelAtNode || $.noop;\n },\n traverse: function (callback) {\n if (!callback) {\n return;\n }\n this.cancel = false;\n this._traverse(callback, this.node, this.offset);\n },\n _traverse: function (callback, node, offset) {\n if (!node || this.cancel) {\n return;\n }\n if (node.nodeType === 3) {\n var text = node.data;\n if (offset !== undefined) {\n text = this.subText(text, offset);\n }\n this.cancel = callback(text, node, offset) === false;\n } else {\n var edgeNode = this.edgeNode(node);\n this.cancel = this.cancel || this.cancelAtNode(edgeNode);\n return this._traverse(callback, edgeNode);\n }\n var next = this.next(node);\n if (!next) {\n var parent = node.parentNode;\n while (!next && dom.isInline(parent)) {\n next = this.next(parent);\n parent = parent.parentNode;\n }\n }\n this.cancel = this.cancel || this.cancelAtNode(next);\n this._traverse(callback, next);\n },\n extendOptions: function (o) {\n return $.extend({\n node: this.node,\n offset: this.offset,\n cancelAtNode: this.cancelAtNode\n }, o || {});\n },\n edgeNode: function (node) {\n },\n next: function (node) {\n },\n subText: function (text, offset) {\n }\n });\n var LeftDomTextTraverser = DomTextTraverser.extend({\n subText: function (text, splitIndex) {\n return text.substring(0, splitIndex);\n },\n next: function (node) {\n return node.previousSibling;\n },\n edgeNode: function (node) {\n return node.lastChild;\n },\n clone: function (options) {\n var o = this.extendOptions(options);\n return new LeftDomTextTraverser(o);\n }\n });\n var RightDomTextTraverser = DomTextTraverser.extend({\n subText: function (text, splitIndex) {\n return text.substring(splitIndex);\n },\n next: function (node) {\n return node.nextSibling;\n },\n edgeNode: function (node) {\n return node.firstChild;\n },\n clone: function (options) {\n var o = this.extendOptions(options);\n return new RightDomTextTraverser(o);\n }\n });\n extend(kendo.ui.editor, {\n LinkFormatFinder: LinkFormatFinder,\n LinkFormatter: LinkFormatter,\n UnlinkCommand: UnlinkCommand,\n LinkCommand: LinkCommand,\n AutoLinkCommand: AutoLinkCommand,\n UnlinkTool: UnlinkTool,\n DomTextLinkDetection: DomTextLinkDetection,\n LeftDomTextTraverser: LeftDomTextTraverser,\n RightDomTextTraverser: RightDomTextTraverser\n });\n registerTool('createLink', new Tool({\n key: 'K',\n ctrl: true,\n command: LinkCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Create Link'\n })\n }));\n registerTool('unlink', new UnlinkTool({\n key: 'K',\n ctrl: true,\n shift: true,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Remove Link'\n })\n }));\n registerTool('autoLink', new Tool({\n key: [\n keys.ENTER,\n keys.SPACEBAR\n ],\n keyPressCommand: true,\n command: AutoLinkCommand\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/formatblock', ['editor/plugins/format'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, Class = kendo.Class, extend = $.extend, Editor = kendo.ui.editor, formats = kendo.ui.Editor.fn.options.formats, dom = Editor.Dom, ToolTemplate = Editor.ToolTemplate, FormatTool = Editor.FormatTool, EditorUtils = Editor.EditorUtils, registerTool = EditorUtils.registerTool, registerFormat = EditorUtils.registerFormat, RangeUtils = Editor.RangeUtils;\n var BlockFormatFinder = Class.extend({\n init: function (format) {\n this.format = format;\n },\n contains: function (node, children) {\n var i, len, child;\n for (i = 0, len = children.length; i < len; i++) {\n child = children[i];\n if (!child || !dom.isAncestorOrSelf(node, child)) {\n return false;\n }\n }\n return true;\n },\n findSuitable: function (nodes) {\n var format = this.format, suitable = [], i, len, candidate;\n for (i = 0, len = nodes.length; i < len; i++) {\n for (var f = format.length - 1; f >= 0; f--) {\n candidate = dom.ofType(nodes[i], format[f].tags) ? nodes[i] : dom.closestEditableOfType(nodes[i], format[f].tags);\n if (candidate) {\n break;\n }\n }\n if (!candidate || candidate.contentEditable === 'true') {\n return [];\n }\n if ($.inArray(candidate, suitable) < 0) {\n suitable.push(candidate);\n }\n }\n this._resolveListsItems(suitable);\n for (i = 0, len = suitable.length; i < len; i++) {\n if (this.contains(suitable[i], suitable)) {\n return [suitable[i]];\n }\n }\n return suitable;\n },\n _resolveListsItems: function (nodes) {\n var i, node, wrapper;\n for (i = 0; i < nodes.length; i++) {\n node = nodes[i];\n wrapper = dom.is(node, 'li') ? node : dom.wrapper(node);\n wrapper = wrapper && dom.list(wrapper) ? wrapper.children[0] : wrapper;\n if (dom.is(wrapper, 'li')) {\n node = nodes[i] = wrapper;\n }\n }\n },\n findFormat: function (sourceNode) {\n var format = this.format, i, len, node, tags, attributes;\n var editableParent = dom.editableParent(sourceNode);\n var immutables = this.options && this.options.immutables;\n var ImmutablesNS = Editor.Immutables;\n for (i = 0, len = format.length; i < len; i++) {\n node = sourceNode;\n tags = format[i].tags;\n attributes = format[i].attr;\n if (immutables && tags && tags[0] == 'immutable') {\n var immutable = ImmutablesNS.immutableParent(node);\n if (immutable && dom.attrEquals(immutable, attributes)) {\n return node;\n }\n }\n while (node && dom.isAncestorOf(editableParent, node)) {\n if (dom.ofType(node, tags) && dom.attrEquals(node, attributes)) {\n return node;\n }\n node = node.parentNode;\n }\n }\n return null;\n },\n getFormat: function (nodes) {\n var that = this, findFormat = function (node) {\n return that.findFormat(dom.isDataNode(node) ? node.parentNode : node);\n }, result = findFormat(nodes[0]), i, len;\n if (!result) {\n return '';\n }\n for (i = 1, len = nodes.length; i < len; i++) {\n if (result != findFormat(nodes[i])) {\n return '';\n }\n }\n return result.nodeName.toLowerCase();\n },\n isFormatted: function (nodes) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n if (!this.findFormat(nodes[i])) {\n return false;\n }\n }\n return true;\n }\n });\n var BlockFormatter = Class.extend({\n init: function (format, values) {\n this.format = format;\n this.values = values;\n this.finder = new BlockFormatFinder(format);\n },\n wrap: function (tag, attributes, nodes) {\n var commonAncestor = nodes.length == 1 ? dom.blockParentOrBody(nodes[0]) : dom.commonAncestor.apply(null, nodes);\n if (dom.isInline(commonAncestor)) {\n commonAncestor = dom.blockParentOrBody(commonAncestor);\n }\n var ancestors = dom.significantChildNodes(commonAncestor), position = dom.findNodeIndex(ancestors[0]), wrapper = dom.create(commonAncestor.ownerDocument, tag, attributes), i, ancestor;\n for (i = 0; i < ancestors.length; i++) {\n ancestor = ancestors[i];\n if (dom.isBlock(ancestor)) {\n dom.attr(ancestor, attributes);\n if (wrapper.childNodes.length) {\n dom.insertBefore(wrapper, ancestor);\n wrapper = wrapper.cloneNode(false);\n }\n position = dom.findNodeIndex(ancestor) + 1;\n continue;\n }\n wrapper.appendChild(ancestor);\n }\n if (wrapper.firstChild) {\n dom.insertAt(commonAncestor, wrapper, position);\n }\n },\n apply: function (nodes) {\n var format, values = this.values;\n function attributes(format) {\n return extend({}, format && format.attr, values);\n }\n this._handleImmutables(nodes, true);\n var images = dom.filter('img', nodes);\n var imageFormat = EditorUtils.formatByName('img', this.format);\n var imageAttributes = attributes(imageFormat);\n $.each(images, function () {\n dom.attr(this, imageAttributes);\n });\n if (images.length == nodes.length) {\n return;\n }\n var nonImages = dom.filter('img', nodes, true);\n var formatNodes = this.finder.findSuitable(nonImages);\n if (formatNodes.length) {\n for (var i = 0, len = formatNodes.length; i < len; i++) {\n format = EditorUtils.formatByName(dom.name(formatNodes[i]), this.format);\n dom.attr(formatNodes[i], attributes(format));\n }\n } else {\n format = this.format[0];\n this.wrap(format.tags[0], attributes(format), nonImages);\n }\n },\n _handleImmutables: function (nodes, applyFormatting) {\n if (!this.immutables()) {\n return;\n }\n var immutableFormat = EditorUtils.formatByName('immutable', this.format);\n if (!immutableFormat) {\n return;\n }\n var ImmutablesNS = Editor.Immutables;\n var l = nodes.length - 1;\n for (var i = l; i >= 0; i--) {\n var immutableParent = ImmutablesNS.immutableParent(nodes[i]);\n if (!immutableParent) {\n continue;\n }\n if (immutableParent !== nodes[i + 1]) {\n if (applyFormatting) {\n dom.attr(immutableParent, immutableFormat.attr);\n } else {\n dom.unstyle(immutableParent, immutableFormat.attr.style);\n }\n }\n nodes.splice(i, 1);\n }\n },\n immutables: function () {\n return this.editor && this.editor.options.immutables;\n },\n remove: function (nodes) {\n var i, l, formatNode, namedFormat, name;\n this._handleImmutables(nodes, false);\n for (i = 0, l = nodes.length; i < l; i++) {\n formatNode = this.finder.findFormat(nodes[i]);\n if (formatNode) {\n name = dom.name(formatNode);\n namedFormat = EditorUtils.formatByName(name, this.format);\n if (namedFormat.attr.style) {\n dom.unstyle(formatNode, namedFormat.attr.style);\n }\n if (namedFormat.attr.className) {\n dom.removeClass(formatNode, namedFormat.attr.className);\n }\n }\n }\n },\n toggle: function (range) {\n var that = this, nodes = dom.filterBy(RangeUtils.nodes(range), dom.htmlIndentSpace, true);\n if (that.finder.isFormatted(nodes)) {\n that.remove(nodes);\n } else {\n that.apply(nodes);\n }\n }\n });\n var GreedyBlockFormatter = Class.extend({\n init: function (format, values) {\n var that = this;\n that.format = format;\n that.values = values;\n that.finder = new BlockFormatFinder(format);\n },\n apply: function (nodes) {\n var format = this.format;\n var blocks = dom.blockParents(nodes);\n var formatTag = format[0].tags[0];\n var i, len, list, formatter, range;\n var element;\n var tagName;\n var block;\n var immutalbeParent;\n if (blocks.length) {\n for (i = 0, len = blocks.length; i < len; i++) {\n block = blocks[i];\n immutalbeParent = this.immutables() && Editor.Immutables.immutableParent(block);\n if (!immutalbeParent) {\n tagName = dom.name(block);\n if (tagName == 'li') {\n list = block.parentNode;\n formatter = new Editor.ListFormatter(list.nodeName.toLowerCase(), formatTag);\n range = this.editor.createRange();\n range.selectNode(blocks[i]);\n formatter.toggle(range);\n } else if (formatTag && (tagName == 'td' || block.attributes.contentEditable)) {\n new BlockFormatter(format, this.values).apply(block.childNodes);\n } else {\n element = dom.changeTag(block, formatTag);\n dom.attr(element, format[0].attr);\n }\n }\n }\n } else {\n var blockFormatter = new BlockFormatter(format, this.values);\n blockFormatter.editor = this.editor;\n blockFormatter.apply(nodes);\n }\n },\n toggle: function (range) {\n var nodes = RangeUtils.textNodes(range);\n if (!nodes.length) {\n range.selectNodeContents(range.commonAncestorContainer);\n nodes = RangeUtils.textNodes(range);\n if (!nodes.length) {\n nodes = dom.significantChildNodes(range.commonAncestorContainer);\n }\n }\n this.apply(nodes);\n },\n immutables: function () {\n return this.editor && this.editor.options.immutables;\n }\n });\n var BlockFormatTool = FormatTool.extend({\n init: function (options) {\n FormatTool.fn.init.call(this, extend(options, {\n finder: new BlockFormatFinder(options.format),\n formatter: function () {\n return new BlockFormatter(options.format);\n }\n }));\n }\n });\n extend(Editor, {\n BlockFormatFinder: BlockFormatFinder,\n BlockFormatter: BlockFormatter,\n GreedyBlockFormatter: GreedyBlockFormatter,\n BlockFormatTool: BlockFormatTool\n });\n var listElements = [\n 'ul',\n 'ol',\n 'li'\n ];\n registerFormat('justifyLeft', [\n {\n tags: dom.nonListBlockElements,\n attr: { style: { textAlign: 'left' } }\n },\n {\n tags: ['img'],\n attr: {\n style: {\n 'float': 'left',\n display: '',\n marginLeft: '',\n marginRight: ''\n }\n }\n },\n {\n tags: ['immutable'],\n attr: {\n style: {\n 'float': 'left',\n display: '',\n marginLeft: '',\n marginRight: ''\n }\n }\n },\n {\n tags: listElements,\n attr: {\n style: {\n textAlign: 'left',\n listStylePosition: ''\n }\n }\n }\n ]);\n registerTool('justifyLeft', new BlockFormatTool({\n format: formats.justifyLeft,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Justify Left'\n })\n }));\n registerFormat('justifyCenter', [\n {\n tags: dom.nonListBlockElements,\n attr: { style: { textAlign: 'center' } }\n },\n {\n tags: ['img'],\n attr: {\n style: {\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto',\n 'float': ''\n }\n }\n },\n {\n tags: ['immutable'],\n attr: {\n style: {\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto',\n 'float': ''\n }\n }\n },\n {\n tags: listElements,\n attr: {\n style: {\n textAlign: 'center',\n listStylePosition: 'inside'\n }\n }\n }\n ]);\n registerTool('justifyCenter', new BlockFormatTool({\n format: formats.justifyCenter,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Justify Center'\n })\n }));\n registerFormat('justifyRight', [\n {\n tags: dom.nonListBlockElements,\n attr: { style: { textAlign: 'right' } }\n },\n {\n tags: ['img'],\n attr: {\n style: {\n 'float': 'right',\n display: '',\n marginLeft: '',\n marginRight: ''\n }\n }\n },\n {\n tags: ['immutable'],\n attr: {\n style: {\n 'float': 'right',\n display: '',\n marginLeft: '',\n marginRight: ''\n }\n }\n },\n {\n tags: listElements,\n attr: {\n style: {\n textAlign: 'right',\n listStylePosition: 'inside'\n }\n }\n }\n ]);\n registerTool('justifyRight', new BlockFormatTool({\n format: formats.justifyRight,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Justify Right'\n })\n }));\n registerFormat('justifyFull', [\n {\n tags: dom.nonListBlockElements,\n attr: { style: { textAlign: 'justify' } }\n },\n {\n tags: ['img'],\n attr: {\n style: {\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto',\n 'float': ''\n }\n }\n },\n {\n tags: ['immutable'],\n attr: {\n style: {\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto',\n 'float': ''\n }\n }\n },\n {\n tags: listElements,\n attr: {\n style: {\n textAlign: 'justify',\n listStylePosition: ''\n }\n }\n }\n ]);\n registerTool('justifyFull', new BlockFormatTool({\n format: formats.justifyFull,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Justify Full'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/lists', ['editor/plugins/formatblock'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, Class = kendo.Class, extend = $.extend, Editor = kendo.ui.editor, dom = Editor.Dom, RangeUtils = Editor.RangeUtils, EditorUtils = Editor.EditorUtils, Command = Editor.Command, ToolTemplate = Editor.ToolTemplate, FormatTool = Editor.FormatTool, BlockFormatFinder = Editor.BlockFormatFinder, textNodes = RangeUtils.textNodes, registerTool = Editor.EditorUtils.registerTool;\n var ListFormatFinder = BlockFormatFinder.extend({\n init: function (tag) {\n this.tag = tag;\n var tags = this.tags = [\n tag == 'ul' ? 'ol' : 'ul',\n tag\n ];\n BlockFormatFinder.fn.init.call(this, [{ tags: tags }]);\n },\n isFormatted: function (nodes) {\n var formatNodes = [];\n var formatNode, i;\n for (i = 0; i < nodes.length; i++) {\n formatNode = this.findFormat(nodes[i]);\n if (formatNode && dom.name(formatNode) == this.tag) {\n formatNodes.push(formatNode);\n }\n }\n if (formatNodes.length < 1) {\n return false;\n }\n if (formatNodes.length != nodes.length) {\n return false;\n }\n for (i = 0; i < formatNodes.length; i++) {\n if (formatNodes[i].parentNode != formatNode.parentNode) {\n break;\n }\n if (formatNodes[i] != formatNode) {\n return false;\n }\n }\n return true;\n },\n findSuitable: function (nodes) {\n var candidate = this.findFormat(nodes[0]);\n if (candidate && dom.name(candidate) == this.tag) {\n return candidate;\n }\n return null;\n }\n });\n var ListFormatter = Class.extend({\n init: function (tag, unwrapTag) {\n var that = this;\n that.finder = new ListFormatFinder(tag);\n that.tag = tag;\n that.unwrapTag = unwrapTag;\n },\n isList: function (node) {\n return dom.list(node);\n },\n immutables: function () {\n return this.editor && !!this.editor.options.immutables;\n },\n wrap: function (list, nodes) {\n var li = dom.create(list.ownerDocument, 'li'), i, node, isImmutable = this.immutables() ? Editor.Immutables.immutable : $.noop;\n for (i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (dom.is(node, 'li')) {\n list.appendChild(node);\n continue;\n }\n if (this.isList(node)) {\n while (node.firstChild) {\n list.appendChild(node.firstChild);\n }\n continue;\n }\n if (dom.is(node, 'td')) {\n while (node.firstChild) {\n li.appendChild(node.firstChild);\n }\n list.appendChild(li);\n node.appendChild(list);\n list = list.cloneNode(false);\n li = li.cloneNode(false);\n continue;\n }\n li.appendChild(node);\n if (dom.isBlock(node)) {\n list.appendChild(li);\n if (!isImmutable(node)) {\n dom.unwrap(node);\n }\n li = li.cloneNode(false);\n }\n }\n if (li.firstChild) {\n list.appendChild(li);\n }\n },\n containsAny: function (parent, nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (dom.isAncestorOrSelf(parent, nodes[i])) {\n return true;\n }\n }\n return false;\n },\n suitable: function (candidate, nodes) {\n if (candidate.className == 'k-marker') {\n var sibling = candidate.nextSibling;\n if (sibling && dom.isBlock(sibling)) {\n return false;\n }\n sibling = candidate.previousSibling;\n if (sibling && dom.isBlock(sibling)) {\n return false;\n }\n }\n return this.containsAny(candidate, nodes) || dom.isInline(candidate) || candidate.nodeType == 3;\n },\n _parentLists: function (node) {\n var editable = dom.closestEditable(node);\n return $(node).parentsUntil(editable, 'ul,ol');\n },\n split: function (range) {\n var nodes = textNodes(range);\n var start, end, parents;\n if (nodes.length) {\n start = dom.parentOfType(nodes[0], ['li']);\n end = dom.parentOfType(nodes[nodes.length - 1], ['li']);\n range.setStartBefore(start);\n range.setEndAfter(end);\n for (var i = 0, l = nodes.length; i < l; i++) {\n var formatNode = this.finder.findFormat(nodes[i]);\n if (formatNode) {\n parents = this._parentLists(formatNode);\n if (parents.length) {\n RangeUtils.split(range, parents.last()[0], true);\n } else {\n RangeUtils.split(range, formatNode, true);\n }\n }\n }\n }\n },\n merge: function (tag, formatNode) {\n var prev = formatNode.previousSibling, next;\n while (prev && (prev.className == 'k-marker' || prev.nodeType == 3 && dom.isWhitespace(prev))) {\n prev = prev.previousSibling;\n }\n if (prev && dom.name(prev) == tag) {\n while (formatNode.firstChild) {\n prev.appendChild(formatNode.firstChild);\n }\n dom.remove(formatNode);\n formatNode = prev;\n }\n next = formatNode.nextSibling;\n while (next && (next.className == 'k-marker' || next.nodeType == 3 && dom.isWhitespace(next))) {\n next = next.nextSibling;\n }\n if (next && dom.name(next) == tag) {\n while (formatNode.lastChild) {\n next.insertBefore(formatNode.lastChild, next.firstChild);\n }\n dom.remove(formatNode);\n }\n },\n breakable: function (node) {\n return node != node.ownerDocument.body && !/table|tbody|tr|td/.test(dom.name(node)) && !node.attributes.contentEditable;\n },\n applyOnSection: function (section, nodes) {\n var tag = this.tag;\n var commonAncestor = dom.closestSplittableParent(nodes);\n var ancestors = [];\n var formatNode = this.finder.findSuitable(nodes);\n if (!formatNode) {\n formatNode = new ListFormatFinder(tag == 'ul' ? 'ol' : 'ul').findSuitable(nodes);\n }\n var childNodes;\n if (/table|tbody/.test(dom.name(commonAncestor))) {\n childNodes = $.map(nodes, function (node) {\n return dom.parentOfType(node, ['td']);\n });\n } else {\n childNodes = dom.significantChildNodes(commonAncestor);\n if ($.grep(childNodes, dom.isBlock).length) {\n childNodes = $.grep(childNodes, $.proxy(function (node) {\n return this.containsAny(node, nodes);\n }, this));\n }\n if (!childNodes.length) {\n childNodes = nodes;\n }\n }\n function pushAncestor() {\n ancestors.push(this);\n }\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n var suitable = (!formatNode || !dom.isAncestorOrSelf(formatNode, child)) && this.suitable(child, nodes);\n if (!suitable) {\n continue;\n }\n if (formatNode && this.isList(child)) {\n $.each(child.children, pushAncestor);\n dom.remove(child);\n } else {\n ancestors.push(child);\n }\n }\n if (ancestors.length == childNodes.length && this.breakable(commonAncestor)) {\n ancestors = [commonAncestor];\n }\n if (!formatNode) {\n formatNode = dom.create(commonAncestor.ownerDocument, tag);\n if (dom.isBlock(ancestors[0])) {\n dom.mergeAttributes(ancestors[0], formatNode);\n }\n dom.insertBefore(formatNode, ancestors[0]);\n }\n this.wrap(formatNode, ancestors);\n while (dom.isBom(formatNode.nextSibling)) {\n dom.remove(formatNode.nextSibling);\n }\n if (!dom.is(formatNode, tag)) {\n dom.changeTag(formatNode, tag);\n }\n this.merge(tag, formatNode);\n },\n apply: function (nodes) {\n var i = 0, sections = [], lastSection, lastNodes, section, node, l = nodes.length, immutableParent = this.immutables() ? Editor.Immutables.immutableParent : $.noop;\n function addLastSection() {\n if (lastSection) {\n sections.push({\n section: lastSection,\n nodes: lastNodes\n });\n }\n }\n for (i = 0; i < l; i++) {\n node = immutableParent(nodes[i]) || nodes[i];\n section = dom.closestEditable(node, [\n 'td',\n 'body'\n ]);\n if (!lastSection || section != lastSection) {\n addLastSection();\n lastNodes = [node];\n lastSection = section;\n } else {\n lastNodes.push(node);\n }\n }\n addLastSection();\n for (i = 0; i < sections.length; i++) {\n this.applyOnSection(sections[i].section, sections[i].nodes);\n }\n },\n unwrap: function (ul) {\n var fragment = ul.ownerDocument.createDocumentFragment(), unwrapTag = this.unwrapTag, parents, li, p, child;\n for (li = ul.firstChild; li; li = li.nextSibling) {\n p = dom.create(ul.ownerDocument, unwrapTag || 'p');\n while (li.firstChild) {\n child = li.firstChild;\n if (dom.isBlock(child)) {\n if (p.firstChild) {\n fragment.appendChild(p);\n p = dom.create(ul.ownerDocument, unwrapTag || 'p');\n }\n fragment.appendChild(child);\n } else {\n p.appendChild(child);\n }\n }\n if (p.firstChild) {\n fragment.appendChild(p);\n }\n }\n parents = this._parentLists(ul);\n if (parents[0]) {\n dom.insertAfter(fragment, parents.last()[0]);\n parents.last().remove();\n } else {\n dom.insertAfter(fragment, ul);\n }\n dom.remove(ul);\n },\n remove: function (nodes) {\n var formatNode;\n for (var i = 0, l = nodes.length; i < l; i++) {\n formatNode = this.finder.findFormat(nodes[i]);\n if (formatNode) {\n this.unwrap(formatNode);\n }\n }\n },\n toggle: function (range) {\n var that = this, nodes = textNodes(range), ancestor = range.commonAncestorContainer;\n if (!nodes.length) {\n range.selectNodeContents(ancestor);\n nodes = textNodes(range);\n if (!nodes.length) {\n var text = ancestor.ownerDocument.createTextNode('');\n range.startContainer.appendChild(text);\n nodes = [text];\n range.selectNode(text.parentNode);\n }\n }\n nodes = dom.filterBy(nodes, dom.htmlIndentSpace, true);\n if (that.finder.isFormatted(nodes)) {\n that.split(range);\n that.remove(nodes);\n } else {\n that.apply(nodes);\n }\n }\n });\n var ListCommand = Command.extend({\n init: function (options) {\n options.formatter = new ListFormatter(options.tag);\n Command.fn.init.call(this, options);\n }\n });\n var ListTool = FormatTool.extend({\n init: function (options) {\n this.options = options;\n FormatTool.fn.init.call(this, extend(options, { finder: new ListFormatFinder(options.tag) }));\n },\n command: function (commandArguments) {\n return new ListCommand(extend(commandArguments, { tag: this.options.tag }));\n }\n });\n extend(Editor, {\n ListFormatFinder: ListFormatFinder,\n ListFormatter: ListFormatter,\n ListCommand: ListCommand,\n ListTool: ListTool\n });\n registerTool('insertUnorderedList', new ListTool({\n tag: 'ul',\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Insert unordered list'\n })\n }));\n registerTool('insertOrderedList', new ListTool({\n tag: 'ol',\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Insert ordered list'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/formatting', ['editor/plugins/inlineformat'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, Editor = kendo.ui.editor, Tool = Editor.Tool, ToolTemplate = Editor.ToolTemplate, DelayedExecutionTool = Editor.DelayedExecutionTool, Command = Editor.Command, dom = Editor.Dom, EditorUtils = Editor.EditorUtils, RangeUtils = Editor.RangeUtils, registerTool = EditorUtils.registerTool;\n var FormattingTool = DelayedExecutionTool.extend({\n init: function (options) {\n var that = this;\n Tool.fn.init.call(that, kendo.deepExtend({}, that.options, options));\n that.type = 'kendoSelectBox';\n that.finder = {\n getFormat: function () {\n return '';\n }\n };\n },\n options: {\n items: [\n {\n text: 'Paragraph',\n value: 'p'\n },\n {\n text: 'Quotation',\n value: 'blockquote'\n },\n {\n text: 'Heading 1',\n value: 'h1'\n },\n {\n text: 'Heading 2',\n value: 'h2'\n },\n {\n text: 'Heading 3',\n value: 'h3'\n },\n {\n text: 'Heading 4',\n value: 'h4'\n },\n {\n text: 'Heading 5',\n value: 'h5'\n },\n {\n text: 'Heading 6',\n value: 'h6'\n }\n ],\n width: 110\n },\n toFormattingItem: function (item) {\n var value = item.value;\n if (!value) {\n return item;\n }\n if (item.tag || item.className) {\n return item;\n }\n var dot = value.indexOf('.');\n if (dot === 0) {\n item.className = value.substring(1);\n } else if (dot == -1) {\n item.tag = value;\n } else {\n item.tag = value.substring(0, dot);\n item.className = value.substring(dot + 1);\n }\n return item;\n },\n command: function (args) {\n var that = this;\n var item = args.value;\n item = this.toFormattingItem(item);\n return new Editor.FormatCommand({\n range: args.range,\n formatter: function () {\n var formatter, tags = (item.tag || item.context || 'span').split(','), format = [{\n tags: tags,\n attr: { className: item.className || '' }\n }];\n if ($.inArray(tags[0], dom.inlineElements) >= 0) {\n formatter = new Editor.GreedyInlineFormatter(format);\n } else {\n formatter = new Editor.GreedyBlockFormatter(format);\n }\n formatter.editor = that.editor;\n return formatter;\n }\n });\n },\n initialize: function (ui, initOptions) {\n var editor = initOptions.editor;\n var options = this.options;\n var toolName = options.name;\n var that = this;\n that.editor = editor;\n ui.width(options.width);\n ui.kendoSelectBox({\n dataTextField: 'text',\n dataValueField: 'value',\n dataSource: options.items || editor.options[toolName],\n title: editor.options.messages[toolName],\n autoSize: true,\n change: function () {\n var dataItem = this.dataItem();\n if (dataItem) {\n Tool.exec(editor, toolName, dataItem.toJSON());\n }\n },\n dataBound: function () {\n var i, items = this.dataSource.data();\n for (i = 0; i < items.length; i++) {\n items[i] = that.toFormattingItem(items[i]);\n }\n },\n highlightFirst: false,\n template: kendo.template('<span unselectable=\"on\" style=\"display:block;#=(data.style||\"\")#\">#:data.text#</span>')\n });\n ui.addClass('k-decorated').closest('.k-widget').removeClass('k-' + toolName).find('*').addBack().attr('unselectable', 'on');\n },\n getFormattingValue: function (items, nodes) {\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var tag = item.tag || item.context || '';\n var className = item.className ? '.' + item.className : '';\n var selector = tag + className;\n var element = $(nodes[0]).closest(selector)[0];\n if (!element) {\n continue;\n }\n if (nodes.length == 1) {\n return item.value;\n }\n for (var n = 1; n < nodes.length; n++) {\n if (!$(nodes[n]).closest(selector)[0]) {\n break;\n } else if (n == nodes.length - 1) {\n return item.value;\n }\n }\n }\n return '';\n },\n update: function (ui, nodes) {\n var selectBox = $(ui).data(this.type);\n if (!selectBox) {\n return;\n }\n var dataSource = selectBox.dataSource, items = dataSource.data(), i, context, ancestor = dom.commonAncestor.apply(null, nodes);\n if (ancestor != dom.closestEditable(ancestor) && this._ancestor == ancestor) {\n return;\n } else {\n this._ancestor = ancestor;\n }\n for (i = 0; i < items.length; i++) {\n context = items[i].context;\n items[i].visible = !context || !!$(ancestor).closest(context).length;\n }\n dataSource.filter([{\n field: 'visible',\n operator: 'eq',\n value: true\n }]);\n DelayedExecutionTool.fn.update.call(this, ui, nodes);\n selectBox.value(this.getFormattingValue(dataSource.view(), nodes));\n selectBox.wrapper.toggleClass('k-state-disabled', !dataSource.view().length);\n },\n destroy: function () {\n this._ancestor = null;\n }\n });\n var CleanFormatCommand = Command.extend({\n exec: function () {\n var range = this.lockRange(true);\n this.tagsToClean = this.options.remove || 'strong,em,span,sup,sub,del,b,i,u,font'.split(',');\n RangeUtils.wrapSelectedElements(range);\n var nodes = RangeUtils.mapAll(range, function (node) {\n return node;\n });\n for (var c = nodes.length - 1; c >= 0; c--) {\n var node = nodes[c];\n if (!this.immutableParent(node)) {\n this.clean(node);\n }\n }\n this.releaseRange(range);\n },\n clean: function (node) {\n if (!node || dom.isMarker(node)) {\n return;\n }\n var name = dom.name(node);\n if (name == 'ul' || name == 'ol') {\n var listFormatter = new Editor.ListFormatter(name);\n var prev = node.previousSibling;\n var next = node.nextSibling;\n listFormatter.unwrap(node);\n for (; prev && prev != next; prev = prev.nextSibling) {\n this.clean(prev);\n }\n } else if (name == 'blockquote') {\n dom.changeTag(node, 'p');\n } else if (node.nodeType == 1 && !dom.insignificant(node)) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n this.clean(node.childNodes[i]);\n }\n node.removeAttribute('style');\n node.removeAttribute('class');\n } else {\n unwrapListItem(node);\n }\n if ($.inArray(name, this.tagsToClean) > -1) {\n dom.unwrap(node);\n }\n },\n immutableParent: function (node) {\n return this.immutables() && Editor.Immutables.immutableParent(node);\n }\n });\n function unwrapListItem(node) {\n var li = dom.closestEditableOfType(node, ['li']);\n if (li) {\n var listFormatter = new Editor.ListFormatter(dom.name(li.parentNode));\n var range = kendo.ui.editor.W3CRange.fromNode(node);\n range.selectNode(li);\n listFormatter.toggle(range);\n }\n }\n $.extend(Editor, {\n FormattingTool: FormattingTool,\n CleanFormatCommand: CleanFormatCommand\n });\n registerTool('formatting', new FormattingTool({\n template: new ToolTemplate({\n template: EditorUtils.dropDownListTemplate,\n title: 'Format'\n })\n }));\n registerTool('cleanFormatting', new Tool({\n command: CleanFormatCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Clean formatting'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/image', [\n 'kendo.imagebrowser',\n 'editor/command'\n ], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, Editor = kendo.ui.editor, EditorUtils = Editor.EditorUtils, dom = Editor.Dom, registerTool = EditorUtils.registerTool, ToolTemplate = Editor.ToolTemplate, RangeUtils = Editor.RangeUtils, Command = Editor.Command, keys = kendo.keys, KEDITORIMAGEURL = '#k-editor-image-url', KEDITORIMAGETITLE = '#k-editor-image-title', KEDITORIMAGEWIDTH = '#k-editor-image-width', KEDITORIMAGEHEIGHT = '#k-editor-image-height';\n var ImageCommand = Command.extend({\n init: function (options) {\n var that = this;\n Command.fn.init.call(that, options);\n that.async = true;\n that.attributes = {};\n },\n insertImage: function (img, range) {\n var attributes = this.attributes;\n var doc = RangeUtils.documentFromRange(range);\n if (attributes.src && attributes.src != 'http://') {\n var removeIEAttributes = function () {\n setTimeout(function () {\n if (!attributes.width) {\n img.removeAttribute('width');\n }\n if (!attributes.height) {\n img.removeAttribute('height');\n }\n img.removeAttribute('complete');\n });\n };\n if (!img) {\n img = dom.create(doc, 'img', attributes);\n img.onload = img.onerror = removeIEAttributes;\n range.deleteContents();\n range.insertNode(img);\n if (!img.nextSibling) {\n dom.insertAfter(doc.createTextNode('\\uFEFF'), img);\n }\n removeIEAttributes();\n range.setStartAfter(img);\n range.setEndAfter(img);\n RangeUtils.selectRange(range);\n return true;\n } else {\n img.onload = img.onerror = removeIEAttributes;\n dom.attr(img, attributes);\n removeIEAttributes();\n }\n }\n return false;\n },\n _dialogTemplate: function (showBrowser) {\n return kendo.template('<div class=\"k-editor-dialog k-popup-edit-form\">' + '<div class=\"k-edit-form-container\">' + '<div class=\"k-edit-form-content\">' + '# if (showBrowser) { #' + '<div class=\"k-filebrowser k-imagebrowser\"></div>' + '# } #' + '<div class=\\'k-edit-label\\'>' + '<label for=\"k-editor-image-url\">#: messages.imageWebAddress #</label>' + '</div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\"text\" class=\"k-textbox\" id=\"k-editor-image-url\">' + '</div>' + '<div class=\\'k-edit-label\\'>' + '<label for=\"k-editor-image-title\">#: messages.imageAltText #</label>' + '</div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\"text\" class=\"k-textbox\" id=\"k-editor-image-title\">' + '</div>' + '<div class=\\'k-edit-label\\'>' + '<label for=\"k-editor-image-width\">#: messages.imageWidth #</label>' + '</div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\"text\" class=\"k-textbox\" id=\"k-editor-image-width\">' + '</div>' + '<div class=\\'k-edit-label\\'>' + '<label for=\"k-editor-image-height\">#: messages.imageHeight #</label>' + '</div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\"text\" class=\"k-textbox\" id=\"k-editor-image-height\">' + '</div>' + '</div>' + '<div class=\"k-edit-buttons k-state-default\">' + '<button class=\"k-dialog-insert k-button k-primary\">#: messages.dialogInsert #</button>' + '<button class=\"k-dialog-close k-button\">#: messages.dialogCancel #</button>' + '</div>' + '</div>' + '</div>')({\n messages: this.editor.options.messages,\n showBrowser: showBrowser\n });\n },\n redo: function () {\n var that = this, range = that.lockRange();\n if (!that.insertImage(RangeUtils.image(range), range)) {\n that.releaseRange(range);\n }\n },\n exec: function () {\n var that = this, range = that.lockRange(), applied = false, img = RangeUtils.image(range), imageWidth = img && img.getAttribute('width') || '', imageHeight = img && img.getAttribute('height') || '', dialog, isIE = kendo.support.browser.msie, options = that.editor.options, messages = options.messages, imageBrowser = options.imageBrowser, showBrowser = !!(kendo.ui.ImageBrowser && imageBrowser && imageBrowser.transport && imageBrowser.transport.read !== undefined), dialogOptions = {\n title: messages.insertImage,\n visible: false,\n resizable: showBrowser\n };\n this.expandImmutablesIn(range);\n function apply(e) {\n var element = dialog.element, w = parseInt(element.find(KEDITORIMAGEWIDTH).val(), 10), h = parseInt(element.find(KEDITORIMAGEHEIGHT).val(), 10);\n that.attributes = {\n src: element.find(KEDITORIMAGEURL).val().replace(/ /g, '%20'),\n alt: element.find(KEDITORIMAGETITLE).val()\n };\n that.attributes.width = null;\n that.attributes.height = null;\n if (!isNaN(w) && w > 0) {\n that.attributes.width = w;\n }\n if (!isNaN(h) && h > 0) {\n that.attributes.height = h;\n }\n applied = that.insertImage(img, range);\n close(e);\n if (that.change) {\n that.change();\n }\n }\n function close(e) {\n e.preventDefault();\n dialog.destroy();\n dom.windowFromDocument(RangeUtils.documentFromRange(range)).focus();\n if (!applied) {\n that.releaseRange(range);\n }\n }\n function keyDown(e) {\n if (e.keyCode == keys.ENTER) {\n apply(e);\n } else if (e.keyCode == keys.ESC) {\n close(e);\n }\n }\n dialogOptions.close = close;\n if (showBrowser) {\n dialogOptions.width = 750;\n }\n dialog = this.createDialog(that._dialogTemplate(showBrowser), dialogOptions).toggleClass('k-filebrowser-dialog', showBrowser).find('.k-dialog-insert').click(apply).end().find('.k-dialog-close').click(close).end().find('.k-edit-field input').keydown(keyDown).end().find(KEDITORIMAGEURL).val(img ? img.getAttribute('src', 2) : 'http://').end().find(KEDITORIMAGETITLE).val(img ? img.alt : '').end().find(KEDITORIMAGEWIDTH).val(imageWidth).end().find(KEDITORIMAGEHEIGHT).val(imageHeight).end().data('kendoWindow');\n var element = dialog.element;\n if (showBrowser) {\n this._imageBrowser = new kendo.ui.ImageBrowser(element.find('.k-imagebrowser'), extend({}, imageBrowser));\n this._imageBrowser.bind('change', function (ev) {\n if (ev.selected.get('type') === 'f') {\n element.find(KEDITORIMAGEURL).val(this.value());\n }\n });\n this._imageBrowser.bind('apply', apply);\n }\n if (isIE) {\n var dialogHeight = element.closest('.k-window').height();\n element.css('max-height', dialogHeight);\n }\n dialog.center().open();\n element.find(KEDITORIMAGEURL).focus().select();\n }\n });\n kendo.ui.editor.ImageCommand = ImageCommand;\n registerTool('insertImage', new Editor.Tool({\n command: ImageCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Insert Image'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/import', ['editor/main'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, proxy = $.proxy, Editor = kendo.ui.editor, EditorUtils = Editor.EditorUtils, Command = Editor.Command, Tool = Editor.Tool, registerTool = EditorUtils.registerTool, ToolTemplate = Editor.ToolTemplate, loadingOverlay = '<div contenteditable=\"false\" class=\"k-loading-mask\" style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px;\"><div class=\"k-loading-image\"></div><div class=\"k-loading-color\"></div></div>';\n var ImportCommand = Command.extend({\n exec: function () {\n (this.editor._uploadWidget || this._initializeUploadWidget()).element.click();\n },\n _initializeUploadWidget: function () {\n var cmd = this;\n var editor = cmd.editor;\n var importOptions = editor.options['import'];\n var upload = $('<input id=\"editorImport\" name=\"files\" type=\"file\" />').kendoUpload({\n success: proxy(cmd._onUploadSuccess, cmd),\n progress: proxy(cmd._onUploadProgress, cmd),\n select: proxy(cmd._onUploadSelect, cmd),\n error: proxy(cmd._onUploadError, cmd),\n complete: proxy(cmd._onUploadComplete, cmd),\n showFileList: false,\n multiple: false,\n async: {\n saveUrl: importOptions.proxyUrl,\n autoUpload: true,\n saveField: 'file'\n },\n validation: {\n allowedExtensions: importOptions.allowedExtensions,\n maxFileSize: importOptions.maxFileSize\n }\n }).getKendoUpload();\n editor._uploadWidget = upload;\n return upload;\n },\n _onUploadComplete: function (ev) {\n this._trigger('complete', ev);\n ev.sender.clearAllFiles();\n this._removeLoadingOverlay();\n },\n _onUploadSuccess: function (ev) {\n this.editor.value(ev.response.html.replace(/<\\/?body>/gi, ''));\n this._trigger('success', ev);\n },\n _onUploadProgress: function (ev) {\n this._trigger('progress', ev);\n },\n _onUploadSelect: function (ev) {\n this._trigger('select', ev);\n if (!ev.files[0].validationErrors) {\n this._initLoadingOverlay();\n }\n },\n _onUploadError: function (ev) {\n this._trigger('error', ev);\n },\n _trigger: function (eventType, uploadEvent) {\n var editor = this.editor;\n var importOptions = editor.options['import'];\n if (typeof importOptions[eventType] === 'function') {\n importOptions[eventType].call(editor, uploadEvent);\n }\n },\n _initLoadingOverlay: function () {\n var editable = this.editor.body;\n if (Editor.Dom.is(editable, 'body')) {\n this._iframeWrapper = this._container = this.editor.wrapper.find('iframe').parent().css({ position: 'relative' }).append(loadingOverlay);\n } else {\n this._container = $(editable).append(loadingOverlay);\n }\n kendo.ui.progress(this._container, true);\n },\n _removeLoadingOverlay: function () {\n kendo.ui.progress(this._container, false);\n $(this._iframeWrapper).css({ position: '' });\n delete this._container;\n delete this._iframeWrapper;\n }\n });\n extend(Editor, { ImportCommand: ImportCommand });\n registerTool('import', new Tool({\n command: ImportCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Import'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/insert', ['editor/command'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, editorNS = kendo.ui.editor, Command = editorNS.Command, GenericCommand = editorNS.GenericCommand, EditorUtils = editorNS.EditorUtils, registerTool = EditorUtils.registerTool, Tool = editorNS.Tool, ToolTemplate = editorNS.ToolTemplate, RestorePoint = editorNS.RestorePoint, extend = $.extend;\n var InsertHtmlCommand = Command.extend({\n init: function (options) {\n Command.fn.init.call(this, options);\n this.managesUndoRedo = true;\n },\n exec: function () {\n var editor = this.editor;\n var options = this.options;\n var range = options.range;\n var body = editor.body;\n var startRestorePoint = new RestorePoint(range, body);\n var html = options.html || options.value || '';\n editor.selectRange(range);\n editor.clipboard.paste(html, options);\n if (options.postProcess) {\n options.postProcess(editor, editor.getRange());\n }\n var genericCommand = new GenericCommand(startRestorePoint, new RestorePoint(editor.getRange(), body));\n genericCommand.editor = editor;\n editor.undoRedoStack.push(genericCommand);\n editor.focus();\n }\n });\n var InsertHtmlTool = Tool.extend({\n initialize: function (ui, initOptions) {\n var editor = initOptions.editor, options = this.options, dataSource = options.items ? options.items : editor.options.insertHtml;\n this._selectBox = new editorNS.SelectBox(ui, {\n dataSource: dataSource,\n dataTextField: 'text',\n dataValueField: 'value',\n change: function () {\n Tool.exec(editor, 'insertHtml', this.value());\n },\n title: editor.options.messages.insertHtml,\n highlightFirst: false\n });\n },\n command: function (commandArguments) {\n return new InsertHtmlCommand(commandArguments);\n },\n update: function (ui) {\n var selectbox = ui.data('kendoSelectBox') || ui.find('select').data('kendoSelectBox');\n selectbox.close();\n selectbox.value(selectbox.options.title);\n }\n });\n extend(editorNS, {\n InsertHtmlCommand: InsertHtmlCommand,\n InsertHtmlTool: InsertHtmlTool\n });\n registerTool('insertHtml', new InsertHtmlTool({\n template: new ToolTemplate({\n template: EditorUtils.dropDownListTemplate,\n title: 'Insert HTML',\n initialValue: 'Insert HTML'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/export', ['editor/main'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, proxy = $.proxy, Editor = kendo.ui.editor, EditorUtils = Editor.EditorUtils, Command = Editor.Command, Tool = Editor.Tool, registerTool = EditorUtils.registerTool, ToolTemplate = Editor.ToolTemplate, defaultExportAsItems = [\n {\n text: 'Docx',\n value: 'docx'\n },\n {\n text: 'Rtf',\n value: 'rtf'\n },\n {\n text: 'Pdf',\n value: 'pdf'\n },\n {\n text: 'Html',\n value: 'html'\n },\n {\n text: 'Plain Text',\n value: 'txt'\n }\n ];\n var ExportAsCommand = Command.extend({\n init: function (options) {\n var cmd = this;\n cmd.options = options;\n Command.fn.init.call(cmd, options);\n cmd.attributes = null;\n cmd.exportType = options.exportType;\n },\n exec: function () {\n var cmd = this;\n var range = this.lockRange(true);\n cmd.postToProxy();\n cmd.releaseRange(range);\n },\n postToProxy: function () {\n this.generateForm().appendTo('body').submit().remove();\n },\n generateForm: function () {\n var cmd = this;\n var exportAsOptions = cmd.editor.options.exportAs;\n var form = $('<form>').attr({\n action: exportAsOptions && exportAsOptions.proxyURL || '',\n method: 'POST'\n });\n form.append([\n cmd.valueInput(),\n cmd.exportTypeInput(),\n cmd.fileNameInput()\n ]);\n return form;\n },\n valueInput: function () {\n var editor = this.editor;\n return $('<input>').attr({\n value: editor.encodedValue(),\n name: 'value',\n type: 'hidden'\n });\n },\n exportTypeInput: function () {\n var cmd = this;\n return $('<input>').attr({\n value: cmd.exportType,\n name: 'exportType',\n type: 'hidden'\n });\n },\n fileNameInput: function () {\n var editor = this.editor;\n var exportAsOptions = editor.options.exportAs;\n var fileName = exportAsOptions && exportAsOptions.fileName || editor.element.attr('id') || 'editor';\n return $('<input>').attr({\n value: fileName,\n name: 'fileName',\n type: 'hidden'\n });\n }\n });\n var ExportAsTool = Tool.extend({\n init: function (options) {\n var tool = this;\n Tool.fn.init.call(tool, kendo.deepExtend({}, tool.options, options));\n tool.type = 'kendoSelectBox';\n },\n options: {\n items: defaultExportAsItems,\n width: 115\n },\n command: function (args) {\n var value = args.value;\n return new Editor.ExportAsCommand({\n range: args.range,\n exportType: value.exportType\n });\n },\n initialize: function (ui, initOptions) {\n var tool = this;\n var editor = initOptions.editor;\n var options = tool.options;\n var toolName = options.name;\n var changeHandler = proxy(tool.changeHandler, tool);\n var dataSource = options.items || editor.options[toolName];\n dataSource.unshift({\n text: editor.options.messages[toolName],\n value: ''\n });\n tool.editor = editor;\n ui.width(options.width);\n ui.kendoSelectBox({\n dataTextField: 'text',\n dataValueField: 'value',\n dataSource: dataSource,\n autoSize: true,\n change: changeHandler,\n open: function (e) {\n var sender = e.sender;\n sender.items()[0].style.display = 'none';\n sender.unbind('open');\n },\n highlightFirst: false,\n template: kendo.template('<span unselectable=\"on\" style=\"display:block;#=(data.style||\"\")#\">#:data.text#</span>')\n });\n ui.addClass('k-decorated').closest('.k-widget').removeClass('k-' + toolName).find('*').addBack().attr('unselectable', 'on');\n },\n changeHandler: function (e) {\n var sender = e.sender;\n var dataItem = sender.dataItem();\n var value = dataItem && dataItem.value;\n this._exec(value);\n sender.value('');\n },\n _exec: function (value) {\n if (value) {\n Tool.exec(this.editor, this.options.name, { exportType: value });\n }\n },\n destroy: function () {\n this._ancestor = null;\n }\n });\n extend(Editor, {\n ExportAsTool: ExportAsTool,\n ExportAsCommand: ExportAsCommand\n });\n registerTool('exportAs', new ExportAsTool({\n template: new ToolTemplate({\n template: EditorUtils.dropDownListTemplate,\n title: 'Export As'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/indent', ['editor/plugins/formatblock'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, Class = kendo.Class, extend = $.extend, Editor = kendo.ui.editor, dom = Editor.Dom, EditorUtils = Editor.EditorUtils, registerTool = EditorUtils.registerTool, Command = Editor.Command, Tool = Editor.Tool, ToolTemplate = Editor.ToolTemplate, RangeUtils = Editor.RangeUtils, blockElements = dom.blockElements, BlockFormatFinder = Editor.BlockFormatFinder, BlockFormatter = Editor.BlockFormatter;\n function indent(node, value) {\n var isRtl = $(node).css('direction') == 'rtl', indentDirection = isRtl ? 'Right' : 'Left', property = dom.name(node) != 'td' ? 'margin' + indentDirection : 'padding' + indentDirection;\n if (value === undefined) {\n return node.style[property] || 0;\n } else {\n if (value > 0) {\n node.style[property] = value + 'px';\n } else {\n node.style[property] = '';\n if (!node.style.cssText) {\n node.removeAttribute('style');\n }\n }\n }\n }\n var IndentFormatter = Class.extend({\n init: function () {\n this.finder = new BlockFormatFinder([{ tags: dom.blockElements }]);\n },\n apply: function (nodes) {\n nodes = dom.filterBy(nodes, dom.htmlIndentSpace, true);\n var formatNodes = this.finder.findSuitable(nodes), targets = [], i, len, formatNode, parentList, sibling;\n formatNodes = this.mapImmutables(formatNodes);\n if (formatNodes.length) {\n for (i = 0, len = formatNodes.length; i < len; i++) {\n if (dom.is(formatNodes[i], 'li')) {\n if (!$(formatNodes[i]).index()) {\n targets.push(formatNodes[i].parentNode);\n } else if ($.inArray(formatNodes[i].parentNode, targets) < 0) {\n targets.push(formatNodes[i]);\n }\n } else {\n targets.push(formatNodes[i]);\n }\n }\n while (targets.length) {\n formatNode = targets.shift();\n if (dom.is(formatNode, 'li')) {\n parentList = formatNode.parentNode;\n sibling = $(formatNode).prev('li');\n var siblingList = sibling.find('ul,ol').last();\n var nestedList = $(formatNode).children('ul,ol')[0];\n if (nestedList && sibling[0]) {\n if (siblingList[0]) {\n siblingList.append(formatNode);\n siblingList.append($(nestedList).children());\n dom.remove(nestedList);\n } else {\n sibling.append(nestedList);\n nestedList.insertBefore(formatNode, nestedList.firstChild);\n }\n } else {\n nestedList = sibling.children('ul,ol')[0];\n if (!nestedList) {\n nestedList = dom.create(formatNode.ownerDocument, dom.name(parentList));\n sibling.append(nestedList);\n }\n while (formatNode && formatNode.parentNode == parentList) {\n nestedList.appendChild(formatNode);\n formatNode = targets.shift();\n }\n }\n } else {\n var marginLeft = parseInt(indent(formatNode), 10) + 30;\n indent(formatNode, marginLeft);\n for (var targetIndex = 0; targetIndex < targets.length; targetIndex++) {\n if ($.contains(formatNode, targets[targetIndex])) {\n targets.splice(targetIndex, 1);\n }\n }\n }\n }\n } else {\n var formatter = new BlockFormatter([{ tags: ['p'] }], { style: { marginLeft: 30 } });\n formatter.apply(nodes);\n }\n },\n mapImmutables: function (nodes) {\n if (!this.immutables) {\n return nodes;\n } else {\n var immutables = [];\n return $.map(nodes, function (node) {\n var immutable = Editor.Immutables.immutableParent(node);\n if (immutable) {\n if ($.inArray(immutable, immutables) === -1) {\n immutables.push(immutable);\n } else {\n return null;\n }\n }\n return immutable || node;\n });\n }\n },\n remove: function (nodes) {\n nodes = dom.filterBy(nodes, dom.htmlIndentSpace, true);\n var formatNodes = this.finder.findSuitable(nodes), targetNode, i, len, list, listParent, siblings, formatNode, marginLeft;\n formatNodes = this.mapImmutables(formatNodes);\n for (i = 0, len = formatNodes.length; i < len; i++) {\n formatNode = $(formatNodes[i]);\n if (formatNode.is('li')) {\n list = formatNode.parent();\n listParent = list.parent();\n if (listParent.is('li,ul,ol') && !indent(list[0])) {\n if (targetNode && $.contains(targetNode, listParent[0])) {\n continue;\n }\n siblings = formatNode.nextAll('li');\n if (siblings.length) {\n $(list[0].cloneNode(false)).appendTo(formatNode).append(siblings);\n }\n if (listParent.is('li')) {\n formatNode.insertAfter(listParent);\n } else {\n formatNode.appendTo(listParent);\n }\n if (!list.children('li').length) {\n list.remove();\n }\n continue;\n } else {\n if (targetNode == list[0]) {\n continue;\n }\n targetNode = list[0];\n }\n } else {\n targetNode = formatNodes[i];\n }\n marginLeft = parseInt(indent(targetNode), 10) - 30;\n indent(targetNode, marginLeft);\n }\n }\n });\n var IndentCommand = Command.extend({\n init: function (options) {\n var that = this;\n options.formatter = {\n toggle: $.proxy(function (range) {\n var indentFormatter = new IndentFormatter();\n indentFormatter.immutables = this.editor && this.editor.options.immutables;\n indentFormatter.apply(RangeUtils.nodes(range));\n }, that)\n };\n Command.fn.init.call(this, options);\n }\n });\n var OutdentCommand = Command.extend({\n init: function (options) {\n var that = this;\n options.formatter = {\n toggle: $.proxy(function (range) {\n var indentFormatter = new IndentFormatter();\n indentFormatter.immutables = this.editor && this.editor.options.immutables;\n indentFormatter.remove(RangeUtils.nodes(range));\n }, that)\n };\n Command.fn.init.call(this, options);\n }\n });\n var OutdentTool = Tool.extend({\n init: function (options) {\n Tool.fn.init.call(this, options);\n this.finder = new BlockFormatFinder([{ tags: blockElements }]);\n },\n initialize: function (ui, options) {\n Tool.fn.initialize.call(this, ui, options);\n $.extend(this.options, { immutables: options.editor && options.editor.options.immutables });\n ui.addClass('k-state-disabled');\n },\n update: function (ui, nodes) {\n var suitableNodes = this.finder.findSuitable(nodes), isOutdentable, listParentsCount, i, len, suitable, immutableParent;\n for (i = 0, len = suitableNodes.length; i < len; i++) {\n suitable = suitableNodes[i];\n if (this.options.immutables) {\n immutableParent = Editor.Immutables.immutableParent(suitable);\n if (immutableParent) {\n suitable = immutableParent;\n }\n }\n isOutdentable = indent(suitable);\n if (!isOutdentable) {\n listParentsCount = $(suitable).parents('ul,ol').length;\n isOutdentable = dom.is(suitable, 'li') && (listParentsCount > 1 || indent(suitable.parentNode)) || dom.ofType(suitable, [\n 'ul',\n 'ol'\n ]) && listParentsCount > 0;\n }\n if (isOutdentable) {\n ui.removeClass('k-state-disabled');\n return;\n }\n }\n ui.addClass('k-state-disabled').removeClass('k-state-hover');\n }\n });\n extend(Editor, {\n IndentFormatter: IndentFormatter,\n IndentCommand: IndentCommand,\n OutdentCommand: OutdentCommand,\n OutdentTool: OutdentTool\n });\n registerTool('indent', new Tool({\n command: IndentCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Indent'\n })\n }));\n registerTool('outdent', new OutdentTool({\n command: OutdentCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Outdent'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/linebreak', ['editor/plugins/formatblock'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, extend = $.extend, editorNS = kendo.ui.editor, dom = editorNS.Dom, Command = editorNS.Command, Tool = editorNS.Tool, BlockFormatter = editorNS.BlockFormatter, normalize = dom.normalize, RangeUtils = editorNS.RangeUtils, registerTool = editorNS.EditorUtils.registerTool;\n var ParagraphCommand = Command.extend({\n init: function (options) {\n this.options = options;\n Command.fn.init.call(this, options);\n },\n _insertMarker: function (doc, range) {\n var marker = dom.create(doc, 'a'), container;\n marker.className = 'k-marker';\n range.insertNode(marker);\n if (!marker.parentNode) {\n container = range.commonAncestorContainer;\n container.innerHTML = '';\n container.appendChild(marker);\n }\n normalize(marker.parentNode);\n return marker;\n },\n _moveFocus: function (range, candidate) {\n if (dom.isEmpty(candidate)) {\n range.setStartBefore(candidate);\n } else {\n range.selectNodeContents(candidate);\n var focusNode = RangeUtils.textNodes(range)[0];\n if (!focusNode) {\n while (candidate.childNodes.length && !dom.is(candidate.firstChild, 'br')) {\n candidate = candidate.firstChild;\n }\n focusNode = candidate;\n }\n if (dom.isEmpty(focusNode)) {\n range.setStartBefore(focusNode);\n } else {\n if (dom.emptyNode(focusNode)) {\n focusNode.innerHTML = '\\uFEFF';\n }\n var startNode = focusNode.firstChild || focusNode;\n if (dom.isDataNode(startNode)) {\n range.setStart(startNode, 0);\n } else {\n range.setStartBefore(startNode);\n }\n }\n }\n },\n shouldTrim: function (range) {\n var blocks = 'p,h1,h2,h3,h4,h5,h6'.split(','), startInBlock = dom.parentOfType(range.startContainer, blocks), endInBlock = dom.parentOfType(range.endContainer, blocks);\n return startInBlock && !endInBlock || !startInBlock && endInBlock;\n },\n _blankAfter: function (node) {\n while (node && (dom.isMarker(node) || dom.stripBom(node.nodeValue) === '')) {\n node = node.nextSibling;\n }\n return !node;\n },\n exec: function () {\n var range = this.getRange(), doc = RangeUtils.documentFromRange(range), parent, previous, next, emptyParagraphContent = editorNS.emptyElementContent, paragraph, marker, li, heading, tableNode, rng, shouldTrim;\n this.expandImmutablesIn(range);\n shouldTrim = this.shouldTrim(range);\n range.deleteContents();\n marker = this._insertMarker(doc, range);\n dom.stripBomNode(marker.previousSibling);\n dom.stripBomNode(marker.nextSibling);\n li = dom.closestEditableOfType(marker, ['li']);\n heading = dom.closestEditableOfType(marker, 'h1,h2,h3,h4,h5,h6'.split(','));\n tableNode = dom.is(marker.parentNode, 'table') && marker.parentNode;\n if (li) {\n if (dom.emptyNode(li)) {\n paragraph = dom.create(doc, 'p');\n if (dom.next(li)) {\n rng = range.cloneRange();\n rng.selectNode(li);\n RangeUtils.split(rng, li.parentNode);\n }\n var br = $('br', li);\n if (br.length == 1) {\n br.remove();\n }\n var parentNode = li.parentNode;\n var parentChildrenLength = li.parentNode.children.length;\n var firstChild = parentChildrenLength > 1 && li.childNodes.length == 1 && li.children[0];\n dom.insertAfter(paragraph, parentNode);\n dom.remove(parentChildrenLength == 1 ? li.parentNode : li);\n if (firstChild && firstChild !== marker) {\n paragraph.appendChild(firstChild);\n paragraph.appendChild(marker);\n } else {\n paragraph.innerHTML = emptyParagraphContent;\n }\n next = paragraph;\n }\n } else if (heading && this._blankAfter(marker)) {\n paragraph = this._insertParagraphAfter(heading);\n dom.remove(marker);\n next = paragraph;\n } else if (tableNode) {\n paragraph = this._insertParagraphAfter(tableNode);\n dom.remove(marker);\n next = paragraph;\n }\n if (!next) {\n if (!(li || heading)) {\n new BlockFormatter([{ tags: ['p'] }]).apply([marker]);\n }\n range.selectNode(marker);\n parent = dom.parentOfType(marker, [li ? 'li' : heading ? dom.name(heading) : 'p']);\n RangeUtils.split(range, parent, shouldTrim);\n previous = parent.previousSibling;\n if (dom.is(previous, 'li') && previous.firstChild && !dom.is(previous.firstChild, 'br')) {\n previous = previous.firstChild;\n }\n next = parent.nextSibling;\n this.clean(previous, { links: true });\n this.clean(next, { links: true });\n if (dom.is(next, 'li') && next.firstChild && !dom.is(next.firstChild, 'br')) {\n next = next.firstChild;\n }\n dom.remove(parent);\n normalize(previous);\n }\n normalize(next);\n this._moveFocus(range, next);\n range.collapse(true);\n dom.scrollTo(next, true);\n RangeUtils.selectRange(range);\n },\n _insertParagraphAfter: function (node) {\n var range = this.getRange();\n var doc = RangeUtils.documentFromRange(range);\n var emptyElementContent = editorNS.emptyElementContent;\n var paragraph = dom.create(doc, 'p');\n dom.insertAfter(paragraph, node);\n paragraph.innerHTML = emptyElementContent;\n return paragraph;\n },\n clean: function (node, options) {\n var root = node;\n if (node.firstChild && dom.is(node.firstChild, 'br')) {\n dom.remove(node.firstChild);\n }\n if (dom.isDataNode(node) && !node.nodeValue) {\n node = node.parentNode;\n }\n if (node) {\n var siblings = false;\n while (node.firstChild && node.firstChild.nodeType == 1) {\n siblings = siblings || dom.significantNodes(node.childNodes).length > 1;\n node = node.firstChild;\n }\n if (!dom.isEmpty(node) && /^\\s*$/.test(node.innerHTML) && !siblings) {\n $(root).find('.k-br').remove();\n node.innerHTML = editorNS.emptyElementContent;\n }\n if (options && options.links) {\n while (node != root) {\n if (dom.is(node, 'a') && dom.emptyNode(node)) {\n dom.unwrap(node);\n break;\n }\n node = node.parentNode;\n }\n }\n }\n }\n });\n var NewLineCommand = Command.extend({\n init: function (options) {\n this.options = options;\n Command.fn.init.call(this, options);\n },\n exec: function () {\n var range = this.getRange();\n this.expandImmutablesIn(range);\n var br = dom.create(RangeUtils.documentFromRange(range), 'br');\n var node = range.startContainer;\n var filler;\n var browser = kendo.support.browser;\n var oldIE = browser.msie && browser.version < 11;\n var tableNode = dom.is(node, 'table') && node;\n range.deleteContents();\n if (tableNode) {\n dom.insertAfter(br, tableNode);\n } else {\n range.insertNode(br);\n }\n normalize(br.parentNode);\n if (!oldIE && (!br.nextSibling || dom.isWhitespace(br.nextSibling))) {\n filler = br.cloneNode(true);\n filler.className = 'k-br';\n dom.insertAfter(filler, br);\n }\n range.setStartAfter(br);\n range.collapse(true);\n dom.scrollTo(br.nextSibling || br, true);\n RangeUtils.selectRange(range);\n }\n });\n extend(editorNS, {\n ParagraphCommand: ParagraphCommand,\n NewLineCommand: NewLineCommand\n });\n registerTool('insertLineBreak', new Tool({\n key: 13,\n shift: true,\n command: NewLineCommand\n }));\n registerTool('insertParagraph', new Tool({\n key: 13,\n command: ParagraphCommand\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/file', [\n 'kendo.filebrowser',\n 'editor/plugins/link'\n ], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, Editor = kendo.ui.editor, EditorUtils = Editor.EditorUtils, dom = Editor.Dom, registerTool = EditorUtils.registerTool, ToolTemplate = Editor.ToolTemplate, RangeUtils = Editor.RangeUtils, Command = Editor.Command, LinkFormatter = Editor.LinkFormatter, textNodes = RangeUtils.textNodes, keys = kendo.keys, KEDITORFILEURL = '#k-editor-file-url', KEDITORFILETEXT = '#k-editor-file-text', KEDITORFILETITLE = '#k-editor-file-title';\n var FileCommand = Command.extend({\n init: function (options) {\n var that = this;\n Command.fn.init.call(that, options);\n that.formatter = new LinkFormatter();\n that.async = true;\n that.attributes = {};\n },\n insertFile: function (file, range) {\n var attributes = this.attributes;\n var doc = RangeUtils.documentFromRange(range);\n if (attributes.href && attributes.href != 'http://') {\n if (!file) {\n file = dom.create(doc, 'a', { href: attributes.href });\n file.innerHTML = attributes.innerHTML;\n file.title = attributes.title;\n range.deleteContents();\n range.insertNode(file);\n if (!file.nextSibling) {\n dom.insertAfter(doc.createTextNode('\\uFEFF'), file);\n }\n range.setStartAfter(file);\n range.setEndAfter(file);\n RangeUtils.selectRange(range);\n return true;\n } else {\n dom.attr(file, attributes);\n }\n }\n return false;\n },\n _dialogTemplate: function (showBrowser) {\n return kendo.template('<div class=\"k-editor-dialog k-popup-edit-form\">' + '<div class=\"k-edit-form-container\">' + '<div class=\"k-edit-form-content\">' + '# if (showBrowser) { #' + '<div class=\"k-filebrowser\"></div>' + '# } #' + '<div class=\\'k-edit-label\\'>' + '<label for=\"k-editor-file-url\">#: messages.fileWebAddress #</label>' + '</div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\"text\" class=\"k-textbox\" id=\"k-editor-file-url\">' + '</div>' + '<div class=\\'k-edit-label\\'>' + '<label for=\"k-editor-file-text\">#: messages.fileText #</label>' + '</div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\"text\" class=\"k-textbox\" id=\"k-editor-file-text\">' + '</div>' + '<div class=\\'k-edit-label\\'>' + '<label for=\"k-editor-file-title\">#: messages.fileTitle #</label>' + '</div>' + '<div class=\\'k-edit-field\\'>' + '<input type=\"text\" class=\"k-textbox\" id=\"k-editor-file-title\">' + '</div>' + '</div>' + '<div class=\"k-edit-buttons k-state-default\">' + '<button class=\"k-dialog-insert k-button k-primary\">#: messages.dialogInsert #</button>' + '<button class=\"k-dialog-close k-button\">#: messages.dialogCancel #</button>' + '</div>' + '</div>' + '</div>')({\n messages: this.editor.options.messages,\n showBrowser: showBrowser\n });\n },\n redo: function () {\n var that = this, range = that.lockRange();\n this.formatter.apply(range, this.attributes);\n that.releaseRange(range);\n },\n exec: function () {\n var that = this, range = that.lockRange(), nodes = textNodes(range), applied = false, file = nodes.length ? this.formatter.finder.findSuitable(nodes[0]) : null, dialog, isIE = kendo.support.browser.msie, options = that.editor.options, messages = options.messages, fileBrowser = options.fileBrowser, showBrowser = !!(kendo.ui.FileBrowser && fileBrowser && fileBrowser.transport && fileBrowser.transport.read !== undefined), dialogOptions = {\n title: messages.insertFile,\n visible: false,\n resizable: showBrowser\n };\n this.expandImmutablesIn(range);\n function apply(e) {\n var element = dialog.element, href = element.find(KEDITORFILEURL).val().replace(/ /g, '%20'), innerHTML = element.find(KEDITORFILETEXT).val(), title = element.find(KEDITORFILETITLE).val();\n that.attributes = {\n href: href,\n innerHTML: innerHTML !== '' ? innerHTML : href,\n title: title\n };\n applied = that.insertFile(file, range);\n close(e);\n if (that.change) {\n that.change();\n }\n }\n function close(e) {\n e.preventDefault();\n dialog.destroy();\n dom.windowFromDocument(RangeUtils.documentFromRange(range)).focus();\n if (!applied) {\n that.releaseRange(range);\n }\n }\n function keyDown(e) {\n if (e.keyCode == keys.ENTER) {\n apply(e);\n } else if (e.keyCode == keys.ESC) {\n close(e);\n }\n }\n dialogOptions.close = close;\n if (showBrowser) {\n dialogOptions.width = 750;\n }\n dialog = this.createDialog(that._dialogTemplate(showBrowser), dialogOptions).toggleClass('k-filebrowser-dialog', showBrowser).find('.k-dialog-insert').click(apply).end().find('.k-dialog-close').click(close).end().find('.k-edit-field input').keydown(keyDown).end().find(KEDITORFILEURL).val(file ? file.getAttribute('href', 2) : 'http://').end().find(KEDITORFILETEXT).val(file ? file.innerText : '').end().find(KEDITORFILETITLE).val(file ? file.title : '').end().data('kendoWindow');\n var element = dialog.element;\n if (showBrowser) {\n that._fileBrowser = new kendo.ui.FileBrowser(element.find('.k-filebrowser'), extend({}, fileBrowser));\n that._fileBrowser.bind('change', function (ev) {\n if (ev.selected.get('type') === 'f') {\n element.find(KEDITORFILEURL).val(this.value());\n }\n });\n that._fileBrowser.bind('apply', apply);\n }\n if (isIE) {\n var dialogHeight = element.closest('.k-window').height();\n element.css('max-height', dialogHeight);\n }\n dialog.center().open();\n element.find(KEDITORFILEURL).focus().select();\n }\n });\n kendo.ui.editor.FileCommand = FileCommand;\n registerTool('insertFile', new Editor.Tool({\n command: FileCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Insert File'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/tables', [\n 'editor/plugins/formatblock',\n 'editor/plugins/insert'\n ], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, proxy = $.proxy, Editor = kendo.ui.editor, dom = Editor.Dom, EditorUtils = Editor.EditorUtils, RangeUtils = Editor.RangeUtils, Command = Editor.Command, NS = 'kendoEditor', ACTIVESTATE = 'k-state-active', SELECTEDSTATE = 'k-state-selected', Tool = Editor.Tool, ToolTemplate = Editor.ToolTemplate, InsertHtmlCommand = Editor.InsertHtmlCommand, BlockFormatFinder = Editor.BlockFormatFinder, registerTool = Editor.EditorUtils.registerTool, getTouches = kendo.getTouches;\n var template = kendo.template;\n var columnTemplate = '<td style=\\'width:#=width#%;\\'>#=content#</td>';\n var tableFormatFinder = new BlockFormatFinder([{ tags: ['table'] }]);\n var TableCommand = InsertHtmlCommand.extend({\n init: function (options) {\n var o = $.extend({\n postProcess: this.postProcess,\n skipCleaners: true\n }, options || {});\n InsertHtmlCommand.fn.init.call(this, o);\n },\n _tableHtml: function (rows, columns) {\n rows = rows || 1;\n columns = columns || 1;\n var columnHtml = template(columnTemplate)({\n width: 100 / columns,\n content: Editor.emptyTableCellContent\n });\n var rowHeight = 100 / rows;\n return '<table class=\\'k-table\\' data-last>' + new Array(rows + 1).join('<tr style=\\'height:' + rowHeight + '%;\\'>' + new Array(columns + 1).join(columnHtml) + '</tr>') + '</table>';\n },\n postProcess: function (editor, range) {\n var insertedTable = $('table[data-last]', editor.document).removeAttr('data-last');\n range.setStart(insertedTable.find('td')[0], 0);\n range.collapse(true);\n editor.selectRange(range);\n },\n exec: function () {\n var options = this.options;\n options.html = this._tableHtml(options.rows, options.columns);\n InsertHtmlCommand.fn.exec.call(this);\n }\n });\n var PopupTool = Tool.extend({\n initialize: function (ui, options) {\n Tool.fn.initialize.call(this, ui, options);\n var popup = $(this.options.popupTemplate).appendTo('body').kendoPopup({\n anchor: ui,\n copyAnchorStyles: false,\n open: proxy(this._open, this),\n activate: proxy(this._activate, this),\n close: proxy(this._close, this)\n }).data('kendoPopup');\n ui.click(proxy(this._toggle, this)).keydown(proxy(this._keydown, this));\n var editor = this._editor = options.editor;\n this._popup = popup;\n var tableWizard = new Editor.TableWizardTool({\n template: new ToolTemplate({\n template: EditorUtils.tableWizardButtonTemplate,\n title: editor.options.messages.tableWizard\n }),\n command: Editor.TableWizardCommand,\n insertNewTable: true\n });\n registerTool('tableWizardInsert', tableWizard);\n var twTool = $('<div class=\\'k-editor-toolbar\\'>' + tableWizard.options.template.getHtml() + '</div>');\n twTool.appendTo(popup.element);\n if (editor.toolbar) {\n editor.toolbar.attachToolsEvents(twTool);\n }\n },\n popup: function () {\n return this._popup;\n },\n _activate: $.noop,\n _open: function () {\n this._popup.options.anchor.addClass(ACTIVESTATE);\n },\n _close: function () {\n this._popup.options.anchor.removeClass(ACTIVESTATE);\n },\n _keydown: function (e) {\n var keys = kendo.keys;\n var key = e.keyCode;\n if (key == keys.DOWN && e.altKey) {\n this._popup.open();\n } else if (key == keys.ESC) {\n this._popup.close();\n }\n },\n _toggle: function (e) {\n var button = $(e.target).closest('.k-tool');\n if (!button.hasClass('k-state-disabled')) {\n this.popup().toggle();\n }\n },\n update: function (ui) {\n var popup = this.popup();\n if (popup.wrapper && popup.wrapper.css('display') == 'block') {\n popup.close();\n }\n ui.removeClass('k-state-hover');\n },\n destroy: function () {\n this._popup.destroy();\n }\n });\n var InsertTableTool = PopupTool.extend({\n init: function (options) {\n this.cols = 8;\n this.rows = 6;\n PopupTool.fn.init.call(this, $.extend(options, {\n command: TableCommand,\n popupTemplate: '<div class=\\'k-ct-popup\\'>' + new Array(this.cols * this.rows + 1).join('<span class=\\'k-ct-cell k-state-disabled\\' />') + '<div class=\\'k-status\\'></div>' + '</div>'\n }));\n },\n _activate: function () {\n var that = this, element = that._popup.element, cells = element.find('.k-ct-cell'), firstCell = cells.eq(0), lastCell = cells.eq(cells.length - 1), start = kendo.getOffset(firstCell), end = kendo.getOffset(lastCell), cols = that.cols, rows = that.rows, cellWidth, cellHeight;\n element.find('*').addBack().attr('unselectable', 'on');\n end.left += lastCell[0].offsetWidth;\n end.top += lastCell[0].offsetHeight;\n cellWidth = (end.left - start.left) / cols;\n cellHeight = (end.top - start.top) / rows;\n function tableFromLocation(e) {\n var w = $(window);\n return {\n row: Math.floor((e.clientY + w.scrollTop() - start.top) / cellHeight) + 1,\n col: Math.floor((e.clientX + w.scrollLeft() - start.left) / cellWidth) + 1\n };\n }\n element.autoApplyNS(NS).on('mousemove', '.k-ct-cell', function (e) {\n that._setTableSize(tableFromLocation(e));\n }).on('mouseleave', '.k-ct-cell', function () {\n that._setTableSize();\n }).on('down', '.k-ct-cell', function (e) {\n e.preventDefault();\n var touch = getTouches(e)[0];\n that._exec(tableFromLocation(touch.location));\n });\n },\n _valid: function (size) {\n return size && size.row > 0 && size.col > 0 && size.row <= this.rows && size.col <= this.cols;\n },\n _exec: function (size) {\n if (this._valid(size)) {\n this._editor.exec('createTable', {\n rows: size.row,\n columns: size.col\n });\n this._popup.close();\n }\n },\n _setTableSize: function (size) {\n var element = this._popup.element;\n var status = element.find('.k-status');\n var cells = element.find('.k-ct-cell');\n var cols = this.cols;\n var messages = this._editor.options.messages;\n if (this._valid(size)) {\n status.text(kendo.format(messages.createTableHint, size.row, size.col));\n cells.each(function (i) {\n $(this).toggleClass(SELECTEDSTATE, i % cols < size.col && i / cols < size.row);\n });\n } else {\n status.text(messages.createTable);\n cells.removeClass(SELECTEDSTATE);\n }\n },\n _keydown: function (e) {\n PopupTool.fn._keydown.call(this, e);\n if (!this._popup.visible()) {\n return;\n }\n var keys = kendo.keys;\n var key = e.keyCode;\n var cells = this._popup.element.find('.k-ct-cell');\n var focus = Math.max(cells.filter('.k-state-selected').last().index(), 0);\n var selectedRows = Math.floor(focus / this.cols);\n var selectedColumns = focus % this.cols;\n var changed = false;\n if (key == keys.DOWN && !e.altKey) {\n changed = true;\n selectedRows++;\n } else if (key == keys.UP) {\n changed = true;\n selectedRows--;\n } else if (key == keys.RIGHT) {\n changed = true;\n selectedColumns++;\n } else if (key == keys.LEFT) {\n changed = true;\n selectedColumns--;\n }\n var tableSize = {\n row: Math.max(1, Math.min(this.rows, selectedRows + 1)),\n col: Math.max(1, Math.min(this.cols, selectedColumns + 1))\n };\n if (key == keys.ENTER) {\n this._exec(tableSize);\n } else {\n this._setTableSize(tableSize);\n }\n if (changed) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n },\n _open: function () {\n var messages = this._editor.options.messages;\n PopupTool.fn._open.call(this);\n this.popup().element.find('.k-status').text(messages.createTable).end().find('.k-ct-cell').removeClass(SELECTEDSTATE);\n },\n _close: function () {\n PopupTool.fn._close.call(this);\n this.popup().element.off('.' + NS);\n }\n });\n var InsertRowCommand = Command.extend({\n exec: function () {\n var range = this.lockRange(true), td = range.endContainer, cellCount, row, newRow;\n while (dom.name(td) != 'td') {\n td = td.parentNode;\n }\n if (this.immutables() && Editor.Immutables.immutableParent(td)) {\n return;\n }\n row = td.parentNode;\n cellCount = row.children.length;\n newRow = row.cloneNode(true);\n for (var i = 0; i < row.cells.length; i++) {\n newRow.cells[i].innerHTML = Editor.emptyTableCellContent;\n }\n if (this.options.position == 'before') {\n dom.insertBefore(newRow, row);\n } else {\n dom.insertAfter(newRow, row);\n }\n this.releaseRange(range);\n }\n });\n var InsertColumnCommand = Command.extend({\n exec: function () {\n var range = this.lockRange(true), td = dom.closest(range.endContainer, 'td'), table = dom.closest(td, 'table'), columnIndex, i, rows = table.rows, cell, newCell, position = this.options.position;\n if (this.immutables() && Editor.Immutables.immutableParent(td)) {\n return;\n }\n columnIndex = dom.findNodeIndex(td, true);\n for (i = 0; i < rows.length; i++) {\n cell = rows[i].cells[columnIndex];\n newCell = cell.cloneNode();\n newCell.innerHTML = Editor.emptyTableCellContent;\n if (position == 'before') {\n dom.insertBefore(newCell, cell);\n } else {\n dom.insertAfter(newCell, cell);\n }\n }\n this.releaseRange(range);\n }\n });\n var DeleteRowCommand = Command.extend({\n exec: function () {\n var range = this.lockRange();\n var rows = RangeUtils.mapAll(range, function (node) {\n return $(node).closest('tr')[0];\n });\n var row = rows[0];\n if (this.immutables() && Editor.Immutables.immutableParent(row)) {\n return;\n }\n var table = dom.closest(row, 'table');\n var focusElement;\n if (table.rows.length <= rows.length) {\n focusElement = dom.next(table);\n if (!focusElement || dom.insignificant(focusElement)) {\n focusElement = dom.prev(table);\n }\n dom.remove(table);\n } else {\n for (var i = 0; i < rows.length; i++) {\n row = rows[i];\n dom.removeTextSiblings(row);\n focusElement = dom.next(row) || dom.prev(row);\n focusElement = focusElement.cells[0];\n dom.remove(row);\n }\n }\n if (focusElement) {\n range.setStart(focusElement, 0);\n range.collapse(true);\n this.editor.selectRange(range);\n }\n }\n });\n var DeleteColumnCommand = Command.extend({\n exec: function () {\n var range = this.lockRange(), td = dom.closest(range.endContainer, 'td'), table = dom.closest(td, 'table'), rows = table.rows, columnIndex = dom.findNodeIndex(td, true), columnCount = rows[0].cells.length, focusElement, i;\n if (this.immutables() && Editor.Immutables.immutableParent(td)) {\n return;\n }\n if (columnCount == 1) {\n focusElement = dom.next(table);\n if (!focusElement || dom.insignificant(focusElement)) {\n focusElement = dom.prev(table);\n }\n dom.remove(table);\n } else {\n dom.removeTextSiblings(td);\n focusElement = dom.next(td) || dom.prev(td);\n for (i = 0; i < rows.length; i++) {\n dom.remove(rows[i].cells[columnIndex]);\n }\n }\n if (focusElement) {\n range.setStart(focusElement, 0);\n range.collapse(true);\n this.editor.selectRange(range);\n }\n }\n });\n var TableModificationTool = Tool.extend({\n command: function (options) {\n options = extend(options, this.options);\n if (options.action == 'delete') {\n if (options.type == 'row') {\n return new DeleteRowCommand(options);\n } else {\n return new DeleteColumnCommand(options);\n }\n } else {\n if (options.type == 'row') {\n return new InsertRowCommand(options);\n } else {\n return new InsertColumnCommand(options);\n }\n }\n },\n initialize: function (ui, options) {\n Tool.fn.initialize.call(this, ui, options);\n ui.addClass('k-state-disabled');\n },\n update: function (ui, nodes) {\n var isFormatted = !tableFormatFinder.isFormatted(nodes);\n ui.toggleClass('k-state-disabled', isFormatted);\n }\n });\n extend(kendo.ui.editor, {\n PopupTool: PopupTool,\n TableCommand: TableCommand,\n InsertTableTool: InsertTableTool,\n TableModificationTool: TableModificationTool,\n InsertRowCommand: InsertRowCommand,\n InsertColumnCommand: InsertColumnCommand,\n DeleteRowCommand: DeleteRowCommand,\n DeleteColumnCommand: DeleteColumnCommand\n });\n registerTool('createTable', new InsertTableTool({\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n popup: true,\n title: 'Create table'\n })\n }));\n registerTool('addColumnLeft', new TableModificationTool({\n type: 'column',\n position: 'before',\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Add column on the left'\n })\n }));\n registerTool('addColumnRight', new TableModificationTool({\n type: 'column',\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Add column on the right'\n })\n }));\n registerTool('addRowAbove', new TableModificationTool({\n type: 'row',\n position: 'before',\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Add row above'\n })\n }));\n registerTool('addRowBelow', new TableModificationTool({\n type: 'row',\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Add row below'\n })\n }));\n registerTool('deleteRow', new TableModificationTool({\n type: 'row',\n action: 'delete',\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Delete row'\n })\n }));\n registerTool('deleteColumn', new TableModificationTool({\n type: 'column',\n action: 'delete',\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Delete column'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/clipboard', ['editor/command'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, Class = kendo.Class, editorNS = kendo.ui.editor, RangeUtils = editorNS.RangeUtils, dom = editorNS.Dom, RestorePoint = editorNS.RestorePoint, Marker = editorNS.Marker, browser = kendo.support.browser, extend = $.extend;\n var Clipboard = Class.extend({\n init: function (editor) {\n this.editor = editor;\n var pasteCleanup = editor.options.pasteCleanup;\n this.cleaners = [\n new ScriptCleaner(pasteCleanup),\n new TabCleaner(pasteCleanup),\n new MSWordFormatCleaner(pasteCleanup),\n new WebkitFormatCleaner(pasteCleanup),\n new HtmlTagsCleaner(pasteCleanup),\n new HtmlAttrCleaner(pasteCleanup),\n new HtmlContentCleaner(pasteCleanup),\n new CustomCleaner(pasteCleanup)\n ];\n },\n htmlToFragment: function (html) {\n var editor = this.editor, doc = editor.document, container = dom.create(doc, 'div'), fragment = doc.createDocumentFragment();\n container.innerHTML = html;\n while (container.firstChild) {\n fragment.appendChild(container.firstChild);\n }\n return fragment;\n },\n isBlock: function (html) {\n return /<(div|p|ul|ol|table|h[1-6])/i.test(html);\n },\n _startModification: function () {\n var range;\n var restorePoint;\n var editor = this.editor;\n if (this._inProgress) {\n return;\n }\n this._inProgress = true;\n range = editor.getRange();\n restorePoint = new RestorePoint(range, editor.body);\n dom.persistScrollTop(editor.document);\n return {\n range: range,\n restorePoint: restorePoint\n };\n },\n _endModification: function (modificationInfo) {\n editorNS._finishUpdate(this.editor, modificationInfo.restorePoint);\n this.editor._selectionChange();\n this._inProgress = false;\n },\n _contentModification: function (before, after) {\n var that = this;\n var editor = that.editor;\n var modificationInfo = that._startModification();\n if (!modificationInfo) {\n return;\n }\n before.call(that, editor, modificationInfo.range);\n setTimeout(function () {\n after.call(that, editor, modificationInfo.range);\n that._endModification(modificationInfo);\n });\n },\n _removeBomNodes: function (range) {\n var nodes = RangeUtils.textNodes(range);\n for (var i = 0; i < nodes.length; i++) {\n nodes[i].nodeValue = dom.stripBom(nodes[i].nodeValue) || nodes[i].nodeValue;\n }\n },\n _onBeforeCopy: function (range) {\n var marker = new Marker();\n marker.add(range);\n this._removeBomNodes(range);\n marker.remove(range);\n this.editor.selectRange(range);\n },\n oncopy: function () {\n this._onBeforeCopy(this.editor.getRange());\n },\n oncut: function () {\n this._onBeforeCopy(this.editor.getRange());\n this._contentModification($.noop, $.noop);\n },\n _fileToDataURL: function (blob) {\n var deferred = $.Deferred();\n var reader = new FileReader();\n if (!(blob instanceof window.File) && blob.getAsFile) {\n blob = blob.getAsFile();\n }\n reader.onload = $.proxy(deferred.resolve, deferred);\n reader.readAsDataURL(blob);\n return deferred.promise();\n },\n _triggerPaste: function (html, options) {\n var args = { html: html || '' };\n args.html = args.html.replace(/\\ufeff/g, '');\n this.editor.trigger('paste', args);\n this.paste(args.html, options || {});\n },\n _handleImagePaste: function (e) {\n if (!('FileReader' in window) || browser.msie && browser.version > 10) {\n return;\n }\n var clipboardData = e.clipboardData || e.originalEvent.clipboardData || window.clipboardData || {};\n var items = clipboardData.items || clipboardData.files;\n return this._insertImages(items);\n },\n _insertImages: function (items) {\n if (!items) {\n return;\n }\n var images = $.grep(items, function (item) {\n return /^image\\//i.test(item.type);\n });\n var html = $.grep(items, function (item) {\n return /^text\\/html/i.test(item.type);\n });\n if (html.length || !images.length) {\n return;\n }\n var modificationInfo = this._startModification();\n if (!modificationInfo) {\n return;\n }\n $.when.apply($, $.map(images, this._fileToDataURL)).done($.proxy(function () {\n var results = Array.prototype.slice.call(arguments);\n var html = $.map(results, function (e) {\n return '<img src=\"' + e.target.result + '\" />';\n }).join('');\n this._triggerPaste(html);\n this._endModification(modificationInfo);\n }, this));\n return true;\n },\n onpaste: function (e) {\n if (this.editor.body.contentEditable === 'false') {\n return;\n }\n if (this._handleImagePaste(e)) {\n e.preventDefault();\n return;\n }\n this.expandImmutablesIn();\n this._contentModification(function beforePaste(editor, range) {\n var clipboardNode = dom.create(editor.document, 'div', {\n className: 'k-paste-container',\n innerHTML: '\\uFEFF'\n });\n var browser = kendo.support.browser;\n var body = editor.body;\n this._decoreateClipboardNode(clipboardNode, body);\n body.appendChild(clipboardNode);\n if (browser.webkit) {\n this._moveToCaretPosition(clipboardNode, range);\n }\n if (browser.msie && browser.version < 11) {\n e.preventDefault();\n var r = editor.createRange();\n r.selectNodeContents(clipboardNode);\n editor.selectRange(r);\n var textRange = editor.document.body.createTextRange();\n textRange.moveToElementText(clipboardNode);\n $(body).unbind('paste');\n textRange.execCommand('Paste');\n $(body).bind('paste', $.proxy(this.onpaste, this));\n } else {\n var clipboardRange = editor.createRange();\n clipboardRange.selectNodeContents(clipboardNode);\n editor.selectRange(clipboardRange);\n }\n range.deleteContents();\n }, function afterPaste(editor, range) {\n var html = '', containers;\n editor.selectRange(range);\n containers = $(editor.body).children('.k-paste-container');\n containers.each(function () {\n var lastChild = this.lastChild;\n if (lastChild && dom.is(lastChild, 'br')) {\n dom.remove(lastChild);\n }\n html += this.innerHTML;\n });\n containers.remove();\n this._triggerPaste(html, { clean: true });\n });\n },\n ondragover: function (e) {\n if (browser.msie || browser.edge) {\n e.stopPropagation();\n e.preventDefault();\n }\n },\n ondrop: function (e) {\n if (!('FileReader' in window)) {\n return;\n }\n var dataTransfer = (e.originalEvent || e).dataTransfer || {};\n var items = dataTransfer.items || dataTransfer.files;\n if (this._insertImages(items)) {\n e.preventDefault();\n }\n },\n _decoreateClipboardNode: function (node, body) {\n if (!browser.msie && !browser.webkit) {\n return;\n }\n node = $(node);\n node.css({\n borderWidth: '0px',\n width: '0px',\n height: '0px',\n overflow: 'hidden',\n margin: '0',\n padding: '0'\n });\n if (browser.msie) {\n var documentElement = $(body.ownerDocument.documentElement);\n node.css({\n fontVariant: 'normal',\n fontWeight: 'normal',\n lineSpacing: 'normal',\n lineHeight: 'normal',\n textDecoration: 'none'\n });\n var color = documentElement.css('color');\n if (color) {\n node.css('color', color);\n }\n var fontFamily = documentElement.css('fontFamily');\n if (fontFamily) {\n node.css('fontFamily', fontFamily);\n }\n var fontSize = documentElement.css('fontSize');\n if (fontSize) {\n node.css('fontSize', fontSize);\n }\n }\n },\n _moveToCaretPosition: function (node, range) {\n var that = this;\n var body = that.editor.body;\n var nodeOffset = dom.offset(node, body);\n var caretOffset = that._caretOffset(range, body);\n var translateX = caretOffset.left - nodeOffset.left;\n var translateY = caretOffset.top - nodeOffset.top;\n var translate = 'translate(' + translateX + 'px,' + translateY + 'px)';\n $(node).css({\n '-webkit-transform': translate,\n 'transform': translate\n });\n },\n _caretOffset: function (range, body) {\n var editor = this.editor;\n var caret = dom.create(editor.document, 'span', { innerHTML: '\\uFEFF' });\n var startContainer = range.startContainer;\n var rangeChanged;\n if (range.collapsed) {\n var isStartTextNode = dom.isDataNode(startContainer);\n if (isStartTextNode && (dom.isBom(startContainer) || range.startOffset === 0)) {\n dom.insertBefore(caret, startContainer);\n } else if (isStartTextNode && range.startOffset === startContainer.length) {\n dom.insertAfter(caret, startContainer);\n } else {\n range.insertNode(caret);\n rangeChanged = true;\n }\n } else {\n startContainer = startContainer === body ? startContainer.childNodes[range.startOffset] : startContainer;\n dom.insertBefore(caret, startContainer);\n }\n var offset = dom.offset(caret, body);\n var prev = caret.previousSibling;\n var next = caret.nextSibling;\n dom.remove(caret);\n if (rangeChanged && dom.isDataNode(prev) && dom.isDataNode(next) && !dom.isBom(prev) && !dom.isBom(next)) {\n var prevLength = prev.length;\n next.data = prev.data + next.data;\n range.setStart(next, prevLength);\n dom.remove(prev);\n range.collapse(true);\n editor.selectRange(range);\n }\n return offset;\n },\n expandImmutablesIn: function (range) {\n var editor = this.editor;\n if (editor && editor.options.immutables) {\n var body = editor.body;\n range = range || editor.getRange();\n kendo.ui.editor.Immutables.expandImmutablesIn(range);\n if (range.startContainer === body && range.startOffset === 0) {\n var doc = body.ownerDocument;\n var bomNode = doc.createTextNode('\\uFEFF');\n body.insertBefore(bomNode, body.childNodes[0]);\n range.setStartBefore(bomNode);\n }\n editor.selectRange(range);\n }\n },\n splittableParent: function (block, node) {\n var parentNode, body;\n if (block) {\n return dom.closestEditableOfType(node, [\n 'p',\n 'ul',\n 'ol'\n ]) || node.parentNode;\n }\n parentNode = node.parentNode;\n body = node.ownerDocument.body;\n if (dom.isInline(parentNode)) {\n while (parentNode.parentNode != body && !dom.isBlock(parentNode.parentNode)) {\n parentNode = parentNode.parentNode;\n }\n }\n return parentNode;\n },\n paste: function (html, options) {\n var editor = this.editor, i, l, childNodes;\n this.expandImmutablesIn();\n options = extend({\n clean: false,\n split: true\n }, options);\n if (!options.skipCleaners) {\n for (i = 0, l = this.cleaners.length; i < l; i++) {\n if (this.cleaners[i].applicable(html)) {\n html = this.cleaners[i].clean(html);\n }\n }\n }\n if (options.clean) {\n html = html.replace(/(<br>(\\s| )*)+(<\\/?(div|p|li|col|t))/gi, '$3');\n html = html.replace(/<(a|span)[^>]*><\\/\\1>/gi, '');\n }\n html = html.replace(/<(a|span|font)([^>]*)> <\\/\\1>/gi, '<$1$2> </$1>');\n html = html.replace(/^<li/i, '<ul><li').replace(/li>$/g, 'li></ul>');\n var block = this.isBlock(html);\n editor.focus();\n var range = editor.getRange();\n range.deleteContents();\n if (range.startContainer == editor.document) {\n range.selectNodeContents(editor.body);\n }\n var marker = new Marker();\n var caret = marker.addCaret(range);\n var parent = this.splittableParent(block, caret);\n var unwrap = false;\n var splittable = parent != editor.body && !dom.is(parent, 'td');\n if (options.split && splittable && (block || dom.isInline(parent))) {\n range.selectNode(caret);\n RangeUtils.split(range, parent, true);\n unwrap = true;\n }\n var fragment = this.htmlToFragment(html);\n if (fragment.firstChild && fragment.firstChild.className === 'k-paste-container') {\n var fragmentsHtml = [];\n for (i = 0, l = fragment.childNodes.length; i < l; i++) {\n fragmentsHtml.push(fragment.childNodes[i].innerHTML);\n }\n fragment = this.htmlToFragment(fragmentsHtml.join('<br />'));\n }\n childNodes = fragment.childNodes;\n $(childNodes).filter('table').addClass('k-table').end().find('table').addClass('k-table');\n $(childNodes).each(function (index, elm) {\n if (dom.isBlock(elm) && !dom.isSelfClosing(elm) && elm.innerHTML === '') {\n elm.appendChild(editor.document.createTextNode('\\uFEFF'));\n }\n });\n range.insertNode(fragment);\n parent = this.splittableParent(block, caret);\n if (unwrap) {\n while (caret.parentNode != parent) {\n dom.unwrap(caret.parentNode);\n }\n dom.unwrap(caret.parentNode);\n }\n dom.normalize(range.commonAncestorContainer);\n caret.style.display = 'inline';\n dom.restoreScrollTop(editor.document);\n dom.scrollTo(caret);\n marker.removeCaret(range);\n var rangeEnd = range.commonAncestorContainer.parentNode;\n if (range.collapsed && dom.name(rangeEnd) == 'tbody') {\n range.setStartAfter($(rangeEnd).closest('table')[0]);\n range.collapse(true);\n }\n var focusedTable = $(range.commonAncestorContainer.parentNode).closest('table');\n if (focusedTable.get(0)) {\n var siblingNodes = focusedTable.parent().contents();\n var lastSiblingIndex = siblingNodes.length - 1;\n var lastSibling = siblingNodes.get(lastSiblingIndex);\n while (lastSibling.nodeValue !== null && (lastSibling.nodeValue === ' ' || lastSibling.nodeValue === '')) {\n lastSiblingIndex -= 1;\n lastSibling = siblingNodes.get(lastSiblingIndex);\n }\n if (lastSibling === focusedTable.get(0)) {\n dom.insertAfter(dom.createEmptyNode(editor.document, 'p'), focusedTable[0]);\n }\n }\n editor.selectRange(range);\n }\n });\n var Cleaner = Class.extend({\n init: function (options) {\n this.options = options || {};\n this.replacements = [];\n },\n clean: function (html, customReplacements) {\n var that = this, replacements = customReplacements || that.replacements, i, l;\n for (i = 0, l = replacements.length; i < l; i += 2) {\n html = html.replace(replacements[i], replacements[i + 1]);\n }\n return html;\n }\n });\n var ScriptCleaner = Cleaner.extend({\n init: function (options) {\n Cleaner.fn.init.call(this, options);\n this.replacements = [\n /<(\\/?)script([^>]*)>/i,\n '<$1telerik:script$2>'\n ];\n },\n applicable: function (html) {\n return !this.options.none && /<script[^>]*>/i.test(html);\n }\n });\n var TabCleaner = Cleaner.extend({\n init: function (options) {\n Cleaner.fn.init.call(this, options);\n var replacement = ' ';\n this.replacements = [\n /<span\\s+class=\"Apple-tab-span\"[^>]*>\\s*<\\/span>/gi,\n replacement,\n /\\t/gi,\n replacement,\n / /gi,\n replacement\n ];\n },\n applicable: function (html) {\n return / |class=\"?Apple-tab-span/i.test(html);\n }\n });\n var MSWordFormatCleaner = Cleaner.extend({\n init: function (options) {\n Cleaner.fn.init.call(this, options);\n this.junkReplacements = [\n /<\\?xml[^>]*>/gi,\n '',\n /<!--(.|\\n)*?-->/g,\n '',\n /"/g,\n '\\'',\n /<o:p> <\\/o:p>/gi,\n ' ',\n /<\\/?(meta|link|style|o:|v:|x:)[^>]*>((?:.|\\n)*?<\\/(meta|link|style|o:|v:|x:)[^>]*>)?/gi,\n '',\n /<\\/o>/g,\n ''\n ];\n this.replacements = this.junkReplacements.concat([\n /(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?(h[1-6]|hr|p|div|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|address|pre|form|blockquote|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*/g,\n '$1',\n /<br><br>/g,\n '<BR><BR>',\n /<br>(?!\\n)/g,\n ' ',\n /<table([^>]*)>(\\s| )+<t/gi,\n '<table$1><t',\n /<tr[^>]*>(\\s| )*<\\/tr>/gi,\n '',\n /<tbody[^>]*>(\\s| )*<\\/tbody>/gi,\n '',\n /<table[^>]*>(\\s| )*<\\/table>/gi,\n '',\n /<BR><BR>/g,\n '<br>',\n /^\\s*( )+/gi,\n '',\n /( |<br[^>]*>)+\\s*$/gi,\n '',\n /mso-[^;\"]*;?/gi,\n '',\n /<(\\/?)b(\\s[^>]*)?>/gi,\n '<$1strong$2>',\n /<(\\/?)font(\\s[^>]*)?>/gi,\n this.convertFontMatch,\n /<(\\/?)i(\\s[^>]*)?>/gi,\n '<$1em$2>',\n /style=([\"|'])\\s*\\1/g,\n '',\n /(<br[^>]*>)?\\n/g,\n function ($0, $1) {\n return $1 ? $0 : ' ';\n }\n ]);\n },\n convertFontMatch: function (match, closing, args) {\n var faceRe = /face=['\"]([^'\"]+)['\"]/i;\n var face = faceRe.exec(args);\n var family = args && face && face[1];\n if (closing) {\n return '</span>';\n } else if (family) {\n return '<span style=\"font-family:' + family + '\">';\n } else {\n return '<span>';\n }\n },\n applicable: function (html) {\n return /class=\"?Mso/i.test(html) || /style=\"[^\"]*mso-/i.test(html) || /urn:schemas-microsoft-com:office/.test(html);\n },\n stripEmptyAnchors: function (html) {\n return html.replace(/<a([^>]*)>\\s*<\\/a>/gi, function (a, attributes) {\n if (!attributes || attributes.indexOf('href') < 0) {\n return '';\n }\n return a;\n });\n },\n listType: function (p, listData) {\n var html = p.innerHTML;\n var text = dom.innerText(p);\n var startingSymbol;\n var matchSymbol = html.match(/^(?:<span [^>]*texhtml[^>]*>)?<span [^>]*(?:Symbol|Wingdings)[^>]*>([^<]+)/i);\n var symbol = matchSymbol && matchSymbol[1];\n var isNumber = /^[a-z\\d]/i.test(symbol);\n var trimStartText = function (text) {\n return text.replace(/^(?: |[\\u00a0\\n\\r\\s])+/, '');\n };\n if (matchSymbol) {\n startingSymbol = true;\n }\n html = html.replace(/<\\/?\\w+[^>]*>/g, '').replace(/ /g, '\\xA0');\n if (!startingSymbol && /^[\\u2022\\u00b7\\u00a7\\u00d8o]\\u00a0+/.test(html) || startingSymbol && /^.\\u00a0+/.test(html) || symbol && !isNumber && listData) {\n return {\n tag: 'ul',\n style: this._guessUnorderedListStyle(trimStartText(text))\n };\n }\n if (/^\\s*\\w+[\\.\\)][\\u00a0 ]{2,}/.test(html)) {\n return {\n tag: 'ol',\n style: this._guessOrderedListStyle(trimStartText(text))\n };\n }\n },\n _convertToLi: function (p) {\n var content, name = dom.name(p);\n if (p.childNodes.length == 1) {\n content = p.firstChild.nodeType === dom.nodeTypes.TEXT_NODE ? dom.innerText(p) : p.firstChild.innerHTML.replace(/^\\w+[\\.\\)]( )+ /, '');\n } else {\n dom.remove(p.firstChild);\n if (p.firstChild.nodeType == 3) {\n if (/^[ivxlcdm]+\\.$/i.test(p.firstChild.nodeValue)) {\n dom.remove(p.firstChild);\n }\n }\n if (/^( |\\s)+$/i.test(p.firstChild.innerHTML)) {\n dom.remove(p.firstChild);\n }\n if (name != 'p') {\n content = '<' + name + '>' + p.innerHTML + '</' + name + '>';\n } else {\n content = p.innerHTML;\n }\n }\n dom.remove(p);\n return dom.create(document, 'li', { innerHTML: content });\n },\n _guessUnorderedListStyle: function (symbol) {\n if (/^[\\u2022\\u00b7\\u00FC\\u00D8\\u002dv-]/.test(symbol)) {\n return null;\n } else if (/^o/.test(symbol)) {\n return 'circle';\n } else {\n return 'square';\n }\n },\n _guessOrderedListStyle: function (symbol) {\n var listType = null;\n if (!/^\\d/.test(symbol)) {\n listType = (/^[a-z]/.test(symbol) ? 'lower-' : 'upper-') + (/^[ivxlcdm]/i.test(symbol) ? 'roman' : 'alpha');\n }\n return listType;\n },\n extractListLevels: function (html) {\n var msoListRegExp = /style=['\"]?[^'\"]*?mso-list:\\s?[a-zA-Z]+(\\d+)\\s[a-zA-Z]+(\\d+)\\s(\\w+)/gi;\n html = html.replace(msoListRegExp, function (match, list, level) {\n return kendo.format('data-list=\"{0}\" data-level=\"{1}\" {2}', list, level, match);\n });\n return html;\n },\n _createList: function (type, styleType) {\n return dom.create(document, type, { style: { listStyleType: styleType } });\n },\n lists: function (placeholder) {\n var blockChildren = $(placeholder).find(dom.blockElements.join(',')), lastMargin = -1, name, levels = {}, li, rootMargin, rootIndex, lastRootLi, isLastRootLi, rootList, i, p, type, margin, list, listData, acceptedNameTags = [\n 'p',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6'\n ], isParentTable = false;\n for (i = 0; i < blockChildren.length; i++) {\n p = blockChildren[i];\n listData = $(p).data();\n var listIndex = listData.list;\n name = dom.name(p);\n isParentTable = !!$(p).parents('table').length;\n if (isParentTable) {\n continue;\n }\n var listType = this.listType(p, listData);\n type = listType && listType.tag;\n if (!type || acceptedNameTags.indexOf(name) < 0) {\n if (!p.innerHTML) {\n dom.remove(p);\n } else if (li && !isLastRootLi) {\n li.appendChild(p);\n }\n continue;\n }\n if (browser.msie) {\n continue;\n }\n margin = listData.level || parseFloat(p.style.marginLeft || 0);\n var levelType = type + listIndex;\n if (!levels[margin]) {\n levels[margin] = {};\n }\n if (!rootMargin || rootMargin < 0) {\n rootMargin = margin;\n rootIndex = listIndex;\n lastRootLi = $(placeholder).find('[data-list=\\'' + rootIndex + '\\']:last')[0];\n rootList = this._createList(type, listType.style);\n dom.insertBefore(rootList, p);\n lastMargin = margin;\n levels[margin][levelType] = rootList;\n }\n isLastRootLi = lastRootLi === p;\n list = levels[margin][levelType];\n if (margin > lastMargin || !list) {\n list = this._createList(type, listType.style);\n levels[margin][levelType] = list;\n li.appendChild(list);\n }\n li = this._convertToLi(p);\n list.appendChild(li);\n if (isLastRootLi) {\n rootMargin = lastMargin = -1;\n } else {\n lastMargin = margin;\n }\n }\n },\n removeAttributes: function (element) {\n var attributes = element.attributes, i = attributes.length;\n while (i--) {\n if (dom.name(attributes[i]) != 'colspan') {\n element.removeAttributeNode(attributes[i]);\n }\n }\n },\n createColGroup: function (row) {\n var cells = row.cells;\n var table = $(row).closest('table');\n var colgroup = table.children('colgroup');\n if (cells.length < 2) {\n return;\n } else if (colgroup.length) {\n cells = colgroup.children();\n colgroup[0].parentNode.removeChild(colgroup[0]);\n }\n colgroup = $($.map(cells, function (cell) {\n var width = cell.width;\n if (width && parseInt(width, 10) !== 0) {\n return kendo.format('<col style=\"width:{0}px;\"/>', width);\n }\n return '<col />';\n }).join(''));\n if (!colgroup.is('colgroup')) {\n colgroup = $('<colgroup/>').append(colgroup);\n }\n colgroup.prependTo(table);\n },\n convertHeaders: function (row) {\n var cells = row.cells, i, boldedCells = $.map(cells, function (cell) {\n var child = $(cell).children('p').children('strong')[0];\n if (child && dom.name(child) == 'strong') {\n return child;\n }\n });\n if (boldedCells.length == cells.length) {\n for (i = 0; i < boldedCells.length; i++) {\n dom.unwrap(boldedCells[i]);\n }\n $(row).closest('table').find('colgroup').after('<thead></thead>').end().find('thead').append(row);\n for (i = 0; i < cells.length; i++) {\n dom.changeTag(cells[i], 'th');\n }\n }\n },\n removeParagraphs: function (cells) {\n var i, j, len, cell, paragraphs;\n for (i = 0; i < cells.length; i++) {\n this.removeAttributes(cells[i]);\n cell = $(cells[i]);\n paragraphs = cell.children('p');\n for (j = 0, len = paragraphs.length; j < len; j++) {\n if (j < len - 1) {\n dom.insertAfter(dom.create(document, 'br'), paragraphs[j]);\n }\n dom.unwrap(paragraphs[j]);\n }\n }\n },\n removeDefaultColors: function (spans) {\n for (var i = 0; i < spans.length; i++) {\n if (/^\\s*color:\\s*[^;]*;?$/i.test(spans[i].style.cssText)) {\n dom.unwrap(spans[i]);\n }\n }\n },\n tables: function (placeholder) {\n var tables = $(placeholder).find('table'), that = this, rows, firstRow, longestRow, i, j;\n for (i = 0; i < tables.length; i++) {\n rows = tables[i].rows;\n longestRow = firstRow = rows[0];\n for (j = 1; j < rows.length; j++) {\n if (rows[j].cells.length > longestRow.cells.length) {\n longestRow = rows[j];\n }\n }\n that.createColGroup(longestRow);\n that.convertHeaders(firstRow);\n that.removeAttributes(tables[i]);\n that.removeParagraphs(tables.eq(i).find('td,th'));\n that.removeDefaultColors(tables.eq(i).find('span'));\n }\n },\n headers: function (placeholder) {\n var titles = $(placeholder).find('p.MsoTitle');\n for (var i = 0; i < titles.length; i++) {\n dom.changeTag(titles[i], 'h1');\n }\n },\n removeFormatting: function (placeholder) {\n $(placeholder).find('*').each(function () {\n $(this).css({\n fontSize: '',\n fontFamily: ''\n });\n if (!this.getAttribute('style') && !this.style.cssText) {\n this.removeAttribute('style');\n }\n });\n },\n clean: function (html) {\n var that = this, placeholder;\n var filters = this.options;\n if (filters.none) {\n html = Cleaner.fn.clean.call(that, html, this.junkReplacements);\n html = that.stripEmptyAnchors(html);\n } else {\n html = filters.msConvertLists ? this.extractListLevels(html) : html;\n html = Cleaner.fn.clean.call(that, html);\n html = that.stripEmptyAnchors(html);\n placeholder = dom.create(document, 'div', { innerHTML: html });\n that.headers(placeholder);\n if (filters.msConvertLists) {\n that.lists(placeholder);\n }\n that.tables(placeholder);\n if (filters.msAllFormatting) {\n that.removeFormatting(placeholder);\n }\n html = placeholder.innerHTML.replace(/(<[^>]*)\\s+class=\"?[^\"\\s>]*\"?/gi, '$1');\n }\n return html;\n }\n });\n var WebkitFormatCleaner = Cleaner.extend({\n init: function (options) {\n Cleaner.fn.init.call(this, options);\n this.replacements = [\n /\\s+class=\"Apple-style-span[^\"]*\"/gi,\n '',\n /<(div|p|h[1-6])\\s+style=\"[^\"]*\"/gi,\n '<$1',\n /^<div>(.*)<\\/div>$/,\n '$1'\n ];\n },\n applicable: function (html) {\n return /class=\"?Apple-style-span|style=\"[^\"]*-webkit-nbsp-mode/i.test(html);\n }\n });\n var DomCleaner = Cleaner.extend({\n clean: function (html) {\n var container = dom.create(document, 'div', { innerHTML: html });\n container = this.cleanDom(container);\n return container.innerHTML;\n },\n cleanDom: function (container) {\n return container;\n }\n });\n var HtmlTagsCleaner = DomCleaner.extend({\n cleanDom: function (container) {\n var tags = this.collectTags();\n $(container).find(tags).each(function () {\n dom.unwrap(this);\n });\n return container;\n },\n collectTags: function () {\n if (this.options.span) {\n return 'span';\n }\n },\n applicable: function () {\n return this.options.span;\n }\n });\n var HtmlAttrCleaner = DomCleaner.extend({\n cleanDom: function (container) {\n var attributes = this.collectAttr();\n var nodes = $(container).find('[' + attributes.join('],[') + ']');\n nodes.removeAttr(attributes.join(' '));\n return container;\n },\n collectAttr: function () {\n if (this.options.css) {\n return [\n 'class',\n 'style'\n ];\n }\n return [];\n },\n applicable: function () {\n return this.options.css;\n }\n });\n var TextContainer = function () {\n this.text = '';\n this.add = function (text) {\n this.text += text;\n };\n };\n var HtmlTextLines = Class.extend({\n init: function (separators) {\n this.separators = separators || {\n text: ' ',\n line: '<br/>'\n };\n this.lines = [];\n this.inlineBlockText = [];\n this.resetLine();\n },\n appendText: function (text) {\n if (text.nodeType === 3) {\n text = text.nodeValue;\n }\n this.textContainer.add(text);\n },\n appendInlineBlockText: function (text) {\n this.inlineBlockText.push(text);\n },\n flashInlineBlockText: function () {\n if (this.inlineBlockText.length) {\n this.appendText(this.inlineBlockText.join(' '));\n this.inlineBlockText = [];\n }\n },\n endLine: function () {\n this.flashInlineBlockText();\n this.resetLine();\n },\n html: function () {\n var separators = this.separators;\n var result = '';\n var lines = this.lines;\n this.flashInlineBlockText();\n for (var i = 0, il = lines.length, il1 = il - 1; i < il; i++) {\n var line = lines[i];\n for (var j = 0, jl = line.length, jl1 = jl - 1; j < jl; j++) {\n var text = line[j].text;\n result += text;\n if (j !== jl1) {\n result += separators.text;\n }\n }\n if (i !== il1) {\n result += separators.line;\n }\n }\n return result;\n },\n resetLine: function () {\n this.textContainer = new TextContainer();\n this.line = [];\n this.line.push(this.textContainer);\n this.lines.push(this.line);\n }\n });\n var DomEnumerator = Class.extend({\n init: function (callback) {\n this.callback = callback;\n },\n enumerate: function (node) {\n if (!node) {\n return;\n }\n var preventDown = this.callback(node);\n var child = node.firstChild;\n if (!preventDown && child) {\n this.enumerate(child);\n }\n this.enumerate(node.nextSibling);\n }\n });\n var HtmlContentCleaner = Cleaner.extend({\n init: function (options) {\n Cleaner.fn.init.call(this, options);\n this.hasText = false;\n this.enumerator = new DomEnumerator($.proxy(this.buildText, this));\n },\n clean: function (html) {\n var container = dom.create(document, 'div', { innerHTML: html });\n return this.cleanDom(container);\n },\n cleanDom: function (container) {\n this.separators = this.getDefaultSeparators();\n this.htmlLines = new HtmlTextLines(this.separators);\n this.enumerator.enumerate(container.firstChild);\n this.hasText = false;\n return this.htmlLines.html();\n },\n buildText: function (node) {\n if (dom.isDataNode(node)) {\n if (dom.isEmptyspace(node)) {\n return;\n }\n this.htmlLines.appendText(node.nodeValue.replace('\\n', this.separators.line));\n this.hasText = true;\n } else if (dom.isBlock(node) && this.hasText) {\n var action = this.actions[dom.name(node)] || this.actions.block;\n return action(this, node);\n } else if (dom.isBr(node)) {\n this.htmlLines.appendText(this.separators.line);\n }\n },\n applicable: function () {\n var o = this.options;\n return o.all || o.keepNewLines;\n },\n getDefaultSeparators: function () {\n if (this.options.all) {\n return {\n text: ' ',\n line: ' '\n };\n } else {\n return {\n text: ' ',\n line: '<br/>'\n };\n }\n },\n actions: {\n ul: $.noop,\n ol: $.noop,\n table: $.noop,\n thead: $.noop,\n tbody: $.noop,\n td: function (cleaner, node) {\n var tdCleaner = new HtmlContentCleaner({ all: true });\n var cellText = tdCleaner.cleanDom(node);\n cleaner.htmlLines.appendInlineBlockText(cellText);\n return true;\n },\n block: function (cleaner) {\n cleaner.htmlLines.endLine();\n }\n }\n });\n var CustomCleaner = Cleaner.extend({\n clean: function (html) {\n return this.options.custom(html);\n },\n applicable: function () {\n return typeof this.options.custom === 'function';\n }\n });\n extend(editorNS, {\n Clipboard: Clipboard,\n Cleaner: Cleaner,\n ScriptCleaner: ScriptCleaner,\n TabCleaner: TabCleaner,\n MSWordFormatCleaner: MSWordFormatCleaner,\n WebkitFormatCleaner: WebkitFormatCleaner,\n HtmlTagsCleaner: HtmlTagsCleaner,\n HtmlAttrCleaner: HtmlAttrCleaner,\n HtmlContentCleaner: HtmlContentCleaner,\n HtmlTextLines: HtmlTextLines,\n CustomCleaner: CustomCleaner\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/keyboard', ['editor/command'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, Class = kendo.Class, editorNS = kendo.ui.editor, RangeUtils = editorNS.RangeUtils, dom = editorNS.Dom, RestorePoint = editorNS.RestorePoint, Marker = editorNS.Marker, browser = kendo.support.browser, br = '<br class=\"k-br\">', extend = $.extend;\n var nodeTypes = dom.nodeTypes;\n var PREVIOUS_SIBLING = 'previousSibling';\n function selected(node, range) {\n return range.startContainer === node && range.endContainer === node && range.startOffset === 0 && range.endOffset == node.childNodes.length;\n }\n function getSibling(node, direction, condition) {\n var sibling = node ? node[direction] : null;\n while (sibling && !condition(sibling)) {\n sibling = sibling[direction];\n }\n return sibling;\n }\n var tableCells = 'td,th,caption';\n var tableCellsWrappers = 'table,tbody,thead,tfoot,tr';\n var tableElements = tableCellsWrappers + ',' + tableCells;\n var inTable = function (range) {\n return !range.collapsed && $(range.commonAncestorContainer).is(tableCellsWrappers);\n };\n var RemoveTableContent = Class.extend({\n remove: function (range) {\n var that = this;\n var marker = new Marker();\n marker.add(range, false);\n var nodes = RangeUtils.getAll(range, function (node) {\n return $(node).is(tableElements);\n });\n var doc = RangeUtils.documentFromRange(range);\n var start = marker.start;\n var end = marker.end;\n var cellsTypes = tableCells.split(',');\n var startCell = dom.parentOfType(start, cellsTypes);\n var endCell = dom.parentOfType(end, cellsTypes);\n that._removeContent(start, startCell, true);\n that._removeContent(end, endCell, false);\n $(nodes).each(function (i, node) {\n node = $(node);\n (node.is(tableCells) ? node : node.find(tableCells)).each(function (j, cell) {\n cell.innerHTML = '';\n });\n });\n if (startCell && !start.previousSibling) {\n dom.insertBefore(doc.createTextNode('\\uFEFF'), start);\n }\n if (endCell && !end.nextSibling) {\n dom.insertAfter(doc.createTextNode('\\uFEFF'), end);\n }\n if (startCell) {\n range.setStartBefore(start);\n } else if (nodes[0]) {\n startCell = $(nodes[0]);\n startCell = startCell.is(tableCells) ? startCell : startCell.find(tableCells).first();\n if (startCell.length) {\n range.setStart(startCell.get(0), 0);\n }\n }\n range.collapse(true);\n dom.remove(start);\n dom.remove(end);\n },\n _removeContent: function (start, top, forwards) {\n if (top) {\n var sibling = forwards ? 'nextSibling' : 'previousSibling', next, getNext = function (node) {\n while (node && !node[sibling]) {\n node = node.parentNode;\n }\n return node && $.contains(top, node) ? node[sibling] : null;\n };\n start = getNext(start);\n while (start) {\n next = getNext(start);\n dom.remove(start);\n start = next;\n }\n }\n }\n });\n var TypingHandler = Class.extend({\n init: function (editor) {\n this.editor = editor;\n },\n keydown: function (e) {\n var that = this, editor = that.editor, keyboard = editor.keyboard, isTypingKey = keyboard.isTypingKey(e), evt = extend($.Event(), e);\n that.editor.trigger('keydown', evt);\n if (evt.isDefaultPrevented()) {\n e.preventDefault();\n return true;\n }\n if (!evt.isDefaultPrevented() && isTypingKey && !keyboard.isTypingInProgress()) {\n var range = editor.getRange();\n var body = editor.body;\n that.startRestorePoint = new RestorePoint(range, body);\n if (inTable(range)) {\n var removeTableContent = new RemoveTableContent(editor);\n removeTableContent.remove(range);\n editor.selectRange(range);\n }\n if (browser.webkit && !range.collapsed && selected(body, range)) {\n body.innerHTML = '';\n }\n if (editor.immutables && editorNS.Immutables.immutablesContext(range)) {\n var backspaceHandler = new editorNS.BackspaceHandler(editor);\n backspaceHandler.deleteSelection(range);\n }\n keyboard.startTyping(function () {\n that.endRestorePoint = editorNS._finishUpdate(editor, that.startRestorePoint);\n });\n return true;\n }\n return false;\n },\n keyup: function (e) {\n var keyboard = this.editor.keyboard;\n this.editor.trigger('keyup', e);\n if (keyboard.isTypingInProgress()) {\n keyboard.endTyping();\n return true;\n }\n return false;\n }\n });\n var BackspaceHandler = Class.extend({\n init: function (editor) {\n this.editor = editor;\n },\n _addCaret: function (container) {\n var caret = dom.create(this.editor.document, 'a');\n if (!kendo.support.browser.chrome && container.firstChild && container.firstChild.nodeType === nodeTypes.ELEMENT_NODE) {\n container = container.firstChild;\n }\n dom.insertAt(container, caret, 0);\n dom.stripBomNode(caret.previousSibling);\n dom.stripBomNode(caret.nextSibling);\n return caret;\n },\n _restoreCaret: function (caret) {\n var range = this.editor.createRange();\n if (!caret.nextSibling && dom.isDataNode(caret.previousSibling)) {\n range.setStart(caret.previousSibling, caret.previousSibling.length);\n } else {\n range.setStartAfter(caret);\n }\n range.collapse(true);\n this.editor.selectRange(range);\n dom.remove(caret);\n },\n _handleDelete: function (range) {\n var node = range.endContainer;\n var block = dom.closestEditableOfType(node, dom.blockElements);\n if (block && editorNS.RangeUtils.isEndOf(range, block)) {\n var next = dom.next(block);\n if (!next || dom.name(next) != 'p') {\n return false;\n }\n var caret = this._addCaret(next);\n this._merge(block, next);\n this._restoreCaret(caret);\n return true;\n }\n return false;\n },\n _cleanBomBefore: function (range) {\n var offset = range.startOffset;\n var node = range.startContainer;\n var text = node.nodeValue;\n var count = 0;\n while (offset - count >= 0 && text[offset - count - 1] == '\\uFEFF') {\n count++;\n }\n if (count > 0) {\n node.deleteData(offset - count, count);\n range.setStart(node, Math.max(0, offset - count));\n range.collapse(true);\n this.editor.selectRange(range);\n }\n },\n _handleBackspace: function (range) {\n var node = range.startContainer;\n var li = dom.closestEditableOfType(node, ['li']);\n var block = dom.closestEditableOfType(node, 'p,h1,h2,h3,h4,h5,h6'.split(','));\n var editor = this.editor;\n var previousSibling;\n if (dom.isDataNode(node)) {\n if (range.collapsed && /^\\s[\\ufeff]+$/.test(node.nodeValue)) {\n range.setStart(node, 0);\n range.setEnd(node, node.length);\n editor.selectRange(range);\n return false;\n }\n this._cleanBomBefore(range);\n }\n previousSibling = getSibling(block, PREVIOUS_SIBLING, function (sibling) {\n return !dom.htmlIndentSpace(sibling);\n });\n if (range.collapsed && range.startOffset !== range.endOffset && range.startOffset < 0) {\n range.startOffset = 0;\n range.endOffset = 0;\n editor.selectRange(range);\n }\n var startAtLi = li && editorNS.RangeUtils.isStartOf(range, li);\n var liIndex = li && $(li).index();\n var startAtNonFirstLi = startAtLi && liIndex > 0;\n if (startAtNonFirstLi) {\n block = li;\n previousSibling = dom.prev(li);\n }\n if (block && previousSibling && dom.is(previousSibling, 'table') && editorNS.RangeUtils.isStartOf(range, block)) {\n if (block.innerText === '') {\n block.innerHTML = '\\uFEFF';\n }\n return true;\n }\n if (editorNS.RangeUtils.isStartOf(range, block) && (parseInt(block.style.marginLeft, 10) > 0 || parseInt(block.style.marginRight, 10) > 0)) {\n editor.exec('outdent');\n return true;\n }\n if (block && previousSibling && editorNS.RangeUtils.isStartOf(range, block) || startAtNonFirstLi) {\n var caret = this._addCaret(block);\n this._merge(previousSibling, block);\n this._restoreCaret(caret);\n return true;\n }\n if (startAtLi && liIndex === 0) {\n var child = li.firstChild;\n if (!child) {\n li.innerHTML = editorNS.emptyElementContent;\n child = li.firstChild;\n }\n var formatter = new editorNS.ListFormatter(dom.name(li.parentNode), 'p');\n range.selectNodeContents(li);\n formatter.toggle(range);\n if (dom.insignificant(child)) {\n range.setStartBefore(child);\n } else {\n range.setStart(child, 0);\n }\n editor.selectRange(range);\n return true;\n }\n var rangeStartNode = node.childNodes[range.startOffset - 1];\n var linkRange = range;\n var anchor = rangeStartNode && dom.closestEditableOfType(rangeStartNode, ['a']);\n var previousNode = getSibling(rangeStartNode || node, PREVIOUS_SIBLING, function (sibling) {\n return !dom.isDataNode(sibling) || !dom.isBom(sibling) && sibling.length > 0;\n });\n if (anchor || (range.startOffset === 0 || rangeStartNode) && dom.is(previousNode, 'a')) {\n anchor = anchor || previousNode;\n linkRange = editor.createRange();\n linkRange.setStart(anchor, anchor.childNodes.length);\n linkRange.collapse(true);\n }\n anchor = anchor || dom.closestEditableOfType(rangeStartNode || linkRange.startContainer, ['a']);\n var isEndOfLink = anchor && editorNS.RangeUtils.isEndOf(linkRange, anchor);\n if (isEndOfLink) {\n var command = new editorNS.UnlinkCommand({\n range: linkRange,\n body: editor.body,\n immutables: !!editor.immutables\n });\n editor.execCommand(command);\n editor._selectionChange();\n }\n return false;\n },\n _handleSelection: function (range) {\n var ancestor = range.commonAncestorContainer;\n var table = dom.closest(ancestor, 'table');\n var emptyParagraphContent = editorNS.emptyElementContent;\n var editor = this.editor;\n if (inTable(range)) {\n var removeTableContent = new RemoveTableContent(editor);\n removeTableContent.remove(range);\n editor.selectRange(range);\n return true;\n }\n var marker = new Marker();\n marker.add(range, false);\n if (range.commonAncestorContainer === editor.body) {\n this._surroundFullyContent(marker, range);\n }\n if (editor.immutables) {\n this._handleImmutables(marker);\n }\n this._surroundFullySelectedAnchor(marker, range);\n range.setStartAfter(marker.start);\n range.setEndBefore(marker.end);\n var start = range.startContainer;\n var end = range.endContainer;\n range.deleteContents();\n if (end.tagName.toLocaleLowerCase() === 'li' && dom.emptyNode(end)) {\n range.selectNode(end);\n range.deleteContents();\n }\n if (table && $(table).text() === '') {\n range.selectNode(table);\n range.deleteContents();\n }\n ancestor = range.commonAncestorContainer;\n if (dom.name(ancestor) === 'p' && ancestor.innerHTML === '') {\n ancestor.innerHTML = emptyParagraphContent;\n range.setStart(ancestor, 0);\n }\n this._join(start, end);\n dom.insertAfter(editor.document.createTextNode('\\uFEFF'), marker.start);\n marker.remove(range);\n start = range.startContainer;\n if (dom.name(start) == 'tr') {\n start = start.childNodes[Math.max(0, range.startOffset - 1)];\n range.setStart(start, dom.getNodeLength(start));\n }\n range.collapse(true);\n editor.selectRange(range);\n return true;\n },\n _handleImmutables: function (marker) {\n var immutableParent = editorNS.Immutables.immutableParent;\n var startImmutable = immutableParent(marker.start);\n var endImmutable = immutableParent(marker.start);\n if (startImmutable) {\n dom.insertBefore(marker.start, startImmutable);\n }\n if (endImmutable) {\n dom.insertAfter(marker.end, endImmutable);\n }\n if (startImmutable) {\n dom.remove(startImmutable);\n }\n if (endImmutable && endImmutable.parentNode) {\n dom.remove(endImmutable);\n }\n },\n _surroundFullyContent: function (marker, range) {\n var children = range.commonAncestorContainer.children, startParent = children[0], endParent = children[children.length - 1];\n this._moveMarker(marker, range, startParent, endParent);\n },\n _surroundFullySelectedAnchor: function (marker, range) {\n var start = marker.start, startParent = $(start).closest('a').get(0), end = marker.end, endParent = $(end).closest('a').get(0);\n this._moveMarker(marker, range, startParent, endParent);\n },\n _moveMarker: function (marker, range, startParent, endParent) {\n var start = marker.start, end = marker.end;\n if (startParent && RangeUtils.isStartOf(range, startParent)) {\n dom.insertBefore(start, startParent);\n }\n if (endParent && RangeUtils.isEndOf(range, endParent)) {\n dom.insertAfter(end, endParent);\n }\n },\n _root: function (node) {\n while (node && dom.name(node) != 'body' && node.parentNode && dom.name(node.parentNode) != 'body') {\n node = node.parentNode;\n }\n return node;\n },\n _join: function (start, end) {\n start = this._root(start);\n end = this._root(end);\n if (start != end && dom.is(end, 'p')) {\n this._merge(start, end);\n }\n },\n _merge: function (dest, src) {\n dom.removeTrailingBreak(dest);\n while (dest && src.firstChild) {\n if (dest.nodeType == 1) {\n dest = dom.list(dest) ? dest.children[dest.children.length - 1] : dest;\n if (dest) {\n dest.appendChild(src.firstChild);\n }\n } else if (dest.nodeType === nodeTypes.TEXT_NODE) {\n this._mergeWithTextNode(dest, src.firstChild);\n } else {\n dest.parentNode.appendChild(src.firstChild);\n }\n }\n dom.remove(src);\n },\n _mergeWithTextNode: function (textNode, appendedNode) {\n if (textNode && textNode.nodeType === nodeTypes.TEXT_NODE) {\n if (textNode.nextSibling && this._isCaret(textNode.nextSibling)) {\n dom.insertAfter(appendedNode, textNode.nextSibling);\n } else {\n dom.insertAfter(appendedNode, textNode);\n }\n }\n },\n _isCaret: function (element) {\n return $(element).is('a');\n },\n keydown: function (e) {\n var method, startRestorePoint;\n var editor = this.editor;\n var range = editor.getRange();\n var keyCode = e.keyCode;\n var keys = kendo.keys;\n var backspace = keyCode === keys.BACKSPACE;\n var del = keyCode == keys.DELETE;\n if (editor.immutables && editor.immutables.keydown(e, range)) {\n return;\n }\n if ((backspace || del) && !range.collapsed) {\n method = '_handleSelection';\n } else if (backspace) {\n method = '_handleBackspace';\n } else if (del) {\n method = '_handleDelete';\n }\n if (!method) {\n return;\n }\n startRestorePoint = new RestorePoint(range, editor.body);\n if (this[method](range)) {\n e.preventDefault();\n editorNS._finishUpdate(editor, startRestorePoint);\n }\n },\n deleteSelection: function (range) {\n this._handleSelection(range);\n },\n keyup: $.noop\n });\n var SystemHandler = Class.extend({\n init: function (editor) {\n this.editor = editor;\n this.systemCommandIsInProgress = false;\n },\n createUndoCommand: function () {\n this.startRestorePoint = this.endRestorePoint = editorNS._finishUpdate(this.editor, this.startRestorePoint);\n },\n changed: function () {\n if (this.startRestorePoint) {\n return this.startRestorePoint.html != this.editor.body.innerHTML;\n }\n return false;\n },\n keydown: function (e) {\n var that = this, editor = that.editor, keyboard = editor.keyboard;\n if (keyboard.isModifierKey(e)) {\n if (keyboard.isTypingInProgress()) {\n keyboard.endTyping(true);\n }\n that.startRestorePoint = new RestorePoint(editor.getRange(), editor.body);\n return true;\n }\n if (keyboard.isSystem(e)) {\n that.systemCommandIsInProgress = true;\n if (that.changed()) {\n that.systemCommandIsInProgress = false;\n that.createUndoCommand();\n }\n return true;\n }\n return false;\n },\n keyup: function () {\n var that = this;\n if (that.systemCommandIsInProgress && that.changed()) {\n that.systemCommandIsInProgress = false;\n that.createUndoCommand();\n return true;\n }\n return false;\n }\n });\n var SelectAllHandler = Class.extend({\n init: function (editor) {\n this.editor = editor;\n },\n keydown: function (e) {\n if (!browser.webkit || e.isDefaultPrevented() || !(e.ctrlKey && e.keyCode == 65 && !e.altKey && !e.shiftKey)) {\n return;\n }\n if (this.editor.options.immutables) {\n this._toSelectableImmutables();\n }\n this._selectEditorBody();\n },\n _selectEditorBody: function () {\n var editor = this.editor;\n var range = editor.getRange();\n range.selectNodeContents(editor.body);\n editor.selectRange(range);\n },\n _toSelectableImmutables: function () {\n var editor = this.editor, body = editor.body, immutable = editorNS.Immutables.immutable, emptyTextNode = dom.emptyTextNode, first = body.firstChild, last = body.lastChild;\n while (emptyTextNode(first)) {\n first = first.nextSibling;\n }\n while (emptyTextNode(last)) {\n last = last.previousSibling;\n }\n if (first && immutable(first)) {\n $(br).prependTo(body);\n }\n if (last && immutable(last)) {\n $(br).appendTo(body);\n }\n },\n keyup: $.noop\n });\n var Keyboard = Class.extend({\n init: function (handlers) {\n this.handlers = handlers;\n this.typingInProgress = false;\n },\n isCharacter: function (keyCode) {\n return keyCode >= 48 && keyCode <= 90 || keyCode >= 96 && keyCode <= 111 || keyCode >= 186 && keyCode <= 192 || keyCode >= 219 && keyCode <= 222 || keyCode == 229;\n },\n toolFromShortcut: function (tools, e) {\n var key = String.fromCharCode(e.keyCode), toolName, toolOptions, modifier = this._getShortcutModifier(e, navigator.platform);\n for (toolName in tools) {\n toolOptions = $.extend({\n ctrl: false,\n alt: false,\n shift: false\n }, tools[toolName].options);\n if ((toolOptions.key == key || toolOptions.key == e.keyCode) && toolOptions.ctrl == modifier && toolOptions.alt == e.altKey && toolOptions.shift == e.shiftKey) {\n return toolName;\n }\n }\n },\n _getShortcutModifier: function (e, platform) {\n var mac = platform.toUpperCase().indexOf('MAC') >= 0;\n return mac ? e.metaKey : e.ctrlKey;\n },\n toolsFromShortcut: function (tools, e) {\n var key = String.fromCharCode(e.keyCode), toolName, o, matchesKey, found = [];\n var matchKey = function (toolKey) {\n return toolKey == key || toolKey == e.keyCode || toolKey == e.charCode;\n };\n for (toolName in tools) {\n o = $.extend({\n ctrl: false,\n alt: false,\n shift: false\n }, tools[toolName].options);\n matchesKey = $.isArray(o.key) ? $.grep(o.key, matchKey).length > 0 : matchKey(o.key);\n if (matchesKey && o.ctrl == e.ctrlKey && o.alt == e.altKey && o.shift == e.shiftKey) {\n found.push(tools[toolName]);\n }\n }\n return found;\n },\n isTypingKey: function (e) {\n var keyCode = e.keyCode;\n return this.isCharacter(keyCode) && !e.ctrlKey && !e.altKey || keyCode == 32 || keyCode == 13 || keyCode == 8 || keyCode == 46 && !e.shiftKey && !e.ctrlKey && !e.altKey;\n },\n isModifierKey: function (e) {\n var keyCode = e.keyCode;\n return keyCode == 17 && !e.shiftKey && !e.altKey || keyCode == 16 && !e.ctrlKey && !e.altKey || keyCode == 18 && !e.ctrlKey && !e.shiftKey;\n },\n isSystem: function (e) {\n return e.keyCode == 46 && e.ctrlKey && !e.altKey && !e.shiftKey;\n },\n startTyping: function (callback) {\n this.onEndTyping = callback;\n this.typingInProgress = true;\n },\n stopTyping: function () {\n if (this.typingInProgress && this.onEndTyping) {\n this.onEndTyping();\n }\n this.typingInProgress = false;\n },\n endTyping: function (force) {\n var that = this;\n that.clearTimeout();\n if (force) {\n that.stopTyping();\n } else {\n that.timeout = window.setTimeout($.proxy(that.stopTyping, that), 1000);\n }\n },\n isTypingInProgress: function () {\n return this.typingInProgress;\n },\n clearTimeout: function () {\n window.clearTimeout(this.timeout);\n },\n notify: function (e, what) {\n var i, handlers = this.handlers;\n for (i = 0; i < handlers.length; i++) {\n if (handlers[i][what](e)) {\n break;\n }\n }\n },\n keydown: function (e) {\n this.notify(e, 'keydown');\n },\n keyup: function (e) {\n this.notify(e, 'keyup');\n }\n });\n extend(editorNS, {\n TypingHandler: TypingHandler,\n SystemHandler: SystemHandler,\n BackspaceHandler: BackspaceHandler,\n SelectAllHandler: SelectAllHandler,\n Keyboard: Keyboard\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/exportpdf', ['editor/command'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, editorNS = kendo.ui.editor, Command = editorNS.Command, EditorUtils = editorNS.EditorUtils, registerTool = EditorUtils.registerTool, Tool = editorNS.Tool, ToolTemplate = editorNS.ToolTemplate, extend = $.extend;\n var ExportPdfCommand = Command.extend({\n init: function (options) {\n this.async = true;\n Command.fn.init.call(this, options);\n },\n exec: function () {\n var that = this;\n var range = that.lockRange(true);\n var editor = that.editor;\n editor._destroyResizings();\n editor.saveAsPDF().then(function () {\n that.releaseRange(range);\n editor._initializeColumnResizing();\n editor._initializeRowResizing();\n editor._initializeTableResizing();\n });\n }\n });\n extend(editorNS, { ExportPdfCommand: ExportPdfCommand });\n registerTool('pdf', new Tool({\n command: ExportPdfCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Export PDF'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/plugins/print', ['editor/command'], f);\n}(function () {\n (function ($) {\n var kendo = window.kendo, editorNS = kendo.ui.editor, Command = editorNS.Command, EditorUtils = editorNS.EditorUtils, registerTool = EditorUtils.registerTool, Tool = editorNS.Tool, ToolTemplate = editorNS.ToolTemplate, extend = $.extend;\n var PrintCommand = Command.extend({\n init: function (options) {\n Command.fn.init.call(this, options);\n this.managesUndoRedo = true;\n },\n exec: function () {\n var editor = this.editor;\n if (kendo.support.browser.msie) {\n editor.document.execCommand('print', false, null);\n } else if (editor.window.print) {\n editor.window.print();\n }\n }\n });\n extend(editorNS, { PrintCommand: PrintCommand });\n registerTool('print', new Tool({\n command: PrintCommand,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Print'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/resizing/resizing-utils', ['editor/main'], f);\n}(function () {\n (function (kendo, undefined) {\n var global = window;\n var math = global.Math;\n var min = math.min;\n var max = math.max;\n var parseFloat = global.parseFloat;\n var $ = kendo.jQuery;\n var extend = $.extend;\n var Editor = kendo.ui.editor;\n var PERCENTAGE = '%';\n var PIXEL = 'px';\n var REGEX_NUMBER_IN_PERCENTAGES = /(\\d+)(\\.?)(\\d*)%/;\n var REGEX_NUMBER_IN_PIXELS = /(\\d+)(\\.?)(\\d*)px/;\n var STRING = 'string';\n function constrain(options) {\n var value = options.value;\n var lowerBound = options.min;\n var upperBound = options.max;\n return max(min(parseFloat(value), parseFloat(upperBound)), parseFloat(lowerBound));\n }\n function getScrollBarWidth(element) {\n if (element && !$(element).is('body') && element.scrollHeight > element.clientHeight) {\n return kendo.support.scrollbar();\n }\n return 0;\n }\n function calculatePercentageRatio(value, total) {\n if (inPercentages(value)) {\n return parseFloat(value);\n } else {\n return parseFloat(value) / total * 100;\n }\n }\n function inPercentages(value) {\n return typeof value === STRING && REGEX_NUMBER_IN_PERCENTAGES.test(value);\n }\n function inPixels(value) {\n return typeof value === STRING && REGEX_NUMBER_IN_PIXELS.test(value);\n }\n function toPercentages(value) {\n return parseFloat(value) + PERCENTAGE;\n }\n function toPixels(value) {\n return parseFloat(value) + PIXEL;\n }\n var ResizingUtils = {\n constrain: constrain,\n getScrollBarWidth: getScrollBarWidth,\n calculatePercentageRatio: calculatePercentageRatio,\n inPercentages: inPercentages,\n inPixels: inPixels,\n toPercentages: toPercentages,\n toPixels: toPixels\n };\n extend(Editor, { ResizingUtils: ResizingUtils });\n }(window.kendo));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/resizing/table-element-resizing', [\n 'editor/main',\n 'kendo.resizable',\n 'editor/resizing/resizing-utils'\n ], f);\n}(function () {\n (function (kendo, undefined) {\n var $ = kendo.jQuery;\n var extend = $.extend;\n var noop = $.noop;\n var proxy = $.proxy;\n var Editor = kendo.ui.editor;\n var Class = kendo.Class;\n var KEY_DOWN = 'keydown';\n var MOUSE_DOWN = 'mousedown';\n var MOUSE_ENTER = 'mouseenter';\n var MOUSE_LEAVE = 'mouseleave';\n var MOUSE_MOVE = 'mousemove';\n var MOUSE_UP = 'mouseup';\n var COMMA = ',';\n var DOT = '.';\n var LAST_CHILD = ':last-child';\n var TABLE = 'table';\n var TableElementResizing = Class.extend({\n init: function (element, options) {\n var that = this;\n that.options = extend({}, that.options, options);\n that.options.tags = $.isArray(that.options.tags) ? that.options.tags : [that.options.tags];\n if ($(element).is(TABLE)) {\n that.element = element;\n that._attachEventHandlers();\n }\n },\n destroy: function () {\n var that = this;\n var eventNamespace = that.options.eventNamespace;\n if (that.element) {\n $(that.element).off(eventNamespace);\n that.element = null;\n }\n $(that.options.rootElement).off(KEY_DOWN + eventNamespace);\n that._destroyResizeHandle();\n },\n options: {\n tags: [],\n min: 0,\n rootElement: null,\n eventNamespace: '',\n rtl: false,\n handle: {\n dataAttribute: '',\n height: 0,\n width: 0,\n classNames: {},\n template: ''\n }\n },\n _attachEventHandlers: function () {\n var that = this;\n var options = that.options;\n $(that.element).on(MOUSE_MOVE + options.eventNamespace, options.tags.join(COMMA), proxy(that.detectElementBorderHovering, that));\n },\n resizingInProgress: function () {\n var that = this;\n var resizable = that._resizable;\n if (resizable) {\n return !!resizable.resizing;\n }\n return false;\n },\n resize: noop,\n detectElementBorderHovering: function (e) {\n var that = this;\n var options = that.options;\n var handleOptions = options.handle;\n var tableElement = $(e.currentTarget);\n var resizeHandle = that.resizeHandle;\n var dataAttribute = handleOptions.dataAttribute;\n if (!that.resizingInProgress()) {\n if (!tableElement.is(LAST_CHILD) && that.elementBorderHovered(tableElement, e)) {\n if (resizeHandle) {\n if (resizeHandle.data(dataAttribute) && resizeHandle.data(dataAttribute) !== tableElement[0]) {\n that.showResizeHandle(tableElement, e);\n }\n } else {\n that.showResizeHandle(tableElement, e);\n }\n } else {\n if (resizeHandle) {\n that._destroyResizeHandle();\n }\n }\n }\n },\n elementBorderHovered: noop,\n showResizeHandle: function (tableElement, e) {\n var that = this;\n if (e.buttons !== 0) {\n return;\n }\n that._initResizeHandle();\n that.setResizeHandlePosition(tableElement);\n that.setResizeHandleDimensions();\n that.setResizeHandleDataAttributes(tableElement[0]);\n that._attachResizeHandleEventHandlers();\n that._initResizable(tableElement);\n that._hideResizeMarker();\n that.resizeHandle.show();\n },\n _initResizeHandle: function () {\n var that = this;\n var options = that.options;\n that._destroyResizeHandle();\n that.resizeHandle = $(options.handle.template).appendTo(options.rootElement);\n },\n setResizeHandlePosition: noop,\n setResizeHandleDimensions: noop,\n setResizeHandleDataAttributes: function (tableElement) {\n var that = this;\n that.resizeHandle.data(that.options.handle.dataAttribute, tableElement);\n },\n _attachResizeHandleEventHandlers: function () {\n var that = this;\n var options = that.options;\n var eventNamespace = options.eventNamespace;\n var markerClass = options.handle.classNames.marker;\n var resizeHandle = that.resizeHandle;\n that.resizeHandle.on(MOUSE_DOWN + eventNamespace, function () {\n resizeHandle.find(DOT + markerClass).show();\n }).on(MOUSE_UP + eventNamespace, function () {\n resizeHandle.find(DOT + markerClass).hide();\n });\n },\n _hideResizeMarker: function () {\n var that = this;\n that.resizeHandle.find(DOT + that.options.handle.classNames.marker).hide();\n },\n _destroyResizeHandle: function () {\n var that = this;\n if (that.resizeHandle) {\n that._destroyResizable();\n that.resizeHandle.off(that.options.eventNamespace).remove();\n that.resizeHandle = null;\n }\n },\n _initResizable: function (tableElement) {\n var that = this;\n if (!that.resizeHandle) {\n return;\n }\n that._destroyResizable();\n that._resizable = new kendo.ui.Resizable(tableElement, {\n draggableElement: that.resizeHandle[0],\n start: proxy(that.onResizeStart, that),\n resize: proxy(that.onResize, that),\n resizeend: proxy(that.onResizeEnd, that)\n });\n },\n _destroyResizable: function () {\n var that = this;\n if (that._resizable) {\n that._resizable.destroy();\n that._resizable = null;\n }\n },\n onResizeStart: function () {\n this._disableKeyboard();\n },\n onResize: function (e) {\n this.setResizeHandleDragPosition(e);\n },\n setResizeHandleDragPosition: noop,\n onResizeEnd: function (e) {\n var that = this;\n that.resize(e);\n that._destroyResizeHandle();\n that._enableKeyboard();\n },\n _enableKeyboard: function () {\n var options = this.options;\n $(options.rootElement).off(KEY_DOWN + options.eventNamespace);\n },\n _disableKeyboard: function () {\n var options = this.options;\n $(options.rootElement).on(KEY_DOWN + options.eventNamespace, function (e) {\n e.preventDefault();\n });\n },\n _forceResizing: function (e) {\n var resizable = this._resizable;\n if (resizable && resizable.userEvents) {\n resizable.userEvents._end(e);\n }\n }\n });\n var ResizingFactory = Class.extend({\n create: function (editor, options) {\n var that = this;\n var resizingName = options.name;\n var NS = options.eventNamespace;\n $(editor.body).on(MOUSE_ENTER + NS, TABLE, function (e) {\n var table = e.currentTarget;\n var resizing = editor[resizingName];\n e.stopPropagation();\n if (resizing) {\n if (resizing.element !== table && !resizing.resizingInProgress()) {\n that._destroyResizing(editor, options);\n that._initResizing(editor, table, options);\n }\n } else {\n that._initResizing(editor, table, options);\n }\n }).on(MOUSE_LEAVE + NS, TABLE, function (e) {\n var parentTable;\n var resizing = editor[resizingName];\n e.stopPropagation();\n if (resizing && !resizing.resizingInProgress() && !resizing.resizeHandle) {\n parentTable = $(resizing.element).parents(TABLE)[0];\n if (parentTable) {\n that._destroyResizing(editor, options);\n that._initResizing(editor, parentTable, options);\n }\n }\n }).on(MOUSE_LEAVE + NS, function () {\n var resizing = editor[resizingName];\n if (resizing && !resizing.resizingInProgress()) {\n that._destroyResizing(editor, options);\n }\n }).on(MOUSE_UP + NS, function (e) {\n var resizing = editor[resizingName];\n var parentTable;\n if (resizing && resizing.resizingInProgress()) {\n parentTable = $(e.target).parents(TABLE)[0];\n if (parentTable) {\n resizing._forceResizing(e);\n that._destroyResizing(editor, options);\n that._initResizing(editor, parentTable, options);\n }\n }\n });\n },\n dispose: function (editor, options) {\n $(editor.body).off(options.eventNamespace);\n },\n _initResizing: function (editor, tableElement, options) {\n var resizingName = options.name;\n var resizingType = options.type;\n editor[resizingName] = new resizingType(tableElement, {\n rtl: kendo.support.isRtl(editor.element),\n rootElement: editor.body\n });\n },\n _destroyResizing: function (editor, options) {\n var resizingName = options.name;\n if (editor[resizingName]) {\n editor[resizingName].destroy();\n editor[resizingName] = null;\n }\n }\n });\n ResizingFactory.current = new ResizingFactory();\n TableElementResizing.create = function (editor, options) {\n ResizingFactory.current.create(editor, options);\n };\n TableElementResizing.dispose = function (editor, options) {\n ResizingFactory.current.dispose(editor, options);\n };\n extend(Editor, { TableElementResizing: TableElementResizing });\n }(window.kendo));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/resizing/column-resizing', [\n 'editor/main',\n 'editor/resizing/resizing-utils',\n 'editor/resizing/table-element-resizing'\n ], f);\n}(function () {\n (function (kendo, undefined) {\n var global = window;\n var math = global.Math;\n var abs = math.abs;\n var $ = kendo.jQuery;\n var extend = $.extend;\n var Editor = kendo.ui.editor;\n var TableElementResizing = Editor.TableElementResizing;\n var ResizingUtils = Editor.ResizingUtils;\n var constrain = ResizingUtils.constrain;\n var calculatePercentageRatio = ResizingUtils.calculatePercentageRatio;\n var getScrollBarWidth = ResizingUtils.getScrollBarWidth;\n var inPercentages = ResizingUtils.inPercentages;\n var toPercentages = ResizingUtils.toPercentages;\n var toPixels = ResizingUtils.toPixels;\n var outerWidth = kendo._outerWidth;\n var NS = '.kendoEditorColumnResizing';\n var RESIZE_HANDLE_CLASS = 'k-column-resize-handle';\n var RESIZE_MARKER_CLASS = 'k-column-resize-marker';\n var BODY = 'body';\n var TBODY = 'tbody';\n var TD = 'td';\n var TH = 'th';\n var TR = 'tr';\n var COMMA = ',';\n var WIDTH = 'width';\n var ColumnResizing = TableElementResizing.extend({\n options: {\n tags: [\n TD,\n TH\n ],\n min: 20,\n rootElement: null,\n eventNamespace: NS,\n rtl: false,\n handle: {\n dataAttribute: 'column',\n width: 10,\n height: 0,\n classNames: {\n handle: RESIZE_HANDLE_CLASS,\n marker: RESIZE_MARKER_CLASS\n },\n template: '<div class=\"k-column-resize-handle-wrapper\" unselectable=\"on\" contenteditable=\"false\">' + '<div class=\"' + RESIZE_HANDLE_CLASS + '\">' + '<div class=\"' + RESIZE_MARKER_CLASS + '\"></div>' + '</div>' + '</div>'\n }\n },\n elementBorderHovered: function (column, e) {\n var that = this;\n var options = that.options;\n var handleWidth = options.handle.width;\n var borderOffset = column.offset().left + (options.rtl ? 0 : outerWidth(column));\n var mousePosition = e.clientX + $(column[0].ownerDocument).scrollLeft();\n if (mousePosition > borderOffset - handleWidth && mousePosition < borderOffset + handleWidth) {\n return true;\n } else {\n return false;\n }\n },\n setResizeHandlePosition: function (column) {\n var that = this;\n var tableBody = $(that.element).children(TBODY);\n var options = that.options;\n var rtl = options.rtl;\n var handleWidth = options.handle.width;\n var rootElement = $(options.rootElement);\n var scrollTopOffset = rootElement.is(BODY) ? 0 : rootElement.scrollTop();\n var scrollLeftOffset = rootElement.is(BODY) ? 0 : rootElement.scrollLeft();\n var columnWidthOffset = rtl ? 0 : outerWidth(column);\n var scrollBarWidth = rtl ? getScrollBarWidth(rootElement[0]) : 0;\n var columnOffsetLeft = column.offset().left - (rootElement.offset().left + parseFloat(rootElement.css('borderLeftWidth'))) - parseFloat(column.css('marginLeft'));\n var tBodyOffsetTop = tableBody.offset().top - (rootElement.offset().top + parseFloat(rootElement.css('borderTopWidth'))) - parseFloat(tableBody.css('marginTop'));\n that.resizeHandle.css({\n top: tBodyOffsetTop + scrollTopOffset,\n left: columnOffsetLeft + columnWidthOffset + (scrollLeftOffset - scrollBarWidth) - handleWidth / 2,\n position: 'absolute'\n });\n },\n setResizeHandleDimensions: function () {\n var that = this;\n var tableBody = $(that.element).children(TBODY);\n that.resizeHandle.css({\n width: that.options.handle.width,\n height: tableBody.height()\n });\n },\n setResizeHandleDragPosition: function (e) {\n var that = this;\n var column = $($(e.currentTarget).data(that.options.handle.dataAttribute));\n var options = that.options;\n var rootElement = $(options.rootElement);\n var handleWidth = options.handle ? options.handle.width : 0;\n var min = options.min;\n var rtl = options.rtl;\n var columnWidth = outerWidth(column);\n var columnLeftOffset = column.offset().left - (rootElement.offset().left + parseFloat(rootElement.css('borderLeftWidth'))) - parseFloat(column.css('marginLeft'));\n var adjacentColumnWidth = outerWidth(column.next());\n var resizeHandle = $(that.resizeHandle);\n var scrollLeftOffset = rootElement.is(BODY) ? 0 : rootElement.scrollLeft();\n var scrollBarWidth = rtl ? getScrollBarWidth(rootElement[0]) : 0;\n var resizeHandleOffsetLeft = resizeHandle.offset().left - (rootElement.offset().left + parseFloat(rootElement.css('borderLeftWidth'))) - parseFloat(resizeHandle.css('marginLeft'));\n var handleOffset = constrain({\n value: resizeHandleOffsetLeft + (scrollLeftOffset - scrollBarWidth) + e.x.delta,\n min: columnLeftOffset + (scrollLeftOffset - scrollBarWidth) - (rtl ? adjacentColumnWidth : 0) + min,\n max: columnLeftOffset + columnWidth + (scrollLeftOffset - scrollBarWidth) + (rtl ? 0 : adjacentColumnWidth) - handleWidth - min\n });\n resizeHandle.css({ left: handleOffset });\n },\n resize: function (e) {\n var that = this;\n var column = $($(e.currentTarget).data(that.options.handle.dataAttribute));\n var options = that.options;\n var rtlModifier = options.rtl ? -1 : 1;\n var min = options.min;\n var initialDeltaX = rtlModifier * e.x.initialDelta;\n var newWidth;\n var initialAdjacentColumnWidth;\n var initialColumnWidth;\n that._setTableComputedWidth();\n that._setColumnsComputedWidth();\n initialColumnWidth = outerWidth(column);\n initialAdjacentColumnWidth = outerWidth(column.next());\n newWidth = constrain({\n value: initialColumnWidth + initialDeltaX,\n min: min,\n max: initialColumnWidth + initialAdjacentColumnWidth - min\n });\n that._resizeColumn(column[0], newWidth);\n that._resizeTopAndBottomColumns(column[0], newWidth);\n that._resizeAdjacentColumns(column.index(), initialAdjacentColumnWidth, initialColumnWidth, initialColumnWidth - newWidth);\n },\n _setTableComputedWidth: function () {\n var element = this.element;\n if (element.style[WIDTH] === '') {\n element.style[WIDTH] = toPixels(outerWidth($(element)));\n }\n },\n _setColumnsComputedWidth: function () {\n var that = this;\n var tableBody = $(that.element).children(TBODY);\n var tableBodyWidth = outerWidth(tableBody);\n var columns = tableBody.children(TR).children(TD);\n var length = columns.length;\n var currentColumnsWidths = columns.map(function () {\n return outerWidth($(this));\n });\n var i;\n for (i = 0; i < length; i++) {\n if (inPercentages(columns[i].style[WIDTH])) {\n columns[i].style[WIDTH] = toPercentages(calculatePercentageRatio(currentColumnsWidths[i], tableBodyWidth));\n } else {\n columns[i].style[WIDTH] = toPixels(currentColumnsWidths[i]);\n }\n }\n },\n _resizeTopAndBottomColumns: function (column, newWidth) {\n var that = this;\n var columnIndex = $(column).index();\n var topAndBottomColumns = $(that.element).children(TBODY).children(TR).children(that.options.tags.join(COMMA)).filter(function () {\n var cell = this;\n return $(cell).index() === columnIndex && cell !== column;\n });\n var length = topAndBottomColumns.length;\n var i;\n for (i = 0; i < length; i++) {\n that._resizeColumn(topAndBottomColumns[i], newWidth);\n }\n },\n _resizeColumn: function (column, newWidth) {\n if (inPercentages(column.style[WIDTH])) {\n column.style[WIDTH] = toPercentages(calculatePercentageRatio(newWidth, outerWidth($(this.element).children(TBODY))));\n } else {\n column.style[WIDTH] = toPixels(newWidth);\n }\n },\n _resizeAdjacentColumns: function (columnIndex, initialAdjacentColumnWidth, initialColumnWidth, deltaWidth) {\n var that = this;\n var adjacentColumns = $(that.element).children(TBODY).children(TR).children(that.options.tags.join(COMMA)).filter(function () {\n return $(this).index() === columnIndex + 1;\n });\n var length = adjacentColumns.length;\n var i;\n for (i = 0; i < length; i++) {\n that._resizeAdjacentColumn(adjacentColumns[i], initialAdjacentColumnWidth, initialColumnWidth, deltaWidth);\n }\n },\n _resizeAdjacentColumn: function (adjacentColumn, initialAdjacentColumnWidth, initialColumnWidth, deltaWidth) {\n var that = this;\n var min = that.options.min;\n var newWidth;\n newWidth = constrain({\n value: initialAdjacentColumnWidth + deltaWidth,\n min: min,\n max: abs(initialColumnWidth + initialAdjacentColumnWidth - min)\n });\n that._resizeColumn(adjacentColumn, newWidth);\n }\n });\n ColumnResizing.create = function (editor) {\n TableElementResizing.create(editor, {\n name: 'columnResizing',\n type: ColumnResizing,\n eventNamespace: NS\n });\n };\n ColumnResizing.dispose = function (editor) {\n TableElementResizing.dispose(editor, { eventNamespace: NS });\n };\n extend(Editor, { ColumnResizing: ColumnResizing });\n }(window.kendo));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/resizing/row-resizing', [\n 'editor/main',\n 'editor/resizing/resizing-utils',\n 'editor/resizing/table-element-resizing'\n ], f);\n}(function () {\n (function (kendo, undefined) {\n var math = window.Math;\n var abs = math.abs;\n var $ = kendo.jQuery;\n var extend = $.extend;\n var Editor = kendo.ui.editor;\n var TableElementResizing = Editor.TableElementResizing;\n var ResizingUtils = Editor.ResizingUtils;\n var getScrollBarWidth = ResizingUtils.getScrollBarWidth;\n var constrain = ResizingUtils.constrain;\n var calculatePercentageRatio = ResizingUtils.calculatePercentageRatio;\n var inPercentages = ResizingUtils.inPercentages;\n var toPercentages = ResizingUtils.toPercentages;\n var toPixels = ResizingUtils.toPixels;\n var outerHeight = kendo._outerHeight;\n var NS = '.kendoEditorRowResizing';\n var RESIZE_HANDLE_CLASS = 'k-row-resize-handle';\n var RESIZE_HANDLE_MARKER_WRAPPER_CLASS = 'k-row-resize-marker-wrapper';\n var RESIZE_MARKER_CLASS = 'k-row-resize-marker';\n var BODY = 'body';\n var TR = 'tr';\n var TBODY = 'tbody';\n var HEIGHT = 'height';\n var RowResizing = TableElementResizing.extend({\n options: {\n tags: [TR],\n min: 20,\n rootElement: null,\n eventNamespace: NS,\n rtl: false,\n handle: {\n dataAttribute: 'row',\n width: 0,\n height: 10,\n classNames: {\n handle: RESIZE_HANDLE_CLASS,\n marker: RESIZE_MARKER_CLASS\n },\n template: '<div class=\"k-row-resize-handle-wrapper\" unselectable=\"on\" contenteditable=\"false\">' + '<div class=\"' + RESIZE_HANDLE_CLASS + '\">' + '<div class=\"' + RESIZE_HANDLE_MARKER_WRAPPER_CLASS + '\">' + '<div class=\"' + RESIZE_MARKER_CLASS + '\"></div>' + '</div>' + '</div>' + '</div>'\n }\n },\n elementBorderHovered: function (tableElement, e) {\n var that = this;\n var handleHeight = that.options.handle[HEIGHT];\n var borderOffset = tableElement.offset().top + outerHeight(tableElement);\n var mousePosition = e.clientY + $(tableElement[0].ownerDocument).scrollTop();\n if (mousePosition > borderOffset - handleHeight && mousePosition < borderOffset + handleHeight) {\n return true;\n } else {\n return false;\n }\n },\n setResizeHandlePosition: function (row) {\n var that = this;\n var options = that.options;\n var handleHeight = options.handle[HEIGHT];\n var rootElement = $(options.rootElement);\n var scrollTopOffset = rootElement.is(BODY) ? 0 : rootElement.scrollTop();\n var scrollLeftOffset = rootElement.is(BODY) ? 0 : rootElement.scrollLeft();\n var scrollBarWidth = options.rtl ? getScrollBarWidth(rootElement[0]) : 0;\n var rowOffsetLeft = row.offset().left - (rootElement.offset().left + parseFloat(rootElement.css('borderLeftWidth'))) - parseFloat(row.css('marginLeft'));\n var rowOffsetTop = row.offset().top - (rootElement.offset().top + parseFloat(rootElement.css('borderTopWidth'))) - parseFloat(row.css('marginTop'));\n that.resizeHandle.css({\n top: rowOffsetTop + outerHeight(row) + scrollTopOffset - handleHeight / 2,\n left: rowOffsetLeft + (scrollLeftOffset - scrollBarWidth),\n position: 'absolute'\n });\n },\n setResizeHandleDimensions: function () {\n var that = this;\n that.resizeHandle.css({\n width: $(that.element).children(TBODY).width(),\n height: that.options.handle[HEIGHT]\n });\n },\n setResizeHandleDragPosition: function (e) {\n var that = this;\n var options = that.options;\n var min = options.min;\n var tableBody = $(that.element).children(TBODY);\n var resizeHandle = $(that.resizeHandle);\n var row = $(e.currentTarget).data(options.handle.dataAttribute);\n var $row = $(row);\n var rootElement = $(options.rootElement);\n var scrollTopOffset = rootElement.is(BODY) ? 0 : rootElement.scrollTop();\n var tableBodyTopOffset = tableBody.offset().top - (rootElement.offset().top + parseFloat(rootElement.css('borderTopWidth'))) - parseFloat(tableBody.css('marginTop'));\n var rowOffsetTop = $row.offset().top - (rootElement.offset().top + parseFloat(rootElement.css('borderTopWidth'))) - parseFloat($row.css('marginTop'));\n var resizeHandleOffsetTop = resizeHandle.offset().top - (Math.max(0, rootElement.offset().top) + parseFloat(rootElement.css('borderTopWidth'))) - parseFloat(resizeHandle.css('marginTop'));\n var handleOffset = constrain({\n value: resizeHandleOffsetTop + scrollTopOffset + e.y.delta,\n min: rowOffsetTop + scrollTopOffset + min,\n max: tableBodyTopOffset + outerHeight(tableBody) + scrollTopOffset - options.handle[HEIGHT] - min\n });\n resizeHandle.css({ top: handleOffset });\n },\n resize: function (e) {\n var that = this;\n var options = that.options;\n var row = $(e.currentTarget).data(options.handle.dataAttribute);\n var currentRowHeight = outerHeight($(row));\n var element = $(that.element);\n var initialTableHeight = outerHeight(element);\n var tableBody = element.children(TBODY);\n var tableBodyHeight = tableBody.height();\n var initialStyleHeight = row.style[HEIGHT];\n var newRowHeight = constrain({\n value: currentRowHeight + e.y.initialDelta,\n min: options.min,\n max: abs(tableBodyHeight - options.min)\n });\n that._setRowsHeightInPixels();\n row.style[HEIGHT] = toPixels(newRowHeight);\n that._setTableHeight(initialTableHeight + (newRowHeight - currentRowHeight));\n if (inPercentages(initialStyleHeight)) {\n that._setRowsHeightInPercentages();\n }\n },\n _setRowsHeightInPixels: function () {\n var that = this;\n var rows = $(that.element).children(TBODY).children(TR);\n var length = rows.length;\n var currentRowsHeights = rows.map(function () {\n return outerHeight($(this));\n });\n var i;\n for (i = 0; i < length; i++) {\n rows[i].style[HEIGHT] = toPixels(currentRowsHeights[i]);\n }\n },\n _setRowsHeightInPercentages: function () {\n var that = this;\n var tableBody = $(that.element).children(TBODY);\n var tableBodyHeight = tableBody.height();\n var rows = tableBody.children(TR);\n var length = rows.length;\n var currentRowsHeights = rows.map(function () {\n return outerHeight($(this));\n });\n var i;\n for (i = 0; i < length; i++) {\n rows[i].style[HEIGHT] = toPercentages(calculatePercentageRatio(currentRowsHeights[i], tableBodyHeight));\n }\n },\n _setTableHeight: function (newHeight) {\n var element = this.element;\n if (inPercentages(element.style[HEIGHT])) {\n element.style[HEIGHT] = toPercentages(calculatePercentageRatio(newHeight, $(element).parent().height()));\n } else {\n element.style[HEIGHT] = toPixels(newHeight);\n }\n }\n });\n RowResizing.create = function (editor) {\n TableElementResizing.create(editor, {\n name: 'rowResizing',\n type: RowResizing,\n eventNamespace: NS\n });\n };\n RowResizing.dispose = function (editor) {\n TableElementResizing.dispose(editor, { eventNamespace: NS });\n };\n extend(Editor, { RowResizing: RowResizing });\n }(window.kendo));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/resizing/table-resize-handle', [\n 'editor/main',\n 'kendo.draganddrop',\n 'editor/resizing/resizing-utils'\n ], f);\n}(function () {\n (function (kendo, undefined) {\n var $ = kendo.jQuery;\n var extend = $.extend;\n var noop = $.noop;\n var proxy = $.proxy;\n var Editor = kendo.ui.editor;\n var Class = kendo.Class;\n var Draggable = kendo.ui.Draggable;\n var Observable = kendo.Observable;\n var getScrollBarWidth = Editor.ResizingUtils.getScrollBarWidth;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n var NS = '.kendoEditorTableResizeHandle';\n var RESIZE_HANDLE_CLASS = 'k-table-resize-handle';\n var DRAG_START = 'dragStart';\n var DRAG = 'drag';\n var DRAG_END = 'dragEnd';\n var HALF_INSIDE = 'halfInside';\n var MOUSE_OVER = 'mouseover';\n var MOUSE_OUT = 'mouseout';\n var BODY = 'body';\n var TABLE = 'table';\n var EAST = 'east';\n var NORTH = 'north';\n var NORTHEAST = 'northeast';\n var NORTHWEST = 'northwest';\n var SOUTH = 'south';\n var SOUTHEAST = 'southeast';\n var SOUTHWEST = 'southwest';\n var WEST = 'west';\n var DOT = '.';\n var TableResizeHandle = Observable.extend({\n init: function (options) {\n var that = this;\n Observable.fn.init.call(that);\n that.options = extend({}, that.options, options);\n that.element = $(that.options.template).appendTo(that.options.appendTo)[0];\n that._attachEventHandlers();\n that._addStyles();\n that._initDraggable();\n that._initPositioningStrategy();\n that._initDraggingStrategy();\n $(that.element).data(TABLE, that.options.resizableElement);\n },\n destroy: function () {\n var that = this;\n $(that.element).off(NS).remove();\n that.element = null;\n that._destroyDraggable();\n that.unbind();\n },\n options: {\n appendTo: null,\n direction: SOUTHEAST,\n resizableElement: null,\n rtl: false,\n template: '<div class=\\'k-table-resize-handle-wrapper\\' unselectable=\\'on\\' contenteditable=\\'false\\'>' + '<div class=\\'' + RESIZE_HANDLE_CLASS + '\\'></div>' + '</div>'\n },\n events: [\n DRAG_START,\n DRAG,\n DRAG_END,\n MOUSE_OVER,\n MOUSE_OUT\n ],\n show: function () {\n this._setPosition();\n },\n _setPosition: function () {\n var that = this;\n var position = that._positioningStrategy.getPosition();\n $(that.element).css({\n top: position.top,\n left: position.left,\n position: 'absolute'\n });\n },\n _attachEventHandlers: function () {\n var that = this;\n $(that.element).on(MOUSE_OVER + NS, proxy(that._onMouseOver, that)).on(MOUSE_OUT + NS, proxy(that._onMouseOut, that));\n },\n _onMouseOver: function () {\n this.trigger(MOUSE_OVER);\n },\n _onMouseOut: function () {\n this.trigger(MOUSE_OUT);\n },\n _addStyles: function () {\n var that = this;\n $(that.element).children(DOT + RESIZE_HANDLE_CLASS).addClass('k-resize-' + that.options.direction);\n },\n _initPositioningStrategy: function () {\n var that = this;\n var options = that.options;\n that._positioningStrategy = HandlePositioningStrategy.create({\n name: options.direction,\n handle: that.element,\n resizableElement: options.resizableElement,\n rootElement: options.rootElement,\n rtl: options.rtl\n });\n },\n _initDraggable: function () {\n var that = this;\n var element = that.element;\n if (that._draggable || !element) {\n return;\n }\n that._draggable = new Draggable(element, {\n dragstart: proxy(that._onDragStart, that),\n drag: proxy(that._onDrag, that),\n dragend: proxy(that._onDragEnd, that)\n });\n },\n _onDragStart: function () {\n this.trigger(DRAG_START);\n },\n _onDrag: function (e) {\n var that = this;\n that.trigger(DRAG, that._draggingStrategy.adjustDragDelta({\n deltaX: e.x.delta,\n deltaY: e.y.delta,\n initialDeltaX: e.x.initialDelta,\n initialDeltaY: e.y.initialDelta\n }));\n },\n _onDragEnd: function () {\n this.trigger(DRAG_END);\n },\n _destroyDraggable: function () {\n var that = this;\n if (that._draggable) {\n that._draggable.destroy();\n that._draggable = null;\n }\n },\n _initDraggingStrategy: function () {\n var that = this;\n that._draggingStrategy = HandleDraggingStrategy.create({ name: that.options.direction });\n }\n });\n var StrategyFactory = Class.extend({\n init: function () {\n this._items = [];\n },\n register: function (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n },\n create: function (options) {\n var items = this._items;\n var itemsLength = items.length;\n var name = options.name ? options.name.toLowerCase() : '';\n var match;\n var item;\n var i;\n for (i = 0; i < itemsLength; i++) {\n item = items[i];\n if (item.name.toLowerCase() === name) {\n match = item;\n break;\n }\n }\n if (match) {\n return new match.type(options);\n }\n }\n });\n var PositioningStrategyFactory = StrategyFactory.extend({});\n PositioningStrategyFactory.current = new PositioningStrategyFactory();\n var HandlePositioningStrategy = Class.extend({\n init: function (options) {\n var that = this;\n that.options = extend({}, that.options, options);\n },\n options: {\n handle: null,\n offset: HALF_INSIDE,\n resizableElement: null,\n rootElement: null,\n rtl: false\n },\n getPosition: function () {\n var that = this;\n var position = that.calculatePosition();\n var handleOffsetPosition = that.applyHandleOffset(position);\n var scrollOffsetPosition = that.applyScrollOffset(handleOffsetPosition);\n return scrollOffsetPosition;\n },\n calculatePosition: noop,\n applyHandleOffset: function (position) {\n var options = this.options;\n var handle = $(options.handle);\n if (options.offset === HALF_INSIDE) {\n return {\n top: position.top - outerHeight(handle) / 2,\n left: position.left - outerWidth(handle) / 2\n };\n }\n return position;\n },\n applyScrollOffset: function (position) {\n var options = this.options;\n var rootElement = $(options.rootElement);\n var scrollBarWidth = options.rtl ? getScrollBarWidth(rootElement[0]) : 0;\n if (!rootElement.is(BODY)) {\n return {\n top: position.top + (rootElement.scrollTop() || 0),\n left: position.left + (rootElement.scrollLeft() || 0) - scrollBarWidth\n };\n }\n return position;\n }\n });\n HandlePositioningStrategy.create = function (options) {\n return PositioningStrategyFactory.current.create(options);\n };\n var EastPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function () {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n return {\n top: offset.top + outerHeight(resizableElement) / 2,\n left: offset.left + outerWidth(resizableElement)\n };\n }\n });\n PositioningStrategyFactory.current.register(EAST, EastPositioningStrategy);\n var NorthPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function () {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n return {\n top: offset.top,\n left: offset.left + outerWidth(resizableElement) / 2\n };\n }\n });\n PositioningStrategyFactory.current.register(NORTH, NorthPositioningStrategy);\n var NortheastPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function () {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n return {\n top: offset.top,\n left: offset.left + outerWidth(resizableElement)\n };\n }\n });\n PositioningStrategyFactory.current.register(NORTHEAST, NortheastPositioningStrategy);\n var NorthwestPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function () {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n return {\n top: offset.top,\n left: offset.left\n };\n }\n });\n PositioningStrategyFactory.current.register(NORTHWEST, NorthwestPositioningStrategy);\n var SouthPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function () {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n return {\n top: offset.top + outerHeight(resizableElement),\n left: offset.left + outerWidth(resizableElement) / 2\n };\n }\n });\n PositioningStrategyFactory.current.register(SOUTH, SouthPositioningStrategy);\n var SoutheastPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function () {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n return {\n top: offset.top + outerHeight(resizableElement),\n left: offset.left + outerWidth(resizableElement)\n };\n }\n });\n PositioningStrategyFactory.current.register(SOUTHEAST, SoutheastPositioningStrategy);\n var SouthwestPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function () {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n return {\n top: offset.top + outerHeight(resizableElement),\n left: offset.left\n };\n }\n });\n PositioningStrategyFactory.current.register(SOUTHWEST, SouthwestPositioningStrategy);\n var WestPositioningStrategy = HandlePositioningStrategy.extend({\n calculatePosition: function () {\n var resizableElement = $(this.options.resizableElement);\n var offset = resizableElement.position();\n return {\n top: offset.top + outerHeight(resizableElement) / 2,\n left: offset.left\n };\n }\n });\n PositioningStrategyFactory.current.register(WEST, WestPositioningStrategy);\n var DraggingStrategyFactory = StrategyFactory.extend({});\n DraggingStrategyFactory.current = new DraggingStrategyFactory();\n var HandleDraggingStrategy = Class.extend({\n init: function (options) {\n var that = this;\n that.options = extend({}, that.options, options);\n },\n options: {\n deltaX: {\n adjustment: null,\n modifier: null\n },\n deltaY: {\n adjustment: null,\n modifier: null\n }\n },\n adjustDragDelta: function (deltas) {\n var options = this.options;\n var xAxisAdjustment = options.deltaX.adjustment * options.deltaX.modifier;\n var yAxisAdjustment = options.deltaY.adjustment * options.deltaY.modifier;\n return {\n deltaX: deltas.deltaX * xAxisAdjustment,\n deltaY: deltas.deltaY * yAxisAdjustment,\n initialDeltaX: deltas.initialDeltaX * xAxisAdjustment,\n initialDeltaY: deltas.initialDeltaY * yAxisAdjustment\n };\n }\n });\n HandleDraggingStrategy.create = function (options) {\n return DraggingStrategyFactory.current.create(options);\n };\n var HorizontalDraggingStrategy = HandleDraggingStrategy.extend({\n options: {\n deltaX: {\n adjustment: 1,\n modifier: 1\n },\n deltaY: {\n adjustment: 0,\n modifier: 0\n }\n }\n });\n var EastDraggingStrategy = HorizontalDraggingStrategy.extend({ options: { deltaX: { modifier: 1 } } });\n DraggingStrategyFactory.current.register(EAST, EastDraggingStrategy);\n var WestDraggingStrategy = HorizontalDraggingStrategy.extend({ options: { deltaX: { modifier: -1 } } });\n DraggingStrategyFactory.current.register(WEST, WestDraggingStrategy);\n var VerticalDraggingStrategy = HandleDraggingStrategy.extend({\n options: {\n deltaX: {\n adjustment: 0,\n modifier: 0\n },\n deltaY: {\n adjustment: 1,\n modifier: 1\n }\n }\n });\n var NorthDraggingStrategy = VerticalDraggingStrategy.extend({ options: { deltaY: { modifier: -1 } } });\n DraggingStrategyFactory.current.register(NORTH, NorthDraggingStrategy);\n var SouthDraggingStrategy = VerticalDraggingStrategy.extend({ options: { deltaY: { modifier: 1 } } });\n DraggingStrategyFactory.current.register(SOUTH, SouthDraggingStrategy);\n var HorizontalAndVerticalDraggingStrategy = HandleDraggingStrategy.extend({\n options: {\n deltaX: {\n adjustment: 1,\n modifier: 1\n },\n deltaY: {\n adjustment: 1,\n modifier: 1\n }\n }\n });\n var NorthEastDraggingStrategy = HorizontalAndVerticalDraggingStrategy.extend({\n options: {\n deltaX: { modifier: 1 },\n deltaY: { modifier: -1 }\n }\n });\n DraggingStrategyFactory.current.register(NORTHEAST, NorthEastDraggingStrategy);\n var NorthWestDraggingStrategy = HorizontalAndVerticalDraggingStrategy.extend({\n options: {\n deltaX: { modifier: -1 },\n deltaY: { modifier: -1 }\n }\n });\n DraggingStrategyFactory.current.register(NORTHWEST, NorthWestDraggingStrategy);\n var SouthEastDraggingStrategy = HorizontalAndVerticalDraggingStrategy.extend({\n options: {\n deltaX: { modifier: 1 },\n deltaY: { modifier: 1 }\n }\n });\n DraggingStrategyFactory.current.register(SOUTHEAST, SouthEastDraggingStrategy);\n var SouthWestDraggingStrategy = HorizontalAndVerticalDraggingStrategy.extend({\n options: {\n deltaX: { modifier: -1 },\n deltaY: { modifier: 1 }\n }\n });\n DraggingStrategyFactory.current.register(SOUTHWEST, SouthWestDraggingStrategy);\n extend(Editor, { TableResizeHandle: TableResizeHandle });\n }(window.kendo));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/resizing/table-resizing', [\n 'editor/main',\n 'editor/resizing/table-resize-handle',\n 'editor/resizing/resizing-utils'\n ], f);\n}(function () {\n (function (kendo, undefined) {\n var global = window;\n var math = global.Math;\n var min = math.min;\n var max = math.max;\n var $ = kendo.jQuery;\n var contains = $.contains;\n var extend = $.extend;\n var proxy = $.proxy;\n var browser = kendo.support.browser;\n var Editor = kendo.ui.editor;\n var Class = kendo.Class;\n var TableResizeHandle = Editor.TableResizeHandle;\n var ResizingUtils = Editor.ResizingUtils;\n var calculatePercentageRatio = ResizingUtils.calculatePercentageRatio;\n var constrain = ResizingUtils.constrain;\n var inPercentages = ResizingUtils.inPercentages;\n var inPixels = ResizingUtils.inPixels;\n var toPercentages = ResizingUtils.toPercentages;\n var toPixels = ResizingUtils.toPixels;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n var NS = '.kendoEditorTableResizing';\n var RESIZE_HANDLE_WRAPPER_CLASS = 'k-table-resize-handle-wrapper';\n var TABLE_CLASS = 'k-table';\n var TABLE_RESIZING_CLASS = 'k-table-resizing';\n var DRAG_START = 'dragStart';\n var DRAG = 'drag';\n var DRAG_END = 'dragEnd';\n var KEY_DOWN = 'keydown';\n var MOUSE_DOWN = 'mousedown';\n var MOUSE_OVER = 'mouseover';\n var MOUSE_OUT = 'mouseout';\n var COLUMN = 'td';\n var ROW = 'tr';\n var TBODY = 'tbody';\n var TABLE = 'table';\n var WIDTH = 'width';\n var HEIGHT = 'height';\n var EAST = 'east';\n var NORTH = 'north';\n var NORTHEAST = 'northeast';\n var NORTHWEST = 'northwest';\n var SOUTH = 'south';\n var SOUTHEAST = 'southeast';\n var SOUTHWEST = 'southwest';\n var WEST = 'west';\n var DOT = '.';\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n var TableResizing = Class.extend({\n init: function (element, options) {\n var that = this;\n that.options = extend({}, that.options, options);\n that.handles = [];\n if ($(element).is(TABLE)) {\n that.element = element;\n }\n },\n destroy: function () {\n var that = this;\n $(that.element).off(NS);\n that.element = null;\n $(that.options.rootElement).off(KEY_DOWN + NS);\n that._destroyResizeHandles();\n },\n options: {\n appendHandlesTo: null,\n rtl: false,\n rootElement: null,\n minWidth: 10,\n minHeight: 10,\n handles: [\n { direction: NORTHWEST },\n { direction: NORTH },\n { direction: NORTHEAST },\n { direction: EAST },\n { direction: SOUTHEAST },\n { direction: SOUTH },\n { direction: SOUTHWEST },\n { direction: WEST }\n ]\n },\n resize: function (args) {\n var that = this;\n var deltas = extend({}, {\n deltaX: 0,\n deltaY: 0,\n initialDeltaX: 0,\n initialDeltaY: 0\n }, args);\n that._resizeWidth(deltas.deltaX, deltas.initialDeltaX);\n that._resizeHeight(deltas.deltaY, deltas.initialDeltaY);\n that.showResizeHandles();\n },\n _resizeWidth: function (delta, initialDelta) {\n var that = this;\n var element = $(that.element);\n var styleWidth = element[0].style[WIDTH];\n var currentWidth = outerWidth(element);\n var parentWidth = element.parent().width();\n var maxWidth = that._getMaxDimensionValue(WIDTH);\n var newWidth;\n var ratioValue;\n var ratioTotalValue;\n var constrainedWidth;\n if (delta === 0) {\n return;\n }\n if (isUndefined(that._initialElementWidth)) {\n that._initialElementWidth = currentWidth;\n }\n constrainedWidth = constrain({\n value: that._initialElementWidth + initialDelta,\n min: that.options.minWidth,\n max: maxWidth\n });\n if (inPercentages(styleWidth)) {\n if (currentWidth + delta > parentWidth) {\n ratioValue = max(constrainedWidth, parentWidth);\n ratioTotalValue = min(constrainedWidth, parentWidth);\n } else {\n ratioValue = min(constrainedWidth, parentWidth);\n ratioTotalValue = max(constrainedWidth, parentWidth);\n }\n newWidth = toPercentages(calculatePercentageRatio(ratioValue, ratioTotalValue));\n } else {\n newWidth = toPixels(constrainedWidth);\n }\n that._setColumnsWidth();\n element[0].style[WIDTH] = newWidth;\n },\n _resizeHeight: function (delta, initialDelta) {\n var that = this;\n var element = $(that.element);\n var styleHeight = element[0].style[HEIGHT];\n var currentHeight = outerHeight(element);\n var parent = element.parent();\n var parentHeight = parent.height();\n var maxHeight = that._getMaxDimensionValue(HEIGHT);\n var newHeight;\n var ratioValue;\n var ratioTotalValue;\n var constrainedHeight;\n var minHeight = that.options.minHeight;\n var hasRowsInPixels = that._hasRowsInPixels();\n if (delta === 0) {\n return;\n }\n if (isUndefined(that._initialElementHeight)) {\n that._initialElementHeight = currentHeight;\n }\n constrainedHeight = constrain({\n value: that._initialElementHeight + initialDelta,\n min: minHeight,\n max: maxHeight\n });\n if (hasRowsInPixels && delta < 0) {\n that._setRowsHeightInPercentages();\n }\n if (inPercentages(styleHeight)) {\n if (currentHeight + delta > parentHeight) {\n ratioValue = max(constrainedHeight, parentHeight);\n ratioTotalValue = min(constrainedHeight, parentHeight);\n } else {\n ratioValue = min(constrainedHeight, parentHeight);\n ratioTotalValue = max(constrainedHeight, parentHeight);\n }\n newHeight = toPercentages(calculatePercentageRatio(ratioValue, ratioTotalValue));\n } else {\n newHeight = toPixels(constrainedHeight);\n }\n element[0].style[HEIGHT] = newHeight;\n if (hasRowsInPixels && delta < 0) {\n that._setRowsHeightInPixels();\n }\n },\n _getMaxDimensionValue: function (dimension) {\n var that = this;\n var element = $(that.element);\n var dimensionLowercase = dimension.toLowerCase();\n var rtlModifier = that.options.rtl ? -1 : 1;\n var parent = $(that.element).parent();\n var parentElement = parent[0];\n var parentDimension = parent[dimensionLowercase]();\n var parentScrollOffset = rtlModifier * (dimension === WIDTH ? parent.scrollLeft() : parent.scrollTop());\n if (parentElement === element.closest(COLUMN)[0]) {\n if (parentElement.style[dimensionLowercase] === '' && !inPercentages(that.element.style[dimensionLowercase])) {\n return Infinity;\n } else {\n return parentDimension + parentScrollOffset;\n }\n } else {\n return parentDimension + parentScrollOffset;\n }\n },\n _setColumnsWidth: function () {\n var that = this;\n var element = $(that.element);\n var parentElement = element.parent()[0];\n var parentColumn = element.closest(COLUMN);\n var columns = parentColumn.closest(ROW).children();\n var columnsLength = columns.length;\n var i;\n function isWidthInPercentages(element) {\n var styleWidth = element.style.width;\n if (styleWidth !== '') {\n return inPercentages(styleWidth) ? true : false;\n } else {\n return $(element).hasClass(TABLE_CLASS) ? true : false;\n }\n }\n if (isWidthInPercentages(element[0]) && parentElement === parentColumn[0] && parentElement.style[WIDTH] === '') {\n for (i = 0; i < columnsLength; i++) {\n columns[i].style[WIDTH] = toPixels($(columns[i]).width());\n }\n }\n },\n _hasRowsInPixels: function () {\n var that = this;\n var rows = $(that.element).children(TBODY).children(ROW);\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].style.height === '' || inPixels(rows[i].style.height)) {\n return true;\n }\n }\n return false;\n },\n _setRowsHeightInPercentages: function () {\n var that = this;\n var tableBody = $(that.element).children(TBODY);\n var tableBodyHeight = tableBody.height();\n var rows = tableBody.children(ROW);\n var length = rows.length;\n var currentRowsHeights = rows.map(function () {\n return outerHeight($(this));\n });\n var i;\n for (i = 0; i < length; i++) {\n rows[i].style[HEIGHT] = toPercentages(calculatePercentageRatio(currentRowsHeights[i], tableBodyHeight));\n }\n },\n _setRowsHeightInPixels: function () {\n var that = this;\n var rows = $(that.element).children(TBODY).children(ROW);\n var length = rows.length;\n var currentRowsHeights = rows.map(function () {\n return outerHeight($(this));\n });\n var i;\n for (i = 0; i < length; i++) {\n rows[i].style[HEIGHT] = toPixels(currentRowsHeights[i]);\n }\n },\n showResizeHandles: function () {\n var that = this;\n that._initResizeHandles();\n that._showResizeHandles();\n },\n _initResizeHandles: function () {\n var that = this;\n var handles = that.handles;\n var options = that.options;\n var handleOptions = that.options.handles;\n var length = handleOptions.length;\n var i;\n if (handles && handles.length > 0) {\n return;\n }\n for (i = 0; i < length; i++) {\n that.handles.push(new TableResizeHandle(extend({\n appendTo: options.appendHandlesTo,\n resizableElement: that.element,\n rootElement: options.rootElement,\n rtl: options.rtl\n }, handleOptions[i])));\n }\n that._bindToResizeHandlesEvents();\n },\n _destroyResizeHandles: function () {\n var that = this;\n var length = that.handles ? that.handles.length : 0;\n for (var i = 0; i < length; i++) {\n that.handles[i].destroy();\n }\n },\n _showResizeHandles: function () {\n var that = this;\n var handles = that.handles || [];\n var length = handles.length;\n var i;\n for (i = 0; i < length; i++) {\n that.handles[i].show();\n }\n },\n _bindToResizeHandlesEvents: function () {\n var that = this;\n var handles = that.handles || [];\n var length = handles.length;\n var i;\n var handle;\n for (i = 0; i < length; i++) {\n handle = handles[i];\n handle.bind(DRAG_START, proxy(that._onResizeHandleDragStart, that));\n handle.bind(DRAG, proxy(that._onResizeHandleDrag, that));\n handle.bind(DRAG_END, proxy(that._onResizeHandleDragEnd, that));\n handle.bind(MOUSE_OVER, proxy(that._onResizeHandleMouseOver, that));\n handle.bind(MOUSE_OUT, proxy(that._onResizeHandleMouseOut, that));\n }\n },\n _onResizeHandleDragStart: function () {\n var that = this;\n var element = $(that.element);\n element.addClass(TABLE_RESIZING_CLASS);\n that._initialElementHeight = outerHeight(element);\n that._initialElementWidth = outerWidth(element);\n that._disableKeyboard();\n },\n _onResizeHandleDrag: function (e) {\n this.resize(e);\n },\n _onResizeHandleDragEnd: function () {\n var that = this;\n $(that.element).removeClass(TABLE_RESIZING_CLASS);\n that._enableKeyboard();\n },\n _enableKeyboard: function () {\n $(this.options.rootElement).off(KEY_DOWN + NS);\n },\n _disableKeyboard: function () {\n $(this.options.rootElement).on(KEY_DOWN + NS, function (e) {\n e.preventDefault();\n });\n }\n });\n var TableResizingFactory = Class.extend({\n create: function (editor) {\n var factory = this;\n $(editor.body).on(MOUSE_DOWN + NS, TABLE, function (e) {\n var eventTarget = e.target;\n var eventCurrentTarget = e.currentTarget;\n var tableResizing = editor.tableResizing;\n var element = tableResizing ? tableResizing.element : null;\n if (tableResizing) {\n if (element && eventCurrentTarget !== element) {\n if (contains(eventCurrentTarget, element) && element !== eventTarget && contains(element, eventTarget)) {\n return;\n } else {\n if (element !== eventTarget) {\n editor._destroyTableResizing();\n factory._initResizing(editor, eventCurrentTarget);\n }\n }\n }\n } else {\n factory._initResizing(editor, eventCurrentTarget);\n }\n editor._showTableResizeHandles();\n }).on(MOUSE_DOWN + NS, function (e) {\n var tableResizing = editor.tableResizing;\n var element = tableResizing ? tableResizing.element : null;\n var target = e.target;\n var isResizeHandleOrChild = $(target).hasClass(RESIZE_HANDLE_WRAPPER_CLASS) || $(target).parents(DOT + RESIZE_HANDLE_WRAPPER_CLASS).length > 0;\n if (tableResizing && element !== target && !contains(element, target) && !isResizeHandleOrChild) {\n editor._destroyTableResizing();\n }\n });\n },\n dispose: function (editor) {\n $(editor.body).off(NS);\n },\n _initResizing: function (editor, table) {\n if (!browser.msie && !browser.mozilla) {\n editor.tableResizing = new TableResizing(table, {\n appendHandlesTo: editor.body,\n rtl: kendo.support.isRtl(editor.element),\n rootElement: editor.body\n });\n }\n }\n });\n TableResizingFactory.current = new TableResizingFactory();\n TableResizing.create = function (editor) {\n TableResizingFactory.current.create(editor);\n };\n TableResizing.dispose = function (editor) {\n TableResizingFactory.current.dispose(editor);\n };\n extend(Editor, { TableResizing: TableResizing });\n }(window.kendo));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/table-wizard/table-wizard-command', ['editor/plugins/tables'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, Editor = kendo.ui.editor, EditorUtils = Editor.EditorUtils, RangeUtils = Editor.RangeUtils, dom = Editor.Dom, registerTool = EditorUtils.registerTool, ToolTemplate = Editor.ToolTemplate, Command = Editor.Command;\n var tableFormatFinder = new Editor.BlockFormatFinder([{ tags: ['table'] }]);\n var cellsFormatFinder = new Editor.BlockFormatFinder([{\n tags: [\n 'td',\n 'th'\n ]\n }]);\n var reUnit = /([a-z]+|%)$/i;\n var TableWizardCommand = Command.extend({\n exec: function () {\n var cmd = this;\n var editor = cmd.editor;\n var range = cmd.range = cmd.lockRange();\n var selectedTable = cmd._sourceTable = !cmd.options.insertNewTable ? cmd._selectedTable(range) : undefined;\n var selectedCells = cmd._selectedTableCells = selectedTable ? cmd._selectedCells(range) : undefined;\n var options = {\n visible: false,\n messages: editor.options.messages,\n closeCallback: $.proxy(cmd.onDialogClose, cmd),\n table: cmd.parseTable(selectedTable, selectedCells),\n dialogOptions: editor.options.dialogOptions,\n isRtl: kendo.support.isRtl(editor.wrapper)\n };\n var dialog = new Editor.TableWizardDialog(options);\n dialog.open();\n },\n onDialogClose: function (data) {\n var cmd = this;\n cmd.releaseRange(cmd.range);\n if (data) {\n if (cmd.options.insertNewTable) {\n cmd.insertTable(cmd.createNewTable(data));\n } else {\n cmd.updateTable(data, cmd._sourceTable, cmd._selectedTableCells);\n }\n }\n },\n releaseRange: function (range) {\n var cmd = this;\n var doc = cmd.editor.document;\n dom.windowFromDocument(doc).focus();\n Command.fn.releaseRange.call(cmd, range);\n },\n insertTable: function (table) {\n var range = this.range;\n range.insertNode(table);\n range.collapse(true);\n this.editor.selectRange(range);\n this._ensureFocusableAfterTable(table);\n },\n _ensureFocusableAfterTable: function (table) {\n var siblingNodes = $(table).parent().contents();\n var lastSiblingIndex = siblingNodes.length - 1;\n var lastSibling = siblingNodes.get(lastSiblingIndex);\n while (lastSibling.nodeValue !== null && (lastSibling.nodeValue === ' ' || lastSibling.nodeValue === '')) {\n lastSiblingIndex -= 1;\n lastSibling = siblingNodes.get(lastSiblingIndex);\n }\n if (lastSibling === table) {\n dom.insertAfter(dom.createEmptyNode(this.editor.document, 'p'), table);\n }\n },\n updateTable: function (data, table, selectedCells) {\n var cmd = this;\n var tableRows = $(table.rows).toArray();\n var tableProp = data.tableProperties;\n var rows = tableProp.rows;\n var columns = tableProp.columns;\n var last = function (collection) {\n return collection[collection.length - 1];\n };\n while (selectedCells.length > 1) {\n selectedCells.pop();\n }\n var lastSelectedRow = selectedCells.length ? last(selectedCells).parentNode : last(tableRows);\n var row, parent;\n cmd._deleteTableRows(tableRows, tableRows.length - rows);\n if (tableRows.length < rows) {\n var rowIndex = $(lastSelectedRow).index();\n var cellsLength = lastSelectedRow.cells.length;\n var newRowsCount = rows - tableRows.length;\n parent = lastSelectedRow.parentNode;\n while (newRowsCount) {\n row = parent.insertRow(rowIndex + 1);\n cmd._insertCells(cellsLength - row.cells.length, row);\n newRowsCount--;\n }\n }\n if (tableRows[0].cells.length > columns) {\n $(tableRows).each(function (i, row) {\n while (row.cells.length > columns) {\n row.deleteCell(-1);\n }\n });\n }\n if (tableRows[0].cells.length < columns) {\n var cellIndex = $(last(selectedCells) || last(lastSelectedRow.cells)).index();\n $(tableRows).each(function (i, row) {\n cmd._insertCells(columns - row.cells.length, row, cellIndex + 1);\n });\n }\n cmd._updateTableProperties(table, tableProp);\n var cellProp = data.cellProperties;\n if (selectedCells[0]) {\n dom.attr(selectedCells[0], { id: cellProp.id || null });\n }\n (cellProp.selectAllCells ? $(tableRows).children() : $(selectedCells)).each(function (i, cell) {\n cmd._updateCellProperties(cell, cellProp);\n });\n cmd._updateCaption(table, tableProp);\n tableProp.cellsWithHeaders = tableProp.cellsWithHeaders || false;\n if (cmd.cellsWithHeadersAssociated(table) != tableProp.cellsWithHeaders) {\n cmd.associateCellsWithHeader(table, tableProp.cellsWithHeaders);\n }\n },\n _isHeadingRow: function (row) {\n return dom.is(row.parentNode, 'thead') || dom.is(row.cells[0], 'th');\n },\n associateCellsWithHeader: function (table, associate) {\n var timestamp = new Date().getTime();\n var ids = [];\n var columns = table.rows[0].cells.length;\n var index, nextRow, isDataRow;\n var generateIds = function () {\n for (var i = 0; i < columns; i++) {\n ids[i] = 'table' + ++timestamp;\n }\n };\n var modifySellsIds = function (c, cell) {\n $(cell)[associate ? 'attr' : 'removeAttr']('id', ids[c]);\n };\n var modifyCellsHeadings = function (c, cell) {\n $(cell)[associate ? 'attr' : 'removeAttr']('headers', ids[c]);\n };\n var isHeadingRow = this._isHeadingRow;\n $(table.rows).each(function (r, row) {\n if (isHeadingRow(row)) {\n index = r;\n nextRow = table.rows[++index];\n isDataRow = nextRow && !isHeadingRow(nextRow);\n if (isDataRow) {\n generateIds();\n $(row.cells).each(modifySellsIds);\n }\n while (isDataRow) {\n $(nextRow.cells).each(modifyCellsHeadings);\n nextRow = table.rows[++index];\n isDataRow = nextRow && !isHeadingRow(nextRow);\n }\n }\n });\n },\n cellsWithHeadersAssociated: function (table) {\n var cells = $(table.rows).children();\n var isHeadingRow = this._isHeadingRow;\n var headingIds = [];\n cells.each(function (c, cell) {\n if (cell.id && isHeadingRow(cell.parentNode)) {\n headingIds.push(cell.id);\n }\n });\n var associatedCells = cells.filter(function (c, cell) {\n var headersAttr = cell.getAttribute('headers');\n return headersAttr && !isHeadingRow(cell.parentNode) && $.inArray(headersAttr, headingIds) > -1;\n });\n return !!associatedCells.length;\n },\n _insertCells: function (count, row, index) {\n index = isNaN(index) ? -1 : index;\n for (var i = 0, cell; i < count; i++) {\n cell = row.insertCell(index);\n cell.innerHTML = ' ';\n }\n },\n _deleteTableRows: function (rows, count) {\n for (var i = 0, row, rowParent; i < count; i++) {\n row = rows.pop();\n rowParent = row.parentNode;\n rowParent.removeChild(row);\n if (!rowParent.rows.length) {\n dom.remove(rowParent);\n }\n }\n },\n createNewTable: function (data) {\n var cmd = this;\n var doc = cmd.editor.document;\n var tableProp = data.tableProperties;\n var cellProp = data.cellProperties;\n var cellPropToAll = cellProp.selectAllCells;\n var table = dom.create(doc, 'table');\n cmd._updateTableProperties(table, tableProp);\n cmd._updateCaption(table, tableProp);\n var tbody = table.createTBody();\n for (var r = 0, row; r < tableProp.rows; r++) {\n row = tbody.insertRow();\n for (var c = 0, cell; c < tableProp.columns; c++) {\n cell = row.insertCell();\n cell.innerHTML = ' ';\n if (r === 0 && c === 0 && cellProp.id) {\n cell.id = cellProp.id;\n }\n cmd._updateCellProperties(cell, cellPropToAll || r === 0 && c === 0 ? cellProp : {});\n }\n }\n if (tableProp.cellsWithHeaders) {\n cmd.associateCellsWithHeader(table, tableProp.cellsWithHeaders);\n }\n return table;\n },\n _updateTableProperties: function (table, data) {\n var style = this._getStylesData(data);\n dom.attr(table, {\n cellSpacing: data.cellSpacing || null,\n cellPadding: data.cellPadding || null,\n className: data.className || null,\n id: data.id || null,\n summary: data.summary || null,\n style: style || null\n });\n $(table).addClass('k-table');\n },\n _updateCellProperties: function (cell, data) {\n var style = this._getStylesData(data);\n style.padding = data.cellPadding || null;\n style.margin = data.cellMargin || null;\n dom.attr(cell, {\n style: style || null,\n className: data.className || null\n });\n },\n _updateCaption: function (table, data) {\n if (table.caption && !data.captionContent) {\n table.deleteCaption();\n } else if (data.captionContent) {\n var caption = table.createCaption();\n caption.innerHTML = data.captionContent;\n var alignment = this._getAlignmentData(data.captionAlignment);\n dom.attr(caption, {\n style: {\n textAlign: alignment.textAlign,\n verticalAlign: alignment.verticalAlign\n }\n });\n }\n },\n _getStylesData: function (data) {\n var alignment = this._getAlignmentData(data.alignment);\n var whiteSpace = 'wrapText' in data ? data.wrapText ? '' : 'nowrap' : null;\n return {\n width: data.width ? data.width + data.widthUnit : null,\n height: data.height ? data.height + data.heightUnit : null,\n textAlign: alignment.textAlign,\n verticalAlign: alignment.verticalAlign,\n backgroundColor: data.bgColor || '',\n borderWidth: data.borderWidth,\n borderStyle: data.borderStyle,\n borderColor: data.borderColor || '',\n borderCollapse: data.collapseBorders ? 'collapse' : null,\n whiteSpace: whiteSpace\n };\n },\n _getAlignmentData: function (alignment) {\n var textAlign = '';\n var verticalAlign = textAlign;\n if (alignment) {\n if (alignment.indexOf(' ') != -1) {\n var align = alignment.split(' ');\n textAlign = align[0];\n verticalAlign = align[1];\n } else {\n textAlign = alignment;\n }\n }\n return {\n textAlign: textAlign,\n verticalAlign: verticalAlign\n };\n },\n parseTable: function (table, selectedCells) {\n if (!table) {\n return {\n tableProperties: {},\n selectedCells: []\n };\n }\n var cmd = this;\n var tStyle = table.style;\n var rows = table.rows;\n var caption = table.caption;\n var captionClone = $(caption ? caption.cloneNode(true) : undefined);\n captionClone.find('.k-marker').remove();\n var cssClass = table.className;\n cssClass = cssClass.replace(/^k-table\\s|\\sk-table$/, '');\n cssClass = cssClass.replace(/\\sk-table\\s/, ' ');\n cssClass = cssClass.replace(/^k-table$/, '');\n var tableAlignment = cmd._getAlignment(table, true);\n var captionAlignment = caption ? cmd._getAlignment(caption) : undefined;\n var cellsWithHeaders = cmd.cellsWithHeadersAssociated(table);\n var tableJson = {\n tableProperties: {\n width: tStyle.width || table.width ? parseFloat(tStyle.width || table.width) : null,\n height: tStyle.height || table.height ? parseFloat(tStyle.height || table.height) : null,\n columns: rows[0] ? rows[0].children.length : 0,\n rows: rows.length,\n widthUnit: cmd._getUnit(tStyle.width),\n heightUnit: cmd._getUnit(tStyle.height),\n cellSpacing: table.cellSpacing,\n cellPadding: table.cellPadding,\n alignment: tableAlignment.textAlign,\n bgColor: tStyle.backgroundColor || table.bgColor,\n className: cssClass,\n id: table.id,\n borderWidth: tStyle.borderWidth || table.border,\n borderColor: tStyle.borderColor,\n borderStyle: tStyle.borderStyle || '',\n collapseBorders: !!tStyle.borderCollapse,\n summary: table.summary,\n captionContent: caption ? captionClone.html() : '',\n captionAlignment: caption && captionAlignment.textAlign ? captionAlignment.textAlign + ' ' + captionAlignment.verticalAlign : '',\n cellsWithHeaders: cellsWithHeaders\n },\n selectedCells: []\n };\n tableJson.rows = cmd.parseTableRows(rows, selectedCells, tableJson);\n return tableJson;\n },\n parseTableRows: function (rows, selectedCells, tableJson) {\n var cmd = this;\n var data = [], row, rowData, cells, cell, cellData;\n for (var i = 0; i < rows.length; i++) {\n row = rows[i];\n rowData = { cells: [] };\n cells = row.cells;\n data.push(rowData);\n for (var j = 0; j < cells.length; j++) {\n cell = cells[j];\n cellData = cmd.parseCell(cell);\n if ($.inArray(cell, selectedCells) != -1) {\n tableJson.selectedCells.push(cellData);\n }\n rowData.cells.push(cellData);\n }\n }\n return data;\n },\n parseCell: function (cell) {\n var cmd = this;\n var cStyle = cell.style;\n var alignment = cmd._getAlignment(cell);\n alignment = alignment.textAlign ? alignment.textAlign + ' ' + alignment.verticalAlign : '';\n var data = {\n width: cStyle.width || cell.width ? parseFloat(cStyle.width || cell.width) : null,\n height: cStyle.height || cell.height ? parseFloat(cStyle.height || cell.height) : null,\n widthUnit: cmd._getUnit(cStyle.width),\n heightUnit: cmd._getUnit(cStyle.height),\n cellMargin: cStyle.margin,\n cellPadding: cStyle.padding,\n alignment: alignment,\n bgColor: cStyle.backgroundColor || cell.bgColor,\n className: cell.className,\n id: cell.id,\n borderWidth: cStyle.borderWidth || cell.border,\n borderColor: cStyle.borderColor,\n borderStyle: cStyle.borderStyle,\n wrapText: cStyle.whiteSpace != 'nowrap'\n };\n return data;\n },\n _getAlignment: function (element, horizontalOnly) {\n var style = element.style;\n var hAlign = style.textAlign || element.align || '';\n if (horizontalOnly) {\n return { textAlign: hAlign };\n }\n var vAlign = style.verticalAlign || element.vAlign || '';\n if (hAlign && vAlign) {\n return {\n textAlign: hAlign,\n verticalAlign: vAlign\n };\n }\n if (!hAlign && vAlign) {\n return {\n textAlign: 'left',\n verticalAlign: vAlign\n };\n }\n if (hAlign && !vAlign) {\n return {\n textAlign: hAlign,\n verticalAlign: 'top'\n };\n }\n return {\n textAlign: '',\n verticalAlign: ''\n };\n },\n _getUnit: function (value) {\n var unit = (value || '').match(reUnit);\n return unit ? unit[0] : 'px';\n },\n _selectedTable: function (range) {\n var nodes = dom.filterBy(RangeUtils.nodes(range), dom.htmlIndentSpace, true);\n return tableFormatFinder.findSuitable(nodes)[0];\n },\n _selectedCells: function (range) {\n var nodes = dom.filterBy(RangeUtils.nodes(range), dom.htmlIndentSpace, true);\n return cellsFormatFinder.findSuitable(nodes);\n }\n });\n var TableWizardTool = Editor.Tool.extend({\n command: function (options) {\n options.insertNewTable = this.options.insertNewTable;\n return new TableWizardCommand(options);\n }\n });\n var TableWizardEditTool = TableWizardTool.extend({\n update: function (ui, nodes) {\n var isFormatted = !tableFormatFinder.isFormatted(nodes);\n ui.toggleClass('k-state-disabled', isFormatted);\n }\n });\n kendo.ui.editor.TableWizardTool = TableWizardTool;\n kendo.ui.editor.TableWizardCommand = TableWizardCommand;\n registerTool('tableWizard', new TableWizardEditTool({\n command: TableWizardCommand,\n insertNewTable: false,\n template: new ToolTemplate({\n template: EditorUtils.buttonTemplate,\n title: 'Table Wizard'\n })\n }));\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.tabstrip', ['kendo.data'], f);\n}(function () {\n var __meta__ = {\n id: 'tabstrip',\n name: 'TabStrip',\n category: 'web',\n description: 'The TabStrip widget displays a collection of tabs with associated tab content.',\n depends: ['data'],\n features: [{\n id: 'tabstrip-fx',\n name: 'Animation',\n description: 'Support for animation',\n depends: ['fx']\n }]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, keys = kendo.keys, map = $.map, each = $.each, trim = $.trim, extend = $.extend, isFunction = kendo.isFunction, template = kendo.template, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, Widget = ui.Widget, excludedNodesRegExp = /^(a|div)$/i, NS = '.kendoTabStrip', IMG = 'img', HREF = 'href', PREV = 'prev', NEXT = 'next', SHOW = 'show', LINK = 'k-link', LAST = 'k-last', CLICK = 'click', ERROR = 'error', EMPTY = ':empty', IMAGE = 'k-image', FIRST = 'k-first', SELECT = 'select', ACTIVATE = 'activate', CONTENT = 'k-content', CONTENTURL = 'contentUrl', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', CONTENTLOAD = 'contentLoad', DISABLEDSTATE = 'k-state-disabled', DEFAULTSTATE = 'k-state-default', ACTIVESTATE = 'k-state-active', FOCUSEDSTATE = 'k-state-focused', HOVERSTATE = 'k-state-hover', TABONTOP = 'k-tab-on-top', NAVIGATABLEITEMS = '.k-item:not(.' + DISABLEDSTATE + ')', KEYBOARDNAVIGATABLEITEMS = '.k-item', HOVERABLEITEMS = '.k-tabstrip-items > ' + NAVIGATABLEITEMS + ':not(.' + ACTIVESTATE + ')', DEFAULTDISTANCE = 200, templates = {\n content: template('<div class=\\'k-content\\'#= contentAttributes(data) # role=\\'tabpanel\\'>#= content(item) #</div>'),\n itemWrapper: template('<#= tag(item) # class=\\'k-link\\'#= contentUrl(item) ##= textAttributes(item) #>' + '#= image(item) ##= sprite(item) ##= text(item) #' + '</#= tag(item) #>'),\n item: template('<li class=\\'#= wrapperCssClass(group, item) #\\' role=\\'tab\\' #=item.active ? \"aria-selected=\\'true\\'\" : \\'\\'#>' + '#= itemWrapper(data) #' + '</li>'),\n image: template('<img class=\\'k-image\\' alt=\\'\\' src=\\'#= imageUrl #\\' />'),\n sprite: template('<span class=\\'k-sprite #= spriteCssClass #\\'></span>'),\n empty: template('')\n }, rendering = {\n wrapperCssClass: function (group, item) {\n var result = 'k-item', index = item.index;\n if (item.enabled === false) {\n result += ' k-state-disabled';\n } else {\n result += ' k-state-default';\n }\n if (index === 0) {\n result += ' k-first';\n }\n if (index == group.length - 1) {\n result += ' k-last';\n }\n return result;\n },\n textAttributes: function (item) {\n return item.url ? ' href=\\'' + item.url + '\\'' : '';\n },\n text: function (item) {\n return item.encoded === false ? item.text : kendo.htmlEncode(item.text);\n },\n tag: function (item) {\n return item.url ? 'a' : 'span';\n },\n contentAttributes: function (content) {\n return content.active !== true ? ' style=\\'display:none\\' aria-hidden=\\'true\\' aria-expanded=\\'false\\'' : '';\n },\n content: function (item) {\n return item.content ? item.content : item.contentUrl ? '' : ' ';\n },\n contentUrl: function (item) {\n return item.contentUrl ? kendo.attr('content-url') + '=\"' + item.contentUrl + '\"' : '';\n }\n };\n function updateTabClasses(tabs) {\n tabs.children(IMG).addClass(IMAGE);\n tabs.children('a').addClass(LINK).children(IMG).addClass(IMAGE);\n tabs.filter(':not([disabled]):not([class*=k-state-disabled])').addClass(DEFAULTSTATE);\n tabs.filter('li[disabled]').addClass(DISABLEDSTATE).attr('aria-disabled', 'true').removeAttr('disabled');\n tabs.filter(':not([class*=k-state])').children('a').filter(':focus').parent().addClass(ACTIVESTATE + ' ' + TABONTOP);\n tabs.attr('role', 'tab');\n tabs.filter('.' + ACTIVESTATE).attr('aria-selected', true);\n tabs.each(function () {\n var item = $(this);\n if (!item.children('.' + LINK).length) {\n item.contents().filter(function () {\n return !this.nodeName.match(excludedNodesRegExp) && !(this.nodeType == 3 && !trim(this.nodeValue));\n }).wrapAll('<span UNSELECTABLE=\\'on\\' class=\\'' + LINK + '\\'/>');\n }\n });\n }\n function updateFirstLast(tabGroup) {\n var tabs = tabGroup.children('.k-item');\n tabs.filter('.k-first:not(:first-child)').removeClass(FIRST);\n tabs.filter('.k-last:not(:last-child)').removeClass(LAST);\n tabs.filter(':first-child').addClass(FIRST);\n tabs.filter(':last-child').addClass(LAST);\n }\n function scrollButtonHtml(buttonClass, iconClass) {\n return '<span class=\\'k-button k-button-icon k-bare k-tabstrip-' + buttonClass + '\\' unselectable=\\'on\\'><span class=\\'k-icon ' + iconClass + '\\'></span></span>';\n }\n var TabStrip = Widget.extend({\n init: function (element, options) {\n var that = this, value;\n Widget.fn.init.call(that, element, options);\n that._animations(that.options);\n options = that.options;\n that._contentUrls = options.contentUrls || [];\n that._wrapper();\n that._isRtl = kendo.support.isRtl(that.wrapper);\n that._tabindex();\n that._updateClasses();\n that._dataSource();\n if (options.dataSource) {\n that.dataSource.fetch();\n }\n that._tabPosition();\n that._scrollable();\n if (that._contentUrls.length) {\n that.wrapper.find('.k-tabstrip-items > .k-item').each(function (index, item) {\n var url = that._contentUrls[index];\n if (typeof url === 'string') {\n $(item).find('>.' + LINK).data(CONTENTURL, url);\n }\n });\n } else {\n that._contentUrls.length = that.tabGroup.find('li.k-item').length;\n }\n that.wrapper.on(MOUSEENTER + NS + ' ' + MOUSELEAVE + NS, HOVERABLEITEMS, that._toggleHover).on('focus' + NS, $.proxy(that._active, that)).on('blur' + NS, function () {\n that._current(null);\n });\n that._keyDownProxy = $.proxy(that._keydown, that);\n if (options.navigatable) {\n that.wrapper.on('keydown' + NS, that._keyDownProxy);\n }\n if (that.options.value) {\n value = that.options.value;\n }\n that.wrapper.children('.k-tabstrip-items').on(CLICK + NS, '.k-state-disabled .k-link', false).on(CLICK + NS, ' > ' + NAVIGATABLEITEMS, function (e) {\n var wr = that.wrapper[0];\n if (wr !== document.activeElement) {\n var msie = kendo.support.browser.msie;\n if (msie) {\n try {\n wr.setActive();\n } catch (j) {\n wr.focus();\n }\n } else {\n wr.focus();\n }\n }\n if (that._click($(e.currentTarget))) {\n e.preventDefault();\n }\n });\n var selectedItems = that.tabGroup.children('li.' + ACTIVESTATE), content = that.contentHolder(selectedItems.index());\n if (selectedItems[0] && content.length > 0 && content[0].childNodes.length === 0) {\n that.activateTab(selectedItems.eq(0));\n }\n that.element.attr('role', 'tablist');\n if (that.element[0].id) {\n that._ariaId = that.element[0].id + '_ts_active';\n }\n that.value(value);\n kendo.notify(that);\n },\n _active: function () {\n var item = this.tabGroup.children().filter('.' + ACTIVESTATE);\n item = item[0] ? item : this._endItem('first');\n if (item[0]) {\n this._current(item);\n }\n },\n _endItem: function (action) {\n return this.tabGroup.children(NAVIGATABLEITEMS)[action]();\n },\n _getItem: function (action) {\n return this.tabGroup.children(KEYBOARDNAVIGATABLEITEMS)[action]();\n },\n _item: function (item, action) {\n var endItem;\n if (action === PREV) {\n endItem = 'last';\n } else {\n endItem = 'first';\n }\n if (!item) {\n return this._endItem(endItem);\n }\n item = item[action]();\n if (!item[0]) {\n item = this.tabGroup.children(KEYBOARDNAVIGATABLEITEMS)[endItem]();\n }\n if (item.hasClass(DISABLEDSTATE)) {\n item.addClass(FOCUSEDSTATE);\n }\n if (item.hasClass(DISABLEDSTATE) || item.hasClass(ACTIVESTATE)) {\n this._focused = item;\n }\n return item;\n },\n _current: function (candidate) {\n var that = this, focused = that._focused, id = that._ariaId;\n if (candidate === undefined) {\n return focused;\n }\n if (focused) {\n that.tabGroup.children('#' + id).removeAttr('id');\n focused.removeClass(FOCUSEDSTATE);\n }\n if (candidate) {\n if (!candidate.hasClass(ACTIVESTATE)) {\n candidate.addClass(FOCUSEDSTATE);\n }\n that.element.removeAttr('aria-activedescendant');\n id = candidate[0].id || id;\n if (id) {\n candidate.attr('id', id);\n that.element.attr('aria-activedescendant', id);\n }\n }\n that._focused = candidate;\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode, current = that._current(), rtl = that._isRtl, isHorizontal = /top|bottom/.test(that.options.tabPosition), action;\n if (e.target != e.currentTarget || !current) {\n return;\n }\n if (key === keys.DOWN && !isHorizontal) {\n action = NEXT;\n } else if (key === keys.UP && !isHorizontal) {\n action = PREV;\n } else if (key === keys.RIGHT && isHorizontal) {\n action = rtl ? PREV : NEXT;\n } else if (key === keys.LEFT && isHorizontal) {\n action = rtl ? NEXT : PREV;\n } else if (key == keys.ENTER || key == keys.SPACEBAR) {\n that._click(current);\n e.preventDefault();\n } else if (key == keys.HOME) {\n that._click(that._getItem('first'));\n e.preventDefault();\n return;\n } else if (key == keys.END) {\n that._click(that._getItem('last'));\n e.preventDefault();\n return;\n }\n if (action) {\n that._click(that._item(current, action));\n e.preventDefault();\n }\n },\n _dataSource: function () {\n var that = this;\n if (that.dataSource && that._refreshHandler) {\n that.dataSource.unbind('change', that._refreshHandler);\n } else {\n that._refreshHandler = $.proxy(that.refresh, that);\n }\n that.dataSource = kendo.data.DataSource.create(that.options.dataSource).bind('change', that._refreshHandler);\n },\n setDataSource: function (dataSource) {\n var that = this;\n that.options.dataSource = dataSource;\n that._dataSource();\n that.dataSource.fetch();\n },\n _animations: function (options) {\n if (options && 'animation' in options && !options.animation) {\n options.animation = {\n open: { effects: {} },\n close: { effects: {} }\n };\n }\n },\n refresh: function (e) {\n var that = this, options = that.options, encoded = kendo.getter(options.dataEncodedField), text = kendo.getter(options.dataTextField), content = kendo.getter(options.dataContentField), contentUrl = kendo.getter(options.dataContentUrlField), image = kendo.getter(options.dataImageUrlField), url = kendo.getter(options.dataUrlField), sprite = kendo.getter(options.dataSpriteCssClass), idx, tabs = [], tab, action, view = that.dataSource.view(), length;\n e = e || {};\n action = e.action;\n if (action) {\n view = e.items;\n }\n for (idx = 0, length = view.length; idx < length; idx++) {\n tab = { text: text(view[idx]) };\n if (options.dataEncodedField) {\n tab.encoded = encoded(view[idx]);\n }\n if (options.dataContentField) {\n tab.content = content(view[idx]);\n }\n if (options.dataContentUrlField) {\n tab.contentUrl = contentUrl(view[idx]);\n }\n if (options.dataUrlField) {\n tab.url = url(view[idx]);\n }\n if (options.dataImageUrlField) {\n tab.imageUrl = image(view[idx]);\n }\n if (options.dataSpriteCssClass) {\n tab.spriteCssClass = sprite(view[idx]);\n }\n tabs[idx] = tab;\n }\n if (e.action == 'add') {\n if (e.index < that.tabGroup.children().length) {\n that.insertBefore(tabs, that.tabGroup.children().eq(e.index));\n } else {\n that.append(tabs);\n }\n } else if (e.action == 'remove') {\n for (idx = 0; idx < view.length; idx++) {\n that.remove(e.index);\n }\n } else if (e.action == 'itemchange') {\n idx = that.dataSource.view().indexOf(view[0]);\n if (e.field === options.dataTextField) {\n that.tabGroup.children().eq(idx).find('.k-link').text(view[0].get(e.field));\n }\n if (e.field === options.dataUrlField) {\n that._contentUrls[idx] = view[0].get(e.field);\n }\n } else {\n that.trigger('dataBinding');\n that.remove('li');\n that._contentUrls = [];\n that.append(tabs);\n that.trigger('dataBound');\n }\n },\n value: function (value) {\n var that = this;\n if (value !== undefined) {\n if (value != that.value()) {\n that.tabGroup.children().each(function () {\n if ($.trim($(this).text()) == value) {\n that.select(this);\n }\n });\n }\n } else {\n return that.select().text();\n }\n },\n items: function () {\n return this.tabGroup[0].children;\n },\n setOptions: function (options) {\n var that = this, animation = that.options.animation;\n that._animations(options);\n if (options.contentUrls) {\n that._contentUrls = options.contentUrls;\n }\n options.animation = extend(true, animation, options.animation);\n if (options.navigatable) {\n that.wrapper.on('keydown' + NS, that._keyDownProxy);\n } else {\n that.wrapper.off('keydown' + NS, that._keyDownProxy);\n }\n Widget.fn.setOptions.call(that, options);\n },\n events: [\n SELECT,\n ACTIVATE,\n SHOW,\n ERROR,\n CONTENTLOAD,\n 'change',\n 'dataBinding',\n 'dataBound'\n ],\n options: {\n name: 'TabStrip',\n dataEncodedField: '',\n dataTextField: '',\n dataContentField: '',\n dataImageUrlField: '',\n dataUrlField: '',\n dataSpriteCssClass: '',\n dataContentUrlField: '',\n tabPosition: 'top',\n animation: {\n open: {\n effects: 'expand:vertical fadeIn',\n duration: 200\n },\n close: { duration: 200 }\n },\n collapsible: false,\n navigatable: true,\n contentUrls: false,\n scrollable: { distance: DEFAULTDISTANCE }\n },\n destroy: function () {\n var that = this, scrollWrap = that.scrollWrap;\n Widget.fn.destroy.call(that);\n if (that._refreshHandler) {\n that.dataSource.unbind('change', that._refreshHandler);\n }\n that.wrapper.off(NS);\n that.wrapper.children('.k-tabstrip-items').off(NS);\n if (that._scrollableModeActive) {\n that._scrollPrevButton.off().remove();\n that._scrollNextButton.off().remove();\n }\n kendo.destroy(that.wrapper);\n scrollWrap.children('.k-tabstrip').unwrap();\n },\n select: function (element) {\n var that = this;\n if (arguments.length === 0) {\n return that.tabGroup.children('li.' + ACTIVESTATE);\n }\n if (!isNaN(element)) {\n element = that.tabGroup.children().get(element);\n }\n element = that.tabGroup.find(element);\n $(element).each(function (index, item) {\n item = $(item);\n if (!item.hasClass(ACTIVESTATE) && !that.trigger(SELECT, {\n item: item[0],\n contentElement: that.contentHolder(item.index())[0]\n })) {\n that.activateTab(item);\n }\n });\n return that;\n },\n enable: function (element, state) {\n this._toggleDisabled(element, state !== false);\n return this;\n },\n disable: function (element) {\n this._toggleDisabled(element, false);\n return this;\n },\n reload: function (element) {\n element = this.tabGroup.find(element);\n var that = this;\n var contentUrls = that._contentUrls;\n element.each(function () {\n var item = $(this), contentUrl = item.find('.' + LINK).data(CONTENTURL) || contentUrls[item.index()], content = that.contentHolder(item.index());\n if (contentUrl) {\n that.ajaxRequest(item, content, null, contentUrl);\n }\n });\n return that;\n },\n append: function (tab) {\n var that = this, inserted = that._create(tab);\n each(inserted.tabs, function (idx) {\n var contents = inserted.contents[idx];\n that.tabGroup.append(this);\n if (that.options.tabPosition == 'bottom') {\n that.tabGroup.before(contents);\n } else if (that._scrollableModeActive) {\n that._scrollPrevButton.before(contents);\n } else {\n that.wrapper.append(contents);\n }\n that.angular('compile', function () {\n return { elements: [contents] };\n });\n });\n updateFirstLast(that.tabGroup);\n that._updateContentElements();\n that.resize(true);\n return that;\n },\n _appendUrlItem: function (url) {\n this._contentUrls.push(url);\n },\n _moveUrlItem: function (from, to) {\n this._contentUrls.splice(to, 0, this._contentUrls.splice(from, 1)[0]);\n },\n _removeUrlItem: function (index) {\n this._contentUrls.splice(index, 1);\n },\n insertBefore: function (tab, referenceTab) {\n if ($(tab).is($(referenceTab))) {\n referenceTab = this.tabGroup.find(referenceTab).next();\n } else {\n referenceTab = this.tabGroup.find(referenceTab);\n }\n var that = this, inserted = that._create(tab), referenceContent = that.element.find('[id=\\'' + referenceTab.attr('aria-controls') + '\\']');\n each(inserted.tabs, function (idx) {\n var contents = inserted.contents[idx];\n var fromIndex = inserted.newTabsCreated ? that._contentUrls.length - (inserted.tabs.length - idx) : $(contents).index() - 1;\n referenceTab.before(this);\n referenceContent.before(contents);\n that._moveUrlItem(fromIndex, $(this).index());\n that.angular('compile', function () {\n return { elements: [contents] };\n });\n });\n updateFirstLast(that.tabGroup);\n that._updateContentElements(inserted.newTabsCreated);\n that.resize(true);\n return that;\n },\n insertAfter: function (tab, referenceTab) {\n if ($(tab).is($(referenceTab))) {\n referenceTab = this.tabGroup.find(referenceTab).prev();\n } else {\n referenceTab = this.tabGroup.find(referenceTab);\n }\n var that = this, inserted = that._create(tab), referenceContent = that.element.find('[id=\\'' + referenceTab.attr('aria-controls') + '\\']');\n each(inserted.tabs, function (idx) {\n var contents = inserted.contents[idx];\n var fromIndex = inserted.newTabsCreated ? that._contentUrls.length - (inserted.tabs.length - idx) : $(contents).index() - 1;\n referenceTab.after(this);\n referenceContent.after(contents);\n that._moveUrlItem(fromIndex, $(this).index());\n that.angular('compile', function () {\n return { elements: [contents] };\n });\n });\n updateFirstLast(that.tabGroup);\n that._updateContentElements(inserted.newTabsCreated);\n that.resize(true);\n return that;\n },\n remove: function (elements) {\n var that = this;\n var type = typeof elements;\n var contents;\n if (type === 'string') {\n elements = that.tabGroup.find(elements);\n } else if (type === 'number') {\n elements = that.tabGroup.children().eq(elements);\n }\n contents = elements.map(function () {\n var idx = $(this).index();\n var content = that.contentElement(idx);\n kendo.destroy(content);\n that._removeUrlItem(idx);\n return content;\n });\n elements.remove();\n contents.empty();\n contents.remove();\n that._updateContentElements();\n that.resize(true);\n return that;\n },\n _create: function (tab) {\n var that = this, tabs, contents, content, newTabsCreated = false;\n tab = tab instanceof kendo.data.ObservableArray ? tab.toJSON() : tab;\n if ($.isPlainObject(tab) || $.isArray(tab)) {\n tab = $.isArray(tab) ? tab : [tab];\n newTabsCreated = true;\n tabs = map(tab, function (value, idx) {\n that._appendUrlItem(tab[idx].contentUrl || null);\n return $(TabStrip.renderItem({\n group: that.tabGroup,\n item: extend(value, { index: idx })\n }));\n });\n contents = map(tab, function (value, idx) {\n if (typeof value.content == 'string' || value.contentUrl) {\n return $(TabStrip.renderContent({ item: extend(value, { index: idx }) }));\n }\n });\n } else {\n if (typeof tab == 'string' && tab[0] != '<') {\n tabs = that.element.find(tab);\n } else {\n tabs = $(tab);\n }\n contents = $();\n tabs.each(function () {\n if (/k-tabstrip-items/.test(this.parentNode.className)) {\n var element = that.element.find('[id=\\'' + this.getAttribute('aria-controls') + '\\']');\n content = element;\n } else {\n content = $('<div class=\\'' + CONTENT + '\\'/>');\n }\n contents = contents.add(content);\n });\n updateTabClasses(tabs);\n }\n return {\n tabs: tabs,\n contents: contents,\n newTabsCreated: newTabsCreated\n };\n },\n _toggleDisabled: function (element, enable) {\n element = this.tabGroup.find(element);\n element.each(function () {\n $(this).toggleClass(DEFAULTSTATE, enable).toggleClass(DISABLEDSTATE, !enable).attr('aria-disabled', !enable);\n });\n },\n _updateClasses: function () {\n var that = this, tabs, activeItem, activeTab;\n that.wrapper.addClass('k-widget k-header k-tabstrip');\n that.tabGroup = that.wrapper.children('ul').addClass('k-tabstrip-items k-reset');\n if (!that.tabGroup[0]) {\n that.tabGroup = $('<ul class=\\'k-tabstrip-items k-reset\\'/>').appendTo(that.wrapper);\n }\n tabs = that.tabGroup.find('li').addClass('k-item');\n if (tabs.length) {\n activeItem = tabs.filter('.' + ACTIVESTATE).index();\n activeTab = activeItem >= 0 ? activeItem : undefined;\n that.tabGroup.contents().filter(function () {\n return this.nodeType == 3 && !trim(this.nodeValue);\n }).remove();\n }\n if (activeItem >= 0) {\n tabs.eq(activeItem).addClass(TABONTOP);\n }\n that.contentElements = that.wrapper.children('div');\n that.contentElements.addClass(CONTENT).eq(activeTab).addClass(ACTIVESTATE).css({ display: 'block' });\n if (tabs.length) {\n updateTabClasses(tabs);\n updateFirstLast(that.tabGroup);\n that._updateContentElements(true);\n }\n },\n _elementId: function (element, idx) {\n var elementId = element.attr('id');\n var wrapperId = this.element.attr('id');\n if (!elementId || elementId.indexOf(wrapperId + '-') > -1) {\n var tabStripID = (wrapperId || kendo.guid()) + '-';\n return tabStripID + (idx + 1);\n }\n return elementId;\n },\n _updateContentElements: function (isInitialUpdate) {\n var that = this, contentUrls = that._contentUrls, items = that.tabGroup.children('.k-item'), contentElements = that.wrapper.children('div'), _elementId = that._elementId.bind(that);\n if (contentElements.length && items.length > contentElements.length) {\n contentElements.each(function (idx) {\n var id = _elementId($(this), idx);\n var item = items.filter('[aria-controls=' + (this.id || 0) + ']')[0];\n if (!item && isInitialUpdate) {\n item = items[idx];\n }\n if (item) {\n item.setAttribute('aria-controls', id);\n }\n this.setAttribute('id', id);\n });\n } else {\n items.each(function (idx) {\n var currentContent = contentElements.eq(idx);\n var id = _elementId(currentContent, idx);\n this.setAttribute('aria-controls', id);\n if (!currentContent.length && contentUrls[idx]) {\n $('<div class=\\'' + CONTENT + '\\'/>').appendTo(that.wrapper).attr('id', id);\n } else {\n currentContent.attr('id', id);\n if (!$(this).children('.k-loading')[0] && !contentUrls[idx]) {\n $('<span class=\\'k-loading k-complete\\'/>').prependTo(this);\n }\n }\n currentContent.attr('role', 'tabpanel');\n currentContent.filter(':not(.' + ACTIVESTATE + ')').attr('aria-hidden', true).attr('aria-expanded', false);\n currentContent.filter('.' + ACTIVESTATE).attr('aria-expanded', true);\n });\n }\n that.contentElements = that.contentAnimators = that.wrapper.children('div');\n that.tabsHeight = outerHeight(that.tabGroup) + parseInt(that.wrapper.css('border-top-width'), 10) + parseInt(that.wrapper.css('border-bottom-width'), 10);\n if (kendo.kineticScrollNeeded && kendo.mobile.ui.Scroller) {\n kendo.touchScroller(that.contentElements);\n that.contentElements = that.contentElements.children('.km-scroll-container');\n }\n },\n _wrapper: function () {\n var that = this;\n if (that.element.is('ul')) {\n that.wrapper = that.element.wrapAll('<div />').parent();\n } else {\n that.wrapper = that.element;\n }\n that.scrollWrap = that.wrapper.parent('.k-tabstrip-wrapper');\n if (!that.scrollWrap[0]) {\n that.scrollWrap = that.wrapper.wrapAll('<div class=\\'k-tabstrip-wrapper\\' />').parent();\n }\n },\n _tabPosition: function () {\n var that = this, tabPosition = that.options.tabPosition;\n that.wrapper.addClass('k-floatwrap k-tabstrip-' + tabPosition);\n if (tabPosition == 'bottom') {\n that.tabGroup.appendTo(that.wrapper);\n }\n that.resize(true);\n },\n _setContentElementsDimensions: function () {\n var that = this, tabPosition = that.options.tabPosition;\n if (tabPosition == 'left' || tabPosition == 'right') {\n var contentDivs = that.wrapper.children('.k-content'), activeDiv = contentDivs.filter(':visible'), marginStyleProperty = 'margin-' + tabPosition, tabGroup = that.tabGroup, margin = outerWidth(tabGroup);\n var minHeight = Math.ceil(tabGroup.height()) - parseInt(activeDiv.css('padding-top'), 10) - parseInt(activeDiv.css('padding-bottom'), 10) - parseInt(activeDiv.css('border-top-width'), 10) - parseInt(activeDiv.css('border-bottom-width'), 10);\n setTimeout(function () {\n contentDivs.css(marginStyleProperty, margin).css('min-height', minHeight);\n });\n }\n },\n _resize: function () {\n this._setContentElementsDimensions();\n this._scrollable();\n },\n _sizeScrollWrap: function (element) {\n if (element.is(':visible')) {\n var tabPosition = this.options.tabPosition;\n var h = Math.floor(outerHeight(element, true)) + (tabPosition === 'left' || tabPosition === 'right' ? 2 : this.tabsHeight);\n this.scrollWrap.css('height', h).css('height');\n }\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVERSTATE, e.type == MOUSEENTER);\n },\n _click: function (item) {\n var that = this, link = item.find('.' + LINK), href = link.attr(HREF), collapse = that.options.collapsible, index = item.index(), contentHolder = that.contentHolder(index), prevent, isAnchor, neighbours = item.parent().children(), oldFocusedTab = neighbours.filter('.' + FOCUSEDSTATE);\n if (item.closest('.k-widget')[0] != that.wrapper[0]) {\n return;\n }\n if (item.is('.' + DISABLEDSTATE + (!collapse ? ',.' + ACTIVESTATE : ''))) {\n oldFocusedTab.removeClass(FOCUSEDSTATE);\n that._focused = item;\n item.addClass(FOCUSEDSTATE);\n that._current(item);\n if (that._scrollableModeActive) {\n that._scrollTabsToItem(item);\n }\n return true;\n }\n isAnchor = link.data(CONTENTURL) || that._contentUrls[index] || href && (href.charAt(href.length - 1) == '#' || href.indexOf('#' + that.element[0].id + '-') != -1);\n prevent = !href || isAnchor;\n if (that.tabGroup.children('[data-animating]').length) {\n return prevent;\n }\n if (that.trigger(SELECT, {\n item: item[0],\n contentElement: contentHolder[0]\n })) {\n return true;\n }\n if (prevent === false) {\n return;\n }\n if (collapse && item.is('.' + ACTIVESTATE)) {\n that.deactivateTab(item);\n return true;\n }\n if (that.activateTab(item)) {\n prevent = true;\n }\n return prevent;\n },\n _scrollable: function () {\n var that = this, options = that.options, wrapperOffsetWidth, tabGroupScrollWidth, scrollPrevButton, scrollNextButton;\n if (that._scrollableAllowed()) {\n that.wrapper.addClass('k-tabstrip-scrollable');\n wrapperOffsetWidth = that.wrapper[0].offsetWidth;\n tabGroupScrollWidth = that.tabGroup[0].scrollWidth;\n if (tabGroupScrollWidth > wrapperOffsetWidth && !that._scrollableModeActive) {\n that._nowScrollingTabs = false;\n that._isRtl = kendo.support.isRtl(that.element);\n var mouseDown = kendo.support.mobileOS ? 'touchstart' : 'mousedown';\n var mouseUp = kendo.support.mobileOS ? 'touchend' : 'mouseup';\n var browser = kendo.support.browser;\n var isRtlScrollDirection = that._isRtl && !browser.msie && !browser.edge;\n that.wrapper.append(scrollButtonHtml('prev', 'k-i-arrow-60-left') + scrollButtonHtml('next', 'k-i-arrow-60-right'));\n scrollPrevButton = that._scrollPrevButton = that.wrapper.children('.k-tabstrip-prev');\n scrollNextButton = that._scrollNextButton = that.wrapper.children('.k-tabstrip-next');\n that.tabGroup.css({\n marginLeft: outerWidth(scrollPrevButton) + 9,\n marginRight: outerWidth(scrollNextButton) + 12\n });\n scrollPrevButton.on(mouseDown + NS, function () {\n that._nowScrollingTabs = true;\n that._scrollTabsByDelta(options.scrollable.distance * (isRtlScrollDirection ? 1 : -1));\n });\n scrollNextButton.on(mouseDown + NS, function () {\n that._nowScrollingTabs = true;\n that._scrollTabsByDelta(options.scrollable.distance * (isRtlScrollDirection ? -1 : 1));\n });\n scrollPrevButton.add(scrollNextButton).on(mouseUp + NS, function () {\n that._nowScrollingTabs = false;\n });\n that._scrollableModeActive = true;\n that._toggleScrollButtons();\n } else if (that._scrollableModeActive && tabGroupScrollWidth <= wrapperOffsetWidth) {\n that._scrollableModeActive = false;\n that.wrapper.removeClass('k-tabstrip-scrollable');\n that._scrollPrevButton.off().remove();\n that._scrollNextButton.off().remove();\n that.tabGroup.css({\n marginLeft: '',\n marginRight: ''\n });\n } else if (!that._scrollableModeActive) {\n that.wrapper.removeClass('k-tabstrip-scrollable');\n } else {\n that._toggleScrollButtons();\n }\n }\n },\n _scrollableAllowed: function () {\n var options = this.options;\n if (options.scrollable && !options.scrollable.distance) {\n options.scrollable = { distance: DEFAULTDISTANCE };\n }\n return options.scrollable && !isNaN(options.scrollable.distance) && (options.tabPosition == 'top' || options.tabPosition == 'bottom');\n },\n _scrollTabsToItem: function (item) {\n var that = this, tabGroup = that.tabGroup, currentScrollOffset = tabGroup.scrollLeft(), itemWidth = outerWidth(item), itemOffset = that._isRtl ? item.position().left : item.position().left - tabGroup.children().first().position().left, tabGroupWidth = tabGroup[0].offsetWidth, tabGroupPadding = Math.ceil(parseFloat(tabGroup.css('padding-left'))), itemPosition;\n if (that._isRtl) {\n if (itemOffset < 0) {\n itemPosition = currentScrollOffset + itemOffset - (tabGroupWidth - currentScrollOffset) - tabGroupPadding;\n } else if (itemOffset + itemWidth > tabGroupWidth) {\n itemPosition = currentScrollOffset + itemOffset - itemWidth + tabGroupPadding * 2;\n }\n } else {\n if (currentScrollOffset + tabGroupWidth < itemOffset + itemWidth) {\n itemPosition = itemOffset + itemWidth - tabGroupWidth + tabGroupPadding * 2;\n } else if (currentScrollOffset > itemOffset) {\n itemPosition = itemOffset - tabGroupPadding;\n }\n }\n tabGroup.finish().animate({ 'scrollLeft': itemPosition }, 'fast', 'linear', function () {\n that._toggleScrollButtons();\n });\n },\n _scrollTabsByDelta: function (delta) {\n var that = this;\n var tabGroup = that.tabGroup;\n var scrLeft = tabGroup.scrollLeft();\n tabGroup.finish().animate({ 'scrollLeft': scrLeft + delta }, 'fast', 'linear', function () {\n if (that._nowScrollingTabs && !jQuery.fx.off) {\n that._scrollTabsByDelta(delta);\n } else {\n that._toggleScrollButtons();\n }\n });\n },\n _toggleScrollButtons: function () {\n var that = this, ul = that.tabGroup, scrollLeft = kendo.scrollLeft(ul);\n that._scrollPrevButton.toggle(scrollLeft !== 0);\n that._scrollNextButton.toggle(scrollLeft < ul[0].scrollWidth - ul[0].offsetWidth - 1);\n },\n deactivateTab: function (item) {\n var that = this, animationSettings = that.options.animation, animation = animationSettings.open, close = extend({}, animationSettings.close), hasCloseAnimation = close && 'effects' in close;\n item = that.tabGroup.find(item);\n close = extend(hasCloseAnimation ? close : extend({ reverse: true }, animation), { hide: true });\n if (kendo.size(animation.effects)) {\n item.kendoAddClass(DEFAULTSTATE, { duration: animation.duration });\n item.kendoRemoveClass(ACTIVESTATE, { duration: animation.duration });\n } else {\n item.addClass(DEFAULTSTATE);\n item.removeClass(ACTIVESTATE);\n }\n item.removeAttr('aria-selected');\n that.contentAnimators.filter('.' + ACTIVESTATE).kendoStop(true, true).kendoAnimate(close).removeClass(ACTIVESTATE).attr('aria-hidden', true);\n },\n activateTab: function (item) {\n if (this.tabGroup.children('[data-animating]').length) {\n return;\n }\n item = this.tabGroup.find(item);\n var that = this, animationSettings = that.options.animation, animation = animationSettings.open, close = extend({}, animationSettings.close), hasCloseAnimation = close && 'effects' in close, neighbours = item.parent().children(), oldTab = neighbours.filter('.' + ACTIVESTATE), itemIndex = neighbours.index(item), isAnimationEnabled = animation && 'duration' in animation && 'effects' in animation;\n close = extend(hasCloseAnimation ? close : extend({ reverse: true }, animation), { hide: true });\n if (kendo.size(animation.effects)) {\n oldTab.kendoRemoveClass(ACTIVESTATE, { duration: close.duration });\n item.kendoRemoveClass(HOVERSTATE, { duration: close.duration });\n } else {\n oldTab.removeClass(ACTIVESTATE);\n item.removeClass(HOVERSTATE);\n }\n var contentAnimators = that.contentAnimators;\n if (that.inRequest) {\n that.xhr.abort();\n that.inRequest = false;\n }\n if (contentAnimators.length === 0) {\n that.tabGroup.find('.' + TABONTOP).removeClass(TABONTOP);\n item.addClass(TABONTOP).css('z-index');\n item.addClass(ACTIVESTATE);\n that._current(item);\n that.trigger('change');\n if (that._scrollableModeActive) {\n that._scrollTabsToItem(item);\n }\n return false;\n }\n var visibleContents = contentAnimators.filter('.' + ACTIVESTATE), contentHolder = that.contentHolder(itemIndex), contentElement = contentHolder.closest('.k-content');\n that.tabsHeight = outerHeight(that.tabGroup) + parseInt(that.wrapper.css('border-top-width'), 10) + parseInt(that.wrapper.css('border-bottom-width'), 10);\n that._sizeScrollWrap(visibleContents);\n if (contentHolder.length === 0) {\n visibleContents.removeClass(ACTIVESTATE).attr('aria-hidden', true).kendoStop(true, true).kendoAnimate(close);\n return false;\n }\n item.attr('data-animating', true);\n var isAjaxContent = (item.children('.' + LINK).data(CONTENTURL) || that._contentUrls[itemIndex] || false) && contentHolder.is(EMPTY), showContentElement = function () {\n oldTab.removeAttr('aria-selected');\n item.attr('aria-selected', true);\n that._current(item);\n that._sizeScrollWrap(contentElement);\n contentElement.addClass(ACTIVESTATE).removeAttr('aria-hidden').kendoStop(true, true).attr('aria-expanded', true).kendoAnimate(extend({\n init: function () {\n that.trigger(SHOW, {\n item: item[0],\n contentElement: contentHolder[0]\n });\n kendo.resize(contentHolder);\n }\n }, animation, {\n complete: function () {\n item.removeAttr('data-animating');\n that.trigger(ACTIVATE, {\n item: item[0],\n contentElement: contentHolder[0]\n });\n kendo.resize(contentHolder);\n that.scrollWrap.css('height', '').css('height');\n if (isAnimationEnabled && (kendo.support.browser.msie || kendo.support.browser.edge)) {\n contentHolder.finish().animate({ opacity: 0.9 }, 'fast', 'linear', function () {\n contentHolder.finish().animate({ opacity: 1 }, 'fast', 'linear');\n });\n }\n }\n }));\n }, showContent = function () {\n if (!isAjaxContent) {\n showContentElement();\n that.trigger('change');\n } else {\n item.removeAttr('data-animating');\n that.ajaxRequest(item, contentHolder, function () {\n item.attr('data-animating', true);\n showContentElement();\n that.trigger('change');\n });\n }\n if (that._scrollableModeActive) {\n that._scrollTabsToItem(item);\n }\n };\n visibleContents.removeClass(ACTIVESTATE);\n that.tabGroup.find('.' + TABONTOP).removeClass(TABONTOP);\n item.addClass(TABONTOP).css('z-index');\n if (kendo.size(animation.effects)) {\n oldTab.kendoAddClass(DEFAULTSTATE, { duration: animation.duration });\n item.kendoAddClass(ACTIVESTATE, { duration: animation.duration });\n } else {\n oldTab.addClass(DEFAULTSTATE);\n item.addClass(ACTIVESTATE);\n }\n visibleContents.attr('aria-hidden', true);\n visibleContents.attr('aria-expanded', false);\n if (visibleContents.length) {\n visibleContents.kendoStop(true, true).kendoAnimate(extend({ complete: showContent }, close));\n } else {\n showContent();\n }\n return true;\n },\n contentElement: function (itemIndex) {\n if (isNaN(itemIndex - 0)) {\n return undefined;\n }\n var contentElements = this.contentElements && this.contentElements[0] && !kendo.kineticScrollNeeded ? this.contentElements : this.contentAnimators;\n var id = $(this.tabGroup.children()[itemIndex]).attr('aria-controls');\n if (contentElements) {\n for (var i = 0, len = contentElements.length; i < len; i++) {\n if (contentElements.eq(i).closest('.k-content')[0].id == id) {\n return contentElements[i];\n }\n }\n }\n return undefined;\n },\n contentHolder: function (itemIndex) {\n var contentElement = $(this.contentElement(itemIndex)), scrollContainer = contentElement.children('.km-scroll-container');\n return kendo.support.touch && scrollContainer[0] ? scrollContainer : contentElement;\n },\n ajaxRequest: function (element, content, complete, url) {\n element = this.tabGroup.find(element);\n var that = this, xhr = $.ajaxSettings.xhr, link = element.find('.' + LINK), data = {}, halfWidth = element.width() / 2, fakeProgress = false, statusIcon = element.find('.k-loading').removeClass('k-complete');\n if (!statusIcon[0]) {\n statusIcon = $('<span class=\\'k-loading\\'/>').prependTo(element);\n }\n var endState = halfWidth * 2 - statusIcon.width();\n var oldProgressAnimation = function () {\n statusIcon.animate({ marginLeft: (parseInt(statusIcon.css('marginLeft'), 10) || 0) < halfWidth ? endState : 0 }, 500, oldProgressAnimation);\n };\n if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n setTimeout(oldProgressAnimation, 40);\n }\n url = url || link.data(CONTENTURL) || that._contentUrls[element.index()] || link.attr(HREF);\n that.inRequest = true;\n var ajaxOptions = {\n type: 'GET',\n cache: false,\n url: url,\n dataType: 'html',\n data: data,\n xhr: function () {\n var current = this, request = xhr(), event = current.progressUpload ? 'progressUpload' : current.progress ? 'progress' : false;\n if (request) {\n $.each([\n request,\n request.upload\n ], function () {\n if (this.addEventListener) {\n this.addEventListener('progress', function (evt) {\n if (event) {\n current[event](evt);\n }\n }, false);\n }\n });\n }\n current.noProgress = !(window.XMLHttpRequest && 'upload' in new XMLHttpRequest());\n return request;\n },\n progress: function (evt) {\n if (evt.lengthComputable) {\n var percent = parseInt(evt.loaded / evt.total * 100, 10) + '%';\n statusIcon.stop(true).addClass('k-progress').css({\n 'width': percent,\n 'marginLeft': 0\n });\n }\n },\n error: function (xhr, status) {\n if (that.trigger('error', {\n xhr: xhr,\n status: status\n })) {\n this.complete();\n }\n },\n stopProgress: function () {\n clearInterval(fakeProgress);\n statusIcon.stop(true).addClass('k-progress')[0].style.cssText = '';\n },\n complete: function (xhr) {\n that.inRequest = false;\n if (this.noProgress) {\n setTimeout(this.stopProgress, 500);\n } else {\n this.stopProgress();\n }\n if (xhr.statusText == 'abort') {\n statusIcon.remove();\n }\n },\n success: function (data) {\n statusIcon.addClass('k-complete');\n try {\n var current = this, loaded = 10;\n if (current.noProgress) {\n statusIcon.width(loaded + '%');\n fakeProgress = setInterval(function () {\n current.progress({\n lengthComputable: true,\n loaded: Math.min(loaded, 100),\n total: 100\n });\n loaded += 10;\n }, 40);\n }\n that.angular('cleanup', function () {\n return { elements: content.get() };\n });\n kendo.destroy(content);\n content.html(data);\n } catch (e) {\n var console = window.console;\n if (console && console.error) {\n console.error(e.name + ': ' + e.message + ' in ' + url);\n }\n this.error(this.xhr, 'error');\n }\n if (complete) {\n complete.call(that, content);\n }\n that.angular('compile', function () {\n return { elements: content.get() };\n });\n that.trigger(CONTENTLOAD, {\n item: element[0],\n contentElement: content[0]\n });\n }\n };\n if (typeof url === 'object') {\n ajaxOptions = $.extend(true, {}, ajaxOptions, url);\n if (isFunction(ajaxOptions.url)) {\n ajaxOptions.url = ajaxOptions.url();\n }\n }\n that.xhr = $.ajax(ajaxOptions);\n }\n });\n extend(TabStrip, {\n renderItem: function (options) {\n options = extend({\n tabStrip: {},\n group: {}\n }, options);\n var empty = templates.empty, item = options.item;\n return templates.item(extend(options, {\n image: item.imageUrl ? templates.image : empty,\n sprite: item.spriteCssClass ? templates.sprite : empty,\n itemWrapper: templates.itemWrapper\n }, rendering));\n },\n renderContent: function (options) {\n return templates.content(extend(options, rendering));\n }\n });\n kendo.ui.plugin(TabStrip);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('editor/table-wizard/table-wizard-dialog', [\n 'editor/table-wizard/table-wizard-command',\n 'kendo.tabstrip'\n ], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, numericTextBoxSettings = {\n format: '0',\n min: 0\n }, units = [\n 'px',\n 'em'\n ], borderStyles = [\n 'solid',\n 'dotted',\n 'dashed',\n 'double',\n 'groove',\n 'ridge',\n 'inset',\n 'outset',\n 'initial',\n 'inherit',\n 'none',\n 'hidden'\n ];\n var tableAlignmentDropDownSettings = {\n dataSource: [\n {\n className: 'k-icon k-i-table-align-middle-left',\n value: 'left'\n },\n {\n className: 'k-icon k-i-table-align-middle-center',\n value: 'center'\n },\n {\n className: 'k-icon k-i-table-align-middle-right',\n value: 'right'\n },\n {\n className: 'k-icon k-i-align-remove',\n value: ''\n }\n ],\n dataTextField: 'className',\n dataValueField: 'value',\n template: '<span class=\\'#: className #\\' title=\\'#: tooltip #\\'></span>',\n valueTemplate: '<span class=\\'k-align-group #: className #\\' title=\\'#: tooltip #\\'></span>'\n };\n var cellAlignmentDropDownSettings = {\n dataSource: [\n {\n className: 'k-icon k-i-table-align-top-left',\n value: 'left top'\n },\n {\n className: 'k-icon k-i-table-align-top-center',\n value: 'center top'\n },\n {\n className: 'k-icon k-i-table-align-top-right',\n value: 'right top'\n },\n {\n className: 'k-icon k-i-table-align-middle-left',\n value: 'left middle'\n },\n {\n className: 'k-icon k-i-table-align-middle-center',\n value: 'center middle'\n },\n {\n className: 'k-icon k-i-table-align-middle-right',\n value: 'right middle'\n },\n {\n className: 'k-icon k-i-table-align-bottom-left',\n value: 'left bottom'\n },\n {\n className: 'k-icon k-i-table-align-bottom-center',\n value: 'center bottom'\n },\n {\n className: 'k-icon k-i-table-align-bottom-right',\n value: 'right bottom'\n },\n {\n className: 'k-icon k-i-align-remove',\n value: ''\n }\n ],\n dataTextField: 'className',\n dataValueField: 'value',\n template: '<span class=\\'#: className #\\' title=\\'#: tooltip #\\'></span>',\n valueTemplate: '<span class=\\'k-align-group #: className #\\' title=\\'#: tooltip #\\'></span>'\n };\n var accessibilityAlignmentDropDownSettings = {\n dataSource: [\n {\n className: 'k-icon k-i-table-align-top-left',\n value: 'left top'\n },\n {\n className: 'k-icon k-i-table-align-top-center',\n value: 'center top'\n },\n {\n className: 'k-icon k-i-table-align-top-right',\n value: 'right top'\n },\n {\n className: 'k-icon k-i-table-align-bottom-left',\n value: 'left bottom'\n },\n {\n className: 'k-icon k-i-table-align-bottom-center',\n value: 'center bottom'\n },\n {\n className: 'k-icon k-i-table-align-bottom-right',\n value: 'right bottom'\n },\n {\n className: 'k-icon k-i-align-remove',\n value: ''\n }\n ],\n dataTextField: 'className',\n dataValueField: 'value',\n template: '<span class=\\'#: className #\\' title=\\'#: tooltip #\\'></span>',\n valueTemplate: '<span class=\\'k-align-group #: className #\\' title=\\'#: tooltip #\\'></span>'\n };\n var dialogTemplate = '<div class=\"k-editor-dialog k-editor-table-wizard-dialog k-action-window k-popup-edit-form\">' + '<div class=\"k-edit-form-container\">' + '<div id=\"k-table-wizard-tabs\" class=\"k-root-tabs\">' + '<ul>' + '<li class=\"k-state-active\">#= messages.tableTab #</li>' + '<li>#= messages.cellTab #</li>' + '<li>#= messages.accessibilityTab #</li>' + '</ul>' + '<div id=\"k-table-properties\">' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-width\">#= messages.width #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-table-width\" />' + '<input id=\"k-editor-table-width-type\" aria-label=\"#= messages.units #\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-height\">#= messages.height #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-table-height\" />' + '<input id=\"k-editor-table-height-type\" aria-label=\"#= messages.units #\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-columns\">#= messages.columns #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-table-columns\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-rows\">#= messages.rows #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-table-rows\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-cell-spacing\">#= messages.cellSpacing #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-table-cell-spacing\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-cell-padding\">#= messages.cellPadding #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-table-cell-padding\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-alignment\">#= messages.alignment #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-table-alignment\" class=\"k-align\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-bg\">#= messages.background #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-table-bg\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-css-class\">#= messages.cssClass #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-css-class\" class=\"k-textbox\" type=\"text\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-id\">#= messages.id #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-id\" class=\"k-textbox\" type=\"text\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-border-width\">#= messages.border #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-border-width\" />' + '<input id=\"k-editor-border-color\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-border-style\">#= messages.borderStyle #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-border-style\" />' + '</div>' + '<div class=\"k-edit-label\"> </div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-collapse-borders\" type=\"checkbox\" class=\"k-checkbox\" />' + '<label for=\"k-editor-collapse-borders\" class=\"k-checkbox-label\">#= messages.collapseBorders #</label>' + '</div>' + '</div>' + '<div id=\"k-cell-properties\">' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-selectAllCells\" type=\"checkbox\" class=\"k-checkbox\" />' + '<label for=\"k-editor-selectAllCells\" class=\"k-checkbox-label\">#= messages.selectAllCells #</label>' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-cell-width\">#= messages.width #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-cell-width\" />' + '<input id=\"k-editor-cell-width-type\" aria-label=\"#= messages.units #\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-cell-height\">#= messages.height #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-cell-height\" />' + '<input id=\"k-editor-cell-height-type\" aria-label=\"#= messages.units #\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-cell-margin\">#= messages.cellMargin #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-table-cell-margin\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-cells-padding\">#= messages.cellPadding #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-table-cells-padding\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-cell-alignment\">#= messages.alignment #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-cell-alignment\" class=\"k-align\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-cell-bg\">#= messages.background #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-cell-bg\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-cell-css-class\">#= messages.cssClass #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-cell-css-class\" class=\"k-textbox\" type=\"text\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-cell-id\">#= messages.id #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-cell-id\" class=\"k-textbox\" type=\"text\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-cell-border-width\">#= messages.border #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input type=\"numeric\" id=\"k-editor-cell-border-width\" />' + '<input id=\"k-editor-cell-border-color\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-cell-border-style\">#= messages.borderStyle #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-cell-border-style\" />' + '</div>' + '<div class=\"k-edit-label\"> </div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-wrap-text\" type=\"checkbox\" class=\"k-checkbox\" />' + '<label for=\"k-editor-wrap-text\" class=\"k-checkbox-label\">#= messages.wrapText #</label>' + '</div>' + '</div>' + '<div id=\"k-accessibility-properties\">' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-table-caption\">#= messages.caption #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-table-caption\" class=\"k-textbox\" type=\"text\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-accessibility-alignment\">#= messages.alignment #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-accessibility-alignment\" class=\"k-align\" />' + '</div>' + '<div class=\"k-edit-label\">' + '<label for=\"k-editor-accessibility-summary\">#= messages.summary #</label>' + '</div>' + '<div class=\"k-edit-field\">' + '<textarea id=\"k-editor-accessibility-summary\" class=\"k-textbox\"></textarea>' + '</div>' + '<div class=\"k-edit-label\"> </div>' + '<div class=\"k-edit-field\">' + '<input id=\"k-editor-cells-headers\" type=\"checkbox\" class=\"k-checkbox\" />' + '<label for=\"k-editor-cells-headers\" class=\"k-checkbox-label\">#= messages.associateCellsWithHeaders #</label>' + '</div>' + '</div>' + '</div>' + '<div class=\"k-edit-buttons k-state-default\">' + '<button class=\"k-button k-primary k-dialog-ok\">#= messages.dialogOk #</button>' + '<button class=\"k-button k-dialog-close\">#= messages.dialogCancel #</button>' + '</div>' + '</div>' + '</div>';\n var TableWizardDialog = kendo.Class.extend({\n init: function (options) {\n this.options = options;\n },\n open: function () {\n var that = this, options = that.options, dialogOptions = options.dialogOptions, tableData = options.table, dialog, messages = options.messages, isIE = kendo.support.browser.msie;\n function close(e) {\n e.preventDefault();\n that.destroy();\n dialog.destroy();\n }\n function okHandler(e) {\n that.collectDialogValues(tableData);\n close(e);\n if (that.change) {\n that.change();\n }\n options.closeCallback(tableData);\n }\n function closeHandler(e) {\n close(e);\n options.closeCallback();\n }\n dialogOptions.close = closeHandler;\n dialogOptions.title = messages.tableWizard;\n dialogOptions.visible = options.visible;\n dialog = $(that._dialogTemplate(messages)).appendTo(document.body).kendoWindow(dialogOptions).closest('.k-window').toggleClass('k-rtl', options.isRtl).end().find('.k-dialog-ok').click(okHandler).end().find('.k-dialog-close').click(closeHandler).end().data('kendoWindow');\n var element = dialog.element;\n that._initTabStripComponent(element);\n that._initTableViewComponents(element, tableData);\n that._initCellViewComponents(element, tableData);\n that._initAccessibilityViewComponents(element, tableData);\n dialog.center();\n dialog.open();\n if (isIE) {\n var dialogHeight = element.closest('.k-window').height();\n element.css('max-height', dialogHeight);\n }\n },\n _initTabStripComponent: function (element) {\n var components = this.components = {};\n components.tabStrip = element.find('#k-table-wizard-tabs').kendoTabStrip({ animation: false }).data('kendoTabStrip');\n },\n collectDialogValues: function () {\n var that = this;\n var data = that.options.table;\n that._collectTableViewValues(data);\n that._collectCellViewValues(data);\n that._collectAccessibilityViewValues(data);\n },\n _collectTableViewValues: function (tableData) {\n var tableView = this.components.tableView;\n var tableProperties = tableData.tableProperties;\n tableProperties.width = tableView.width.value();\n tableProperties.widthUnit = tableView.widthUnit.value();\n tableProperties.height = tableView.height.value();\n tableProperties.columns = tableView.columns.value();\n tableProperties.rows = tableView.rows.value();\n tableProperties.heightUnit = tableView.heightUnit.value();\n tableProperties.cellSpacing = tableView.cellSpacing.value();\n tableProperties.cellPadding = tableView.cellPadding.value();\n tableProperties.alignment = tableView.alignment.value();\n tableProperties.bgColor = tableView.bgColor.value();\n tableProperties.className = tableView.className.value;\n tableProperties.id = tableView.id.value;\n tableProperties.borderWidth = tableView.borderWidth.value();\n tableProperties.borderColor = tableView.borderColor.value();\n tableProperties.borderStyle = tableView.borderStyle.value();\n tableProperties.collapseBorders = tableView.collapseBorders.checked;\n },\n _collectCellViewValues: function (table) {\n var cellData = table.cellProperties = {};\n var cellView = this.components.cellView;\n cellData.selectAllCells = cellView.selectAllCells.checked;\n cellData.width = cellView.width.value();\n cellData.widthUnit = cellView.widthUnit.value();\n cellData.height = cellView.height.value();\n cellData.heightUnit = cellView.heightUnit.value();\n cellData.cellMargin = cellView.cellMargin.value();\n cellData.cellPadding = cellView.cellPadding.value();\n cellData.alignment = cellView.alignment.value();\n cellData.bgColor = cellView.bgColor.value();\n cellData.className = cellView.className.value;\n cellData.id = cellView.id.value;\n cellData.borderWidth = cellView.borderWidth.value();\n cellData.borderColor = cellView.borderColor.value();\n cellData.borderStyle = cellView.borderStyle.value();\n cellData.wrapText = cellView.wrapText.checked;\n if (!cellData.width) {\n cellData.selectAllCells = true;\n cellData.width = 100 / table.tableProperties.columns;\n cellData.widthUnit = '%';\n }\n },\n _collectAccessibilityViewValues: function (table) {\n var tableProperties = table.tableProperties;\n var accessibilityView = this.components.accessibilityView;\n tableProperties.captionContent = accessibilityView.captionContent.value;\n tableProperties.captionAlignment = accessibilityView.captionAlignment.value();\n tableProperties.summary = accessibilityView.summary.value;\n tableProperties.cellsWithHeaders = accessibilityView.cellsWithHeaders.checked;\n },\n _addUnit: function (units, value) {\n if (value && $.inArray(value, units) == -1) {\n units.push(value);\n }\n },\n _initTableViewComponents: function (element, table) {\n var components = this.components;\n var tableView = components.tableView = {};\n var tableProperties = table.tableProperties = table.tableProperties || {};\n tableProperties.borderStyle = tableProperties.borderStyle || '';\n this._addUnit(units, tableProperties.widthUnit);\n this._addUnit(units, tableProperties.heightUnit);\n this._initNumericTextbox(element.find('#k-editor-table-width'), 'width', tableProperties, tableView);\n this._initNumericTextbox(element.find('#k-editor-table-height'), 'height', tableProperties, tableView);\n this._initNumericTextbox(element.find('#k-editor-table-columns'), 'columns', tableProperties, tableView, {\n min: 1,\n value: 4\n });\n this._initNumericTextbox(element.find('#k-editor-table-rows'), 'rows', tableProperties, tableView, {\n min: 1,\n value: 4\n });\n this._initDropDownList(element.find('#k-editor-table-width-type'), 'widthUnit', tableProperties, tableView, units);\n this._initDropDownList(element.find('#k-editor-table-height-type'), 'heightUnit', tableProperties, tableView, units);\n this._initNumericTextbox(element.find('#k-editor-table-cell-spacing'), 'cellSpacing', tableProperties, tableView);\n this._initNumericTextbox(element.find('#k-editor-table-cell-padding'), 'cellPadding', tableProperties, tableView);\n this._initTableAlignmentDropDown(element.find('#k-editor-table-alignment'), tableProperties);\n this._initColorPicker(element.find('#k-editor-table-bg'), 'bgColor', tableProperties, tableView);\n this._initInput(element.find('#k-editor-css-class'), 'className', tableProperties, tableView);\n this._initInput(element.find('#k-editor-id'), 'id', tableProperties, tableView);\n this._initNumericTextbox(element.find('#k-editor-border-width'), 'borderWidth', tableProperties, tableView);\n this._initColorPicker(element.find('#k-editor-border-color'), 'borderColor', tableProperties, tableView);\n this._initDropDownList(element.find('#k-editor-border-style'), 'borderStyle', tableProperties, tableView, borderStyles);\n this._initCheckbox(element.find('#k-editor-collapse-borders'), 'collapseBorders', tableProperties, tableView);\n },\n _initCellViewComponents: function (element, table) {\n var components = this.components;\n var cellView = components.cellView = {};\n table.selectedCells = table.selectedCells = table.selectedCells || [];\n var cellProperties = table.selectedCells[0] || {\n borderStyle: '',\n wrapText: true\n };\n this._addUnit(units, cellProperties.widthUnit);\n this._addUnit(units, cellProperties.heightUnit);\n this._initCheckbox(element.find('#k-editor-selectAllCells'), 'selectAllCells', table.tableProperties, cellView);\n this._initNumericTextbox(element.find('#k-editor-cell-width'), 'width', cellProperties, cellView);\n this._initNumericTextbox(element.find('#k-editor-cell-height'), 'height', cellProperties, cellView);\n this._initDropDownList(element.find('#k-editor-cell-width-type'), 'widthUnit', cellProperties, cellView, units);\n this._initDropDownList(element.find('#k-editor-cell-height-type'), 'heightUnit', cellProperties, cellView, units);\n this._initNumericTextbox(element.find('#k-editor-table-cell-margin'), 'cellMargin', cellProperties, cellView);\n this._initNumericTextbox(element.find('#k-editor-table-cells-padding'), 'cellPadding', cellProperties, cellView);\n this._initCellAlignmentDropDown(element.find('#k-editor-cell-alignment'), cellProperties);\n this._initColorPicker(element.find('#k-editor-cell-bg'), 'bgColor', cellProperties, cellView);\n this._initInput(element.find('#k-editor-cell-css-class'), 'className', cellProperties, cellView);\n this._initInput(element.find('#k-editor-cell-id'), 'id', cellProperties, cellView);\n this._initNumericTextbox(element.find('#k-editor-cell-border-width'), 'borderWidth', cellProperties, cellView);\n this._initColorPicker(element.find('#k-editor-cell-border-color'), 'borderColor', cellProperties, cellView);\n this._initDropDownList(element.find('#k-editor-cell-border-style'), 'borderStyle', cellProperties, cellView, borderStyles);\n this._initCheckbox(element.find('#k-editor-wrap-text'), 'wrapText', cellProperties, cellView);\n },\n _initAccessibilityViewComponents: function (element, table) {\n var components = this.components;\n var accessibilityView = components.accessibilityView = {};\n var tableProperties = table.tableProperties;\n this._initInput(element.find('#k-editor-table-caption'), 'captionContent', tableProperties, accessibilityView);\n this._initAccessibilityAlignmentDropDown(element.find('#k-editor-accessibility-alignment'), tableProperties);\n this._initInput(element.find('#k-editor-accessibility-summary'), 'summary', tableProperties, accessibilityView);\n this._initCheckbox(element.find('#k-editor-cells-headers'), 'cellsWithHeaders', tableProperties, accessibilityView);\n },\n _initNumericTextbox: function (element, property, data, storage, settings) {\n var component = storage[property] = element.kendoNumericTextBox(settings ? $.extend({}, numericTextBoxSettings, settings) : numericTextBoxSettings).data('kendoNumericTextBox');\n if (property in data) {\n component.value(parseInt(data[property], 10));\n }\n },\n _initDropDownList: function (element, property, data, storage, dataSource) {\n var component = storage[property] = element.kendoDropDownList({ dataSource: dataSource }).data('kendoDropDownList');\n this._setComponentValue(component, data, property);\n },\n _initTableAlignmentDropDown: function (element, data) {\n var messages = this.options.messages;\n var tableView = this.components.tableView;\n var dataSource = tableAlignmentDropDownSettings.dataSource;\n dataSource[0].tooltip = messages.alignLeft;\n dataSource[1].tooltip = messages.alignCenter;\n dataSource[2].tooltip = messages.alignRight;\n dataSource[3].tooltip = messages.alignRemove;\n this._initAlignmentDropDown(element, tableAlignmentDropDownSettings, 'alignment', data, tableView);\n },\n _initCellAlignmentDropDown: function (element, data) {\n var messages = this.options.messages;\n var cellView = this.components.cellView;\n var dataSource = cellAlignmentDropDownSettings.dataSource;\n dataSource[0].tooltip = messages.alignLeftTop;\n dataSource[1].tooltip = messages.alignCenterTop;\n dataSource[2].tooltip = messages.alignRightTop;\n dataSource[3].tooltip = messages.alignLeftMiddle;\n dataSource[4].tooltip = messages.alignCenterMiddle;\n dataSource[5].tooltip = messages.alignRightMiddle;\n dataSource[6].tooltip = messages.alignLeftBottom;\n dataSource[7].tooltip = messages.alignCenterBottom;\n dataSource[8].tooltip = messages.alignRightBottom;\n dataSource[9].tooltip = messages.alignRemove;\n this._initAlignmentDropDown(element, cellAlignmentDropDownSettings, 'alignment', data, cellView);\n },\n _initAccessibilityAlignmentDropDown: function (element, data) {\n var messages = this.options.messages;\n var accessibilityView = this.components.accessibilityView;\n var dataSource = accessibilityAlignmentDropDownSettings.dataSource;\n dataSource[0].tooltip = messages.alignLeftTop;\n dataSource[1].tooltip = messages.alignCenterTop;\n dataSource[2].tooltip = messages.alignRightTop;\n dataSource[3].tooltip = messages.alignLeftBottom;\n dataSource[4].tooltip = messages.alignCenterBottom;\n dataSource[5].tooltip = messages.alignRightBottom;\n dataSource[6].tooltip = messages.alignRemove;\n this._initAlignmentDropDown(element, accessibilityAlignmentDropDownSettings, 'captionAlignment', data, accessibilityView);\n },\n _initAlignmentDropDown: function (element, settings, name, data, storage) {\n var component = storage[name] = element.kendoDropDownList(settings).data('kendoDropDownList');\n component.list.addClass('k-align').css('width', '110px');\n this._setComponentValue(component, data, name);\n },\n _setComponentValue: function (component, data, property) {\n if (property in data) {\n component.value(data[property]);\n }\n },\n _initColorPicker: function (element, property, data, storage) {\n var component = storage[property] = element.kendoColorPicker({\n buttons: false,\n clearButton: true\n }).data('kendoColorPicker');\n if (data[property]) {\n component.value(data[property]);\n }\n },\n _initInput: function (element, property, data, storage) {\n var component = storage[property] = element.get(0);\n if (property in data) {\n component.value = data[property];\n }\n },\n _initCheckbox: function (element, property, data, storage) {\n var component = storage[property] = element.get(0);\n if (property in data) {\n component.checked = data[property];\n }\n },\n destroy: function () {\n this._destroyComponents(this.components.tableView);\n this._destroyComponents(this.components.cellView);\n this._destroyComponents(this.components.accessibilityView);\n this._destroyComponents(this.components);\n delete this.components;\n },\n _destroyComponents: function (components) {\n for (var widget in components) {\n if (components[widget].destroy) {\n components[widget].destroy();\n }\n delete components[widget];\n }\n },\n _dialogTemplate: function (messages) {\n return kendo.template(dialogTemplate)({ messages: messages });\n }\n });\n kendo.ui.editor.TableWizardDialog = TableWizardDialog;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.editor', [\n 'kendo.combobox',\n 'kendo.dropdownlist',\n 'kendo.resizable',\n 'kendo.window',\n 'kendo.colorpicker',\n 'kendo.imagebrowser',\n 'kendo.numerictextbox',\n 'util/undoredostack',\n 'editor/main',\n 'editor/dom',\n 'editor/serializer',\n 'editor/range',\n 'editor/command',\n 'editor/components',\n 'editor/toolbar',\n 'editor/immutables',\n 'editor/plugins/viewhtml',\n 'editor/plugins/link',\n 'editor/plugins/lists',\n 'editor/plugins/formatting',\n 'editor/plugins/image',\n 'editor/plugins/import',\n 'editor/plugins/insert',\n 'editor/plugins/export',\n 'editor/plugins/indent',\n 'editor/plugins/linebreak',\n 'editor/plugins/format',\n 'editor/plugins/inlineformat',\n 'editor/plugins/formatblock',\n 'editor/plugins/file',\n 'editor/plugins/tables',\n 'editor/plugins/clipboard',\n 'editor/plugins/keyboard',\n 'editor/plugins/exportpdf',\n 'editor/plugins/print',\n 'editor/resizing/column-resizing',\n 'editor/resizing/row-resizing',\n 'editor/resizing/table-resizing',\n 'editor/resizing/table-resize-handle',\n 'editor/table-wizard/table-wizard-command',\n 'editor/table-wizard/table-wizard-dialog'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'editor',\n name: 'Editor',\n category: 'web',\n description: 'Rich text editor component',\n depends: [\n 'combobox',\n 'dropdownlist',\n 'window',\n 'colorpicker'\n ],\n features: [\n {\n id: 'editor-imagebrowser',\n name: 'Image Browser',\n description: 'Support for uploading and inserting images',\n depends: ['imagebrowser']\n },\n {\n id: 'editor-resizable',\n name: 'Resize handle',\n description: 'Support for resizing the content area via a resize handle',\n depends: ['resizable']\n },\n {\n id: 'editor-tablewizard',\n name: 'Table wizard dialog',\n description: 'Support for table properties configuration',\n depends: [\n 'tabstrip',\n 'button',\n 'numerictextbox'\n ]\n },\n {\n id: 'editor-pdf-export',\n name: 'PDF export',\n description: 'Export Editor content as PDF',\n depends: [\n 'pdf',\n 'drawing'\n ]\n }\n ]\n };\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.maskedtextbox', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'maskedtextbox',\n name: 'MaskedTextBox',\n category: 'web',\n description: 'The MaskedTextBox widget allows to specify a mask type on an input field.',\n depends: ['core']\n };\n (function ($, undefined) {\n var global = window;\n var min = global.Math.min;\n var kendo = global.kendo;\n var caret = kendo.caret;\n var keys = kendo.keys;\n var ui = kendo.ui;\n var Widget = ui.Widget;\n var NS = '.kendoMaskedTextBox';\n var proxy = $.proxy;\n var setTimeout = window.setTimeout;\n var STATEDISABLED = 'k-state-disabled';\n var STATEINVALID = 'k-state-invalid';\n var DISABLED = 'disabled';\n var READONLY = 'readonly';\n var CHANGE = 'change';\n var MOUSEUP = 'mouseup';\n var DROP = 'drop';\n var KEYDOWN = 'keydown';\n var PASTE = 'paste';\n var INPUT = 'input';\n function ns(name) {\n return name + NS;\n }\n var INPUT_EVENT_NAME = ns(kendo.support.propertyChangeEvent ? 'propertychange' : INPUT);\n function stringDiffStart(str1, str2) {\n var i = 0;\n while (i < str2.length) {\n if (str1[i] !== str2[i]) {\n break;\n }\n i++;\n }\n return i;\n }\n var MaskedTextBox = Widget.extend({\n init: function (element, options) {\n var that = this;\n var DOMElement;\n Widget.fn.init.call(that, element, options);\n that._rules = $.extend({}, that.rules, that.options.rules);\n element = that.element;\n DOMElement = element[0];\n that._wrapper();\n that._tokenize();\n that._form();\n that.element.addClass('k-textbox').attr('autocomplete', 'off').on('focus' + NS, function () {\n var value = DOMElement.value;\n if (!value) {\n DOMElement.value = that._old = that._emptyMask;\n } else {\n that._togglePrompt(true);\n }\n that._oldValue = value;\n that._timeoutId = setTimeout(function () {\n caret(element, 0, value ? that._maskLength : 0);\n });\n }).on('focusout' + NS, function () {\n var value = element.val();\n clearTimeout(that._timeoutId);\n DOMElement.value = that._old = '';\n if (value !== that._emptyMask) {\n DOMElement.value = that._old = value;\n }\n that._change();\n that._togglePrompt();\n });\n var disabled = element.is('[disabled]') || $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n that.value(that.options.value || element.val());\n that._validationIcon = $('<span class=\\'k-icon k-i-warning\\'></span>').insertAfter(element);\n kendo.notify(that);\n },\n options: {\n name: 'MaskedTextBox',\n clearPromptChar: false,\n unmaskOnPost: false,\n promptChar: '_',\n culture: '',\n rules: {},\n value: '',\n mask: ''\n },\n events: [CHANGE],\n rules: {\n '0': /\\d/,\n '9': /\\d|\\s/,\n '#': /\\d|\\s|\\+|\\-/,\n 'L': /[a-zA-Z]/,\n '?': /[a-zA-Z]|\\s/,\n '&': /\\S/,\n 'C': /./,\n 'A': /[a-zA-Z0-9]/,\n 'a': /[a-zA-Z0-9]|\\s/\n },\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n that._rules = $.extend({}, that.rules, that.options.rules);\n that._tokenize();\n this._unbindInput();\n this._bindInput();\n that.value(that.element.val());\n },\n destroy: function () {\n var that = this;\n that.element.off(NS);\n if (that._formElement) {\n that._formElement.off('reset', that._resetHandler);\n that._formElement.off('submit', that._submitHandler);\n }\n Widget.fn.destroy.call(that);\n },\n raw: function () {\n var unmasked = this._unmask(this.element.val(), 0);\n return unmasked.replace(new RegExp(escapeRegExp(this.options.promptChar), 'g'), '');\n },\n value: function (value) {\n var element = this.element;\n var emptyMask = this._emptyMask;\n if (value === undefined) {\n return this.element.val();\n }\n if (value === null) {\n value = '';\n }\n if (!emptyMask) {\n this._oldValue = value;\n element.val(value);\n return;\n }\n value = this._unmask(value + '');\n element.val(value ? emptyMask : '');\n this._mask(0, this._maskLength, value);\n this._unmaskedValue = null;\n value = element.val();\n this._oldValue = value;\n if (kendo._activeElement() !== element) {\n if (value === emptyMask) {\n element.val('');\n } else {\n this._togglePrompt();\n }\n }\n },\n _togglePrompt: function (show) {\n var DOMElement = this.element[0];\n var value = DOMElement.value;\n if (this.options.clearPromptChar) {\n if (!show) {\n value = value.replace(new RegExp(escapeRegExp(this.options.promptChar), 'g'), ' ');\n } else {\n value = this._oldValue;\n }\n DOMElement.value = this._old = value;\n }\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n _bindInput: function () {\n var that = this;\n if (that._maskLength) {\n if (that.options.$angular) {\n that.element.off(INPUT);\n }\n that.element.on(ns(KEYDOWN), proxy(that._keydown, that)).on(ns(DROP), proxy(that._drop, that)).on(ns(CHANGE), proxy(that._trackChange, that)).on(INPUT_EVENT_NAME, proxy(that._inputHandler, that));\n if (kendo.support.browser.msie) {\n var version = kendo.support.browser.version;\n if (version > 8 && version < 11) {\n var events = [\n ns(MOUSEUP),\n ns(DROP),\n ns(KEYDOWN),\n ns(PASTE)\n ].join(' ');\n that.element.on(events, proxy(that._legacyIEInputHandler, that));\n }\n }\n }\n },\n _unbindInput: function () {\n var events = [\n INPUT_EVENT_NAME,\n ns(KEYDOWN),\n ns(MOUSEUP),\n ns(DROP),\n ns(PASTE)\n ].join(' ');\n this.element.off(events);\n },\n _editable: function (options) {\n var that = this;\n var element = that.element;\n var wrapper = that.wrapper;\n var disable = options.disable;\n var readonly = options.readonly;\n that._unbindInput();\n if (!readonly && !disable) {\n element.removeAttr(DISABLED).removeAttr(READONLY);\n wrapper.removeClass(STATEDISABLED);\n that._bindInput();\n } else {\n element.attr(DISABLED, disable).attr(READONLY, readonly);\n wrapper.toggleClass(STATEDISABLED, disable);\n }\n },\n _change: function () {\n var that = this;\n var value = that.value();\n if (value !== that._oldValue) {\n that._oldValue = value;\n that.trigger(CHANGE);\n that.element.trigger(CHANGE);\n } else if (value === '' && that.__changing) {\n that.element.trigger(CHANGE);\n }\n },\n inputChange: function (backward) {\n var that = this;\n var old = that._old;\n var element = that.element[0];\n var value = element.value;\n var selection = caret(element);\n var cursor = selection[1];\n var lengthDiff = value.length - old.length;\n var mobile = kendo.support.mobileOS;\n if (that.__dropping && lengthDiff < 0) {\n return;\n }\n if (lengthDiff === -1 && mobile.android && mobile.browser === 'chrome') {\n backward = true;\n }\n var contentStart = min(cursor, stringDiffStart(value, old));\n var content = value.substring(contentStart, cursor);\n element.value = value.substring(0, contentStart) + that._emptyMask.substring(contentStart);\n var caretPos = that._mask(contentStart, cursor, content);\n var endContent = that._trimStartPromptChars(value.substring(cursor), min(lengthDiff, caretPos - contentStart));\n var unmasked = that._unmask(endContent, old.length - endContent.length);\n that._mask(caretPos, caretPos, unmasked);\n if (backward) {\n caretPos = that._findCaretPosBackwards(contentStart);\n }\n caret(element, caretPos);\n that.__dropping = false;\n },\n _trimStartPromptChars: function (content, count) {\n var promptChar = this.options.promptChar;\n while (count-- > 0 && content.indexOf(promptChar) === 0) {\n content = content.substring(1);\n }\n return content;\n },\n _findCaretPosBackwards: function (pos) {\n var caretStart = this._find(pos, true);\n if (caretStart < pos) {\n caretStart += 1;\n }\n return caretStart;\n },\n _inputHandler: function () {\n if (kendo._activeElement() !== this.element[0]) {\n return;\n }\n this.inputChange(this.__backward);\n },\n _legacyIEInputHandler: function (e) {\n var that = this;\n var input = that.element[0];\n var value = input.value;\n var type = e.type;\n that.__pasting = type === 'paste';\n setTimeout(function () {\n if (type === 'mouseup' && that.__pasting) {\n return;\n }\n if (input.value && input.value !== value) {\n that.inputChange(that.__backward);\n }\n });\n },\n _trackChange: function () {\n var that = this;\n that.__changing = true;\n setTimeout(function () {\n that.__changing = false;\n });\n },\n _form: function () {\n var that = this;\n var element = that.element;\n var formId = element.attr('form');\n var form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(element[0].value);\n });\n };\n that._submitHandler = function () {\n that.element[0].value = that._old = that.raw();\n };\n if (that.options.unmaskOnPost) {\n form.on('submit', that._submitHandler);\n }\n that._formElement = form.on('reset', that._resetHandler);\n }\n },\n _keydown: function (e) {\n var key = e.keyCode;\n this.__backward = key === keys.BACKSPACE;\n if (key === keys.ENTER) {\n this._change();\n }\n },\n _drop: function () {\n this.__dropping = true;\n },\n _find: function (idx, backward) {\n var value = this.element.val() || this._emptyMask;\n var step = 1;\n if (backward === true) {\n step = -1;\n }\n while (idx > -1 || idx <= this._maskLength) {\n if (value.charAt(idx) !== this.tokens[idx]) {\n return idx;\n }\n idx += step;\n }\n return -1;\n },\n _mask: function (start, end, value, backward) {\n var element = this.element[0];\n var current = element.value || this._emptyMask;\n var empty = this.options.promptChar;\n var valueLength;\n var chrIdx = 0;\n var unmasked;\n var chr;\n var idx;\n start = this._find(start, backward);\n if (start > end) {\n end = start;\n }\n unmasked = this._unmask(current.substring(end), end);\n value = this._unmask(value, start);\n valueLength = value.length;\n if (value) {\n unmasked = unmasked.replace(new RegExp('^_{0,' + valueLength + '}'), '');\n }\n value += unmasked;\n current = current.split('');\n chr = value.charAt(chrIdx);\n while (start < this._maskLength) {\n current[start] = chr || empty;\n chr = value.charAt(++chrIdx);\n if (idx === undefined && chrIdx > valueLength) {\n idx = start;\n }\n start = this._find(start + 1);\n }\n element.value = this._old = current.join('');\n if (kendo._activeElement() === element) {\n if (idx === undefined) {\n idx = this._maskLength;\n }\n caret(element, idx);\n }\n return idx;\n },\n _unmask: function (value, idx) {\n if (!value) {\n return '';\n }\n if (this._unmaskedValue === value) {\n return this._unmaskedValue;\n }\n value = (value + '').split('');\n var chr;\n var token;\n var chrIdx = 0;\n var tokenIdx = idx || 0;\n var empty = this.options.promptChar;\n var valueLength = value.length;\n var tokensLength = this.tokens.length;\n var result = '';\n while (tokenIdx < tokensLength) {\n chr = value[chrIdx];\n token = this.tokens[tokenIdx];\n if (chr === token || chr === empty) {\n result += chr === empty ? empty : '';\n chrIdx += 1;\n tokenIdx += 1;\n } else if (typeof token !== 'string') {\n if (token && token.test && token.test(chr) || $.isFunction(token) && token(chr)) {\n result += chr;\n tokenIdx += 1;\n } else {\n if (valueLength === 1) {\n this._blinkInvalidState();\n }\n }\n chrIdx += 1;\n } else {\n tokenIdx += 1;\n }\n if (chrIdx >= valueLength) {\n break;\n }\n }\n this._unmaskedValue = result;\n return result;\n },\n _wrapper: function () {\n var that = this;\n var element = that.element;\n var DOMElement = element[0];\n var wrapper = element.wrap('<span class=\\'k-widget k-maskedtextbox\\'></span>').parent();\n wrapper[0].style.cssText = DOMElement.style.cssText;\n DOMElement.style.width = '100%';\n that.wrapper = wrapper.addClass(DOMElement.className);\n },\n _blinkInvalidState: function () {\n var that = this;\n that.wrapper.addClass(STATEINVALID);\n clearTimeout(that._invalidStateTimeout);\n that._invalidStateTimeout = setTimeout(proxy(that._removeInvalidState, that), 100);\n },\n _removeInvalidState: function () {\n var that = this;\n that.wrapper.removeClass(STATEINVALID);\n that._invalidStateTimeout = null;\n },\n _tokenize: function () {\n var tokens = [];\n var tokenIdx = 0;\n var mask = this.options.mask || '';\n var maskChars = mask.split('');\n var length = maskChars.length;\n var idx = 0;\n var chr;\n var rule;\n var emptyMask = '';\n var promptChar = this.options.promptChar;\n var numberFormat = kendo.getCulture(this.options.culture).numberFormat;\n var rules = this._rules;\n for (; idx < length; idx++) {\n chr = maskChars[idx];\n rule = rules[chr];\n if (rule) {\n tokens[tokenIdx] = rule;\n emptyMask += promptChar;\n tokenIdx += 1;\n } else {\n if (chr === '.' || chr === ',') {\n chr = numberFormat[chr];\n } else if (chr === '$') {\n chr = numberFormat.currency.symbol;\n } else if (chr === '\\\\') {\n idx += 1;\n chr = maskChars[idx];\n }\n chr = chr.split('');\n for (var i = 0, l = chr.length; i < l; i++) {\n tokens[tokenIdx] = chr[i];\n emptyMask += chr[i];\n tokenIdx += 1;\n }\n }\n }\n this.tokens = tokens;\n this._emptyMask = emptyMask;\n this._maskLength = emptyMask.length;\n }\n });\n function escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n ui.plugin(MaskedTextBox);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.toolbar', [\n 'kendo.core',\n 'kendo.userevents',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'toolbar',\n name: 'ToolBar',\n category: 'web',\n description: 'The ToolBar widget displays one or more command buttons divided into groups.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Class = kendo.Class, Widget = kendo.ui.Widget, proxy = $.proxy, isFunction = kendo.isFunction, keys = kendo.keys, outerWidth = kendo._outerWidth, TOOLBAR = 'k-toolbar', BUTTON = 'k-button', OVERFLOW_BUTTON = 'k-overflow-button', TOGGLE_BUTTON = 'k-toggle-button', BUTTON_GROUP = 'k-button-group', SPLIT_BUTTON = 'k-split-button', SEPARATOR = 'k-separator', SPACER_CLASS = 'k-spacer', SPACER = 'spacer', POPUP = 'k-popup', RESIZABLE_TOOLBAR = 'k-toolbar-resizable', STATE_ACTIVE = 'k-state-active', STATE_DISABLED = 'k-state-disabled', STATE_HIDDEN = 'k-state-hidden', GROUP_START = 'k-group-start', GROUP_END = 'k-group-end', PRIMARY = 'k-primary', ICON = 'k-icon', ICON_PREFIX = 'k-i-', BUTTON_ICON = 'k-button-icon', BUTTON_ICON_TEXT = 'k-button-icontext', LIST_CONTAINER = 'k-list-container k-split-container', SPLIT_BUTTON_ARROW = 'k-split-button-arrow', OVERFLOW_ANCHOR = 'k-overflow-anchor', OVERFLOW_CONTAINER = 'k-overflow-container', FIRST_TOOLBAR_VISIBLE = 'k-toolbar-first-visible', LAST_TOOLBAR_VISIBLE = 'k-toolbar-last-visible', CLICK = 'click', TOGGLE = 'toggle', OPEN = 'open', CLOSE = 'close', OVERFLOW_OPEN = 'overflowOpen', OVERFLOW_CLOSE = 'overflowClose', OVERFLOW_NEVER = 'never', OVERFLOW_AUTO = 'auto', OVERFLOW_ALWAYS = 'always', OVERFLOW_HIDDEN = 'k-overflow-hidden', OPTION_LIST_SUFFIX = '_optionlist', KENDO_UID_ATTR = kendo.attr('uid');\n kendo.toolbar = {};\n var components = {\n overflowAnchor: '<div tabindex=\"0\" class=\"k-overflow-anchor k-button\"></div>',\n overflowContainer: '<ul class=\"k-overflow-container k-list-container\"></ul>'\n };\n kendo.toolbar.registerComponent = function (name, toolbar, overflow) {\n components[name] = {\n toolbar: toolbar,\n overflow: overflow\n };\n };\n var Item = kendo.Class.extend({\n addOverflowAttr: function () {\n this.element.attr(kendo.attr('overflow'), this.options.overflow || OVERFLOW_AUTO);\n },\n addUidAttr: function () {\n this.element.attr(KENDO_UID_ATTR, this.options.uid);\n },\n addIdAttr: function () {\n if (this.options.id) {\n this.element.attr('id', this.options.id);\n }\n },\n addOverflowIdAttr: function () {\n if (this.options.id) {\n this.element.attr('id', this.options.id + '_overflow');\n }\n },\n attributes: function () {\n if (this.options.attributes) {\n this.element.attr(this.options.attributes);\n }\n },\n show: function () {\n this.element.removeClass(STATE_HIDDEN).show();\n this.options.hidden = false;\n },\n hide: function () {\n this.element.addClass(STATE_HIDDEN).hide();\n if (this.overflow && this.overflowHidden) {\n this.overflowHidden();\n }\n this.options.hidden = true;\n },\n remove: function () {\n this.element.remove();\n },\n enable: function (isEnabled) {\n if (isEnabled === undefined) {\n isEnabled = true;\n }\n this.element.toggleClass(STATE_DISABLED, !isEnabled);\n this.options.enable = isEnabled;\n },\n twin: function () {\n var uid = this.element.attr(KENDO_UID_ATTR);\n if (this.overflow && this.options.splitContainerId) {\n return $('#' + this.options.splitContainerId).find('[' + KENDO_UID_ATTR + '=\\'' + uid + '\\']').data(this.options.type);\n } else if (this.overflow) {\n return this.toolbar.element.find('[' + KENDO_UID_ATTR + '=\\'' + uid + '\\']').data(this.options.type);\n } else if (this.toolbar.options.resizable) {\n return this.toolbar.popup.element.find('[' + KENDO_UID_ATTR + '=\\'' + uid + '\\']').data(this.options.type);\n }\n }\n });\n kendo.toolbar.Item = Item;\n var Button = Item.extend({\n init: function (options, toolbar) {\n var element = options.useButtonTag ? $('<button tabindex=\"0\"></button>') : $('<a href tabindex=\"0\"></a>');\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n this.attributes();\n if (options.primary) {\n element.addClass(PRIMARY);\n }\n if (options.togglable) {\n element.addClass(TOGGLE_BUTTON);\n this.toggle(options.selected);\n }\n if (options.url !== undefined && !options.useButtonTag) {\n element.attr('href', options.url);\n if (options.mobile) {\n element.attr(kendo.attr('role'), 'button');\n }\n }\n if (options.group) {\n element.attr(kendo.attr('group'), options.group);\n this.group = this.toolbar.addToGroup(this, options.group);\n }\n if (!options.togglable && options.click && isFunction(options.click)) {\n this.clickHandler = options.click;\n }\n if (options.togglable && options.toggle && isFunction(options.toggle)) {\n this.toggleHandler = options.toggle;\n }\n },\n toggle: function (state, propagate) {\n state = !!state;\n if (this.group && state) {\n this.group.select(this);\n } else if (!this.group) {\n this.select(state);\n }\n if (propagate && this.twin()) {\n this.twin().toggle(state);\n }\n },\n getParentGroup: function () {\n if (this.options.isChild) {\n return this.element.closest('.' + BUTTON_GROUP).data('buttonGroup');\n }\n },\n _addGraphics: function () {\n var element = this.element, icon = this.options.icon, spriteCssClass = this.options.spriteCssClass, imageUrl = this.options.imageUrl, isEmpty, span, img;\n if (spriteCssClass || imageUrl || icon) {\n isEmpty = true;\n element.contents().filter(function () {\n return !$(this).hasClass('k-sprite') && !$(this).hasClass(ICON) && !$(this).hasClass('k-image');\n }).each(function (idx, el) {\n if (el.nodeType == 1 || el.nodeType == 3 && $.trim(el.nodeValue).length > 0) {\n isEmpty = false;\n }\n });\n if (isEmpty) {\n element.addClass(BUTTON_ICON);\n } else {\n element.addClass(BUTTON_ICON_TEXT);\n }\n }\n if (icon) {\n span = element.children('span.' + ICON).first();\n if (!span[0]) {\n span = $('<span class=\"' + ICON + '\"></span>').prependTo(element);\n }\n span.addClass(ICON_PREFIX + icon);\n } else if (spriteCssClass) {\n span = element.children('span.k-sprite').first();\n if (!span[0]) {\n span = $('<span class=\"k-sprite ' + ICON + '\"></span>').prependTo(element);\n }\n span.addClass(spriteCssClass);\n } else if (imageUrl) {\n img = element.children('img.k-image').first();\n if (!img[0]) {\n img = $('<img alt=\"icon\" class=\"k-image\" />').prependTo(element);\n }\n img.attr('src', imageUrl);\n }\n }\n });\n kendo.toolbar.Button = Button;\n var ToolBarButton = Button.extend({\n init: function (options, toolbar) {\n Button.fn.init.call(this, options, toolbar);\n var element = this.element;\n element.addClass(BUTTON);\n this.addIdAttr();\n if (options.align) {\n element.addClass('k-align-' + options.align);\n }\n if (options.showText != 'overflow' && options.text) {\n if (options.mobile) {\n element.html('<span class=\"km-text\">' + options.text + '</span>');\n } else {\n element.html(options.text);\n }\n }\n options.hasIcon = options.showIcon != 'overflow' && (options.icon || options.spriteCssClass || options.imageUrl);\n if (options.hasIcon) {\n this._addGraphics();\n }\n this.addUidAttr();\n this.addOverflowAttr();\n this.enable(options.enable);\n if (options.hidden) {\n this.hide();\n }\n this.element.data({\n type: 'button',\n button: this\n });\n },\n select: function (selected) {\n if (selected === undefined) {\n selected = false;\n }\n this.element.toggleClass(STATE_ACTIVE, selected);\n this.options.selected = selected;\n }\n });\n kendo.toolbar.ToolBarButton = ToolBarButton;\n var OverflowButton = Button.extend({\n init: function (options, toolbar) {\n this.overflow = true;\n Button.fn.init.call(this, $.extend({}, options), toolbar);\n var element = this.element;\n if (options.showText != 'toolbar' && options.text) {\n if (options.mobile) {\n element.html('<span class=\"km-text\">' + options.text + '</span>');\n } else {\n element.html('<span class=\"k-text\">' + options.text + '</span>');\n }\n }\n options.hasIcon = options.showIcon != 'toolbar' && (options.icon || options.spriteCssClass || options.imageUrl);\n if (options.hasIcon) {\n this._addGraphics();\n }\n if (!options.isChild) {\n this._wrap();\n }\n this.addOverflowIdAttr();\n this.attributes();\n this.addUidAttr();\n this.addOverflowAttr();\n this.enable(options.enable);\n element.addClass(OVERFLOW_BUTTON + ' ' + BUTTON);\n if (options.hidden) {\n this.hide();\n }\n if (options.togglable) {\n this.toggle(options.selected);\n }\n this.element.data({\n type: 'button',\n button: this\n });\n },\n _wrap: function () {\n this.element = this.element.wrap('<li></li>').parent();\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n },\n select: function (selected) {\n if (selected === undefined) {\n selected = false;\n }\n if (this.options.isChild) {\n this.element.toggleClass(STATE_ACTIVE, selected);\n } else {\n this.element.find('.k-button').toggleClass(STATE_ACTIVE, selected);\n }\n this.options.selected = selected;\n }\n });\n kendo.toolbar.OverflowButton = OverflowButton;\n kendo.toolbar.registerComponent('button', ToolBarButton, OverflowButton);\n var ButtonGroup = Item.extend({\n createButtons: function (buttonConstructor) {\n var options = this.options;\n var items = options.buttons || [];\n var item;\n for (var i = 0; i < items.length; i++) {\n if (!items[i].uid) {\n items[i].uid = kendo.guid();\n }\n item = new buttonConstructor($.extend({\n mobile: options.mobile,\n isChild: true,\n type: 'button'\n }, items[i]), this.toolbar);\n item.element.appendTo(this.element);\n }\n },\n refresh: function () {\n this.element.children().filter(':not(\\'.' + STATE_HIDDEN + '\\'):first').addClass(GROUP_START);\n this.element.children().filter(':not(\\'.' + STATE_HIDDEN + '\\'):last').addClass(GROUP_END);\n }\n });\n kendo.toolbar.ButtonGroup = ButtonGroup;\n var ToolBarButtonGroup = ButtonGroup.extend({\n init: function (options, toolbar) {\n var element = this.element = $('<div></div>');\n this.options = options;\n this.toolbar = toolbar;\n this.addIdAttr();\n if (options.align) {\n element.addClass('k-align-' + options.align);\n }\n this.createButtons(ToolBarButton);\n this.attributes();\n this.addUidAttr();\n this.addOverflowAttr();\n this.refresh();\n element.addClass(BUTTON_GROUP);\n this.element.data({\n type: 'buttonGroup',\n buttonGroup: this\n });\n }\n });\n kendo.toolbar.ToolBarButtonGroup = ToolBarButtonGroup;\n var OverflowButtonGroup = ButtonGroup.extend({\n init: function (options, toolbar) {\n var element = this.element = $('<li></li>');\n this.options = options;\n this.toolbar = toolbar;\n this.overflow = true;\n this.addOverflowIdAttr();\n this.createButtons(OverflowButton);\n this.attributes();\n this.addUidAttr();\n this.addOverflowAttr();\n this.refresh();\n element.addClass((options.mobile ? '' : BUTTON_GROUP) + ' k-overflow-group');\n this.element.data({\n type: 'buttonGroup',\n buttonGroup: this\n });\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n kendo.toolbar.OverflowButtonGroup = OverflowButtonGroup;\n kendo.toolbar.registerComponent('buttonGroup', ToolBarButtonGroup, OverflowButtonGroup);\n var ToolBarSplitButton = Item.extend({\n init: function (options, toolbar) {\n var element = this.element = $('<div class=\"' + SPLIT_BUTTON + '\" tabindex=\"0\"></div>');\n this.options = options;\n this.toolbar = toolbar;\n this.mainButton = new ToolBarButton($.extend({}, options, { hidden: false }), toolbar);\n this.arrowButton = $('<a class=\"' + BUTTON + ' ' + SPLIT_BUTTON_ARROW + '\"><span class=\"' + (options.mobile ? 'km-icon km-arrowdown' : 'k-icon k-i-arrow-60-down') + '\"></span></a>');\n this.popupElement = $('<ul class=\"' + LIST_CONTAINER + '\"></ul>');\n this.mainButton.element.removeAttr('href tabindex').appendTo(element);\n this.arrowButton.appendTo(element);\n this.popupElement.appendTo(element);\n if (options.align) {\n element.addClass('k-align-' + options.align);\n }\n if (!options.id) {\n options.id = options.uid;\n }\n element.attr('id', options.id + '_wrapper');\n this.addOverflowAttr();\n this.addUidAttr();\n this.createMenuButtons();\n this.createPopup();\n this._navigatable();\n this.mainButton.main = true;\n this.enable(options.enable);\n if (options.hidden) {\n this.hide();\n }\n element.data({\n type: 'splitButton',\n splitButton: this,\n kendoPopup: this.popup\n });\n },\n _navigatable: function () {\n var that = this;\n that.popupElement.on('keydown', '.' + BUTTON, function (e) {\n var li = $(e.target).parent();\n e.preventDefault();\n if (e.keyCode === keys.ESC || e.keyCode === keys.TAB || e.altKey && e.keyCode === keys.UP) {\n that.toggle();\n that.focus();\n } else if (e.keyCode === keys.DOWN) {\n findFocusableSibling(li, 'next').focus();\n } else if (e.keyCode === keys.UP) {\n findFocusableSibling(li, 'prev').focus();\n } else if (e.keyCode === keys.SPACEBAR || e.keyCode === keys.ENTER) {\n that.toolbar.userEvents.trigger('tap', { target: $(e.target) });\n } else if (e.keyCode === keys.HOME) {\n li.parent().find(':kendoFocusable').first().focus();\n } else if (e.keyCode === keys.END) {\n li.parent().find(':kendoFocusable').last().focus();\n }\n });\n },\n createMenuButtons: function () {\n var options = this.options;\n var items = options.menuButtons;\n var item;\n for (var i = 0; i < items.length; i++) {\n item = new ToolBarButton($.extend({\n mobile: options.mobile,\n type: 'button',\n click: options.click\n }, items[i]), this.toolbar);\n item.element.wrap('<li></li>').parent().appendTo(this.popupElement);\n }\n },\n createPopup: function () {\n var that = this;\n var options = this.options;\n var element = this.element;\n this.popupElement.attr('id', options.id + OPTION_LIST_SUFFIX).attr(KENDO_UID_ATTR, options.rootUid);\n if (options.mobile) {\n this.popupElement = actionSheetWrap(this.popupElement);\n }\n this.popup = this.popupElement.kendoPopup({\n appendTo: options.mobile ? $(options.mobile).children('.km-pane') : null,\n anchor: element,\n isRtl: this.toolbar._isRtl,\n copyAnchorStyles: false,\n animation: options.animation,\n open: function (e) {\n var isDefaultPrevented = that.toolbar.trigger(OPEN, { target: element });\n if (isDefaultPrevented) {\n e.preventDefault();\n return;\n }\n that.adjustPopupWidth(e.sender);\n },\n activate: function () {\n this.element.find(':kendoFocusable').first().focus();\n },\n close: function (e) {\n var isDefaultPrevented = that.toolbar.trigger(CLOSE, { target: element });\n if (isDefaultPrevented) {\n e.preventDefault();\n }\n element.focus();\n }\n }).data('kendoPopup');\n this.popup.element.on(CLICK, 'a.k-button', preventClick);\n },\n adjustPopupWidth: function (popup) {\n var anchor = popup.options.anchor, computedWidth = outerWidth(anchor), width;\n kendo.wrap(popup.element).addClass('k-split-wrapper');\n if (popup.element.css('box-sizing') !== 'border-box') {\n width = computedWidth - (outerWidth(popup.element) - popup.element.width());\n } else {\n width = computedWidth;\n }\n popup.element.css({\n fontFamily: anchor.css('font-family'),\n 'min-width': width\n });\n },\n remove: function () {\n this.popup.element.off(CLICK, 'a.k-button');\n this.popup.destroy();\n this.element.remove();\n },\n toggle: function () {\n if (this.options.enable || this.popup.visible()) {\n this.popup.toggle();\n }\n },\n enable: function (isEnabled) {\n if (isEnabled === undefined) {\n isEnabled = true;\n }\n this.mainButton.enable(isEnabled);\n this.element.toggleClass(STATE_DISABLED, !isEnabled);\n this.options.enable = isEnabled;\n },\n focus: function () {\n this.element.focus();\n },\n hide: function () {\n if (this.popup) {\n this.popup.close();\n }\n this.element.addClass(STATE_HIDDEN).hide();\n this.options.hidden = true;\n },\n show: function () {\n this.element.removeClass(STATE_HIDDEN).hide();\n this.options.hidden = false;\n }\n });\n kendo.toolbar.ToolBarSplitButton = ToolBarSplitButton;\n var OverflowSplitButton = Item.extend({\n init: function (options, toolbar) {\n var element = this.element = $('<li class=\"' + SPLIT_BUTTON + '\"></li>'), items = options.menuButtons, item, splitContainerId;\n this.options = options;\n this.toolbar = toolbar;\n this.overflow = true;\n splitContainerId = (options.id || options.uid) + OPTION_LIST_SUFFIX;\n this.mainButton = new OverflowButton($.extend({}, options));\n this.mainButton.element.appendTo(element);\n for (var i = 0; i < items.length; i++) {\n item = new OverflowButton($.extend({\n mobile: options.mobile,\n type: 'button',\n splitContainerId: splitContainerId\n }, items[i]), this.toolbar);\n item.element.appendTo(element);\n }\n this.addUidAttr();\n this.addOverflowAttr();\n this.mainButton.main = true;\n element.data({\n type: 'splitButton',\n splitButton: this\n });\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n kendo.toolbar.OverflowSplitButton = OverflowSplitButton;\n kendo.toolbar.registerComponent('splitButton', ToolBarSplitButton, OverflowSplitButton);\n var ToolBarSeparator = Item.extend({\n init: function (options, toolbar) {\n var element = this.element = $('<div> </div>');\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n this.attributes();\n this.addIdAttr();\n this.addUidAttr();\n this.addOverflowAttr();\n element.addClass(SEPARATOR);\n element.data({\n type: 'separator',\n separator: this\n });\n }\n });\n var OverflowSeparator = Item.extend({\n init: function (options, toolbar) {\n var element = this.element = $('<li> </li>');\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n this.overflow = true;\n this.attributes();\n this.addUidAttr();\n this.addOverflowIdAttr();\n element.addClass(SEPARATOR);\n element.data({\n type: 'separator',\n separator: this\n });\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n kendo.toolbar.registerComponent('separator', ToolBarSeparator, OverflowSeparator);\n var ToolBarSpacer = Item.extend({\n init: function (options, toolbar) {\n var element = this.element = $('<div> </div>');\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n element.addClass(SPACER_CLASS);\n element.data({ type: SPACER });\n }\n });\n kendo.toolbar.registerComponent(SPACER, ToolBarSpacer);\n var TemplateItem = Item.extend({\n init: function (template, options, toolbar) {\n var element = isFunction(template) ? template(options) : template;\n if (!(element instanceof jQuery)) {\n element = $('<div></div>').html(element);\n } else {\n element = element.wrap('<div></div>').parent();\n }\n this.element = element;\n this.options = options;\n this.options.type = 'template';\n this.toolbar = toolbar;\n this.attributes();\n this.addUidAttr();\n this.addIdAttr();\n this.addOverflowAttr();\n element.data({\n type: 'template',\n template: this\n });\n }\n });\n kendo.toolbar.TemplateItem = TemplateItem;\n var OverflowTemplateItem = Item.extend({\n init: function (template, options, toolbar) {\n var element = isFunction(template) ? $(template(options)) : $(template);\n if (!(element instanceof jQuery)) {\n element = $('<li></li>').html(element);\n } else {\n element = element.wrap('<li></li>').parent();\n }\n this.element = element;\n this.options = options;\n this.options.type = 'template';\n this.toolbar = toolbar;\n this.overflow = true;\n this.attributes();\n this.addUidAttr();\n this.addOverflowIdAttr();\n this.addOverflowAttr();\n element.data({\n type: 'template',\n template: this\n });\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n kendo.toolbar.OverflowTemplateItem = OverflowTemplateItem;\n function toggleActive(e) {\n if (!e.target.is('.k-toggle-button')) {\n e.target.toggleClass(STATE_ACTIVE, e.type == 'press');\n }\n }\n function actionSheetWrap(element) {\n element = $(element);\n return element.hasClass('km-actionsheet') ? element.closest('.km-popup-wrapper') : element.addClass('km-widget km-actionsheet').wrap('<div class=\"km-actionsheet-wrapper km-actionsheet-tablet km-widget km-popup\"></div>').parent().wrap('<div class=\"km-popup-wrapper k-popup\"></div>').parent();\n }\n function preventClick(e) {\n if ($(e.target).closest('a.k-button').length) {\n e.preventDefault();\n }\n }\n function findFocusableSibling(element, dir) {\n var getSibling = dir === 'next' ? $.fn.next : $.fn.prev;\n var getter = dir === 'next' ? $.fn.first : $.fn.last;\n var candidate = getSibling.call(element);\n if (!candidate.length && element.is('.' + OVERFLOW_ANCHOR)) {\n return element;\n }\n if (candidate.is(':kendoFocusable') || !candidate.length) {\n return candidate;\n }\n if (candidate.find(':kendoFocusable').length) {\n return getter.call(candidate.find(':kendoFocusable'));\n }\n return findFocusableSibling(candidate, dir);\n }\n var Group = Class.extend({\n init: function (name) {\n this.name = name;\n this.buttons = [];\n },\n add: function (button) {\n this.buttons[this.buttons.length] = button;\n },\n remove: function (button) {\n var index = $.inArray(button, this.buttons);\n this.buttons.splice(index, 1);\n },\n select: function (button) {\n var tmp;\n for (var i = 0; i < this.buttons.length; i++) {\n tmp = this.buttons[i];\n tmp.select(false);\n }\n button.select(true);\n if (button.twin()) {\n button.twin().select(true);\n }\n }\n });\n var ToolBar = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.wrapper = that.element;\n element.addClass(TOOLBAR + ' k-widget');\n this.uid = kendo.guid();\n this._isRtl = kendo.support.isRtl(element);\n this._groups = {};\n element.attr(KENDO_UID_ATTR, this.uid);\n that.isMobile = typeof options.mobile === 'boolean' ? options.mobile : that.element.closest('.km-root')[0];\n that.animation = that.isMobile ? { open: { effects: 'fade' } } : {};\n if (that.isMobile) {\n element.addClass('km-widget');\n ICON = 'km-icon';\n ICON_PREFIX = 'km-';\n BUTTON = 'km-button';\n BUTTON_GROUP = 'km-buttongroup';\n STATE_ACTIVE = 'km-state-active';\n STATE_DISABLED = 'km-state-disabled';\n }\n if (options.resizable) {\n that._renderOverflow();\n element.addClass(RESIZABLE_TOOLBAR);\n that.overflowUserEvents = new kendo.UserEvents(that.element, {\n threshold: 5,\n allowSelection: true,\n filter: '.' + OVERFLOW_ANCHOR,\n tap: proxy(that._toggleOverflow, that)\n });\n that._resizeHandler = kendo.onResize(function () {\n that.resize();\n });\n } else {\n that.popup = { element: $([]) };\n }\n if (options.items && options.items.length) {\n for (var i = 0; i < options.items.length; i++) {\n that.add(options.items[i]);\n }\n if (options.resizable) {\n that._shrink(that.element.innerWidth());\n }\n }\n that.userEvents = new kendo.UserEvents(document, {\n threshold: 5,\n allowSelection: true,\n filter: '[' + KENDO_UID_ATTR + '=' + this.uid + '] a.' + BUTTON + ', ' + '[' + KENDO_UID_ATTR + '=' + this.uid + '] .' + OVERFLOW_BUTTON,\n tap: proxy(that._buttonClick, that),\n press: toggleActive,\n release: toggleActive\n });\n that.element.on(CLICK, 'a.k-button', preventClick);\n that._navigatable();\n if (options.resizable) {\n that.popup.element.on(CLICK, +'a.k-button', preventClick);\n }\n if (options.resizable) {\n this._toggleOverflowAnchor();\n }\n kendo.notify(that);\n },\n events: [\n CLICK,\n TOGGLE,\n OPEN,\n CLOSE,\n OVERFLOW_OPEN,\n OVERFLOW_CLOSE\n ],\n options: {\n name: 'ToolBar',\n items: [],\n resizable: true,\n mobile: null\n },\n addToGroup: function (button, groupName) {\n var group;\n if (!this._groups[groupName]) {\n group = this._groups[groupName] = new Group();\n } else {\n group = this._groups[groupName];\n }\n group.add(button);\n return group;\n },\n destroy: function () {\n var that = this;\n that.element.find('.' + SPLIT_BUTTON).each(function (idx, element) {\n $(element).data('kendoPopup').destroy();\n });\n that.element.off(CLICK, 'a.k-button');\n that.userEvents.destroy();\n if (that.options.resizable) {\n kendo.unbindResize(that._resizeHandler);\n that.overflowUserEvents.destroy();\n that.popup.element.off(CLICK, 'a.k-button');\n that.popup.destroy();\n }\n Widget.fn.destroy.call(that);\n },\n add: function (options) {\n var component = components[options.type], template = options.template, tool, that = this, itemClasses = that.isMobile ? '' : 'k-item k-state-default', overflowTemplate = options.overflowTemplate, overflowTool;\n $.extend(options, {\n uid: kendo.guid(),\n animation: that.animation,\n mobile: that.isMobile,\n rootUid: that.uid\n });\n if (options.menuButtons) {\n for (var i = 0; i < options.menuButtons.length; i++) {\n $.extend(options.menuButtons[i], { uid: kendo.guid() });\n }\n }\n if (template && !overflowTemplate || options.type === SPACER) {\n options.overflow = OVERFLOW_NEVER;\n } else if (!options.overflow) {\n options.overflow = OVERFLOW_AUTO;\n }\n if (options.overflow !== OVERFLOW_NEVER && that.options.resizable) {\n if (overflowTemplate) {\n overflowTool = new OverflowTemplateItem(overflowTemplate, options, that);\n } else if (component) {\n overflowTool = new component.overflow(options, that);\n overflowTool.element.addClass(itemClasses);\n }\n if (overflowTool) {\n if (options.overflow === OVERFLOW_AUTO) {\n overflowTool.overflowHidden();\n }\n overflowTool.element.appendTo(that.popup.container);\n that.angular('compile', function () {\n return { elements: overflowTool.element.get() };\n });\n }\n }\n if (options.overflow !== OVERFLOW_ALWAYS) {\n if (template) {\n tool = new TemplateItem(template, options, that);\n } else if (component) {\n tool = new component.toolbar(options, that);\n }\n if (tool) {\n tool.element.appendTo(that.element);\n that.angular('compile', function () {\n return { elements: tool.element.get() };\n });\n }\n }\n },\n _getItem: function (candidate) {\n var element, toolbarItem, overflowItem, isResizable = this.options.resizable, type;\n element = this.element.find(candidate);\n if (!element.length) {\n element = $('.k-split-container[data-uid=' + this.uid + ']').find(candidate);\n }\n type = element.length ? element.data('type') : '';\n toolbarItem = element.data(type);\n if (toolbarItem) {\n if (toolbarItem.main) {\n element = element.parent('.' + SPLIT_BUTTON);\n type = 'splitButton';\n toolbarItem = element.data(type);\n }\n if (isResizable) {\n overflowItem = toolbarItem.twin();\n }\n } else if (isResizable) {\n element = this.popup.element.find(candidate);\n type = element.length ? element.data('type') : '';\n overflowItem = element.data(type);\n if (overflowItem && overflowItem.main) {\n element = element.parent('.' + SPLIT_BUTTON);\n type = 'splitButton';\n overflowItem = element.data(type);\n }\n }\n return {\n type: type,\n toolbar: toolbarItem,\n overflow: overflowItem\n };\n },\n remove: function (candidate) {\n var item = this._getItem(candidate);\n if (item.toolbar) {\n item.toolbar.remove();\n }\n if (item.overflow) {\n item.overflow.remove();\n }\n this.resize(true);\n },\n hide: function (candidate) {\n var item = this._getItem(candidate);\n var buttonGroupInstance;\n if (item.toolbar) {\n if (item.toolbar.options.type === 'button' && item.toolbar.options.isChild) {\n buttonGroupInstance = item.toolbar.getParentGroup();\n item.toolbar.hide();\n if (buttonGroupInstance) {\n buttonGroupInstance.refresh();\n }\n } else if (!item.toolbar.options.hidden) {\n item.toolbar.hide();\n }\n }\n if (item.overflow) {\n if (item.overflow.options.type === 'button' && item.overflow.options.isChild) {\n buttonGroupInstance = item.overflow.getParentGroup();\n item.overflow.hide();\n if (buttonGroupInstance) {\n buttonGroupInstance.refresh();\n }\n } else if (!item.overflow.options.hidden) {\n item.overflow.hide();\n }\n }\n this.resize(true);\n },\n show: function (candidate) {\n var item = this._getItem(candidate);\n if (item.toolbar) {\n if (item.toolbar.options.type === 'button' && item.toolbar.options.isChild) {\n item.toolbar.show();\n item.toolbar.getParentGroup().refresh();\n } else if (item.toolbar.options.hidden) {\n item.toolbar.show();\n }\n }\n if (item.overflow) {\n if (item.overflow.options.type === 'button' && item.overflow.options.isChild) {\n item.toolbar.show();\n item.overflow.getParentGroup().refresh();\n } else if (item.overflow.options.hidden) {\n item.overflow.show();\n }\n }\n this.resize(true);\n },\n enable: function (element, enable) {\n var item = this._getItem(element);\n if (typeof enable == 'undefined') {\n enable = true;\n }\n if (item.toolbar) {\n item.toolbar.enable(enable);\n }\n if (item.overflow) {\n item.overflow.enable(enable);\n }\n },\n getSelectedFromGroup: function (groupName) {\n return this.element.find('.' + TOGGLE_BUTTON + '[data-group=\\'' + groupName + '\\']').filter('.' + STATE_ACTIVE);\n },\n toggle: function (button, checked) {\n var element = $(button), item = element.data('button');\n if (item.options.togglable) {\n if (checked === undefined) {\n checked = true;\n }\n item.toggle(checked, true);\n }\n },\n _renderOverflow: function () {\n var that = this, overflowContainer = components.overflowContainer, isRtl = that._isRtl, horizontalDirection = isRtl ? 'left' : 'right';\n that.overflowAnchor = $(components.overflowAnchor).addClass(BUTTON);\n that.element.append(that.overflowAnchor);\n if (that.isMobile) {\n that.overflowAnchor.append('<span class=\"km-icon km-more\"></span>');\n overflowContainer = actionSheetWrap(overflowContainer);\n } else {\n that.overflowAnchor.append('<span class=\"k-icon k-i-more-vertical\"></span>');\n }\n that.popup = new kendo.ui.Popup(overflowContainer, {\n origin: 'bottom ' + horizontalDirection,\n position: 'top ' + horizontalDirection,\n anchor: that.overflowAnchor,\n isRtl: isRtl,\n animation: that.animation,\n appendTo: that.isMobile ? $(that.isMobile).children('.km-pane') : null,\n copyAnchorStyles: false,\n open: function (e) {\n var wrapper = kendo.wrap(that.popup.element).addClass('k-overflow-wrapper');\n if (!that.isMobile) {\n wrapper.css('margin-left', (isRtl ? -1 : 1) * ((outerWidth(wrapper) - wrapper.width()) / 2 + 1));\n } else {\n that.popup.container.css('max-height', parseFloat($('.km-content:visible').innerHeight()) - 15 + 'px');\n }\n if (that.trigger(OVERFLOW_OPEN)) {\n e.preventDefault();\n }\n },\n activate: function () {\n this.element.find(':kendoFocusable').first().focus();\n },\n close: function (e) {\n if (that.trigger(OVERFLOW_CLOSE)) {\n e.preventDefault();\n }\n this.element.focus();\n }\n });\n that.popup.element.on('keydown', '.' + BUTTON, function (e) {\n var target = $(e.target), li = target.parent(), isComplexTool = li.is('.' + BUTTON_GROUP) || li.is('.' + SPLIT_BUTTON), element;\n e.preventDefault();\n if (e.keyCode === keys.ESC || e.keyCode === keys.TAB || e.altKey && e.keyCode === keys.UP) {\n that._toggleOverflow();\n that.overflowAnchor.focus();\n } else if (e.keyCode === keys.DOWN) {\n element = !isComplexTool || isComplexTool && target.is(':last-child') ? li : target;\n findFocusableSibling(element, 'next').focus();\n } else if (e.keyCode === keys.UP) {\n element = !isComplexTool || isComplexTool && target.is(':first-child') ? li : target;\n findFocusableSibling(element, 'prev').focus();\n } else if (e.keyCode === keys.SPACEBAR || e.keyCode === keys.ENTER) {\n that.userEvents.trigger('tap', { target: $(e.target) });\n that.overflowAnchor.focus();\n } else if (e.keyCode === keys.HOME) {\n li.parent().find(':kendoFocusable').first().focus();\n } else if (e.keyCode === keys.END) {\n li.parent().find(':kendoFocusable').last().focus();\n }\n });\n if (that.isMobile) {\n that.popup.container = that.popup.element.find('.' + OVERFLOW_CONTAINER);\n } else {\n that.popup.container = that.popup.element;\n }\n that.popup.container.attr(KENDO_UID_ATTR, this.uid);\n },\n _toggleOverflowAnchor: function () {\n var hasVisibleChildren = false;\n var paddingEnd = this._isRtl ? 'padding-left' : 'padding-right';\n if (this.options.mobile) {\n hasVisibleChildren = this.popup.element.find('.' + OVERFLOW_CONTAINER).children(':not(.' + OVERFLOW_HIDDEN + ', .' + POPUP + ')').length > 0;\n } else {\n hasVisibleChildren = this.popup.element.children(':not(.' + OVERFLOW_HIDDEN + ', .' + POPUP + ')').length > 0;\n }\n if (hasVisibleChildren) {\n this.overflowAnchor.css({\n visibility: 'visible',\n width: ''\n });\n this.wrapper.css(paddingEnd, this.overflowAnchor.outerWidth(true));\n } else {\n this.overflowAnchor.css({\n visibility: 'hidden',\n width: '1px'\n });\n this.wrapper.css(paddingEnd, '');\n }\n },\n _buttonClick: function (e) {\n var that = this, popup, target, item, splitContainer, isSplitButtonArrow = e.target.closest('.' + SPLIT_BUTTON_ARROW).length, handler, eventData, urlTarget;\n e.preventDefault();\n if (isSplitButtonArrow) {\n that._toggle(e);\n return;\n }\n target = $(e.target).closest('.' + BUTTON, that.element);\n if (target.hasClass(OVERFLOW_ANCHOR)) {\n return;\n }\n item = target.data('button');\n if (!item && that.popup) {\n target = $(e.target).closest('.' + OVERFLOW_BUTTON, that.popup.container);\n item = target.parent('li').data('button');\n }\n if (!item || !item.options.enable) {\n return;\n }\n if (item.options.togglable) {\n handler = isFunction(item.toggleHandler) ? item.toggleHandler : null;\n item.toggle(!item.options.selected, true);\n eventData = {\n target: target,\n group: item.options.group,\n checked: item.options.selected,\n id: item.options.id,\n item: item\n };\n if (handler) {\n handler.call(that, eventData);\n }\n that.trigger(TOGGLE, eventData);\n } else {\n handler = isFunction(item.clickHandler) ? item.clickHandler : null;\n eventData = {\n sender: that,\n target: target,\n id: item.options.id,\n item: item\n };\n if (handler) {\n handler.call(that, eventData);\n }\n that.trigger(CLICK, eventData);\n }\n if (item.options.url) {\n if (item.options.attributes && item.options.attributes.target) {\n urlTarget = item.options.attributes.target;\n }\n window.open(item.options.url, urlTarget || '_self');\n }\n if (target.hasClass(OVERFLOW_BUTTON)) {\n that.popup.close();\n }\n splitContainer = target.closest('.k-split-container');\n if (splitContainer[0]) {\n popup = splitContainer.data('kendoPopup');\n (popup ? popup : splitContainer.parents('.km-popup-wrapper').data('kendoPopup')).close();\n }\n },\n _navigatable: function () {\n var that = this;\n that.element.attr('tabindex', 0).on('focusin', function (ev) {\n var target = $(ev.target);\n var element = $(this).find(':kendoFocusable:first');\n if (!target.is('.' + TOOLBAR) || element.length === 0) {\n return;\n }\n if (element.is('.' + OVERFLOW_ANCHOR)) {\n element = findFocusableSibling(element, 'next');\n }\n if (element.length) {\n element[0].focus();\n }\n }).on('keydown', proxy(that._keydown, that));\n },\n _keydown: function (e) {\n var target = $(e.target), keyCode = e.keyCode, items = this.element.children(':not(.k-separator):visible'), direction = this._isRtl ? -1 : 1;\n if (keyCode === keys.TAB) {\n var element = target.parentsUntil(this.element).last(), lastHasFocus = false, firstHasFocus = false, isOnlyOverflowAnchor = false;\n if (!items.not('.' + OVERFLOW_ANCHOR).length) {\n isOnlyOverflowAnchor = true;\n }\n if (!element.length) {\n element = target;\n }\n if (element.is('.' + OVERFLOW_ANCHOR) && !isOnlyOverflowAnchor) {\n var lastItemNotOverflowAnchor = items.last();\n if (e.shiftKey) {\n e.preventDefault();\n }\n if (lastItemNotOverflowAnchor.is(':kendoFocusable')) {\n items.last().focus();\n } else {\n items.last().find(':kendoFocusable').last().focus();\n }\n }\n if (!e.shiftKey && items.index(element) === items.length - 1) {\n if (element.is('.' + BUTTON_GROUP)) {\n lastHasFocus = target.is(':last-child');\n } else {\n lastHasFocus = true;\n }\n }\n var isFirstTool = items.index(element) === items.not('.k-overflow-anchor').first().index();\n if (e.shiftKey && isFirstTool) {\n if (element.is('.' + BUTTON_GROUP)) {\n firstHasFocus = target.is(':first-child');\n } else {\n firstHasFocus = true;\n }\n }\n if (lastHasFocus && this.overflowAnchor && this.overflowAnchor.css('visibility') !== 'hidden' && !isOnlyOverflowAnchor) {\n e.preventDefault();\n this.overflowAnchor.focus();\n }\n if (firstHasFocus || isOnlyOverflowAnchor && e.shiftKey) {\n e.preventDefault();\n var prevFocusable = this._getPrevFocusable(this.wrapper);\n if (prevFocusable) {\n prevFocusable.focus();\n }\n }\n this._preventNextFocus = false;\n }\n if (e.altKey && keyCode === keys.DOWN) {\n var splitButton = $(document.activeElement).data('splitButton');\n var isOverflowAnchor = $(document.activeElement).is('.' + OVERFLOW_ANCHOR);\n if (splitButton) {\n splitButton.toggle();\n } else if (isOverflowAnchor) {\n this._toggleOverflow();\n }\n return;\n }\n if ((keyCode === keys.SPACEBAR || keyCode === keys.ENTER) && !target.is('input, checkbox')) {\n if (keyCode === keys.SPACEBAR) {\n e.preventDefault();\n }\n if (target.is('.' + SPLIT_BUTTON)) {\n target = target.children().first();\n this.userEvents.trigger('tap', { target: target });\n } else if (keyCode === keys.SPACEBAR) {\n this.userEvents.trigger('tap', { target: target });\n }\n return;\n }\n if (keyCode === keys.HOME) {\n if (target.is('.k-dropdown') || target.is('input')) {\n return;\n }\n if (this.overflowAnchor) {\n items.eq(1).focus();\n } else {\n items.first().focus();\n }\n e.preventDefault();\n } else if (keyCode === keys.END) {\n if (target.is('.k-dropdown') || target.is('input')) {\n return;\n }\n if (this.overflowAnchor && $(this.overflowAnchor).css('visibility') != 'hidden') {\n this.overflowAnchor.focus();\n } else {\n items.last().focus();\n }\n e.preventDefault();\n } else if (keyCode === keys.RIGHT && !this._preventNextFocus && !target.is('input, select, .k-dropdown, .k-colorpicker') && this._getNextElement(e.target, 1 * direction)) {\n this._getNextElement(e.target, 1 * direction).focus();\n e.preventDefault();\n } else if (keyCode === keys.LEFT && !this._preventNextFocus && !target.is('input, select, .k-dropdown, .k-colorpicker') && this._getNextElement(e.target, -1 * direction)) {\n this._getNextElement(e.target, -1 * direction).focus();\n e.preventDefault();\n }\n },\n _getNextElement: function (item, direction) {\n var items = this.element.children(':not(.k-separator):visible');\n var itemIndex = items.index(item) === -1 ? items.index(item.parentElement) : items.index(item);\n var startIndex = this.overflowAnchor ? 1 : 0;\n var directionNumber = direction;\n var searchIndex = direction === 1 ? items.length - 1 : startIndex;\n var index = direction === 1 ? startIndex : items.length - 1;\n var focusableItem = items[itemIndex + direction];\n this._preventNextFocus = false;\n if ($(item).closest('.' + BUTTON_GROUP).length && !$(item).is(direction === 1 ? ':last-child' : ':first-child')) {\n return $(item).closest('.' + BUTTON_GROUP).children()[$(item).closest('.' + BUTTON_GROUP).children().index(item) + direction];\n }\n if (this.overflowAnchor && item === this.overflowAnchor[0] && direction === -1) {\n focusableItem = items[items.length - 1];\n }\n if (itemIndex === searchIndex) {\n focusableItem = !this.overflowAnchor || this.overflowAnchor && $(this.overflowAnchor).css('visibility') === 'hidden' ? items[index] : this.overflowAnchor;\n }\n while (!$(focusableItem).is(':kendoFocusable')) {\n if (direction === -1 && $(focusableItem).closest('.' + BUTTON_GROUP).length) {\n focusableItem = $(focusableItem).children(':not(label, div)').last();\n } else {\n focusableItem = $(focusableItem).children(':not(label, div)').first();\n }\n if (!focusableItem.length) {\n directionNumber = directionNumber + direction;\n focusableItem = items[itemIndex + directionNumber];\n if (!focusableItem) {\n return this.overflowAnchor;\n }\n }\n this._preventNextFocus = $(focusableItem).closest('.' + BUTTON_GROUP).length ? false : true;\n }\n return focusableItem;\n },\n _getPrevFocusable: function (element) {\n if (element.is('html')) {\n return element;\n }\n var elementToFocus, prevElement, prevElements = element.prevAll();\n prevElements.each(function () {\n prevElement = $(this);\n if (prevElement.is(':kendoFocusable')) {\n elementToFocus = prevElement;\n return false;\n } else if (prevElement.find(':kendoFocusable').length > 0) {\n elementToFocus = prevElement.find(':kendoFocusable').last();\n return false;\n }\n });\n if (elementToFocus) {\n return elementToFocus;\n } else {\n return this._getPrevFocusable(element.parent());\n }\n },\n _toggle: function (e) {\n var splitButton = $(e.target).closest('.' + SPLIT_BUTTON).data('splitButton');\n e.preventDefault();\n if (!splitButton.options.enable) {\n return;\n }\n splitButton.toggle();\n },\n _toggleOverflow: function () {\n this.popup.toggle();\n },\n _resize: function (e) {\n var containerWidth = e.width;\n if (!this.options.resizable) {\n return;\n }\n this.popup.close();\n this._shrink(containerWidth);\n this._stretch(containerWidth);\n this._markVisibles();\n this._toggleOverflowAnchor();\n },\n _childrenWidth: function () {\n var childrenWidth = 0;\n this.element.children(':visible:not(.' + STATE_HIDDEN + ', .' + SPACER_CLASS + ')').each(function () {\n childrenWidth += outerWidth($(this), true);\n });\n return Math.ceil(childrenWidth);\n },\n _shrink: function (containerWidth) {\n var commandElement, visibleCommands;\n if (containerWidth < this._childrenWidth()) {\n visibleCommands = this.element.children(':visible:not([data-overflow=\\'never\\'], .' + OVERFLOW_ANCHOR + ')');\n for (var i = visibleCommands.length - 1; i >= 0; i--) {\n commandElement = visibleCommands.eq(i);\n if (containerWidth > this._childrenWidth()) {\n break;\n } else {\n this._hideItem(commandElement);\n }\n }\n }\n },\n _stretch: function (containerWidth) {\n var commandElement, hiddenCommands;\n if (containerWidth > this._childrenWidth()) {\n hiddenCommands = this.element.children(':hidden:not(\\'.' + STATE_HIDDEN + '\\')');\n for (var i = 0; i < hiddenCommands.length; i++) {\n commandElement = hiddenCommands.eq(i);\n if (containerWidth < this._childrenWidth() || !this._showItem(commandElement, containerWidth)) {\n break;\n }\n }\n }\n },\n _hideItem: function (item) {\n item.hide();\n if (this.popup) {\n this.popup.container.find('>li[data-uid=\\'' + item.data('uid') + '\\']').removeClass(OVERFLOW_HIDDEN);\n }\n },\n _showItem: function (item, containerWidth) {\n if (item.length && containerWidth > this._childrenWidth() + outerWidth(item, true)) {\n item.show();\n if (this.popup) {\n this.popup.container.find('>li[data-uid=\\'' + item.data('uid') + '\\']').addClass(OVERFLOW_HIDDEN);\n }\n return true;\n }\n return false;\n },\n _markVisibles: function () {\n var overflowItems = this.popup.container.children(), toolbarItems = this.element.children(':not(.k-overflow-anchor)'), visibleOverflowItems = overflowItems.filter(':not(.k-overflow-hidden)'), visibleToolbarItems = toolbarItems.filter(':visible');\n overflowItems.add(toolbarItems).removeClass(FIRST_TOOLBAR_VISIBLE + ' ' + LAST_TOOLBAR_VISIBLE);\n visibleOverflowItems.first().add(visibleToolbarItems.first()).addClass(FIRST_TOOLBAR_VISIBLE);\n visibleOverflowItems.last().add(visibleToolbarItems.last()).addClass(LAST_TOOLBAR_VISIBLE);\n }\n });\n kendo.ui.plugin(ToolBar);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.mediaplayer', [\n 'kendo.slider',\n 'kendo.toolbar',\n 'kendo.dropdownlist',\n 'kendo.tooltip'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'mediaplayer',\n name: 'MediaPlayer',\n category: 'web',\n description: '',\n depends: [\n 'slider',\n 'toolbar',\n 'dropdownlist',\n 'tooltip'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, END = 'end', PAUSE = 'pause', PLAY = 'play', READY = 'ready', TIMECHANGE = 'timeChange', VOLUMECHANGE = 'volumeChange', FULLSCREEN_ENTER = 'k-i-full-screen', FULLSCREEN_EXIT = 'k-i-full-screen-exit', MUTE = 'k-i-volume-off', LOW_VOLUME = 'k-i-volume-down', HIGH_VOLUME = 'k-i-volume-up', VIDEO_QUALITY = 'k-mediaplayer-quality', STATE_PLAY = 'k-i-play', STATE_PAUSE = 'k-i-pause', TITLEBAR = 'k-mediaplayer-titlebar', TITLE = 'k-title', TOOLBARWRAP = 'k-mediaplayer-toolbar-wrap', TOOLBAR = 'k-mediaplayer-toolbar', SLIDER = 'k-mediaplayer-seekbar', VOLUME_SLIDER = 'k-mediaplayer-volume', MEDIA = 'k-mediaplayer-media', OVERLAY = 'k-mediaplayer-overlay', YTPLAYER = 'k-mediaplayer-yt', DOT = '.', ui = kendo.ui, ns = '.kendoMediaPlayer', baseTime = new Date(1970, 0, 1), timeZoneSec = baseTime.getTimezoneOffset() * 60, Widget = kendo.ui.Widget, isArray = $.isArray, timeFormats = {\n shortTime: 'mm:ss',\n longTime: 'HH:mm:ss'\n }, template = kendo.template, proxy = $.proxy, keys = kendo.keys, templates = {\n htmlPlayer: '<video class=\\'' + MEDIA + '\\'> </video>',\n titleBar: template('<div class=\\'' + TITLEBAR + '\\' role=\\'heading\\'><span class=\\'' + TITLE + '\\'>Video Title</span></div>'),\n toolBar: '<div class=\\'' + TOOLBARWRAP + '\\'><div class=\\'' + TOOLBAR + '\\'></div></div>',\n youtubePlayer: '<div class=\\'' + YTPLAYER + '\\'> </div>',\n toolBarTime: '<span class=\\'k-mediaplayer-currenttime\\'>00:00:00</span> / <span class=\\'k-mediaplayer-duration\\'>00:00:00</span>',\n slider: '<input class=\\'' + SLIDER + '\\' value=\\'0\\' title=\\'seekbar\\' />',\n volumeSlider: '<input class=\\'' + VOLUME_SLIDER + '\\' title=\\'volume\\'/>',\n qualityDropDown: '<input class=\\'' + VIDEO_QUALITY + '\\' title=\\'video quality\\' />',\n toolTip: '#= kendo.toString(new Date(value), \\'HH:mm:ss\\') #'\n };\n var MediaPlayer = Widget.extend({\n init: function (element, options) {\n this.wrapper = $(element);\n Widget.fn.init.call(this, element, options);\n this.wrapper.addClass('k-mediaplayer k-widget');\n options = this.options;\n this._currentIndex = 0;\n this._createTitlebar();\n this._createToolbar();\n this._createDropDown();\n this._createSlider();\n this._createVolumeSlider();\n this._timers = {};\n this._aria();\n this._navigatable();\n if (options.fullScreen) {\n this.fullScreen(true);\n }\n if (options.media) {\n this.media(this.options.media);\n }\n kendo.notify(this);\n },\n events: [\n END,\n PAUSE,\n PLAY,\n READY,\n TIMECHANGE,\n VOLUMECHANGE\n ],\n options: {\n name: 'MediaPlayer',\n autoPlay: false,\n autoRepeat: false,\n volume: 100,\n fullScreen: false,\n mute: false,\n navigatable: false,\n forwardSeek: true,\n media: null,\n messages: {\n 'pause': 'Pause',\n 'play': 'Play',\n 'mute': 'Mute',\n 'unmute': 'Unmute',\n 'quality': 'Quality',\n 'fullscreen': 'Full Screen'\n }\n },\n _msToTime: function (ms) {\n var time = new Date(baseTime.getTime());\n time.setSeconds(ms);\n return time;\n },\n _timeToSec: function (time) {\n var curTime = new Date(time).getTime();\n return curTime / 1000;\n },\n _createTitlebar: function () {\n this._titleBar = this.wrapper.find(DOT + TITLEBAR);\n if (this._titleBar.length === 0) {\n this.wrapper.append(templates.titleBar);\n this._titleBar = this.wrapper.find(DOT + TITLEBAR);\n }\n },\n _createSlider: function () {\n var sliderElement = this.wrapper.find(DOT + SLIDER);\n if (!this._slider) {\n this._sliderDragChangeHandler = proxy(this._sliderDragChange, this);\n this._sliderDraggingHandler = proxy(this._sliderDragging, this);\n sliderElement = this.wrapper.find(DOT + SLIDER);\n this._slider = new ui.Slider(sliderElement[0], {\n smallStep: 1000,\n tickPlacement: 'none',\n showButtons: false,\n change: this._sliderDragChangeHandler,\n slide: this._sliderDraggingHandler,\n tooltip: { template: templates.toolTip },\n dragHandleTitle: ''\n });\n }\n },\n _createVolumeSlider: function () {\n var volumeSliderElement = this.wrapper.find(DOT + VOLUME_SLIDER);\n if (!this._volumeSlider) {\n this._volumeDraggingHandler = proxy(this._volumeDragging, this);\n this._volumeChangeHandler = proxy(this._volumeChange, this);\n volumeSliderElement.width(87);\n this._volumeSlider = new ui.Slider(volumeSliderElement[0], {\n smallStep: 1,\n min: 0,\n max: 100,\n value: this.options.volume,\n slide: this._volumeDraggingHandler,\n change: this._volumeChangeHandler,\n tickPlacement: 'none',\n showButtons: false,\n tooltip: { enabled: false },\n dragHandleTitle: ''\n });\n }\n },\n _resetTime: function () {\n if (this._youTubeVideo) {\n this._ytmedia.seekTo(0, true);\n } else {\n this._media.currentTime = 0;\n }\n this._mediaTimeUpdate();\n $.grep(this._toolBar.options.items, function (e) {\n return !!e.template;\n }).template = templates.toolBarTime;\n },\n _currentUrl: function () {\n var media = this.media();\n return isArray(media.source) ? media.source[this._currentIndex].url : media.source;\n },\n _isYouTubeUrl: function () {\n return !!this._currentUrl().match('youtube.com/|youtu.be/');\n },\n _setPlayerUrl: function () {\n var oldPlayer = this._youTubeVideo;\n this.stop();\n this._youTubeVideo = this._isYouTubeUrl();\n if (oldPlayer !== this._youTubeVideo) {\n this.wrapper.find(DOT + YTPLAYER).toggle();\n this.wrapper.find(DOT + MEDIA).toggle();\n }\n var initialized = this._media || this._ytmedia;\n this._initializePlayer();\n if (initialized) {\n this.mute(this.mute());\n this.volume(this.volume());\n }\n if (!this._youTubeVideo) {\n this._videoOverlay.show();\n this.wrapper.find(DOT + MEDIA + ' > source').remove();\n this.wrapper.find(DOT + MEDIA).attr('src', this._currentUrl());\n if (this.options.autoPlay) {\n this.play();\n }\n } else if (this._ytmedia) {\n if (this._videoOverlay) {\n this._videoOverlay.hide();\n }\n if (this.options.autoPlay) {\n this._ytmedia.loadVideoById(this._getMediaId());\n this._playStateToggle(true);\n } else {\n this._ytmedia.cueVideoById(this._getMediaId());\n this._playStateToggle(true);\n }\n }\n },\n _createToolbar: function () {\n var toolBarElement = this.wrapper.find(DOT + TOOLBAR);\n if (toolBarElement.length === 0) {\n this._toolbarClickHandler = proxy(this._toolbarClick, this);\n this.wrapper.append(templates.toolBar);\n toolBarElement = this.wrapper.find(DOT + TOOLBAR);\n toolBarElement.width(this.wrapper.find(DOT + MEDIA).width());\n this._toolBar = new ui.ToolBar(toolBarElement, {\n click: this._toolbarClickHandler,\n resizable: false,\n items: [\n {\n type: 'button',\n attributes: { 'class': 'k-play-button' },\n icon: 'play'\n },\n {\n template: templates.toolBarTime,\n attributes: { 'class': 'k-mediaplayer-currenttime-wrap' }\n },\n {\n type: 'separator',\n attributes: { 'class': 'k-toolbar-spacer' }\n },\n {\n type: 'button',\n attributes: { 'class': 'k-volume-button' },\n icon: 'volume-up'\n },\n {\n template: templates.volumeSlider,\n attributes: { 'class': 'k-mediaplayer-volume-wrap' }\n },\n {\n template: templates.qualityDropDown,\n attributes: { 'class': 'k-mediaplayer-quality-wrap' }\n },\n {\n type: 'button',\n attributes: { 'class': 'k-fullscreen-button' },\n icon: 'full-screen'\n }\n ]\n });\n this._toolBar.wrapper.off('keydown');\n toolBarElement.before(templates.slider);\n this._volumeButton = toolBarElement.find('.k-volume-button');\n this._fullscreenButton = toolBarElement.find('.k-fullscreen-button');\n this._volumeButton.attr('title', this.options.mute ? this.options.messages.unmute : this.options.messages.mute);\n this._volumeButton.attr('aria-label', this.options.mute ? this.options.messages.unmute : this.options.messages.mute);\n this._fullscreenButton.attr('title', this.options.messages.fullscreen);\n this._fullscreenButton.attr('aria-label', this.options.messages.fullscreen);\n toolBarElement.width('auto');\n this._currentTimeElement = toolBarElement.find('.k-mediaplayer-currenttime');\n this._durationElement = toolBarElement.find('.k-mediaplayer-duration');\n this._playButton = toolBarElement.find('.k-play-button');\n this._playButtonSpan = this._playButton.find('.k-i-play');\n if (this.options.autoPlay) {\n this._playStateToggle(true);\n }\n $([\n this._volumeButton[0],\n toolBarElement.find('.k-mediaplayer-volume-wrap')[0],\n toolBarElement.find('.k-mediaplayer-quality-wrap')[0],\n this._fullscreenButton[0]\n ]).wrapAll('<div class=\\'k-align-right\\' />');\n toolBarElement.find('.k-button').addClass('k-bare');\n }\n },\n _createDropDown: function () {\n var dropDownElement = this.wrapper.find(DOT + VIDEO_QUALITY);\n var media = this.media();\n if (typeof dropDownElement.data('kendoDropDownList') === 'undefined') {\n this._dropDownSelectHandler = proxy(this._dropDownSelect, this);\n this._dropDown = new ui.DropDownList(dropDownElement, {\n dataTextField: 'quality',\n dataValueField: 'url',\n popup: {\n position: 'bottom',\n origin: 'top',\n appendTo: this.wrapper\n },\n animation: {\n open: {\n effects: 'slideIn:up',\n duration: 1\n }\n },\n select: this._dropDownSelectHandler\n });\n if (media && isArray(media.source)) {\n this._dropDown.setDataSource(media.source);\n this._dropDown.select(0);\n }\n this._dropDown.wrapper.addClass('k-button k-bare');\n this._dropDown.wrapper.attr('title', this.options.messages.quality).hide();\n this._dropDown.wrapper.find('span.k-i-arrow-60-down').removeClass('k-i-arrow-60-down').addClass('k-icon k-i-hd');\n this._dropDown.list.addClass('k-quality-list');\n }\n },\n _dropDownSelect: function (e) {\n if (this._currentIndex !== e.item.index()) {\n this._currentIndex = e.item.index();\n this._setPlayerUrl();\n }\n },\n _toolbarClick: function (e) {\n var target = $(e.target).children().first();\n var isPaused = target.hasClass(STATE_PLAY);\n if (!this.media()) {\n return;\n }\n if (target.hasClass(STATE_PLAY) || target.hasClass(STATE_PAUSE)) {\n if (isPaused) {\n this.play();\n } else {\n this.pause();\n }\n }\n if (target.hasClass(FULLSCREEN_ENTER) || target.hasClass(FULLSCREEN_EXIT)) {\n if (this._isInFullScreen) {\n target.removeClass(FULLSCREEN_EXIT).addClass(FULLSCREEN_ENTER);\n this.fullScreen(false);\n } else {\n target.removeClass(FULLSCREEN_ENTER).addClass(FULLSCREEN_EXIT);\n this.fullScreen(true);\n }\n }\n if (target.hasClass(MUTE) || target.hasClass(LOW_VOLUME) || target.hasClass(HIGH_VOLUME)) {\n var muted = this.mute();\n this.mute(!muted);\n }\n },\n _sliderDragging: function () {\n if (!this.media()) {\n return;\n }\n this._isDragging = true;\n },\n _sliderDragChange: function (e) {\n var that = this;\n var slider = e.sender;\n var tzOffset = timeZoneSec * 1000;\n if (!this.media()) {\n return;\n }\n that._sliderChangeFired = true;\n that._isDragging = false;\n if (!this.options.forwardSeek && slider.value() > this._seekBarLastPosition) {\n setTimeout(function () {\n slider.value(that._seekBarLastPosition);\n }, 1);\n } else if (this._youTubeVideo) {\n that._ytmedia.seekTo(that._timeToSec(e.value - tzOffset));\n } else {\n that._media.currentTime = that._timeToSec(e.value - tzOffset);\n }\n that.trigger(TIMECHANGE);\n that._preventPlay = true;\n },\n _changeVolumeButtonImage: function (volume) {\n var volumeButton = this._volumeButton;\n var volumeElement = volumeButton.find('span');\n var cssClass = volumeElement.attr('class');\n cssClass = cssClass.substring(0, cssClass.lastIndexOf(' '));\n if (volume === 0) {\n volumeElement.attr('class', cssClass + ' ' + MUTE);\n volumeButton.attr('title', this.options.messages.unmute);\n volumeButton.attr('aria-label', this.options.messages.unmute);\n } else if (volume > 0 && volume < 51) {\n volumeElement.attr('class', cssClass + ' ' + LOW_VOLUME);\n volumeButton.attr('title', this.options.messages.mute);\n volumeButton.attr('aria-label', this.options.messages.mute);\n } else {\n volumeElement.attr('class', cssClass + ' ' + HIGH_VOLUME);\n volumeButton.attr('title', this.options.messages.mute);\n volumeButton.attr('aria-label', this.options.messages.mute);\n }\n },\n _volumeDragging: function (e) {\n if (!this.media()) {\n return;\n }\n this.volume(e.value);\n this._changeVolumeButtonImage(e.value);\n this.trigger(VOLUMECHANGE);\n },\n _volumeChange: function (e) {\n if (!this.media()) {\n return;\n }\n this.volume(e.value);\n this._changeVolumeButtonImage(e.value);\n this.trigger(VOLUMECHANGE);\n },\n _mediaTimeUpdate: function () {\n var currentTime = this._youTubeVideo ? this._ytmedia.getCurrentTime() : this._media.currentTime;\n currentTime = currentTime ? currentTime : 0;\n var timeInMs = this._msToTime(currentTime);\n this._currentTimeElement.text(kendo.toString(timeInMs, this._timeFormat));\n if (!this._isDragging) {\n this._seekBarLastPosition = (currentTime + timeZoneSec) * 1000;\n this._slider.value(this._seekBarLastPosition);\n }\n return this.isPlaying();\n },\n _playStateToggle: function (play) {\n if (typeof play === 'undefined') {\n play = this._playButtonSpan.is(DOT + STATE_PLAY);\n }\n if (play) {\n this._playButtonSpan.removeClass(STATE_PLAY).addClass(STATE_PAUSE);\n this._playButton.attr('title', this.options.messages.pause);\n this._playButton.attr('aria-label', this.options.messages.pause);\n } else {\n this._playButtonSpan.removeClass(STATE_PAUSE).addClass(STATE_PLAY);\n this._playButton.attr('title', this.options.messages.play);\n this._playButton.attr('aria-label', this.options.messages.play);\n }\n },\n _mediaEnded: function () {\n this._playStateToggle(false);\n this._currentTimeElement.text(kendo.toString(this._msToTime(0), this._timeFormat));\n this._slider.value((0 + timeZoneSec) * 1000);\n this.trigger(END);\n },\n _mediaPlay: function () {\n this.trigger(PLAY);\n },\n _mediaReady: function () {\n this.trigger(READY);\n },\n _mediaDurationChange: function () {\n var durationTime = this._msToTime(this._youTubeVideo ? this._ytmedia.getDuration() : this._media.duration);\n this._timeFormat = durationTime.getHours() === 0 ? timeFormats.shortTime : timeFormats.longTime;\n this._durationElement.text(kendo.toString(durationTime, this._timeFormat));\n this._slider.setOptions({\n min: baseTime.getTime(),\n max: durationTime.getTime()\n });\n if (!this._isFirstRun) {\n this._resetTime();\n this._isFirstRun = true;\n }\n },\n _createYoutubePlayer: function () {\n this._mediaTimeUpdateHandler = proxy(this._mediaTimeUpdate, this);\n this._mediaDurationChangeHandler = proxy(this._mediaDurationChange, this);\n this.wrapper.prepend(templates.youtubePlayer);\n this._ytPlayer = this.wrapper.find(DOT + YTPLAYER)[0];\n $(this._ytPlayer).css({\n width: this.wrapper.width(),\n height: this.wrapper.height()\n });\n if (!window.YT || !window.YT.Player) {\n if (!window.onYouTubeIframeAPIReadyRegister) {\n window.onYouTubeIframeAPIReadyRegister = [];\n $.getScript('https://www.youtube.com/iframe_api');\n window.onYouTubeIframeAPIReady = function () {\n if (window.onYouTubeIframeAPIReadyRegister) {\n for (var i = 0; i < window.onYouTubeIframeAPIReadyRegister.length; i++) {\n window.onYouTubeIframeAPIReadyRegister[i]._youtubeApiReady();\n }\n }\n window.onYouTubeIframeAPIReadyRegister.length = 0;\n window.onYouTubeIframeAPIReadyRegister = undefined;\n };\n }\n window.onYouTubeIframeAPIReadyRegister[window.onYouTubeIframeAPIReadyRegister.length] = this;\n } else {\n this._configurePlayer();\n }\n },\n _poll: function (name, callback, interval, context) {\n var that = this;\n if (that._timers[name] !== null) {\n clearTimeout(that._timers[name]);\n }\n that._timers[name] = setTimeout(function (context) {\n return function callLater() {\n if (callback.call(context)) {\n that._timers[name] = setTimeout(callLater, interval);\n }\n };\n }(context), interval);\n return that._timers[name];\n },\n _youtubeApiReady: function () {\n this._configurePlayer();\n },\n _configurePlayer: function () {\n var vars = {\n 'autoplay': +this.options.autoPlay,\n 'wmode': 'transparent',\n 'controls': 0,\n 'rel': 0,\n 'showinfo': 0\n };\n this._onYouTubePlayerReady = proxy(this._onYouTubePlayerReady, this);\n window.onYouTubePlayerReady = this._onYouTubePlayerReady;\n this._onPlayerStateChangeHandler = proxy(this._onPlayerStateChange, this);\n window.onPlayerStateChange = this._onPlayerStateChange;\n var player = new window.YT.Player(this.wrapper.find(DOT + YTPLAYER)[0], {\n height: this.wrapper.height(),\n width: this.wrapper.width(),\n videoId: this._getMediaId(),\n playerVars: vars,\n events: {\n 'onReady': this._onYouTubePlayerReady,\n 'onStateChange': this._onPlayerStateChangeHandler\n }\n });\n },\n _onYouTubePlayerReady: function (event) {\n this._ytmedia = event.target;\n this._ytmedia.getIframe().style.width = '100%';\n this._ytmedia.getIframe().style.height = '100%';\n this._youTubeVideo = true;\n this._mediaDurationChangeHandler();\n if (this.options.autoPlay) {\n this._playStateToggle(true);\n this._ytmedia.loadVideoById(this._getMediaId());\n } else {\n this._ytmedia.cueVideoById(this._getMediaId());\n }\n if (this.options.mute) {\n this.mute(true);\n }\n this.trigger(READY);\n },\n _updateTitle: function () {\n this.titlebar().text(this.media().title || this.media().source);\n },\n _onPlayerStateChange: function (event) {\n if (event.data === 0) {\n this._slider.value(0);\n this._paused = false;\n this._playStateToggle(true);\n this.trigger(END);\n if (this.options.autoRepeat) {\n this.play();\n }\n } else if (event.data === 1) {\n this._mediaDurationChange();\n this._ytmedia.setVolume(this.volume());\n if (this._sliderChangeFired) {\n this._sliderChangeFired = false;\n } else {\n this._uiDisplay(false);\n }\n this.trigger(PLAY);\n this._playStateToggle(true);\n this._poll('progress', this._mediaTimeUpdate, 500, this);\n this._paused = false;\n } else if (event.data === 2) {\n if (!this._paused) {\n this._uiDisplay(true);\n this._playStateToggle(false);\n this.trigger(PAUSE);\n this._paused = true;\n }\n }\n },\n _getMediaId: function () {\n var result = this._currentUrl();\n var regExp = /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#\\&\\?]*).*/;\n var match = result.match(regExp);\n if (match && match[7].length === 11) {\n result = match[7];\n }\n return result;\n },\n _mouseClick: function () {\n if (this.isPaused()) {\n this.play();\n } else {\n this.pause();\n }\n },\n _initializePlayer: function () {\n if (!this._mouseMoveHandler) {\n this._mouseMoveHandler = proxy(this._mouseMove, this);\n this._mouseInHandler = proxy(this._mouseIn, this);\n this._mouseOutHandler = proxy(this._mouseOut, this);\n $(this.wrapper).on('mouseenter' + ns, this._mouseInHandler).on('mouseleave' + ns, this._mouseOutHandler).on('mousemove' + ns, this._mouseMoveHandler);\n }\n if (!this._ytmedia && this._youTubeVideo) {\n this._createYoutubePlayer();\n } else if (!this._media && !this._youTubeVideo) {\n this._createHtmlPlayer();\n }\n },\n _createHtmlPlayer: function () {\n if (!this._videoOverlay) {\n this._mouseClickHanlder = proxy(this._mouseClick, this);\n this.wrapper.append('<div class=\\'' + OVERLAY + '\\'></div>');\n this._videoOverlay = this.wrapper.find('.k-mediaplayer-overlay').on('click' + ns, this._mouseClickHanlder);\n }\n this._mediaTimeUpdateHandler = proxy(this._mediaTimeUpdate, this);\n this._mediaDurationChangeHandler = proxy(this._mediaDurationChange, this);\n this._mediaEndedHandler = proxy(this._mediaEnded, this);\n this._mediaCanPlayHandler = proxy(this._mediaReady, this);\n this._mediaPlayHandler = proxy(this._mediaPlay, this);\n this._videoOverlay.after(templates.htmlPlayer);\n this._media = this.wrapper.find(DOT + MEDIA)[0];\n $(this._media).css({\n width: '100%',\n height: '100%'\n });\n if (this.options.mute) {\n this.mute(true);\n }\n this._media.ontimeupdate = this._mediaTimeUpdateHandler;\n this._media.ondurationchange = this._mediaDurationChangeHandler;\n this._media.oncanplay = this._mediaCanPlayHandler;\n this._media.onplay = this._mediaPlayHandler;\n this._media.onended = this._mediaEndedHandler;\n this._media.loop = this.options.autoRepeat;\n },\n _mouseIn: function () {\n this._uiDisplay(true);\n },\n _mouseOut: function () {\n this._poll('mouseIdle', this._mouseIdle, 3000, this);\n },\n _mouseIdle: function () {\n this._uiDisplay(false);\n return false;\n },\n _mouseMove: function () {\n if (!(this._titleBar.is(':animated') || this._toolBar.element.is(':animated') || this._slider.wrapper.is(':animated'))) {\n this._uiDisplay(true);\n }\n this._poll('mouseIdle', this._mouseIdle, 3000, this);\n },\n _uiDisplay: function (state) {\n var animationSpeed = 'slow';\n var uiElements = this._titleBar.add(this._toolBar.element.parent());\n if (state) {\n uiElements.fadeIn(animationSpeed);\n } else {\n uiElements.fadeOut(animationSpeed);\n if (this.options.navigatable) {\n this.wrapper.focus();\n }\n }\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n if (!this.isPaused()) {\n this.pause();\n }\n this.element.off(ns);\n this.element.find(DOT + OVERLAY).off(ns);\n this._timers = null;\n this._mouseMoveHandler = null;\n this._mouseOutHandler = null;\n this._mouseInHandler = null;\n this._mouseClickHanlder = null;\n this._keyDownHandler = null;\n this._fullscreenHandler = null;\n this._toolbarClickHandler = null;\n this._sliderDragChangeHandler = null;\n this._sliderDraggingHandler = null;\n this._volumeDraggingHandler = null;\n this._volumeChangeHandler = null;\n this._youtubeApiReadyHandler = null;\n this._onYouTubePlayerReady = null;\n this._onPlayerStateChangeHandler = null;\n this._dropDownSelectHandler = null;\n if (this._youTubeVideo) {\n this._ytmedia.destroy();\n } else {\n this._media.ontimeupdate = this._mediaTimeUpdateHandler = null;\n this._media.ondurationchange = this._mediaDurationChangeHandler = null;\n this._media.oncanplay = this._mediaCanPlayHandler = null;\n this._media.onplay = this._mediaPlayHandler = null;\n this._media.onended = this._mediaEndedHandler = null;\n this._media.src = '';\n this._media.remove();\n }\n this._mouseMoveTimer = null;\n clearTimeout(this._mouseMoveTimer);\n kendo.destroy(this.element);\n },\n seek: function (ms) {\n if (typeof ms === 'undefined') {\n return 1000 * this._youTubeVideo ? this._ytmedia.getCurrentTime() : this._media ? this._media.currentTime : 0;\n }\n var seconds = ms / 1000;\n if (this._youTubeVideo) {\n if (seconds + 3 >= this._ytmedia.getDuration() | 0) {\n this._ytmedia.seekTo(this._ytmedia.getDuration() - 3 | 0, true);\n } else {\n this._ytmedia.seekTo(seconds, true);\n }\n } else {\n this._media.currentTime = seconds;\n }\n return this;\n },\n play: function () {\n if (this._youTubeVideo) {\n this._ytmedia.playVideo();\n } else {\n if (kendo.support.mobileOS) {\n this._uiDisplay(false);\n }\n this._media.play();\n }\n this._paused = false;\n this._playStateToggle(true);\n return this;\n },\n stop: function () {\n if (this._youTubeVideo && this._ytmedia) {\n this._ytmedia.stopVideo();\n } else if (this._media && !this._youTubeVideo) {\n if (kendo.support.mobileOS) {\n this._uiDisplay(true);\n }\n this._media.pause();\n this._media.currentTime = 0;\n }\n this._paused = true;\n this._playStateToggle(false);\n return this;\n },\n pause: function () {\n if (this._youTubeVideo) {\n this._ytmedia.pauseVideo();\n } else {\n if (kendo.support.mobileOS) {\n this._uiDisplay(true);\n }\n this._media.pause();\n }\n this._paused = true;\n this._playStateToggle(false);\n this.trigger(PAUSE);\n return this;\n },\n toolbar: function () {\n return this._toolBar;\n },\n dropdown: function () {\n return this._dropDown;\n },\n titlebar: function () {\n return this._titleBar;\n },\n fullScreen: function (enterFullScreen) {\n if (typeof enterFullScreen === 'undefined') {\n return this._isInFullScreen || false;\n }\n var element = this.element.get(0);\n if (enterFullScreen) {\n this.element.addClass('k-mediaplayer-fullscreen');\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if (element.msRequestFullscreen) {\n element.msRequestFullscreen();\n }\n this._isInFullScreen = true;\n } else {\n if (document.cancelFullscreen) {\n document.cancelFullscreen();\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msCancelFullscreen) {\n document.msCancelFullscreen();\n } else if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n this.element.removeClass('k-mediaplayer-fullscreen');\n this._isInFullScreen = false;\n }\n this._slider.resize();\n },\n volume: function (value) {\n if (typeof value === 'undefined') {\n return typeof this._volume !== 'undefined' ? this._volume : this._volume = this.options.volume;\n }\n this._volume = value;\n this.mute(value <= 0);\n if (this._youTubeVideo) {\n this._ytmedia.setVolume(this._volume);\n } else {\n this._media.volume = this._volume / 100;\n }\n this._volumeSlider.value(value);\n },\n mute: function (muted) {\n var currentState = this._youTubeVideo ? this._ytmedia && this._ytmedia.isMuted() : this._media && this._media.muted;\n if (typeof muted === 'undefined' || muted === currentState) {\n return currentState;\n }\n if (this._youTubeVideo) {\n if (muted) {\n this._ytmedia.mute();\n } else {\n this._ytmedia.unMute();\n }\n } else {\n this._media.muted = muted;\n }\n if (muted) {\n this._volumeSlider.value(0);\n } else {\n this._volumeSlider.value(this._media && this._media.volume * 100 || this._ytmedia && this._ytmedia.getVolume());\n }\n this.trigger(VOLUMECHANGE);\n this._changeVolumeButtonImage(this._volumeSlider.value());\n },\n isEnded: function () {\n if (this._youTubeVideo) {\n return this._ytmedia.getPlayerState() === 0;\n } else {\n return this._media.ended;\n }\n },\n media: function (value) {\n var dropdown = this.dropdown();\n if (typeof value === 'undefined') {\n return typeof this._mediaData !== 'undefined' ? this._mediaData : this._mediaData = this.options.media;\n }\n if (isArray(value.source)) {\n dropdown.setDataSource(value.source);\n dropdown.wrapper.show();\n } else {\n dropdown.wrapper.hide();\n }\n this._mediaData = value;\n this._updateTitle();\n this._setPlayerUrl();\n },\n isPaused: function () {\n return this._paused;\n },\n isPlaying: function () {\n return !this.isEnded() && !this._paused;\n },\n _aria: function () {\n this.wrapper.attr('role', 'region');\n },\n _navigatable: function () {\n this._fullscreenHandler = proxy(this._fullscreen, this);\n $(document).on('webkitfullscreenchange mozfullscreenchange fullscreenchange' + ns, this._fullscreenHandler);\n if (this.options.navigatable) {\n this.wrapper.attr('tabIndex', 0);\n this._keyDownHandler = proxy(this._keyDown, this);\n this.wrapper.on('keydown' + ns, this._keyDownHandler);\n }\n },\n _fullscreen: function () {\n var isFullScreen = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;\n this._uiDisplay(true);\n this._slider.resize();\n if (!isFullScreen) {\n this.wrapper.find('span[class*=\"k-i-fullscreen\"]').removeClass(FULLSCREEN_EXIT).addClass(FULLSCREEN_ENTER);\n this.fullScreen(false);\n }\n },\n _keyDown: function (e) {\n e.preventDefault();\n var fsButton = this.wrapper.find('span[class*=\"k-i-fullscreen\"]');\n if (e.keyCode === keys.SPACEBAR) {\n if (this.isPlaying()) {\n this.pause();\n } else {\n this.play();\n }\n } else if (e.keyCode === keys.ENTER && !this._isInFullScreen) {\n fsButton.removeClass(FULLSCREEN_ENTER).addClass(FULLSCREEN_EXIT);\n this.fullScreen(true);\n } else if (e.keyCode === 77) {\n var muted = this.mute();\n this.mute(!muted);\n } else if (e.keyCode === keys.ESC && this._isInFullScreen) {\n fsButton.removeClass(FULLSCREEN_EXIT).addClass(FULLSCREEN_ENTER);\n this.fullScreen(false);\n }\n },\n _error: function () {\n },\n _progress: function () {\n }\n });\n ui.plugin(MediaPlayer);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define === 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.pivotgrid', [\n 'kendo.dom',\n 'kendo.data'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'pivotgrid',\n name: 'PivotGrid',\n category: 'web',\n description: 'The PivotGrid widget is a data summarization tool.',\n depends: [\n 'dom',\n 'data',\n 'data.xml',\n 'sortable'\n ],\n features: [\n {\n id: 'pivotgrid-configurator',\n name: 'Configurator',\n description: 'The PivotConfigurator widget allows the user to select data slices displayed in PivotGrid',\n depends: ['pivot.configurator']\n },\n {\n id: 'pivotgrid-filtering',\n name: 'Filtering',\n description: 'Support for filtering',\n depends: ['pivot.fieldmenu']\n },\n {\n id: 'pivotgrid-excel-export',\n name: 'Excel export',\n description: 'Export pivot grid data as Excel spreadsheet',\n depends: ['ooxml']\n },\n {\n id: 'pivotgrid-pdf-export',\n name: 'PDF export',\n description: 'Export pivot grid data as PDF',\n depends: [\n 'pdf',\n 'drawing'\n ]\n },\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Class = kendo.Class, Widget = ui.Widget, DataSource = kendo.data.DataSource, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, toString = {}.toString, identity = function (o) {\n return o;\n }, map = $.map, extend = $.extend, isFunction = kendo.isFunction, CHANGE = 'change', ERROR = 'error', MEASURES = 'Measures', PROGRESS = 'progress', STATERESET = 'stateReset', AUTO = 'auto', DIV = '<div/>', NS = '.kendoPivotGrid', ROW_TOTAL_KEY = '__row_total__', DATABINDING = 'dataBinding', DATABOUND = 'dataBound', EXPANDMEMBER = 'expandMember', COLLAPSEMEMBER = 'collapseMember', STATE_EXPANDED = 'k-i-collapse', STATE_COLLAPSED = 'k-i-expand', HEADER_TEMPLATE = '<span>#: data.member.caption || data.member.name #</span>', KPISTATUS_TEMPLATE = '<span class=\"k-icon k-i-kpi-status-#=data.dataItem.value > 0 ? \"open\" : data.dataItem.value < 0 ? \"deny\" : \"hold\"#\" title=\"#:data.dataItem.value#\"></span>', KPITREND_TEMPLATE = '<span class=\"k-icon k-i-kpi-trend-#=data.dataItem.value > 0 ? \"increase\" : data.dataItem.value < 0 ? \"decrease\" : \"equal\"#\" title=\"#:data.dataItem.value#\"></span>', DATACELL_TEMPLATE = '#= data.dataItem ? kendo.htmlEncode(data.dataItem.fmtValue || data.dataItem.value) || \" \" : \" \" #', LAYOUT_TABLE = '<table class=\"k-pivot-layout\">' + '<tr>' + '<td>' + '<div class=\"k-pivot-rowheaders\"></div>' + '</td>' + '<td>' + '<div class=\"k-pivot-table k-state-default\"></div>' + '</td>' + '</tr>' + '</table>';\n var AXIS_ROWS = 'rows';\n var AXIS_COLUMNS = 'columns';\n function normalizeMeasures(measure) {\n var descriptor = typeof measure === 'string' ? [{ name: measure }] : measure;\n var descriptors = toString.call(descriptor) === '[object Array]' ? descriptor : descriptor !== undefined ? [descriptor] : [];\n return map(descriptors, function (d) {\n if (typeof d === 'string') {\n return { name: d };\n }\n return {\n name: d.name,\n type: d.type\n };\n });\n }\n function normalizeMembers(member) {\n var descriptor = typeof member === 'string' ? [{\n name: [member],\n expand: false\n }] : member;\n var descriptors = toString.call(descriptor) === '[object Array]' ? descriptor : descriptor !== undefined ? [descriptor] : [];\n return map(descriptors, function (d) {\n if (typeof d === 'string') {\n return {\n name: [d],\n expand: false\n };\n }\n return {\n name: toString.call(d.name) === '[object Array]' ? d.name.slice() : [d.name],\n expand: d.expand\n };\n });\n }\n function normalizeName(name) {\n if (name.indexOf(' ') !== -1) {\n name = '[\"' + name + '\"]';\n }\n return name;\n }\n function accumulateMembers(accumulator, rootTuple, tuple, level) {\n var idx, length;\n var children;\n var member;\n if (!tuple) {\n tuple = rootTuple;\n }\n if (!level) {\n level = 0;\n }\n member = tuple.members[level];\n if (!member || member.measure) {\n return;\n }\n children = member.children;\n length = children.length;\n if (tuple === rootTuple) {\n accumulator[kendo.stringify([member.name])] = !!length;\n } else if (length) {\n accumulator[kendo.stringify(buildPath(tuple, level))] = true;\n }\n if (length) {\n for (idx = 0; idx < length; idx++) {\n accumulateMembers(accumulator, rootTuple, children[idx], level);\n }\n }\n accumulateMembers(accumulator, rootTuple, tuple, level + 1);\n }\n function descriptorsForAxes(tuples) {\n var result = {};\n if (tuples.length) {\n accumulateMembers(result, tuples[0]);\n }\n var descriptors = [];\n for (var k in result) {\n descriptors.push({\n name: $.parseJSON(k),\n expand: result[k]\n });\n }\n return descriptors;\n }\n function addMissingPathMembers(members, axis) {\n var tuples = axis.tuples || [];\n var firstTuple = tuples[0];\n if (firstTuple && members.length < firstTuple.members.length) {\n var tupleMembers = firstTuple.members;\n for (var idx = 0; idx < tupleMembers.length; idx++) {\n if (tupleMembers[idx].measure) {\n continue;\n }\n var found = false;\n for (var j = 0; j < members.length; j++) {\n if (getName(members[j]).indexOf(tupleMembers[idx].hierarchy) === 0) {\n found = true;\n break;\n }\n }\n if (!found) {\n members.push({\n name: [tupleMembers[idx].name],\n expand: false\n });\n }\n }\n }\n }\n function tupleToDescriptors(tuple) {\n var result = [];\n var members = tuple.members;\n for (var idx = 0; idx < members.length; idx++) {\n if (members[idx].measure) {\n continue;\n }\n result.push({\n name: [members[idx].name],\n expand: members[idx].children.length > 0\n });\n }\n return result;\n }\n function descriptorsForMembers(axis, members, measures) {\n axis = axis || {};\n addMissingPathMembers(members, axis);\n if (measures.length > 1) {\n members.push({\n name: MEASURES,\n measure: true,\n children: normalizeMembers(measures)\n });\n }\n var tupletoSearch = { members: members };\n if (axis.tuples) {\n var result = findExistingTuple(axis.tuples, tupletoSearch);\n if (result.tuple) {\n members = tupleToDescriptors(result.tuple);\n }\n }\n return members;\n }\n function createAggregateGetter(m) {\n var measureGetter = kendo.getter(m.field, true);\n return function (aggregatorContext, state) {\n return m.aggregate(measureGetter(aggregatorContext.dataItem), state, aggregatorContext);\n };\n }\n function isNumber(val) {\n return typeof val === 'number' && !isNaN(val);\n }\n function isDate(val) {\n return val && val.getTime;\n }\n var functions = {\n sum: function (value, state) {\n var accumulator = state.accumulator;\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n return accumulator;\n },\n count: function (value, state) {\n return (state.accumulator || 0) + 1;\n },\n average: {\n aggregate: function (value, state) {\n var accumulator = state.accumulator;\n if (state.count === undefined) {\n state.count = 0;\n }\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n if (isNumber(value)) {\n state.count++;\n }\n return accumulator;\n },\n result: function (state) {\n var accumulator = state.accumulator;\n if (isNumber(accumulator)) {\n accumulator = accumulator / state.count;\n }\n return accumulator;\n }\n },\n max: function (value, state) {\n var accumulator = state.accumulator;\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n if (accumulator < value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n },\n min: function (value, state) {\n var accumulator = state.accumulator;\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n if (accumulator > value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n }\n };\n var PivotCubeBuilder = Class.extend({\n init: function (options) {\n this.options = extend({}, this.options, options);\n this.dimensions = this._normalizeDescriptors('field', this.options.dimensions);\n this.measures = this._normalizeDescriptors('name', this.options.measures);\n },\n _normalizeDescriptors: function (keyField, descriptors) {\n descriptors = descriptors || {};\n var fields = {};\n var field;\n if (toString.call(descriptors) === '[object Array]') {\n for (var idx = 0, length = descriptors.length; idx < length; idx++) {\n field = descriptors[idx];\n if (typeof field === 'string') {\n fields[field] = {};\n } else if (field[keyField]) {\n fields[field[keyField]] = field;\n }\n }\n descriptors = fields;\n }\n return descriptors;\n },\n _rootTuples: function (rootNames, measureAggregators) {\n var aggregatorsLength = measureAggregators.length || 1;\n var dimensionsSchema = this.dimensions || [];\n var root, name, parts;\n var measureIdx = 0;\n var idx;\n var rootNamesLength = rootNames.length;\n var result = [];\n var keys = [];\n if (rootNamesLength || measureAggregators.length) {\n for (measureIdx = 0; measureIdx < aggregatorsLength; measureIdx++) {\n root = { members: [] };\n for (idx = 0; idx < rootNamesLength; idx++) {\n name = rootNames[idx];\n parts = name.split('&');\n root.members[root.members.length] = {\n children: [],\n caption: (dimensionsSchema[name] || {}).caption || 'All',\n name: name,\n levelName: name,\n levelNum: '0',\n hasChildren: true,\n parentName: parts.length > 1 ? parts[0] : undefined,\n hierarchy: name\n };\n }\n if (aggregatorsLength > 1) {\n root.members[root.members.length] = {\n children: [],\n caption: measureAggregators[measureIdx].caption,\n name: measureAggregators[measureIdx].descriptor.name,\n levelName: 'MEASURES',\n levelNum: '0',\n hasChildren: false,\n parentName: undefined,\n hierarchy: 'MEASURES'\n };\n }\n result[result.length] = root;\n }\n keys.push(ROW_TOTAL_KEY);\n }\n return {\n keys: keys,\n tuples: result\n };\n },\n _expandedTuples: function (map, expanded, measureAggregators) {\n var aggregatorsLength = measureAggregators.length || 1;\n var dimensionsSchema = this.dimensions || [];\n var measureIdx;\n var tuple;\n var key;\n var mapItem;\n var current;\n var currentKeys;\n var accumulator = [];\n var accumulatorKeys = [];\n var memberInfo;\n var expandedNames;\n var parts;\n var name;\n var idx;\n for (key in map) {\n mapItem = map[key];\n memberInfo = this._findExpandedMember(expanded, mapItem.uniquePath);\n current = accumulator[memberInfo.index] || [];\n currentKeys = accumulatorKeys[memberInfo.index] || [];\n expandedNames = memberInfo.member.names;\n for (measureIdx = 0; measureIdx < aggregatorsLength; measureIdx++) {\n tuple = { members: [] };\n for (idx = 0; idx < expandedNames.length; idx++) {\n if (idx === memberInfo.member.expandedIdx) {\n tuple.members[tuple.members.length] = {\n children: [],\n caption: mapItem.value,\n name: mapItem.name,\n hasChildren: false,\n levelNum: 1,\n levelName: mapItem.parentName + mapItem.name,\n parentName: mapItem.parentName,\n hierarchy: mapItem.parentName + mapItem.name\n };\n if (measureIdx === 0) {\n currentKeys.push(buildPath(tuple, idx).join(''));\n }\n } else {\n name = expandedNames[idx];\n parts = name.split('&');\n tuple.members[tuple.members.length] = {\n children: [],\n caption: (dimensionsSchema[name] || {}).caption || 'All',\n name: name,\n levelName: name,\n levelNum: '0',\n hasChildren: true,\n parentName: parts.length > 1 ? parts[0] : undefined,\n hierarchy: name\n };\n }\n }\n if (aggregatorsLength > 1) {\n tuple.members[tuple.members.length] = {\n children: [],\n caption: measureAggregators[measureIdx].caption,\n name: measureAggregators[measureIdx].descriptor.name,\n levelName: 'MEASURES',\n levelNum: '0',\n hasChildren: true,\n parentName: undefined,\n hierarchy: 'MEASURES'\n };\n }\n current[current.length] = tuple;\n }\n accumulator[memberInfo.index] = current;\n accumulatorKeys[memberInfo.index] = currentKeys;\n }\n return {\n keys: accumulatorKeys,\n tuples: accumulator\n };\n },\n _findExpandedMember: function (members, parentName) {\n for (var idx = 0; idx < members.length; idx++) {\n if (members[idx].uniquePath === parentName) {\n return {\n member: members[idx],\n index: idx\n };\n }\n }\n },\n _asTuples: function (map, descriptor, measureAggregators) {\n measureAggregators = measureAggregators || [];\n var rootInfo = this._rootTuples(descriptor.root, measureAggregators);\n var expandedInfo = this._expandedTuples(map, descriptor.expanded, measureAggregators);\n return {\n keys: [].concat.apply(rootInfo.keys, expandedInfo.keys),\n tuples: [].concat.apply(rootInfo.tuples, expandedInfo.tuples)\n };\n },\n _measuresInfo: function (measures, rowAxis) {\n var idx = 0;\n var length = measures && measures.length;\n var aggregateNames = [];\n var resultFuncs = {};\n var formats = {};\n var descriptors = this.measures || {};\n var measure;\n var name;\n for (; idx < length; idx++) {\n name = measures[idx].descriptor.name;\n measure = descriptors[name] || {};\n aggregateNames.push(name);\n if (measure.result) {\n resultFuncs[name] = measure.result;\n }\n if (measure.format) {\n formats[name] = measure.format;\n }\n }\n return {\n names: aggregateNames,\n formats: formats,\n resultFuncs: resultFuncs,\n rowAxis: rowAxis\n };\n },\n _toDataArray: function (map, measuresInfo, rowKeys, columnKeys) {\n var result = [];\n var aggregates;\n var name, i, j, k, n;\n var row, column, columnKey;\n var rowMeasureNamesLength = 1;\n var rowMeasureNames = [];\n var columnMeasureNames;\n var rowLength = rowKeys.length || 1;\n var columnLength = columnKeys.length || 1;\n if (measuresInfo.rowAxis) {\n rowMeasureNames = measuresInfo.names;\n rowMeasureNamesLength = rowMeasureNames.length;\n } else {\n columnMeasureNames = measuresInfo.names;\n }\n for (i = 0; i < rowLength; i++) {\n row = map[rowKeys[i] || ROW_TOTAL_KEY];\n for (n = 0; n < rowMeasureNamesLength; n++) {\n if (measuresInfo.rowAxis) {\n columnMeasureNames = [rowMeasureNames[n]];\n }\n for (j = 0; j < columnLength; j++) {\n columnKey = columnKeys[j] || ROW_TOTAL_KEY;\n column = row.items[columnKey];\n if (columnKey === ROW_TOTAL_KEY) {\n aggregates = row.aggregates;\n } else {\n aggregates = column ? column.aggregates : {};\n }\n for (k = 0; k < columnMeasureNames.length; k++) {\n name = columnMeasureNames[k];\n this._addData(result, aggregates[name], measuresInfo.formats[name], measuresInfo.resultFuncs[name]);\n }\n }\n }\n }\n return result;\n },\n _addData: function (result, value, format, resultFunc) {\n var fmtValue = '';\n var ordinal;\n if (value) {\n value = resultFunc ? resultFunc(value) : value.accumulator;\n fmtValue = format ? kendo.format(format, value) : value;\n }\n ordinal = result.length;\n result[ordinal] = {\n ordinal: ordinal,\n value: value || '',\n fmtValue: fmtValue\n };\n },\n _matchDescriptors: function (dataItem, descriptor, getters) {\n var parts;\n var parentField;\n var expectedValue;\n var names = descriptor.names;\n var idx = descriptor.expandedIdx;\n var value;\n while (idx > 0) {\n parts = names[--idx].split('&');\n if (parts.length > 1) {\n parentField = parts[0];\n expectedValue = parts[1];\n value = getters[parentField](dataItem);\n value = value !== undefined && value !== null ? value.toString() : value;\n if (value != expectedValue) {\n return false;\n }\n }\n }\n return true;\n },\n _calculateAggregate: function (measureAggregators, aggregatorContext, totalItem) {\n var result = {};\n var state;\n var name;\n for (var measureIdx = 0; measureIdx < measureAggregators.length; measureIdx++) {\n name = measureAggregators[measureIdx].descriptor.name;\n state = totalItem.aggregates[name] || {};\n state.accumulator = measureAggregators[measureIdx].aggregator(aggregatorContext, state);\n result[name] = state;\n }\n return result;\n },\n _processColumns: function (measureAggregators, descriptors, getters, columns, aggregatorContext, rowTotal, state, updateColumn) {\n var value;\n var descriptor;\n var column;\n var totalItem;\n var key, name, parentName, path;\n var dataItem = aggregatorContext.dataItem;\n var idx = 0;\n for (; idx < descriptors.length; idx++) {\n descriptor = descriptors[idx];\n if (!this._matchDescriptors(dataItem, descriptor, getters)) {\n continue;\n }\n path = descriptor.names.slice(0, descriptor.expandedIdx).join('');\n name = descriptor.names[descriptor.expandedIdx];\n value = getters[name](dataItem);\n value = value !== undefined && value !== null ? value.toString() : value;\n parentName = name;\n name = name + '&' + value;\n key = path + name;\n column = columns[key] || {\n index: state.columnIndex,\n parentName: parentName,\n name: name,\n uniquePath: path + parentName,\n value: value\n };\n totalItem = rowTotal.items[key] || { aggregates: {} };\n rowTotal.items[key] = {\n index: column.index,\n aggregates: this._calculateAggregate(measureAggregators, aggregatorContext, totalItem)\n };\n if (updateColumn) {\n if (!columns[key]) {\n state.columnIndex++;\n }\n columns[key] = column;\n }\n }\n },\n _measureAggregators: function (options) {\n var measureDescriptors = options.measures || [];\n var measures = this.measures || {};\n var aggregators = [];\n var descriptor, measure, idx, length;\n var defaultAggregate, aggregate;\n if (measureDescriptors.length) {\n for (idx = 0, length = measureDescriptors.length; idx < length; idx++) {\n descriptor = measureDescriptors[idx];\n measure = measures[descriptor.name];\n defaultAggregate = null;\n if (measure) {\n aggregate = measure.aggregate;\n if (typeof aggregate === 'string') {\n defaultAggregate = functions[aggregate.toLowerCase()];\n if (!defaultAggregate) {\n throw new Error('There is no such aggregate function');\n }\n measure.aggregate = defaultAggregate.aggregate || defaultAggregate;\n measure.result = defaultAggregate.result;\n }\n aggregators.push({\n descriptor: descriptor,\n caption: measure.caption,\n result: measure.result,\n aggregator: createAggregateGetter(measure)\n });\n }\n }\n } else {\n aggregators.push({\n descriptor: { name: 'default' },\n caption: 'default',\n aggregator: function () {\n return 1;\n }\n });\n }\n return aggregators;\n },\n _buildGetters: function (names) {\n var result = {};\n var parts;\n var name;\n for (var idx = 0; idx < names.length; idx++) {\n name = names[idx];\n parts = name.split('&');\n if (parts.length > 1) {\n result[parts[0]] = kendo.getter(parts[0], true);\n } else {\n result[name] = kendo.getter(normalizeName(name), true);\n }\n }\n return result;\n },\n _parseDescriptors: function (descriptors) {\n var parsedDescriptors = parseDescriptors(descriptors);\n var rootNames = getRootNames(parsedDescriptors.root);\n var expanded = parsedDescriptors.expanded;\n var result = [];\n for (var idx = 0; idx < expanded.length; idx++) {\n result.push(mapNames(expanded[idx].name, rootNames));\n }\n return {\n root: rootNames,\n expanded: result\n };\n },\n _filter: function (data, filter) {\n if (!filter) {\n return data;\n }\n var expr;\n var idx = 0;\n var filters = filter.filters;\n for (; idx < filters.length; idx++) {\n expr = filters[idx];\n if (expr.operator === 'in') {\n filters[idx] = this._normalizeFilter(expr);\n }\n }\n return new kendo.data.Query(data).filter(filter).data;\n },\n _normalizeFilter: function (filter) {\n var value = filter.value.split(',');\n var result = [];\n if (!value.length) {\n return value;\n }\n for (var idx = 0; idx < value.length; idx++) {\n result.push({\n field: filter.field,\n operator: 'eq',\n value: value[idx]\n });\n }\n return {\n logic: 'or',\n filters: result\n };\n },\n process: function (data, options) {\n data = data || [];\n options = options || {};\n data = this._filter(data, options.filter);\n var measures = options.measures || [];\n var measuresRowAxis = options.measuresAxis === 'rows';\n var columnDescriptors = options.columns || [];\n var rowDescriptors = options.rows || [];\n if (!columnDescriptors.length && rowDescriptors.length && (!measures.length || measures.length && measuresRowAxis)) {\n columnDescriptors = rowDescriptors;\n rowDescriptors = [];\n measuresRowAxis = false;\n }\n if (!columnDescriptors.length && !rowDescriptors.length) {\n measuresRowAxis = false;\n }\n if (!columnDescriptors.length && measures.length) {\n columnDescriptors = normalizeMembers(options.measures);\n }\n columnDescriptors = this._parseDescriptors(columnDescriptors);\n rowDescriptors = this._parseDescriptors(rowDescriptors);\n var aggregatedData = {};\n var columns = {};\n var rows = {};\n var rowValue;\n var state = { columnIndex: 0 };\n var measureAggregators = this._measureAggregators(options);\n var columnGetters = this._buildGetters(columnDescriptors.root);\n var rowGetters = this._buildGetters(rowDescriptors.root);\n var processed = false;\n var expandedColumns = columnDescriptors.expanded;\n var expandedRows = rowDescriptors.expanded;\n var dataItem;\n var aggregatorContext;\n var hasExpandedRows = expandedRows.length !== 0;\n var rowIdx, rowDescriptor, rowName, rowTotal;\n var key, path, parentName, value;\n var columnsInfo, rowsInfo;\n var length = data.length;\n var idx = 0;\n if (columnDescriptors.root.length || rowDescriptors.root.length) {\n processed = true;\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n aggregatorContext = {\n dataItem: dataItem,\n index: idx\n };\n rowTotal = aggregatedData[ROW_TOTAL_KEY] || {\n items: {},\n aggregates: {}\n };\n this._processColumns(measureAggregators, expandedColumns, columnGetters, columns, aggregatorContext, rowTotal, state, !hasExpandedRows);\n rowTotal.aggregates = this._calculateAggregate(measureAggregators, aggregatorContext, rowTotal);\n aggregatedData[ROW_TOTAL_KEY] = rowTotal;\n for (rowIdx = 0; rowIdx < expandedRows.length; rowIdx++) {\n rowDescriptor = expandedRows[rowIdx];\n if (!this._matchDescriptors(dataItem, rowDescriptor, rowGetters)) {\n this._processColumns(measureAggregators, expandedColumns, columnGetters, columns, aggregatorContext, {\n items: {},\n aggregates: {}\n }, state, true);\n continue;\n }\n path = rowDescriptor.names.slice(0, rowDescriptor.expandedIdx).join('');\n rowName = rowDescriptor.names[rowDescriptor.expandedIdx];\n parentName = rowName;\n rowValue = rowGetters[rowName](dataItem);\n rowValue = rowValue !== undefined ? rowValue.toString() : rowValue;\n rowName = rowName + '&' + rowValue;\n key = path + rowName;\n rows[key] = {\n uniquePath: path + parentName,\n parentName: parentName,\n name: rowName,\n value: rowValue\n };\n value = aggregatedData[key] || {\n items: {},\n aggregates: {}\n };\n this._processColumns(measureAggregators, expandedColumns, columnGetters, columns, aggregatorContext, value, state, true);\n value.aggregates = this._calculateAggregate(measureAggregators, aggregatorContext, value);\n aggregatedData[key] = value;\n }\n }\n }\n if (processed && length) {\n if (measureAggregators.length > 1 && (!options.columns || !options.columns.length)) {\n columnDescriptors = {\n root: [],\n expanded: []\n };\n }\n columnsInfo = this._asTuples(columns, columnDescriptors, measuresRowAxis ? [] : measureAggregators);\n rowsInfo = this._asTuples(rows, rowDescriptors, measuresRowAxis ? measureAggregators : []);\n columns = columnsInfo.tuples;\n rows = rowsInfo.tuples;\n aggregatedData = this._toDataArray(aggregatedData, this._measuresInfo(measureAggregators, measuresRowAxis), rowsInfo.keys, columnsInfo.keys);\n } else {\n aggregatedData = columns = rows = [];\n }\n return {\n axes: {\n columns: { tuples: columns },\n rows: { tuples: rows }\n },\n data: aggregatedData\n };\n }\n });\n var PivotTransport = Class.extend({\n init: function (options, transport) {\n this.transport = transport;\n this.options = transport.options || {};\n if (!this.transport.discover) {\n if (isFunction(options.discover)) {\n this.discover = options.discover;\n }\n }\n },\n read: function (options) {\n return this.transport.read(options);\n },\n update: function (options) {\n return this.transport.update(options);\n },\n create: function (options) {\n return this.transport.create(options);\n },\n destroy: function (options) {\n return this.transport.destroy(options);\n },\n discover: function (options) {\n if (this.transport.discover) {\n return this.transport.discover(options);\n }\n options.success({});\n },\n catalog: function (val) {\n var options = this.options || {};\n if (val === undefined) {\n return (options.connection || {}).catalog;\n }\n var connection = options.connection || {};\n connection.catalog = val;\n this.options.connection = connection;\n $.extend(this.transport.options, { connection: connection });\n },\n cube: function (val) {\n var options = this.options || {};\n if (val === undefined) {\n return (options.connection || {}).cube;\n }\n var connection = options.connection || {};\n connection.cube = val;\n this.options.connection = connection;\n extend(true, this.transport.options, { connection: connection });\n }\n });\n var PivotDataSource = DataSource.extend({\n init: function (options) {\n var cube = ((options || {}).schema || {}).cube;\n var measuresAxis = 'columns';\n var measures;\n var schema = {\n axes: identity,\n cubes: identity,\n catalogs: identity,\n measures: identity,\n dimensions: identity,\n hierarchies: identity,\n levels: identity,\n members: identity\n };\n if (cube) {\n schema = $.extend(schema, this._cubeSchema(cube));\n this.cubeBuilder = new PivotCubeBuilder(cube);\n }\n DataSource.fn.init.call(this, extend(true, {}, { schema: schema }, options));\n this.transport = new PivotTransport(this.options.transport || {}, this.transport);\n this._columns = normalizeMembers(this.options.columns);\n this._rows = normalizeMembers(this.options.rows);\n measures = this.options.measures || [];\n if (toString.call(measures) === '[object Object]') {\n measuresAxis = measures.axis || 'columns';\n measures = measures.values || [];\n }\n this._measures = normalizeMeasures(measures);\n this._measuresAxis = measuresAxis;\n this._skipNormalize = 0;\n this._axes = {};\n },\n _cubeSchema: function (cube) {\n return {\n dimensions: function () {\n var result = [];\n var dimensions = cube.dimensions;\n for (var key in dimensions) {\n result.push({\n name: key,\n caption: dimensions[key].caption || key,\n uniqueName: key,\n defaultHierarchy: key,\n type: 1\n });\n }\n if (cube.measures) {\n result.push({\n name: MEASURES,\n caption: MEASURES,\n uniqueName: MEASURES,\n type: 2\n });\n }\n return result;\n },\n hierarchies: function () {\n return [];\n },\n measures: function () {\n var result = [];\n var measures = cube.measures;\n for (var key in measures) {\n result.push({\n name: key,\n caption: key,\n uniqueName: key,\n aggregator: key\n });\n }\n return result;\n },\n members: $.proxy(function (response, restrictions) {\n var name = restrictions.levelUniqueName || restrictions.memberUniqueName;\n var schemaData = this.options.schema.data;\n var dataGetter = isFunction(schemaData) ? schemaData : kendo.getter(schemaData, true);\n var data = this.options.data && dataGetter(this.options.data) || this._rawData || [];\n var result = [];\n var getter;\n var value;\n var idx = 0;\n var distinct = {};\n if (name) {\n name = name.split('.')[0];\n }\n if (!restrictions.treeOp) {\n result.push({\n caption: cube.dimensions[name].caption || name,\n childrenCardinality: '1',\n dimensionUniqueName: name,\n hierarchyUniqueName: name,\n levelUniqueName: name,\n name: name,\n uniqueName: name\n });\n return result;\n }\n getter = kendo.getter(normalizeName(name), true);\n for (; idx < data.length; idx++) {\n value = getter(data[idx]);\n if ((value || value === 0) && !distinct[value]) {\n distinct[value] = true;\n result.push({\n caption: value,\n childrenCardinality: '0',\n dimensionUniqueName: name,\n hierarchyUniqueName: name,\n levelUniqueName: name,\n name: value,\n uniqueName: value\n });\n }\n }\n return result;\n }, this)\n };\n },\n options: {\n serverSorting: true,\n serverPaging: true,\n serverFiltering: true,\n serverGrouping: true,\n serverAggregates: true\n },\n catalog: function (val) {\n if (val === undefined) {\n return this.transport.catalog();\n }\n this.transport.catalog(val);\n this._mergeState({});\n this._axes = {};\n this.data([]);\n },\n cube: function (val) {\n if (val === undefined) {\n return this.transport.cube();\n }\n this.transport.cube(val);\n this._axes = {};\n this._mergeState({});\n this.data([]);\n },\n axes: function () {\n return this._axes;\n },\n columns: function (val) {\n if (val === undefined) {\n return this._columns;\n }\n this._skipNormalize += 1;\n this._clearAxesData = true;\n this._columns = normalizeMembers(val);\n this.query({\n columns: val,\n rows: this.rowsAxisDescriptors(),\n measures: this.measures(),\n sort: this.sort(),\n filter: this.filter()\n });\n },\n rows: function (val) {\n if (val === undefined) {\n return this._rows;\n }\n this._skipNormalize += 1;\n this._clearAxesData = true;\n this._rows = normalizeMembers(val);\n this.query({\n columns: this.columnsAxisDescriptors(),\n rows: val,\n measures: this.measures(),\n sort: this.sort(),\n filter: this.filter()\n });\n },\n measures: function (val) {\n if (val === undefined) {\n return this._measures;\n }\n this._skipNormalize += 1;\n this._clearAxesData = true;\n this.query({\n columns: this.columnsAxisDescriptors(),\n rows: this.rowsAxisDescriptors(),\n measures: normalizeMeasures(val),\n sort: this.sort(),\n filter: this.filter()\n });\n },\n measuresAxis: function () {\n return this._measuresAxis || 'columns';\n },\n _expandPath: function (path, axis) {\n var origin = axis === 'columns' ? 'columns' : 'rows';\n var other = axis === 'columns' ? 'rows' : 'columns';\n var members = normalizeMembers(path);\n var memberToExpand = getName(members[members.length - 1]);\n this._lastExpanded = origin;\n members = descriptorsForMembers(this.axes()[origin], members, this.measures());\n for (var idx = 0; idx < members.length; idx++) {\n var memberName = getName(members[idx]);\n if (memberName === memberToExpand) {\n if (members[idx].expand) {\n return;\n }\n members[idx].expand = true;\n } else {\n members[idx].expand = false;\n }\n }\n var descriptors = {};\n descriptors[origin] = members;\n descriptors[other] = this._descriptorsForAxis(other);\n this._query(descriptors);\n },\n _descriptorsForAxis: function (axis) {\n var axes = this.axes();\n var descriptors = this[axis]() || [];\n if (axes && axes[axis] && axes[axis].tuples && axes[axis].tuples[0]) {\n descriptors = descriptorsForAxes(axes[axis].tuples || []);\n }\n return descriptors;\n },\n columnsAxisDescriptors: function () {\n return this._descriptorsForAxis('columns');\n },\n rowsAxisDescriptors: function () {\n return this._descriptorsForAxis('rows');\n },\n _process: function (data, e) {\n this._view = data;\n e = e || {};\n e.items = e.items || this._view;\n this.trigger(CHANGE, e);\n },\n _query: function (options) {\n var that = this;\n if (!options) {\n this._skipNormalize += 1;\n this._clearAxesData = true;\n }\n return that.query(extend({}, {\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that.sort(),\n filter: that.filter(),\n group: that.group(),\n aggregate: that.aggregate(),\n columns: this.columnsAxisDescriptors(),\n rows: this.rowsAxisDescriptors(),\n measures: this.measures()\n }, options));\n },\n query: function (options) {\n var state = this._mergeState(options);\n if (this._data.length && this.cubeBuilder) {\n this._params(state);\n this._updateLocalData(this._pristineData);\n return $.Deferred().resolve().promise();\n }\n return this.read(state);\n },\n _mergeState: function (options) {\n options = DataSource.fn._mergeState.call(this, options);\n if (options !== undefined) {\n this._measures = normalizeMeasures(options.measures);\n if (options.columns) {\n options.columns = normalizeMembers(options.columns);\n } else if (!options.columns) {\n this._columns = [];\n }\n if (options.rows) {\n options.rows = normalizeMembers(options.rows);\n } else if (!options.rows) {\n this._rows = [];\n }\n }\n return options;\n },\n filter: function (val) {\n if (val === undefined) {\n return this._filter;\n }\n this._skipNormalize += 1;\n this._clearAxesData = true;\n this._query({\n filter: val,\n page: 1\n });\n },\n expandColumn: function (path) {\n this._expandPath(path, 'columns');\n },\n expandRow: function (path) {\n this._expandPath(path, 'rows');\n },\n success: function (data) {\n var originalData;\n if (this.cubeBuilder) {\n originalData = (this.reader.data(data) || []).slice(0);\n }\n DataSource.fn.success.call(this, data);\n if (originalData) {\n this._pristineData = originalData;\n }\n },\n _processResult: function (data, axes) {\n if (this.cubeBuilder) {\n var processedData = this.cubeBuilder.process(data, this._requestData);\n data = processedData.data;\n axes = processedData.axes;\n }\n var columnIndexes, rowIndexes;\n var tuples, resultAxis, measures, axisToSkip;\n var columnDescriptors = this.columns();\n var rowDescriptors = this.rows();\n var hasColumnTuples = axes.columns && axes.columns.tuples;\n if (!columnDescriptors.length && rowDescriptors.length && hasColumnTuples && (this._rowMeasures().length || !this.measures().length)) {\n axes = {\n columns: {},\n rows: axes.columns\n };\n }\n if (!columnDescriptors.length && !rowDescriptors.length && this.measuresAxis() === 'rows' && hasColumnTuples) {\n axes = {\n columns: {},\n rows: axes.columns\n };\n }\n this._axes = {\n columns: normalizeAxis(this._axes.columns),\n rows: normalizeAxis(this._axes.rows)\n };\n axes = {\n columns: normalizeAxis(axes.columns),\n rows: normalizeAxis(axes.rows)\n };\n columnIndexes = this._normalizeTuples(axes.columns.tuples, this._axes.columns.tuples, columnDescriptors, this._columnMeasures());\n rowIndexes = this._normalizeTuples(axes.rows.tuples, this._axes.rows.tuples, rowDescriptors, this._rowMeasures());\n if (this._skipNormalize > 0) {\n this._skipNormalize -= 1;\n }\n if (!this.cubeBuilder) {\n data = this._normalizeData({\n columnsLength: axes.columns.tuples.length,\n rowsLength: axes.rows.tuples.length,\n columnIndexes: columnIndexes,\n rowIndexes: rowIndexes,\n data: data\n });\n }\n if (this._lastExpanded == 'rows') {\n tuples = axes.columns.tuples;\n measures = this._columnMeasures();\n resultAxis = validateAxis(axes.columns, this._axes.columns, measures);\n if (resultAxis) {\n axisToSkip = 'columns';\n axes.columns = resultAxis;\n adjustDataByColumn(tuples, resultAxis.tuples, axes.rows.tuples.length, measures, data);\n if (!this.cubeBuilder) {\n data = this._normalizeData({\n columnsLength: membersCount(axes.columns.tuples, measures),\n rowsLength: axes.rows.tuples.length,\n data: data\n });\n }\n }\n } else if (this._lastExpanded == 'columns') {\n tuples = axes.rows.tuples;\n measures = this._rowMeasures();\n resultAxis = validateAxis(axes.rows, this._axes.rows, measures);\n if (resultAxis) {\n axisToSkip = 'rows';\n axes.rows = resultAxis;\n adjustDataByRow(tuples, resultAxis.tuples, axes.columns.tuples.length, measures, data);\n if (!this.cubeBuilder) {\n data = this._normalizeData({\n columnsLength: membersCount(axes.rows.tuples, measures),\n rowsLength: axes.columns.tuples.length,\n data: data\n });\n }\n }\n }\n this._lastExpanded = null;\n var result = this._mergeAxes(axes, data, axisToSkip);\n this._axes = result.axes;\n return result.data;\n },\n _readData: function (data) {\n var axes = this.reader.axes(data);\n var newData = this.reader.data(data);\n if (this.cubeBuilder) {\n this._rawData = newData;\n }\n return this._processResult(newData, axes);\n },\n _createTuple: function (tuple, measure, buildRoot) {\n var members = tuple.members;\n var length = members.length;\n var root = { members: [] };\n var levelName, levelNum;\n var name, parentName;\n var hasChildren;\n var hierarchy;\n var caption;\n var member;\n var idx = 0;\n if (measure) {\n length -= 1;\n }\n for (; idx < length; idx++) {\n member = members[idx];\n levelNum = Number(member.levelNum);\n name = member.name;\n parentName = member.parentName;\n caption = member.caption || name;\n hasChildren = member.hasChildren;\n hierarchy = member.hierarchy;\n levelName = member.levelName;\n if (buildRoot) {\n caption = 'All';\n if (levelNum === 0) {\n parentName = member.name;\n } else {\n levelNum -= 1;\n }\n hasChildren = true;\n name = hierarchy = levelName = parentName;\n }\n root.members.push({\n name: name,\n children: [],\n caption: caption,\n levelName: levelName,\n levelNum: levelNum.toString(),\n hasChildren: hasChildren,\n hierarchy: hierarchy,\n parentName: !buildRoot ? parentName : ''\n });\n }\n if (measure) {\n root.members.push({\n name: measure.name,\n children: []\n });\n }\n return root;\n },\n _hasRoot: function (target, source, descriptors) {\n if (source.length) {\n return findExistingTuple(source, target).tuple;\n }\n var members = target.members;\n var member;\n var descriptor;\n var isRoot = true;\n var levelNum;\n for (var idx = 0, length = members.length; idx < length; idx++) {\n member = members[idx];\n levelNum = Number(member.levelNum) || 0;\n descriptor = descriptors[idx];\n if (!(levelNum === 0 || descriptor && member.name === getName(descriptor))) {\n isRoot = false;\n break;\n }\n }\n return isRoot;\n },\n _mergeAxes: function (sourceAxes, data, axisToSkip) {\n var columnMeasures = this._columnMeasures();\n var rowMeasures = this._rowMeasures();\n var axes = this.axes();\n var startIndex, tuples;\n var oldRowsLength = membersCount(axes.rows.tuples, rowMeasures);\n var newRowsLength = sourceAxes.rows.tuples.length;\n var oldColumnsLength = membersCount(axes.columns.tuples, columnMeasures);\n var newColumnsLength = sourceAxes.columns.tuples.length;\n if (axisToSkip == 'columns') {\n newColumnsLength = oldColumnsLength;\n tuples = sourceAxes.columns.tuples;\n } else {\n tuples = parseSource(sourceAxes.columns.tuples, columnMeasures);\n data = prepareDataOnColumns(tuples, data);\n }\n var mergedColumns = mergeTuples(axes.columns.tuples, tuples, columnMeasures);\n if (axisToSkip == 'rows') {\n newRowsLength = membersCount(sourceAxes.rows.tuples, rowMeasures);\n tuples = sourceAxes.rows.tuples;\n } else {\n tuples = parseSource(sourceAxes.rows.tuples, rowMeasures);\n data = prepareDataOnRows(tuples, data);\n }\n var mergedRows = mergeTuples(axes.rows.tuples, tuples, rowMeasures);\n axes.columns.tuples = mergedColumns.tuples;\n axes.rows.tuples = mergedRows.tuples;\n if (oldColumnsLength !== membersCount(axes.columns.tuples, columnMeasures)) {\n startIndex = mergedColumns.index + findDataIndex(mergedColumns.parsedRoot, mergedColumns.memberIndex, columnMeasures);\n var offset = oldColumnsLength + newColumnsLength;\n data = this._mergeColumnData(data, startIndex, newRowsLength, newColumnsLength, offset);\n } else if (oldRowsLength !== membersCount(axes.rows.tuples, rowMeasures)) {\n startIndex = mergedRows.index + findDataIndex(mergedRows.parsedRoot, mergedRows.memberIndex, rowMeasures);\n data = this._mergeRowData(data, startIndex, newRowsLength, newColumnsLength);\n }\n if (axes.columns.tuples.length === 0 && axes.rows.tuples.length === 0) {\n data = [];\n }\n return {\n axes: axes,\n data: data\n };\n },\n _mergeColumnData: function (newData, columnIndex, rowsLength, columnsLength, offset) {\n var data = this.data().toJSON();\n var rowIndex, index, drop = 0, toAdd;\n var columnMeasures = Math.max(this._columnMeasures().length, 1);\n rowsLength = Math.max(rowsLength, 1);\n if (data.length > 0) {\n drop = columnMeasures;\n offset -= columnMeasures;\n }\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\n index = columnIndex + rowIndex * offset;\n toAdd = newData.splice(0, columnsLength);\n toAdd.splice(0, drop);\n [].splice.apply(data, [\n index,\n 0\n ].concat(toAdd));\n }\n return data;\n },\n _mergeRowData: function (newData, rowIndex, rowsLength, columnsLength) {\n var data = this.data().toJSON();\n var idx, dataIndex, toAdd;\n var rowMeasures = Math.max(this._rowMeasures().length, 1);\n columnsLength = Math.max(columnsLength, 1);\n if (data.length > 0) {\n rowsLength -= rowMeasures;\n newData.splice(0, columnsLength * rowMeasures);\n }\n for (idx = 0; idx < rowsLength; idx++) {\n toAdd = newData.splice(0, columnsLength);\n dataIndex = rowIndex * columnsLength + idx * columnsLength;\n [].splice.apply(data, [\n dataIndex,\n 0\n ].concat(toAdd));\n }\n return data;\n },\n _columnMeasures: function () {\n var measures = this.measures();\n var columnMeasures = [];\n if (this.measuresAxis() === 'columns') {\n if (this.columns().length === 0) {\n columnMeasures = measures;\n } else if (measures.length > 1) {\n columnMeasures = measures;\n }\n }\n return columnMeasures;\n },\n _rowMeasures: function () {\n var measures = this.measures();\n var rowMeasures = [];\n if (this.measuresAxis() === 'rows') {\n if (this.rows().length === 0) {\n rowMeasures = measures;\n } else if (measures.length > 1) {\n rowMeasures = measures;\n }\n }\n return rowMeasures;\n },\n _updateLocalData: function (data, state) {\n if (this.cubeBuilder) {\n if (state) {\n this._requestData = state;\n }\n data = this._processResult(data);\n }\n this._data = this._observe(data);\n this._ranges = [];\n this._addRange(this._data);\n this._total = this._data.length;\n this._pristineTotal = this._total;\n this._process(this._data);\n },\n data: function (value) {\n var that = this;\n if (value !== undefined) {\n this._pristineData = value.slice(0);\n this._updateLocalData(value, {\n columns: this.columns(),\n rows: this.rows(),\n measures: this.measures()\n });\n } else {\n return that._data;\n }\n },\n _normalizeTuples: function (tuples, source, descriptors, measures) {\n var length = measures.length || 1;\n var idx = 0;\n var roots = [];\n var indexes = {};\n var measureIdx = 0;\n var tuple, memberIdx, last;\n if (!tuples.length) {\n return;\n }\n if (this._skipNormalize <= 0 && !this._hasRoot(tuples[0], source, descriptors)) {\n this._skipNormalize = 0;\n for (; idx < length; idx++) {\n roots.push(this._createTuple(tuples[0], measures[idx], true));\n indexes[idx] = idx;\n }\n tuples.splice.apply(tuples, [\n 0,\n tuples.length\n ].concat(roots).concat(tuples));\n idx = length;\n }\n if (measures.length) {\n last = tuple = tuples[idx];\n memberIdx = tuple.members.length - 1;\n while (tuple) {\n if (measureIdx >= length) {\n measureIdx = 0;\n }\n if (tuple.members[memberIdx].name !== measures[measureIdx].name) {\n tuples.splice(idx, 0, this._createTuple(tuple, measures[measureIdx]));\n indexes[idx] = idx;\n }\n idx += 1;\n measureIdx += 1;\n tuple = tuples[idx];\n if (length > measureIdx && (!tuple || tupleName(last, memberIdx - 1) !== tupleName(tuple, memberIdx - 1))) {\n for (; measureIdx < length; measureIdx++) {\n tuples.splice(idx, 0, this._createTuple(last, measures[measureIdx]));\n indexes[idx] = idx;\n idx += 1;\n }\n tuple = tuples[idx];\n }\n last = tuple;\n }\n }\n return indexes;\n },\n _addMissingDataItems: function (result, metadata) {\n while (metadata.rowIndexes[parseInt(result.length / metadata.columnsLength, 10)] !== undefined) {\n for (var idx = 0; idx < metadata.columnsLength; idx++) {\n result = addEmptyDataItem(result);\n }\n }\n while (metadata.columnIndexes[result.length % metadata.columnsLength] !== undefined) {\n result = addEmptyDataItem(result);\n }\n return result;\n },\n _normalizeOrdinals: function (result, dataItem, metadata) {\n var lastOrdinal = metadata.lastOrdinal;\n if (!dataItem) {\n return addEmptyDataItem(result);\n }\n if (dataItem.ordinal - lastOrdinal > 1) {\n lastOrdinal += 1;\n while (lastOrdinal < dataItem.ordinal && result.length < metadata.length) {\n result = this._addMissingDataItems(addEmptyDataItem(result), metadata);\n lastOrdinal += 1;\n }\n }\n dataItem.ordinal = result.length;\n result[result.length] = dataItem;\n return result;\n },\n _normalizeData: function (options) {\n var data = options.data;\n var dataIdx = 0;\n var dataItem;\n var result = [];\n var lastOrdinal;\n var length;\n options.lastOrdinal = 0;\n options.columnIndexes = options.columnIndexes || {};\n options.rowIndexes = options.rowIndexes || {};\n options.columnsLength = options.columnsLength || 1;\n options.rowsLength = options.rowsLength || 1;\n options.length = options.columnsLength * options.rowsLength;\n length = options.length;\n if (data.length === length) {\n return data;\n }\n while (result.length < length) {\n dataItem = data[dataIdx++];\n if (dataItem) {\n lastOrdinal = dataItem.ordinal;\n }\n result = this._normalizeOrdinals(this._addMissingDataItems(result, options), dataItem, options);\n options.lastOrdinal = lastOrdinal;\n }\n return result;\n },\n discover: function (options, converter) {\n var that = this, transport = that.transport;\n return $.Deferred(function (deferred) {\n transport.discover(extend({\n success: function (response) {\n response = that.reader.parse(response);\n if (that._handleCustomErrors(response)) {\n return;\n }\n if (converter) {\n response = converter(response);\n }\n deferred.resolve(response);\n },\n error: function (response, status, error) {\n deferred.reject(response);\n that.error(response, status, error);\n }\n }, options));\n }).promise().done(function () {\n that.trigger('schemaChange');\n });\n },\n schemaMeasures: function () {\n var that = this;\n return that.discover({\n data: {\n command: 'schemaMeasures',\n restrictions: {\n catalogName: that.transport.catalog(),\n cubeName: that.transport.cube()\n }\n }\n }, function (response) {\n return that.reader.measures(response);\n });\n },\n schemaKPIs: function () {\n var that = this;\n return that.discover({\n data: {\n command: 'schemaKPIs',\n restrictions: {\n catalogName: that.transport.catalog(),\n cubeName: that.transport.cube()\n }\n }\n }, function (response) {\n return that.reader.kpis(response);\n });\n },\n schemaDimensions: function () {\n var that = this;\n return that.discover({\n data: {\n command: 'schemaDimensions',\n restrictions: {\n catalogName: that.transport.catalog(),\n cubeName: that.transport.cube()\n }\n }\n }, function (response) {\n return that.reader.dimensions(response);\n });\n },\n schemaHierarchies: function (dimensionName) {\n var that = this;\n return that.discover({\n data: {\n command: 'schemaHierarchies',\n restrictions: {\n catalogName: that.transport.catalog(),\n cubeName: that.transport.cube(),\n dimensionUniqueName: dimensionName\n }\n }\n }, function (response) {\n return that.reader.hierarchies(response);\n });\n },\n schemaLevels: function (hierarchyName) {\n var that = this;\n return that.discover({\n data: {\n command: 'schemaLevels',\n restrictions: {\n catalogName: that.transport.catalog(),\n cubeName: that.transport.cube(),\n hierarchyUniqueName: hierarchyName\n }\n }\n }, function (response) {\n return that.reader.levels(response);\n });\n },\n schemaCubes: function () {\n var that = this;\n return that.discover({\n data: {\n command: 'schemaCubes',\n restrictions: { catalogName: that.transport.catalog() }\n }\n }, function (response) {\n return that.reader.cubes(response);\n });\n },\n schemaCatalogs: function () {\n var that = this;\n return that.discover({ data: { command: 'schemaCatalogs' } }, function (response) {\n return that.reader.catalogs(response);\n });\n },\n schemaMembers: function (restrictions) {\n var that = this;\n var success = function (restrictions) {\n return function (response) {\n return that.reader.members(response, restrictions);\n };\n }(restrictions);\n return that.discover({\n data: {\n command: 'schemaMembers',\n restrictions: extend({\n catalogName: that.transport.catalog(),\n cubeName: that.transport.cube()\n }, restrictions)\n }\n }, success);\n },\n _params: function (data) {\n if (this._clearAxesData) {\n this._axes = {};\n this._data = this._observe([]);\n this._clearAxesData = false;\n this.trigger(STATERESET);\n }\n var options = DataSource.fn._params.call(this, data);\n options = extend({\n measures: this.measures(),\n measuresAxis: this.measuresAxis(),\n columns: this.columns(),\n rows: this.rows()\n }, options);\n if (this.cubeBuilder) {\n this._requestData = options;\n }\n return options;\n }\n });\n function addEmptyDataItem(result) {\n result[result.length] = {\n value: '',\n fmtValue: '',\n ordinal: result.length\n };\n return result;\n }\n function validateAxis(newAxis, axis, measures) {\n if (newAxis.tuples.length < membersCount(axis.tuples, measures)) {\n return axis;\n }\n return;\n }\n function adjustDataByColumn(sourceTuples, targetTuples, rowsLength, measures, data) {\n var columnIdx, rowIdx, dataIdx;\n var columnsLength = sourceTuples.length;\n var targetColumnsLength = membersCount(targetTuples, measures);\n var measuresLength = measures.length || 1;\n for (rowIdx = 0; rowIdx < rowsLength; rowIdx++) {\n for (columnIdx = 0; columnIdx < columnsLength; columnIdx++) {\n dataIdx = tupleIndex(sourceTuples[columnIdx], targetTuples) * measuresLength;\n dataIdx += columnIdx % measuresLength;\n data[rowIdx * columnsLength + columnIdx].ordinal = rowIdx * targetColumnsLength + dataIdx;\n }\n }\n }\n function adjustDataByRow(sourceTuples, targetTuples, columnsLength, measures, data) {\n var columnIdx, rowIdx, dataIdx;\n var rowsLength = sourceTuples.length;\n var measuresLength = measures.length || 1;\n for (rowIdx = 0; rowIdx < rowsLength; rowIdx++) {\n dataIdx = tupleIndex(sourceTuples[rowIdx], targetTuples);\n dataIdx *= measuresLength;\n dataIdx += rowIdx % measuresLength;\n for (columnIdx = 0; columnIdx < columnsLength; columnIdx++) {\n data[rowIdx * columnsLength + columnIdx].ordinal = dataIdx * columnsLength + columnIdx;\n }\n }\n }\n function tupleIndex(tuple, collection) {\n return findExistingTuple(collection, tuple).index;\n }\n function membersCount(tuples, measures) {\n if (!tuples.length) {\n return 0;\n }\n var queue = tuples.slice();\n var current = queue.shift();\n var result = 1;\n while (current) {\n if (current.members) {\n [].push.apply(queue, current.members);\n } else if (current.children) {\n if (!current.measure) {\n result += current.children.length;\n }\n [].push.apply(queue, current.children);\n }\n current = queue.shift();\n }\n if (measures.length) {\n result = result * measures.length;\n }\n return result;\n }\n function normalizeAxis(axis) {\n if (!axis) {\n axis = { tuples: [] };\n }\n if (!axis.tuples) {\n axis.tuples = [];\n }\n return axis;\n }\n function findDataIndex(tuple, memberIndex, measures) {\n if (!tuple) {\n return 0;\n }\n var measuresLength = Math.max(measures.length, 1);\n var tuples = tuple.members.slice(0, memberIndex);\n var current = tuples.shift();\n var counter = measuresLength;\n while (current) {\n if (current.name === MEASURES) {\n counter += measuresLength - 1;\n } else if (current.children) {\n [].push.apply(tuples, current.children);\n } else {\n counter++;\n [].push.apply(tuples, current.members);\n }\n current = tuples.shift();\n }\n return counter;\n }\n function mergeTuples(target, source, measures) {\n if (!source[0]) {\n return {\n parsedRoot: null,\n tuples: target,\n memberIndex: 0,\n index: 0\n };\n }\n var result = findExistingTuple(target, source[0]);\n if (!result.tuple) {\n return {\n parsedRoot: null,\n tuples: source,\n memberIndex: 0,\n index: 0\n };\n }\n var targetMembers = result.tuple.members;\n var sourceMembers = source[0].members;\n var memberIndex = -1;\n if (targetMembers.length !== sourceMembers.length) {\n return {\n parsedRoot: null,\n tuples: source,\n memberIndex: 0,\n index: 0\n };\n }\n for (var idx = 0, length = targetMembers.length; idx < length; idx++) {\n if (!targetMembers[idx].measure && sourceMembers[idx].children[0]) {\n if (memberIndex == -1 && sourceMembers[idx].children.length) {\n memberIndex = idx;\n }\n targetMembers[idx].children = sourceMembers[idx].children;\n }\n }\n measures = Math.max(measures.length, 1);\n return {\n parsedRoot: result.tuple,\n index: result.index * measures,\n memberIndex: memberIndex,\n tuples: target\n };\n }\n function equalTuples(first, second) {\n var equal = true;\n var idx, length;\n first = first.members;\n second = second.members;\n for (idx = 0, length = first.length; idx < length; idx++) {\n if (first[idx].measure || second[idx].measure) {\n continue;\n }\n equal = equal && getName(first[idx]) === getName(second[idx]);\n }\n return equal;\n }\n function findExistingTuple(tuples, toFind) {\n var idx, length, tuple, found, counter = 0;\n var memberIndex, membersLength, member;\n for (idx = 0, length = tuples.length; idx < length; idx++) {\n tuple = tuples[idx];\n if (equalTuples(tuple, toFind)) {\n return {\n tuple: tuple,\n index: counter\n };\n }\n counter++;\n for (memberIndex = 0, membersLength = tuple.members.length; memberIndex < membersLength; memberIndex++) {\n member = tuple.members[memberIndex];\n if (member.measure) {\n continue;\n }\n found = findExistingTuple(member.children, toFind);\n counter += found.index;\n if (found.tuple) {\n return {\n tuple: found.tuple,\n index: counter\n };\n }\n }\n }\n return { index: counter };\n }\n function addMembers(members, map) {\n var member, i, len, path = '';\n for (i = 0, len = members.length; i < len; i++) {\n member = members[i];\n path += member.name;\n if (!map[path]) {\n map[path] = member;\n }\n }\n }\n function findParentMember(tuple, map) {\n var members = tuple.members;\n var i, len, member, path = '';\n var parentPath = '';\n var parentMember;\n for (i = 0, len = members.length; i < len; i++) {\n member = members[i];\n if (parentMember) {\n if (map[path + member.name]) {\n path += member.name;\n parentMember = map[path];\n continue;\n } else if (map[path + member.parentName]) {\n return map[path + member.parentName];\n } else if (map[parentPath + member.parentName]) {\n return map[parentPath + member.parentName];\n } else {\n return map[parentPath];\n }\n }\n path += member.name;\n parentMember = map[member.parentName];\n if (!parentMember) {\n parentMember = map[path];\n if (!parentMember) {\n return null;\n }\n }\n if (parentMember) {\n parentPath += parentMember.name;\n }\n }\n return parentMember;\n }\n function measurePosition(tuple, measures) {\n if (measures.length === 0) {\n return -1;\n }\n var measure = measures[0];\n var members = tuple.members;\n for (var idx = 0, len = members.length; idx < len; idx++) {\n if (members[idx].name == measure.name) {\n return idx;\n }\n }\n }\n function normalizeTupleMeasures(tuple, index) {\n if (index < 0) {\n return;\n }\n var member = {\n name: MEASURES,\n measure: true,\n children: [$.extend({\n members: [],\n dataIndex: tuple.dataIndex\n }, tuple.members[index])]\n };\n tuple.members.splice(index, 1, member);\n tuple.dataIndex = undefined;\n }\n function parseSource(tuples, measures) {\n if (tuples.length < 1) {\n return [];\n }\n var result = [];\n var map = {};\n var measureIndex = measurePosition(tuples[0], measures);\n for (var i = 0; i < tuples.length; i++) {\n var tuple = tuples[i];\n tuple.dataIndex = i;\n normalizeTupleMeasures(tuple, measureIndex);\n var parentMember = findParentMember(tuple, map);\n if (parentMember) {\n if (measureIndex < 0 || !parentMember.measure) {\n parentMember.children.push(tuple);\n } else {\n parentMember.children.push(tuple.members[measureIndex].children[0]);\n }\n } else {\n result.push(tuple);\n }\n addMembers(tuple.members, map);\n }\n return result;\n }\n function prepareDataOnRows(tuples, data) {\n if (!tuples || !tuples.length) {\n return data;\n }\n var result = [];\n var indices = buildDataIndices(tuples);\n var rowsLength = indices.length;\n var columnsLength = Math.max(data.length / rowsLength, 1);\n var rowIndex, columnIndex, targetIndex, sourceIndex;\n var calcIndex;\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\n targetIndex = columnsLength * rowIndex;\n sourceIndex = columnsLength * indices[rowIndex];\n for (columnIndex = 0; columnIndex < columnsLength; columnIndex++) {\n calcIndex = parseInt(sourceIndex + columnIndex, 10);\n result[parseInt(targetIndex + columnIndex, 10)] = data[calcIndex] || {\n value: '',\n fmtValue: '',\n ordinal: calcIndex\n };\n }\n }\n return result;\n }\n function prepareDataOnColumns(tuples, data) {\n if (!tuples || !tuples.length) {\n return data;\n }\n var result = [];\n var indices = buildDataIndices(tuples);\n var columnsLength = indices.length;\n var rowsLength = Math.max(data.length / columnsLength, 1);\n var columnIndex, rowIndex, dataIndex, calcIndex;\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\n dataIndex = columnsLength * rowIndex;\n for (columnIndex = 0; columnIndex < columnsLength; columnIndex++) {\n calcIndex = indices[columnIndex] + dataIndex;\n result[dataIndex + columnIndex] = data[calcIndex] || {\n value: '',\n fmtValue: '',\n ordinal: calcIndex\n };\n }\n }\n return result;\n }\n function buildDataIndices(tuples) {\n tuples = tuples.slice();\n var result = [];\n var tuple = tuples.shift();\n var idx, length, spliceIndex, children, member;\n while (tuple) {\n if (tuple.dataIndex !== undefined) {\n result.push(tuple.dataIndex);\n }\n spliceIndex = 0;\n for (idx = 0, length = tuple.members.length; idx < length; idx++) {\n member = tuple.members[idx];\n children = member.children;\n if (member.measure) {\n [].splice.apply(tuples, [\n 0,\n 0\n ].concat(children));\n } else {\n [].splice.apply(tuples, [\n spliceIndex,\n 0\n ].concat(children));\n }\n spliceIndex += children.length;\n }\n tuple = tuples.shift();\n }\n return result;\n }\n PivotDataSource.create = function (options) {\n options = options && options.push ? { data: options } : options;\n var dataSource = options || {}, data = dataSource.data;\n dataSource.data = data;\n if (!(dataSource instanceof PivotDataSource) && dataSource instanceof kendo.data.DataSource) {\n throw new Error('Incorrect DataSource type. Only PivotDataSource instances are supported');\n }\n return dataSource instanceof PivotDataSource ? dataSource : new PivotDataSource(dataSource);\n };\n function baseHierarchyPath(memberName) {\n var parts = memberName.split('.');\n if (parts.length > 2) {\n return parts[0] + '.' + parts[1];\n }\n return memberName;\n }\n function expandMemberDescriptor(names, sort) {\n var idx = names.length - 1;\n var name = names[idx];\n var sortDescriptor;\n sortDescriptor = sortDescriptorForMember(sort, name);\n if (sortDescriptor && sortDescriptor.dir) {\n name = 'ORDER(' + name + '.Children,' + sortDescriptor.field + '.CurrentMember.MEMBER_CAPTION,' + sortDescriptor.dir + ')';\n } else {\n name += '.Children';\n }\n names[idx] = name;\n return names;\n }\n function sortDescriptorForMember(sort, member) {\n for (var idx = 0, length = sort.length; idx < length; idx++) {\n if (member.indexOf(sort[idx].field) === 0) {\n return sort[idx];\n }\n }\n return null;\n }\n function crossJoin(names) {\n var result = 'CROSSJOIN({';\n var r;\n if (names.length > 2) {\n r = names.pop();\n result += crossJoin(names);\n } else {\n result += names.shift();\n r = names.pop();\n }\n result += '},{';\n result += r;\n result += '})';\n return result;\n }\n function crossJoinCommand(members, measures) {\n var tmp = members.slice(0);\n if (measures.length > 1) {\n tmp.push('{' + measureNames(measures).join(',') + '}');\n }\n return crossJoin(tmp);\n }\n function measureNames(measures) {\n var idx = 0;\n var length = measures.length;\n var result = [];\n var measure;\n for (; idx < length; idx++) {\n measure = measures[idx];\n result.push(measure.name !== undefined ? measure.name : measure);\n }\n return result;\n }\n function getName(name) {\n name = name.name || name;\n if (toString.call(name) === '[object Array]') {\n name = name[name.length - 1];\n }\n return name;\n }\n function getRootNames(members) {\n var length = members.length;\n var names = [];\n var idx = 0;\n for (; idx < length; idx++) {\n names.push(members[idx].name[0]);\n }\n return names;\n }\n function mapNames(names, rootNames) {\n var name;\n var rootName;\n var j;\n var idx = 0;\n var length = names.length;\n var rootLength = rootNames.length;\n rootNames = rootNames.slice(0);\n for (; idx < length; idx++) {\n name = names[idx];\n for (j = 0; j < rootLength; j++) {\n rootName = baseHierarchyPath(rootNames[j]);\n if (name.indexOf(rootName) !== -1) {\n rootNames[j] = name;\n break;\n }\n }\n }\n return {\n names: rootNames,\n expandedIdx: j,\n uniquePath: rootNames.slice(0, j + 1).join('')\n };\n }\n function parseDescriptors(members) {\n var expanded = [];\n var child = [];\n var root = [];\n var member;\n var j, l;\n var idx = 0;\n var length = members.length;\n var name;\n var hierarchyName;\n var found;\n for (; idx < length; idx++) {\n member = members[idx];\n name = member.name;\n found = false;\n if (toString.call(name) !== '[object Array]') {\n member.name = name = [name];\n }\n if (name.length > 1) {\n child.push(member);\n } else {\n hierarchyName = baseHierarchyPath(name[0]);\n for (j = 0, l = root.length; j < l; j++) {\n if (root[j].name[0].indexOf(hierarchyName) === 0) {\n found = true;\n break;\n }\n }\n if (!found) {\n root.push(member);\n }\n if (member.expand) {\n expanded.push(member);\n }\n }\n }\n expanded = expanded.concat(child);\n return {\n root: root,\n expanded: expanded\n };\n }\n function serializeMembers(members, measures, sort) {\n var command = '';\n members = members || [];\n var expanded = parseDescriptors(members);\n var root = expanded.root;\n var rootNames = getRootNames(root);\n var crossJoinCommands = [];\n expanded = expanded.expanded;\n var length = expanded.length;\n var idx = 0;\n var memberName;\n var names = [];\n if (rootNames.length > 1 || measures.length > 1) {\n crossJoinCommands.push(crossJoinCommand(rootNames, measures));\n for (; idx < length; idx++) {\n memberName = expandMemberDescriptor(expanded[idx].name, sort);\n names = mapNames(memberName, rootNames).names;\n crossJoinCommands.push(crossJoinCommand(names, measures));\n }\n command += crossJoinCommands.join(',');\n } else {\n for (; idx < length; idx++) {\n memberName = expandMemberDescriptor(expanded[idx].name, sort);\n names.push(memberName[0]);\n }\n command += rootNames.concat(names).join(',');\n }\n return command;\n }\n var filterFunctionFormats = {\n contains: ', InStr({0}.CurrentMember.MEMBER_CAPTION,\"{1}\") > 0',\n doesnotcontain: ', InStr({0}.CurrentMember.MEMBER_CAPTION,\"{1}\")',\n startswith: ', Left({0}.CurrentMember.MEMBER_CAPTION,Len(\"{1}\"))=\"{1}\"',\n endswith: ', Right({0}.CurrentMember.MEMBER_CAPTION,Len(\"{1}\"))=\"{1}\"',\n eq: ', {0}.CurrentMember.MEMBER_CAPTION = \"{1}\"',\n neq: ', {0}.CurrentMember.MEMBER_CAPTION = \"{1}\"'\n };\n function serializeExpression(expression) {\n var command = '';\n var value = expression.value;\n var field = expression.field;\n var operator = expression.operator;\n if (operator == 'in') {\n command += '{';\n command += value;\n command += '}';\n } else {\n command += operator == 'neq' || operator == 'doesnotcontain' ? '-' : '';\n command += 'Filter(';\n command += field + '.MEMBERS';\n command += kendo.format(filterFunctionFormats[operator], field, value);\n command += ')';\n }\n return command;\n }\n function serializeFilters(filter, cube) {\n var command = '', current;\n var filters = filter.filters;\n var length = filters.length;\n var idx;\n for (idx = length - 1; idx >= 0; idx--) {\n current = 'SELECT (';\n current += serializeExpression(filters[idx]);\n current += ') ON 0';\n if (idx == length - 1) {\n current += ' FROM [' + cube + ']';\n command = current;\n } else {\n command = current + ' FROM ( ' + command + ' )';\n }\n }\n return command;\n }\n function serializeOptions(parentTagName, options, capitalize) {\n var result = '';\n if (options) {\n result += '<' + parentTagName + '>';\n var value;\n for (var key in options) {\n value = options[key];\n if (capitalize) {\n key = key.replace(/([A-Z]+(?=$|[A-Z][a-z])|[A-Z]?[a-z]+)/g, '$1_').toUpperCase().replace(/_$/, '');\n }\n result += '<' + key + '>' + value + '</' + key + '>';\n }\n result += '</' + parentTagName + '>';\n } else {\n result += '<' + parentTagName + '/>';\n }\n return result;\n }\n var xmlaDiscoverCommands = {\n schemaCubes: 'MDSCHEMA_CUBES',\n schemaCatalogs: 'DBSCHEMA_CATALOGS',\n schemaMeasures: 'MDSCHEMA_MEASURES',\n schemaDimensions: 'MDSCHEMA_DIMENSIONS',\n schemaHierarchies: 'MDSCHEMA_HIERARCHIES',\n schemaLevels: 'MDSCHEMA_LEVELS',\n schemaMembers: 'MDSCHEMA_MEMBERS',\n schemaKPIs: 'MDSCHEMA_KPIS'\n };\n var convertersMap = {\n read: function (options) {\n var command = '<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"><Header/><Body><Execute xmlns=\"urn:schemas-microsoft-com:xml-analysis\"><Command><Statement>';\n command += 'SELECT NON EMPTY {';\n var columns = options.columns || [];\n var rows = options.rows || [];\n var measures = options.measures || [];\n var measuresRowAxis = options.measuresAxis === 'rows';\n var sort = options.sort || [];\n if (!columns.length && rows.length && (!measures.length || measures.length && measuresRowAxis)) {\n columns = rows;\n rows = [];\n measuresRowAxis = false;\n }\n if (!columns.length && !rows.length) {\n measuresRowAxis = false;\n }\n if (columns.length) {\n command += serializeMembers(columns, !measuresRowAxis ? measures : [], sort);\n } else if (measures.length && !measuresRowAxis) {\n command += measureNames(measures).join(',');\n }\n command += '} DIMENSION PROPERTIES CHILDREN_CARDINALITY, PARENT_UNIQUE_NAME ON COLUMNS';\n if (rows.length || measuresRowAxis && measures.length > 1) {\n command += ', NON EMPTY {';\n if (rows.length) {\n command += serializeMembers(rows, measuresRowAxis ? measures : [], sort);\n } else {\n command += measureNames(measures).join(',');\n }\n command += '} DIMENSION PROPERTIES CHILDREN_CARDINALITY, PARENT_UNIQUE_NAME ON ROWS';\n }\n if (options.filter) {\n command += ' FROM ';\n command += '(';\n command += serializeFilters(options.filter, options.connection.cube);\n command += ')';\n } else {\n command += ' FROM [' + options.connection.cube + ']';\n }\n if (measures.length == 1 && columns.length) {\n command += ' WHERE (' + measureNames(measures).join(',') + ')';\n }\n command += '</Statement></Command><Properties><PropertyList><Catalog>' + options.connection.catalog + '</Catalog><Format>Multidimensional</Format></PropertyList></Properties></Execute></Body></Envelope>';\n return command.replace(/\\&/g, '&');\n },\n discover: function (options) {\n options = options || {};\n var command = '<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"><Header/><Body><Discover xmlns=\"urn:schemas-microsoft-com:xml-analysis\">';\n command += '<RequestType>' + (xmlaDiscoverCommands[options.command] || options.command) + '</RequestType>';\n command += '<Restrictions>' + serializeOptions('RestrictionList', options.restrictions, true) + '</Restrictions>';\n if (options.connection && options.connection.catalog) {\n options.properties = $.extend({}, { Catalog: options.connection.catalog }, options.properties);\n }\n command += '<Properties>' + serializeOptions('PropertyList', options.properties) + '</Properties>';\n command += '</Discover></Body></Envelope>';\n return command;\n }\n };\n var XmlaTransport = kendo.data.RemoteTransport.extend({\n init: function (options) {\n var originalOptions = options;\n options = this.options = extend(true, {}, this.options, options);\n kendo.data.RemoteTransport.call(this, options);\n if (isFunction(originalOptions.discover)) {\n this.discover = originalOptions.discover;\n } else if (typeof originalOptions.discover === 'string') {\n this.options.discover = { url: originalOptions.discover };\n } else if (!originalOptions.discover) {\n this.options.discover = this.options.read;\n }\n },\n setup: function (options, type) {\n options.data = options.data || {};\n $.extend(true, options.data, { connection: this.options.connection });\n return kendo.data.RemoteTransport.fn.setup.call(this, options, type);\n },\n options: {\n read: {\n dataType: 'text',\n contentType: 'text/xml',\n type: 'POST'\n },\n discover: {\n dataType: 'text',\n contentType: 'text/xml',\n type: 'POST'\n },\n parameterMap: function (options, type) {\n return convertersMap[type](options, type);\n }\n },\n discover: function (options) {\n return $.ajax(this.setup(options, 'discover'));\n }\n });\n function asArray(object) {\n if (object == null) {\n return [];\n }\n var type = toString.call(object);\n if (type !== '[object Array]') {\n return [object];\n }\n return object;\n }\n function translateAxis(axis) {\n var result = { tuples: [] };\n var tuples = asArray(kendo.getter('Tuples.Tuple', true)(axis));\n var captionGetter = kendo.getter('Caption[\\'#text\\']');\n var unameGetter = kendo.getter('UName[\\'#text\\']');\n var levelNameGetter = kendo.getter('LName[\\'#text\\']');\n var levelNumGetter = kendo.getter('LNum[\\'#text\\']');\n var childrenGetter = kendo.getter('CHILDREN_CARDINALITY[\\'#text\\']', true);\n var hierarchyGetter = kendo.getter('[\\'@Hierarchy\\']');\n var parentNameGetter = kendo.getter('PARENT_UNIQUE_NAME[\\'#text\\']', true);\n for (var idx = 0; idx < tuples.length; idx++) {\n var members = [];\n var member = asArray(tuples[idx].Member);\n for (var memberIdx = 0; memberIdx < member.length; memberIdx++) {\n members.push({\n children: [],\n caption: captionGetter(member[memberIdx]),\n name: unameGetter(member[memberIdx]),\n levelName: levelNameGetter(member[memberIdx]),\n levelNum: levelNumGetter(member[memberIdx]),\n hasChildren: parseInt(childrenGetter(member[memberIdx]), 10) > 0,\n parentName: parentNameGetter(member[memberIdx]),\n hierarchy: hierarchyGetter(member[memberIdx])\n });\n }\n result.tuples.push({ members: members });\n }\n return result;\n }\n var schemaDataReaderMap = {\n cubes: {\n name: kendo.getter('CUBE_NAME[\\'#text\\']', true),\n caption: kendo.getter('CUBE_CAPTION[\\'#text\\']', true),\n description: kendo.getter('DESCRIPTION[\\'#text\\']', true),\n type: kendo.getter('CUBE_TYPE[\\'#text\\']', true)\n },\n catalogs: {\n name: kendo.getter('CATALOG_NAME[\\'#text\\']', true),\n description: kendo.getter('DESCRIPTION[\\'#text\\']', true)\n },\n measures: {\n name: kendo.getter('MEASURE_NAME[\\'#text\\']', true),\n caption: kendo.getter('MEASURE_CAPTION[\\'#text\\']', true),\n uniqueName: kendo.getter('MEASURE_UNIQUE_NAME[\\'#text\\']', true),\n description: kendo.getter('DESCRIPTION[\\'#text\\']', true),\n aggregator: kendo.getter('MEASURE_AGGREGATOR[\\'#text\\']', true),\n groupName: kendo.getter('MEASUREGROUP_NAME[\\'#text\\']', true),\n displayFolder: kendo.getter('MEASURE_DISPLAY_FOLDER[\\'#text\\']', true),\n defaultFormat: kendo.getter('DEFAULT_FORMAT_STRING[\\'#text\\']', true)\n },\n kpis: {\n name: kendo.getter('KPI_NAME[\\'#text\\']', true),\n caption: kendo.getter('KPI_CAPTION[\\'#text\\']', true),\n value: kendo.getter('KPI_VALUE[\\'#text\\']', true),\n goal: kendo.getter('KPI_GOAL[\\'#text\\']', true),\n status: kendo.getter('KPI_STATUS[\\'#text\\']', true),\n trend: kendo.getter('KPI_TREND[\\'#text\\']', true),\n statusGraphic: kendo.getter('KPI_STATUS_GRAPHIC[\\'#text\\']', true),\n trendGraphic: kendo.getter('KPI_TREND_GRAPHIC[\\'#text\\']', true),\n description: kendo.getter('KPI_DESCRIPTION[\\'#text\\']', true),\n groupName: kendo.getter('MEASUREGROUP_NAME[\\'#text\\']', true)\n },\n dimensions: {\n name: kendo.getter('DIMENSION_NAME[\\'#text\\']', true),\n caption: kendo.getter('DIMENSION_CAPTION[\\'#text\\']', true),\n description: kendo.getter('DESCRIPTION[\\'#text\\']', true),\n uniqueName: kendo.getter('DIMENSION_UNIQUE_NAME[\\'#text\\']', true),\n defaultHierarchy: kendo.getter('DEFAULT_HIERARCHY[\\'#text\\']', true),\n type: kendo.getter('DIMENSION_TYPE[\\'#text\\']', true)\n },\n hierarchies: {\n name: kendo.getter('HIERARCHY_NAME[\\'#text\\']', true),\n caption: kendo.getter('HIERARCHY_CAPTION[\\'#text\\']', true),\n description: kendo.getter('DESCRIPTION[\\'#text\\']', true),\n uniqueName: kendo.getter('HIERARCHY_UNIQUE_NAME[\\'#text\\']', true),\n dimensionUniqueName: kendo.getter('DIMENSION_UNIQUE_NAME[\\'#text\\']', true),\n displayFolder: kendo.getter('HIERARCHY_DISPLAY_FOLDER[\\'#text\\']', true),\n origin: kendo.getter('HIERARCHY_ORIGIN[\\'#text\\']', true),\n defaultMember: kendo.getter('DEFAULT_MEMBER[\\'#text\\']', true)\n },\n levels: {\n name: kendo.getter('LEVEL_NAME[\\'#text\\']', true),\n caption: kendo.getter('LEVEL_CAPTION[\\'#text\\']', true),\n description: kendo.getter('DESCRIPTION[\\'#text\\']', true),\n uniqueName: kendo.getter('LEVEL_UNIQUE_NAME[\\'#text\\']', true),\n dimensionUniqueName: kendo.getter('DIMENSION_UNIQUE_NAME[\\'#text\\']', true),\n displayFolder: kendo.getter('LEVEL_DISPLAY_FOLDER[\\'#text\\']', true),\n orderingProperty: kendo.getter('LEVEL_ORDERING_PROPERTY[\\'#text\\']', true),\n origin: kendo.getter('LEVEL_ORIGIN[\\'#text\\']', true),\n hierarchyUniqueName: kendo.getter('HIERARCHY_UNIQUE_NAME[\\'#text\\']', true)\n },\n members: {\n name: kendo.getter('MEMBER_NAME[\\'#text\\']', true),\n caption: kendo.getter('MEMBER_CAPTION[\\'#text\\']', true),\n uniqueName: kendo.getter('MEMBER_UNIQUE_NAME[\\'#text\\']', true),\n dimensionUniqueName: kendo.getter('DIMENSION_UNIQUE_NAME[\\'#text\\']', true),\n hierarchyUniqueName: kendo.getter('HIERARCHY_UNIQUE_NAME[\\'#text\\']', true),\n levelUniqueName: kendo.getter('LEVEL_UNIQUE_NAME[\\'#text\\']', true),\n childrenCardinality: kendo.getter('CHILDREN_CARDINALITY[\\'#text\\']', true)\n }\n };\n var xmlaReaderMethods = [\n 'axes',\n 'catalogs',\n 'cubes',\n 'dimensions',\n 'hierarchies',\n 'levels',\n 'measures'\n ];\n var XmlaDataReader = kendo.data.XmlDataReader.extend({\n init: function (options) {\n kendo.data.XmlDataReader.call(this, options);\n this._extend(options);\n },\n _extend: function (options) {\n var idx = 0;\n var length = xmlaReaderMethods.length;\n var methodName;\n var option;\n for (; idx < length; idx++) {\n methodName = xmlaReaderMethods[idx];\n option = options[methodName];\n if (option && option !== identity) {\n this[methodName] = option;\n }\n }\n },\n parse: function (xml) {\n var result = kendo.data.XmlDataReader.fn.parse(xml.replace(/<(\\/?)(\\w|-)+:/g, '<$1'));\n return kendo.getter('[\\'Envelope\\'][\\'Body\\']', true)(result);\n },\n errors: function (root) {\n var fault = kendo.getter('[\\'Fault\\']', true)(root);\n if (fault) {\n return [{\n faultstring: kendo.getter('faultstring[\\'#text\\']', true)(fault),\n faultcode: kendo.getter('faultcode[\\'#text\\']', true)(fault)\n }];\n }\n return null;\n },\n axes: function (root) {\n root = kendo.getter('ExecuteResponse[\"return\"].root', true)(root);\n var axes = asArray(kendo.getter('Axes.Axis', true)(root));\n var axis;\n var result = {\n columns: {},\n rows: {}\n };\n for (var idx = 0; idx < axes.length; idx++) {\n axis = axes[idx];\n if (axis['@name'].toLowerCase() !== 'sliceraxis') {\n if (!result.columns.tuples) {\n result.columns = translateAxis(axis);\n } else {\n result.rows = translateAxis(axis);\n }\n }\n }\n return result;\n },\n data: function (root) {\n root = kendo.getter('ExecuteResponse[\"return\"].root', true)(root);\n var cells = asArray(kendo.getter('CellData.Cell', true)(root));\n var result = [];\n var ordinalGetter = kendo.getter('[\\'@CellOrdinal\\']');\n var valueGetter = kendo.getter('Value[\\'#text\\']');\n var fmtValueGetter = kendo.getter('FmtValue[\\'#text\\']');\n for (var idx = 0; idx < cells.length; idx++) {\n result.push({\n value: valueGetter(cells[idx]),\n fmtValue: fmtValueGetter(cells[idx]),\n ordinal: parseInt(ordinalGetter(cells[idx]), 10)\n });\n }\n return result;\n },\n _mapSchema: function (root, getters) {\n root = kendo.getter('DiscoverResponse[\"return\"].root', true)(root);\n var rows = asArray(kendo.getter('row', true)(root));\n var result = [];\n for (var idx = 0; idx < rows.length; idx++) {\n var obj = {};\n for (var key in getters) {\n obj[key] = getters[key](rows[idx]);\n }\n result.push(obj);\n }\n return result;\n },\n measures: function (root) {\n return this._mapSchema(root, schemaDataReaderMap.measures);\n },\n kpis: function (root) {\n return this._mapSchema(root, schemaDataReaderMap.kpis);\n },\n hierarchies: function (root) {\n return this._mapSchema(root, schemaDataReaderMap.hierarchies);\n },\n levels: function (root) {\n return this._mapSchema(root, schemaDataReaderMap.levels);\n },\n dimensions: function (root) {\n return this._mapSchema(root, schemaDataReaderMap.dimensions);\n },\n cubes: function (root) {\n return this._mapSchema(root, schemaDataReaderMap.cubes);\n },\n catalogs: function (root) {\n return this._mapSchema(root, schemaDataReaderMap.catalogs);\n },\n members: function (root) {\n return this._mapSchema(root, schemaDataReaderMap.members);\n }\n });\n extend(true, kendo.data, {\n PivotDataSource: PivotDataSource,\n XmlaTransport: XmlaTransport,\n XmlaDataReader: XmlaDataReader,\n PivotCubeBuilder: PivotCubeBuilder,\n transports: { xmla: XmlaTransport },\n readers: { xmla: XmlaDataReader }\n });\n var sortExpr = function (expressions, name) {\n if (!expressions) {\n return null;\n }\n for (var idx = 0, length = expressions.length; idx < length; idx++) {\n if (expressions[idx].field === name) {\n return expressions[idx];\n }\n }\n return null;\n };\n var removeExpr = function (expressions, name) {\n var result = [];\n for (var idx = 0, length = expressions.length; idx < length; idx++) {\n if (expressions[idx].field !== name) {\n result.push(expressions[idx]);\n }\n }\n return result;\n };\n kendo.ui.PivotSettingTarget = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that.element.addClass('k-pivot-setting');\n that.dataSource = kendo.data.PivotDataSource.create(options.dataSource);\n that._refreshHandler = $.proxy(that.refresh, that);\n that.dataSource.first(CHANGE, that._refreshHandler);\n if (!options.template) {\n that.options.template = '<div data-' + kendo.ns + 'name=\"${data.name || data}\">${data.name || data}' + (that.options.enabled ? '<a class=\"k-button k-button-icon k-bare\"><span class=\"k-icon k-i-close k-setting-delete\"></span></a>' : '') + '</div>';\n }\n that.template = kendo.template(that.options.template);\n that.emptyTemplate = kendo.template(that.options.emptyTemplate);\n that._sortable();\n that.element.on('click' + NS, '.k-button,.k-item', function (e) {\n var target = $(e.target);\n var name = target.closest('[' + kendo.attr('name') + ']').attr(kendo.attr('name'));\n if (!name) {\n return;\n }\n if (target.hasClass('k-i-close')) {\n that.remove(name);\n } else if (that.options.sortable && target[0] === e.currentTarget) {\n that.sort({\n field: name,\n dir: target.find('.k-i-sort-asc-sm')[0] ? 'desc' : 'asc'\n });\n }\n });\n if (options.filterable || options.sortable) {\n that.fieldMenu = new ui.PivotFieldMenu(that.element, {\n messages: that.options.messages.fieldMenu,\n filter: '.k-setting-fieldmenu',\n filterable: options.filterable,\n sortable: options.sortable,\n dataSource: that.dataSource\n });\n }\n that.refresh();\n },\n options: {\n name: 'PivotSettingTarget',\n template: null,\n filterable: false,\n sortable: false,\n emptyTemplate: '<div class=\\'k-empty\\'>${data}</div>',\n setting: 'columns',\n enabled: true,\n messages: { empty: 'Drop Fields Here' }\n },\n setDataSource: function (dataSource) {\n this.dataSource.unbind(CHANGE, this._refreshHandler);\n this.dataSource = this.options.dataSource = dataSource;\n if (this.fieldMenu) {\n this.fieldMenu.setDataSource(dataSource);\n }\n dataSource.first(CHANGE, this._refreshHandler);\n this.refresh();\n },\n _sortable: function () {\n var that = this;\n if (that.options.enabled) {\n this.sortable = this.element.kendoSortable({\n connectWith: this.options.connectWith,\n hint: that.options.hint,\n cursor: 'move',\n start: function (e) {\n e.item.focus().blur();\n },\n change: function (e) {\n var name = e.item.attr(kendo.attr('name'));\n if (e.action == 'receive') {\n that.add(name);\n } else if (e.action == 'remove') {\n that.remove(name);\n } else if (e.action == 'sort') {\n that.move(name, e.newIndex);\n }\n }\n }).data('kendoSortable');\n }\n },\n _indexOf: function (name, items) {\n var idx, length, index = -1;\n for (idx = 0, length = items.length; idx < length; idx++) {\n if (getName(items[idx]) === name) {\n index = idx;\n break;\n }\n }\n return index;\n },\n _isKPI: function (data) {\n return data.type === 'kpi' || data.measure;\n },\n validate: function (data) {\n var isMeasure = data.type == 2 || 'aggregator' in data || this._isKPI(data);\n if (isMeasure) {\n return this.options.setting === 'measures';\n }\n if (this.options.setting === 'measures') {\n return isMeasure;\n }\n var items = this.dataSource[this.options.setting]();\n var name = data.defaultHierarchy || data.uniqueName;\n if (this._indexOf(name, items) > -1) {\n return false;\n }\n items = this.dataSource[this.options.setting === 'columns' ? 'rows' : 'columns']();\n if (this._indexOf(name, items) > -1) {\n return false;\n }\n return true;\n },\n add: function (name) {\n var items = this.dataSource[this.options.setting]();\n var i, l;\n name = $.isArray(name) ? name.slice(0) : [name];\n for (i = 0, l = name.length; i < l; i++) {\n if (this._indexOf(name[i], items) !== -1) {\n name.splice(i, 1);\n i -= 1;\n l -= 1;\n }\n }\n if (name.length) {\n items = items.concat(name);\n this.dataSource[this.options.setting](items);\n }\n },\n move: function (name, index) {\n var items = this.dataSource[this.options.setting]();\n var idx = this._indexOf(name, items);\n if (idx > -1) {\n name = items.splice(idx, 1)[0];\n items.splice(index, 0, name);\n this.dataSource[this.options.setting](items);\n }\n },\n remove: function (name) {\n var items = this.dataSource[this.options.setting]();\n var idx = this._indexOf(name, items);\n var sortExpressions = this.dataSource.sort();\n var filter = this.dataSource.filter();\n if (idx > -1) {\n if (filter) {\n filter.filters = removeExpr(filter.filters, name);\n this.dataSource._filter.filters = filter.filters;\n if (!filter.filters.length) {\n this.dataSource._filter = null;\n }\n }\n if (sortExpressions) {\n sortExpressions = removeExpr(sortExpressions, name);\n this.dataSource._sort = sortExpressions;\n }\n items.splice(idx, 1);\n this.dataSource[this.options.setting](items);\n }\n },\n sort: function (expr) {\n var sortable = this.options.sortable;\n var allowUnsort = sortable === true || sortable.allowUnsort;\n var skipExpr = allowUnsort && expr.dir === 'asc';\n var expressions = this.dataSource.sort() || [];\n var result = removeExpr(expressions, expr.field);\n if (skipExpr && expressions.length !== result.length) {\n expr = null;\n }\n if (expr) {\n result.push(expr);\n }\n this.dataSource.sort(result);\n },\n refresh: function () {\n var html = '';\n var items = this.dataSource[this.options.setting]();\n var length = items.length;\n var idx = 0;\n var item;\n if (length) {\n for (; idx < length; idx++) {\n item = items[idx];\n item = item.name === undefined ? { name: item } : item;\n html += this.template(extend({ sortIcon: this._sortIcon(item.name) }, item));\n }\n } else {\n html = this.emptyTemplate(this.options.messages.empty);\n }\n this.element.html(html);\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.dataSource.unbind(CHANGE, this._refreshHandler);\n this.element.off(NS);\n if (this.sortable) {\n this.sortable.destroy();\n }\n if (this.fieldMenu) {\n this.fieldMenu.destroy();\n }\n this.element = null;\n this._refreshHandler = null;\n },\n _sortIcon: function (name) {\n var expressions = this.dataSource.sort();\n var expr = sortExpr(expressions, getName(name));\n var icon = '';\n if (expr) {\n icon = 'k-i-sort-' + expr.dir;\n }\n return icon;\n }\n });\n var PivotGrid = Widget.extend({\n init: function (element, options) {\n var that = this;\n var columnBuilder;\n var rowBuilder;\n Widget.fn.init.call(that, element, options);\n that._dataSource();\n that._bindConfigurator();\n that._wrapper();\n that._createLayout();\n that._columnBuilder = columnBuilder = new ColumnBuilder();\n that._rowBuilder = rowBuilder = new RowBuilder();\n that._contentBuilder = new ContentBuilder();\n that._templates();\n that.columnsHeader.add(that.rowsHeader).on('click', 'span.k-icon', function () {\n var button = $(this);\n var builder = columnBuilder;\n var action = 'expandColumn';\n var eventName;\n var path = button.attr(kendo.attr('path'));\n var eventArgs = {\n axis: 'columns',\n path: $.parseJSON(path)\n };\n if (button.parent().is('td')) {\n builder = rowBuilder;\n action = 'expandRow';\n eventArgs.axis = 'rows';\n }\n var expanded = button.hasClass(STATE_EXPANDED);\n var metadata = builder.metadata[path];\n var request = metadata.expanded === undefined;\n eventName = expanded ? COLLAPSEMEMBER : EXPANDMEMBER;\n eventArgs.childrenLoaded = metadata.maxChildren > metadata.children;\n if (that.trigger(eventName, eventArgs)) {\n return;\n }\n builder.metadata[path].expanded = !expanded;\n button.toggleClass(STATE_EXPANDED, !expanded).toggleClass(STATE_COLLAPSED, expanded);\n if (!expanded && request) {\n that.dataSource[action](eventArgs.path);\n } else {\n that.refresh();\n }\n });\n that._scrollable();\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n kendo.notify(that);\n },\n events: [\n DATABINDING,\n DATABOUND,\n EXPANDMEMBER,\n COLLAPSEMEMBER\n ],\n options: {\n name: 'PivotGrid',\n autoBind: true,\n reorderable: true,\n filterable: false,\n sortable: false,\n height: null,\n columnWidth: 100,\n configurator: '',\n columnHeaderTemplate: null,\n rowHeaderTemplate: null,\n dataCellTemplate: null,\n kpiStatusTemplate: null,\n kpiTrendTemplate: null,\n messages: {\n measureFields: 'Drop Data Fields Here',\n columnFields: 'Drop Column Fields Here',\n rowFields: 'Drop Rows Fields Here'\n }\n },\n _templates: function () {\n var columnTemplate = this.options.columnHeaderTemplate;\n var rowTemplate = this.options.rowHeaderTemplate;\n var dataTemplate = this.options.dataCellTemplate;\n var kpiStatusTemplate = this.options.kpiStatusTemplate;\n var kpiTrendTemplate = this.options.kpiTrendTemplate;\n this._columnBuilder.template = kendo.template(columnTemplate || HEADER_TEMPLATE, { useWithBlock: !!columnTemplate });\n this._contentBuilder.dataTemplate = kendo.template(dataTemplate || DATACELL_TEMPLATE, { useWithBlock: !!dataTemplate });\n this._contentBuilder.kpiStatusTemplate = kendo.template(kpiStatusTemplate || KPISTATUS_TEMPLATE, { useWithBlock: !!kpiStatusTemplate });\n this._contentBuilder.kpiTrendTemplate = kendo.template(kpiTrendTemplate || KPITREND_TEMPLATE, { useWithBlock: !!kpiTrendTemplate });\n this._rowBuilder.template = kendo.template(rowTemplate || HEADER_TEMPLATE, { useWithBlock: !!rowTemplate });\n },\n _bindConfigurator: function () {\n var configurator = this.options.configurator;\n if (configurator) {\n $(configurator).kendoPivotConfigurator('setDataSource', this.dataSource);\n }\n },\n cellInfoByElement: function (element) {\n element = $(element);\n return this.cellInfo(element.index(), element.parent('tr').index());\n },\n cellInfo: function (columnIndex, rowIndex) {\n var contentBuilder = this._contentBuilder;\n var columnInfo = contentBuilder.columnIndexes[columnIndex || 0];\n var rowInfo = contentBuilder.rowIndexes[rowIndex || 0];\n var dataIndex;\n if (!columnInfo || !rowInfo) {\n return null;\n }\n dataIndex = rowInfo.index * contentBuilder.rowLength + columnInfo.index;\n return {\n columnTuple: columnInfo.tuple,\n rowTuple: rowInfo.tuple,\n measure: columnInfo.measure || rowInfo.measure,\n dataItem: this.dataSource.view()[dataIndex]\n };\n },\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._dataSource();\n if (this.measuresTarget) {\n this.measuresTarget.setDataSource(dataSource);\n }\n if (this.rowsTarget) {\n this.rowsTarget.setDataSource(dataSource);\n }\n if (this.columnsTarget) {\n this.columnsTarget.setDataSource(dataSource);\n }\n this._bindConfigurator();\n if (this.options.autoBind) {\n dataSource.fetch();\n }\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._templates();\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n clearTimeout(this._headerReflowTimeout);\n },\n _dataSource: function () {\n var that = this;\n var dataSource = that.options.dataSource;\n dataSource = $.isArray(dataSource) ? { data: dataSource } : dataSource;\n if (that.dataSource && this._refreshHandler) {\n that.dataSource.unbind(CHANGE, that._refreshHandler).unbind(STATERESET, that._stateResetHandler).unbind(PROGRESS, that._progressHandler).unbind(ERROR, that._errorHandler);\n } else {\n that._refreshHandler = $.proxy(that.refresh, that);\n that._progressHandler = $.proxy(that._requestStart, that);\n that._stateResetHandler = $.proxy(that._stateReset, that);\n that._errorHandler = $.proxy(that._error, that);\n }\n that.dataSource = kendo.data.PivotDataSource.create(dataSource).bind(CHANGE, that._refreshHandler).bind(PROGRESS, that._progressHandler).bind(STATERESET, that._stateResetHandler).bind(ERROR, that._errorHandler);\n },\n _error: function () {\n this._progress(false);\n },\n _requestStart: function () {\n this._progress(true);\n },\n _stateReset: function () {\n this._columnBuilder.reset();\n this._rowBuilder.reset();\n },\n _wrapper: function () {\n var height = this.options.height;\n this.wrapper = this.element.addClass('k-widget k-pivot');\n if (height) {\n this.wrapper.css('height', height);\n }\n },\n _measureFields: function () {\n this.measureFields = $(DIV).addClass('k-pivot-toolbar k-header k-settings-measures');\n this.measuresTarget = this._createSettingTarget(this.measureFields, {\n setting: 'measures',\n messages: { empty: this.options.messages.measureFields }\n });\n },\n _createSettingTarget: function (element, options) {\n var template = '<span tabindex=\"0\" class=\"k-button\" data-' + kendo.ns + 'name=\"${data.name}\">${data.name}';\n var sortable = options.sortable;\n var icons = '';\n if (sortable) {\n icons += '#if (data.sortIcon) {#';\n icons += '<span class=\"k-icon ${data.sortIcon}-sm\"></span>';\n icons += '#}#';\n }\n if (options.filterable || sortable) {\n icons += '<span class=\"k-icon k-i-more-vertical k-setting-fieldmenu\"></span>';\n }\n if (this.options.reorderable) {\n icons += '<span class=\"k-icon k-i-close k-setting-delete\"></span>';\n }\n if (icons) {\n template += '<span class=\"k-field-actions\">' + icons + '</span>';\n }\n template += '</span>';\n return new kendo.ui.PivotSettingTarget(element, $.extend({\n template: template,\n emptyTemplate: '<span class=\"k-empty\">${data}</span>',\n enabled: this.options.reorderable,\n dataSource: this.dataSource\n }, options));\n },\n _initSettingTargets: function () {\n this.columnsTarget = this._createSettingTarget(this.columnFields, {\n connectWith: this.rowFields,\n setting: 'columns',\n filterable: this.options.filterable,\n sortable: this.options.sortable,\n messages: {\n empty: this.options.messages.columnFields,\n fieldMenu: this.options.messages.fieldMenu\n }\n });\n this.rowsTarget = this._createSettingTarget(this.rowFields, {\n connectWith: this.columnFields,\n setting: 'rows',\n filterable: this.options.filterable,\n sortable: this.options.sortable,\n messages: {\n empty: this.options.messages.rowFields,\n fieldMenu: this.options.messages.fieldMenu\n }\n });\n },\n _createLayout: function () {\n var that = this;\n var layoutTable = $(LAYOUT_TABLE);\n var leftContainer = layoutTable.find('.k-pivot-rowheaders');\n var rightContainer = layoutTable.find('.k-pivot-table');\n var gridWrapper = $(DIV).addClass('k-grid k-widget');\n that._measureFields();\n that.columnFields = $(DIV).addClass('k-pivot-toolbar k-header k-settings-columns');\n that.rowFields = $(DIV).addClass('k-pivot-toolbar k-header k-settings-rows');\n that.columnsHeader = $('<div class=\"k-grid-header-wrap\" />').wrap('<div class=\"k-grid-header\" />');\n that.columnsHeader.parent().css('padding-right', kendo.support.scrollbar());\n that.rowsHeader = $('<div class=\"k-grid k-widget k-alt\"/>');\n that.content = $('<div class=\"k-grid-content\" />');\n leftContainer.append(that.measureFields);\n leftContainer.append(that.rowFields);\n leftContainer.append(that.rowsHeader);\n gridWrapper.append(that.columnsHeader.parent());\n gridWrapper.append(that.content);\n rightContainer.append(that.columnFields);\n rightContainer.append(gridWrapper);\n that.wrapper.append(layoutTable);\n that.columnsHeaderTree = new kendo.dom.Tree(that.columnsHeader[0]);\n that.rowsHeaderTree = new kendo.dom.Tree(that.rowsHeader[0]);\n that.contentTree = new kendo.dom.Tree(that.content[0]);\n that._initSettingTargets();\n },\n _progress: function (toggle) {\n kendo.ui.progress(this.wrapper, toggle);\n },\n _resize: function () {\n if (this.content[0].firstChild) {\n this._setSectionsWidth();\n this._setSectionsHeight();\n this._setContentWidth();\n this._setContentHeight();\n this._columnHeaderReflow();\n }\n },\n _columnHeaderReflow: function () {\n var columnTable = this.columnsHeader.children('table');\n if (!kendo.support.browser.mozilla) {\n return;\n }\n clearTimeout(this._headerReflowTimeout);\n columnTable.css('table-layout', 'auto');\n this._headerReflowTimeout = setTimeout(function () {\n columnTable.css('table-layout', '');\n });\n },\n _setSectionsWidth: function () {\n var rowsHeader = this.rowsHeader;\n var leftColumn = rowsHeader.parent('.k-pivot-rowheaders').width(AUTO);\n var width;\n width = Math.max(outerWidth(this.measureFields), outerWidth(this.rowFields));\n width = Math.max(rowsHeader.children('table').width(), width);\n leftColumn.width(width);\n },\n _setSectionsHeight: function () {\n var measureFieldsHeight = this.measureFields.height(AUTO).height();\n var columnFieldsHeight = this.columnFields.height(AUTO).height();\n var rowFieldsHeight = this.rowFields.height(AUTO).innerHeight();\n var columnsHeight = this.columnsHeader.height(AUTO).innerHeight();\n var padding = rowFieldsHeight - this.rowFields.height();\n var firstRowHeight = columnFieldsHeight > measureFieldsHeight ? columnFieldsHeight : measureFieldsHeight;\n var secondRowHeight = columnsHeight > rowFieldsHeight ? columnsHeight : rowFieldsHeight;\n this.measureFields.height(firstRowHeight);\n this.columnFields.height(firstRowHeight);\n this.rowFields.height(secondRowHeight - padding);\n this.columnsHeader.height(secondRowHeight);\n },\n _setContentWidth: function () {\n var contentTable = this.content.find('table');\n var columnTable = this.columnsHeader.children('table');\n var rowLength = contentTable.children('colgroup').children().length;\n var calculatedWidth = rowLength * this.options.columnWidth;\n var minWidth = Math.ceil(calculatedWidth / this.content.width() * 100);\n if (minWidth < 100) {\n minWidth = 100;\n }\n contentTable.add(columnTable).css('width', minWidth + '%');\n this._resetColspan(columnTable);\n },\n _setContentHeight: function () {\n var that = this;\n var content = that.content;\n var rowsHeader = that.rowsHeader;\n var innerHeight = that.wrapper.innerHeight();\n var scrollbar = kendo.support.scrollbar();\n var skipScrollbar = content[0].offsetHeight === content[0].clientHeight;\n var height = that.options.height;\n if (that.wrapper.is(':visible')) {\n if (!innerHeight || !height) {\n if (skipScrollbar) {\n scrollbar = 0;\n }\n content.height('auto');\n rowsHeader.height(content.height() - scrollbar);\n return;\n }\n innerHeight -= outerHeight(that.columnFields);\n innerHeight -= outerHeight(that.columnsHeader.parent());\n if (innerHeight <= scrollbar * 2) {\n innerHeight = scrollbar * 2 + 1;\n if (!skipScrollbar) {\n innerHeight += scrollbar;\n }\n }\n content.height(innerHeight);\n if (skipScrollbar) {\n scrollbar = 0;\n }\n rowsHeader.height(innerHeight - scrollbar);\n }\n },\n _resetColspan: function (columnTable) {\n var that = this;\n var cell = columnTable.children('tbody').children(':first').children(':first');\n if (that._colspan === undefined) {\n that._colspan = cell.attr('colspan');\n }\n cell.attr('colspan', 1);\n clearTimeout(that._layoutTimeout);\n that._layoutTimeout = setTimeout(function () {\n cell.attr('colspan', that._colspan);\n that._colspan = undefined;\n });\n },\n _axisMeasures: function (axis) {\n var result = [];\n var dataSource = this.dataSource;\n var measures = dataSource.measures();\n var hasMeasure = measures.length > 1 || measures[0] && measures[0].type;\n if (dataSource.measuresAxis() === axis) {\n if (dataSource[axis]().length === 0 || hasMeasure) {\n result = measures;\n }\n }\n return result;\n },\n items: function () {\n return [];\n },\n refresh: function () {\n var that = this;\n var dataSource = that.dataSource;\n var axes = dataSource.axes();\n var columns = (axes.columns || {}).tuples || [];\n var rows = (axes.rows || {}).tuples || [];\n var columnBuilder = that._columnBuilder;\n var rowBuilder = that._rowBuilder;\n var columnAxis = {};\n var rowAxis = {};\n if (that.trigger(DATABINDING, { action: 'rebind' })) {\n return;\n }\n columnBuilder.measures = that._axisMeasures(AXIS_COLUMNS);\n rowBuilder.measures = that._axisMeasures(AXIS_ROWS);\n that.columnsHeaderTree.render(columnBuilder.build(columns));\n that.rowsHeaderTree.render(rowBuilder.build(rows));\n columnAxis = {\n indexes: columnBuilder._indexes,\n measures: columnBuilder.measures,\n metadata: columnBuilder.metadata\n };\n rowAxis = {\n indexes: rowBuilder._indexes,\n measures: rowBuilder.measures,\n metadata: rowBuilder.metadata\n };\n that.contentTree.render(that._contentBuilder.build(dataSource.view(), columnAxis, rowAxis));\n that._resize();\n if (that.touchScroller) {\n that.touchScroller.contentResized();\n } else {\n var touchScroller = kendo.touchScroller(that.content);\n if (touchScroller && touchScroller.movable) {\n that.touchScroller = touchScroller;\n touchScroller.movable.bind('change', function (e) {\n that.columnsHeader.scrollLeft(-e.sender.x);\n that.rowsHeader.scrollTop(-e.sender.y);\n });\n }\n }\n that._progress(false);\n that.trigger(DATABOUND);\n },\n _scrollable: function () {\n var that = this;\n var columnsHeader = that.columnsHeader;\n var rowsHeader = that.rowsHeader;\n that.content.scroll(function () {\n columnsHeader.scrollLeft(this.scrollLeft);\n rowsHeader.scrollTop(this.scrollTop);\n });\n rowsHeader.bind('DOMMouseScroll' + NS + ' mousewheel' + NS, $.proxy(that._wheelScroll, that));\n },\n _wheelScroll: function (e) {\n if (e.ctrlKey) {\n return;\n }\n var delta = kendo.wheelDeltaY(e);\n var scrollTop = this.content.scrollTop();\n if (delta) {\n e.preventDefault();\n $(e.currentTarget).one('wheel' + NS, false);\n this.rowsHeader.scrollTop(scrollTop + -delta);\n this.content.scrollTop(scrollTop + -delta);\n }\n }\n });\n var element = kendo.dom.element;\n var htmlNode = kendo.dom.html;\n var createMetadata = function (levelNum, memberIdx) {\n return {\n maxChildren: 0,\n children: 0,\n maxMembers: 0,\n members: 0,\n measures: 1,\n levelNum: levelNum,\n parentMember: memberIdx !== 0\n };\n };\n var buildPath = function (tuple, index) {\n var path = [];\n var idx = 0;\n for (; idx <= index; idx++) {\n path.push(tuple.members[idx].name);\n }\n return path;\n };\n var tupleName = function (tuple, index) {\n var name = '';\n var idx = 0;\n for (; idx <= index; idx++) {\n name += tuple.members[idx].name;\n }\n return name;\n };\n var ColumnBuilder = Class.extend({\n init: function () {\n this.measures = 1;\n this.metadata = {};\n },\n build: function (tuples) {\n var tbody = this._tbody(tuples);\n var colgroup = this._colGroup();\n return [element('table', null, [\n colgroup,\n tbody\n ])];\n },\n reset: function () {\n this.metadata = {};\n },\n _colGroup: function () {\n var length = this._rowLength();\n var children = [];\n var idx = 0;\n for (; idx < length; idx++) {\n children.push(element('col', null));\n }\n return element('colgroup', null, children);\n },\n _tbody: function (tuples) {\n var root = tuples[0];\n this.map = {};\n this.rows = [];\n this.rootTuple = root;\n this._indexes = [];\n if (root) {\n this._buildRows(root, 0);\n this._normalize();\n } else {\n this.rows.push(element('tr', null, [element('th', null, [htmlNode(' ')])]));\n }\n return element('tbody', null, this.rows);\n },\n _normalize: function () {\n var rows = this.rows;\n var rowsLength = rows.length;\n var rowIdx = 0;\n var row;\n var cellsLength;\n var cellIdx;\n var cells;\n var cell;\n for (; rowIdx < rowsLength; rowIdx++) {\n row = rows[rowIdx];\n if (row.rowSpan === 1) {\n continue;\n }\n cells = row.children;\n cellIdx = 0;\n cellsLength = cells.length;\n for (; cellIdx < cellsLength; cellIdx++) {\n cell = cells[cellIdx];\n if (cell.tupleAll) {\n cell.attr.rowSpan = row.rowSpan;\n }\n }\n }\n },\n _rowIndex: function (row) {\n var rows = this.rows;\n var length = rows.length;\n var idx = 0;\n for (; idx < length; idx++) {\n if (rows[idx] === row) {\n break;\n }\n }\n return idx;\n },\n _rowLength: function () {\n var cells = this.rows[0] ? this.rows[0].children : [];\n var length = cells.length;\n var rowLength = 0;\n var idx = 0;\n if (length) {\n for (; idx < length; idx++) {\n rowLength += cells[idx].attr.colSpan || 1;\n }\n }\n if (!rowLength) {\n rowLength = this.measures;\n }\n return rowLength;\n },\n _row: function (tuple, memberIdx, parentMember) {\n var rootName = this.rootTuple.members[memberIdx].name;\n var levelNum = tuple.members[memberIdx].levelNum;\n var rowKey = rootName + levelNum;\n var map = this.map;\n var parentRow;\n var children;\n var row = map[rowKey];\n if (!row) {\n row = element('tr', null, []);\n row.parentMember = parentMember;\n row.collapsed = 0;\n row.colSpan = 0;\n row.rowSpan = 1;\n map[rowKey] = row;\n parentRow = map[rootName + (Number(levelNum) - 1)];\n if (parentRow) {\n children = parentRow.children;\n if (children[1] && children[1].attr.className.indexOf('k-alt') === -1) {\n row.notFirst = true;\n } else {\n row.notFirst = parentRow.notFirst;\n }\n }\n this.rows.splice(this._rowIndex(parentRow) + 1, 0, row);\n } else {\n row.notFirst = false;\n if (!row.parentMember || row.parentMember !== parentMember) {\n row.parentMember = parentMember;\n row.collapsed = 0;\n row.colSpan = 0;\n }\n }\n return row;\n },\n _measures: function (measures, tuple, className) {\n var map = this.map;\n var row = map.measureRow;\n var measure;\n if (!row) {\n row = element('tr', null, []);\n map.measureRow = row;\n this.rows.push(row);\n }\n for (var idx = 0, length = measures.length; idx < length; idx++) {\n measure = measures[idx];\n row.children.push(this._cell(className || '', [this._content(measure, tuple)], measure));\n }\n return length;\n },\n _content: function (member, tuple) {\n return htmlNode(this.template({\n member: member,\n tuple: tuple\n }));\n },\n _cell: function (className, children, member) {\n var cell = element('th', { className: 'k-header' + className }, children);\n cell.value = member.caption || member.name;\n return cell;\n },\n _buildRows: function (tuple, memberIdx, parentMember) {\n var members = tuple.members;\n var member = members[memberIdx];\n var nextMember = members[memberIdx + 1];\n var row, childRow, children, childrenLength;\n var cell, allCell, cellAttr;\n var cellChildren = [];\n var path;\n var idx = 0;\n var metadata;\n var colSpan;\n var collapsed = 0;\n var memberCollapsed = 0;\n if (member.measure) {\n this._measures(member.children, tuple);\n return;\n }\n path = kendo.stringify(buildPath(tuple, memberIdx));\n row = this._row(tuple, memberIdx, parentMember);\n children = member.children;\n childrenLength = children.length;\n metadata = this.metadata[path];\n if (!metadata) {\n this.metadata[path] = metadata = createMetadata(Number(member.levelNum), memberIdx);\n metadata.rootLevelNum = Number(this.rootTuple.members[memberIdx].levelNum);\n }\n this._indexes.push({\n path: path,\n tuple: tuple\n });\n if (member.hasChildren) {\n if (metadata.expanded === false) {\n collapsed = metadata.maxChildren;\n row.collapsed += collapsed;\n metadata.children = 0;\n childrenLength = 0;\n }\n cellAttr = { className: 'k-icon ' + (childrenLength ? STATE_EXPANDED : STATE_COLLAPSED) };\n cellAttr[kendo.attr('path')] = path;\n cellChildren.push(element('span', cellAttr));\n }\n cellChildren.push(this._content(member, tuple));\n cell = this._cell(row.notFirst ? ' k-first' : '', cellChildren, member);\n row.children.push(cell);\n row.colSpan += 1;\n if (childrenLength) {\n allCell = this._cell(' k-alt', [this._content(member, tuple)], member);\n row.children.push(allCell);\n for (; idx < childrenLength; idx++) {\n childRow = this._buildRows(children[idx], memberIdx, member);\n }\n colSpan = childRow.colSpan;\n collapsed = childRow.collapsed;\n cell.attr.colSpan = colSpan;\n metadata.children = colSpan;\n metadata.members = 1;\n row.colSpan += colSpan;\n row.collapsed += collapsed;\n row.rowSpan = childRow.rowSpan + 1;\n if (nextMember) {\n if (nextMember.measure) {\n colSpan = this._measures(nextMember.children, tuple, ' k-alt');\n } else {\n childRow = this._buildRows(tuple, memberIdx + 1);\n colSpan = childRow.colSpan;\n row.collapsed += childRow.collapsed;\n memberCollapsed = childRow.collapsed;\n }\n allCell.attr.colSpan = colSpan;\n colSpan -= 1;\n metadata.members += colSpan;\n row.colSpan += colSpan;\n }\n } else if (nextMember) {\n if (nextMember.measure) {\n colSpan = this._measures(nextMember.children, tuple);\n } else {\n childRow = this._buildRows(tuple, memberIdx + 1);\n colSpan = childRow.colSpan;\n row.collapsed += childRow.collapsed;\n memberCollapsed = childRow.collapsed;\n }\n metadata.members = colSpan;\n if (colSpan > 1) {\n cell.attr.colSpan = colSpan;\n row.colSpan += colSpan - 1;\n }\n }\n if (metadata.maxMembers < metadata.members + memberCollapsed) {\n metadata.maxMembers = metadata.members + memberCollapsed;\n }\n children = metadata.children + collapsed;\n if (metadata.maxChildren < children) {\n metadata.maxChildren = children;\n }\n (allCell || cell).tupleAll = true;\n return row;\n }\n });\n var RowBuilder = Class.extend({\n init: function () {\n this.metadata = {};\n },\n build: function (tuples) {\n var tbody = this._tbody(tuples);\n var colgroup = this._colGroup();\n return [element('table', null, [\n colgroup,\n tbody\n ])];\n },\n reset: function () {\n this.metadata = {};\n },\n _rowLength: function () {\n var children = this.rows[0].children;\n var length = 0;\n var idx = 0;\n var cell = children[idx];\n while (cell) {\n length += cell.attr.colSpan || 1;\n cell = children[++idx];\n }\n return length;\n },\n _colGroup: function () {\n var length = this._rowLength();\n var children = [];\n var idx = 0;\n for (; idx < length; idx++) {\n children.push(element('col', null));\n }\n return element('colgroup', null, children);\n },\n _tbody: function (tuples) {\n var root = tuples[0];\n this.rootTuple = root;\n this.rows = [];\n this.map = {};\n this._indexes = [];\n if (root) {\n this._buildRows(root, 0);\n this._normalize();\n } else {\n this.rows.push(element('tr', null, [element('td', null, [htmlNode(' ')])]));\n }\n return element('tbody', null, this.rows);\n },\n _normalize: function () {\n var rows = this.rows;\n var rowsLength = rows.length;\n var rowIdx = 0;\n var members = this.rootTuple.members;\n var firstMemberName = members[0].name;\n var membersLength = members.length;\n var memberIdx = 0;\n var row;\n var cell;\n var maxcolSpan;\n var map = this.map;\n var allRow;\n for (; rowIdx < rowsLength; rowIdx++) {\n row = rows[rowIdx];\n for (memberIdx = 0; memberIdx < membersLength; memberIdx++) {\n maxcolSpan = this[members[memberIdx].name];\n cell = row.colSpan['dim' + memberIdx];\n if (cell && cell.colSpan < maxcolSpan) {\n cell.attr.colSpan = maxcolSpan - cell.colSpan + 1;\n }\n }\n }\n row = map[firstMemberName];\n allRow = map[firstMemberName + 'all'];\n if (row) {\n row.children[0].attr.className = 'k-first';\n }\n if (allRow) {\n allRow.children[0].attr.className += ' k-first';\n }\n },\n _row: function (children) {\n var row = element('tr', null, children);\n row.rowSpan = 1;\n row.colSpan = {};\n this.rows.push(row);\n return row;\n },\n _content: function (member, tuple) {\n return htmlNode(this.template({\n member: member,\n tuple: tuple\n }));\n },\n _cell: function (className, children, member) {\n var cell = element('td', { className: className }, children);\n cell.value = member.caption || member.name;\n return cell;\n },\n _buildRows: function (tuple, memberIdx) {\n var map = this.map;\n var path;\n var members = tuple.members;\n var member = members[memberIdx];\n var nextMember = members[memberIdx + 1];\n var children = member.children;\n var childrenLength = children.length;\n var levelNum = Number(member.levelNum);\n var rootName = this.rootTuple.members[memberIdx].name;\n var tuplePath = buildPath(tuple, memberIdx - 1).join('');\n var rootLevelNum = Number(this.rootTuple.members[memberIdx].levelNum);\n var parentName = tuplePath + (rootLevelNum === levelNum ? '' : member.parentName || '');\n var row = map[parentName + 'all'] || map[parentName];\n var colSpan = levelNum + 1;\n var cell, allCell;\n var childRow, allRow;\n var metadata;\n var className;\n var cellChildren = [];\n var expandIconAttr;\n var idx;\n if (!row || row.hasChild) {\n row = this._row();\n } else {\n row.hasChild = true;\n }\n if (member.measure) {\n className = row.allCell ? 'k-grid-footer' : '';\n row.children.push(this._cell(className, [this._content(children[0], tuple)], children[0]));\n row.rowSpan = childrenLength;\n for (idx = 1; idx < childrenLength; idx++) {\n this._row([this._cell(className, [this._content(children[idx], tuple)], children[idx])]);\n }\n return row;\n }\n map[tuplePath + member.name] = row;\n path = kendo.stringify(buildPath(tuple, memberIdx));\n metadata = this.metadata[path];\n if (!metadata) {\n this.metadata[path] = metadata = createMetadata(levelNum, memberIdx);\n metadata.rootLevelNum = rootLevelNum;\n }\n this._indexes.push({\n path: path,\n tuple: tuple\n });\n if (member.hasChildren) {\n if (metadata.expanded === false) {\n childrenLength = 0;\n metadata.children = 0;\n }\n expandIconAttr = { className: 'k-icon ' + (childrenLength ? STATE_EXPANDED : STATE_COLLAPSED) };\n expandIconAttr[kendo.attr('path')] = path;\n cellChildren.push(element('span', expandIconAttr));\n }\n cellChildren.push(this._content(member, tuple));\n className = row.allCell && !childrenLength ? 'k-grid-footer' : '';\n cell = this._cell(className, cellChildren, member);\n cell.colSpan = colSpan;\n row.children.push(cell);\n row.colSpan['dim' + memberIdx] = cell;\n if (!this[rootName] || this[rootName] < colSpan) {\n this[rootName] = colSpan;\n }\n if (childrenLength) {\n row.allCell = false;\n row.hasChild = false;\n for (idx = 0; idx < childrenLength; idx++) {\n childRow = this._buildRows(children[idx], memberIdx);\n if (row !== childRow) {\n row.rowSpan += childRow.rowSpan;\n }\n }\n if (row.rowSpan > 1) {\n cell.attr.rowSpan = row.rowSpan;\n }\n metadata.children = row.rowSpan;\n allCell = this._cell('k-grid-footer', [this._content(member, tuple)], member);\n allCell.colSpan = colSpan;\n allRow = this._row([allCell]);\n allRow.colSpan['dim' + memberIdx] = allCell;\n allRow.allCell = true;\n map[tuplePath + member.name + 'all'] = allRow;\n if (nextMember) {\n childRow = this._buildRows(tuple, memberIdx + 1);\n allCell.attr.rowSpan = childRow.rowSpan;\n }\n row.rowSpan += allRow.rowSpan;\n metadata.members = allRow.rowSpan;\n } else if (nextMember) {\n row.hasChild = false;\n this._buildRows(tuple, memberIdx + 1);\n (allCell || cell).attr.rowSpan = row.rowSpan;\n metadata.members = row.rowSpan;\n }\n if (metadata.maxChildren < metadata.children) {\n metadata.maxChildren = metadata.children;\n }\n if (metadata.maxMembers < metadata.members) {\n metadata.maxMembers = metadata.members;\n }\n return row;\n }\n });\n var ContentBuilder = Class.extend({\n init: function () {\n this.columnAxis = {};\n this.rowAxis = {};\n },\n build: function (data, columnAxis, rowAxis) {\n var index = columnAxis.indexes[0];\n var metadata = columnAxis.metadata[index ? index.path : undefined];\n this.columnAxis = columnAxis;\n this.rowAxis = rowAxis;\n this.data = data;\n this.rowLength = metadata ? metadata.maxChildren + metadata.maxMembers : columnAxis.measures.length || 1;\n if (!this.rowLength) {\n this.rowLength = 1;\n }\n var tbody = this._tbody();\n var colgroup = this._colGroup();\n return [element('table', null, [\n colgroup,\n tbody\n ])];\n },\n _colGroup: function () {\n var length = this.columnAxis.measures.length || 1;\n var children = [];\n var idx = 0;\n if (this.rows[0]) {\n length = this.rows[0].children.length;\n }\n for (; idx < length; idx++) {\n children.push(element('col', null));\n }\n return element('colgroup', null, children);\n },\n _tbody: function () {\n this.rows = [];\n if (this.data[0]) {\n this.columnIndexes = this._indexes(this.columnAxis, this.rowLength);\n this.rowIndexes = this._indexes(this.rowAxis, Math.ceil(this.data.length / this.rowLength));\n this._buildRows();\n } else {\n this.rows.push(element('tr', null, [element('td', null, [htmlNode(' ')])]));\n }\n return element('tbody', null, this.rows);\n },\n _indexes: function (axisInfo, total) {\n var result = [];\n var axisInfoMember;\n var indexes = axisInfo.indexes;\n var metadata = axisInfo.metadata;\n var measures = axisInfo.measures;\n var measuresLength = measures.length || 1;\n var current;\n var dataIdx = 0;\n var firstEmpty = 0;\n var idx = 0;\n var length = indexes.length;\n var measureIdx;\n var index;\n var children;\n var skipChildren;\n if (!length) {\n for (measureIdx = 0; measureIdx < measuresLength; measureIdx++) {\n result[measureIdx] = {\n index: measureIdx,\n measure: measures[measureIdx],\n tuple: null\n };\n }\n return result;\n }\n for (; idx < length; idx++) {\n axisInfoMember = indexes[idx];\n current = metadata[axisInfoMember.path];\n children = current.children + current.members;\n skipChildren = 0;\n if (children) {\n children -= measuresLength;\n }\n if (current.expanded === false && current.children !== current.maxChildren) {\n skipChildren = current.maxChildren;\n }\n if (current.parentMember && current.levelNum === current.rootLevelNum) {\n children = -1;\n }\n if (children > -1) {\n for (measureIdx = 0; measureIdx < measuresLength; measureIdx++) {\n index = children + measureIdx;\n if (!current.children) {\n index += firstEmpty;\n }\n result[children + firstEmpty + measureIdx] = {\n children: children,\n index: dataIdx,\n measure: measures[measureIdx],\n tuple: axisInfoMember.tuple\n };\n dataIdx += 1;\n }\n while (result[firstEmpty] !== undefined) {\n firstEmpty += 1;\n }\n }\n if (firstEmpty === total) {\n break;\n }\n dataIdx += skipChildren;\n }\n return result;\n },\n _buildRows: function () {\n var rowIndexes = this.rowIndexes;\n var length = rowIndexes.length;\n var idx = 0;\n for (; idx < length; idx++) {\n var rowIndex = rowIndexes[idx];\n if (rowIndex) {\n this.rows.push(this._buildRow(rowIndex));\n }\n }\n },\n _buildRow: function (rowInfo) {\n var startIdx = rowInfo.index * this.rowLength;\n var columnIndexes = this.columnIndexes;\n var length = columnIndexes.length;\n var columnInfo;\n var cells = [];\n var idx = 0;\n var templateInfo;\n var cell, cellContent;\n var attr, dataItem, measure;\n for (; idx < length; idx++) {\n columnInfo = columnIndexes[idx];\n if (columnInfo === undefined) {\n continue;\n }\n attr = {};\n if (columnInfo.children) {\n attr.className = 'k-alt';\n }\n cellContent = '';\n dataItem = this.data[startIdx + columnInfo.index];\n measure = columnInfo.measure || rowInfo.measure;\n templateInfo = {\n columnTuple: columnInfo.tuple,\n rowTuple: rowInfo.tuple,\n measure: measure,\n dataItem: dataItem\n };\n if (dataItem.value !== '' && measure && measure.type) {\n if (measure.type === 'status') {\n cellContent = this.kpiStatusTemplate(templateInfo);\n } else if (measure.type === 'trend') {\n cellContent = this.kpiTrendTemplate(templateInfo);\n }\n }\n if (!cellContent) {\n cellContent = this.dataTemplate(templateInfo);\n }\n cell = element('td', attr, [htmlNode(cellContent)]);\n cell.value = dataItem.value;\n cells.push(cell);\n }\n attr = {};\n if (rowInfo.children) {\n attr.className = 'k-grid-footer';\n }\n return element('tr', attr, cells);\n }\n });\n ui.plugin(PivotGrid);\n kendo.PivotExcelExporter = kendo.Class.extend({\n init: function (options) {\n this.options = options;\n this.widget = options.widget;\n this.dataSource = this.widget.dataSource;\n },\n _columns: function () {\n var columnHeaderTable = this.widget.columnsHeaderTree.children[0];\n var rowHeaderTable = this.widget.rowsHeaderTree.children[0];\n var columnHeaderLength = columnHeaderTable.children[0].children.length;\n var rowHeaderLength = rowHeaderTable.children[0].children.length;\n var width = this.widget.options.columnWidth;\n var result = [];\n var idx;\n if (rowHeaderLength && this.dataSource.data()[0]) {\n for (idx = 0; idx < rowHeaderLength; idx++) {\n result.push({ autoWidth: true });\n }\n }\n for (idx = 0; idx < columnHeaderLength; idx++) {\n result.push({\n autoWidth: false,\n width: width\n });\n }\n return result;\n },\n _cells: function (rows, type, callback) {\n var result = [];\n var i = 0;\n var length = rows.length;\n var cellsLength;\n var row, cells;\n var j, cell;\n for (; i < length; i++) {\n row = [];\n cells = rows[i].children;\n cellsLength = cells.length;\n for (j = 0; j < cellsLength; j++) {\n cell = cells[j];\n row.push({\n background: '#7a7a7a',\n color: '#fff',\n value: cell.value,\n colSpan: cell.attr.colSpan || 1,\n rowSpan: cell.attr.rowSpan || 1\n });\n }\n if (callback) {\n callback(row, i);\n }\n result.push({\n cells: row,\n type: type\n });\n }\n return result;\n },\n _rows: function () {\n var columnHeaderTable = this.widget.columnsHeaderTree.children[0];\n var rowHeaderTable = this.widget.rowsHeaderTree.children[0];\n var columnHeaderLength = columnHeaderTable.children[0].children.length;\n var rowHeaderLength = rowHeaderTable.children[0].children.length;\n var columnHeaderRows = columnHeaderTable.children[1].children;\n var rowHeaderRows = rowHeaderTable.children[1].children;\n var contentRows = this.widget.contentTree.children[0].children[1].children;\n var columnRows = this._cells(columnHeaderRows, 'header');\n if (rowHeaderLength) {\n columnRows[0].cells.splice(0, 0, {\n background: '#7a7a7a',\n color: '#fff',\n value: '',\n colSpan: rowHeaderLength,\n rowSpan: columnHeaderRows.length\n });\n }\n var dataCallback = function (row, index) {\n var j = 0;\n var cell, value;\n var cells = contentRows[index].children;\n for (; j < columnHeaderLength; j++) {\n cell = cells[j];\n value = Number(cell.value);\n if (isNaN(value)) {\n value = cell.value;\n }\n row.push({\n background: '#dfdfdf',\n color: '#333',\n value: value,\n colSpan: 1,\n rowSpan: 1\n });\n }\n };\n var rowRows = this._cells(rowHeaderRows, 'data', dataCallback);\n return columnRows.concat(rowRows);\n },\n _freezePane: function () {\n var columnHeaderTable = this.widget.columnsHeaderTree.children[0];\n var rowHeaderTable = this.widget.rowsHeaderTree.children[0];\n var rowHeaderLength = rowHeaderTable.children[0].children.length;\n var columnHeaderRows = columnHeaderTable.children[1].children;\n return {\n colSplit: rowHeaderLength,\n rowSplit: columnHeaderRows.length\n };\n },\n workbook: function () {\n var promise;\n if (this.dataSource.view()[0]) {\n promise = $.Deferred();\n promise.resolve();\n } else {\n promise = this.dataSource.fetch();\n }\n return promise.then($.proxy(function () {\n return {\n sheets: [{\n columns: this._columns(),\n rows: this._rows(),\n freezePane: this._freezePane(),\n filter: null\n }]\n };\n }, this));\n }\n });\n var PivotExcelMixin = {\n extend: function (proto) {\n proto.events.push('excelExport');\n proto.options.excel = $.extend(proto.options.excel, this.options);\n proto.saveAsExcel = this.saveAsExcel;\n },\n options: {\n proxyURL: '',\n filterable: false,\n fileName: 'Export.xlsx'\n },\n saveAsExcel: function () {\n var excel = this.options.excel || {};\n var exporter = new kendo.PivotExcelExporter({ widget: this });\n exporter.workbook().then($.proxy(function (book) {\n if (!this.trigger('excelExport', { workbook: book })) {\n var workbook = new kendo.ooxml.Workbook(book);\n workbook.toDataURLAsync().then(function (dataURI) {\n kendo.saveAs({\n dataURI: dataURI,\n fileName: book.fileName || excel.fileName,\n proxyURL: excel.proxyURL,\n forceProxy: excel.forceProxy\n });\n });\n }\n }, this));\n }\n };\n kendo.PivotExcelMixin = PivotExcelMixin;\n if (kendo.ooxml && kendo.ooxml.Workbook) {\n PivotExcelMixin.extend(PivotGrid.prototype);\n }\n if (kendo.PDFMixin) {\n kendo.PDFMixin.extend(PivotGrid.prototype);\n PivotGrid.fn._drawPDF = function () {\n return this._drawPDFShadow({ width: this.wrapper.width() }, { avoidLinks: this.options.pdf.avoidLinks });\n };\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.pivot.fieldmenu', [\n 'kendo.pivotgrid',\n 'kendo.menu',\n 'kendo.window',\n 'kendo.treeview',\n 'kendo.dropdownlist'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'pivot.fieldmenu',\n name: 'PivotFieldMenu',\n category: 'web',\n description: 'The PivotFieldMenu widget allows the user to filter on fields displayed in PivotGrid',\n depends: [\n 'menu',\n 'window',\n 'treeview',\n 'dropdownlist'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo;\n var ui = kendo.ui;\n var MENU = 'kendoContextMenu';\n var proxy = $.proxy;\n var NS = '.kendoPivotFieldMenu';\n var Widget = ui.Widget;\n var FILTER_ITEM = 'k-filter-item';\n var ARIA_LABEL = 'aria-label';\n var PivotFieldMenu = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this._dataSource();\n this._layout();\n kendo.notify(this);\n },\n events: [],\n options: {\n name: 'PivotFieldMenu',\n filter: null,\n filterable: true,\n sortable: true,\n messages: {\n info: 'Show items with value that:',\n sortAscending: 'Sort Ascending',\n sortDescending: 'Sort Descending',\n filterFields: 'Fields Filter',\n filter: 'Filter',\n include: 'Include Fields...',\n title: 'Fields to include',\n clear: 'Clear',\n ok: 'OK',\n cancel: 'Cancel',\n operators: {\n contains: 'Contains',\n doesnotcontain: 'Does not contain',\n startswith: 'Starts with',\n endswith: 'Ends with',\n eq: 'Is equal to',\n neq: 'Is not equal to'\n }\n }\n },\n _layout: function () {\n var options = this.options;\n this.wrapper = $(kendo.template(MENUTEMPLATE)({\n ns: kendo.ns,\n filterable: options.filterable,\n sortable: options.sortable,\n messages: options.messages\n }));\n this.menu = this.wrapper[MENU]({\n filter: options.filter,\n target: this.element,\n orientation: 'vertical',\n showOn: 'click',\n closeOnClick: false,\n open: proxy(this._menuOpen, this),\n select: proxy(this._select, this),\n copyAnchorStyles: false\n }).data(MENU);\n this._createWindow();\n if (options.filterable) {\n this._initFilterForm();\n }\n },\n _initFilterForm: function () {\n var filterForm = this.menu.element.find('.' + FILTER_ITEM);\n var filterProxy = proxy(this._filter, this);\n this._filterOperator = new kendo.ui.DropDownList(filterForm.find('select'));\n this._filterValue = filterForm.find('.k-textbox');\n this._updateFilterAriaLabel();\n filterForm.on('submit' + NS, filterProxy).on('click' + NS, '.k-button-filter', filterProxy).on('click' + NS, '.k-button-clear', proxy(this._reset, this));\n },\n _setFilterForm: function (expression) {\n var filterOperator = this._filterOperator;\n var operator = '';\n var value = '';\n if (expression) {\n operator = expression.operator;\n value = expression.value;\n }\n filterOperator.value(operator);\n if (!filterOperator.value()) {\n filterOperator.select(0);\n }\n this._filterValue.val(value);\n },\n _clearFilters: function (member) {\n var filter = this.dataSource.filter() || {};\n var expressions;\n var idx = 0;\n var length;\n filter.filters = filter.filters || [];\n expressions = findFilters(filter, member);\n for (length = expressions.length; idx < length; idx++) {\n filter.filters.splice(filter.filters.indexOf(expressions[idx]), 1);\n }\n return filter;\n },\n _convert: function (value) {\n var schema = this.dataSource.options.schema;\n var field = ((schema.model || {}).fields || {})[this.currentMember];\n if (field) {\n if (field.type === 'number') {\n value = parseFloat(value);\n } else if (field.type === 'boolean') {\n value = Boolean($.parseJSON(value));\n }\n }\n return value;\n },\n _filter: function (e) {\n var that = this;\n var value = that._convert(that._filterValue.val());\n e.preventDefault();\n if (value === '') {\n that.menu.close();\n return;\n }\n var expression = {\n field: that.currentMember,\n operator: that._filterOperator.value(),\n value: value\n };\n var filter = that._clearFilters(that.currentMember);\n filter.filters.push(expression);\n that.dataSource.filter(filter);\n that.menu.close();\n },\n _updateFilterAriaLabel: function () {\n var filterForm = this.menu.element.find('.' + FILTER_ITEM);\n var selectedOperator = this._filterOperator.value();\n var selectedOperatorName = this.options.messages.operators[selectedOperator];\n filterForm.find('select').attr(ARIA_LABEL, selectedOperatorName);\n },\n _reset: function (e) {\n var that = this;\n var filter = that._clearFilters(that.currentMember);\n e.preventDefault();\n if (!filter.filters[0]) {\n filter = {};\n }\n that.dataSource.filter(filter);\n that._setFilterForm(null);\n that.menu.close();\n },\n _sort: function (dir) {\n var field = this.currentMember;\n var expressions = this.dataSource.sort() || [];\n expressions = removeExpr(expressions, field);\n expressions.push({\n field: field,\n dir: dir\n });\n this.dataSource.sort(expressions);\n this.menu.close();\n },\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._dataSource();\n },\n _dataSource: function () {\n this.dataSource = kendo.data.PivotDataSource.create(this.options.dataSource);\n },\n _createWindow: function () {\n var messages = this.options.messages;\n this.includeWindow = $(kendo.template(WINDOWTEMPLATE)({ messages: messages })).on('click' + NS, '.k-button-ok', proxy(this._applyIncludes, this)).on('click' + NS, '.k-button-cancel', proxy(this._closeWindow, this));\n this.includeWindow = new ui.Window(this.includeWindow, {\n title: messages.title,\n visible: false,\n resizable: false,\n open: proxy(this._windowOpen, this)\n });\n },\n _applyIncludes: function (e) {\n var checkedNodes = [];\n var resultExpression;\n var view = this.treeView.dataSource.view();\n var rootChecked = view[0].checked;\n var filter = this.dataSource.filter();\n var existingExpression = findFilters(filter, this.currentMember, 'in')[0];\n checkedNodeIds(view, checkedNodes);\n if (existingExpression) {\n if (rootChecked) {\n filter.filters.splice(filter.filters.indexOf(existingExpression), 1);\n if (!filter.filters.length) {\n filter = {};\n }\n } else {\n existingExpression.value = checkedNodes.join(',');\n }\n resultExpression = filter;\n }\n if (checkedNodes.length) {\n if (!resultExpression && !rootChecked) {\n resultExpression = {\n field: this.currentMember,\n operator: 'in',\n value: checkedNodes.join(',')\n };\n if (filter) {\n filter.filters.push(resultExpression);\n resultExpression = filter;\n }\n }\n }\n if (resultExpression) {\n this.dataSource.filter(resultExpression);\n }\n this._closeWindow(e);\n },\n _closeWindow: function (e) {\n e.preventDefault();\n this.includeWindow.close();\n },\n _treeViewDataSource: function () {\n var that = this;\n return kendo.data.HierarchicalDataSource.create({\n schema: {\n model: {\n id: 'uniqueName',\n hasChildren: function (item) {\n return parseInt(item.childrenCardinality, 10) > 0;\n }\n }\n },\n transport: {\n read: function (options) {\n var restrictions = {};\n var node = that.treeView.dataSource.get(options.data.uniqueName);\n var name = options.data.uniqueName;\n if (!name) {\n restrictions.levelUniqueName = that.currentMember + '.[(ALL)]';\n } else {\n restrictions.memberUniqueName = node.uniqueName.replace(/\\&/g, '&');\n restrictions.treeOp = 1;\n }\n that.dataSource.schemaMembers(restrictions).done(function (data) {\n checkNodes(that.dataSource.filter(), that.currentMember, data);\n options.success(data);\n }).fail(options.error);\n }\n }\n });\n },\n _createTreeView: function (element) {\n var that = this;\n that.treeView = new ui.TreeView(element, {\n autoBind: false,\n dataSource: that._treeViewDataSource(),\n dataTextField: 'caption',\n template: '#: data.item.caption || data.item.name #',\n checkboxes: { checkChildren: true },\n dataBound: function () {\n ui.progress(that.includeWindow.element, false);\n }\n });\n },\n _menuOpen: function (e) {\n if (!e.event) {\n return;\n }\n var attr = kendo.attr('name');\n this.currentMember = $(e.event.target).closest('[' + attr + ']').attr(attr);\n if (this.options.filterable) {\n this._setFilterForm(findFilters(this.dataSource.filter(), this.currentMember)[0]);\n }\n },\n _select: function (e) {\n var item = $(e.item);\n $('.k-pivot-filter-window').not(this.includeWindow.element).kendoWindow('close');\n if (item.hasClass('k-include-item')) {\n this.includeWindow.center().open();\n } else if (item.hasClass('k-sort-asc')) {\n this._sort('asc');\n } else if (item.hasClass('k-sort-desc')) {\n this._sort('desc');\n } else if (item.hasClass(FILTER_ITEM)) {\n this._updateFilterAriaLabel();\n }\n },\n _windowOpen: function () {\n if (!this.treeView) {\n this._createTreeView(this.includeWindow.element.find('.k-treeview'));\n }\n ui.progress(this.includeWindow.element, true);\n this.treeView.dataSource.read();\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n if (this.menu) {\n this.menu.destroy();\n this.menu = null;\n }\n if (this.treeView) {\n this.treeView.destroy();\n this.treeView = null;\n }\n if (this.includeWindow) {\n this.includeWindow.destroy();\n this.includeWindow = null;\n }\n this.wrapper = null;\n this.element = null;\n }\n });\n function removeExpr(expressions, name) {\n var result = [];\n for (var idx = 0, length = expressions.length; idx < length; idx++) {\n if (expressions[idx].field !== name) {\n result.push(expressions[idx]);\n }\n }\n return result;\n }\n function findFilters(filter, member, operator) {\n if (!filter) {\n return [];\n }\n filter = filter.filters;\n var idx = 0;\n var result = [];\n var length = filter.length;\n var filterOperator;\n for (; idx < length; idx++) {\n filterOperator = filter[idx].operator;\n if ((!operator && filterOperator !== 'in' || filterOperator === operator) && filter[idx].field === member) {\n result.push(filter[idx]);\n }\n }\n return result;\n }\n function checkNodes(filter, member, nodes) {\n var values, idx = 0, length = nodes.length;\n filter = findFilters(filter, member, 'in')[0];\n if (!filter) {\n for (; idx < length; idx++) {\n nodes[idx].checked = true;\n }\n } else {\n values = filter.value.split(',');\n for (; idx < length; idx++) {\n nodes[idx].checked = $.inArray(nodes[idx].uniqueName, values) >= 0;\n }\n }\n }\n function checkedNodeIds(nodes, checkedNodes) {\n var idx, length = nodes.length;\n for (idx = 0; idx < length; idx++) {\n if (nodes[idx].checked && nodes[idx].level() !== 0) {\n checkedNodes.push(nodes[idx].uniqueName);\n }\n if (nodes[idx].hasChildren) {\n checkedNodeIds(nodes[idx].children.view(), checkedNodes);\n }\n }\n }\n var LABELMENUTEMPLATE = '<div class=\"k-filterable k-content\" tabindex=\"-1\" data-role=\"fieldmenu\">' + '<form class=\"k-filter-menu\">' + '<div>' + '<div class=\"k-filter-help-text\">#=messages.info#</div>' + '<select>' + '#for(var op in messages.operators){#' + '<option value=\"#=op#\">#=messages.operators[op]#</option>' + '#}#' + '</select>' + '<input class=\"k-textbox\" type=\"text\" ' + ARIA_LABEL + '=\"#=messages.filter#\" title=\"#=messages.filter#\" />' + '<div>' + '<a class=\"k-button k-primary k-button-filter\" href=\"\\\\#\">#=messages.filter#</a>' + '<a class=\"k-button k-button-clear\" href=\"\\\\#\">#=messages.clear#</a>' + '</div>' + '</div>' + '</form>' + '</div>';\n var MENUTEMPLATE = '<ul class=\"k-pivot-fieldmenu\">' + '# if (sortable) {#' + '<li class=\"k-item k-sort-asc\">' + '<span class=\"k-link\">' + '<span class=\"k-icon k-i-sort-asc-sm\"></span>' + '${messages.sortAscending}' + '</span>' + '</li>' + '<li class=\"k-item k-sort-desc\">' + '<span class=\"k-link\">' + '<span class=\"k-icon k-i-sort-desc-sm\"></span>' + '${messages.sortDescending}' + '</span>' + '</li>' + '# if (filterable) {#' + '<li class=\"k-separator\"></li>' + '# } #' + '# } #' + '# if (filterable) {#' + '<li class=\"k-item k-include-item\">' + '<span class=\"k-link\">' + '<span class=\"k-icon k-i-filter\"></span>' + '${messages.include}' + '</span>' + '</li>' + '<li class=\"k-separator\"></li>' + '<li class=\"k-item ' + FILTER_ITEM + '\">' + '<span class=\"k-link\">' + '<span class=\"k-icon k-i-filter\"></span>' + '${messages.filterFields}' + '</span>' + '<ul>' + '<li>' + LABELMENUTEMPLATE + '</li>' + '</ul>' + '</li>' + '# } #' + '</ul>';\n var WINDOWTEMPLATE = '<div class=\"k-popup-edit-form k-pivot-filter-window\"><div class=\"k-edit-form-container\">' + '<div class=\"k-treeview\"></div>' + '<div class=\"k-edit-buttons k-state-default\">' + '<a class=\"k-button k-primary k-button-ok\" href=\"\\\\#\">' + '${messages.ok}' + '</a>' + '<a class=\"k-button k-button-cancel\" href=\"\\\\#\">' + '${messages.cancel}' + '</a>' + '</div></div>';\n ui.plugin(PivotFieldMenu);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.filter', [\n 'kendo.core',\n 'kendo.buttongroup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'filter',\n name: 'Filter',\n category: 'web',\n depends: [\n 'core',\n 'buttongroup'\n ]\n };\n var editors = {\n 'number': '<input type=\\'text\\' title=\\'#=field#\\' data-#=ns#role=\\'numerictextbox\\' data-#=ns#bind=\\'value: value\\'/>',\n 'string': '<input type=\\'text\\' title=\\'#=field#\\' class=\\'k-textbox\\' data-#=ns#bind=\\'value: value\\'/>',\n 'boolean': '# var checkboxGuid = kendo.guid(); # <input class=\\'k-checkbox\\' data-role=\\'checkbox\\' id=\\'#= checkboxGuid #\\' data-#=ns#bind=\\'checked: value\\' type=\\'checkbox\\'><label for=\\'#= checkboxGuid #\\' class=\\'k-checkbox-label k-no-text\\'>&\\\\#8203;</label>',\n 'date': '<input type=\\'text\\' title=\\'#=field#\\' data-#=ns#role=\\'datepicker\\' data-#=ns#bind=\\'value: value\\'/>'\n };\n var operatorsTemplate = '<select data-#=ns#bind=\\'value: operator\\' title=\\'#=operatorsLabel#\\' data-#=ns#role=\\'dropdownlist\\'>' + '#for(var op in operators){#' + '<option value=\\'#=op#\\'>#=operators[op]#</option>' + '#}#' + '</select>';\n var logicTemplate = '<div data-#=ns#bind=\\'value: logic\\' data-#=ns#role=\\'filterbuttongroup\\'>' + '#for(var op in operators){#' + '<span value=\\'#=op#\\'>#=operators[op]#</span>' + '#}#' + '</div>';\n var mainContainer = '<ul class=\\'k-filter-container\\'>' + '<li class=\\'k-filter-group-main\\'></li>' + '</ul>';\n var mainLogicTemplate = '<div class=\\'k-filter-toolbar\\'>' + '<div class=\\'k-toolbar\\' id=\\'#=uid#\\'>' + '<div class=\\'k-filter-toolbar-item\\'>' + logicTemplate + '</div>' + '<div class=\\'k-filter-toolbar-item\\'>' + '<button data-role=\\'button\\' class=\\'k-button k-button-icon\\' role=\\'button\\' aria-disabled=\\'false\\' title=\\'#=addExpression#\\' aria-label=\\'#=addExpression#\\' tabindex=\\'0\\'>' + '<span class=\\'k-icon k-i-filter-add-expression\\'>' + '</span>' + '</button>' + '</div>' + '<div class=\\'k-filter-toolbar-item\\'>' + '<button data-role=\\'button\\' class=\\'k-button k-button-icon\\' role=\\'button\\' aria-disabled=\\'false\\' title=\\'#=addGroup#\\' aria-label=\\'#=addGroup#\\' tabindex=\\'0\\'>' + '<span class=\\'k-icon k-i-filter-add-group\\'>' + '</span>' + '</button>' + '</div>' + '<div class=\\'k-filter-toolbar-item\\'>' + '<button data-role=\\'button\\' class=\\'k-button-flat k-button k-button-icon\\' role=\\'button\\' title=\\'#=close#\\' aria-label=\\'#=close#\\' aria-disabled=\\'false\\' tabindex=\\'0\\'>' + '<span class=\\'k-icon k-i-close\\'>' + '</span>' + '</button>' + '</div>' + '</div>' + '</div>';\n var logicItemTemplate = '<li class=\\'k-filter-item\\'>' + '<div class=\\'k-filter-toolbar\\'>' + '<div class=\\'k-toolbar\\'>' + '<div class=\\'k-filter-toolbar-item\\'>' + logicTemplate + '</div>' + '<div class=\\'k-filter-toolbar-item\\'>' + '<button data-role=\\'button\\' class=\\'k-button k-button-icon\\' role=\\'button\\' title=\\'#=addExpression#\\' aria-label=\\'#=addExpression#\\' aria-disabled=\\'false\\' tabindex=\\'0\\'>' + '<span class=\\'k-icon k-i-filter-add-expression\\'>' + '</span>' + '</button>' + '</div>' + '<div class=\\'k-filter-toolbar-item\\'>' + '<button data-role=\\'button\\' class=\\'k-button k-button-icon\\' role=\\'button\\' title=\\'#=addGroup#\\' aria-label=\\'#=addGroup#\\' aria-disabled=\\'false\\' tabindex=\\'0\\'>' + '<span class=\\'k-icon k-i-filter-add-group\\'>' + '</span>' + '</button>' + '</div>' + '<div class=\\'k-filter-toolbar-item\\'>' + '<button data-role=\\'button\\' class=\\'k-button-flat k-button k-button-icon\\' role=\\'button\\' title=\\'#=close#\\' aria-label=\\'#=close#\\' aria-disabled=\\'false\\' tabindex=\\'0\\'>' + '<span class=\\'k-icon k-i-close\\'>' + '</span>' + '</button>' + '</div>' + '</div>' + '</div>' + '</li>';\n var expressionItemTemplate = '<li class=\\'k-filter-item\\'>' + '<div class=\\'k-filter-toolbar\\'>' + '<div class=\\'k-toolbar\\' id=\\'#=uid#\\'>' + '<div class=\\'k-filter-toolbar-item k-filter-field\\'>' + '<select data-#=ns#bind=\\'value: field\\' title=\\'#=fieldsLabel#\\' class=\\'k-filter-dropdown\\' data-auto-width=\\'true\\' data-#=ns#role=\\'dropdownlist\\'>' + '#for(var current in fields){#' + '<option value=\\'#=fields[current].name#\\'>#=fields[current].label#</option>' + '#}#' + '</select>' + '</div>' + '<div class=\\'k-filter-toolbar-item k-filter-operator\\'>' + '</div>' + '<div class=\\'k-filter-toolbar-item k-filter-value\\'>' + '</div>' + '<div class=\\'k-filter-toolbar-item\\'>' + '<button data-role=\\'button\\' class=\\'k-button-flat k-button k-button-icon\\' role=\\'button\\' title=\\'#=close#\\' aria-label=\\'#=close#\\' aria-disabled=\\'false\\' tabindex=\\'0\\'>' + '<span class=\\'k-icon k-i-close\\'>' + '</span>' + '</button>' + '</div>' + '</div>' + '</div>' + '</li>';\n (function ($) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, ButtonGroup = ui.ButtonGroup, CHANGE = 'change', NS = '.kendoFilter', EQ = 'Is equal to', NEQ = 'Is not equal to', proxy = $.proxy;\n var FilterButtonGroup = ButtonGroup.extend({\n init: function (element, options) {\n var that = this;\n ButtonGroup.fn.init.call(that, element, options);\n },\n options: { name: 'FilterButtonGroup' },\n value: function (value) {\n if (value === undefined) {\n return this._value;\n }\n this._value = value;\n ButtonGroup.fn.select.call(this, this.wrapper.find('[value=\\'' + value + '\\']')[0]);\n this.trigger(CHANGE);\n },\n select: function (button) {\n if (button !== -1) {\n this.value($(button).attr('value'));\n }\n }\n });\n var Filter = Widget.extend({\n init: function (element, options) {\n var that = this;\n var html;\n Widget.fn.init.call(that, element, options);\n that.element = $(element).addClass('k-widget k-filter');\n that.dataSource = options.dataSource;\n that.operators = $.extend(that.options.operators, options.operators);\n that._getFieldsInfo();\n that._modelChangeHandler = proxy(that._modelChange, that);\n that._renderMain();\n if (options.expression) {\n that._addExpressionTree(that.filterModel);\n }\n that._renderApplyButton();\n if (that.options.expressionPreview) {\n if (!that._previewContainer) {\n that._previewContainer = $('<div class=\"k-filter-preview\"></div>').insertAfter(that.element.children().eq(0));\n }\n html = that._createPreview(that.filterModel.toJSON());\n that._previewContainer.html(html);\n }\n that._attachEvents();\n },\n events: [CHANGE],\n options: {\n name: 'Filter',\n dataSource: null,\n expression: null,\n applyButton: false,\n fields: [],\n mainLogic: 'and',\n messages: {\n and: 'And',\n or: 'Or',\n apply: 'Apply',\n close: 'Close',\n addExpression: 'Add Expression',\n fields: 'Fields',\n operators: 'Operators',\n addGroup: 'Add Group'\n },\n operators: {\n string: {\n eq: EQ,\n neq: NEQ,\n startswith: 'Starts with',\n contains: 'Contains',\n doesnotcontain: 'Does not contain',\n endswith: 'Ends with',\n isnull: 'Is null',\n isnotnull: 'Is not null',\n isempty: 'Is empty',\n isnotempty: 'Is not empty',\n isnullorempty: 'Has no value',\n isnotnullorempty: 'Has value'\n },\n number: {\n eq: EQ,\n neq: NEQ,\n gte: 'Is greater than or equal to',\n gt: 'Is greater than',\n lte: 'Is less than or equal to',\n lt: 'Is less than',\n isnull: 'Is null',\n isnotnull: 'Is not null'\n },\n date: {\n eq: EQ,\n neq: NEQ,\n gte: 'Is after or equal to',\n gt: 'Is after',\n lte: 'Is before or equal to',\n lt: 'Is before',\n isnull: 'Is null',\n isnotnull: 'Is not null'\n },\n 'boolean': {\n eq: EQ,\n neq: NEQ\n }\n }\n },\n applyFilter: function () {\n var filter = this.filterModel.toJSON();\n if (this._hasFieldsFilter(filter.filters || [])) {\n this.dataSource.filter(filter);\n } else {\n this.dataSource.filter({});\n }\n },\n destroy: function () {\n this.element.off(NS);\n kendo.destroy(this.element.find('.k-filter-group-main'));\n this._previewContainer = null;\n this._applyButton = null;\n this._modelChangeHandler = null;\n Widget.fn.destroy.call(this);\n },\n setOptions: function (options) {\n kendo.deepExtend(this.options, options);\n this.destroy();\n this.element.empty();\n this.init(this.element, this.options);\n },\n getOptions: function () {\n var result = $.extend(true, {}, this.options);\n delete result.dataSource;\n result.expression = this.filterModel.toJSON();\n return result;\n },\n _addExpressionTree: function (model) {\n if (model.filters) {\n var parent = this.element.find('[id=' + model.uid + ']');\n for (var i = 0; i < model.filters.length; i++) {\n if (model.filters[i].logic) {\n this._addGroup(parent, model.filters[i]);\n } else {\n this._addExpression(parent, model.filters[i]);\n }\n if (model.filters[i].filters) {\n this._addExpressionTree(model.filters[i]);\n }\n }\n }\n },\n _attachEvents: function () {\n var that = this;\n that.element.on('click' + NS, 'button.k-button', function (e) {\n e.preventDefault();\n var button = $(e.currentTarget);\n var icon = button.find('span');\n var command = (icon.length ? icon : button).attr('class').split('-').pop();\n if (command == 'close') {\n that._removeExpression(button.closest('.k-toolbar'));\n } else if (command == 'expression') {\n that._addExpression(button.closest('.k-toolbar'));\n } else if (command == 'group') {\n that._addGroup(button.closest('.k-toolbar'));\n } else if (command == 'apply') {\n that.applyFilter();\n }\n });\n },\n _addExpression: function (parentContainer, model) {\n var that = this;\n var parentUID = parentContainer.attr('id');\n var itemsContainer = parentContainer.closest('.k-filter-toolbar').next('ul.k-filter-lines');\n var field = model ? that._fields[model.field] : that._defaultField;\n var expressionModel;\n var itemHTML = '';\n if (model) {\n expressionModel = model;\n } else {\n expressionModel = findModel(that.filterModel, parentUID);\n if (!expressionModel.filters) {\n expressionModel.set('filters', []);\n }\n expressionModel = that._addNewModel(expressionModel.filters, field);\n }\n if (!itemsContainer.length) {\n itemsContainer = $('<ul class=\\'k-filter-lines\\'></ul>').appendTo(parentContainer.closest('li'));\n }\n itemHTML = $(kendo.template(expressionItemTemplate)({\n fields: that._fields,\n operators: that.operators[field.type],\n close: that.options.messages.close,\n fieldsLabel: that.options.messages.fields,\n uid: expressionModel.uid,\n ns: kendo.ns\n })).appendTo(itemsContainer);\n that._addExpressionControls(itemHTML.find('.k-toolbar'), field, expressionModel);\n if (!model) {\n that._expressionChange();\n }\n },\n _addExpressionControls: function (container, field, filterModel) {\n var items = container.find('.k-filter-toolbar-item');\n var operatorsContainer = items.eq(1);\n var editorContainer = items.eq(2);\n kendo.destroy(operatorsContainer);\n kendo.destroy(editorContainer);\n operatorsContainer.empty();\n editorContainer.empty();\n this._appendOperators(operatorsContainer, field);\n this._appendEditor(editorContainer, field);\n this._bindModel(container, filterModel);\n this._showHideEditor(container, filterModel);\n },\n _appendOperators: function (container, field) {\n $(kendo.template(operatorsTemplate)({\n operators: this.operators[field.type],\n operatorsLabel: this.options.messages.operators,\n ns: kendo.ns\n })).appendTo(container);\n },\n _appendEditor: function (container, field) {\n if (kendo.isFunction(field.editor)) {\n field.editor(container, $.extend(true, {}, { field: field.name }));\n } else {\n $(kendo.template(field.editor)({\n ns: kendo.ns,\n field: field.name\n })).appendTo(container);\n }\n },\n _addNewModel: function (parent, field) {\n var filterModel;\n parent.push({ field: field.name });\n filterModel = parent[parent.length - 1];\n filterModel.set('value', field.defaultValue);\n filterModel.set('operator', 'eq');\n return filterModel;\n },\n _addGroup: function (parent, model) {\n var that = this;\n var filterModel = that.filterModel;\n var parentUID = parent.attr('id');\n var itemsContainer = parent.closest('.k-filter-toolbar').next('ul.k-filter-lines');\n var logicHTML;\n if (model) {\n filterModel = model;\n } else {\n filterModel = findModel(filterModel, parentUID);\n if (!filterModel.filters) {\n filterModel.set('filters', []);\n }\n filterModel.filters.push({ logic: that.options.mainLogic });\n filterModel = filterModel.filters[filterModel.filters.length - 1];\n }\n if (!itemsContainer.length) {\n itemsContainer = $('<ul class=\\'k-filter-lines\\'></ul>').appendTo(parent.closest('li'));\n }\n logicHTML = $(kendo.template(logicItemTemplate)({\n operators: {\n and: that.options.messages.and,\n or: that.options.messages.or\n },\n addExpression: that.options.messages.addExpression,\n addGroup: that.options.messages.addGroup,\n close: that.options.messages.close,\n ns: kendo.ns\n })).appendTo(itemsContainer);\n that._bindModel(logicHTML.find('.k-toolbar'), filterModel);\n if (!model) {\n that._expressionChange();\n }\n },\n _bindModel: function (container, model) {\n container.attr('id', model.uid);\n model.bind('change', this._modelChangeHandler);\n kendo.bind(container, model);\n container.parent().attr(kendo.attr('stop'), true);\n },\n _createPreview: function (filter) {\n var html = '';\n var createdField = false;\n var haveFields = this._hasFieldsFilter(filter.filters || []);\n var childhtml = '';\n var current;\n if (!filter.filters || !filter.filters.length || !haveFields) {\n return '';\n }\n html += '<span class=\"k-filter-preview-bracket\">(</span>';\n for (var i = 0; i < filter.filters.length; i++) {\n current = filter.filters[i];\n if (current.filters) {\n childhtml = this._createPreview(current);\n if (childhtml) {\n if (createdField) {\n html += '<span class=\"k-filter-preview-operator\"> ' + filter.logic.toLocaleUpperCase() + ' </span>';\n }\n createdField = true;\n }\n html += childhtml;\n }\n if (current.field) {\n if (createdField) {\n html += '<span class=\"k-filter-preview-operator\"> ' + filter.logic.toLocaleUpperCase() + ' </span>';\n }\n createdField = true;\n html += '<span class=\"k-filter-preview-field\">' + this._fields[current.field].label + '</span>';\n html += '<span class=\"k-filter-preview-criteria\"> ' + this._getOperatorText(current.field, current.operator);\n if (current.operator.indexOf('is') < 0) {\n html += ' </span>';\n html += '<span class=\\'k-filter-preview-value\\'>\\'' + kendo.htmlEncode(current.value) + '\\'</span>';\n } else {\n html += '</span>';\n }\n }\n }\n html += '<span class=\"k-filter-preview-bracket\">)</span>';\n return html;\n },\n _expressionChange: function () {\n var that = this;\n var filter = that.filterModel.toJSON();\n var html = '';\n if (that.options.expressionPreview) {\n html = that._createPreview(filter);\n that._previewContainer.html(html);\n }\n that.trigger(CHANGE, { expression: filter });\n },\n _getOperatorText: function (field, operator) {\n var type = this._fields[field].type;\n return this.options.operators[type][operator];\n },\n _getFieldsInfo: function () {\n var that = this;\n var fieldsCollection = that.options.fields.length ? that.options.fields : (that.options.dataSource.options.schema.model || {}).fields;\n var fieldInfo;\n that._fields = {};\n for (var field in fieldsCollection) {\n fieldInfo = fieldsCollection[field];\n fieldInfo = $.extend(true, {}, {\n name: fieldInfo.name || field,\n editor: fieldInfo.editorTemplate || editors[fieldInfo.type || 'string'],\n defaultValue: fieldInfo.defaultValue || '',\n type: fieldInfo.type || 'string',\n label: fieldInfo.label || fieldInfo.name || field\n });\n that._fields[fieldInfo.name] = fieldInfo;\n if (!that._defaultField) {\n that._defaultField = fieldInfo;\n }\n }\n },\n _hasFieldsFilter: function (filters, haveField) {\n haveField = !!haveField;\n for (var i = 0; i < filters.length; i++) {\n if (filters[i].filters) {\n haveField = this._hasFieldsFilter(filters[i].filters, haveField);\n }\n if (filters[i].field) {\n return true;\n }\n }\n return haveField;\n },\n _modelChange: function (e) {\n var that = this;\n var container = that.element.find('[id=' + e.sender.uid + ']');\n that._showHideEditor(container, e.sender);\n if (e.field !== 'field') {\n if (e.field !== 'filters') {\n that._expressionChange();\n }\n return;\n }\n var newField = e.sender.field;\n var parent = e.sender.parent();\n var field = that._fields[newField];\n var filterModel = that._addNewModel(parent, field);\n e.sender.unbind('change', that._modelChangeHandler);\n parent.remove(e.sender);\n that._addExpressionControls(container, field, filterModel);\n that._expressionChange();\n },\n _renderMain: function () {\n var that = this;\n $(mainContainer).appendTo(that.element);\n if (that.options.expression) {\n that.filterModel = kendo.observable(that.options.expression);\n } else {\n that.filterModel = kendo.observable({ logic: that.options.mainLogic });\n }\n $(kendo.template(mainLogicTemplate)({\n operators: {\n and: that.options.messages.and,\n or: that.options.messages.or\n },\n addExpression: that.options.messages.addExpression,\n addGroup: that.options.messages.addGroup,\n close: that.options.messages.close,\n uid: that.filterModel.uid,\n ns: kendo.ns\n })).appendTo(that.element.find('li:first'));\n that._bindModel(that.element.find('.k-toolbar:first'), that.filterModel);\n },\n _removeExpression: function (parent) {\n var that = this;\n var parentUID = parent.attr('id');\n var itemContainer = parent.closest('li');\n var isMain = itemContainer.hasClass('k-filter-group-main');\n var parentModel;\n var model;\n if (isMain) {\n itemContainer = itemContainer.find('.k-filter-lines');\n if (that.filterModel.filters) {\n that.filterModel.filters.empty();\n delete that.filterModel.filters;\n }\n } else {\n model = findModel(that.filterModel, parentUID);\n parentModel = model.parent();\n model.unbind('change', that._modelChangeHandler);\n parentModel.remove(model);\n if (!parentModel.length) {\n delete parentModel.parent().filters;\n }\n if (!itemContainer.siblings().length) {\n itemContainer = itemContainer.parent();\n }\n }\n kendo.destroy(itemContainer);\n itemContainer.remove();\n that._expressionChange();\n },\n _renderApplyButton: function () {\n var that = this;\n if (!that.options.applyButton) {\n return;\n }\n if (!that._applyButton) {\n that._applyButton = $(kendo.format('<button type=\"button\" aria-label=\"{0}\" title=\"{0}\" class=\"k-button k-filter-apply\">{0}</button>', that.options.messages.apply)).appendTo(that.element);\n }\n },\n _showHideEditor: function (container, model) {\n if (model.logic) {\n return;\n }\n var operator = model.operator;\n var editorContainer = container.find('.k-filter-toolbar-item:eq(2)');\n if (operator == 'isnull' || operator == 'isnotnull' || operator == 'isempty' || operator == 'isnotempty' || operator == 'isnullorempty' || operator == 'isnotnullorempty') {\n editorContainer.hide();\n } else {\n editorContainer.show();\n }\n }\n });\n function findModel(model, uid) {\n if (model.uid === uid) {\n return model;\n }\n if (model.filters) {\n for (var i = 0; i < model.filters.length; i++) {\n var temp = findModel(model.filters[i], uid);\n if (temp) {\n return temp;\n }\n }\n }\n }\n ui.plugin(Filter);\n ui.plugin(FilterButtonGroup);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.filtercell', [\n 'kendo.autocomplete',\n 'kendo.datepicker',\n 'kendo.numerictextbox',\n 'kendo.combobox',\n 'kendo.dropdownlist'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'filtercell',\n name: 'Row filter',\n category: 'framework',\n depends: ['autocomplete'],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, DataSource = kendo.data.DataSource, Widget = ui.Widget, CHANGE = 'change', BOOL = 'boolean', ENUM = 'enums', STRING = 'string', EQ = 'Is equal to', NEQ = 'Is not equal to', proxy = $.proxy, nonValueOperators = [\n 'isnull',\n 'isnotnull',\n 'isempty',\n 'isnotempty',\n 'isnullorempty',\n 'isnotnullorempty'\n ];\n function isNonValueFilter(filter) {\n var operator = typeof filter === 'string' ? filter : filter.operator;\n return $.inArray(operator, nonValueOperators) > -1;\n }\n function findFilterForField(filter, field) {\n var filters = [];\n if ($.isPlainObject(filter)) {\n if (filter.hasOwnProperty('filters')) {\n filters = filter.filters;\n } else if (filter.field == field) {\n return filter;\n }\n }\n if ($.isArray(filter)) {\n filters = filter;\n }\n for (var i = 0; i < filters.length; i++) {\n var result = findFilterForField(filters[i], field);\n if (result) {\n return result;\n }\n }\n }\n function removeFiltersForField(expression, field) {\n if (expression.filters) {\n expression.filters = $.grep(expression.filters, function (filter) {\n removeFiltersForField(filter, field);\n if (filter.filters) {\n return filter.filters.length;\n } else {\n return filter.field != field;\n }\n });\n }\n }\n function removeDuplicates(dataSelector, dataTextField) {\n var getter = kendo.getter(dataTextField, true);\n return function (e) {\n var items = dataSelector(e), result = [], index = 0, seen = {};\n while (index < items.length) {\n var item = items[index++], text = getter(item);\n if (!seen.hasOwnProperty(text)) {\n result.push(item);\n seen[text] = true;\n }\n }\n return result;\n };\n }\n var FilterCell = Widget.extend({\n init: function (element, options) {\n element = $(element).addClass('k-filtercell');\n var wrapper = this.wrapper = $('<span/>').appendTo(element);\n var that = this, dataSource, viewModel, passedOptions = options, first, type, operators = that.operators = options.operators || {}, input = that.input = $('<input/>').attr(kendo.attr('bind'), 'value: value').appendTo(wrapper);\n var suggestDataSource = options ? options.suggestDataSource : null;\n if (suggestDataSource) {\n options = $.extend({}, options, { suggestDataSource: {} });\n }\n Widget.fn.init.call(that, element[0], options);\n if (suggestDataSource) {\n that.options.suggestDataSource = suggestDataSource;\n }\n options = that.options;\n dataSource = that.dataSource = options.dataSource;\n that.model = dataSource.reader.model;\n type = options.type = STRING;\n var fields = kendo.getter('reader.model.fields', true)(dataSource) || {};\n var target = fields[options.field];\n if (target && target.type) {\n type = options.type = target.type;\n }\n if (options.values) {\n options.type = type = ENUM;\n }\n operators = operators[type] || options.operators[type];\n if (!passedOptions.operator) {\n for (first in operators) {\n options.operator = first;\n break;\n }\n }\n that._parse = function (value) {\n return value != null ? value + '' : value;\n };\n if (that.model && that.model.fields) {\n var field = that.model.fields[options.field];\n if (field) {\n if (field.parse) {\n that._parse = proxy(field.parse, field);\n }\n }\n }\n that.defaultOperator = options.operator;\n that.viewModel = viewModel = kendo.observable({\n operator: options.operator,\n value: null,\n operatorVisible: function () {\n var val = this.get('value');\n return val !== null && val !== undefined && val != 'undefined' || isNonValueFilter(this.get('operator')) && !that._clearInProgress;\n }\n });\n viewModel.bind(CHANGE, proxy(that.updateDsFilter, that));\n if (type == STRING) {\n that.initSuggestDataSource(options);\n }\n if (options.inputWidth !== null) {\n input.addClass('k-sized-input');\n input.width(options.inputWidth);\n }\n input.attr('aria-label', that._getColumnTitle());\n input.attr('title', that._getColumnTitle());\n that._setInputType(options, type);\n if (type != BOOL && options.showOperators !== false) {\n that._createOperatorDropDown(operators);\n } else {\n $('<div unselectable=\"on\" />').css('display', 'none').text('eq').appendTo(wrapper);\n wrapper.addClass('k-operator-hidden');\n }\n that._createClearIcon();\n kendo.bind(this.wrapper, viewModel);\n if (type == STRING) {\n if (!options.template) {\n that.setAutoCompleteSource();\n }\n }\n if (type == ENUM) {\n that.setComboBoxSource(that.options.values);\n }\n that._refreshUI();\n that._refreshHandler = proxy(that._refreshUI, that);\n that.dataSource.bind(CHANGE, that._refreshHandler);\n },\n _setInputType: function (options, type) {\n var that = this, input = that.input;\n if (typeof options.template == 'function') {\n options.template.call(that.viewModel, {\n element: that.input,\n dataSource: that.suggestDataSource\n });\n that._angularItems('compile');\n } else if (type == STRING) {\n input.attr(kendo.attr('role'), 'autocomplete').attr(kendo.attr('text-field'), options.dataTextField || options.field).attr(kendo.attr('filter'), options.suggestionOperator).attr(kendo.attr('delay'), options.delay).attr(kendo.attr('min-length'), options.minLength).attr(kendo.attr('value-primitive'), true);\n } else if (type == 'date') {\n input.attr(kendo.attr('role'), 'datepicker');\n } else if (type == BOOL) {\n input.remove();\n var radioInput = $('<input type=\\'radio\\'/>');\n var wrapper = that.wrapper;\n var inputName = kendo.guid();\n var labelTrue = $('<label/>').text(options.messages.isTrue).append(radioInput);\n radioInput.attr(kendo.attr('bind'), 'checked:value').attr('name', inputName).val('true');\n var labelFalse = labelTrue.clone().text(options.messages.isFalse);\n radioInput.clone().val('false').appendTo(labelFalse);\n wrapper.append([\n labelTrue,\n labelFalse\n ]);\n } else if (type == 'number') {\n input.attr(kendo.attr('role'), 'numerictextbox').attr('title', that._getColumnTitle());\n } else if (type == ENUM) {\n input.attr(kendo.attr('role'), 'combobox').attr(kendo.attr('text-field'), 'text').attr(kendo.attr('suggest'), true).attr(kendo.attr('filter'), 'contains').attr(kendo.attr('value-field'), 'value').attr(kendo.attr('value-primitive'), true);\n }\n },\n _getColumnTitle: function () {\n var column = this.options.column;\n return column ? column.title || column.field : '';\n },\n _createOperatorDropDown: function (operators) {\n var items = [], viewModel = this.viewModel;\n for (var prop in operators) {\n items.push({\n text: operators[prop],\n value: prop\n });\n }\n var dropdown = $('<input class=\"k-dropdown-operator\" ' + kendo.attr('bind') + '=\"value: operator\"/>').appendTo(this.wrapper);\n this.operatorDropDown = dropdown.kendoDropDownList({\n dataSource: items,\n dataTextField: 'text',\n dataValueField: 'value',\n open: function () {\n this.popup.element.width(150);\n },\n valuePrimitive: true\n }).data('kendoDropDownList');\n viewModel.bind('change', function () {\n var ariaLabel = operators[viewModel.operator];\n dropdown.attr('aria-label', ariaLabel);\n });\n this.operatorDropDown.wrapper.find('.k-i-arrow-60-down').removeClass('k-i-arrow-60-down').addClass('k-i-filter');\n },\n initSuggestDataSource: function (options) {\n var suggestDataSource = options.suggestDataSource;\n if (!(suggestDataSource instanceof DataSource)) {\n if (!options.customDataSource && suggestDataSource) {\n suggestDataSource.group = undefined;\n }\n suggestDataSource = this.suggestDataSource = DataSource.create(suggestDataSource);\n }\n if (!options.customDataSource) {\n suggestDataSource._pageSize = undefined;\n suggestDataSource.reader.data = removeDuplicates(suggestDataSource.reader.data, this.options.field);\n }\n this.suggestDataSource = suggestDataSource;\n },\n setAutoCompleteSource: function () {\n var autoComplete = this.input.data('kendoAutoComplete');\n if (autoComplete) {\n autoComplete.setDataSource(this.suggestDataSource);\n }\n },\n setComboBoxSource: function (values) {\n var dataSource = DataSource.create({ data: values });\n var comboBox = this.input.data('kendoComboBox');\n if (comboBox) {\n comboBox.setDataSource(dataSource);\n }\n },\n _refreshUI: function () {\n var that = this, filter = findFilterForField(that.dataSource.filter(), this.options.field) || {}, viewModel = that.viewModel;\n that.manuallyUpdatingVM = true;\n filter = $.extend(true, {}, filter);\n if (that.options.type == BOOL) {\n if (viewModel.value !== filter.value) {\n that.wrapper.find(':radio').prop('checked', false);\n }\n }\n if (filter.operator) {\n viewModel.set('operator', filter.operator);\n }\n viewModel.set('value', filter.value);\n that.manuallyUpdatingVM = false;\n },\n updateDsFilter: function (e) {\n var that = this, model = that.viewModel;\n if (that.manuallyUpdatingVM || e.field == 'operator' && model.value === undefined && !isNonValueFilter(model) || e.field == 'operator' && that._clearInProgress && model.value !== null) {\n return;\n }\n var currentFilter = $.extend({}, that.viewModel.toJSON(), { field: that.options.field });\n var expression = {\n logic: 'and',\n filters: []\n };\n var prevented = false;\n if (currentFilter.value !== undefined && currentFilter.value !== null || isNonValueFilter(currentFilter) && !this._clearInProgress) {\n expression.filters.push(currentFilter);\n prevented = that.trigger(CHANGE, {\n filter: expression,\n field: that.options.field\n });\n }\n if (that._clearInProgress || currentFilter.value === null) {\n prevented = that.trigger(CHANGE, {\n filter: null,\n field: that.options.field\n });\n }\n if (prevented) {\n return;\n }\n var mergeResult = that._merge(expression);\n if (mergeResult.filters.length) {\n that.dataSource.filter(mergeResult);\n } else {\n that.dataSource.filter({});\n }\n },\n _merge: function (expression) {\n var that = this, logic = expression.logic || 'and', filters = expression.filters, filter, result = that.dataSource.filter() || {\n filters: [],\n logic: 'and'\n }, idx, length;\n removeFiltersForField(result, that.options.field);\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n filter.value = that._parse(filter.value);\n }\n filters = $.grep(filters, function (filter) {\n return filter.value !== '' && filter.value !== null || isNonValueFilter(filter);\n });\n if (filters.length) {\n if (result.filters.length) {\n expression.filters = filters;\n if (result.logic !== 'and') {\n result.filters = [{\n logic: result.logic,\n filters: result.filters\n }];\n result.logic = 'and';\n }\n if (filters.length > 1) {\n result.filters.push(expression);\n } else {\n result.filters.push(filters[0]);\n }\n } else {\n result.filters = filters;\n result.logic = logic;\n }\n }\n return result;\n },\n _createClearIcon: function () {\n var that = this;\n $('<button type=\\'button\\' class=\\'k-button k-button-icon\\' title = ' + that.options.messages.clear + '/>').attr('aria-label', that.options.messages.clear).attr(kendo.attr('bind'), 'visible:operatorVisible').html('<span class=\\'k-icon k-i-filter-clear\\'/>').click(proxy(that.clearFilter, that)).appendTo(that.wrapper);\n },\n clearFilter: function () {\n this._clearInProgress = true;\n if (isNonValueFilter(this.viewModel.operator)) {\n this.viewModel.set('operator', this.defaultOperator);\n }\n this.viewModel.set('value', null);\n this._clearInProgress = false;\n },\n _angularItems: function (action) {\n var elements = this.wrapper.closest('th').get();\n var column = this.options.column;\n this.angular(action, function () {\n return {\n elements: elements,\n data: [{ column: column }]\n };\n });\n },\n destroy: function () {\n var that = this;\n that.filterModel = null;\n that.operatorDropDown = null;\n that._angularItems('cleanup');\n if (that._refreshHandler) {\n that.dataSource.bind(CHANGE, that._refreshHandler);\n that._refreshHandler = null;\n }\n kendo.unbind(that.element);\n Widget.fn.destroy.call(that);\n kendo.destroy(that.element);\n },\n events: [CHANGE],\n options: {\n name: 'FilterCell',\n delay: 200,\n minLength: 1,\n inputWidth: null,\n values: undefined,\n customDataSource: false,\n field: '',\n dataTextField: '',\n type: 'string',\n suggestDataSource: null,\n suggestionOperator: 'startswith',\n operator: 'eq',\n showOperators: true,\n template: null,\n messages: {\n isTrue: 'is true',\n isFalse: 'is false',\n filter: 'Filter',\n clear: 'Clear',\n operator: 'Operator'\n },\n operators: {\n string: {\n eq: EQ,\n neq: NEQ,\n startswith: 'Starts with',\n contains: 'Contains',\n doesnotcontain: 'Does not contain',\n endswith: 'Ends with',\n isnull: 'Is null',\n isnotnull: 'Is not null',\n isempty: 'Is empty',\n isnotempty: 'Is not empty',\n isnullorempty: 'Has no value',\n isnotnullorempty: 'Has value'\n },\n number: {\n eq: EQ,\n neq: NEQ,\n gte: 'Is greater than or equal to',\n gt: 'Is greater than',\n lte: 'Is less than or equal to',\n lt: 'Is less than',\n isnull: 'Is null',\n isnotnull: 'Is not null'\n },\n date: {\n eq: EQ,\n neq: NEQ,\n gte: 'Is after or equal to',\n gt: 'Is after',\n lte: 'Is before or equal to',\n lt: 'Is before',\n isnull: 'Is null',\n isnotnull: 'Is not null'\n },\n enums: {\n eq: EQ,\n neq: NEQ,\n isnull: 'Is null',\n isnotnull: 'Is not null'\n }\n }\n }\n });\n ui.plugin(FilterCell);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.panelbar', ['kendo.data'], f);\n}(function () {\n var __meta__ = {\n id: 'panelbar',\n name: 'PanelBar',\n category: 'web',\n description: 'The PanelBar widget displays hierarchical data as a multi-level expandable panel bar.',\n depends: [\n 'core',\n 'data',\n 'data.odata'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, keys = kendo.keys, extend = $.extend, proxy = $.proxy, each = $.each, isArray = $.isArray, template = kendo.template, Widget = ui.Widget, HierarchicalDataSource = kendo.data.HierarchicalDataSource, excludedNodesRegExp = /^(ul|a|div)$/i, NS = '.kendoPanelBar', IMG = 'img', HREF = 'href', LAST = 'k-last', LINK = 'k-link', LINKSELECTOR = '.' + LINK, ERROR = 'error', ITEM = '.k-item', GROUP = '.k-group', VISIBLEGROUP = GROUP + ':visible', IMAGE = 'k-image', FIRST = 'k-first', CHANGE = 'change', EXPAND = 'expand', SELECT = 'select', CONTENT = 'k-content', ACTIVATE = 'activate', COLLAPSE = 'collapse', DATABOUND = 'dataBound', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', CONTENTLOAD = 'contentLoad', UNDEFINED = 'undefined', ACTIVECLASS = 'k-state-active', GROUPS = '> .k-panel', CONTENTS = '> .k-content', STRING = 'string', FOCUSEDCLASS = 'k-state-focused', DISABLEDCLASS = 'k-state-disabled', SELECTEDCLASS = 'k-state-selected', SELECTEDSELECTOR = '.' + SELECTEDCLASS, HIGHLIGHTCLASS = 'k-state-highlight', ACTIVEITEMSELECTOR = ITEM + ':not(.k-state-disabled)', clickableItems = '> ' + ACTIVEITEMSELECTOR + ' > ' + LINKSELECTOR + ', .k-panel > ' + ACTIVEITEMSELECTOR + ' > ' + LINKSELECTOR, disabledItems = ITEM + '.k-state-disabled > .k-link', selectableItems = '> li > ' + SELECTEDSELECTOR + ', .k-panel > li > ' + SELECTEDSELECTOR, defaultState = 'k-state-default', ARIA_DISABLED = 'aria-disabled', ARIA_EXPANDED = 'aria-expanded', ARIA_HIDDEN = 'aria-hidden', ARIA_SELECTED = 'aria-selected', VISIBLE = ':visible', EMPTY = ':empty', SINGLE = 'single', bindings = {\n text: 'dataTextField',\n url: 'dataUrlField',\n spriteCssClass: 'dataSpriteCssClassField',\n imageUrl: 'dataImageUrlField'\n }, itemIcon, rendering = {\n aria: function (item) {\n var attr = '';\n if (item.items || item.content || item.contentUrl || item.expanded) {\n attr += ARIA_EXPANDED + '=\\'' + (item.expanded ? 'true' : 'false') + '\\' ';\n }\n if (item.enabled === false) {\n attr += ARIA_DISABLED + '=\\'true\\'';\n }\n return attr;\n },\n wrapperCssClass: function (group, item) {\n var result = 'k-item', index = item.index;\n if (item.enabled === false) {\n result += ' ' + DISABLEDCLASS;\n } else if (item.expanded === true) {\n result += ' ' + ACTIVECLASS;\n } else {\n result += ' k-state-default';\n }\n if (index === 0) {\n result += ' k-first';\n }\n if (index == group.length - 1) {\n result += ' k-last';\n }\n if (item.cssClass) {\n result += ' ' + item.cssClass;\n }\n return result;\n },\n textClass: function (item, group) {\n var result = LINK;\n if (group.firstLevel) {\n result += ' k-header';\n }\n if (item.selected) {\n result += ' ' + SELECTEDCLASS;\n }\n return result;\n },\n textAttributes: function (url) {\n return url ? ' href=\\'' + url + '\\'' : '';\n },\n arrowClass: function (item) {\n var result = 'k-icon';\n result += item.expanded ? ' k-panelbar-collapse k-i-arrow-60-up' : ' k-panelbar-expand k-i-arrow-60-down';\n return result;\n },\n text: function (item) {\n return item.encoded === false ? item.text : kendo.htmlEncode(item.text);\n },\n groupAttributes: function (group) {\n return group.expanded !== true ? ' style=\\'display:none\\'' : '';\n },\n ariaHidden: function (group) {\n return group.expanded !== true;\n },\n groupCssClass: function () {\n return 'k-group k-panel';\n },\n contentAttributes: function (content) {\n return content.item.expanded !== true ? ' style=\\'display:none\\'' : '';\n },\n content: function (item) {\n return item.content ? item.content : item.contentUrl ? '' : ' ';\n },\n contentUrl: function (item) {\n return item.contentUrl ? 'href=\"' + item.contentUrl + '\"' : '';\n }\n };\n function updateFirstLast(items) {\n items = $(items);\n items.filter('.k-first:not(:first-child)').removeClass(FIRST);\n items.filter('.k-last:not(:last-child)').removeClass(LAST);\n items.filter(':first-child').addClass(FIRST);\n items.filter(':last-child').addClass(LAST);\n }\n function updateItemHtml(item) {\n var wrapper = item, group = item.children('ul'), toggleButton = wrapper.children('.k-link').children('.k-icon');\n if (item.hasClass('k-panelbar')) {\n return;\n }\n if (!toggleButton.length && group.length) {\n toggleButton = $('<span class=\\'k-icon\\' />').appendTo(wrapper);\n } else if (!group.length || !group.children().length) {\n toggleButton.remove();\n group.remove();\n }\n }\n itemIcon = function (item) {\n return item.children('span').children('.k-icon');\n };\n var PanelBar = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n var that = this, content, hasDataSource;\n if (isArray(options)) {\n options = { dataSource: options };\n }\n hasDataSource = options && !!options.dataSource;\n Widget.fn.init.call(that, element, options);\n element = that.wrapper = that.element.addClass('k-widget k-reset k-header k-panelbar');\n options = that.options;\n if (element[0].id) {\n that._itemId = element[0].id + '_pb_active';\n }\n that._tabindex();\n that._accessors();\n that._dataSource();\n that._templates();\n that._initData(hasDataSource);\n that._updateClasses();\n that._animations(options);\n element.on('click' + NS, clickableItems, function (e) {\n if (that._click($(e.currentTarget))) {\n e.preventDefault();\n }\n }).on(MOUSEENTER + NS + ' ' + MOUSELEAVE + NS, clickableItems, that._toggleHover).on('click' + NS, disabledItems, false).on('click' + NS, '.k-request-retry', proxy(that._retryRequest, that)).on('keydown' + NS, $.proxy(that._keydown, that)).on('focus' + NS, function () {\n var item = that.select();\n that._current(item[0] ? item : that._first());\n }).on('blur' + NS, function () {\n that._current(null);\n }).attr('role', 'menu');\n content = element.find('li.' + ACTIVECLASS + ' > .' + CONTENT);\n if (content[0]) {\n that.expand(content.parent(), false);\n }\n if (!options.dataSource) {\n that._angularCompile();\n }\n kendo.notify(that);\n },\n events: [\n EXPAND,\n COLLAPSE,\n SELECT,\n ACTIVATE,\n CHANGE,\n ERROR,\n DATABOUND,\n CONTENTLOAD\n ],\n options: {\n name: 'PanelBar',\n dataSource: {},\n animation: {\n expand: {\n effects: 'expand:vertical',\n duration: 200\n },\n collapse: { duration: 200 }\n },\n messages: {\n loading: 'Loading...',\n requestFailed: 'Request failed.',\n retry: 'Retry'\n },\n autoBind: true,\n loadOnDemand: true,\n expandMode: 'multiple',\n template: '',\n dataTextField: null\n },\n _angularCompile: function () {\n var that = this;\n that.angular('compile', function () {\n return {\n elements: that.element.children('li'),\n data: [{ dataItem: that.options.$angular }]\n };\n });\n },\n _angularCompileElements: function (html, items) {\n var that = this;\n that.angular('compile', function () {\n return {\n elements: html,\n data: $.map(items, function (item) {\n return [{ dataItem: item }];\n })\n };\n });\n },\n _angularCleanup: function () {\n var that = this;\n that.angular('cleanup', function () {\n return { elements: that.element.children('li') };\n });\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.element.off(NS);\n this._angularCleanup();\n kendo.destroy(this.element);\n },\n _initData: function (hasDataSource) {\n var that = this;\n if (hasDataSource) {\n that.element.empty();\n if (that.options.autoBind) {\n that._progress(true);\n that.dataSource.fetch();\n }\n }\n },\n _templates: function () {\n var that = this, options = that.options, fieldAccessor = proxy(that._fieldAccessor, that);\n if (options.template && typeof options.template == STRING) {\n options.template = template(options.template);\n } else if (!options.template) {\n options.template = template('# var text = ' + fieldAccessor('text') + '(data.item); #' + '# if (typeof data.item.encoded != \\'undefined\\' && data.item.encoded === false) {#' + '#= text #' + '# } else { #' + '#: text #' + '# } #');\n }\n that.templates = {\n content: template('<div role=\\'region\\' class=\\'k-content\\'#= contentAttributes(data) #>#= content(item) #</div>'),\n group: template('<ul role=\\'group\\' aria-hidden=\\'#= ariaHidden(group) #\\' class=\\'#= groupCssClass(group) #\\'#= groupAttributes(group) #>' + '#= renderItems(data) #' + '</ul>'),\n itemWrapper: template('# var url = ' + fieldAccessor('url') + '(item); #' + '# var imageUrl = ' + fieldAccessor('imageUrl') + '(item); #' + '# var spriteCssClass = ' + fieldAccessor('spriteCssClass') + '(item); #' + '# var contentUrl = contentUrl(item); #' + '# var tag = url||contentUrl ? \\'a\\' : \\'span\\'; #' + '<#= tag # class=\\'#= textClass(item, group) #\\' #= contentUrl ##= textAttributes(url) #>' + '# if (imageUrl) { #' + '<img class=\\'k-image\\' alt=\\'\\' src=\\'#= imageUrl #\\' />' + '# } #' + '# if (spriteCssClass) { #' + '<span class=\\'k-sprite #= spriteCssClass #\\'></span>' + '# } #' + '#= data.panelBar.options.template(data) #' + '#= arrow(data) #' + '</#= tag #>'),\n item: template('<li role=\\'menuitem\\' #=aria(item)#class=\\'#= wrapperCssClass(group, item) #\\'' + kendo.attr('uid') + '=\\'#= item.uid #\\'>' + '#= itemWrapper(data) #' + '# if (item.items && item.items.length > 0) { #' + '#= subGroup({ items: item.items, panelBar: panelBar, group: { expanded: item.expanded } }) #' + '# } else if (item.content || item.contentUrl) { #' + '#= renderContent(data) #' + '# } #' + '</li>'),\n loading: template('<div class=\\'k-item\\'><span class=\\'k-icon k-i-loading\\'></span> #: data.messages.loading #</div>'),\n retry: template('#: data.messages.requestFailed # ' + '<button class=\\'k-button k-request-retry\\'>#: data.messages.retry #</button>'),\n arrow: template('<span class=\\'#= arrowClass(item) #\\'></span>'),\n empty: template('')\n };\n },\n setOptions: function (options) {\n var animation = this.options.animation;\n this._animations(options);\n options.animation = extend(true, animation, options.animation);\n if ('dataSource' in options) {\n this.setDataSource(options.dataSource);\n }\n Widget.fn.setOptions.call(this, options);\n },\n expand: function (element, useAnimation) {\n var that = this, animBackup = {};\n element = this.element.find(element);\n if (that._animating && element.find('ul').is(':visible')) {\n that.one('complete', function () {\n setTimeout(function () {\n that.expand(element);\n });\n });\n return;\n }\n that._animating = true;\n useAnimation = useAnimation !== false;\n element.each(function (index, item) {\n item = $(item);\n var wrapper = element.children('.k-group,.k-content');\n if (!wrapper.length) {\n wrapper = that._addGroupElement(element);\n }\n var groups = wrapper.add(item.find(CONTENTS));\n if (!item.hasClass(DISABLEDCLASS) && groups.length > 0) {\n if (that.options.expandMode == SINGLE && that._collapseAllExpanded(item)) {\n return that;\n }\n element.find('.' + HIGHLIGHTCLASS).removeClass(HIGHLIGHTCLASS);\n item.addClass(HIGHLIGHTCLASS);\n if (!useAnimation) {\n animBackup = that.options.animation;\n that.options.animation = {\n expand: { effects: {} },\n collapse: {\n hide: true,\n effects: {}\n }\n };\n }\n if (!that._triggerEvent(EXPAND, item)) {\n that._toggleItem(item, false, false);\n }\n if (!useAnimation) {\n that.options.animation = animBackup;\n }\n }\n });\n return that;\n },\n collapse: function (element, useAnimation) {\n var that = this, animBackup = {};\n that._animating = true;\n useAnimation = useAnimation !== false;\n element = that.element.find(element);\n element.each(function (index, item) {\n item = $(item);\n var groups = item.find(GROUPS).add(item.find(CONTENTS));\n if (!item.hasClass(DISABLEDCLASS) && groups.is(VISIBLE)) {\n item.removeClass(HIGHLIGHTCLASS);\n if (!useAnimation) {\n animBackup = that.options.animation;\n that.options.animation = {\n expand: { effects: {} },\n collapse: {\n hide: true,\n effects: {}\n }\n };\n }\n if (!that._triggerEvent(COLLAPSE, item)) {\n that._toggleItem(item, true);\n }\n if (!useAnimation) {\n that.options.animation = animBackup;\n }\n }\n });\n return that;\n },\n updateArrow: function (items) {\n var that = this;\n items = $(items);\n items.children(LINKSELECTOR).children('.k-panelbar-collapse, .k-panelbar-expand').remove();\n items.filter(function () {\n var dataItem = that.dataItem(this);\n if (!dataItem) {\n return $(this).find('.k-panel').length > 0 || $(this).find('.k-content').length > 0;\n }\n return dataItem.hasChildren || dataItem.content || dataItem.contentUrl;\n }).children('.k-link:not(:has([class*=k-i-arrow]))').each(function () {\n var item = $(this), parent = item.parent();\n item.append('<span class=\\'k-icon ' + (parent.hasClass(ACTIVECLASS) ? ' k-panelbar-collapse k-i-arrow-60-up' : ' k-panelbar-expand k-i-arrow-60-down') + '\\'/>');\n });\n },\n _accessors: function () {\n var that = this, options = that.options, i, field, textField, element = that.element;\n for (i in bindings) {\n field = options[bindings[i]];\n textField = element.attr(kendo.attr(i + '-field'));\n if (!field && textField) {\n field = textField;\n }\n if (!field) {\n field = i;\n }\n if (!isArray(field)) {\n field = [field];\n }\n options[bindings[i]] = field;\n }\n },\n _progress: function (item, showProgress) {\n var element = this.element;\n var loadingText = this.templates.loading({ messages: this.options.messages });\n if (arguments.length == 1) {\n showProgress = item;\n if (showProgress) {\n element.html(loadingText);\n } else {\n element.empty();\n }\n } else {\n itemIcon(item).toggleClass('k-i-loading', showProgress).removeClass('k-i-refresh');\n }\n },\n _refreshRoot: function (items) {\n var that = this;\n var parent = that.element;\n var groupData = {\n firstLevel: true,\n expanded: true,\n length: parent.children().length\n };\n this.element.empty();\n var rootItemsHtml = $.map(items, function (value, idx) {\n if (typeof value === 'string') {\n return $(value);\n } else {\n value.items = [];\n return $(that.renderItem({\n group: groupData,\n item: extend(value, { index: idx })\n }));\n }\n });\n this.element.append(rootItemsHtml);\n var elements = this.element.children('.k-item');\n for (var i = 0; i < items.length; i++) {\n this.trigger('itemChange', {\n item: elements.eq(i).find('.k-link').first(),\n data: items[i],\n ns: ui\n });\n }\n this._angularCompileElements(rootItemsHtml, items);\n },\n _refreshChildren: function (item, parentNode) {\n var i, children, child;\n parentNode.children('.k-group').empty();\n var items = item.children.data();\n if (!items.length) {\n updateItemHtml(parentNode);\n children = parentNode.children('.k-group').children('li');\n this._angularCompileElements(children, items);\n } else {\n this.append(item.children, parentNode);\n if (this.options.loadOnDemand) {\n this._toggleGroup(parentNode.children('.k-group'), false);\n }\n children = parentNode.children('.k-group').children('li');\n for (i = 0; i < children.length; i++) {\n child = children.eq(i);\n this.trigger('itemChange', {\n item: child.find('.k-link').first(),\n data: this.dataItem(child),\n ns: ui\n });\n }\n }\n },\n findByUid: function (uid) {\n var items = this.element.find('.k-item');\n var uidAttr = kendo.attr('uid');\n var result;\n for (var i = 0; i < items.length; i++) {\n if (items[i].getAttribute(uidAttr) == uid) {\n result = items[i];\n break;\n }\n }\n return $(result);\n },\n refresh: function (e) {\n var options = this.options;\n var node = e.node;\n var action = e.action;\n var items = e.items;\n var parentNode = this.wrapper;\n var loadOnDemand = options.loadOnDemand;\n if (e.field) {\n if (!items[0] || !items[0].level) {\n return;\n }\n return this._updateItems(items, e.field);\n }\n if (node) {\n parentNode = this.findByUid(node.uid);\n this._progress(parentNode, false);\n }\n if (action == 'add') {\n this._appendItems(e.index, items, parentNode);\n } else if (action == 'remove') {\n this.remove(this.findByUid(items[0].uid));\n } else if (action == 'itemchange') {\n this._updateItems(items);\n } else if (action == 'itemloaded') {\n this._refreshChildren(node, parentNode);\n } else {\n this._refreshRoot(items);\n }\n if (action != 'remove') {\n for (var k = 0; k < items.length; k++) {\n if (!loadOnDemand || items[k].expanded) {\n var tempItem = items[k];\n if (this._hasChildItems(tempItem)) {\n tempItem.load();\n }\n }\n }\n }\n this.trigger(DATABOUND, { node: node ? parentNode : undefined });\n },\n _error: function (e) {\n var node = e.node && this.findByUid(e.node.uid);\n var retryHtml = this.templates.retry({ messages: this.options.messages });\n if (node) {\n this._progress(node, false);\n this._expanded(node, false);\n itemIcon(node).addClass('k-i-refresh');\n e.node.loaded(false);\n } else {\n this._progress(false);\n this.element.html(retryHtml);\n }\n },\n _retryRequest: function (e) {\n e.preventDefault();\n this.dataSource.fetch();\n },\n items: function () {\n return this.element.find('.k-item > span:first-child');\n },\n setDataSource: function (dataSource) {\n var options = this.options;\n options.dataSource = dataSource;\n this._dataSource();\n if (this.options.autoBind) {\n this._progress(true);\n this.dataSource.fetch();\n }\n },\n _bindDataSource: function () {\n this._refreshHandler = proxy(this.refresh, this);\n this._errorHandler = proxy(this._error, this);\n this.dataSource.bind(CHANGE, this._refreshHandler);\n this.dataSource.bind(ERROR, this._errorHandler);\n },\n _unbindDataSource: function () {\n var dataSource = this.dataSource;\n if (dataSource) {\n dataSource.unbind(CHANGE, this._refreshHandler);\n dataSource.unbind(ERROR, this._errorHandler);\n }\n },\n _fieldAccessor: function (fieldName) {\n var fieldBindings = this.options[bindings[fieldName]] || [], count = fieldBindings.length, result = '(function(item) {';\n if (count === 0) {\n result += 'return item[\\'' + fieldName + '\\'];';\n } else {\n result += 'var levels = [' + $.map(fieldBindings, function (x) {\n return 'function(d){ return ' + kendo.expr(x) + '}';\n }).join(',') + '];';\n result += 'if(item.level){return levels[Math.min(item.level(), ' + count + '-1)](item);}else';\n result += '{return levels[' + count + '-1](item)}';\n }\n result += '})';\n return result;\n },\n _dataSource: function () {\n var that = this, options = that.options, dataSource = options.dataSource;\n if (!dataSource) {\n return;\n }\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n that._unbindDataSource();\n if (!dataSource.fields) {\n dataSource.fields = [\n { field: 'text' },\n { field: 'url' },\n { field: 'spriteCssClass' },\n { field: 'imageUrl' }\n ];\n }\n that.dataSource = HierarchicalDataSource.create(dataSource);\n that._bindDataSource();\n },\n _appendItems: function (index, items, parentNode) {\n var that = this, children, wrapper;\n if (parentNode.hasClass('k-panelbar')) {\n children = parentNode.children('li');\n wrapper = parentNode;\n } else {\n wrapper = parentNode.children('.k-group');\n if (!wrapper.length) {\n wrapper = that._addGroupElement(parentNode);\n }\n children = wrapper.children('li');\n }\n var groupData = {\n firstLevel: parentNode.hasClass('k-panelbar'),\n expanded: true,\n length: children.length\n };\n var itemsHtml = $.map(items, function (value, idx) {\n if (typeof value === 'string') {\n return $(value);\n } else {\n return $(that.renderItem({\n group: groupData,\n item: extend(value, { index: idx })\n }));\n }\n });\n if (typeof index == UNDEFINED) {\n index = children.length;\n }\n for (var i = 0; i < itemsHtml.length; i++) {\n if (children.length === 0 || index === 0) {\n wrapper.append(itemsHtml[i]);\n } else {\n itemsHtml[i].insertAfter(children[index - 1]);\n }\n }\n that._angularCompileElements(itemsHtml, items);\n if (that.dataItem(parentNode)) {\n that.dataItem(parentNode).hasChildren = true;\n that.updateArrow(parentNode);\n }\n },\n _updateItems: function (items, field) {\n var that = this;\n var i, node, nodeWrapper, item;\n var context = {\n panelBar: that.options,\n item: item,\n group: {}\n };\n var render = field != 'expanded';\n if (field == 'selected') {\n if (items[0][field]) {\n var currentNode = that.findByUid(items[0].uid);\n if (!currentNode.hasClass(DISABLEDCLASS)) {\n that.select(currentNode, true);\n }\n } else {\n that.clearSelection();\n }\n } else {\n var elements = $.map(items, function (item) {\n return that.findByUid(item.uid);\n });\n if (render) {\n that.angular('cleanup', function () {\n return { elements: elements };\n });\n }\n for (i = 0; i < items.length; i++) {\n context.item = item = items[i];\n context.panelBar = that;\n nodeWrapper = elements[i];\n node = nodeWrapper.parent();\n if (render) {\n context.group = {\n firstLevel: node.hasClass('k-panelbar'),\n expanded: nodeWrapper.parent().hasClass(ACTIVECLASS),\n length: nodeWrapper.children().length\n };\n nodeWrapper.children('.k-link').remove();\n nodeWrapper.prepend(that.templates.itemWrapper(extend(context, { arrow: item.hasChildren || item.content || item.contentUrl ? that.templates.arrow : that.templates.empty }, rendering)));\n }\n if (field == 'expanded') {\n that._toggleItem(nodeWrapper, !item[field], item[field] ? 'true' : true);\n } else if (field == 'enabled') {\n that.enable(nodeWrapper, item[field]);\n if (!item[field]) {\n if (item.selected) {\n item.set('selected', false);\n }\n }\n }\n if (nodeWrapper.length) {\n this.trigger('itemChange', {\n item: nodeWrapper.find('.k-link').first(),\n data: item,\n ns: ui\n });\n }\n }\n if (render) {\n that.angular('compile', function () {\n return {\n elements: elements,\n data: $.map(items, function (item) {\n return [{ dataItem: item }];\n })\n };\n });\n }\n }\n },\n _toggleDisabled: function (element, enable) {\n element = this.element.find(element);\n element.toggleClass(defaultState, enable).toggleClass(DISABLEDCLASS, !enable).attr(ARIA_DISABLED, !enable);\n },\n dataItem: function (item) {\n var uid = $(item).closest(ITEM).attr(kendo.attr('uid')), dataSource = this.dataSource;\n return dataSource && dataSource.getByUid(uid);\n },\n select: function (element, skipChange) {\n var that = this;\n if (element === undefined) {\n return that.element.find(selectableItems).parent();\n }\n element = that.element.find(element);\n if (!element.length) {\n this._updateSelected(element);\n } else {\n element.each(function () {\n var item = $(this), link = item.children(LINKSELECTOR);\n if (item.hasClass(DISABLEDCLASS)) {\n return that;\n }\n that._updateSelected(link, skipChange);\n });\n }\n return that;\n },\n clearSelection: function () {\n this.select($());\n },\n enable: function (element, state) {\n this._toggleDisabled(element, state !== false);\n return this;\n },\n disable: function (element) {\n this._toggleDisabled(element, false);\n return this;\n },\n append: function (item, referenceItem) {\n referenceItem = this.element.find(referenceItem);\n var inserted = this._insert(item, referenceItem, referenceItem.length ? referenceItem.find(GROUPS) : null);\n each(inserted.items, function () {\n inserted.group.append(this);\n updateFirstLast(this);\n });\n this.updateArrow(referenceItem);\n updateFirstLast(inserted.group.find('.k-first, .k-last'));\n inserted.group.height('auto');\n return this;\n },\n insertBefore: function (item, referenceItem) {\n referenceItem = this.element.find(referenceItem);\n var inserted = this._insert(item, referenceItem, referenceItem.parent());\n each(inserted.items, function () {\n referenceItem.before(this);\n updateFirstLast(this);\n });\n updateFirstLast(referenceItem);\n inserted.group.height('auto');\n return this;\n },\n insertAfter: function (item, referenceItem) {\n referenceItem = this.element.find(referenceItem);\n var inserted = this._insert(item, referenceItem, referenceItem.parent());\n each(inserted.items, function () {\n referenceItem.after(this);\n updateFirstLast(this);\n });\n updateFirstLast(referenceItem);\n inserted.group.height('auto');\n return this;\n },\n remove: function (element) {\n element = this.element.find(element);\n var that = this, parent = element.parentsUntil(that.element, ITEM), group = element.parent('ul');\n element.remove();\n if (group && !group.hasClass('k-panelbar') && !group.children(ITEM).length) {\n group.remove();\n }\n if (parent.length) {\n parent = parent.eq(0);\n that.updateArrow(parent);\n updateFirstLast(parent);\n }\n return that;\n },\n reload: function (element) {\n var that = this;\n element = that.element.find(element);\n element.each(function () {\n var item = $(this);\n that._ajaxRequest(item, item.children('.' + CONTENT), !item.is(VISIBLE));\n });\n },\n _first: function () {\n return this.element.children(ACTIVEITEMSELECTOR).first();\n },\n _last: function () {\n var item = this.element.children(ACTIVEITEMSELECTOR).last(), group = item.children(VISIBLEGROUP);\n if (group[0]) {\n return group.children(ACTIVEITEMSELECTOR).last();\n }\n return item;\n },\n _current: function (candidate) {\n var that = this, focused = that._focused, id = that._itemId;\n if (candidate === undefined) {\n return focused;\n }\n that.element.removeAttr('aria-activedescendant');\n if (focused && focused.length) {\n if (focused[0].id === id) {\n focused.removeAttr('id');\n }\n focused.children(LINKSELECTOR).removeClass(FOCUSEDCLASS);\n }\n if ($(candidate).length) {\n id = candidate[0].id || id;\n candidate.attr('id', id).children(LINKSELECTOR).addClass(FOCUSEDCLASS);\n that.element.attr('aria-activedescendant', id);\n }\n that._focused = candidate;\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode, current = that._current();\n if (e.target != e.currentTarget) {\n return;\n }\n if (key == keys.DOWN || key == keys.RIGHT) {\n that._current(that._nextItem(current));\n e.preventDefault();\n } else if (key == keys.UP || key == keys.LEFT) {\n that._current(that._prevItem(current));\n e.preventDefault();\n } else if (key == keys.ENTER || key == keys.SPACEBAR) {\n that._click(current.children(LINKSELECTOR));\n e.preventDefault();\n } else if (key == keys.HOME) {\n that._current(that._first());\n e.preventDefault();\n } else if (key == keys.END) {\n that._current(that._last());\n e.preventDefault();\n }\n },\n _nextItem: function (item) {\n if (!item) {\n return this._first();\n }\n var group = item.children(VISIBLEGROUP), next = item.nextAll(':visible').first();\n if (group[0]) {\n next = group.children('.' + FIRST);\n }\n if (!next[0]) {\n next = item.parent(VISIBLEGROUP).parent(ITEM).next();\n }\n if (!next[0]) {\n next = this._first();\n }\n if (next.hasClass(DISABLEDCLASS)) {\n next = this._nextItem(next);\n }\n return next;\n },\n _prevItem: function (item) {\n if (!item) {\n return this._last();\n }\n var prev = item.prevAll(':visible').first(), result;\n if (!prev[0]) {\n prev = item.parent(VISIBLEGROUP).parent(ITEM);\n if (!prev[0]) {\n prev = this._last();\n }\n } else {\n result = prev;\n while (result[0]) {\n result = result.children(VISIBLEGROUP).children('.' + LAST);\n if (result[0]) {\n prev = result;\n }\n }\n }\n if (prev.hasClass(DISABLEDCLASS)) {\n prev = this._prevItem(prev);\n }\n return prev;\n },\n _insert: function (item, referenceItem, parent) {\n var that = this, items, plain = $.isPlainObject(item), isReferenceItem = referenceItem && referenceItem[0], groupData;\n if (!isReferenceItem) {\n parent = that.element;\n }\n groupData = {\n firstLevel: parent.hasClass('k-panelbar'),\n expanded: $(referenceItem).hasClass(ACTIVECLASS),\n length: parent.children().length\n };\n if (isReferenceItem && !parent.length) {\n parent = $(that.renderGroup({\n group: groupData,\n options: that.options\n })).appendTo(referenceItem);\n }\n if (plain || $.isArray(item) || item instanceof HierarchicalDataSource) {\n if (item instanceof HierarchicalDataSource) {\n item = item.data();\n }\n items = $.map(plain ? [item] : item, function (value, idx) {\n if (typeof value === 'string') {\n return $(value);\n } else {\n return $(that.renderItem({\n group: groupData,\n item: extend(value, { index: idx })\n }));\n }\n });\n if (isReferenceItem) {\n var dataItem = that.dataItem(referenceItem);\n if (dataItem) {\n dataItem.hasChildren = true;\n referenceItem.attr(ARIA_EXPANDED, dataItem.expanded).not('.' + ACTIVECLASS).children('ul').attr(ARIA_HIDDEN, !dataItem.expanded);\n } else {\n referenceItem.attr(ARIA_EXPANDED, false);\n }\n }\n } else {\n if (typeof item == 'string' && item.charAt(0) != '<') {\n items = that.element.find(item);\n } else {\n items = $(item);\n }\n that._updateItemsClasses(items);\n }\n if (!item.length) {\n item = [item];\n }\n that._angularCompileElements(items, item);\n return {\n items: items,\n group: parent\n };\n },\n _toggleHover: function (e) {\n var target = $(e.currentTarget);\n if (!target.parents('li.' + DISABLEDCLASS).length) {\n target.toggleClass('k-state-hover', e.type == MOUSEENTER);\n }\n },\n _updateClasses: function () {\n var that = this, panels, items, expanded, panelsParent, dataItem;\n panels = that.element.find('li > ul').not(function () {\n return $(this).parentsUntil('.k-panelbar', 'div').length;\n }).addClass('k-group k-panel').attr('role', 'group');\n panelsParent = panels.parent();\n dataItem = that.dataItem(panelsParent);\n expanded = dataItem && dataItem.expanded || false;\n panels.parent().attr(ARIA_EXPANDED, expanded).not('.' + ACTIVECLASS).children('ul').attr(ARIA_HIDDEN, !expanded).hide();\n items = that.element.add(panels).children();\n that._updateItemsClasses(items);\n that.updateArrow(items);\n updateFirstLast(items);\n },\n _updateItemsClasses: function (items) {\n var length = items.length, idx = 0;\n for (; idx < length; idx++) {\n this._updateItemClasses(items[idx], idx);\n }\n },\n _updateItemClasses: function (item, index) {\n var selected = this._selected, contentUrls = this.options.contentUrls, url = contentUrls && contentUrls[index], root = this.element[0], wrapElement, link;\n item = $(item).addClass('k-item').attr('role', 'menuitem');\n if (kendo.support.browser.msie) {\n item.css('list-style-position', 'inside').css('list-style-position', '');\n }\n item.children(IMG).addClass(IMAGE);\n link = item.children('a').addClass(LINK);\n if (link[0]) {\n link.attr('href', url);\n link.children(IMG).addClass(IMAGE);\n }\n item.filter(':not([disabled]):not([class*=k-state])').addClass('k-state-default');\n item.filter('li[disabled]').addClass('k-state-disabled').attr(ARIA_DISABLED, true).removeAttr('disabled');\n item.children('div').addClass(CONTENT).attr('role', 'region').attr(ARIA_HIDDEN, true).hide().parent().attr(ARIA_EXPANDED, false);\n link = item.children(SELECTEDSELECTOR);\n if (link[0]) {\n if (selected) {\n selected.removeAttr(ARIA_SELECTED).children(SELECTEDSELECTOR).removeClass(SELECTEDCLASS);\n }\n link.addClass(SELECTEDCLASS);\n this._selected = item.attr(ARIA_SELECTED, true);\n }\n if (!item.children(LINKSELECTOR)[0]) {\n wrapElement = '<span class=\\'' + LINK + '\\'/>';\n if (contentUrls && contentUrls[index] && item[0].parentNode == root) {\n wrapElement = '<a class=\"k-link k-header\" href=\"' + contentUrls[index] + '\"/>';\n }\n item.contents().filter(function () {\n return !this.nodeName.match(excludedNodesRegExp) && !(this.nodeType == 3 && !$.trim(this.nodeValue));\n }).wrapAll(wrapElement);\n }\n if (item.parent('.k-panelbar')[0]) {\n item.children(LINKSELECTOR).addClass('k-header');\n }\n },\n _click: function (target) {\n var that = this, element = that.element, prevent, contents, href, isAnchor;\n if (target.parents('li.' + DISABLEDCLASS).length) {\n return;\n }\n if (target.closest('.k-widget')[0] != element[0]) {\n return;\n }\n var link = target.closest(LINKSELECTOR), item = link.closest(ITEM);\n that._updateSelected(link);\n var wrapper = item.children('.k-group,.k-content');\n var dataItem = this.dataItem(item);\n if (!wrapper.length && (that.options.loadOnDemand && dataItem && dataItem.hasChildren || this._hasChildItems(item) || item.content || item.contentUrl)) {\n wrapper = that._addGroupElement(item);\n }\n contents = item.find(GROUPS).add(item.find(CONTENTS));\n href = link.attr(HREF);\n isAnchor = href && (href.charAt(href.length - 1) == '#' || href.indexOf('#' + that.element[0].id + '-') != -1);\n prevent = !!(isAnchor || contents.length);\n if (contents.data('animating')) {\n return prevent;\n }\n if (that._triggerEvent(SELECT, item)) {\n prevent = true;\n }\n if (prevent === false) {\n return;\n }\n if (that.options.expandMode == SINGLE) {\n if (that._collapseAllExpanded(item)) {\n return prevent;\n }\n }\n if (contents.length) {\n var visibility = contents.is(VISIBLE);\n if (!that._triggerEvent(!visibility ? EXPAND : COLLAPSE, item)) {\n prevent = that._toggleItem(item, visibility);\n }\n }\n return prevent;\n },\n _hasChildItems: function (item) {\n return item.items && item.items.length > 0 || item.hasChildren;\n },\n _toggleItem: function (element, isVisible, expanded) {\n var that = this, childGroup = element.find(GROUPS), link = element.find(LINKSELECTOR), url = link.attr(HREF), prevent, content, dataItem = that.dataItem(element), notVisible = !isVisible;\n var loaded = dataItem && dataItem.loaded();\n if (dataItem && !expanded && dataItem.expanded !== notVisible) {\n dataItem.set('expanded', notVisible);\n prevent = dataItem.hasChildren || !!dataItem.content || !!dataItem.contentUrl;\n return prevent;\n }\n if (dataItem && (!expanded || expanded === 'true') && !loaded && !dataItem.content && !dataItem.contentUrl) {\n if (that.options.loadOnDemand) {\n this._progress(element, true);\n }\n element.children('.k-group,.k-content').remove();\n prevent = dataItem.hasChildren;\n dataItem.load();\n } else {\n if (childGroup.length) {\n this._toggleGroup(childGroup, isVisible);\n prevent = true;\n } else {\n content = element.children('.' + CONTENT);\n if (content.length) {\n prevent = true;\n if (!content.is(EMPTY) || url === undefined) {\n that._toggleGroup(content, isVisible);\n } else {\n that._ajaxRequest(element, content, isVisible);\n }\n }\n }\n }\n return prevent;\n },\n _toggleGroup: function (element, visibility) {\n var that = this, animationSettings = that.options.animation, animation = animationSettings.expand, hasCollapseAnimation = animationSettings.collapse && 'effects' in animationSettings.collapse, collapse = extend({}, animationSettings.expand, animationSettings.collapse);\n if (!hasCollapseAnimation) {\n collapse = extend(collapse, { reverse: true });\n }\n if (element.is(VISIBLE) != visibility) {\n that._animating = false;\n return;\n }\n element.attr(ARIA_HIDDEN, !!visibility);\n element.parent().attr(ARIA_EXPANDED, !visibility).toggleClass(ACTIVECLASS, !visibility).find('> .k-link > .k-panelbar-collapse,> .k-link > .k-panelbar-expand').toggleClass('k-i-arrow-60-up', !visibility).toggleClass('k-panelbar-collapse', !visibility).toggleClass('k-i-arrow-60-down', visibility).toggleClass('k-panelbar-expand', visibility);\n if (visibility) {\n animation = extend(collapse, { hide: true });\n animation.complete = function () {\n that._animationCallback();\n };\n } else {\n animation = extend({\n complete: function (element) {\n that._triggerEvent(ACTIVATE, element.closest(ITEM));\n that._animationCallback();\n }\n }, animation);\n }\n element.kendoStop(true, true).kendoAnimate(animation);\n },\n _animationCallback: function () {\n var that = this;\n that.trigger('complete');\n that._animating = false;\n },\n _addGroupElement: function (element) {\n var group = $('<ul role=\"group\" aria-hidden=\"true\" class=\"k-group k-panel\" style=\"display:none\"></ul>');\n element.append(group);\n return group;\n },\n _collapseAllExpanded: function (item) {\n var that = this, children, stopExpand = false;\n var groups = item.find(GROUPS).add(item.find(CONTENTS));\n if (groups.is(VISIBLE)) {\n stopExpand = true;\n }\n if (!(groups.is(VISIBLE) || groups.length === 0)) {\n children = item.siblings();\n children.find(GROUPS).add(children.find(CONTENTS)).filter(function () {\n return $(this).is(VISIBLE);\n }).each(function (index, content) {\n content = $(content);\n stopExpand = that._triggerEvent(COLLAPSE, content.closest(ITEM));\n if (!stopExpand) {\n that._toggleGroup(content, true);\n }\n });\n that.one('complete', function () {\n setTimeout(function () {\n children.each(function (index, child) {\n var dataItem = that.dataItem(child);\n if (dataItem) {\n dataItem.set('expanded', false);\n }\n });\n });\n });\n }\n return stopExpand;\n },\n _ajaxRequest: function (element, contentElement, isVisible) {\n var that = this, statusIcon = element.find('.k-panelbar-collapse, .k-panelbar-expand'), link = element.find(LINKSELECTOR), loadingIconTimeout = setTimeout(function () {\n statusIcon.addClass('k-i-loading');\n }, 100), data = {}, url = link.attr(HREF);\n $.ajax({\n type: 'GET',\n cache: false,\n url: url,\n dataType: 'html',\n data: data,\n error: function (xhr, status) {\n statusIcon.removeClass('k-i-loading');\n if (that.trigger(ERROR, {\n xhr: xhr,\n status: status\n })) {\n this.complete();\n }\n },\n complete: function () {\n clearTimeout(loadingIconTimeout);\n statusIcon.removeClass('k-i-loading');\n },\n success: function (data) {\n function getElements() {\n return { elements: contentElement.get() };\n }\n try {\n that.angular('cleanup', getElements);\n contentElement.html(data);\n that.angular('compile', getElements);\n } catch (e) {\n var console = window.console;\n if (console && console.error) {\n console.error(e.name + ': ' + e.message + ' in ' + url);\n }\n this.error(this.xhr, 'error');\n }\n that._toggleGroup(contentElement, isVisible);\n that.trigger(CONTENTLOAD, {\n item: element[0],\n contentElement: contentElement[0]\n });\n }\n });\n },\n _triggerEvent: function (eventName, element) {\n var that = this;\n return that.trigger(eventName, { item: element[0] });\n },\n _updateSelected: function (link, skipChange) {\n var that = this, element = that.element, item = link.parent(ITEM), selected = that._selected, dataItem = that.dataItem(item);\n if (selected) {\n selected.removeAttr(ARIA_SELECTED);\n }\n that._selected = item.attr(ARIA_SELECTED, true);\n element.find(selectableItems).removeClass(SELECTEDCLASS);\n element.find('> .' + HIGHLIGHTCLASS + ', .k-panel > .' + HIGHLIGHTCLASS).removeClass(HIGHLIGHTCLASS);\n link.addClass(SELECTEDCLASS);\n link.parentsUntil(element, ITEM).filter(':has(.k-header)').addClass(HIGHLIGHTCLASS);\n that._current(item[0] ? item : null);\n if (dataItem) {\n dataItem.set('selected', true);\n }\n if (!skipChange) {\n that.trigger(CHANGE);\n }\n },\n _animations: function (options) {\n if (options && 'animation' in options && !options.animation) {\n options.animation = {\n expand: { effects: {} },\n collapse: {\n hide: true,\n effects: {}\n }\n };\n }\n },\n renderItem: function (options) {\n var that = this;\n options = extend({\n panelBar: that,\n group: {}\n }, options);\n var empty = that.templates.empty, item = options.item;\n return that.templates.item(extend(options, {\n itemWrapper: that.templates.itemWrapper,\n renderContent: that.renderContent,\n arrow: that._hasChildItems(item) || item.content || item.contentUrl ? that.templates.arrow : empty,\n subGroup: !options.loadOnDemand || item.expanded ? that.renderGroup : empty\n }, rendering));\n },\n renderGroup: function (options) {\n var that = this;\n var templates = that.templates || options.panelBar.templates;\n return templates.group(extend({\n renderItems: function (options) {\n var html = '', i = 0, items = options.items, len = items ? items.length : 0, group = extend({ length: len }, options.group);\n for (; i < len; i++) {\n html += options.panelBar.renderItem(extend(options, {\n group: group,\n item: extend({ index: i }, items[i])\n }));\n }\n return html;\n }\n }, options, rendering));\n },\n renderContent: function (options) {\n return options.panelBar.templates.content(extend(options, rendering));\n }\n });\n kendo.ui.plugin(PanelBar);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.responsivepanel', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'responsive-panel',\n name: 'Responsive Panel',\n category: 'web',\n description: 'The Responsive Panel widget allows a panel of content to be hidden on mobile devices, available through a toggle button.',\n depends: ['core']\n };\n (function ($, undefined) {\n var proxy = $.proxy;\n var NS = '.kendoResponsivePanel';\n var OPEN = 'open';\n var CLOSE = 'close';\n var ACTIVATE_EVENTS = 'click' + NS + ' touchstart' + NS + ' touchend' + NS;\n var Widget = kendo.ui.Widget;\n var ResponsivePanel = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this._guid = '_' + kendo.guid();\n this._toggleHandler = proxy(this._toggleButtonClick, this);\n this._closeHandler = proxy(this._close, this);\n $(document.documentElement).on(ACTIVATE_EVENTS, this.options.toggleButton, this._toggleHandler);\n this._registerBreakpoint();\n this.element.addClass('k-rpanel k-rpanel-' + this.options.orientation + ' ' + this._guid);\n this._resizeHandler = proxy(this.resize, this, true);\n $(window).on('resize' + NS, this._resizeHandler);\n },\n _mediaQuery: '@media (max-width: #= breakpoint-1 #px) {' + '.#= guid #.k-rpanel-animate.k-rpanel-left,' + '.#= guid #.k-rpanel-animate.k-rpanel-right {' + '-webkit-transition: -webkit-transform .2s ease-out;' + '-ms-transition: -ms-transform .2s ease-out;' + 'transition: transform .2s ease-out;' + '} ' + '.#= guid #.k-rpanel-top {' + 'overflow: hidden;' + '}' + '.#= guid #.k-rpanel-animate.k-rpanel-top {' + '-webkit-transition: max-height .2s linear;' + '-ms-transition: max-height .2s linear;' + 'transition: max-height .2s linear;' + '}' + '} ' + '@media (min-width: #= breakpoint #px) {' + '#= toggleButton # { display: none; } ' + '.#= guid #.k-rpanel-left { float: left; } ' + '.#= guid #.k-rpanel-right { float: right; } ' + '.#= guid #.k-rpanel-left, .#= guid #.k-rpanel-right {' + 'position: relative;' + '-webkit-transform: translateX(0);' + '-ms-transform: translateX(0);' + 'transform: translateX(0);' + '-webkit-transform: translateX(0) translateZ(0);' + '-ms-transform: translateX(0) translateZ(0);' + 'transform: translateX(0) translateZ(0);' + '} ' + '.k-ie9 .#= guid #.k-rpanel-left { left: 0; } ' + '.#= guid #.k-rpanel-top { max-height: none; }' + '}',\n _registerBreakpoint: function () {\n var options = this.options;\n this._registerStyle(kendo.template(this._mediaQuery)({\n breakpoint: options.breakpoint,\n toggleButton: options.toggleButton,\n guid: this._guid\n }));\n },\n _registerStyle: function (cssText) {\n var head = $('head,body')[0];\n var style = document.createElement('style');\n head.appendChild(style);\n if (style.styleSheet) {\n style.styleSheet.cssText = cssText;\n } else {\n style.appendChild(document.createTextNode(cssText));\n }\n },\n options: {\n name: 'ResponsivePanel',\n orientation: 'left',\n toggleButton: '.k-rpanel-toggle',\n breakpoint: 640,\n autoClose: true\n },\n events: [\n OPEN,\n CLOSE\n ],\n _resize: function () {\n this.element.removeClass('k-rpanel-animate k-rpanel-expanded');\n $(document.documentElement).off(ACTIVATE_EVENTS, this._closeHandler);\n },\n _toggleButtonClick: function (e) {\n e.preventDefault();\n if (e.type == 'touchend') {\n return;\n }\n if (this.element.hasClass('k-rpanel-expanded')) {\n this.close();\n } else {\n this.open();\n }\n },\n open: function () {\n if (!this.trigger(OPEN)) {\n this.element.addClass('k-rpanel-animate k-rpanel-expanded');\n if (this.options.autoClose) {\n $(document.documentElement).on(ACTIVATE_EVENTS, this._closeHandler);\n }\n }\n },\n close: function () {\n if (!this.trigger(CLOSE)) {\n this.element.addClass('k-rpanel-animate').removeClass('k-rpanel-expanded');\n $(document.documentElement).off(ACTIVATE_EVENTS, this._closeHandler);\n }\n },\n _close: function (e) {\n var prevented = e.isDefaultPrevented();\n var container = $(e.target).closest(this.options.toggleButton + ',.k-rpanel');\n if (!container.length && !prevented) {\n this.close();\n }\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n $(window).off('resize' + NS, this._resizeHandler);\n $(document.documentElement).off(ACTIVATE_EVENTS, this._closeHandler);\n }\n });\n kendo.ui.plugin(ResponsivePanel);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.timepicker', [\n 'kendo.popup',\n 'kendo.dateinput'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'timepicker',\n name: 'TimePicker',\n category: 'web',\n description: 'The TimePicker widget allows the end user to select a value from a list of predefined values or to type a new value.',\n depends: ['popup']\n };\n (function ($, undefined) {\n var kendo = window.kendo, keys = kendo.keys, parse = kendo.parseDate, activeElement = kendo._activeElement, extractFormat = kendo._extractFormat, support = kendo.support, browser = support.browser, ui = kendo.ui, Widget = ui.Widget, OPEN = 'open', CLOSE = 'close', CHANGE = 'change', ns = '.kendoTimePicker', CLICK = 'click' + ns, DEFAULT = 'k-state-default', DISABLED = 'disabled', READONLY = 'readonly', LI = 'li', SPAN = '<span/>', FOCUSED = 'k-state-focused', HOVER = 'k-state-hover', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, MOUSEDOWN = 'mousedown' + ns, MS_PER_MINUTE = 60000, MS_PER_DAY = 86400000, SELECTED = 'k-state-selected', STATEDISABLED = 'k-state-disabled', ARIA_SELECTED = 'aria-selected', ARIA_EXPANDED = 'aria-expanded', ARIA_HIDDEN = 'aria-hidden', ARIA_DISABLED = 'aria-disabled', ARIA_ACTIVEDESCENDANT = 'aria-activedescendant', ID = 'id', isArray = $.isArray, extend = $.extend, proxy = $.proxy, DATE = Date, TODAY = new DATE();\n TODAY = new DATE(TODAY.getFullYear(), TODAY.getMonth(), TODAY.getDate(), 0, 0, 0);\n var TimeView = function (options) {\n var that = this, id = options.id;\n that.options = options;\n that._dates = [];\n that.ul = $('<ul tabindex=\"-1\" role=\"listbox\" aria-hidden=\"true\" unselectable=\"on\" class=\"k-list k-reset\"/>').css({ overflow: support.kineticScrollNeeded ? '' : 'auto' }).on(CLICK, LI, proxy(that._click, that)).on('mouseenter' + ns, LI, function () {\n $(this).addClass(HOVER);\n }).on('mouseleave' + ns, LI, function () {\n $(this).removeClass(HOVER);\n });\n that.list = $('<div class=\\'k-list-container k-list-scroller\\' unselectable=\\'on\\'/>').append(that.ul).on(MOUSEDOWN, preventDefault);\n if (id) {\n that._timeViewID = id + '_timeview';\n that._optionID = id + '_option_selected';\n that.ul.attr(ID, that._timeViewID);\n }\n that._popup();\n that._heightHandler = proxy(that._height, that);\n that.template = kendo.template('<li tabindex=\"-1\" role=\"option\" class=\"k-item\" unselectable=\"on\">#=data#</li>', { useWithBlock: false });\n };\n TimeView.prototype = {\n current: function (candidate) {\n var that = this, active = that.options.active;\n if (candidate !== undefined) {\n if (that._current) {\n that._current.removeClass(SELECTED);\n if (that._current && that._current.length) {\n that._current[0].removeAttribute(ID);\n that._current[0].removeAttribute(ARIA_SELECTED);\n }\n }\n if (candidate) {\n candidate = $(candidate).addClass(SELECTED).attr(ID, that._optionID).attr(ARIA_SELECTED, true);\n that.scroll(candidate[0]);\n }\n that._current = candidate;\n if (active) {\n active(candidate);\n }\n } else {\n return that._current;\n }\n },\n close: function () {\n this.popup.close();\n },\n destroy: function () {\n var that = this;\n that.ul.off(ns);\n that.list.off(ns);\n that.popup.destroy();\n },\n open: function () {\n var that = this;\n var popupHovered;\n if (!that.ul[0].firstChild) {\n that.bind();\n }\n popupHovered = that.popup._hovered;\n that.popup._hovered = true;\n that.popup.open();\n setTimeout(function () {\n that.popup._hovered = popupHovered;\n }, 1);\n if (that._current) {\n that.scroll(that._current[0]);\n }\n },\n dataBind: function (dates) {\n var that = this, options = that.options, format = options.format, toString = kendo.toString, template = that.template, length = dates.length, idx = 0, date, html = '';\n for (; idx < length; idx++) {\n date = dates[idx];\n if (isInRange(date, options.min, options.max)) {\n html += template(toString(date, format, options.culture));\n }\n }\n that._html(html);\n },\n refresh: function () {\n var that = this, options = that.options, format = options.format, offset = dst(), ignoreDST = offset < 0, value = kendo.parseDate(that._value), parsedValue = value ? mergeDateAndTime(value, options.min) : mergeDateAndTime(new Date(), options.min), min = options.min, max = options.max, msMin = getMilliseconds(min), msMax = getMilliseconds(max), msLastTime = getMilliseconds(lastTimeOption(options.interval)), msInterval = options.interval * MS_PER_MINUTE, toString = kendo.toString, template = that.template, start = options.useValueToRender ? parsedValue : new Date(+options.min), startDate = new DATE(start), msStart, length, html = '';\n if (ignoreDST) {\n length = (MS_PER_DAY + offset * MS_PER_MINUTE) / msInterval;\n } else {\n length = MS_PER_DAY / msInterval;\n }\n if (msMin != msMax || msLastTime === msMax) {\n if (msMin > msMax) {\n msMax += MS_PER_DAY;\n }\n length = (msMax - msMin) / msInterval + 1;\n }\n while (true) {\n if (msMax && (getMilliseconds(start) >= msMax || startDate.getDate() != start.getDate())) {\n msStart = getMilliseconds(start);\n if (startDate < start) {\n msStart += MS_PER_DAY;\n }\n if (msStart > msMax) {\n start = new DATE(+max);\n }\n if (getMilliseconds(start) > 0) {\n html += template(toString(start, format, options.culture));\n }\n break;\n }\n if (startDate.getDate() != start.getDate()) {\n break;\n }\n html += template(toString(start, format, options.culture));\n start.setTime(start.getTime() + msInterval);\n }\n that._html(html);\n },\n bind: function () {\n var that = this, dates = that.options.dates;\n if (dates && dates[0]) {\n that.dataBind(dates);\n } else {\n that.refresh();\n }\n },\n _html: function (html) {\n var that = this;\n that.ul[0].innerHTML = html;\n that.popup.unbind(OPEN, that._heightHandler);\n that.popup.one(OPEN, that._heightHandler);\n that.current(null);\n that.select(that._value);\n },\n scroll: function (item) {\n if (!item) {\n return;\n }\n var content = this.list[0], itemOffsetTop = item.offsetTop, itemOffsetHeight = item.offsetHeight, contentScrollTop = content.scrollTop, contentOffsetHeight = content.clientHeight, bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n } else if (bottomDistance > contentScrollTop + contentOffsetHeight) {\n contentScrollTop = bottomDistance - contentOffsetHeight;\n }\n content.scrollTop = contentScrollTop;\n },\n select: function (li) {\n var that = this, options = that.options, current = that._current, selection;\n if (li instanceof Date) {\n li = kendo.toString(li, options.format, options.culture);\n }\n if (typeof li === 'string') {\n if (!current || current.text() !== li) {\n li = $.grep(that.ul[0].childNodes, function (node) {\n return (node.textContent || node.innerText) == li;\n });\n li = li[0] ? li : null;\n } else {\n li = current;\n }\n }\n selection = that._distinctSelection(li);\n that.current(selection);\n },\n _distinctSelection: function (selection) {\n var that = this, currentValue, selectionIndex;\n if (selection && selection.length > 1) {\n currentValue = getMilliseconds(that._value);\n selectionIndex = $.inArray(currentValue, that._dates);\n selection = that.ul.children()[selectionIndex];\n }\n return selection;\n },\n setOptions: function (options) {\n var old = this.options;\n options.min = parse(options.min);\n options.max = parse(options.max);\n this.options = extend(old, options, {\n active: old.active,\n change: old.change,\n close: old.close,\n open: old.open\n });\n this.bind();\n },\n toggle: function () {\n var that = this;\n if (that.popup.visible()) {\n that.close();\n } else {\n that.open();\n }\n },\n value: function (value) {\n var that = this;\n that._value = value;\n if (that.ul[0].firstChild) {\n that.select(value);\n }\n },\n _click: function (e) {\n var that = this, li = $(e.currentTarget), date = li.text(), dates = that.options.dates;\n if (dates && dates.length > 0) {\n date = dates[li.index()];\n }\n if (!e.isDefaultPrevented()) {\n that.select(li);\n that.options.change(date, true);\n that.close();\n }\n },\n _height: function () {\n var that = this;\n var list = that.list;\n var parent = list.parent('.k-animation-container');\n var height = that.options.height;\n if (that.ul[0].children.length) {\n list.add(parent).show().height(that.ul[0].scrollHeight > height ? height : 'auto').hide();\n }\n },\n _parse: function (value) {\n var that = this, options = that.options, min = getMilliseconds(options.min) != getMilliseconds(TODAY) ? options.min : null, max = getMilliseconds(options.max) != getMilliseconds(TODAY) ? options.max : null, current = that._value || min || max || TODAY;\n if (value instanceof DATE) {\n return value;\n }\n value = parse(value, options.parseFormats, options.culture);\n if (value) {\n value = new DATE(current.getFullYear(), current.getMonth(), current.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n }\n return value;\n },\n _adjustListWidth: function () {\n var list = this.list, width = list[0].style.width, wrapper = this.options.anchor, computedStyle, computedWidth, outerWidth = kendo._outerWidth;\n if (!list.data('width') && width) {\n return;\n }\n computedStyle = window.getComputedStyle ? window.getComputedStyle(wrapper[0], null) : 0;\n computedWidth = computedStyle ? parseFloat(computedStyle.width) : outerWidth(wrapper);\n if (computedStyle && (browser.mozilla || browser.msie)) {\n computedWidth += parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);\n }\n width = computedWidth - (outerWidth(list) - list.width());\n list.css({\n fontFamily: wrapper.css('font-family'),\n width: width\n }).data('width', width);\n },\n _popup: function () {\n var that = this, list = that.list, options = that.options, anchor = options.anchor;\n that.popup = new ui.Popup(list, extend(options.popup, {\n anchor: anchor,\n open: options.open,\n close: options.close,\n animation: options.animation,\n isRtl: support.isRtl(options.anchor)\n }));\n },\n move: function (e) {\n var that = this, key = e.keyCode, ul = that.ul[0], current = that._current, down = key === keys.DOWN;\n if (key === keys.UP || down) {\n if (e.altKey) {\n that.toggle(down);\n return;\n } else if (down) {\n current = current ? current[0].nextSibling : ul.firstChild;\n } else {\n current = current ? current[0].previousSibling : ul.lastChild;\n }\n if (current) {\n that.select(current);\n }\n that.options.change(that._current.text());\n e.preventDefault();\n } else if (key === keys.ENTER || key === keys.TAB || key === keys.ESC) {\n e.preventDefault();\n if (current) {\n that.options.change(current.text(), true);\n }\n that.close();\n }\n }\n };\n function dst() {\n var today = new DATE(), midnight = new DATE(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0), noon = new DATE(today.getFullYear(), today.getMonth(), today.getDate(), 12, 0, 0);\n return -1 * (midnight.getTimezoneOffset() - noon.getTimezoneOffset());\n }\n function getMilliseconds(date) {\n return date.getHours() * 60 * MS_PER_MINUTE + date.getMinutes() * MS_PER_MINUTE + date.getSeconds() * 1000 + date.getMilliseconds();\n }\n function lastTimeOption(interval) {\n var date = new Date(2100, 0, 1);\n date.setMinutes(-interval);\n return date;\n }\n function isInRange(value, min, max) {\n var msMin = getMilliseconds(min), msMax = getMilliseconds(max), msValue;\n if (!value || msMin == msMax) {\n return true;\n }\n msValue = getMilliseconds(value);\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n return msValue >= msMin && msValue <= msMax;\n }\n TimeView.getMilliseconds = getMilliseconds;\n kendo.TimeView = TimeView;\n var TimePicker = Widget.extend({\n init: function (element, options) {\n var that = this, ul, timeView, disabled;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n options.min = parse(element.attr('min')) || parse(options.min);\n options.max = parse(element.attr('max')) || parse(options.max);\n normalize(options);\n that._initialOptions = extend({}, options);\n that._wrapper();\n that.timeView = timeView = new TimeView(extend({}, options, {\n id: element.attr(ID),\n anchor: that.wrapper,\n format: options.format,\n change: function (value, trigger) {\n if (trigger) {\n that._change(value);\n } else {\n element.val(value);\n }\n },\n open: function (e) {\n that.timeView._adjustListWidth();\n if (that.trigger(OPEN)) {\n e.preventDefault();\n } else {\n element.attr(ARIA_EXPANDED, true);\n ul.attr(ARIA_HIDDEN, false);\n }\n },\n close: function (e) {\n if (that.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n element.attr(ARIA_EXPANDED, false);\n ul.attr(ARIA_HIDDEN, true);\n }\n },\n active: function (current) {\n if (element && element.length) {\n element[0].removeAttribute(ARIA_ACTIVEDESCENDANT);\n }\n if (current) {\n element.attr(ARIA_ACTIVEDESCENDANT, timeView._optionID);\n }\n }\n }));\n ul = timeView.ul;\n that._icon();\n that._reset();\n try {\n element[0].setAttribute('type', 'text');\n } catch (e) {\n element[0].type = 'text';\n }\n element.addClass('k-input').attr({\n 'role': 'combobox',\n 'aria-expanded': false,\n 'aria-owns': timeView._timeViewID,\n 'autocomplete': 'off'\n });\n disabled = element.is('[disabled]') || $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n if (options.dateInput) {\n var min = options.min;\n var max = options.max;\n var today = new DATE();\n if (getMilliseconds(min) == getMilliseconds(max)) {\n min = new DATE(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);\n max = new DATE(today.getFullYear(), today.getMonth(), today.getDate(), 24, 0, 0);\n }\n that._dateInput = new ui.DateInput(element, {\n culture: options.culture,\n format: options.format,\n min: min,\n max: max,\n value: options.value,\n interval: options.interval\n });\n }\n that._old = that._update(options.value || that.element.val());\n that._oldText = element.val();\n kendo.notify(that);\n },\n options: {\n name: 'TimePicker',\n min: TODAY,\n max: TODAY,\n format: '',\n dates: [],\n parseFormats: [],\n value: null,\n interval: 30,\n height: 200,\n animation: {},\n dateInput: false\n },\n events: [\n OPEN,\n CLOSE,\n CHANGE\n ],\n setOptions: function (options) {\n var that = this;\n var value = that._value;\n Widget.fn.setOptions.call(that, options);\n options = that.options;\n normalize(options);\n that.timeView.setOptions(options);\n if (value) {\n that.element.val(kendo.toString(value, options.format, options.culture));\n }\n },\n dataBind: function (dates) {\n if (isArray(dates)) {\n this.timeView.dataBind(dates);\n }\n },\n _editable: function (options) {\n var that = this, disable = options.disable, readonly = options.readonly, arrow = that._arrow.off(ns), element = that.element.off(ns), wrapper = that._inputWrapper.off(ns);\n if (that._dateInput) {\n that._dateInput._unbindInput();\n }\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n if (element && element.length) {\n element[0].removeAttribute(DISABLED);\n element[0].removeAttribute(READONLY);\n }\n element.attr(ARIA_DISABLED, false).on('keydown' + ns, proxy(that._keydown, that)).on('focusout' + ns, proxy(that._blur, that)).on('focus' + ns, function () {\n that._inputWrapper.addClass(FOCUSED);\n });\n if (that._dateInput) {\n that._dateInput._bindInput();\n }\n arrow.on(CLICK, proxy(that._click, that)).on(MOUSEDOWN, preventDefault);\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n element.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable);\n }\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.timeView.destroy();\n that.element.off(ns);\n that._arrow.off(ns);\n that._inputWrapper.off(ns);\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n },\n close: function () {\n this.timeView.close();\n },\n open: function () {\n this.timeView.open();\n },\n min: function (value) {\n return this._option('min', value);\n },\n max: function (value) {\n return this._option('max', value);\n },\n value: function (value) {\n var that = this;\n if (value === undefined) {\n return that._value;\n }\n that._old = that._update(value);\n if (that._old === null) {\n that.element.val('');\n }\n that._oldText = that.element.val();\n },\n _blur: function () {\n var that = this, value = that.element.val();\n that.close();\n if (value !== that._oldText) {\n that._change(value);\n }\n that._inputWrapper.removeClass(FOCUSED);\n },\n _click: function () {\n var that = this, element = that.element;\n that.timeView.toggle();\n if (!support.touch && element[0] !== activeElement()) {\n element.trigger('focus');\n }\n },\n _change: function (value) {\n var that = this, oldValue = that.element.val(), dateChanged;\n value = that._update(value);\n dateChanged = !kendo.calendar.isEqualDate(that._old, value);\n var valueUpdated = dateChanged && !that._typing;\n var textFormatted = oldValue !== that.element.val();\n if (valueUpdated || textFormatted) {\n that.element.trigger(CHANGE);\n }\n if (dateChanged) {\n that._old = value;\n that._oldText = that.element.val();\n that.trigger(CHANGE);\n }\n that._typing = false;\n },\n _icon: function () {\n var that = this, element = that.element, arrow;\n arrow = element.next('span.k-select');\n if (!arrow[0]) {\n arrow = $('<span unselectable=\"on\" class=\"k-select\" aria-label=\"select\"><span class=\"k-icon k-i-clock\"></span></span>').insertAfter(element);\n }\n that._arrow = arrow.attr({\n 'role': 'button',\n 'aria-controls': that.timeView._timeViewID\n });\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode, timeView = that.timeView, value = that.element.val();\n if (timeView.popup.visible() || e.altKey) {\n timeView.move(e);\n if (that._dateInput && e.stopImmediatePropagation) {\n e.stopImmediatePropagation();\n }\n } else if (key === keys.ENTER && value !== that._oldText) {\n that._change(value);\n } else {\n that._typing = true;\n }\n },\n _option: function (option, value) {\n var that = this, options = that.options;\n if (value === undefined) {\n return options[option];\n }\n value = that.timeView._parse(value);\n if (!value) {\n return;\n }\n value = new DATE(+value);\n options[option] = value;\n that.timeView.options[option] = value;\n that.timeView.bind();\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _update: function (value) {\n var that = this, options = that.options, timeView = that.timeView, date = timeView._parse(value);\n if (!isInRange(date, options.min, options.max)) {\n date = null;\n }\n that._value = date;\n if (that._dateInput && date) {\n that._dateInput.value(date || value);\n } else {\n that.element.val(kendo.toString(date || value, options.format, options.culture));\n }\n timeView.value(date);\n return date;\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper;\n wrapper = element.parents('.k-timepicker');\n if (!wrapper[0]) {\n wrapper = element.wrap(SPAN).parent().addClass('k-picker-wrap k-state-default');\n wrapper = wrapper.wrap(SPAN).parent();\n }\n wrapper[0].style.cssText = element[0].style.cssText;\n that.wrapper = wrapper.addClass('k-widget k-timepicker').addClass(element[0].className);\n element.css({\n width: '100%',\n height: element[0].style.height\n });\n that._inputWrapper = $(wrapper[0].firstChild);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n that.value(element[0].defaultValue);\n that.max(that._initialOptions.max);\n that.min(that._initialOptions.min);\n };\n that._form = form.on('reset', that._resetHandler);\n }\n }\n });\n function normalize(options) {\n var parseFormats = options.parseFormats;\n options.format = extractFormat(options.format || kendo.getCulture(options.culture).calendars.standard.patterns.t);\n parseFormats = isArray(parseFormats) ? parseFormats : [parseFormats];\n parseFormats.splice(0, 0, options.format);\n options.parseFormats = parseFormats;\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n function mergeDateAndTime(date, time) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n }\n ui.plugin(TimePicker);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.datetimepicker', [\n 'kendo.datepicker',\n 'kendo.timepicker'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'datetimepicker',\n name: 'DateTimePicker',\n category: 'web',\n description: 'The DateTimePicker allows the end user to select a value from a calendar or a time drop-down list.',\n depends: [\n 'datepicker',\n 'timepicker'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, TimeView = kendo.TimeView, parse = kendo.parseDate, support = kendo.support, activeElement = kendo._activeElement, extractFormat = kendo._extractFormat, calendar = kendo.calendar, isInRange = calendar.isInRange, restrictValue = calendar.restrictValue, isEqualDatePart = calendar.isEqualDatePart, getMilliseconds = TimeView.getMilliseconds, ui = kendo.ui, Widget = ui.Widget, OPEN = 'open', CLOSE = 'close', CHANGE = 'change', ns = '.kendoDateTimePicker', CLICK = 'click' + ns, UP = support.mouseAndTouchPresent ? kendo.applyEventMap('up', ns.slice(1)) : CLICK, DISABLED = 'disabled', READONLY = 'readonly', DEFAULT = 'k-state-default', FOCUSED = 'k-state-focused', HOVER = 'k-state-hover', STATEDISABLED = 'k-state-disabled', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, MOUSEDOWN = 'mousedown' + ns, MONTH = 'month', SPAN = '<span/>', ARIA_ACTIVEDESCENDANT = 'aria-activedescendant', ARIA_EXPANDED = 'aria-expanded', ARIA_HIDDEN = 'aria-hidden', ARIA_OWNS = 'aria-owns', ARIA_DISABLED = 'aria-disabled', DATE = Date, MIN = new DATE(1800, 0, 1), MAX = new DATE(2099, 11, 31), dateViewParams = { view: 'date' }, timeViewParams = { view: 'time' }, extend = $.extend;\n var DateTimePicker = Widget.extend({\n init: function (element, options) {\n var that = this, disabled;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n options.disableDates = kendo.calendar.disabled(options.disableDates);\n options.min = parse(element.attr('min')) || parse(options.min);\n options.max = parse(element.attr('max')) || parse(options.max);\n normalize(options);\n that._initialOptions = extend({}, options);\n that._wrapper();\n that._views();\n that._icons();\n that._reset();\n that._template();\n try {\n element[0].setAttribute('type', 'text');\n } catch (e) {\n element[0].type = 'text';\n }\n element.addClass('k-input').attr({\n 'role': 'combobox',\n 'aria-expanded': false,\n 'autocomplete': 'off'\n });\n that._midnight = that._calculateMidnight(options.min, options.max);\n disabled = element.is('[disabled]') || $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n that._createDateInput(options);\n that._old = that._update(options.value || that.element.val());\n that._oldText = element.val();\n kendo.notify(that);\n },\n options: {\n name: 'DateTimePicker',\n value: null,\n format: '',\n timeFormat: '',\n culture: '',\n parseFormats: [],\n dates: [],\n disableDates: null,\n min: new DATE(MIN),\n max: new DATE(MAX),\n interval: 30,\n height: 200,\n footer: '',\n start: MONTH,\n depth: MONTH,\n animation: {},\n month: {},\n ARIATemplate: 'Current focused date is #=kendo.toString(data.current, \"d\")#',\n dateButtonText: 'Open the date view',\n timeButtonText: 'Open the time view',\n dateInput: false,\n weekNumber: false\n },\n events: [\n OPEN,\n CLOSE,\n CHANGE\n ],\n setOptions: function (options) {\n var that = this, value = that._value, min, max, currentValue;\n Widget.fn.setOptions.call(that, options);\n options = that.options;\n options.min = min = parse(options.min);\n options.max = max = parse(options.max);\n normalize(options);\n that._midnight = that._calculateMidnight(options.min, options.max);\n currentValue = options.value || that._value || that.dateView._current;\n if (min && !isEqualDatePart(min, currentValue)) {\n min = new DATE(MIN);\n }\n if (max && !isEqualDatePart(max, currentValue)) {\n max = new DATE(MAX);\n }\n that.dateView.setOptions(options);\n that.timeView.setOptions(extend({}, options, {\n format: options.timeFormat,\n min: min,\n max: max\n }));\n that._createDateInput(options);\n if (!that._dateInput) {\n that.element.val(kendo.toString(value, options.format, options.culture));\n }\n if (value) {\n that._updateARIA(value);\n }\n },\n _editable: function (options) {\n var that = this, element = that.element.off(ns), dateIcon = that._dateIcon.off(ns), timeIcon = that._timeIcon.off(ns), wrapper = that._inputWrapper.off(ns), readonly = options.readonly, disable = options.disable;\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n if (element && element.length) {\n element[0].removeAttribute(DISABLED);\n element[0].removeAttribute(READONLY, false);\n element[0].removeAttribute(ARIA_DISABLED, false);\n }\n element.on('keydown' + ns, $.proxy(that._keydown, that)).on('focus' + ns, function () {\n that._inputWrapper.addClass(FOCUSED);\n }).on('focusout' + ns, function () {\n that._inputWrapper.removeClass(FOCUSED);\n if (element.val() !== that._oldText) {\n that._change(element.val());\n }\n that.close('date');\n that.close('time');\n });\n dateIcon.on(MOUSEDOWN, preventDefault).on(UP, function (e) {\n that.toggle('date');\n that._focusElement(e.type);\n });\n timeIcon.on(MOUSEDOWN, preventDefault).on(UP, function (e) {\n that.toggle('time');\n that._focusElement(e.type);\n });\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n element.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable);\n }\n },\n _focusElement: function (eventType) {\n var element = this.element;\n if ((!support.touch || support.mouseAndTouchPresent && !(eventType || '').match(/touch/i)) && element[0] !== activeElement()) {\n element.trigger('focus');\n }\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.dateView.destroy();\n that.timeView.destroy();\n that.element.off(ns);\n that._dateIcon.off(ns);\n that._timeIcon.off(ns);\n that._inputWrapper.off(ns);\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n },\n close: function (view) {\n if (view !== 'time') {\n view = 'date';\n }\n this[view + 'View'].close();\n },\n open: function (view) {\n if (view !== 'time') {\n view = 'date';\n }\n this[view + 'View'].open();\n },\n min: function (value) {\n return this._option('min', value);\n },\n max: function (value) {\n return this._option('max', value);\n },\n toggle: function (view) {\n var secondView = 'timeView';\n if (view !== 'time') {\n view = 'date';\n } else {\n secondView = 'dateView';\n }\n this[view + 'View'].toggle();\n this[secondView].close();\n },\n value: function (value) {\n var that = this;\n if (value === undefined) {\n return that._value;\n }\n that._old = that._update(value);\n if (that._old === null) {\n that.element.val('');\n }\n that._oldText = that.element.val();\n },\n _change: function (value) {\n var that = this, oldValue = that.element.val(), dateChanged;\n value = that._update(value);\n dateChanged = +that._old != +value;\n var valueUpdated = dateChanged && !that._typing;\n var textFormatted = oldValue !== that.element.val();\n if (valueUpdated || textFormatted) {\n that.element.trigger(CHANGE);\n }\n if (dateChanged) {\n that._old = value;\n that._oldText = that.element.val();\n that.trigger(CHANGE);\n }\n that._typing = false;\n },\n _option: function (option, value) {\n var that = this;\n var options = that.options;\n var timeView = that.timeView;\n var timeViewOptions = timeView.options;\n var current = that._value || that._old;\n var minDateEqual;\n var maxDateEqual;\n if (value === undefined) {\n return options[option];\n }\n value = parse(value, options.parseFormats, options.culture);\n if (!value) {\n return;\n }\n if (options.min.getTime() === options.max.getTime()) {\n timeViewOptions.dates = [];\n }\n options[option] = new DATE(value.getTime());\n that.dateView[option](value);\n that._midnight = that._calculateMidnight(options.min, options.max);\n if (current) {\n minDateEqual = isEqualDatePart(options.min, current);\n maxDateEqual = isEqualDatePart(options.max, current);\n }\n if (minDateEqual || maxDateEqual) {\n timeViewOptions[option] = value;\n if (minDateEqual && !maxDateEqual) {\n timeViewOptions.max = lastTimeOption(options.interval);\n }\n if (maxDateEqual) {\n if (that._midnight) {\n timeView.dataBind([MAX]);\n return;\n } else if (!minDateEqual) {\n timeViewOptions.min = MIN;\n }\n }\n } else {\n timeViewOptions.max = MAX;\n timeViewOptions.min = MIN;\n }\n timeView.bind();\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _update: function (value) {\n var that = this, options = that.options, min = options.min, max = options.max, dates = options.dates, timeView = that.timeView, current = that._value, date = parse(value, options.parseFormats, options.culture), isSameType = date === null && current === null || date instanceof Date && current instanceof Date, rebind, timeViewOptions, old, skip, formattedValue;\n if (options.disableDates && options.disableDates(date)) {\n date = null;\n if (!that._old && !that.element.val()) {\n value = null;\n }\n }\n if (+date === +current && isSameType) {\n formattedValue = kendo.toString(date, options.format, options.culture);\n if (formattedValue !== value) {\n that.element.val(date === null ? value : formattedValue);\n if (value instanceof String) {\n that.element.trigger(CHANGE);\n }\n }\n return date;\n }\n if (date !== null && isEqualDatePart(date, min)) {\n date = restrictValue(date, min, max);\n } else if (!isInRange(date, min, max)) {\n date = null;\n }\n that._value = date;\n timeView.value(date);\n that.dateView.value(date);\n if (date) {\n old = that._old;\n timeViewOptions = timeView.options;\n if (dates[0]) {\n dates = $.grep(dates, function (d) {\n return isEqualDatePart(date, d);\n });\n if (dates[0]) {\n timeView.dataBind(dates);\n skip = true;\n }\n }\n if (!skip) {\n if (isEqualDatePart(date, min)) {\n timeViewOptions.min = min;\n timeViewOptions.max = lastTimeOption(options.interval);\n rebind = true;\n }\n if (isEqualDatePart(date, max)) {\n if (that._midnight) {\n timeView.dataBind([MAX]);\n skip = true;\n } else {\n timeViewOptions.max = max;\n if (!rebind) {\n timeViewOptions.min = MIN;\n }\n rebind = true;\n }\n }\n }\n if (!skip && (!old && rebind || old && !isEqualDatePart(old, date))) {\n if (!rebind) {\n timeViewOptions.max = MAX;\n timeViewOptions.min = MIN;\n }\n timeView.bind();\n }\n }\n if (that._dateInput && date) {\n that._dateInput.value(date || value);\n } else {\n that.element.val(kendo.toString(date || value, options.format, options.culture));\n }\n that._updateARIA(date);\n return date;\n },\n _keydown: function (e) {\n var that = this, dateView = that.dateView, timeView = that.timeView, value = that.element.val(), isDateViewVisible = dateView.popup.visible();\n var stopPropagation = that._dateInput && e.stopImmediatePropagation;\n if (e.altKey && e.keyCode === kendo.keys.DOWN) {\n that.toggle(isDateViewVisible ? 'time' : 'date');\n } else if (isDateViewVisible) {\n dateView.move(e);\n that._updateARIA(dateView._current);\n } else if (timeView.popup.visible()) {\n timeView.move(e);\n } else if (e.keyCode === kendo.keys.ENTER && value !== that._oldText) {\n that._change(value);\n } else {\n that._typing = true;\n stopPropagation = false;\n }\n if (stopPropagation) {\n e.stopImmediatePropagation();\n }\n },\n _views: function () {\n var that = this, element = that.element, options = that.options, id = element.attr('id'), dateView, timeView, div, ul, msMin, date;\n that.dateView = dateView = new kendo.DateView(extend({}, options, {\n id: id,\n anchor: that.wrapper,\n change: function () {\n var value = dateView.calendar.value(), msValue = +value, msMin = +options.min, msMax = +options.max, current, adjustedDate;\n if (msValue === msMin || msValue === msMax) {\n current = msValue === msMin ? msMin : msMax;\n current = new DATE(that._value || current);\n current.setFullYear(value.getFullYear(), value.getMonth(), value.getDate());\n if (isInRange(current, msMin, msMax)) {\n value = current;\n }\n }\n if (that._value) {\n adjustedDate = kendo.date.setHours(new Date(value), that._value);\n if (isInRange(adjustedDate, msMin, msMax)) {\n value = adjustedDate;\n }\n }\n that._change(value);\n that.close('date');\n },\n close: function (e) {\n if (that.trigger(CLOSE, dateViewParams)) {\n e.preventDefault();\n } else {\n element.attr(ARIA_EXPANDED, false);\n div.attr(ARIA_HIDDEN, true);\n if (!timeView.popup.visible()) {\n if (element && element.length) {\n element[0].removeAttribute(ARIA_OWNS);\n }\n }\n }\n },\n open: function (e) {\n if (that.trigger(OPEN, dateViewParams)) {\n e.preventDefault();\n } else {\n if (element.val() !== that._oldText) {\n date = parse(element.val(), options.parseFormats, options.culture);\n that.dateView[date ? 'current' : 'value'](date);\n }\n div.attr(ARIA_HIDDEN, false);\n element.attr(ARIA_EXPANDED, true).attr(ARIA_OWNS, dateView._dateViewID);\n that._updateARIA(date);\n }\n }\n }));\n div = dateView.div;\n msMin = options.min.getTime();\n that.timeView = timeView = new TimeView({\n id: id,\n value: options.value,\n anchor: that.wrapper,\n animation: options.animation,\n format: options.timeFormat,\n culture: options.culture,\n height: options.height,\n interval: options.interval,\n min: new DATE(MIN),\n max: new DATE(MAX),\n dates: msMin === options.max.getTime() ? [new Date(msMin)] : [],\n parseFormats: options.parseFormats,\n change: function (value, trigger) {\n value = timeView._parse(value);\n if (value < options.min) {\n value = new DATE(+options.min);\n timeView.options.min = value;\n } else if (value > options.max) {\n value = new DATE(+options.max);\n timeView.options.max = value;\n }\n if (trigger) {\n that._timeSelected = true;\n that._change(value);\n } else {\n element.val(kendo.toString(value, options.format, options.culture));\n dateView.value(value);\n that._updateARIA(value);\n }\n },\n close: function (e) {\n if (that.trigger(CLOSE, timeViewParams)) {\n e.preventDefault();\n } else {\n ul.attr(ARIA_HIDDEN, true);\n element.attr(ARIA_EXPANDED, false);\n if (!dateView.popup.visible()) {\n if (element && element.length) {\n element[0].removeAttribute(ARIA_OWNS);\n }\n }\n }\n },\n open: function (e) {\n timeView._adjustListWidth();\n if (that.trigger(OPEN, timeViewParams)) {\n e.preventDefault();\n } else {\n if (element.val() !== that._oldText) {\n date = parse(element.val(), options.parseFormats, options.culture);\n that.timeView.value(date);\n }\n ul.attr(ARIA_HIDDEN, false);\n element.attr(ARIA_EXPANDED, true).attr(ARIA_OWNS, timeView._timeViewID);\n timeView.options.active(timeView.current());\n }\n },\n active: function (current) {\n if (element && element.length) {\n element[0].removeAttribute(ARIA_ACTIVEDESCENDANT);\n }\n if (current) {\n element.attr(ARIA_ACTIVEDESCENDANT, timeView._optionID);\n }\n },\n useValueToRender: true\n });\n ul = timeView.ul;\n },\n _icons: function () {\n var that = this;\n var element = that.element;\n var options = that.options;\n var icons;\n icons = element.next('span.k-select');\n if (!icons[0]) {\n icons = $('<span unselectable=\"on\" class=\"k-select\">' + '<span class=\"k-link k-link-date\" aria-label=\"' + options.dateButtonText + '\"><span unselectable=\"on\" class=\"k-icon k-i-calendar\"></span></span>' + '<span class=\"k-link k-link-time\" aria-label=\"' + options.timeButtonText + '\"><span unselectable=\"on\" class=\"k-icon k-i-clock\"></span></span>' + '</span>').insertAfter(element);\n }\n icons = icons.children();\n that._dateIcon = icons.eq(0).attr('aria-controls', that.dateView._dateViewID);\n that._timeIcon = icons.eq(1).attr('aria-controls', that.timeView._timeViewID);\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper;\n wrapper = element.parents('.k-datetimepicker');\n if (!wrapper[0]) {\n wrapper = element.wrap(SPAN).parent().addClass('k-picker-wrap k-state-default');\n wrapper = wrapper.wrap(SPAN).parent();\n }\n wrapper[0].style.cssText = element[0].style.cssText;\n element.css({\n width: '100%',\n height: element[0].style.height\n });\n that.wrapper = wrapper.addClass('k-widget k-datetimepicker').addClass(element[0].className);\n that._inputWrapper = $(wrapper[0].firstChild);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n that.value(element[0].defaultValue);\n that.max(that._initialOptions.max);\n that.min(that._initialOptions.min);\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _template: function () {\n this._ariaTemplate = kendo.template(this.options.ARIATemplate);\n },\n _createDateInput: function (options) {\n if (this._dateInput) {\n this._dateInput.destroy();\n this._dateInput = null;\n }\n if (options.dateInput) {\n this._dateInput = new ui.DateInput(this.element, {\n culture: options.culture,\n format: options.format,\n min: options.min,\n max: options.max,\n interval: options.interval\n });\n }\n },\n _calculateMidnight: function (min, max) {\n return getMilliseconds(min) + getMilliseconds(max) === 0;\n },\n _updateARIA: function (date) {\n var cell;\n var that = this;\n var calendar = that.dateView.calendar;\n if (that.element && that.element.length) {\n that.element[0].removeAttribute(ARIA_ACTIVEDESCENDANT);\n }\n if (calendar) {\n cell = calendar._cell;\n cell.attr('aria-label', that._ariaTemplate({ current: date || calendar.current() }));\n that.element.attr(ARIA_ACTIVEDESCENDANT, cell.attr('id'));\n }\n }\n });\n function lastTimeOption(interval) {\n var date = new Date(2100, 0, 1);\n date.setMinutes(-interval);\n return date;\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n function normalize(options) {\n var patterns = kendo.getCulture(options.culture).calendars.standard.patterns, parseFormats = !options.parseFormats.length, timeFormat;\n options.format = extractFormat(options.format || patterns.g);\n options.timeFormat = timeFormat = extractFormat(options.timeFormat || patterns.t);\n kendo.DateView.normalize(options);\n if (parseFormats) {\n options.parseFormats.unshift('yyyy-MM-ddTHH:mm:ss');\n }\n if ($.inArray(timeFormat, options.parseFormats) === -1) {\n options.parseFormats.push(timeFormat);\n }\n }\n ui.plugin(DateTimePicker);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.daterangepicker', [\n 'kendo.core',\n 'kendo.multiviewcalendar',\n 'kendo.datepicker'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'daterangepicker',\n name: 'DateRangePicker',\n category: 'web',\n description: 'Date range picker.',\n depends: [\n 'core',\n 'multiviewcalendar',\n 'datepicker'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, keys = kendo.keys, Widget = ui.Widget, MONTH = 'month', OPEN = 'open', CLOSE = 'close', CHANGE = 'change', DIV = '<div />', MIN = 'min', MAX = 'max', template = kendo.template, extend = $.extend, ID = 'id', support = kendo.support, mobileOS = support.mobileOS, SELECTED = 'k-state-selected', ARIA_EXPANDED = 'aria-expanded', ARIA_DISABLED = 'aria-disabled', STATEDISABLED = 'k-state-disabled', DISABLED = 'disabled', READONLY = 'readonly', DEFAULT = 'k-state-default', ARIA_HIDDEN = 'aria-hidden', ns = '.kendoDateRangePicker', CLICK = 'click' + ns, MOUSEDOWN = 'mousedown' + ns, UP = support.mouseAndTouchPresent ? kendo.applyEventMap('up', ns.slice(1)) : CLICK, proxy = $.proxy, parse = kendo.parseDate;\n var DateRangeView = function (options) {\n kendo.DateView.call(this, options);\n };\n DateRangeView.prototype = Object.create(kendo.DateView.prototype);\n function preventDefault(e) {\n e.preventDefault();\n }\n DateRangeView.prototype._calendar = function () {\n var that = this;\n var calendar = that.calendar;\n var options = that.options;\n var div;\n if (!calendar) {\n div = $(DIV).attr(ID, kendo.guid()).appendTo(that.popup.element).on(MOUSEDOWN, preventDefault).on(CLICK, 'td:has(.k-link)', proxy(that._click, that));\n that.calendar = calendar = new ui.MultiViewCalendar(div);\n that._setOptions(options);\n kendo.calendar.makeUnselectable(calendar.element);\n calendar.navigate(that._value || that._current, options.start);\n that.calendar.selectRange(that._range || options.range || {});\n }\n };\n DateRangeView.prototype._setOptions = function (options) {\n this.calendar.setOptions({\n focusOnNav: false,\n change: options.change,\n culture: options.culture,\n dates: options.dates,\n depth: options.depth,\n footer: options.footer,\n format: options.format,\n selectable: options.selectable,\n max: options.max,\n min: options.min,\n month: options.month,\n weekNumber: options.weekNumber,\n start: options.start,\n disableDates: options.disableDates,\n range: options.range\n });\n };\n DateRangeView.prototype.range = function (range) {\n this._range = range;\n if (this.calendar) {\n if (!range.start && !range.end) {\n this.calendar.rangeSelectable.clear();\n } else {\n this.calendar.selectRange(range);\n }\n }\n };\n DateRangeView.prototype.move = function (e) {\n var that = this;\n var key = e.keyCode;\n var calendar = that.calendar;\n var selectIsClicked = e.ctrlKey && key == keys.DOWN || key == keys.ENTER;\n var handled = false;\n if (e.altKey) {\n if (key == keys.DOWN) {\n that.open();\n e.preventDefault();\n handled = true;\n } else if (key == keys.UP) {\n that.close();\n e.preventDefault();\n handled = true;\n }\n } else if (that.popup.visible()) {\n if (key == keys.ESC || selectIsClicked && calendar._cell.hasClass(SELECTED)) {\n that.close();\n e.preventDefault();\n return true;\n }\n that._current = calendar._move(e, true);\n handled = true;\n }\n return handled;\n };\n DateRangeView.prototype._click = function (e) {\n if (mobileOS.ios || mobileOS.android && mobileOS.browser == 'firefox') {\n if (this._range && this._range.end) {\n this.close();\n }\n } else if (this._range && this._range.end === null && e.currentTarget.className.indexOf('k-state-selected') !== -1) {\n this.close();\n }\n };\n kendo.DateRangeView = DateRangeView;\n var DateRangePicker = Widget.extend({\n init: function (element, options) {\n var that = this;\n var div;\n var disabled;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n options.disableDates = kendo.calendar.disabled(options.disableDates);\n options.min = parse(element.attr('min')) || parse(options.min);\n options.max = parse(element.attr('max')) || parse(options.max);\n that._initialOptions = extend({}, options);\n that._buildHTML();\n that._range = that.options.range;\n that.dateView = new DateRangeView(extend({}, options, {\n id: element.attr(ID),\n anchor: that.wrapper,\n views: 2,\n selectable: 'range',\n range: that._range,\n change: function () {\n var range = this.selectRange();\n that.range(range);\n that.trigger(CHANGE);\n that._startDateInput.trigger(CHANGE);\n that._endDateInput.trigger(CHANGE);\n },\n close: function (e) {\n if (that.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n that.wrapper.attr(ARIA_EXPANDED, false);\n div.attr(ARIA_HIDDEN, true);\n }\n },\n open: function (e) {\n if (that.trigger(OPEN)) {\n e.preventDefault();\n } else {\n that.wrapper.attr(ARIA_EXPANDED, true);\n div.attr(ARIA_HIDDEN, false);\n that._updateARIA();\n }\n }\n }));\n div = that.dateView.div;\n that._ariaTemplate = template(this.options.ARIATemplate);\n that._reset();\n that.wrapper.attr({\n role: 'combobox',\n 'aria-expanded': false,\n 'aria-owns': that.dateView._dateViewID,\n 'autocomplete': 'off'\n });\n that._inputs.on(UP + ns, proxy(that._click, that)).on('keydown' + ns, proxy(that._keydown, that));\n that._initializeDateInputs();\n disabled = element.is('[disabled]');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n },\n options: {\n name: 'DateRangePicker',\n labels: true,\n footer: '',\n format: '',\n culture: '',\n min: new Date(1900, 0, 1),\n max: new Date(2099, 11, 31),\n start: MONTH,\n depth: MONTH,\n animation: {},\n month: {},\n startField: '',\n endField: '',\n dates: [],\n disableDates: null,\n range: null,\n ARIATemplate: 'Current focused date is #=kendo.toString(data.current, \"D\")#',\n weekNumber: false,\n messages: {\n startLabel: 'Start',\n endLabel: 'End'\n }\n },\n events: [\n OPEN,\n CLOSE,\n CHANGE\n ],\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n options = that.options;\n options.min = parse(options.min);\n options.max = parse(options.max);\n that._inputs.off(ns);\n this._initializeDateInputs();\n that.dateView.setOptions(options);\n that._range = options.range;\n },\n _click: function () {\n var that = this;\n if (!that._preventInputAction && !that.dateView.popup.visible()) {\n that.dateView.open();\n }\n },\n _keydown: function (e) {\n var that = this, dateView = that.dateView, handled = false;\n if (that._preventInputAction) {\n e.stopImmediatePropagation();\n return;\n }\n handled = dateView.move(e);\n that._updateARIA(dateView._current);\n if (handled && e.stopImmediatePropagation) {\n e.stopImmediatePropagation();\n }\n },\n _updateARIA: function (date) {\n var cell;\n var that = this;\n var calendar = that.dateView.calendar;\n if (that.element && that.element.length) {\n that.element[0].removeAttribute('aria-activedescendant');\n }\n if (calendar) {\n if (date && !calendar._dateInViews(date)) {\n calendar.navigate(date);\n }\n cell = calendar._cellByDate(date || calendar.current());\n calendar._focusCell(cell);\n cell.attr('aria-label', that._ariaTemplate({ current: date || calendar.current() }));\n that.element.attr('aria-activedescendant', cell.attr('id'));\n }\n },\n _startChange: function (e) {\n var that = this;\n var input = e.sender;\n var startValue = input.value();\n var endValue = that._endDateInput.value();\n if (that.options.disableDates(startValue)) {\n e.sender.value(null);\n startValue = null;\n }\n that.range({\n start: startValue,\n end: endValue\n });\n that.trigger(CHANGE);\n },\n _endChange: function (e) {\n var that = this;\n var input = e.sender;\n var endValue = input.value();\n var startValue = that._startDateInput.value();\n if (that.options.disableDates(endValue)) {\n e.sender.value(null);\n endValue = null;\n }\n that.range({\n start: startValue,\n end: endValue\n });\n that.trigger(CHANGE);\n },\n _initializeDateInputs: function () {\n var that = this;\n var options = that.options;\n var range = options.range || {};\n var inputOptions = {\n footer: options.footer,\n format: options.format,\n culture: options.culture,\n min: options.min,\n max: options.max,\n start: options.start,\n startField: options.startField,\n endField: options.endField,\n depth: options.depth,\n animation: options.animation,\n month: options.month,\n dates: options.dates,\n disableDates: options.disableDates,\n ARIATemplate: options.ARIATemplate,\n weekNumber: options.weekNumber\n };\n if (that._startDateInput) {\n that._startDateInput.destroy();\n that._endDateInput.destroy();\n that.wrapper.empty();\n that._buildHTML();\n that._inputs.on(UP + ns, proxy(that._click, that)).on('keydown' + ns, proxy(that._keydown, that));\n }\n that._startDateInput = that._startInput.kendoDateInput(extend(true, inputOptions, { value: range.start })).getKendoDateInput();\n that._endDateInput = that._endInput.kendoDateInput(extend(true, inputOptions, { value: range.end })).getKendoDateInput();\n that._startChangeHandler = proxy(that._startChange, that);\n that._startDateInput.bind(CHANGE, that._startChangeHandler);\n that._endChangeHandler = proxy(that._endChange, that);\n that._endDateInput.bind(CHANGE, that._endChangeHandler);\n },\n _buildHTML: function () {\n var that = this;\n var element = that.element;\n if (!that.wrapper) {\n that.wrapper = element.addClass('k-widget k-daterangepicker');\n }\n if (that.options.labels) {\n $('<span class=\"k-textbox-container\"><input/><label class=\"k-label\">' + that.options.messages.startLabel + '</label></span>').appendTo(that.wrapper);\n $('<span> </span><span class=\"k-textbox-container\"><input/><label class=\"k-label\">' + that.options.messages.endLabel + '</label></span>').appendTo(that.wrapper);\n } else {\n $('<input/><span> </span><input/>').appendTo(that.wrapper);\n }\n that._startInput = that.wrapper.find('input').eq(0);\n that._endInput = that.wrapper.find('input').eq(1);\n if (that.options.startField !== '') {\n that._startInput.attr(kendo.attr('bind'), 'value: ' + that.options.startField);\n that._startInput.attr('name', that.options.startField);\n }\n if (that.options.endField !== '') {\n that._endInput.attr(kendo.attr('bind'), 'value: ' + that.options.endField);\n that._endInput.attr('name', that.options.endField);\n }\n that._inputs = that._startInput.add(that._endInput);\n },\n _option: function (option, value) {\n var that = this, options = that.options;\n if (value === undefined) {\n return options[option];\n }\n value = parse(value, options.parseFormats, options.culture);\n if (!value) {\n return;\n }\n options[option] = new Date(+value);\n that.dateView[option](value);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n that.max(that._initialOptions.max);\n that.min(that._initialOptions.min);\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _editable: function (options) {\n var that = this, inputs = that._inputs, readonly = options.readonly, disable = options.disable;\n if (!readonly && !disable) {\n that.wrapper.addClass(DEFAULT).removeClass(STATEDISABLED);\n $.each(inputs, function (key, item) {\n item.removeAttribute(DISABLED);\n item.removeAttribute(READONLY);\n });\n inputs.attr(ARIA_DISABLED, false);\n that._preventInputAction = false;\n } else {\n that.wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n inputs.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable);\n that._preventInputAction = true;\n }\n },\n destroy: function () {\n var that = this;\n if (that._startDateInput) {\n that._startDateInput.unbind(CHANGE, that._startChangeHandler);\n that._startDateInput.destroy();\n that._startChangeHandler = null;\n }\n if (that._endDateInput) {\n that._endDateInput.unbind(CHANGE, that._endChangeHandler);\n that._endDateInput.destroy();\n that._endChangeHandler = null;\n }\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n that._inputs.off(ns);\n that._inputs = null;\n that.dateView.destroy();\n that.element.off(ns);\n Widget.fn.destroy.call(that);\n },\n range: function (range) {\n var that = this;\n if (range === undefined) {\n return that._range;\n }\n that._range = range;\n that.dateView.range({\n start: null,\n end: null\n });\n if (!range) {\n that._startDateInput.value(null);\n that._endDateInput.value(null);\n }\n that._startDateInput.value(range.start ? range.start : null);\n that._endDateInput.value(range.end ? range.end : null);\n if (range.start && !range.end) {\n that.dateView.range({\n start: range.start,\n end: null\n });\n } else if (range.start && range.start && +range.start <= +range.end) {\n that.dateView.range({\n start: range.start,\n end: range.end\n });\n }\n },\n open: function () {\n this.dateView.open();\n },\n close: function () {\n this.dateView.close();\n },\n min: function (value) {\n return this._option(MIN, value);\n },\n max: function (value) {\n return this._option(MAX, value);\n },\n readonly: function (readonly) {\n this._startDateInput.readonly(readonly);\n this._endDateInput.readonly(readonly);\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._startDateInput.enable(enable);\n this._endDateInput.enable(enable);\n if (!enable) {\n this.close();\n }\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n }\n });\n kendo.ui.plugin(DateRangePicker);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.scrollview', [\n 'kendo.fx',\n 'kendo.data',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'scrollview',\n name: 'ScrollView',\n category: 'web',\n description: 'The Kendo ScrollView widget is used to scroll content wider than the device screen.',\n depends: [\n 'fx',\n 'data',\n 'draganddrop'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, proxy = $.proxy, Transition = kendo.effects.Transition, Pane = kendo.ui.Pane, PaneDimensions = kendo.ui.PaneDimensions, Widget = ui.DataBoundWidget, DataSource = kendo.data.DataSource, math = Math, abs = math.abs, ceil = math.ceil, round = math.round, max = math.max, min = math.min, floor = math.floor, CHANGE = 'change', CLICK = 'click', CHANGING = 'changing', REFRESH = 'refresh', CURRENT_PAGE_CLASS = 'primary', VIRTUAL_PAGE_CLASS = 'scrollview-page', FUNCTION = 'function', ITEM_CHANGE = 'itemChange', CLEANUP = 'cleanup', VIRTUAL_PAGE_COUNT = 3, LEFT_PAGE = -1, CETER_PAGE = 0, RIGHT_PAGE = 1, LEFT_SWIPE = -1, NUDGE = 0, RIGHT_SWIPE = 1;\n function className(name) {\n return 'k-' + name;\n }\n var ScrollViewDataReader = kendo.Observable.extend({\n init: function (dataSource) {\n var that = this;\n this.dataSource = dataSource;\n this.pendingRequestArray = [];\n this.initialFetch = false;\n this.useRanges = dataSource.options.serverPaging;\n kendo.Observable.fn.init.call(this);\n dataSource.bind('change', function () {\n that._change();\n });\n },\n _change: function () {\n this.trigger('reset', { offset: this.offset });\n },\n page: function (page, callback) {\n var that = this;\n if (!this.useRanges) {\n this.dataSource.page(page + 1);\n if (callback) {\n callback(that.dataSource.view());\n } else {\n that.trigger('page', { page: page });\n }\n }\n if (this.useRanges) {\n this.dataSource.range(page * this.dataSource.pageSize(), this.dataSource.pageSize(), function () {\n if (callback) {\n callback(that.dataSource.view());\n } else {\n that.trigger('page', { page: page });\n }\n });\n }\n },\n scrollTo: function (page) {\n var pageCount = Math.ceil(this.dataSource.total() / this.dataSource.pageSize() || 1);\n var prevPage = page - 1;\n var prevPrefetch = prevPage - 1;\n var currentPage = page;\n var nextPage = pageCount > 0 && page + 1 >= pageCount ? -1 : page + 1;\n var nextPrefetch = pageCount > 0 && nextPage + 1 >= pageCount ? -1 : nextPage + 1;\n if (nextPage >= 0) {\n this.pendingRequestArray.push(nextPage);\n }\n if (prevPage >= 0) {\n this.pendingRequestArray.push(prevPage);\n }\n if (prevPrefetch >= 0) {\n this.pendingRequestArray.push(prevPrefetch);\n }\n if (nextPrefetch >= 0) {\n this.pendingRequestArray.push(nextPrefetch);\n }\n this.page(currentPage);\n },\n getViewData: function () {\n var view = this.dataSource.view();\n var data;\n if (this.dataSource.options.pageSize > 1) {\n data = [];\n for (var index = 0; index < view.length; index++) {\n data.push(view[index]);\n }\n } else {\n data = view[0];\n }\n return data;\n },\n destroy: function () {\n var that = this;\n that.dataSource.unbind();\n that.dataSource = null;\n }\n });\n kendo.ui.ScrollViewDataReader = ScrollViewDataReader;\n var Pager = kendo.Class.extend({\n init: function (scrollView) {\n var that = this, element = $('<ul class=\\'' + className('scrollview-nav') + '\\'/>'), navigationWrapElement = $('<div class=\\'' + className('scrollview-nav-wrap') + '\\'></div>');\n navigationWrapElement.append(element);\n scrollView._navigationContainer.append(navigationWrapElement);\n this._changeProxy = proxy(that, '_change');\n this._refreshProxy = proxy(that, '_refresh');\n scrollView.bind(CHANGE, this._changeProxy);\n scrollView.bind(REFRESH, this._refreshProxy);\n element.on(CLICK, 'li.k-link', proxy(this._click, scrollView));\n $.extend(that, {\n element: element,\n scrollView: scrollView\n });\n },\n items: function () {\n return this.element.children();\n },\n _refresh: function (e) {\n var pageHTML = '';\n for (var idx = 0; idx < e.pageCount; idx++) {\n pageHTML += '<li class=\"k-link\"></li>';\n }\n this.element.html(pageHTML);\n this.items().eq(e.page).addClass(className(CURRENT_PAGE_CLASS));\n this.scrollView._toggleNavigation({ currentPage: e.page });\n },\n _change: function (e) {\n if (e.isDefaultPrevented()) {\n return;\n }\n var innerNavigationContainer = this.scrollView._navigationContainer.find('.k-scrollview-nav');\n var scrollViewWidth = this.scrollView.element.width();\n var containerOffset = (scrollViewWidth - innerNavigationContainer.width()) / 2;\n var pageWidth = innerNavigationContainer.find('li.k-link:eq(0)').outerWidth(true) / 2;\n this.items().removeClass(className(CURRENT_PAGE_CLASS)).eq(e.nextPage).addClass(className(CURRENT_PAGE_CLASS));\n var itemOffset = this.items().eq(e.nextPage).length > 0 ? this.items().eq(e.nextPage).position().left : 0;\n if (itemOffset > scrollViewWidth / 2 || itemOffset < innerNavigationContainer.scrollLeft() + scrollViewWidth / 2) {\n var translate = 0;\n if (itemOffset > scrollViewWidth / 2) {\n translate = innerNavigationContainer.scrollLeft() + itemOffset - scrollViewWidth / 2;\n } else {\n translate = innerNavigationContainer.scrollLeft() - (scrollViewWidth / 2 - itemOffset);\n }\n translate += containerOffset + pageWidth;\n innerNavigationContainer.animate({ 'scrollLeft': translate }, 300);\n }\n this.scrollView._toggleNavigation({\n currentPage: e.currentPage,\n nextPage: e.nextPage\n });\n },\n _click: function (e) {\n var newPage = $(e.currentTarget).index();\n this.scrollTo(newPage);\n },\n destroy: function () {\n this.scrollView.unbind(CHANGE, this._changeProxy);\n this.scrollView.unbind(REFRESH, this._refreshProxy);\n this.element.off(CLICK);\n this.element.remove();\n }\n });\n kendo.ui.ScrollViewPager = Pager;\n var TRANSITION_END = 'transitionEnd', DRAG_START = 'dragStart', DRAG_END = 'dragEnd';\n var ElasticPane = kendo.Observable.extend({\n init: function (element, options) {\n var that = this;\n kendo.Observable.fn.init.call(this);\n this.element = element;\n this.container = element.parent();\n var movable, transition, userEvents, dimensions, dimension, pane;\n movable = new kendo.ui.Movable(that.element);\n transition = new Transition({\n axis: 'x',\n movable: movable,\n onEnd: function () {\n that.trigger(TRANSITION_END);\n }\n });\n userEvents = new kendo.UserEvents(element, {\n fastTap: true,\n start: function (e) {\n if (abs(e.x.velocity) * 2 >= abs(e.y.velocity)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n that.trigger(DRAG_START, e);\n transition.cancel();\n },\n allowSelection: true,\n end: function (e) {\n that.trigger(DRAG_END, e);\n }\n });\n dimensions = new PaneDimensions({\n element: that.element,\n container: that.container\n });\n dimension = dimensions.x;\n dimension.bind(CHANGE, function () {\n that.trigger(CHANGE);\n });\n pane = new Pane({\n dimensions: dimensions,\n userEvents: userEvents,\n movable: movable,\n elastic: true\n });\n $.extend(that, {\n duration: options && options.duration || 1,\n movable: movable,\n transition: transition,\n userEvents: userEvents,\n dimensions: dimensions,\n dimension: dimension,\n pane: pane\n });\n this.bind([\n TRANSITION_END,\n DRAG_START,\n DRAG_END,\n CHANGE\n ], options);\n },\n size: function () {\n return {\n width: this.dimensions.x.getSize(),\n height: this.dimensions.y.getSize()\n };\n },\n total: function () {\n return this.dimension.getTotal();\n },\n offset: function () {\n return -this.movable.x;\n },\n updateDimension: function () {\n this.dimension.update(true);\n },\n refresh: function () {\n this.dimensions.refresh();\n this.dimensions.y.enabled = false;\n },\n moveTo: function (offset) {\n this.movable.moveAxis('x', -offset);\n },\n transitionTo: function (offset, ease, instant) {\n if (instant) {\n this.moveTo(-offset);\n } else {\n this.transition.moveTo({\n location: offset,\n duration: this.duration,\n ease: ease\n });\n }\n },\n destroy: function () {\n var that = this;\n that.userEvents.destroy();\n that.unbind();\n that.movable = that.tansition = that.dimensions = that.dimension = that.pane = null;\n that.element.remove();\n }\n });\n kendo.ui.ScrollViewElasticPane = ElasticPane;\n var ScrollViewContent = kendo.Observable.extend({\n init: function (element, pane, options) {\n var that = this;\n kendo.Observable.fn.init.call(this);\n that.element = element;\n that.pane = pane;\n that._getPages();\n this.page = 0;\n this.pageSize = options.pageSize || 1;\n this.contentHeight = options.contentHeight;\n this.enablePager = options.enablePager;\n this.pagerOverlay = options.pagerOverlay;\n },\n scrollTo: function (page, instant) {\n var that = this;\n if (page == that.page && !instant) {\n return;\n }\n if (!that.trigger('resize', {\n currentPage: this.page,\n nextPage: page,\n data: undefined\n })) {\n that.page = page;\n that.pane.transitionTo(-page * that.pane.size().width, Transition.easeOutExpo, instant);\n }\n },\n paneMoved: function (swipeType, bounce, callback, instant) {\n var that = this, pane = that.pane, width = pane.size().width * that.pageSize, approx = round, ease = bounce ? Transition.easeOutBack : Transition.easeOutExpo, snap, nextPage;\n if (swipeType === LEFT_SWIPE) {\n approx = ceil;\n } else if (swipeType === RIGHT_SWIPE) {\n approx = floor;\n }\n nextPage = approx(pane.offset() / width);\n if (nextPage < 0 || nextPage >= that.pageCount) {\n var tansition = nextPage < 0 ? 0 : -this.page * this.pane.size().width;\n return this.pane.transitionTo(tansition, ease, instant);\n }\n snap = max(that.minSnap, min(-nextPage * width, that.maxSnap));\n if (nextPage != that.page) {\n if (callback && callback({\n currentPage: that.page,\n nextPage: nextPage\n })) {\n snap = -that.page * pane.size().width;\n }\n }\n pane.transitionTo(snap, ease, instant);\n },\n updatePage: function () {\n var pane = this.pane, page = round(pane.offset() / pane.size().width);\n if (page != this.page) {\n this.page = page;\n return true;\n }\n return false;\n },\n forcePageUpdate: function () {\n return this.updatePage();\n },\n resizeTo: function (size) {\n var pane = this.pane, width = size.width;\n this.pageElements.width(width);\n if (this.contentHeight === '100%') {\n var containerHeight = this.element.parent().height();\n if (this.enablePager === true) {\n var pager = this.element.parent().find('ul.k-scrollview-nav');\n if (!this.pagerOverlay && pager.length) {\n containerHeight -= kendo._outerHeight(pager, true);\n }\n }\n this.element.css('height', containerHeight);\n this.pageElements.css('height', containerHeight);\n }\n pane.updateDimension();\n if (!this._paged) {\n this.page = floor(pane.offset() / width);\n }\n this.scrollTo(this.page, true, true);\n this.pageCount = floor(pane.total() / width);\n this.minSnap = -(this.pageCount - 1) * width;\n this.maxSnap = 0;\n },\n _getPages: function () {\n this.pageElements = this.element.find(kendo.roleSelector('page'));\n this._paged = this.pageElements.length > 0;\n },\n destroy: function () {\n var that = this;\n that.pane = null;\n that.element.remove();\n }\n });\n kendo.ui.ScrollViewContent = ScrollViewContent;\n var VirtualScrollViewContent = kendo.Observable.extend({\n init: function (element, pane, options) {\n var that = this;\n kendo.Observable.fn.init.call(this);\n that.element = element;\n that.pane = pane;\n that.options = options;\n that._templates();\n that.page = options.page || 0;\n that.pages = [];\n that._initPages();\n that.resizeTo(that.pane.size());\n that.pane.dimension.forceEnabled();\n },\n setDataSource: function (dataSource) {\n this.dataSource = DataSource.create(dataSource);\n this._dataReader();\n this._pendingPageRefresh = false;\n this._pendingWidgetRefresh = false;\n },\n _viewShow: function () {\n var that = this;\n if (that._pendingWidgetRefresh) {\n setTimeout(function () {\n that._resetPages();\n }, 0);\n that._pendingWidgetRefresh = false;\n }\n },\n _dataReader: function () {\n this.dataReader = new ScrollViewDataReader(this.dataSource);\n this._pageProxy = proxy(this, '_onPage');\n this._resetProxy = proxy(this, '_onReset');\n this.dataReader.bind({\n 'page': this._pageProxy,\n 'reset': this._resetProxy\n });\n },\n _templates: function () {\n var template = this.options.template, emptyTemplate = this.options.emptyTemplate, templateProxy = {}, emptyTemplateProxy = {};\n if (typeof template === FUNCTION) {\n templateProxy.template = template;\n template = '#=this.template(data)#';\n }\n this.template = proxy(kendo.template(template), templateProxy);\n if (typeof emptyTemplate === FUNCTION) {\n emptyTemplateProxy.emptyTemplate = emptyTemplate;\n emptyTemplate = '#=this.emptyTemplate(data)#';\n }\n this.emptyTemplate = proxy(kendo.template(emptyTemplate), emptyTemplateProxy);\n },\n _initPages: function () {\n var pages = this.pages, element = this.element, page;\n for (var i = 0; i < VIRTUAL_PAGE_COUNT; i++) {\n page = new Page(element);\n pages.push(page);\n }\n this.pane.updateDimension();\n },\n resizeTo: function (size) {\n var pages = this.pages, pane = this.pane;\n for (var i = 0; i < pages.length; i++) {\n pages[i].setWidth(size.width);\n }\n if (this.options.contentHeight === 'auto') {\n this.element.css('height', this.pages[1].element.height());\n } else if (this.options.contentHeight === '100%') {\n var containerHeight = this.element.parent().height();\n if (this.options.enablePager === true) {\n var pager = this.element.parent().find('ul.k-scrollview-nav');\n if (!this.options.pagerOverlay && pager.length) {\n containerHeight -= kendo._outerHeight(pager, true);\n }\n }\n this.element.css('height', containerHeight);\n pages[0].element.css('height', containerHeight);\n pages[1].element.css('height', containerHeight);\n pages[2].element.css('height', containerHeight);\n } else if (this.options.contentHeight) {\n pages[0].element.css('height', this.options.contentHeight);\n pages[1].element.css('height', this.options.contentHeight);\n pages[2].element.css('height', this.options.contentHeight);\n }\n pane.updateDimension();\n this._repositionPages();\n this.width = size.width;\n },\n scrollTo: function (page, instant, silent) {\n var that = this;\n var dataReader = that.dataReader;\n if (page == that.page && !instant) {\n return;\n }\n dataReader.page(page, function (data) {\n if (silent) {\n dataReader.scrollTo(page);\n return;\n }\n if (!that.trigger('resize', {\n currentPage: that.page,\n nextPage: page,\n data: data\n })) {\n if (!instant) {\n dataReader.pagerScroll = page > that.page ? -1 : 1;\n that.page = page + dataReader.pagerScroll;\n } else {\n that.page = page;\n }\n dataReader.scrollTo(page);\n }\n });\n },\n paneMoved: function (swipeType, bounce, callback, instant) {\n var that = this, pane = that.pane, width = pane.size().width, offset = pane.offset(), thresholdPassed = Math.abs(offset) >= width / 3, ease = bounce ? kendo.effects.Transition.easeOutBack : kendo.effects.Transition.easeOutExpo, isEndReached = that.dataSource.options.serverPaging ? that.page + 2 > that.pageCount : false, nextPage, delta = 0, data, element;\n if (swipeType === RIGHT_SWIPE) {\n if (that.page !== 0) {\n delta = -1;\n }\n } else if (swipeType === LEFT_SWIPE && !isEndReached) {\n delta = 1;\n } else if (offset > 0 && (thresholdPassed && !isEndReached)) {\n delta = 1;\n } else if (offset < 0 && thresholdPassed) {\n if (that.page !== 0) {\n delta = -1;\n }\n }\n nextPage = that.page;\n if (delta) {\n nextPage = delta > 0 ? nextPage + 1 : nextPage - 1;\n if (that instanceof kendo.ui.VirtualScrollViewContent) {\n that.dataReader.page(nextPage);\n data = that.dataReader.getViewData();\n } else {\n data = undefined;\n }\n if (!(data instanceof Array)) {\n data = [data];\n }\n element = that.pages ? that.pages[1].element : undefined;\n }\n if (callback && that.page != nextPage && callback({\n currentPage: that.page,\n nextPage: nextPage,\n element: element,\n data: data\n })) {\n delta = 0;\n }\n if (delta === 0) {\n that._cancelMove(ease, instant);\n } else if (delta === -1) {\n that._moveBackward(instant);\n } else if (delta === 1) {\n that._moveForward(instant);\n }\n },\n updatePage: function () {\n var pages = this.pages;\n if (this.pane.offset() === 0) {\n return false;\n }\n if (this.pane.offset() > 0) {\n pages.push(this.pages.shift());\n this.page++;\n if (this.page + 2 < this.pageCount) {\n this.dataReader.pendingRequestArray.push(this.page + 2);\n }\n if (this.page + 1 < this.pageCount) {\n this.dataReader.page(this.page + 1);\n }\n if (this.page + 1 == this.pageCount) {\n this.setPageContent(this.pages[2], null);\n }\n } else {\n pages.unshift(this.pages.pop());\n this.page--;\n if (this.page - 2 >= 0) {\n this.dataReader.pendingRequestArray.push(this.page - 2);\n }\n if (this.page - 1 >= 0) {\n this.dataReader.page(this.page - 1);\n }\n }\n this._repositionPages();\n this._resetMovable();\n return true;\n },\n forcePageUpdate: function () {\n var offset = this.pane.offset(), threshold = this.pane.size().width * 3 / 4;\n if (abs(offset) > threshold) {\n return this.updatePage();\n }\n return false;\n },\n _resetMovable: function () {\n this.pane.moveTo(0);\n },\n _moveForward: function (instant) {\n this.pane.transitionTo(-this.width, kendo.effects.Transition.easeOutExpo, instant);\n },\n _moveBackward: function (instant) {\n this.pane.transitionTo(this.width, kendo.effects.Transition.easeOutExpo, instant);\n },\n _cancelMove: function (ease, instant) {\n this.pane.transitionTo(0, ease, instant);\n },\n _resetPages: function () {\n this.page = this.options.page || 0;\n this._repositionPages();\n this.trigger('reset');\n },\n _onPage: function (e) {\n if (e.page >= this.pageCount) {\n this.setPageContent(this.pages[2], null);\n }\n if (this.page == e.page) {\n if (!this.dataReader.pagerScroll || this.dataReader.pagerScroll === 0 && this.dataReader.initialFetch) {\n this.setPageContent(this.pages[1], this.dataReader.getViewData());\n } else {\n if (this.dataReader.pagerScroll < 0) {\n this._moveForward();\n } else {\n this._moveBackward();\n }\n this.dataReader.pagerScroll = 0;\n this.setPageContent(this.pages[1], this.dataReader.getViewData());\n }\n } else if (this.page + 1 == e.page) {\n this.setPageContent(this.pages[2], this.dataReader.getViewData());\n } else if (this.page - 1 == e.page) {\n this.setPageContent(this.pages[0], this.dataReader.getViewData());\n }\n if (this.dataReader.pendingRequestArray.length > 0 && this.dataReader.initialFetch) {\n var item = this.dataReader.pendingRequestArray.shift();\n this.dataReader.page(item);\n }\n },\n _onReset: function () {\n this.pageCount = ceil(this.dataSource.total() / this.dataSource.pageSize());\n },\n _repositionPages: function () {\n var pages = this.pages;\n pages[0].position(LEFT_PAGE);\n pages[1].position(CETER_PAGE);\n pages[2].position(RIGHT_PAGE);\n },\n setPageContent: function (page, data) {\n var template = this.template, emptyTemplate = this.emptyTemplate;\n if (data !== null && data !== undefined) {\n page.content(template(data));\n } else {\n page.content(emptyTemplate({}));\n }\n },\n destroy: function () {\n var that = this;\n var pages = that.pages;\n that.dataReader.unbind();\n that.dataSource.unbind();\n that.dataReader = that.dataSource = that.pane = null;\n for (var index = 0; index < pages.length; index++) {\n pages[index].destroy();\n }\n that.element.remove();\n }\n });\n kendo.ui.VirtualScrollViewContent = VirtualScrollViewContent;\n var Page = kendo.Class.extend({\n init: function (container) {\n this.element = $('<li class=\\'' + className(VIRTUAL_PAGE_CLASS) + '\\'></li>');\n this.width = container.width();\n this.element.width(this.width);\n container.append(this.element);\n },\n content: function (theContent) {\n this.element.html(theContent);\n },\n position: function (position) {\n this.element.css('transform', 'translate3d(' + this.width * position + 'px, 0, 0)');\n },\n setWidth: function (width) {\n this.width = width;\n this.element.width(width);\n },\n destroy: function () {\n var that = this;\n that.element.remove();\n that.element = null;\n }\n });\n kendo.ui.VirtualPage = Page;\n var ScrollView = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element;\n kendo.stripWhitespace(element[0]);\n if (element.children().length === 0) {\n element.wrapInner('<ul class=\\'k-scrollview-wrap\\'/>');\n } else {\n element.wrapInner('<div class=\\'k-scrollview-wrap\\'/>');\n }\n element.addClass('k-widget ' + className('scrollview'));\n that._initNavigation();\n if (this.options.enablePager) {\n this.pager = new Pager(this);\n if (this.options.pagerOverlay) {\n element.addClass(className('scrollview-overlay'));\n }\n } else {\n this._changeProxy = proxy(that, '_toggleNavigation');\n this.bind(CHANGE, this._changeProxy);\n }\n that.inner = element.children().first();\n that.page = 0;\n that.inner.css('height', options.contentHeight);\n that.pane = new ElasticPane(that.inner, {\n duration: this.options.duration,\n transitionEnd: proxy(this, '_transitionEnd'),\n dragStart: proxy(this, '_dragStart'),\n dragEnd: proxy(this, '_dragEnd'),\n change: proxy(this, REFRESH)\n });\n that.bind('resize', function () {\n that.pane.refresh();\n });\n that.page = options.page;\n var empty = this.inner.children().length === 0;\n var content = empty ? new VirtualScrollViewContent(that.inner, that.pane, options) : new ScrollViewContent(that.inner, that.pane, options);\n content.page = that.page;\n content.bind('reset', function () {\n this._pendingPageRefresh = false;\n that.trigger(REFRESH, {\n pageCount: content.pageCount,\n page: content.page\n });\n that._toggleNavigation({\n currentPage: content.page,\n nextPage: content.page\n });\n });\n content.bind('resize', function (e) {\n var currentPage = content.page;\n var nextPage = e.nextPage;\n if (currentPage != nextPage) {\n e._defaultPrevented = that.trigger(CHANGE, {\n currentPage: content.page,\n nextPage: e.nextPage,\n data: e.data\n });\n }\n that._toggleNavigation({\n currentPage: content.page,\n nextPage: e.nextPage\n });\n });\n content.bind(ITEM_CHANGE, function (e) {\n that.trigger(ITEM_CHANGE, e);\n that.angular('compile', function () {\n return {\n elements: e.item,\n data: [{ dataItem: e.data }]\n };\n });\n });\n content.bind(CLEANUP, function (e) {\n that.angular('cleanup', function () {\n return { elements: e.item };\n });\n });\n that._content = content;\n that.setDataSource(options.dataSource);\n this.viewInit();\n this.viewShow();\n },\n options: {\n name: 'ScrollView',\n page: 0,\n duration: 400,\n velocityThreshold: 0.8,\n contentHeight: 'auto',\n pageSize: 1,\n bounceVelocityThreshold: 1.6,\n enablePager: true,\n enableNavigationButtons: true,\n pagerOverlay: true,\n autoBind: true,\n template: '',\n emptyTemplate: ''\n },\n events: [\n CHANGING,\n CHANGE,\n REFRESH\n ],\n destroy: function () {\n Widget.fn.destroy.call(this);\n this._content.destroy();\n this.pane.destroy();\n if (this.pager) {\n this.pager.destroy();\n }\n this.inner = null;\n kendo.destroy(this.element);\n },\n viewInit: function () {\n if (this.options.autoBind) {\n this._content.scrollTo(this._content.page, true, true);\n }\n },\n viewShow: function () {\n this.pane.refresh();\n },\n refresh: function () {\n var content = this._content;\n var options = this.options;\n content.resizeTo(this.pane.size());\n this.page = content.page;\n if (content instanceof ScrollViewContent || content.dataReader.initialFetch) {\n if (options.enablePager) {\n this.trigger(REFRESH, {\n pageCount: content.pageCount,\n page: content.page\n });\n } else {\n this.trigger(CHANGE, {\n pageCount: content.pageCount,\n currentPage: content.page\n });\n }\n }\n },\n content: function (html) {\n this.element.children().first().html(html);\n this._content._getPages();\n this.pane.refresh();\n },\n scrollTo: function (page, instant, silent) {\n this._content.scrollTo(page, instant, silent);\n },\n prev: function () {\n var that = this, prevPage = that._content.page - 1;\n if (that._content instanceof VirtualScrollViewContent) {\n that._content.paneMoved(RIGHT_SWIPE, undefined, function (eventData) {\n return that.trigger(CHANGE, eventData);\n });\n } else if (prevPage > -1) {\n that.scrollTo(prevPage);\n }\n },\n next: function () {\n var that = this, nextPage = that._content.page + 1;\n if (that._content instanceof VirtualScrollViewContent) {\n that._content.paneMoved(LEFT_SWIPE, undefined, function (eventData) {\n return that.trigger(CHANGE, eventData);\n });\n } else if (nextPage < that._content.pageCount) {\n that.scrollTo(nextPage);\n }\n },\n setDataSource: function (dataSource) {\n var that = this;\n if (!(this._content instanceof VirtualScrollViewContent)) {\n return;\n }\n var emptyDataSource = !dataSource;\n if (dataSource instanceof DataSource) {\n dataSource.options.pageSize = dataSource.options.pageSize || 1;\n this.dataSource = dataSource = new DataSource(dataSource.options);\n } else {\n this.dataSource = DataSource.create(dataSource);\n }\n this._content.setDataSource(this.dataSource);\n if (this.options.autoBind && !emptyDataSource) {\n this.dataSource.fetch(function () {\n that._content.dataReader.initialFetch = true;\n that.scrollTo(that._content.page, true, true);\n that._content.trigger('reset');\n });\n }\n },\n items: function () {\n return this.element.find('.k-' + VIRTUAL_PAGE_CLASS);\n },\n _dragStart: function () {\n this._content.forcePageUpdate();\n },\n _dragEnd: function (e) {\n var that = this, velocity = e.x.velocity, velocityThreshold = this.options.velocityThreshold, swipeType = NUDGE, bounce = abs(velocity) > this.options.bounceVelocityThreshold;\n if (velocity > velocityThreshold) {\n swipeType = RIGHT_SWIPE;\n } else if (velocity < -velocityThreshold) {\n swipeType = LEFT_SWIPE;\n }\n this._content.paneMoved(swipeType, bounce, function (eventData) {\n return that.trigger(CHANGE, eventData);\n });\n },\n _transitionEnd: function () {\n this._content.updatePage();\n },\n _initNavigation: function () {\n var that = this;\n var navigationContainer = that._navigationContainer = $('<div class=\\'k-scrollview-elements\\'></div>');\n var prevArrow = $('<a class=\"k-scrollview-prev\"><span class=\"k-icon k-i-arrowhead-w\"></span></a>').hide();\n var nextArrow = $('<a class=\"k-scrollview-next\"><span class=\"k-icon k-i-arrowhead-e\"></span></a>').hide();\n navigationContainer.append(prevArrow);\n navigationContainer.append(nextArrow);\n that.element.append(navigationContainer);\n navigationContainer.on(CLICK, 'a.k-scrollview-prev', proxy(that.prev, that));\n navigationContainer.on(CLICK, 'a.k-scrollview-next', proxy(that.next, that));\n },\n _toggleNavigation: function (e) {\n var page = e.nextPage || e.nextPage === 0 ? e.nextPage : e.currentPage;\n var navigationContainer = this._navigationContainer;\n var prevArrow = navigationContainer.find('>a.k-scrollview-prev');\n var nextArrow = navigationContainer.find('>a.k-scrollview-next');\n prevArrow.hide();\n nextArrow.hide();\n if (page || page === 0) {\n if (page !== 0) {\n prevArrow.show();\n }\n if (page != this._content.pageCount - 1) {\n nextArrow.show();\n }\n }\n }\n });\n ui.plugin(ScrollView);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.splitter', ['kendo.resizable'], f);\n}(function () {\n var __meta__ = {\n id: 'splitter',\n name: 'Splitter',\n category: 'web',\n description: 'The Splitter widget provides an easy way to create a dynamic layout of resizable and collapsible panes.',\n depends: ['resizable']\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, keys = kendo.keys, extend = $.extend, proxy = $.proxy, Widget = ui.Widget, pxUnitsRegex = /^\\d+(\\.\\d+)?px$/i, percentageUnitsRegex = /^\\d+(\\.\\d+)?%$/i, NS = '.kendoSplitter', EXPAND = 'expand', COLLAPSE = 'collapse', CONTENTLOAD = 'contentLoad', ERROR = 'error', RESIZE = 'resize', LAYOUTCHANGE = 'layoutChange', HORIZONTAL = 'horizontal', VERTICAL = 'vertical', MOUSEENTER = 'mouseenter', CLICK = 'click', PANE = 'pane', MOUSELEAVE = 'mouseleave', FOCUSED = 'k-state-focused', KPANE = 'k-' + PANE, PANECLASS = '.' + KPANE;\n function isPercentageSize(size) {\n return percentageUnitsRegex.test(size);\n }\n function isPixelSize(size) {\n return pxUnitsRegex.test(size) || /^\\d+$/.test(size);\n }\n function isFluid(size) {\n return !isPercentageSize(size) && !isPixelSize(size);\n }\n function calculateSize(size, total) {\n var output = parseInt(size, 10);\n if (isPercentageSize(size)) {\n output = Math.floor(output * total / 100);\n }\n return output;\n }\n function panePropertyAccessor(propertyName, triggersResize) {\n return function (pane, value) {\n var paneConfig = this.element.find(pane).data(PANE);\n if (arguments.length == 1) {\n return paneConfig[propertyName];\n }\n paneConfig[propertyName] = value;\n if (triggersResize) {\n var splitter = this.element.data('kendo' + this.options.name);\n splitter.resize(true);\n }\n };\n }\n var Splitter = Widget.extend({\n init: function (element, options) {\n var that = this, isHorizontal;\n Widget.fn.init.call(that, element, options);\n that.wrapper = that.element;\n if (that.options.orientation) {\n isHorizontal = that.options.orientation.toLowerCase() != VERTICAL;\n }\n that.orientation = isHorizontal ? HORIZONTAL : VERTICAL;\n that._dimension = isHorizontal ? 'width' : 'height';\n that._keys = {\n decrease: isHorizontal ? keys.LEFT : keys.UP,\n increase: isHorizontal ? keys.RIGHT : keys.DOWN\n };\n that._resizeStep = 10;\n that._marker = kendo.guid().substring(0, 8);\n that._initPanes();\n that.resizing = new PaneResizing(that);\n that.element.triggerHandler('init' + NS);\n },\n events: [\n EXPAND,\n COLLAPSE,\n CONTENTLOAD,\n ERROR,\n RESIZE,\n LAYOUTCHANGE\n ],\n _addOverlays: function () {\n this._panes().append('<div class=\\'k-splitter-overlay k-overlay\\' />');\n },\n _removeOverlays: function () {\n this._panes().children('.k-splitter-overlay').remove();\n },\n _attachEvents: function () {\n var that = this, orientation = that.options.orientation;\n that.element.children('.k-splitbar-draggable-' + orientation).on('keydown' + NS, proxy(that._keydown, that)).on('mousedown' + NS, function (e) {\n e.currentTarget.focus();\n }).on('focus' + NS, function (e) {\n $(e.currentTarget).addClass(FOCUSED);\n }).on('blur' + NS, function (e) {\n $(e.currentTarget).removeClass(FOCUSED);\n if (that.resizing) {\n that.resizing.end();\n }\n }).on(MOUSEENTER + NS, function () {\n $(this).addClass('k-splitbar-' + that.orientation + '-hover');\n }).on(MOUSELEAVE + NS, function () {\n $(this).removeClass('k-splitbar-' + that.orientation + '-hover');\n }).on('mousedown' + NS, proxy(that._addOverlays, that)).end().children('.k-splitbar').on('dblclick' + NS, proxy(that._togglePane, that)).children('.k-collapse-next, .k-collapse-prev').on(CLICK + NS, that._arrowClick(COLLAPSE)).end().children('.k-expand-next, .k-expand-prev').on(CLICK + NS, that._arrowClick(EXPAND)).end().end();\n $(window).on('resize' + NS + that._marker, proxy(that.resize, that, false));\n $(document).on('mouseup' + NS + that._marker, proxy(that._removeOverlays, that));\n },\n _detachEvents: function () {\n var that = this;\n that.element.children('.k-splitbar-draggable-' + that.orientation).off(NS).end().children('.k-splitbar').off('dblclick' + NS).children('.k-collapse-next, .k-collapse-prev, .k-expand-next, .k-expand-prev').off(NS);\n $(window).off(NS + that._marker);\n $(document).off(NS + that._marker);\n },\n options: {\n name: 'Splitter',\n orientation: HORIZONTAL,\n panes: []\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this._detachEvents();\n if (this.resizing) {\n this.resizing.destroy();\n }\n kendo.destroy(this.element);\n this.wrapper = this.element = null;\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode, resizing = that.resizing, target = $(e.currentTarget), navigationKeys = that._keys, increase = key === navigationKeys.increase, decrease = key === navigationKeys.decrease, pane;\n if (increase || decrease) {\n if (e.ctrlKey) {\n pane = target[decrease ? 'next' : 'prev']();\n if (resizing && resizing.isResizing()) {\n resizing.end();\n }\n if (!pane[that._dimension]()) {\n that._triggerAction(EXPAND, pane);\n } else {\n that._triggerAction(COLLAPSE, target[decrease ? 'prev' : 'next']());\n }\n } else if (resizing) {\n resizing.move((decrease ? -1 : 1) * that._resizeStep, target);\n }\n e.preventDefault();\n } else if (key === keys.HOME) {\n resizing.move(-resizing._maxPosition, target);\n e.preventDefault();\n } else if (key === keys.END) {\n resizing.move(resizing._maxPosition, target);\n e.preventDefault();\n } else if (key === keys.ENTER && resizing) {\n resizing.end();\n e.preventDefault();\n }\n },\n _initPanes: function () {\n var panesConfig = this.options.panes || [];\n var that = this;\n this.element.addClass('k-widget').addClass('k-splitter').children().each(function (i, pane) {\n if (pane.nodeName.toLowerCase() != 'script') {\n that._initPane(pane, panesConfig[i]);\n }\n });\n this.resize();\n },\n _initPane: function (pane, config) {\n pane = $(pane).attr('role', 'group').addClass(KPANE);\n pane.data(PANE, config ? config : {}).toggleClass('k-scrollable', config ? config.scrollable !== false : true);\n this.ajaxRequest(pane);\n },\n ajaxRequest: function (pane, url, data) {\n var that = this, paneConfig;\n pane = that.element.find(pane);\n paneConfig = pane.data(PANE);\n url = url || paneConfig.contentUrl;\n if (url) {\n pane.append('<span class=\\'k-icon k-i-loading k-pane-loading\\' />');\n if (kendo.isLocalUrl(url)) {\n jQuery.ajax({\n url: url,\n data: data || {},\n type: 'GET',\n dataType: 'html',\n success: function (data) {\n that.angular('cleanup', function () {\n return { elements: pane.get() };\n });\n pane.html(data);\n that.angular('compile', function () {\n return { elements: pane.get() };\n });\n that.trigger(CONTENTLOAD, { pane: pane[0] });\n },\n error: function (xhr, status) {\n that.trigger(ERROR, {\n pane: pane[0],\n status: status,\n xhr: xhr\n });\n }\n });\n } else {\n pane.removeClass('k-scrollable').html('<iframe src=\\'' + url + '\\' frameborder=\\'0\\' class=\\'k-content-frame\\'>' + 'This page requires frames in order to show content' + '</iframe>');\n }\n }\n },\n _triggerAction: function (type, pane) {\n if (!this.trigger(type, { pane: pane[0] })) {\n this[type](pane[0]);\n }\n },\n _togglePane: function (e) {\n var that = this, target = $(e.target), arrow;\n if (target.closest('.k-splitter')[0] != that.element[0]) {\n return;\n }\n arrow = target.children('.k-icon:not(.k-resize-handle)');\n if (arrow.length !== 1) {\n return;\n }\n if (arrow.is('.k-collapse-prev')) {\n that._triggerAction(COLLAPSE, target.prev());\n } else if (arrow.is('.k-collapse-next')) {\n that._triggerAction(COLLAPSE, target.next());\n } else if (arrow.is('.k-expand-prev')) {\n that._triggerAction(EXPAND, target.prev());\n } else if (arrow.is('.k-expand-next')) {\n that._triggerAction(EXPAND, target.next());\n }\n },\n _arrowClick: function (arrowType) {\n var that = this;\n return function (e) {\n var target = $(e.target), pane;\n if (target.closest('.k-splitter')[0] != that.element[0]) {\n return;\n }\n if (target.is('.k-' + arrowType + '-prev')) {\n pane = target.parent().prev();\n } else {\n pane = target.parent().next();\n }\n that._triggerAction(arrowType, pane);\n };\n },\n _updateSplitBar: function (splitbar, previousPane, nextPane) {\n var catIconIf = function (iconType, condition) {\n return condition ? '<div class=\\'k-icon ' + iconType + '\\' />' : '';\n }, orientation = this.orientation, draggable = previousPane.resizable !== false && nextPane.resizable !== false, prevCollapsible = previousPane.collapsible, prevCollapsed = previousPane.collapsed, nextCollapsible = nextPane.collapsible, nextCollapsed = nextPane.collapsed;\n splitbar.addClass('k-splitbar k-state-default k-splitbar-' + orientation).attr('role', 'separator').attr('aria-expanded', !(prevCollapsed || nextCollapsed)).removeClass('k-splitbar-' + orientation + '-hover').toggleClass('k-splitbar-draggable-' + orientation, draggable && !prevCollapsed && !nextCollapsed).toggleClass('k-splitbar-static-' + orientation, !draggable && !prevCollapsible && !nextCollapsible).html(catIconIf('k-collapse-prev k-i-arrow-60-up', prevCollapsible && !prevCollapsed && !nextCollapsed && orientation == VERTICAL) + catIconIf('k-collapse-prev k-i-arrow-60-left', prevCollapsible && !prevCollapsed && !nextCollapsed && orientation == HORIZONTAL) + catIconIf('k-expand-prev k-i-arrow-60-down', prevCollapsible && prevCollapsed && !nextCollapsed && orientation == VERTICAL) + catIconIf('k-expand-prev k-i-arrow-60-right', prevCollapsible && prevCollapsed && !nextCollapsed && orientation == HORIZONTAL) + catIconIf('k-resize-handle k-i-hbar', draggable && orientation == VERTICAL) + catIconIf('k-resize-handle k-i-vbar', draggable && orientation == HORIZONTAL) + catIconIf('k-collapse-next k-i-arrow-60-down', nextCollapsible && !nextCollapsed && !prevCollapsed && orientation == VERTICAL) + catIconIf('k-collapse-next k-i-arrow-60-right', nextCollapsible && !nextCollapsed && !prevCollapsed && orientation == HORIZONTAL) + catIconIf('k-expand-next k-i-arrow-60-up', nextCollapsible && nextCollapsed && !prevCollapsed && orientation == VERTICAL) + catIconIf('k-expand-next k-i-arrow-60-left', nextCollapsible && nextCollapsed && !prevCollapsed && orientation == HORIZONTAL));\n if (!draggable && !prevCollapsible && !nextCollapsible) {\n splitbar.removeAttr('tabindex');\n }\n },\n _updateSplitBars: function () {\n var that = this;\n this.element.children('.k-splitbar').each(function () {\n var splitbar = $(this), previousPane = splitbar.prevAll(PANECLASS).first().data(PANE), nextPane = splitbar.nextAll(PANECLASS).first().data(PANE);\n if (!nextPane) {\n return;\n }\n that._updateSplitBar(splitbar, previousPane, nextPane);\n });\n },\n _removeSplitBars: function () {\n this.element.children('.k-splitbar').remove();\n },\n _panes: function () {\n if (!this.element) {\n return $();\n }\n return this.element.children(PANECLASS);\n },\n _resize: function () {\n var that = this, element = that.element, panes = element.children(PANECLASS), isHorizontal = that.orientation == HORIZONTAL, splitBars = element.children('.k-splitbar'), splitBarsCount = splitBars.length, sizingProperty = isHorizontal ? 'width' : 'height', totalSize = element[sizingProperty]();\n that.wrapper.addClass('k-splitter-resizing');\n if (splitBarsCount === 0) {\n splitBarsCount = panes.length - 1;\n panes.slice(0, splitBarsCount).after('<div tabindex=\\'0\\' class=\\'k-splitbar\\' data-marker=\\'' + that._marker + '\\' />');\n that._updateSplitBars();\n splitBars = element.children('.k-splitbar');\n } else {\n that._updateSplitBars();\n }\n splitBars.each(function () {\n totalSize -= this[isHorizontal ? 'offsetWidth' : 'offsetHeight'];\n });\n var sizedPanesWidth = 0, sizedPanesCount = 0, freeSizedPanes = $();\n panes.css({\n position: 'absolute',\n top: 0\n })[sizingProperty](function () {\n var element = $(this), config = element.data(PANE) || {}, size;\n element.removeClass('k-state-collapsed');\n if (config.collapsed) {\n size = config.collapsedSize ? calculateSize(config.collapsedSize, totalSize) : 0;\n element.css('overflow', 'hidden').addClass('k-state-collapsed');\n } else if (isFluid(config.size)) {\n freeSizedPanes = freeSizedPanes.add(this);\n return;\n } else {\n size = calculateSize(config.size, totalSize);\n }\n sizedPanesCount++;\n sizedPanesWidth += size;\n return size;\n });\n totalSize -= sizedPanesWidth;\n var freeSizePanesCount = freeSizedPanes.length, freeSizePaneWidth = Math.floor(totalSize / freeSizePanesCount);\n freeSizedPanes.slice(0, freeSizePanesCount - 1).css(sizingProperty, freeSizePaneWidth).end().eq(freeSizePanesCount - 1).css(sizingProperty, totalSize - (freeSizePanesCount - 1) * freeSizePaneWidth);\n var sum = 0, alternateSizingProperty = isHorizontal ? 'height' : 'width', positioningProperty = isHorizontal ? 'left' : 'top', sizingDomProperty = isHorizontal ? 'offsetWidth' : 'offsetHeight';\n if (freeSizePanesCount === 0) {\n var lastNonCollapsedPane = panes.filter(function () {\n return !($(this).data(PANE) || {}).collapsed;\n }).last();\n lastNonCollapsedPane[sizingProperty](totalSize + lastNonCollapsedPane[0][sizingDomProperty]);\n }\n element.children().css(alternateSizingProperty, element[alternateSizingProperty]()).each(function (i, child) {\n if (child.tagName.toLowerCase() != 'script') {\n child.style[positioningProperty] = Math.floor(sum) + 'px';\n sum += child[sizingDomProperty];\n }\n });\n that._detachEvents();\n that._attachEvents();\n that.wrapper.removeClass('k-splitter-resizing');\n kendo.resize(panes);\n that.trigger(LAYOUTCHANGE);\n },\n toggle: function (pane, expand) {\n var that = this, paneConfig;\n pane = that.element.find(pane);\n paneConfig = pane.data(PANE);\n if (!expand && !paneConfig.collapsible) {\n return;\n }\n if (arguments.length == 1) {\n expand = paneConfig.collapsed === undefined ? false : paneConfig.collapsed;\n }\n paneConfig.collapsed = !expand;\n if (paneConfig.collapsed) {\n pane.css('overflow', 'hidden');\n } else {\n pane.css('overflow', '');\n }\n that.resize(true);\n },\n collapse: function (pane) {\n this.toggle(pane, false);\n },\n expand: function (pane) {\n this.toggle(pane, true);\n },\n _addPane: function (config, idx, paneElement) {\n var that = this;\n if (paneElement.length) {\n that.options.panes.splice(idx, 0, config);\n that._initPane(paneElement, config);\n that._removeSplitBars();\n that.resize(true);\n }\n return paneElement;\n },\n append: function (config) {\n config = config || {};\n var that = this, paneElement = $('<div />').appendTo(that.element);\n return that._addPane(config, that.options.panes.length, paneElement);\n },\n insertBefore: function (config, referencePane) {\n referencePane = $(referencePane);\n config = config || {};\n var that = this, idx = that.wrapper.children('.k-pane').index(referencePane), paneElement = $('<div />').insertBefore($(referencePane));\n return that._addPane(config, idx, paneElement);\n },\n insertAfter: function (config, referencePane) {\n referencePane = $(referencePane);\n config = config || {};\n var that = this, idx = that.wrapper.children('.k-pane').index(referencePane), paneElement = $('<div />').insertAfter($(referencePane));\n return that._addPane(config, idx + 1, paneElement);\n },\n remove: function (pane) {\n var that = this;\n pane = that.wrapper.find(pane);\n if (pane.length) {\n kendo.destroy(pane);\n pane.each(function (idx, element) {\n that.options.panes.splice(that.wrapper.children('.k-pane').index(element), 1);\n $(element).remove();\n });\n that._removeSplitBars();\n if (that.options.panes.length) {\n that.resize(true);\n }\n }\n return that;\n },\n size: panePropertyAccessor('size', true),\n min: panePropertyAccessor('min'),\n max: panePropertyAccessor('max')\n });\n ui.plugin(Splitter);\n var verticalDefaults = {\n sizingProperty: 'height',\n sizingDomProperty: 'offsetHeight',\n alternateSizingProperty: 'width',\n positioningProperty: 'top',\n mousePositioningProperty: 'pageY'\n };\n var horizontalDefaults = {\n sizingProperty: 'width',\n sizingDomProperty: 'offsetWidth',\n alternateSizingProperty: 'height',\n positioningProperty: 'left',\n mousePositioningProperty: 'pageX'\n };\n function PaneResizing(splitter) {\n var that = this, orientation = splitter.orientation;\n that.owner = splitter;\n that._element = splitter.element;\n that.orientation = orientation;\n extend(that, orientation === HORIZONTAL ? horizontalDefaults : verticalDefaults);\n that._resizable = new kendo.ui.Resizable(splitter.element, {\n orientation: orientation,\n handle: '.k-splitbar-draggable-' + orientation + '[data-marker=' + splitter._marker + ']',\n hint: proxy(that._createHint, that),\n start: proxy(that._start, that),\n max: proxy(that._max, that),\n min: proxy(that._min, that),\n invalidClass: 'k-restricted-size-' + orientation,\n resizeend: proxy(that._stop, that)\n });\n }\n PaneResizing.prototype = {\n press: function (target) {\n this._resizable.press(target);\n },\n move: function (delta, target) {\n if (!this.pressed) {\n this.press(target);\n this.pressed = true;\n }\n if (!this._resizable.target) {\n this._resizable.press(target);\n }\n this._resizable.move(delta);\n },\n end: function () {\n this._resizable.end();\n this.pressed = false;\n },\n destroy: function () {\n this._resizable.destroy();\n this._resizable = this._element = this.owner = null;\n },\n isResizing: function () {\n return this._resizable.resizing;\n },\n _createHint: function (handle) {\n var that = this;\n return $('<div class=\\'k-ghost-splitbar k-ghost-splitbar-' + that.orientation + ' k-state-default\\' />').css(that.alternateSizingProperty, handle[that.alternateSizingProperty]());\n },\n _start: function (e) {\n var that = this, splitbar = $(e.currentTarget), previousPane = splitbar.prev(), nextPane = splitbar.next(), previousPaneConfig = previousPane.data(PANE), nextPaneConfig = nextPane.data(PANE), prevBoundary = parseInt(previousPane[0].style[that.positioningProperty], 10), nextBoundary = parseInt(nextPane[0].style[that.positioningProperty], 10) + nextPane[0][that.sizingDomProperty] - splitbar[0][that.sizingDomProperty], totalSize = parseInt(that._element.css(that.sizingProperty), 10), toPx = function (value) {\n var val = parseInt(value, 10);\n return (isPixelSize(value) ? val : totalSize * val / 100) || 0;\n }, prevMinSize = toPx(previousPaneConfig.min), prevMaxSize = toPx(previousPaneConfig.max) || nextBoundary - prevBoundary, nextMinSize = toPx(nextPaneConfig.min), nextMaxSize = toPx(nextPaneConfig.max) || nextBoundary - prevBoundary;\n that.previousPane = previousPane;\n that.nextPane = nextPane;\n that._maxPosition = Math.min(nextBoundary - nextMinSize, prevBoundary + prevMaxSize);\n that._minPosition = Math.max(prevBoundary + prevMinSize, nextBoundary - nextMaxSize);\n },\n _max: function () {\n return this._maxPosition;\n },\n _min: function () {\n return this._minPosition;\n },\n _stop: function (e) {\n var that = this, splitbar = $(e.currentTarget), owner = that.owner;\n owner._panes().children('.k-splitter-overlay').remove();\n if (e.keyCode !== kendo.keys.ESC) {\n var ghostPosition = e.position, previousPane = splitbar.prev(), nextPane = splitbar.next(), previousPaneConfig = previousPane.data(PANE), nextPaneConfig = nextPane.data(PANE), previousPaneNewSize = ghostPosition - parseInt(previousPane[0].style[that.positioningProperty], 10), nextPaneNewSize = parseInt(nextPane[0].style[that.positioningProperty], 10) + nextPane[0][that.sizingDomProperty] - ghostPosition - splitbar[0][that.sizingDomProperty], fluidPanesCount = that._element.children(PANECLASS).filter(function () {\n return isFluid($(this).data(PANE).size);\n }).length;\n if (!isFluid(previousPaneConfig.size) || fluidPanesCount > 1) {\n if (isFluid(previousPaneConfig.size)) {\n fluidPanesCount--;\n }\n previousPaneConfig.size = previousPaneNewSize + 'px';\n }\n if (!isFluid(nextPaneConfig.size) || fluidPanesCount > 1) {\n nextPaneConfig.size = nextPaneNewSize + 'px';\n }\n owner.resize(true);\n }\n return false;\n }\n };\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.scheduler.view', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.view',\n name: 'Scheduler View',\n category: 'web',\n description: 'The Scheduler Common View',\n depends: ['core'],\n hidden: true\n };\n kendo.ui.scheduler = {};\n (function ($) {\n var kendo = window.kendo, ui = kendo.ui, getDate = kendo.date.getDate, Widget = ui.Widget, outerHeight = kendo._outerHeight, keys = kendo.keys, NS = '.kendoSchedulerView', INVERSE_COLOR_CLASS = 'k-event-inverse', MIN_HORIZONTAL_SCROLL_SIZE = 1024, math = Math;\n function levels(values, key) {\n var result = [];\n function collect(depth, values) {\n values = values[key];\n if (values) {\n var level = result[depth] = result[depth] || [];\n for (var idx = 0; idx < values.length; idx++) {\n level.push(values[idx]);\n collect(depth + 1, values[idx]);\n }\n }\n }\n collect(0, values);\n return result;\n }\n function cellspacing() {\n if (kendo.support.cssBorderSpacing) {\n return '';\n }\n return 'cellspacing=\"0\"';\n }\n function table(tableRows, className) {\n if (!tableRows.length) {\n return '';\n }\n return '<table role=\"presentation\"' + cellspacing() + ' class=\"' + $.trim('k-scheduler-table ' + (className || '')) + '\">' + '<tr>' + tableRows.join('</tr><tr>') + '</tr>' + '</table>';\n }\n function allDayTable(tableRows, className) {\n if (!tableRows.length) {\n return '';\n }\n return '<div style=\\'position:relative\\'>' + table(tableRows, className) + '</div>';\n }\n function timesHeader(columnLevelCount, allDaySlot, rowCount) {\n var tableRows = [];\n if (rowCount > 0) {\n for (var idx = 0; idx < columnLevelCount; idx++) {\n tableRows.push('<th>​</th>');\n }\n }\n if (allDaySlot) {\n tableRows.push('<th class=\"k-scheduler-times-all-day\">' + allDaySlot.text + '</th>');\n }\n if (rowCount < 1) {\n return $();\n }\n return $('<div class=\"k-scheduler-times\">' + table(tableRows) + '</div>');\n }\n function datesHeader(columnLevels, columnCount, allDaySlot) {\n var dateTableRows = [];\n var columnIndex;\n for (var columnLevelIndex = 0; columnLevelIndex < columnLevels.length; columnLevelIndex++) {\n var level = columnLevels[columnLevelIndex];\n var th = [];\n var colspan = columnCount / level.length;\n for (columnIndex = 0; columnIndex < level.length; columnIndex++) {\n var column = level[columnIndex];\n th.push('<th colspan=\"' + (column.colspan || colspan) + '\" class=\"' + (column.className || '') + '\">' + column.text + '</th>');\n }\n dateTableRows.push(th.join(''));\n }\n var allDayTableRows = [];\n if (allDaySlot) {\n var lastLevel = columnLevels[columnLevels.length - 1];\n var td = [];\n var cellContent = allDaySlot.cellContent;\n for (columnIndex = 0; columnIndex < lastLevel.length; columnIndex++) {\n td.push('<td class=\"' + (lastLevel[columnIndex].className || '') + '\">' + (cellContent ? cellContent(columnIndex) : ' ') + '</td>');\n }\n allDayTableRows.push(td.join(''));\n }\n return $('<div class=\"k-scheduler-header k-state-default\">' + '<div class=\"k-scheduler-header-wrap\">' + table(dateTableRows) + allDayTable(allDayTableRows, 'k-scheduler-header-all-day') + '</div>' + '</div>');\n }\n function times(rowLevels, rowCount, isMobile) {\n var rows = new Array(rowCount).join().split(',');\n var rowHeaderRows = [];\n var rowIndex;\n for (var rowLevelIndex = 0; rowLevelIndex < rowLevels.length; rowLevelIndex++) {\n var level = rowLevels[rowLevelIndex];\n var rowspan = rowCount / level.length;\n var className;\n var text;\n for (rowIndex = 0; rowIndex < level.length; rowIndex++) {\n className = level[rowIndex].className || '';\n text = level[rowIndex].text;\n if (level[rowIndex].allDay) {\n className = 'k-scheduler-times-all-day';\n }\n if (isMobile && className.indexOf('k-scheduler-group-cell') !== -1) {\n text = '<span class=\"k-scheduler-group-text\">' + text + '</span>';\n }\n rows[rowspan * rowIndex] += '<th class=\"' + className + '\" rowspan=\"' + rowspan + '\">' + text + '</th>';\n }\n }\n for (rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n rowHeaderRows.push(rows[rowIndex]);\n }\n if (rowCount < 1) {\n return $();\n }\n return $('<div class=\"k-scheduler-times\">' + table(rowHeaderRows) + '</div>');\n }\n function content() {\n return $('<div class=\"k-scheduler-content\">' + '<table role=\"presentation\"' + cellspacing() + ' class=\"k-scheduler-table\"/>' + '</div>');\n }\n var HINT = '<div class=\"k-marquee k-scheduler-marquee\">' + '<div class=\"k-marquee-color\"></div>' + '<div class=\"k-marquee-text\">' + '<div class=\"k-label-top\"></div>' + '<div class=\"k-label-bottom\"></div>' + '</div>' + '</div>';\n var ResourceView = kendo.Class.extend({\n init: function (index, isRtl) {\n this._index = index;\n this._timeSlotCollections = [];\n this._daySlotCollections = [];\n this._isRtl = isRtl;\n },\n addTimeSlotCollection: function (startDate, endDate) {\n return this._addCollection(startDate, endDate, this._timeSlotCollections);\n },\n addDaySlotCollection: function (startDate, endDate) {\n return this._addCollection(startDate, endDate, this._daySlotCollections);\n },\n _addCollection: function (startDate, endDate, collections) {\n var collection = new SlotCollection(startDate, endDate, this._index, collections.length);\n collections.push(collection);\n return collection;\n },\n timeSlotCollectionCount: function () {\n return this._timeSlotCollections.length;\n },\n daySlotCollectionCount: function () {\n return this._daySlotCollections.length;\n },\n daySlotByPosition: function (x, y, byDate) {\n return this._slotByPosition(x, y, this._daySlotCollections, byDate);\n },\n timeSlotByPosition: function (x, y, byDate) {\n return this._slotByPosition(x, y, this._timeSlotCollections, byDate);\n },\n _slotByPosition: function (x, y, collections, byDate) {\n for (var collectionIndex = 0; collectionIndex < collections.length; collectionIndex++) {\n var collection = collections[collectionIndex];\n for (var slotIndex = 0; slotIndex < collection.count(); slotIndex++) {\n var slot = collection.at(slotIndex);\n var width = slot.offsetWidth;\n var height = slot.offsetHeight;\n var nextSlot;\n var horizontalEnd = slot.offsetLeft + width;\n var verticalEnd = slot.offsetTop + height;\n if (!byDate) {\n nextSlot = collection.at(slotIndex + 1);\n }\n if (nextSlot) {\n if (nextSlot.offsetLeft != slot.offsetLeft) {\n if (this._isRtl) {\n horizontalEnd = slot.offsetLeft + (slot.offsetLeft - nextSlot.offsetLeft);\n } else {\n horizontalEnd = nextSlot.offsetLeft;\n }\n } else {\n verticalEnd = nextSlot.offsetTop;\n }\n }\n if (x >= slot.offsetLeft && x < horizontalEnd && y >= slot.offsetTop && y < verticalEnd) {\n return slot;\n }\n }\n }\n },\n refresh: function () {\n var collectionIndex;\n for (collectionIndex = 0; collectionIndex < this._daySlotCollections.length; collectionIndex++) {\n this._daySlotCollections[collectionIndex].refresh();\n }\n for (collectionIndex = 0; collectionIndex < this._timeSlotCollections.length; collectionIndex++) {\n this._timeSlotCollections[collectionIndex].refresh();\n }\n },\n timeSlotRanges: function (startTime, endTime) {\n var collections = this._timeSlotCollections;\n var start = this._startSlot(startTime, collections);\n if (!start.inRange && startTime >= start.slot.end) {\n start = null;\n }\n var end = start;\n if (startTime < endTime) {\n end = this._endSlot(endTime, collections);\n }\n if (end && !end.inRange && endTime <= end.slot.start) {\n end = null;\n }\n if (start === null && end === null) {\n return [];\n }\n if (start === null) {\n if (end.slot.end <= startTime) {\n return [];\n }\n start = {\n inRange: true,\n slot: collections[end.slot.collectionIndex].first()\n };\n }\n if (end === null) {\n if (start.slot.start >= endTime) {\n return [];\n }\n end = {\n inRange: true,\n slot: collections[start.slot.collectionIndex].last()\n };\n }\n return this._continuousRange(TimeSlotRange, collections, start, end);\n },\n daySlotRanges: function (startTime, endTime, isAllDay) {\n var collections = this._daySlotCollections;\n var start = this._startSlot(startTime, collections, isAllDay);\n if (!start.inRange && startTime >= start.slot.end) {\n start = null;\n }\n var end = start;\n if (startTime < endTime) {\n end = this._endSlot(endTime, collections, isAllDay);\n }\n if (end && !end.inRange && endTime <= end.slot.start) {\n end = null;\n }\n if (start === null && end === null) {\n return [];\n }\n if (start === null) {\n if (end.slot.end <= startTime) {\n return [];\n }\n do {\n startTime += kendo.date.MS_PER_DAY;\n start = this._startSlot(startTime, collections, isAllDay);\n } while (!start.inRange && startTime >= start.slot.end);\n }\n if (end === null) {\n if (start.slot.start >= endTime) {\n return [];\n }\n do {\n endTime -= kendo.date.MS_PER_DAY;\n end = this._endSlot(endTime, collections, isAllDay);\n } while (!end.inRange && endTime <= end.slot.start);\n }\n return this._continuousRange(DaySlotRange, collections, start, end);\n },\n _continuousRange: function (range, collections, start, end) {\n var startSlot = start.slot;\n var endSlot = end.slot;\n var startIndex = startSlot.collectionIndex;\n var endIndex = endSlot.collectionIndex;\n var ranges = [];\n for (var collectionIndex = startIndex; collectionIndex <= endIndex; collectionIndex++) {\n var collection = collections[collectionIndex];\n var first = collection.first();\n var last = collection.last();\n var head = false;\n var tail = false;\n if (collectionIndex == startIndex) {\n tail = !start.inRange;\n }\n if (collectionIndex == endIndex) {\n head = !end.inRange;\n }\n if (first.start < startSlot.start) {\n first = startSlot;\n }\n if (last.start > endSlot.start) {\n last = endSlot;\n }\n if (startIndex < endIndex) {\n if (collectionIndex == startIndex) {\n head = true;\n } else if (collectionIndex == endIndex) {\n tail = true;\n } else {\n head = tail = true;\n }\n }\n ranges.push(new range({\n start: first,\n end: last,\n collection: collection,\n head: head,\n tail: tail\n }));\n }\n return ranges;\n },\n slotRanges: function (event, isDay) {\n var startTime = event._startTime || kendo.date.toUtcTime(event.start);\n var endTime = event._endTime || kendo.date.toUtcTime(event.end);\n if (isDay === undefined) {\n isDay = event.isMultiDay();\n }\n if (isDay) {\n return this.daySlotRanges(startTime, endTime, event.isAllDay);\n }\n return this.timeSlotRanges(startTime, endTime);\n },\n ranges: function (startTime, endTime, isDay, isAllDay) {\n if (typeof startTime != 'number') {\n startTime = kendo.date.toUtcTime(startTime);\n }\n if (typeof endTime != 'number') {\n endTime = kendo.date.toUtcTime(endTime);\n }\n if (isDay) {\n return this.daySlotRanges(startTime, endTime, isAllDay);\n }\n return this.timeSlotRanges(startTime, endTime);\n },\n _startCollection: function (date, collections) {\n for (var collectionIndex = 0; collectionIndex < collections.length; collectionIndex++) {\n var collection = collections[collectionIndex];\n if (collection.startInRange(date)) {\n return collection;\n }\n }\n return null;\n },\n _endCollection: function (date, collections, isAllDay) {\n for (var collectionIndex = 0; collectionIndex < collections.length; collectionIndex++) {\n var collection = collections[collectionIndex];\n if (collection.endInRange(date, isAllDay)) {\n return collection;\n }\n }\n return null;\n },\n _getCollections: function (isDay) {\n return isDay ? this._daySlotCollections : this._timeSlotCollections;\n },\n continuousSlot: function (slot, reverse) {\n var pad = reverse ? -1 : 1;\n var collections = this._getCollections(slot.isDaySlot);\n var collection = collections[slot.collectionIndex + pad];\n return collection ? collection[reverse ? 'last' : 'first']() : undefined;\n },\n firstSlot: function () {\n var collections = this._getCollections(this.daySlotCollectionCount());\n return collections[0].first();\n },\n lastSlot: function () {\n var collections = this._getCollections(this.daySlotCollectionCount());\n return collections[collections.length - 1].last();\n },\n upSlot: function (slot, keepCollection, groupByDateVertically) {\n var that = this;\n var moveToDaySlot = function (isDaySlot, collectionIndex, index) {\n var isFirstCell = index === 0;\n if (!keepCollection && !isDaySlot && isFirstCell && that.daySlotCollectionCount()) {\n return that._daySlotCollections[0].at(collectionIndex);\n }\n };\n if (!this.timeSlotCollectionCount()) {\n keepCollection = true;\n }\n return this._verticalSlot(slot, -1, moveToDaySlot, groupByDateVertically);\n },\n downSlot: function (slot, keepCollection, groupByDateVertically) {\n var that = this;\n var moveToTimeSlot = function (isDaySlot, collectionIndex, index) {\n if (!keepCollection && isDaySlot && that.timeSlotCollectionCount()) {\n return that._timeSlotCollections[index].at(0);\n }\n };\n if (!this.timeSlotCollectionCount()) {\n keepCollection = true;\n }\n return this._verticalSlot(slot, 1, moveToTimeSlot, groupByDateVertically);\n },\n leftSlot: function (slot, groupByDateVertically) {\n return this._horizontalSlot(slot, -1, groupByDateVertically);\n },\n rightSlot: function (slot, groupByDateVertically) {\n return this._horizontalSlot(slot, 1, groupByDateVertically);\n },\n _horizontalSlot: function (slot, step, groupByDateVertically) {\n var index = slot.index;\n var isDaySlot = slot.isDaySlot;\n var collectionIndex = slot.collectionIndex;\n var collections = this._getCollections(isDaySlot);\n isDaySlot = groupByDateVertically ? false : isDaySlot;\n if (isDaySlot) {\n index += step;\n } else {\n collectionIndex += step;\n }\n var collection = collections[collectionIndex];\n return collection ? collection.at(index) : undefined;\n },\n _verticalSlot: function (slot, step, swapCollection, groupByDateVertically) {\n var index = slot.index;\n var isDaySlot = slot.isDaySlot;\n var collectionIndex = slot.collectionIndex;\n var collections = this._getCollections(isDaySlot);\n slot = swapCollection(isDaySlot, collectionIndex, index);\n if (slot) {\n return slot;\n }\n isDaySlot = groupByDateVertically ? false : isDaySlot;\n if (isDaySlot) {\n collectionIndex += step;\n } else {\n index += step;\n }\n var collection = collections[collectionIndex];\n return collection ? collection.at(index) : undefined;\n },\n _collection: function (index, multiday) {\n var collections = multiday ? this._daySlotCollections : this._timeSlotCollections;\n return collections[index];\n },\n _startSlot: function (time, collections, isAllDay) {\n var collection = this._startCollection(time, collections);\n var inRange = true;\n if (!collection) {\n collection = collections[0];\n inRange = false;\n }\n var slot = collection.slotByStartDate(time, isAllDay);\n if (!slot) {\n slot = collection.first();\n inRange = false;\n }\n return {\n slot: slot,\n inRange: inRange\n };\n },\n _endSlot: function (time, collections, isAllDay) {\n var collection = this._endCollection(time, collections, isAllDay);\n var inRange = true;\n if (!collection) {\n collection = collections[collections.length - 1];\n inRange = false;\n }\n var slot = collection.slotByEndDate(time, isAllDay);\n if (!slot) {\n slot = collection.last();\n inRange = false;\n }\n return {\n slot: slot,\n inRange: inRange\n };\n },\n getSlotCollection: function (index, isDay) {\n return this[isDay ? 'getDaySlotCollection' : 'getTimeSlotCollection'](index);\n },\n getTimeSlotCollection: function (index) {\n return this._timeSlotCollections[index];\n },\n getDaySlotCollection: function (index) {\n return this._daySlotCollections[index];\n }\n });\n var SlotRange = kendo.Class.extend({\n init: function (options) {\n $.extend(this, options);\n },\n innerHeight: function () {\n var collection = this.collection;\n var startIndex = this.start.index;\n var endIndex = this.end.index;\n var result = 0;\n for (var slotIndex = startIndex; slotIndex <= endIndex; slotIndex++) {\n result += collection.at(slotIndex).offsetHeight;\n }\n return result;\n },\n events: function () {\n return this.collection.events();\n },\n addEvent: function (event) {\n this.events().push(event);\n },\n startSlot: function () {\n if (this.start.offsetLeft > this.end.offsetLeft) {\n return this.end;\n }\n return this.start;\n },\n endSlot: function () {\n if (this.start.offsetLeft > this.end.offsetLeft) {\n return this.start;\n }\n return this.end;\n }\n });\n var TimeSlotRange = SlotRange.extend({\n innerHeight: function () {\n var collection = this.collection;\n var startIndex = this.start.index;\n var endIndex = this.end.index;\n var result = 0;\n for (var slotIndex = startIndex; slotIndex <= endIndex; slotIndex++) {\n result += collection.at(slotIndex).offsetHeight;\n }\n return result;\n },\n outerRect: function (start, end, snap) {\n return this._rect('offset', start, end, snap);\n },\n _rect: function (property, start, end, snap) {\n var top;\n var bottom;\n var left;\n var right;\n var startSlot = this.start;\n var endSlot = this.end;\n var isRtl = kendo.support.isRtl(startSlot.element);\n if (typeof start != 'number') {\n start = kendo.date.toUtcTime(start);\n }\n if (typeof end != 'number') {\n end = kendo.date.toUtcTime(end);\n }\n if (snap) {\n top = startSlot.offsetTop;\n bottom = endSlot.offsetTop + endSlot[property + 'Height'];\n if (isRtl) {\n left = endSlot.offsetLeft;\n right = startSlot.offsetLeft + startSlot[property + 'Width'];\n } else {\n left = startSlot.offsetLeft;\n right = endSlot.offsetLeft + endSlot[property + 'Width'];\n }\n } else {\n var startOffset = start - startSlot.start;\n if (startOffset < 0) {\n startOffset = 0;\n }\n var startSlotDuration = startSlot.end - startSlot.start;\n top = startSlot.offsetTop + startSlot[property + 'Height'] * startOffset / startSlotDuration;\n var endOffset = endSlot.end - end;\n if (endOffset < 0) {\n endOffset = 0;\n }\n var endSlotDuration = endSlot.end - endSlot.start;\n bottom = endSlot.offsetTop + endSlot[property + 'Height'] - endSlot[property + 'Height'] * endOffset / endSlotDuration;\n if (isRtl) {\n left = Math.round(endSlot.offsetLeft + endSlot[property + 'Width'] * endOffset / endSlotDuration);\n right = Math.round(startSlot.offsetLeft + startSlot[property + 'Width'] - startSlot[property + 'Width'] * startOffset / startSlotDuration);\n } else {\n left = Math.round(startSlot.offsetLeft + startSlot[property + 'Width'] * startOffset / startSlotDuration);\n right = Math.round(endSlot.offsetLeft + endSlot[property + 'Width'] - endSlot[property + 'Width'] * endOffset / endSlotDuration);\n }\n }\n return {\n top: top,\n bottom: bottom,\n left: left === 0 ? left : left + 1,\n right: right\n };\n },\n innerRect: function (start, end, snap) {\n return this._rect('client', start, end, snap);\n }\n });\n var DaySlotRange = SlotRange.extend({\n innerWidth: function () {\n var collection = this.collection;\n var startIndex = this.start.index;\n var endIndex = this.end.index;\n var result = 0;\n var width = startIndex !== endIndex ? 'offsetWidth' : 'clientWidth';\n for (var slotIndex = startIndex; slotIndex <= endIndex; slotIndex++) {\n result += collection.at(slotIndex)[width];\n }\n return result;\n }\n });\n var SlotCollection = kendo.Class.extend({\n init: function (startDate, endDate, groupIndex, collectionIndex) {\n this._slots = [];\n this._events = [];\n this._start = kendo.date.toUtcTime(startDate);\n this._end = kendo.date.toUtcTime(endDate);\n this._groupIndex = groupIndex;\n this._collectionIndex = collectionIndex;\n },\n refresh: function () {\n for (var slotIndex = 0; slotIndex < this._slots.length; slotIndex++) {\n this._slots[slotIndex].refresh();\n }\n },\n startInRange: function (date) {\n return this._start <= date && date < this._end;\n },\n endInRange: function (date, isAllDay) {\n var end = isAllDay ? date < this._end : date <= this._end;\n return this._start <= date && end;\n },\n slotByStartDate: function (date) {\n var time = date;\n if (typeof time != 'number') {\n time = kendo.date.toUtcTime(date);\n }\n for (var slotIndex = 0; slotIndex < this._slots.length; slotIndex++) {\n var slot = this._slots[slotIndex];\n if (slot.startInRange(time)) {\n return slot;\n }\n }\n return null;\n },\n slotByEndDate: function (date, allday) {\n var time = date;\n if (typeof time != 'number') {\n time = kendo.date.toUtcTime(date);\n }\n if (allday) {\n return this.slotByStartDate(date, false);\n }\n for (var slotIndex = 0; slotIndex < this._slots.length; slotIndex++) {\n var slot = this._slots[slotIndex];\n if (slot.endInRange(time)) {\n return slot;\n }\n }\n return null;\n },\n count: function () {\n return this._slots.length;\n },\n events: function () {\n return this._events;\n },\n addTimeSlot: function (element, start, end, isHorizontal) {\n var slot = new TimeSlot(element, start, end, this._groupIndex, this._collectionIndex, this._slots.length, isHorizontal);\n this._slots.push(slot);\n },\n addDaySlot: function (element, start, end, eventCount) {\n var slot = new DaySlot(element, start, end, this._groupIndex, this._collectionIndex, this._slots.length, eventCount);\n this._slots.push(slot);\n },\n first: function () {\n return this._slots[0];\n },\n last: function () {\n return this._slots[this._slots.length - 1];\n },\n at: function (index) {\n return this._slots[index];\n }\n });\n var Slot = kendo.Class.extend({\n init: function (element, start, end, groupIndex, collectionIndex, index) {\n this.element = element;\n this.clientWidth = element.clientWidth;\n this.clientHeight = element.clientHeight;\n this.offsetWidth = element.offsetWidth;\n this.offsetHeight = element.offsetHeight;\n this.offsetTop = element.offsetTop;\n this.offsetLeft = element.offsetLeft;\n this.start = start;\n this.end = end;\n this.element = element;\n this.groupIndex = groupIndex;\n this.collectionIndex = collectionIndex;\n this.index = index;\n this.isDaySlot = false;\n },\n refresh: function () {\n var element = this.element;\n this.clientWidth = element.clientWidth;\n this.clientHeight = element.clientHeight;\n this.offsetWidth = element.offsetWidth;\n this.offsetHeight = element.offsetHeight;\n this.offsetTop = element.offsetTop;\n this.offsetLeft = element.offsetLeft;\n },\n startDate: function () {\n return kendo.timezone.toLocalDate(this.start);\n },\n endDate: function () {\n return kendo.timezone.toLocalDate(this.end);\n },\n startInRange: function (date) {\n return this.start <= date && date < this.end;\n },\n endInRange: function (date) {\n return this.start < date && date <= this.end;\n },\n startOffset: function () {\n return this.start;\n },\n endOffset: function () {\n return this.end;\n }\n });\n var TimeSlot = Slot.extend({\n init: function (element, start, end, groupIndex, collectionIndex, index, isHorizontal) {\n Slot.fn.init.apply(this, arguments);\n this.isHorizontal = isHorizontal ? true : false;\n },\n offsetX: function (rtl, offset) {\n if (rtl) {\n return this.offsetLeft + offset;\n } else {\n return this.offsetLeft + offset;\n }\n },\n startInRange: function (date) {\n return this.start <= date && date < this.end;\n },\n endInRange: function (date) {\n return this.start < date && date <= this.end;\n },\n startOffset: function (x, y, snap) {\n if (snap) {\n return this.start;\n }\n var offset = $(this.element).offset();\n var duration = this.end - this.start;\n var difference;\n var time;\n if (this.isHorizontal) {\n var isRtl = kendo.support.isRtl(this.element);\n difference = x - offset.left;\n time = Math.floor(duration * (difference / this.offsetWidth));\n if (isRtl) {\n return this.start + duration - time;\n }\n } else {\n difference = y - offset.top;\n time = Math.floor(duration * (difference / this.offsetHeight));\n }\n return this.start + time;\n },\n endOffset: function (x, y, snap) {\n if (snap) {\n return this.end;\n }\n var offset = $(this.element).offset();\n var duration = this.end - this.start;\n var difference;\n var time;\n if (this.isHorizontal) {\n var isRtl = kendo.support.isRtl(this.element);\n difference = x - offset.left;\n time = Math.floor(duration * (difference / this.offsetWidth));\n if (isRtl) {\n return this.start + duration - time;\n }\n } else {\n difference = y - offset.top;\n time = Math.floor(duration * (difference / this.offsetHeight));\n }\n return this.start + time;\n }\n });\n var DaySlot = Slot.extend({\n init: function (element, start, end, groupIndex, collectionIndex, index, eventCount) {\n Slot.fn.init.apply(this, arguments);\n this.eventCount = eventCount;\n this.isDaySlot = true;\n if (this.element.children.length) {\n var firstChild = this.element.children[0];\n this.firstChildHeight = firstChild.offsetHeight;\n this.firstChildTop = firstChild.offsetTop;\n } else {\n this.firstChildHeight = 3;\n this.firstChildTop = 0;\n }\n },\n startDate: function () {\n var date = new Date(this.start);\n return kendo.timezone.apply(date, 'Etc/UTC');\n },\n endDate: function () {\n var date = new Date(this.end);\n return kendo.timezone.apply(date, 'Etc/UTC');\n },\n startInRange: function (date) {\n return this.start <= date && date < this.end;\n },\n endInRange: function (date) {\n return this.start < date && date <= this.end;\n }\n });\n var scrollbarWidth;\n function scrollbar() {\n scrollbarWidth = scrollbarWidth ? scrollbarWidth : kendo.support.scrollbar();\n return scrollbarWidth;\n }\n kendo.ui.SchedulerView = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this._normalizeOptions();\n this._scrollbar = scrollbar();\n this._isRtl = kendo.support.isRtl(element);\n this._resizeHint = $();\n this._moveHint = $();\n this._cellId = kendo.guid();\n this._resourcesForGroups();\n this._selectedSlots = [];\n },\n visibleEndDate: function () {\n return this.endDate();\n },\n _normalizeOptions: function () {\n var options = this.options;\n if (options.startTime) {\n options.startTime.setMilliseconds(0);\n }\n if (options.endTime) {\n options.endTime.setMilliseconds(0);\n }\n if (options.workDayStart) {\n options.workDayStart.setMilliseconds(0);\n }\n if (options.workDayEnd) {\n options.workDayEnd.setMilliseconds(0);\n }\n },\n _isMobile: function () {\n var options = this.options;\n return options.mobile === true && kendo.support.mobileOS || options.mobile === 'phone' || options.mobile === 'tablet';\n },\n _addResourceView: function () {\n var resourceView = new ResourceView(this.groups.length, this._isRtl);\n this.groups.push(resourceView);\n return resourceView;\n },\n dateForTitle: function () {\n return kendo.format(this.options.selectedDateFormat, this.startDate(), this.endDate());\n },\n shortDateForTitle: function () {\n return kendo.format(this.options.selectedShortDateFormat, this.startDate(), this.endDate());\n },\n mobileDateForTitle: function () {\n return kendo.format(this.options.selectedMobileDateFormat || this.options.selectedShortDateFormat, this.startDate(), this.endDate());\n },\n _changeGroup: function (selection, previous) {\n var method = previous ? 'prevGroupSlot' : 'nextGroupSlot';\n var slot = this[method](selection.start, selection.groupIndex, selection.isAllDay);\n if (slot) {\n selection.groupIndex += previous ? -1 : 1;\n }\n if (this._isGroupedByDate() && !slot) {\n selection.groupIndex = previous ? this.groups.length - 1 : 0;\n }\n return slot;\n },\n _changeDate: function (selection, slot, previous) {\n var group = this.groups[selection.groupIndex];\n var collections, index;\n if (previous) {\n collections = group._getCollections(false);\n index = group.daySlotCollectionCount() ? slot.index - 1 : slot.collectionIndex - 1;\n if (index >= 0) {\n return collections[index]._slots[collections[index]._slots.length - 1];\n }\n } else {\n collections = group._getCollections(group.daySlotCollectionCount());\n index = group.daySlotCollectionCount() ? 0 : slot.collectionIndex + 1;\n var slotIndex = group.daySlotCollectionCount() ? slot.collectionIndex + 1 : 0;\n if (collections[index] && collections[index]._slots[slotIndex]) {\n return collections[index]._slots[slotIndex];\n }\n }\n },\n _changeGroupContinuously: function () {\n return null;\n },\n _changeViewPeriod: function () {\n return false;\n },\n _isInRange: function (newStart, newEnd) {\n if (!newStart || !newEnd || !this.options.min || !this.options.max) {\n return false;\n }\n return getDate(newStart) <= getDate(this.options.min) || getDate(newEnd) >= getDate(this.options.max);\n },\n _horizontalSlots: function (selection, ranges, multiple, reverse) {\n var method = reverse ? 'leftSlot' : 'rightSlot';\n var horizontalRange = {\n startSlot: ranges[0].start,\n endSlot: ranges[ranges.length - 1].end\n };\n var group = this.groups[selection.groupIndex];\n var isVertical = this._isVerticallyGrouped();\n if (!multiple) {\n var slot = this._normalizeHorizontalSelection(selection, ranges, reverse);\n if (slot) {\n horizontalRange.startSlot = horizontalRange.endSlot = slot;\n }\n }\n if (this._isGroupedByDate() && !multiple) {\n var tempSlot = this._changeGroup(selection, reverse);\n if (!tempSlot) {\n horizontalRange = this._getNextHorizontalRange(group, method, horizontalRange);\n } else {\n horizontalRange.startSlot = horizontalRange.endSlot = tempSlot;\n }\n } else {\n horizontalRange.startSlot = group[method](horizontalRange.startSlot);\n horizontalRange.endSlot = group[method](horizontalRange.endSlot);\n if (!multiple && !isVertical && (!horizontalRange.startSlot || !horizontalRange.endSlot)) {\n horizontalRange.startSlot = horizontalRange.endSlot = this._changeGroup(selection, reverse);\n }\n }\n var continuousSlot;\n if ((!horizontalRange.startSlot || !horizontalRange.endSlot) && !this._isGroupedByDate()) {\n continuousSlot = this._continuousSlot(selection, ranges, reverse);\n continuousSlot = this._changeGroupContinuously(selection, continuousSlot, multiple, reverse);\n if (continuousSlot) {\n horizontalRange.startSlot = horizontalRange.endSlot = continuousSlot;\n }\n }\n return horizontalRange;\n },\n _getNextHorizontalRange: function (group, method, horizontalRange) {\n if (!this._isVerticallyGrouped()) {\n horizontalRange.startSlot = group[method](horizontalRange.startSlot);\n horizontalRange.endSlot = group[method](horizontalRange.endSlot);\n }\n return horizontalRange;\n },\n _verticalSlots: function (selection, ranges, multiple, reverse) {\n var group = this.groups[selection.groupIndex];\n var slot;\n var verticalRange = {\n startSlot: ranges[0].start,\n endSlot: ranges[ranges.length - 1].end\n };\n if (!multiple) {\n slot = this._normalizeVerticalSelection(selection, ranges, reverse);\n if (slot) {\n verticalRange.startSlot = verticalRange.endSlot = slot;\n }\n }\n var method = reverse ? 'upSlot' : 'downSlot';\n verticalRange = this._getNextVerticalRange(group, method, verticalRange, multiple);\n if (!multiple && this._isVerticallyGrouped() && (!verticalRange.startSlot || !verticalRange.endSlot)) {\n if (this._isGroupedByDate()) {\n verticalRange.startSlot = verticalRange.endSlot = this._changeDate(selection, slot, reverse);\n } else {\n verticalRange.startSlot = verticalRange.endSlot = this._changeGroup(selection, reverse);\n }\n }\n return verticalRange;\n },\n _getNextVerticalRange: function (group, method, verticalRange, multiple) {\n verticalRange.startSlot = group[method](verticalRange.startSlot, multiple);\n verticalRange.endSlot = group[method](verticalRange.endSlot, multiple);\n return verticalRange;\n },\n _normalizeHorizontalSelection: function () {\n return null;\n },\n _normalizeVerticalSelection: function (selection, ranges, reverse) {\n var slot;\n if (reverse) {\n slot = ranges[0].start;\n } else {\n slot = ranges[ranges.length - 1].end;\n }\n return slot;\n },\n _continuousSlot: function () {\n return null;\n },\n _footer: function () {\n var that = this;\n var options = that.options;\n if (that._isMobile()) {\n var html = '<div class=\"k-header k-scheduler-footer\">';\n html += '<span class=\"k-state-default k-scheduler-today\"><a href=\"#\" class=\"k-link\">';\n html += options.messages.today + '</a></span>';\n html += '</div>';\n that.footer = $(html).appendTo(that.element);\n }\n if (that.footer) {\n that.footer.on('click' + NS, '.k-scheduler-today', function (e) {\n e.preventDefault();\n var timezone = that.options.timezone;\n var action = 'today';\n var currentDate = new Date();\n var date;\n if (timezone) {\n var timezoneOffset = kendo.timezone.offset(currentDate, timezone);\n date = kendo.timezone.convert(currentDate, currentDate.getTimezoneOffset(), timezoneOffset);\n } else {\n date = currentDate;\n }\n that.trigger('navigate', {\n view: that.name || options.name,\n action: action,\n date: date\n });\n });\n }\n },\n constrainSelection: function (selection) {\n var group = this.groups[0];\n var slot;\n if (!this.inRange(selection)) {\n slot = group.firstSlot();\n selection.isAllDay = slot.isDaySlot;\n selection.start = slot.startDate();\n selection.end = slot.endDate();\n } else {\n if (!group.daySlotCollectionCount()) {\n selection.isAllDay = false;\n } else if (!group.timeSlotCollectionCount()) {\n selection.isAllDay = true;\n }\n }\n if (!this.groups[selection.groupIndex]) {\n selection.groupIndex = 0;\n }\n },\n move: function (selection, key, shift) {\n var handled = false;\n var group = this.groups[selection.groupIndex];\n var verticalByDate = this._isGroupedByDate() && this._isVerticallyGrouped();\n if (!group.timeSlotCollectionCount()) {\n selection.isAllDay = true;\n }\n var ranges = group.ranges(selection.start, selection.end, selection.isAllDay, false);\n var startSlot, endSlot, reverse, slots;\n if (key === keys.DOWN || key === keys.UP) {\n handled = true;\n reverse = key === keys.UP;\n this._updateDirection(selection, ranges, shift, reverse, true);\n slots = this._verticalSlots(selection, ranges, shift, reverse);\n if (!slots.startSlot && !shift && this._changeViewPeriod(selection, reverse, !verticalByDate)) {\n return handled;\n }\n } else if (key === keys.LEFT || key === keys.RIGHT) {\n handled = true;\n reverse = key === keys.LEFT;\n this._updateDirection(selection, ranges, shift, reverse, false);\n slots = this._horizontalSlots(selection, ranges, shift, reverse);\n if (!slots.startSlot && !shift && this._changeViewPeriod(selection, reverse, verticalByDate)) {\n return handled;\n }\n }\n if (handled) {\n startSlot = slots.startSlot;\n endSlot = slots.endSlot;\n if (shift) {\n var backward = selection.backward;\n if (backward && startSlot) {\n selection.start = startSlot.startDate();\n } else if (!backward && endSlot) {\n selection.end = endSlot.endDate();\n }\n } else if (startSlot && endSlot) {\n selection.isAllDay = startSlot.isDaySlot;\n selection.start = startSlot.startDate();\n selection.end = endSlot.endDate();\n }\n selection.events = [];\n }\n return handled;\n },\n moveToEventInGroup: function (group, slot, selectedEvents, prev) {\n var events = group._continuousEvents || [];\n var found, event;\n var pad = prev ? -1 : 1;\n var length = events.length;\n var idx = prev ? length - 1 : 0;\n if (selectedEvents.length) {\n var lastSelected = selectedEvents[selectedEvents.length - 1];\n for (var i = 0; i < events.length; i++) {\n if (events[i].uid === lastSelected) {\n idx = i + pad;\n }\n }\n }\n while (idx < length && idx > -1) {\n event = events[idx];\n if (!prev && event.start.startDate() >= slot.startDate() || prev && event.start.startDate() <= slot.startDate()) {\n if (event && $.inArray(event.uid, selectedEvents) === -1) {\n found = !!event;\n break;\n }\n }\n idx += pad;\n }\n return event;\n },\n moveToEvent: function (selection, prev) {\n var groupIndex = selection.groupIndex;\n var group = this.groups[groupIndex];\n var slot = group.ranges(selection.start, selection.end, selection.isAllDay, false)[0].start;\n var length = this.groups.length;\n var pad = prev ? -1 : 1;\n var events = selection.events;\n var event;\n if (this._isGroupedByDate()) {\n var allEvents = this._getAllEvents();\n var uniqueAllEvents = this._getUniqueEvents(allEvents);\n var sortedEvents = this._getSortedEvents(uniqueAllEvents);\n if (events.length === 0) {\n var eventIndex = this._getNextEventIndexBySlot(slot, sortedEvents, groupIndex);\n if (prev) {\n eventIndex--;\n }\n event = sortedEvents[eventIndex];\n } else {\n var idx = this._getStartIdx(events, sortedEvents);\n while (idx < sortedEvents.length && idx > -1) {\n if (events.length > 0) {\n slot = this._getSelectedSlot(slot, sortedEvents, event, idx, pad, prev);\n }\n if (!slot) {\n break;\n }\n if (!prev && sortedEvents[idx].start.startDate() >= slot.startDate() || prev && sortedEvents[idx].start.startDate() <= slot.startDate()) {\n if (events[0] != sortedEvents[idx].uid) {\n event = sortedEvents[idx];\n break;\n }\n }\n idx += pad;\n }\n }\n } else {\n while (groupIndex < length && groupIndex > -1) {\n event = this.moveToEventInGroup(group, slot, events, prev);\n groupIndex += pad;\n group = this.groups[groupIndex];\n if (!group || event) {\n break;\n }\n events = [];\n if (prev) {\n slot = group.lastSlot();\n } else {\n slot = group.firstSlot(true);\n }\n }\n }\n if (event) {\n selection.events = [event.uid];\n selection.start = event.start.startDate();\n selection.end = event.end.endDate();\n selection.isAllDay = event.start.isDaySlot;\n selection.groupIndex = event.start.groupIndex;\n }\n return !!event;\n },\n current: function (candidate) {\n if (candidate !== undefined) {\n this._current = candidate;\n if (this.content.has(candidate)) {\n this._scrollTo(candidate, this.content[0]);\n }\n } else {\n return this._current;\n }\n },\n select: function (selection) {\n this.clearSelection();\n if (!this._selectEvents(selection)) {\n this._selectSlots(selection);\n }\n },\n _getNextEventIndexBySlot: function (slot, sortedEvents, groupIndex) {\n var tempIndex = 0;\n var slotStartDate = kendo.date.getDate(slot.startDate());\n for (var i = 0; i < sortedEvents.length; i++) {\n var eventStartDate = kendo.date.getDate(sortedEvents[i].start.startDate());\n if (slotStartDate > eventStartDate) {\n tempIndex++;\n continue;\n }\n if (slotStartDate.getTime() === eventStartDate.getTime() && groupIndex > sortedEvents[i].start.groupIndex) {\n tempIndex++;\n continue;\n }\n if (slotStartDate.getTime() === eventStartDate.getTime() && groupIndex >= sortedEvents[i].start.groupIndex && slot.startDate() > sortedEvents[i].start.startDate()) {\n tempIndex++;\n continue;\n }\n break;\n }\n return tempIndex;\n },\n _getSelectedSlot: function (slot, sortedEvents, event, idx, pad, prev) {\n if (sortedEvents[idx + pad] && sortedEvents[idx].start.groupIndex !== sortedEvents[idx + pad].start.groupIndex) {\n var groupIndex = sortedEvents[idx + pad].start.groupIndex;\n var group = this.groups[groupIndex];\n if (!group || event) {\n slot = null;\n }\n if (prev) {\n slot = group.lastSlot();\n } else {\n slot = group.firstSlot(true);\n }\n }\n return slot;\n },\n _getStartIdx: function (events, sortedEvents) {\n var selectedEventIndex = 0;\n $.each(sortedEvents, function () {\n if (this.uid === events[0]) {\n return false;\n }\n selectedEventIndex++;\n });\n return selectedEventIndex;\n },\n _getAllEvents: function () {\n var allEvents = [];\n var groups = this.groups;\n for (var idx = 0; idx < groups.length; idx++) {\n if (groups[idx]._continuousEvents) {\n allEvents = allEvents.concat(groups[idx]._continuousEvents);\n }\n }\n return allEvents;\n },\n _getUniqueEvents: function (allEvents) {\n var uniqueAllEvents = [];\n for (var i = 0; i < allEvents.length; i++) {\n var exists = false;\n for (var j = 0; j < uniqueAllEvents.length; j++) {\n if (allEvents[i].uid === uniqueAllEvents[j].uid) {\n exists = true;\n break;\n }\n }\n if (!exists) {\n uniqueAllEvents.push(allEvents[i]);\n }\n }\n return uniqueAllEvents;\n },\n _getSortedEvents: function (uniqueAllEvents) {\n return uniqueAllEvents.sort(function (first, second) {\n var firstStartDate = first.start.startDate();\n var secondStartDate = second.start.startDate();\n var result = kendo.date.getDate(firstStartDate) - kendo.date.getDate(secondStartDate);\n if (result === 0) {\n result = first.start.groupIndex - second.start.groupIndex;\n }\n if (result === 0) {\n result = firstStartDate.getTime() - secondStartDate.getTime();\n }\n if (result === 0) {\n if (first.start.isDaySlot && !second.start.isDaySlot) {\n result = -1;\n }\n if (!first.start.isDaySlot && second.start.isDaySlot) {\n result = 1;\n }\n }\n if (result === 0) {\n result = $(first.element).index() - $(second.element).index();\n }\n return result;\n });\n },\n _selectSlots: function (selection) {\n var isAllDay = selection.isAllDay;\n var group = this.groups[selection.groupIndex];\n if (!group.timeSlotCollectionCount()) {\n isAllDay = true;\n }\n this._selectedSlots = [];\n var ranges = group.ranges(selection.start, selection.end, isAllDay, false);\n var element;\n var slot;\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n var range = ranges[rangeIndex];\n var collection = range.collection;\n for (var slotIndex = range.start.index; slotIndex <= range.end.index; slotIndex++) {\n slot = collection.at(slotIndex);\n element = slot.element;\n element.setAttribute('aria-selected', true);\n addSelectedState(element);\n this._selectedSlots.push({\n start: slot.startDate(),\n end: slot.endDate(),\n element: element\n });\n }\n }\n if (selection.backward) {\n element = ranges[0].start.element;\n }\n this.current(element);\n },\n _selectEvents: function (selection) {\n var found = false;\n var events = selection.events;\n var groupEvents = this._getAllEvents();\n var idx, groupEvent, length = groupEvents.length;\n if (!events[0] || !groupEvents[0]) {\n return found;\n }\n var result = $();\n selection.events = [];\n for (idx = 0; idx < length; idx++) {\n if ($.inArray(groupEvents[idx].uid, events) > -1) {\n groupEvent = groupEvents[idx];\n result = result.add(groupEvent.element);\n if (selection.events.indexOf(groupEvent.uid) === -1) {\n selection.events.push(groupEvent.uid);\n }\n }\n }\n if (result[0]) {\n result.addClass('k-state-selected').attr('aria-selected', true);\n this.current(result.last()[0]);\n this._selectedSlots = [];\n found = true;\n }\n return found;\n },\n inRange: function (options) {\n var startDate = this.startDate();\n var endDate = kendo.date.addDays(this.endDate(), 1);\n var start = options.start;\n var end = options.end;\n return startDate <= start && start < endDate && startDate < end && end <= endDate;\n },\n _resourceValue: function (resource, item) {\n if (resource.valuePrimitive) {\n item = kendo.getter(resource.dataValueField)(item);\n }\n return item;\n },\n _resourceBySlot: function (slot) {\n var resources = this.groupedResources;\n var result = {};\n if (resources.length) {\n var resourceIndex = slot.groupIndex;\n for (var idx = resources.length - 1; idx >= 0; idx--) {\n var resource = resources[idx];\n var value = this._resourceValue(resource, resource.dataSource.view()[resourceIndex % resource.dataSource.total()]);\n if (resource.multiple) {\n value = [value];\n }\n var setter = kendo.setter(resource.field);\n setter(result, value);\n resourceIndex = Math.floor(resourceIndex / resource.dataSource.total());\n }\n }\n return result;\n },\n _createResizeHint: function (left, top, width, height) {\n return $(HINT).css({\n left: left,\n top: top,\n width: width,\n height: height\n });\n },\n _removeResizeHint: function () {\n this._resizeHint.remove();\n this._resizeHint = $();\n },\n _removeMoveHint: function (uid) {\n if (uid) {\n this._moveHint.filter('[data-uid=\\'' + uid + '\\']').remove();\n this._moveHint = this._moveHint.filter('[data-uid!=\\'' + uid + '\\']');\n } else {\n this._moveHint.remove();\n this._moveHint = $();\n }\n },\n _scrollTo: function (element, container) {\n var elementOffset = element.offsetTop, elementOffsetDir = element.offsetHeight, containerScroll = container.scrollTop, containerOffsetDir = container.clientHeight, bottomDistance = elementOffset + elementOffsetDir, result = 0;\n if (containerScroll > elementOffset) {\n result = elementOffset;\n } else if (bottomDistance > containerScroll + containerOffsetDir) {\n if (elementOffsetDir <= containerOffsetDir) {\n result = bottomDistance - containerOffsetDir;\n } else {\n result = elementOffset;\n }\n } else {\n result = containerScroll;\n }\n container.scrollTop = result;\n },\n _inverseEventColor: function (element) {\n var eventColor = element.css('color');\n var eventColorIsDark = new Color(eventColor).isDark();\n var eventBackground = element.css('background-color');\n var eventBackgroundIsDark = new Color(eventBackground).isDark();\n if (eventColorIsDark == eventBackgroundIsDark) {\n element.addClass(INVERSE_COLOR_CLASS);\n }\n },\n _eventTmpl: function (template, wrapper) {\n var options = this.options, settings = $.extend({}, kendo.Template, options.templateSettings), paramName = settings.paramName, html = '', type = typeof template, state = {\n storage: {},\n count: 0\n };\n if (type === 'function') {\n state.storage['tmpl' + state.count] = template;\n html += '#=this.tmpl' + state.count + '(' + paramName + ')#';\n state.count++;\n } else if (type === 'string') {\n html += template;\n }\n var tmpl = kendo.template(kendo.format(wrapper, html), settings);\n if (state.count > 0) {\n tmpl = $.proxy(tmpl, state.storage);\n }\n return tmpl;\n },\n eventResources: function (event) {\n var resources = [], options = this.options;\n if (!options.resources) {\n return resources;\n }\n for (var idx = 0; idx < options.resources.length; idx++) {\n var resource = options.resources[idx];\n var field = resource.field;\n var eventResources = kendo.getter(field)(event);\n if (eventResources == null) {\n continue;\n }\n if (!resource.multiple) {\n eventResources = [eventResources];\n }\n var data = resource.dataSource.view();\n for (var resourceIndex = 0; resourceIndex < eventResources.length; resourceIndex++) {\n var eventResource = null;\n var value = eventResources[resourceIndex];\n if (!resource.valuePrimitive) {\n value = kendo.getter(resource.dataValueField)(value);\n }\n for (var dataIndex = 0; dataIndex < data.length; dataIndex++) {\n if (data[dataIndex].get(resource.dataValueField) == value) {\n eventResource = data[dataIndex];\n break;\n }\n }\n if (eventResource !== null) {\n var resourceColor = kendo.getter(resource.dataColorField)(eventResource);\n resources.push({\n field: resource.field,\n title: resource.title,\n name: resource.name,\n text: kendo.getter(resource.dataTextField)(eventResource),\n value: value,\n color: resourceColor\n });\n }\n }\n }\n return resources;\n },\n createLayout: function (layout) {\n var allDayIndex = -1;\n if (!layout.rows) {\n layout.rows = [];\n }\n for (var idx = 0; idx < layout.rows.length; idx++) {\n if (layout.rows[idx].allDay) {\n allDayIndex = idx;\n break;\n }\n }\n var allDaySlot = layout.rows[allDayIndex];\n if (allDayIndex >= 0) {\n layout.rows.splice(allDayIndex, 1);\n }\n var columnLevels = this.columnLevels = levels(layout, 'columns');\n var rowLevels = this.rowLevels = levels(layout, 'rows');\n this.table = $('<table role=\"presentation\"' + cellspacing() + ' class=\"k-scheduler-layout k-scheduler-' + this.name + 'view\"><tbody></tbody></table>');\n var rowCount = rowLevels[rowLevels.length - 1].length;\n this.table.find('tbody:first').append(this._topSection(columnLevels, allDaySlot, rowCount));\n this.table.find('tbody:first').append(this._bottomSection(columnLevels, rowLevels, rowCount));\n this.element.append(this.table);\n if (this._isMobile() && columnLevels.length > 1 && this._groupOrientation() === 'horizontal' && kendo._outerWidth($(window)) < MIN_HORIZONTAL_SCROLL_SIZE) {\n this.table.find('.k-scheduler-content .k-scheduler-table').width(columnLevels[columnLevels.length - 2].length * 100 + '%');\n this.table.find('.k-scheduler-header .k-scheduler-table').width(columnLevels[columnLevels.length - 2].length * 100 + '%');\n }\n this._scroller();\n },\n refreshLayout: function () {\n var that = this, toolbar = that.element.find('>.k-scheduler-toolbar'), height = that.element.innerHeight(), scrollbar = this._scrollbar, headerHeight = 0, paddingDirection = this._isRtl ? 'left' : 'right';\n for (var idx = 0; idx < toolbar.length; idx++) {\n height -= outerHeight(toolbar.eq(idx));\n }\n if (that.datesHeader) {\n headerHeight = outerHeight(that.datesHeader);\n }\n if (that.timesHeader && outerHeight(that.timesHeader) > headerHeight) {\n headerHeight = outerHeight(that.timesHeader);\n }\n if (that.datesHeader && that.timesHeader) {\n var datesHeaderRows = that.datesHeader.find('table:first tr');\n that.timesHeader.find('tr').height(function (index) {\n $(this).height(datesHeaderRows.eq(index).height());\n });\n }\n if (headerHeight) {\n height -= headerHeight;\n }\n if (that.footer) {\n height -= outerHeight(that.footer);\n }\n var isSchedulerHeightSet = function (el) {\n var initialHeight, newHeight;\n if (el[0].style.height) {\n return true;\n } else {\n initialHeight = el.height();\n }\n el.height('auto');\n newHeight = el.height();\n if (initialHeight != newHeight) {\n el.height('');\n return true;\n }\n el.height('');\n return false;\n };\n var contentDiv = that.content[0], scrollbarWidth = !kendo.support.kineticScrollNeeded ? scrollbar : 0;\n if (isSchedulerHeightSet(that.element)) {\n if (height > scrollbar * 2) {\n that.content.height(height);\n } else {\n that.content.height(scrollbar * 2 + 1);\n }\n that.times.height(contentDiv.clientHeight);\n var timesTable = that.times.find('table');\n if (timesTable.length) {\n timesTable.height(that.content.find('table')[0].clientHeight);\n }\n }\n if (contentDiv.offsetWidth - contentDiv.clientWidth > 0) {\n that.table.addClass('k-scrollbar-v');\n that.datesHeader.css('padding-' + paddingDirection, scrollbarWidth - parseInt(that.datesHeader.children().css('border-' + paddingDirection + '-width'), 10));\n } else {\n that.datesHeader.css('padding-' + paddingDirection, '');\n }\n if (contentDiv.offsetHeight - contentDiv.clientHeight > 0 || contentDiv.clientHeight > that.content.children('.k-scheduler-table').height()) {\n that.table.addClass('k-scrollbar-h');\n } else {\n that.table.removeClass('k-scrollbar-h');\n }\n },\n _topSection: function (columnLevels, allDaySlot, rowCount) {\n var columnCount = columnLevels[columnLevels.length - 1].length;\n this.timesHeader = timesHeader(columnLevels.length, allDaySlot, rowCount);\n this.datesHeader = datesHeader(columnLevels, columnCount, allDaySlot);\n var thElm = '<tr ' + (this._isMobile() ? 'class=\\'k-mobile-header\\'' : '') + '>';\n return $(thElm).append(this.timesHeader.add(this.datesHeader).wrap('<td>').parent());\n },\n _bottomSection: function (columnLevels, rowLevels, rowCount) {\n this.times = times(rowLevels, rowCount, this._isMobile());\n this.content = content(columnLevels[columnLevels.length - 1], rowLevels[rowLevels.length - 1]);\n return $('<tr>').append(this.times.add(this.content).wrap('<td>').parent());\n },\n _scroller: function () {\n var that = this;\n this.content.bind('scroll' + NS, function () {\n that.datesHeader.find('>.k-scheduler-header-wrap').scrollLeft(this.scrollLeft);\n that.times.scrollTop(this.scrollTop);\n });\n var touchScroller = kendo.touchScroller(this.content, {\n avoidScrolling: function (e) {\n return $(e.event.target).closest('.k-event.k-event-active').length > 0;\n }\n });\n if (touchScroller && touchScroller.movable) {\n this._touchScroller = touchScroller;\n this.content = touchScroller.scrollElement;\n touchScroller.movable.bind('change', function (e) {\n that.datesHeader.find('>.k-scheduler-header-wrap').scrollLeft(-e.sender.x);\n that.times.scrollTop(-e.sender.y);\n });\n }\n },\n _resourcesForGroups: function () {\n var result = [];\n var groups = this.options.group;\n var resources = this.options.resources;\n groups = groups && groups.resources ? groups.resources : [];\n if (resources && groups.length) {\n for (var idx = 0, length = resources.length; idx < length; idx++) {\n for (var groupIdx = 0, groupLength = groups.length; groupIdx < groupLength; groupIdx++) {\n if (resources[idx].name === groups[groupIdx]) {\n result.push(resources[idx]);\n }\n }\n }\n }\n this.groupedResources = result;\n },\n _createDateLayout: function (dates, inner, times) {\n return createDateLayoutConfiguration('rows', dates, inner, times);\n },\n _createColumnsLayout: function (resources, inner, template, dates, times) {\n return createLayoutConfiguration('columns', resources, inner, template, dates, times);\n },\n _groupOrientation: function () {\n var groups = this.options.group;\n return groups && groups.resources ? groups.orientation : 'horizontal';\n },\n _isGroupedByDate: function () {\n return this.options.group && this.options.group.date;\n },\n _isVerticallyGrouped: function () {\n return this.groupedResources.length && this._groupOrientation() === 'vertical';\n },\n _createRowsLayout: function (resources, inner, template, dates) {\n return createLayoutConfiguration('rows', resources, inner, template, dates);\n },\n selectionByElement: function () {\n return null;\n },\n clearSelection: function () {\n this.content.find('.k-state-selected').removeAttr('id').attr('aria-selected', false).removeClass('k-state-selected');\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(this);\n if (that.table) {\n kendo.destroy(that.table);\n that.table.remove();\n }\n if (that.footer) {\n kendo.destroy(that.footer);\n that.footer.remove();\n }\n that.groups = null;\n that.table = null;\n that.content = null;\n that.times = null;\n that.datesHeader = null;\n that.timesHeader = null;\n that.footer = null;\n that._resizeHint = null;\n that._moveHint = null;\n },\n calendarInfo: function () {\n return kendo.getCulture().calendars.standard;\n },\n prevGroupSlot: function (date, groupIndex, isDay) {\n var collection;\n var group = this.groups[groupIndex];\n var slot = group.ranges(date, date, isDay, false)[0].start;\n if (groupIndex <= 0) {\n return;\n }\n if (this._isGroupedByDate()) {\n return slot;\n }\n if (this._isVerticallyGrouped()) {\n if (!group.timeSlotCollectionCount()) {\n collection = group._collection(group.daySlotCollectionCount() - 1, true);\n return collection.at(slot.index);\n } else {\n collection = group._collection(isDay ? slot.index : slot.collectionIndex, false);\n return collection.last();\n }\n } else {\n if (!group.timeSlotCollectionCount()) {\n collection = group._collection(slot.collectionIndex, true);\n return collection.last();\n } else {\n collection = group._collection(isDay ? 0 : group.timeSlotCollectionCount() - 1, isDay);\n return isDay ? collection.last() : collection.at(slot.index);\n }\n }\n },\n nextGroupSlot: function (date, groupIndex, isDay) {\n var collection;\n var group = this.groups[groupIndex];\n var slot = group.ranges(date, date, isDay, false)[0].start;\n var daySlotCollectionCount;\n if (groupIndex >= this.groups.length - 1) {\n return;\n }\n if (this._isGroupedByDate()) {\n return slot;\n }\n if (this._isVerticallyGrouped()) {\n if (!group.timeSlotCollectionCount()) {\n collection = group._collection(0, true);\n return collection.at(slot.index);\n } else {\n daySlotCollectionCount = group.daySlotCollectionCount();\n collection = group._collection(daySlotCollectionCount ? 0 : slot.collectionIndex, daySlotCollectionCount);\n return isDay ? collection.first() : collection.at(slot.collectionIndex);\n }\n } else {\n if (!group.timeSlotCollectionCount()) {\n collection = group._collection(slot.collectionIndex, true);\n return collection.first();\n } else {\n collection = group._collection(0, isDay);\n return isDay ? collection.first() : collection.at(slot.index);\n }\n }\n },\n _eventOptionsForMove: function () {\n return {};\n },\n _updateEventForResize: function () {\n return;\n },\n _updateEventForSelection: function (event) {\n return event;\n }\n });\n function collidingEvents(elements, start, end) {\n var idx, index, startIndex, overlaps, endIndex;\n for (idx = elements.length - 1; idx >= 0; idx--) {\n index = rangeIndex(elements[idx]);\n startIndex = index.start;\n endIndex = index.end;\n overlaps = startIndex <= start && endIndex >= start;\n if (overlaps || startIndex >= start && endIndex <= end || start <= startIndex && end >= startIndex) {\n if (startIndex < start) {\n start = startIndex;\n }\n if (endIndex > end) {\n end = endIndex;\n }\n }\n }\n return eventsForSlot(elements, start, end);\n }\n function rangeIndex(eventElement) {\n return {\n start: eventElement.start,\n end: eventElement.end\n };\n }\n function eventsForSlot(elements, slotStart, slotEnd) {\n var events = [];\n for (var idx = 0; idx < elements.length; idx++) {\n var event = rangeIndex(elements[idx]);\n if (event.start < slotStart && event.end > slotStart || event.start >= slotStart && event.end <= slotEnd) {\n events.push(elements[idx]);\n }\n }\n return events;\n }\n function createColumns(eventElements) {\n return _createColumns(eventElements);\n }\n function createRows(eventElements) {\n return _createColumns(eventElements);\n }\n var Color = function (value) {\n var color = this, formats = Color.formats, re, processor, parts, i, channels;\n if (arguments.length === 1) {\n value = color.resolveColor(value);\n for (i = 0; i < formats.length; i++) {\n re = formats[i].re;\n processor = formats[i].process;\n parts = re.exec(value);\n if (parts) {\n channels = processor(parts);\n color.r = channels[0];\n color.g = channels[1];\n color.b = channels[2];\n }\n }\n } else {\n color.r = arguments[0];\n color.g = arguments[1];\n color.b = arguments[2];\n }\n color.r = color.normalizeByte(color.r);\n color.g = color.normalizeByte(color.g);\n color.b = color.normalizeByte(color.b);\n };\n Color.prototype = {\n resolveColor: function (value) {\n value = value || '#000';\n if (value.charAt(0) == '#') {\n value = value.substr(1, 6);\n }\n value = value.replace(/ /g, '');\n value = value.toLowerCase();\n value = Color.namedColors[value] || value;\n return value;\n },\n normalizeByte: function (value) {\n return value < 0 || isNaN(value) ? 0 : value > 255 ? 255 : value;\n },\n percBrightness: function () {\n var color = this;\n return math.sqrt(0.241 * color.r * color.r + 0.691 * color.g * color.g + 0.068 * color.b * color.b);\n },\n isDark: function () {\n var color = this;\n var brightnessValue = color.percBrightness();\n return brightnessValue < 180;\n }\n };\n Color.formats = [\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function (parts) {\n return [\n parseInt(parts[1], 10),\n parseInt(parts[2], 10),\n parseInt(parts[3], 10)\n ];\n }\n },\n {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function (parts) {\n return [\n parseInt(parts[1], 16),\n parseInt(parts[2], 16),\n parseInt(parts[3], 16)\n ];\n }\n },\n {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function (parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n }\n ];\n Color.namedColors = {\n aqua: '00ffff',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n black: '000000',\n blue: '0000ff',\n brown: 'a52a2a',\n coral: 'ff7f50',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkorange: 'ff8c00',\n darkred: '8b0000',\n dimgray: '696969',\n fuchsia: 'ff00ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n indigo: '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lightblue: 'add8e6',\n lightgrey: 'd3d3d3',\n lightgreen: '90ee90',\n lightpink: 'ffb6c1',\n lightyellow: 'ffffe0',\n lime: '00ff00',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'ff00ff',\n maroon: '800000',\n mediumblue: '0000cd',\n navy: '000080',\n olive: '808000',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n purple: '800080',\n red: 'ff0000',\n royalblue: '4169e1',\n salmon: 'fa8072',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n snow: 'fffafa',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n wheat: 'f5deb3',\n white: 'ffffff',\n whitesmoke: 'f5f5f5',\n yellow: 'ffff00',\n yellowgreen: '9acd32'\n };\n function _createColumns(eventElements) {\n var columns = [];\n for (var idx = 0; idx < eventElements.length; idx++) {\n var event = eventElements[idx];\n var eventRange = rangeIndex(event);\n var column = null;\n for (var j = 0, columnLength = columns.length; j < columnLength; j++) {\n var endOverlaps = eventRange.start > columns[j].end;\n if (eventRange.start < columns[j].start || endOverlaps) {\n column = columns[j];\n if (column.end < eventRange.end) {\n column.end = eventRange.end;\n }\n break;\n }\n }\n if (!column) {\n column = {\n start: eventRange.start,\n end: eventRange.end,\n events: []\n };\n columns.push(column);\n }\n column.events.push(event);\n }\n return columns;\n }\n function createDateLayoutConfiguration(name, dates, inner, times) {\n var configuration = [];\n $.each(dates, function (index, item) {\n var className = item.className ? 'k-slot-cell ' + item.className : 'k-slot-cell';\n var obj = {\n text: item.text,\n className: className\n };\n if (times && !item.minorTicks) {\n obj[name] = createDateLayoutConfiguration(name, item.columns, inner, times);\n } else {\n obj[name] = inner;\n }\n configuration.push(obj);\n });\n return configuration;\n }\n function createLayoutConfiguration(name, resources, inner, template, dates, times) {\n var resource = resources[0];\n var configuration = [];\n if (resource) {\n if (dates && inner) {\n $.each(dates, function (index, item) {\n if (times && !item.minorTicks) {\n item[name] = createLayoutConfiguration(name, resources, item.columns, template, item.columns, times);\n } else {\n item[name] = createLayoutConfiguration(name, resources, null, template);\n }\n });\n configuration = dates;\n } else {\n var data = resource.dataSource.view();\n for (var dataIndex = 0; dataIndex < data.length; dataIndex++) {\n var obj = {\n text: template({\n text: kendo.htmlEncode(kendo.getter(resource.dataTextField)(data[dataIndex])),\n color: kendo.getter(resource.dataColorField)(data[dataIndex]),\n field: resource.field,\n title: resource.title,\n name: resource.name,\n value: kendo.getter(resource.dataValueField)(data[dataIndex])\n }),\n className: 'k-slot-cell k-scheduler-group-cell'\n };\n obj[name] = createLayoutConfiguration(name, resources.slice(1), inner, template);\n configuration.push(obj);\n }\n }\n return configuration;\n }\n return inner;\n }\n function groupEqFilter(value) {\n return function (item) {\n if ($.isArray(item) || item instanceof kendo.data.ObservableArray) {\n for (var idx = 0; idx < item.length; idx++) {\n if (item[idx] == value) {\n return true;\n }\n }\n return false;\n }\n return item == value;\n };\n }\n var selectedStateRegExp = /\\s*k-state-selected/;\n function addSelectedState(cell) {\n cell.className = cell.className.replace(selectedStateRegExp, '') + ' k-state-selected';\n }\n $.extend(ui.SchedulerView, {\n createColumns: createColumns,\n createRows: createRows,\n rangeIndex: rangeIndex,\n collidingEvents: collidingEvents,\n groupEqFilter: groupEqFilter\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.scheduler.dayview', ['kendo.scheduler.view'], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.dayview',\n name: 'Scheduler Day View',\n category: 'web',\n description: 'The Scheduler Day View',\n depends: ['scheduler.view'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, browser = kendo.support.browser, setTime = kendo.date.setTime, SchedulerView = ui.SchedulerView, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, extend = $.extend, proxy = $.proxy, getDate = kendo.date.getDate, MS_PER_MINUTE = kendo.date.MS_PER_MINUTE, MS_PER_DAY = kendo.date.MS_PER_DAY, CURRENT_TIME_MARKER_CLASS = 'k-current-time', CURRENT_TIME_MARKER_ARROW_CLASS = 'k-current-time-arrow', INVERSE_COLOR_CLASS = 'k-event-inverse', BORDER_SIZE_COEFF = 0.8666, getMilliseconds = kendo.date.getMilliseconds, NS = '.kendoMultiDayView';\n var DAY_VIEW_EVENT_TEMPLATE = kendo.template('<div title=\"(#=kendo.format(\"{0:t} - {1:t}\", start, end)#): #=title.replace(/\"/g,\"&\\\\#34;\")#\">' + '<div class=\"k-event-template k-event-time\">#:kendo.format(\"{0:t} - {1:t}\", start, end)#</div>' + '<div class=\"k-event-template\">${title}</div>' + '</div>'), DAY_VIEW_ALL_DAY_EVENT_TEMPLATE = kendo.template('<div title=\"(#=kendo.format(\"{0:t}\", start)#): #=title.replace(/\"/g,\"&\\\\#34;\")#\">' + '<div class=\"k-event-template\">${title}</div>' + '</div>'), DATA_HEADER_TEMPLATE = kendo.template('#var dateString = isMobile ? kendo.toString(date,\\'ddd\\')[0] : kendo.toString(date,\\'ddd M/dd\\'); #' + '<span class=\\'k-link k-nav-day\\'>#=dateString#</span>'), ALLDAY_EVENT_WRAPPER_STRING = '<div role=\"gridcell\" aria-selected=\"false\" ' + 'data-#=ns#uid=\"#=uid#\"' + '#if (resources[0]) { #' + 'style=\"background-color:#=resources[0].color#; border-color: #=resources[0].color#\"' + 'class=\"k-event\"' + '#} else {#' + 'class=\"k-event\"' + '#}#' + '>' + '<span class=\"k-event-actions\">' + '# if(data.tail || data.middle) {#' + '<span class=\"k-icon k-i-arrow-60-left\"></span>' + '#}#' + '# if(data.isException()) {#' + '<span class=\"k-icon k-i-non-recurrence\"></span>' + '# } else if(data.isRecurring()) {#' + '<span class=\"k-icon k-i-reload\"></span>' + '# } #' + '</span>' + '{0}' + '<span class=\"k-event-actions\">' + '#if (showDelete) {#' + '<a href=\"\\\\#\" class=\"k-link k-event-delete\" title=\"${data.messages.destroy}\" aria-label=\"${data.messages.destroy}\"><span class=\"k-icon k-i-close\"></span></a>' + '#}#' + '# if(data.head || data.middle) {#' + '<span class=\"k-icon k-i-arrow-60-right\"></span>' + '#}#' + '</span>' + '#if(resizable && !singleDay && !data.tail && !data.middle){#' + '<span class=\"k-resize-handle k-resize-w\"></span>' + '#}#' + '#if(resizable && !singleDay && !data.head && !data.middle){#' + '<span class=\"k-resize-handle k-resize-e\"></span>' + '#}#' + '</div>', EVENT_WRAPPER_STRING = '<div role=\"gridcell\" aria-selected=\"false\" ' + 'data-#=ns#uid=\"#=uid#\" ' + '#if (resources[0]) { #' + 'style=\"background-color:#=resources[0].color #; border-color: #=resources[0].color#\"' + 'class=\"k-event\"' + '#} else {#' + 'class=\"k-event\"' + '#}#' + '>' + '<span class=\"k-event-actions\">' + '# if(data.isException()) {#' + '<span class=\"k-icon k-i-non-recurrence\"></span>' + '# } else if(data.isRecurring()) {#' + '<span class=\"k-icon k-i-reload\"></span>' + '# } #' + '</span>' + '{0}' + '<span class=\"k-event-actions\">' + '#if (showDelete) {#' + '<a href=\"\\\\#\" class=\"k-link k-event-delete\" title=\"${data.messages.destroy}\" aria-label=\"${data.messages.destroy}\"><span class=\"k-icon k-i-close\"></span></a>' + '#}#' + '</span>' + '<span class=\"k-event-top-actions\">' + '# if(data.tail || data.middle) {#' + '<span class=\"k-icon k-i-arrow-60-up\"></span>' + '# } #' + '</span>' + '<span class=\"k-event-bottom-actions\">' + '# if(data.head || data.middle) {#' + '<span class=\"k-icon k-i-arrow-60-down\"></span>' + '# } #' + '</span>' + '# if(resizable && !data.tail && !data.middle) {#' + '<span class=\"k-resize-handle k-resize-n\"></span>' + '# } #' + '# if(resizable && !data.head && !data.middle) {#' + '<span class=\"k-resize-handle k-resize-s\"></span>' + '# } #' + '</div>';\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n setTime(staticDate, getMilliseconds(date));\n return staticDate;\n }\n function isInDateRange(value, min, max) {\n return value >= min && value <= max;\n }\n function isInTimeRange(value, min, max, overlaps) {\n overlaps = overlaps ? value <= max : value < max;\n return value > min && overlaps;\n }\n function addContinuousEvent(group, range, element, isAllDay) {\n var events = group._continuousEvents;\n var lastEvent = events[events.length - 1];\n var startDate = getDate(range.start.startDate()).getTime();\n if (isAllDay && lastEvent && getDate(lastEvent.start.startDate()).getTime() == startDate) {\n var idx = events.length - 1;\n for (; idx > -1; idx--) {\n if (events[idx].isAllDay || getDate(events[idx].start.startDate()).getTime() < startDate) {\n break;\n }\n }\n events.splice(idx + 1, 0, {\n element: element,\n isAllDay: true,\n uid: element.attr(kendo.attr('uid')),\n start: range.start,\n end: range.end\n });\n } else {\n events.push({\n element: element,\n isAllDay: isAllDay,\n uid: element.attr(kendo.attr('uid')),\n start: range.start,\n end: range.end\n });\n }\n }\n function getWorkDays(options) {\n var workDays = [];\n var dayIndex = options.workWeekStart % 7;\n var workWeekEnd = Math.abs(options.workWeekEnd % 7);\n workDays.push(dayIndex);\n while (workWeekEnd != dayIndex) {\n if (dayIndex > 6) {\n dayIndex -= 7;\n } else {\n dayIndex++;\n }\n workDays.push(dayIndex);\n }\n return workDays;\n }\n var MultiDayView = SchedulerView.extend({\n init: function (element, options) {\n var that = this;\n SchedulerView.fn.init.call(that, element, options);\n that.title = that.options.title || that.options.name;\n that._workDays = getWorkDays(that.options);\n that._templates();\n that._editable();\n that.calculateDateRange();\n that._groups();\n that._currentTime(true);\n },\n _currentTimeMarkerUpdater: function () {\n this._updateCurrentTimeMarker(new Date());\n },\n _updateCurrentTimeMarker: function (currentTime) {\n var options = this.options;\n if (options.currentTimeMarker.useLocalTimezone === false) {\n var timezone = options.dataSource.options.schema.timezone;\n if (options.dataSource && timezone) {\n var timezoneOffset = kendo.timezone.offset(currentTime, timezone);\n currentTime = kendo.timezone.convert(currentTime, currentTime.getTimezoneOffset(), timezoneOffset);\n }\n }\n this.times.find('.' + CURRENT_TIME_MARKER_CLASS).remove();\n this.content.find('.' + CURRENT_TIME_MARKER_CLASS).remove();\n var groupsCount = !options.group || options.group.orientation == 'horizontal' ? 1 : this.groups.length;\n var firstTimesCell = this.times.find('tr:first th:first');\n var lastTimesCell = this.times.find('tr:first th:last');\n for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\n var currentGroup = this.groups[groupIndex];\n if (!currentGroup) {\n return;\n }\n var utcCurrentTime = kendo.date.toUtcTime(currentTime);\n var ranges = currentGroup.timeSlotRanges(utcCurrentTime, utcCurrentTime + 1);\n if (ranges.length === 0) {\n return;\n }\n var collection = ranges[0].collection;\n var slotElement = collection.slotByStartDate(currentTime);\n if (slotElement) {\n var elementHtml = '<div class=\\'' + CURRENT_TIME_MARKER_CLASS + '\\'></div>';\n var timesTableMarker = $(elementHtml).prependTo(this.times);\n var markerTopPosition = Math.round(ranges[0].innerRect(currentTime, new Date(currentTime.getTime() + 1), false).top);\n var timesTableMarkerCss = {};\n var markerWidth = this.content[0].scrollWidth;\n if (browser.msie || browser.edge) {\n markerWidth -= 1;\n }\n if (this._isRtl) {\n timesTableMarkerCss.right = firstTimesCell.position().left + outerHeight(firstTimesCell) - outerHeight(lastTimesCell);\n timesTableMarker.addClass(CURRENT_TIME_MARKER_ARROW_CLASS + '-left');\n } else {\n timesTableMarkerCss.left = lastTimesCell.position().left;\n timesTableMarker.addClass(CURRENT_TIME_MARKER_ARROW_CLASS + '-right');\n }\n timesTableMarkerCss.top = markerTopPosition - outerWidth(timesTableMarker) * BORDER_SIZE_COEFF / 2;\n timesTableMarker.css(timesTableMarkerCss);\n $(elementHtml).prependTo(this.content).css({\n top: markerTopPosition,\n height: '1px',\n right: 0,\n width: markerWidth,\n left: 0\n });\n }\n }\n },\n _currentTime: function (setUpdateTimer) {\n var that = this;\n var markerOptions = that.options.currentTimeMarker;\n if (markerOptions !== false && markerOptions.updateInterval !== undefined) {\n that._currentTimeMarkerUpdater();\n if (setUpdateTimer) {\n that._currentTimeUpdateTimer = setInterval(proxy(this._currentTimeMarkerUpdater, that), markerOptions.updateInterval);\n }\n }\n },\n _updateResizeHint: function (event, groupIndex, startTime, endTime) {\n var multiday = event.isMultiDay();\n var group = this.groups[groupIndex];\n var ranges = group.ranges(startTime, endTime, multiday, event.isAllDay);\n var width, height, top, hint;\n this._removeResizeHint();\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n var range = ranges[rangeIndex];\n var start = range.startSlot();\n if (this._isGroupedByDate() && multiday) {\n for (var slotIdx = start.index; slotIdx <= range.end.index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n width = slot.offsetWidth;\n height = slot.clientHeight;\n top = slot.offsetTop;\n hint = SchedulerView.fn._createResizeHint.call(this, slot.offsetLeft, top, width, height);\n this._resizeHint = this._resizeHint.add(hint);\n }\n } else {\n width = start.offsetWidth;\n height = start.clientHeight;\n top = start.offsetTop;\n if (multiday) {\n width = range.innerWidth();\n } else {\n var rect = range.outerRect(startTime, endTime, this.options.snap);\n top = rect.top;\n height = rect.bottom - rect.top;\n }\n hint = SchedulerView.fn._createResizeHint.call(this, start.offsetLeft, top, width, height);\n this._resizeHint = this._resizeHint.add(hint);\n }\n }\n var format = 't';\n var container = this.content;\n if (multiday) {\n format = 'M/dd';\n container = this.element.find('.k-scheduler-header-wrap:has(.k-scheduler-header-all-day) > div');\n if (!container.length) {\n container = this.content;\n }\n }\n this._resizeHint.appendTo(container);\n this._resizeHint.find('.k-label-top,.k-label-bottom').text('');\n this._resizeHint.first().addClass('k-first').find('.k-label-top').text(kendo.toString(kendo.timezone.toLocalDate(startTime), format));\n this._resizeHint.last().addClass('k-last').find('.k-label-bottom').text(kendo.toString(kendo.timezone.toLocalDate(endTime), format));\n },\n _updateMoveHint: function (event, groupIndex, distance) {\n var multiday = event.isMultiDay();\n var group = this.groups[groupIndex];\n var start = kendo.date.toUtcTime(event.start) + distance;\n var end = start + event.duration();\n var ranges = group.ranges(start, end, multiday, event.isAllDay);\n start = kendo.timezone.toLocalDate(start);\n end = kendo.timezone.toLocalDate(end);\n this._removeMoveHint(event.uid);\n if (!multiday && (getMilliseconds(end) === 0 || getMilliseconds(end) < getMilliseconds(this.startTime()))) {\n if (ranges.length > 1) {\n ranges.pop();\n }\n }\n var eventHint = $();\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n var range = ranges[rangeIndex];\n var startSlot = range.start;\n var hint;\n var css = {\n left: startSlot.offsetLeft + 2,\n top: startSlot.offsetTop\n };\n if (this._isGroupedByDate() && multiday) {\n for (var slotIdx = startSlot.index; slotIdx <= range.end.index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n css.left = this._isRtl ? slot.clientWidth * 0.1 + slot.offsetLeft + 2 : slot.offsetLeft + 2;\n css.height = slot.offsetHeight;\n css.width = slot.clientWidth * 0.9 - 4;\n hint = this._createEventElement(event.clone({\n start: start,\n end: end\n }), !multiday);\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n this._appendMoveHint(hint, css);\n eventHint = eventHint.add(hint);\n }\n } else {\n if (this._isRtl) {\n css.left = startSlot.clientWidth * 0.1 + startSlot.offsetLeft + 2;\n }\n if (multiday) {\n css.width = range.innerWidth() - 4;\n } else {\n var rect = range.outerRect(start, end, this.options.snap);\n css.top = rect.top;\n css.height = rect.bottom - rect.top;\n css.width = startSlot.clientWidth * 0.9 - 4;\n }\n hint = this._createEventElement(event.clone({\n start: start,\n end: end\n }), !multiday);\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n this._appendMoveHint(hint, css);\n eventHint = eventHint.add(hint);\n }\n }\n var content = this.content;\n if (multiday) {\n content = this.element.find('.k-scheduler-header-wrap:has(.k-scheduler-header-all-day) > div');\n if (!content.length) {\n content = this.content;\n }\n }\n eventHint.appendTo(content);\n },\n _appendMoveHint: function (hint, css) {\n hint.addClass('k-event-drag-hint');\n hint.css(css);\n this._moveHint = this._moveHint.add(hint);\n },\n _slotByPosition: function (x, y) {\n var slot, offset;\n if (this._isVerticallyGrouped()) {\n offset = this.content.offset();\n y += this.content[0].scrollTop;\n x += this.content[0].scrollLeft;\n } else {\n offset = this.element.find('.k-scheduler-header-wrap:has(.k-scheduler-header-all-day)').find('>div').offset();\n }\n if (offset) {\n x -= offset.left;\n y -= offset.top;\n }\n x = Math.ceil(x);\n y = Math.ceil(y);\n var group;\n var groupIndex;\n for (groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n group = this.groups[groupIndex];\n slot = group.daySlotByPosition(x, y, this._isGroupedByDate());\n if (slot) {\n return slot;\n }\n }\n if (offset) {\n x += offset.left;\n y += offset.top;\n }\n offset = this.content.offset();\n x -= offset.left;\n y -= offset.top;\n if (!this._isVerticallyGrouped()) {\n y += this.content[0].scrollTop;\n x += this.content[0].scrollLeft;\n }\n x = Math.ceil(x);\n y = Math.ceil(y);\n for (groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n group = this.groups[groupIndex];\n slot = group.timeSlotByPosition(x, y);\n if (slot) {\n return slot;\n }\n }\n return null;\n },\n _groupCount: function () {\n var resources = this.groupedResources;\n var byDate = this._isGroupedByDate();\n if (resources.length) {\n if (this._groupOrientation() === 'vertical') {\n if (byDate) {\n return this._columnCountForLevel(resources.length - 1);\n } else {\n return this._rowCountForLevel(resources.length - 1);\n }\n } else {\n if (byDate) {\n return this._columnCountForLevel(resources.length) / this._columnCountForLevel(0);\n } else {\n return this._columnCountForLevel(resources.length) / this._columnOffsetForResource(resources.length);\n }\n }\n }\n return 1;\n },\n _columnCountInResourceView: function () {\n var resources = this.groupedResources;\n var byDate = this._isGroupedByDate();\n if (!resources.length || this._isVerticallyGrouped()) {\n if (byDate) {\n return this._rowCountForLevel(0);\n } else {\n return this._columnCountForLevel(0);\n }\n }\n if (byDate) {\n return this._columnCountForLevel(0);\n } else {\n return this._columnOffsetForResource(resources.length);\n }\n },\n _timeSlotGroups: function (groupCount, columnCount) {\n var interval = this._timeSlotInterval();\n var verticalViews = groupCount;\n var byDate = this._isGroupedByDate();\n var tableRows = this.content.find('tr:not(.k-scheduler-header-all-day)');\n var group, time, rowIndex, cellIndex;\n tableRows.attr('role', 'row');\n var rowCount = tableRows.length;\n if (this._isVerticallyGrouped()) {\n if (byDate) {\n verticalViews = columnCount;\n }\n rowCount = Math.floor(rowCount / verticalViews);\n }\n for (var groupIndex = 0; groupIndex < verticalViews; groupIndex++) {\n var rowMultiplier = 0;\n var cellMultiplier = 0;\n if (this._isVerticallyGrouped()) {\n rowMultiplier = groupIndex;\n } else {\n cellMultiplier = groupIndex;\n }\n rowIndex = rowMultiplier * rowCount;\n while (rowIndex < (rowMultiplier + 1) * rowCount) {\n var cells = tableRows[rowIndex].children;\n if (rowIndex % rowCount === 0) {\n time = getMilliseconds(new Date(+this.startTime()));\n }\n var timeIndex = 0;\n if (byDate) {\n if (this._isVerticallyGrouped()) {\n for (cellIndex = 0; cellIndex < groupCount; cellIndex++) {\n group = this.groups[cellIndex];\n this._addTimeSlotGroup(group, cells, cellIndex, time, interval, groupIndex);\n }\n } else {\n group = this.groups[groupIndex];\n for (cellIndex = cellMultiplier; cellIndex < groupCount * columnCount; cellIndex = cellIndex + groupCount) {\n this._addTimeSlotGroup(group, cells, cellIndex, time, interval, timeIndex);\n timeIndex++;\n }\n }\n } else {\n group = this.groups[groupIndex];\n for (cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n this._addTimeSlotGroup(group, cells, cellIndex, time, interval, timeIndex);\n timeIndex++;\n }\n }\n time += interval;\n rowIndex++;\n }\n }\n },\n _addTimeSlotGroup: function (group, cells, cellIndex, time, interval, timeIndex) {\n var cell = cells[cellIndex];\n var collection = group.getTimeSlotCollection(timeIndex);\n var currentDate = this._dates[timeIndex];\n if (!currentDate || !cell) {\n return;\n }\n var currentTime = Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());\n var start = currentTime + time;\n var end = start + interval;\n cell.setAttribute('role', 'gridcell');\n cell.setAttribute('aria-selected', false);\n collection.addTimeSlot(cell, start, end);\n },\n _addDaySlotGroup: function (collection, cells, cellIndex, columnCount, cellCount) {\n var cell = cells[cellIndex];\n var start = this._dates[cellCount];\n if (!start) {\n return;\n }\n var currentTime = Date.UTC(start.getFullYear(), start.getMonth(), start.getDate());\n cell.setAttribute('role', 'gridcell');\n cell.setAttribute('aria-selected', false);\n collection.addDaySlot(cell, currentTime, currentTime + kendo.date.MS_PER_DAY);\n },\n _daySlotGroups: function (groupCount, columnCount) {\n var tableRows, cellIndex;\n var verticalViews = groupCount;\n var byDate = this._isGroupedByDate();\n if (this._isVerticallyGrouped()) {\n if (byDate) {\n verticalViews = columnCount;\n }\n tableRows = this.element.find('.k-scheduler-header-all-day');\n } else {\n tableRows = this.element.find('.k-scheduler-header-all-day tr');\n }\n tableRows.attr('role', 'row');\n for (var groupIndex = 0; groupIndex < verticalViews; groupIndex++) {\n var rowMultiplier = 0;\n var group, collection;\n if (this._isVerticallyGrouped()) {\n rowMultiplier = groupIndex;\n }\n var cells = tableRows[rowMultiplier].children;\n var cellMultiplier = 0;\n if (!this._isVerticallyGrouped()) {\n cellMultiplier = groupIndex;\n }\n var cellCount = 0;\n if (byDate) {\n if (this._isVerticallyGrouped()) {\n for (cellIndex = 0; cellIndex < groupCount; cellIndex++) {\n group = this.groups[cellIndex];\n collection = group.getDaySlotCollection(0);\n this._addDaySlotGroup(collection, cells, cellIndex, columnCount, groupIndex);\n }\n } else {\n group = this.groups[groupIndex];\n collection = group.getDaySlotCollection(0);\n for (cellIndex = cellMultiplier; cellIndex < groupCount * columnCount; cellIndex = cellIndex + groupCount) {\n this._addDaySlotGroup(collection, cells, cellIndex, columnCount, cellCount);\n cellCount++;\n }\n }\n } else {\n group = this.groups[groupIndex];\n collection = group.getDaySlotCollection(0);\n for (cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n this._addDaySlotGroup(collection, cells, cellIndex, columnCount, cellCount);\n cellCount++;\n }\n }\n }\n },\n _groups: function () {\n var groupCount = this._groupCount();\n var columnCount = this._columnCountInResourceView();\n this.groups = [];\n for (var idx = 0; idx < groupCount; idx++) {\n var view = this._addResourceView(idx);\n for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) {\n if (this._dates[columnIndex]) {\n view.addTimeSlotCollection(this._dates[columnIndex], kendo.date.addDays(this._dates[columnIndex], 1));\n }\n }\n if (this.options.allDaySlot) {\n view.addDaySlotCollection(this._dates[0], kendo.date.addDays(this._dates[this._dates.length - 1], 1));\n }\n }\n this._timeSlotGroups(groupCount, columnCount);\n if (this.options.allDaySlot) {\n this._daySlotGroups(groupCount, columnCount);\n }\n },\n options: {\n name: 'MultiDayView',\n selectedDateFormat: '{0:D}',\n selectedShortDateFormat: '{0:d}',\n selectedMobileDateFormat: '{0:MMM} {0:dd} - {1:dd}',\n allDaySlot: true,\n showWorkHours: false,\n title: '',\n startTime: kendo.date.today(),\n endTime: kendo.date.today(),\n minorTickCount: 2,\n majorTick: 60,\n majorTimeHeaderTemplate: '<span class=\\'k-time-text\\'>#=kendo.toString(date, \\'h:mm\\')#</span> ' + '<span class=\\'k-time-period\\'>#=kendo.toString(date, \\'tt\\')#</span>',\n minorTimeHeaderTemplate: '&\\\\#8203;',\n groupHeaderTemplate: '#=text#',\n slotTemplate: ' ',\n allDaySlotTemplate: ' ',\n eventTemplate: DAY_VIEW_EVENT_TEMPLATE,\n allDayEventTemplate: DAY_VIEW_ALL_DAY_EVENT_TEMPLATE,\n dateHeaderTemplate: DATA_HEADER_TEMPLATE,\n editable: true,\n workDayStart: new Date(1980, 1, 1, 8, 0, 0),\n workDayEnd: new Date(1980, 1, 1, 17, 0, 0),\n workWeekStart: 1,\n workWeekEnd: 5,\n footer: { command: 'workDay' },\n messages: {\n allDay: 'all day',\n showFullDay: 'Show full day',\n showWorkDay: 'Show business hours'\n },\n currentTimeMarker: {\n updateInterval: 10000,\n useLocalTimezone: true\n }\n },\n events: [\n 'remove',\n 'add',\n 'edit'\n ],\n _templates: function () {\n var options = this.options, settings = extend({}, kendo.Template, options.templateSettings);\n this.eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_STRING);\n this.allDayEventTemplate = this._eventTmpl(options.allDayEventTemplate, ALLDAY_EVENT_WRAPPER_STRING);\n this.majorTimeHeaderTemplate = kendo.template(options.majorTimeHeaderTemplate, settings);\n this.minorTimeHeaderTemplate = kendo.template(options.minorTimeHeaderTemplate, settings);\n this.dateHeaderTemplate = kendo.template(options.dateHeaderTemplate, settings);\n this.slotTemplate = kendo.template(options.slotTemplate, settings);\n this.allDaySlotTemplate = kendo.template(options.allDaySlotTemplate, settings);\n this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n },\n _editable: function () {\n if (this.options.editable) {\n if (this._isMobile()) {\n this._touchEditable();\n } else {\n this._mouseEditable();\n }\n }\n },\n _mouseEditable: function () {\n var that = this;\n that.element.on('click' + NS, '.k-event a:has(.k-i-close)', function (e) {\n that.trigger('remove', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n if (that.options.editable.create !== false) {\n that.element.on('dblclick' + NS, '.k-scheduler-content td', function (e) {\n if (!$(this).parent().hasClass('k-scheduler-header-all-day')) {\n var slot = that._slotByPosition(e.pageX, e.pageY);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n start: slot.startDate(),\n end: slot.endDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n }\n }).on('dblclick' + NS, '.k-scheduler-header-all-day td', function (e) {\n var slot = that._slotByPosition(e.pageX, e.pageY);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({}, {\n isAllDay: true,\n start: kendo.date.getDate(slot.startDate()),\n end: kendo.date.getDate(slot.startDate())\n }, resourceInfo)\n });\n }\n e.preventDefault();\n });\n }\n if (that.options.editable.update !== false) {\n that.element.on('dblclick' + NS, '.k-event', function (e) {\n that.trigger('edit', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n }\n },\n _touchEditable: function () {\n var that = this;\n var threshold = 0;\n if (kendo.support.mobileOS.android) {\n threshold = 5;\n }\n if (that.options.editable.create !== false) {\n that._addUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n filter: '.k-scheduler-content td',\n useClickAsTap: !kendo.support.browser.edge,\n tap: function (e) {\n if (that._scrolling) {\n return;\n }\n if (!$(e.target).parent().hasClass('k-scheduler-header-all-day')) {\n var x = e.x.location !== undefined ? e.x.location : e.x;\n var y = e.y.location !== undefined ? e.y.location : e.y;\n var slot = that._slotByPosition(x, y);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n start: slot.startDate(),\n end: slot.endDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n }\n }\n });\n that._allDayUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n useClickAsTap: !kendo.support.browser.edge,\n filter: '.k-scheduler-header-all-day td',\n tap: function (e) {\n if (that._scrolling) {\n return;\n }\n var x = e.x.location !== undefined ? e.x.location : e.x;\n var y = e.y.location !== undefined ? e.y.location : e.y;\n var slot = that._slotByPosition(x, y);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({}, {\n isAllDay: true,\n start: kendo.date.getDate(slot.startDate()),\n end: kendo.date.getDate(slot.startDate())\n }, resourceInfo)\n });\n }\n e.preventDefault();\n }\n });\n }\n if (that.options.editable.update !== false) {\n that._editUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n useClickAsTap: !kendo.support.browser.edge,\n filter: '.k-event',\n tap: function (e) {\n if (that._scrolling) {\n return;\n }\n var eventElement = $(e.target).closest('.k-event');\n var touchElement = $(e.touch.initialTouch);\n if (touchElement.hasClass('k-i-close')) {\n that.trigger('remove', { uid: eventElement.attr(kendo.attr('uid')) });\n } else if (!eventElement.hasClass('k-event-active')) {\n that.trigger('edit', { uid: eventElement.attr(kendo.attr('uid')) });\n }\n e.preventDefault();\n }\n });\n }\n },\n _layout: function (dates) {\n var columns = [];\n var rows = [];\n var options = this.options;\n var that = this;\n var byDate = that._isGroupedByDate();\n for (var idx = 0; idx < dates.length; idx++) {\n var column = {};\n column.text = that.dateHeaderTemplate({\n date: dates[idx],\n isMobile: that._isMobile()\n });\n if (kendo.date.isToday(dates[idx])) {\n column.className = 'k-today';\n }\n columns.push(column);\n }\n var resources = this.groupedResources;\n if (options.allDaySlot) {\n rows.push({\n text: options.messages.allDay,\n allDay: true,\n cellContent: function (idx) {\n var groupIndex = idx;\n idx = resources.length && that._groupOrientation() !== 'vertical' ? idx % dates.length : idx;\n return that.allDaySlotTemplate({\n date: dates[idx],\n resources: function () {\n return that._resourceBySlot({ groupIndex: groupIndex });\n }\n });\n }\n });\n }\n this._forTimeRange(this.startTime(), this.endTime(), function (date, majorTick, middleRow, lastSlotRow) {\n var template = majorTick ? that.majorTimeHeaderTemplate : that.minorTimeHeaderTemplate;\n var row = {\n text: template({ date: date }),\n className: lastSlotRow ? 'k-slot-cell' : ''\n };\n rows.push(row);\n });\n if (resources.length) {\n if (this._groupOrientation() === 'vertical') {\n if (byDate) {\n rows = this._createDateLayout(columns, rows);\n columns = this._createColumnsLayout(resources, null, this.groupHeaderTemplate);\n } else {\n rows = this._createRowsLayout(resources, rows, this.groupHeaderTemplate);\n }\n } else {\n if (byDate) {\n columns = this._createColumnsLayout(resources, columns, this.groupHeaderTemplate, columns);\n } else {\n columns = this._createColumnsLayout(resources, columns, this.groupHeaderTemplate);\n }\n }\n }\n return {\n columns: columns,\n rows: rows\n };\n },\n _footer: function () {\n var options = this.options;\n if (options.footer !== false) {\n var html = '<div class=\"k-header k-scheduler-footer\">';\n var command = options.footer.command;\n if (this._isMobile()) {\n html += '<span class=\"k-state-default k-scheduler-today\"><a href=\"#\" class=\"k-link\">';\n html += options.messages.today + '</a></span>';\n }\n if (command && command === 'workDay') {\n if (this._isMobile()) {\n html += '<span class=\"k-state-default k-scheduler-fullday\"><a href=\"#\" class=\"k-link\">';\n html += (options.showWorkHours ? options.messages.showFullDay : options.messages.showWorkDay) + '</a></span>';\n } else {\n html += '<ul class=\"k-reset k-header\">';\n html += '<li class=\"k-state-default k-scheduler-fullday\"><a href=\"#\" class=\"k-link\"><span class=\"k-icon k-i-clock\"></span>';\n html += (options.showWorkHours ? options.messages.showFullDay : options.messages.showWorkDay) + '</a></li>';\n html += '</ul>';\n }\n } else {\n html += ' ';\n }\n html += '</div>';\n this.footer = $(html).appendTo(this.element);\n var that = this;\n this.footer.on('click' + NS, '.k-scheduler-fullday', function (e) {\n e.preventDefault();\n that.trigger('navigate', {\n view: that.name || options.name,\n date: options.date,\n isWorkDay: !options.showWorkHours\n });\n });\n this.footer.on('click' + NS, '.k-scheduler-today', function (e) {\n e.preventDefault();\n var timezone = that.options.timezone;\n var action = 'today';\n var currentDate = new Date();\n var date;\n if (timezone) {\n var timezoneOffset = kendo.timezone.offset(currentDate, timezone);\n date = kendo.timezone.convert(currentDate, currentDate.getTimezoneOffset(), timezoneOffset);\n } else {\n date = currentDate;\n }\n that.trigger('navigate', {\n view: that.name || options.name,\n action: action,\n date: date\n });\n });\n }\n },\n _forTimeRange: function (min, max, action, after) {\n min = toInvariantTime(min);\n max = toInvariantTime(max);\n var that = this, msMin = getMilliseconds(min), msMax = getMilliseconds(max), minorTickCount = that.options.minorTickCount, msMajorInterval = that.options.majorTick * MS_PER_MINUTE, msInterval = msMajorInterval / minorTickCount || 1, start = new Date(+min), startDay = start.getDate(), msStart, idx = 0, length, html = '';\n length = MS_PER_DAY / msInterval;\n if (msMin != msMax) {\n if (msMin > msMax) {\n msMax += MS_PER_DAY;\n }\n length = (msMax - msMin) / msInterval;\n }\n length = Math.round(length);\n for (; idx < length; idx++) {\n var majorTickDivider = idx % (msMajorInterval / msInterval), isMajorTickRow = majorTickDivider === 0, isMiddleRow = majorTickDivider < minorTickCount - 1, isLastSlotRow = majorTickDivider === minorTickCount - 1;\n html += action(start, isMajorTickRow, isMiddleRow, isLastSlotRow);\n setTime(start, msInterval, false);\n }\n if (msMax) {\n msStart = getMilliseconds(start);\n if (startDay < start.getDate()) {\n msStart += MS_PER_DAY;\n }\n if (msStart > msMax) {\n start = new Date(+max);\n }\n }\n if (after) {\n html += after(start);\n }\n return html;\n },\n _content: function (dates) {\n var that = this;\n var options = that.options;\n var start = that.startTime();\n var end = this.endTime();\n var groupsCount = 1;\n var rowCount = 1;\n var columnCount = dates.length;\n var html = '';\n var resources = this.groupedResources;\n var allDaySlotTemplate = this.allDaySlotTemplate;\n var isVerticalGroupped = false;\n var allDayVerticalGroupRow;\n var byDate = that._isGroupedByDate();\n var dateID = 0;\n if (resources.length) {\n isVerticalGroupped = that._groupOrientation() === 'vertical';\n if (isVerticalGroupped) {\n rowCount = this._rowCountForLevel(this.rowLevels.length - 2);\n if (byDate) {\n groupsCount = this._columnCountForLevel(this.columnLevels.length - 1);\n }\n if (options.allDaySlot) {\n allDayVerticalGroupRow = function (groupIndex) {\n var result = '<tr class=\"k-scheduler-header-all-day\">';\n var dateGroupIndex = byDate ? 0 : groupIndex;\n var resources = function () {\n return that._resourceBySlot({ groupIndex: dateGroupIndex });\n };\n if (byDate) {\n for (; dateGroupIndex < groupsCount; dateGroupIndex++) {\n result += '<td>' + allDaySlotTemplate({\n date: dates[dateID],\n resources: resources\n }) + '</td>';\n }\n } else {\n for (var idx = 0; idx < dates.length; idx++) {\n result += '<td>' + allDaySlotTemplate({\n date: dates[idx],\n resources: resources\n }) + '</td>';\n }\n }\n return result + '</tr>';\n };\n }\n } else {\n if (byDate) {\n groupsCount = this._columnCountForLevel(this.columnLevels.length - 1) / this._columnCountForLevel(0);\n } else {\n groupsCount = this._columnCountForLevel(this.columnLevels.length - 2);\n }\n }\n }\n html += '<tbody>';\n var appendRow = function (date, majorTick, middleRow) {\n var content = '';\n var groupIdx = 0;\n var idx, length;\n content = '<tr' + (middleRow ? ' class=\"k-middle-row\"' : '') + '>';\n if (byDate) {\n for (idx = 0, length = columnCount; idx < length; idx++) {\n for (groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n var dateIndex = idx;\n if (isVerticalGroupped) {\n dateIndex = dateID;\n }\n content = that._addCellsToContent(content, dates, date, dateIndex, groupIdx, rowIdx);\n }\n if (isVerticalGroupped) {\n break;\n }\n }\n } else {\n for (; groupIdx < groupsCount; groupIdx++) {\n for (idx = 0, length = columnCount; idx < length; idx++) {\n content = that._addCellsToContent(content, dates, date, idx, groupIdx, rowIdx);\n }\n }\n }\n content += '</tr>';\n return content;\n };\n for (var rowIdx = 0; rowIdx < rowCount; rowIdx++) {\n html += allDayVerticalGroupRow ? allDayVerticalGroupRow(rowIdx) : '';\n html += this._forTimeRange(start, end, appendRow);\n if (isVerticalGroupped) {\n dateID++;\n }\n }\n html += '</tbody>';\n this.content.find('table').append(html);\n },\n _addCellsToContent: function (content, dates, date, idx, groupIdx, rowIdx) {\n var that = this;\n var classes = '';\n var tmplDate;\n var slotTemplate = this.slotTemplate;\n var isVerticalGroupped = this._groupOrientation() === 'vertical';\n var resources = function (groupIndex) {\n return function () {\n return that._resourceBySlot({ groupIndex: groupIndex });\n };\n };\n if (kendo.date.isToday(dates[idx])) {\n classes += 'k-today';\n }\n if (kendo.date.getMilliseconds(date) < kendo.date.getMilliseconds(this.options.workDayStart) || kendo.date.getMilliseconds(date) >= kendo.date.getMilliseconds(this.options.workDayEnd) || !this._isWorkDay(dates[idx])) {\n classes += ' k-nonwork-hour';\n }\n content += '<td' + (classes !== '' ? ' class=\"' + classes + '\"' : '') + '>';\n tmplDate = kendo.date.getDate(dates[idx]);\n kendo.date.setTime(tmplDate, kendo.date.getMilliseconds(date));\n content += slotTemplate({\n date: tmplDate,\n resources: resources(isVerticalGroupped && !that._isGroupedByDate() ? rowIdx : groupIdx)\n });\n content += '</td>';\n return content;\n },\n _isWorkDay: function (date) {\n var day = date.getDay();\n var workDays = this._workDays;\n for (var i = 0; i < workDays.length; i++) {\n if (workDays[i] === day) {\n return true;\n }\n }\n return false;\n },\n _render: function (dates) {\n var that = this;\n dates = dates || [];\n this._dates = dates;\n this._startDate = dates[0];\n this._endDate = dates[dates.length - 1 || 0];\n this.createLayout(this._layout(dates));\n this._content(dates);\n this._footer();\n this.refreshLayout();\n var allDayHeader = this.element.find('.k-scheduler-header-all-day td');\n if (allDayHeader.length) {\n this._allDayHeaderHeight = allDayHeader.first()[0].clientHeight;\n }\n that.element.on('click' + NS, '.k-nav-day', function (e) {\n var th = $(e.currentTarget).closest('th');\n var offset = th.offset();\n var additioanlWidth = 0;\n var additionalHeight = outerHeight(th);\n if (that._isGroupedByDate()) {\n if (that._isVerticallyGrouped()) {\n additioanlWidth = outerWidth(that.times);\n additionalHeight = 0;\n } else {\n additionalHeight = outerHeight(that.datesHeader);\n }\n }\n var slot = that._slotByPosition(offset.left + additioanlWidth, offset.top + additionalHeight);\n that.trigger('navigate', {\n view: 'day',\n date: slot.startDate()\n });\n });\n },\n startTime: function () {\n var options = this.options;\n return options.showWorkHours ? options.workDayStart : options.startTime;\n },\n endTime: function () {\n var options = this.options;\n return options.showWorkHours ? options.workDayEnd : options.endTime;\n },\n startDate: function () {\n return this._startDate;\n },\n endDate: function () {\n return this._endDate;\n },\n _end: function (isAllDay) {\n var time = getMilliseconds(this.endTime()) || MS_PER_DAY;\n if (isAllDay) {\n time = 0;\n }\n return new Date(this._endDate.getTime() + time);\n },\n nextDate: function () {\n return kendo.date.nextDay(this.endDate());\n },\n previousDate: function () {\n return kendo.date.previousDay(this.startDate());\n },\n calculateDateRange: function () {\n this._render([this.options.date]);\n },\n destroy: function () {\n var that = this;\n if (that._currentTimeUpdateTimer) {\n clearInterval(that._currentTimeUpdateTimer);\n }\n if (that.datesHeader) {\n that.datesHeader.off(NS);\n }\n if (that.element) {\n that.element.off(NS);\n }\n if (that.footer) {\n that.footer.remove();\n }\n SchedulerView.fn.destroy.call(this);\n if (this._isMobile() && that.options.editable) {\n if (that.options.editable.create !== false) {\n that._addUserEvents.destroy();\n that._allDayUserEvents.destroy();\n }\n if (that.options.editable.update !== false) {\n that._editUserEvents.destroy();\n }\n }\n },\n inRange: function (options) {\n var inRange = SchedulerView.fn.inRange.call(this, options);\n if (options.isAllDay) {\n return inRange;\n }\n var startTime = getMilliseconds(this.startTime());\n var endTime = getMilliseconds(this.endTime()) || kendo.date.MS_PER_DAY;\n var start = getMilliseconds(options.start);\n var end = getMilliseconds(options.end) || kendo.date.MS_PER_DAY;\n return inRange && startTime <= start && end <= endTime;\n },\n selectionByElement: function (cell) {\n var offset = cell.offset();\n return this._slotByPosition(offset.left, offset.top);\n },\n _timeSlotInterval: function () {\n var options = this.options;\n return options.majorTick / options.minorTickCount * MS_PER_MINUTE;\n },\n _timeSlotIndex: function (date) {\n var options = this.options;\n var eventStartTime = getMilliseconds(date);\n var startTime = getMilliseconds(this.startTime());\n var timeSlotInterval = options.majorTick / options.minorTickCount * MS_PER_MINUTE;\n return (eventStartTime - startTime) / timeSlotInterval;\n },\n _slotIndex: function (date, multiday) {\n if (multiday) {\n return this._dateSlotIndex(date);\n }\n return this._timeSlotIndex(date);\n },\n _dateSlotIndex: function (date, overlaps) {\n var idx;\n var length;\n var slots = this._dates || [];\n var slotStart;\n var slotEnd;\n var offset = 1;\n for (idx = 0, length = slots.length; idx < length; idx++) {\n slotStart = kendo.date.getDate(slots[idx]);\n slotEnd = new Date(kendo.date.getDate(slots[idx]).getTime() + MS_PER_DAY - (overlaps ? 0 : 1));\n if (isInDateRange(date, slotStart, slotEnd)) {\n return idx * offset;\n }\n }\n return -1;\n },\n _positionAllDayEvent: function (element, slotRange) {\n var slotWidth = slotRange.innerWidth();\n var startIndex = slotRange.start.index;\n var endIndex = slotRange.end.index;\n var allDayEvents = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n var currentColumnCount = this._headerColumnCount || 0;\n var leftOffset = 2;\n var rightOffset = startIndex !== endIndex ? 5 : 4;\n var eventHeight = this._allDayHeaderHeight;\n var start = slotRange.startSlot();\n element.css({\n left: start.offsetLeft + leftOffset,\n width: slotWidth - rightOffset\n });\n slotRange.addEvent({\n slotIndex: startIndex,\n start: startIndex,\n end: endIndex,\n element: element\n });\n allDayEvents.push({\n slotIndex: startIndex,\n start: startIndex,\n end: endIndex,\n element: element\n });\n var rows = SchedulerView.createRows(allDayEvents);\n if (rows.length && rows.length > currentColumnCount) {\n this._headerColumnCount = rows.length;\n }\n var top = slotRange.start.offsetTop;\n for (var idx = 0, length = rows.length; idx < length; idx++) {\n var rowEvents = rows[idx].events;\n for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n $(rowEvents[j].element).css({ top: top + idx * eventHeight });\n }\n }\n },\n _arrangeColumns: function (element, top, height, slotRange) {\n var startSlot = slotRange.start;\n element = {\n element: element,\n slotIndex: startSlot.index,\n start: top,\n end: top + height\n };\n var columns, slotWidth = startSlot.clientWidth, eventRightOffset = slotWidth * 0.1, columnEvents, eventElements = slotRange.events(), slotEvents = SchedulerView.collidingEvents(eventElements, element.start, element.end);\n slotRange.addEvent(element);\n slotEvents.push(element);\n columns = SchedulerView.createColumns(slotEvents);\n var columnWidth = (slotWidth - eventRightOffset) / columns.length;\n for (var idx = 0, length = columns.length; idx < length; idx++) {\n columnEvents = columns[idx].events;\n for (var j = 0, eventLength = columnEvents.length; j < eventLength; j++) {\n var calculatedWidth = columnWidth - 4;\n columnEvents[j].element[0].style.width = (calculatedWidth > 0 ? calculatedWidth : columnWidth) + 'px';\n columnEvents[j].element[0].style.left = (this._isRtl ? eventRightOffset : 0) + startSlot.offsetLeft + idx * columnWidth + 2 + 'px';\n }\n }\n },\n _positionEvent: function (event, element, slotRange) {\n var start = event._startTime || event.start;\n var end = event._endTime || event.end;\n var rect = slotRange.innerRect(start, end, false);\n var height = rect.bottom - rect.top - 2;\n if (height < 0) {\n height = 0;\n }\n element.css({\n top: rect.top,\n height: height\n });\n this._arrangeColumns(element, rect.top, element[0].clientHeight, slotRange);\n },\n _createEventElement: function (event, isOneDayEvent, head, tail) {\n var template = isOneDayEvent ? this.eventTemplate : this.allDayEventTemplate;\n var options = this.options;\n var editable = options.editable;\n var isMobile = this._isMobile();\n var showDelete = editable && editable.destroy !== false && !isMobile;\n var resizable = editable && editable.resize !== false;\n var startDate = getDate(this.startDate());\n var endDate = getDate(this.endDate());\n var startTime = getMilliseconds(this.startTime());\n var endTime = getMilliseconds(this.endTime());\n var eventStartTime = event._time('start');\n var eventEndTime = event._time('end');\n var middle;\n if (startTime >= endTime) {\n endTime = getMilliseconds(new Date(this.endTime().getTime() + MS_PER_DAY - 1));\n }\n if (!isOneDayEvent && !event.isAllDay) {\n endDate = new Date(endDate.getTime() + MS_PER_DAY);\n }\n var eventStartDate = event.start;\n var eventEndDate = event.end;\n if (event.isAllDay) {\n eventEndDate = getDate(event.end);\n }\n if (!isInDateRange(getDate(eventStartDate), startDate, endDate) && !isInDateRange(eventEndDate, startDate, endDate) || isOneDayEvent && eventStartTime < startTime && eventEndTime > endTime) {\n middle = true;\n } else if (getDate(eventStartDate) < startDate || isOneDayEvent && eventStartTime < startTime) {\n tail = true;\n } else if (eventEndDate > endDate && !isOneDayEvent || isOneDayEvent && eventEndTime > endTime) {\n head = true;\n }\n var resources = this.eventResources(event);\n if (event._startTime && eventStartTime !== kendo.date.getMilliseconds(event.start)) {\n eventStartDate = new Date(eventStartTime);\n eventStartDate = kendo.timezone.apply(eventStartDate, 'Etc/UTC');\n }\n if (event._endTime && eventEndTime !== kendo.date.getMilliseconds(event.end)) {\n eventEndDate = new Date(eventEndTime);\n eventEndDate = kendo.timezone.apply(eventEndDate, 'Etc/UTC');\n }\n var data = extend({}, {\n ns: kendo.ns,\n resizable: resizable,\n showDelete: showDelete,\n middle: middle,\n head: head,\n tail: tail,\n singleDay: this._dates.length == 1,\n resources: resources,\n inverseColor: false,\n messages: options.messages\n }, event, {\n start: eventStartDate,\n end: eventEndDate\n });\n var element = $(template(data));\n this.angular('compile', function () {\n return {\n elements: element,\n data: [{ dataItem: data }]\n };\n });\n return element;\n },\n _isInTimeSlot: function (event) {\n var slotStartTime = this.startTime(), slotEndTime = this.endTime(), startTime = event._startTime || event.start, endTime = event._endTime || event.end;\n if (getMilliseconds(slotEndTime) === getMilliseconds(kendo.date.getDate(slotEndTime))) {\n slotEndTime = kendo.date.getDate(slotEndTime);\n setTime(slotEndTime, MS_PER_DAY - 1);\n }\n if (event._date('end') > event._date('start')) {\n endTime = +event._date('end') + (MS_PER_DAY - 1);\n }\n endTime = event._endTime ? endTime - event._date('end') : getMilliseconds(new Date(endTime));\n startTime = event._startTime ? startTime - event._date('start') : getMilliseconds(new Date(startTime));\n slotEndTime = getMilliseconds(slotEndTime);\n slotStartTime = getMilliseconds(slotStartTime);\n if (slotStartTime === startTime && startTime === endTime) {\n return true;\n }\n var overlaps = startTime !== slotEndTime;\n return isInTimeRange(startTime, slotStartTime, slotEndTime, overlaps) || isInTimeRange(endTime, slotStartTime, slotEndTime, overlaps) || isInTimeRange(slotStartTime, startTime, endTime) || isInTimeRange(slotEndTime, startTime, endTime);\n },\n _isInDateSlot: function (event) {\n var groups = this.groups[0];\n var slotStart = groups.firstSlot().start;\n var slotEnd = groups.lastSlot().end - 1;\n var startTime = kendo.date.toUtcTime(event.start);\n var endTime = kendo.date.toUtcTime(event.end);\n return (isInDateRange(startTime, slotStart, slotEnd) || isInDateRange(endTime, slotStart, slotEnd) || isInDateRange(slotStart, startTime, endTime) || isInDateRange(slotEnd, startTime, endTime)) && (!isInDateRange(endTime, slotStart, slotStart) || isInDateRange(endTime, startTime, startTime) || event.isAllDay);\n },\n _updateAllDayHeaderHeight: function (height) {\n if (this._height !== height) {\n this._height = height;\n var allDaySlots = this.element.find('.k-scheduler-header-all-day td');\n if (allDaySlots.length) {\n allDaySlots.parent().add(this.element.find('.k-scheduler-times-all-day').parent()).height(height);\n for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n this.groups[groupIndex].refresh();\n }\n }\n }\n },\n _renderEvents: function (events, groupIndex) {\n var allDayEventContainer = this.datesHeader.find('.k-scheduler-header-wrap > div');\n var byDate = this._isGroupedByDate();\n var event;\n var idx;\n var length;\n for (idx = 0, length = events.length; idx < length; idx++) {\n event = events[idx];\n if (this._isInDateSlot(event)) {\n var isMultiDayEvent = event.isAllDay || event.duration() >= MS_PER_DAY;\n var container = isMultiDayEvent && !this._isVerticallyGrouped() ? allDayEventContainer : this.content;\n var element, ranges, range, start, end, group;\n if (!isMultiDayEvent) {\n if (this._isInTimeSlot(event)) {\n group = this.groups[groupIndex];\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n ranges = group.slotRanges(event);\n var rangeCount = ranges.length;\n for (var rangeIndex = 0; rangeIndex < rangeCount; rangeIndex++) {\n range = ranges[rangeIndex];\n start = event.start;\n end = event.end;\n if (rangeCount > 1) {\n if (rangeIndex === 0) {\n end = range.end.endDate();\n } else if (rangeIndex == rangeCount - 1) {\n start = range.start.startDate();\n } else {\n start = range.start.startDate();\n end = range.end.endDate();\n }\n }\n var occurrence = event.clone({\n start: start,\n end: end,\n _startTime: event._startTime,\n _endTime: event.endTime\n });\n if (this._isInTimeSlot(occurrence)) {\n var head = range.head;\n element = this._createEventElement(event, !isMultiDayEvent, head, range.tail);\n element.appendTo(container);\n this._inverseEventColor(element);\n this._positionEvent(occurrence, element, range);\n addContinuousEvent(group, range, element, false);\n }\n }\n }\n } else if (this.options.allDaySlot) {\n group = this.groups[groupIndex];\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n ranges = group.slotRanges(event);\n if (ranges.length) {\n range = ranges[0];\n var startIndex = range.start.index;\n var endIndex = range.end.index;\n if (byDate && startIndex !== endIndex) {\n start = range.start.start;\n end = range.end.end;\n var newStart = new Date(start);\n var newEnd = new Date(start);\n for (var i = range.start.index; i <= range.end.index; i++) {\n element = this._createEventElement(event, !isMultiDayEvent, i !== endIndex, i !== startIndex);\n var dateRange = group.daySlotRanges(newStart, newEnd, true)[0];\n newEnd.setDate(newEnd.getDate() + 1);\n newStart.setDate(newStart.getDate() + 1);\n this._positionAllDayEvent(element, dateRange);\n addContinuousEvent(group, dateRange, element, true);\n element.appendTo(container);\n this._inverseEventColor(element);\n }\n } else {\n element = this._createEventElement(event, !isMultiDayEvent);\n this._positionAllDayEvent(element, ranges[0]);\n addContinuousEvent(group, ranges[0], element, true);\n element.appendTo(container);\n this._inverseEventColor(element);\n }\n }\n }\n }\n }\n },\n render: function (events) {\n this._headerColumnCount = 0;\n this._groups();\n this.element.find('.k-event').remove();\n events = new kendo.data.Query(events).sort([\n {\n field: 'start',\n dir: 'asc'\n },\n {\n field: 'end',\n dir: 'desc'\n }\n ]).toArray();\n var eventsByResource = [];\n this._eventsByResource(events, this.groupedResources, eventsByResource);\n var eventsPerDate = $.map(this._dates, function (date) {\n return Math.max.apply(null, $.map(eventsByResource, function (events) {\n return $.grep(events, function (event) {\n return event.isMultiDay() && isInDateRange(date, getDate(event.start), getDate(event.end));\n }).length;\n }));\n });\n var height = Math.max.apply(null, eventsPerDate);\n this._updateAllDayHeaderHeight((height + 1) * this._allDayHeaderHeight);\n for (var groupIndex = 0; groupIndex < eventsByResource.length; groupIndex++) {\n this._renderEvents(eventsByResource[groupIndex], groupIndex);\n }\n this.refreshLayout();\n this._currentTime(false);\n this.trigger('activate');\n },\n _eventsByResource: function (events, resources, result) {\n var resource = resources[0];\n if (resource) {\n var view = resource.dataSource.view();\n for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n var value = this._resourceValue(resource, view[itemIdx]);\n var eventsFilteredByResource = new kendo.data.Query(events).filter({\n field: resource.field,\n operator: SchedulerView.groupEqFilter(value)\n }).toArray();\n if (resources.length > 1) {\n this._eventsByResource(eventsFilteredByResource, resources.slice(1), result);\n } else {\n result.push(eventsFilteredByResource);\n }\n }\n } else {\n result.push(events);\n }\n },\n _columnOffsetForResource: function (index) {\n return this._columnCountForLevel(index) / this._columnCountForLevel(index - 1);\n },\n _columnCountForLevel: function (level) {\n var columnLevel = this.columnLevels[level];\n return columnLevel ? columnLevel.length : 0;\n },\n _rowCountForLevel: function (level) {\n var rowLevel = this.rowLevels[level];\n return rowLevel ? rowLevel.length : 0;\n },\n clearSelection: function () {\n this.content.add(this.datesHeader).find('.k-state-selected').removeAttr('id').attr('aria-selected', false).removeClass('k-state-selected');\n },\n _updateDirection: function (selection, ranges, multiple, reverse, vertical) {\n var isDaySlot = selection.isAllDay;\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n if (multiple) {\n if (vertical) {\n if (!isDaySlot && startSlot.index === endSlot.index && startSlot.collectionIndex === endSlot.collectionIndex) {\n selection.backward = reverse;\n }\n } else {\n if (isDaySlot && startSlot.index === endSlot.index || !isDaySlot && startSlot.collectionIndex === endSlot.collectionIndex) {\n selection.backward = reverse;\n }\n }\n }\n },\n _changeViewPeriod: function (selection, reverse, vertical) {\n if (!vertical) {\n var date = reverse ? this.previousDate() : this.nextDate();\n var start = selection.start;\n var end = selection.end;\n var verticalByDate = this._isGroupedByDate() && this._isVerticallyGrouped();\n var group = this.groups[selection.groupIndex];\n var collection = reverse ? group._timeSlotCollections : group._getCollections(group.daySlotCollectionCount());\n var slots = collection[collection.length - 1]._slots;\n var slotIndex = !reverse && !group.daySlotCollectionCount() ? 0 : slots.length - 1;\n var endMilliseconds;\n var newDateStart, newDateEnd;\n newDateStart = new Date(date);\n newDateEnd = new Date(date);\n if (this._isInRange(newDateStart, newDateEnd)) {\n return false;\n }\n selection.start = newDateStart;\n selection.end = newDateEnd;\n if (verticalByDate) {\n var newStart = new Date(slots[slotIndex].startDate());\n var newEnd = new Date(slots[slotIndex].endDate());\n endMilliseconds = getMilliseconds(newEnd) ? getMilliseconds(newEnd) : MS_PER_DAY;\n setTime(selection.start, getMilliseconds(newStart));\n setTime(selection.end, endMilliseconds);\n if (group.daySlotCollectionCount()) {\n selection.isAllDay = !selection.isAllDay;\n }\n } else {\n endMilliseconds = selection.isAllDay || !getMilliseconds(end) ? MS_PER_DAY : getMilliseconds(end);\n setTime(selection.start, getMilliseconds(start));\n setTime(selection.end, endMilliseconds);\n }\n if (!this._isVerticallyGrouped()) {\n selection.groupIndex = reverse ? this.groups.length - 1 : 0;\n }\n selection.events = [];\n return true;\n }\n }\n });\n extend(true, ui, {\n MultiDayView: MultiDayView,\n DayView: MultiDayView.extend({\n options: {\n name: 'DayView',\n title: 'Day',\n selectedMobileDateFormat: '{0:MMM d}'\n },\n name: 'day'\n }),\n WeekView: MultiDayView.extend({\n options: {\n name: 'WeekView',\n title: 'Week',\n selectedDateFormat: '{0:D} - {1:D}',\n selectedShortDateFormat: '{0:d} - {1:d}'\n },\n name: 'week',\n calculateDateRange: function () {\n var selectedDate = this.options.date, start = kendo.date.dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1), idx, length, dates = [];\n for (idx = 0, length = 7; idx < length; idx++) {\n dates.push(start);\n start = kendo.date.nextDay(start);\n }\n this._render(dates);\n }\n }),\n WorkWeekView: MultiDayView.extend({\n options: {\n name: 'WorkWeekView',\n title: 'Work Week',\n selectedDateFormat: '{0:D} - {1:D}',\n selectedShortDateFormat: '{0:d} - {1:d}'\n },\n name: 'workWeek',\n nextDate: function () {\n var weekStart = kendo.date.dayOfWeek(kendo.date.nextDay(this.startDate()), this.calendarInfo().firstDay, 1);\n return kendo.date.addDays(weekStart, this._workDays[0]);\n },\n previousDate: function () {\n var weekStart = kendo.date.dayOfWeek(this.startDate(), this.calendarInfo().firstDay, -1);\n var workDays = this._workDays;\n return kendo.date.addDays(weekStart, workDays[workDays.length - 1] - 7);\n },\n calculateDateRange: function () {\n var selectedDate = this.options.date, dayOfWeek = kendo.date.dayOfWeek, weekStart = dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1), start = dayOfWeek(weekStart, this.options.workWeekStart, 1), end = dayOfWeek(start, this.options.workWeekEnd, 1), dates = [];\n while (start <= end) {\n dates.push(start);\n start = kendo.date.nextDay(start);\n }\n this._render(dates);\n }\n })\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.scheduler.agendaview', ['kendo.scheduler.view'], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.agendaview',\n name: 'Scheduler Agenda View',\n category: 'web',\n description: 'The Scheduler Agenda View',\n depends: ['scheduler.view'],\n hidden: true\n };\n (function ($) {\n var kendo = window.kendo, ui = kendo.ui, NS = '.kendoAgendaView';\n var EVENT_WRAPPER_FORMAT = '<div class=\"k-task\" title=\"#:(data.title || \"\").replace(/\"/g,\"\\'\")#\" data-#=kendo.ns#uid=\"#=uid#\">' + '# if (resources[0]) {#' + '<span class=\"k-scheduler-mark\" style=\"background-color:#=resources[0].color#\"></span>' + '# } #' + '# if (data.isException()) { #' + '<span class=\"k-icon k-i-non-recurrence\"></span>' + '# } else if (data.isRecurring()) {#' + '<span class=\"k-icon k-i-reload\"></span>' + '# } #' + '<span class=\"k-scheduler-task-text\">{0}</span>' + '#if (showDelete) {#' + '<a href=\"\\\\#\" class=\"k-link k-event-delete\" title=\"${data.messages.destroy}\" aria-label=\"${data.messages.destroy}\"><span class=\"k-icon k-i-close\"></span></a>' + '#}#' + '</div>';\n var EVENT_DATE_TEMPLATE = '# if (!isMobile) { #' + '<strong class=\"k-scheduler-agendaday\">' + '#=kendo.toString(date, \"dd\")#' + '</strong>' + '<em class=\"k-scheduler-agendaweek\">' + '#=kendo.toString(date,\"dddd\")#' + '</em>' + '<span class=\"k-scheduler-agendadate\">' + '#=kendo.toString(date, \"y\")#' + '</span>' + '# } else { #' + '<div class=\"k-scheduler-datecolumn-wrap\">' + '<span class=\"k-mobile-scheduler-agendadate\">' + '<span class=\"k-mobile-scheduler-agendaday\">#=kendo.toString(date, \"dd\")#</span>' + ' ' + '<span class=\"k-mobile-scheduler-agendamonth\">#=kendo.toString(date, \"MMMM\")#</span>' + '</span>' + '<span class=\"k-mobile-scheduler-agendaweekday\">' + '#=kendo.toString(date, \"dddd\")#' + '</span>' + '</div>' + '# } #';\n var EVENT_GROUP_TEMPLATE = '# if (!isMobile) { #' + '<strong class=\"k-scheduler-adgendagroup\">' + '#=value#' + '</strong>' + '# } else { #' + '<span class=\"k-scheduler-group-text\">' + '#=value#' + '</span>' + '# } #';\n var AgendaGroupedView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _getColumns: function (groupHeaders, columns) {\n return groupHeaders.concat(columns);\n },\n _getGroupsInDay: function () {\n return [];\n },\n _getSumOfItemsForDate: function () {\n return 0;\n },\n _renderTaskGroupsCells: function (headerCells, groups, taskGroupIndex, taskIndex) {\n var view = this._view;\n if (taskGroupIndex === 0 && taskIndex === 0 && groups.length) {\n view._renderTaskGroupsCells(headerCells, groups);\n }\n },\n _renderDateCell: function (tableRow, groups, tasks, date, taskGroupIndex, tasksGroups) {\n var view = this._view;\n var isMobile = view._isMobile();\n tableRow.push(kendo.format('<td class=\"k-scheduler-datecolumn{3}{2}\" rowspan=\"{0}\">{1}</td>', tasks.length, view._dateTemplate({\n date: date,\n isMobile: isMobile\n }), taskGroupIndex == tasksGroups.length - 1 && !groups.length ? ' k-last' : '', !groups.length ? ' k-first' : ''));\n },\n _renderDates: function () {\n return undefined;\n },\n _getParents: function (parentGroups) {\n return parentGroups.splice(0);\n },\n _getGroupsByDate: function () {\n return undefined;\n },\n _renderTaskGroups: function (table, items, parents) {\n var view = this._view;\n table.append(view._renderTaskGroups(items, parents));\n }\n });\n var AgendaGroupedByDateView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _getColumns: function (groupHeaders, columns) {\n var view = this._view;\n if (view._isMobile()) {\n return groupHeaders.concat(columns);\n } else {\n var date = columns.slice(0, 1);\n var columnsWithoutDate = columns.slice(1);\n return date.concat(groupHeaders).concat(columnsWithoutDate);\n }\n },\n _compareDateGroups: function (currentGroup, prevGroup, index) {\n if (currentGroup[index].text == prevGroup[index].text) {\n if (index === 0) {\n return true;\n } else {\n return this._compareDateGroups(currentGroup, prevGroup, index - 1);\n }\n }\n return false;\n },\n _getGroupsInDay: function (tasksGroups, groups) {\n var groupsInDay = [];\n var prevGroup = null;\n for (var tasksGroupIdx = 0; tasksGroupIdx < tasksGroups.length; tasksGroupIdx++) {\n for (var itemsIdx = 0; itemsIdx < tasksGroups[tasksGroupIdx].items.length; itemsIdx++) {\n var idx = 0;\n if (groupsInDay.length === 0) {\n for (idx; idx < groups[tasksGroupIdx].length; idx++) {\n groupsInDay.push([1]);\n }\n } else {\n for (idx; idx < groups[tasksGroupIdx].length; idx++) {\n if (this._compareDateGroups(groups[tasksGroupIdx], prevGroup, idx)) {\n groupsInDay[idx][groupsInDay[idx].length - 1]++;\n } else {\n var lastItemValue = groupsInDay[idx][groupsInDay[idx].length - 1] - 1;\n for (var i = 0; i < lastItemValue; i++) {\n groupsInDay[idx].push(0);\n }\n groupsInDay[idx].push(1);\n }\n }\n }\n prevGroup = groups[tasksGroupIdx];\n }\n }\n return groupsInDay;\n },\n _getSumOfItemsForDate: function (tasksGroups) {\n var sumOfItemsForDate = 0;\n for (var i = 0; i < tasksGroups.length; i++) {\n sumOfItemsForDate += tasksGroups[i].items.length;\n }\n return sumOfItemsForDate;\n },\n _renderTaskGroupsCells: function (headerCells, groups, taskGroupIndex, taskIndex, groupsInDay, sumOfItemsForDate, date, groupsRowSpanIndex) {\n var view = this._view;\n var isMobile = view._isMobile();\n if (!isMobile) {\n if (taskGroupIndex === 0 && taskIndex === 0) {\n headerCells.push(kendo.format('<td class=\"k-scheduler-datecolumn k-first\" rowspan=\"{0}\">{1}</td>', sumOfItemsForDate, view._dateTemplate({\n date: date,\n isMobile: isMobile\n })));\n }\n for (var idx = 0; idx < groups[taskGroupIndex].length; idx++) {\n if (groupsInDay[idx][groupsRowSpanIndex]) {\n headerCells.push(kendo.format('<td class=\"k-scheduler-groupcolumn\" rowspan=\"{0}\">{1}</td>', groupsInDay[idx][groupsRowSpanIndex], view._groupTemplate({\n value: groups[taskGroupIndex][idx].text,\n isMobile: isMobile\n }), groups[taskGroupIndex][idx].className));\n }\n }\n } else {\n if (taskGroupIndex === 0 && taskIndex === 0 && groups.length) {\n view._renderTaskGroupsCells(headerCells, groups);\n }\n }\n },\n _renderDateCell: function () {\n return undefined;\n },\n _renderDates: function (table) {\n var view = this._view;\n var sortedArray = view._groupsByDate.sort(function (a, b) {\n return a.array[0].value.getTime() - b.array[0].value.getTime();\n });\n for (var i = 0; i < sortedArray.length; i++) {\n table.append(view._renderTaskGroups(sortedArray[i].array, sortedArray[i].groups));\n }\n },\n _getParents: function (parentGroups) {\n return parentGroups.slice(0);\n },\n _getGroupsByDate: function (groups, idx, parents) {\n var view = this._view;\n if (groups[idx].items) {\n for (var taskGroupIndex = 0; taskGroupIndex < groups[idx].items.length; taskGroupIndex++) {\n var date = groups[idx].items[taskGroupIndex].value;\n var dateExists = false;\n for (var i = 0; i < view._groupsByDate.length; i++) {\n if (view._groupsByDate[i].array[0].value.getTime() === date.getTime()) {\n dateExists = true;\n view._groupsByDate[i].array.push(groups[idx].items[taskGroupIndex]);\n view._groupsByDate[i].groups.push(parents);\n }\n }\n if (!dateExists) {\n view._groupsByDate.push({\n array: [groups[idx].items[taskGroupIndex]],\n groups: [parents]\n });\n }\n }\n }\n },\n _renderTaskGroups: function () {\n return undefined;\n }\n });\n kendo.ui.scheduler.AgendaGroupedView = AgendaGroupedView;\n kendo.ui.scheduler.AgendaGroupedByDateView = AgendaGroupedByDateView;\n ui.AgendaView = ui.SchedulerView.extend({\n init: function (element, options) {\n ui.SchedulerView.fn.init.call(this, element, options);\n this._groupedView = this._getGroupedView();\n options = this.options;\n if (options.editable) {\n options.editable = $.extend({ 'delete': true }, options.editable, {\n create: false,\n update: false\n }, { messages: options.messages });\n }\n this.title = options.title;\n this._eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_FORMAT);\n this._dateTemplate = kendo.template(options.eventDateTemplate);\n this._groupTemplate = kendo.template(options.eventGroupTemplate);\n this._timeTemplate = kendo.template(options.eventTimeTemplate);\n this.element.on('mouseenter' + NS, '.k-scheduler-agenda .k-scheduler-content tr', '_mouseenter').on('mouseleave' + NS, '.k-scheduler-agenda .k-scheduler-content tr', '_mouseleave').on('click' + NS, '.k-scheduler-agenda .k-scheduler-content .k-link:has(.k-i-close)', '_remove');\n this._renderLayout(options.date);\n },\n name: 'agenda',\n _getGroupedView: function () {\n if (this._isGroupedByDate()) {\n return new kendo.ui.scheduler.AgendaGroupedByDateView(this);\n } else {\n return new kendo.ui.scheduler.AgendaGroupedView(this);\n }\n },\n _mouseenter: function (e) {\n $(e.currentTarget).addClass('k-state-hover');\n },\n _mouseleave: function (e) {\n $(e.currentTarget).removeClass('k-state-hover');\n },\n _remove: function (e) {\n e.preventDefault();\n this.trigger('remove', { uid: $(e.currentTarget).closest('.k-task').attr(kendo.attr('uid')) });\n },\n nextDate: function () {\n return kendo.date.nextDay(this.startDate());\n },\n startDate: function () {\n return this._startDate;\n },\n endDate: function () {\n return this._endDate;\n },\n previousDate: function () {\n return kendo.date.previousDay(this.startDate());\n },\n _renderLayout: function (date) {\n this._startDate = date;\n this._endDate = kendo.date.addDays(date, 7);\n this.createLayout(this._layout());\n this._footer();\n this.table.addClass('k-scheduler-agenda');\n },\n _layout: function () {\n var columns = [\n {\n text: this.options.messages.time,\n className: 'k-scheduler-timecolumn'\n },\n { text: this.options.messages.event }\n ];\n if (!this._isMobile()) {\n columns.splice(0, 0, {\n text: this.options.messages.date,\n className: 'k-scheduler-datecolumn'\n });\n }\n var resources = this.groupedResources;\n if (resources.length) {\n var groupHeaders = [];\n for (var idx = 0; idx < resources.length; idx++) {\n groupHeaders.push({\n text: '',\n className: 'k-scheduler-groupcolumn'\n });\n }\n columns = this._groupedView._getColumns(groupHeaders, columns);\n }\n return { columns: columns };\n },\n _tasks: function (events) {\n var tasks = [];\n for (var idx = 0; idx < events.length; idx++) {\n var event = events[idx];\n var start = event.start;\n var end = event.isAllDay ? kendo.date.getDate(event.end) : event.end;\n var eventDurationInDays = Math.ceil((end - kendo.date.getDate(start)) / kendo.date.MS_PER_DAY);\n if (event.isAllDay) {\n eventDurationInDays += 1;\n }\n var task = event.clone();\n task.startDate = kendo.date.getDate(start);\n if (task.startDate >= this.startDate()) {\n tasks.push(task);\n }\n if (eventDurationInDays > 1) {\n task.end = kendo.date.nextDay(start);\n task.head = true;\n for (var day = 1; day < eventDurationInDays; day++) {\n start = task.end;\n task = event.clone();\n task.start = task.startDate = kendo.date.getDate(start);\n task.end = kendo.date.nextDay(start);\n if (day == eventDurationInDays - 1) {\n task.end = new Date(task.start.getFullYear(), task.start.getMonth(), task.start.getDate(), end.getHours(), end.getMinutes(), end.getSeconds(), end.getMilliseconds());\n task.tail = true;\n } else {\n task.isAllDay = true;\n task.middle = true;\n }\n if (kendo.date.getDate(task.end) <= this.endDate() && task.start >= this.startDate() || kendo.date.getDate(task.start).getTime() == this.endDate().getTime()) {\n tasks.push(task);\n }\n }\n }\n }\n return new kendo.data.Query(tasks).sort([\n {\n field: 'start',\n dir: 'asc'\n },\n {\n field: 'end',\n dir: 'asc'\n }\n ]).groupBy({ field: 'startDate' }).toArray();\n },\n _renderTaskGroups: function (tasksGroups, groups) {\n var tableRows = [];\n var editable = this.options.editable;\n var showDelete = editable && editable.destroy !== false && !this._isMobile();\n var isMobile = this._isMobile();\n var sumOfItemsForDate = this._groupedView._getSumOfItemsForDate(tasksGroups);\n var groupsInDay = this._groupedView._getGroupsInDay(tasksGroups, groups);\n var groupsRowSpanIndex = 0;\n for (var taskGroupIndex = 0; taskGroupIndex < tasksGroups.length; taskGroupIndex++) {\n var date = tasksGroups[taskGroupIndex].value;\n var tasks = tasksGroups[taskGroupIndex].items;\n var today = kendo.date.isToday(date);\n for (var taskIndex = 0; taskIndex < tasks.length; taskIndex++) {\n var task = tasks[taskIndex];\n var tableRow = [];\n var headerCells = !isMobile ? tableRow : [];\n this._groupedView._renderTaskGroupsCells(headerCells, groups, taskGroupIndex, taskIndex, groupsInDay, sumOfItemsForDate, date, groupsRowSpanIndex);\n groupsRowSpanIndex++;\n if (taskIndex === 0) {\n if (isMobile) {\n headerCells.push(kendo.format('<td class=\"k-scheduler-datecolumn {1}\" colspan=\"2\">{0}</td>', this._dateTemplate({\n date: date,\n isMobile: isMobile\n }), !this.groupedResources.length ? 'k-first' : ''));\n tableRows.push('<tr role=\"row\" aria-selected=\"false\"' + (today ? ' class=\"k-today\">' : '>') + headerCells.join('') + '</tr>');\n } else {\n this._groupedView._renderDateCell(tableRow, groups, tasks, date, taskGroupIndex, tasksGroups);\n }\n }\n if (task.head) {\n task.format = '{0:t}';\n } else if (task.tail) {\n task.format = '{1:t}';\n } else {\n task.format = '{0:t}-{1:t}';\n }\n task.resources = this.eventResources(task);\n tableRow.push(kendo.format('<td class=\"k-scheduler-timecolumn {4}\"><div>{0}{1}{2}</div></td><td>{3}</td>', task.tail || task.middle ? '<span class=\"k-icon k-i-arrow-60-left\"></span>' : '', this._timeTemplate(task.clone({\n start: task._startTime || task.start,\n end: task.endTime || task.end\n })), task.head || task.middle ? '<span class=\"k-icon k-i-arrow-60-right\"></span>' : '', this._eventTemplate(task.clone({\n showDelete: showDelete,\n messages: this.options.messages\n })), !this.groupedResources.length && isMobile ? 'k-first' : ''));\n tableRows.push('<tr role=\"row\" aria-selected=\"false\"' + (today ? ' class=\"k-today\">' : '>') + tableRow.join('') + '</tr>');\n }\n }\n return tableRows.join('');\n },\n _renderTaskGroupsCells: function (headerCells, groups) {\n var isMobile = this._isMobile();\n for (var idx = 0; idx < groups.length; idx++) {\n headerCells.push(kendo.format('<td class=\"k-scheduler-groupcolumn{2}\" rowspan=\"{0}\">{1}</td>', groups[idx].rowSpan, this._groupTemplate({\n value: groups[idx].text,\n isMobile: isMobile\n }), groups[idx].className));\n }\n },\n render: function (events) {\n var table = this.content.find('table').empty();\n var groups = [];\n if (events.length > 0) {\n var resources = this.groupedResources;\n if (resources.length) {\n groups = this._createGroupConfiguration(events, resources, null);\n this._groupsByDate = [];\n this._renderGroups(groups, table, []);\n this._groupedView._renderDates(table);\n } else {\n groups = this._tasks(events);\n table.append(this._renderTaskGroups(groups, []));\n }\n }\n var items = this._eventsList = flattenTaskGroups(groups);\n this._angularItems(table, items);\n this.refreshLayout();\n this.trigger('activate');\n },\n _angularItems: function (table, items) {\n this.angular('compile', function () {\n var data = [], elements = items.map(function (item) {\n data.push({ dataItem: item });\n return table.find('.k-task[' + kendo.attr('uid') + '=' + item.uid + ']');\n });\n return {\n elements: elements,\n data: data\n };\n });\n },\n _renderGroups: function (groups, table, parentGroups) {\n for (var idx = 0, length = groups.length; idx < length; idx++) {\n var parents = this._groupedView._getParents(parentGroups);\n parents.push(groups[idx]);\n this._groupedView._getGroupsByDate(groups, idx, parents);\n if (groups[idx].groups) {\n this._renderGroups(groups[idx].groups, table, parents);\n } else {\n this._groupedView._renderTaskGroups(table, groups[idx].items, parents);\n }\n }\n },\n _createGroupConfiguration: function (events, resources, parent) {\n var resource = resources[0];\n var configuration = [];\n var data = resource.dataSource.view();\n var isMobile = this._isMobile();\n for (var dataIndex = 0; dataIndex < data.length; dataIndex++) {\n var value = resourceValue(resource, data[dataIndex]);\n var tmp = new kendo.data.Query(events).filter({\n field: resource.field,\n operator: ui.SchedulerView.groupEqFilter(value)\n }).toArray();\n if (tmp.length) {\n var tasks = this._tasks(tmp);\n var className = parent ? '' : ' k-first';\n if (dataIndex === data.length - 1 && (!parent || parent.className.indexOf('k-last') > -1)) {\n className += ' k-last';\n }\n var obj = {\n text: kendo.getter(resource.dataTextField)(data[dataIndex]),\n value: value,\n rowSpan: 0,\n className: className\n };\n if (resources.length > 1) {\n obj.groups = this._createGroupConfiguration(tmp, resources.slice(1), obj);\n if (parent) {\n parent.rowSpan += obj.rowSpan;\n }\n } else {\n obj.items = tasks;\n var span = rowSpan(obj.items);\n if (isMobile) {\n span += obj.items.length;\n }\n obj.rowSpan = span;\n if (parent) {\n parent.rowSpan += span;\n }\n }\n configuration.push(obj);\n }\n }\n return configuration;\n },\n selectionByElement: function (cell) {\n var index, event;\n cell = $(cell);\n if (cell.hasClass('k-scheduler-datecolumn') || !this._eventsList.length) {\n return;\n }\n if (cell.is('.k-task')) {\n cell = cell.closest('td');\n }\n if (this._isMobile()) {\n var parent = cell.parent();\n index = parent.parent().children().filter(function () {\n return $(this).children(':not(.k-scheduler-datecolumn)').length;\n }).index(parent);\n } else {\n index = cell.parent().index();\n }\n event = this._eventsList[index];\n return {\n index: index,\n start: event.start,\n end: event.end,\n isAllDay: event.isAllDay,\n uid: event.uid\n };\n },\n select: function (selection) {\n this.clearSelection();\n var row = this.table.find('.k-task').eq(selection.index).closest('tr').addClass('k-state-selected').attr('aria-selected', true)[0];\n this.current(row);\n },\n move: function (selection, key) {\n var handled = false;\n var index = selection.index;\n if (key == kendo.keys.UP) {\n index--;\n handled = true;\n } else if (key == kendo.keys.DOWN) {\n index++;\n handled = true;\n }\n if (handled) {\n var event = this._eventsList[index];\n if (event) {\n selection.start = event.start;\n selection.end = event.end;\n selection.isAllDay = event.isAllDay;\n selection.events = [event.uid];\n selection.index = index;\n }\n }\n return handled;\n },\n moveToEvent: function () {\n return false;\n },\n constrainSelection: function (selection) {\n var event = this._eventsList[0];\n if (event) {\n selection.start = event.start;\n selection.end = event.end;\n selection.isAllDay = event.isAllDay;\n selection.events = [event.uid];\n selection.index = 0;\n }\n },\n isInRange: function () {\n return true;\n },\n destroy: function () {\n if (this.element) {\n this.element.off(NS);\n }\n ui.SchedulerView.fn.destroy.call(this);\n },\n options: {\n title: 'Agenda',\n name: 'agenda',\n editable: true,\n selectedDateFormat: '{0:D}-{1:D}',\n selectedShortDateFormat: '{0:d} - {1:d}',\n selectedMobileDateFormat: '{0: MMM} {0:dd} - {1:dd}',\n eventTemplate: '#:title#',\n eventTimeTemplate: '#if(data.isAllDay) {#' + '#=this.options.messages.allDay#' + '#} else { #' + '#=kendo.format(format, start, end)#' + '# } #',\n eventDateTemplate: EVENT_DATE_TEMPLATE,\n eventGroupTemplate: EVENT_GROUP_TEMPLATE,\n messages: {\n event: 'Event',\n date: 'Date',\n time: 'Time',\n allDay: 'all day'\n }\n }\n });\n function rowSpan(tasks) {\n var result = 0;\n for (var idx = 0, length = tasks.length; idx < length; idx++) {\n result += tasks[idx].items.length;\n }\n return result;\n }\n function resourceValue(resource, item) {\n if (resource.valuePrimitive) {\n item = kendo.getter(resource.dataValueField)(item);\n }\n return item;\n }\n function flattenTaskGroups(groups) {\n var idx = 0, length = groups.length, item, result = [];\n for (; idx < length; idx++) {\n item = groups[idx];\n if (item.groups) {\n item = flattenGroup(item.groups);\n result = result.concat(item);\n } else {\n result = result.concat(flattenGroup(item.items));\n }\n }\n return result;\n }\n function flattenGroup(groups) {\n var items = [].concat(groups), item = items.shift(), result = [], push = [].push;\n while (item) {\n if (item.groups) {\n push.apply(items, item.groups);\n } else if (item.items) {\n push.apply(items, item.items);\n } else {\n push.call(result, item);\n }\n item = items.shift();\n }\n return result;\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.scheduler.monthview', ['kendo.scheduler.view'], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.monthview',\n name: 'Scheduler Month View',\n category: 'web',\n description: 'The Scheduler Month View',\n depends: ['scheduler.view'],\n hidden: true\n };\n (function ($) {\n var kendo = window.kendo, ui = kendo.ui, SchedulerView = ui.SchedulerView, NS = '.kendoMonthView', extend = $.extend, getDate = kendo.date.getDate, MS_PER_DAY = kendo.date.MS_PER_DAY, NUMBER_OF_ROWS = 6, NUMBER_OF_COLUMNS = 7, INVERSE_COLOR_CLASS = 'k-event-inverse', DAY_TEMPLATE = kendo.template('<span class=\"k-link k-nav-day\">#:kendo.toString(date, \"dd\")#</span>'), EVENT_WRAPPER_STRING = '<div role=\"gridcell\" aria-selected=\"false\" data-#=ns#uid=\"#=uid#\"' + '#if (resources[0]) { #' + 'style=\"background-color:#=resources[0].color #; border-color: #=resources[0].color#\"' + 'class=\"k-event\"' + '#} else {#' + 'class=\"k-event\"' + '#}#' + '>' + '<span class=\"k-event-actions\">' + '# if(data.tail || data.middle) {#' + '<span class=\"k-icon k-i-arrow-60-left\"></span>' + '#}#' + '# if(data.isException()) {#' + '<span class=\"k-icon k-i-non-recurrence\"></span>' + '# } else if(data.isRecurring()) {#' + '<span class=\"k-icon k-i-reload\"></span>' + '#}#' + '</span>' + '{0}' + '<span class=\"k-event-actions\">' + '#if (showDelete) {#' + '<a href=\"\\\\#\" class=\"k-link k-event-delete\" title=\"${data.messages.destroy}\" aria-label=\"${data.messages.destroy}\"><span class=\"k-icon k-i-close\"></span></a>' + '#}#' + '# if(data.head || data.middle) {#' + '<span class=\"k-icon k-i-arrow-60-right\"></span>' + '#}#' + '</span>' + '# if(resizable && !data.tail && !data.middle) {#' + '<span class=\"k-resize-handle k-resize-w\"></span>' + '#}#' + '# if(resizable && !data.head && !data.middle) {#' + '<span class=\"k-resize-handle k-resize-e\"></span>' + '#}#' + '</div>', EVENT_TEMPLATE = kendo.template('<div title=\"#=title.replace(/\"/g,\"&\\\\#34;\")#\">' + '<div class=\"k-event-template\">#:title#</div>' + '</div>');\n var MORE_BUTTON_TEMPLATE = kendo.template('<div style=\"width:#=width#px;left:#=left#px;top:#=top#px\" class=\"k-more-events k-button\"><span>...</span></div>');\n var MonthGroupedView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _verticalRowCountForLevel: function (level) {\n var view = this._view;\n return view._rowCountForLevel(level);\n },\n _horizontalGroupCountForLevel: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level);\n },\n _getCalendarRowsLength: function (cellsPerRow, cellCount) {\n return cellCount / cellsPerRow;\n },\n _createRows: function (start, startIdx, horizontalGroupCount, verticalGroupIndex) {\n var view = this._view;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n var html = '';\n for (var groupIdx = 0; groupIdx < horizontalGroupCount; groupIdx++) {\n html += view._createRow(start, startIdx, cellsPerRow, isVerticallyGrouped ? verticalGroupIndex : groupIdx);\n }\n return html;\n },\n _adjustStartDate: function (start) {\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n },\n _getContent: function (content, startDate, resources) {\n return content({\n date: startDate,\n resources: resources\n });\n },\n _getTimeSlotByPosition: function (x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n return group.daySlotByPosition(x, y);\n },\n _nextSlotStartDate: function (startDate) {\n return kendo.date.nextDay(startDate);\n },\n _createRowsLayout: function (resources, rows, groupHeaderTemplate) {\n var view = this._view;\n return view._createRowsLayout(resources, rows, groupHeaderTemplate);\n },\n _createVerticalColumnsLayout: function (resources, rows, groupHeaderTemplate, columns) {\n return columns;\n },\n _createColumnsLayout: function (resources, columns, groupHeaderTemplate) {\n var view = this._view;\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate);\n },\n _verticalGroupCount: function (level) {\n var view = this._view;\n return view._rowCountForLevel(level);\n },\n _horizontalGroupCount: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level) / view._columnOffsetForResource(level);\n },\n _positionEvent: function (event, group, range, rangeCount, start, end, rangeIndex) {\n var view = this._view;\n var isMobile = view._isMobile();\n if (rangeCount > 1) {\n if (rangeIndex === 0) {\n end = range.end.endDate();\n } else if (rangeIndex == rangeCount - 1) {\n start = range.start.startDate();\n } else {\n start = range.start.startDate();\n end = range.end.endDate();\n }\n }\n var occurrence = event.clone({\n start: start,\n end: end,\n head: range.head,\n tail: range.tail\n });\n if (isMobile) {\n view._positionMobileEvent(range, view._createEventElement(occurrence), group);\n } else {\n view._positionEvent(range, view._createEventElement(occurrence), group);\n }\n },\n _addDaySlotCollections: function (groupCount, tableRows, startDate) {\n var view = this._view;\n var columnCount = NUMBER_OF_COLUMNS;\n var rowCount = NUMBER_OF_ROWS;\n for (var groupIndex = 0; groupIndex < groupCount; groupIndex++) {\n var cellCount = 0;\n var rowMultiplier = 0;\n if (view._isVerticallyGrouped()) {\n rowMultiplier = groupIndex;\n }\n for (var rowIndex = rowMultiplier * rowCount; rowIndex < (rowMultiplier + 1) * rowCount; rowIndex++) {\n var group = view.groups[groupIndex];\n var collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n var tableRow = tableRows[rowIndex];\n var cells = tableRow.children;\n var cellMultiplier = 0;\n tableRow.setAttribute('role', 'row');\n if (!view._isVerticallyGrouped()) {\n cellMultiplier = groupIndex;\n }\n for (var cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n var cell = cells[cellIndex];\n view.addDaySlot(collection, cell, startDate, cellCount);\n cellCount++;\n }\n }\n }\n },\n _changePeriodGroupIndex: function (reverse) {\n var view = this._view;\n return reverse ? view.groups.length - 1 : 0;\n },\n _createResizeHint: function (range) {\n var view = this._view;\n var left = range.startSlot().offsetLeft;\n var top = range.start.offsetTop;\n var width = range.innerWidth();\n var height = range.start.clientHeight - 2;\n var hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n view._appendResizeHint(hint);\n },\n _createMoveHint: function (range, event) {\n var view = this._view;\n var startSlot = range.startSlot();\n var endSlot = range.endSlot();\n var hint = view._createEventElement(event.clone({\n head: range.head,\n tail: range.tail\n }));\n hint.css({\n left: startSlot.offsetLeft + 2,\n top: startSlot.offsetTop + startSlot.firstChildHeight,\n height: view.options.eventHeight,\n width: range.innerWidth() - (startSlot.index !== endSlot.index ? 5 : 4)\n });\n hint.addClass('k-event-drag-hint');\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n view._appendMoveHint(hint);\n }\n });\n var MonthGroupedByDateView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _verticalRowCountForLevel: function () {\n return 1;\n },\n _horizontalGroupCountForLevel: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level + 1) / NUMBER_OF_COLUMNS;\n },\n _createRows: function (start, startIdx, horizontalGroupCount) {\n var view = this._view;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n var html = '';\n var dateIdx = 0;\n if (isVerticallyGrouped) {\n var verticalStart = new Date(start);\n var groupCount = view._groupCount();\n for (dateIdx; dateIdx < NUMBER_OF_ROWS; dateIdx++) {\n html += view._createRow(verticalStart, startIdx, groupCount, dateIdx);\n verticalStart = kendo.date.addDays(verticalStart, cellsPerRow);\n }\n start = kendo.date.nextDay(start);\n } else {\n for (dateIdx; dateIdx < cellsPerRow; dateIdx++) {\n html += view._createRow(start, startIdx, horizontalGroupCount, dateIdx);\n start = kendo.date.nextDay(start);\n }\n start = kendo.date.addDays(start, cellsPerRow);\n }\n return html;\n },\n _adjustStartDate: function (start, isLastRow) {\n var view = this._view;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n if (isVerticallyGrouped) {\n if (isLastRow) {\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS * (NUMBER_OF_ROWS - 1) + 1);\n } else {\n return kendo.date.nextDay(start);\n }\n }\n return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n },\n _getContent: function (content, startDate, resources, cellIdx) {\n if (cellIdx === 0) {\n return content({\n date: startDate,\n resources: resources\n });\n }\n return '';\n },\n _getTimeSlotByPosition: function (x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n return group.daySlotByPosition(x, y, true);\n },\n _nextSlotStartDate: function (startDate) {\n return startDate;\n },\n _getCalendarRowsLength: function () {\n var view = this._view;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n return isVerticallyGrouped ? NUMBER_OF_COLUMNS : NUMBER_OF_ROWS;\n },\n _createRowsLayout: function (resources, rows, groupHeaderTemplate, columns) {\n var view = this._view;\n return view._createDateLayout(columns, null, false);\n },\n _createVerticalColumnsLayout: function (resources, rows, groupHeaderTemplate) {\n var view = this._view;\n var resource = resources[0];\n var configuration = [];\n var data = resource.dataSource.view();\n for (var dataIndex = 0; dataIndex < data.length * NUMBER_OF_ROWS; dataIndex++) {\n var obj = {\n text: groupHeaderTemplate({\n text: kendo.htmlEncode(kendo.getter(resource.dataTextField)(data[dataIndex % data.length])),\n color: kendo.getter(resource.dataColorField)(data[dataIndex % data.length]),\n field: resource.field,\n title: resource.title,\n name: resource.name,\n value: kendo.getter(resource.dataValueField)(data[dataIndex % data.length])\n }),\n className: 'k-slot-cell'\n };\n obj.columns = view._createColumnsLayout(resources.slice(1), null, groupHeaderTemplate);\n configuration.push(obj);\n }\n return configuration;\n },\n _createColumnsLayout: function (resources, columns, groupHeaderTemplate, subColumns) {\n var view = this._view;\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate, subColumns, true);\n },\n _verticalGroupCount: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level) / NUMBER_OF_ROWS;\n },\n _horizontalGroupCount: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level) / NUMBER_OF_COLUMNS;\n },\n _positionEvent: function (event, group, range, rangeCount, start, end) {\n var view = this._view;\n var startIndex = range.start.index;\n var endIndex = range.end.index;\n var isMobile = view._isMobile();\n for (var i = range.start.index; i <= range.end.index; i++) {\n var currentSlot = range.collection._slots[i];\n var dateRange = group.daySlotRanges(currentSlot.start, currentSlot.start, true)[0];\n var occurrence = event.clone({\n start: i === startIndex ? start : currentSlot.startDate(),\n end: i === endIndex ? end : currentSlot.endDate(),\n head: i !== endIndex || range.head,\n tail: i !== startIndex || range.tail\n });\n if (isMobile) {\n view._positionMobileEvent(dateRange, view._createEventElement(occurrence), group);\n } else {\n view._positionEvent(dateRange, view._createEventElement(occurrence), group);\n }\n }\n },\n _addDaySlotCollections: function (groupCount, tableRows, startDate) {\n var view = this._view;\n var columnCount = NUMBER_OF_COLUMNS;\n var rowCount = NUMBER_OF_ROWS;\n var isVerticallyGrouped = view._isVerticallyGrouped();\n for (var dateIndex = 0; dateIndex < columnCount; dateIndex++) {\n for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n var groupIndex = 0;\n var currentTableIndex = isVerticallyGrouped ? dateIndex : rowIndex;\n var tableRow = tableRows[currentTableIndex];\n var cells = tableRow.children;\n var cellMultiplier = 0;\n tableRow.setAttribute('role', 'row');\n if (!view._isVerticallyGrouped()) {\n cellMultiplier = dateIndex;\n }\n for (var cellIndex = cellMultiplier * groupCount; cellIndex < (cellMultiplier + 1) * groupCount; cellIndex++) {\n var cellCount = rowIndex * columnCount + dateIndex;\n var currentCellIndex = isVerticallyGrouped ? cellIndex + rowIndex * groupCount : cellIndex;\n var cell = cells[currentCellIndex];\n var currentGroupIndex = isVerticallyGrouped ? cellIndex : groupIndex;\n var group = view.groups[currentGroupIndex];\n var collection;\n if (dateIndex === 0) {\n collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n } else {\n collection = group._daySlotCollections[rowIndex];\n }\n view.addDaySlot(collection, cell, startDate, cellCount);\n groupIndex++;\n }\n }\n }\n },\n _changePeriodGroupIndex: function (reverse, vertical, selectionGroupIndex) {\n var view = this._view;\n if (vertical && view._isVerticallyGrouped()) {\n return reverse ? view.groups.length - 1 : 0;\n }\n return selectionGroupIndex;\n },\n _createResizeHint: function (range) {\n var view = this._view;\n var left, top, width, height, hint;\n if (view._isVerticallyGrouped()) {\n left = range.startSlot().offsetLeft;\n top = range.start.offsetTop;\n width = range.startSlot().offsetWidth;\n height = range.endSlot().offsetTop + range.startSlot().offsetHeight - range.startSlot().offsetTop - 2;\n hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n view._appendResizeHint(hint);\n } else {\n for (var slotIdx = range.startSlot().index; slotIdx <= range.endSlot().index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n left = slot.offsetLeft;\n top = slot.offsetTop;\n width = slot.offsetWidth;\n height = slot.offsetHeight - 2;\n hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n view._appendResizeHint(hint);\n }\n }\n },\n _createMoveHint: function (range, event) {\n var view = this._view;\n var startSlot = range.startSlot();\n var endSlot = range.endSlot();\n for (var slotIdx = startSlot.index; slotIdx <= endSlot.index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n var hint = view._createEventElement(event.clone({\n head: range.head,\n tail: range.tail\n }));\n hint.css({\n left: slot.offsetLeft,\n top: slot.offsetTop + slot.firstChildHeight,\n height: view.options.eventHeight,\n width: slot.offsetWidth - 2\n });\n hint.addClass('k-event-drag-hint');\n if (event.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n view._appendMoveHint(hint);\n }\n }\n });\n kendo.ui.scheduler.MonthGroupedView = MonthGroupedView;\n kendo.ui.scheduler.MonthGroupedByDateView = MonthGroupedByDateView;\n ui.MonthView = SchedulerView.extend({\n init: function (element, options) {\n var that = this;\n SchedulerView.fn.init.call(that, element, options);\n that._groupedView = that._getGroupedView();\n that.title = that.options.title;\n that._templates();\n that._editable();\n that._renderLayout(that.options.date);\n that._groups();\n },\n name: 'month',\n _getGroupedView: function () {\n if (this._isGroupedByDate()) {\n return new kendo.ui.scheduler.MonthGroupedByDateView(this);\n } else {\n return new kendo.ui.scheduler.MonthGroupedView(this);\n }\n },\n _updateDirection: function (selection, ranges, multiple, reverse, vertical) {\n if (multiple) {\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n var isSameSlot = startSlot.index === endSlot.index;\n var isSameCollection = startSlot.collectionIndex === endSlot.collectionIndex;\n var updateDirection;\n if (vertical) {\n updateDirection = isSameSlot && isSameCollection || isSameCollection;\n } else {\n updateDirection = isSameSlot && isSameCollection;\n }\n if (updateDirection) {\n selection.backward = reverse;\n }\n }\n },\n _changeDate: function (selection, slot, previous) {\n var group = this.groups[selection.groupIndex];\n var collections, index;\n if (previous) {\n collections = group._getCollections(group.daySlotCollectionCount());\n index = slot.collectionIndex - 1;\n if (index >= 0) {\n return collections[index]._slots[collections[index]._slots.length - 1];\n }\n } else {\n collections = group._getCollections(group.daySlotCollectionCount());\n index = slot.collectionIndex + 1;\n var slotIndex = 0;\n if (collections[index] && collections[index]._slots[slotIndex]) {\n return collections[index]._slots[slotIndex];\n }\n }\n },\n _getNextHorizontalRange: function (group, method, horizontalRange) {\n var isVertical = this._isVerticallyGrouped();\n horizontalRange.startSlot = group[method](horizontalRange.startSlot, isVertical);\n horizontalRange.endSlot = group[method](horizontalRange.endSlot, isVertical);\n return horizontalRange;\n },\n _getNextVerticalRange: function (group, method, verticalRange, multiple) {\n var isVertical = this._isVerticallyGrouped() && this._isGroupedByDate();\n verticalRange.startSlot = group[method](verticalRange.startSlot, multiple, isVertical);\n verticalRange.endSlot = group[method](verticalRange.endSlot, multiple, isVertical);\n return verticalRange;\n },\n _changeViewPeriod: function (selection, reverse, vertical) {\n var pad = vertical ? 7 : 1;\n var newStart, newEnd;\n if (reverse) {\n pad *= -1;\n }\n newStart = kendo.date.addDays(selection.start, pad);\n newEnd = kendo.date.addDays(selection.end, pad);\n if (this._isInRange(newStart, newEnd)) {\n return false;\n }\n selection.start = newStart;\n selection.end = newEnd;\n if (!vertical || vertical && this._isVerticallyGrouped()) {\n selection.groupIndex = this._groupedView._changePeriodGroupIndex(reverse, vertical, selection.groupIndex);\n }\n selection.events = [];\n return true;\n },\n _continuousSlot: function (selection, ranges, reverse) {\n var index = selection.backward ? 0 : ranges.length - 1;\n var group = this.groups[selection.groupIndex];\n return group.continuousSlot(ranges[index].start, reverse);\n },\n _changeGroupContinuously: function (selection, continuousSlot, multiple, reverse) {\n if (!multiple) {\n var groupIndex = selection.groupIndex;\n var lastGroupIndex = this.groups.length - 1;\n var vertical = this._isVerticallyGrouped();\n var group = this.groups[groupIndex];\n if (!continuousSlot && vertical) {\n continuousSlot = group[reverse ? 'lastSlot' : 'firstSlot']();\n groupIndex += reverse ? -1 : 1;\n } else if (continuousSlot && !vertical) {\n groupIndex = reverse ? lastGroupIndex : 0;\n }\n if (groupIndex < 0 || groupIndex > lastGroupIndex) {\n groupIndex = reverse ? lastGroupIndex : 0;\n continuousSlot = null;\n }\n selection.groupIndex = groupIndex;\n }\n return continuousSlot;\n },\n _normalizeHorizontalSelection: function (selection, ranges, reverse) {\n var slot;\n if (reverse) {\n slot = ranges[0].start;\n } else {\n slot = ranges[ranges.length - 1].end;\n }\n return slot;\n },\n _normalizeVerticalSelection: function (selection, ranges) {\n var slot;\n if (selection.backward) {\n slot = ranges[0].start;\n } else {\n slot = ranges[ranges.length - 1].end;\n }\n return slot;\n },\n _templates: function () {\n var options = this.options, settings = extend({}, kendo.Template, options.templateSettings);\n this.eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_STRING);\n this.dayTemplate = kendo.template(options.dayTemplate, settings);\n this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n },\n dateForTitle: function () {\n return kendo.format(this.options.selectedDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n shortDateForTitle: function () {\n return kendo.format(this.options.selectedShortDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n mobileDateForTitle: function () {\n return kendo.format(this.options.selectedMobileDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n },\n nextDate: function () {\n return kendo.date.nextDay(this._lastDayOfMonth);\n },\n previousDate: function () {\n return kendo.date.previousDay(this._firstDayOfMonth);\n },\n startDate: function () {\n return this._startDate;\n },\n endDate: function () {\n return this._endDate;\n },\n _renderLayout: function (date) {\n var that = this;\n this._firstDayOfMonth = kendo.date.firstDayOfMonth(date);\n this._lastDayOfMonth = kendo.date.lastDayOfMonth(date);\n this._startDate = firstVisibleMonthDay(date, this.calendarInfo());\n this.createLayout(this._layout());\n this._content();\n this.refreshLayout();\n this.content.on('click' + NS, '.k-nav-day,.k-more-events', function (e) {\n var offset = $(e.currentTarget).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n e.preventDefault();\n that.trigger('navigate', {\n view: 'day',\n date: slot.startDate()\n });\n });\n this._footer();\n },\n _editable: function () {\n if (this.options.editable) {\n if (this._isMobile()) {\n this._touchEditable();\n } else {\n this._mouseEditable();\n }\n }\n },\n _mouseEditable: function () {\n var that = this;\n that.element.on('click' + NS, '.k-scheduler-monthview .k-event a:has(.k-i-close)', function (e) {\n that.trigger('remove', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n if (that.options.editable.create !== false) {\n that.element.on('dblclick' + NS, '.k-scheduler-monthview .k-scheduler-content td', function (e) {\n var offset = $(e.currentTarget).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n isAllDay: true,\n start: slot.startDate(),\n end: slot.startDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n });\n }\n if (that.options.editable.update !== false) {\n that.element.on('dblclick' + NS, '.k-scheduler-monthview .k-event', function (e) {\n that.trigger('edit', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n }\n },\n _touchEditable: function () {\n var that = this;\n var threshold = 0;\n if (kendo.support.mobileOS.android) {\n threshold = 5;\n }\n if (that.options.editable.create !== false) {\n that._addUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n useClickAsTap: !kendo.support.browser.edge,\n filter: '.k-scheduler-monthview .k-scheduler-content td',\n tap: function (e) {\n if (that._scrolling) {\n return;\n }\n var offset = $(e.target).offset();\n var slot = that._slotByPosition(offset.left, offset.top);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n isAllDay: true,\n start: slot.startDate(),\n end: slot.startDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n }\n });\n }\n },\n selectionByElement: function (cell) {\n var offset = $(cell).offset();\n return this._slotByPosition(offset.left, offset.top);\n },\n _columnCountForLevel: function (level) {\n var columnLevel = this.columnLevels[level];\n return columnLevel ? columnLevel.length : 0;\n },\n _rowCountForLevel: function (level) {\n var rowLevel = this.rowLevels[level];\n return rowLevel ? rowLevel.length : 0;\n },\n _content: function () {\n var html = '<tbody>';\n var verticalGroupCount = 1;\n var groupedView = this._groupedView;\n var resources = this.groupedResources;\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n verticalGroupCount = groupedView._verticalRowCountForLevel(resources.length - 1);\n }\n }\n for (var verticalGroupIdx = 0; verticalGroupIdx < verticalGroupCount; verticalGroupIdx++) {\n html += this._createCalendar(verticalGroupIdx);\n }\n html += '</tbody>';\n this.content.find('table').html(html);\n },\n _createCalendar: function (verticalGroupIndex) {\n var start = this.startDate();\n var cellCount = NUMBER_OF_COLUMNS * NUMBER_OF_ROWS;\n var cellsPerRow = NUMBER_OF_COLUMNS;\n var weekStartDates = [start];\n var html = '';\n var horizontalGroupCount = 1;\n var isVerticallyGrouped = this._isVerticallyGrouped();\n var groupedView = this._groupedView;\n var resources = this.groupedResources;\n if (resources.length) {\n if (!isVerticallyGrouped) {\n horizontalGroupCount = groupedView._horizontalGroupCountForLevel(resources.length - 1);\n }\n }\n this._slotIndices = {};\n var calendarRowsLength = groupedView._getCalendarRowsLength(cellsPerRow, cellCount);\n for (var rowIdx = 0; rowIdx < calendarRowsLength; rowIdx++) {\n html += '<tr>';\n weekStartDates.push(start);\n var startIdx = rowIdx * cellsPerRow;\n html += groupedView._createRows(start, startIdx, horizontalGroupCount, verticalGroupIndex);\n start = groupedView._adjustStartDate(start, rowIdx === calendarRowsLength - 1);\n html += '</tr>';\n }\n this._weekStartDates = weekStartDates;\n this._endDate = kendo.date.previousDay(start);\n return html;\n },\n _createRow: function (startDate, startIdx, cellsPerRow, groupIndex) {\n var that = this;\n var min = that._firstDayOfMonth;\n var max = that._lastDayOfMonth;\n var content = that.dayTemplate;\n var classes = '';\n var html = '';\n var groupedView = this._groupedView;\n var resources = function () {\n return that._resourceBySlot({ groupIndex: groupIndex });\n };\n for (var cellIdx = 0; cellIdx < cellsPerRow; cellIdx++) {\n classes = '';\n if (kendo.date.isToday(startDate)) {\n classes += 'k-today';\n }\n if (!kendo.date.isInDateRange(startDate, min, max)) {\n classes += ' k-other-month';\n }\n html += '<td ';\n if (classes !== '') {\n html += 'class=\"' + classes + '\"';\n }\n html += '>';\n html += groupedView._getContent(content, startDate, resources, cellIdx);\n html += '</td>';\n that._slotIndices[getDate(startDate).getTime()] = startIdx + cellIdx;\n startDate = groupedView._nextSlotStartDate(startDate);\n }\n return html;\n },\n _layout: function () {\n var calendarInfo = this.calendarInfo();\n var weekDayNames = this._isMobile() ? calendarInfo.days.namesShort.map(function (name) {\n return name[0];\n }) : calendarInfo.days.names;\n var names = shiftArray(weekDayNames, calendarInfo.firstDay);\n var columns = $.map(names, function (value) {\n return { text: value };\n });\n var resources = this.groupedResources;\n var rows;\n var groupedView = this._groupedView;\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n var inner = [];\n for (var idx = 0; idx < 6; idx++) {\n inner.push({\n text: '<div> </div>',\n className: 'k-hidden k-slot-cell'\n });\n }\n rows = groupedView._createRowsLayout(resources, inner, this.groupHeaderTemplate, columns);\n columns = groupedView._createVerticalColumnsLayout(resources, inner, this.groupHeaderTemplate, columns);\n } else {\n columns = groupedView._createColumnsLayout(resources, columns, this.groupHeaderTemplate, columns);\n }\n }\n return {\n columns: columns,\n rows: rows\n };\n },\n _createEventElement: function (event) {\n var options = this.options;\n var editable = options.editable;\n var isMobile = this._isMobile();\n event.showDelete = editable && editable.destroy !== false && !isMobile;\n event.resizable = editable && editable.resize !== false && !isMobile;\n event.ns = kendo.ns;\n event.resources = this.eventResources(event);\n event.inverseColor = false;\n event.messages = options.messages || { destroy: 'Delete' };\n var element = $(this.eventTemplate(event));\n this.angular('compile', function () {\n return {\n elements: element,\n data: [{ dataItem: event }]\n };\n });\n return element;\n },\n _isInDateSlot: function (event) {\n var groups = this.groups[0];\n var slotStart = groups.firstSlot().start;\n var slotEnd = groups.lastSlot().end - 1;\n var startTime = kendo.date.toUtcTime(event.start);\n var endTime = kendo.date.toUtcTime(event.end);\n return (isInDateRange(startTime, slotStart, slotEnd) || isInDateRange(endTime, slotStart, slotEnd) || isInDateRange(slotStart, startTime, endTime) || isInDateRange(slotEnd, startTime, endTime)) && (!isInDateRange(endTime, slotStart, slotStart) || isInDateRange(endTime, startTime, startTime) || event.isAllDay);\n },\n _slotIndex: function (date) {\n return this._slotIndices[getDate(date).getTime()];\n },\n _positionMobileEvent: function (slotRange, element, group) {\n var startSlot = slotRange.start;\n if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n startSlot = slotRange.end;\n }\n var startIndex = slotRange.start.index;\n var endIndex = startIndex;\n var eventCount = 3;\n var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n events.push({\n element: element,\n start: startIndex,\n end: endIndex\n });\n var rows = SchedulerView.createRows(events);\n var slot = slotRange.collection.at(startIndex);\n var container = slot.container;\n if (!container) {\n container = $(kendo.format('<div class=\"k-events-container\" style=\"top:{0};left:{1};width:{2}\"/>', startSlot.offsetTop + startSlot.firstChildTop + startSlot.firstChildHeight + 'px', startSlot.offsetLeft + 'px', startSlot.offsetWidth + 'px'));\n slot.container = container;\n this.content[0].appendChild(container[0]);\n }\n if (rows.length <= eventCount) {\n slotRange.addEvent({\n element: element,\n start: startIndex,\n end: endIndex,\n groupIndex: startSlot.groupIndex\n });\n group._continuousEvents.push({\n element: element,\n uid: element.attr(kendo.attr('uid')),\n start: slotRange.start,\n end: slotRange.end\n });\n container[0].appendChild(element[0]);\n }\n },\n _positionEvent: function (slotRange, element, group) {\n var eventHeight = this.options.eventHeight;\n var startSlot = slotRange.start;\n if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n startSlot = slotRange.end;\n }\n var startIndex = slotRange.start.index;\n var endIndex = slotRange.end.index;\n var eventCount = startSlot.eventCount;\n var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n var rightOffset = startIndex !== endIndex ? 5 : 4;\n events.push({\n element: element,\n start: startIndex,\n end: endIndex\n });\n var rows = SchedulerView.createRows(events);\n for (var idx = 0, length = Math.min(rows.length, eventCount); idx < length; idx++) {\n var rowEvents = rows[idx].events;\n var eventTop = startSlot.offsetTop + startSlot.firstChildTop + startSlot.firstChildHeight + idx * eventHeight + 3 * idx + 'px';\n for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n rowEvents[j].element[0].style.top = eventTop;\n }\n }\n if (rows.length > eventCount) {\n for (var slotIndex = startIndex; slotIndex <= endIndex; slotIndex++) {\n var collection = slotRange.collection;\n var slot = collection.at(slotIndex);\n if (slot.more) {\n continue;\n }\n slot.more = $(MORE_BUTTON_TEMPLATE({\n ns: kendo.ns,\n start: slotIndex,\n end: slotIndex,\n width: slot.clientWidth - 2,\n left: slot.offsetLeft + 2,\n top: slot.offsetTop + slot.firstChildTop + slot.firstChildHeight + eventCount * eventHeight + 3 * eventCount\n }));\n this.content[0].appendChild(slot.more[0]);\n }\n } else {\n slotRange.addEvent({\n element: element,\n start: startIndex,\n end: endIndex,\n groupIndex: startSlot.groupIndex\n });\n element[0].style.width = slotRange.innerWidth() - rightOffset + 'px';\n element[0].style.left = startSlot.offsetLeft + 2 + 'px';\n element[0].style.height = eventHeight + 'px';\n group._continuousEvents.push({\n element: element,\n uid: element.attr(kendo.attr('uid')),\n start: slotRange.start,\n end: slotRange.end\n });\n element.appendTo(this.content);\n this._inverseEventColor(element);\n }\n },\n _slotByPosition: function (x, y) {\n var offset = this.content.offset();\n x -= offset.left;\n y -= offset.top;\n y += this.content[0].scrollTop;\n x += this.content[0].scrollLeft;\n x = Math.ceil(x);\n y = Math.ceil(y);\n for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n var slot = this._groupedView._getTimeSlotByPosition(x, y, groupIndex);\n if (slot) {\n return slot;\n }\n }\n return null;\n },\n _appendResizeHint: function (hint) {\n hint.appendTo(this.content);\n this._resizeHint = this._resizeHint.add(hint);\n },\n _updateResizeHint: function (event, groupIndex, startTime, endTime) {\n this._removeResizeHint();\n var group = this.groups[groupIndex];\n var ranges = group.ranges(startTime, endTime, true, event.isAllDay);\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n this._groupedView._createResizeHint(ranges[rangeIndex]);\n }\n this._resizeHint.find('.k-label-top,.k-label-bottom').text('');\n this._resizeHint.first().addClass('k-first').find('.k-label-top').text(kendo.toString(kendo.timezone.toLocalDate(startTime), 'M/dd'));\n this._resizeHint.last().addClass('k-last').find('.k-label-bottom').text(kendo.toString(kendo.timezone.toLocalDate(endTime), 'M/dd'));\n },\n _updateMoveHint: function (event, groupIndex, distance) {\n var start = kendo.date.toUtcTime(event.start) + distance;\n var end = start + event.duration();\n var group = this.groups[groupIndex];\n var ranges = group.ranges(start, end, true, event.isAllDay);\n this._removeMoveHint(event.uid);\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n this._groupedView._createMoveHint(ranges[rangeIndex], event);\n }\n },\n _appendMoveHint: function (hint) {\n hint.appendTo(this.content);\n this._moveHint = this._moveHint.add(hint);\n },\n _groups: function () {\n var groupCount = this._groupCount();\n var tableRows = this.content[0].getElementsByTagName('tr');\n var startDate = this.startDate();\n this.groups = [];\n for (var idx = 0; idx < groupCount; idx++) {\n this._addResourceView(idx);\n }\n this._groupedView._addDaySlotCollections(groupCount, tableRows, startDate);\n },\n addDaySlot: function (collection, cell, startDate, cellCount) {\n var clientHeight = cell.clientHeight;\n var firstChildHeight = cell.children.length ? cell.children[0].offsetHeight + 3 : 0;\n var start = kendo.date.addDays(startDate, cellCount);\n var end = kendo.date.MS_PER_DAY;\n if (startDate.getHours() !== start.getHours()) {\n end += (startDate.getHours() - start.getHours()) * kendo.date.MS_PER_HOUR;\n }\n start = kendo.date.toUtcTime(start);\n end += start;\n var eventCount = Math.floor((clientHeight - firstChildHeight - this.options.moreButtonHeight) / (this.options.eventHeight + 3));\n cell.setAttribute('role', 'gridcell');\n cell.setAttribute('aria-selected', false);\n collection.addDaySlot(cell, start, end, eventCount);\n },\n render: function (events) {\n this.content.children('.k-event,.k-more-events,.k-events-container').remove();\n this._groups();\n events = new kendo.data.Query(events).sort([\n {\n field: 'start',\n dir: 'asc'\n },\n {\n field: 'end',\n dir: 'desc'\n }\n ]).toArray();\n var resources = this.groupedResources;\n if (resources.length) {\n this._renderGroups(events, resources, 0, 1);\n } else {\n this._renderEvents(events, 0);\n }\n this.refreshLayout();\n this.trigger('activate');\n },\n _renderEvents: function (events, groupIndex) {\n var event;\n var idx;\n var length;\n var range;\n var start;\n var end;\n for (idx = 0, length = events.length; idx < length; idx++) {\n event = events[idx];\n if (this._isInDateSlot(event)) {\n var group = this.groups[groupIndex];\n var view = this._groupedView._view;\n var isMobile = view._isMobile();\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n var ranges = group.slotRanges(event, true);\n var rangeCount = ranges.length;\n if (isMobile) {\n range = ranges[0];\n start = range.start.start;\n end = range.end.end;\n var rangeStart = new Date(range.start.start);\n var rangeEnd = ranges[ranges.length - 1].end.end;\n var newStart = new Date(rangeStart);\n var newEnd = new Date(end);\n while (rangeStart.getTime() <= rangeEnd && event.end >= kendo.timezone.toLocalDate(rangeStart) && event.start <= kendo.timezone.toLocalDate(rangeEnd)) {\n var dateRange = group.daySlotRanges(newStart.getTime(), newEnd.getTime(), true)[0];\n newEnd.setDate(newEnd.getDate() + 1);\n newStart.setDate(newStart.getDate() + 1);\n if (dateRange) {\n dateRange.head = null;\n dateRange.middle = null;\n dateRange.tail = null;\n this._groupedView._positionEvent(event, group, dateRange, 1, start, end, 0);\n }\n rangeStart = kendo.date.addDays(rangeStart, 1);\n }\n } else {\n for (var rangeIndex = 0; rangeIndex < rangeCount; rangeIndex++) {\n range = ranges[rangeIndex];\n start = event.start;\n end = event.end;\n this._groupedView._positionEvent(event, group, range, rangeCount, start, end, rangeIndex);\n }\n }\n }\n }\n },\n _renderGroups: function (events, resources, offset, columnLevel) {\n var resource = resources[0];\n if (resource) {\n var view = resource.dataSource.view();\n for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n var value = this._resourceValue(resource, view[itemIdx]);\n var tmp = new kendo.data.Query(events).filter({\n field: resource.field,\n operator: SchedulerView.groupEqFilter(value)\n }).toArray();\n if (resources.length > 1) {\n offset = this._renderGroups(tmp, resources.slice(1), offset++, columnLevel + 1);\n } else {\n this._renderEvents(tmp, offset++);\n }\n }\n }\n return offset;\n },\n _groupCount: function () {\n var resources = this.groupedResources;\n var groupedView = this._groupedView;\n if (resources.length) {\n if (this._isVerticallyGrouped()) {\n return groupedView._verticalGroupCount(resources.length - 1);\n } else {\n return groupedView._horizontalGroupCount(resources.length);\n }\n }\n return 1;\n },\n _columnOffsetForResource: function (index) {\n return this._columnCountForLevel(index) / this._columnCountForLevel(index - 1);\n },\n destroy: function () {\n if (this.table) {\n this.table.removeClass('k-scheduler-monthview');\n }\n if (this.content) {\n this.content.off(NS);\n }\n if (this.element) {\n this.element.off(NS);\n }\n SchedulerView.fn.destroy.call(this);\n if (this._isMobile() && this.options.editable) {\n if (this.options.editable.create !== false) {\n this._addUserEvents.destroy();\n }\n }\n },\n events: [\n 'remove',\n 'add',\n 'edit',\n 'navigate'\n ],\n options: {\n title: 'Month',\n name: 'month',\n eventHeight: 25,\n moreButtonHeight: 13,\n editable: true,\n selectedDateFormat: '{0:y}',\n selectedShortDateFormat: '{0:y}',\n selectedMobileDateFormat: '{0:MMMM}',\n groupHeaderTemplate: '#=text#',\n dayTemplate: DAY_TEMPLATE,\n eventTemplate: EVENT_TEMPLATE\n }\n });\n function shiftArray(array, idx) {\n return array.slice(idx).concat(array.slice(0, idx));\n }\n function firstVisibleMonthDay(date, calendarInfo) {\n var firstDay = calendarInfo.firstDay, firstVisibleDay = new Date(date.getFullYear(), date.getMonth(), 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n while (firstVisibleDay.getDay() != firstDay) {\n kendo.date.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n }\n return firstVisibleDay;\n }\n function isInDateRange(value, min, max) {\n var msMin = min, msMax = max, msValue;\n msValue = value;\n return msValue >= msMin && msValue <= msMax;\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.scheduler.recurrence', [\n 'kendo.dropdownlist',\n 'kendo.datepicker',\n 'kendo.numerictextbox'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.recurrence',\n name: 'Recurrence',\n category: 'web',\n depends: [\n 'dropdownlist',\n 'datepicker',\n 'numerictextbox'\n ],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, timezone = kendo.timezone, Class = kendo.Class, ui = kendo.ui, Widget = ui.Widget, DropDownList = ui.DropDownList, kendoDate = kendo.date, setTime = kendoDate.setTime, setDayOfWeek = kendoDate.setDayOfWeek, adjustDST = kendoDate.adjustDST, firstDayOfMonth = kendoDate.firstDayOfMonth, getMilliseconds = kendoDate.getMilliseconds, DAYS_IN_LEAPYEAR = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335,\n 366\n ], DAYS_IN_YEAR = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334,\n 365\n ], MONTHS = [\n 31,\n 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31\n ], WEEK_DAYS = {\n 0: 'SU',\n 1: 'MO',\n 2: 'TU',\n 3: 'WE',\n 4: 'TH',\n 5: 'FR',\n 6: 'SA'\n }, WEEK_DAYS_IDX = {\n 'SU': 0,\n 'MO': 1,\n 'TU': 2,\n 'WE': 3,\n 'TH': 4,\n 'FR': 5,\n 'SA': 6\n }, DATE_FORMATS = [\n 'yyyy-MM-ddTHH:mm:ss.fffzzz',\n 'yyyy-MM-ddTHH:mm:sszzz',\n 'yyyy-MM-ddTHH:mm:ss',\n 'yyyy-MM-ddTHH:mm',\n 'yyyy-MM-ddTHH',\n 'yyyy-MM-dd',\n 'yyyyMMddTHHmmssfffzzz',\n 'yyyyMMddTHHmmsszzz',\n 'yyyyMMddTHHmmss',\n 'yyyyMMddTHHmm',\n 'yyyyMMddTHH',\n 'yyyyMMdd'\n ], RULE_NAMES = [\n 'months',\n 'weeks',\n 'yearDays',\n 'monthDays',\n 'weekDays',\n 'hours',\n 'minutes',\n 'seconds'\n ], RULE_NAMES_LENGTH = RULE_NAMES.length, RECURRENCE_DATE_FORMAT = 'yyyyMMddTHHmmssZ', limitation = {\n months: function (date, end, rule) {\n var monthRules = rule.months, months = ruleValues(monthRules, date.getMonth() + 1), changed = false;\n if (months !== null) {\n if (months.length) {\n date.setMonth(months[0] - 1, 1);\n } else {\n date.setFullYear(date.getFullYear() + 1, monthRules[0] - 1, 1);\n }\n changed = true;\n }\n return changed;\n },\n monthDays: function (date, end, rule) {\n var monthLength, month, days, changed = false, hours = date.getHours(), normalize = function (monthDay) {\n if (monthDay < 0) {\n monthDay = monthLength + monthDay + 1;\n }\n return monthDay;\n };\n while (date <= end) {\n month = date.getMonth();\n monthLength = getMonthLength(date);\n days = ruleValues(rule.monthDays, date.getDate(), normalize);\n if (days === null) {\n return changed;\n }\n changed = true;\n if (days.length) {\n date.setMonth(month, days.sort(numberSortPredicate)[0]);\n adjustDST(date, hours);\n if (month === date.getMonth()) {\n break;\n }\n } else {\n date.setMonth(month + 1, 1);\n }\n }\n return changed;\n },\n yearDays: function (date, end, rule) {\n var year, yearDays, changed = false, hours = date.getHours(), normalize = function (yearDay) {\n if (yearDay < 0) {\n yearDay = year + yearDay;\n }\n return yearDay;\n };\n while (date < end) {\n year = leapYear(date) ? 366 : 365;\n yearDays = ruleValues(rule.yearDays, dayInYear(date), normalize);\n if (yearDays === null) {\n return changed;\n }\n changed = true;\n year = date.getFullYear();\n if (yearDays.length) {\n date.setFullYear(year, 0, yearDays.sort(numberSortPredicate)[0]);\n adjustDST(date, hours);\n break;\n } else {\n date.setFullYear(year + 1, 0, 1);\n }\n }\n return changed;\n },\n weeks: function (date, end, rule) {\n var weekStart = rule.weekStart, year, weeks, day, changed = false, hours = date.getHours(), normalize = function (week) {\n if (week < 0) {\n week = 53 + week;\n }\n return week;\n };\n while (date < end) {\n weeks = ruleValues(rule.weeks, weekInYear(date, weekStart), normalize);\n if (weeks === null) {\n return changed;\n }\n changed = true;\n year = date.getFullYear();\n if (weeks.length) {\n day = weeks.sort(numberSortPredicate)[0] * 7 - 1;\n date.setFullYear(year, 0, day);\n setDayOfWeek(date, weekStart, -1);\n adjustDST(date, hours);\n break;\n } else {\n date.setFullYear(year + 1, 0, 1);\n }\n }\n return changed;\n },\n weekDays: function (date, end, rule) {\n var weekDays = rule.weekDays;\n var weekStart = rule.weekStart;\n var weekDayRules = ruleWeekValues(weekDays, date, weekStart);\n var hours = date.getHours();\n var weekDayRule, day;\n if (weekDayRules === null) {\n return false;\n }\n weekDayRule = weekDayRules[0];\n if (!weekDayRule) {\n weekDayRule = weekDays[0];\n setDayOfWeek(date, weekStart);\n }\n day = weekDayRule.day;\n if (weekDayRule.offset) {\n while (date <= end && !isInWeek(date, weekDayRule, weekStart)) {\n if (weekInMonth(date, weekStart) === numberOfWeeks(date, weekStart)) {\n date.setMonth(date.getMonth() + 1, 1);\n adjustDST(date, hours);\n } else {\n date.setDate(date.getDate() + 7);\n adjustDST(date, hours);\n setDayOfWeek(date, weekStart, -1);\n }\n }\n }\n if (date.getDay() !== day) {\n setDayOfWeek(date, day);\n }\n return true;\n },\n hours: function (date, end, rule) {\n var hourRules = rule.hours, startTime = rule._startTime, startHours = startTime.getHours(), hours = ruleValues(hourRules, startHours), changed = false;\n if (hours !== null) {\n changed = true;\n date.setHours(startHours);\n adjustDST(date, startHours);\n if (hours.length) {\n hours = hours[0];\n date.setHours(hours);\n } else {\n hours = date.getHours();\n date.setDate(date.getDate() + 1);\n adjustDST(date, hours);\n hours = hourRules[0];\n date.setHours(hours);\n adjustDST(date, hours);\n }\n if (rule.minutes) {\n date.setMinutes(0);\n }\n startTime.setHours(hours, date.getMinutes());\n }\n return changed;\n },\n minutes: function (date, end, rule) {\n var minuteRules = rule.minutes, currentMinutes = date.getMinutes(), minutes = ruleValues(minuteRules, currentMinutes), hours = rule._startTime.getHours(), changed = false;\n if (minutes !== null) {\n changed = true;\n if (minutes.length) {\n minutes = minutes[0];\n } else {\n hours += 1;\n minutes = minuteRules[0];\n }\n if (rule.seconds) {\n date.setSeconds(0);\n }\n date.setHours(hours, minutes);\n hours = hours % 24;\n adjustDST(date, hours);\n rule._startTime.setHours(hours, minutes, date.getSeconds());\n }\n return changed;\n },\n seconds: function (date, end, rule) {\n var secondRules = rule.seconds, hours = rule._startTime.getHours(), seconds = ruleValues(secondRules, date.getSeconds()), minutes = date.getMinutes(), changed = false;\n if (seconds !== null) {\n changed = true;\n if (seconds.length) {\n date.setSeconds(seconds[0]);\n } else {\n minutes += 1;\n date.setMinutes(minutes, secondRules[0]);\n if (minutes > 59) {\n minutes = minutes % 60;\n hours = (hours + 1) % 24;\n }\n }\n rule._startTime.setHours(hours, minutes, date.getSeconds());\n }\n return changed;\n }\n }, BaseFrequency = Class.extend({\n next: function (date, rule) {\n var startTime = rule._startTime, day = startTime.getDate(), minutes, seconds;\n if (rule.seconds) {\n seconds = date.getSeconds() + 1;\n date.setSeconds(seconds);\n startTime.setSeconds(seconds);\n startTime.setDate(day);\n } else if (rule.minutes) {\n minutes = date.getMinutes() + 1;\n date.setMinutes(minutes);\n startTime.setMinutes(minutes);\n startTime.setDate(day);\n } else {\n return false;\n }\n return true;\n },\n normalize: function (options) {\n var rule = options.rule;\n if (options.idx === 4 && rule.hours) {\n rule._startTime.setHours(0);\n this._hour(options.date, rule);\n }\n },\n limit: function (date, end, rule) {\n var interval = rule.interval, ruleName, firstRule, modified, idx, day;\n while (date <= end) {\n modified = firstRule = undefined;\n day = date.getDate();\n for (idx = 0; idx < RULE_NAMES_LENGTH; idx++) {\n ruleName = RULE_NAMES[idx];\n if (rule[ruleName]) {\n modified = limitation[ruleName](date, end, rule);\n if (firstRule !== undefined && modified) {\n break;\n } else {\n firstRule = modified;\n }\n }\n if (modified) {\n this.normalize({\n date: date,\n rule: rule,\n day: day,\n idx: idx\n });\n }\n }\n if ((interval === 1 || !this.interval(rule, date)) && idx === RULE_NAMES_LENGTH) {\n break;\n }\n }\n },\n interval: function (rule, current) {\n var start = new Date(rule._startPeriod);\n var date = new Date(current);\n var hours = current.getHours();\n var weekStart = rule.weekStart;\n var interval = rule.interval;\n var frequency = rule.freq;\n var modified = false;\n var excess = 0;\n var month = 0;\n var day = 1;\n var diff;\n var startTimeHours;\n if (frequency === 'hourly') {\n diff = date.getTimezoneOffset() - start.getTimezoneOffset();\n startTimeHours = rule._startTime.getHours();\n date = date.getTime();\n if (hours !== startTimeHours) {\n date += (startTimeHours - hours) * kendoDate.MS_PER_HOUR;\n }\n date -= start;\n if (diff) {\n date -= diff * kendoDate.MS_PER_MINUTE;\n }\n diff = Math.floor(date / kendoDate.MS_PER_HOUR);\n excess = intervalExcess(diff, interval);\n if (excess !== 0) {\n this._hour(current, rule, excess);\n modified = true;\n }\n } else if (frequency === 'daily') {\n kendoDate.setTime(date, -start, true);\n diff = Math.round(date / kendoDate.MS_PER_DAY);\n excess = intervalExcess(diff, interval);\n if (excess !== 0) {\n this._date(current, rule, excess);\n modified = true;\n }\n } else if (frequency === 'weekly') {\n excess = this._getNumberOfWeeksBetweenDates(start, current);\n var normalizedCurrentIndex = normalizeDayIndex(current.getDay(), weekStart);\n var normalizedStartIndex = normalizeDayIndex(start.getDay(), weekStart);\n if (normalizedCurrentIndex < normalizedStartIndex) {\n excess += 1;\n }\n excess = intervalExcess(excess, interval);\n if (excess !== 0) {\n kendoDate.setDayOfWeek(current, rule.weekStart, -1);\n current.setDate(current.getDate() + excess * 7);\n adjustDST(current, hours);\n modified = true;\n }\n } else if (frequency === 'monthly') {\n diff = current.getFullYear() - start.getFullYear();\n diff = current.getMonth() - start.getMonth() + diff * 12;\n excess = intervalExcess(diff, interval);\n if (excess !== 0) {\n day = rule._hasRuleValue ? 1 : current.getDate();\n current.setFullYear(current.getFullYear(), current.getMonth() + excess, day);\n adjustDST(current, hours);\n modified = true;\n }\n } else if (frequency === 'yearly') {\n diff = current.getFullYear() - start.getFullYear();\n excess = intervalExcess(diff, interval);\n if (!rule.months) {\n month = current.getMonth();\n }\n if (!rule.yearDays && !rule.monthDays && !rule.weekDays) {\n day = current.getDate();\n }\n if (excess !== 0) {\n current.setFullYear(current.getFullYear() + excess, month, day);\n adjustDST(current, hours);\n modified = true;\n }\n }\n return modified;\n },\n _getNumberOfWeeksBetweenDates: function (first, second) {\n var weeks = (second - first) / 604800000;\n var exactWeeks = Math.floor(weeks);\n if (weeks - exactWeeks > 0.99) {\n exactWeeks = Math.round(weeks);\n }\n return exactWeeks;\n },\n _hour: function (date, rule, interval) {\n var startTime = rule._startTime, hours = startTime.getHours();\n if (interval) {\n hours += interval;\n }\n date.setHours(hours);\n hours = hours % 24;\n startTime.setHours(hours);\n adjustDST(date, hours);\n },\n _date: function (date, rule, interval) {\n var hours = date.getHours();\n date.setDate(date.getDate() + interval);\n if (!adjustDST(date, hours)) {\n this._hour(date, rule);\n }\n }\n }), HourlyFrequency = BaseFrequency.extend({\n next: function (date, rule) {\n if (!BaseFrequency.fn.next(date, rule)) {\n this._hour(date, rule, 1);\n }\n },\n normalize: function (options) {\n var rule = options.rule;\n if (options.idx === 4) {\n rule._startTime.setHours(0);\n this._hour(options.date, rule);\n }\n }\n }), DailyFrequency = BaseFrequency.extend({\n next: function (date, rule) {\n if (!BaseFrequency.fn.next(date, rule)) {\n this[rule.hours ? '_hour' : '_date'](date, rule, 1);\n }\n }\n }), WeeklyFrequency = DailyFrequency.extend({\n setup: function (rule, eventStartDate) {\n if (!rule.weekDays) {\n rule.weekDays = [{\n day: eventStartDate.getDay(),\n offset: 0\n }];\n }\n }\n }), MonthlyFrequency = BaseFrequency.extend({\n next: function (date, rule) {\n var day, hours;\n if (!BaseFrequency.fn.next(date, rule)) {\n if (rule.hours) {\n this._hour(date, rule, 1);\n } else if (rule.monthDays || rule.weekDays || rule.yearDays || rule.weeks) {\n this._date(date, rule, 1);\n } else {\n day = date.getDate();\n hours = date.getHours();\n date.setMonth(date.getMonth() + 1);\n adjustDST(date, hours);\n while (date.getDate() !== day) {\n date.setDate(day);\n adjustDST(date, hours);\n }\n this._hour(date, rule);\n }\n }\n },\n normalize: function (options) {\n var rule = options.rule, date = options.date, hours = date.getHours();\n if (options.idx === 0 && !rule.monthDays && !rule.weekDays) {\n date.setDate(options.day);\n adjustDST(date, hours);\n } else {\n BaseFrequency.fn.normalize(options);\n }\n },\n setup: function (rule, eventStartDate, date) {\n if (!rule.monthDays && !rule.weekDays) {\n date.setDate(eventStartDate.getDate());\n }\n }\n }), YearlyFrequency = MonthlyFrequency.extend({\n next: function (date, rule) {\n var day, hours = date.getHours();\n if (!BaseFrequency.fn.next(date, rule)) {\n if (rule.hours) {\n this._hour(date, rule, 1);\n } else if (rule.monthDays || rule.weekDays || rule.yearDays || rule.weeks) {\n this._date(date, rule, 1);\n } else if (rule.months) {\n day = date.getDate();\n date.setMonth(date.getMonth() + 1);\n adjustDST(date, hours);\n while (date.getDate() !== day) {\n date.setDate(day);\n adjustDST(date, hours);\n }\n this._hour(date, rule);\n } else {\n date.setFullYear(date.getFullYear() + 1);\n adjustDST(date, hours);\n this._hour(date, rule);\n }\n }\n },\n setup: function () {\n }\n }), frequencies = {\n 'hourly': new HourlyFrequency(),\n 'daily': new DailyFrequency(),\n 'weekly': new WeeklyFrequency(),\n 'monthly': new MonthlyFrequency(),\n 'yearly': new YearlyFrequency()\n }, CLICK = 'click', CHANGE = 'change';\n function intervalExcess(diff, interval) {\n var excess;\n if (diff !== 0 && diff < interval) {\n excess = interval - diff;\n } else {\n excess = diff % interval;\n if (excess) {\n excess = interval - excess;\n }\n }\n return excess;\n }\n function dayInYear(date) {\n var month = date.getMonth();\n var days = leapYear(date) ? DAYS_IN_LEAPYEAR[month] : DAYS_IN_YEAR[month];\n return days + date.getDate();\n }\n function weekInYear(date, weekStart) {\n var year, days;\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n adjustDST(date, 0);\n year = date.getFullYear();\n if (weekStart !== undefined) {\n setDayOfWeek(date, weekStart, -1);\n date.setDate(date.getDate() + 4);\n } else {\n date.setDate(date.getDate() + (4 - (date.getDay() || 7)));\n }\n adjustDST(date, 0);\n days = Math.floor((date.getTime() - new Date(year, 0, 1, -6)) / 86400000);\n return 1 + Math.floor(days / 7);\n }\n function weekInMonth(date, weekStart) {\n var firstWeekDay = firstDayOfMonth(date).getDay();\n var firstWeekLength = 7 - (firstWeekDay + 7 - (weekStart || 7)) || 7;\n if (firstWeekLength < 0) {\n firstWeekLength += 7;\n }\n return Math.ceil((date.getDate() - firstWeekLength) / 7) + 1;\n }\n function normalizeDayIndex(weekDay, weekStart) {\n return weekDay + (weekDay < weekStart ? 7 : 0);\n }\n function normalizeOffset(date, rule, weekStart) {\n var offset = rule.offset;\n if (!offset) {\n return weekInMonth(date, weekStart);\n }\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n var weeksInMonth = weekInMonth(lastDate, weekStart);\n var day = normalizeDayIndex(rule.day, weekStart);\n var skipFirst = day < normalizeDayIndex(new Date(date.getFullYear(), date.getMonth(), 1).getDay(), weekStart);\n var skipLast = day > normalizeDayIndex(lastDate.getDay(), weekStart);\n if (offset < 0) {\n offset = weeksInMonth + (offset + 1 - (skipLast ? 1 : 0));\n } else if (skipFirst) {\n offset += 1;\n }\n weeksInMonth -= skipLast ? 1 : 0;\n if (offset < (skipFirst ? 1 : 0) || offset > weeksInMonth) {\n return null;\n }\n return offset;\n }\n function numberOfWeeks(date, weekStart) {\n return weekInMonth(new Date(date.getFullYear(), date.getMonth() + 1, 0), weekStart);\n }\n function isInWeek(date, rule, weekStart) {\n return weekInMonth(date, weekStart) === normalizeOffset(date, rule, weekStart);\n }\n function ruleWeekValues(weekDays, date, weekStart) {\n var currentDay = normalizeDayIndex(date.getDay(), weekStart);\n var length = weekDays.length;\n var ruleWeekOffset;\n var weekDay, day;\n var weekNumber;\n var result = [];\n var idx = 0;\n for (; idx < length; idx++) {\n weekDay = weekDays[idx];\n weekNumber = weekInMonth(date, weekStart);\n ruleWeekOffset = normalizeOffset(date, weekDay, weekStart);\n if (ruleWeekOffset === null) {\n continue;\n }\n if (weekNumber < ruleWeekOffset) {\n result.push(weekDay);\n } else if (weekNumber === ruleWeekOffset) {\n day = normalizeDayIndex(weekDay.day, weekStart);\n if (currentDay < day) {\n result.push(weekDay);\n } else if (currentDay === day) {\n return null;\n }\n }\n }\n return result;\n }\n function ruleValues(rules, value, normalize) {\n var idx = 0, length = rules.length, availableRules = [], ruleValue;\n for (; idx < length; idx++) {\n ruleValue = rules[idx];\n if (normalize) {\n ruleValue = normalize(ruleValue);\n }\n if (value === ruleValue) {\n return null;\n } else if (value < ruleValue) {\n availableRules.push(ruleValue);\n }\n }\n return availableRules;\n }\n function parseArray(list, range) {\n var idx = 0, length = list.length, value;\n for (; idx < length; idx++) {\n value = parseInt(list[idx], 10);\n if (isNaN(value) || value < range.start || value > range.end || value === 0 && range.start < 0) {\n return null;\n }\n list[idx] = value;\n }\n return list.sort(numberSortPredicate);\n }\n function parseWeekDayList(list) {\n var idx = 0, length = list.length, value, valueLength, day;\n for (; idx < length; idx++) {\n value = list[idx];\n valueLength = value.length;\n day = value.substring(valueLength - 2).toUpperCase();\n day = WEEK_DAYS_IDX[day];\n if (day === undefined) {\n return null;\n }\n list[idx] = {\n offset: parseInt(value.substring(0, valueLength - 2), 10) || 0,\n day: day\n };\n }\n return list;\n }\n function serializeWeekDayList(list) {\n var idx = 0, length = list.length, value, valueString, result = [];\n for (; idx < length; idx++) {\n value = list[idx];\n if (typeof value === 'string') {\n valueString = value;\n } else {\n valueString = '' + WEEK_DAYS[value.day];\n if (value.offset) {\n valueString = value.offset + valueString;\n }\n }\n result.push(valueString);\n }\n return result.toString();\n }\n function getMonthLength(date) {\n var month = date.getMonth();\n if (month === 1) {\n if (new Date(date.getFullYear(), 1, 29).getMonth() === 1) {\n return 29;\n }\n return 28;\n }\n return MONTHS[month];\n }\n function leapYear(year) {\n year = year.getFullYear();\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }\n function numberSortPredicate(a, b) {\n return a - b;\n }\n function parseExceptions(exceptions, zone) {\n var idx = 0, length, date, dates = [];\n if (exceptions) {\n exceptions = exceptions.split(exceptions.indexOf(';') !== -1 ? ';' : ',');\n length = exceptions.length;\n for (; idx < length; idx++) {\n date = parseUTCDate(exceptions[idx], zone);\n if (date) {\n dates.push(date);\n }\n }\n }\n return dates;\n }\n function isException(exceptions, date, zone) {\n var dates = $.isArray(exceptions) ? exceptions : parseExceptions(exceptions, zone), dateTime = date.getTime() - date.getMilliseconds(), idx = 0, length = dates.length;\n for (; idx < length; idx++) {\n if (dates[idx].getTime() === dateTime) {\n return true;\n }\n }\n return false;\n }\n function toExceptionString(dates, zone) {\n var idx = 0;\n var length;\n var date;\n var result = [].concat(dates);\n for (length = result.length; idx < length; idx++) {\n date = result[idx];\n date = kendo.timezone.convert(date, zone || date.getTimezoneOffset(), 'Etc/UTC');\n result[idx] = kendo.toString(date, RECURRENCE_DATE_FORMAT);\n }\n return result.join(',');\n }\n function startPeriodByFreq(start, rule) {\n var date = new Date(start);\n switch (rule.freq) {\n case 'yearly':\n date.setFullYear(date.getFullYear(), 0, 1);\n break;\n case 'monthly':\n date.setFullYear(date.getFullYear(), date.getMonth(), 1);\n break;\n case 'weekly':\n setDayOfWeek(date, rule.weekStart, -1);\n break;\n default:\n break;\n }\n if (rule.hours) {\n date.setHours(0);\n }\n if (rule.minutes) {\n date.setMinutes(0);\n }\n if (rule.seconds) {\n date.setSeconds(0);\n }\n return date;\n }\n function endPeriodByFreq(start, rule) {\n var date = new Date(start);\n switch (rule.freq) {\n case 'yearly':\n date.setFullYear(date.getFullYear(), 11, 31);\n break;\n case 'monthly':\n date.setFullYear(date.getFullYear(), date.getMonth() + 1, 0);\n break;\n case 'weekly':\n setDayOfWeek(date, rule.weekStart, -1);\n date.setDate(date.getDate() + 6);\n break;\n default:\n break;\n }\n if (rule.hours) {\n date.setHours(23);\n }\n if (rule.minutes) {\n date.setMinutes(59);\n }\n if (rule.seconds) {\n date.setSeconds(59);\n }\n return date;\n }\n function eventsByPosition(periodEvents, start, positions) {\n var periodEventsLength = periodEvents.length;\n var events = [];\n var position;\n var event;\n for (var idx = 0, length = positions.length; idx < length; idx++) {\n position = positions[idx];\n if (position < 0) {\n position = periodEventsLength + position;\n } else {\n position -= 1;\n }\n event = periodEvents[position];\n if (event && event.start >= start) {\n events.push(event);\n }\n }\n return events;\n }\n function removeExceptionDates(periodEvents, exceptionDates, zone) {\n var events = [];\n var event;\n for (var idx = 0; idx < periodEvents.length; idx++) {\n event = periodEvents[idx];\n if (!isException(exceptionDates, event.start, zone)) {\n events.push(event);\n }\n }\n return events;\n }\n function expand(event, start, end, zone) {\n var rule = parseRule(event.recurrenceRule, zone), startTime, endTime, endDate, hours, minutes, seconds, durationMS, startPeriod, inPeriod, ruleStart, ruleEnd, useEventStart, freqName, exceptionDates, eventStartTime, eventStartMS, eventStart, count, freq, positions, currentIdx, periodEvents, events = [], shiftedStart, shiftedEnd, shiftedStartTime, shifterEndTime;\n if (!rule) {\n return [event];\n }\n positions = rule.positions;\n currentIdx = positions ? 0 : 1;\n ruleStart = rule.start;\n ruleEnd = rule.end;\n if (ruleStart || ruleEnd) {\n event = event.clone({\n start: ruleStart ? new Date(ruleStart.value[0]) : undefined,\n end: ruleEnd ? new Date(ruleEnd.value[0]) : undefined\n });\n }\n eventStart = event.start;\n eventStartMS = eventStart.getTime();\n eventStartTime = getMilliseconds(eventStart);\n exceptionDates = parseExceptions(event.recurrenceException, zone);\n if (!exceptionDates[0] && rule.exdates) {\n exceptionDates = rule.exdates.value;\n event.set('recurrenceException', toExceptionString(exceptionDates, zone));\n }\n startPeriod = start = new Date(start);\n end = new Date(end);\n freqName = rule.freq;\n freq = frequencies[freqName];\n count = rule.count;\n if (rule.until && rule.until < end) {\n end = new Date(rule.until);\n }\n useEventStart = freqName === 'yearly' || freqName === 'monthly' || freqName === 'weekly';\n if (start < eventStartMS || count || rule.interval > 1 || useEventStart || (freqName === 'daily' || freqName === 'hourly') && !rule.seconds) {\n start = new Date(eventStartMS);\n } else {\n hours = start.getHours();\n minutes = start.getMinutes();\n seconds = start.getSeconds();\n if (!rule.hours) {\n hours = eventStart.getHours();\n }\n if (!rule.minutes) {\n minutes = eventStart.getMinutes();\n }\n if (!rule.seconds) {\n seconds = eventStart.getSeconds();\n }\n start.setHours(hours, minutes, seconds, eventStart.getMilliseconds());\n }\n rule._startPeriod = new Date(start);\n if (positions) {\n start = startPeriodByFreq(start, rule);\n end = endPeriodByFreq(end, rule);\n var diff = getMilliseconds(end) - getMilliseconds(start);\n if (diff < 0) {\n hours = start.getHours();\n end.setHours(hours, start.getMinutes(), start.getSeconds(), start.getMilliseconds());\n kendoDate.adjustDST(end, hours);\n }\n rule._startPeriod = new Date(start);\n rule._endPeriod = endPeriodByFreq(start, rule);\n }\n durationMS = event.duration();\n rule._startTime = startTime = kendoDate.toInvariantTime(start);\n if (freq.setup) {\n freq.setup(rule, eventStart, start);\n }\n freq.limit(start, end, rule);\n while (start <= end) {\n endDate = new Date(start);\n setTime(endDate, durationMS);\n inPeriod = start >= startPeriod || endDate > startPeriod;\n if (inPeriod && !isException(exceptionDates, start, zone) || positions) {\n startTime = kendoDate.toUtcTime(kendoDate.getDate(start)) + getMilliseconds(rule._startTime);\n endTime = startTime + durationMS;\n if (eventStartMS !== start.getTime() || eventStartTime !== getMilliseconds(rule._startTime)) {\n if (!event.isAllDay) {\n var startZone = event.startTimezone || event.endTimezone;\n var endZone = event.endTimezone || event.startTimezone;\n if (zone && startZone || !zone && !startZone) {\n var startOffsetDiff = getZoneOffset(start, zone) - getZoneOffset(event.start, zone);\n var endOffsetDiff = getZoneOffset(endDate, zone) - getZoneOffset(event.end, zone);\n var startTZOffsetDiff = getZoneOffset(start, startZone) - getZoneOffset(event.start, startZone);\n var endTZOffsetDiff = getZoneOffset(endDate, endZone) - getZoneOffset(event.end, endZone);\n if (startOffsetDiff !== startTZOffsetDiff) {\n var offsetTicksStart = (startOffsetDiff - startTZOffsetDiff) * 60000;\n shiftedStart = new Date(start.getTime() - offsetTicksStart);\n shiftedStartTime = startTime - offsetTicksStart;\n }\n if (endOffsetDiff !== endTZOffsetDiff) {\n var offsetTicksEnd = (endOffsetDiff - endTZOffsetDiff) * 60000;\n shiftedEnd = new Date(endDate.getTime() - offsetTicksEnd);\n shifterEndTime = endTime - offsetTicksEnd;\n }\n }\n }\n events.push(event.toOccurrence({\n start: shiftedStart || new Date(start),\n end: shiftedEnd || endDate,\n _startTime: shiftedStartTime || startTime,\n _endTime: shifterEndTime || endTime\n }));\n shiftedStart = shiftedEnd = shiftedStartTime = shifterEndTime = null;\n } else {\n event._startTime = startTime;\n event._endTime = endTime;\n events.push(event);\n }\n }\n if (positions) {\n freq.next(start, rule);\n freq.limit(start, end, rule);\n if (start > rule._endPeriod) {\n periodEvents = eventsByPosition(events.slice(currentIdx), eventStart, positions);\n periodEvents = removeExceptionDates(periodEvents, exceptionDates, zone);\n events = events.slice(0, currentIdx).concat(periodEvents);\n rule._endPeriod = endPeriodByFreq(start, rule);\n currentIdx = events.length;\n }\n if (count && count === currentIdx) {\n break;\n }\n } else {\n if (count && count === currentIdx) {\n break;\n }\n currentIdx += 1;\n var isMissingDSTHour = isDSTMissingHour(start);\n freq.next(start, rule);\n if (isMissingDSTHour && rule.freq !== 'hourly' && kendoDate.toInvariantTime(event.start).getTime() !== kendoDate.toInvariantTime(start).getTime()) {\n rule._startTime = startTime = new Date(start.getTime() - 3600000);\n }\n freq.limit(start, end, rule);\n }\n }\n return events;\n }\n function isDSTMissingHour(date) {\n var dateOffset = date.getTimezoneOffset();\n var dateMinusHour = new Date(date.getTime() - 3600000);\n var dateMinusHourOffset = dateMinusHour.getTimezoneOffset();\n return dateOffset < dateMinusHourOffset;\n }\n function getZoneOffset(date, zone) {\n return zone ? kendo.timezone.offset(date, zone) : date.getTimezoneOffset();\n }\n function parseUTCDate(value, zone) {\n value = kendo.parseDate(value, DATE_FORMATS);\n if (value && zone) {\n value = timezone.apply(value, zone);\n }\n return value;\n }\n function parseDateRule(dateRule, zone) {\n var pairs = dateRule.split(';');\n var pair;\n var property;\n var value;\n var tzid;\n var valueIdx, valueLength;\n for (var idx = 0, length = pairs.length; idx < length; idx++) {\n pair = pairs[idx].split(':');\n property = pair[0];\n value = pair[1];\n if (property.indexOf('TZID') !== -1) {\n tzid = property.substring(property.indexOf('TZID')).split('=')[1];\n }\n if (value) {\n value = value.split(',');\n for (valueIdx = 0, valueLength = value.length; valueIdx < valueLength; valueIdx++) {\n value[valueIdx] = parseUTCDate(value[valueIdx], tzid || zone);\n }\n }\n }\n if (value) {\n return {\n value: value,\n tzid: tzid\n };\n }\n }\n function parseRule(recur, zone) {\n var instance = {};\n var splits, value;\n var idx = 0, length;\n var ruleValue = false;\n var rule, part, parts;\n var property, weekStart, weekDays;\n var predicate = function (a, b) {\n var day1 = a.day, day2 = b.day;\n if (day1 < weekStart) {\n day1 += 7;\n }\n if (day2 < weekStart) {\n day2 += 7;\n }\n return day1 - day2;\n };\n if (!recur) {\n return null;\n }\n parts = recur.split('\\n');\n if (!parts[1] && (recur.indexOf('DTSTART') !== -1 || recur.indexOf('DTEND') !== -1 || recur.indexOf('EXDATE') !== -1)) {\n parts = recur.split(' ');\n }\n for (idx = 0, length = parts.length; idx < length; idx++) {\n part = $.trim(parts[idx]);\n if (part.indexOf('DTSTART') !== -1) {\n instance.start = parseDateRule(part, zone);\n } else if (part.indexOf('DTEND') !== -1) {\n instance.end = parseDateRule(part, zone);\n } else if (part.indexOf('EXDATE') !== -1) {\n instance.exdates = parseDateRule(part, zone);\n } else if (part.indexOf('RRULE') !== -1) {\n rule = part.substring(6);\n } else if ($.trim(part)) {\n rule = part;\n }\n }\n rule = rule.split(';');\n for (idx = 0, length = rule.length; idx < length; idx++) {\n property = rule[idx];\n splits = property.split('=');\n value = $.trim(splits[1]).split(',');\n switch ($.trim(splits[0]).toUpperCase()) {\n case 'FREQ':\n instance.freq = value[0].toLowerCase();\n break;\n case 'UNTIL':\n instance.until = parseUTCDate(value[0], zone);\n break;\n case 'COUNT':\n instance.count = parseInt(value[0], 10);\n break;\n case 'INTERVAL':\n instance.interval = parseInt(value[0], 10);\n break;\n case 'BYSECOND':\n instance.seconds = parseArray(value, {\n start: 0,\n end: 60\n });\n ruleValue = true;\n break;\n case 'BYMINUTE':\n instance.minutes = parseArray(value, {\n start: 0,\n end: 59\n });\n ruleValue = true;\n break;\n case 'BYHOUR':\n instance.hours = parseArray(value, {\n start: 0,\n end: 23\n });\n ruleValue = true;\n break;\n case 'BYMONTHDAY':\n instance.monthDays = parseArray(value, {\n start: -31,\n end: 31\n });\n ruleValue = true;\n break;\n case 'BYYEARDAY':\n instance.yearDays = parseArray(value, {\n start: -366,\n end: 366\n });\n ruleValue = true;\n break;\n case 'BYMONTH':\n instance.months = parseArray(value, {\n start: 1,\n end: 12\n });\n ruleValue = true;\n break;\n case 'BYDAY':\n instance.weekDays = weekDays = parseWeekDayList(value);\n ruleValue = true;\n break;\n case 'BYWEEKNO':\n instance.weeks = parseArray(value, {\n start: -53,\n end: 53\n });\n ruleValue = true;\n break;\n case 'BYSETPOS':\n instance.positions = parseArray(value, {\n start: -366,\n end: 366\n });\n break;\n case 'WKST':\n instance.weekStart = weekStart = WEEK_DAYS_IDX[value[0]];\n break;\n }\n }\n if (instance.freq === undefined || instance.count !== undefined && instance.until) {\n return null;\n }\n if (!instance.interval) {\n instance.interval = 1;\n }\n if (weekStart === undefined) {\n instance.weekStart = weekStart = kendo.culture().calendar.firstDay;\n }\n if (weekDays) {\n instance.weekDays = weekDays.sort(predicate);\n }\n if (instance.positions && !ruleValue) {\n instance.positions = null;\n }\n instance._hasRuleValue = ruleValue;\n return instance;\n }\n function serializeDateRule(dateRule, zone) {\n var value = dateRule.value;\n var tzid = dateRule.tzid || '';\n var length = value.length;\n var idx = 0;\n var val;\n for (; idx < length; idx++) {\n val = value[idx];\n val = timezone.convert(val, tzid || zone || val.getTimezoneOffset(), 'Etc/UTC');\n value[idx] = kendo.toString(val, 'yyyyMMddTHHmmssZ');\n }\n if (tzid) {\n tzid = ';TZID=' + tzid;\n }\n return tzid + ':' + value.join(',') + ' ';\n }\n function serialize(rule, zone) {\n var weekStart = rule.weekStart;\n var ruleString = 'FREQ=' + rule.freq.toUpperCase();\n var exdates = rule.exdates || '';\n var start = rule.start || '';\n var end = rule.end || '';\n var until = rule.until;\n if (rule.interval > 1) {\n ruleString += ';INTERVAL=' + rule.interval;\n }\n if (rule.count) {\n ruleString += ';COUNT=' + rule.count;\n }\n if (until) {\n until = timezone.convert(until, zone || until.getTimezoneOffset(), 'Etc/UTC');\n ruleString += ';UNTIL=' + kendo.toString(until, 'yyyyMMddTHHmmssZ');\n }\n if (rule.months) {\n ruleString += ';BYMONTH=' + rule.months;\n }\n if (rule.weeks) {\n ruleString += ';BYWEEKNO=' + rule.weeks;\n }\n if (rule.yearDays) {\n ruleString += ';BYYEARDAY=' + rule.yearDays;\n }\n if (rule.monthDays) {\n ruleString += ';BYMONTHDAY=' + rule.monthDays;\n }\n if (rule.weekDays) {\n ruleString += ';BYDAY=' + serializeWeekDayList(rule.weekDays);\n }\n if (rule.hours) {\n ruleString += ';BYHOUR=' + rule.hours;\n }\n if (rule.minutes) {\n ruleString += ';BYMINUTE=' + rule.minutes;\n }\n if (rule.seconds) {\n ruleString += ';BYSECOND=' + rule.seconds;\n }\n if (rule.positions) {\n ruleString += ';BYSETPOS=' + rule.positions;\n }\n if (weekStart !== undefined) {\n ruleString += ';WKST=' + WEEK_DAYS[weekStart];\n }\n if (start) {\n start = 'DTSTART' + serializeDateRule(start, zone);\n }\n if (end) {\n end = 'DTEND' + serializeDateRule(end, zone);\n }\n if (exdates) {\n exdates = 'EXDATE' + serializeDateRule(exdates, zone);\n }\n if (start || end || exdates) {\n ruleString = start + end + exdates + 'RRULE:' + ruleString;\n }\n return ruleString;\n }\n kendo.recurrence = {\n rule: {\n parse: parseRule,\n serialize: serialize\n },\n expand: expand,\n dayInYear: dayInYear,\n weekInYear: weekInYear,\n weekInMonth: weekInMonth,\n numberOfWeeks: numberOfWeeks,\n isException: isException,\n toExceptionString: toExceptionString\n };\n var weekDayCheckBoxes = function (firstDay) {\n var shortNames = kendo.culture().calendar.days.namesShort, length = shortNames.length, result = '', idx = 0, values = [];\n for (; idx < length; idx++) {\n values.push(idx);\n }\n shortNames = shortNames.slice(firstDay).concat(shortNames.slice(0, firstDay));\n values = values.slice(firstDay).concat(values.slice(0, firstDay));\n for (idx = 0; idx < length; idx++) {\n result += '<label class=\"k-check\"><input class=\"k-recur-weekday-checkbox\" type=\"checkbox\" value=\"' + values[idx] + '\" /> ' + shortNames[idx] + '</label>';\n }\n return result;\n };\n var mobileWeekDayCheckBoxes = function (firstDay) {\n var shortNames = kendo.culture().calendar.days.names, length = shortNames.length, result = '', idx = 0, values = [];\n for (; idx < length; idx++) {\n values.push(idx);\n }\n shortNames = shortNames.slice(firstDay).concat(shortNames.slice(0, firstDay));\n values = values.slice(firstDay).concat(values.slice(0, firstDay));\n for (idx = 0; idx < length; idx++) {\n result += '<li class=\"k-item\"><label class=\"k-label\">';\n result += '<span class=\"k-item-title\">' + shortNames[idx] + '</span>';\n result += '<input class=\"k-recur-weekday-checkbox k-check\" type=\"checkbox\" value=\"' + values[idx] + '\" />';\n result += '</label></li>';\n }\n return result;\n };\n var RECURRENCE_VIEW_TEMPLATE = kendo.template('# if (frequency !== \"never\") { #' + '<div class=\"k-edit-label\"><label>#:messages.repeatEvery#</label></div>' + '<div class=\"k-edit-field\"><input class=\"k-recur-interval\" title=\"#:messages.interval#\"/>#:messages.interval#</div>' + '# } #' + '# if (frequency === \"weekly\") { #' + '<div class=\"k-edit-label\"><label>#:messages.repeatOn#</label></div>' + '<div class=\"k-edit-field\">#=weekDayCheckBoxes(firstWeekDay)#</div>' + '# } else if (frequency === \"monthly\") { #' + '<div class=\"k-edit-label\"><label>#:messages.repeatOn#</label></div>' + '<div class=\"k-edit-field\">' + '<ul class=\"k-reset\">' + '<li>' + '<label><input class=\"k-recur-month-radio\" type=\"radio\" name=\"month\" value=\"monthday\" title=\"#:messages.day#\" />#:messages.day#</label>' + '<input class=\"k-recur-monthday\" title=\"#:messages.day#\" />' + '</li>' + '<li>' + '<input class=\"k-recur-month-radio\" type=\"radio\" name=\"month\" value=\"weekday\" title=\"#:messages.repeatOn#\" />' + '<input class=\"k-recur-weekday-offset\" title=\"#:messages.repeatOn#\" /><input class=\"k-recur-weekday\" title=\"#:messages.day#\" />' + '</li>' + '</ul>' + '</div>' + '# } else if (frequency === \"yearly\") { #' + '<div class=\"k-edit-label\"><label>#:messages.repeatOn#</label></div>' + '<div class=\"k-edit-field\">' + '<ul class=\"k-reset\">' + '<li>' + '<input class=\"k-recur-year-radio\" type=\"radio\" name=\"year\" value=\"monthday\" title=\"#:messages.repeatOn#\" />' + '<input class=\"k-recur-month\" title=\"#:messages.repeatOn#\" /><input class=\"k-recur-monthday\" title=\"#:messages.day#\" />' + '</li>' + '<li>' + '<input class=\"k-recur-year-radio\" type=\"radio\" name=\"year\" value=\"weekday\" title=\"#:messages.repeatOn#\" />' + '<input class=\"k-recur-weekday-offset\" title=\"#:messages.repeatOn#\" /><input class=\"k-recur-weekday\" title=\"#:messages.day#\" />#:messages.of#<input class=\"k-recur-month\" title=\"#:messages.of#\"/>' + '</li>' + '</ul>' + '</div>' + '# } #' + '# if (frequency !== \"never\") { #' + '<div class=\"k-edit-label\"><label>#:end.label#</label></div>' + '<div class=\"k-edit-field\">' + '<ul class=\"k-reset\">' + '<li>' + '<label><input class=\"k-recur-end-never\" type=\"radio\" name=\"end\" value=\"never\" />#:end.never#</label>' + '</li>' + '<li>' + '<label><input class=\"k-recur-end-count\" type=\"radio\" name=\"end\" value=\"count\" />#:end.after#</label>' + '<input class=\"k-recur-count\" title=\"#:end.occurrence#\" />#:end.occurrence#' + '</li>' + '<li>' + '<label><input class=\"k-recur-end-until\" type=\"radio\" name=\"end\" value=\"until\" />#:end.on#</label>' + '<input class=\"k-recur-until\" title=\"#:end.on#\" />' + '</li>' + '</ul>' + '</div>' + '# } #');\n var DAY_RULE = [\n {\n day: 0,\n offset: 0\n },\n {\n day: 1,\n offset: 0\n },\n {\n day: 2,\n offset: 0\n },\n {\n day: 3,\n offset: 0\n },\n {\n day: 4,\n offset: 0\n },\n {\n day: 5,\n offset: 0\n },\n {\n day: 6,\n offset: 0\n }\n ];\n var WEEKDAY_RULE = [\n {\n day: 1,\n offset: 0\n },\n {\n day: 2,\n offset: 0\n },\n {\n day: 3,\n offset: 0\n },\n {\n day: 4,\n offset: 0\n },\n {\n day: 5,\n offset: 0\n }\n ];\n var WEEKEND_RULE = [\n {\n day: 0,\n offset: 0\n },\n {\n day: 6,\n offset: 0\n }\n ];\n var BaseRecurrenceEditor = Widget.extend({\n init: function (element, options) {\n var start;\n var that = this;\n var frequencies = options && options.frequencies;\n Widget.fn.init.call(that, element, options);\n that.wrapper = that.element;\n options = that.options;\n options.start = start = options.start || kendoDate.today();\n if (frequencies) {\n options.frequencies = frequencies;\n }\n if (typeof start === 'string') {\n options.start = kendo.parseDate(start, 'yyyyMMddTHHmmss');\n }\n if (options.firstWeekDay === null) {\n options.firstWeekDay = kendo.culture().calendar.firstDay;\n }\n that._namespace = '.' + options.name;\n },\n options: {\n value: '',\n start: '',\n timezone: '',\n spinners: true,\n firstWeekDay: null,\n frequencies: [\n 'never',\n 'daily',\n 'weekly',\n 'monthly',\n 'yearly'\n ],\n mobile: false,\n messages: {\n recurrenceEditorTitle: 'Recurrence editor',\n frequencies: {\n never: 'Never',\n hourly: 'Hourly',\n daily: 'Daily',\n weekly: 'Weekly',\n monthly: 'Monthly',\n yearly: 'Yearly'\n },\n hourly: {\n repeatEvery: 'Repeat every: ',\n interval: ' hour(s)'\n },\n daily: {\n repeatEvery: 'Repeat every: ',\n interval: ' day(s)'\n },\n weekly: {\n interval: ' week(s)',\n repeatEvery: 'Repeat every: ',\n repeatOn: 'Repeat on: '\n },\n monthly: {\n repeatEvery: 'Repeat every: ',\n repeatOn: 'Repeat on: ',\n interval: ' month(s)',\n day: 'Day '\n },\n yearly: {\n repeatEvery: 'Repeat every: ',\n repeatOn: 'Repeat on: ',\n interval: ' year(s)',\n of: ' of '\n },\n end: {\n label: 'End:',\n mobileLabel: 'Ends',\n never: 'Never',\n after: 'After ',\n occurrence: ' occurrence(s)',\n on: 'On '\n },\n offsetPositions: {\n first: 'first',\n second: 'second',\n third: 'third',\n fourth: 'fourth',\n last: 'last'\n },\n weekdays: {\n day: 'day',\n weekday: 'weekday',\n weekend: 'weekend day'\n }\n }\n },\n events: ['change'],\n _initInterval: function () {\n var that = this;\n var rule = that._value;\n that._container.find('.k-recur-interval').kendoNumericTextBox({\n spinners: that.options.spinners,\n value: rule.interval || 1,\n decimals: 0,\n format: '#',\n min: 1,\n change: function () {\n rule.interval = this.value();\n that._trigger();\n }\n });\n },\n _weekDayRule: function (clear) {\n var that = this;\n var weekday = (that._weekDay.element || that._weekDay).val();\n var offset = Number((that._weekDayOffset.element || that._weekDayOffset).val());\n var weekDays = null;\n var positions = null;\n if (!clear) {\n if (weekday === 'day') {\n weekDays = DAY_RULE;\n positions = offset;\n } else if (weekday === 'weekday') {\n weekDays = WEEKDAY_RULE;\n positions = offset;\n } else if (weekday === 'weekend') {\n weekDays = WEEKEND_RULE;\n positions = offset;\n } else {\n weekDays = [{\n offset: offset,\n day: Number(weekday)\n }];\n }\n }\n that._value.weekDays = weekDays;\n that._value.positions = positions;\n },\n _weekDayView: function () {\n var that = this;\n var weekDays = that._value.weekDays;\n var positions = that._value.positions;\n var weekDayOffsetWidget = that._weekDayOffset;\n var weekDayOffset;\n var weekDayValue;\n var length;\n var method;\n if (weekDays) {\n length = weekDays.length;\n if (positions) {\n if (length === 7) {\n weekDayValue = 'day';\n weekDayOffset = positions;\n } else if (length === 5) {\n weekDayValue = 'weekday';\n weekDayOffset = positions;\n } else if (length === 2) {\n weekDayValue = 'weekend';\n weekDayOffset = positions;\n }\n }\n if (!weekDayValue) {\n weekDays = weekDays[0];\n weekDayValue = weekDays.day;\n weekDayOffset = weekDays.offset || '';\n }\n method = weekDayOffsetWidget.value ? 'value' : 'val';\n weekDayOffsetWidget[method](weekDayOffset);\n that._weekDay[method](weekDayValue);\n }\n },\n _initWeekDay: function () {\n var that = this, data;\n var weekdayMessage = that.options.messages.weekdays;\n var offsetMessage = that.options.messages.offsetPositions;\n var weekDayInput = that._container.find('.k-recur-weekday');\n var change = function () {\n that._weekDayRule();\n that._trigger();\n };\n if (weekDayInput[0]) {\n that._weekDayOffset = new DropDownList(that._container.find('.k-recur-weekday-offset'), {\n change: change,\n dataTextField: 'text',\n dataValueField: 'value',\n dataSource: [\n {\n text: offsetMessage.first,\n value: '1'\n },\n {\n text: offsetMessage.second,\n value: '2'\n },\n {\n text: offsetMessage.third,\n value: '3'\n },\n {\n text: offsetMessage.fourth,\n value: '4'\n },\n {\n text: offsetMessage.last,\n value: '-1'\n }\n ]\n });\n data = [\n {\n text: weekdayMessage.day,\n value: 'day'\n },\n {\n text: weekdayMessage.weekday,\n value: 'weekday'\n },\n {\n text: weekdayMessage.weekend,\n value: 'weekend'\n }\n ];\n that._weekDay = new DropDownList(weekDayInput, {\n value: that.options.start.getDay(),\n change: change,\n dataTextField: 'text',\n dataValueField: 'value',\n dataSource: data.concat($.map(kendo.culture().calendar.days.names, function (dayName, idx) {\n return {\n text: dayName,\n value: idx\n };\n }))\n });\n that._weekDayView();\n }\n },\n _initWeekDays: function () {\n var that = this;\n var rule = that._value;\n var weekDays = that._container.find('.k-recur-weekday-checkbox');\n if (weekDays[0]) {\n weekDays.on(CLICK + that._namespace, function () {\n rule.weekDays = $.map(weekDays.filter(':checked'), function (checkbox) {\n return {\n day: Number(checkbox.value),\n offset: 0\n };\n });\n if (!that.options.mobile) {\n that._trigger();\n }\n });\n if (rule.weekDays) {\n var idx, weekDay;\n var i = 0, l = weekDays.length;\n var length = rule.weekDays.length;\n for (; i < l; i++) {\n weekDay = weekDays[i];\n for (idx = 0; idx < length; idx++) {\n if (weekDay.value == rule.weekDays[idx].day) {\n weekDay.checked = true;\n }\n }\n }\n }\n }\n },\n _initMonthDay: function () {\n var that = this;\n var rule = that._value;\n var monthDayInput = that._container.find('.k-recur-monthday');\n if (monthDayInput[0]) {\n that._monthDay = new kendo.ui.NumericTextBox(monthDayInput, {\n spinners: that.options.spinners,\n min: 1,\n max: 31,\n decimals: 0,\n format: '#',\n value: rule.monthDays ? rule.monthDays[0] : that.options.start.getDate(),\n change: function () {\n var value = this.value();\n rule.monthDays = value ? [value] : value;\n that._trigger();\n }\n });\n }\n },\n _initCount: function () {\n var that = this, input = that._container.find('.k-recur-count'), rule = that._value;\n that._count = input.kendoNumericTextBox({\n spinners: that.options.spinners,\n value: rule.count || 1,\n decimals: 0,\n format: '#',\n min: 1,\n change: function () {\n rule.count = this.value();\n that._trigger();\n }\n }).data('kendoNumericTextBox');\n },\n _initUntil: function () {\n var that = this, input = that._container.find('.k-recur-until'), start = that.options.start, rule = that._value, until = rule.until;\n that._until = input.kendoDatePicker({\n min: until && until < start ? until : start,\n value: until || new Date(start.getFullYear(), start.getMonth(), start.getDate(), 23, 59, 59),\n change: function () {\n var date = this.value();\n rule.until = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59);\n that._trigger();\n }\n }).data('kendoDatePicker');\n },\n _trigger: function () {\n if (!this.options.mobile) {\n this.trigger('change');\n }\n }\n });\n var RecurrenceEditor = BaseRecurrenceEditor.extend({\n init: function (element, options) {\n var that = this;\n BaseRecurrenceEditor.fn.init.call(that, element, options);\n that._initFrequency();\n that._initContainer();\n that.value(that.options.value);\n },\n options: { name: 'RecurrenceEditor' },\n events: ['change'],\n destroy: function () {\n var that = this;\n that._frequency.destroy();\n that._container.find('input[type=radio],input[type=checkbox]').off(CLICK + that._namespace);\n kendo.destroy(that._container);\n BaseRecurrenceEditor.fn.destroy.call(that);\n },\n value: function (value) {\n var that = this;\n var timezone = that.options.timezone;\n var freq;\n if (value === undefined) {\n if (!that._value.freq) {\n return '';\n }\n return serialize(that._value, timezone);\n }\n that._value = parseRule(value, timezone) || {};\n freq = that._value.freq;\n if (freq) {\n that._frequency.value(freq);\n } else {\n that._frequency.select(0);\n }\n that._initView(that._frequency.value());\n },\n _initContainer: function () {\n var element = this.element, container = $('<div class=\"k-recur-view\" />'), editContainer = element.parent('.k-edit-field');\n if (editContainer[0]) {\n container.insertAfter(editContainer);\n } else {\n element.append(container);\n }\n this._container = container;\n },\n _initFrequency: function () {\n var that = this, options = that.options, frequencies = options.frequencies, messages = options.messages.frequencies, ddl = $('<input />').attr({ title: options.messages.recurrenceEditorTitle }), frequency;\n frequencies = $.map(frequencies, function (frequency) {\n return {\n text: messages[frequency],\n value: frequency\n };\n });\n frequency = frequencies[0];\n if (frequency && frequency.value === 'never') {\n frequency.value = '';\n }\n that.element.append(ddl);\n that._frequency = new DropDownList(ddl, {\n dataTextField: 'text',\n dataValueField: 'value',\n dataSource: frequencies,\n change: function () {\n that._value = {};\n that._initView(that._frequency.value());\n that.trigger('change');\n }\n });\n },\n _initView: function (frequency) {\n var that = this;\n var rule = that._value;\n var options = that.options;\n var data = {\n frequency: frequency || 'never',\n weekDayCheckBoxes: weekDayCheckBoxes,\n firstWeekDay: options.firstWeekDay,\n messages: options.messages[frequency],\n end: options.messages.end\n };\n kendo.destroy(that._container);\n that._container.html(RECURRENCE_VIEW_TEMPLATE(data));\n if (!frequency) {\n that._value = {};\n return;\n }\n rule.freq = frequency;\n if (frequency === 'weekly' && !rule.weekDays) {\n rule.weekDays = [{\n day: options.start.getDay(),\n offset: 0\n }];\n }\n that._initInterval();\n that._initWeekDays();\n that._initMonthDay();\n that._initWeekDay();\n that._initMonth();\n that._initCount();\n that._initUntil();\n that._period();\n that._end();\n },\n _initMonth: function () {\n var that = this;\n var rule = that._value;\n var month = rule.months || [that.options.start.getMonth() + 1];\n var monthInputs = that._container.find('.k-recur-month');\n var options;\n if (monthInputs[0]) {\n options = {\n change: function () {\n rule.months = [Number(this.value())];\n that.trigger('change');\n },\n dataTextField: 'text',\n dataValueField: 'value',\n dataSource: $.map(kendo.culture().calendar.months.names, function (monthName, idx) {\n return {\n text: monthName,\n value: idx + 1\n };\n })\n };\n that._month1 = new DropDownList(monthInputs[0], options);\n that._month2 = new DropDownList(monthInputs[1], options);\n if (month) {\n month = month[0];\n that._month1.value(month);\n that._month2.value(month);\n }\n }\n },\n _end: function () {\n var that = this;\n var rule = that._value;\n var container = that._container;\n var namespace = that._namespace;\n var click = function (e) {\n that._toggleEnd(e.currentTarget.value);\n that.trigger('change');\n };\n var endRule;\n that._buttonNever = container.find('.k-recur-end-never').on(CLICK + namespace, click);\n that._buttonCount = container.find('.k-recur-end-count').on(CLICK + namespace, click);\n that._buttonUntil = container.find('.k-recur-end-until').on(CLICK + namespace, click);\n if (rule.count) {\n endRule = 'count';\n } else if (rule.until) {\n endRule = 'until';\n }\n that._toggleEnd(endRule);\n },\n _period: function () {\n var that = this;\n var rule = that._value;\n var monthly = rule.freq === 'monthly';\n var toggleRule = monthly ? that._toggleMonthDay : that._toggleYear;\n var selector = '.k-recur-' + (monthly ? 'month' : 'year') + '-radio';\n var radioButtons = that._container.find(selector);\n if (!monthly && rule.freq !== 'yearly') {\n return;\n }\n radioButtons.on(CLICK + that._namespace, function (e) {\n toggleRule.call(that, e.currentTarget.value);\n that.trigger('change');\n });\n that._buttonMonthDay = radioButtons.eq(0);\n that._buttonWeekDay = radioButtons.eq(1);\n toggleRule.call(that, rule.weekDays ? 'weekday' : 'monthday');\n },\n _toggleEnd: function (endRule) {\n var that = this;\n var count, until;\n var enableCount, enableUntil;\n if (endRule === 'count') {\n that._buttonCount.prop('checked', true);\n enableCount = true;\n enableUntil = false;\n count = that._count.value();\n until = null;\n } else if (endRule === 'until') {\n that._buttonUntil.prop('checked', true);\n enableCount = false;\n enableUntil = true;\n count = null;\n until = that._until.value();\n } else {\n that._buttonNever.prop('checked', true);\n enableCount = enableUntil = false;\n count = until = null;\n }\n if (that._count) {\n that._count.enable(enableCount);\n }\n if (that._until) {\n that._until.enable(enableUntil);\n }\n that._value.count = count;\n that._value.until = until;\n },\n _toggleMonthDay: function (monthRule) {\n var that = this;\n var enableMonthDay = false;\n var enableWeekDay = true;\n var clear = false;\n var monthDays;\n if (monthRule === 'monthday') {\n that._buttonMonthDay.prop('checked', true);\n monthDays = [that._monthDay.value()];\n enableMonthDay = true;\n enableWeekDay = false;\n clear = true;\n } else {\n that._buttonWeekDay.prop('checked', true);\n monthDays = null;\n }\n that._weekDay.enable(enableWeekDay);\n that._weekDayOffset.enable(enableWeekDay);\n that._monthDay.enable(enableMonthDay);\n that._value.monthDays = monthDays;\n that._weekDayRule(clear);\n },\n _toggleYear: function (yearRule) {\n var that = this;\n var enableMonth1 = false;\n var enableMonth2 = true;\n var month;\n if (yearRule === 'monthday') {\n enableMonth1 = true;\n enableMonth2 = false;\n month = that._month1.value();\n } else {\n month = that._month2.value();\n }\n that._month1.enable(enableMonth1);\n that._month2.enable(enableMonth2);\n that._value.months = [month];\n that._toggleMonthDay(yearRule);\n }\n });\n ui.plugin(RecurrenceEditor);\n var RECURRENCE_HEADER_TEMPLATE = kendo.template('<div data-role=\"content\"><ul><li class=\"k-item\"><label class=\"k-label\"><span class=\"k-item-title\">#:headerTitle#</span>' + '<div class=\"k-recur-pattern\"></div></label></li>' + '<li class=\"k-item k-recur-view\"></li></ul></div>');\n var RECURRENCE_REPEAT_PATTERN_TEMPLATE = kendo.template('# if (frequency !== \"never\") { #' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.repeatEvery#</span>' + '<div class=\"k-recur-editor-wrap\">' + '<input class=\"k-recur-interval\" type=\"number\" pattern=\"\\\\\\\\d*\"/>' + '# if (messages.interval.length) { #' + '<label class=\"k-recur-editor-text\">#:messages.interval#</label>' + '# } #' + '</div>' + '</label>' + '# } #' + '# if (frequency === \"weekly\") { #' + '<ul class=\"k-recur-items-wrap\">' + '<li class=\"k-item k-no-click\"><label class=\"k-label\"><span class=\"k-item-title\">#:messages.repeatOn#</span></label></li>' + '#=weekDayCheckBoxes(firstWeekDay)#' + '</ul>' + '# } else if (frequency === \"monthly\") { #' + '<ul class=\"k-recur-items-wrap\">' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.repeatBy#</span>' + '<div class=\"k-repeat-rule\"></div>' + '</label>' + '</li>' + '<li class=\"k-monthday-view k-item\" style=\"display:none\">' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.day#</span>' + '<div><input class=\"k-recur-monthday\" type=\"number\" title=\"#:messages.day#\" pattern=\"\\\\\\\\d*\"/></div>' + '</label>' + '</li>' + '<li class=\"k-weekday-view k-item\" style=\"display:none\">' + '<ul class=\"k-recur-items-wrap\">' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.every#</span>' + '<div><select class=\"k-recur-weekday-offset\" title=\"#:messages.every#\"></select></div>' + '</label>' + '</li>' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.day#</span>' + '<div><select class=\"k-recur-weekday\" title=\"#:messages.day#\"></select></div>' + '</label>' + '</li>' + '</ul>' + '</li>' + '</ul>' + '# } else if (frequency === \"yearly\") { #' + '<ul class=\"k-recur-items-wrap\">' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.repeatBy#</span>' + '<div class=\"k-repeat-rule\"></div>' + '</label>' + '</li>' + '<li class=\"k-monthday-view k-item\" style=\"display:none\">' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.day#</span>' + '<div><input class=\"k-recur-monthday\" type=\"number\" title=\"#:messages.day#\" pattern=\"\\\\\\\\d*\"/></div>' + '</label>' + '</li>' + '<li class=\"k-weekday-view k-item\" style=\"display:none\">' + '<ul class=\"k-recur-items-wrap\">' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.every#</span>' + '<div><select class=\"k-recur-weekday-offset\" title=\"#:messages.every#\"></select></div>' + '</label>' + '</li>' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.day#</span>' + '<div><select class=\"k-recur-weekday\" title=\"#:messages.day#\"></select></div>' + '</label>' + '</li>' + '</ul>' + '</li>' + '<li class=\"k-item\">' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.month#</span>' + '<div><select class=\"k-recur-month\" title=\"#:messages.month#\"></select></div>' + '</label>' + '</li>' + '</ul>' + '# } #');\n var RECURRENCE_END_PATTERN_TEMPLATE = kendo.template('# if (endPattern === \"count\") { #' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.after#</span>' + '<div><input class=\"k-recur-count\" type=\"number\" pattern=\"\\\\\\\\d*\" /></div>' + '</label>' + '# } else if (endPattern === \"until\") { #' + '<label class=\"k-label\">' + '<span class=\"k-item-title\">#:messages.on#</span>' + '<div><input type=\"date\" class=\"k-recur-until\" /></div>' + '</label>' + '# } #');\n var RECURRENCE_GROUP_BUTTON_TEMPLATE = kendo.template('<select class=\"k-scheduler-select\">' + '#for (var i = 0, length = dataSource.length; i < length; i++) {#' + '<option value=\"#=dataSource[i].value#\" #= value === dataSource[i].value ? \"selected\" : \"\" #>#:dataSource[i].text#</option>' + '#}#' + '</select>');\n var MobileRecurrenceEditor = BaseRecurrenceEditor.extend({\n init: function (element, options) {\n var that = this;\n BaseRecurrenceEditor.fn.init.call(that, element, options);\n options = that.options;\n that._optionTemplate = kendo.template('<option value=\"#:value#\">#:text#</option>');\n that.value(options.value);\n that._pane = options.pane;\n that._initRepeatButton();\n that._initParentRepeatEnd();\n that._defaultValue = that._value;\n },\n options: {\n name: 'MobileRecurrenceEditor',\n animations: {\n left: 'slide',\n right: 'slide:right'\n },\n mobile: true,\n messages: {\n cancel: 'Cancel',\n update: 'Save',\n endTitle: 'Repeat ends',\n repeatTitle: 'Repeat pattern',\n headerTitle: 'Repeat event',\n end: {\n patterns: {\n never: 'Never',\n after: 'After...',\n on: 'On...'\n },\n never: 'Never',\n after: 'End repeat after',\n on: 'End repeat on'\n },\n daily: { interval: '' },\n hourly: { interval: '' },\n weekly: { interval: '' },\n monthly: {\n interval: '',\n repeatBy: 'Repeat by: ',\n dayOfMonth: 'Day of the month',\n dayOfWeek: 'Day of the week',\n repeatEvery: 'Repeat every',\n every: 'Every',\n day: 'Day '\n },\n yearly: {\n interval: '',\n repeatBy: 'Repeat by: ',\n dayOfMonth: 'Day of the month',\n dayOfWeek: 'Day of the week',\n repeatEvery: 'Repeat every: ',\n every: 'Every',\n month: 'Month',\n day: 'Day'\n }\n }\n },\n events: ['change'],\n value: function (value) {\n var that = this;\n var timezone = that.options.timezone;\n if (value === undefined) {\n if (!that._value.freq) {\n return '';\n }\n return serialize(that._value, timezone);\n }\n that._value = parseRule(value, timezone) || {};\n },\n destroy: function () {\n this._destroyView();\n kendo.destroy(this._endFields);\n this.element.off(CLICK + this._namespace);\n BaseRecurrenceEditor.fn.destroy.call(this);\n },\n _initInterval: function () {\n var that = this;\n var rule = that._value;\n that._container.find('.k-recur-interval').val(that._value.interval || 1).on(CHANGE + that._namespace, function (e) {\n rule.interval = e.target.value;\n that._trigger();\n });\n },\n _initRepeatButton: function () {\n var that = this;\n var freq = that.options.messages.frequencies[this._value.freq || 'never'];\n that._chevronButton = $('<span class=\"k-icon k-i-arrow-chevron-right\"></span>');\n that._repeatValue = $('<span class=\"\">' + freq + '</span>');\n that.element.append(that._repeatValue).append(that._chevronButton);\n that.element.parents('li.k-item').on(CLICK + that._namespace, function (e) {\n e.preventDefault();\n that._createView('repeat');\n that._pane.navigate(that._view, that.options.animations.left);\n });\n },\n _endLiItem: function () {\n var that = this;\n return '<li class=\"k-item\"><label class=\"k-label\"><span class=\"k-item-title\">' + that.options.messages.end.mobileLabel + '</span><label></li>';\n },\n _initParentRepeatEnd: function () {\n var that = this;\n var endLabelField = $(that._endLiItem()).insertAfter(that.element.parents('li.k-item'));\n var endEditField = $('<div class=\"k-scheduler-recur-end-wrap\"><span class=\"k-scheduler-recur-end\"></span></div>').appendTo(endLabelField.find('.k-label'));\n endLabelField.on(CLICK + that._namespace, function (e) {\n e.preventDefault();\n that._navigateToView('repeat');\n });\n that._endParentLabelField = endLabelField.toggle(!!that._value.freq);\n that._endParentEndButton = endEditField.find('.k-scheduler-recur-end').text(that._endText());\n },\n _initRepeatEnd: function () {\n var that = this;\n var endLabelField = $(that._endLiItem()).insertAfter(that._container);\n var endEditField = $('<div class=\"k-scheduler-recur-end-wrap\"><span class=\"k-scheduler-recur-end\"></span><span class=\"k-icon k-i-arrow-chevron-right\"></span></div>').appendTo(endLabelField.find('.k-label'));\n endLabelField.on(CLICK + that._namespace, function (e) {\n e.preventDefault();\n that._navigateToView('end');\n });\n that._endLabelField = endLabelField.toggleClass('k-state-disabled', !that._value.freq);\n that._endButton = endEditField.find('.k-scheduler-recur-end').text(that._endText());\n },\n _navigateToView: function (viewName) {\n var that = this;\n that._createView(viewName);\n that._pane.navigate(that._view, that.options.animations.left);\n },\n _endText: function () {\n var rule = this._value;\n var messages = this.options.messages.end;\n var text = messages.never;\n if (rule.count) {\n text = kendo.format('{0} {1}', messages.after, rule.count);\n } else if (rule.until) {\n text = kendo.format('{0} {1:d}', messages.on, rule.until);\n }\n return text;\n },\n _initFrequency: function () {\n var that = this;\n var frequencyMessages = that.options.messages.frequencies;\n var html = RECURRENCE_GROUP_BUTTON_TEMPLATE({\n dataSource: $.map(this.options.frequencies, function (frequency) {\n return {\n text: frequencyMessages[frequency],\n value: frequency !== 'never' ? frequency : ''\n };\n }),\n value: that._value.freq || '',\n ns: kendo.ns\n });\n that._view.element.find('.k-recur-pattern').append(html);\n that._view.element.find('.k-scheduler-select').on(CHANGE + that._namespace, function (e) {\n var value = e.target.value;\n that._value = { freq: value };\n that._initRepeatView(true);\n });\n },\n _initEndNavigation: function () {\n var that = this;\n var endMessages = that.options.messages.end.patterns;\n var rule = that._value;\n var value = '';\n if (rule.count) {\n value = 'count';\n } else if (rule.until) {\n value = 'until';\n }\n var html = RECURRENCE_GROUP_BUTTON_TEMPLATE({\n dataSource: [\n {\n text: endMessages.never,\n value: ''\n },\n {\n text: endMessages.after,\n value: 'count'\n },\n {\n text: endMessages.on,\n value: 'until'\n }\n ],\n value: value,\n ns: kendo.ns\n });\n that._view.element.find('.k-recur-pattern').append(html);\n that._view.element.find('.k-scheduler-select').on(CHANGE + that._namespace, function (e) {\n var value = e.target.value;\n var count = null;\n var until = null;\n that._initEndView(value);\n if (that._count.length) {\n count = that._count.val();\n until = null;\n } else if (that._until.length) {\n count = null;\n until = that._until.val ? kendo.parseDate(that._until.val(), 'yyyy-MM-dd') : that._until.value();\n }\n rule.count = count;\n rule.until = until;\n });\n },\n _createView: function (viewType) {\n var that = this;\n var options = that.options;\n var messages = options.messages;\n var headerTitle = messages[viewType === 'repeat' ? 'repeatTitle' : 'endTitle'];\n var html = '<div data-role=\"view\" class=\"k-popup-edit-form k-scheduler-edit-form k-mobile-list\" id=\"recurrence\">' + '<div data-role=\"header\" class=\"k-header\">' + '<a href=\"#\" class=\"k-header-cancel k-scheduler-cancel k-link\" title=\"' + messages.cancel + '\"' + 'aria-label=\"' + messages.cancel + '\"><span class=\"k-icon k-i-arrow-chevron-left\"></span></a>' + messages.headerTitle + '<a href=\"#\" class=\"k-header-done k-scheduler-update k-link\" title=\"' + messages.update + '\" ' + 'aria-label=\"' + messages.update + '\"><span class=\"k-icon k-i-check\"></span></a>' + '</div>';\n var returnViewId = that._pane.view().id;\n that._view = that._pane.append(html + RECURRENCE_HEADER_TEMPLATE({ headerTitle: headerTitle }));\n that._view.element.on(CLICK + that._namespace, 'a.k-scheduler-cancel, a.k-scheduler-update', function (e) {\n e.preventDefault();\n e.stopPropagation();\n if ($(this).hasClass('k-scheduler-update')) {\n that.trigger('change');\n that._defaultValue = $.extend({}, that._value);\n } else {\n that._value = that._defaultValue;\n }\n var frequency = that._value.freq;\n that._endParentEndButton.text(that._endText());\n that._endParentLabelField.toggle(!!frequency && frequency !== 'never');\n that._endButton.text(that._endText());\n that._repeatValue.text(messages.frequencies[frequency || 'never']);\n that._pane.one('viewShow', function () {\n that._destroyView();\n });\n that._pane.navigate(returnViewId, that.options.animations.right);\n });\n that._container = that._view.element.find('.k-recur-view');\n if (viewType === 'repeat') {\n that._initFrequency();\n that._initRepeatView(true);\n that._initRepeatEnd();\n } else {\n that._initEndNavigation();\n that._initEndView();\n }\n },\n _destroyView: function () {\n if (this._view) {\n this._view.destroy();\n this._view.element.remove();\n this._container = null;\n }\n this._view = null;\n },\n _initRepeatView: function (isMobile) {\n var that = this;\n var frequency = that._value.freq || 'never';\n var data = {\n frequency: frequency,\n weekDayCheckBoxes: isMobile ? mobileWeekDayCheckBoxes : weekDayCheckBoxes,\n firstWeekDay: that.options.firstWeekDay,\n messages: that.options.messages[frequency]\n };\n var html = RECURRENCE_REPEAT_PATTERN_TEMPLATE(data);\n var container = that._container = that._container || this._pane.view().content.find('li.k-recur-view');\n var rule = that._value;\n if (that._endLabelField) {\n that._endLabelField.toggleClass('k-state-disabled', frequency === 'never');\n }\n kendo.destroy(container);\n container.html(html);\n if (!html) {\n that._value = {};\n container.hide();\n return;\n } else {\n container.show();\n }\n if (frequency === 'weekly' && !rule.weekDays) {\n rule.weekDays = [{\n day: that.options.start.getDay(),\n offset: 0\n }];\n }\n that._initInterval();\n that._initMonthDay();\n that._initWeekDays();\n that._initWeekDay();\n that._initMonth();\n that._period();\n },\n _initMonthDay: function () {\n var that = this;\n var rule = that._value;\n var monthDayInput = that._monthDay = that._container.find('.k-recur-monthday');\n monthDayInput.attr({\n min: 1,\n max: 31\n }).val(rule.monthDays ? rule.monthDays[0] : that.options.start.getDate()).on(CHANGE + that._namespace, function (e) {\n rule.count = e.target.value;\n that._trigger();\n });\n },\n _initCount: function () {\n var that = this, input = that._count = that._container.find('.k-recur-count'), rule = that._value;\n input.val(rule.count || 1).on(CHANGE + that._namespace, function (ev) {\n rule.count = ev.target.value;\n that._trigger();\n });\n },\n _initEndView: function (endPattern) {\n var that = this;\n var rule = that._value;\n if (endPattern === undefined) {\n if (rule.count) {\n endPattern = 'count';\n } else if (rule.until) {\n endPattern = 'until';\n }\n }\n var data = {\n endPattern: endPattern,\n messages: that.options.messages.end\n };\n kendo.destroy(that._container);\n that._container.html(RECURRENCE_END_PATTERN_TEMPLATE(data));\n that._initCount();\n that._initUntil();\n },\n _initWeekDay: function () {\n var that = this, data;\n var weekdayMessage = that.options.messages.weekdays;\n var offsetMessage = that.options.messages.offsetPositions;\n var weekDaySelect = that._container.find('.k-recur-weekday');\n var change = function () {\n that._weekDayRule();\n that.trigger('change');\n };\n if (weekDaySelect[0]) {\n that._weekDayOffset = that._container.find('.k-recur-weekday-offset').html(that._options([\n {\n text: offsetMessage.first,\n value: '1'\n },\n {\n text: offsetMessage.second,\n value: '2'\n },\n {\n text: offsetMessage.third,\n value: '3'\n },\n {\n text: offsetMessage.fourth,\n value: '4'\n },\n {\n text: offsetMessage.last,\n value: '-1'\n }\n ])).change(change);\n data = [\n {\n text: weekdayMessage.day,\n value: 'day'\n },\n {\n text: weekdayMessage.weekday,\n value: 'weekday'\n },\n {\n text: weekdayMessage.weekend,\n value: 'weekend'\n }\n ];\n data = data.concat($.map(kendo.culture().calendar.days.names, function (dayName, idx) {\n return {\n text: dayName,\n value: idx\n };\n }));\n that._weekDay = weekDaySelect.html(that._options(data)).change(change).val(that.options.start.getDay());\n that._weekDayView();\n }\n },\n _initMonth: function () {\n var that = this;\n var rule = that._value;\n var start = that.options.start;\n var month = rule.months || [start.getMonth() + 1];\n var monthSelect = that._container.find('.k-recur-month');\n var monthNames = kendo.culture().calendar.months.names;\n if (monthSelect[0]) {\n var data = $.map(monthNames, function (monthName, idx) {\n return {\n text: monthName,\n value: idx + 1\n };\n });\n monthSelect.html(that._options(data)).change(function () {\n rule.months = [Number(this.value)];\n });\n that._monthSelect = monthSelect;\n if (month) {\n monthSelect.val(month[0]);\n }\n }\n },\n _period: function () {\n var that = this;\n var rule = that._value;\n var container = that._container;\n var messages = that.options.messages[rule.freq];\n var repeatRuleGroupButton = container.find('.k-repeat-rule');\n var weekDayView = container.find('.k-weekday-view');\n var monthDayView = container.find('.k-monthday-view');\n if (repeatRuleGroupButton[0]) {\n var currentValue = rule.weekDays ? 'weekday' : 'monthday';\n var html = RECURRENCE_GROUP_BUTTON_TEMPLATE({\n value: currentValue,\n dataSource: [\n {\n text: messages.dayOfMonth,\n value: 'monthday'\n },\n {\n text: messages.dayOfWeek,\n value: 'weekday'\n }\n ],\n ns: kendo.ns\n });\n var init = function (val) {\n var weekDayName = that._weekDay.val();\n var weekDayOffset = that._weekDayOffset.val();\n var monthDay = that._monthDay.val();\n var month = that._monthSelect ? that._monthSelect.val() : null;\n if (val === 'monthday') {\n rule.weekDays = null;\n rule.monthDays = monthDay ? [monthDay] : monthDay;\n rule.months = month ? [Number(month)] : month;\n weekDayView.hide();\n monthDayView.show();\n } else {\n rule.monthDays = null;\n rule.months = month ? [Number(month)] : month;\n rule.weekDays = [{\n offset: Number(weekDayOffset),\n day: Number(weekDayName)\n }];\n weekDayView.show();\n monthDayView.hide();\n }\n };\n repeatRuleGroupButton.append(html);\n repeatRuleGroupButton.find('.k-scheduler-select').on(CHANGE + that._namespace, function (e) {\n init(e.target.value);\n });\n init(currentValue);\n }\n },\n _initUntil: function () {\n var that = this;\n var input = that._container.find('.k-recur-until');\n var start = that.options.start;\n var rule = that._value;\n var until = rule.until;\n var min = until && until < start ? until : start;\n if (kendo.support.input.date) {\n that._until = input.attr('min', kendo.toString(min, 'yyyy-MM-dd')).val(kendo.toString(until || start, 'yyyy-MM-dd')).on('change', function () {\n rule.until = kendo.parseDate(this.value, 'yyyy-MM-dd');\n });\n } else {\n that._until = input.kendoDatePicker({\n min: min,\n value: until || start,\n change: function () {\n rule.until = this.value();\n }\n }).data('kendoDatePicker');\n }\n },\n _options: function (data, optionLabel) {\n var idx = 0;\n var html = '';\n var length = data.length;\n var template = this._optionTemplate;\n if (optionLabel) {\n html += template({\n value: '',\n text: optionLabel\n });\n }\n for (; idx < length; idx++) {\n html += template(data[idx]);\n }\n return html;\n }\n });\n ui.plugin(MobileRecurrenceEditor);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.scheduler.timelineview', ['kendo.scheduler.view'], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler.timelineview',\n name: 'Scheduler Timeline View',\n category: 'web',\n description: 'The Scheduler Timeline View',\n depends: ['scheduler.view'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, setTime = kendo.date.setTime, SchedulerView = ui.SchedulerView, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, extend = $.extend, proxy = $.proxy, getDate = kendo.date.getDate, getMilliseconds = kendo.date.getMilliseconds, MS_PER_DAY = kendo.date.MS_PER_DAY, MS_PER_MINUTE = kendo.date.MS_PER_MINUTE, CURRENT_TIME_MARKER_CLASS = 'k-current-time', CURRENT_TIME_MARKER_ARROW_CLASS = 'k-current-time-arrow', SCHEDULER_HEADER_WRAP_CLASS = 'k-scheduler-header-wrap', INVERSE_COLOR_CLASS = 'k-event-inverse', BORDER_SIZE_COEFF = 0.8666, NS = '.kendoTimelineView';\n var EVENT_TEMPLATE = kendo.template('<div>' + '<div class=\"k-event-template k-event-time\">#:kendo.format(\"{0:t} - {1:t}\", start, end)#</div>' + '<div class=\"k-event-template\">${title}</div></div>'), DATA_HEADER_TEMPLATE = kendo.template('<span class=\\'k-link k-nav-day\\'>#=kendo.format(\\'{0:m}\\', date)#</span>'), EVENT_WRAPPER_STRING = '<div role=\"gridcell\" aria-selected=\"false\" ' + 'data-#=ns#uid=\"#=uid#\"' + '#if (resources[0]) { #' + 'style=\"background-color:#=resources[0].color#; border-color: #=resources[0].color#\"' + 'class=\"k-event\" ' + '#} else {#' + 'class=\"k-event\"' + '#}#' + '>' + '<span class=\"k-event-actions\">' + '# if(data.tail) {#' + '<span class=\"k-icon k-i-arrow-60-left\"></span>' + '#}#' + '# if(data.isException()) {#' + '<span class=\"k-icon k-i-non-recurrence\"></span>' + '# } else if(data.isRecurring()) {#' + '<span class=\"k-icon k-i-reload\"></span>' + '# } #' + '</span>' + '{0}' + '<span class=\"k-event-actions\">' + '#if (showDelete) {#' + '<a href=\"\\\\#\" class=\"k-link k-event-delete\" title=\"${data.messages.destroy}\" aria-label=\"${data.messages.destroy}\"><span class=\"k-icon k-i-close\"></span></a>' + '#}#' + '# if(data.head) {#' + '<span class=\"k-icon k-i-arrow-60-right\"></span>' + '#}#' + '</span>' + '#if(resizable && !data.tail){#' + '<span class=\"k-resize-handle k-resize-w\"></span>' + '#}#' + '#if(resizable && !data.head){#' + '<span class=\"k-resize-handle k-resize-e\"></span>' + '#}#' + '</div>';\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n setTime(staticDate, getMilliseconds(date));\n return staticDate;\n }\n function getWorkDays(options) {\n var workDays = [];\n var dayIndex = options.workWeekStart % 7;\n var workWeekEnd = Math.abs(options.workWeekEnd % 7);\n workDays.push(dayIndex);\n while (workWeekEnd != dayIndex) {\n if (dayIndex > 6) {\n dayIndex -= 7;\n } else {\n dayIndex++;\n }\n workDays.push(dayIndex);\n }\n return workDays;\n }\n function setColspan(columnLevel) {\n var count = 0;\n if (columnLevel.columns) {\n for (var i = 0; i < columnLevel.columns.length; i++) {\n count += setColspan(columnLevel.columns[i]);\n }\n columnLevel.colspan = count;\n return count;\n } else {\n columnLevel.colspan = 1;\n return 1;\n }\n }\n function collidingEvents(elements, left, right) {\n var idx, startPosition, overlaps, endPosition;\n for (idx = elements.length - 1; idx >= 0; idx--) {\n startPosition = elements[idx].rectLeft;\n endPosition = elements[idx].rectRight;\n overlaps = startPosition <= left && endPosition >= left;\n if (overlaps || startPosition >= left && endPosition <= right || left <= startPosition && right >= startPosition) {\n if (startPosition < left) {\n left = startPosition;\n }\n if (endPosition > right) {\n right = endPosition;\n }\n }\n }\n return eventsForSlot(elements, left, right);\n }\n function eventsForSlot(elements, left, right) {\n var events = [];\n for (var idx = 0; idx < elements.length; idx++) {\n var event = {\n rectLeft: elements[idx].rectLeft,\n rectRight: elements[idx].rectRight\n };\n if (event.rectLeft < left && event.rectRight > left || event.rectLeft >= left && event.rectRight <= right) {\n events.push(elements[idx]);\n }\n }\n return events;\n }\n var TimelineGroupedView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _getTimeSlotByPosition: function (x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n return group.timeSlotByPosition(x, y);\n },\n _hideHeaders: function () {\n var view = this._view;\n view.timesHeader.find('table tr:last').hide();\n view.datesHeader.find('table tr:last').hide();\n },\n _setColspan: function (timeColumn) {\n setColspan(timeColumn);\n },\n _createRowsLayout: function (resources, rows, groupHeaderTemplate) {\n var view = this._view;\n return view._createRowsLayout(resources, rows, groupHeaderTemplate);\n },\n _createVerticalColumnsLayout: function (resources, rows, groupHeaderTemplate, columns) {\n return columns;\n },\n _createColumnsLayout: function (resources, columns, groupHeaderTemplate) {\n var view = this._view;\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate);\n },\n _getRowCount: function () {\n var view = this._view;\n return view._groupCount();\n },\n _getGroupsCount: function () {\n return 1;\n },\n _addContent: function (dates, columnCount, groupsCount, rowCount, start, end, slotTemplate, isVerticalGrouped) {\n var view = this._view;\n var html = '';\n var options = view.options;\n var appendRow = function (date) {\n var content = '';\n var classes = '';\n var tmplDate;\n var resources = function (groupIndex) {\n return function () {\n return view._resourceBySlot({ groupIndex: groupIndex });\n };\n };\n if (kendo.date.isToday(dates[idx])) {\n classes += 'k-today';\n }\n if (kendo.date.getMilliseconds(date) < kendo.date.getMilliseconds(options.workDayStart) || kendo.date.getMilliseconds(date) >= kendo.date.getMilliseconds(options.workDayEnd) || !view._isWorkDay(dates[idx])) {\n classes += ' k-nonwork-hour';\n }\n content += '<td' + (classes !== '' ? ' class=\"' + classes + '\"' : '') + '>';\n tmplDate = kendo.date.getDate(dates[idx]);\n kendo.date.setTime(tmplDate, kendo.date.getMilliseconds(date));\n content += slotTemplate({\n date: tmplDate,\n resources: resources(isVerticalGrouped ? rowIdx : groupIdx)\n });\n content += '</td>';\n return content;\n };\n for (var rowIdx = 0; rowIdx < rowCount; rowIdx++) {\n html += '<tr>';\n for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n for (var idx = 0, length = columnCount; idx < length; idx++) {\n html += view._forTimeRange(start, end, appendRow);\n }\n }\n html += '</tr>';\n }\n return html;\n },\n _addTimeSlotsCollections: function (groupCount, datesCount, tableRows, interval, isVerticallyGrouped) {\n var view = this._view;\n var rowCount = tableRows.length;\n if (isVerticallyGrouped) {\n rowCount = Math.floor(rowCount / groupCount);\n }\n for (var groupIndex = 0; groupIndex < groupCount; groupIndex++) {\n var rowMultiplier = 0;\n var group = view.groups[groupIndex];\n var time;\n if (isVerticallyGrouped) {\n rowMultiplier = groupIndex;\n }\n var rowIndex = rowMultiplier * rowCount;\n var cellMultiplier = 0;\n if (!isVerticallyGrouped) {\n cellMultiplier = groupIndex;\n }\n var cells = tableRows[rowIndex].children;\n var cellsPerGroup = cells.length / (!isVerticallyGrouped ? groupCount : 1);\n var cellsPerDay = cellsPerGroup / datesCount;\n for (var dateIndex = 0; dateIndex < datesCount; dateIndex++) {\n var cellOffset = dateIndex * cellsPerDay + cellsPerGroup * cellMultiplier;\n time = getMilliseconds(new Date(+view.startTime()));\n for (var cellIndex = 0; cellIndex < cellsPerDay; cellIndex++) {\n view._addTimeSlotToCollection(group, cells, cellIndex, cellOffset, dateIndex, time, interval);\n time += interval;\n }\n }\n }\n },\n _getVerticalGroupCount: function (groupsCount) {\n return groupsCount;\n },\n _getVerticalRowCount: function (eventGroups, groupIndex, maxRowCount) {\n var view = this._view;\n return view._isVerticallyGrouped() ? eventGroups[groupIndex].maxRowCount : maxRowCount;\n },\n _renderEvent: function (eventGroup, event, adjustedEvent, group, range, container) {\n var view = this._view;\n var element;\n element = view._createEventElement(adjustedEvent.occurrence, event, range.head || adjustedEvent.head, range.tail || adjustedEvent.tail);\n element.appendTo(container).css({\n top: 0,\n height: view.options.eventHeight\n });\n var eventObject = {\n start: adjustedEvent.occurrence._startTime || adjustedEvent.occurrence.start,\n end: adjustedEvent.occurrence._endTime || adjustedEvent.occurrence.end,\n element: element,\n uid: event.uid,\n slotRange: range,\n rowIndex: 0,\n offsetTop: 0\n };\n eventGroup.events[event.uid] = eventObject;\n view._inverseEventColor(element);\n view.addContinuousEvent(group, range, element, event.isAllDay);\n view._arrangeRows(eventObject, range, eventGroup);\n },\n _verticalCountForLevel: function (level) {\n var view = this._view;\n return view._rowCountForLevel(level);\n },\n _horizontalCountForLevel: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level);\n },\n _updateCurrentVerticalTimeMarker: function (ranges, currentTime) {\n var view = this._view;\n var elementHtml = '<div class=\\'' + CURRENT_TIME_MARKER_CLASS + '\\'></div>';\n var headerWrap = view.datesHeader.find('.' + SCHEDULER_HEADER_WRAP_CLASS);\n var left = Math.round(ranges[0].innerRect(currentTime, new Date(currentTime.getTime() + 1), false).left);\n var timesTableMarker = $(elementHtml).prependTo(headerWrap).addClass(CURRENT_TIME_MARKER_ARROW_CLASS + '-down');\n timesTableMarker.css({\n left: view._adjustLeftPosition(left - outerWidth(timesTableMarker) * BORDER_SIZE_COEFF / 2),\n top: headerWrap.find('tr:last').prev().position().top\n });\n $(elementHtml).prependTo(view.content).css({\n left: view._adjustLeftPosition(left),\n width: '1px',\n height: view.content[0].scrollHeight - 1,\n top: 0\n });\n },\n _changeGroup: function () {\n return undefined;\n },\n _prevGroupSlot: function (slot, group, isDay) {\n var view = this._view;\n if (view._isVerticallyGrouped()) {\n return slot;\n } else {\n var collection = group._collection(0, isDay);\n return collection.last();\n }\n },\n _nextGroupSlot: function (slot, group, isDay) {\n var view = this._view;\n if (view._isVerticallyGrouped()) {\n return slot;\n } else {\n var collection = group._collection(0, isDay);\n return collection.first();\n }\n },\n _verticalSlots: function (selection, reverse) {\n var view = this._view;\n return view._changeGroup(selection, reverse);\n },\n _verticalMethod: function (reverse) {\n return reverse ? 'leftSlot' : 'rightSlot';\n },\n _normalizeVerticalSelection: function () {\n return undefined;\n },\n _horizontalSlots: function (selection, group, method, startSlot, endSlot, multiple, reverse) {\n var view = this._view;\n var result = {};\n result.startSlot = group[method](startSlot);\n result.endSlot = group[method](endSlot);\n if (!multiple && view._isHorizontallyGrouped() && (!result.startSlot || !result.endSlot)) {\n result.startSlot = result.endSlot = view._changeGroup(selection, reverse);\n }\n return result;\n },\n _changeVerticalViewPeriod: function () {\n return false;\n },\n _changeHorizontalViewPeriod: function (slots, shift, selection, reverse) {\n var view = this._view;\n if ((!slots.startSlot || !slots.endSlot) && !shift && view._changeViewPeriod(selection, reverse, false)) {\n return true;\n }\n return false;\n },\n _updateDirection: function (selection, ranges, shift, reverse) {\n var view = this._view;\n view._updateDirection(selection, ranges, shift, reverse, true);\n },\n _createMoveHint: function (range, adjustedEvent) {\n var view = this._view;\n var startSlot = range.start;\n var hint = view._createEventElement(adjustedEvent.occurrence, adjustedEvent.occurrence, false, false);\n hint.addClass('k-event-drag-hint');\n var rect = range.innerRect(adjustedEvent.occurrence.start, adjustedEvent.occurrence.end, view.options.snap);\n var width = rect.right - rect.left - 2;\n if (width < 0) {\n width = 0;\n }\n var left = view._adjustLeftPosition(rect.left);\n var css = {\n left: left,\n top: startSlot.offsetTop,\n height: startSlot.offsetHeight - 2,\n width: width\n };\n hint.css(css);\n if (adjustedEvent.occurrence.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n view._appendMoveHint(hint);\n },\n _adjustLeftPosition: function (left) {\n var view = this._view;\n if (view._isRtl) {\n left -= view.content[0].scrollWidth - view.content[0].clientWidth;\n }\n return left;\n }\n });\n var TimelineGroupedByDateView = kendo.Class.extend({\n init: function (view) {\n this._view = view;\n },\n _getTimeSlotByPosition: function (x, y, groupIndex) {\n var group = this._view.groups[groupIndex];\n return group.timeSlotByPosition(x, y, true);\n },\n _hideHeaders: function () {\n var view = this._view;\n if (!view._isVerticallyGrouped()) {\n view.timesHeader.find('table tr').eq(2).hide();\n view.datesHeader.find('table tr').eq(2).hide();\n } else {\n view.times.find('.k-last').hide();\n }\n },\n _setColspan: function () {\n },\n _createRowsLayout: function (resources, rows, groupHeaderTemplate, columns) {\n var view = this._view;\n return view._createDateLayout(columns, null, true);\n },\n _createVerticalColumnsLayout: function (resources, rows, groupHeaderTemplate) {\n var view = this._view;\n return view._createColumnsLayout(resources, null, groupHeaderTemplate);\n },\n _createColumnsLayout: function (resources, columns, groupHeaderTemplate, subColumns) {\n var view = this._view;\n return view._createColumnsLayout(resources, columns, groupHeaderTemplate, subColumns, true);\n },\n _getRowCount: function (level) {\n var view = this._view;\n return view._rowCountForLevel(level);\n },\n _getGroupsCount: function () {\n var view = this._view;\n return view._groupCount();\n },\n _addContent: function (dates, columnCount, groupsCount, rowCount, start, end, slotTemplate, isVerticalGrouped) {\n var view = this._view;\n var html = '';\n var options = view.options;\n var appendRow = function (date, isMajorTickColumn, isMiddleColumn, isLastSlotColumn, minorTickColumns, groupIdx) {\n var content = '';\n var classes = '';\n var tmplDate;\n var workDateIndex = view._isVerticallyGrouped() ? dateIndex : idx;\n var resources = function (groupIndex) {\n return function () {\n return view._resourceBySlot({ groupIndex: groupIndex });\n };\n };\n if (kendo.date.isToday(dates[idx])) {\n classes += 'k-today';\n }\n if (kendo.date.getMilliseconds(date) < kendo.date.getMilliseconds(options.workDayStart) || kendo.date.getMilliseconds(date) >= kendo.date.getMilliseconds(options.workDayEnd) || !view._isWorkDay(dates[workDateIndex])) {\n classes += ' k-nonwork-hour';\n }\n content += '<td' + (classes !== '' ? ' class=\"' + classes + '\"' : '') + '>';\n tmplDate = kendo.date.getDate(dates[idx]);\n kendo.date.setTime(tmplDate, kendo.date.getMilliseconds(date));\n content += slotTemplate({\n date: tmplDate,\n resources: resources(groupIdx)\n });\n content += '</td>';\n return content;\n };\n var tempStart = new Date(start), minorTickCount = view.options.minorTickCount, msMajorInterval = view.options.majorTick * MS_PER_MINUTE, msInterval = msMajorInterval / minorTickCount || 1, dateIndex;\n for (var rowIdx = 0; rowIdx < rowCount; rowIdx++) {\n html += '<tr>';\n if (rowIdx % (rowCount / view._dates.length) === 0) {\n dateIndex = rowIdx / (rowCount / view._dates.length);\n tempStart = new Date(view._dates[dateIndex]);\n kendo.date.setTime(tempStart, kendo.date.getMilliseconds(start));\n }\n for (var idx = 0, length = columnCount; idx < length; idx++) {\n html += view._forTimeRange(tempStart, end, appendRow, isVerticalGrouped, groupsCount);\n if (isVerticalGrouped) {\n setTime(tempStart, msInterval, false);\n break;\n }\n }\n html += '</tr>';\n }\n return html;\n },\n _addTimeSlotsCollections: function (groupCount, datesCount, tableRows, interval, isVerticallyGrouped) {\n var view = this._view;\n var rowCount = tableRows.length;\n if (isVerticallyGrouped) {\n rowCount = rowCount / datesCount;\n }\n for (var dateIndex = 0; dateIndex < datesCount; dateIndex++) {\n var rowMultiplier = 0;\n var time;\n if (isVerticallyGrouped) {\n rowMultiplier = dateIndex;\n }\n var rowIndex = rowMultiplier * rowCount;\n var cellMultiplier = 0;\n var cells = tableRows[rowIndex].children;\n var cellsPerGroup = isVerticallyGrouped ? rowCount : cells.length / (datesCount * groupCount);\n var cellsPerDay = cells.length / datesCount;\n var cellOffset;\n time = getMilliseconds(new Date(+view.startTime()));\n for (var cellIndex = 0; cellIndex < cellsPerGroup; cellIndex++) {\n if (!isVerticallyGrouped) {\n cellOffset = dateIndex * cellsPerDay + groupCount * cellIndex;\n cellMultiplier++;\n } else {\n cellOffset = 0;\n cells = tableRows[cellIndex + cellsPerGroup * dateIndex].children;\n }\n for (var groupIndex = 0; groupIndex < groupCount; groupIndex++) {\n var group = view.groups[groupIndex];\n view._addTimeSlotToCollection(group, cells, groupIndex, cellOffset, dateIndex, time, interval);\n }\n time += interval;\n }\n }\n },\n _getVerticalGroupCount: function () {\n var view = this._view;\n return view.content.find('tr').length;\n },\n _getVerticalRowCount: function (eventGroups, groupIndex, maxRowCount) {\n return maxRowCount;\n },\n _renderEvent: function (eventGroup, event, adjustedEvent, group, range, container, startIndex, endIndex) {\n var view = this._view;\n var element;\n var eventObjects = [];\n for (var i = range.start.index; i <= range.end.index; i++) {\n element = view._createEventElement(adjustedEvent.occurrence, event, i !== endIndex, i !== startIndex);\n element.appendTo(container).css({\n top: 0,\n height: view.options.eventHeight\n });\n var currentSlot = group._timeSlotCollections[0]._slots[i];\n var dateRange = group.timeSlotRanges(currentSlot.start, currentSlot.end, false)[0];\n var eventObject = {\n start: i === startIndex ? adjustedEvent.occurrence._startTime || adjustedEvent.occurrence.start : currentSlot.start,\n end: i === endIndex ? adjustedEvent.occurrence._endTime || adjustedEvent.occurrence.end : currentSlot.end,\n element: element,\n uid: event.uid,\n slotRange: dateRange,\n rowIndex: 0,\n offsetTop: 0\n };\n eventGroup.events[event.uid] = eventObject;\n eventObjects.push(eventObject);\n view.addContinuousEvent(group, dateRange, element, event.isAllDay);\n view._arrangeRows(eventObject, dateRange, eventGroup);\n }\n eventGroup.events[event.uid] = eventObjects;\n },\n _verticalCountForLevel: function (level) {\n var view = this._view;\n return view._columnCountForLevel(level);\n },\n _horizontalCountForLevel: function (level, columnLevel) {\n var view = this._view;\n return view._columnCountForLevel(columnLevel) / view._columnCountForLevel(2);\n },\n _updateCurrentVerticalTimeMarker: function (ranges, currentTime) {\n var view = this._view;\n var firstTimesCell = view.times.find('tr:first th:first');\n var lastTimesCell = view.times.find('tr:first th:last');\n var elementHtml = '<div class=\\'' + CURRENT_TIME_MARKER_CLASS + '\\'></div>';\n var timesTableMarker = $(elementHtml).prependTo(view.times);\n var markerTopPosition = Math.round(ranges[0].innerRect(currentTime, new Date(currentTime.getTime() + 1), false).top);\n var timesTableMarkerCss = {};\n if (this._isRtl) {\n timesTableMarkerCss.right = firstTimesCell.position().left + outerHeight(firstTimesCell) - outerHeight(lastTimesCell);\n timesTableMarker.addClass(CURRENT_TIME_MARKER_ARROW_CLASS + '-left');\n } else {\n timesTableMarkerCss.left = lastTimesCell.position().left;\n timesTableMarker.addClass(CURRENT_TIME_MARKER_ARROW_CLASS + '-right');\n }\n timesTableMarkerCss.top = markerTopPosition - outerWidth(timesTableMarker) * BORDER_SIZE_COEFF / 2;\n timesTableMarker.css(timesTableMarkerCss);\n $(elementHtml).prependTo(view.content).css({\n top: markerTopPosition,\n height: '1px',\n right: '1px',\n width: view.content[0].scrollWidth,\n left: 0\n });\n },\n _changeGroup: function (selection, previous, slot) {\n var view = this._view;\n if (!slot) {\n selection.groupIndex = previous ? view.groups.length - 1 : 0;\n }\n },\n _prevGroupSlot: function (slot) {\n return slot;\n },\n _nextGroupSlot: function (slot) {\n return slot;\n },\n _changeDate: function (selection, reverse, slot) {\n var view = this._view;\n var group = view.groups[selection.groupIndex];\n var collections, index;\n if (reverse) {\n collections = group._getCollections(false);\n index = slot.index - 1;\n if (index >= 0) {\n return collections[0]._slots[index];\n }\n } else {\n collections = group._getCollections(false);\n index = slot.index + 1;\n if (collections[0] && collections[0]._slots[index]) {\n return collections[0]._slots[index];\n }\n }\n },\n _verticalSlots: function (selection, reverse, slot) {\n return this._changeDate(selection, reverse, slot);\n },\n _verticalMethod: function (reverse, multiple) {\n if (multiple) {\n return reverse ? 'upSlot' : 'downSlot';\n } else {\n return reverse ? 'leftSlot' : 'rightSlot';\n }\n },\n _normalizeVerticalSelection: function (selection, ranges, reverse, multiple) {\n var view = this._view;\n if (!multiple) {\n return view._normalizeVerticalSelection(selection, ranges, reverse);\n }\n return undefined;\n },\n _horizontalSlots: function (selection, group, method, startSlot, endSlot, multiple, reverse) {\n var view = this._view;\n var tempSlot = view._changeGroup(selection, reverse);\n var result = {};\n if (!tempSlot) {\n if (!view._isVerticallyGrouped()) {\n result.startSlot = group[method](startSlot);\n result.endSlot = group[method](endSlot);\n }\n } else {\n result.startSlot = result.endSlot = tempSlot;\n }\n return result;\n },\n _changeVerticalViewPeriod: function (slots, shift, selection, reverse) {\n var view = this._view;\n if ((!slots.startSlot || !slots.endSlot) && !shift && view._changeViewPeriod(selection, reverse, view._isVerticallyGrouped())) {\n return true;\n }\n return false;\n },\n _changeHorizontalViewPeriod: function (slots, shift, selection, reverse) {\n var view = this._view;\n if (view._isVerticallyGrouped()) {\n return false;\n }\n if ((!slots.startSlot || !slots.endSlot) && !shift && view._changeViewPeriod(selection, reverse, false)) {\n return true;\n }\n return false;\n },\n _updateDirection: function (selection, ranges, shift, reverse) {\n var view = this._view;\n view._updateDirection(selection, ranges, shift, reverse, !view._isVerticallyGrouped());\n },\n _createMoveHint: function (range, adjustedEvent) {\n var view = this._view;\n var startSlot = range.start;\n var startEnd = range.end;\n for (var slotIdx = startSlot.index; slotIdx <= startEnd.index; slotIdx++) {\n var slot = range.collection._slots[slotIdx];\n var hint = view._createEventElement(adjustedEvent.occurrence, adjustedEvent.occurrence, false, false);\n hint.addClass('k-event-drag-hint');\n var css = {\n left: slot.offsetLeft + 2,\n top: slot.offsetTop,\n height: view.options.eventHeight,\n width: slot.offsetWidth\n };\n hint.css(css);\n if (adjustedEvent.occurrence.inverseColor) {\n hint.addClass(INVERSE_COLOR_CLASS);\n }\n view._appendMoveHint(hint);\n }\n },\n _adjustLeftPosition: function (left) {\n var view = this._view;\n if (view._isRtl && !view._isVerticallyGrouped()) {\n left -= view.content[0].scrollWidth - view.content[0].offsetWidth;\n }\n return left;\n }\n });\n kendo.ui.scheduler.TimelineGroupedView = TimelineGroupedView;\n kendo.ui.scheduler.TimelineGroupedByDateView = TimelineGroupedByDateView;\n var TimelineView = SchedulerView.extend({\n init: function (element, options) {\n var that = this;\n SchedulerView.fn.init.call(that, element, options);\n that._groupedView = that._getGroupedView();\n that.title = that.options.title || that.options.name;\n that._workDays = getWorkDays(that.options);\n that._templates();\n that._editable();\n that.calculateDateRange();\n that._groups();\n that._currentTime(true);\n },\n name: 'timeline',\n _getGroupedView: function () {\n if (this._isGroupedByDate()) {\n return new kendo.ui.scheduler.TimelineGroupedByDateView(this);\n } else {\n return new kendo.ui.scheduler.TimelineGroupedView(this);\n }\n },\n _getNextEventIndexBySlot: function (slot, sortedEvents, groupIndex) {\n if (this._isVerticallyGrouped()) {\n return kendo.ui.SchedulerView.fn._getNextEventIndexBySlot.call(this, slot, sortedEvents, groupIndex);\n }\n var tempIndex = 0;\n for (var i = 0; i < sortedEvents.length; i++) {\n if (slot.startDate() > sortedEvents[i].start.startDate()) {\n tempIndex++;\n continue;\n }\n if (slot.startDate().getTime() === sortedEvents[i].start.startDate().getTime() && groupIndex > sortedEvents[i].start.groupIndex) {\n tempIndex++;\n continue;\n }\n break;\n }\n return tempIndex;\n },\n _getSelectedSlot: function (slot, sortedEvents, event, idx, pad, prev) {\n if (this._isVerticallyGrouped()) {\n return kendo.ui.SchedulerView.fn._getSelectedSlot.call(this, slot, sortedEvents, event, idx, pad, prev);\n }\n return slot;\n },\n _getSortedEvents: function (uniqueAllEvents) {\n if (this._isVerticallyGrouped()) {\n return kendo.ui.SchedulerView.fn._getSortedEvents.call(this, uniqueAllEvents);\n }\n return uniqueAllEvents.sort(function (first, second) {\n var result = first.start.startDate().getTime() - second.start.startDate().getTime();\n if (result === 0) {\n if (first.start.isDaySlot && !second.start.isDaySlot) {\n result = -1;\n }\n if (!first.start.isDaySlot && second.start.isDaySlot) {\n result = 1;\n }\n }\n if (result === 0) {\n result = first.start.groupIndex - second.start.groupIndex;\n }\n if (result === 0) {\n result = $(first.element).index() - $(second.element).index();\n }\n return result;\n });\n },\n _currentTimeMarkerUpdater: function () {\n this._updateCurrentTimeMarker(new Date());\n },\n _updateCurrentTimeMarker: function (currentTime) {\n var options = this.options;\n this.datesHeader.find('.' + CURRENT_TIME_MARKER_CLASS).remove();\n this.times.find('.' + CURRENT_TIME_MARKER_CLASS).remove();\n this.content.find('.' + CURRENT_TIME_MARKER_CLASS).remove();\n if (!this._isInDateSlot({\n start: currentTime,\n end: currentTime\n })) {\n return;\n }\n if (options.currentTimeMarker.useLocalTimezone === false) {\n var timezone = options.dataSource.options.schema.timezone;\n if (options.dataSource && timezone) {\n var timezoneOffset = kendo.timezone.offset(currentTime, timezone);\n currentTime = kendo.timezone.convert(currentTime, currentTime.getTimezoneOffset(), timezoneOffset);\n }\n }\n var groupsCount = !options.group || options.group.orientation == 'vertical' ? 1 : this.groups.length;\n for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\n var currentGroup = this.groups[groupIndex];\n if (!currentGroup) {\n return;\n }\n var utcCurrentTime = kendo.date.toUtcTime(currentTime);\n var ranges = currentGroup.timeSlotRanges(utcCurrentTime, utcCurrentTime + 1);\n if (ranges.length === 0) {\n return;\n }\n var collection = ranges[0].collection;\n var slotElement = collection.slotByStartDate(currentTime);\n if (slotElement) {\n if (this._isVerticallyGrouped()) {\n this._groupedView._updateCurrentVerticalTimeMarker(ranges, currentTime);\n } else {\n var elementHtml = '<div class=\\'' + CURRENT_TIME_MARKER_CLASS + '\\'></div>';\n var headerWrap = this.datesHeader.find('.' + SCHEDULER_HEADER_WRAP_CLASS);\n var left = Math.round(ranges[0].innerRect(currentTime, new Date(currentTime.getTime() + 1), false).left);\n var timesTableMarker = $(elementHtml).prependTo(headerWrap).addClass(CURRENT_TIME_MARKER_ARROW_CLASS + '-down');\n timesTableMarker.css({\n left: this._adjustLeftPosition(left - outerWidth(timesTableMarker) * BORDER_SIZE_COEFF / 2),\n top: headerWrap.find('tr:last').prev().position().top\n });\n $(elementHtml).prependTo(this.content).css({\n left: this._adjustLeftPosition(left),\n width: '1px',\n height: this.content[0].scrollHeight - 1,\n top: 0\n });\n }\n }\n }\n },\n _adjustLeftPosition: function (left) {\n return this._groupedView._adjustLeftPosition(left);\n },\n _currentTime: function (setUpdateTimer) {\n var that = this;\n var markerOptions = that.options.currentTimeMarker;\n if (markerOptions !== false && markerOptions.updateInterval !== undefined) {\n that._currentTimeMarkerUpdater();\n if (setUpdateTimer) {\n that._currentTimeUpdateTimer = setInterval(proxy(this._currentTimeMarkerUpdater, that), markerOptions.updateInterval);\n }\n }\n },\n _editable: function () {\n if (this.options.editable) {\n if (this._isMobile()) {\n this._touchEditable();\n } else {\n this._mouseEditable();\n }\n }\n },\n _mouseEditable: function () {\n var that = this;\n that.element.on('click' + NS, '.k-event a:has(.k-i-close)', function (e) {\n that.trigger('remove', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n if (that.options.editable.create !== false) {\n that.element.on('dblclick' + NS, '.k-scheduler-content td', function (e) {\n var slot = that._slotByPosition(e.pageX, e.pageY);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n start: slot.startDate(),\n end: slot.endDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n });\n }\n if (that.options.editable.update !== false) {\n that.element.on('dblclick' + NS, '.k-event', function (e) {\n that.trigger('edit', { uid: $(this).closest('.k-event').attr(kendo.attr('uid')) });\n e.preventDefault();\n });\n }\n },\n _touchEditable: function () {\n var that = this;\n var threshold = 0;\n if (kendo.support.mobileOS.android) {\n threshold = 5;\n }\n if (that.options.editable.create !== false) {\n that._addUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n useClickAsTap: !kendo.support.browser.edge,\n filter: '.k-scheduler-content td',\n tap: function (e) {\n if (that._scrolling) {\n return;\n }\n var x = e.x.location !== undefined ? e.x.location : e.x;\n var y = e.y.location !== undefined ? e.y.location : e.y;\n var slot = that._slotByPosition(x, y);\n if (slot) {\n var resourceInfo = that._resourceBySlot(slot);\n that.trigger('add', {\n eventInfo: extend({\n start: slot.startDate(),\n end: slot.endDate()\n }, resourceInfo)\n });\n }\n e.preventDefault();\n }\n });\n }\n if (that.options.editable.update !== false) {\n that._editUserEvents = new kendo.UserEvents(that.element, {\n threshold: threshold,\n useClickAsTap: !kendo.support.browser.edge,\n filter: '.k-event',\n tap: function (e) {\n if (that._scrolling) {\n return;\n }\n var eventElement = $(e.target).closest('.k-event');\n var touchElement = $(e.touch.initialTouch);\n if (touchElement.hasClass('k-i-close')) {\n that.trigger('remove', { uid: eventElement.attr(kendo.attr('uid')) });\n } else if (!eventElement.hasClass('k-event-active')) {\n that.trigger('edit', { uid: eventElement.attr(kendo.attr('uid')) });\n }\n e.preventDefault();\n }\n });\n }\n },\n _slotByPosition: function (x, y) {\n var slot;\n var content = this.content;\n var offset = content.offset();\n var groupIndex;\n x -= offset.left;\n y -= offset.top;\n if (this._isRtl) {\n var browser = kendo.support.browser;\n if (browser.mozilla) {\n x += content[0].scrollWidth - content[0].offsetWidth;\n x += content[0].scrollLeft;\n } else if (browser.msie) {\n x -= content.scrollLeft();\n x += content[0].scrollWidth - content[0].offsetWidth;\n } else if (browser.webkit) {\n x += content[0].scrollLeft;\n }\n } else {\n x += content[0].scrollLeft;\n }\n y += content[0].scrollTop;\n x = Math.ceil(x);\n y = Math.ceil(y);\n for (groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n slot = this._groupedView._getTimeSlotByPosition(x, y, groupIndex);\n if (slot) {\n return slot;\n }\n }\n return null;\n },\n options: {\n name: 'TimelineView',\n title: 'Timeline',\n selectedDateFormat: '{0:D}',\n selectedShortDateFormat: '{0:d}',\n selectedMobileDateFormat: '{0:MMM dd}',\n date: kendo.date.today(),\n startTime: kendo.date.today(),\n endTime: kendo.date.today(),\n showWorkHours: false,\n minorTickCount: 2,\n editable: true,\n workDayStart: new Date(1980, 1, 1, 8, 0, 0),\n workDayEnd: new Date(1980, 1, 1, 17, 0, 0),\n workWeekStart: 1,\n workWeekEnd: 5,\n majorTick: 60,\n eventHeight: 25,\n eventMinWidth: 0,\n columnWidth: 100,\n groupHeaderTemplate: '#=text#',\n majorTimeHeaderTemplate: '#=kendo.toString(date, \\'t\\')#',\n slotTemplate: ' ',\n eventTemplate: EVENT_TEMPLATE,\n dateHeaderTemplate: DATA_HEADER_TEMPLATE,\n footer: { command: 'workDay' },\n currentTimeMarker: {\n updateInterval: 10000,\n useLocalTimezone: true\n },\n messages: {\n defaultRowText: 'All events',\n showFullDay: 'Show full day',\n showWorkDay: 'Show business hours'\n }\n },\n events: [\n 'remove',\n 'add',\n 'edit'\n ],\n _templates: function () {\n var options = this.options, settings = extend({}, kendo.Template, options.templateSettings);\n this.eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_STRING);\n this.majorTimeHeaderTemplate = kendo.template(options.majorTimeHeaderTemplate, settings);\n this.dateHeaderTemplate = kendo.template(options.dateHeaderTemplate, settings);\n this.slotTemplate = kendo.template(options.slotTemplate, settings);\n this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n },\n _render: function (dates) {\n var that = this;\n dates = dates || [];\n that._dates = dates;\n that._startDate = dates[0];\n that._endDate = dates[dates.length - 1 || 0];\n that._calculateSlotRanges();\n that.createLayout(that._layout(dates));\n that._content(dates);\n that._footer();\n that._setContentWidth();\n that.refreshLayout();\n that.datesHeader.on('click' + NS, '.k-nav-day', function (e) {\n var th = $(e.currentTarget).closest('th');\n var slot = that._slotByPosition(th.offset().left, that.content.offset().top);\n that.trigger('navigate', {\n view: 'timeline',\n date: slot.startDate()\n });\n });\n that._groupedView._hideHeaders();\n },\n _setContentWidth: function () {\n var content = this.content;\n var contentWidth = content.width();\n var contentTable = this.content.find('table');\n var columnCount = contentTable.find('tr:first').children().length;\n var minWidth = 100;\n var calculatedWidth = columnCount * this.options.columnWidth;\n if (contentWidth < calculatedWidth) {\n minWidth = Math.ceil(calculatedWidth / contentWidth * 100);\n }\n contentTable.add(this.datesHeader.find('table')).css('width', minWidth + '%');\n },\n _calculateSlotRanges: function () {\n var dates = this._dates;\n var slotStartTime = this.startTime();\n var slotEndTime = this.endTime();\n slotEndTime = getMilliseconds(slotEndTime);\n slotStartTime = getMilliseconds(slotStartTime);\n if (slotEndTime === slotStartTime) {\n slotEndTime += MS_PER_DAY - 1;\n } else if (slotEndTime < slotStartTime) {\n slotEndTime += MS_PER_DAY;\n }\n var slotRanges = [];\n for (var i = 0; i < dates.length; i++) {\n var rangeStart = getDate(dates[i]);\n setTime(rangeStart, slotStartTime);\n var rangeEnd = getDate(dates[i]);\n setTime(rangeEnd, slotEndTime);\n slotRanges.push({\n start: kendo.date.toUtcTime(rangeStart),\n end: kendo.date.toUtcTime(rangeEnd)\n });\n }\n this._slotRanges = slotRanges;\n },\n _forTimeRange: function (min, max, action, verticalByDate, groupsCount) {\n min = toInvariantTime(min);\n max = toInvariantTime(max);\n var that = this, msMin = getMilliseconds(min), msMax = getMilliseconds(max), minorTickCount = that.options.minorTickCount, msMajorInterval = that.options.majorTick * MS_PER_MINUTE, msInterval = msMajorInterval / minorTickCount || 1, start = new Date(+min), idx = 0, length, html = '';\n length = MS_PER_DAY / msInterval;\n if (msMin != msMax) {\n if (msMin > msMax) {\n msMax += MS_PER_DAY;\n }\n length = (msMax - msMin) / msInterval;\n }\n length = verticalByDate ? 1 : Math.round(length);\n if (groupsCount) {\n length = length * groupsCount;\n }\n for (; idx < length; idx++) {\n var majorTickDivider = idx % (msMajorInterval / msInterval);\n var isMajorTickColumn = majorTickDivider === 0;\n var isMiddleColumn = majorTickDivider < minorTickCount - 1;\n var isLastSlotColumn = majorTickDivider === minorTickCount - 1;\n var minorTickColumns = minorTickCount;\n if (length % minorTickCount !== 0) {\n var isLastMajorSlot = length - (idx + 1) < minorTickCount;\n if (isMajorTickColumn && isLastMajorSlot) {\n minorTickColumns = length % minorTickCount;\n }\n }\n html += action(start, isMajorTickColumn, isMiddleColumn, isLastSlotColumn, minorTickColumns, idx % groupsCount);\n if (!verticalByDate) {\n if (groupsCount) {\n if (idx % groupsCount === groupsCount - 1) {\n setTime(start, msInterval, false);\n }\n } else {\n setTime(start, msInterval, false);\n }\n }\n }\n return html;\n },\n _layout: function (dates) {\n var timeColumns = [];\n var columns = [];\n var that = this;\n var rows = [{ text: that.options.messages.defaultRowText }];\n var groupedView = that._groupedView;\n var minorTickSlots = [];\n for (var minorTickIndex = 0; minorTickIndex < that.options.minorTickCount; minorTickIndex++) {\n minorTickSlots.push({\n text: '​',\n className: 'k-last',\n minorTicks: true\n });\n }\n this._forTimeRange(that.startTime(), that.endTime(), function (date, majorTick, middleColumn, lastSlotColumn, minorSlotsCount) {\n var template = that.majorTimeHeaderTemplate;\n if (majorTick) {\n var timeColumn = {\n text: template({ date: date }),\n className: lastSlotColumn ? 'k-slot-cell' : '',\n columns: minorTickSlots.slice(0, minorSlotsCount)\n };\n groupedView._setColspan(timeColumn);\n timeColumns.push(timeColumn);\n }\n });\n for (var idx = 0; idx < dates.length; idx++) {\n columns.push({\n text: that.dateHeaderTemplate({ date: dates[idx] }),\n className: 'k-slot-cell',\n columns: timeColumns.slice(0)\n });\n }\n var resources = this.groupedResources;\n if (resources.length) {\n if (this._groupOrientation() === 'vertical') {\n rows = groupedView._createRowsLayout(resources, null, this.groupHeaderTemplate, columns);\n columns = groupedView._createVerticalColumnsLayout(resources, null, this.groupHeaderTemplate, columns);\n } else {\n columns = groupedView._createColumnsLayout(resources, columns, this.groupHeaderTemplate, columns);\n }\n }\n return {\n columns: columns,\n rows: rows\n };\n },\n _footer: function () {\n var options = this.options;\n if (options.footer !== false) {\n var html = '<div class=\"k-header k-scheduler-footer\">';\n var command = options.footer.command;\n if (this._isMobile()) {\n html += '<span class=\"k-state-default k-scheduler-today\"><a href=\"#\" class=\"k-link\">';\n html += options.messages.today + '</a></span>';\n }\n if (command && command === 'workDay') {\n if (this._isMobile()) {\n html += '<span class=\"k-state-default k-scheduler-fullday\"><a href=\"#\" class=\"k-link\">';\n html += (options.showWorkHours ? options.messages.showFullDay : options.messages.showWorkDay) + '</a></span>';\n } else {\n html += '<ul class=\"k-reset k-header\">';\n html += '<li class=\"k-state-default k-scheduler-fullday\"><a href=\"#\" class=\"k-link\"><span class=\"k-icon k-i-clock\"></span>';\n html += (options.showWorkHours ? options.messages.showFullDay : options.messages.showWorkDay) + '</a></li>';\n html += '</ul>';\n }\n } else {\n html += ' ';\n }\n html += '</div>';\n this.footer = $(html).appendTo(this.element);\n var that = this;\n this.footer.on('click' + NS, '.k-scheduler-fullday', function (e) {\n e.preventDefault();\n that.trigger('navigate', {\n view: that.name || options.name,\n date: that.startDate(),\n isWorkDay: !options.showWorkHours\n });\n });\n this.footer.on('click' + NS, '.k-scheduler-today', function (e) {\n e.preventDefault();\n var timezone = that.options.timezone;\n var action = 'today';\n var currentDate = new Date();\n var date;\n if (timezone) {\n var timezoneOffset = kendo.timezone.offset(currentDate, timezone);\n date = kendo.timezone.convert(currentDate, currentDate.getTimezoneOffset(), timezoneOffset);\n } else {\n date = currentDate;\n }\n that.trigger('navigate', {\n view: that.name || options.name,\n action: action,\n date: date\n });\n });\n }\n },\n _columnCountForLevel: function (level) {\n var columnLevel = this.columnLevels[level];\n return columnLevel ? columnLevel.length : 0;\n },\n _rowCountForLevel: function (level) {\n var rowLevel = this.rowLevels[level];\n return rowLevel ? rowLevel.length : 0;\n },\n _isWorkDay: function (date) {\n var day = date.getDay();\n var workDays = this._workDays;\n for (var i = 0; i < workDays.length; i++) {\n if (workDays[i] === day) {\n return true;\n }\n }\n return false;\n },\n _content: function (dates) {\n var that = this;\n var start = that.startTime();\n var end = this.endTime();\n var groupsCount = 1;\n var rowCount = 1;\n var columnCount = dates.length;\n var html = '';\n var resources = this.groupedResources;\n var slotTemplate = this.slotTemplate;\n var isVerticalGrouped = false;\n if (resources.length) {\n isVerticalGrouped = that._groupOrientation() === 'vertical';\n if (isVerticalGrouped) {\n rowCount = that._groupedView._getRowCount(this.rowLevels.length - 1);\n groupsCount = that._groupedView._getGroupsCount();\n } else {\n groupsCount = that._groupCount();\n }\n }\n html += '<tbody>';\n html += that._groupedView._addContent(dates, columnCount, groupsCount, rowCount, start, end, slotTemplate, isVerticalGrouped);\n html += '</tbody>';\n this.content.find('table').append(html);\n },\n _groups: function () {\n var groupCount = this._groupCount();\n var dates = this._dates;\n var columnCount = dates.length;\n this.groups = [];\n for (var idx = 0; idx < groupCount; idx++) {\n var view = this._addResourceView(idx);\n var start = dates[0];\n var end = dates[dates.length - 1 || 0];\n var startTime = getMilliseconds(this.startTime());\n var endTime = getMilliseconds(this.endTime());\n if (startTime !== 0 && endTime <= startTime) {\n start = getDate(start);\n setTime(start, startTime);\n end = getDate(end);\n setTime(end, endTime);\n }\n view.addTimeSlotCollection(start, kendo.date.addDays(end, 1));\n }\n this._timeSlotGroups(groupCount, columnCount);\n },\n _isHorizontallyGrouped: function () {\n return this.groupedResources.length && this._groupOrientation() === 'horizontal';\n },\n _timeSlotGroups: function (groupCount, datesCount) {\n var interval = this._timeSlotInterval();\n var isVerticallyGrouped = this._isVerticallyGrouped();\n var tableRows = this.content.find('tr');\n tableRows.attr('role', 'row');\n this._groupedView._addTimeSlotsCollections(groupCount, datesCount, tableRows, interval, isVerticallyGrouped);\n },\n _addTimeSlotToCollection: function (group, cells, cellIndex, cellOffset, dateIndex, time, interval) {\n var cell = cells[cellIndex + cellOffset];\n var collection = group.getTimeSlotCollection(0);\n var currentDate = this._dates[dateIndex];\n var currentTime = Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());\n var start = currentTime + time;\n var end = start + interval;\n cell.setAttribute('role', 'gridcell');\n cell.setAttribute('aria-selected', false);\n collection.addTimeSlot(cell, start, end, true);\n },\n startDate: function () {\n return this._startDate;\n },\n endDate: function () {\n return this._endDate;\n },\n visibleEndDate: function () {\n var startTime = getMilliseconds(this.startTime());\n var endTime = getMilliseconds(this.endTime());\n var endDate = this.endDate();\n if (startTime !== 0 && endTime <= startTime) {\n endDate = kendo.date.addDays(endDate, 1);\n }\n return endDate;\n },\n startTime: function () {\n var options = this.options;\n return options.showWorkHours ? options.workDayStart : options.startTime;\n },\n endTime: function () {\n var options = this.options;\n return options.showWorkHours ? options.workDayEnd : options.endTime;\n },\n _timeSlotInterval: function () {\n var options = this.options;\n return options.majorTick / options.minorTickCount * MS_PER_MINUTE;\n },\n nextDate: function () {\n return kendo.date.nextDay(this.endDate());\n },\n previousDate: function () {\n return kendo.date.previousDay(this.startDate());\n },\n calculateDateRange: function () {\n this._render([this.options.date]);\n },\n render: function (events) {\n this._headerColumnCount = 0;\n this._groups();\n this.element.find('.k-event').remove();\n events = new kendo.data.Query(events).sort([\n {\n field: 'start',\n dir: 'asc'\n },\n {\n field: 'end',\n dir: 'desc'\n }\n ]).toArray();\n var eventsByResource = [];\n this._eventsByResource(events, this.groupedResources, eventsByResource);\n var eventGroups = [];\n var maxRowCount = 0;\n for (var groupIndex = 0; groupIndex < eventsByResource.length; groupIndex++) {\n var eventGroup = {\n groupIndex: groupIndex,\n maxRowCount: 0,\n events: {}\n };\n eventGroups.push(eventGroup);\n this._renderEvents(eventsByResource[groupIndex], groupIndex, eventGroup);\n if (maxRowCount < eventGroup.maxRowCount) {\n maxRowCount = eventGroup.maxRowCount;\n }\n }\n this._setRowsHeight(eventGroups, eventsByResource.length, maxRowCount);\n this._positionEvents(eventGroups, eventsByResource.length);\n this._currentTime(false);\n this.trigger('activate');\n },\n _positionEvents: function (eventGroups, groupsCount) {\n for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\n var eventsForGroup = eventGroups[groupIndex].events;\n for (var eventUid in eventsForGroup) {\n var eventObject = eventsForGroup[eventUid];\n if ($.isArray(eventObject)) {\n for (var eventIndex = 0; eventIndex < eventObject.length; eventIndex++) {\n this._positionEvent(eventObject[eventIndex]);\n }\n } else {\n this._positionEvent(eventObject);\n }\n }\n }\n },\n _setRowsHeight: function (eventGroups, groupsCount, maxRowCount) {\n var eventHeight = this.options.eventHeight + 2;\n var eventBottomOffset = this._getBottomRowOffset();\n var groupedView = this._groupedView;\n var verticalGroupCount = groupedView._getVerticalGroupCount(groupsCount);\n groupsCount = this._isVerticallyGrouped() ? verticalGroupCount : 1;\n for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\n var rowsCount = groupedView._getVerticalRowCount(eventGroups, groupIndex, maxRowCount);\n rowsCount = rowsCount ? rowsCount : 1;\n var rowHeight = (eventHeight + 2) * rowsCount + eventBottomOffset;\n var timesRow = $(this.times.find('tr')[groupIndex]);\n var row = $(this.content.find('tr')[groupIndex]);\n timesRow.height(rowHeight);\n row.height(rowHeight);\n }\n this._setContentWidth();\n this.refreshLayout();\n this._refreshSlots();\n },\n _getBottomRowOffset: function () {\n var eventBottomOffset = this.options.eventHeight * 0.5;\n var isMobile = this._isMobile();\n var minOffset;\n var maxOffset;\n if (isMobile) {\n minOffset = 30;\n maxOffset = 60;\n } else {\n minOffset = 15;\n maxOffset = 30;\n }\n if (eventBottomOffset > maxOffset) {\n eventBottomOffset = maxOffset;\n } else if (eventBottomOffset < minOffset) {\n eventBottomOffset = minOffset;\n }\n return eventBottomOffset;\n },\n _positionEvent: function (eventObject) {\n var eventHeight = this.options.eventHeight + 2;\n var rect = eventObject.slotRange.innerRect(eventObject.start, eventObject.end, false);\n var left = this._adjustLeftPosition(rect.left);\n var width = rect.right - rect.left - 2;\n if (width < 0) {\n width = 0;\n }\n if (width < this.options.eventMinWidth) {\n var slotsCollection = eventObject.slotRange.collection;\n var lastSlot = slotsCollection._slots[slotsCollection._slots.length - 1];\n var offsetRight = lastSlot.offsetLeft + lastSlot.offsetWidth;\n width = this.options.eventMinWidth;\n if (offsetRight < left + width) {\n width = offsetRight - rect.left - 2;\n }\n }\n eventObject.element.css({\n top: eventObject.slotRange.start.offsetTop + eventObject.rowIndex * (eventHeight + 2) + 'px',\n left: left,\n width: width\n });\n },\n _refreshSlots: function () {\n for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n this.groups[groupIndex].refresh();\n }\n },\n _eventsByResource: function (events, resources, result) {\n var resource = resources[0];\n if (resource) {\n var view = resource.dataSource.view();\n for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n var value = this._resourceValue(resource, view[itemIdx]);\n var eventsFilteredByResource = new kendo.data.Query(events).filter({\n field: resource.field,\n operator: SchedulerView.groupEqFilter(value)\n }).toArray();\n if (resources.length > 1) {\n this._eventsByResource(eventsFilteredByResource, resources.slice(1), result);\n } else {\n result.push(eventsFilteredByResource);\n }\n }\n } else {\n result.push(events);\n }\n },\n _isInDateSlot: function (event) {\n var startTime = event.start;\n var endTime = event.end;\n var rangeStart = getDate(this._startDate);\n var rangeEnd = kendo.date.addDays(getDate(this.visibleEndDate()), 1);\n if (startTime < rangeEnd && rangeStart <= endTime) {\n return true;\n }\n return false;\n },\n _isInTimeSlot: function (event) {\n var startTime = event._startTime || kendo.date.toUtcTime(event.start);\n var endTime = event._endTime || kendo.date.toUtcTime(event.end);\n var slotRanges = this._slotRanges;\n if (startTime === endTime) {\n endTime = endTime + 1;\n }\n for (var slotIndex = 0; slotIndex < slotRanges.length; slotIndex++) {\n if (startTime < slotRanges[slotIndex].end && slotRanges[slotIndex].start < endTime) {\n return true;\n }\n }\n return false;\n },\n _adjustEvent: function (event) {\n var start = event.start;\n var end = event.end;\n var eventStartTime = event._time('start');\n var eventEndTime = event._time('end');\n var startTime = getMilliseconds(this.startTime());\n var endTime = getMilliseconds(this.endTime());\n var adjustedStartDate = null;\n var adjustedEndDate = null;\n var occurrence;\n var head = false;\n var tail = false;\n if (event.isAllDay) {\n start = getDate(start);\n eventStartTime = 0;\n end = getDate(end);\n eventEndTime = MS_PER_DAY;\n adjustedEndDate = kendo.date.addDays(end, 1);\n }\n if (endTime === 0) {\n endTime = MS_PER_DAY;\n }\n if (endTime <= startTime) {\n if (eventStartTime < startTime && eventStartTime >= endTime) {\n adjustedStartDate = getDate(start);\n setTime(adjustedStartDate, startTime);\n tail = true;\n }\n if (eventEndTime > endTime && eventEndTime <= startTime) {\n adjustedEndDate = getDate(end);\n setTime(adjustedEndDate, endTime);\n head = true;\n }\n } else {\n if (startTime > eventStartTime) {\n adjustedStartDate = getDate(start);\n setTime(adjustedStartDate, startTime);\n tail = true;\n } else if (endTime <= eventStartTime) {\n adjustedStartDate = getDate(start);\n adjustedStartDate = kendo.date.addDays(adjustedStartDate, 1);\n setTime(adjustedStartDate, startTime);\n tail = true;\n }\n if (endTime < eventEndTime) {\n adjustedEndDate = getDate(end);\n setTime(adjustedEndDate, endTime);\n head = true;\n } else if (startTime > eventEndTime) {\n adjustedEndDate = getDate(end);\n adjustedEndDate = kendo.date.addDays(adjustedEndDate, -1);\n setTime(adjustedEndDate, endTime);\n head = true;\n }\n }\n occurrence = event.clone({\n start: adjustedStartDate ? adjustedStartDate : start,\n end: adjustedEndDate ? adjustedEndDate : end,\n _startTime: adjustedStartDate ? kendo.date.toUtcTime(adjustedStartDate) : event._startTime,\n _endTime: adjustedEndDate ? kendo.date.toUtcTime(adjustedEndDate) : event._endTime,\n isAllDay: false\n });\n return {\n occurrence: occurrence,\n head: head,\n tail: tail\n };\n },\n _renderEvents: function (events, groupIndex, eventGroup) {\n var event;\n var idx;\n var length;\n for (idx = 0, length = events.length; idx < length; idx++) {\n event = events[idx];\n if (this._isInDateSlot(event)) {\n var isMultiDayEvent = event.isAllDay || event.duration() >= MS_PER_DAY;\n var container = this.content;\n if (isMultiDayEvent || this._isInTimeSlot(event)) {\n var adjustedEvent = this._adjustEvent(event);\n var group = this.groups[groupIndex];\n if (!group._continuousEvents) {\n group._continuousEvents = [];\n }\n if (this._isInTimeSlot(adjustedEvent.occurrence)) {\n var ranges = group.slotRanges(adjustedEvent.occurrence, false);\n var range = ranges[0];\n var startIndex = range.start.index;\n var endIndex = range.end.index;\n this._groupedView._renderEvent(eventGroup, event, adjustedEvent, group, range, container, startIndex, endIndex);\n }\n }\n }\n }\n },\n addContinuousEvent: function (group, range, element, isAllDay) {\n var events = group._continuousEvents;\n events.push({\n element: element,\n isAllDay: isAllDay,\n uid: element.attr(kendo.attr('uid')),\n start: range.start,\n end: range.end\n });\n },\n _createEventElement: function (occurrence, event, head, tail) {\n var template = this.eventTemplate;\n var editable = this.options.editable;\n var isMobile = this._isMobile();\n var showDelete = editable && editable.destroy !== false && !isMobile;\n var resizable = editable && editable.resize !== false;\n var eventStartTime = event._time('start');\n var eventEndTime = event._time('end');\n var eventStartDate = event.start;\n var eventEndDate = event.end;\n var resources = this.eventResources(event);\n if (event._startTime && eventStartTime !== kendo.date.getMilliseconds(event.start)) {\n eventStartDate = new Date(eventStartTime);\n eventStartDate = kendo.timezone.apply(eventStartDate, 'Etc/UTC');\n }\n if (event._endTime && eventEndTime !== kendo.date.getMilliseconds(event.end)) {\n eventEndDate = new Date(eventEndTime);\n eventEndDate = kendo.timezone.apply(eventEndDate, 'Etc/UTC');\n }\n var data = extend({}, {\n ns: kendo.ns,\n resizable: resizable,\n showDelete: showDelete,\n head: head,\n tail: tail,\n singleDay: this._dates.length == 1,\n resources: resources,\n inverseColor: false,\n messages: this.options.messages\n }, event, {\n start: eventStartDate,\n end: eventEndDate\n });\n var element = $(template(data));\n this.angular('compile', function () {\n return {\n elements: element,\n data: [{ dataItem: data }]\n };\n });\n return element;\n },\n _arrangeRows: function (eventObject, slotRange, eventGroup) {\n var startIndex = slotRange.start.index;\n var endIndex = slotRange.end.index;\n var rect = eventObject.slotRange.innerRect(eventObject.start, eventObject.end, false);\n var rectRight = rect.right + this.options.eventMinWidth;\n var events = collidingEvents(slotRange.events(), rect.left, rectRight);\n slotRange.addEvent({\n slotIndex: startIndex,\n start: startIndex,\n end: endIndex,\n rectLeft: rect.left,\n rectRight: rectRight,\n element: eventObject.element,\n uid: eventObject.uid\n });\n events.push({\n start: startIndex,\n end: endIndex,\n uid: eventObject.uid\n });\n var rows = SchedulerView.createRows(events);\n if (eventGroup.maxRowCount < rows.length) {\n eventGroup.maxRowCount = rows.length;\n }\n for (var idx = 0, length = rows.length; idx < length; idx++) {\n var rowEvents = rows[idx].events;\n for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n eventGroup.events[rowEvents[j].uid].rowIndex = idx;\n }\n }\n },\n _groupCount: function () {\n var resources = this.groupedResources;\n var groupedView = this._groupedView;\n if (resources.length) {\n if (this._groupOrientation() === 'vertical') {\n return groupedView._verticalCountForLevel(resources.length - 1);\n } else {\n return groupedView._horizontalCountForLevel(resources.length - 1, this.columnLevels.length - 1);\n }\n }\n return 1;\n },\n _updateEventForSelection: function (event) {\n var adjustedEvent = this._adjustEvent(event.clone());\n return adjustedEvent.occurrence;\n },\n _eventOptionsForMove: function (event) {\n if (event.isAllDay) {\n return { isAllDay: false };\n }\n return {};\n },\n _updateEventForResize: function (event) {\n if (event.isAllDay) {\n event.set('isAllDay', false);\n }\n },\n _updateMoveHint: function (event, groupIndex, distance) {\n var group = this.groups[groupIndex];\n var clonedEvent = event.clone({\n start: event.start,\n end: event.end\n });\n var eventDuraton = clonedEvent.duration();\n clonedEvent.start = new Date(clonedEvent.start.getTime() + distance);\n clonedEvent.end = new Date(+clonedEvent.start + eventDuraton);\n this._removeMoveHint(event.uid);\n if (this._isInDateSlot(clonedEvent)) {\n if (clonedEvent.isAllDay || clonedEvent.duration() >= MS_PER_DAY || this._isInTimeSlot(clonedEvent)) {\n var adjustedEvent = this._adjustEvent(clonedEvent);\n var ranges = group.slotRanges(adjustedEvent.occurrence, false);\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n this._groupedView._createMoveHint(ranges[rangeIndex], adjustedEvent);\n }\n }\n }\n },\n _appendMoveHint: function (hint) {\n hint.appendTo(this.content);\n this._moveHint = this._moveHint.add(hint);\n },\n _updateResizeHint: function (event, groupIndex, startTime, endTime) {\n var group = this.groups[groupIndex];\n var ranges = group.ranges(startTime, endTime, false, false);\n this._removeResizeHint();\n for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n var range = ranges[rangeIndex];\n var start = range.startSlot();\n var startRect = range.innerRect(startTime, endTime, false);\n startRect.top = start.offsetTop;\n var width = startRect.right - startRect.left;\n if (width < 0) {\n for (var i = 0; i < range.events().length; i++) {\n if (range.events()[i].uid === event.uid) {\n width = range.events()[i].rectRight - startRect.left;\n break;\n }\n }\n }\n var height = range.endSlot().offsetTop + start.offsetHeight - startRect.top;\n var left = this._adjustLeftPosition(startRect.left);\n var hint = SchedulerView.fn._createResizeHint.call(this, left, startRect.top, width, height);\n this._resizeHint = this._resizeHint.add(hint);\n }\n var format = 't';\n var container = this.content;\n this._resizeHint.appendTo(container);\n this._resizeHint.find('.k-label-top,.k-label-bottom').text('');\n this._resizeHint.first().addClass('k-first').find('.k-label-top').text(kendo.toString(kendo.timezone.toLocalDate(startTime), format));\n this._resizeHint.last().addClass('k-last').find('.k-label-bottom').text(kendo.toString(kendo.timezone.toLocalDate(endTime), format));\n },\n selectionByElement: function (cell) {\n var offset = cell.offset();\n return this._slotByPosition(offset.left, offset.top);\n },\n _updateDirection: function (selection, ranges, multiple, reverse, vertical) {\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n if (multiple && !vertical) {\n if (startSlot.index === endSlot.index && startSlot.collectionIndex === endSlot.collectionIndex) {\n selection.backward = reverse;\n }\n }\n },\n _changeGroup: function (selection, previous) {\n var method = previous ? 'prevGroupSlot' : 'nextGroupSlot';\n var slot = this[method](selection.start, selection.groupIndex, false);\n if (slot) {\n selection.groupIndex += previous ? -1 : 1;\n }\n this._groupedView._changeGroup(selection, previous, slot);\n return slot;\n },\n prevGroupSlot: function (date, groupIndex, isDay) {\n var group = this.groups[groupIndex];\n var slot = group.ranges(date, date, isDay, false)[0].start;\n if (groupIndex <= 0) {\n return;\n }\n return this._groupedView._prevGroupSlot(slot, group, isDay);\n },\n nextGroupSlot: function (date, groupIndex, isDay) {\n var group = this.groups[groupIndex];\n var slot = group.ranges(date, date, isDay, false)[0].start;\n if (groupIndex >= this.groups.length - 1) {\n return;\n }\n return this._groupedView._nextGroupSlot(slot, group, isDay);\n },\n _verticalSlots: function (selection, ranges, multiple, reverse) {\n var groupedView = this._groupedView;\n var method = groupedView._verticalMethod(reverse, multiple);\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n var group = this.groups[selection.groupIndex];\n var slot = groupedView._normalizeVerticalSelection(selection, ranges, reverse, multiple);\n if (slot) {\n startSlot = endSlot = slot;\n }\n startSlot = group[method](startSlot);\n endSlot = group[method](endSlot);\n if (!multiple && this._isVerticallyGrouped() && (!startSlot || !endSlot)) {\n startSlot = endSlot = groupedView._verticalSlots(selection, reverse, slot);\n }\n return {\n startSlot: startSlot,\n endSlot: endSlot\n };\n },\n _horizontalSlots: function (selection, ranges, multiple, reverse) {\n var method = reverse ? 'upSlot' : 'downSlot';\n var startSlot = ranges[0].start;\n var endSlot = ranges[ranges.length - 1].end;\n var group = this.groups[selection.groupIndex];\n var result = {};\n if (!multiple) {\n result = this._groupedView._horizontalSlots(selection, group, method, startSlot, endSlot, multiple, reverse);\n } else {\n result.startSlot = group[method](startSlot);\n result.endSlot = group[method](endSlot);\n if (!multiple && this._isHorizontallyGrouped() && (!startSlot || !endSlot)) {\n result.startSlot = result.endSlot = this._changeGroup(selection, reverse);\n }\n }\n return result;\n },\n _changeViewPeriod: function (selection, reverse) {\n var date = reverse ? this.previousDate() : this.nextDate();\n var start = selection.start;\n var end = selection.end;\n var newStart, newEnd;\n newStart = new Date(date);\n newEnd = new Date(date);\n if (this._isInRange(newStart, newEnd)) {\n return false;\n }\n selection.start = newStart;\n selection.end = newEnd;\n if (this._isHorizontallyGrouped()) {\n selection.groupIndex = reverse ? this.groups.length - 1 : 0;\n }\n var duration = end - start;\n if (reverse) {\n end = getMilliseconds(this.endTime());\n end = end === 0 ? MS_PER_DAY : end;\n setTime(selection.start, end - duration);\n setTime(selection.end, end);\n } else {\n start = getMilliseconds(this.startTime());\n setTime(selection.start, start);\n setTime(selection.end, start + duration);\n }\n selection.events = [];\n return true;\n },\n move: function (selection, key, shift) {\n var handled = false;\n var group = this.groups[selection.groupIndex];\n var keys = kendo.keys;\n var groupedView = this._groupedView;\n var ranges = group.ranges(selection.start, selection.end, false, false);\n var startSlot, endSlot, reverse, slots;\n if (key === keys.DOWN || key === keys.UP) {\n handled = true;\n reverse = key === keys.UP;\n groupedView._updateDirection(selection, ranges, shift, reverse);\n slots = this._verticalSlots(selection, ranges, shift, reverse);\n if (groupedView._changeVerticalViewPeriod(slots, shift, selection, reverse)) {\n return handled;\n }\n } else if (key === keys.LEFT || key === keys.RIGHT) {\n handled = true;\n reverse = key === keys.LEFT;\n this._updateDirection(selection, ranges, shift, reverse, false);\n slots = this._horizontalSlots(selection, ranges, shift, reverse);\n if (groupedView._changeHorizontalViewPeriod(slots, shift, selection, reverse)) {\n return handled;\n }\n }\n if (handled) {\n startSlot = slots.startSlot;\n endSlot = slots.endSlot;\n if (shift) {\n var backward = selection.backward;\n if (backward && startSlot) {\n selection.start = startSlot.startDate();\n } else if (!backward && endSlot) {\n selection.end = endSlot.endDate();\n }\n } else if (startSlot && endSlot) {\n selection.start = startSlot.startDate();\n selection.end = endSlot.endDate();\n }\n selection.events = [];\n }\n return handled;\n },\n destroy: function () {\n var that = this;\n if (that.element) {\n that.element.off(NS);\n }\n if (that.footer) {\n that.footer.remove();\n }\n if (that._currentTimeUpdateTimer) {\n clearInterval(that._currentTimeUpdateTimer);\n }\n SchedulerView.fn.destroy.call(this);\n if (this._isMobile() && that.options.editable) {\n if (that.options.editable.create !== false) {\n that._addUserEvents.destroy();\n }\n if (that.options.editable.update !== false) {\n that._editUserEvents.destroy();\n }\n }\n }\n });\n extend(true, ui, {\n TimelineView: TimelineView,\n TimelineWeekView: TimelineView.extend({\n options: {\n name: 'TimelineWeekView',\n title: 'Timeline Week',\n selectedDateFormat: '{0:D} - {1:D}',\n selectedShortDateFormat: '{0:d} - {1:d}',\n selectedMobileDateFormat: '{0:MMM dd} - {1:dd}',\n majorTick: 120\n },\n name: 'timelineWeek',\n calculateDateRange: function () {\n var selectedDate = this.options.date, start = kendo.date.dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1), idx, length, dates = [];\n for (idx = 0, length = 7; idx < length; idx++) {\n dates.push(start);\n start = kendo.date.nextDay(start);\n }\n this._render(dates);\n }\n }),\n TimelineWorkWeekView: TimelineView.extend({\n options: {\n name: 'TimelineWorkWeekView',\n title: 'Timeline Work Week',\n selectedDateFormat: '{0:D} - {1:D}',\n selectedShortDateFormat: '{0:d} - {1:d}',\n selectedMobileDateFormat: '{0:MMM dd} - {1:dd}',\n majorTick: 120\n },\n name: 'timelineWorkWeek',\n nextDate: function () {\n var weekStart = kendo.date.dayOfWeek(kendo.date.nextDay(this.endDate()), this.calendarInfo().firstDay, 1);\n return kendo.date.addDays(weekStart, this._workDays[0]);\n },\n previousDate: function () {\n var weekStart = kendo.date.dayOfWeek(this.startDate(), this.calendarInfo().firstDay, -1);\n var workDays = this._workDays;\n return kendo.date.addDays(weekStart, workDays[workDays.length - 1] - 7);\n },\n calculateDateRange: function () {\n var selectedDate = this.options.date, start = kendo.date.dayOfWeek(selectedDate, this.options.workWeekStart, -1), end = kendo.date.dayOfWeek(start, this.options.workWeekEnd, 1), dates = [];\n while (start <= end) {\n dates.push(start);\n start = kendo.date.nextDay(start);\n }\n this._render(dates);\n }\n }),\n TimelineMonthView: TimelineView.extend({\n options: {\n name: 'TimelineMonthView',\n title: 'Timeline Month',\n selectedDateFormat: '{0:D} - {1:D}',\n selectedShortDateFormat: '{0:d} - {1:d}',\n workDayStart: new Date(1980, 1, 1, 0, 0, 0),\n workDayEnd: new Date(1980, 1, 1, 23, 59, 59),\n footer: false,\n majorTick: 1440,\n minorTickCount: 1\n },\n name: 'timelineMonth',\n calculateDateRange: function () {\n var selectedDate = this.options.date, start = kendo.date.firstDayOfMonth(selectedDate), end = kendo.date.lastDayOfMonth(selectedDate), idx, length, dates = [];\n for (idx = 0, length = end.getDate(); idx < length; idx++) {\n dates.push(start);\n start = kendo.date.nextDay(start);\n }\n this._render(dates);\n }\n })\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.scheduler', [\n 'kendo.dropdownlist',\n 'kendo.editable',\n 'kendo.multiselect',\n 'kendo.window',\n 'kendo.datetimepicker',\n 'kendo.scheduler.recurrence',\n 'kendo.scheduler.view',\n 'kendo.scheduler.dayview',\n 'kendo.scheduler.agendaview',\n 'kendo.scheduler.monthview',\n 'kendo.scheduler.timelineview',\n 'kendo.dialog',\n 'kendo.pane',\n 'kendo.pdf',\n 'kendo.switch'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'scheduler',\n name: 'Scheduler',\n category: 'web',\n description: 'The Scheduler is an event calendar.',\n depends: [\n 'dropdownlist',\n 'editable',\n 'multiselect',\n 'window',\n 'datepicker',\n 'datetimepicker',\n 'scheduler.recurrence',\n 'scheduler.view'\n ],\n features: [\n {\n id: 'scheduler-dayview',\n name: 'Scheduler Day View',\n description: 'Scheduler Day View',\n depends: ['scheduler.dayview']\n },\n {\n id: 'scheduler-agendaview',\n name: 'Scheduler Agenda View',\n description: 'Scheduler Agenda View',\n depends: ['scheduler.agendaview']\n },\n {\n id: 'scheduler-monthview',\n name: 'Scheduler Month View',\n description: 'Scheduler Month View',\n depends: ['scheduler.monthview']\n },\n {\n id: 'scheduler-timelineview',\n name: 'Scheduler Timeline View',\n description: 'Scheduler Timeline View',\n depends: ['scheduler.timelineview']\n },\n {\n id: 'scheduler-mobile',\n name: 'Scheduler adaptive rendering',\n description: 'Support for adaptive rendering',\n depends: [\n 'dialog',\n 'pane',\n 'switch'\n ]\n },\n {\n id: 'scheduler-pdf-export',\n name: 'PDF export',\n description: 'Export the scheduler events as PDF',\n depends: [\n 'pdf',\n 'drawing'\n ]\n },\n {\n id: 'scheduler-timezones',\n name: 'Timezones',\n description: 'Allow selecting timezones different than Etc/UTC',\n depends: ['timezones']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, date = kendo.date, MS_PER_DAY = date.MS_PER_DAY, getDate = date.getDate, getMilliseconds = kendo.date.getMilliseconds, recurrence = kendo.recurrence, keys = $.extend({ F10: 121 }, kendo.keys), ui = kendo.ui, Widget = ui.Widget, DataBoundWidget = ui.DataBoundWidget, STRING = 'string', Popup = ui.Popup, Calendar = ui.Calendar, DataSource = kendo.data.DataSource, isPlainObject = $.isPlainObject, extend = $.extend, proxy = $.proxy, toString = Object.prototype.toString, isArray = $.isArray, NS = '.kendoScheduler', CLICK = 'click', MOUSEDOWN = 'mousedown', TOUCHSTART = kendo.support.pointers ? 'pointerdown' : 'touchstart', TOUCHMOVE = kendo.support.pointers ? 'pointermove' : 'touchmove', TOUCHEND = kendo.support.pointers ? 'pointerup' : 'touchend', MOUSEMOVE = kendo.support.mousemove, CHANGE = 'change', PROGRESS = 'progress', ERROR = 'error', CANCEL = 'cancel', REMOVE = 'remove', RESET = 'resetSeries', SAVE = 'save', ADD = 'add', EDIT = 'edit', FOCUSEDSTATE = 'k-state-focused', EXPANDEDSTATE = 'k-state-expanded', VIEWSSELECTOR = '.k-scheduler-views', INVERSECOLORCLASS = 'k-event-inverse', valueStartEndBoundRegex = /(?:value:start|value:end)(?:,|$)/, TODAY = getDate(new Date()), EXCEPTION_SEPARATOR = ',', OLD_EXCEPTION_SEPARATOR_REGEXP = /\\;/g, RECURRENCE_EXCEPTION = 'recurrenceException', DELETECONFIRM = 'Are you sure you want to delete this event?', DELETERECURRING = 'Do you want to delete only this event occurrence or the whole series?', EDITRECURRING = 'Do you want to edit only this event occurrence or the whole series?', DELETERECURRINGCONFIRM = 'Are you sure you want to delete this event occurrence?', RESETSERIESCONFIRM = 'Are you sure you want to reset the whole series?', DELETESERIESCONFIRM = 'Are you sure you want to delete the whole series?', COMMANDBUTTONTMPL = '<a class=\"k-button #=className#\" #=attr# href=\"\\\\#\">#=text#</a>', VIEWBUTTONTEMPLATE = kendo.template('<li class=\"k-current-view\" data-#=ns#name=\"#=view#\"><a role=\"button\" href=\"\\\\#\" class=\"k-link\">${views[view].title}</a></li>'), TOOLBARTEMPLATE = kendo.template('<div class=\"k-floatwrap k-header k-scheduler-toolbar\">' + '# if (pdf) { #' + '<ul class=\"k-reset k-scheduler-tools\">' + '<li><a role=\"button\" href=\"\\\\#\" class=\"k-button k-pdf\"><span class=\"k-icon k-i-file-pdf\"></span>${messages.pdf}</a></li>' + '</ul>' + '# } #' + '<ul class=\"k-reset k-scheduler-navigation\">' + '<li class=\"k-state-default k-header k-nav-today\"><a role=\"button\" href=\"\\\\#\" class=\"k-link\" title=\"${messages.today}\">${messages.today}</a></li>' + '<li class=\"k-state-default k-header k-nav-prev\"><a role=\"button\" href=\"\\\\#\" class=\"k-link\" title=\"${messages.previous}\" aria-label=\"${messages.previous}\"><span class=\"k-icon k-i-arrow-60-left\" style=\"pointer-events: none\"></span></a></li>' + '<li class=\"k-state-default k-header k-nav-next\"><a role=\"button\" href=\"\\\\#\" class=\"k-link\" title=\"${messages.next}\" aria-label=\"${messages.next}\"><span class=\"k-icon k-i-arrow-60-right\" style=\"pointer-events: none\"></span></a></li>' + '<li class=\"k-state-default k-nav-current\">' + '<a role=\"button\" href=\"\\\\#\" class=\"k-link\">' + '<span class=\"k-icon k-i-calendar\"></span>' + '<span class=\"k-sm-date-format\" data-#=ns#bind=\"text: formattedShortDate\"></span>' + '<span class=\"k-lg-date-format\" data-#=ns#bind=\"text: formattedDate\"></span>' + '</a>' + '</li>' + '</ul>' + '#if(viewsCount === 1){#' + '<a role=\"button\" data-#=ns#name=\"#=view#\" href=\"\\\\#\" class=\"k-link k-scheduler-refresh\">' + '<span class=\"k-icon k-i-reload\"></span>' + '</a>' + '#}else{#' + '<ul class=\"k-reset k-header k-scheduler-views\">' + '#for(var view in views){#' + '<li class=\"k-state-default k-view-#= view.toLowerCase() #\" data-#=ns#name=\"#=view#\"><a role=\"button\" href=\"\\\\#\" class=\"k-link\">${views[view].title}</a></li>' + '#}#' + '</ul>' + '#}#' + '</div>'), MOBILETOOLBARTEMPLATE = kendo.template('<div class=\"k-header k-scheduler-toolbar\">' + '<ul class=\"k-reset k-scheduler-tools\">' + '# if (pdf) { #' + '<li><a role=\"button\" href=\"\\\\#\" class=\"k-button k-pdf\"><span class=\"k-icon k-i-file-pdf\"></span></a></li>' + '# } #' + '<li><a role=\"button\" href=\"\\\\#\" class=\"k-button k-nav-calendar\"><span class=\"k-icon k-i-calendar\"></span></a></li>' + '# if (editable) { #' + '<li><a role=\"button\" href=\"\\\\#\" class=\"k-button k-create-event\"><span class=\"k-icon k-i-plus\"></span></a></li>' + '# } #' + '</ul>' + '#if(viewsCount === 1){#' + '<a role=\"button\" data-#=ns#name=\"#=view#\" href=\"\\\\#\" class=\"k-link k-scheduler-refresh\">' + '<span class=\"k-icon k-i-reload\"></span>' + '</a>' + '#}else{#' + '<select class=\"k-scheduler-mobile-views\">' + '#for(var view in views){#' + '<option class=\"k-state-default k-view-#= view.toLowerCase() #\" value=\"#=view#\">${views[view].title}</option>' + '#}#' + '</select>' + '#}#' + '</div>' + '<div class=\"k-header k-scheduler-toolbar\">' + '<ul class=\"k-reset k-header k-scheduler-navigation\">' + '<li class=\"k-state-default k-nav-prev\"><a role=\"button\" href=\"\\\\#\" class=\"k-link\"><span class=\"k-icon k-i-arrow-chevron-left\"></span></a></li>' + '<li class=\"k-state-default k-nav-current\">' + '<span class=\"k-m-date-format\" data-#=ns#bind=\"text: formattedMobileDate\"></span>' + '<span class=\"k-y-date-format\" data-#=ns#bind=\"text: formattedYear\"></span>' + '</li>' + '<li class=\"k-state-default k-nav-next\"><a role=\"button\" href=\"\\\\#\" class=\"k-link\"><span class=\"k-icon k-i-arrow-chevron-right\"></span></a></li>' + '</ul>' + '</div>'), MOBILEDATERANGEEDITOR = function (container, options) {\n var attr = {\n name: options.field,\n title: options.title\n };\n var isAllDay = options.model.isAllDay;\n var dateTimeValidate = kendo.attr('validate') + '=\\'' + !isAllDay + '\\'';\n var dateValidate = kendo.attr('validate') + '=\\'' + isAllDay + '\\'';\n appendTimezoneAttr(attr, options);\n appendValidDateValidator(attr, options);\n appendDateCompareValidator(attr, options);\n $('<input type=\"datetime-local\" required ' + kendo.attr('type') + '=\"datetime-local\" ' + kendo.attr('bind') + '=\"value:' + options.field + ', invisible:isAllDay\" ' + dateTimeValidate + '/>').attr(attr).appendTo(container);\n $('<input type=\"date\" required ' + kendo.attr('type') + '=\"date\" ' + kendo.attr('bind') + '=\"value:' + options.field + ',visible:isAllDay\" ' + dateValidate + '/>').attr(attr).appendTo(container);\n $('<span ' + kendo.attr('for') + '=\"' + options.field + '\" class=\"k-invalid-msg\"/>').hide().appendTo(container);\n }, DATERANGEEDITOR = function (container, options) {\n var attr = {\n name: options.field,\n title: options.title\n }, isAllDay = options.model.isAllDay, dateTimeValidate = kendo.attr('validate') + '=\\'' + !isAllDay + '\\' ', dateValidate = kendo.attr('validate') + '=\\'' + isAllDay + '\\' ';\n appendTimezoneAttr(attr, options);\n appendValidDateValidator(attr, options);\n appendDateCompareValidator(attr, options);\n $('<input type=\"text\" required ' + kendo.attr('type') + '=\"date\"' + ' ' + kendo.attr('role') + '=\"datetimepicker\" ' + kendo.attr('bind') + '=\"value:' + options.field + ',invisible:isAllDay\" ' + dateTimeValidate + '/>').attr(attr).appendTo(container);\n $('<input type=\"text\" required ' + kendo.attr('type') + '=\"date\"' + ' ' + kendo.attr('role') + '=\"datepicker\" ' + kendo.attr('bind') + '=\"value:' + options.field + ',visible:isAllDay\" ' + dateValidate + '/>').attr(attr).appendTo(container);\n $('<span ' + kendo.attr('bind') + '=\"text: ' + options.field + 'Timezone\"></span>').appendTo(container);\n if (options.field === 'end') {\n $('<span ' + kendo.attr('bind') + '=\"text: startTimezone, invisible: endTimezone\"></span>').appendTo(container);\n }\n $('<span ' + kendo.attr('for') + '=\"' + options.field + '\" class=\"k-invalid-msg\"/>').hide().appendTo(container);\n }, RECURRENCEEDITOR = function (container, options) {\n $('<div ' + kendo.attr('bind') + '=\"value:' + options.field + '\" />').attr({ name: options.field }).appendTo(container).kendoRecurrenceEditor({\n start: options.model.start,\n timezone: options.timezone,\n messages: options.messages\n });\n }, MOBILERECURRENCEEDITOR = function (container, options) {\n $('<div ' + kendo.attr('bind') + '=\"value:' + options.field + '\" />').attr({ name: options.field }).appendTo(container).kendoMobileRecurrenceEditor({\n start: options.model.start,\n timezone: options.timezone,\n messages: options.messages,\n pane: options.pane,\n value: options.model[options.field]\n });\n }, MOBILEISALLDAYEDITOR = function (container, options) {\n $('<input type=\"checkbox\" data-role=\"switch\"' + kendo.attr('bind') + '=\"value:' + options.field + '\" />').appendTo(container);\n }, MOBILETIMEZONEPOPUP = function (container, options) {\n var text = timezoneButtonText(options.model, options.messages.noTimezone);\n $('<span class=\"k-timezone-label\"></span>').text(text).appendTo(container);\n $('<span class=\"k-icon k-i-arrow-chevron-right\"></span>').appendTo(container);\n container.closest('li.k-item label').click(options.click);\n }, TIMEZONEPOPUP = function (container, options) {\n $('<a href=\"#\" class=\"k-button\" data-bind=\"invisible:isAllDay\">' + options.messages.timezoneEditorButton + '</a>').click(options.click).appendTo(container);\n }, MOBILETIMEZONEEDITOR = function (container, options) {\n $('<div class=\"k-mobiletimezoneeditor\" ' + kendo.attr('bind') + '=\"value:' + options.field + '\" />').attr({ name: options.field }).appendTo(container).kendoMobileTimezoneEditor({ optionLabel: options.noTimezone });\n }, TIMEZONEEDITOR = function (container, options) {\n var visible = options.visible || options.visible === undefined;\n $('<div ' + kendo.attr('bind') + '=\"value:' + options.field + '\" />').attr({ name: options.field }).toggle(visible).appendTo(container).kendoTimezoneEditor({\n optionLabel: options.noTimezone,\n title: options.title\n });\n };\n function timezoneButtonText(model, message) {\n message = message || '';\n if (model.startTimezone) {\n message = model.startTimezone;\n if (model.endTimezone) {\n message += ' | ' + model.endTimezone;\n }\n }\n return message;\n }\n function appendTimezoneAttr(attrs, options) {\n var timezone = options.timezone;\n if (timezone) {\n attrs[kendo.attr('timezone')] = timezone;\n }\n }\n function appendValidDateValidator(attrs, options) {\n var validationRules = options.model.fields[options.field].validation;\n if (validationRules) {\n var validDateRule = validationRules.validDateValidator;\n if (validDateRule && isPlainObject(validDateRule) && validDateRule.message) {\n attrs[kendo.attr('validDate-msg')] = validDateRule.message;\n }\n }\n }\n function appendDateCompareValidator(attrs, options) {\n var validationRules = options.model.fields[options.field].validation;\n if (validationRules) {\n var dateCompareRule = validationRules.dateCompare;\n if (dateCompareRule && isPlainObject(dateCompareRule) && dateCompareRule.message) {\n attrs[kendo.attr('dateCompare-msg')] = dateCompareRule.message;\n }\n }\n }\n function wrapDataAccess(originalFunction, timezone) {\n return function (data) {\n data = originalFunction(data);\n convertData(data, 'apply', timezone);\n return data || [];\n };\n }\n function wrapDataSerialization(originalFunction, timezone) {\n return function (data) {\n if (data) {\n if (toString.call(data) !== '[object Array]' && !(data instanceof kendo.data.ObservableArray)) {\n data = [data];\n }\n }\n convertData(data, 'remove', timezone, true);\n data = originalFunction(data);\n return data || [];\n };\n }\n function convertData(data, method, timezone, removeUid) {\n var event, idx, length;\n data = data || [];\n for (idx = 0, length = data.length; idx < length; idx++) {\n event = data[idx];\n if (removeUid) {\n if (event.startTimezone || event.endTimezone) {\n if (timezone) {\n event.start = kendo.timezone.convert(event.start, event.startTimezone || event.endTimezone, timezone);\n event.end = kendo.timezone.convert(event.end, event.endTimezone || event.startTimezone, timezone);\n event.start = kendo.timezone[method](event.start, timezone);\n event.end = kendo.timezone[method](event.end, timezone);\n } else {\n event.start = kendo.timezone[method](event.start, event.startTimezone || event.endTimezone);\n event.end = kendo.timezone[method](event.end, event.endTimezone || event.startTimezone);\n }\n } else if (timezone) {\n event.start = kendo.timezone[method](event.start, timezone);\n event.end = kendo.timezone[method](event.end, timezone);\n }\n } else {\n if (event.startTimezone || event.endTimezone) {\n event.start = kendo.timezone[method](event.start, event.startTimezone || event.endTimezone);\n event.end = kendo.timezone[method](event.end, event.endTimezone || event.startTimezone);\n if (timezone) {\n event.start = kendo.timezone.convert(event.start, event.startTimezone || event.endTimezone, timezone);\n event.end = kendo.timezone.convert(event.end, event.endTimezone || event.startTimezone, timezone);\n }\n } else if (timezone) {\n event.start = kendo.timezone[method](event.start, timezone);\n event.end = kendo.timezone[method](event.end, timezone);\n }\n }\n if (removeUid) {\n delete event.uid;\n }\n }\n return data;\n }\n function getOccurrenceByUid(data, uid) {\n var length = data.length, idx = 0, event;\n for (; idx < length; idx++) {\n event = data[idx];\n if (event.uid === uid) {\n return event;\n }\n }\n }\n var SchedulerDataReader = kendo.Class.extend({\n init: function (schema, reader) {\n var timezone = schema.timezone;\n this.reader = reader;\n if (reader.model) {\n this.model = reader.model;\n }\n this.timezone = timezone;\n this.data = wrapDataAccess($.proxy(this.data, this), timezone);\n this.serialize = wrapDataSerialization($.proxy(this.serialize, this), timezone);\n },\n errors: function (data) {\n return this.reader.errors(data);\n },\n parse: function (data) {\n return this.reader.parse(data);\n },\n data: function (data) {\n return this.reader.data(data);\n },\n total: function (data) {\n return this.reader.total(data);\n },\n groups: function (data) {\n return this.reader.groups(data);\n },\n aggregates: function (data) {\n return this.reader.aggregates(data);\n },\n serialize: function (data) {\n return this.reader.serialize(data);\n }\n });\n function applyZone(date, fromZone, toZone) {\n if (toZone) {\n date = kendo.timezone.convert(date, fromZone, toZone);\n } else {\n date = kendo.timezone.remove(date, fromZone);\n }\n return date;\n }\n function validDateValidator(input) {\n if (input.filter('[name=start]').length && input.filter('[title=Start]').length || input.filter('[name=end]').length && input.filter('[title=End]').length) {\n var date;\n var picker = kendo.widgetInstance(input, kendo.ui);\n if (picker) {\n date = kendo.parseDate(input.val(), picker.options.format);\n return !!date && picker.value();\n } else {\n date = kendo.parseDate(input.val());\n return !!date;\n }\n }\n return true;\n }\n function dateCompareValidator(input) {\n if (input.filter('[name=end]').length) {\n var container = input.closest('.k-scheduler-edit-form');\n var startInput = container.find('[name=start]:visible');\n var endInput = container.find('[name=end]:visible');\n if (endInput[0] && startInput[0]) {\n var start, end;\n var startPicker = kendo.widgetInstance(startInput, kendo.ui);\n var endPicker = kendo.widgetInstance(endInput, kendo.ui);\n var editable = container.data('kendoEditable');\n var model = editable ? editable.options.model : null;\n if (startPicker && endPicker) {\n start = startPicker.value();\n end = endPicker.value();\n } else {\n start = kendo.parseDate(startInput.val());\n end = kendo.parseDate(endInput.val());\n }\n if (start && end) {\n if (model) {\n var timezone = startInput.attr(kendo.attr('timezone'));\n var startTimezone = model.startTimezone;\n var endTimezone = model.endTimezone;\n startTimezone = startTimezone || endTimezone;\n endTimezone = endTimezone || startTimezone;\n if (startTimezone) {\n start = applyZone(start, startTimezone, timezone);\n end = applyZone(end, endTimezone, timezone);\n }\n }\n return start <= end;\n }\n }\n }\n return true;\n }\n var SchedulerEvent = kendo.data.Model.define({\n init: function (value) {\n var that = this;\n kendo.data.Model.fn.init.call(that, value);\n that._defaultId = that.defaults[that.idField];\n },\n _time: function (field) {\n var date = this[field];\n var fieldTime = '_' + field + 'Time';\n if (this[fieldTime]) {\n return this[fieldTime] - kendo.date.toUtcTime(kendo.date.getDate(date));\n }\n return getMilliseconds(date);\n },\n _date: function (field) {\n var fieldTime = '_' + field + 'Time';\n if (this[fieldTime]) {\n return this[fieldTime] - this._time(field);\n }\n return kendo.date.getDate(this[field]);\n },\n clone: function (options, updateUid) {\n var uid = this.uid, event = new this.constructor($.extend({}, this.toJSON(), options));\n if (!updateUid) {\n event.uid = uid;\n }\n return event;\n },\n duration: function () {\n var end = this.end;\n var start = this.start;\n var offset = (end.getTimezoneOffset() - start.getTimezoneOffset()) * kendo.date.MS_PER_MINUTE;\n return end - start - offset;\n },\n expand: function (start, end, zone) {\n return recurrence ? recurrence.expand(this, start, end, zone) : [this];\n },\n update: function (eventInfo) {\n for (var field in eventInfo) {\n this.set(field, eventInfo[field]);\n }\n if (this._startTime) {\n this.set('_startTime', kendo.date.toUtcTime(this.start));\n }\n if (this._endTime) {\n this.set('_endTime', kendo.date.toUtcTime(this.end));\n }\n },\n isMultiDay: function () {\n return this.isAllDay || this.duration() >= kendo.date.MS_PER_DAY;\n },\n isException: function () {\n return !this.isNew() && this.recurrenceId;\n },\n isOccurrence: function () {\n return this.isNew() && this.recurrenceId;\n },\n isRecurring: function () {\n return !!(this.recurrenceRule || this.recurrenceId);\n },\n isRecurrenceHead: function () {\n return !!(this.id && this.recurrenceRule);\n },\n toOccurrence: function (options) {\n options = $.extend(options, {\n recurrenceException: null,\n recurrenceRule: null,\n recurrenceId: this.id || this.recurrenceId\n });\n options[this.idField] = this.defaults[this.idField];\n return this.clone(options, true);\n },\n toJSON: function () {\n var obj = kendo.data.Model.fn.toJSON.call(this);\n obj.uid = this.uid;\n delete obj._startTime;\n delete obj._endTime;\n return obj;\n },\n shouldSerialize: function (field) {\n return kendo.data.Model.fn.shouldSerialize.call(this, field) && field !== '_defaultId';\n },\n set: function (key, value) {\n var isAllDay = this.isAllDay || false;\n kendo.data.Model.fn.set.call(this, key, value);\n if (key == 'isAllDay' && value != isAllDay) {\n var start = kendo.date.getDate(this.start);\n var end = new Date(this.end);\n var milliseconds = kendo.date.getMilliseconds(end);\n if (milliseconds === 0 && value) {\n milliseconds = MS_PER_DAY;\n }\n this.set('start', start);\n if (value === true) {\n kendo.date.setTime(end, -milliseconds);\n if (end < start) {\n end = start;\n }\n } else {\n kendo.date.setTime(end, MS_PER_DAY - milliseconds);\n }\n this.set('end', end);\n }\n },\n id: 'id',\n fields: {\n id: { type: 'number' },\n title: {\n defaultValue: '',\n type: 'string'\n },\n start: {\n type: 'date',\n validation: {\n required: true,\n validDate: { value: validDateValidator }\n }\n },\n startTimezone: { type: 'string' },\n end: {\n type: 'date',\n validation: {\n required: true,\n validDate: { value: validDateValidator },\n dateCompare: { value: dateCompareValidator }\n }\n },\n endTimezone: { type: 'string' },\n recurrenceRule: {\n defaultValue: '',\n type: 'string'\n },\n recurrenceException: {\n defaultValue: '',\n type: 'string'\n },\n isAllDay: {\n type: 'boolean',\n defaultValue: false\n },\n description: { type: 'string' }\n }\n });\n var SchedulerDataSource = DataSource.extend({\n init: function (options) {\n DataSource.fn.init.call(this, extend(true, {}, {\n schema: {\n modelBase: SchedulerEvent,\n model: SchedulerEvent\n }\n }, options));\n this.reader = new SchedulerDataReader(this.options.schema, this.reader);\n },\n expand: function (start, end) {\n var data = this.view(), filter = {}, endOffset;\n if (start && end) {\n endOffset = end.getTimezoneOffset();\n end = new Date(end.getTime() + MS_PER_DAY - 1);\n if (end.getTimezoneOffset() !== endOffset) {\n end = kendo.timezone.apply(end, endOffset);\n }\n filter = {\n logic: 'or',\n filters: [\n {\n logic: 'and',\n filters: [\n {\n field: 'start',\n operator: 'gte',\n value: start\n },\n {\n field: 'end',\n operator: 'gte',\n value: start\n },\n {\n field: 'start',\n operator: 'lte',\n value: end\n }\n ]\n },\n {\n logic: 'and',\n filters: [\n {\n field: 'start',\n operator: 'lte',\n value: new Date(start.getTime() + MS_PER_DAY - 1)\n },\n {\n field: 'end',\n operator: 'gte',\n value: start\n }\n ]\n }\n ]\n };\n data = new kendo.data.Query(expandAll(data, start, end, this.reader.timezone)).filter(filter).toArray();\n }\n return data;\n },\n cancelChanges: function (model) {\n if (model && model.isOccurrence()) {\n this._removeExceptionDate(model);\n }\n DataSource.fn.cancelChanges.call(this, model);\n },\n insert: function (index, model) {\n if (!model) {\n return;\n }\n if (!(model instanceof SchedulerEvent)) {\n var eventInfo = model;\n model = this._createNewModel();\n model.accept(eventInfo);\n }\n if (!this._pushCreated && model.isRecurrenceHead() || model.recurrenceId) {\n model = model.recurrenceId ? model : model.toOccurrence();\n this._addExceptionDate(model);\n }\n return DataSource.fn.insert.call(this, index, model);\n },\n pushCreate: function (items) {\n this._pushCreated = true;\n DataSource.fn.pushCreate.call(this, items);\n this._pushCreated = false;\n },\n remove: function (model) {\n if (model.isRecurrenceHead()) {\n this._removeExceptions(model);\n } else if (model.isRecurring()) {\n this._addExceptionDate(model);\n }\n return DataSource.fn.remove.call(this, model);\n },\n _removeExceptions: function (model) {\n var data = this.data().slice(0), item = data.shift(), id = model.id;\n while (item) {\n if (item.recurrenceId === id) {\n DataSource.fn.remove.call(this, item);\n }\n item = data.shift();\n }\n model.set(RECURRENCE_EXCEPTION, '');\n },\n _removeExceptionDate: function (model) {\n if (model.recurrenceId) {\n var head = this.get(model.recurrenceId);\n if (head) {\n var start = model.defaults.start;\n var replaceRegExp = new RegExp('(\\\\' + EXCEPTION_SEPARATOR + '?)' + recurrence.toExceptionString(start, this.reader.timezone));\n var recurrenceException = (head.recurrenceException || '').replace(OLD_EXCEPTION_SEPARATOR_REGEXP, EXCEPTION_SEPARATOR).replace(/\\,$/, '');\n if (replaceRegExp.test(recurrenceException)) {\n head.set(RECURRENCE_EXCEPTION, recurrenceException.replace(replaceRegExp, ''));\n } else {\n start = model.start;\n replaceRegExp = new RegExp('(\\\\' + EXCEPTION_SEPARATOR + '?)' + recurrence.toExceptionString(start, this.reader.timezone));\n head.set(RECURRENCE_EXCEPTION, recurrenceException.replace(replaceRegExp, ''));\n }\n }\n }\n },\n _addExceptionDate: function (model) {\n var start = model.start;\n var zone = this.reader.timezone;\n var head = this.get(model.recurrenceId);\n var recurrenceException = (head.recurrenceException || '').replace(OLD_EXCEPTION_SEPARATOR_REGEXP, EXCEPTION_SEPARATOR).replace(/\\,$/, '');\n if (!recurrence.isException(recurrenceException, start, zone)) {\n var newException = recurrence.toExceptionString(start, zone);\n model.defaults.start = start;\n head.set(RECURRENCE_EXCEPTION, recurrenceException + (recurrenceException && newException ? EXCEPTION_SEPARATOR : '') + newException);\n }\n }\n });\n function expandAll(events, start, end, zone) {\n var length = events.length, data = [], idx = 0;\n for (; idx < length; idx++) {\n data = data.concat(events[idx].expand(start, end, zone));\n }\n return data;\n }\n SchedulerDataSource.create = function (options) {\n if (isArray(options) || options instanceof kendo.data.ObservableArray) {\n options = { data: options };\n }\n var dataSource = options || {}, data = dataSource.data;\n dataSource.data = data;\n if (!(dataSource instanceof SchedulerDataSource) && dataSource instanceof kendo.data.DataSource) {\n throw new Error('Incorrect DataSource type. Only SchedulerDataSource instances are supported');\n }\n return dataSource instanceof SchedulerDataSource ? dataSource : new SchedulerDataSource(dataSource);\n };\n extend(true, kendo.data, {\n SchedulerDataSource: SchedulerDataSource,\n SchedulerDataReader: SchedulerDataReader,\n SchedulerEvent: SchedulerEvent\n });\n var defaultCommands = {\n update: {\n text: 'Save',\n className: 'k-primary k-scheduler-update'\n },\n canceledit: {\n text: 'Cancel',\n className: 'k-scheduler-cancel'\n },\n destroy: {\n text: 'Delete',\n imageClass: 'k-i-close',\n className: 'k-primary k-scheduler-delete',\n iconClass: 'k-icon'\n }\n };\n function trimOptions(options) {\n delete options.name;\n delete options.prefix;\n delete options.remove;\n delete options.edit;\n delete options.add;\n delete options.navigate;\n return options;\n }\n function createValidationAttributes(model, field) {\n var modelField = (model.fields || model)[field];\n var specialRules = [\n 'url',\n 'email',\n 'number',\n 'date',\n 'boolean'\n ];\n var validation = modelField ? modelField.validation : {};\n var datatype = kendo.attr('type');\n var inArray = $.inArray;\n var ruleName;\n var rule;\n var attr = {};\n for (ruleName in validation) {\n rule = validation[ruleName];\n if (inArray(ruleName, specialRules) >= 0) {\n attr[datatype] = ruleName;\n } else if (!kendo.isFunction(rule)) {\n attr[ruleName] = isPlainObject(rule) ? rule.value || ruleName : rule;\n }\n attr[kendo.attr(ruleName + '-msg')] = rule.message;\n }\n return attr;\n }\n function dropDownResourceEditor(resource, model) {\n var attr = createValidationAttributes(model, resource.field);\n return function (container) {\n $(kendo.format('<select data-{0}bind=\"value:{1}\" title=\"' + model.title + '\">', kendo.ns, resource.field)).appendTo(container).attr(attr).kendoDropDownList({\n dataTextField: resource.dataTextField,\n dataValueField: resource.dataValueField,\n dataSource: resource.dataSource,\n valuePrimitive: resource.valuePrimitive,\n optionLabel: 'None',\n template: kendo.format('<span class=\"k-scheduler-mark\" style=\"background-color:#= data.{0}?{0}:\"none\" #\"></span>#={1}#', resource.dataColorField, resource.dataTextField)\n });\n };\n }\n function dropDownResourceEditorMobile(resource, model) {\n var attr = createValidationAttributes(model, resource.field);\n return function (container) {\n var options = '';\n var view = resource.dataSource.view();\n for (var idx = 0, length = view.length; idx < length; idx++) {\n options += kendo.format('<option value=\"{0}\">{1}</option>', kendo.getter(resource.dataValueField)(view[idx]), kendo.getter(resource.dataTextField)(view[idx]));\n }\n $(kendo.format('<select data-{0}bind=\"value:{1}\">{2}</select>', kendo.ns, resource.field, options, resource.valuePrimitive)).appendTo(container).attr(attr);\n };\n }\n function descriptionEditor(options) {\n var attr = createValidationAttributes(options.model, options.field);\n return function (container, model) {\n $('<textarea name=\"description\" class=\"k-textbox\" title=\"' + model.title + '\"/>').attr(attr).appendTo(container);\n };\n }\n function multiSelectResourceEditor(resource, model) {\n var attr = createValidationAttributes(model, resource.field);\n return function (container) {\n $(kendo.format('<select data-{0}bind=\"value:{1}\">', kendo.ns, resource.field)).appendTo(container).attr(attr).kendoMultiSelect({\n dataTextField: resource.dataTextField,\n dataValueField: resource.dataValueField,\n dataSource: resource.dataSource,\n valuePrimitive: resource.valuePrimitive,\n itemTemplate: kendo.format('<span class=\"k-scheduler-mark\" style=\"background-color:#= data.{0}?{0}:\"none\" #\"></span>#={1}#', resource.dataColorField, resource.dataTextField),\n tagTemplate: kendo.format('<span class=\"k-scheduler-mark\" style=\"background-color:#= data.{0}?{0}:\"none\" #\"></span>#={1}#', resource.dataColorField, resource.dataTextField)\n });\n };\n }\n function multiSelectResourceEditorMobile(resource, model) {\n var attr = createValidationAttributes(model, resource.field);\n return function (container) {\n var options = '';\n var view = resource.dataSource.view();\n for (var idx = 0, length = view.length; idx < length; idx++) {\n options += kendo.format('<option value=\"{0}\">{1}</option>', kendo.getter(resource.dataValueField)(view[idx]), kendo.getter(resource.dataTextField)(view[idx]));\n }\n $(kendo.format('<select data-{0}bind=\"value:{1}\" multiple=\"multiple\" data-{0}value-primitive=\"{3}\">{2}</select>', kendo.ns, resource.field, options, resource.valuePrimitive)).appendTo(container).attr(attr);\n };\n }\n function moveEventRange(event, distance) {\n var duration = event.end.getTime() - event.start.getTime();\n var start = new Date(event.start.getTime());\n kendo.date.setTime(start, distance);\n var end = new Date(start.getTime());\n kendo.date.setTime(end, duration, true);\n return {\n start: start,\n end: end\n };\n }\n var editors = {\n mobile: {\n dateRange: MOBILEDATERANGEEDITOR,\n timezonePopUp: MOBILETIMEZONEPOPUP,\n timezone: MOBILETIMEZONEEDITOR,\n recurrence: MOBILERECURRENCEEDITOR,\n description: descriptionEditor,\n multipleResources: multiSelectResourceEditorMobile,\n resources: dropDownResourceEditorMobile,\n isAllDay: MOBILEISALLDAYEDITOR\n },\n desktop: {\n dateRange: DATERANGEEDITOR,\n timezonePopUp: TIMEZONEPOPUP,\n timezone: TIMEZONEEDITOR,\n recurrence: RECURRENCEEDITOR,\n description: descriptionEditor,\n multipleResources: multiSelectResourceEditor,\n resources: dropDownResourceEditor\n }\n };\n var Editor = kendo.Observable.extend({\n init: function (element, options) {\n kendo.Observable.fn.init.call(this);\n this.element = element;\n this.options = extend(true, {}, this.options, options);\n this.createButton = this.options.createButton;\n this.toggleDateValidationHandler = proxy(this._toggleDateValidation, this);\n },\n _toggleDateValidation: function (e) {\n if (e.field == 'isAllDay') {\n var container = this.container, isAllDay = this.editable.options.model.isAllDay, bindAttribute = kendo.attr('bind'), element, isDateTimeInput, shouldValidate;\n container.find('[' + bindAttribute + '*=end],[' + bindAttribute + '*=start]').each(function () {\n element = $(this);\n if (valueStartEndBoundRegex.test(element.attr(bindAttribute))) {\n isDateTimeInput = element.is('[' + kendo.attr('role') + '=datetimepicker],[type*=datetime]');\n shouldValidate = isAllDay !== isDateTimeInput;\n element.attr(kendo.attr('validate'), shouldValidate);\n }\n });\n }\n },\n fields: function (editors, model) {\n var that = this;\n var messages = that.options.messages;\n var timezone = that.options.timezone;\n var click = function (e) {\n e.preventDefault();\n that._initTimezoneEditor(model, this);\n };\n var fields = [\n {\n field: 'title',\n title: messages.editor.title\n },\n {\n field: 'start',\n title: messages.editor.start,\n editor: editors.dateRange,\n timezone: timezone\n },\n {\n field: 'end',\n title: messages.editor.end,\n editor: editors.dateRange,\n timezone: timezone\n },\n {\n field: 'isAllDay',\n title: messages.editor.allDayEvent,\n editor: editors.isAllDay\n }\n ];\n if (kendo.timezone.windows_zones) {\n fields.push({\n field: 'timezone',\n title: messages.editor.timezone,\n editor: editors.timezonePopUp,\n click: click,\n messages: messages.editor,\n model: model\n });\n fields.push({\n field: 'startTimezone',\n title: messages.editor.startTimezone,\n editor: editors.timezone,\n noTimezone: messages.editor.noTimezone\n });\n fields.push({\n field: 'endTimezone',\n title: messages.editor.endTimezone,\n editor: editors.timezone,\n noTimezone: messages.editor.noTimezone\n });\n }\n if (!model.recurrenceId) {\n fields.push({\n field: 'recurrenceRule',\n title: messages.editor.repeat,\n editor: editors.recurrence,\n timezone: timezone,\n messages: messages.recurrenceEditor,\n pane: this.pane\n });\n }\n if ('description' in model) {\n fields.push({\n field: 'description',\n title: messages.editor.description,\n editor: editors.description({\n model: model,\n field: 'description'\n })\n });\n }\n for (var resourceIndex = 0; resourceIndex < this.options.resources.length; resourceIndex++) {\n var resource = this.options.resources[resourceIndex];\n fields.push({\n field: resource.field,\n title: resource.title,\n editor: resource.multiple ? editors.multipleResources(resource, model) : editors.resources(resource, model)\n });\n }\n return fields;\n },\n end: function () {\n return this.editable.end();\n },\n _buildDesktopEditTemplate: function (model, fields, editableFields) {\n var messages = this.options.messages;\n var settings = extend({}, kendo.Template, this.options.templateSettings);\n var paramName = settings.paramName;\n var html = '';\n for (var idx = 0, length = fields.length; idx < length; idx++) {\n var field = fields[idx];\n if (field.field === 'startTimezone') {\n html += '<div class=\"k-popup-edit-form k-scheduler-edit-form k-scheduler-timezones\" style=\"display:none\">';\n html += '<div class=\"k-edit-form-container\">';\n html += '<div class=\"k-edit-label\"></div>';\n html += '<div class=\"k-edit-field\"><label class=\"k-check\"><input class=\"k-timezone-toggle\" type=\"checkbox\" />' + messages.editor.separateTimezones + '</label></div>';\n }\n html += '<div class=\"k-edit-label\"><label for=\"' + field.field + '\">' + (field.title || field.field || '') + '</label></div>';\n if (!model.editable || model.editable(field.field)) {\n editableFields.push(field);\n html += '<div ' + kendo.attr('container-for') + '=\"' + field.field + '\" class=\"k-edit-field\"></div>';\n } else {\n var tmpl = '#:';\n if (field.field) {\n field = kendo.expr(field.field, paramName);\n tmpl += field + '==null?\\'\\':' + field;\n } else {\n tmpl += '\\'\\'';\n }\n tmpl += '#';\n tmpl = kendo.template(tmpl, settings);\n html += '<div class=\"k-edit-field\">' + tmpl(model) + '</div>';\n }\n if (field.field === 'endTimezone') {\n html += this._createEndTimezoneButton();\n }\n }\n return html;\n },\n _buildMobileEditTemplate: function (model, fields, editableFields) {\n var messages = this.options.messages;\n var settings = extend({}, kendo.Template, this.options.templateSettings);\n var paramName = settings.paramName;\n var html = '';\n html += '<ul>';\n for (var idx = 0, length = fields.length; idx < length; idx++) {\n var field = fields[idx];\n if (field.field === 'timezone' || field.field === 'recurrenceRule') {\n html += '</ul><ul>';\n }\n if (field.field === 'startTimezone') {\n html += '<div class=\"k-popup-edit-form k-scheduler-edit-form k-scheduler-timezones\" style=\"display:none\">';\n html += '<ul><li class=\"k-item\"><label class=\"k-label\">';\n html += '<span class=\"k-item-title\">' + messages.editor.separateTimezones + '</span>';\n html += '<input class=\"k-timezone-toggle\" data-role=\"switch\" type=\"checkbox\">';\n html += '</label></li>';\n }\n if (!model.editable || model.editable(field.field)) {\n html += '<li class=\"k-item\">';\n if (field.field === 'timezone') {\n html += '<label class=\"k-label\" data-bind=\"css: { k-state-disabled: isAllDay }\">';\n } else {\n html += '<label class=\"k-label\">';\n }\n html += '<span class=\"k-item-title\">' + (field.title || field.field || '') + '</span>';\n editableFields.push(field);\n html += '<div ' + kendo.attr('container-for') + '=\"' + field.field + '\"></div>';\n } else {\n var tmpl = '#:';\n html += '<li class=\"k-item\">';\n html += '<label class=\"k-label k-no-click\">';\n html += '<span class=\"k-item-title\">' + (field.title || field.field || '') + '</span>';\n if (field.field) {\n field = kendo.expr(field.field, paramName);\n tmpl += field + '==null?\\'\\':' + field;\n } else {\n tmpl += '\\'\\'';\n }\n tmpl += '#';\n tmpl = kendo.template(tmpl, settings);\n html += '<span class=\"k-no-editor\">' + tmpl(model) + '</span>';\n }\n html += '</label></li>';\n if (field.field === 'recurrenceRule') {\n html += '</ul><ul>';\n }\n if (field.field === 'endTimezone') {\n html += this._createEndTimezoneButton();\n }\n }\n html += '</ul>';\n return html;\n },\n _buildEditTemplate: function (model, fields, editableFields, isMobile) {\n var settings = extend({}, kendo.Template, this.options.templateSettings);\n var template = this.options.editable.template;\n var html = '';\n if (template) {\n if (typeof template === STRING) {\n template = kendo.unescape(template);\n }\n html += kendo.template(template, settings)(model);\n } else if (isMobile) {\n html += '<div data-role=\"content\">' + this._buildMobileEditTemplate(model, fields, editableFields) + '</div>';\n } else {\n html += this._buildDesktopEditTemplate(model, fields, editableFields);\n }\n return html;\n },\n _createEndTimezoneButton: function () {\n return '</ul></div>';\n },\n _revertTimezones: function (model) {\n model.set('startTimezone', this._startTimezone);\n model.set('endTimezone', this._endTimezone);\n delete this._startTimezone;\n delete this._endTimezone;\n }\n });\n var MobileEditor = Editor.extend({\n init: function () {\n Editor.fn.init.apply(this, arguments);\n this.pane = kendo.Pane.wrap(this.element, {\n viewEngine: {\n viewOptions: {\n renderOnInit: true,\n wrap: false,\n wrapInSections: true,\n detachOnHide: false,\n detachOnDestroy: false\n }\n }\n });\n this.pane.element.parent().css('height', this.options.height);\n this.view = this.pane.view();\n },\n options: {\n animations: {\n left: 'slide',\n right: 'slide:right'\n }\n },\n destroy: function () {\n this.close();\n this.unbind();\n this.pane.destroy();\n },\n _initTimezoneEditor: function (model) {\n var that = this;\n var pane = that.pane;\n var messages = that.options.messages;\n var timezoneView = that.timezoneView;\n var container = timezoneView ? timezoneView.content.find('.k-scheduler-timezones') : that.container.find('.k-scheduler-timezones');\n var kSwitch = container.find('input.k-timezone-toggle').data('kendoSwitch');\n var endTimezoneRow = container.find('li.k-item:not(.k-zonepicker):last');\n var startTimezoneChange = function (e) {\n if (e.field === 'startTimezone') {\n var value = model.startTimezone;\n kSwitch.enable(value);\n if (!value) {\n endTimezoneRow.hide();\n model.set('endTimezone', '');\n kSwitch.value(false);\n }\n }\n };\n that._startTimezone = model.startTimezone || '';\n that._endTimezone = model.endTimezone || '';\n if (!timezoneView) {\n var html = '<div data-role=\"view\" class=\"k-popup-edit-form k-scheduler-edit-form k-mobile-list\">' + '<div data-role=\"header\" class=\"k-header\">' + '<a href=\"\\\\#\" class=\"k-header-cancel k-scheduler-cancel k-link\" title=\"' + messages.cancel + '\"' + 'aria-label=\"' + messages.cancel + '\"><span class=\"k-icon k-i-arrow-chevron-left\"></span></a>' + messages.editor.timezoneTitle + '<a href=\"\\\\#\" class=\"k-header-done k-scheduler-update k-link\" title=\"' + messages.save + '\" ' + 'aria-label=\"' + messages.save + '\"><span class=\"k-icon k-i-check\"></span></a>' + '</div><div data-role=\"content\"></div>';\n this.timezoneView = timezoneView = pane.append(html);\n timezoneView.contentElement.append(container.show());\n timezoneView.element.on(CLICK + NS, '.k-scheduler-cancel, .k-scheduler-update', function (e) {\n e.preventDefault();\n e.stopPropagation();\n if ($(this).hasClass('k-scheduler-cancel')) {\n that._revertTimezones(model);\n }\n model.unbind('change', startTimezoneChange);\n var editView = that._editPane;\n var text = timezoneButtonText(model, messages.editor.noTimezone);\n editView.content.find('.k-timezone-label').text(text);\n pane.navigate(editView, that.options.animations.right);\n });\n kSwitch.bind('change', function (ev) {\n |
